@swf2es/player-hosts 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/LICENSE +202 -0
  2. package/LICENSE.third-party +759 -0
  3. package/README.md +43 -2
  4. package/dist/indexeddb.d.ts +27 -0
  5. package/dist/indexeddb.d.ts.map +1 -0
  6. package/dist/indexeddb.js +170 -0
  7. package/dist/indexeddb.js.map +1 -0
  8. package/dist/node-worker.d.ts +2 -0
  9. package/dist/node-worker.d.ts.map +1 -0
  10. package/dist/node-worker.js +12 -0
  11. package/dist/node-worker.js.map +1 -0
  12. package/dist/node.d.ts +8 -0
  13. package/dist/node.d.ts.map +1 -0
  14. package/dist/node.js +43 -0
  15. package/dist/node.js.map +1 -0
  16. package/dist/precompiled.d.ts +31 -0
  17. package/dist/precompiled.d.ts.map +1 -0
  18. package/dist/precompiled.js +125 -0
  19. package/dist/precompiled.js.map +1 -0
  20. package/dist/stage3d.d.ts +13 -0
  21. package/dist/stage3d.d.ts.map +1 -0
  22. package/dist/stage3d.js +61 -0
  23. package/dist/stage3d.js.map +1 -0
  24. package/dist/thread/codegen/codegen.js +308 -0
  25. package/dist/thread/codegen/index.js +405 -0
  26. package/dist/thread/format/abc-names.js +126 -0
  27. package/dist/thread/format/actions.js +222 -0
  28. package/dist/thread/format/air-descriptor.js +63 -0
  29. package/dist/thread/format/api-versions.js +22 -0
  30. package/dist/thread/format/bitmap.js +199 -0
  31. package/dist/thread/format/button.js +60 -0
  32. package/dist/thread/format/compression.js +200 -0
  33. package/dist/thread/format/display.js +305 -0
  34. package/dist/thread/format/filters.js +136 -0
  35. package/dist/thread/format/font.js +168 -0
  36. package/dist/thread/format/index.js +26 -0
  37. package/dist/thread/format/pbj.js +484 -0
  38. package/dist/thread/format/shape.js +411 -0
  39. package/dist/thread/format/sound.js +91 -0
  40. package/dist/thread/format/swf.js +163 -0
  41. package/dist/thread/format/tags.js +58 -0
  42. package/dist/thread/format/text.js +135 -0
  43. package/dist/thread/format/zip.js +91 -0
  44. package/dist/thread/native/audio/binary.js +3 -0
  45. package/dist/thread/native/audio/index.js +72 -0
  46. package/dist/thread/native/base64.js +9 -0
  47. package/dist/thread/native/compress/binary.js +3 -0
  48. package/dist/thread/native/compress/index.js +145 -0
  49. package/dist/thread/native/instance.js +49 -0
  50. package/dist/thread/native/mp3/binary.js +3 -0
  51. package/dist/thread/native/mp3/index.js +48 -0
  52. package/dist/thread/native/render/binary.js +3 -0
  53. package/dist/thread/native/render/bitmap-kernel.js +591 -0
  54. package/dist/thread/native/render/draw-kernel.js +204 -0
  55. package/dist/thread/native/render/dxt-encoder.js +94 -0
  56. package/dist/thread/native/render/index.js +10 -0
  57. package/dist/thread/native/render/lines.js +122 -0
  58. package/dist/thread/native/render/module.js +26 -0
  59. package/dist/thread/native/render/pixel-ops.js +235 -0
  60. package/dist/thread/native/render/tessellator.js +250 -0
  61. package/dist/thread/player/avm1/amf.js +507 -0
  62. package/dist/thread/player/avm1/avm1.js +1304 -0
  63. package/dist/thread/player/avm1/bindings.js +214 -0
  64. package/dist/thread/player/avm1/classes.js +75 -0
  65. package/dist/thread/player/avm1/clips.js +229 -0
  66. package/dist/thread/player/avm1/compile.js +140 -0
  67. package/dist/thread/player/avm1/external.js +79 -0
  68. package/dist/thread/player/avm1/focus.js +278 -0
  69. package/dist/thread/player/avm1/globals/BitmapData.js +542 -0
  70. package/dist/thread/player/avm1/globals/Button.js +31 -0
  71. package/dist/thread/player/avm1/globals/Color.js +115 -0
  72. package/dist/thread/player/avm1/globals/ExternalInterface.js +310 -0
  73. package/dist/thread/player/avm1/globals/FileReference.js +217 -0
  74. package/dist/thread/player/avm1/globals/Key.js +60 -0
  75. package/dist/thread/player/avm1/globals/LoadVars.js +208 -0
  76. package/dist/thread/player/avm1/globals/LocalConnection.js +92 -0
  77. package/dist/thread/player/avm1/globals/MovieClip.js +1070 -0
  78. package/dist/thread/player/avm1/globals/MovieClipLoader.js +90 -0
  79. package/dist/thread/player/avm1/globals/NetConnection.js +261 -0
  80. package/dist/thread/player/avm1/globals/PrintJob.js +37 -0
  81. package/dist/thread/player/avm1/globals/Selection.js +62 -0
  82. package/dist/thread/player/avm1/globals/SharedObject.js +245 -0
  83. package/dist/thread/player/avm1/globals/Sound.js +238 -0
  84. package/dist/thread/player/avm1/globals/Stage.js +12 -0
  85. package/dist/thread/player/avm1/globals/StyleSheet.js +205 -0
  86. package/dist/thread/player/avm1/globals/TextField.js +396 -0
  87. package/dist/thread/player/avm1/globals/TextFormat.js +194 -0
  88. package/dist/thread/player/avm1/globals/TextSnapshot.js +88 -0
  89. package/dist/thread/player/avm1/globals/XML.js +396 -0
  90. package/dist/thread/player/avm1/globals/XMLNode.js +413 -0
  91. package/dist/thread/player/avm1/globals/XMLSocket.js +205 -0
  92. package/dist/thread/player/avm1/globals/drawing.js +202 -0
  93. package/dist/thread/player/avm1/globals/filters.js +635 -0
  94. package/dist/thread/player/avm1/globals/geom.js +600 -0
  95. package/dist/thread/player/avm1/input.js +483 -0
  96. package/dist/thread/player/avm1/keyboard.js +113 -0
  97. package/dist/thread/player/avm1/loads.js +352 -0
  98. package/dist/thread/player/avm1/net.js +219 -0
  99. package/dist/thread/player/avm1/paths.js +104 -0
  100. package/dist/thread/player/avm1/pointer.js +512 -0
  101. package/dist/thread/player/avm1/queue.js +303 -0
  102. package/dist/thread/player/avm1/sound.js +106 -0
  103. package/dist/thread/player/avm1/swf.js +141 -0
  104. package/dist/thread/player/avm1/timers.js +113 -0
  105. package/dist/thread/player/bitmap/bitmap.js +627 -0
  106. package/dist/thread/player/bitmap/draw.js +68 -0
  107. package/dist/thread/player/bitmap/dxt.js +11 -0
  108. package/dist/thread/player/bitmap/filters.js +656 -0
  109. package/dist/thread/player/bitmap/images.js +240 -0
  110. package/dist/thread/player/bitmap/kernel.js +65 -0
  111. package/dist/thread/player/bitmap/ops.js +1239 -0
  112. package/dist/thread/player/bitmap/pixel-bender.js +911 -0
  113. package/dist/thread/player/bitmap/png.js +139 -0
  114. package/dist/thread/player/bitmap/turbulence.js +89 -0
  115. package/dist/thread/player/clock.js +182 -0
  116. package/dist/thread/player/display/bitmapobject.js +25 -0
  117. package/dist/thread/player/display/bounds.js +520 -0
  118. package/dist/thread/player/display/buttonobject.js +305 -0
  119. package/dist/thread/player/display/color.js +40 -0
  120. package/dist/thread/player/display/container.js +150 -0
  121. package/dist/thread/player/display/display.js +14 -0
  122. package/dist/thread/player/display/displayobject.js +664 -0
  123. package/dist/thread/player/display/drawing.js +613 -0
  124. package/dist/thread/player/display/filters.js +285 -0
  125. package/dist/thread/player/display/geometry.js +189 -0
  126. package/dist/thread/player/display/gradients.js +117 -0
  127. package/dist/thread/player/display/graphicsdata.js +592 -0
  128. package/dist/thread/player/display/instantiate.js +71 -0
  129. package/dist/thread/player/display/matrix3d.js +373 -0
  130. package/dist/thread/player/display/morph.js +226 -0
  131. package/dist/thread/player/display/movieclip.js +680 -0
  132. package/dist/thread/player/display/perspective.js +193 -0
  133. package/dist/thread/player/display/scale9.js +236 -0
  134. package/dist/thread/player/display/shapeobject.js +131 -0
  135. package/dist/thread/player/display/shapes.js +407 -0
  136. package/dist/thread/player/display/textobjects.js +222 -0
  137. package/dist/thread/player/display/timeline.js +471 -0
  138. package/dist/thread/player/display/value-lists.js +40 -0
  139. package/dist/thread/player/display/videoobject.js +6 -0
  140. package/dist/thread/player/display/walk.js +127 -0
  141. package/dist/thread/player/files.js +334 -0
  142. package/dist/thread/player/hosts.js +207 -0
  143. package/dist/thread/player/input/avm1.js +82 -0
  144. package/dist/thread/player/input/context-menu.js +63 -0
  145. package/dist/thread/player/input/keyboard.js +458 -0
  146. package/dist/thread/player/input/pointer.js +863 -0
  147. package/dist/thread/player/input/text-editor.js +319 -0
  148. package/dist/thread/player/input/touch.js +209 -0
  149. package/dist/thread/player/localconnection.js +90 -0
  150. package/dist/thread/player/media/audio.js +376 -0
  151. package/dist/thread/player/media/dynamic-sound.js +90 -0
  152. package/dist/thread/player/media/extract.js +135 -0
  153. package/dist/thread/player/media/mp3.js +152 -0
  154. package/dist/thread/player/media/sounds.js +507 -0
  155. package/dist/thread/player/media/streaming-audio.js +133 -0
  156. package/dist/thread/player/player.js +616 -0
  157. package/dist/thread/player/playerglobal/air/net/WebSocket.js +250 -0
  158. package/dist/thread/player/playerglobal/air-library.js +8 -0
  159. package/dist/thread/player/playerglobal/flash/accessibility/Accessibility.js +21 -0
  160. package/dist/thread/player/playerglobal/flash/crypto/generateRandomBytes.js +32 -0
  161. package/dist/thread/player/playerglobal/flash/data/EncryptedLocalStore.js +61 -0
  162. package/dist/thread/player/playerglobal/flash/desktop/Clipboard.js +173 -0
  163. package/dist/thread/player/playerglobal/flash/desktop/NativeApplication.js +179 -0
  164. package/dist/thread/player/playerglobal/flash/display/AVM1Movie.js +19 -0
  165. package/dist/thread/player/playerglobal/flash/display/Bitmap.js +58 -0
  166. package/dist/thread/player/playerglobal/flash/display/BitmapData.js +633 -0
  167. package/dist/thread/player/playerglobal/flash/display/DisplayObject.js +614 -0
  168. package/dist/thread/player/playerglobal/flash/display/DisplayObjectContainer.js +224 -0
  169. package/dist/thread/player/playerglobal/flash/display/Graphics.js +345 -0
  170. package/dist/thread/player/playerglobal/flash/display/InteractiveObject.js +87 -0
  171. package/dist/thread/player/playerglobal/flash/display/Loader.js +79 -0
  172. package/dist/thread/player/playerglobal/flash/display/LoaderInfo.js +128 -0
  173. package/dist/thread/player/playerglobal/flash/display/MovieClip.js +194 -0
  174. package/dist/thread/player/playerglobal/flash/display/NativeWindow.js +245 -0
  175. package/dist/thread/player/playerglobal/flash/display/Shader.js +26 -0
  176. package/dist/thread/player/playerglobal/flash/display/ShaderData.js +85 -0
  177. package/dist/thread/player/playerglobal/flash/display/ShaderInput.js +64 -0
  178. package/dist/thread/player/playerglobal/flash/display/ShaderJob.js +181 -0
  179. package/dist/thread/player/playerglobal/flash/display/ShaderParameter.js +23 -0
  180. package/dist/thread/player/playerglobal/flash/display/Shape.js +13 -0
  181. package/dist/thread/player/playerglobal/flash/display/SimpleButton.js +103 -0
  182. package/dist/thread/player/playerglobal/flash/display/Sprite.js +84 -0
  183. package/dist/thread/player/playerglobal/flash/display/Stage.js +231 -0
  184. package/dist/thread/player/playerglobal/flash/display/Stage3D.js +54 -0
  185. package/dist/thread/player/playerglobal/flash/display/shaders.js +228 -0
  186. package/dist/thread/player/playerglobal/flash/events/Event.js +58 -0
  187. package/dist/thread/player/playerglobal/flash/events/EventDispatcher.js +103 -0
  188. package/dist/thread/player/playerglobal/flash/events/GestureEvent.js +34 -0
  189. package/dist/thread/player/playerglobal/flash/events/HTTPStatusEvent.js +8 -0
  190. package/dist/thread/player/playerglobal/flash/events/KeyboardEvent.js +51 -0
  191. package/dist/thread/player/playerglobal/flash/events/MouseEvent.js +59 -0
  192. package/dist/thread/player/playerglobal/flash/events/PressAndTapGestureEvent.js +30 -0
  193. package/dist/thread/player/playerglobal/flash/events/TimerEvent.js +16 -0
  194. package/dist/thread/player/playerglobal/flash/events/TouchEvent.js +45 -0
  195. package/dist/thread/player/playerglobal/flash/external/ExternalInterface.js +73 -0
  196. package/dist/thread/player/playerglobal/flash/filesystem/File.js +340 -0
  197. package/dist/thread/player/playerglobal/flash/filesystem/FileStream.js +453 -0
  198. package/dist/thread/player/playerglobal/flash/filesystem/paths.js +156 -0
  199. package/dist/thread/player/playerglobal/flash/filesystem/writes.js +143 -0
  200. package/dist/thread/player/playerglobal/flash/filters/BevelFilter.js +4 -0
  201. package/dist/thread/player/playerglobal/flash/filters/BitmapFilter.js +205 -0
  202. package/dist/thread/player/playerglobal/flash/filters/BlurFilter.js +4 -0
  203. package/dist/thread/player/playerglobal/flash/filters/ColorMatrixFilter.js +11 -0
  204. package/dist/thread/player/playerglobal/flash/filters/ConvolutionFilter.js +26 -0
  205. package/dist/thread/player/playerglobal/flash/filters/DisplacementMapFilter.js +51 -0
  206. package/dist/thread/player/playerglobal/flash/filters/DropShadowFilter.js +4 -0
  207. package/dist/thread/player/playerglobal/flash/filters/GlowFilter.js +4 -0
  208. package/dist/thread/player/playerglobal/flash/filters/GradientBevelFilter.js +4 -0
  209. package/dist/thread/player/playerglobal/flash/filters/GradientGlowFilter.js +4 -0
  210. package/dist/thread/player/playerglobal/flash/filters/ShaderFilter.js +53 -0
  211. package/dist/thread/player/playerglobal/flash/geom/Matrix3D.js +361 -0
  212. package/dist/thread/player/playerglobal/flash/geom/PerspectiveProjection.js +122 -0
  213. package/dist/thread/player/playerglobal/flash/geom/Transform.js +245 -0
  214. package/dist/thread/player/playerglobal/flash/geom/Utils3D.js +85 -0
  215. package/dist/thread/player/playerglobal/flash/globalization/Collator.js +149 -0
  216. package/dist/thread/player/playerglobal/flash/globalization/CurrencyFormatter.js +272 -0
  217. package/dist/thread/player/playerglobal/flash/globalization/CurrencyParseResult.js +21 -0
  218. package/dist/thread/player/playerglobal/flash/globalization/DateTimeFormatter.js +463 -0
  219. package/dist/thread/player/playerglobal/flash/globalization/LocaleID.js +144 -0
  220. package/dist/thread/player/playerglobal/flash/globalization/NumberFormatter.js +444 -0
  221. package/dist/thread/player/playerglobal/flash/globalization/NumberParseResult.js +22 -0
  222. package/dist/thread/player/playerglobal/flash/globalization/StringTools.js +59 -0
  223. package/dist/thread/player/playerglobal/flash/globalization/locale.js +190 -0
  224. package/dist/thread/player/playerglobal/flash/media/Camera.js +89 -0
  225. package/dist/thread/player/playerglobal/flash/media/Microphone.js +126 -0
  226. package/dist/thread/player/playerglobal/flash/media/Sound.js +543 -0
  227. package/dist/thread/player/playerglobal/flash/media/SoundMixer.js +74 -0
  228. package/dist/thread/player/playerglobal/flash/media/SoundTransform.js +40 -0
  229. package/dist/thread/player/playerglobal/flash/media/Video.js +43 -0
  230. package/dist/thread/player/playerglobal/flash/net/FileFilter.js +27 -0
  231. package/dist/thread/player/playerglobal/flash/net/FileReference.js +197 -0
  232. package/dist/thread/player/playerglobal/flash/net/LocalConnection.js +167 -0
  233. package/dist/thread/player/playerglobal/flash/net/NetConnection.js +155 -0
  234. package/dist/thread/player/playerglobal/flash/net/SharedObject.js +299 -0
  235. package/dist/thread/player/playerglobal/flash/net/Socket.js +282 -0
  236. package/dist/thread/player/playerglobal/flash/net/URLRequest.js +93 -0
  237. package/dist/thread/player/playerglobal/flash/net/URLStream.js +146 -0
  238. package/dist/thread/player/playerglobal/flash/net/XMLSocket.js +14 -0
  239. package/dist/thread/player/playerglobal/flash/net/local-modern.js +142 -0
  240. package/dist/thread/player/playerglobal/flash/net/local-values.js +217 -0
  241. package/dist/thread/player/playerglobal/flash/net/navigateToURL.js +29 -0
  242. package/dist/thread/player/playerglobal/flash/profiler/Telemetry.js +25 -0
  243. package/dist/thread/player/playerglobal/flash/sensors/Accelerometer.js +12 -0
  244. package/dist/thread/player/playerglobal/flash/system/ApplicationDomain.js +69 -0
  245. package/dist/thread/player/playerglobal/flash/system/Capabilities.js +163 -0
  246. package/dist/thread/player/playerglobal/flash/system/FSCommandHost.js +17 -0
  247. package/dist/thread/player/playerglobal/flash/system/Security.js +46 -0
  248. package/dist/thread/player/playerglobal/flash/system/SecurityDomain.js +21 -0
  249. package/dist/thread/player/playerglobal/flash/system/System.js +73 -0
  250. package/dist/thread/player/playerglobal/flash/system/Worker.js +112 -0
  251. package/dist/thread/player/playerglobal/flash/text/Font.js +95 -0
  252. package/dist/thread/player/playerglobal/flash/text/StaticText.js +16 -0
  253. package/dist/thread/player/playerglobal/flash/text/StyleSheet.js +65 -0
  254. package/dist/thread/player/playerglobal/flash/text/TextField.js +707 -0
  255. package/dist/thread/player/playerglobal/flash/text/TextRenderer.js +77 -0
  256. package/dist/thread/player/playerglobal/flash/text/engine/FontDescription.js +141 -0
  257. package/dist/thread/player/playerglobal/flash/text/engine/TabStop.js +46 -0
  258. package/dist/thread/player/playerglobal/flash/trace/Trace.js +17 -0
  259. package/dist/thread/player/playerglobal/flash/ui/ContextMenu.js +17 -0
  260. package/dist/thread/player/playerglobal/flash/ui/GameInput.js +19 -0
  261. package/dist/thread/player/playerglobal/flash/ui/Keyboard.js +27 -0
  262. package/dist/thread/player/playerglobal/flash/ui/Mouse.js +127 -0
  263. package/dist/thread/player/playerglobal/flash/ui/Multitouch.js +46 -0
  264. package/dist/thread/player/playerglobal/flash/utils/ByteArray.js +155 -0
  265. package/dist/thread/player/playerglobal/flash/utils/Timer.js +25 -0
  266. package/dist/thread/player/playerglobal/flash/xml/XMLDocument.js +74 -0
  267. package/dist/thread/player/playerglobal/index.js +224 -0
  268. package/dist/thread/player/playerglobal/libraries.js +10 -0
  269. package/dist/thread/player/playerglobal/playerglobal-library.js +22 -0
  270. package/dist/thread/player/playerglobal/toplevel.js +122 -0
  271. package/dist/thread/player/scripting/clipboard.js +146 -0
  272. package/dist/thread/player/scripting/code.js +900 -0
  273. package/dist/thread/player/scripting/evaluate.js +144 -0
  274. package/dist/thread/player/scripting/events.js +172 -0
  275. package/dist/thread/player/scripting/handover.js +182 -0
  276. package/dist/thread/player/scripting/lazy.js +38 -0
  277. package/dist/thread/player/scripting/lifecycle.js +272 -0
  278. package/dist/thread/player/scripting/loads.js +860 -0
  279. package/dist/thread/player/scripting/sha256.js +95 -0
  280. package/dist/thread/player/scripting/symbols.js +348 -0
  281. package/dist/thread/player/scripting/timers.js +434 -0
  282. package/dist/thread/player/scripting/workers.js +923 -0
  283. package/dist/thread/player/scripting.js +1018 -0
  284. package/dist/thread/player/stage.js +4 -0
  285. package/dist/thread/player/text/csm.js +113 -0
  286. package/dist/thread/player/text/css.js +167 -0
  287. package/dist/thread/player/text/fonts.js +97 -0
  288. package/dist/thread/player/text/layout.js +393 -0
  289. package/dist/thread/player/text/static.js +109 -0
  290. package/dist/thread/player/text/text.js +431 -0
  291. package/dist/thread/player/workers/thread.js +159 -0
  292. package/dist/thread/player/workers/wire.js +198 -0
  293. package/dist/thread/player-hosts/web-worker.js +19 -0
  294. package/dist/thread/runtime/avm1/activation.js +89 -0
  295. package/dist/thread/runtime/avm1/case.js +249 -0
  296. package/dist/thread/runtime/avm1/clips.js +334 -0
  297. package/dist/thread/runtime/avm1/control.js +280 -0
  298. package/dist/thread/runtime/avm1/errors.js +50 -0
  299. package/dist/thread/runtime/avm1/functions.js +249 -0
  300. package/dist/thread/runtime/avm1/globals/array.js +549 -0
  301. package/dist/thread/runtime/avm1/globals/broadcaster.js +131 -0
  302. package/dist/thread/runtime/avm1/globals/date.js +436 -0
  303. package/dist/thread/runtime/avm1/globals/global.js +344 -0
  304. package/dist/thread/runtime/avm1/globals/math.js +139 -0
  305. package/dist/thread/runtime/avm1/globals/number.js +93 -0
  306. package/dist/thread/runtime/avm1/globals/string.js +201 -0
  307. package/dist/thread/runtime/avm1/globals/timers.js +129 -0
  308. package/dist/thread/runtime/avm1/host.js +5 -0
  309. package/dist/thread/runtime/avm1/index.js +14 -0
  310. package/dist/thread/runtime/avm1/inheritance.js +132 -0
  311. package/dist/thread/runtime/avm1/numbers.js +298 -0
  312. package/dist/thread/runtime/avm1/objects.js +896 -0
  313. package/dist/thread/runtime/avm1/operators.js +170 -0
  314. package/dist/thread/runtime/avm1/realm.js +529 -0
  315. package/dist/thread/runtime/avm1/runtime.js +882 -0
  316. package/dist/thread/runtime/avm1/scope.js +385 -0
  317. package/dist/thread/runtime/avm1/urls.js +180 -0
  318. package/dist/thread/runtime/avm1/values.js +97 -0
  319. package/dist/thread/runtime/avm2/amf-classes.js +66 -0
  320. package/dist/thread/runtime/avm2/amf.js +801 -0
  321. package/dist/thread/runtime/avm2/array-conversion.js +100 -0
  322. package/dist/thread/runtime/avm2/builtin-library.js +21 -0
  323. package/dist/thread/runtime/avm2/cache-fill.js +86 -0
  324. package/dist/thread/runtime/avm2/classes.js +211 -0
  325. package/dist/thread/runtime/avm2/definitions.js +69 -0
  326. package/dist/thread/runtime/avm2/descriptors.js +5 -0
  327. package/dist/thread/runtime/avm2/dictionary-keys.js +295 -0
  328. package/dist/thread/runtime/avm2/domain-memory.js +75 -0
  329. package/dist/thread/runtime/avm2/domain.js +280 -0
  330. package/dist/thread/runtime/avm2/dynamic-properties.js +182 -0
  331. package/dist/thread/runtime/avm2/enumeration.js +393 -0
  332. package/dist/thread/runtime/avm2/errors.js +45 -0
  333. package/dist/thread/runtime/avm2/float-library.js +66 -0
  334. package/dist/thread/runtime/avm2/float.js +26 -0
  335. package/dist/thread/runtime/avm2/hooks.js +19 -0
  336. package/dist/thread/runtime/avm2/index.js +38 -0
  337. package/dist/thread/runtime/avm2/messages.js +177 -0
  338. package/dist/thread/runtime/avm2/method-factories.js +95 -0
  339. package/dist/thread/runtime/avm2/modules.js +105 -0
  340. package/dist/thread/runtime/avm2/names.js +248 -0
  341. package/dist/thread/runtime/avm2/natives/aliases.js +47 -0
  342. package/dist/thread/runtime/avm2/natives/array.js +390 -0
  343. package/dist/thread/runtime/avm2/natives/bytearray.js +1227 -0
  344. package/dist/thread/runtime/avm2/natives/case.js +88 -0
  345. package/dist/thread/runtime/avm2/natives/concurrent.js +199 -0
  346. package/dist/thread/runtime/avm2/natives/date.js +581 -0
  347. package/dist/thread/runtime/avm2/natives/define.js +130 -0
  348. package/dist/thread/runtime/avm2/natives/describe.js +351 -0
  349. package/dist/thread/runtime/avm2/natives/dictionary.js +12 -0
  350. package/dist/thread/runtime/avm2/natives/float-vector.js +81 -0
  351. package/dist/thread/runtime/avm2/natives/float.js +96 -0
  352. package/dist/thread/runtime/avm2/natives/index.js +64 -0
  353. package/dist/thread/runtime/avm2/natives/json.js +514 -0
  354. package/dist/thread/runtime/avm2/natives/number.js +162 -0
  355. package/dist/thread/runtime/avm2/natives/object.js +237 -0
  356. package/dist/thread/runtime/avm2/natives/proxy.js +75 -0
  357. package/dist/thread/runtime/avm2/natives/regexp.js +485 -0
  358. package/dist/thread/runtime/avm2/natives/shell-workers.js +404 -0
  359. package/dist/thread/runtime/avm2/natives/shell.js +557 -0
  360. package/dist/thread/runtime/avm2/natives/sort.js +377 -0
  361. package/dist/thread/runtime/avm2/natives/string.js +132 -0
  362. package/dist/thread/runtime/avm2/natives/sync.js +821 -0
  363. package/dist/thread/runtime/avm2/natives/toplevel.js +139 -0
  364. package/dist/thread/runtime/avm2/natives/vector-elements.js +46 -0
  365. package/dist/thread/runtime/avm2/natives/vector.js +406 -0
  366. package/dist/thread/runtime/avm2/natives/xml/access.js +633 -0
  367. package/dist/thread/runtime/avm2/natives/xml/build.js +291 -0
  368. package/dist/thread/runtime/avm2/natives/xml/chars.js +112 -0
  369. package/dist/thread/runtime/avm2/natives/xml/escape.js +38 -0
  370. package/dist/thread/runtime/avm2/natives/xml/names.js +204 -0
  371. package/dist/thread/runtime/avm2/natives/xml/node.js +272 -0
  372. package/dist/thread/runtime/avm2/natives/xml/operators.js +69 -0
  373. package/dist/thread/runtime/avm2/natives/xml/parser.js +356 -0
  374. package/dist/thread/runtime/avm2/natives/xml/strings.js +191 -0
  375. package/dist/thread/runtime/avm2/natives/xml/values.js +122 -0
  376. package/dist/thread/runtime/avm2/natives/xml/xml.js +645 -0
  377. package/dist/thread/runtime/avm2/number-strings.js +110 -0
  378. package/dist/thread/runtime/avm2/numbers.js +558 -0
  379. package/dist/thread/runtime/avm2/options.js +16 -0
  380. package/dist/thread/runtime/avm2/player-messages.js +550 -0
  381. package/dist/thread/runtime/avm2/property-cache.js +135 -0
  382. package/dist/thread/runtime/avm2/runtime.js +2644 -0
  383. package/dist/thread/runtime/avm2/traits.js +509 -0
  384. package/dist/thread/runtime/index.js +7 -0
  385. package/dist/web-worker.d.ts +2 -0
  386. package/dist/web-worker.d.ts.map +1 -0
  387. package/dist/web-worker.js +20 -0
  388. package/dist/web-worker.js.map +1 -0
  389. package/dist/websocket.d.ts +4 -0
  390. package/dist/websocket.d.ts.map +1 -0
  391. package/dist/websocket.js +27 -0
  392. package/dist/websocket.js.map +1 -0
  393. package/dist/workers.d.ts +35 -0
  394. package/dist/workers.d.ts.map +1 -0
  395. package/dist/workers.js +171 -0
  396. package/dist/workers.js.map +1 -0
  397. package/package.json +62 -3
  398. package/src/indexeddb.ts +227 -0
  399. package/src/node-worker.ts +13 -0
  400. package/src/node.ts +49 -0
  401. package/src/precompiled.ts +166 -0
  402. package/src/stage3d.ts +76 -0
  403. package/src/web-worker.ts +24 -0
  404. package/src/websocket.ts +32 -0
  405. package/src/workers.ts +255 -0
@@ -0,0 +1,100 @@
1
+ // Number(array) without formatting and parsing, for the Arrays whose
2
+ // conversion is still the builtins'.
3
+ import { NOT_FOUND } from "./descriptors.js";
4
+ import { numberReadBack, stringToNumber } from "./number-strings.js";
5
+ /**
6
+ * What Number(array) runs unless a script replaced it: Array's traits,
7
+ * Array.prototype, its toString and Object.prototype.valueOf, as the
8
+ * script defining Object leaves them, before any other script runs.
9
+ */
10
+ export class ArrayConversion {
11
+ arrayClass = null;
12
+ arrayTraits = null;
13
+ arrayPrototype = null;
14
+ arrayToString = NOT_FOUND;
15
+ objectValueOf = NOT_FOUND;
16
+ noteArrayClass(cls) {
17
+ this.arrayClass = cls;
18
+ }
19
+ /**
20
+ * Notes Array's builtin conversion functions, once the script defining
21
+ * Object, and Array beside it, has set its prototypes' functions.
22
+ */
23
+ noteConversions() {
24
+ const cls = this.arrayClass;
25
+ if (cls === null) {
26
+ return;
27
+ }
28
+ const prototype = cls.$prototype;
29
+ const objectPrototype = prototype.$p;
30
+ const toStringFn = prototype.$d.get("toString");
31
+ const valueOfFn = objectPrototype?.$d.get("valueOf");
32
+ if (toStringFn?.$f && valueOfFn?.$f) {
33
+ this.arrayTraits = cls.$it;
34
+ this.arrayPrototype = prototype;
35
+ this.arrayToString = toStringFn;
36
+ this.objectValueOf = valueOfFn;
37
+ }
38
+ }
39
+ /**
40
+ * Number(a) for an Array whose conversion is still the builtins': its
41
+ * valueOf returns it, and its toString joins its elements with commas,
42
+ * which then read back as a number. Without formatting and parsing, for
43
+ * the Arrays whose result is plain: none or one primitive element, or
44
+ * only primitives, whose join holds a comma and so is NaN, unless a NUL
45
+ * ends the number before it. Undefined for any other, which takes the
46
+ * general path, as does one with a hole, whose element the prototypes
47
+ * give.
48
+ */
49
+ arrayToNumber(o) {
50
+ const traits = this.arrayTraits;
51
+ if (traits === null || o.$traits !== traits) {
52
+ return undefined;
53
+ }
54
+ const prototype = this.arrayPrototype;
55
+ const d = o.$d;
56
+ const pd = prototype.$d;
57
+ if ((d !== null && (d.has("valueOf") || d.has("toString"))) ||
58
+ pd.has("valueOf") ||
59
+ pd.get("toString") !== this.arrayToString ||
60
+ prototype.$p.$d.get("valueOf") !== this.objectValueOf) {
61
+ return undefined;
62
+ }
63
+ const a = o.$a;
64
+ const length = a.length;
65
+ if (length === 0) {
66
+ return 0;
67
+ }
68
+ if (length === 1) {
69
+ if (!(0 in a)) {
70
+ return undefined;
71
+ }
72
+ const v = a[0];
73
+ switch (typeof v) {
74
+ case "number":
75
+ return numberReadBack(v);
76
+ case "string":
77
+ return stringToNumber(v);
78
+ case "boolean":
79
+ return Number.NaN;
80
+ case "undefined":
81
+ return 0;
82
+ default:
83
+ return v === null ? 0 : undefined;
84
+ }
85
+ }
86
+ for (let i = 0; i < length; i++) {
87
+ if (!(i in a)) {
88
+ return undefined;
89
+ }
90
+ const v = a[i];
91
+ if (v !== null && typeof v === "object") {
92
+ return undefined;
93
+ }
94
+ if (typeof v === "string" && v.includes("\0")) {
95
+ return undefined;
96
+ }
97
+ }
98
+ return Number.NaN;
99
+ }
100
+ }
@@ -0,0 +1,21 @@
1
+ // avmplus' builtin.abc: ActionScript 3's standard library, which every runtime loads first.
2
+ // Generated by tools/avmplus-libraries.ts --update; not to be edited.
3
+ //
4
+ // This Source Code Form is subject to the terms of the Mozilla Public
5
+ // License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+ //
8
+ // Its source form is the ActionScript in core/
9
+ // of avmplus, https://github.com/swf2es/avmplus at commit
10
+ // 858d034a3bd3a54d9b70909386435cf4aec81d21,
11
+ // which core/builtin.py compiles into generated/builtin.abc.
12
+ /** Base64 to bytes with a plain loop: Uint8Array.from with a callback takes some 8 times as long. */
13
+ function decode(text) {
14
+ const raw = atob(text);
15
+ const bytes = new Uint8Array(raw.length);
16
+ for (let i = 0; i < raw.length; i++) {
17
+ bytes[i] = raw.charCodeAt(i);
18
+ }
19
+ return bytes;
20
+ }
21
+ export const builtinLibrary = decode("EAAuABgAAQIKA4CAgIAI/////wfSrigECBDN5R6IiSMgQIABgAKABIAIB4DAA//xA/////8PAA/////////vf2lXFIsKvwVAFlW1u7FrAkDvOfr+Qi7mPw7lJhV7y9s//oIrZUcV9z8YLURU+yEJQM07f2aeoOY/zTt/Zp6g9j8AAAAAAADw/wAAAAAAAPB/AAAAAAAA+H8AAOD////vQQAAAAAAAAAAxQUABlN0cmluZwNYTUwQZGVzY3JpYmVUeXBlSlNPTgxidWlsdGluLmFzJDAHYXZtcGx1cyFodHRwOi8vYWRvYmUuY29tL0FTMy8yMDA2L2J1aWx0aW4GT2JqZWN0B3R5cGVYbWwEY29weQRuYW1lBnRyYWl0cwViYXNlcwZsZW5ndGgEYmFzZQlpc0R5bmFtaWMHaXNGaW5hbAhpc1N0YXRpYw5kZXNjcmliZVRyYWl0cwtVU0VfSVRSQUlUUwpmYWN0b3J5WG1sBHR5cGULYXBwZW5kQ2hpbGQEdWludAdYTUxMaXN0CmV4dGVuZHNYbWwKaW50ZXJmYWNlcw1pbXBsZW1lbnRzWG1sC2NvbnN0cnVjdG9yDmNvbnN0cnVjdG9yWG1sDmRlc2NyaWJlUGFyYW1zCXZhcmlhYmxlcwZhY2Nlc3MIcmVhZG9ubHkLY29uc3RhbnRYbWwLdmFyaWFibGVYbWwGZmluaXNoCWFjY2Vzc29ycwthY2Nlc3NvclhtbApkZWNsYXJlZEJ5B21ldGhvZHMJbWV0aG9kWG1sCnJldHVyblR5cGUKcGFyYW1ldGVycxBkZXNjcmliZU1ldGFkYXRhCG1ldGFkYXRhBHZvaWQDdXJpC21ldGFkYXRhWG1sBXZhbHVlBmFyZ1htbANrZXkFQXJyYXkMcGFyYW1ldGVyWG1sBWluZGV4CG9wdGlvbmFsB0Jvb2xlYW4JdW5kZWZpbmVkBk51bWJlcgNOYU4DaW50GF9zZXRQcm9wZXJ0eUlzRW51bWVyYWJsZQ5oYXNPd25Qcm9wZXJ0eRRwcm9wZXJ0eUlzRW51bWVyYWJsZQ1pc1Byb3RvdHlwZU9mCV90b1N0cmluZwlwcm90b3R5cGUXc2V0UHJvcGVydHlJc0VudW1lcmFibGUOdG9Mb2NhbGVTdHJpbmcIdG9TdHJpbmcHdmFsdWVPZhJfZG9udEVudW1Qcm90b3R5cGUOX2lzUHJvdG90eXBlT2YPX2hhc093blByb3BlcnR5FV9wcm9wZXJ0eUlzRW51bWVyYWJsZQPuipQEaW5pdAPui4gFX2luaXQDQVBJAzcxMgVDbGFzcwhGdW5jdGlvbgRjYWxsBWFwcGx5FmZ1bmN0aW9uIEZ1bmN0aW9uKCkge30TY3JlYXRlRW1wdHlGdW5jdGlvbgdjcHBjYWxsCU5hbWVzcGFjZQZwcmVmaXgFZmFsc2UFRXJyb3IJVHlwZUVycm9yGkJvb2xlYW4ucHJvdG90eXBlLnRvU3RyaW5nCnRocm93RXJyb3IEdHJ1ZRlCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mEU5FR0FUSVZFX0lORklOSVRZEVBPU0lUSVZFX0lORklOSVRZCU1JTl9WQUxVRQlfbWluVmFsdWUJTUFYX1ZBTFVFAUUETE4xMANMTjIGTE9HMTBFBUxPRzJFAlBJB1NRUlQxXzIFU1FSVDIMRFRPU1RSX0ZJWEVEEERUT1NUUl9QUkVDSVNJT04SRFRPU1RSX0VYUE9ORU5USUFMDXRvRXhwb25lbnRpYWwLdG9QcmVjaXNpb24HdG9GaXhlZAEwGU51bWJlci5wcm90b3R5cGUudG9TdHJpbmcPX251bWJlclRvU3RyaW5nGE51bWJlci5wcm90b3R5cGUudmFsdWVPZghfY29udmVydAPuiqgDNjgwA2FicwRhY29zBGFzaW4EYXRhbgRjZWlsA2NvcwNleHAFZmxvb3IDbG9nBXJvdW5kA3NpbgRzcXJ0A3RhbgVhdGFuMgNwb3cDbWF4A21pbgZyYW5kb20WaW50LnByb3RvdHlwZS50b1N0cmluZxVpbnQucHJvdG90eXBlLnZhbHVlT2YXdWludC5wcm90b3R5cGUudG9TdHJpbmcWdWludC5wcm90b3R5cGUudmFsdWVPZgxmcm9tQ2hhckNvZGUHaW5kZXhPZgtsYXN0SW5kZXhPZgZjaGFyQXQKY2hhckNvZGVBdAZjb25jYXQNbG9jYWxlQ29tcGFyZQVtYXRjaAdyZXBsYWNlBnNlYXJjaAVzbGljZQVzcGxpdAlzdWJzdHJpbmcGc3Vic3RyEXRvTG9jYWxlTG93ZXJDYXNlC3RvTG93ZXJDYXNlEXRvTG9jYWxlVXBwZXJDYXNlC3RvVXBwZXJDYXNlBl9tYXRjaAhfcmVwbGFjZQdfc2VhcmNoBl9zcGxpdBlTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nGFN0cmluZy5wcm90b3R5cGUudmFsdWVPZghfaW5kZXhPZgxfbGFzdEluZGV4T2YGX3NsaWNlCl9zdWJzdHJpbmcHX3N1YnN0cg9DQVNFSU5TRU5TSVRJVkUKREVTQ0VORElORwpVTklRVUVTT1JUElJFVFVSTklOREVYRURBUlJBWQdOVU1FUklDBGpvaW4DcG9wBHB1c2gHcmV2ZXJzZQVzaGlmdAd1bnNoaWZ0BnNwbGljZQRzb3J0BnNvcnRPbgVldmVyeQZmaWx0ZXIHZm9yRWFjaANtYXAEc29tZQEsBV9qb2luBF9wb3AIX3JldmVyc2UHX2NvbmNhdAZfc2hpZnQIX3Vuc2hpZnQHX3NwbGljZQVfc29ydAdfc29ydE9uBl9ldmVyeQdfZmlsdGVyCF9mb3JFYWNoBF9tYXAFX3NvbWUIYnVnemlsbGEKUmFuZ2VFcnJvcghpbnNlcnRBdAM3MDgIcmVtb3ZlQXQKc2V0X2xlbmd0aBJfX0FTM19fLnZlYzpWZWN0b3ILX19BUzNfXy52ZWMGVmVjdG9yGV9fQVMzX18udmVjOlZlY3RvciRvYmplY3QNVmVjdG9yJG9iamVjdA5jYXN0VG9UaGlzVHlwZQVmaXhlZAhJbmZpbml0eQtuZXdUaGlzVHlwZQ1fc3BsaWNlSGVscGVyBWNsYW1wFl9fQVMzX18udmVjOlZlY3RvciRpbnQKVmVjdG9yJGludBdfX0FTM19fLnZlYzpWZWN0b3IkdWludAtWZWN0b3IkdWludBlfX0FTM19fLnZlYzpWZWN0b3IkZG91YmxlDVZlY3RvciRkb3VibGUaYnVpbHRpbi5hcyQwOk1ldGhvZENsb3N1cmUOUmVmZXJlbmNlRXJyb3INTWV0aG9kQ2xvc3VyZQ88ZXh0ZW5kc0NsYXNzLz4WPGltcGxlbWVudHNJbnRlcmZhY2UvPg48Y29uc3RydWN0b3IvPgs8Y29uc3RhbnQvPgs8dmFyaWFibGUvPgs8YWNjZXNzb3IvPgk8bWV0aG9kLz4MPHBhcmFtZXRlci8+CzxtZXRhZGF0YS8+BjxhcmcvPgc8dHlwZS8+CjxmYWN0b3J5Lz4SSElERV9OU1VSSV9NRVRIT0RTDUlOQ0xVREVfQkFTRVMSSU5DTFVERV9JTlRFUkZBQ0VTEUlOQ0xVREVfVkFSSUFCTEVTEUlOQ0xVREVfQUNDRVNTT1JTD0lOQ0xVREVfTUVUSE9EUxBJTkNMVURFX01FVEFEQVRBE0lOQ0xVREVfQ09OU1RSVUNUT1IOSU5DTFVERV9UUkFJVFMLSElERV9PQkpFQ1QNRkxBU0gxMF9GTEFHUwNBUzMGbmF0aXZlA2NscwtPYmplY3RDbGFzcwdjbGFzc2djBWV4YWN0BGF1dG8JY29uc3RydWN0CG92ZXJyaWRlCkNsYXNzQ2xhc3MCZ2MIaW5zdGFuY2UMQ2xhc3NDbG9zdXJlDUZ1bmN0aW9uQ2xhc3MORnVuY3Rpb25PYmplY3QSTWV0aG9kQ2xvc3VyZUNsYXNzDk5hbWVzcGFjZUNsYXNzDEJvb2xlYW5DbGFzcwRib29sC051bWJlckNsYXNzBmRvdWJsZQhJbnRDbGFzcwdpbnQzMl90CVVJbnRDbGFzcwh1aW50MzJfdAtTdHJpbmdDbGFzcwpBcnJheUNsYXNzC0FycmF5T2JqZWN0ElRvcGxldmVsOjpidWd6aWxsYQlkZWNvZGVVUkkTVG9wbGV2ZWw6OmRlY29kZVVSSRJkZWNvZGVVUklDb21wb25lbnQcVG9wbGV2ZWw6OmRlY29kZVVSSUNvbXBvbmVudAllbmNvZGVVUkkTVG9wbGV2ZWw6OmVuY29kZVVSSRJlbmNvZGVVUklDb21wb25lbnQcVG9wbGV2ZWw6OmVuY29kZVVSSUNvbXBvbmVudAVpc05hTg9Ub3BsZXZlbDo6aXNOYU4IaXNGaW5pdGUSVG9wbGV2ZWw6OmlzRmluaXRlCHBhcnNlSW50ElRvcGxldmVsOjpwYXJzZUludApwYXJzZUZsb2F0FFRvcGxldmVsOjpwYXJzZUZsb2F0BmVzY2FwZRBUb3BsZXZlbDo6ZXNjYXBlCHVuZXNjYXBlElRvcGxldmVsOjp1bmVzY2FwZQlpc1hNTE5hbWUTVG9wbGV2ZWw6OmlzWE1MTmFtZQ5fX0FTM19fLnZlY+6KlAtWZWN0b3JDbGFzcxJPYmplY3RWZWN0b3JPYmplY3QRT2JqZWN0VmVjdG9yQ2xhc3MOSW50VmVjdG9yQ2xhc3MPSW50VmVjdG9yT2JqZWN0D1VJbnRWZWN0b3JDbGFzcxBVSW50VmVjdG9yT2JqZWN0EURvdWJsZVZlY3RvckNsYXNzEkRvdWJsZVZlY3Rvck9iamVjdCNEZXNjcmliZVR5cGVDbGFzczo6ZGVzY3JpYmVUeXBlSlNPTgphdm1wbHVz7oqUDGRlc2NyaWJlVHlwZRVnZXRRdWFsaWZpZWRDbGFzc05hbWUoRGVzY3JpYmVUeXBlQ2xhc3M6OmdldFF1YWxpZmllZENsYXNzTmFtZRpnZXRRdWFsaWZpZWRTdXBlcmNsYXNzTmFtZS1EZXNjcmliZVR5cGVDbGFzczo6Z2V0UXVhbGlmaWVkU3VwZXJjbGFzc05hbWUMZmxhc2gubmV07oqUEnJlZ2lzdGVyQ2xhc3NBbGlhcxxUb3BsZXZlbDo6cmVnaXN0ZXJDbGFzc0FsaWFzD2dldENsYXNzQnlBbGlhcxlUb3BsZXZlbDo6Z2V0Q2xhc3NCeUFsaWFzBE1hdGgLTmVnSW5maW5pdHkEX21pbgRfbWF4CU1hdGguYXMkMQlNYXRoQ2xhc3MKRXJyb3IuYXMkMgdtZXNzYWdlATEBMgEzATQBNQE2BHJlc3QPZ2V0RXJyb3JNZXNzYWdlBlJlZ0V4cAYlWzAtOV0BZwFpAWYCOiAIX2Vycm9ySUQNZ2V0U3RhY2tUcmFjZQdlcnJvcklED0RlZmluaXRpb25FcnJvcglFdmFsRXJyb3INU2VjdXJpdHlFcnJvcgtTeW50YXhFcnJvcghVUklFcnJvcgtWZXJpZnlFcnJvchJVbmluaXRpYWxpemVkRXJyb3INQXJndW1lbnRFcnJvchRmbGFzaC5lcnJvcnM6SU9FcnJvcgxmbGFzaC5lcnJvcnMHSU9FcnJvchhmbGFzaC5lcnJvcnM6TWVtb3J5RXJyb3ILTWVtb3J5RXJyb3IiZmxhc2guZXJyb3JzOklsbGVnYWxPcGVyYXRpb25FcnJvchVJbGxlZ2FsT3BlcmF0aW9uRXJyb3IVZmxhc2guZXJyb3JzOkVPRkVycm9yCEVPRkVycm9yCkVycm9yQ2xhc3MLRXJyb3JPYmplY3QURGVmaW5pdGlvbkVycm9yQ2xhc3MVRGVmaW5pdGlvbkVycm9yT2JqZWN0DkV2YWxFcnJvckNsYXNzD0V2YWxFcnJvck9iamVjdA9SYW5nZUVycm9yQ2xhc3MQUmFuZ2VFcnJvck9iamVjdBNSZWZlcmVuY2VFcnJvckNsYXNzFFJlZmVyZW5jZUVycm9yT2JqZWN0ElNlY3VyaXR5RXJyb3JDbGFzcxNTZWN1cml0eUVycm9yT2JqZWN0EFN5bnRheEVycm9yQ2xhc3MRU3ludGF4RXJyb3JPYmplY3QOVHlwZUVycm9yQ2xhc3MPVHlwZUVycm9yT2JqZWN0DVVSSUVycm9yQ2xhc3MOVVJJRXJyb3JPYmplY3QQVmVyaWZ5RXJyb3JDbGFzcxFWZXJpZnlFcnJvck9iamVjdBdVbmluaXRpYWxpemVkRXJyb3JDbGFzcxhVbmluaXRpYWxpemVkRXJyb3JPYmplY3QSQXJndW1lbnRFcnJvckNsYXNzE0FyZ3VtZW50RXJyb3JPYmplY3QPZmxhc2guZXJyb3Jz7oqUBERhdGUJRGF0ZS5hcyQzB3NldFRpbWUMdG9EYXRlU3RyaW5nDHRvVGltZVN0cmluZxJ0b0xvY2FsZURhdGVTdHJpbmcSdG9Mb2NhbGVUaW1lU3RyaW5nC3RvVVRDU3RyaW5nBnRvSlNPTg5nZXRVVENGdWxsWWVhcgtnZXRVVENNb250aApnZXRVVENEYXRlCWdldFVUQ0RheQtnZXRVVENIb3Vycw1nZXRVVENNaW51dGVzDWdldFVUQ1NlY29uZHMSZ2V0VVRDTWlsbGlzZWNvbmRzC2dldEZ1bGxZZWFyCGdldE1vbnRoB2dldERhdGUGZ2V0RGF5CGdldEhvdXJzCmdldE1pbnV0ZXMKZ2V0U2Vjb25kcw9nZXRNaWxsaXNlY29uZHMRZ2V0VGltZXpvbmVPZmZzZXQHZ2V0VGltZQtzZXRGdWxsWWVhcghzZXRNb250aAdzZXREYXRlCHNldEhvdXJzCnNldE1pbnV0ZXMKc2V0U2Vjb25kcw9zZXRNaWxsaXNlY29uZHMOc2V0VVRDRnVsbFllYXILc2V0VVRDTW9udGgKc2V0VVRDRGF0ZQtzZXRVVENIb3Vycw1zZXRVVENNaW51dGVzDXNldFVUQ1NlY29uZHMSc2V0VVRDTWlsbGlzZWNvbmRzCF9zZXRUaW1lDF9zZXRGdWxsWWVhcglfc2V0TW9udGgIX3NldERhdGUJX3NldEhvdXJzC19zZXRNaW51dGVzC19zZXRTZWNvbmRzEF9zZXRNaWxsaXNlY29uZHMPX3NldFVUQ0Z1bGxZZWFyDF9zZXRVVENNb250aAtfc2V0VVRDRGF0ZQxfc2V0VVRDSG91cnMOX3NldFVUQ01pbnV0ZXMOX3NldFVUQ1NlY29uZHMTX3NldFVUQ01pbGxpc2Vjb25kcwVwYXJzZQNVVEMEX2dldAhmdWxsWWVhcgVtb250aARkYXRlBWhvdXJzB21pbnV0ZXMHc2Vjb25kcwxtaWxsaXNlY29uZHMLZnVsbFllYXJVVEMIbW9udGhVVEMHZGF0ZVVUQwhob3Vyc1VUQwptaW51dGVzVVRDCnNlY29uZHNVVEMPbWlsbGlzZWNvbmRzVVRDBHRpbWUOdGltZXpvbmVPZmZzZXQDZGF5BmRheVVUQwlEYXRlQ2xhc3MKRGF0ZU9iamVjdAtSZWdFeHAuYXMkNARleGVjBHRlc3QBLwZzb3VyY2UGZ2xvYmFsCmlnbm9yZUNhc2UJbXVsdGlsaW5lAW0GZG90YWxsAXMIZXh0ZW5kZWQBeAlsYXN0SW5kZXgLUmVnRXhwQ2xhc3MMUmVnRXhwT2JqZWN0BEpTT04FYXMzbnMJSlNPTi5hcyQ1CXBhcnNlQ29yZQZXYWxrZXIEd2FsawogICAgICAgICAgHHN0cmluZ2lmeVNwZWNpYWxpemVkVG9TdHJpbmcTY29tcHV0ZVByb3BlcnR5TGlzdAlzdHJpbmdpZnkHcmV2aXZlcgPuiqIJSlNPTkNsYXNzBG5vbmUDNjc0CHNldHRpbmdzCFhNTC5hcyQ2C3NldFNldHRpbmdzD2RlZmF1bHRTZXR0aW5ncwxhZGROYW1lc3BhY2UJYXR0cmlidXRlCmF0dHJpYnV0ZXMFY2hpbGQKY2hpbGRJbmRleAhjaGlsZHJlbghjb21tZW50cwhjb250YWlucwtkZXNjZW5kYW50cwhlbGVtZW50cxFoYXNDb21wbGV4Q29udGVudBBoYXNTaW1wbGVDb250ZW50EWluU2NvcGVOYW1lc3BhY2VzEGluc2VydENoaWxkQWZ0ZXIRaW5zZXJ0Q2hpbGRCZWZvcmUJbG9jYWxOYW1lCW5hbWVzcGFjZRVuYW1lc3BhY2VEZWNsYXJhdGlvbnMIbm9kZUtpbmQJbm9ybWFsaXplBnBhcmVudBZwcm9jZXNzaW5nSW5zdHJ1Y3Rpb25zDHByZXBlbmRDaGlsZA9yZW1vdmVOYW1lc3BhY2ULc2V0Q2hpbGRyZW4Mc2V0TG9jYWxOYW1lB3NldE5hbWUMc2V0TmFtZXNwYWNlBHRleHQLdG9YTUxTdHJpbmcOaWdub3JlQ29tbWVudHMcaWdub3JlUHJvY2Vzc2luZ0luc3RydWN0aW9ucxBpZ25vcmVXaGl0ZXNwYWNlDnByZXR0eVByaW50aW5nDHByZXR0eUluZGVudAEqCl9uYW1lc3BhY2UMbm90aWZpY2F0aW9uD3NldE5vdGlmaWNhdGlvbgVRTmFtZRhRTmFtZS5wcm90b3R5cGUudG9TdHJpbmcDKjo6Ajo6CFhNTENsYXNzCVhNTE9iamVjdAxYTUxMaXN0Q2xhc3MNWE1MTGlzdE9iamVjdApRTmFtZUNsYXNzC1FOYW1lT2JqZWN0C2ZsYXNoLnV0aWxzCUJ5dGVBcnJheRZmbGFzaC51dGlsczpJRGF0YUlucHV0CXJlYWRCeXRlcwtyZWFkQm9vbGVhbghyZWFkQnl0ZRByZWFkVW5zaWduZWRCeXRlCXJlYWRTaG9ydBFyZWFkVW5zaWduZWRTaG9ydAdyZWFkSW50D3JlYWRVbnNpZ25lZEludAlyZWFkRmxvYXQKcmVhZERvdWJsZQ1yZWFkTXVsdGlCeXRlB3JlYWRVVEYMcmVhZFVURkJ5dGVzDmJ5dGVzQXZhaWxhYmxlCnJlYWRPYmplY3QOb2JqZWN0RW5jb2RpbmcGZW5kaWFuCklEYXRhSW5wdXQOZmxhc2gudXRpbHPuipQXZmxhc2gudXRpbHM6SURhdGFPdXRwdXQKd3JpdGVCeXRlcwx3cml0ZUJvb2xlYW4Jd3JpdGVCeXRlCndyaXRlU2hvcnQId3JpdGVJbnQQd3JpdGVVbnNpZ25lZEludAp3cml0ZUZsb2F0C3dyaXRlRG91YmxlDndyaXRlTXVsdGlCeXRlCHdyaXRlVVRGDXdyaXRlVVRGQnl0ZXMLd3JpdGVPYmplY3QLSURhdGFPdXRwdXQRZmxhc2gudXRpbHM6UHJveHkLUHJveHkuYXMkMTAyaHR0cDovL3d3dy5hZG9iZS5jb20vMjAwNi9hY3Rpb25zY3JpcHQvZmxhc2gvcHJveHkLZ2V0UHJvcGVydHkLc2V0UHJvcGVydHkMY2FsbFByb3BlcnR5C2hhc1Byb3BlcnR5DmRlbGV0ZVByb3BlcnR5DmdldERlc2NlbmRhbnRzDW5leHROYW1lSW5kZXgIbmV4dE5hbWUJbmV4dFZhbHVlC2lzQXR0cmlidXRlBVByb3h5C2ZsYXNoX3Byb3h5ClByb3h5Q2xhc3MLUHJveHlPYmplY3QWZmxhc2gudXRpbHM6RGljdGlvbmFyeRBEaWN0aW9uYXJ5LmFzJDEyCkRpY3Rpb25hcnkPRGljdGlvbmFyeUNsYXNzEERpY3Rpb25hcnlPYmplY3QgZmxhc2gubmV0OklEeW5hbWljUHJvcGVydHlPdXRwdXQUd3JpdGVEeW5hbWljUHJvcGVydHkJZmxhc2gubmV0FklEeW5hbWljUHJvcGVydHlPdXRwdXQgZmxhc2gubmV0OklEeW5hbWljUHJvcGVydHlXcml0ZXIWd3JpdGVEeW5hbWljUHJvcGVydGllcxZJRHluYW1pY1Byb3BlcnR5V3JpdGVyG2ZsYXNoLnV0aWxzOklFeHRlcm5hbGl6YWJsZQ13cml0ZUV4dGVybmFsDHJlYWRFeHRlcm5hbA9JRXh0ZXJuYWxpemFibGUYZmxhc2gubmV0Ok9iamVjdEVuY29kaW5nBEFNRjAEQU1GMwdERUZBVUxUFWR5bmFtaWNQcm9wZXJ0eVdyaXRlcg5PYmplY3RFbmNvZGluZxRPYmplY3RFbmNvZGluZy5hcyQxORNPYmplY3RFbmNvZGluZ0NsYXNzFmZsYXNoLmNvbmN1cnJlbnQ6TXV0ZXgEY3RvchBjb25jdXJyZW50LmFzJDIwEGZsYXNoLmNvbmN1cnJlbnQLaXNTdXBwb3J0ZWQEbG9jawd0cnlMb2NrBnVubG9jawVNdXRleBpmbGFzaC5jb25jdXJyZW50OkNvbmRpdGlvbgVtdXRleAR3YWl0Bm5vdGlmeQlub3RpZnlBbGwJQ29uZGl0aW9uE2ZsYXNoLmNvbmN1cnJlbnTuiqwKTXV0ZXhDbGFzcwtNdXRleE9iamVjdAM2ODQOQ29uZGl0aW9uQ2xhc3MPQ29uZGl0aW9uT2JqZWN0GWF2bTIuaW50cmluc2ljcy5tZW1vcnnuiqwGbWZlbmNlGENvbmN1cnJlbnRNZW1vcnk6Om1mZW5jZQZjYXNpMzIYQ29uY3VycmVudE1lbW9yeTo6Y2FzaTMyF2ZsYXNoLnV0aWxzOk9iamVjdElucHV0EU9iamVjdElucHV0LmFzJDE2C09iamVjdElucHV0EE9iamVjdElucHV0Q2xhc3MRT2JqZWN0SW5wdXRPYmplY3QgZmxhc2gudXRpbHM6Q29tcHJlc3Npb25BbGdvcml0aG0EWkxJQgR6bGliB0RFRkxBVEUHZGVmbGF0ZQRMWk1BBGx6bWEUQ29tcHJlc3Npb25BbGdvcml0aG0OQnl0ZUFycmF5LmFzJDkLSURhdGFJbnB1dDIMSURhdGFPdXRwdXQyFWZsYXNoLnV0aWxzOkJ5dGVBcnJheQlfY29tcHJlc3MLX3VuY29tcHJlc3MVZGVmYXVsdE9iamVjdEVuY29kaW5nFl9kZWZhdWx0T2JqZWN0RW5jb2RpbmcD7oqWAzY2Mghjb21wcmVzcwdpbmZsYXRlCnVuY29tcHJlc3MIcG9zaXRpb24FY2xlYXID7oqqGWF0b21pY0NvbXBhcmVBbmRTd2FwSW50QXQDNjgyGmF0b21pY0NvbXBhcmVBbmRTd2FwTGVuZ3RoCXNoYXJlYWJsZQ5CeXRlQXJyYXlDbGFzcw9CeXRlQXJyYXlPYmplY3QYZmxhc2gudXRpbHM6T2JqZWN0T3V0cHV0Ek9iamVjdE91dHB1dC5hcyQxNwxPYmplY3RPdXRwdXQRT2JqZWN0T3V0cHV0Q2xhc3MST2JqZWN0T3V0cHV0T2JqZWN0H2ZsYXNoLm5ldDpEeW5hbWljUHJvcGVydHlPdXRwdXQbRHluYW1pY1Byb3BlcnR5T3V0cHV0LmFzJDE1FUR5bmFtaWNQcm9wZXJ0eU91dHB1dBpEeW5hbWljUHJvcGVydHlPdXRwdXRDbGFzcxtEeW5hbWljUHJvcGVydHlPdXRwdXRPYmplY3S8ARYBBQUWBhcGCAcFCBcBGAgaCBZMFk4FUhhSBVMYUxpTBVkYWRpZBTkYORo5BTsYOxo7FnoFPRg9Gj0FGBgYGhgFAhgCGgIFNRg1GjUF1wEW2AEY1wEF2gEX2AEY2gEa2gEF4gEY4gEa4gEF5AEY5AEa5AEF5gEY5gEa5gEF6AEY6AEa6AEWtQIWwAIWxgIFywIYywIFzwIFXAXRAhhcGlwF5AIY5AIa5AIF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AAABAAEBAAEIAQEDAQEAAQgBAQMBAQABCAEBAwFDQwEgAUNDASABQ0MBIAFDQwEgAUNDASABQ0MBIAFDQwEgAUNDASABQ0MBIAFDQwEgAUNDASABQ0MBIAFDQwEgAkNDQwEgAkNDQwEgAkNDQwEsAgoGCgYCQ0NDASwCCwYLBgBDASACAUNEASADAUNERAEgAEMBIAEBAAEIAQQDAEMBAAEBAAEIAQEDAQEAAQgBAQMBAQABCAEBAwEAAAEIAQEDAAABAAEBAAEIAQQDAAABAAEBAAEIAQEDAQEAAQgBAQMBAQABCAEBAwEBAAEIAQQDAEQBAAEBAAEIAQEDAQEAAQgBAQMBAQABCAEBAwEAAAEIAQEDAAABAAEBAAEIAQQDAAABAAEBAAEIAQEDAQEAAQgBAQMBAQABCAEBAwEBAAEIAQQDABkBAAEBAAEIAQEDAQEAAQgBAQMBAQABCAEBAwEAAAEIAQEDAAABAAAAAQQCRAFDAQgCOgEBAwJEAUMBCAI6AQcDAQFDAQgBAQMBQ0MBCAEBAwABAQQBRAABCAEAAAE9AAEIAQAAAgEAAAEIAgAAAAABRAABCAEAAAIBQ0MBCAIBAwcDAj0AAAEIAgAADQYCAUNDAQgCAQMHAwIBQ0MBCAIBAwcDAAEBAAABAQAAAQEAAAABAAABASQCPQEAASADAQEAAAEgAkQBAAEgAz0BABkBIABEASACRAFEASgBAQMCRAFDASgCOgEBAwJEAUQBKAEHAwJEAUMBKAI6AQcDAQFDASgBAQMBQ0MBKAEBAwABAQQBRAABKAEAAAE9AAEIAQAAAgEAAAEIAgAAAAABRAABCAEAAAIBREQBKAIBAwcDAgFDQwEoAgEDBwMCPQAAAQgCAAANBgIBREQBKAIBAwcDAgFDQwEoAgEDBwMCAUREASgCAQMHAwIBQ0MBKAIBAwcDAAEBIAABAQAAAQEgAAEBAAABAQAAAQEAAQAAAQgBAQEAAAEAAQEAAQgBAAAAAAEAAAEBAAABAQAAGQEEAAABAAA9AQQAAAEAAj0AAAEIAgEDDQYAGQEEAAABBAAAAQQCAAAAAQwBAQMCRAAAAQgBAQMCRAAAAQgBBwMCQmsAAQgBDAwCPWsAAQgBDAwCNGsAAQgBDAwCPWsAAQgBDAwCQmsAAQgBDAwCAQAAAQABAAABIAEAAAEgAj0APQEgAQAAASADPQBDQwEgAhkAPQEgAj0APQEgAgAAPQEgAwAAAAABIANEAABEASADRAAARAEoAQEDA0IAawABIAM9AGsAASADNABrAAEgAz0AawABIANCAGsAASACNEQAASABAEQBIAAZASABABkBIAIAABkBAAAAAQQBAQABCAEAAAAAASAAGQEkAD0BAAA9AQQAAAEAAj0AAAEIAgEDDQYAGQEkAAABBAAAAQQCAAAAAQwBAQMCRAAAAQgBAQMCRAAAAQgBBwMCQmsAAQgBDAwCPWsAAQgBDAwCNGsAAQgBDAwCPWsAAQgBDAwCQmsAAQgBDAwAAAEAAAABAAAAAQAAAAEEAAABAAAAAQABAAABCAEAAAAAAQQCQgAAAQgBAAACAAAAAQgBAAACAAAAAQgBAAACAAAAAQgBAAACAAAAAQgBAAACAAAAAQgBAAAAAAEAAAABAAAAAQACAAAAAQgCAAAAAAJCAAABCAEAAAEAAAEAAgAAAAEEAAABBAGpAwABAANCAGsAASADNABrAAEgA0IAawABIAIAAD0BIAIAGUIBCAIBAwoKAKkDASAAGQEgAQAZASABAEIBIABCASAAAQEAAAEBAAEBAQEIAcIBAQEAPQEAAkJrBAEIAQwMAjRrBAEIAQwMAgBrBAEIAQwMABkBJAA0ASACQgAEAQgBDAwCAENDAQgCAQMHAwMAAAA9AQAFNBkZGQQZASAAGQEkAgBrAAEgAgBrAAEgAhlDGQEAAKkDAQQCqQNrBAEIAQwMAAABIACpAwEAAAABIAKpA0NDAQgCAQMHAwGpAwABAAKpA0NDAQQCNEQEASABBEQBIAJDBEMBCAEBAwJDBEMBCAEHAwAAAQAAAAEEAAABAAAAAQABAAABCAEAAAAAAQQCQgAAAQgBAAACAAAAAQgBAAACAAAAAQgBAAACAAAAAQgBAAACAAAAAQgBAAACAAAAAQgBAAAAAAEAAAABAAAAAQACAAAAAQgCAAAAAAJCAAABCAEAAAEAAAEAAgAAAAEEAAABBAHzAwABAANCAGsAASADNABrAAEgA0IAawABIAIAAD0BIAIAGUIBCAIBAwoKAPMDASAAGQEgAQAZASABAEIBIABCASAAAQEAAAEBAAEBAQEIAcIBAQEAPQEAAkJrBAEIAQwMAjRrBAEIAQwMAgBrBAEIAQwMABkBJAA0ASACQgAEAQgBDAwCAENDAQgCAQMHAwMAAAA9AQAFNBkZGQQZASAAGQEkAgBrAAEgAgBrAAEgAhlDGQEAAPMDAQQC8wNrBAEIAQwMAEQBIADzAwEAAEQBIALzA0NDAQgCAQMHAwHzAwABAALzA0NDAQQCNEREASABREQBIAJDREMBCAEBAwJDREMBCAEHAwAAAQAAAAEEAAABAAAAAQABAAABCAEAAAAAAQQCQgAAAQgBAAACAAAAAQgBAAACAAAAAQgBAAACAAAAAQgBAAACAAAAAQgBAAACAAAAAQgBAAAAAAEAAAABAAAAAQACAAAAAQgCAAAAAAJCAAABCAEAAAEAAAEAAgAAAAEEAAABBAG0BAABAANCAGsAASADNABrAAEgA0IAawABIAIAAD0BIAIAGUIBCAIBAwoKALQEASAAGQEgAQAZASABAEIBIABCASAAAQEAAAEBAAEBAQEIAcIBAQEAPQEAAkJrBAEIAQwMAjRrBAEIAQwMAgBrBAEIAQwMABkBJAA0ASACQgAEAQgBDAwCAENDAQgCAQMHAwMAAAA9AQAFNBkZGQQZASAAGQEkAgBrAAEgAgBrAAEgAhlDGQEAALQEAQQCtARrBAEIAQwMABkBIAC0BAEAABkBIAK0BENDAQgCAQMHAwG0BAABAAK0BENDAQQCNEQZASABGRkBIAJDGUMBCAEBAwJDGUMBCAEHAwAAAQAAAAEEAAABAAAAAQABAAABCAEAAAAAAQQCQgAAAQgBAAACAAAAAQgBAAACAAAAAQgBAAACAAAAAQgBAAACAAAAAQgBAAACAAAAAQgBAAAAAAEAAAABAAAAAQACAAAAAQgCAAAAAAJCAAABCAEAAAEAAAEAAgAAAAEEAAABBAH1BAABAANCAGsAASADNABrAAEgA0IAawABIAIAAD0BIAIAGUIBCAIBAwoKAPUEASAAGQEgAQAZASABAEIBIABCASAAAQEAAAEBAAEBAQEIAcIBAQEAPQEAAkJrBAEIAQwMAjRrBAEIAQwMAgBrBAEIAQwMABkBJAA0ASACQgAEAQgBDAwCAENDAQgCAQMHAwMAAAA9AQAFNBkZGQQZASAAGQEkAgBrAAEgAgBrAAEgAhlDGQEAAPUEAQQC9QRrBAEIAQwMAEMBIAD1BAEAAEMBIAL1BENDAQgCAQMHAwH1BAABAAL1BENDAQQCNERDASABQ0QBIAJDQ0MBCAEBAwJDQ0MBCAEHAwAAAQAAAAEAAQAAAQAAAAEAAAABAAFkAQEgAjQBZAEgAAABAAAAAQAAAAEAAkNDQwEgAkNDQwEgAUNDASABQ0MBIAFDQwEgAUNDASABQ0MBIAFDQwEgAUNDASABQ0MBIAFDQwEgAUNDASABQ0MBIAFDQwEgAUNDASACQ0NDASACQ0NDASACQ0NDASwCCgYKBgJDQ0MBLAILBgsGAEMBIAAAAQAAAAEAAAABAAABAQABAUQBIAMAAAAAAQACAGQZAQYCAAAAAQgCAQEBAwABASAARAEAAAABAAIAAAABCAIBAQEDAAABAAIAAAABCAIBAQEDAAABAAIAAAABCAIBAQEDAAABAAIAAAABCAIBAQEDAAABAAIAAAABCAIBAQEDAAABAAIAAAABCAIBAQEDAAABAAIAAAABCAIBAQEDAAABAAIAAAABCAIBAQEDAAABAAIAAAABCAIBAQEDAAABAAIAAAABCAIBAQEDAAABAAIAAAABCAIBAQEDAAABAAIAAUQBCAIBAQEDAAABAAIAAUQBCAIBAQEDAAABAAIAAUQBCAIBAQEDAAABAAIAAUQBCAIBAQEDAAABAAAAAQABQwABCAEAAAAAAQAAAQEAAAEBAAABAQAAAQEAAAEBAAABAQAAAQEAAQABAQAAQwEAAEMBAABDAQAAQwEAAEMBAABDAQAAQwEAAEMBAABDAQAAQwEAAEMBAABDAQAAQwEAAEMBAABDAQAAQwEAAEMBAABDAQADQwAAAAEJAwAAAAAAAAJDAAABCQIAAAAAAUMAAQkBAAAEQwAAAAABCQQAAAAAAAAAAANDAAAAAQkDAAAAAAAAAkMAAAEJAgAAAAABQwABCQEAAANDAAAAAQkDAAAAAAAAAkMAAAEJAgAAAAABQwABCQEAAARDAAAAAAEJBAAAAAAAAAAAA0MAAAABCQMAAAAAAAACQwAAAQkCAAAAAAFDAAEJAQAAAUMAASAHQwAAAAAAAAABLAUCAwEDAQMBAwEDAEMBIAEBRAEgAUNDASABQ0QBIAFDAAEIAQAAAAEBAAABAQAAAQEAAAEBAAABAQAAAQEAAAEBAABDASAAQwEgAEMBIABDASAAQwEgAEMBIABDASAAQwEgAEMBIABDASAAQwEgAEMBIABDASAAQwEgAEMBIABDASAAQwEgAEMBIABDASQAQwEkAEMBJABDASQAQwEkAEMBJABDASQAQwEkAEMBJABDASQAQwEkAEMBJABDASQAQwEkA0MAAAABCQMAAAAAAAACQwAAAQkCAAAAAAFDAAEJAQAABEMAAAAAAQkEAAAAAAAAAAADQwAAAAEJAwAAAAAAAAJDAAABCQIAAAAAAUMAAQkBAAADQwAAAAEJAwAAAAAAAAJDAAABCQIAAAAAAUMAAQkBAAAEQwAAAAABCQQAAAAAAAAAAANDAAAAAQkDAAAAAAAAAkMAAAEJAgAAAAABQwABCQEAAABDAQABAEMBAABDAQABAEMBAABDAQABAEMBAABDAQABAEMBAABDAQABAEMBAABDAQABAEMBAABDAQABAEMBAABDAQABAEMBAABDAQABAEMBAABDAQABAEMBAABDAQABAEMBAABDAQABAEMBAABDAQABAEMBAABDAQABAEMBAABDAQABAEMBAABDAQAAQwEAAEMBAAcAAAAAAAAAAAEIBwAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAQEAAQAAAQgBAQEBQgABCAEBAQABASAAQgEgAEIBIABCASAARAEgAQBEASAAQgEgAEIBIAEAAQEoAQEBAUIBAQgBAQECAAAAAQgCAAAAAAAAAQAAAAEAAQQBASAEAQQ9awEBIAIEAWsBCAEMDAMBBAAAAQgCDAwMDAE9PQEAAAABAAAAAQABAGsBAAIABAEBAAAAAQAAAAEAAAQBAAE0AAEIAQAAAAQBAAFCAAEIAQAAAUIAAQgBAAAAAQEAAQIAAQABAgABAAEbAAEAABsBAAEbAAEAAEQBAAAbAQAAGwEAAUIAAQAAAgEAARsAAQgBowQBARsAAQgBowQBAEIBAABCAQAAPQEAAgAAAAEAAgAAAAEAAEQBAAAEAQAABAEAAQAAAQkBDAwAPQEAAAEBAAACAQAAAAEAARsAAQgBowQBAQIAAQABAgABAAICAAABAAECAAEAATQAAQABNAABAAE0AAEAABsBAAABAQABAAEBAABCASABAEIBIABCASABAEIBIABCASABAEIBIABCASABAEIBIABEASABAEQBIAAEAQABNAQBCAEMDAAEAQAAAQEgAUIAASgBAAABQgABKAEAAAECAAEgAQIAASABGwABIAAbASABGwABIABEASAAGwEgABsBIAFCAAEgAAIBIAEbAAEoAaMEAQEbAAEoAaMEAQBCASAAQgEgAD0BIAIAAAABIAIAAAABIABEAQAABAEgAAQBIAIAAEQBIAEAAAEJAQwMAD0BIAABASAAAgEgAAABIAEbAAEoAaMEAQECAAEgAQIAASACAgAAASABAgABIAE0AAEgATQAASABNAABIAAbASAAAQEgAGsBIAEAawEgAQABAQABAAABCAEAAAACAQAAAAEAAUIAAQgBAAABQgABCAEAAAABAQABAgABAAECAAEAARsAAQAAGwEAARsAAQAARAEAABsBAAAbAQABQgABAAAbAQABGwABCAGjBAEBGwABCAGjBAEAQgEAAEIBAAA9AQACAAAAAQACAAAAAQAARAEAAAQBAAAEAQABAAABCQEMDAA9AQAAAQEAABsBAAAAAQABGwABCAGjBAEBAgABAAECAAEAAgIAAAEAAQIAAQABNAABAAE0AAEAATQAAQAAGwEAAAEBAAEAAQEAAAEBIAAbAQABQgABKAEAAAFCAAEoAQAAARsAASAAGwEgARsAASAAGwEgABsBIAFCAAEgABsBIAEbAAEoAaMEAQEbAAEoAaMEAQBCASAAQgEgAEQBIAAEASAAGwEgAAABIAEbAAEoAaMEAQAbASAAAQEgAQIAASABAgABIABEASAAPQEgAgAAAAEgAgAAAAEgAAEBIAIAAEQBIAEAAAEJAQwMAAQBIAA9ASABAgABIAECAAEgAgIAAAEgAQIAASABNAABIAE0AAEgATQAASABAAEBAAEAAAEIAQAAAAABAAABAQAAAQEgAAABIADnCgEAAAEBAAIAAAABCAIAAAAAAAABAAAAAQADNPUKGRkBCAIBAwEDAEIBAABEAQAAGQEAAEQBAAAZAQAARAEAABkBAABDAQAAQwEAAgEZAQEAAAEBAAEBGQEAABkBAAAAAQAAGQEAATQZAQAAAQEAATQBAQAAAAEAAAABAAAAAQADNPUKGRkBCAIBAwEDATRCAQABNEQBAAE0RAEAATREAQABNBkBAAE0QwEAATRDAQACNAEBAQABNAEBAAE0AQEAATQAAQAAGQEAATQZAQAAAQEAATQBAQAAAAEAAAABAAAAAQABAAABAAI0AAABAAEAAAEEAUIAAQABQgABAAEAAAEAAUREAQABAUQBAAEARAEAAUIAASAAAAEAAAABAAAAAQABAAEBAAE0QgEgAQBCAQgBCgoAAAEAAAABAAI0AQABAAAAAQAAAAEAAAABAAI0BLULAQAAAAEAAAABAAAAAQABNJgLAQABNIcLAQAAAAEAAAABAAAAAQAAuQsBIAE0uQsBIAAAAQAAAAEAA0REREQBIAA0ASAAAAEAAEIBIAAAAQAANAEgAEIBIAA0ASAANAEgAAABAABCASABANALAQAA0AsBIAFCQwEoARcDADQBIAA0ASABNNALASAAAAEAAAABAAM09QoZGQEoAgEDAQMAQgEgAEQBIAAZASAARAEgABkBIABEASAAGQEgAEMBIABDASACARkBASAAAQEgAQEZASAAGQEgAAABIAAZASABNBkBIAABASABNAEBIAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAEAAQEAABkBIAE0GQEgAAABAAM09QoZGQEoAgEDAQMDNPUKGRkBKAIBAwEDATRCASABNEQBIAE0RAEgATREASABNBkBIAE0QwEgATRDASACNAEBASABNAEBIAE0AQEgAEIBIABEASAAGQEgAEQBIAAZASAARAEgABkBIABDASAAQwEgAgEZAQEgAAEBIAEBGQEgABkBIAE0GQEgATQAASAAAAEgADQBAAE0AQEgATQBAQgBnwUBADQBAAE0AQEgATQBAQgBnwUBAAEBAAABASAAGQEgABkBIAE0GQEgABkBIAE0GQEgAAEBIAE0AQEgADQBIANEREREASACREREASAAQgEgATRCASAAAAEAAAABAAM09QoZGQEoAgEDAQMBNEIBIAE0RAEgATREASABNEQBIAE0GQEgATRDASABNEMBIAI0AQEBIAE0AQEgATQBASABNAABIAAZASABNBkBIAABASABNAEBIAAAAQAAAAEAAAABAAI0AQABIAAAAQAAAAEAR1ABAFFYAFABAHtQAQDUAYMCBIQChgIpiQKFAocCiAKKAoMCBYQCjAKNAimJAosChwKOAogCjQKDAgWEAowCjQIpiQKPAocCkAKIAo0CgwIFhAKMAo0CKYkCkQKHAuoBiAKNAoMCBYQChgKNAimJApIChwJZiAKKAoMCBYQChgKNAimJApMChwKUAogCigKDAgWEAoYCjQIpiQKVAocClgKIAooCgwIFhAKGAo0CKYkClwKHApgCiAKKAoMCBYQChgKNAimJApkChwKaAogCigKDAgWEAoYCjQIpiQKbAocCAogCigKDAgSEAowCjQIpnAKHAp0CiAKDAgEAngKDAgEAoAKDAgEAogKDAgEApAKDAgEApgKDAgEAqAKDAgEAqgKDAgEArAKDAgEArgKDAgEAsAKDAgEAsgKDAgEAtAKDAgWEAowCjQIpiQK2AocCtwKIAooCgwIFhAKMAo0CKYkCuAKHArcCiAKKAoMCBYQCjAKNAimJArkChwK6AogCigKDAgWEAowCjQIpiQK7AocCvAKIAooCgwIFhAKMAo0CKYkCvQKHAr4CiAKKAoMCAQC/AoMCAQDDAoMCAQDFAoMCAQDIAoMCAQDKAoMCBYQChgKNAimJAtAChwKWAogCigKDAgSEAowCjQIp9QKHAvYCiAKDAgSEAowCjQIp9wKHAvgCiAKDAgSEAowCjQIp+QKHAvoCiAKDAgSEAowCjQIp+wKHAvwCiAKDAgSEAowCjQIp/QKHAv4CiAKDAgSEAowCjQIp/wKHAoADiAKDAgSEAowCjQIpgQOHAoIDiAKDAgSEAowCjQIpgwOHAoQDiAKDAgSEAowCjQIphQOHAoYDiAKDAgSEAowCjQIphwOHAogDiAKDAgSEAowCjQIpiQOHAooDiAKDAgSEAowCjQIpiwOHAowDiAKDAgWEAowCjQIpiQLbA4cC3AOIAooCgwIFhAKMAo0CKYkC6wOHAuwDiAKKAoMCBIQChgIpiQL5A4cCiAL6A1ABAPsDgwIFhAKMAo0CKYkCqwSHAqwEiAKKAoMCBYQCjAKNAimJAq0EhwKuBIgCigKDAgWEAowCjQIpiQKvBIcCsASIAooCgwIEhAKMAo0CKeQEhwLlBIgCgwIEhAKMAo0CKekEhwLqBIgCgwIEhAKMAimJAv0EhwKIAvoDgwIDhAKNAowCjgWPBYcCUAEAkAWDAgOEAo0CjAKRBZIFhwKDAgEAlQWDAgEAlwWDAgWEAowCjQIpiQKbBYcCnAWIAoMCUAEArgVQAQC2BYMCBIQCjAKNAim5BYcCugWIAoMCBYQCjAKNAimJAr4FhwK/BYgCgwKDAgWEAowCjQIpiQLDBYcCxAWIAoMCOQQACAgAJgNgAQEjYQECJGIBAyVkBAgNACkBYxIFKGsECA8ANQVjAgUwYwMGMVcCBzJuAQgzbwEJNHQECxIAPQR3AgU5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");
@@ -0,0 +1,86 @@
1
+ // What a full lookup leaves in its multiname's inline cache for the next
2
+ // get, set or call on an object with the same traits (property-cache.ts).
3
+ import { hookedBinding } from "./hooks.js";
4
+ import { arrayIndex } from "./names.js";
5
+ import { entryFor, IC_Call, IC_Const, IC_Dynamic, IC_Get, IC_GetSet, IC_Method, IC_Set, IC_Slot, PropertyCache, UNFILLED, } from "./property-cache.js";
6
+ import { BIND_Const, BIND_Get, BIND_GetSet, BIND_Method, BIND_Set, BIND_Var, methodKey, slotKey, untypedSetKey, } from "./traits.js";
7
+ /**
8
+ * Keep what `mn` found on `traits`, `o`'s, in `head`, its cache: a
9
+ * binding, as getProperty, setProperty and callProperty use it, or a
10
+ * dynamic property's name. Not where the name resolves otherwise: through
11
+ * a property hook (a Proxy's, XML's), an index (a Vector's, an Array's
12
+ * element), or a Dictionary's key; nor on a primitive's dynamic property,
13
+ * which its prototypes have.
14
+ */
15
+ export function fillCache(head, o, traits, b, mn) {
16
+ const hook = traits.properties;
17
+ const id = b >> 3;
18
+ let kind;
19
+ let key = "";
20
+ let get = null;
21
+ let set = null;
22
+ let type = null;
23
+ if (b === 0) {
24
+ const name = mn.dynamicName();
25
+ if (name === null ||
26
+ (typeof o !== "object" && typeof o !== "function") ||
27
+ hook !== null ||
28
+ !traits.dynamic ||
29
+ traits.refusesNames ||
30
+ traits.getIndex !== undefined ||
31
+ traits.index !== undefined ||
32
+ arrayIndex(name) >= 0) {
33
+ return;
34
+ }
35
+ kind = IC_Dynamic;
36
+ key = name;
37
+ }
38
+ else {
39
+ const hooked = hook !== null && hookedBinding(b, mn, hook);
40
+ switch (b & 7) {
41
+ case BIND_Method:
42
+ kind = hooked ? IC_Call : IC_Method;
43
+ get = traits.proto[methodKey(id)];
44
+ break;
45
+ case BIND_Var:
46
+ case BIND_Const:
47
+ kind = (b & 7) === BIND_Var ? IC_Slot : IC_Const;
48
+ key = slotKey(id);
49
+ type = traits.slotType(id);
50
+ break;
51
+ case BIND_Get:
52
+ kind = IC_Get;
53
+ get = traits.proto[methodKey(id)];
54
+ break;
55
+ case BIND_Set:
56
+ kind = IC_Set;
57
+ set = traits.proto[untypedSetKey(id + 1)] ?? traits.proto[methodKey(id + 1)];
58
+ break;
59
+ case BIND_GetSet:
60
+ kind = IC_GetSet;
61
+ get = traits.proto[methodKey(id)];
62
+ set = traits.proto[untypedSetKey(id + 1)] ?? traits.proto[methodKey(id + 1)];
63
+ break;
64
+ default:
65
+ return;
66
+ }
67
+ if (hooked && kind !== IC_Call) {
68
+ return;
69
+ }
70
+ }
71
+ if (head === UNFILLED) {
72
+ head = new PropertyCache();
73
+ mn.cache = head;
74
+ }
75
+ const e = entryFor(head, traits);
76
+ if (e === null) {
77
+ return;
78
+ }
79
+ e.traits = traits;
80
+ e.kind = kind;
81
+ e.key = key;
82
+ e.get = get;
83
+ e.set = set;
84
+ e.type = type;
85
+ e.id = id;
86
+ }
@@ -0,0 +1,211 @@
1
+ // Classes as OP_newclass makes them: a class object and its instances'
2
+ // traits from the module's descriptor, with its hooks, its prototype
3
+ // object and its methods bound to the scope chain it is made in; and the
4
+ // Vector.<T> classes applying Vector to a type makes.
5
+ import { firstDefinition } from "./domain.js";
6
+ import { installMethod } from "./method-factories.js";
7
+ import { formatClassName, NS_Public, qualifiedName } from "./names.js";
8
+ import { invalidate } from "./property-cache.js";
9
+ import { BIND_Set, boundKey, methodKey, Traits, VALUE_TESTS } from "./traits.js";
10
+ /**
11
+ * As OP_newclass: a class from its module's descriptor, extending `base`,
12
+ * its methods bound to the scope chain here. Object, Class and Function
13
+ * use the traits the runtime made for them before they existed.
14
+ */
15
+ export function newClass(rt, desc, base, scope) {
16
+ const error = desc.instance.error ?? desc.static.error;
17
+ if (error) {
18
+ throw rt.error("VerifyError", error);
19
+ }
20
+ const abc = desc.abc;
21
+ const name = abc.names[desc.name];
22
+ const qualified = qualifiedName(name);
23
+ // As MethodEnv::newclass: a class with a base needs one (#1009), and
24
+ // one whose traits are the base's it linked to, which avmplus finds as
25
+ // a type (#1108). Compared by definition, as avmplus compares traits: a
26
+ // class made twice is one class. Where the base is the class its name
27
+ // finds by name, but not the one it finds as a type, as for a child's
28
+ // class it found by name after its parent defined the name too,
29
+ // avmshell rejects the class sooner, as corrupt (#1107). Only a class
30
+ // that exists is compared: the check runs no script.
31
+ if (desc.base && (base === null || base === undefined)) {
32
+ throw rt.error("TypeError", 1009);
33
+ }
34
+ if (rt.children && base) {
35
+ const baseName = abc.names[desc.base];
36
+ const script = rt.findScript(baseName, true);
37
+ const expected = script?.global ? rt.getProperty(script.global, baseName) : undefined;
38
+ if (expected?.$it && expected.$desc !== base.$desc) {
39
+ const byName = rt.findScript(baseName);
40
+ const named = byName?.global ? rt.getProperty(byName.global, baseName) : undefined;
41
+ throw rt.error("VerifyError", named === base ? 1107 : 1108);
42
+ }
43
+ }
44
+ // A builtin or a player's class, whose hook and type tests are its own,
45
+ // is the first definition of its name, as avmplus' natives belong to
46
+ // their ABC; a top-level one is public. A class only named as one, as a
47
+ // file's own internal Boolean is, is a class like any other.
48
+ const ns = name.namespaces[0];
49
+ const own = (ns?.kind === NS_Public || !!ns?.uri) &&
50
+ firstDefinition(name.domain ?? rt.root, name)?.abc === abc;
51
+ const baseTraits = base ? base.$it : null;
52
+ let itraits;
53
+ if (own && qualified === "Object") {
54
+ itraits = rt.objectTraits;
55
+ }
56
+ else if (own && qualified === "Class") {
57
+ itraits = rt.classTraits;
58
+ }
59
+ else if (own && qualified === "Function") {
60
+ itraits = rt.functionTraits;
61
+ }
62
+ else {
63
+ itraits = new Traits(qualified, baseTraits);
64
+ itraits.testsValues = own && VALUE_TESTS.has(qualified);
65
+ }
66
+ itraits.describe(desc.instance);
67
+ const hooks = own ? rt.classHooks[qualified] : undefined;
68
+ itraits.hooks = hooks ?? null;
69
+ itraits.dynamic = !desc.sealed;
70
+ itraits.final = desc.final;
71
+ itraits.isInterface = desc.interface;
72
+ itraits.ctor = desc.ctor ?? null;
73
+ itraits.metadata = desc.meta ?? null;
74
+ itraits.refusesNames = !!hooks?.refusesNames;
75
+ // As ClassClosure::checkForRestrictedInheritance.
76
+ itraits.restricted = !!hooks?.restricted;
77
+ itraits.uninstantiable =
78
+ !!baseTraits &&
79
+ (baseTraits.uninstantiable || (baseTraits.restricted && baseTraits.abc !== abc));
80
+ itraits.abc = abc;
81
+ // A class's allocation, bound to the runtime; its subclasses inherit it.
82
+ const create = hooks?.create;
83
+ if (create) {
84
+ itraits.create = (traits) => create(traits, rt);
85
+ }
86
+ if (hooks?.properties) {
87
+ itraits.properties = hooks.properties;
88
+ }
89
+ if (hooks?.getIndex) {
90
+ itraits.getIndex = hooks.getIndex;
91
+ itraits.setIndex = hooks.setIndex;
92
+ itraits.hasIndex = hooks.hasIndex;
93
+ itraits.index = hooks.index;
94
+ }
95
+ for (const i of desc.interfaces) {
96
+ const mn = abc.names[i];
97
+ const iface = rt.resolveName(mn);
98
+ if (iface) {
99
+ itraits.interfaces.add(iface.$it);
100
+ for (const t of iface.$it.interfaces) {
101
+ itraits.interfaces.add(t);
102
+ }
103
+ }
104
+ else {
105
+ // Its script is the one running, and has not made it yet.
106
+ if (!itraits.pendingInterfaces) {
107
+ itraits.pendingInterfaces = [];
108
+ }
109
+ itraits.pendingInterfaces.push(() => rt.resolveName(mn)?.$it ?? null);
110
+ }
111
+ }
112
+ // The class object: Class's instance, with its own statics.
113
+ // Class is dynamic, so its instances are: String.fromCharCode = ... is legal.
114
+ const straits = new Traits(`${qualified}$`, rt.classTraits);
115
+ straits.dynamic = true;
116
+ straits.final = true;
117
+ straits.describe(desc.static);
118
+ const cls = straits.instance();
119
+ cls.$it = itraits;
120
+ cls.$desc = desc;
121
+ cls.$base = base;
122
+ itraits.cls = cls;
123
+ straits.cls = cls;
124
+ // Its prototype object: an Object whose prototype is the base class's.
125
+ // A class object's own $p comes from Class's instance prototype, which
126
+ // it inherits: class objects made before Class see it once Class exists.
127
+ // Date's, RegExp's and Array's are instances of their own class, as avmplus has them.
128
+ const prototype = hooks?.prototype ? hooks.prototype(rt, cls) : rt.objectTraits.instance();
129
+ prototype.$p = base ? base.$prototype : null;
130
+ cls.$prototype = prototype;
131
+ itraits.proto.$p = prototype;
132
+ prototype.$d.set("constructor", cls);
133
+ prototype.$dontEnum = new Set(["constructor"]);
134
+ const iscope = rt.scope(scope, [cls], 0);
135
+ for (const [d, factory, id, , params] of desc.static.methods) {
136
+ installMethod(rt, straits.methodHome(3), d, withId(factory(scope, base), id), factory, params);
137
+ }
138
+ for (const [d, factory, id, , params] of desc.instance.methods) {
139
+ installMethod(rt, itraits.methodHome(3), d, withId(factory(iscope, base), id), factory, params);
140
+ }
141
+ // Playerglobal can declare an accessor whose setter has no ABC body.
142
+ // Install it here so both direct bound calls and dynamic property writes reach it.
143
+ if (hooks?.setOnlySlots) {
144
+ for (const [name, slot] of Object.entries(hooks.setOnlySlots)) {
145
+ const binding = itraits.find(rt.publicName(name));
146
+ const d = (binding >> 3) + 1;
147
+ if ((binding & 7) === BIND_Set && itraits.proto[methodKey(d)] == null) {
148
+ const set = function (value) {
149
+ this[slot] = value;
150
+ };
151
+ itraits.proto[methodKey(d)] = set;
152
+ itraits.proto[boundKey(d)] = set;
153
+ }
154
+ }
155
+ }
156
+ // Calls through an interface read one name whatever the class; set
157
+ // here, before any instance exists, so that the prototype keeps its shape.
158
+ const aliases = desc.aliases;
159
+ if (aliases) {
160
+ const proto = itraits.proto;
161
+ for (let i = 0; i < aliases.length; i += 2) {
162
+ itraits.methodHome(1)[aliases[i]] = proto[boundKey(aliases[i + 1])];
163
+ }
164
+ }
165
+ // Caches keep the methods and what the hooks decide.
166
+ invalidate();
167
+ const init = desc.init(iscope, base);
168
+ itraits.proto.$init = init;
169
+ // Its entry for `new` and `super()` of the class where the compiler
170
+ // coerced the arguments, as for bound calls (installMethod).
171
+ itraits.proto.$binit = init.$bound ?? init;
172
+ // A class constructClass only allocates and initializes, which compiled
173
+ // code constructs itself (see the codegen's constructSlot).
174
+ cls.$new = !hooks?.construct && !desc.interface && !itraits.uninstantiable;
175
+ // Its static initializer may name the class as a type, as avmplus
176
+ // resolves from traits, before initproperty has stored it anywhere.
177
+ rt.defining.set(qualified, cls);
178
+ try {
179
+ desc.cinit(scope, base).call(cls);
180
+ }
181
+ finally {
182
+ rt.defining.delete(qualified);
183
+ }
184
+ hooks?.created?.(rt, cls);
185
+ return cls;
186
+ }
187
+ /**
188
+ * Vector.<T> for a T other than int, uint and Number: Vector$object's
189
+ * class, typed, whose name names T as avmplus does, a builtin Vector as
190
+ * Vector.<int>, and whose superclass is Vector.<*>, Vector$object.
191
+ */
192
+ export function specializeVector(rt, base, param) {
193
+ const itraits = new Traits(`__AS3__.vec::Vector.<${formatClassName(param.$it.name)}>`, base.$it);
194
+ itraits.dynamic = base.$it.dynamic;
195
+ itraits.refusesNames = base.$it.refusesNames;
196
+ itraits.hooks = base.$it.hooks;
197
+ const cls = Object.create(Object.getPrototypeOf(base));
198
+ cls.$d = null;
199
+ cls.$it = itraits;
200
+ cls.$desc = base.$desc;
201
+ cls.$base = base;
202
+ cls.$prototype = base.$prototype;
203
+ cls.$param = rt.refOf(param);
204
+ itraits.cls = cls;
205
+ return cls;
206
+ }
207
+ /** `f`, a method, with its method id, which a closure of it keeps. */
208
+ export function withId(f, id) {
209
+ f.$id = id;
210
+ return f;
211
+ }