Copy disabled (too large)
Download .txt
Showing preview only (40,742K chars total). Download the full file to get everything.
Repository: entrylabs/entryjs
Branch: develop
Commit: 21cb7edaa9ec
Files: 944
Total size: 50.3 MB
Directory structure:
gitextract_80_zfnjb/
├── .babelrc
├── .eslintignore
├── .eslintrc
├── .github/
│ ├── pr-labeler.yml
│ └── workflows/
│ ├── build-and-deploy.yml
│ ├── pull-request-workflow.yml
│ └── release.yml
├── .gitignore
├── .prettierrc
├── COPYING
├── Gruntfile.js
├── Jenkinsfile
├── LICENSE
├── NOTICE
├── README-en.md
├── README.md
├── contributing.md
├── example/
│ ├── example.ejs
│ ├── example_mini.ejs
│ └── example_webgl.ejs
├── extern/
│ ├── blockly/
│ │ ├── .ropeproject/
│ │ │ ├── config.py
│ │ │ ├── globalnames
│ │ │ ├── history
│ │ │ └── objectdb
│ │ ├── blockly_compressed.js
│ │ ├── blockly_uncompressed.js
│ │ ├── blocks/
│ │ │ ├── colour.js
│ │ │ ├── lists.js
│ │ │ ├── logic.js
│ │ │ ├── loops.js
│ │ │ ├── math.js
│ │ │ ├── procedures.js
│ │ │ ├── text.js
│ │ │ └── variables.js
│ │ ├── blocks_compressed.js
│ │ ├── build.py
│ │ ├── core/
│ │ │ ├── block.js
│ │ │ ├── block_menu.js
│ │ │ ├── block_svg.js
│ │ │ ├── blockly.js
│ │ │ ├── blocks.js
│ │ │ ├── bubble.js
│ │ │ ├── comment.js
│ │ │ ├── connection-animation.js
│ │ │ ├── connection.js
│ │ │ ├── contextmenu.js
│ │ │ ├── css.js
│ │ │ ├── field.js
│ │ │ ├── field_angle.js
│ │ │ ├── field_checkbox.js
│ │ │ ├── field_colour.js
│ │ │ ├── field_dropdown.js
│ │ │ ├── field_dropdowndynamic.js
│ │ │ ├── field_icon.js
│ │ │ ├── field_image.js
│ │ │ ├── field_keydown_input.js
│ │ │ ├── field_label.js
│ │ │ ├── field_textinput.js
│ │ │ ├── field_variable.js
│ │ │ ├── flyout.js
│ │ │ ├── generator.js
│ │ │ ├── icon.js
│ │ │ ├── inject.js
│ │ │ ├── input.js
│ │ │ ├── msg.js
│ │ │ ├── mutator.js
│ │ │ ├── names.js
│ │ │ ├── procedures.js
│ │ │ ├── realtime-client-utils.js
│ │ │ ├── realtime.js
│ │ │ ├── scrollbar.js
│ │ │ ├── toolbox.js
│ │ │ ├── tooltip.js
│ │ │ ├── trashcan.js
│ │ │ ├── utils.js
│ │ │ ├── variables.js
│ │ │ ├── warning.js
│ │ │ ├── widgetdiv.js
│ │ │ ├── workspace.js
│ │ │ └── xml.js
│ │ ├── dart_compressed.js
│ │ ├── generators/
│ │ │ ├── dart/
│ │ │ │ ├── colour.js
│ │ │ │ ├── lists.js
│ │ │ │ ├── logic.js
│ │ │ │ ├── loops.js
│ │ │ │ ├── math.js
│ │ │ │ ├── procedures.js
│ │ │ │ ├── text.js
│ │ │ │ └── variables.js
│ │ │ ├── dart.js
│ │ │ ├── javascript/
│ │ │ │ ├── colour.js
│ │ │ │ ├── lists.js
│ │ │ │ ├── logic.js
│ │ │ │ ├── loops.js
│ │ │ │ ├── math.js
│ │ │ │ ├── procedures.js
│ │ │ │ ├── text.js
│ │ │ │ └── variables.js
│ │ │ ├── javascript.js
│ │ │ ├── python/
│ │ │ │ ├── colour.js
│ │ │ │ ├── lists.js
│ │ │ │ ├── logic.js
│ │ │ │ ├── loops.js
│ │ │ │ ├── math.js
│ │ │ │ ├── procedures.js
│ │ │ │ ├── text.js
│ │ │ │ └── variables.js
│ │ │ └── python.js
│ │ ├── i18n/
│ │ │ ├── common.py
│ │ │ ├── create_messages.py
│ │ │ ├── dedup_json.py
│ │ │ ├── js_to_json.py
│ │ │ ├── json_to_js.py
│ │ │ ├── status.py
│ │ │ ├── tests.py
│ │ │ └── xliff_to_json.py
│ │ ├── javascript_compressed.js
│ │ ├── media/
│ │ │ ├── click.ogg
│ │ │ ├── delete.ogg
│ │ │ ├── handclosed.cur
│ │ │ └── handopen.cur
│ │ ├── msg/
│ │ │ ├── js/
│ │ │ │ ├── ar.js
│ │ │ │ ├── az-latn.js
│ │ │ │ ├── az.js
│ │ │ │ ├── be-tarask.js
│ │ │ │ ├── br.js
│ │ │ │ ├── ca.js
│ │ │ │ ├── cs.js
│ │ │ │ ├── da.js
│ │ │ │ ├── de.js
│ │ │ │ ├── el.js
│ │ │ │ ├── en.js
│ │ │ │ ├── en_us.js
│ │ │ │ ├── es.js
│ │ │ │ ├── fa.js
│ │ │ │ ├── fi.js
│ │ │ │ ├── fr.js
│ │ │ │ ├── he.js
│ │ │ │ ├── hi.js
│ │ │ │ ├── hu.js
│ │ │ │ ├── ia.js
│ │ │ │ ├── id.js
│ │ │ │ ├── is.js
│ │ │ │ ├── it.js
│ │ │ │ ├── ja.js
│ │ │ │ ├── ko.js
│ │ │ │ ├── lrc.js
│ │ │ │ ├── ms.js
│ │ │ │ ├── nb.js
│ │ │ │ ├── nl.js
│ │ │ │ ├── no.js
│ │ │ │ ├── pl.js
│ │ │ │ ├── pms.js
│ │ │ │ ├── pt-br.js
│ │ │ │ ├── pt.js
│ │ │ │ ├── ro.js
│ │ │ │ ├── ru.js
│ │ │ │ ├── sq.js
│ │ │ │ ├── sr.js
│ │ │ │ ├── sv.js
│ │ │ │ ├── th.js
│ │ │ │ ├── tl.js
│ │ │ │ ├── tr.js
│ │ │ │ ├── uk.js
│ │ │ │ ├── vi.js
│ │ │ │ ├── zh-hans.js
│ │ │ │ └── zh-hant.js
│ │ │ ├── json/
│ │ │ │ ├── ar.json
│ │ │ │ ├── az.json
│ │ │ │ ├── be-tarask.json
│ │ │ │ ├── br.json
│ │ │ │ ├── ca.json
│ │ │ │ ├── cs.json
│ │ │ │ ├── da.json
│ │ │ │ ├── de.json
│ │ │ │ ├── el.json
│ │ │ │ ├── en.json
│ │ │ │ ├── es.json
│ │ │ │ ├── fa.json
│ │ │ │ ├── fi.json
│ │ │ │ ├── fr.json
│ │ │ │ ├── he.json
│ │ │ │ ├── hi.json
│ │ │ │ ├── hu.json
│ │ │ │ ├── ia.json
│ │ │ │ ├── id.json
│ │ │ │ ├── is.json
│ │ │ │ ├── it.json
│ │ │ │ ├── ja.json
│ │ │ │ ├── keys.json
│ │ │ │ ├── ko.json
│ │ │ │ ├── lrc.json
│ │ │ │ ├── ms.json
│ │ │ │ ├── nb.json
│ │ │ │ ├── nl.json
│ │ │ │ ├── pl.json
│ │ │ │ ├── pms.json
│ │ │ │ ├── pt-br.json
│ │ │ │ ├── pt.json
│ │ │ │ ├── qqq.json
│ │ │ │ ├── ro.json
│ │ │ │ ├── ru.json
│ │ │ │ ├── sq.json
│ │ │ │ ├── sr.json
│ │ │ │ ├── sv.json
│ │ │ │ ├── synonyms.json
│ │ │ │ ├── th.json
│ │ │ │ ├── tl.json
│ │ │ │ ├── tr.json
│ │ │ │ ├── uk.json
│ │ │ │ ├── vi.json
│ │ │ │ ├── zh-hans.json
│ │ │ │ └── zh-hant.json
│ │ │ └── messages.js
│ │ ├── python_compressed.js
│ │ └── tests/
│ │ ├── blockly_test.html
│ │ ├── blockly_test.js
│ │ ├── generator_test.js
│ │ ├── generators/
│ │ │ ├── colour.xml
│ │ │ ├── index.html
│ │ │ ├── lists.xml
│ │ │ ├── logic.xml
│ │ │ ├── loops1.xml
│ │ │ ├── loops2.xml
│ │ │ ├── loops3.xml
│ │ │ ├── math.xml
│ │ │ ├── procedures.xml
│ │ │ ├── text.xml
│ │ │ ├── unittest.js
│ │ │ ├── unittest_dart.js
│ │ │ ├── unittest_javascript.js
│ │ │ ├── unittest_python.js
│ │ │ └── variables.xml
│ │ ├── names_test.js
│ │ └── playground.html
│ ├── face-landmarker.worker.js
│ ├── face-landmarker2.worker.js
│ ├── gesture-recognition.worker.js
│ ├── human/
│ │ ├── human.js
│ │ └── models/
│ │ ├── blazeface.json
│ │ ├── emotion.json
│ │ ├── facemesh.json
│ │ └── faceres.json
│ ├── khaiii/
│ │ ├── cnv2hdn.lin
│ │ ├── config.json
│ │ ├── conv.2.fil
│ │ ├── conv.3.fil
│ │ ├── conv.4.fil
│ │ ├── conv.5.fil
│ │ ├── errpatch.len
│ │ ├── errpatch.tri
│ │ ├── errpatch.val
│ │ ├── hdn2tag.lin
│ │ ├── preanal.tri
│ │ ├── preanal.val
│ │ ├── restore.key
│ │ ├── restore.one
│ │ └── restore.val
│ ├── lang/
│ │ ├── code.js
│ │ ├── ebs.js
│ │ ├── en.js
│ │ ├── jp.js
│ │ ├── ko.js
│ │ └── vn.js
│ ├── model/
│ │ ├── face_landmarker.task
│ │ ├── gesture_recognizer.task
│ │ ├── object_detector_lite.tflite
│ │ └── pose_landmarker_lite.task
│ ├── object-detector.worker.js
│ ├── pose-landmarker.worker.js
│ ├── tfjs-backend-wasm-simd.wasm
│ ├── util/
│ │ ├── CanvasInput.js
│ │ ├── CanvasInputOrg.js
│ │ ├── DragDropTouch.js
│ │ ├── filbert.js
│ │ ├── handle.js
│ │ ├── ndgmr.Collision.js
│ │ ├── static.js
│ │ └── static_mini.js
│ ├── vision.worker.js
│ ├── vision_bundle.js
│ └── wasm/
│ ├── vision_wasm_internal.js
│ ├── vision_wasm_internal.wasm
│ ├── vision_wasm_nosimd_internal.js
│ └── vision_wasm_nosimd_internal.wasm
├── images/
│ ├── cursor_eraser.cur
│ ├── handclosed.cur
│ ├── handopen.cur
│ ├── media/
│ │ ├── FlashAudioPlugin.swf
│ │ ├── click.ogg
│ │ ├── delete.ogg
│ │ ├── handclosed.cur
│ │ └── handopen.cur
│ └── sounds/
│ ├── click.ogg
│ └── delete.ogg
├── jsconfig.json
├── karma.conf.js
├── package.json
├── scripts/
│ ├── build.sh
│ ├── build_action.sh
│ ├── deploy.sh
│ └── deploy_action.sh
├── src/
│ ├── class/
│ │ ├── AILearning.js
│ │ ├── AIUtilize.js
│ │ ├── DataTable.js
│ │ ├── Expansion.js
│ │ ├── LiterallycanvasPainter.js
│ │ ├── blockCountViewer.js
│ │ ├── container.js
│ │ ├── dialog.ts
│ │ ├── doneProject.js
│ │ ├── engine.js
│ │ ├── entity.js
│ │ ├── entryModuleLoader.ts
│ │ ├── function.js
│ │ ├── hardware/
│ │ │ ├── bluetoothServices/
│ │ │ │ ├── event-dispatcher.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── promise-queue.ts
│ │ │ │ ├── service-helper.ts
│ │ │ │ └── services/
│ │ │ │ ├── accelerometer.ts
│ │ │ │ ├── button.ts
│ │ │ │ ├── device-information.ts
│ │ │ │ ├── dfu-control.ts
│ │ │ │ ├── event.ts
│ │ │ │ ├── io-pin.ts
│ │ │ │ ├── led.ts
│ │ │ │ ├── magnetometer.ts
│ │ │ │ ├── temperature.ts
│ │ │ │ └── uart.ts
│ │ │ ├── externalProgramLauncher.ts
│ │ │ ├── functions/
│ │ │ │ └── createHardwarePopup.ts
│ │ │ ├── hardwareMonitor.ts
│ │ │ ├── hardwareSocketMessageHandler.ts
│ │ │ ├── webApiConnector.ts
│ │ │ ├── webBluetoothConnector.ts
│ │ │ ├── webSerialConnector.ts
│ │ │ └── webUsbFlasher.ts
│ │ ├── helper.js
│ │ ├── hw.ts
│ │ ├── hw_lite.ts
│ │ ├── intro.ts
│ │ ├── learning/
│ │ │ ├── Chart.js
│ │ │ ├── Cluster.js
│ │ │ ├── DecisionTree.js
│ │ │ ├── ImageLearning.js
│ │ │ ├── InputPopup.js
│ │ │ ├── LearningBase.ts
│ │ │ ├── LearningView.js
│ │ │ ├── LogisticRegression.js
│ │ │ ├── NumberClassification.js
│ │ │ ├── Regression.js
│ │ │ ├── SpeechClassification.js
│ │ │ ├── Svm.js
│ │ │ ├── TextLearning.js
│ │ │ ├── Utils.ts
│ │ │ └── bayes.ts
│ │ ├── maxrect-packer/
│ │ │ ├── abstract_bin.ts
│ │ │ ├── geom/
│ │ │ │ ├── ImageRect.ts
│ │ │ │ └── Rectangle.ts
│ │ │ ├── maxrects_bin.ts
│ │ │ ├── maxrects_packer.ts
│ │ │ └── oversized_element_bin.ts
│ │ ├── object.js
│ │ ├── painter.js
│ │ ├── pdf.ts
│ │ ├── pixi/
│ │ │ ├── atlas/
│ │ │ │ ├── AtlasCanvasViewer.ts
│ │ │ │ ├── EntryTextureOption.ts
│ │ │ │ ├── ISceneTextures.ts
│ │ │ │ ├── PIXIAtlasHelper.ts
│ │ │ │ ├── PIXIAtlasManager.ts
│ │ │ │ ├── PIXIScaleAdaptor.ts
│ │ │ │ ├── SceneBins.ts
│ │ │ │ ├── SceneTextures.ts
│ │ │ │ ├── loader/
│ │ │ │ │ ├── AtlasImageLoader.ts
│ │ │ │ │ └── AtlasImageLoadingInfo.ts
│ │ │ │ ├── model/
│ │ │ │ │ ├── IRawObject.ts
│ │ │ │ │ └── IRawPicture.ts
│ │ │ │ ├── structure/
│ │ │ │ │ ├── PrimitiveMap.ts
│ │ │ │ │ └── PrimitiveSet.ts
│ │ │ │ └── texture/
│ │ │ │ ├── AtlasBaseTexture.ts
│ │ │ │ ├── AtlasTexture.ts
│ │ │ │ ├── EntryBaseTexture.ts
│ │ │ │ ├── EntryTexture.ts
│ │ │ │ └── EntryTextureBase.ts
│ │ │ ├── etc/
│ │ │ │ ├── PIXI-ndgmr.Collision.js
│ │ │ │ ├── PIXIBrushAdaptor.ts
│ │ │ │ ├── PIXICanvasInput.js
│ │ │ │ ├── PIXIPaintAdaptor.ts
│ │ │ │ └── PIXITempStore.ts
│ │ │ ├── handle/
│ │ │ │ ├── PIXIHandle.js
│ │ │ │ └── PIXIHandleEdge.js
│ │ │ ├── helper/
│ │ │ │ ├── PIXIDragHelper.js
│ │ │ │ └── PIXIHelper.ts
│ │ │ ├── init/
│ │ │ │ ├── PIXIBaseAsset.ts
│ │ │ │ ├── PIXIFontLoadHandler.ts
│ │ │ │ └── PIXIGlobal.ts
│ │ │ ├── mesh/
│ │ │ │ └── PIXIH3Plane.js
│ │ │ ├── plugins/
│ │ │ │ ├── PIXIGraphicOverride.js
│ │ │ │ ├── PIXIPixelPerfectInteractionPlugIn.js
│ │ │ │ ├── PIXIShortPropPlugin.js
│ │ │ │ ├── PIXISprite.ts
│ │ │ │ ├── PIXITextMetricsPlugIn.js
│ │ │ │ └── pixiGetChildAt.js
│ │ │ ├── text/
│ │ │ │ ├── PIXIText.js
│ │ │ │ └── PIXITextStyle.ts
│ │ │ └── utils/
│ │ │ ├── AutoFit.ts
│ │ │ ├── TimeoutTimer.ts
│ │ │ └── logs.ts
│ │ ├── playground.js
│ │ ├── popup.js
│ │ ├── popup_helper.ts
│ │ ├── popup_list.js
│ │ ├── project.js
│ │ ├── property_panel.ts
│ │ ├── reporter.js
│ │ ├── scene.js
│ │ ├── sound.ts
│ │ ├── source/
│ │ │ └── DataTableSource.js
│ │ ├── stage.js
│ │ ├── stamp_entity.js
│ │ ├── time_wait.js
│ │ ├── toast.js
│ │ ├── variable/
│ │ │ ├── answerVariable.js
│ │ │ ├── index.js
│ │ │ ├── listVariable.js
│ │ │ ├── slideVariable.js
│ │ │ ├── sttVariable.js
│ │ │ ├── timerVariable.js
│ │ │ └── variable.js
│ │ └── variable_container.js
│ ├── command/
│ │ ├── command.js
│ │ ├── command_util.js
│ │ ├── commander.js
│ │ └── commands/
│ │ ├── block.js
│ │ ├── comment.js
│ │ ├── container.js
│ │ ├── dataTable.js
│ │ ├── engine.js
│ │ ├── function.js
│ │ ├── object.js
│ │ ├── painter.js
│ │ ├── playground.js
│ │ ├── scene.js
│ │ ├── textbox.js
│ │ └── variableContainer.js
│ ├── core/
│ │ ├── collection.js
│ │ ├── db.js
│ │ ├── dom.ts
│ │ ├── event.js
│ │ ├── model.js
│ │ ├── modelClass.ts
│ │ ├── observer.js
│ │ ├── promiseManager.js
│ │ ├── singleInstance.js
│ │ └── svg.js
│ ├── css/
│ │ ├── codemirror_theme.less
│ │ ├── common.less
│ │ ├── components/
│ │ │ ├── block.less
│ │ │ ├── block_menu.less
│ │ │ ├── board.less
│ │ │ ├── console.less
│ │ │ ├── container.less
│ │ │ ├── context_menu.less
│ │ │ ├── curtain.less
│ │ │ ├── engine.less
│ │ │ ├── extensions.less
│ │ │ ├── function.less
│ │ │ ├── global_svg.less
│ │ │ ├── helper.less
│ │ │ ├── hw_monitor.less
│ │ │ ├── object.less
│ │ │ ├── painter.less
│ │ │ ├── pdf.less
│ │ │ ├── playground.less
│ │ │ ├── popup.less
│ │ │ ├── property_panel.less
│ │ │ ├── scene.less
│ │ │ ├── stage.less
│ │ │ ├── state_manager.less
│ │ │ ├── table.less
│ │ │ ├── target_checker.less
│ │ │ ├── textcoding_helper.less
│ │ │ ├── toast.less
│ │ │ ├── tooltip.less
│ │ │ ├── variable_container.less
│ │ │ └── zoomController.less
│ │ ├── entry.less
│ │ ├── minimize.less
│ │ ├── prefix.less
│ │ └── static.less
│ ├── entry.js
│ ├── extensions/
│ │ ├── CloudVariable.js
│ │ ├── dmet.js
│ │ ├── dropper.js
│ │ ├── extension.js
│ │ └── target_checker.js
│ ├── graphicEngine/
│ │ ├── EaselResManager.ts
│ │ ├── FakePIXI.js
│ │ ├── GEDragHelper.ts
│ │ ├── GEHandle.js
│ │ ├── GEHelper.ts
│ │ └── IGEResManager.ts
│ ├── log/
│ │ ├── activity.js
│ │ ├── activityReporter.js
│ │ ├── recorder.js
│ │ ├── state.js
│ │ └── state_manager.js
│ ├── model/
│ │ ├── block_model.js
│ │ ├── block_render_model.js
│ │ ├── box_model.js
│ │ ├── drag_instance.js
│ │ └── thread_model.js
│ ├── parser-no/
│ │ ├── block.js
│ │ ├── js.js
│ │ └── parser.js
│ ├── playground/
│ │ ├── block.js
│ │ ├── block_entry.js
│ │ ├── block_entry_mini.js
│ │ ├── block_menu.ts
│ │ ├── block_menu_scroll.js
│ │ ├── block_view.js
│ │ ├── blocks/
│ │ │ ├── block_ai_learning.js
│ │ │ ├── block_ai_learning_cluster.js
│ │ │ ├── block_ai_learning_decisiontree.js
│ │ │ ├── block_ai_learning_knn.js
│ │ │ ├── block_ai_learning_logistic_regression.js
│ │ │ ├── block_ai_learning_regression.js
│ │ │ ├── block_ai_learning_svm.js
│ │ │ ├── block_ai_utilize_audio.js
│ │ │ ├── block_ai_utilize_face_landmarker.js
│ │ │ ├── block_ai_utilize_gesture_recognition.js
│ │ │ ├── block_ai_utilize_media_pipe.js
│ │ │ ├── block_ai_utilize_object_detector.js
│ │ │ ├── block_ai_utilize_pose_landmarker.js
│ │ │ ├── block_ai_utilize_translate.js
│ │ │ ├── block_ai_utilize_tts.js
│ │ │ ├── block_ai_utilize_video.js
│ │ │ ├── block_analysis.js
│ │ │ ├── block_brush.js
│ │ │ ├── block_calc.js
│ │ │ ├── block_expansion_behaviorconduct_disaster.js
│ │ │ ├── block_expansion_behaviorconduct_lifesafety.js
│ │ │ ├── block_expansion_disasterAlert.js
│ │ │ ├── block_expansion_emergencyActionGuidelines.js
│ │ │ ├── block_expansion_festival.js
│ │ │ ├── block_expansion_weather.js
│ │ │ ├── block_flow.js
│ │ │ ├── block_func.js
│ │ │ ├── block_judgement.js
│ │ │ ├── block_looks.js
│ │ │ ├── block_moving.js
│ │ │ ├── block_sound.js
│ │ │ ├── block_start.js
│ │ │ ├── block_text.js
│ │ │ ├── block_variable.js
│ │ │ ├── hardware/
│ │ │ │ ├── block_0uboard.js
│ │ │ │ ├── block_CloverSEntry1.js
│ │ │ │ ├── block_ITPLE_board.js
│ │ │ │ ├── block_KKMOO.js
│ │ │ │ ├── block_KRC.js
│ │ │ │ ├── block_LineCoding.js
│ │ │ │ ├── block_Lline.js
│ │ │ │ ├── block_RichShield.js
│ │ │ │ ├── block_abilix_Krypton0.js
│ │ │ │ ├── block_aidrone.js
│ │ │ │ ├── block_aidrone_tracking.js
│ │ │ │ ├── block_aiot.js
│ │ │ │ ├── block_aiservo.js
│ │ │ │ ├── block_albert.js
│ │ │ │ ├── block_albert_ai.js
│ │ │ │ ├── block_altino.js
│ │ │ │ ├── block_altino_lite.js
│ │ │ │ ├── block_altino_neo.js
│ │ │ │ ├── block_alux_connect.js
│ │ │ │ ├── block_alux_nemo.js
│ │ │ │ ├── block_alux_technic.js
│ │ │ │ ├── block_ardublock.js
│ │ │ │ ├── block_arduino.js
│ │ │ │ ├── block_arduino_cake.js
│ │ │ │ ├── block_arduino_ext.js
│ │ │ │ ├── block_arduino_nano.js
│ │ │ │ ├── block_armz.js
│ │ │ │ ├── block_asomebot.js
│ │ │ │ ├── block_asomekit.js
│ │ │ │ ├── block_avatarbot.js
│ │ │ │ ├── block_bingles.js
│ │ │ │ ├── block_bitbrick.js
│ │ │ │ ├── block_blacksmith.js
│ │ │ │ ├── block_bridge.js
│ │ │ │ ├── block_brown.js
│ │ │ │ ├── block_byrobot_base.js
│ │ │ │ ├── block_byrobot_controller_3_4.js
│ │ │ │ ├── block_byrobot_controller_4.js
│ │ │ │ ├── block_byrobot_drone_3_10.js
│ │ │ │ ├── block_byrobot_drone_4.js
│ │ │ │ ├── block_byrobot_drone_8.js
│ │ │ │ ├── block_byrobot_dronefighter_controller.js
│ │ │ │ ├── block_byrobot_dronefighter_drive.js
│ │ │ │ ├── block_byrobot_dronefighter_flight.js
│ │ │ │ ├── block_byrobot_petrone_v2_base.js
│ │ │ │ ├── block_byrobot_petrone_v2_controller.js
│ │ │ │ ├── block_byrobot_petrone_v2_drive.js
│ │ │ │ ├── block_byrobot_petrone_v2_flight.js
│ │ │ │ ├── block_c3coding_arduino.js
│ │ │ │ ├── block_castarter_v2.js
│ │ │ │ ├── block_cheese.js
│ │ │ │ ├── block_choco.js
│ │ │ │ ├── block_choco2.js
│ │ │ │ ├── block_chocopi.js
│ │ │ │ ├── block_coalaboard.js
│ │ │ │ ├── block_cobl.js
│ │ │ │ ├── block_coco.js
│ │ │ │ ├── block_coconut.js
│ │ │ │ ├── block_codeino.js
│ │ │ │ ├── block_codestar.js
│ │ │ │ ├── block_codewiz.js
│ │ │ │ ├── block_coding_box.js
│ │ │ │ ├── block_codingmachine.js
│ │ │ │ ├── block_cp_moving.js
│ │ │ │ ├── block_creamo.js
│ │ │ │ ├── block_cremaker_3Dpen.js
│ │ │ │ ├── block_cuboai.js
│ │ │ │ ├── block_cue.js
│ │ │ │ ├── block_dadublock.js
│ │ │ │ ├── block_dalgona.js
│ │ │ │ ├── block_dalgona_basic.js
│ │ │ │ ├── block_dash.js
│ │ │ │ ├── block_davinci.js
│ │ │ │ ├── block_diaboard.js
│ │ │ │ ├── block_dodaland.js
│ │ │ │ ├── block_dplay.js
│ │ │ │ ├── block_eduino.js
│ │ │ │ ├── block_edumaker.js
│ │ │ │ ├── block_elio.js
│ │ │ │ ├── block_etboard.js
│ │ │ │ ├── block_etkit.js
│ │ │ │ ├── block_ev3.js
│ │ │ │ ├── block_exmars_cube.js
│ │ │ │ ├── block_firmtech2.js
│ │ │ │ ├── block_freearduino.js
│ │ │ │ ├── block_freelinker2.js
│ │ │ │ ├── block_funboard.js
│ │ │ │ ├── block_gbot.js
│ │ │ │ ├── block_genirobot.js
│ │ │ │ ├── block_hamster.js
│ │ │ │ ├── block_hamster_s.js
│ │ │ │ ├── block_handino.js
│ │ │ │ ├── block_hasseam.js
│ │ │ │ ├── block_hexaboard.js
│ │ │ │ ├── block_hummingbird.js
│ │ │ │ ├── block_hyact.js
│ │ │ │ ├── block_iCOBOT.js
│ │ │ │ ├── block_iboard.js
│ │ │ │ ├── block_iotsmartfarm.js
│ │ │ │ ├── block_jcboard.js
│ │ │ │ ├── block_jdcode.js
│ │ │ │ ├── block_jdkit.js
│ │ │ │ ├── block_jikko.js
│ │ │ │ ├── block_jikko_basic.js
│ │ │ │ ├── block_jikko_lidoc.js
│ │ │ │ ├── block_jikko_make.js
│ │ │ │ ├── block_jinirobot_aibot.js
│ │ │ │ ├── block_jinirobot_toybot.js
│ │ │ │ ├── block_joystick.js
│ │ │ │ ├── block_kaboino.js
│ │ │ │ ├── block_kaduino.js
│ │ │ │ ├── block_kamibot.js
│ │ │ │ ├── block_kamibotPi.js
│ │ │ │ ├── block_kingcoding.js
│ │ │ │ ├── block_lecoboard.js
│ │ │ │ ├── block_lecoboardAvr.js
│ │ │ │ ├── block_lecoboardAvrBT.js
│ │ │ │ ├── block_littlebits.js
│ │ │ │ ├── block_magkinder.js
│ │ │ │ ├── block_makermate.js
│ │ │ │ ├── block_mechanicblock_controller.js
│ │ │ │ ├── block_mechanicblock_uno.js
│ │ │ │ ├── block_mechanicblock_uno_mini.js
│ │ │ │ ├── block_mechanicblock_uno_s.js
│ │ │ │ ├── block_mechatro.js
│ │ │ │ ├── block_mechatronics_4d.js
│ │ │ │ ├── block_memaker.js
│ │ │ │ ├── block_microbit.js
│ │ │ │ ├── block_microbit2.js
│ │ │ │ ├── block_microbit_ext.js
│ │ │ │ ├── block_mindpiggy.js
│ │ │ │ ├── block_mkboard.js
│ │ │ │ ├── block_modi.js
│ │ │ │ ├── block_mrt.js
│ │ │ │ ├── block_nemoino.js
│ │ │ │ ├── block_neo.js
│ │ │ │ ├── block_neo_cannon.js
│ │ │ │ ├── block_neo_spider.js
│ │ │ │ ├── block_neobot.js
│ │ │ │ ├── block_neobot_game_theme.js
│ │ │ │ ├── block_neobot_purple.js
│ │ │ │ ├── block_neobot_robot_theme.js
│ │ │ │ ├── block_neobot_sensor_theme.js
│ │ │ │ ├── block_neobot_soco.js
│ │ │ │ ├── block_neobot_thinkcar.js
│ │ │ │ ├── block_orange.js
│ │ │ │ ├── block_ozobot.js
│ │ │ │ ├── block_palmkit.js
│ │ │ │ ├── block_pingpong.js
│ │ │ │ ├── block_pingpong_multi.js
│ │ │ │ ├── block_playcode.js
│ │ │ │ ├── block_plrun.js
│ │ │ │ ├── block_robico.js
│ │ │ │ ├── block_robodog.js
│ │ │ │ ├── block_roboid.js
│ │ │ │ ├── block_robolink_codrone_diy.js
│ │ │ │ ├── block_robolink_codrone_edu.js
│ │ │ │ ├── block_robolink_codrone_mini.js
│ │ │ │ ├── block_robomation.js
│ │ │ │ ├── block_roborobo_base.js
│ │ │ │ ├── block_roborobo_cube.js
│ │ │ │ ├── block_roborobo_robokit_rs.js
│ │ │ │ ├── block_roborobo_roduino.js
│ │ │ │ ├── block_roborobo_roe.js
│ │ │ │ ├── block_roborobo_schoolkit.js
│ │ │ │ ├── block_robotamicoding.js
│ │ │ │ ├── block_robotis.js
│ │ │ │ ├── block_robotisDream.js
│ │ │ │ ├── block_robotisRB.js
│ │ │ │ ├── block_robotisRBCar.js
│ │ │ │ ├── block_robotisRBHumanoid.js
│ │ │ │ ├── block_robotisRBKoala.js
│ │ │ │ ├── block_robotisRBPracticalAssembly.js
│ │ │ │ ├── block_robotori.js
│ │ │ │ ├── block_robotry_parodule.js
│ │ │ │ ├── block_robotry_robit_stage.js
│ │ │ │ ├── block_rokoboard.js
│ │ │ │ ├── block_runcoding.js
│ │ │ │ ├── block_runcoding_display.js
│ │ │ │ ├── block_sally.js
│ │ │ │ ├── block_sciencecube.js
│ │ │ │ ├── block_sensorboard.js
│ │ │ │ ├── block_smartCodingHouse.js
│ │ │ │ ├── block_smartboard.js
│ │ │ │ ├── block_ssboard_nano.js
│ │ │ │ ├── block_suno.js
│ │ │ │ ├── block_talebot.js
│ │ │ │ ├── block_telliot_Base.js
│ │ │ │ ├── block_telliot_lite.js
│ │ │ │ ├── block_thinkboard.js
│ │ │ │ ├── block_timbo.js
│ │ │ │ ├── block_truerobot.js
│ │ │ │ ├── block_turtle.js
│ │ │ │ ├── block_uglybot.js
│ │ │ │ ├── block_uo_albert.js
│ │ │ │ ├── block_wearable.js
│ │ │ │ ├── block_whalesbot_eagle_1001.js
│ │ │ │ ├── block_xbot.js
│ │ │ │ ├── block_zerone.js
│ │ │ │ ├── block_zumiMini.js
│ │ │ │ └── index.js
│ │ │ ├── hardwareLite/
│ │ │ │ ├── block_alux_connect_lite.js
│ │ │ │ ├── block_alux_nemo_lite.js
│ │ │ │ ├── block_alux_teachnic_normal_lite.js
│ │ │ │ ├── block_alux_teachnic_power_lite.js
│ │ │ │ ├── block_arduino_lite.js
│ │ │ │ ├── block_choco_lite.js
│ │ │ │ ├── block_cocodron_controller_Lite.js
│ │ │ │ ├── block_codewiz_lite.js
│ │ │ │ ├── block_hamster_lite.js
│ │ │ │ ├── block_microbit2_lite.js
│ │ │ │ ├── block_microbit2ble_lite.js
│ │ │ │ ├── block_neo_cannon_lite.js
│ │ │ │ ├── block_neo_lite.js
│ │ │ │ ├── block_neo_spider_lite.js
│ │ │ │ ├── block_neobot_purple_lite.js
│ │ │ │ ├── block_neobot_soco_lite.js
│ │ │ │ ├── block_neobot_thinkcar_lite.js
│ │ │ │ ├── block_robolink_ZumiMini_lite.js
│ │ │ │ ├── block_robotis_kkokdu_lite.js
│ │ │ │ ├── block_robotis_koalabot_lite.js
│ │ │ │ ├── block_robotis_rgee_lite.js
│ │ │ │ ├── block_robotis_rla_lite.js
│ │ │ │ ├── block_robotis_robotai_lite.js
│ │ │ │ ├── block_sensorboard_lite.js
│ │ │ │ ├── block_whalesbot_drone_lite.js
│ │ │ │ ├── block_wizwing_controller_lite.js
│ │ │ │ ├── index.js
│ │ │ │ ├── metadata_alux_connect_lite.json
│ │ │ │ ├── metadata_alux_nemo_lite.json
│ │ │ │ ├── metadata_alux_teachnic_normal_lite.json
│ │ │ │ ├── metadata_alux_teachnic_power_lite.json
│ │ │ │ ├── metadata_arduino_lite.json
│ │ │ │ ├── metadata_choco_lite.json
│ │ │ │ ├── metadata_cocodron_controller_Lite.json
│ │ │ │ ├── metadata_codewiz_lite.json
│ │ │ │ ├── metadata_hamster_lite.json
│ │ │ │ ├── metadata_microbit2_lite.json
│ │ │ │ ├── metadata_microbit2ble_lite.json
│ │ │ │ ├── metadata_neo_cannon_lite.json
│ │ │ │ ├── metadata_neo_lite.json
│ │ │ │ ├── metadata_neo_spider_lite.json
│ │ │ │ ├── metadata_neobot_purple_lite.json
│ │ │ │ ├── metadata_neobot_soco_lite.json
│ │ │ │ ├── metadata_neobot_thinkcar_lite.json
│ │ │ │ ├── metadata_robolink_ZumiMini_lite.json
│ │ │ │ ├── metadata_robotis_kkokdu_lite.json
│ │ │ │ ├── metadata_robotis_koalabot_lite.json
│ │ │ │ ├── metadata_robotis_rgee_lite.json
│ │ │ │ ├── metadata_robotis_rla_lite.json
│ │ │ │ ├── metadata_robotis_robotai_lite.json
│ │ │ │ ├── metadata_sensorboard_lite.json
│ │ │ │ ├── metadata_whalesbot_drone_lite.json
│ │ │ │ └── metadata_wizwing_controller_lite.json
│ │ │ ├── index.js
│ │ │ └── inputs/
│ │ │ └── keyboard.js
│ │ ├── board.js
│ │ ├── code.js
│ │ ├── code_view.js
│ │ ├── comment.js
│ │ ├── connection_ripple.js
│ │ ├── executors.js
│ │ ├── executors2.js
│ │ ├── extension/
│ │ │ ├── extension.js
│ │ │ ├── guide.js
│ │ │ └── side_tag.js
│ │ ├── field/
│ │ │ ├── angle.js
│ │ │ ├── block.js
│ │ │ ├── color.js
│ │ │ ├── dropdown.js
│ │ │ ├── dropdownDynamic.js
│ │ │ ├── dropdownExtra.js
│ │ │ ├── field.js
│ │ │ ├── image.js
│ │ │ ├── indicator.js
│ │ │ ├── keyboardInput.js
│ │ │ ├── led.js
│ │ │ ├── led2.js
│ │ │ ├── lineBreak.js
│ │ │ ├── musicScale.js
│ │ │ ├── output.js
│ │ │ ├── statement.js
│ │ │ ├── text.js
│ │ │ ├── textDynamic.js
│ │ │ └── textInput.js
│ │ ├── globalSvg.js
│ │ ├── mutator.js
│ │ ├── renderView.js
│ │ ├── scope.js
│ │ ├── scroll.js
│ │ ├── skeleton/
│ │ │ ├── basic/
│ │ │ │ ├── basic.ts
│ │ │ │ ├── basic_boolean_field.ts
│ │ │ │ ├── basic_button.ts
│ │ │ │ ├── basic_button_disabled.ts
│ │ │ │ ├── basic_create.ts
│ │ │ │ ├── basic_create_value.ts
│ │ │ │ ├── basic_define.ts
│ │ │ │ ├── basic_double_loop.ts
│ │ │ │ ├── basic_event.ts
│ │ │ │ ├── basic_loop.ts
│ │ │ │ ├── basic_param.ts
│ │ │ │ ├── basic_string_field.ts
│ │ │ │ ├── basic_text.ts
│ │ │ │ └── basic_text_light.ts
│ │ │ ├── clickable_text.ts
│ │ │ ├── comment.ts
│ │ │ ├── index.ts
│ │ │ └── pebble/
│ │ │ ├── pebble_basic.ts
│ │ │ ├── pebble_event.ts
│ │ │ └── pebble_loop.ts
│ │ ├── skinner.js
│ │ ├── thread.js
│ │ ├── thread_view.js
│ │ ├── toast.js
│ │ ├── trashcan.js
│ │ ├── vim.js
│ │ ├── workspace.js
│ │ └── zoom_controller.js
│ ├── textcoding/
│ │ ├── ast/
│ │ │ ├── jsAstGenerator.js
│ │ │ └── pyAstGenerator.js
│ │ ├── data_processing/
│ │ │ ├── map.js
│ │ │ └── queue.js
│ │ ├── error/
│ │ │ └── textCodingError.js
│ │ ├── hint/
│ │ │ └── python.js
│ │ ├── parser/
│ │ │ └── core/
│ │ │ ├── block/
│ │ │ │ ├── blockToJs.js
│ │ │ │ └── blockToPy.js
│ │ │ └── text/
│ │ │ ├── jsToBlock.js
│ │ │ └── pyToBlock.js
│ │ ├── parser.js
│ │ ├── static/
│ │ │ ├── codeMap.js
│ │ │ └── keyboardCode.js
│ │ └── util/
│ │ ├── console.js
│ │ └── textCodingUtil.js
│ ├── theme/
│ │ ├── old.js
│ │ └── standard.js
│ └── util/
│ ├── audioSocket.js
│ ├── audioUtils.js
│ ├── binPacking.js
│ ├── block_driver.js
│ ├── common.js
│ ├── contextmenu.js
│ ├── curtain.js
│ ├── dataSource.ts
│ ├── destroyer/
│ │ └── Destroyer.ts
│ ├── domUtils.js
│ ├── eventHandler.js
│ ├── extrablockUtils.js
│ ├── functions/
│ │ └── showConsoleBanner.ts
│ ├── fuzzy.js
│ ├── hardwareUtils.ts
│ ├── htmlElementPatcher.js
│ ├── init.js
│ ├── loader.js
│ ├── location.js
│ ├── mediaPipeUtils.ts
│ ├── modal.js
│ ├── restrictor.js
│ ├── scheduler.js
│ ├── static.js
│ ├── tooltip.js
│ ├── tvCast.js
│ ├── utils.js
│ ├── virtualScroll.js
│ ├── workers/
│ │ └── newmotion.worker.ts
│ └── youtube.js
├── test/
│ ├── class/
│ │ └── container.spec.js
│ ├── entry/
│ │ └── entry.js
│ └── textcoding/
│ └── block.js
├── test_util/
│ └── helper.js
├── tsconfig.json
├── types/
│ ├── entry.d.ts
│ ├── index.d.ts
│ └── window.d.ts
├── webpack.config.js
├── webpack_config/
│ ├── common.js
│ ├── dev.js
│ ├── lint.js
│ ├── prod.js
│ └── serve.js
└── weights/
├── age_gender_model-shard1
├── age_gender_model-weights_manifest.json
├── face_expression_model-shard1
├── face_expression_model-weights_manifest.json
├── face_landmark_68_model-shard1
├── face_landmark_68_model-weights_manifest.json
├── face_landmark_68_tiny_model-shard1
├── face_landmark_68_tiny_model-weights_manifest.json
├── tiny_face_detector_model-shard1
└── tiny_face_detector_model-weights_manifest.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .babelrc
================================================
{
"presets": ["@babel/preset-env"],
"plugins": [
"@babel/plugin-transform-runtime",
"@babel/plugin-transform-object-assign",
"@babel/plugin-transform-modules-commonjs",
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-proposal-object-rest-spread",
"@babel/plugin-proposal-class-properties",
"@babel/plugin-proposal-private-methods"
],
"env": {
"test": {
"plugins": ["dynamic-import-node"]
}
}
}
================================================
FILE: .eslintignore
================================================
src/playground/blocks/hardware/**/*.js
extern
test
test_util
================================================
FILE: .eslintrc
================================================
{
"parser": "@babel/eslint-parser",
"plugins": ["prettier"],
"extends": ["plugin:prettier/recommended"],
"overrides": [
{
"files": ["*.ts"],
"parser": "@typescript-eslint/parser",
"rules": {
"no-unused-vars": "off",
},
},
{
"files": ["*.d.ts"],
"parser": "@typescript-eslint/parser",
"rules": {
"no-unused-vars": "off",
"no-var": "off",
"no-useless-constructor": "off",
},
},
],
"env": {
"es6": true,
"browser": true,
"jquery": true,
},
"parserOptions": {
"requireConfigFile": false,
"ecmaVersion": 2020,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true,
},
},
"rules": {
"prefer-const": "warn",
"no-var": "warn",
"eqeqeq": 0,
"no-const-assign": "error",
"no-new-object": "warn",
"object-shorthand": "warn",
"no-prototype-builtins": "warn",
"no-array-constructor": "warn",
"prefer-template": "warn",
"no-useless-escape": "warn",
"wrap-iife": ["warn", "inside"],
"no-loop-func": "warn",
"no-new-func": "warn",
"prefer-rest-params": "warn",
"prefer-arrow-callback": "warn",
"template-curly-spacing": "warn",
"no-param-reassign": ["warn", { "props": false }],
"prefer-spread": "warn",
"arrow-spacing": "warn",
"arrow-body-style": ["warn", "as-needed"],
"no-useless-constructor": "warn",
"no-dupe-class-members": "warn",
"no-duplicate-imports": "warn",
"dot-notation": "warn",
"no-undef": ["warn", { "typeof": true }],
"one-var": ["warn", "never"],
"no-multi-assign": "warn",
"no-case-declarations": "warn",
"no-nested-ternary": "warn",
"no-unneeded-ternary": "warn",
"brace-style": "warn",
"space-before-blocks": [
"warn",
{ "functions": "always", "keywords": "always", "classes": "always" },
],
"space-infix-ops": "warn",
"eol-last": ["warn", "always"],
"no-whitespace-before-property": "warn",
"padded-blocks": ["warn", "never"],
"space-in-parens": ["warn", "never"],
"array-bracket-spacing": ["warn", "never"],
"object-curly-spacing": ["warn", "always"],
"max-len": ["warn", { "code": 100 }],
"comma-style": ["warn", "last"],
"semi": ["warn"],
"radix": "warn",
"camelcase": ["warn", { "properties": "never" }],
"new-cap": ["warn", { "capIsNewExceptionPattern": "^Entry." }],
"curly": "warn",
"keyword-spacing": "warn",
},
"globals": {
"$": true,
"_": true,
"arcon": true,
"goog": true,
"acorn": true,
"createjs": true,
"Entry": true,
"filbert": true,
"Blockly": true,
"BigNumber": true,
"Lang": true,
"context": true,
"popup": true,
"WebFont": true,
"CanvasInput": true,
"EntryStatic": true,
"EaselHandle": true,
"ndgmr": true,
"Ntry": true,
"Snap": true,
"mina": true,
"Touch": true,
"io": true,
"LC": true,
"ActiveXObject": true,
"CodeMirror": true,
"entrylms": true,
"require": true,
"module": true,
"Symbol": true,
"process": true,
},
}
================================================
FILE: .github/pr-labeler.yml
================================================
feature: feature/*
security: security/*
issue: [issue/*, Issue/*]
hotfix: hotfix/*
================================================
FILE: .github/workflows/build-and-deploy.yml
================================================
name: 'build-and-deploy'
on:
push:
branches:
- 'deploy/**'
- master
- develop-hw
- develop2
- develop
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js 20.x
uses: actions/setup-node@v4
env:
NODE_OPTIONS: '--max-old-space-size=4096'
TOOL_NODE_FLAGS: '--max-old-space-size=4096'
with:
node-version: 20
- uses: pnpm/action-setup@v3
name: Install pnpm
with:
version: 9
run_install: true
- name: entry build
env:
NODE_OPTIONS: '--max-old-space-size=4096'
TOOL_NODE_FLAGS: '--max-old-space-size=4096'
run: pnpm prod
- name: Define branch name
id: target_branch
shell: bash
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF##*/})"
- uses: haya14busa/action-cond@v1
id: deploy_branch
with:
cond: ${{ steps.target_branch.outputs.branch == 'master' }}
if_true: 'build'
if_false: dist/${{ steps.target_branch.outputs.branch }}
- name: Execute build.sh
run: |
sh ./scripts/build.sh
- name: Execute deploy.sh
run: |
sh ./scripts/deploy.sh
- name: Push Changes into build branch
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
force: true
directory: ./build
branch: ${{ steps.deploy_branch.outputs.value }}
================================================
FILE: .github/workflows/pull-request-workflow.yml
================================================
name: PR Workflow
on:
pull_request:
types: [opened, edited, synchronize]
jobs:
pr-labeler:
runs-on: ubuntu-latest
steps:
- uses: TimonVS/pr-labeler-action@v3
with:
configuration-path: .github/pr-labeler.yml # optional, .github/pr-labeler.yml is the default value
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
eslint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v3
with:
version: 9
- run: pnpm install
- uses: reviewdog/action-eslint@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
reporter: github-pr-review
eslint_flags: '--ignore-pattern .eslintignore src/'
================================================
FILE: .github/workflows/release.yml
================================================
name: 'release'
on:
release:
types: [created]
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v3
with:
version: 9
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- run: pnpm install
- run: pnpm prod
- uses: JS-DevTools/npm-publish@v3
with:
token: ${{ secrets.NPM_TOKEN }}
================================================
FILE: .gitignore
================================================
# Logs
logs
*.log
# Runtime data
pids
*.pid
*.seed
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
reports
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directory
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
node_modules
# external libraries
extern/closure-library
.DS_Store
*.map
.vscode/*
.idea/
dist/
================================================
FILE: .prettierrc
================================================
{
"printWidth": 100,
"tabWidth": 4,
"singleQuote": true,
"trailingComma": "es5",
"bracketSpacing": true,
"semi": true,
"arrowParens": "always",
"endOfLine": "auto"
}
================================================
FILE: COPYING
================================================
Copyright 2015 Entry Labs
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: Gruntfile.js
================================================
module.exports = function(grunt) {
'use strict';
const ClosureCompiler = require('google-closure-compiler').compiler;
grunt.initConfig({
concurrent: {
tasks: ['watch'],
options: {
logConcurrentOutput: true,
},
},
watch: {
test: {
files: ['test/**/*.js'],
tasks: ['karma'],
},
js: {
files: ['src/**'],
tasks: ['closureCompiler:targetName', 'karma', 'jshint', 'less'],
},
},
less: {
options: {
compress: false,
},
development: {
files: {
'dist/entry.css': 'src/css/*.less',
},
},
},
jshint: {
all: ['src/**/*.js'],
options: {
jshintrc: true,
ignores: ['src/blocks/*.js'],
},
},
karma: {
options: {
frameworks: ['mocha', 'chai'],
files: [
'http://ajax.aspnetcdn.com/ajax/jshint/r07/jshint.js',
'test_util/*.js',
'extern/lang/ko.js',
'extern/blockly/blockly_compressed.js',
'extern/util/static.js',
'extern/util/filbert.js',
'extern/util/bignumber.min.js',
'node_modules/jquery/jquery.js',
'node_modules/createjs-easeljs/lib/easeljs-0.8.2.min.js',
'node_modules/createjs-soundjs/lib/soundjs-0.6.2.min.js',
'node_modules/createjs-preloadjs/lib/preloadjs-0.6.2.min.js',
'dist/entry.js',
'src/workspace/block_entry.js',
],
},
unit: {
configFile: 'karma.conf.js',
files: [{ src: ['test/**/*.js'] }],
},
},
closureCompiler: {
options: {
compilerFile: ClosureCompiler.COMPILER_PATH,
checkModified: true,
compilerOpts: {
create_source_map: 'entry.js.map',
compilation_level: 'SIMPLE_OPTIMIZATIONS',
language_in: 'ECMASCRIPT5',
language_out: 'ECMASCRIPT5',
formatting: 'pretty_print',
},
},
targetName: {
src: ['src/entry.js', 'src/**/*.js', '!src/workspace/block_entry.js'],
dest: 'dist/entry.js',
},
dist: {
options: {
compilerOpts: {
compilation_level: 'SIMPLE_OPTIMIZATIONS',
language_in: 'ECMASCRIPT5',
language_out: 'ECMASCRIPT5',
},
},
expand: false,
src: ['src/entry.js', 'src/**/*.js'],
dest: 'dist/entry.min.js',
ext: '.min.js',
},
},
});
// Load NPM tasks
grunt.loadNpmTasks('grunt-closure-tools');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-concurrent');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-karma');
grunt.loadNpmTasks('grunt-contrib-less');
grunt.option('force', true);
// Default tasks.
grunt.registerTask('default', ['closureCompiler', 'karma', 'jshint', 'less']);
grunt.registerTask('development', [
'watch',
'closureCompiler:targetName',
'karma',
'concurrent',
]);
grunt.registerTask('test', ['karma']);
grunt.registerTask('closure', ['closureCompiler']);
grunt.registerTask('build', ['closureCompiler', 'less']);
};
================================================
FILE: Jenkinsfile
================================================
pipeline {
agent none
stages {
stage('EntryJS Test') {
when {
beforeAgent true
expression {
return env.CHANGE_ID
}
}
agent {
docker {
image 'node:8.11.3'
}
}
steps {
script {
sh "npm prune"
sh "npm install"
sh "yarn test"
}
}
post {
always {
junit 'reports/*.xml'
}
}
}
stage('SonarQube Analysis') {
when {
beforeAgent true
expression {
return env.CHANGE_ID
}
}
agent {
docker {
image 'maven:3-alpine'
}
}
steps {
script {
def scannerHome = tool "sonarqube-scanner";
withSonarQubeEnv("sonar") {
sh "${scannerHome}/bin/sonar-scanner " +
"-Dsonar.projectKey=entry.entryjs " +
"-Dsonar.projectName=entryjs " +
"-Dsonar.sourceEncoding=UTF-8 " +
"-Dsonar.analysis.mode=preview " +
"-Dsonar.github.repository=entrylabs/entryjs " +
"-Dsonar.github.endpoint=https://api.github.com " +
"-Dsonar.github.oauth=${GH_TOKEN} " +
"-Dsonar.issuesReport.console.enable=true " +
"-Dsonar.github.disableInlineComments=true " +
"-Dsonar.github.pullRequest=${env.CHANGE_ID} " +
"-Dsonar.sources=src "
}
}
}
}
stage('SonarQube Scan') {
when {
beforeAgent true
allOf {
expression { BRANCH_NAME ==~ /(^master$)/ }
not { changeRequest() }
}
}
agent {
docker {
image 'maven:3-alpine'
}
}
steps {
script {
def scannerHome = tool "sonarqube-scanner";
withSonarQubeEnv("sonar") {
sh "${scannerHome}/bin/sonar-scanner " +
"-Dsonar.projectKey=entry.entryjs " +
"-Dsonar.projectName=entryjs " +
"-Dsonar.sourceEncoding=UTF-8 " +
"-Dsonar.sources=src "
}
}
}
}
stage('EntryJS Deploy') {
when {
beforeAgent true
allOf {
expression { BRANCH_NAME ==~ /(^master$|^deploy\/.*$)/ }
not { changeRequest() }
}
}
agent {
docker {
image 'node:8.11.3'
}
}
steps {
script {
sh '''npm prune
npm install
chmod +x ./scripts/build.sh
chmod +x ./scripts/deploy.sh
./scripts/build.sh
./scripts/deploy.sh'''
}
}
}
}
environment {
GH_REPO = 'https://github.com/entrylabs/entryjs.git'
GH_REF = 'github.com/entrylabs/entryjs.git'
}
}
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: NOTICE
================================================
EntryJS
Copyright 2015 Entry Labs
EntryJS project contains subcomponents with separate copyright notices and license terms.
Your use of the source code for the these subcomponents is subject to the terms and conditions of the following licenses.
=======================================================================
Blockly (https://github.com/google/blockly)
=======================================================================
/**
* @license
* Visual Blocks Editor
*
* Copyright 2011 Google Inc.
* https://developers.google.com/blockly/
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
=======================================================================
Collision-Detection-for-EaselJS (https://github.com/olsn/Collision-Detection-for-EaselJS)
=======================================================================
Copyright (c) 2013 Olaf Horstmann
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
=======================================================================
CanvasInput (https://github.com/goldfire/CanvasInput)
=======================================================================
/*!
* CanvasInput v1.2.1
* http://goldfirestudios.com/blog/108/CanvasInput-HTML5-Canvas-Text-Input
*
* (c) 2013-2015, James Simpson of GoldFire Studios
* goldfirestudios.com
*
* MIT License
*/
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
=======================================================================
Context.js (https://github.com/jakiestfu/Context.js)
=======================================================================
/*
* Context.js
* Copyright Jacob Kelley
* MIT License
*
* Modified by Joshua Christman
*/
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
================================================
FILE: README-en.md
================================================
# entryjs
entryjs is an HTML5-based block coding library developed by entry.
If you access the [Entry](https://playentry.org) site, you can check the block coding environment using entryjs.
## get started
entryjs uses several open source libraries to handle HTML Canvas, audio, and vector images.
After these libraries are loaded in the web project, entryjs should be loaded.
### 3rd party library
* [jQuery](http://jquery.com/download/) - 1.9.1
* [jquery-ui](https://github.com/jquery/jquery-ui) - 1.10.4
* [Underscore](https://github.com/jashkenas/underscore) - 1.8.3
* [CreateJS](http://createjs.com/downloads)
* EaselJS - 0.8.0
* PreloadJS - 0.6.0
* SoundJS - 0.6.0
* [Lodash](https://lodash.com/docs/4.17.15) - 4.17.10
* [Velocity](https://github.com/julianshapiro/velocity) - ~1.2.3
* [CodeMirror](https://codemirror.net) - 5.12.0
* [Fuzzy](https://github.com/mattyork/fuzzy) - ~0.1.1
* [Literallycanvas](https://github.com/entrylabs/literallycanvas) - entry version
* [EntryTool](https://github.com/entrylabs/entry-tool) - entry version
All of these libraries are distributed as open source, You can download it yourself or install it using [npm](http://npmjs.org) or [bower](http://bower.io).
### JavaScript library
```html
<!-- third party libraries -->
<script type="text/javascript" src="${LIBDIR}/PreloadJS/lib/preloadjs-0.6.0.min.js"></script>
<script type="text/javascript" src="${LIBDIR}/EaselJS/lib/easeljs-0.8.0.min.js"></script>
<script type="text/javascript" src="${LIBDIR}/SoundJS/lib/soundjs-0.6.0.min.js"></script>
<script type="text/javascript" src="${LIBDIR}/SoundJS/lib/flashaudioplugin-0.6.0.min.js"></script>
<script type="text/javascript" src="${LIBDIR}/lodash/dist/lodash.min.js"></script>
<script type="text/javascript" src="${LIBDIR}/jquery/jquery.min.js"></script>
<script type="text/javascript" src="${LIBDIR}/jquery-ui/ui/minified/jquery-ui.min.js"></script>
<script type="text/javascript" src="${LIBDIR}/velocity/velocity.min.js"></script>
<script type="text/javascript" src="${LIBDIR}/codemirror/lib/codemirror.js"></script>
<script type="text/javascript" src="${LIBDIR}/codemirror/addon/hint/show-hint.js"></script>
<script type="text/javascript" src="${LIBDIR}/codemirror/addon/lint/lint.js"></script>
<script type="text/javascript" src="${LIBDIR}/codemirror/addon/selection/active-line.js"></script>
<script type="text/javascript" src="${LIBDIR}/codemirror/mode/javascript/javascript.js"></script>
<script type="text/javascript" src="${LIBDIR}/codemirror/addon/hint/javascript-hint.js"></script>
<script type="text/javascript" src="${LIBDIR}/fuzzy/lib/fuzzy.js"></script>
<script type="text/javascript" src="${LIBDIR}/socket.io-client/socket.io.js"></script>
<script type="text/javascript" src="${LIBDIR}/react/react.js"></script>
<script type="text/javascript" src="${LIBDIR}/react/react-dom.js"></script>
<script type="text/javascript" src="${LIBDIR}/entry-lms/dist/assets/app.js"></script>
<script type="text/javascript" src="${LIBDIR}/literallycanvas-mobile/lib/js/literallycanvas.js"></script>
<script type="text/javascript" src="${LIBDIR}/entry-tool/dist/entry-tool.js"></script>
<!-- Code included in the playentry server -->
<script type="text/javascript" src="https://playentry.org/js/jshint.js"></script>
<script type="text/javascript" src="https://playentry.org/js/textmode/python/python.js"></script>
<!-- library included in entryjs and entryjs -->
<script type="text/javascript" src="${LIBDIR}/entryjs/extern/util/filbert.js"></script>
<script type="text/javascript" src="${LIBDIR}/entryjs/extern/util/CanvasInput.js"></script>
<script type="text/javascript" src="${LIBDIR}/entryjs/extern/util/ndgmr.Collision.js"></script>
<script type="text/javascript" src="${LIBDIR}/entryjs/extern/util/handle.js"></script>
<script type="text/javascript" src="${LIBDIR}/entryjs/extern/util/bignumber.min.js"></script>
<!-- entryjs core / contains language and global settings -->
<script type='text/javascript' src='${LIBDIR}/entryjs/extern/lang/ko.js'></script>
<script type='text/javascript' src='${LIBDIR}/entryjs/extern/util/static.js'></script>
<script type='text/javascript' src='${LIBDIR}/entryjs/dist/entry.min.js'></script>
```
### entryjs stylesheet
Basic styles related to block design are defined.
```html
<link rel='stylesheet' href='${LIBDIR}/entryjs/dist/entry.css'>
```
### Entry Initialization (Inject Options)
Once you have loaded the necessary libraries and entryjs, you can inject the entryjs workspace using Javascript at a specific location in the current DOM.
* Entry.init(domElement, initOptions);
```html
<div id="workspace"></div>
```
```javascript
var workspace = document.getElementById("workspace");
var initOptions = {
type: 'workspace',
libDir: '/lib',
fonts: [{
name: '나눔고딕',
family: 'Nanum Gothic',
url: '/css/nanumgothic.css'
}]
};
Entry.init(workspace, initOptions);
```
* domElement : The DOM node into which the entry will be injected.
* initOptions : Option value of entryjs workspace.
### initOptions
All options except Workspace type and font information are optional and Boolean type.
* Required
- type: Workspace type. (workspace: creation environment, minimize: viewing environment)
- libDir:Third-party library repository. Library location including entryjs. (default: '/lib')
- fonts: Web font information
* choice
- projectsaveable: Whether the project can be saved (true)
- objectaddable: Whether objects can be added (true)
- objectEditable: Whether the object can be modified (true). Setting this value to false also sets objectAddable to false.
- objectdeletable: Whether the object can be deleted (true)
- soundeditable: Whether sound can be modified (true)
- pictureeditable: Whether the shape can be modified (true)
- sceneEditable: Whether the scene can be modified (true)
- functionEnable: Whether the function is available (true)
- messageEnable: signal available (true)
- variableEnable: Whether the variable is available (true)
- listEnable: list available (true)
- isForLecture: Lecture project or not (false)
- textCodingEnable: Whether entry python is available (true)
- hardwareEnable: Hardware availability (true)
* Web font information 정보
You can add one or more arrays of fonts to be used in the entry textbox and paint.
```javascript
[{
name: 'Font name to display on screen',
family: 'font-family name',
url: 'Font definition file path'
}]
```
```javascript
// 예시
[{
name: 'Nanum Gothic',
family: 'Nanum Gothic',
url: '/css/nanumgothic.css'
},
{
name: 'Nanum handwriting',
family: 'Nanum Pen Script',
url: '/css/nanumpenscript.css'
}]
```
Free Korean web fonts can be downloaded from https://www.google.com/fonts/earlyaccess.
### Entry.playground.setBlockMenu();
Block menu reset
### Entry.loadProject(project);
Load project. If the project argument is omitted, the default project is returned..
### event. (Event description)
* event listening
```javascript
Entry.addEventListener(eventName, function);
```
- eventName: The name of the custom event you want to catch
- function: Function to be executed when the corresponding custom event occurs
* event dispatch
```javascript
Entry.dispatchEvent(eventName,params);
```
- eventName: The name of the event you want to trigger
- params: Parameters to be passed to the callback function listening for events
* representative event
- run
- stop
* user interaction
- keyPressed
- keyUpped
- canvasClick
- canvasClickCanceled
- entityClick
- entityClickCanceled
- stageMouseMove
- stageMouseOut
* screen
- windowResized
### Entry.Toast
* Display notification messages at the bottom of the workspace
- Entry.Toast.warning(title, message, auto-dospose); // caution
- Entry.Toast.success(title, message, auto-dospose); // success
- Entry.Toast.alert(title, message, auto-dospose); // warning
### Block shape definition and running script.
```
${entryjs}/src/blocks/**/*
```
### block shape definition
Please refer to [EntryDocs - Write block specification](https://entrylabs.github.io/docs/guide/entryjs/2016-05-22-add_new_blocks.html).
### Project Schema
### save
:You can save essential information in JSON format using the Entry function below.
A saved project can be reloaded using Entry.loadProject(project) .
```javascript
var project = Entry.exportProject();
```
### detailed schema
```javascript
/**
* MongoDB schema example.
*/
var ProjectSchema = new Schema({
speed: { // Execution frames per second
type: Number,
default: 60
},
objects: [ // object list
{
id: String, // Object ID. Unique.
name: String, // The object (or textbox title) name.
text: String, // text box content. (If objectType is textBox)
order: Number, // TODO
objectType: String, // object type. (sprite, textBox)
scene: String, // Scene ID. Unique.
active: { // whether the object is active
type: Boolean,
default: true
},
lock: { // object lock
type: Boolean,
default: false
},
rotateMethod: String, // rotation method (free, vertical, none)
entity: { // entity information
rotation: Number, // rotation
direction: Number, // direction
x: Number, // x coordinate
y: Number, // y coordinate
regX: Number, // horizontal center point
regY: Number, // vertical center point
scaleX: Number, // horizontal scale
scaleY: Number, // vertical scale
width: Number, // area
height: Number, // height
imageIndex: Number, // TODO
visible: Boolean, // screen display
colour: String, // text box font color
font: String, // text box font
bgColor: String, // text box background color
textAlign: Number, // textbox alignment
lineBreak: Boolean, // Whether text box line breaks
underLine: Boolean, // text box
strike: Boolean // text box underline
},
script: String, // block script
sprite: { // sprite information
name: String, // sprite name
pictures: [{ // shape list
id: String, // Shape ID. Unique/
name: String, // shape name
fileurl: String, // shape image
dimension: { // shape size
width: Number,
height: Number,
scaleX: Number,
scaleY: Number
},
scale: { // Magnification, reduction ratio (based on 100%)
type: Number,
default: 100
}
}],
sounds: [{ // list of sounds
id: String, // Sound ID. Unique.
name: String, // name
fileurl: String, // Sound file URL
duration: Number // play time. (in seconds)
}]
},
selectedPictureId: String, // ID of the currently active shape
selectedSoundId: String // ID of currently active sound
}
],
variables: [ // project variable
{
name: String, // variable name
variableType: String, // variable type. (General variable: variable, timer: timer, answer: answer, slide: slide, list: list)
id: String, // variable ID. Unique.
value: String, // variable value
minValue: Number, // minimum
maxValue: Number, // max value
visible: Boolean, // visibility on canvas
x: Number, // Converse position x coordinate
y: Number, // canvas position y-coordinate
width: Number, // width
height: Number, // height
isCloud: { // Shared variable or not
type: Boolean,
default: false
},
object: { // If it is a local variable, the ID of the object it refers to
type: String,
default: null
},
array: [{ // A list of values if the variable type is list
data: String // value data
}]
}
],
messages: [ // signal list
{
name: String, // signal name
id: String // Signal ID. Unique.
}
],
functions: [ // function list
{
id: String, // function ID. Unique.
block: String, // function block information
content: String, // function execution information
id: String,
name: String
}]
}
],
scenes: { // scene information
type: [ // scene list
{
name: String, // scene name
id: String // Scene ID. Unique.
}
]
},
});
```
### Sprite, Picture, Sound schema
### Sprites
```javascript
var SpriteSchema = new Schema({
name: String, // sprite name
pictures: [{ // shape list
name: String, // shape name
fileurl: String, // shape image
dimension: { // shape size
width: Number,
height: Number
}
}],
sounds: [{ // list of sounds
name: String, // name
fileurl: String, // Sound file URL
duration: Number // play time. (in seconds)
}]
})
```
#### Pictures
```javascript
var PictureSchema = new Schema({
name: String, // shape name
fileurl: String, // shape image
dimension: { // shape size
width: Number,
height: Number
}
})
```
#### Sounds
```javascript
var SoundSchema = new Schema({
name: String, // name
fileurl: String, // Sound file URL
duration: Number // play time. (in seconds)
})
```
## Copyright and License
EntryJS Copyright (c) 2015 Entry Labs.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
================================================
FILE: README.md
================================================
# entryjs
entryjs는 엔트리에서 개발한 HTML5 기반의 블록코딩 라이브러리 입니다.
[엔트리](https://playentry.org) 사이트에 접속하시면 entryjs를 사용한 블록코딩 환경을 확인해 볼 수 있습니다.
## 시작하기
entryjs는 HTML Canvas와 오디오, 벡터 이미지등을 다루기 위해 몇가지 오픈소스 라이브러리들을 사용합니다.
이 라이브러리들이 웹프로젝트에 먼저 로딩된 후에 entryjs를 로딩하여야 합니다.
### 써드파티 라이브러리
- [jQuery](http://jquery.com/download/) - 1.9.1
- [jquery-ui](https://github.com/jquery/jquery-ui) - 1.10.4
- [Underscore](https://github.com/jashkenas/underscore) - 1.8.3
- [CreateJS](http://createjs.com/downloads)
- EaselJS - 0.8.0
- PreloadJS - 0.6.0
- SoundJS - 0.6.0
- [Lodash](https://lodash.com/docs/4.17.15) - 4.17.10
- [Velocity](https://github.com/julianshapiro/velocity) - ~1.2.3
- [CodeMirror](https://codemirror.net) - 5.12.0
- [Fuzzy](https://github.com/mattyork/fuzzy) - ~0.1.1
- [Literallycanvas](https://github.com/entrylabs/literallycanvas) - entry version
- [EntryTool](https://github.com/entrylabs/entry-tool) - entry version
위 라이브러리들은 모두 오픈소스로 배포되며, 직접 다운로드 받거나 [npm](http://npmjs.org), [bower](http://bower.io)등을 이용해 설치할 수 있습니다.
### 자바스크립트 라이브러리
```html
<!-- 써드파티 라이브러리들 -->
<script type="text/javascript" src="${LIBDIR}/PreloadJS/lib/preloadjs-0.6.0.min.js"></script>
<script type="text/javascript" src="${LIBDIR}/EaselJS/lib/easeljs-0.8.0.min.js"></script>
<script type="text/javascript" src="${LIBDIR}/SoundJS/lib/soundjs-0.6.0.min.js"></script>
<script type="text/javascript" src="${LIBDIR}/SoundJS/lib/flashaudioplugin-0.6.0.min.js"></script>
<script type="text/javascript" src="${LIBDIR}/lodash/dist/lodash.min.js"></script>
<script type="text/javascript" src="${LIBDIR}/jquery/jquery.min.js"></script>
<script type="text/javascript" src="${LIBDIR}/jquery-ui/ui/minified/jquery-ui.min.js"></script>
<script type="text/javascript" src="${LIBDIR}/velocity/velocity.min.js"></script>
<script type="text/javascript" src="${LIBDIR}/codemirror/lib/codemirror.js"></script>
<script type="text/javascript" src="${LIBDIR}/codemirror/addon/hint/show-hint.js"></script>
<script type="text/javascript" src="${LIBDIR}/codemirror/addon/lint/lint.js"></script>
<script type="text/javascript" src="${LIBDIR}/codemirror/addon/selection/active-line.js"></script>
<script type="text/javascript" src="${LIBDIR}/codemirror/mode/javascript/javascript.js"></script>
<script type="text/javascript" src="${LIBDIR}/codemirror/addon/hint/javascript-hint.js"></script>
<script type="text/javascript" src="${LIBDIR}/fuzzy/lib/fuzzy.js"></script>
<script type="text/javascript" src="${LIBDIR}/socket.io-client/socket.io.js"></script>
<script type="text/javascript" src="${LIBDIR}/react/react.js"></script>
<script type="text/javascript" src="${LIBDIR}/react/react-dom.js"></script>
<script type="text/javascript" src="${LIBDIR}/entry-lms/dist/assets/app.js"></script>
<script
type="text/javascript"
src="${LIBDIR}/literallycanvas-mobile/lib/js/literallycanvas.js"
></script>
<script type="text/javascript" src="${LIBDIR}/entry-tool/dist/entry-tool.js"></script>
<!-- playentry 서버에 포함된 코드 -->
<script type="text/javascript" src="https://playentry.org/js/jshint.js"></script>
<script type="text/javascript" src="https://playentry.org/js/textmode/python/python.js"></script>
<!-- entryjs 및 entryjs 에 포함된 라이브러리들 -->
<script type="text/javascript" src="${LIBDIR}/entryjs/extern/util/filbert.js"></script>
<script type="text/javascript" src="${LIBDIR}/entryjs/extern/util/CanvasInput.js"></script>
<script type="text/javascript" src="${LIBDIR}/entryjs/extern/util/ndgmr.Collision.js"></script>
<script type="text/javascript" src="${LIBDIR}/entryjs/extern/util/handle.js"></script>
<script type="text/javascript" src="${LIBDIR}/entryjs/extern/util/bignumber.min.js"></script>
<!-- entryjs core / 언어 및 글로벌 설정이 포함되어있습니다. -->
<script type="text/javascript" src="${LIBDIR}/entryjs/extern/lang/ko.js"></script>
<script type="text/javascript" src="${LIBDIR}/entryjs/extern/util/static.js"></script>
<script type="text/javascript" src="${LIBDIR}/entryjs/dist/entry.min.js"></script>
```
### entryjs 스타일시트
블록 디자인과 관련된 기본적인 스타일들이 정의되어 있습니다.
```html
<link rel="stylesheet" href="${LIBDIR}/entryjs/dist/entry.css" />
```
### 엔트리 초기화 (Inject Options)
필요한 라이브러리와 entryjs를 로딩하였으면 현재 DOM의 특정 위치에 Javascript를 이용해 entryjs workspace를 주입할 수 있습니다.
- Entry.init(domElement, initOptions);
```html
<div id="workspace"></div>
```
```javascript
var workspace = document.getElementById('workspace');
var initOptions = {
type: 'workspace',
libDir: '/lib',
fonts: [
{
name: '나눔고딕',
family: 'Nanum Gothic',
url: '/css/nanumgothic.css',
},
],
};
Entry.init(workspace, initOptions);
```
- domElement : Entry가 Inject될 DOM 노드.
- initOptions : entryjs workspace의 옵션값.
### initOptions
Workspace 타입과 폰트정보를 제외한 모든 옵션은 선택사항이며 Boolean 타입입니다.
- 필수항목
- type: 워크스페이스 타입. (workspace: 만들기 환경, minimize: 구경하기 환경)
- libDir: 써드파티 라이브러리 저장소. entryjs를 포함한 Library 위치. (기본값: '/lib')
- fonts: 웹폰트 정보
- 선택항목
- projectsaveable: 프로젝트 저장가능 여부 (true)
- objectaddable: 오브젝트 추가가능 여부 (true)
- objectEditable: 오브젝트 수정가능 여부 (true). 이값을 false로 세팅하면 objectAddable도 false가 된다.
- objectdeletable: 오브젝트 삭제가능 여부 (true)
- soundeditable: 소리 수정가능 여부 (true)
- pictureeditable: 모양 수정가능 여부 (true)
- sceneEditable: 장면 수정가능 여부 (true)
- functionEnable: 함수 사용가능 여부 (true)
- messageEnable: 신호 사용가능 여부 (true)
- variableEnable: 변수 사용가능 여부 (true)
- listEnable: 리스트 사용가능 여부 (true)
- isForLecture: 강의용 프로젝트 여부 (false)
- textCodingEnable: 엔트리 파이선 사용가능 여부 (true)
- hardwareEnable: 하드웨어 사용가능 여부 (true)
- 웹폰트 정보
엔트리 글상자와 그림판에서 사용할 폰트들을 하나 이상 배열로 추가할 수 있습니다.
```javascript
[
{
name: '화면에 표시할 폰트 이름',
family: 'font-family 이름',
url: '폰트 정의파일 경로',
},
];
```
```javascript
// 예시
[
{
name: '나눔고딕',
family: 'Nanum Gothic',
url: '/css/nanumgothic.css',
},
{
name: '나눔필기체',
family: 'Nanum Pen Script',
url: '/css/nanumpenscript.css',
},
];
```
무료 한글 웹폰트는 https://www.google.com/fonts/earlyaccess 에서 다운로드 하실 수 있습니다.
### Entry.playground.setBlockMenu();
블록메뉴 초기화
### Entry.loadProject(project);
프로젝트 불러오기. project 인자를 생략할 경우 기본 프로젝트를 리턴합니다.
### 이벤트. (Event description)
- event listening
```javascript
Entry.addEventListener(eventName, function);
```
- eventName: 캐치하고 싶은 커스텀 이벤트의 이름
- function: 해당 커스텀 이벤트가 발생했을 경우 실행 될 함수
* event dispatch
```javascript
Entry.dispatchEvent(eventName, params);
```
- eventName: 발생 시키고 싶은 이벤트의 이름
- params: 이벤트를 리스닝 하고 있는 콜백함수에 넘겨줄 파라미터
* 대표적인 이벤트
- run
- stop
* 유저 인터랙션
- keyPressed
- keyUpped
- canvasClick
- canvasClickCanceled
- entityClick
- entityClickCanceled
- stageMouseMove
- stageMouseOut
* 화면
- windowResized
### Entry.Toast
- 워크스페이스 하단에 알림 메시지 표시
* Entry.Toast.warning(title, message, auto-dospose); // 주의
* Entry.Toast.success(title, message, auto-dospose); // 성공
* Entry.Toast.alert(title, message, auto-dospose); // 경고
### 블록 모양 정의와 실행 스크립트.
```
${entryjs}/src/blocks/**/*
```
### 블록 모양 정의
[EntryDocs - 블록 명세 작성](https://entrylabs.github.io/docs/guide/entryjs/2016-05-22-add_new_blocks.html) 을 참고해주세요.
### 프로젝트 (Project Schema)
### 저장
: 아래의 Entry 함수를 이용해 필수정보들을 JSON형태로 저장할 수 있습니다.
저장된 프로젝트는 Entry.loadProject(project) 를 이용해 다시 로드할 수 있습니다.
```javascript
var project = Entry.exportProject();
```
### 상세 스키마
```javascript
/**
* MongoDB 스키마 예제.
*/
var ProjectSchema = new Schema({
speed: { // 초당 실행 프레임수
type: Number,
default: 60
},
objects: [ // 오브젝트 목록
{
id: String, // 오브젝트 ID. Unique.
name: String, // 오브젝트(또는 글상자 제목) 이름.
text: String, // 글상자 내용. (objectType이 textBox일 경우)
order: Number, // TODO
objectType: String, // 오브젝트 유형. (sprite, textBox)
scene: String, // 장면 ID. Unique.
active: { // 오브젝트 활성화 여부
type: Boolean,
default: true
},
lock: { // 오브젝트 잠금 여부
type: Boolean,
default: false
},
rotateMethod: String, // 회전방식. (free, vertical, none)
entity: { // 엔티티 정보
rotation: Number, // 회전
direction: Number, // 방향
x: Number, // x 좌표
y: Number, // y 좌표
regX: Number, // 가로 중심점
regY: Number, // 세로 중심점
scaleX: Number, // 가로 배율
scaleY: Number, // 세로 배율
width: Number, // 넓이
height: Number, // 높이
imageIndex: Number, // TODO
visible: Boolean, // 화면표시 여부
colour: String, // 글상자 폰트색깔
font: String, // 글상자 폰트
bgColor: String, // 글상자 배경색깔
textAlign: Number, // 글상자 정렬
lineBreak: Boolean, // 글상자 줄바꿈 여부
underLine: Boolean, // 글상자
strike: Boolean // 글상자 밑줄
},
script: String, // 블록 스크립트
sprite: { // 스프라이트 정보
name: String, // 스프라이트 이름
pictures: [{ // 모양 목록
id: String, // 모양 ID. Unique/
name: String, // 모양 이름
fileurl: String, // 모양 이미지
dimension: { // 모양 크기
width: Number,
height: Number,
scaleX: Number,
scaleY: Number
},
scale: { // 확대, 축소 비율(100% 기준)
type: Number,
default: 100
}
}],
sounds: [{ // 소리 목록
id: String, // 소리 ID. Unique.
name: String, // 이름
fileurl: String, // 사운드 파일 URL
duration: Number // 재생시간. (초단위)
}]
},
selectedPictureId: String, // 현재 활성화된 모양의 ID
selectedSoundId: String // 현재 활성화된 소리의 ID
}
],
variables: [ // 프로젝트 변수
{
name: String, // 변수명
variableType: String, // 변수형. (일반변수: variable, 타이머: timer, 대답: answer, 슬라이드: slide, 리스트: list)
id: String, // 변수ID. Unique.
value: String, // 변수 값
minValue: Number, // 최소값
maxValue: Number, // 최대값
visible: Boolean, // 캔버스에 표시여부
x: Number, // 컨버스 위치 x좌표
y: Number, // 캔버스 위치 y좌표
width: Number, // 넓이
height: Number, // 높이
isCloud: { // 공유 변수 여부
type: Boolean,
default: false
},
object: { // 지역변수일 경우 참조하는 오브젝트 ID
type: String,
default: null
},
array: [{ // 변수형이 list일 경우 값 목록
data: String // 값 데이터
}]
}
],
messages: [ // 신호 목록
{
name: String, // 신호명
id: String // 신호 ID. Unique.
}
],
functions: [ // 함수 목록
{
id: String, // 함수 ID. Unique.
block: String, // 함수 블록 정보
content: String, // 함수 실행 정보
id: String,
name: String
}]
}
],
scenes: { // 장면 정보
type: [ // 장면 목록
{
name: String, // 장면 이름
id: String // 장면 ID. Unique.
}
]
},
});
```
### Sprite, Picture, Sound schema
### 스프라이트
```javascript
var SpriteSchema = new Schema({
name: String, // 스프라이트 이름
pictures: [
{
// 모양 목록
name: String, // 모양 이름
fileurl: String, // 모양 이미지
dimension: {
// 모양 크기
width: Number,
height: Number,
},
},
],
sounds: [
{
// 소리 목록
name: String, // 이름
fileurl: String, // 사운드 파일 URL
duration: Number, // 재생시간. (초단위)
},
],
});
```
#### 모양
```javascript
var PictureSchema = new Schema({
name: String, // 모양 이름
fileurl: String, // 모양 이미지
dimension: {
// 모양 크기
width: Number,
height: Number,
},
});
```
#### 소리
```javascript
var SoundSchema = new Schema({
name: String, // 이름
fileurl: String, // 사운드 파일 URL
duration: Number, // 재생시간. (초단위)
});
```
## Copyright and License
EntryJS Copyright (c) 2015 Entry Labs.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
================================================
FILE: contributing.md
================================================
#### 업체PR 가이드
하드웨어 업체에서는
entryjs 레포지토리에서 Pull Request를 보내실때
devleop-hw브랜치로 보내주시기 바랍니다.
기타 다른브랜치에 PR보내시면 Reject사유가 될수 있습니다.
================================================
FILE: example/example.ejs
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"
/>
<title><%= htmlWebpackPlugin.options.title %></title>
<% for (var css in htmlWebpackPlugin.files.css) { %>
<link href="<%= htmlWebpackPlugin.files.css[css] %>" rel="stylesheet" />
<% } %>
<link href="https://playentry.org/lib/entry-tool/dist/entry-tool.css" rel="stylesheet" />
<link href="https://playentry.org/lib/entry-lms/dist/assets/app.css" rel="stylesheet" />
</head>
<body>
<section style="height: 42px;">
<input type="file" id="litemodule" />
<input type="text" id="litemodulename" />
<button style="border: 1px solid black" onclick="handleUpdate()">
apply
</button>
<button style="border: 1px solid black" onclick="changeWorkspaceMode('block')">
Block Mode
</button>
<button style="border: 1px solid black" onclick="changeWorkspaceMode('python')">
Python Mode
</button>
</section>
<div id="workspace"></div>
<!--language-->
<script src="../extern/lang/ko.js"></script>
<script
type="text/javascript"
src="https://playentry.org/lib/PreloadJS/lib/preloadjs-0.6.0.min.js"
></script>
<script
type="text/javascript"
src="https://playentry.org/lib/EaselJS/lib/easeljs-0.8.0.min.js"
></script>
<script
type="text/javascript"
src="https://playentry.org/lib/SoundJS/lib/soundjs-0.6.0.min.js"
></script>
<script
type="text/javascript"
src="https://playentry.org/lib/SoundJS/lib/flashaudioplugin-0.6.0.min.js"
></script>
<script
type="text/javascript"
src="https://playentry.org/lib/lodash/dist/lodash.min.js"
></script>
<script
type="text/javascript"
src="https://playentry.org/lib/jquery/jquery.min.js"
></script>
<script
type="text/javascript"
src="https://playentry.org/lib/jquery-ui/ui/minified/jquery-ui.min.js"
></script>
<script
type="text/javascript"
src="https://playentry.org/lib/velocity/velocity.min.js"
></script>
<script
type="text/javascript"
src="https://playentry.org/lib/codemirror/lib/codemirror.js"
></script>
<script
type="text/javascript"
src="https://playentry.org/lib/codemirror/addon/hint/show-hint.js"
></script>
<script
type="text/javascript"
src="https://playentry.org/lib/codemirror/addon/lint/lint.js"
></script>
<script
type="text/javascript"
src="https://playentry.org/lib/codemirror/addon/selection/active-line.js"
></script>
<script
type="text/javascript"
src="https://playentry.org/lib/codemirror/mode/javascript/javascript.js"
></script>
<script
type="text/javascript"
src="https://playentry.org/lib/codemirror/addon/hint/javascript-hint.js"
></script>
<script type="text/javascript" src="https://playentry.org/js/jshint.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/fuzzy/lib/fuzzy.js"></script>
<script type="text/javascript" src="https://playentry.org/js/ws/python.js"></script>
<script
type="text/javascript"
src="https://playentry.org/lib/entry-js/extern/util/filbert.js"
></script>
<script
type="text/javascript"
src="https://playentry.org/lib/entry-js/extern/util/CanvasInput.js"
></script>
<script
type="text/javascript"
src="https://playentry.org/lib/entry-js/extern/util/ndgmr.Collision.js"
></script>
<script
type="text/javascript"
src="https://playentry.org/lib/entry-js/extern/util/handle.js"
></script>
<script
type="text/javascript"
src="https://playentry.org/lib/entry-js/extern/util/bignumber.min.js"
></script>
<script
type="text/javascript"
src="https://playentry.org/lib/socket.io-client/socket.io.js"
></script>
<script type="text/javascript" src="https://unpkg.com/react@18/umd/react.production.min.js"></script>
<script type="text/javascript" src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"></script>
<script
type="text/javascript"
src="https://playentry.org/lib/entry-lms/dist/assets/app.js"
></script>
<script src="../extern/util/static.js"></script>
<script
type="text/javascript"
src="https://playentry.org/lib/entry-tool/dist/entry-tool.js"
></script>
<script
type="text/javascript"
src="https://playentry.org/lib/entry-paint/dist/static/js/entry-paint.js"
></script>
<script
type="text/javascript"
src="https://entry-cdn.pstatic.net/external/sound/sound-editor.js?v=240130-174210"
></script>
<script
type="text/javascript"
src="https://entry-cdn.pstatic.net/module/legacy-video/index.js?v=241031-202112"
></script>
<% for (var chunk in htmlWebpackPlugin.files.js) { %>
<script src="<%= htmlWebpackPlugin.files.js[chunk] %>"></script>
<% } %>
<script>
function handleUpdate() {
const file = document.getElementById('litemodule').files[0];
const name = document.getElementById('litemodulename').value;
Entry.loadLiteTestModule(file, name);
}
function changeWorkspaceMode(mode) {
const option = {};
if (mode === 'block') {
option.boardType = Entry.Workspace.MODE_BOARD;
option.textType = -1;
} else {
option.boardType = Entry.Workspace.MODE_VIMBOARD;
option.textType = Entry.Vim.TEXT_TYPE_PY;
option.runType = Entry.Vim.WORKSPACE_MODE;
}
const workspace = Entry.getMainWS();
if (workspace) {
workspace.setMode(option);
} else {
console.error('entry workspace not found!');
}
}
</script>
<!--main script-->
<script>
window.PUBLIC_PATH_FOR_ENTRYJS = 'lib/entry-js/dist/';
$(document).ready(function() {
var initOption = {
libDir: '',
entryDir: '',
type: 'workspace',
textCodingEnable: true,
};
Entry.creationChangedEvent = new Entry.Event(window);
Entry.init(document.getElementById('workspace'), initOption);
Entry.loadProject();
});
</script>
</body>
</html>
================================================
FILE: example/example_mini.ejs
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"
/>
<title><%= htmlWebpackPlugin.options.title %></title>
<% for (var css in htmlWebpackPlugin.files.css) { %>
<link href="<%= htmlWebpackPlugin.files.css[css] %>" rel="stylesheet" />
<% } %>
<link href="https://playentry.org/lib/entry-tool/dist/entry-tool.css" rel="stylesheet"/>
</head>
<body>
<section class="wrapper">
<div id="workspace"></div>
</section>
<!--language-->
<script src="../extern/lang/ko.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/PreloadJS/lib/preloadjs-0.6.0.min.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/EaselJS/lib/easeljs-0.8.0.min.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/SoundJS/lib/soundjs-0.6.0.min.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/SoundJS/lib/flashaudioplugin-0.6.0.min.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/lodash/dist/lodash.min.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/jquery/jquery.min.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/jquery-ui/ui/minified/jquery-ui.min.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/velocity/velocity.min.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/codemirror/lib/codemirror.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/codemirror/addon/hint/show-hint.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/codemirror/addon/lint/lint.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/codemirror/addon/selection/active-line.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/codemirror/mode/javascript/javascript.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/codemirror/addon/hint/javascript-hint.js"></script>
<script type="text/javascript" src="https://playentry.org/js/jshint.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/fuzzy/lib/fuzzy.js"></script>
<script type="text/javascript" src="https://playentry.org/js/textmode/python/python.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/entry-js/extern/util/filbert.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/entry-js/extern/util/CanvasInput.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/entry-js/extern/util/ndgmr.Collision.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/entry-js/extern/util/handle.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/entry-js/extern/util/bignumber.min.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/socket.io-client/socket.io.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/react/react.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/react/react-dom.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/entry-lms/dist/assets/app.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/literallycanvas-mobile/lib/js/literallycanvas.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/entry-tool/dist/entry-tool.js"></script>
<script src="../extern/util/static_mini.js"></script>
<% for (var chunk in htmlWebpackPlugin.files.chunks) { %>
<script src="<%= htmlWebpackPlugin.files.chunks[chunk].entry %>"></script>
<% } %>
<!--main script-->
<script>
window.PUBLIC_PATH_FOR_ENTRYJS = 'lib/entry-js/dist/';
$(document).ready(function() {
var isMiniMode = true;
var lastHwConnected = false;
var hwCategoryList = EntryStatic.hwCategoryList;
var initOption = {
type: 'workspace',
};
initOption = $.extend(initOption, EntryStatic.initOptions);
Entry.init(document.getElementById('workspace'), initOption);
Entry.loadProject();
Entry.addEventListener('hwChanged', function() {
if (
(Entry.hw.programConnected && Entry.hw.hwModule && lastHwConnected) ||
!isMiniMode
) {
return;
}
if (Entry.hw.programConnected && Entry.hw.hwModule) {
if (EntryStatic.hwMiniSupportList.indexOf(Entry.hw.hwModule.name) > -1) {
hwCategoryList.forEach(function(categoryName) {
Entry.playground.blockMenu.unbanCategory(categoryName);
});
Entry.playground.blockMenu.banCategory('arduino');
Entry.playground.blockMenu.banCategory('hw_robot');
} else {
hwCategoryList.forEach(function(categoryName) {
Entry.playground.blockMenu.banCategory(categoryName);
});
Entry.playground.blockMenu.banCategory('hw_robot');
Entry.playground.blockMenu.unbanCategory('arduino');
}
lastHwConnected = true;
} else {
hwCategoryList.forEach(function(categoryName) {
Entry.playground.blockMenu.banCategory(categoryName);
});
Entry.playground.blockMenu.banCategory('arduino');
Entry.playground.blockMenu.unbanCategory('hw_robot');
lastHwConnected = false;
}
});
});
</script>
</body>
</html>
================================================
FILE: example/example_webgl.ejs
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"
/>
<title><%= htmlWebpackPlugin.options.title %></title>
<% for (var css in htmlWebpackPlugin.files.css) { %>
<link href="<%= htmlWebpackPlugin.files.css[css] %>" rel="stylesheet" />
<% } %>
<link href="https://playentry.org/lib/entry-tool/dist/entry-tool.css" rel="stylesheet"/>
</head>
<body>
<section class="wrapper">
<div id="workspace"></div>
</section>
<!--language-->
<script src="../extern/lang/ko.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/PreloadJS/lib/preloadjs-0.6.0.min.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/EaselJS/lib/easeljs-0.8.0.min.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/SoundJS/lib/soundjs-0.6.0.min.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/SoundJS/lib/flashaudioplugin-0.6.0.min.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/lodash/dist/lodash.min.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/jquery/jquery.min.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/jquery-ui/ui/minified/jquery-ui.min.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/velocity/velocity.min.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/codemirror/lib/codemirror.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/codemirror/addon/hint/show-hint.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/codemirror/addon/lint/lint.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/codemirror/addon/selection/active-line.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/codemirror/mode/javascript/javascript.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/codemirror/addon/hint/javascript-hint.js"></script>
<script type="text/javascript" src="https://playentry.org/js/jshint.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/fuzzy/lib/fuzzy.js"></script>
<script type="text/javascript" src="https://playentry.org/js/textmode/python/python.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/entry-js/extern/util/filbert.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/entry-js/extern/util/CanvasInput.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/entry-js/extern/util/ndgmr.Collision.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/entry-js/extern/util/handle.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/entry-js/extern/util/bignumber.min.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/socket.io-client/socket.io.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/react/react.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/react/react-dom.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/entry-lms/dist/assets/app.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/literallycanvas-mobile/lib/js/literallycanvas.js"></script>
<script type="text/javascript" src="https://playentry.org/lib/entry-tool/dist/entry-tool.js"></script>
<script type="text/javascript" src="https://pixijs.download/v4.8.5/pixi.min.js"></script>
<script src="../extern/util/static.js"></script>
<% for (var chunk in htmlWebpackPlugin.files.chunks) { %>
<script src="<%= htmlWebpackPlugin.files.chunks[chunk].entry %>"></script>
<% } %>
<!--main script-->
<script>
window.PUBLIC_PATH_FOR_ENTRYJS = 'lib/entry-js/dist/';
$(document).ready(function() {
var initOption = {
type: 'workspace',
useWebGL: '1',
};
Entry.init(document.getElementById('workspace'), initOption);
Entry.loadProject();
});
</script>
</body>
</html>
================================================
FILE: extern/blockly/.ropeproject/config.py
================================================
# The default ``config.py``
def set_prefs(prefs):
"""This function is called before opening the project"""
# Specify which files and folders to ignore in the project.
# Changes to ignored resources are not added to the history and
# VCSs. Also they are not returned in `Project.get_files()`.
# Note that ``?`` and ``*`` match all characters but slashes.
# '*.pyc': matches 'test.pyc' and 'pkg/test.pyc'
# 'mod*.pyc': matches 'test/mod1.pyc' but not 'mod/1.pyc'
# '.svn': matches 'pkg/.svn' and all of its children
# 'build/*.o': matches 'build/lib.o' but not 'build/sub/lib.o'
# 'build//*.o': matches 'build/lib.o' and 'build/sub/lib.o'
prefs['ignored_resources'] = ['*.pyc', '*~', '.ropeproject',
'.hg', '.svn', '_svn', '.git']
# Specifies which files should be considered python files. It is
# useful when you have scripts inside your project. Only files
# ending with ``.py`` are considered to be python files by
# default.
#prefs['python_files'] = ['*.py']
# Custom source folders: By default rope searches the project
# for finding source folders (folders that should be searched
# for finding modules). You can add paths to that list. Note
# that rope guesses project source folders correctly most of the
# time; use this if you have any problems.
# The folders should be relative to project root and use '/' for
# separating folders regardless of the platform rope is running on.
# 'src/my_source_folder' for instance.
#prefs.add('source_folders', 'src')
# You can extend python path for looking up modules
#prefs.add('python_path', '~/python/')
# Should rope save object information or not.
prefs['save_objectdb'] = True
prefs['compress_objectdb'] = False
# If `True`, rope analyzes each module when it is being saved.
prefs['automatic_soa'] = True
# The depth of calls to follow in static object analysis
prefs['soa_followed_calls'] = 0
# If `False` when running modules or unit tests "dynamic object
# analysis" is turned off. This makes them much faster.
prefs['perform_doa'] = True
# Rope can check the validity of its object DB when running.
prefs['validate_objectdb'] = True
# How many undos to hold?
prefs['max_history_items'] = 32
# Shows whether to save history across sessions.
prefs['save_history'] = True
prefs['compress_history'] = False
# Set the number spaces used for indenting. According to
# :PEP:`8`, it is best to use 4 spaces. Since most of rope's
# unit-tests use 4 spaces it is more reliable, too.
prefs['indent_size'] = 4
# Builtin and c-extension modules that are allowed to be imported
# and inspected by rope.
prefs['extension_modules'] = []
# Add all standard c-extensions to extension_modules list.
prefs['import_dynload_stdmods'] = True
# If `True` modules with syntax errors are considered to be empty.
# The default value is `False`; When `False` syntax errors raise
# `rope.base.exceptions.ModuleSyntaxError` exception.
prefs['ignore_syntax_errors'] = False
# If `True`, rope ignores unresolvable imports. Otherwise, they
# appear in the importing namespace.
prefs['ignore_bad_imports'] = False
def project_opened(project):
"""This function is called after opening the project"""
# Do whatever you like here!
================================================
FILE: extern/blockly/.ropeproject/globalnames
================================================
}qUbuild]q(UGen_compressedqUHEADERqUsearch_pathsqUimport_pathqUcalcdepsqUGen_uncompressedqU
Gen_langfilesq es.
================================================
FILE: extern/blockly/.ropeproject/history
================================================
]q(]q]qe.
================================================
FILE: extern/blockly/.ropeproject/objectdb
================================================
}q.
================================================
FILE: extern/blockly/blockly_compressed.js
================================================
// Do not edit this file; automatically generated by build.py.
"use strict";
var COMPILED=!0,goog=goog||{};goog.global=this;goog.isDef=function(a){return void 0!==a};goog.exportPath_=function(a,b,c){a=a.split(".");c=c||goog.global;a[0]in c||!c.execScript||c.execScript("var "+a[0]);for(var d;a.length&&(d=a.shift());)!a.length&&goog.isDef(b)?c[d]=b:c=c[d]?c[d]:c[d]={}};
goog.define=function(a,b){var c=b;COMPILED||(goog.global.CLOSURE_UNCOMPILED_DEFINES&&Object.prototype.hasOwnProperty.call(goog.global.CLOSURE_UNCOMPILED_DEFINES,a)?c=goog.global.CLOSURE_UNCOMPILED_DEFINES[a]:goog.global.CLOSURE_DEFINES&&Object.prototype.hasOwnProperty.call(goog.global.CLOSURE_DEFINES,a)&&(c=goog.global.CLOSURE_DEFINES[a]));goog.exportPath_(a,c)};goog.DEBUG=!0;goog.LOCALE="en";goog.TRUSTED_SITE=!0;goog.STRICT_MODE_COMPATIBLE=!1;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;
goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;goog.provide=function(a){if(goog.isInModuleLoader_())throw Error("goog.provide can not be used within a goog.module.");if(!COMPILED&&goog.isProvided_(a))throw Error('Namespace "'+a+'" already declared.');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var c=a;(c=c.substring(0,c.lastIndexOf(".")))&&!goog.getObjectByName(c);)goog.implicitNamespaces_[c]=!0}goog.exportPath_(a,b)};
goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;goog.module=function(a){if(!goog.isString(a)||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error("Invalid module identifier");if(!goog.isInModuleLoader_())throw Error("Module "+a+" has been loaded incorrectly.");if(goog.moduleLoaderState_.moduleName)throw Error("goog.module may only be called once per module.");goog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error('Namespace "'+a+'" already declared.');delete goog.implicitNamespaces_[a]}};
goog.module.get=function(a){return goog.module.getInternal_(a)};goog.module.getInternal_=function(a){if(!COMPILED)return goog.isProvided_(a)?a in goog.loadedModules_?goog.loadedModules_[a]:goog.getObjectByName(a):null};goog.moduleLoaderState_=null;goog.isInModuleLoader_=function(){return null!=goog.moduleLoaderState_};
goog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInModuleLoader_())throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");goog.moduleLoaderState_.declareLegacyNamespace=!0};
goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||"",Error("Importing test-only code into non-debug environment"+(a?": "+a:"."));};goog.forwardDeclare=function(a){};COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&goog.isDefAndNotNull(goog.getObjectByName(a))},goog.implicitNamespaces_={"goog.module":!0});
goog.getObjectByName=function(a,b){for(var c=a.split("."),d=b||goog.global,e;e=c.shift();)if(goog.isDefAndNotNull(d[e]))d=d[e];else return null;return d};goog.globalize=function(a,b){var c=b||goog.global,d;for(d in a)c[d]=a[d]};
goog.addDependency=function(a,b,c,d){if(goog.DEPENDENCIES_ENABLED){var e;a=a.replace(/\\/g,"/");var f=goog.dependencies_;d&&"boolean"!==typeof d||(d=d?{module:"goog"}:{});for(var g=0;e=b[g];g++)f.nameToPath[e]=a,f.loadFlags[a]=d;for(d=0;b=c[d];d++)a in f.requires||(f.requires[a]={}),f.requires[a][b]=!0}};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)};
goog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.IS_OLD_IE_&&goog.maybeProcessDeferredDep_(a);if(goog.isProvided_(a))return goog.isInModuleLoader_()?goog.module.getInternal_(a):null;if(goog.ENABLE_DEBUG_LOADER){var b=goog.getPathFromDeps_(a);if(b)return goog.writeScripts_(b),null}a="goog.require could not find: "+a;goog.logToConsole_(a);throw Error(a);}};goog.basePath="";goog.nullFunction=function(){};
goog.abstractMethod=function(){throw Error("unimplemented abstract method");};goog.addSingletonGetter=function(a){a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE="detect";
goog.TRANSPILER="transpile.js";
goog.DEPENDENCIES_ENABLED&&(goog.dependencies_={loadFlags:{},nameToPath:{},requires:{},visited:{},written:{},deferred:{}},goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&"write"in a},goog.findBasePath_=function(){if(goog.isDef(goog.global.CLOSURE_BASE_PATH))goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_())for(var a=goog.global.document.getElementsByTagName("SCRIPT"),b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf("?"),d=-1==d?c.length:d;if("base.js"==
c.substr(d-7,7)){goog.basePath=c.substr(0,d-7);break}}},goog.importScript_=function(a,b){(goog.global.CLOSURE_IMPORT_SCRIPT||goog.writeScriptTag_)(a,b)&&(goog.dependencies_.written[a]=!0)},goog.IS_OLD_IE_=!(goog.global.atob||!goog.global.document||!goog.global.document.all),goog.importProcessedScript_=function(a,b,c){goog.importScript_("",'goog.retrieveAndExec_("'+a+'", '+b+", "+c+");")},goog.queuedModules_=[],goog.wrapModule_=function(a,b){return goog.LOAD_MODULE_USING_EVAL&&goog.isDef(goog.global.JSON)?
"goog.loadModule("+goog.global.JSON.stringify(b+"\n//# sourceURL="+a+"\n")+");":'goog.loadModule(function(exports) {"use strict";'+b+"\n;return exports});\n//# sourceURL="+a+"\n"},goog.loadQueuedModules_=function(){var a=goog.queuedModules_.length;if(0<a){var b=goog.queuedModules_;goog.queuedModules_=[];for(var c=0;c<a;c++)goog.maybeProcessDeferredPath_(b[c])}},goog.maybeProcessDeferredDep_=function(a){goog.isDeferredModule_(a)&&goog.allDepsAreAvailable_(a)&&(a=goog.getPathFromDeps_(a),goog.maybeProcessDeferredPath_(goog.basePath+
a))},goog.isDeferredModule_=function(a){var b=(a=goog.getPathFromDeps_(a))&&goog.dependencies_.loadFlags[a]||{};return a&&("goog"==b.module||goog.needsTranspile_(b.lang))?goog.basePath+a in goog.dependencies_.deferred:!1},goog.allDepsAreAvailable_=function(a){if((a=goog.getPathFromDeps_(a))&&a in goog.dependencies_.requires)for(var b in goog.dependencies_.requires[a])if(!goog.isProvided_(b)&&!goog.isDeferredModule_(b))return!1;return!0},goog.maybeProcessDeferredPath_=function(a){if(a in goog.dependencies_.deferred){var b=
goog.dependencies_.deferred[a];delete goog.dependencies_.deferred[a];goog.globalEval(b)}},goog.loadModuleFromUrl=function(a){goog.retrieveAndExec_(a,!0,!1)},goog.writeScriptSrcNode_=function(a){goog.global.document.write('<script type="text/javascript" src="'+a+'">\x3c/script>')},goog.appendScriptSrcNode_=function(a){var b=goog.global.document,c=b.createElement("script");c.type="text/javascript";c.src=a;c.defer=!1;c.async=!1;b.head.appendChild(c)},goog.writeScriptTag_=function(a,b){if(goog.inHtmlDocument_()){var c=
goog.global.document;if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&"complete"==c.readyState){if(/\bdeps.js$/.test(a))return!1;throw Error('Cannot write "'+a+'" after document load');}if(void 0===b)if(goog.IS_OLD_IE_){var d=" onreadystatechange='goog.onScriptLoad_(this, "+ ++goog.lastNonModuleScriptIndex_+")' ";c.write('<script type="text/javascript" src="'+a+'"'+d+">\x3c/script>")}else goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING?goog.appendScriptSrcNode_(a):goog.writeScriptSrcNode_(a);else c.write('<script type="text/javascript">'+
b+"\x3c/script>");return!0}return!1},goog.needsTranspile_=function(a){if("always"==goog.TRANSPILE)return!0;if("never"==goog.TRANSPILE)return!1;if(!goog.transpiledLanguages_){goog.transpiledLanguages_={es5:!0,es6:!0,"es6-impl":!0};try{goog.transpiledLanguages_.es5=eval("[1,].length!=1"),eval('(()=>{"use strict";let a={};const X=class{constructor(){}x(z){return new Map([...arguments]).get(z[0])==3}};return new X().x([a,3])})()')&&(goog.transpiledLanguages_["es6-impl"]=!1),eval('(()=>{"use strict";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()')&&
(goog.transpiledLanguages_.es6=!1)}catch(b){}}return!!goog.transpiledLanguages_[a]},goog.transpiledLanguages_=null,goog.lastNonModuleScriptIndex_=0,goog.onScriptLoad_=function(a,b){"complete"==a.readyState&&goog.lastNonModuleScriptIndex_==b&&goog.loadQueuedModules_();return!0},goog.writeScripts_=function(a){function b(a){if(!(a in e.written||a in e.visited)){e.visited[a]=!0;if(a in e.requires)for(var f in e.requires[a])if(!goog.isProvided_(f))if(f in e.nameToPath)b(e.nameToPath[f]);else throw Error("Undefined nameToPath for "+
f);a in d||(d[a]=!0,c.push(a))}}var c=[],d={},e=goog.dependencies_;b(a);for(a=0;a<c.length;a++){var f=c[a];goog.dependencies_.written[f]=!0}var g=goog.moduleLoaderState_;goog.moduleLoaderState_=null;for(a=0;a<c.length;a++)if(f=c[a]){var h=e.loadFlags[f]||{},k=goog.needsTranspile_(h.lang);"goog"==h.module||k?goog.importProcessedScript_(goog.basePath+f,"goog"==h.module,k):goog.importScript_(goog.basePath+f)}else throw goog.moduleLoaderState_=g,Error("Undefined script input");goog.moduleLoaderState_=
g},goog.getPathFromDeps_=function(a){return a in goog.dependencies_.nameToPath?goog.dependencies_.nameToPath[a]:null},goog.findBasePath_(),goog.global.CLOSURE_NO_DEPS||goog.importScript_(goog.basePath+"deps.js"));
goog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:void 0,declareLegacyNamespace:!1};var c;if(goog.isFunction(a))c=a.call(void 0,{});else if(goog.isString(a))c=goog.loadModuleFromSource_.call(void 0,a);else throw Error("Invalid module definition");var d=goog.moduleLoaderState_.moduleName;if(!goog.isString(d)||!d)throw Error('Invalid module name "'+d+'"');goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(d,c):goog.SEAL_MODULE_EXPORTS&&
Object.seal&&Object.seal(c);goog.loadedModules_[d]=c}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a){eval(a);return{}};goog.normalizePath_=function(a){a=a.split("/");for(var b=0;b<a.length;)"."==a[b]?a.splice(b,1):b&&".."==a[b]&&a[b-1]&&".."!=a[b-1]?a.splice(--b,2):b++;return a.join("/")};
goog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open("get",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}};
goog.retrieveAndExec_=function(a,b,c){if(!COMPILED){var d=a;a=goog.normalizePath_(a);var e=goog.global.CLOSURE_IMPORT_SCRIPT||goog.writeScriptTag_,f=goog.loadFileSync_(a);if(null==f)throw Error('Load of "'+a+'" failed');c&&(f=goog.transpile_.call(goog.global,f,a));f=b?goog.wrapModule_(a,f):f+("\n//# sourceURL="+a);goog.IS_OLD_IE_?(goog.dependencies_.deferred[d]=f,goog.queuedModules_.push(d)):e(a,f)}};
goog.transpile_=function(a,b){var c=goog.global.$jscomp;c||(goog.global.$jscomp=c={});var d=c.transpile;if(!d){var e=goog.basePath+goog.TRANSPILER,f=goog.loadFileSync_(e);f&&(eval(f+"\n//# sourceURL="+e),c=goog.global.$jscomp,d=c.transpile)}d||(d=c.transpile=function(a,b){goog.logToConsole_(b+" requires transpilation but no transpiler was found.");return a});return d(a,b)};
goog.typeOf=function(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";
else if("function"==b&&"undefined"==typeof a.call)return"object";return b};goog.isNull=function(a){return null===a};goog.isDefAndNotNull=function(a){return null!=a};goog.isArray=function(a){return"array"==goog.typeOf(a)};goog.isArrayLike=function(a){var b=goog.typeOf(a);return"array"==b||"object"==b&&"number"==typeof a.length};goog.isDateLike=function(a){return goog.isObject(a)&&"function"==typeof a.getFullYear};goog.isString=function(a){return"string"==typeof a};
goog.isBoolean=function(a){return"boolean"==typeof a};goog.isNumber=function(a){return"number"==typeof a};goog.isFunction=function(a){return"function"==goog.typeOf(a)};goog.isObject=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b};goog.getUid=function(a){return a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};
goog.removeUid=function(a){null!==a&&"removeAttribute"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};goog.UID_PROPERTY_="closure_uid_"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.getHashCode=goog.getUid;goog.removeHashCode=goog.removeUid;goog.cloneObject=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if(a.clone)return a.clone();var b="array"==b?[]:{},c;for(c in a)b[c]=goog.cloneObject(a[c]);return b}return a};
goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};goog.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}};
goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};goog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var b=c.slice();b.push.apply(b,arguments);return a.apply(this,b)}};goog.mixin=function(a,b){for(var c in b)a[c]=b[c]};goog.now=goog.TRUSTED_SITE&&Date.now||function(){return+new Date};
goog.globalEval=function(a){if(goog.global.execScript)goog.global.execScript(a,"JavaScript");else if(goog.global.eval){if(null==goog.evalWorksForGlobals_)if(goog.global.eval("var _evalTest_ = 1;"),"undefined"!=typeof goog.global._evalTest_){try{delete goog.global._evalTest_}catch(d){}goog.evalWorksForGlobals_=!0}else goog.evalWorksForGlobals_=!1;if(goog.evalWorksForGlobals_)goog.global.eval(a);else{var b=goog.global.document,c=b.createElement("SCRIPT");c.type="text/javascript";c.defer=!1;c.appendChild(b.createTextNode(a));
b.body.appendChild(c);b.body.removeChild(c)}}else throw Error("goog.globalEval not available");};goog.evalWorksForGlobals_=null;goog.getCssName=function(a,b){var c=function(a){return goog.cssNameMapping_[a]||a},d=function(a){a=a.split("-");for(var b=[],d=0;d<a.length;d++)b.push(c(a[d]));return b.join("-")},d=goog.cssNameMapping_?"BY_WHOLE"==goog.cssNameMappingStyle_?c:d:function(a){return a};return b?a+"-"+d(b):d(a)};
goog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);goog.getMsg=function(a,b){b&&(a=a.replace(/\{\$([^}]+)}/g,function(a,d){return null!=b&&d in b?b[d]:a}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,c)};goog.exportProperty=function(a,b,c){a[b]=c};
goog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(a,c,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[c].apply(a,g)}};
goog.base=function(a,b,c){var d=arguments.callee.caller;if(goog.STRICT_MODE_COMPATIBLE||goog.DEBUG&&!d)throw Error("arguments.caller not defined. goog.base() cannot be used with strict mode code. See http://www.ecma-international.org/ecma-262/5.1/#sec-C");if(d.superClass_){for(var e=Array(arguments.length-1),f=1;f<arguments.length;f++)e[f-1]=arguments[f];return d.superClass_.constructor.apply(a,e)}e=Array(arguments.length-2);for(f=2;f<arguments.length;f++)e[f-2]=arguments[f];for(var f=!1,g=a.constructor;g;g=
g.superClass_&&g.superClass_.constructor)if(g.prototype[b]===d)f=!0;else if(f)return g.prototype[b].apply(a,e);if(a[b]===d)return a.constructor.prototype[b].apply(a,e);throw Error("goog.base called from a method of one name to a method of a different name");};goog.scope=function(a){if(goog.isInModuleLoader_())throw Error("goog.scope is not supported within a goog.module.");a.call(goog.global)};COMPILED||(goog.global.COMPILED=COMPILED);
goog.defineClass=function(a,b){var c=b.constructor,d=b.statics;c&&c!=Object.prototype.constructor||(c=function(){throw Error("cannot instantiate an interface (no constructor defined).");});c=goog.defineClass.createSealingConstructor_(c,a);a&&goog.inherits(c,a);delete b.constructor;delete b.statics;goog.defineClass.applyProperties_(c.prototype,b);null!=d&&(d instanceof Function?d(c):goog.defineClass.applyProperties_(c,d));return c};goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG;
goog.defineClass.createSealingConstructor_=function(a,b){if(!goog.defineClass.SEAL_CLASS_INSTANCES)return a;var c=!goog.defineClass.isUnsealable_(b),d=function(){var b=a.apply(this,arguments)||this;b[goog.UID_PROPERTY_]=b[goog.UID_PROPERTY_];this.constructor===d&&c&&Object.seal instanceof Function&&Object.seal(b);return b};return d};goog.defineClass.isUnsealable_=function(a){return a&&a.prototype&&a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_]};goog.defineClass.OBJECT_PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
goog.defineClass.applyProperties_=function(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);for(var d=0;d<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++)c=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])};goog.tagUnsealableClass=function(a){!COMPILED&&goog.defineClass.SEAL_CLASS_INSTANCES&&(a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_]=!0)};goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_="goog_defineClass_legacy_unsealable";goog.debug={};goog.debug.Error=function(a){if(Error.captureStackTrace)Error.captureStackTrace(this,goog.debug.Error);else{var b=Error().stack;b&&(this.stack=b)}a&&(this.message=String(a));this.reportErrorToServer=!0};goog.inherits(goog.debug.Error,Error);goog.debug.Error.prototype.name="CustomError";goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.string={};goog.string.DETECT_DOUBLE_ESCAPING=!1;goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1;goog.string.Unicode={NBSP:"\u00a0"};goog.string.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};goog.string.endsWith=function(a,b){var c=a.length-b.length;return 0<=c&&a.indexOf(b,c)==c};goog.string.caseInsensitiveStartsWith=function(a,b){return 0==goog.string.caseInsensitiveCompare(b,a.substr(0,b.length))};
goog.string.caseInsensitiveEndsWith=function(a,b){return 0==goog.string.caseInsensitiveCompare(b,a.substr(a.length-b.length,b.length))};goog.string.caseInsensitiveEquals=function(a,b){return a.toLowerCase()==b.toLowerCase()};goog.string.subs=function(a,b){for(var c=a.split("%s"),d="",e=Array.prototype.slice.call(arguments,1);e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join("%s")};goog.string.collapseWhitespace=function(a){return a.replace(/[\s\xa0]+/g," ").replace(/^\s+|\s+$/g,"")};
goog.string.isEmptyOrWhitespace=function(a){return/^[\s\xa0]*$/.test(a)};goog.string.isEmptyString=function(a){return 0==a.length};goog.string.isEmpty=goog.string.isEmptyOrWhitespace;goog.string.isEmptyOrWhitespaceSafe=function(a){return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(a))};goog.string.isEmptySafe=goog.string.isEmptyOrWhitespaceSafe;goog.string.isBreakingWhitespace=function(a){return!/[^\t\n\r ]/.test(a)};goog.string.isAlpha=function(a){return!/[^a-zA-Z]/.test(a)};
goog.string.isNumeric=function(a){return!/[^0-9]/.test(a)};goog.string.isAlphaNumeric=function(a){return!/[^a-zA-Z0-9]/.test(a)};goog.string.isSpace=function(a){return" "==a};goog.string.isUnicodeChar=function(a){return 1==a.length&&" "<=a&&"~">=a||"\u0080"<=a&&"\ufffd">=a};goog.string.stripNewlines=function(a){return a.replace(/(\r\n|\r|\n)+/g," ")};goog.string.canonicalizeNewlines=function(a){return a.replace(/(\r\n|\r|\n)/g,"\n")};
goog.string.normalizeWhitespace=function(a){return a.replace(/\xa0|\s/g," ")};goog.string.normalizeSpaces=function(a){return a.replace(/\xa0|[ \t]+/g," ")};goog.string.collapseBreakingSpaces=function(a){return a.replace(/[\t\r\n ]+/g," ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g,"")};goog.string.trim=goog.TRUSTED_SITE&&String.prototype.trim?function(a){return a.trim()}:function(a){return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")};goog.string.trimLeft=function(a){return a.replace(/^[\s\xa0]+/,"")};
goog.string.trimRight=function(a){return a.replace(/[\s\xa0]+$/,"")};goog.string.caseInsensitiveCompare=function(a,b){var c=String(a).toLowerCase(),d=String(b).toLowerCase();return c<d?-1:c==d?0:1};
goog.string.numberAwareCompare_=function(a,b,c){if(a==b)return 0;if(!a)return-1;if(!b)return 1;for(var d=a.toLowerCase().match(c),e=b.toLowerCase().match(c),f=Math.min(d.length,e.length),g=0;g<f;g++){c=d[g];var h=e[g];if(c!=h)return a=parseInt(c,10),!isNaN(a)&&(b=parseInt(h,10),!isNaN(b)&&a-b)?a-b:c<h?-1:1}return d.length!=e.length?d.length-e.length:a<b?-1:1};goog.string.intAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\d+|\D+/g)};
goog.string.floatAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\d+|\.\d+|\D+/g)};goog.string.numerateCompare=goog.string.floatAwareCompare;goog.string.urlEncode=function(a){return encodeURIComponent(String(a))};goog.string.urlDecode=function(a){return decodeURIComponent(a.replace(/\+/g," "))};goog.string.newLineToBr=function(a,b){return a.replace(/(\r\n|\r|\n)/g,b?"<br />":"<br>")};
goog.string.htmlEscape=function(a,b){if(b)a=a.replace(goog.string.AMP_RE_,"&").replace(goog.string.LT_RE_,"<").replace(goog.string.GT_RE_,">").replace(goog.string.QUOT_RE_,""").replace(goog.string.SINGLE_QUOTE_RE_,"'").replace(goog.string.NULL_RE_,"�"),goog.string.DETECT_DOUBLE_ESCAPING&&(a=a.replace(goog.string.E_RE_,"e"));else{if(!goog.string.ALL_RE_.test(a))return a;-1!=a.indexOf("&")&&(a=a.replace(goog.string.AMP_RE_,"&"));-1!=a.indexOf("<")&&(a=a.replace(goog.string.LT_RE_,
"<"));-1!=a.indexOf(">")&&(a=a.replace(goog.string.GT_RE_,">"));-1!=a.indexOf('"')&&(a=a.replace(goog.string.QUOT_RE_,"""));-1!=a.indexOf("'")&&(a=a.replace(goog.string.SINGLE_QUOTE_RE_,"'"));-1!=a.indexOf("\x00")&&(a=a.replace(goog.string.NULL_RE_,"�"));goog.string.DETECT_DOUBLE_ESCAPING&&-1!=a.indexOf("e")&&(a=a.replace(goog.string.E_RE_,"e"))}return a};goog.string.AMP_RE_=/&/g;goog.string.LT_RE_=/</g;goog.string.GT_RE_=/>/g;goog.string.QUOT_RE_=/"/g;
goog.string.SINGLE_QUOTE_RE_=/'/g;goog.string.NULL_RE_=/\x00/g;goog.string.E_RE_=/e/g;goog.string.ALL_RE_=goog.string.DETECT_DOUBLE_ESCAPING?/[\x00&<>"'e]/:/[\x00&<>"']/;goog.string.unescapeEntities=function(a){return goog.string.contains(a,"&")?!goog.string.FORCE_NON_DOM_HTML_UNESCAPING&&"document"in goog.global?goog.string.unescapeEntitiesUsingDom_(a):goog.string.unescapePureXmlEntities_(a):a};
goog.string.unescapeEntitiesWithDocument=function(a,b){return goog.string.contains(a,"&")?goog.string.unescapeEntitiesUsingDom_(a,b):a};
goog.string.unescapeEntitiesUsingDom_=function(a,b){var c={"&":"&","<":"<",">":">",""":'"'},d;d=b?b.createElement("div"):goog.global.document.createElement("div");return a.replace(goog.string.HTML_ENTITY_PATTERN_,function(a,b){var g=c[a];if(g)return g;if("#"==b.charAt(0)){var h=Number("0"+b.substr(1));isNaN(h)||(g=String.fromCharCode(h))}g||(d.innerHTML=a+" ",g=d.firstChild.nodeValue.slice(0,-1));return c[a]=g})};
goog.string.unescapePureXmlEntities_=function(a){return a.replace(/&([^;]+);/g,function(a,c){switch(c){case "amp":return"&";case "lt":return"<";case "gt":return">";case "quot":return'"';default:if("#"==c.charAt(0)){var d=Number("0"+c.substr(1));if(!isNaN(d))return String.fromCharCode(d)}return a}})};goog.string.HTML_ENTITY_PATTERN_=/&([^;\s<&]+);?/g;goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/ /g,"  "),b)};
goog.string.preserveSpaces=function(a){return a.replace(/(^|[\n ]) /g,"$1"+goog.string.Unicode.NBSP)};goog.string.stripQuotes=function(a,b){for(var c=b.length,d=0;d<c;d++){var e=1==c?b:b.charAt(d);if(a.charAt(0)==e&&a.charAt(a.length-1)==e)return a.substring(1,a.length-1)}return a};goog.string.truncate=function(a,b,c){c&&(a=goog.string.unescapeEntities(a));a.length>b&&(a=a.substring(0,b-3)+"...");c&&(a=goog.string.htmlEscape(a));return a};
goog.string.truncateMiddle=function(a,b,c,d){c&&(a=goog.string.unescapeEntities(a));if(d&&a.length>b){d>b&&(d=b);var e=a.length-d;a=a.substring(0,b-d)+"..."+a.substring(e)}else a.length>b&&(d=Math.floor(b/2),e=a.length-d,a=a.substring(0,d+b%2)+"..."+a.substring(e));c&&(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={"\x00":"\\0","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\x0B":"\\x0B",'"':'\\"',"\\":"\\\\","<":"<"};goog.string.jsEscapeCache_={"'":"\\'"};
goog.string.quote=function(a){a=String(a);for(var b=['"'],c=0;c<a.length;c++){var d=a.charAt(c),e=d.charCodeAt(0);b[c+1]=goog.string.specialEscapeChars_[d]||(31<e&&127>e?d:goog.string.escapeChar(d))}b.push('"');return b.join("")};goog.string.escapeString=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=goog.string.escapeChar(a.charAt(c));return b.join("")};
goog.string.escapeChar=function(a){if(a in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[a];if(a in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[a]=goog.string.specialEscapeChars_[a];var b,c=a.charCodeAt(0);if(31<c&&127>c)b=a;else{if(256>c){if(b="\\x",16>c||256<c)b+="0"}else b="\\u",4096>c&&(b+="0");b+=c.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=b};goog.string.contains=function(a,b){return-1!=a.indexOf(b)};
goog.string.caseInsensitiveContains=function(a,b){return goog.string.contains(a.toLowerCase(),b.toLowerCase())};goog.string.countOf=function(a,b){return a&&b?a.split(b).length-1:0};goog.string.removeAt=function(a,b,c){var d=a;0<=b&&b<a.length&&0<c&&(d=a.substr(0,b)+a.substr(b+c,a.length-b-c));return d};goog.string.remove=function(a,b){var c=new RegExp(goog.string.regExpEscape(b),"");return a.replace(c,"")};
goog.string.removeAll=function(a,b){var c=new RegExp(goog.string.regExpEscape(b),"g");return a.replace(c,"")};goog.string.regExpEscape=function(a){return String(a).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")};goog.string.repeat=String.prototype.repeat?function(a,b){return a.repeat(b)}:function(a,b){return Array(b+1).join(a)};
goog.string.padNumber=function(a,b,c){a=goog.isDef(c)?a.toFixed(c):String(a);c=a.indexOf(".");-1==c&&(c=a.length);return goog.string.repeat("0",Math.max(0,b-c))+a};goog.string.makeSafe=function(a){return null==a?"":String(a)};goog.string.buildString=function(a){return Array.prototype.join.call(arguments,"")};goog.string.getRandomString=function(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^goog.now()).toString(36)};
goog.string.compareVersions=function(a,b){for(var c=0,d=goog.string.trim(String(a)).split("."),e=goog.string.trim(String(b)).split("."),f=Math.max(d.length,e.length),g=0;0==c&&g<f;g++){var h=d[g]||"",k=e[g]||"",n=RegExp("(\\d*)(\\D*)","g"),p=RegExp("(\\d*)(\\D*)","g");do{var m=n.exec(h)||["","",""],l=p.exec(k)||["","",""];if(0==m[0].length&&0==l[0].length)break;var c=0==m[1].length?0:parseInt(m[1],10),q=0==l[1].length?0:parseInt(l[1],10),c=goog.string.compareElements_(c,q)||goog.string.compareElements_(0==
m[2].length,0==l[2].length)||goog.string.compareElements_(m[2],l[2])}while(0==c)}return c};goog.string.compareElements_=function(a,b){return a<b?-1:a>b?1:0};goog.string.hashCode=function(a){for(var b=0,c=0;c<a.length;++c)b=31*b+a.charCodeAt(c)>>>0;return b};goog.string.uniqueStringCounter_=2147483648*Math.random()|0;goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++};
goog.string.toNumber=function(a){var b=Number(a);return 0==b&&goog.string.isEmptyOrWhitespace(a)?NaN:b};goog.string.isLowerCamelCase=function(a){return/^[a-z]+([A-Z][a-z]*)*$/.test(a)};goog.string.isUpperCamelCase=function(a){return/^([A-Z][a-z]*)+$/.test(a)};goog.string.toCamelCase=function(a){return String(a).replace(/\-([a-z])/g,function(a,c){return c.toUpperCase()})};goog.string.toSelectorCase=function(a){return String(a).replace(/([A-Z])/g,"-$1").toLowerCase()};
goog.string.toTitleCase=function(a,b){var c=goog.isString(b)?goog.string.regExpEscape(b):"\\s";return a.replace(new RegExp("(^"+(c?"|["+c+"]+":"")+")([a-z])","g"),function(a,b,c){return b+c.toUpperCase()})};goog.string.capitalize=function(a){return String(a.charAt(0)).toUpperCase()+String(a.substr(1)).toLowerCase()};goog.string.parseInt=function(a){isFinite(a)&&(a=String(a));return goog.isString(a)?/^\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN};
goog.string.splitLimit=function(a,b,c){a=a.split(b);for(var d=[];0<c&&a.length;)d.push(a.shift()),c--;a.length&&d.push(a.join(b));return d};goog.string.lastComponent=function(a,b){if(b)"string"==typeof b&&(b=[b]);else return a;for(var c=-1,d=0;d<b.length;d++)if(""!=b[d]){var e=a.lastIndexOf(b[d]);e>c&&(c=e)}return-1==c?a:a.slice(c+1)};
goog.string.editDistance=function(a,b){var c=[],d=[];if(a==b)return 0;if(!a.length||!b.length)return Math.max(a.length,b.length);for(var e=0;e<b.length+1;e++)c[e]=e;for(e=0;e<a.length;e++){d[0]=e+1;for(var f=0;f<b.length;f++)d[f+1]=Math.min(d[f]+1,c[f+1]+1,c[f]+Number(a[e]!=b[f]));for(f=0;f<c.length;f++)c[f]=d[f]}return d[b.length]};goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;goog.asserts.AssertionError=function(a,b){b.unshift(a);goog.debug.Error.call(this,goog.string.subs.apply(null,b));b.shift();this.messagePattern=a};goog.inherits(goog.asserts.AssertionError,goog.debug.Error);goog.asserts.AssertionError.prototype.name="AssertionError";goog.asserts.DEFAULT_ERROR_HANDLER=function(a){throw a;};goog.asserts.errorHandler_=goog.asserts.DEFAULT_ERROR_HANDLER;
goog.asserts.doAssertFailure_=function(a,b,c,d){var e="Assertion failed";if(c)var e=e+(": "+c),f=d;else a&&(e+=": "+a,f=b);a=new goog.asserts.AssertionError(""+e,f||[]);goog.asserts.errorHandler_(a)};goog.asserts.setErrorHandler=function(a){goog.asserts.ENABLE_ASSERTS&&(goog.asserts.errorHandler_=a)};goog.asserts.assert=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!a&&goog.asserts.doAssertFailure_("",null,b,Array.prototype.slice.call(arguments,2));return a};
goog.asserts.fail=function(a,b){goog.asserts.ENABLE_ASSERTS&&goog.asserts.errorHandler_(new goog.asserts.AssertionError("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1)))};goog.asserts.assertNumber=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isNumber(a)&&goog.asserts.doAssertFailure_("Expected number but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
goog.asserts.assertString=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isString(a)&&goog.asserts.doAssertFailure_("Expected string but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertFunction=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isFunction(a)&&goog.asserts.doAssertFailure_("Expected function but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
goog.asserts.assertObject=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isObject(a)&&goog.asserts.doAssertFailure_("Expected object but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertArray=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isArray(a)&&goog.asserts.doAssertFailure_("Expected array but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
goog.asserts.assertBoolean=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isBoolean(a)&&goog.asserts.doAssertFailure_("Expected boolean but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertElement=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||goog.isObject(a)&&a.nodeType==goog.dom.NodeType.ELEMENT||goog.asserts.doAssertFailure_("Expected Element but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
goog.asserts.assertInstanceof=function(a,b,c,d){!goog.asserts.ENABLE_ASSERTS||a instanceof b||goog.asserts.doAssertFailure_("Expected instanceof %s but got %s.",[goog.asserts.getType_(b),goog.asserts.getType_(a)],c,Array.prototype.slice.call(arguments,3));return a};goog.asserts.assertObjectPrototypeIsIntact=function(){for(var a in Object.prototype)goog.asserts.fail(a+" should not be enumerable in Object.prototype.")};
goog.asserts.getType_=function(a){return a instanceof Function?a.displayName||a.name||"unknown type name":a instanceof Object?a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a):null===a?"null":typeof a};goog.array={};goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE;goog.array.ASSUME_NATIVE_FUNCTIONS=!1;goog.array.peek=function(a){return a[a.length-1]};goog.array.last=goog.array.peek;
goog.array.indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.indexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(goog.isString(a))return goog.isString(b)&&1==b.length?a.indexOf(b,c):-1;for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};
goog.array.lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.lastIndexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.lastIndexOf.call(a,b,null==c?a.length-1:c)}:function(a,b,c){c=null==c?a.length-1:c;0>c&&(c=Math.max(0,a.length+c));if(goog.isString(a))return goog.isString(b)&&1==b.length?a.lastIndexOf(b,c):-1;for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1};
goog.array.forEach=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(a,b,c){goog.asserts.assert(null!=a.length);Array.prototype.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};goog.array.forEachRight=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,d=d-1;0<=d;--d)d in e&&b.call(c,e[d],d,a)};
goog.array.filter=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.filter)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.filter.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=[],f=0,g=goog.isString(a)?a.split(""):a,h=0;h<d;h++)if(h in g){var k=g[h];b.call(c,k,h,a)&&(e[f++]=k)}return e};
goog.array.map=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.map)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.map.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=Array(d),f=goog.isString(a)?a.split(""):a,g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e};
goog.array.reduce=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduce)?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return Array.prototype.reduce.call(a,b,c)}:function(a,b,c,d){var e=c;goog.array.forEach(a,function(c,g){e=b.call(d,e,c,g,a)});return e};
goog.array.reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduceRight)?function(a,b,c,d){goog.asserts.assert(null!=a.length);goog.asserts.assert(null!=b);d&&(b=goog.bind(b,d));return Array.prototype.reduceRight.call(a,b,c)}:function(a,b,c,d){var e=c;goog.array.forEachRight(a,function(c,g){e=b.call(d,e,c,g,a)});return e};
goog.array.some=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.some)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.some.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return!0;return!1};
goog.array.every=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.every)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.every.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};goog.array.count=function(a,b,c){var d=0;goog.array.forEach(a,function(a,f,g){b.call(c,a,f,g)&&++d},c);return d};
goog.array.find=function(a,b,c){b=goog.array.findIndex(a,b,c);return 0>b?null:goog.isString(a)?a.charAt(b):a[b]};goog.array.findIndex=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return f;return-1};goog.array.findRight=function(a,b,c){b=goog.array.findIndexRight(a,b,c);return 0>b?null:goog.isString(a)?a.charAt(b):a[b]};
goog.array.findIndexRight=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,d=d-1;0<=d;d--)if(d in e&&b.call(c,e[d],d,a))return d;return-1};goog.array.contains=function(a,b){return 0<=goog.array.indexOf(a,b)};goog.array.isEmpty=function(a){return 0==a.length};goog.array.clear=function(a){if(!goog.isArray(a))for(var b=a.length-1;0<=b;b--)delete a[b];a.length=0};goog.array.insert=function(a,b){goog.array.contains(a,b)||a.push(b)};
goog.array.insertAt=function(a,b,c){goog.array.splice(a,c,0,b)};goog.array.insertArrayAt=function(a,b,c){goog.partial(goog.array.splice,a,c,0).apply(null,b)};goog.array.insertBefore=function(a,b,c){var d;2==arguments.length||0>(d=goog.array.indexOf(a,c))?a.push(b):goog.array.insertAt(a,b,d)};goog.array.remove=function(a,b){var c=goog.array.indexOf(a,b),d;(d=0<=c)&&goog.array.removeAt(a,c);return d};
goog.array.removeLast=function(a,b){var c=goog.array.lastIndexOf(a,b);return 0<=c?(goog.array.removeAt(a,c),!0):!1};goog.array.removeAt=function(a,b){goog.asserts.assert(null!=a.length);return 1==Array.prototype.splice.call(a,b,1).length};goog.array.removeIf=function(a,b,c){b=goog.array.findIndex(a,b,c);return 0<=b?(goog.array.removeAt(a,b),!0):!1};goog.array.removeAllIf=function(a,b,c){var d=0;goog.array.forEachRight(a,function(e,f){b.call(c,e,f,a)&&goog.array.removeAt(a,f)&&d++});return d};
goog.array.concat=function(a){return Array.prototype.concat.apply(Array.prototype,arguments)};goog.array.join=function(a){return Array.prototype.concat.apply(Array.prototype,arguments)};goog.array.toArray=function(a){var b=a.length;if(0<b){for(var c=Array(b),d=0;d<b;d++)c[d]=a[d];return c}return[]};goog.array.clone=goog.array.toArray;
goog.array.extend=function(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c];if(goog.isArrayLike(d)){var e=a.length||0,f=d.length||0;a.length=e+f;for(var g=0;g<f;g++)a[e+g]=d[g]}else a.push(d)}};goog.array.splice=function(a,b,c,d){goog.asserts.assert(null!=a.length);return Array.prototype.splice.apply(a,goog.array.slice(arguments,1))};
goog.array.slice=function(a,b,c){goog.asserts.assert(null!=a.length);return 2>=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)};goog.array.removeDuplicates=function(a,b,c){b=b||a;var d=function(a){return goog.isObject(a)?"o"+goog.getUid(a):(typeof a).charAt(0)+a};c=c||d;for(var d={},e=0,f=0;f<a.length;){var g=a[f++],h=c(g);Object.prototype.hasOwnProperty.call(d,h)||(d[h]=!0,b[e++]=g)}b.length=e};
goog.array.binarySearch=function(a,b,c){return goog.array.binarySearch_(a,c||goog.array.defaultCompare,!1,b)};goog.array.binarySelect=function(a,b,c){return goog.array.binarySearch_(a,b,!0,void 0,c)};goog.array.binarySearch_=function(a,b,c,d,e){for(var f=0,g=a.length,h;f<g;){var k=f+g>>1,n;n=c?b.call(e,a[k],k,a):b(d,a[k]);0<n?f=k+1:(g=k,h=!n)}return h?f:~f};goog.array.sort=function(a,b){a.sort(b||goog.array.defaultCompare)};
goog.array.stableSort=function(a,b){for(var c=Array(a.length),d=0;d<a.length;d++)c[d]={index:d,value:a[d]};var e=b||goog.array.defaultCompare;goog.array.sort(c,function(a,b){return e(a.value,b.value)||a.index-b.index});for(d=0;d<a.length;d++)a[d]=c[d].value};goog.array.sortByKey=function(a,b,c){var d=c||goog.array.defaultCompare;goog.array.sort(a,function(a,c){return d(b(a),b(c))})};goog.array.sortObjectsByKey=function(a,b,c){goog.array.sortByKey(a,function(a){return a[b]},c)};
goog.array.isSorted=function(a,b,c){b=b||goog.array.defaultCompare;for(var d=1;d<a.length;d++){var e=b(a[d-1],a[d]);if(0<e||0==e&&c)return!1}return!0};goog.array.equals=function(a,b,c){if(!goog.isArrayLike(a)||!goog.isArrayLike(b)||a.length!=b.length)return!1;var d=a.length;c=c||goog.array.defaultCompareEquality;for(var e=0;e<d;e++)if(!c(a[e],b[e]))return!1;return!0};
goog.array.compare3=function(a,b,c){c=c||goog.array.defaultCompare;for(var d=Math.min(a.length,b.length),e=0;e<d;e++){var f=c(a[e],b[e]);if(0!=f)return f}return goog.array.defaultCompare(a.length,b.length)};goog.array.defaultCompare=function(a,b){return a>b?1:a<b?-1:0};goog.array.inverseDefaultCompare=function(a,b){return-goog.array.defaultCompare(a,b)};goog.array.defaultCompareEquality=function(a,b){return a===b};
goog.array.binaryInsert=function(a,b,c){c=goog.array.binarySearch(a,b,c);return 0>c?(goog.array.insertAt(a,b,-(c+1)),!0):!1};goog.array.binaryRemove=function(a,b,c){b=goog.array.binarySearch(a,b,c);return 0<=b?goog.array.removeAt(a,b):!1};goog.array.bucket=function(a,b,c){for(var d={},e=0;e<a.length;e++){var f=a[e],g=b.call(c,f,e,a);goog.isDef(g)&&(d[g]||(d[g]=[])).push(f)}return d};goog.array.toObject=function(a,b,c){var d={};goog.array.forEach(a,function(e,f){d[b.call(c,e,f,a)]=e});return d};
goog.array.range=function(a,b,c){var d=[],e=0,f=a;c=c||1;void 0!==b&&(e=a,f=b);if(0>c*(f-e))return[];if(0<c)for(a=e;a<f;a+=c)d.push(a);else for(a=e;a>f;a+=c)d.push(a);return d};goog.array.repeat=function(a,b){for(var c=[],d=0;d<b;d++)c[d]=a;return c};goog.array.flatten=function(a){for(var b=[],c=0;c<arguments.length;c++){var d=arguments[c];if(goog.isArray(d))for(var e=0;e<d.length;e+=8192)for(var f=goog.array.slice(d,e,e+8192),f=goog.array.flatten.apply(null,f),g=0;g<f.length;g++)b.push(f[g]);else b.push(d)}return b};
goog.array.rotate=function(a,b){goog.asserts.assert(null!=a.length);a.length&&(b%=a.length,0<b?Array.prototype.unshift.apply(a,a.splice(-b,b)):0>b&&Array.prototype.push.apply(a,a.splice(0,-b)));return a};goog.array.moveItem=function(a,b,c){goog.asserts.assert(0<=b&&b<a.length);goog.asserts.assert(0<=c&&c<a.length);b=Array.prototype.splice.call(a,b,1);Array.prototype.splice.call(a,c,0,b[0])};
goog.array.zip=function(a){if(!arguments.length)return[];for(var b=[],c=arguments[0].length,d=1;d<arguments.length;d++)arguments[d].length<c&&(c=arguments[d].length);for(d=0;d<c;d++){for(var e=[],f=0;f<arguments.length;f++)e.push(arguments[f][d]);b.push(e)}return b};goog.array.shuffle=function(a,b){for(var c=b||Math.random,d=a.length-1;0<d;d--){var e=Math.floor(c()*(d+1)),f=a[d];a[d]=a[e];a[e]=f}};goog.array.copyByIndex=function(a,b){var c=[];goog.array.forEach(b,function(b){c.push(a[b])});return c};
goog.array.concatMap=function(a,b,c){return goog.array.concat.apply([],goog.array.map(a,b,c))};goog.labs={};goog.labs.userAgent={};goog.labs.userAgent.util={};goog.labs.userAgent.util.getNativeUserAgentString_=function(){var a=goog.labs.userAgent.util.getNavigator_();return a&&(a=a.userAgent)?a:""};goog.labs.userAgent.util.getNavigator_=function(){return goog.global.navigator};goog.labs.userAgent.util.userAgent_=goog.labs.userAgent.util.getNativeUserAgentString_();goog.labs.userAgent.util.setUserAgent=function(a){goog.labs.userAgent.util.userAgent_=a||goog.labs.userAgent.util.getNativeUserAgentString_()};
goog.labs.userAgent.util.getUserAgent=function(){return goog.labs.userAgent.util.userAgent_};goog.labs.userAgent.util.matchUserAgent=function(a){var b=goog.labs.userAgent.util.getUserAgent();return goog.string.contains(b,a)};goog.labs.userAgent.util.matchUserAgentIgnoreCase=function(a){var b=goog.labs.userAgent.util.getUserAgent();return goog.string.caseInsensitiveContains(b,a)};
goog.labs.userAgent.util.extractVersionTuples=function(a){for(var b=RegExp("(\\w[\\w ]+)/([^\\s]+)\\s*(?:\\((.*?)\\))?","g"),c=[],d;d=b.exec(a);)c.push([d[1],d[2],d[3]||void 0]);return c};goog.object={};goog.object.is=function(a,b){return a===b?0!==a||1/a===1/b:a!==a&&b!==b};goog.object.forEach=function(a,b,c){for(var d in a)b.call(c,a[d],d,a)};goog.object.filter=function(a,b,c){var d={},e;for(e in a)b.call(c,a[e],e,a)&&(d[e]=a[e]);return d};goog.object.map=function(a,b,c){var d={},e;for(e in a)d[e]=b.call(c,a[e],e,a);return d};goog.object.some=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return!0;return!1};
goog.object.every=function(a,b,c){for(var d in a)if(!b.call(c,a[d],d,a))return!1;return!0};goog.object.getCount=function(a){var b=0,c;for(c in a)b++;return b};goog.object.getAnyKey=function(a){for(var b in a)return b};goog.object.getAnyValue=function(a){for(var b in a)return a[b]};goog.object.contains=function(a,b){return goog.object.containsValue(a,b)};goog.object.getValues=function(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b};
goog.object.getKeys=function(a){var b=[],c=0,d;for(d in a)b[c++]=d;return b};goog.object.getValueByKeys=function(a,b){for(var c=goog.isArrayLike(b),d=c?b:arguments,c=c?0:1;c<d.length&&(a=a[d[c]],goog.isDef(a));c++);return a};goog.object.containsKey=function(a,b){return null!==a&&b in a};goog.object.containsValue=function(a,b){for(var c in a)if(a[c]==b)return!0;return!1};goog.object.findKey=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return d};
goog.object.findValue=function(a,b,c){return(b=goog.object.findKey(a,b,c))&&a[b]};goog.object.isEmpty=function(a){for(var b in a)return!1;return!0};goog.object.clear=function(a){for(var b in a)delete a[b]};goog.object.remove=function(a,b){var c;(c=b in a)&&delete a[b];return c};goog.object.add=function(a,b,c){if(null!==a&&b in a)throw Error('The object already contains the key "'+b+'"');goog.object.set(a,b,c)};goog.object.get=function(a,b,c){return null!==a&&b in a?a[b]:c};
goog.object.set=function(a,b,c){a[b]=c};goog.object.setIfUndefined=function(a,b,c){return b in a?a[b]:a[b]=c};goog.object.setWithReturnValueIfNotSet=function(a,b,c){if(b in a)return a[b];c=c();return a[b]=c};goog.object.equals=function(a,b){for(var c in a)if(!(c in b)||a[c]!==b[c])return!1;for(c in b)if(!(c in a))return!1;return!0};goog.object.clone=function(a){var b={},c;for(c in a)b[c]=a[c];return b};
goog.object.unsafeClone=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if(goog.isFunction(a.clone))return a.clone();var b="array"==b?[]:{},c;for(c in a)b[c]=goog.object.unsafeClone(a[c]);return b}return a};goog.object.transpose=function(a){var b={},c;for(c in a)b[a[c]]=c;return b};goog.object.PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
goog.object.extend=function(a,b){for(var c,d,e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(var f=0;f<goog.object.PROTOTYPE_FIELDS_.length;f++)c=goog.object.PROTOTYPE_FIELDS_[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}};
goog.object.create=function(a){var b=arguments.length;if(1==b&&goog.isArray(arguments[0]))return goog.object.create.apply(null,arguments[0]);if(b%2)throw Error("Uneven number of arguments");for(var c={},d=0;d<b;d+=2)c[arguments[d]]=arguments[d+1];return c};goog.object.createSet=function(a){var b=arguments.length;if(1==b&&goog.isArray(arguments[0]))return goog.object.createSet.apply(null,arguments[0]);for(var c={},d=0;d<b;d++)c[arguments[d]]=!0;return c};
goog.object.createImmutableView=function(a){var b=a;Object.isFrozen&&!Object.isFrozen(a)&&(b=Object.create(a),Object.freeze(b));return b};goog.object.isImmutableView=function(a){return!!Object.isFrozen&&Object.isFrozen(a)};goog.labs.userAgent.browser={};goog.labs.userAgent.browser.matchOpera_=function(){return goog.labs.userAgent.util.matchUserAgent("Opera")};goog.labs.userAgent.browser.matchIE_=function(){return goog.labs.userAgent.util.matchUserAgent("Trident")||goog.labs.userAgent.util.matchUserAgent("MSIE")};goog.labs.userAgent.browser.matchEdge_=function(){return goog.labs.userAgent.util.matchUserAgent("Edge")};goog.labs.userAgent.browser.matchFirefox_=function(){return goog.labs.userAgent.util.matchUserAgent("Firefox")};
goog.labs.userAgent.browser.matchSafari_=function(){return goog.labs.userAgent.util.matchUserAgent("Safari")&&!(goog.labs.userAgent.browser.matchChrome_()||goog.labs.userAgent.browser.matchCoast_()||goog.labs.userAgent.browser.matchOpera_()||goog.labs.userAgent.browser.matchEdge_()||goog.labs.userAgent.browser.isSilk()||goog.labs.userAgent.util.matchUserAgent("Android"))};goog.labs.userAgent.browser.matchCoast_=function(){return goog.labs.userAgent.util.matchUserAgent("Coast")};
goog.labs.userAgent.browser.matchIosWebview_=function(){return(goog.labs.userAgent.util.matchUserAgent("iPad")||goog.labs.userAgent.util.matchUserAgent("iPhone"))&&!goog.labs.userAgent.browser.matchSafari_()&&!goog.labs.userAgent.browser.matchChrome_()&&!goog.labs.userAgent.browser.matchCoast_()&&goog.labs.userAgent.util.matchUserAgent("AppleWebKit")};
goog.labs.userAgent.browser.matchChrome_=function(){return(goog.labs.userAgent.util.matchUserAgent("Chrome")||goog.labs.userAgent.util.matchUserAgent("CriOS"))&&!goog.labs.userAgent.browser.matchEdge_()};goog.labs.userAgent.browser.matchAndroidBrowser_=function(){return goog.labs.userAgent.util.matchUserAgent("Android")&&!(goog.labs.userAgent.browser.isChrome()||goog.labs.userAgent.browser.isFirefox()||goog.labs.userAgent.browser.isOpera()||goog.labs.userAgent.browser.isSilk())};
goog.labs.userAgent.browser.isOpera=goog.labs.userAgent.browser.matchOpera_;goog.labs.userAgent.browser.isIE=goog.labs.userAgent.browser.matchIE_;goog.labs.userAgent.browser.isEdge=goog.labs.userAgent.browser.matchEdge_;goog.labs.userAgent.browser.isFirefox=goog.labs.userAgent.browser.matchFirefox_;goog.labs.userAgent.browser.isSafari=goog.labs.userAgent.browser.matchSafari_;goog.labs.userAgent.browser.isCoast=goog.labs.userAgent.browser.matchCoast_;goog.labs.userAgent.browser.isIosWebview=goog.labs.userAgent.browser.matchIosWebview_;
goog.labs.userAgent.browser.isChrome=goog.labs.userAgent.browser.matchChrome_;goog.labs.userAgent.browser.isAndroidBrowser=goog.labs.userAgent.browser.matchAndroidBrowser_;goog.labs.userAgent.browser.isSilk=function(){return goog.labs.userAgent.util.matchUserAgent("Silk")};
goog.labs.userAgent.browser.getVersion=function(){function a(a){a=goog.array.find(a,d);return c[a]||""}var b=goog.labs.userAgent.util.getUserAgent();if(goog.labs.userAgent.browser.isIE())return goog.labs.userAgent.browser.getIEVersion_(b);var b=goog.labs.userAgent.util.extractVersionTuples(b),c={};goog.array.forEach(b,function(a){c[a[0]]=a[1]});var d=goog.partial(goog.object.containsKey,c);return goog.labs.userAgent.browser.isOpera()?a(["Version","Opera"]):goog.labs.userAgent.browser.isEdge()?a(["Edge"]):
goog.labs.userAgent.browser.isChrome()?a(["Chrome","CriOS"]):(b=b[2])&&b[1]||""};goog.labs.userAgent.browser.isVersionOrHigher=function(a){return 0<=goog.string.compareVersions(goog.labs.userAgent.browser.getVersion(),a)};
goog.labs.userAgent.browser.getIEVersion_=function(a){var b=/rv: *([\d\.]*)/.exec(a);if(b&&b[1])return b[1];var b="",c=/MSIE +([\d\.]+)/.exec(a);if(c&&c[1])if(a=/Trident\/(\d.\d)/.exec(a),"7.0"==c[1])if(a&&a[1])switch(a[1]){case "4.0":b="8.0";break;case "5.0":b="9.0";break;case "6.0":b="10.0";break;case "7.0":b="11.0"}else b="7.0";else b=c[1];return b};goog.labs.userAgent.engine={};goog.labs.userAgent.engine.isPresto=function(){return goog.labs.userAgent.util.matchUserAgent("Presto")};goog.labs.userAgent.engine.isTrident=function(){return goog.labs.userAgent.util.matchUserAgent("Trident")||goog.labs.userAgent.util.matchUserAgent("MSIE")};goog.labs.userAgent.engine.isEdge=function(){return goog.labs.userAgent.util.matchUserAgent("Edge")};
goog.labs.userAgent.engine.isWebKit=function(){return goog.labs.userAgent.util.matchUserAgentIgnoreCase("WebKit")&&!goog.labs.userAgent.engine.isEdge()};goog.labs.userAgent.engine.isGecko=function(){return goog.labs.userAgent.util.matchUserAgent("Gecko")&&!goog.labs.userAgent.engine.isWebKit()&&!goog.labs.userAgent.engine.isTrident()&&!goog.labs.userAgent.engine.isEdge()};
goog.labs.userAgent.engine.getVersion=function(){var a=goog.labs.userAgent.util.getUserAgent();if(a){var a=goog.labs.userAgent.util.extractVersionTuples(a),b=goog.labs.userAgent.engine.getEngineTuple_(a);if(b)return"Gecko"==b[0]?goog.labs.userAgent.engine.getVersionForKey_(a,"Firefox"):b[1];var a=a[0],c;if(a&&(c=a[2])&&(c=/Trident\/([^\s;]+)/.exec(c)))return c[1]}return""};
goog.labs.userAgent.engine.getEngineTuple_=function(a){if(!goog.labs.userAgent.engine.isEdge())return a[1];for(var b=0;b<a.length;b++){var c=a[b];if("Edge"==c[0])return c}};goog.labs.userAgent.engine.isVersionOrHigher=function(a){return 0<=goog.string.compareVersions(goog.labs.userAgent.engine.getVersion(),a)};goog.labs.userAgent.engine.getVersionForKey_=function(a,b){var c=goog.array.find(a,function(a){return b==a[0]});return c&&c[1]||""};goog.labs.userAgent.platform={};goog.labs.userAgent.platform.isAndroid=function(){return goog.labs.userAgent.util.matchUserAgent("Android")};goog.labs.userAgent.platform.isIpod=function(){return goog.labs.userAgent.util.matchUserAgent("iPod")};goog.labs.userAgent.platform.isIphone=function(){return goog.labs.userAgent.util.matchUserAgent("iPhone")&&!goog.labs.userAgent.util.matchUserAgent("iPod")&&!goog.labs.userAgent.util.matchUserAgent("iPad")};goog.labs.userAgent.platform.isIpad=function(){return goog.labs.userAgent.util.matchUserAgent("iPad")};
goog.labs.userAgent.platform.isIos=function(){return goog.labs.userAgent.platform.isIphone()||goog.labs.userAgent.platform.isIpad()||goog.labs.userAgent.platform.isIpod()};goog.labs.userAgent.platform.isMacintosh=function(){return goog.labs.userAgent.util.matchUserAgent("Macintosh")};goog.labs.userAgent.platform.isLinux=function(){return goog.labs.userAgent.util.matchUserAgent("Linux")};goog.labs.userAgent.platform.isWindows=function(){return goog.labs.userAgent.util.matchUserAgent("Windows")};
goog.labs.userAgent.platform.isChromeOS=function(){return goog.labs.userAgent.util.matchUserAgent("CrOS")};
goog.labs.userAgent.platform.getVersion=function(){var a=goog.labs.userAgent.util.getUserAgent(),b="";goog.labs.userAgent.platform.isWindows()?(b=/Windows (?:NT|Phone) ([0-9.]+)/,b=(a=b.exec(a))?a[1]:"0.0"):goog.labs.userAgent.platform.isIos()?(b=/(?:iPhone|iPod|iPad|CPU)\s+OS\s+(\S+)/,b=(a=b.exec(a))&&a[1].replace(/_/g,".")):goog.labs.userAgent.platform.isMacintosh()?(b=/Mac OS X ([0-9_.]+)/,b=(a=b.exec(a))?a[1].replace(/_/g,"."):"10"):goog.labs.userAgent.platform.isAndroid()?(b=/Android\s+([^\);]+)(\)|;)/,
b=(a=b.exec(a))&&a[1]):goog.labs.userAgent.platform.isChromeOS()&&(b=/(?:CrOS\s+(?:i686|x86_64)\s+([0-9.]+))/,b=(a=b.exec(a))&&a[1]);return b||""};goog.labs.userAgent.platform.isVersionOrHigher=function(a){return 0<=goog.string.compareVersions(goog.labs.userAgent.platform.getVersion(),a)};goog.userAgent={};goog.userAgent.ASSUME_IE=!1;goog.userAgent.ASSUME_EDGE=!1;goog.userAgent.ASSUME_GECKO=!1;goog.userAgent.ASSUME_WEBKIT=!1;goog.userAgent.ASSUME_MOBILE_WEBKIT=!1;goog.userAgent.ASSUME_OPERA=!1;goog.userAgent.ASSUME_ANY_VERSION=!1;goog.userAgent.BROWSER_KNOWN_=goog.userAgent.ASSUME_IE||goog.userAgent.ASSUME_EDGE||goog.userAgent.ASSUME_GECKO||goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_OPERA;goog.userAgent.getUserAgentString=function(){return goog.labs.userAgent.util.getUserAgent()};
goog.userAgent.getNavigator=function(){return goog.global.navigator||null};goog.userAgent.OPERA=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_OPERA:goog.labs.userAgent.browser.isOpera();goog.userAgent.IE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_IE:goog.labs.userAgent.browser.isIE();goog.userAgent.EDGE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_EDGE:goog.labs.userAgent.engine.isEdge();goog.userAgent.EDGE_OR_IE=goog.userAgent.EDGE||goog.userAgent.IE;
goog.userAgent.GECKO=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_GECKO:goog.labs.userAgent.engine.isGecko();goog.userAgent.WEBKIT=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_MOBILE_WEBKIT:goog.labs.userAgent.engine.isWebKit();goog.userAgent.isMobile_=function(){return goog.userAgent.WEBKIT&&goog.labs.userAgent.util.matchUserAgent("Mobile")};goog.userAgent.MOBILE=goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.isMobile_();goog.userAgent.SAFARI=goog.userAgent.WEBKIT;
goog.userAgent.determinePlatform_=function(){var a=goog.userAgent.getNavigator();return a&&a.platform||""};goog.userAgent.PLATFORM=goog.userAgent.determinePlatform_();goog.userAgent.ASSUME_MAC=!1;goog.userAgent.ASSUME_WINDOWS=!1;goog.userAgent.ASSUME_LINUX=!1;goog.userAgent.ASSUME_X11=!1;goog.userAgent.ASSUME_ANDROID=!1;goog.userAgent.ASSUME_IPHONE=!1;goog.userAgent.ASSUME_IPAD=!1;goog.userAgent.ASSUME_IPOD=!1;
goog.userAgent.PLATFORM_KNOWN_=goog.userAgent.ASSUME_MAC||goog.userAgent.ASSUME_WINDOWS||goog.userAgent.ASSUME_LINUX||goog.userAgent.ASSUME_X11||goog.userAgent.ASSUME_ANDROID||goog.userAgent.ASSUME_IPHONE||goog.userAgent.ASSUME_IPAD||goog.userAgent.ASSUME_IPOD;goog.userAgent.MAC=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_MAC:goog.labs.userAgent.platform.isMacintosh();goog.userAgent.WINDOWS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_WINDOWS:goog.labs.userAgent.platform.isWindows();
goog.userAgent.isLegacyLinux_=function(){return goog.labs.userAgent.platform.isLinux()||goog.labs.userAgent.platform.isChromeOS()};goog.userAgent.LINUX=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_LINUX:goog.userAgent.isLegacyLinux_();goog.userAgent.isX11_=function(){var a=goog.userAgent.getNavigator();return!!a&&goog.string.contains(a.appVersion||"","X11")};goog.userAgent.X11=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_X11:goog.userAgent.isX11_();
goog.userAgent.ANDROID=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_ANDROID:goog.labs.userAgent.platform.isAndroid();goog.userAgent.IPHONE=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPHONE:goog.labs.userAgent.platform.isIphone();goog.userAgent.IPAD=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPAD:goog.labs.userAgent.platform.isIpad();goog.userAgent.IPOD=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPOD:goog.labs.userAgent.platform.isIpod();
goog.userAgent.determineVersion_=function(){var a="",b=goog.userAgent.getVersionRegexResult_();b&&(a=b?b[1]:"");return goog.userAgent.IE&&(b=goog.userAgent.getDocumentMode_(),null!=b&&b>parseFloat(a))?String(b):a};
goog.userAgent.getVersionRegexResult_=function(){var a=goog.userAgent.getUserAgentString();if(goog.userAgent.GECKO)return/rv\:([^\);]+)(\)|;)/.exec(a);if(goog.userAgent.EDGE)return/Edge\/([\d\.]+)/.exec(a);if(goog.userAgent.IE)return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);if(goog.userAgent.WEBKIT)return/WebKit\/(\S+)/.exec(a);if(goog.userAgent.OPERA)return/(?:Version)[ \/]?(\S+)/.exec(a)};goog.userAgent.getDocumentMode_=function(){var a=goog.global.document;return a?a.documentMode:void 0};
goog.userAgent.VERSION=goog.userAgent.determineVersion_();goog.userAgent.compare=function(a,b){return goog.string.compareVersions(a,b)};goog.userAgent.isVersionOrHigherCache_={};goog.userAgent.isVersionOrHigher=function(a){return goog.userAgent.ASSUME_ANY_VERSION||goog.userAgent.isVersionOrHigherCache_[a]||(goog.userAgent.isVersionOrHigherCache_[a]=0<=goog.string.compareVersions(goog.userAgent.VERSION,a))};goog.userAgent.isVersion=goog.userAgent.isVersionOrHigher;
goog.userAgent.isDocumentModeOrHigher=function(a){return Number(goog.userAgent.DOCUMENT_MODE)>=a};goog.userAgent.isDocumentMode=goog.userAgent.isDocumentModeOrHigher;goog.userAgent.DOCUMENT_MODE=function(){var a=goog.global.document,b=goog.userAgent.getDocumentMode_();return a&&goog.userAgent.IE?b||("CSS1Compat"==a.compatMode?parseInt(goog.userAgent.VERSION,10):5):void 0}();goog.Thenable=function(){};goog.Thenable.prototype.then=function(a,b,c){};goog.Thenable.IMPLEMENTED_BY_PROP="$goog_Thenable";goog.Thenable.addImplementation=function(a){goog.exportProperty(a.prototype,"then",a.prototype.then);COMPILED?a.prototype[goog.Thenable.IMPLEMENTED_BY_PROP]=!0:a.prototype.$goog_Thenable=!0};goog.Thenable.isImplementedBy=function(a){if(!a)return!1;try{return COMPILED?!!a[goog.Thenable.IMPLEMENTED_BY_PROP]:!!a.$goog_Thenable}catch(b){return!1}};goog.async={};goog.async.FreeList=function(a,b,c){this.limit_=c;this.create_=a;this.reset_=b;this.occupants_=0;this.head_=null};goog.async.FreeList.prototype.get=function(){var a;0<this.occupants_?(this.occupants_--,a=this.head_,this.head_=a.next,a.next=null):a=this.create_();return a};goog.async.FreeList.prototype.put=function(a){this.reset_(a);this.occupants_<this.limit_&&(this.occupants_++,a.next=this.head_,this.head_=a)};goog.async.FreeList.prototype.occupants=function(){return this.occupants_};goog.async.WorkQueue=function(){this.workTail_=this.workHead_=null};goog.async.WorkQueue.DEFAULT_MAX_UNUSED=100;goog.async.WorkQueue.freelist_=new goog.async.FreeList(function(){return new goog.async.WorkItem},function(a){a.reset()},goog.async.WorkQueue.DEFAULT_MAX_UNUSED);goog.async.WorkQueue.prototype.add=function(a,b){var c=this.getUnusedItem_();c.set(a,b);this.workTail_?this.workTail_.next=c:(goog.asserts.assert(!this.workHead_),this.workHead_=c);this.workTail_=c};
goog.async.WorkQueue.prototype.remove=function(){var a=null;this.workHead_&&(a=this.workHead_,this.workHead_=this.workHead_.next,this.workHead_||(this.workTail_=null),a.next=null);return a};goog.async.WorkQueue.prototype.returnUnused=function(a){goog.async.WorkQueue.freelist_.put(a)};goog.async.WorkQueue.prototype.getUnusedItem_=function(){return goog.async.WorkQueue.freelist_.get()};goog.async.WorkItem=function(){this.next=this.scope=this.fn=null};
goog.async.WorkItem.prototype.set=function(a,b){this.fn=a;this.scope=b;this.next=null};goog.async.WorkItem.prototype.reset=function(){this.next=this.scope=this.fn=null};goog.debug.entryPointRegistry={};goog.debug.EntryPointMonitor=function(){};goog.debug.entryPointRegistry.refList_=[];goog.debug.entryPointRegistry.monitors_=[];goog.debug.entryPointRegistry.monitorsMayExist_=!1;goog.debug.entryPointRegistry.register=function(a){goog.debug.entryPointRegistry.refList_[goog.debug.entryPointRegistry.refList_.length]=a;if(goog.debug.entryPointRegistry.monitorsMayExist_)for(var b=goog.debug.entryPointRegistry.monitors_,c=0;c<b.length;c++)a(goog.bind(b[c].wrap,b[c]))};
goog.debug.entryPointRegistry.monitorAll=function(a){goog.debug.entryPointRegistry.monitorsMayExist_=!0;for(var b=goog.bind(a.wrap,a),c=0;c<goog.debug.entryPointRegistry.refList_.length;c++)goog.debug.entryPointRegistry.refList_[c](b);goog.debug.entryPointRegistry.monitors_.push(a)};
goog.debug.entryPointRegistry.unmonitorAllIfPossible=function(a){var b=goog.debug.entryPointRegistry.monitors_;goog.asserts.assert(a==b[b.length-1],"Only the most recent monitor can be unwrapped.");a=goog.bind(a.unwrap,a);for(var c=0;c<goog.debug.entryPointRegistry.refList_.length;c++)goog.debug.entryPointRegistry.refList_[c](a);b.length--};goog.dom.TagName={A:"A",ABBR:"ABBR",ACRONYM:"ACRONYM",ADDRESS:"ADDRESS",APPLET:"APPLET",AREA:"AREA",ARTICLE:"ARTICLE",ASIDE:"ASIDE",AUDIO:"AUDIO",B:"B",BASE:"BASE",BASEFONT:"BASEFONT",BDI:"BDI",BDO:"BDO",BIG:"BIG",BLOCKQUOTE:"BLOCKQUOTE",BODY:"BODY",BR:"BR",BUTTON:"BUTTON",CANVAS:"CANVAS",CAPTION:"CAPTION",CENTER:"CENTER",CITE:"CITE",CODE:"CODE",COL:"COL",COLGROUP:"COLGROUP",COMMAND:"COMMAND",DATA:"DATA",DATALIST:"DATALIST",DD:"DD",DEL:"DEL",DETAILS:"DETAILS",DFN:"DFN",DIALOG:"DIALOG",DIR:"DIR",DIV:"DIV",
DL:"DL",DT:"DT",EM:"EM",EMBED:"EMBED",FIELDSET:"FIELDSET",FIGCAPTION:"FIGCAPTION",FIGURE:"FIGURE",FONT:"FONT",FOOTER:"FOOTER",FORM:"FORM",FRAME:"FRAME",FRAMESET:"FRAMESET",H1:"H1",H2:"H2",H3:"H3",H4:"H4",H5:"H5",H6:"H6",HEAD:"HEAD",HEADER:"HEADER",HGROUP:"HGROUP",HR:"HR",HTML:"HTML",I:"I",IFRAME:"IFRAME",IMG:"IMG",INPUT:"INPUT",INS:"INS",ISINDEX:"ISINDEX",KBD:"KBD",KEYGEN:"KEYGEN",LABEL:"LABEL",LEGEND:"LEGEND",LI:"LI",LINK:"LINK",MAP:"MAP",MARK:"MARK",MATH:"MATH",MENU:"MENU",META:"META",METER:"METER",
NAV:"NAV",NOFRAMES:"NOFRAMES",NOSCRIPT:"NOSCRIPT",OBJECT:"OBJECT",OL:"OL",OPTGROUP:"OPTGROUP",OPTION:"OPTION",OUTPUT:"OUTPUT",P:"P",PARAM:"PARAM",PRE:"PRE",PROGRESS:"PROGRESS",Q:"Q",RP:"RP",RT:"RT",RUBY:"RUBY",S:"S",SAMP:"SAMP",SCRIPT:"SCRIPT",SECTION:"SECTION",SELECT:"SELECT",SMALL:"SMALL",SOURCE:"SOURCE",SPAN:"SPAN",STRIKE:"STRIKE",STRONG:"STRONG",STYLE:"STYLE",SUB:"SUB",SUMMARY:"SUMMARY",SUP:"SUP",SVG:"SVG",TABLE:"TABLE",TBODY:"TBODY",TD:"TD",TEMPLATE:"TEMPLATE",TEXTAREA:"TEXTAREA",TFOOT:"TFOOT",
TH:"TH",THEAD:"THEAD",TIME:"TIME",TITLE:"TITLE",TR:"TR",TRACK:"TRACK",TT:"TT",U:"U",UL:"UL",VAR:"VAR",VIDEO:"VIDEO",WBR:"WBR"};goog.functions={};goog.functions.constant=function(a){return function(){return a}};goog.functions.FALSE=goog.functions.constant(!1);goog.functions.TRUE=goog.functions.constant(!0);goog.functions.NULL=goog.functions.constant(null);goog.functions.identity=function(a,b){return a};goog.functions.error=function(a){return function(){throw Error(a);}};goog.functions.fail=function(a){return function(){throw a;}};
goog.functions.lock=function(a,b){b=b||0;return function(){return a.apply(this,Array.prototype.slice.call(arguments,0,b))}};goog.functions.nth=function(a){return function(){return arguments[a]}};goog.functions.partialRight=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var b=Array.prototype.slice.call(arguments);b.push.apply(b,c);return a.apply(this,b)}};goog.functions.withReturnValue=function(a,b){return goog.functions.sequence(a,goog.functions.constant(b))};
goog.functions.equalTo=function(a,b){return function(c){return b?a==c:a===c}};goog.functions.compose=function(a,b){var c=arguments,d=c.length;return function(){var a;d&&(a=c[d-1].apply(this,arguments));for(var b=d-2;0<=b;b--)a=c[b].call(this,a);return a}};goog.functions.sequence=function(a){var b=arguments,c=b.length;return function(){for(var a,e=0;e<c;e++)a=b[e].apply(this,arguments);return a}};
goog.functions.and=function(a){var b=arguments,c=b.length;return function(){for(var a=0;a<c;a++)if(!b[a].apply(this,arguments))return!1;return!0}};goog.functions.or=function(a){var b=arguments,c=b.length;return function(){for(var a=0;a<c;a++)if(b[a].apply(this,arguments))return!0;return!1}};goog.functions.not=function(a){return function(){return!a.apply(this,arguments)}};
goog.functions.create=function(a,b){var c=function(){};c.prototype=a.prototype;c=new c;a.apply(c,Array.prototype.slice.call(arguments,1));return c};goog.functions.CACHE_RETURN_VALUE=!0;goog.functions.cacheReturnValue=function(a){var b=!1,c;return function(){if(!goog.functions.CACHE_RETURN_VALUE)return a();b||(c=a(),b=!0);return c}};goog.functions.once=function(a){var b=a;return function(){if(b){var a=b;b=null;a()}}};
goog.functions.debounce=function(a,b,c){c&&(a=goog.bind(a,c));var d=null;return function(c){goog.global.clearTimeout(d);var f=arguments;d=goog.global.setTimeout(function(){a.apply(null,f)},b)}};goog.functions.throttle=function(a,b,c){c&&(a=goog.bind(a,c));var d=null,e=!1,f=[],g=function(){d=null;e&&(e=!1,h())},h=function(){d=goog.global.setTimeout(g,b);a.apply(null,f)};return function(a){f=arguments;d?e=!0:h()}};goog.async.throwException=function(a){goog.global.setTimeout(function(){throw a;},0)};goog.async.nextTick=function(a,b,c){var d=a;b&&(d=goog.bind(a,b));d=goog.async.nextTick.wrapCallback_(d);goog.isFunction(goog.global.setImmediate)&&(c||goog.async.nextTick.useSetImmediate_())?goog.global.setImmediate(d):(goog.async.nextTick.setImmediate_||(goog.async.nextTick.setImmediate_=goog.async.nextTick.getSetImmediateEmulator_()),goog.async.nextTick.setImmediate_(d))};
goog.async.nextTick.useSetImmediate_=function(){return goog.global.Window&&goog.global.Window.prototype&&!goog.labs.userAgent.browser.isEdge()&&goog.global.Window.prototype.setImmediate==goog.global.setImmediate?!1:!0};
goog.async.nextTick.getSetImmediateEmulator_=function(){var a=goog.global.MessageChannel;"undefined"===typeof a&&"undefined"!==typeof window&&window.postMessage&&window.addEventListener&&!goog.labs.userAgent.engine.isPresto()&&(a=function(){var a=document.createElement("IFRAME");a.style.display="none";a.src="";document.documentElement.appendChild(a);var b=a.contentWindow,a=b.document;a.open();a.write("");a.close();var c="callImmediate"+Math.random(),d="file:"==b.location.protocol?"*":b.location.protocol+
"//"+b.location.host,a=goog.bind(function(a){if(("*"==d||a.origin==d)&&a.data==c)this.port1.onmessage()},this);b.addEventListener("message",a,!1);this.port1={};this.port2={postMessage:function(){b.postMessage(c,d)}}});if("undefined"!==typeof a&&!goog.labs.userAgent.browser.isIE()){var b=new a,c={},d=c;b.port1.onmessage=function(){if(goog.isDef(c.next)){c=c.next;var a=c.cb;c.cb=null;a()}};return function(a){d.next={cb:a};d=d.next;b.port2.postMessage(0)}}return"undefined"!==typeof document&&"onreadystatechange"in
document.createElement("SCRIPT")?function(a){var b=document.createElement("SCRIPT");b.onreadystatechange=function(){b.onreadystatechange=null;b.parentNode.removeChild(b);b=null;a();a=null};document.documentElement.appendChild(b)}:function(a){goog.global.setTimeout(a,0)}};goog.async.nextTick.wrapCallback_=goog.functions.identity;goog.debug.entryPointRegistry.register(function(a){goog.async.nextTick.wrapCallback_=a});goog.async.run=function(a,b){goog.async.run.schedule_||goog.async.run.initializeRunner_();goog.async.run.workQueueScheduled_||(goog.async.run.schedule_(),goog.async.run.workQueueScheduled_=!0);goog.async.run.workQueue_.add(a,b)};goog.async.run.initializeRunner_=function(){if(goog.global.Promise&&goog.global.Promise.resolve){var a=goog.global.Promise.resolve(void 0);goog.async.run.schedule_=function(){a.then(goog.async.run.processWorkQueue)}}else goog.async.run.schedule_=function(){goog.async.nextTick(goog.async.run.processWorkQueue)}};
goog.async.run.forceNextTick=function(a){goog.async.run.schedule_=function(){goog.async.nextTick(goog.async.run.processWorkQueue);a&&a(goog.async.run.processWorkQueue)}};goog.async.run.workQueueScheduled_=!1;goog.async.run.workQueue_=new goog.async.WorkQueue;goog.DEBUG&&(goog.async.run.resetQueue=function(){goog.async.run.workQueueScheduled_=!1;goog.async.run.workQueue_=new goog.async.WorkQueue});
goog.async.run.processWorkQueue=function(){for(var a;a=goog.async.run.workQueue_.remove();){try{a.fn.call(a.scope)}catch(b){goog.async.throwException(b)}goog.async.run.workQueue_.returnUnused(a)}goog.async.run.workQueueScheduled_=!1};goog.promise={};goog.promise.Resolver=function(){};goog.Promise=function(a,b){this.state_=goog.Promise.State_.PENDING;this.result_=void 0;this.callbackEntriesTail_=this.callbackEntries_=this.parent_=null;this.executing_=!1;0<goog.Promise.UNHANDLED_REJECTION_DELAY?this.unhandledRejectionId_=0:0==goog.Promise.UNHANDLED_REJECTION_DELAY&&(this.hadUnhandledRejection_=!1);goog.Promise.LONG_STACK_TRACES&&(this.stack_=[],this.addStackTrace_(Error("created")),this.currentStep_=0);if(a!=goog.nullFunction)try{var c=this;a.call(b,function(a){c.resolve_(goog.Promise.State_.FULFILLED,
a)},function(a){if(goog.DEBUG&&!(a instanceof goog.Promise.CancellationError))try{if(a instanceof Error)throw a;throw Error("Promise rejected.");}catch(b){}c.resolve_(goog.Promise.State_.REJECTED,a)})}catch(d){this.resolve_(goog.Promise.State_.REJECTED,d)}};goog.Promise.LONG_STACK_TRACES=!1;goog.Promise.UNHANDLED_REJECTION_DELAY=0;goog.Promise.State_={PENDING:0,BLOCKED:1,FULFILLED:2,REJECTED:3};
goog.Promise.CallbackEntry_=function(){this.next=this.context=this.onRejected=this.onFulfilled=this.child=null;this.always=!1};goog.Promise.CallbackEntry_.prototype.reset=function(){this.context=this.onRejected=this.onFulfilled=this.child=null;this.always=!1};goog.Promise.DEFAULT_MAX_UNUSED=100;goog.Promise.freelist_=new goog.async.FreeList(function(){return new goog.Promise.CallbackEntry_},function(a){a.reset()},goog.Promise.DEFAULT_MAX_UNUSED);
goog.Promise.getCallbackEntry_=function(a,b,c){var d=goog.Promise.freelist_.get();d.onFulfilled=a;d.onRejected=b;d.context=c;return d};goog.Promise.returnEntry_=function(a){goog.Promise.freelist_.put(a)};goog.Promise.resolve=function(a){if(a instanceof goog.Promise)return a;var b=new goog.Promise(goog.nullFunction);b.resolve_(goog.Promise.State_.FULFILLED,a);return b};goog.Promise.reject=function(a){return new goog.Promise(function(b,c){c(a)})};
goog.Promise.resolveThen_=function(a,b,c){goog.Promise.maybeThen_(a,b,c,null)||goog.async.run(goog.partial(b,a))};goog.Promise.race=function(a){return new goog.Promise(function(b,c){a.length||b(void 0);for(var d=0,e;d<a.length;d++)e=a[d],goog.Promise.resolveThen_(e,b,c)})};
goog.Promise.all=function(a){return new goog.Promise(function(b,c){var d=a.length,e=[];if(d)for(var f=function(a,c){d--;e[a]=c;0==d&&b(e)},g=function(a){c(a)},h=0,k;h<a.length;h++)k=a[h],goog.Promise.resolveThen_(k,goog.partial(f,h),g);else b(e)})};
goog.Promise.allSettled=function(a){return new goog.Promise(function(b,c){var d=a.length,e=[];if(d)for(var f=function(a,c,f){d--;e[a]=c?{fulfilled:!0,value:f}:{fulfilled:!1,reason:f};0==d&&b(e)},g=0,h;g<a.length;g++)h=a[g],goog.Promise.resolveThen_(h,goog.partial(f,g,!0),goog.partial(f,g,!1));else b(e)})};
goog.Promise.firstFulfilled=function(a){return new goog.Promise(function(b,c){var d=a.length,e=[];if(d)for(var f=function(a){b(a)},g=function(a,b){d--;e[a]=b;0==d&&c(e)},h=0,k;h<a.length;h++)k=a[h],goog.Promise.resolveThen_(k,f,goog.partial(g,h));else b(void 0)})};goog.Promise.withResolver=function(){var a,b,c=new goog.Promise(function(c,e){a=c;b=e});return new goog.Promise.Resolver_(c,a,b)};
goog.Promise.prototype.then=function(a,b,c){null!=a&&goog.asserts.assertFunction(a,"opt_onFulfilled should be a function.");null!=b&&goog.asserts.assertFunction(b,"opt_onRejected should be a function. Did you pass opt_context as the second argument instead of the third?");goog.Promise.LONG_STACK_TRACES&&this.addStackTrace_(Error("then"));return this.addChildPromise_(goog.isFunction(a)?a:null,goog.isFunction(b)?b:null,c)};goog.Thenable.addImplementation(goog.Promise);
goog.Promise.prototype.thenVoid=function(a,b,c){null!=a&&goog.asserts.assertFunction(a,"opt_onFulfilled should be a function.");null!=b&&goog.asserts.assertFunction(b,"opt_onRejected should be a function. Did you pass opt_context as the second argument instead of the third?");goog.Promise.LONG_STACK_TRACES&&this.addStackTrace_(Error("then"));this.addCallbackEntry_(goog.Promise.getCallbackEntry_(a||goog.nullFunction,b||null,c))};
goog.Promise.prototype.thenAlways=function(a,b){goog.Promise.LONG_STACK_TRACES&&this.addStackTrace_(Error("thenAlways"));var c=goog.Promise.getCallbackEntry_(a,a,b);c.always=!0;this.addCallbackEntry_(c);return this};goog.Promise.prototype.thenCatch=function(a,b){goog.Promise.LONG_STACK_TRACES&&this.addStackTrace_(Error("thenCatch"));return this.addChildPromise_(null,a,b)};
goog.Promise.prototype.cancel=function(a){this.state_==goog.Promise.State_.PENDING&&goog.async.run(function(){var b=new goog.Promise.CancellationError(a);this.cancelInternal_(b)},this)};goog.Promise.prototype.cancelInternal_=function(a){this.state_==goog.Promise.State_.PENDING&&(this.parent_?(this.parent_.cancelChild_(this,a),this.parent_=null):this.resolve_(goog.Promise.State_.REJECTED,a))};
goog.Promise.prototype.cancelChild_=function(a,b){if(this.callbackEntries_){for(var c=0,d=null,e=null,f=this.callbackEntries_;f&&(f.always||(c++,f.child==a&&(d=f),!(d&&1<c)));f=f.next)d||(e=f);d&&(this.state_==goog.Promise.State_.PENDING&&1==c?this.cancelInternal_(b):(e?this.removeEntryAfter_(e):this.popEntry_(),this.executeCallback_(d,goog.Promise.State_.REJECTED,b)))}};
goog.Promise.prototype.addCallbackEntry_=function(a){this.hasEntry_()||this.state_!=goog.Promise.State_.FULFILLED&&this.state_!=goog.Promise.State_.REJECTED||this.scheduleCallbacks_();this.queueEntry_(a)};
goog.Promise.prototype.addChildPromise_=function(a,b,c){var d=goog.Promise.getCallbackEntry_(null,null,null);d.child=new goog.Promise(function(e,f){d.onFulfilled=a?function(b){try{var d=a.call(c,b);e(d)}catch(k){f(k)}}:e;d.onRejected=b?function(a){try{var d=b.call(c,a);!goog.isDef(d)&&a instanceof goog.Promise.CancellationError?f(a):e(d)}catch(k){f(k)}}:f});d.child.parent_=this;this.addCallbackEntry_(d);return d.child};
goog.Promise.prototype.unblockAndFulfill_=function(a){goog.asserts.assert(this.state_==goog.Promise.State_.BLOCKED);this.state_=goog.Promise.State_.PENDING;this.resolve_(goog.Promise.State_.FULFILLED,a)};goog.Promise.prototype.unblockAndReject_=function(a){goog.asserts.assert(this.state_==goog.Promise.State_.BLOCKED);this.state_=goog.Promise.State_.PENDING;this.resolve_(goog.Promise.State_.REJECTED,a)};
goog.Promise.prototype.resolve_=function(a,b){this.state_==goog.Promise.State_.PENDING&&(this===b&&(a=goog.Promise.State_.REJECTED,b=new TypeError("Promise cannot resolve to itself")),this.state_=goog.Promise.State_.BLOCKED,goog.Promise.maybeThen_(b,this.unblockAndFulfill_,this.unblockAndReject_,this)||(this.result_=b,this.state_=a,this.parent_=null,this.scheduleCallbacks_(),a!=goog.Promise.State_.REJECTED||b instanceof goog.Promise.CancellationError||goog.Promise.addUnhandledRejection_(this,b)))};
goog.Promise.maybeThen_=function(a,b,c,d){if(a instanceof goog.Promise)return a.thenVoid(b,c,d),!0;if(goog.Thenable.isImplementedBy(a))return a.then(b,c,d),!0;if(goog.isObject(a))try{var e=a.then;if(goog.isFunction(e))return goog.Promise.tryThen_(a,e,b,c,d),!0}catch(f){return c.call(d,f),!0}return!1};goog.Promise.tryThen_=function(a,b,c,d,e){var f=!1,g=function(a){f||(f=!0,c.call(e,a))},h=function(a){f||(f=!0,d.call(e,a))};try{b.call(a,g,h)}catch(k){h(k)}};
goog.Promise.prototype.scheduleCallbacks_=function(){this.executing_||(this.executing_=!0,goog.async.run(this.executeCallbacks_,this))};goog.Promise.prototype.hasEntry_=function(){return!!this.callbackEntries_};goog.Promise.prototype.queueEntry_=function(a){goog.asserts.assert(null!=a.onFulfilled);this.callbackEntriesTail_?this.callbackEntriesTail_.next=a:this.callbackEntries_=a;this.callbackEntriesTail_=a};
goog.Promise.prototype.popEntry_=function(){var a=null;this.callbackEntries_&&(a=this.callbackEntries_,this.callbackEntries_=a.next,a.next=null);this.callbackEntries_||(this.callbackEntriesTail_=null);null!=a&&goog.asserts.assert(null!=a.onFulfilled);return a};goog.Promise.prototype.removeEntryAfter_=function(a){goog.asserts.assert(this.callbackEntries_);goog.asserts.assert(null!=a);a.next==this.callbackEntriesTail_&&(this.callbackEntriesTail_=a);a.next=a.next.next};
goog.Promise.prototype.executeCallbacks_=function(){for(var a;a=this.popEntry_();)goog.Promise.LONG_STACK_TRACES&&this.currentStep_++,this.executeCallback_(a,this.state_,this.result_);this.executing_=!1};
goog.Promise.prototype.executeCallback_=function(a,b,c){b==goog.Promise.State_.REJECTED&&a.onRejected&&!a.always&&this.removeUnhandledRejection_();if(a.child)a.child.parent_=null,goog.Promise.invokeCallback_(a,b,c);else try{a.always?a.onFulfilled.call(a.context):goog.Promise.invokeCallback_(a,b,c)}catch(d){goog.Promise.handleRejection_.call(null,d)}goog.Promise.returnEntry_(a)};
goog.Promise.invokeCallback_=function(a,b,c){b==goog.Promise.State_.FULFILLED?a.onFulfilled.call(a.context,c):a.onRejected&&a.onRejected.call(a.context,c)};goog.Promise.prototype.addStackTrace_=function(a){if(goog.Promise.LONG_STACK_TRACES&&goog.isString(a.stack)){var b=a.stack.split("\n",4)[3];a=a.message;a+=Array(11-a.length).join(" ");this.stack_.push(a+b)}};
goog.Promise.prototype.appendLongStack_=function(a){if(goog.Promise.LONG_STACK_TRACES&&a&&goog.isString(a.stack)&&this.stack_.length){for(var b=["Promise trace:"],c=this;c;c=c.parent_){for(var d=this.currentStep_;0<=d;d--)b.push(c.stack_[d]);b.push("Value: ["+(c.state_==goog.Promise.State_.REJECTED?"REJECTED":"FULFILLED")+"] <"+String(c.result_)+">")}a.stack+="\n\n"+b.join("\n")}};
goog.Promise.prototype.removeUnhandledRejection_=function(){if(0<goog.Promise.UNHANDLED_REJECTION_DELAY)for(var a=this;a&&a.unhandledRejectionId_;a=a.parent_)goog.global.clearTimeout(a.unhandledRejectionId_),a.unhandledRejectionId_=0;else if(0==goog.Promise.UNHANDLED_REJECTION_DELAY)for(a=this;a&&a.hadUnhandledRejection_;a=a.parent_)a.hadUnhandledRejection_=!1};
goog.Promise.addUnhandledRejection_=function(a,b){0<goog.Promise.UNHANDLED_REJECTION_DELAY?a.unhandledRejectionId_=goog.global.setTimeout(function(){a.appendLongStack_(b);goog.Promise.handleRejection_.call(null,b)},goog.Promise.UNHANDLED_REJECTION_DELAY):0==goog.Promise.UNHANDLED_REJECTION_DELAY&&(a.hadUnhandledRejection_=!0,goog.async.run(function(){a.hadUnhandledRejection_&&(a.appendLongStack_(b),goog.Promise.handleRejection_.call(null,b))}))};goog.Promise.handleRejection_=goog.async.throwException;
goog.Promise.setUnhandledRejectionHandler=function(a){goog.Promise.handleRejection_=a};goog.Promise.CancellationError=function(a){goog.debug.Error.call(this,a)};goog.inherits(goog.Promise.CancellationError,goog.debug.Error);goog.Promise.CancellationError.prototype.name="cancel";goog.Promise.Resolver_=function(a,b,c){this.promise=a;this.resolve=b;this.reject=c};goog.disposable={};goog.disposable.IDisposable=function(){};goog.Disposable=function(){goog.Disposable.MONITORING_MODE!=goog.Disposable.MonitoringMode.OFF&&(goog.Disposable.INCLUDE_STACK_ON_CREATION&&(this.creationStack=Error().stack),goog.Disposable.instances_[goog.getUid(this)]=this);this.disposed_=this.disposed_;this.onDisposeCallbacks_=this.onDisposeCallbacks_};goog.Disposable.MonitoringMode={OFF:0,PERMANENT:1,INTERACTIVE:2};goog.Disposable.MONITORING_MODE=0;goog.Disposable.INCLUDE_STACK_ON_CREATION=!0;goog.Disposable.instances_={};
goog.Disposable.getUndisposedObjects=function(){var a=[],b;for(b in goog.Disposable.instances_)goog.Disposable.instances_.hasOwnProperty(b)&&a.push(goog.Disposable.instances_[Number(b)]);return a};goog.Disposable.clearUndisposedObjects=function(){goog.Disposable.instances_={}};goog.Disposable.prototype.disposed_=!1;goog.Disposable.prototype.isDisposed=function(){return this.disposed_};goog.Disposable.prototype.getDisposed=goog.Disposable.prototype.isDisposed;
goog.Disposable.prototype.dispose=function(){if(!this.disposed_&&(this.disposed_=!0,this.disposeInternal(),goog.Disposable.MONITORING_MODE!=goog.Disposable.MonitoringMode.OFF)){var a=goog.getUid(this);if(goog.Disposable.MONITORING_MODE==goog.Disposable.MonitoringMode.PERMANENT&&!goog.Disposable.instances_.hasOwnProperty(a))throw Error(this+" did not call the goog.Disposable base constructor or was disposed of after a clearUndisposedObjects call");delete goog.Disposable.instances_[a]}};
goog.Disposable.prototype.registerDisposable=function(a){this.addOnDisposeCallback(goog.partial(goog.dispose,a))};goog.Disposable.prototype.addOnDisposeCallback=function(a,b){this.disposed_?goog.isDef(b)?a.call(b):a():(this.onDisposeCallbacks_||(this.onDisposeCallbacks_=[]),this.onDisposeCallbacks_.push(goog.isDef(b)?goog.bind(a,b):a))};goog.Disposable.prototype.disposeInternal=function(){if(this.onDisposeCallbacks_)for(;this.onDisposeCallbacks_.length;)this.onDisposeCallbacks_.shift()()};
goog.Disposable.isDisposed=function(a){return a&&"function"==typeof a.isDisposed?a.isDisposed():!1};goog.dispose=function(a){a&&"function"==typeof a.dispose&&a.dispose()};goog.disposeAll=function(a){for(var b=0,c=arguments.length;b<c;++b){var d=arguments[b];goog.isArrayLike(d)?goog.disposeAll.apply(null,d):goog.dispose(d)}};goog.events={};
goog.events.BrowserFeature={HAS_W3C_BUTTON:!goog.userAgent.IE||goog.userAgent.isDocumentModeOrHigher(9),HAS_W3C_EVENT_SUPPORT:!goog.userAgent.IE||goog.userAgent.isDocumentModeOrHigher(9),SET_KEY_CODE_TO_PREVENT_DEFAULT:goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("9"),HAS_NAVIGATOR_ONLINE_PROPERTY:!goog.userAgent.WEBKIT||goog.userAgent.isVersionOrHigher("528"),HAS_HTML5_NETWORK_EVENT_SUPPORT:goog.userAgent.GECKO&&goog.userAgent.isVersionOrHigher("1.9b")||goog.userAgent.IE&&goog.userAgent.isVersionOrHigher("8")||
goog.userAgent.OPERA&&goog.userAgent.isVersionOrHigher("9.5")||goog.userAgent.WEBKIT&&goog.userAgent.isVersionOrHigher("528"),HTML5_NETWORK_EVENTS_FIRE_ON_BODY:goog.userAgent.GECKO&&!goog.userAgent.isVersionOrHigher("8")||goog.userAgent.IE&&!goog.userAgent.isVersionOrHigher("9"),TOUCH_ENABLED:"ontouchstart"in goog.global||!!(goog.global.document&&document.documentElement&&"ontouchstart"in document.documentElement)||!(!goog.global.navigator||!goog.global.navigator.msMaxTouchPoints)};goog.events.EventId=function(a){this.id=a};goog.events.EventId.prototype.toString=function(){return this.id};goog.events.Event=function(a,b){this.type=a instanceof goog.events.EventId?String(a):a;this.currentTarget=this.target=b;this.defaultPrevented=this.propagationStopped_=!1;this.returnValue_=!0};goog.events.Event.prototype.stopPropagation=function(){this.propagationStopped_=!0};goog.events.Event.prototype.preventDefault=function(){this.defaultPrevented=!0;this.returnValue_=!1};goog.events.Event.stopPropagation=function(a){a.stopPropagation()};goog.events.Event.preventDefault=function(a){a.preventDefault()};goog.events.getVendorPrefixedName_=function(a){return goog.userAgent.WEBKIT?"webkit"+a:goog.userAgent.OPERA?"o"+a.toLowerCase():a.toLowerCase()};
goog.events.EventType={CLICK:"click",RIGHTCLICK:"rightclick",DBLCLICK:"dblclick",MOUSEDOWN:"mousedown",MOUSEUP:"mouseup",MOUSEOVER:"mouseover",MOUSEOUT:"mouseout",MOUSEMOVE:"mousemove",MOUSEENTER:"mouseenter",MOUSELEAVE:"mouseleave",SELECTSTART:"selectstart",WHEEL:"wheel",KEYPRESS:"keypress",KEYDOWN:"keydown",KEYUP:"keyup",BLUR:"blur",FOCUS:"focus",DEACTIVATE:"deactivate",FOCUSIN:goog.userAgent.IE?"focusin":"DOMFocusIn",FOCUSOUT:goog.userAgent.IE?"focusout":"DOMFocusOut",CHANGE:"change",RESET:"reset",
SELECT:"select",SUBMIT:"submit",INPUT:"input",PROPERTYCHANGE:"propertychange",DRAGSTART:"dragstart",DRAG:"drag",DRAGENTER:"dragenter",DRAGOVER:"dragover",DRAGLEAVE:"dragleave",DROP:"drop",DRAGEND:"dragend",TOUCHSTART:"touchstart",TOUCHMOVE:"touchmove",TOUCHEND:"touchend",TOUCHCANCEL:"touchcancel",BEFOREUNLOAD:"beforeunload",CONSOLEMESSAGE:"consolemessage",CONTEXTMENU:"contextmenu",DOMCONTENTLOADED:"DOMContentLoaded",ERROR:"error",HELP:"help",LOAD:"load",LOSECAPTURE:"losecapture",ORIENTATIONCHANGE:"orientationchange",
READYSTATECHANGE:"readystatechange",RESIZE:"resize",SCROLL:"scroll",UNLOAD:"unload",CANPLAY:"canplay",CANPLAYTHROUGH:"canplaythrough",DURATIONCHANGE:"durationchange",EMPTIED:"emptied",ENDED:"ended",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",PAUSE:"pause",PLAY:"play",PLAYING:"playing",RATECHANGE:"ratechange",SEEKED:"seeked",SEEKING:"seeking",STALLED:"stalled",SUSPEND:"suspend",TIMEUPDATE:"timeupdate",VOLUMECHANGE:"volumechange",WAITING:"waiting",HASHCHANGE:"hashchange",PAGEHIDE:"pagehide",
PAGESHOW:"pageshow",POPSTATE:"popstate",COPY:"copy",PASTE:"paste",CUT:"cut",BEFORECOPY:"beforecopy",BEFORECUT:"beforecut",BEFOREPASTE:"beforepaste",ONLINE:"online",OFFLINE:"offline",MESSAGE:"message",CONNECT:"connect",ANIMATIONSTART:goog.events.getVendorPrefixedName_("AnimationStart"),ANIMATIONEND:goog.events.getVendorPrefixedName_("AnimationEnd"),ANIMATIONITERATION:goog.events.getVendorPrefixedName_("AnimationIteration"),TRANSITIONEND:goog.events.getVendorPrefixedName_("TransitionEnd"),POINTERDOWN:"pointerdown",
POINTERUP:"pointerup",POINTERCANCEL:"pointercancel",POINTERMOVE:"pointermove",POINTEROVER:"pointerover",POINTEROUT:"pointerout",POINTERENTER:"pointerenter",POINTERLEAVE:"pointerleave",GOTPOINTERCAPTURE:"gotpointercapture",LOSTPOINTERCAPTURE:"lostpointercapture",MSGESTURECHANGE:"MSGestureChange",MSGESTUREEND:"MSGestureEnd",MSGESTUREHOLD:"MSGestureHold",MSGESTURESTART:"MSGestureStart",MSGESTURETAP:"MSGestureTap",MSGOTPOINTERCAPTURE:"MSGotPointerCapture",MSINERTIASTART:"MSInertiaStart",MSLOSTPOINTERCAPTURE:"MSLostPointerCapture",
MSPOINTERCANCEL:"MSPointerCancel",MSPOINTERDOWN:"MSPointerDown",MSPOINTERENTER:"MSPointerEnter",MSPOINTERHOVER:"MSPointerHover",MSPOINTERLEAVE:"MSPointerLeave",MSPOINTERMOVE:"MSPointerMove",MSPOINTEROUT:"MSPointerOut",MSPOINTEROVER:"MSPointerOver",MSPOINTERUP:"MSPointerUp",TEXT:"text",TEXTINPUT:"textInput",COMPOSITIONSTART:"compositionstart",COMPOSITIONUPDATE:"compositionupdate",COMPOSITIONEND:"compositionend",EXIT:"exit",LOADABORT:"loadabort",LOADCOMMIT:"loadcommit",LOADREDIRECT:"loadredirect",LOADSTART:"loadstart",
LOADSTOP:"loadstop",RESPONSIVE:"responsive",SIZECHANGED:"sizechanged",UNRESPONSIVE:"unresponsive",VISIBILITYCHANGE:"visibilitychange",STORAGE:"storage",DOMSUBTREEMODIFIED:"DOMSubtreeModified",DOMNODEINSERTED:"DOMNodeInserted",DOMNODEREMOVED:"DOMNodeRemoved",DOMNODEREMOVEDFROMDOCUMENT:"DOMNodeRemovedFromDocument",DOMNODEINSERTEDINTODOCUMENT:"DOMNodeInsertedIntoDocument",DOMATTRMODIFIED:"DOMAttrModified",DOMCHARACTERDATAMODIFIED:"DOMCharacterDataModified",BEFOREPRINT:"beforeprint",AFTERPRINT:"afterprint"};goog.reflect={};goog.reflect.object=function(a,b){return b};goog.reflect.objectProperty=function(a,b){return a};goog.reflect.sinkValue=function(a){goog.reflect.sinkValue[" "](a);return a};goog.reflect.sinkValue[" "]=goog.nullFunction;goog.reflect.canAccessProperty=function(a,b){try{return goog.reflect.sinkValue(a[b]),!0}catch(c){}return!1};goog.reflect.cache=function(a,b,c,d){d=d?d(b):b;return Object.prototype.hasOwnProperty.call(a,d)?a[d]:a[d]=c(b)};goog.events.BrowserEvent=function(a,b){goog.events.Event.call(this,a?a.type:"");this.relatedTarget=this.currentTarget=this.target=null;this.charCode=this.keyCode=this.button=this.screenY=this.screenX=this.clientY=this.clientX=this.offsetY=this.offsetX=0;this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1;this.state=null;this.platformModifierKey=!1;this.event_=null;a&&this.init(a,b)};goog.inherits(goog.events.BrowserEvent,goog.events.Event);
goog.events.BrowserEvent.MouseButton={LEFT:0,MIDDLE:1,RIGHT:2};goog.events.BrowserEvent.IEButtonMap=[1,4,2];
goog.events.BrowserEvent.prototype.init=function(a,b){var c=this.type=a.type,d=a.changedTouches?a.changedTouches[0]:null;this.target=a.target||a.srcElement;this.currentTarget=b;var e=a.relatedTarget;e?goog.userAgent.GECKO&&(goog.reflect.canAccessProperty(e,"nodeName")||(e=null)):c==goog.events.EventType.MOUSEOVER?e=a.fromElement:c==goog.events.EventType.MOUSEOUT&&(e=a.toElement);this.relatedTarget=e;goog.isNull(d)?(this.offsetX=goog.userAgent.WEBKIT||void 0!==a.offsetX?a.offsetX:a.layerX,this.offsetY=
goog.userAgent.WEBKIT||void 0!==a.offsetY?a.offsetY:a.layerY,this.clientX=void 0!==a.clientX?a.clientX:a.pageX,this.clientY=void 0!==a.clientY?a.clientY:a.pageY,this.screenX=a.screenX||0,this.screenY=a.screenY||0):(this.clientX=void 0!==d.clientX?d.clientX:d.pageX,this.clientY=void 0!==d.clientY?d.clientY:d.pageY,this.screenX=d.screenX||0,this.screenY=d.screenY||0);this.button=a.button;this.keyCode=a.keyCode||0;this.charCode=a.charCode||("keypress"==c?a.keyCode:0);this.ctrlKey=a.ctrlKey;this.altKey=
a.altKey;this.shiftKey=a.shiftKey;this.metaKey=a.metaKey;this.platformModifierKey=goog.userAgent.MAC?a.metaKey:a.ctrlKey;this.state=a.state;this.event_=a;a.defaultPrevented&&this.preventDefault()};goog.events.BrowserEvent.prototype.isButton=function(a){return goog.events.BrowserFeature.HAS_W3C_BUTTON?this.event_.button==a:"click"==this.type?a==goog.events.BrowserEvent.MouseButton.LEFT:!!(this.event_.button&goog.events.BrowserEvent.IEButtonMap[a])};
goog.events.BrowserEvent.prototype.isMouseActionButton=function(){return this.isButton(goog.events.BrowserEvent.MouseButton.LEFT)&&!(goog.userAgent.WEBKIT&&goog.userAgent.MAC&&this.ctrlKey)};goog.events.BrowserEvent.prototype.stopPropagation=function(){goog.events.BrowserEvent.superClass_.stopPropagation.call(this);this.event_.stopPropagation?this.event_.stopPropagation():this.event_.cancelBubble=!0};
goog.events.BrowserEvent.prototype.preventDefault=function(){goog.events.BrowserEvent.superClass_.preventDefault.call(this);var a=this.event_;if(a.preventDefault)a.preventDefault();else if(a.returnValue=!1,goog.events.BrowserFeature.SET_KEY_CODE_TO_PREVENT_DEFAULT)try{if(a.ctrlKey||112<=a.keyCode&&123>=a.keyCode)a.keyCode=-1}catch(b){}};goog.events.BrowserEvent.prototype.getBrowserEvent=function(){return this.event_};goog.events.Listenable=function(){};goog.events.Listenable.IMPLEMENTED_BY_PROP="closure_listenable_"+(1E6*Math.random()|0);goog.events.Listenable.addImplementation=function(a){a.prototype[goog.events.Listenable.IMPLEMENTED_BY_PROP]=!0};goog.events.Listenable.isImplementedBy=function(a){return!(!a||!a[goog.events.Listenable.IMPLEMENTED_BY_PROP])};goog.events.ListenableKey=function(){};goog.events.ListenableKey.counter_=0;goog.events.ListenableKey.reserveKey=function(){return++goog.events.ListenableKey.counter_};goog.events.Listener=function(a,b,c,d,e,f){goog.events.Listener.ENABLE_MONITORING&&(this.creationStack=Error().stack);this.listener=a;this.proxy=b;this.src=c;this.type=d;this.capture=!!e;this.handler=f;this.key=goog.events.ListenableKey.reserveKey();this.removed=this.callOnce=!1};goog.events.Listener.ENABLE_MONITORING=!1;goog.events.Listener.prototype.markAsRemoved=function(){this.removed=!0;this.handler=this.src=this.proxy=this.listener=null};goog.events.ListenerMap=function(a){this.src=a;this.listeners={};this.typeCount_=0};goog.events.ListenerMap.prototype.getTypeCount=function(){return this.typeCount_};goog.events.ListenerMap.prototype.getListenerCount=function(){var a=0,b;for(b in this.listeners)a+=this.listeners[b].length;return a};
goog.events.ListenerMap.prototype.add=function(a,b,c,d,e){var f=a.toString();a=this.listeners[f];a||(a=this.listeners[f]=[],this.typeCount_++);var g=goog.events.ListenerMap.findListenerIndex_(a,b,d,e);-1<g?(b=a[g],c||(b.callOnce=!1)):(b=new goog.events.Listener(b,null,this.src,f,!!d,e),b.callOnce=c,a.push(b));return b};
goog.events.ListenerMap.prototype.remove=function(a,b,c,d){a=a.toString();if(!(a in this.listeners))return!1;var e=this.listeners[a];b=goog.events.ListenerMap.findListenerIndex_(e,b,c,d);return-1<b?(e[b].markAsRemoved(),goog.array.removeAt(e,b),0==e.length&&(delete this.listeners[a],this.typeCount_--),!0):!1};
goog.events.ListenerMap.prototype.removeByKey=function(a){var b=a.type;if(!(b in this.listeners))return!1;var c=goog.array.remove(this.listeners[b],a);c&&(a.markAsRemoved(),0==this.listeners[b].length&&(delete this.listeners[b],this.typeCount_--));return c};goog.events.ListenerMap.prototype.removeAll=function(a){a=a&&a.toString();var b=0,c;for(c in this.listeners)if(!a||c==a){for(var d=this.listeners[c],e=0;e<d.length;e++)++b,d[e].markAsRemoved();delete this.listeners[c];this.typeCount_--}return b};
goog.events.ListenerMap.prototype.getListeners=function(a,b){var c=this.listeners[a.toString()],d=[];if(c)for(var e=0;e<c.length;++e){var f=c[e];f.capture==b&&d.push(f)}return d};goog.events.ListenerMap.prototype.getListener=function(a,b,c,d){a=this.listeners[a.toString()];var e=-1;a&&(e=goog.events.ListenerMap.findListenerIndex_(a,b,c,d));return-1<e?a[e]:null};
goog.events.ListenerMap.prototype.hasListener=function(a,b){var c=goog.isDef(a),d=c?a.toString():"",e=goog.isDef(b);return goog.object.some(this.listeners,function(a,g){for(var h=0;h<a.length;++h)if(!(c&&a[h].type!=d||e&&a[h].capture!=b))return!0;return!1})};goog.events.ListenerMap.findListenerIndex_=function(a,b,c,d){for(var e=0;e<a.length;++e){var f=a[e];if(!f.removed&&f.listener==b&&f.capture==!!c&&f.handler==d)return e}return-1};goog.events.LISTENER_MAP_PROP_="closure_lm_"+(1E6*Math.random()|0);goog.events.onString_="on";goog.events.onStringMap_={};goog.events.CaptureSimulationMode={OFF_AND_FAIL:0,OFF_AND_SILENT:1,ON:2};goog.events.CAPTURE_SIMULATION_MODE=2;goog.events.listenerCountEstimate_=0;
goog.events.listen=function(a,b,c,d,e){if(goog.isArray(b)){for(var f=0;f<b.length;f++)goog.events.listen(a,b[f],c,d,e);return null}c=goog.events.wrapListener(c);return goog.events.Listenable.isImplementedBy(a)?a.listen(b,c,d,e):goog.events.listen_(a,b,c,!1,d,e)};
goog.events.listen_=function(a,b,c,d,e,f){if(!b)throw Error("Invalid event type");var g=!!e;if(g&&!goog.events.BrowserFeature.HAS_W3C_EVENT_SUPPORT){if(goog.events.CAPTURE_SIMULATION_MODE==goog.events.CaptureSimulationMode.OFF_AND_FAIL)return goog.asserts.fail("Can not register capture listener in IE8-."),null;if(goog.events.CAPTURE_SIMULATION_MODE==goog.events.CaptureSimulationMode.OFF_AND_SILENT)return null}var h=goog.events.getListenerMap_(a);h||(a[goog.events.LISTENER_MAP_PROP_]=h=new goog.events.ListenerMap(a));
c=h.add(b,c,d,e,f);if(c.proxy)return c;d=goog.events.getProxy();c.proxy=d;d.src=a;d.listener=c;if(a.addEventListener)a.addEventListener(b.toString(),d,g);else if(a.attachEvent)a.attachEvent(goog.events.getOnString_(b.toString()),d);else throw Error("addEventListener and attachEvent are unavailable.");goog.events.listenerCountEstimate_++;return c};
goog.events.getProxy=function(){var a=goog.events.handleBrowserEvent_,b=goog.events.BrowserFeature.HAS_W3C_EVENT_SUPPORT?function(c){return a.call(b.src,b.listener,c)}:function(c){c=a.call(b.src,b.listener,c);if(!c)return c};return b};
goog.events.listenOnce=function(a,b,c,d,e){if(goog.isArray(b)){for(var f=0;f<b.length;f++)goog.events.listenOnce(a,b[f],c,d,e);return null}c=goog.events.wrapListener(c);return goog.events.Listenable.isImplementedBy(a)?a.listenOnce(b,c,d,e):goog.events.listen_(a,b,c,!0,d,e)};goog.events.listenWithWrapper=function(a,b,c,d,e){b.listen(a,c,d,e)};
goog.events.unlisten=function(a,b,c,d,e){if(goog.isArray(b)){for(var f=0;f<b.length;f++)goog.events.unlisten(a,b[f],c,d,e);return null}c=goog.events.wrapListener(c);if(goog.events.Listenable.isImplementedBy(a))return a.unlisten(b,c,d,e);if(!a)return!1;d=!!d;if(a=goog.events.getListenerMap_(a))if(b=a.getListener(b,c,d,e))return goog.events.unlistenByKey(b);return!1};
goog.events.unlistenByKey=function(a){if(goog.isNumber(a)||!a||a.removed)return!1;var b=a.src;if(goog.events.Listenable.isImplementedBy(b))return b.unlistenByKey(a);var c=a.type,d=a.proxy;b.removeEventListener?b.removeEventListener(c,d,a.capture):b.detachEvent&&b.detachEvent(goog.events.getOnString_(c),d);goog.events.listenerCountEstimate_--;(c=goog.events.getListenerMap_(b))?(c.removeByKey(a),0==c.getTypeCount()&&(c.src=null,b[goog.events.LISTENER_MAP_PROP_]=null)):a.markAsRemoved();return!0};
goog.events.unlistenWithWrapper=function(a,b,c,d,e){b.unlisten(a,c,d,e)};goog.events.removeAll=function(a,b){if(!a)return 0;if(goog.events.Listenable.isImplementedBy(a))return a.removeAllListeners(b);var c=goog.events.getListenerMap_(a);if(!c)return 0;var d=0,e=b&&b.toString(),f;for(f in c.listeners)if(!e||f==e)for(var g=c.listeners[f].concat(),h=0;h<g.length;++h)goog.events.unlistenByKey(g[h])&&++d;return d};
goog.events.getListeners=function(a,b,c){return goog.events.Listenable.isImplementedBy(a)?a.getListeners(b,c):a?(a=goog.events.getListenerMap_(a))?a.getListeners(b,c):[]:[]};goog.events.getListener=function(a,b,c,d,e){c=goog.events.wrapListener(c);d=!!d;return goog.events.Listenable.isImplementedBy(a)?a.getListener(b,c,d,e):a?(a=goog.events.getListenerMap_(a))?a.getListener(b,c,d,e):null:null};
goog.events.hasListener=function(a,b,c){if(goog.events.Listenable.isImplementedBy(a))return a.hasListener(b,c);a=goog.events.getListenerMap_(a);return!!a&&a.hasListener(b,c)};goog.events.expose=function(a){var b=[],c;for(c in a)a[c]&&a[c].id?b.push(c+" = "+a[c]+" ("+a[c].id+")"):b.push(c+" = "+a[c]);return b.join("\n")};goog.events.getOnString_=function(a){return a in goog.events.onStringMap_?goog.events.onStringMap_[a]:goog.events.onStringMap_[a]=goog.events.onString_+a};
goog.events.fireListeners=function(a,b,c,d){return goog.events.Listenable.isImplementedBy(a)?a.fireListeners(b,c,d):goog.events.fireListeners_(a,b,c,d)};goog.events.fireListeners_=function(a,b,c,d){var e=!0;if(a=goog.events.getListenerMap_(a))if(b=a.listeners[b.toString()])for(b=b.concat(),a=0;a<b.length;a++){var f=b[a];f&&f.capture==c&&!f.removed&&(f=goog.events.fireListener(f,d),e=e&&!1!==f)}return e};
goog.events.fireListener=function(a,b){var c=a.listener,d=a.handler||a.src;a.callOnce&&goog.events.unlistenByKey(a);return c.call(d,b)};goog.events.getTotalListenerCount=function(){return goog.events.listenerCountEstimate_};goog.events.dispatchEvent=function(a,b){goog.asserts.assert(goog.events.Listenable.isImplementedBy(a),"Can not use goog.events.dispatchEvent with non-goog.events.Listenable instance.");return a.dispatchEvent(b)};
goog.events.protectBrowserEventEntryPoint=function(a){goog.events.handleBrowserEvent_=a.protectEntryPoint(goog.events.handleBrowserEvent_)};
goog.events.handleBrowserEvent_=function(a,b){if(a.removed)return!0;if(!goog.events.BrowserFeature.HAS_W3C_EVENT_SUPPORT){var c=b||goog.getObjectByName("window.event"),d=new goog.events.BrowserEvent(c,this),e=!0;if(goog.events.CAPTURE_SIMULATION_MODE==goog.events.CaptureSimulationMode.ON){if(!goog.events.isMarkedIeEvent_(c)){goog.events.markIeEvent_(c);for(var c=[],f=d.currentTarget;f;f=f.parentNode)c.push(f);for(var f=a.type,g=c.length-1;!d.propagationStopped_&&0<=g;g--){d.currentTarget=c[g];var h=
goog.events.fireListeners_(c[g],f,!0,d),e=e&&h}for(g=0;!d.propagationStopped_&&g<c.length;g++)d.currentTarget=c[g],h=goog.events.fireListeners_(c[g],f,!1,d),e=e&&h}}else e=goog.events.fireListener(a,d);return e}return goog.events.fireListener(a,new goog.events.BrowserEvent(b,this))};goog.events.markIeEvent_=function(a){var b=!1;if(0==a.keyCode)try{a.keyCode=-1;return}catch(c){b=!0}if(b||void 0==a.returnValue)a.returnValue=!0};goog.events.isMarkedIeEvent_=function(a){return 0>a.keyCode||void 0!=a.returnValue};
goog.events.uniqueIdCounter_=0;goog.events.getUniqueId=function(a){return a+"_"+goog.events.uniqueIdCounter_++};goog.events.getListenerMap_=function(a){a=a[goog.events.LISTENER_MAP_PROP_];return a instanceof goog.events.ListenerMap?a:null};goog.events.LISTENER_WRAPPER_PROP_="__closure_events_fn_"+(1E9*Math.random()>>>0);
goog.events.wrapListener=function(a){goog.asserts.assert(a,"Listener can not be null.");if(goog.isFunction(a))return a;goog.asserts.assert(a.handleEvent,"An object listener must have handleEvent method.");a[goog.events.LISTENER_WRAPPER_PROP_]||(a[goog.events.LISTENER_WRAPPER_PROP_]=function(b){return a.handleEvent(b)});return a[goog.events.LISTENER_WRAPPER_PROP_]};goog.debug.entryPointRegistry.register(function(a){goog.events.handleBrowserEvent_=a(goog.events.handleBrowserEvent_)});goog.events.EventTarget=function(){goog.Disposable.call(this);this.eventTargetListeners_=new goog.events.ListenerMap(this);this.actualEventTarget_=this;this.parentEventTarget_=null};goog.inherits(goog.events.EventTarget,goog.Disposable);goog.events.Listenable.addImplementation(goog.events.EventTarget);goog.events.EventTarget.MAX_ANCESTORS_=1E3;goog.events.EventTarget.prototype.getParentEventTarget=function(){return this.parentEventTarget_};
goog.events.EventTarget.prototype.setParentEventTarget=function(a){this.parentEventTarget_=a};goog.events.EventTarget.prototype.addEventListener=function(a,b,c,d){goog.events.listen(this,a,b,c,d)};goog.events.EventTarget.prototype.removeEventListener=function(a,b,c,d){goog.events.unlisten(this,a,b,c,d)};
goog.events.EventTarget.prototype.dispatchEvent=function(a){this.assertInitialized_();var b,c=this.getParentEventTarget();if(c){b=[];for(var d=1;c;c=c.getParentEventTarget())b.push(c),goog.asserts.assert(++d<goog.events.EventTarget.MAX_ANCESTORS_,"infinite loop")}return goog.events.EventTarget.dispatchEventInternal_(this.actualEventTarget_,a,b)};
goog.events.EventTarget.prototype.disposeInternal=function(){goog.events.EventTarget.superClass_.disposeInternal.call(this);this.removeAllListeners();this.parentEventTarget_=null};goog.events.EventTarget.prototype.listen=function(a,b,c,d){this.assertInitialized_();return this.eventTargetListeners_.add(String(a),b,!1,c,d)};goog.events.EventTarget.prototype.listenOnce=function(a,b,c,d){return this.eventTargetListeners_.add(String(a),b,!0,c,d)};
goog.events.EventTarget.prototype.unlisten=function(a,b,c,d){return this.eventTargetListeners_.remove(String(a),b,c,d)};goog.events.EventTarget.prototype.unlistenByKey=function(a){return this.eventTargetListeners_.removeByKey(a)};goog.events.EventTarget.prototype.removeAllListeners=function(a){return this.eventTargetListeners_?this.eventTargetListeners_.removeAll(a):0};
goog.events.EventTarget.prototype.fireListeners=function(a,b,c){a=this.eventTargetListeners_.listeners[String(a)];if(!a)return!0;a=a.concat();for(var d=!0,e=0;e<a.length;++e){var f=a[e];if(f&&!f.removed&&f.capture==b){var g=f.listener,h=f.handler||f.src;f.callOnce&&this.unlistenByKey(f);d=!1!==g.call(h,c)&&d}}return d&&0!=c.returnValue_};goog.events.EventTarget.prototype.getListeners=function(a,b){return this.eventTargetListeners_.getListeners(String(a),b)};
goog.events.EventTarget.prototype.getListener=function(a,b,c,d){return this.eventTargetListeners_.getListener(String(a),b,c,d)};goog.events.EventTarget.prototype.hasListener=function(a,b){var c=goog.isDef(a)?String(a):void 0;return this.eventTargetListeners_.hasListener(c,b)};goog.events.EventTarget.prototype.setTargetForTesting=function(a){this.actualEventTarget_=a};goog.events.EventTarget.prototype.assertInitialized_=function(){goog.asserts.assert(this.eventTargetListeners_,"Event target is not initialized. Did you call the superclass (goog.events.EventTarget) constructor?")};
goog.events.EventTarget.dispatchEventInternal_=function(a,b,c){var d=b.type||b;if(goog.isString(b))b=new goog.events.Event(b,a);else if(b instanceof goog.events.Event)b.target=b.target||a;else{var e=b;b=new goog.events.Event(d,a);goog.object.extend(b,e)}var e=!0,f;if(c)for(var g=c.length-1;!b.propagationStopped_&&0<=g;g--)f=b.currentTarget=c[g],e=f.fireListeners(d,!0,b)&&e;b.propagationStopped_||(f=b.currentTarget=a,e=f.fireListeners(d,!0,b)&&e,b.propagationStopped_||(e=f.fireListeners(d,!1,b)&&e));
if(c)for(g=0;!b.propagationStopped_&&g<c.length;g++)f=b.currentTarget=c[g],e=f.fireListeners(d,!1,b)&&e;return e};goog.Timer=function(a,b){goog.events.EventTarget.call(this);this.interval_=a||1;this.timerObject_=b||goog.Timer.defaultTimerObject;this.boundTick_=goog.bind(this.tick_,this);this.last_=goog.now()};goog.inherits(goog.Timer,goog.events.EventTarget);goog.Timer.MAX_TIMEOUT_=2147483647;goog.Timer.INVALID_TIMEOUT_ID_=-1;goog.Timer.prototype.enabled=!1;goog.Timer.defaultTimerObject=goog.global;goog.Timer.intervalScale=.8;goog.Timer.prototype.timer_=null;goog.Timer.prototype.getInterval=function(){return this.interval_};
goog.Timer.prototype.setInterval=function(a){this.interval_=a;this.timer_&&this.enabled?(this.stop(),this.start()):this.timer_&&this.stop()};
goog.Timer.prototype.tick_=function(){if(this.enabled){var a=goog.now()-this.last_;0<a&&a<this.interval_*goog.Timer.intervalScale?this.timer_=this.timerObject_.setTimeout(this.boundTick_,this.interval_-a):(this.timer_&&(this.timerObject_.clearTimeout(this.timer_),this.timer_=null),this.dispatchTick(),this.enabled&&(this.timer_=this.timerObject_.setTimeout(this.boundTick_,this.interval_),this.last_=goog.now()))}};goog.Timer.prototype.dispatchTick=function(){this.dispatchEvent(goog.Timer.TICK)};
goog.Timer.prototype.start=function(){this.enabled=!0;this.timer_||(this.timer_=this.timerObject_.setTimeout(this.boundTick_,this.interval_),this.last_=goog.now())};goog.Timer.prototype.stop=function(){this.enabled=!1;this.timer_&&(this.timerObject_.clearTimeout(this.timer_),this.timer_=null)};goog.Timer.prototype.disposeInternal=function(){goog.Timer.superClass_.disposeInternal.call(this);this.stop();delete this.timerObject_};goog.Timer.TICK="tick";
goog.Timer.callOnce=function(a,b,c){if(goog.isFunction(a))c&&(a=goog.bind(a,c));else if(a&&"function"==typeof a.handleEvent)a=goog.bind(a.handleEvent,a);else throw Error("Invalid listener argument");return Number(b)>goog.Timer.MAX_TIMEOUT_?goog.Timer.INVALID_TIMEOUT_ID_:goog.Timer.defaultTimerObject.setTimeout(a,b||0)};goog.Timer.clear=function(a){goog.Timer.defaultTimerObject.clearTimeout(a)};
goog.Timer.promise=function(a,b){var c=null;return(new goog.Promise(function(d,e){c=goog.Timer.callOnce(function(){d(b)},a);c==goog.Timer.INVALID_TIMEOUT_ID_&&e(Error("Failed to schedule timer."))})).thenCatch(function(a){goog.Timer.clear(c);throw a;})};goog.color={};
goog.color.names={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",
darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",
ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",
lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",
moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",
seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};goog.math={};goog.math.randomInt=function(a){return Math.floor(Math.random()*a)};goog.math.uniformRandom=function(a,b){return a+Math.random()*(b-a)};goog.math.clamp=function(a,b,c){return Math.min(Math.max(a,b),c)};goog.math.modulo=function(a,b){var c=a%b;return 0>c*b?c+b:c};goog.math.lerp=function(a,b,c){return a+c*(b-a)};goog.math.nearlyEquals=function(a,b,c){return Math.abs(a-b)<=(c||1E-6)};goog.math.standardAngle=function(a){return goog.math.modulo(a,360)};
goog.math.standardAngleInRadians=function(a){return goog.math.modulo(a,2*Math.PI)};goog.math.toRadians=function(a){return a*Math.PI/180};goog.math.toDegrees=function(a){return 180*a/Math.PI};goog.math.angleDx=function(a,b){return b*Math.cos(goog.math.toRadians(a))};goog.math.angleDy=function(a,b){return b*Math.sin(goog.math.toRadians(a))};goog.math.angle=function(a,b,c,d){return goog.math.standardAngle(goog.math.toDegrees(Math.atan2(d-b,c-a)))};
goog.math.angleDifference=function(a,b){var c=goog.math.standardAngle(b)-goog.math.standardAngle(a);180<c?c-=360:-180>=c&&(c=360+c);return c};goog.math.sign=Math.sign||function(a){return 0<a?1:0>a?-1:a};
goog.math.longestCommonSubsequence=function(a,b,c,d){c=c||function(a,b){return a==b};d=d||function(b,c){return a[b]};for(var e=a.length,f=b.length,g=[],h=0;h<e+1;h++)g[h]=[],g
gitextract_80_zfnjb/
├── .babelrc
├── .eslintignore
├── .eslintrc
├── .github/
│ ├── pr-labeler.yml
│ └── workflows/
│ ├── build-and-deploy.yml
│ ├── pull-request-workflow.yml
│ └── release.yml
├── .gitignore
├── .prettierrc
├── COPYING
├── Gruntfile.js
├── Jenkinsfile
├── LICENSE
├── NOTICE
├── README-en.md
├── README.md
├── contributing.md
├── example/
│ ├── example.ejs
│ ├── example_mini.ejs
│ └── example_webgl.ejs
├── extern/
│ ├── blockly/
│ │ ├── .ropeproject/
│ │ │ ├── config.py
│ │ │ ├── globalnames
│ │ │ ├── history
│ │ │ └── objectdb
│ │ ├── blockly_compressed.js
│ │ ├── blockly_uncompressed.js
│ │ ├── blocks/
│ │ │ ├── colour.js
│ │ │ ├── lists.js
│ │ │ ├── logic.js
│ │ │ ├── loops.js
│ │ │ ├── math.js
│ │ │ ├── procedures.js
│ │ │ ├── text.js
│ │ │ └── variables.js
│ │ ├── blocks_compressed.js
│ │ ├── build.py
│ │ ├── core/
│ │ │ ├── block.js
│ │ │ ├── block_menu.js
│ │ │ ├── block_svg.js
│ │ │ ├── blockly.js
│ │ │ ├── blocks.js
│ │ │ ├── bubble.js
│ │ │ ├── comment.js
│ │ │ ├── connection-animation.js
│ │ │ ├── connection.js
│ │ │ ├── contextmenu.js
│ │ │ ├── css.js
│ │ │ ├── field.js
│ │ │ ├── field_angle.js
│ │ │ ├── field_checkbox.js
│ │ │ ├── field_colour.js
│ │ │ ├── field_dropdown.js
│ │ │ ├── field_dropdowndynamic.js
│ │ │ ├── field_icon.js
│ │ │ ├── field_image.js
│ │ │ ├── field_keydown_input.js
│ │ │ ├── field_label.js
│ │ │ ├── field_textinput.js
│ │ │ ├── field_variable.js
│ │ │ ├── flyout.js
│ │ │ ├── generator.js
│ │ │ ├── icon.js
│ │ │ ├── inject.js
│ │ │ ├── input.js
│ │ │ ├── msg.js
│ │ │ ├── mutator.js
│ │ │ ├── names.js
│ │ │ ├── procedures.js
│ │ │ ├── realtime-client-utils.js
│ │ │ ├── realtime.js
│ │ │ ├── scrollbar.js
│ │ │ ├── toolbox.js
│ │ │ ├── tooltip.js
│ │ │ ├── trashcan.js
│ │ │ ├── utils.js
│ │ │ ├── variables.js
│ │ │ ├── warning.js
│ │ │ ├── widgetdiv.js
│ │ │ ├── workspace.js
│ │ │ └── xml.js
│ │ ├── dart_compressed.js
│ │ ├── generators/
│ │ │ ├── dart/
│ │ │ │ ├── colour.js
│ │ │ │ ├── lists.js
│ │ │ │ ├── logic.js
│ │ │ │ ├── loops.js
│ │ │ │ ├── math.js
│ │ │ │ ├── procedures.js
│ │ │ │ ├── text.js
│ │ │ │ └── variables.js
│ │ │ ├── dart.js
│ │ │ ├── javascript/
│ │ │ │ ├── colour.js
│ │ │ │ ├── lists.js
│ │ │ │ ├── logic.js
│ │ │ │ ├── loops.js
│ │ │ │ ├── math.js
│ │ │ │ ├── procedures.js
│ │ │ │ ├── text.js
│ │ │ │ └── variables.js
│ │ │ ├── javascript.js
│ │ │ ├── python/
│ │ │ │ ├── colour.js
│ │ │ │ ├── lists.js
│ │ │ │ ├── logic.js
│ │ │ │ ├── loops.js
│ │ │ │ ├── math.js
│ │ │ │ ├── procedures.js
│ │ │ │ ├── text.js
│ │ │ │ └── variables.js
│ │ │ └── python.js
│ │ ├── i18n/
│ │ │ ├── common.py
│ │ │ ├── create_messages.py
│ │ │ ├── dedup_json.py
│ │ │ ├── js_to_json.py
│ │ │ ├── json_to_js.py
│ │ │ ├── status.py
│ │ │ ├── tests.py
│ │ │ └── xliff_to_json.py
│ │ ├── javascript_compressed.js
│ │ ├── media/
│ │ │ ├── click.ogg
│ │ │ ├── delete.ogg
│ │ │ ├── handclosed.cur
│ │ │ └── handopen.cur
│ │ ├── msg/
│ │ │ ├── js/
│ │ │ │ ├── ar.js
│ │ │ │ ├── az-latn.js
│ │ │ │ ├── az.js
│ │ │ │ ├── be-tarask.js
│ │ │ │ ├── br.js
│ │ │ │ ├── ca.js
│ │ │ │ ├── cs.js
│ │ │ │ ├── da.js
│ │ │ │ ├── de.js
│ │ │ │ ├── el.js
│ │ │ │ ├── en.js
│ │ │ │ ├── en_us.js
│ │ │ │ ├── es.js
│ │ │ │ ├── fa.js
│ │ │ │ ├── fi.js
│ │ │ │ ├── fr.js
│ │ │ │ ├── he.js
│ │ │ │ ├── hi.js
│ │ │ │ ├── hu.js
│ │ │ │ ├── ia.js
│ │ │ │ ├── id.js
│ │ │ │ ├── is.js
│ │ │ │ ├── it.js
│ │ │ │ ├── ja.js
│ │ │ │ ├── ko.js
│ │ │ │ ├── lrc.js
│ │ │ │ ├── ms.js
│ │ │ │ ├── nb.js
│ │ │ │ ├── nl.js
│ │ │ │ ├── no.js
│ │ │ │ ├── pl.js
│ │ │ │ ├── pms.js
│ │ │ │ ├── pt-br.js
│ │ │ │ ├── pt.js
│ │ │ │ ├── ro.js
│ │ │ │ ├── ru.js
│ │ │ │ ├── sq.js
│ │ │ │ ├── sr.js
│ │ │ │ ├── sv.js
│ │ │ │ ├── th.js
│ │ │ │ ├── tl.js
│ │ │ │ ├── tr.js
│ │ │ │ ├── uk.js
│ │ │ │ ├── vi.js
│ │ │ │ ├── zh-hans.js
│ │ │ │ └── zh-hant.js
│ │ │ ├── json/
│ │ │ │ ├── ar.json
│ │ │ │ ├── az.json
│ │ │ │ ├── be-tarask.json
│ │ │ │ ├── br.json
│ │ │ │ ├── ca.json
│ │ │ │ ├── cs.json
│ │ │ │ ├── da.json
│ │ │ │ ├── de.json
│ │ │ │ ├── el.json
│ │ │ │ ├── en.json
│ │ │ │ ├── es.json
│ │ │ │ ├── fa.json
│ │ │ │ ├── fi.json
│ │ │ │ ├── fr.json
│ │ │ │ ├── he.json
│ │ │ │ ├── hi.json
│ │ │ │ ├── hu.json
│ │ │ │ ├── ia.json
│ │ │ │ ├── id.json
│ │ │ │ ├── is.json
│ │ │ │ ├── it.json
│ │ │ │ ├── ja.json
│ │ │ │ ├── keys.json
│ │ │ │ ├── ko.json
│ │ │ │ ├── lrc.json
│ │ │ │ ├── ms.json
│ │ │ │ ├── nb.json
│ │ │ │ ├── nl.json
│ │ │ │ ├── pl.json
│ │ │ │ ├── pms.json
│ │ │ │ ├── pt-br.json
│ │ │ │ ├── pt.json
│ │ │ │ ├── qqq.json
│ │ │ │ ├── ro.json
│ │ │ │ ├── ru.json
│ │ │ │ ├── sq.json
│ │ │ │ ├── sr.json
│ │ │ │ ├── sv.json
│ │ │ │ ├── synonyms.json
│ │ │ │ ├── th.json
│ │ │ │ ├── tl.json
│ │ │ │ ├── tr.json
│ │ │ │ ├── uk.json
│ │ │ │ ├── vi.json
│ │ │ │ ├── zh-hans.json
│ │ │ │ └── zh-hant.json
│ │ │ └── messages.js
│ │ ├── python_compressed.js
│ │ └── tests/
│ │ ├── blockly_test.html
│ │ ├── blockly_test.js
│ │ ├── generator_test.js
│ │ ├── generators/
│ │ │ ├── colour.xml
│ │ │ ├── index.html
│ │ │ ├── lists.xml
│ │ │ ├── logic.xml
│ │ │ ├── loops1.xml
│ │ │ ├── loops2.xml
│ │ │ ├── loops3.xml
│ │ │ ├── math.xml
│ │ │ ├── procedures.xml
│ │ │ ├── text.xml
│ │ │ ├── unittest.js
│ │ │ ├── unittest_dart.js
│ │ │ ├── unittest_javascript.js
│ │ │ ├── unittest_python.js
│ │ │ └── variables.xml
│ │ ├── names_test.js
│ │ └── playground.html
│ ├── face-landmarker.worker.js
│ ├── face-landmarker2.worker.js
│ ├── gesture-recognition.worker.js
│ ├── human/
│ │ ├── human.js
│ │ └── models/
│ │ ├── blazeface.json
│ │ ├── emotion.json
│ │ ├── facemesh.json
│ │ └── faceres.json
│ ├── khaiii/
│ │ ├── cnv2hdn.lin
│ │ ├── config.json
│ │ ├── conv.2.fil
│ │ ├── conv.3.fil
│ │ ├── conv.4.fil
│ │ ├── conv.5.fil
│ │ ├── errpatch.len
│ │ ├── errpatch.tri
│ │ ├── errpatch.val
│ │ ├── hdn2tag.lin
│ │ ├── preanal.tri
│ │ ├── preanal.val
│ │ ├── restore.key
│ │ ├── restore.one
│ │ └── restore.val
│ ├── lang/
│ │ ├── code.js
│ │ ├── ebs.js
│ │ ├── en.js
│ │ ├── jp.js
│ │ ├── ko.js
│ │ └── vn.js
│ ├── model/
│ │ ├── face_landmarker.task
│ │ ├── gesture_recognizer.task
│ │ ├── object_detector_lite.tflite
│ │ └── pose_landmarker_lite.task
│ ├── object-detector.worker.js
│ ├── pose-landmarker.worker.js
│ ├── tfjs-backend-wasm-simd.wasm
│ ├── util/
│ │ ├── CanvasInput.js
│ │ ├── CanvasInputOrg.js
│ │ ├── DragDropTouch.js
│ │ ├── filbert.js
│ │ ├── handle.js
│ │ ├── ndgmr.Collision.js
│ │ ├── static.js
│ │ └── static_mini.js
│ ├── vision.worker.js
│ ├── vision_bundle.js
│ └── wasm/
│ ├── vision_wasm_internal.js
│ ├── vision_wasm_internal.wasm
│ ├── vision_wasm_nosimd_internal.js
│ └── vision_wasm_nosimd_internal.wasm
├── images/
│ ├── cursor_eraser.cur
│ ├── handclosed.cur
│ ├── handopen.cur
│ ├── media/
│ │ ├── FlashAudioPlugin.swf
│ │ ├── click.ogg
│ │ ├── delete.ogg
│ │ ├── handclosed.cur
│ │ └── handopen.cur
│ └── sounds/
│ ├── click.ogg
│ └── delete.ogg
├── jsconfig.json
├── karma.conf.js
├── package.json
├── scripts/
│ ├── build.sh
│ ├── build_action.sh
│ ├── deploy.sh
│ └── deploy_action.sh
├── src/
│ ├── class/
│ │ ├── AILearning.js
│ │ ├── AIUtilize.js
│ │ ├── DataTable.js
│ │ ├── Expansion.js
│ │ ├── LiterallycanvasPainter.js
│ │ ├── blockCountViewer.js
│ │ ├── container.js
│ │ ├── dialog.ts
│ │ ├── doneProject.js
│ │ ├── engine.js
│ │ ├── entity.js
│ │ ├── entryModuleLoader.ts
│ │ ├── function.js
│ │ ├── hardware/
│ │ │ ├── bluetoothServices/
│ │ │ │ ├── event-dispatcher.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── promise-queue.ts
│ │ │ │ ├── service-helper.ts
│ │ │ │ └── services/
│ │ │ │ ├── accelerometer.ts
│ │ │ │ ├── button.ts
│ │ │ │ ├── device-information.ts
│ │ │ │ ├── dfu-control.ts
│ │ │ │ ├── event.ts
│ │ │ │ ├── io-pin.ts
│ │ │ │ ├── led.ts
│ │ │ │ ├── magnetometer.ts
│ │ │ │ ├── temperature.ts
│ │ │ │ └── uart.ts
│ │ │ ├── externalProgramLauncher.ts
│ │ │ ├── functions/
│ │ │ │ └── createHardwarePopup.ts
│ │ │ ├── hardwareMonitor.ts
│ │ │ ├── hardwareSocketMessageHandler.ts
│ │ │ ├── webApiConnector.ts
│ │ │ ├── webBluetoothConnector.ts
│ │ │ ├── webSerialConnector.ts
│ │ │ └── webUsbFlasher.ts
│ │ ├── helper.js
│ │ ├── hw.ts
│ │ ├── hw_lite.ts
│ │ ├── intro.ts
│ │ ├── learning/
│ │ │ ├── Chart.js
│ │ │ ├── Cluster.js
│ │ │ ├── DecisionTree.js
│ │ │ ├── ImageLearning.js
│ │ │ ├── InputPopup.js
│ │ │ ├── LearningBase.ts
│ │ │ ├── LearningView.js
│ │ │ ├── LogisticRegression.js
│ │ │ ├── NumberClassification.js
│ │ │ ├── Regression.js
│ │ │ ├── SpeechClassification.js
│ │ │ ├── Svm.js
│ │ │ ├── TextLearning.js
│ │ │ ├── Utils.ts
│ │ │ └── bayes.ts
│ │ ├── maxrect-packer/
│ │ │ ├── abstract_bin.ts
│ │ │ ├── geom/
│ │ │ │ ├── ImageRect.ts
│ │ │ │ └── Rectangle.ts
│ │ │ ├── maxrects_bin.ts
│ │ │ ├── maxrects_packer.ts
│ │ │ └── oversized_element_bin.ts
│ │ ├── object.js
│ │ ├── painter.js
│ │ ├── pdf.ts
│ │ ├── pixi/
│ │ │ ├── atlas/
│ │ │ │ ├── AtlasCanvasViewer.ts
│ │ │ │ ├── EntryTextureOption.ts
│ │ │ │ ├── ISceneTextures.ts
│ │ │ │ ├── PIXIAtlasHelper.ts
│ │ │ │ ├── PIXIAtlasManager.ts
│ │ │ │ ├── PIXIScaleAdaptor.ts
│ │ │ │ ├── SceneBins.ts
│ │ │ │ ├── SceneTextures.ts
│ │ │ │ ├── loader/
│ │ │ │ │ ├── AtlasImageLoader.ts
│ │ │ │ │ └── AtlasImageLoadingInfo.ts
│ │ │ │ ├── model/
│ │ │ │ │ ├── IRawObject.ts
│ │ │ │ │ └── IRawPicture.ts
│ │ │ │ ├── structure/
│ │ │ │ │ ├── PrimitiveMap.ts
│ │ │ │ │ └── PrimitiveSet.ts
│ │ │ │ └── texture/
│ │ │ │ ├── AtlasBaseTexture.ts
│ │ │ │ ├── AtlasTexture.ts
│ │ │ │ ├── EntryBaseTexture.ts
│ │ │ │ ├── EntryTexture.ts
│ │ │ │ └── EntryTextureBase.ts
│ │ │ ├── etc/
│ │ │ │ ├── PIXI-ndgmr.Collision.js
│ │ │ │ ├── PIXIBrushAdaptor.ts
│ │ │ │ ├── PIXICanvasInput.js
│ │ │ │ ├── PIXIPaintAdaptor.ts
│ │ │ │ └── PIXITempStore.ts
│ │ │ ├── handle/
│ │ │ │ ├── PIXIHandle.js
│ │ │ │ └── PIXIHandleEdge.js
│ │ │ ├── helper/
│ │ │ │ ├── PIXIDragHelper.js
│ │ │ │ └── PIXIHelper.ts
│ │ │ ├── init/
│ │ │ │ ├── PIXIBaseAsset.ts
│ │ │ │ ├── PIXIFontLoadHandler.ts
│ │ │ │ └── PIXIGlobal.ts
│ │ │ ├── mesh/
│ │ │ │ └── PIXIH3Plane.js
│ │ │ ├── plugins/
│ │ │ │ ├── PIXIGraphicOverride.js
│ │ │ │ ├── PIXIPixelPerfectInteractionPlugIn.js
│ │ │ │ ├── PIXIShortPropPlugin.js
│ │ │ │ ├── PIXISprite.ts
│ │ │ │ ├── PIXITextMetricsPlugIn.js
│ │ │ │ └── pixiGetChildAt.js
│ │ │ ├── text/
│ │ │ │ ├── PIXIText.js
│ │ │ │ └── PIXITextStyle.ts
│ │ │ └── utils/
│ │ │ ├── AutoFit.ts
│ │ │ ├── TimeoutTimer.ts
│ │ │ └── logs.ts
│ │ ├── playground.js
│ │ ├── popup.js
│ │ ├── popup_helper.ts
│ │ ├── popup_list.js
│ │ ├── project.js
│ │ ├── property_panel.ts
│ │ ├── reporter.js
│ │ ├── scene.js
│ │ ├── sound.ts
│ │ ├── source/
│ │ │ └── DataTableSource.js
│ │ ├── stage.js
│ │ ├── stamp_entity.js
│ │ ├── time_wait.js
│ │ ├── toast.js
│ │ ├── variable/
│ │ │ ├── answerVariable.js
│ │ │ ├── index.js
│ │ │ ├── listVariable.js
│ │ │ ├── slideVariable.js
│ │ │ ├── sttVariable.js
│ │ │ ├── timerVariable.js
│ │ │ └── variable.js
│ │ └── variable_container.js
│ ├── command/
│ │ ├── command.js
│ │ ├── command_util.js
│ │ ├── commander.js
│ │ └── commands/
│ │ ├── block.js
│ │ ├── comment.js
│ │ ├── container.js
│ │ ├── dataTable.js
│ │ ├── engine.js
│ │ ├── function.js
│ │ ├── object.js
│ │ ├── painter.js
│ │ ├── playground.js
│ │ ├── scene.js
│ │ ├── textbox.js
│ │ └── variableContainer.js
│ ├── core/
│ │ ├── collection.js
│ │ ├── db.js
│ │ ├── dom.ts
│ │ ├── event.js
│ │ ├── model.js
│ │ ├── modelClass.ts
│ │ ├── observer.js
│ │ ├── promiseManager.js
│ │ ├── singleInstance.js
│ │ └── svg.js
│ ├── css/
│ │ ├── codemirror_theme.less
│ │ ├── common.less
│ │ ├── components/
│ │ │ ├── block.less
│ │ │ ├── block_menu.less
│ │ │ ├── board.less
│ │ │ ├── console.less
│ │ │ ├── container.less
│ │ │ ├── context_menu.less
│ │ │ ├── curtain.less
│ │ │ ├── engine.less
│ │ │ ├── extensions.less
│ │ │ ├── function.less
│ │ │ ├── global_svg.less
│ │ │ ├── helper.less
│ │ │ ├── hw_monitor.less
│ │ │ ├── object.less
│ │ │ ├── painter.less
│ │ │ ├── pdf.less
│ │ │ ├── playground.less
│ │ │ ├── popup.less
│ │ │ ├── property_panel.less
│ │ │ ├── scene.less
│ │ │ ├── stage.less
│ │ │ ├── state_manager.less
│ │ │ ├── table.less
│ │ │ ├── target_checker.less
│ │ │ ├── textcoding_helper.less
│ │ │ ├── toast.less
│ │ │ ├── tooltip.less
│ │ │ ├── variable_container.less
│ │ │ └── zoomController.less
│ │ ├── entry.less
│ │ ├── minimize.less
│ │ ├── prefix.less
│ │ └── static.less
│ ├── entry.js
│ ├── extensions/
│ │ ├── CloudVariable.js
│ │ ├── dmet.js
│ │ ├── dropper.js
│ │ ├── extension.js
│ │ └── target_checker.js
│ ├── graphicEngine/
│ │ ├── EaselResManager.ts
│ │ ├── FakePIXI.js
│ │ ├── GEDragHelper.ts
│ │ ├── GEHandle.js
│ │ ├── GEHelper.ts
│ │ └── IGEResManager.ts
│ ├── log/
│ │ ├── activity.js
│ │ ├── activityReporter.js
│ │ ├── recorder.js
│ │ ├── state.js
│ │ └── state_manager.js
│ ├── model/
│ │ ├── block_model.js
│ │ ├── block_render_model.js
│ │ ├── box_model.js
│ │ ├── drag_instance.js
│ │ └── thread_model.js
│ ├── parser-no/
│ │ ├── block.js
│ │ ├── js.js
│ │ └── parser.js
│ ├── playground/
│ │ ├── block.js
│ │ ├── block_entry.js
│ │ ├── block_entry_mini.js
│ │ ├── block_menu.ts
│ │ ├── block_menu_scroll.js
│ │ ├── block_view.js
│ │ ├── blocks/
│ │ │ ├── block_ai_learning.js
│ │ │ ├── block_ai_learning_cluster.js
│ │ │ ├── block_ai_learning_decisiontree.js
│ │ │ ├── block_ai_learning_knn.js
│ │ │ ├── block_ai_learning_logistic_regression.js
│ │ │ ├── block_ai_learning_regression.js
│ │ │ ├── block_ai_learning_svm.js
│ │ │ ├── block_ai_utilize_audio.js
│ │ │ ├── block_ai_utilize_face_landmarker.js
│ │ │ ├── block_ai_utilize_gesture_recognition.js
│ │ │ ├── block_ai_utilize_media_pipe.js
│ │ │ ├── block_ai_utilize_object_detector.js
│ │ │ ├── block_ai_utilize_pose_landmarker.js
│ │ │ ├── block_ai_utilize_translate.js
│ │ │ ├── block_ai_utilize_tts.js
│ │ │ ├── block_ai_utilize_video.js
│ │ │ ├── block_analysis.js
│ │ │ ├── block_brush.js
│ │ │ ├── block_calc.js
│ │ │ ├── block_expansion_behaviorconduct_disaster.js
│ │ │ ├── block_expansion_behaviorconduct_lifesafety.js
│ │ │ ├── block_expansion_disasterAlert.js
│ │ │ ├── block_expansion_emergencyActionGuidelines.js
│ │ │ ├── block_expansion_festival.js
│ │ │ ├── block_expansion_weather.js
│ │ │ ├── block_flow.js
│ │ │ ├── block_func.js
│ │ │ ├── block_judgement.js
│ │ │ ├── block_looks.js
│ │ │ ├── block_moving.js
│ │ │ ├── block_sound.js
│ │ │ ├── block_start.js
│ │ │ ├── block_text.js
│ │ │ ├── block_variable.js
│ │ │ ├── hardware/
│ │ │ │ ├── block_0uboard.js
│ │ │ │ ├── block_CloverSEntry1.js
│ │ │ │ ├── block_ITPLE_board.js
│ │ │ │ ├── block_KKMOO.js
│ │ │ │ ├── block_KRC.js
│ │ │ │ ├── block_LineCoding.js
│ │ │ │ ├── block_Lline.js
│ │ │ │ ├── block_RichShield.js
│ │ │ │ ├── block_abilix_Krypton0.js
│ │ │ │ ├── block_aidrone.js
│ │ │ │ ├── block_aidrone_tracking.js
│ │ │ │ ├── block_aiot.js
│ │ │ │ ├── block_aiservo.js
│ │ │ │ ├── block_albert.js
│ │ │ │ ├── block_albert_ai.js
│ │ │ │ ├── block_altino.js
│ │ │ │ ├── block_altino_lite.js
│ │ │ │ ├── block_altino_neo.js
│ │ │ │ ├── block_alux_connect.js
│ │ │ │ ├── block_alux_nemo.js
│ │ │ │ ├── block_alux_technic.js
│ │ │ │ ├── block_ardublock.js
│ │ │ │ ├── block_arduino.js
│ │ │ │ ├── block_arduino_cake.js
│ │ │ │ ├── block_arduino_ext.js
│ │ │ │ ├── block_arduino_nano.js
│ │ │ │ ├── block_armz.js
│ │ │ │ ├── block_asomebot.js
│ │ │ │ ├── block_asomekit.js
│ │ │ │ ├── block_avatarbot.js
│ │ │ │ ├── block_bingles.js
│ │ │ │ ├── block_bitbrick.js
│ │ │ │ ├── block_blacksmith.js
│ │ │ │ ├── block_bridge.js
│ │ │ │ ├── block_brown.js
│ │ │ │ ├── block_byrobot_base.js
│ │ │ │ ├── block_byrobot_controller_3_4.js
│ │ │ │ ├── block_byrobot_controller_4.js
│ │ │ │ ├── block_byrobot_drone_3_10.js
│ │ │ │ ├── block_byrobot_drone_4.js
│ │ │ │ ├── block_byrobot_drone_8.js
│ │ │ │ ├── block_byrobot_dronefighter_controller.js
│ │ │ │ ├── block_byrobot_dronefighter_drive.js
│ │ │ │ ├── block_byrobot_dronefighter_flight.js
│ │ │ │ ├── block_byrobot_petrone_v2_base.js
│ │ │ │ ├── block_byrobot_petrone_v2_controller.js
│ │ │ │ ├── block_byrobot_petrone_v2_drive.js
│ │ │ │ ├── block_byrobot_petrone_v2_flight.js
│ │ │ │ ├── block_c3coding_arduino.js
│ │ │ │ ├── block_castarter_v2.js
│ │ │ │ ├── block_cheese.js
│ │ │ │ ├── block_choco.js
│ │ │ │ ├── block_choco2.js
│ │ │ │ ├── block_chocopi.js
│ │ │ │ ├── block_coalaboard.js
│ │ │ │ ├── block_cobl.js
│ │ │ │ ├── block_coco.js
│ │ │ │ ├── block_coconut.js
│ │ │ │ ├── block_codeino.js
│ │ │ │ ├── block_codestar.js
│ │ │ │ ├── block_codewiz.js
│ │ │ │ ├── block_coding_box.js
│ │ │ │ ├── block_codingmachine.js
│ │ │ │ ├── block_cp_moving.js
│ │ │ │ ├── block_creamo.js
│ │ │ │ ├── block_cremaker_3Dpen.js
│ │ │ │ ├── block_cuboai.js
│ │ │ │ ├── block_cue.js
│ │ │ │ ├── block_dadublock.js
│ │ │ │ ├── block_dalgona.js
│ │ │ │ ├── block_dalgona_basic.js
│ │ │ │ ├── block_dash.js
│ │ │ │ ├── block_davinci.js
│ │ │ │ ├── block_diaboard.js
│ │ │ │ ├── block_dodaland.js
│ │ │ │ ├── block_dplay.js
│ │ │ │ ├── block_eduino.js
│ │ │ │ ├── block_edumaker.js
│ │ │ │ ├── block_elio.js
│ │ │ │ ├── block_etboard.js
│ │ │ │ ├── block_etkit.js
│ │ │ │ ├── block_ev3.js
│ │ │ │ ├── block_exmars_cube.js
│ │ │ │ ├── block_firmtech2.js
│ │ │ │ ├── block_freearduino.js
│ │ │ │ ├── block_freelinker2.js
│ │ │ │ ├── block_funboard.js
│ │ │ │ ├── block_gbot.js
│ │ │ │ ├── block_genirobot.js
│ │ │ │ ├── block_hamster.js
│ │ │ │ ├── block_hamster_s.js
│ │ │ │ ├── block_handino.js
│ │ │ │ ├── block_hasseam.js
│ │ │ │ ├── block_hexaboard.js
│ │ │ │ ├── block_hummingbird.js
│ │ │ │ ├── block_hyact.js
│ │ │ │ ├── block_iCOBOT.js
│ │ │ │ ├── block_iboard.js
│ │ │ │ ├── block_iotsmartfarm.js
│ │ │ │ ├── block_jcboard.js
│ │ │ │ ├── block_jdcode.js
│ │ │ │ ├── block_jdkit.js
│ │ │ │ ├── block_jikko.js
│ │ │ │ ├── block_jikko_basic.js
│ │ │ │ ├── block_jikko_lidoc.js
│ │ │ │ ├── block_jikko_make.js
│ │ │ │ ├── block_jinirobot_aibot.js
│ │ │ │ ├── block_jinirobot_toybot.js
│ │ │ │ ├── block_joystick.js
│ │ │ │ ├── block_kaboino.js
│ │ │ │ ├── block_kaduino.js
│ │ │ │ ├── block_kamibot.js
│ │ │ │ ├── block_kamibotPi.js
│ │ │ │ ├── block_kingcoding.js
│ │ │ │ ├── block_lecoboard.js
│ │ │ │ ├── block_lecoboardAvr.js
│ │ │ │ ├── block_lecoboardAvrBT.js
│ │ │ │ ├── block_littlebits.js
│ │ │ │ ├── block_magkinder.js
│ │ │ │ ├── block_makermate.js
│ │ │ │ ├── block_mechanicblock_controller.js
│ │ │ │ ├── block_mechanicblock_uno.js
│ │ │ │ ├── block_mechanicblock_uno_mini.js
│ │ │ │ ├── block_mechanicblock_uno_s.js
│ │ │ │ ├── block_mechatro.js
│ │ │ │ ├── block_mechatronics_4d.js
│ │ │ │ ├── block_memaker.js
│ │ │ │ ├── block_microbit.js
│ │ │ │ ├── block_microbit2.js
│ │ │ │ ├── block_microbit_ext.js
│ │ │ │ ├── block_mindpiggy.js
│ │ │ │ ├── block_mkboard.js
│ │ │ │ ├── block_modi.js
│ │ │ │ ├── block_mrt.js
│ │ │ │ ├── block_nemoino.js
│ │ │ │ ├── block_neo.js
│ │ │ │ ├── block_neo_cannon.js
│ │ │ │ ├── block_neo_spider.js
│ │ │ │ ├── block_neobot.js
│ │ │ │ ├── block_neobot_game_theme.js
│ │ │ │ ├── block_neobot_purple.js
│ │ │ │ ├── block_neobot_robot_theme.js
│ │ │ │ ├── block_neobot_sensor_theme.js
│ │ │ │ ├── block_neobot_soco.js
│ │ │ │ ├── block_neobot_thinkcar.js
│ │ │ │ ├── block_orange.js
│ │ │ │ ├── block_ozobot.js
│ │ │ │ ├── block_palmkit.js
│ │ │ │ ├── block_pingpong.js
│ │ │ │ ├── block_pingpong_multi.js
│ │ │ │ ├── block_playcode.js
│ │ │ │ ├── block_plrun.js
│ │ │ │ ├── block_robico.js
│ │ │ │ ├── block_robodog.js
│ │ │ │ ├── block_roboid.js
│ │ │ │ ├── block_robolink_codrone_diy.js
│ │ │ │ ├── block_robolink_codrone_edu.js
│ │ │ │ ├── block_robolink_codrone_mini.js
│ │ │ │ ├── block_robomation.js
│ │ │ │ ├── block_roborobo_base.js
│ │ │ │ ├── block_roborobo_cube.js
│ │ │ │ ├── block_roborobo_robokit_rs.js
│ │ │ │ ├── block_roborobo_roduino.js
│ │ │ │ ├── block_roborobo_roe.js
│ │ │ │ ├── block_roborobo_schoolkit.js
│ │ │ │ ├── block_robotamicoding.js
│ │ │ │ ├── block_robotis.js
│ │ │ │ ├── block_robotisDream.js
│ │ │ │ ├── block_robotisRB.js
│ │ │ │ ├── block_robotisRBCar.js
│ │ │ │ ├── block_robotisRBHumanoid.js
│ │ │ │ ├── block_robotisRBKoala.js
│ │ │ │ ├── block_robotisRBPracticalAssembly.js
│ │ │ │ ├── block_robotori.js
│ │ │ │ ├── block_robotry_parodule.js
│ │ │ │ ├── block_robotry_robit_stage.js
│ │ │ │ ├── block_rokoboard.js
│ │ │ │ ├── block_runcoding.js
│ │ │ │ ├── block_runcoding_display.js
│ │ │ │ ├── block_sally.js
│ │ │ │ ├── block_sciencecube.js
│ │ │ │ ├── block_sensorboard.js
│ │ │ │ ├── block_smartCodingHouse.js
│ │ │ │ ├── block_smartboard.js
│ │ │ │ ├── block_ssboard_nano.js
│ │ │ │ ├── block_suno.js
│ │ │ │ ├── block_talebot.js
│ │ │ │ ├── block_telliot_Base.js
│ │ │ │ ├── block_telliot_lite.js
│ │ │ │ ├── block_thinkboard.js
│ │ │ │ ├── block_timbo.js
│ │ │ │ ├── block_truerobot.js
│ │ │ │ ├── block_turtle.js
│ │ │ │ ├── block_uglybot.js
│ │ │ │ ├── block_uo_albert.js
│ │ │ │ ├── block_wearable.js
│ │ │ │ ├── block_whalesbot_eagle_1001.js
│ │ │ │ ├── block_xbot.js
│ │ │ │ ├── block_zerone.js
│ │ │ │ ├── block_zumiMini.js
│ │ │ │ └── index.js
│ │ │ ├── hardwareLite/
│ │ │ │ ├── block_alux_connect_lite.js
│ │ │ │ ├── block_alux_nemo_lite.js
│ │ │ │ ├── block_alux_teachnic_normal_lite.js
│ │ │ │ ├── block_alux_teachnic_power_lite.js
│ │ │ │ ├── block_arduino_lite.js
│ │ │ │ ├── block_choco_lite.js
│ │ │ │ ├── block_cocodron_controller_Lite.js
│ │ │ │ ├── block_codewiz_lite.js
│ │ │ │ ├── block_hamster_lite.js
│ │ │ │ ├── block_microbit2_lite.js
│ │ │ │ ├── block_microbit2ble_lite.js
│ │ │ │ ├── block_neo_cannon_lite.js
│ │ │ │ ├── block_neo_lite.js
│ │ │ │ ├── block_neo_spider_lite.js
│ │ │ │ ├── block_neobot_purple_lite.js
│ │ │ │ ├── block_neobot_soco_lite.js
│ │ │ │ ├── block_neobot_thinkcar_lite.js
│ │ │ │ ├── block_robolink_ZumiMini_lite.js
│ │ │ │ ├── block_robotis_kkokdu_lite.js
│ │ │ │ ├── block_robotis_koalabot_lite.js
│ │ │ │ ├── block_robotis_rgee_lite.js
│ │ │ │ ├── block_robotis_rla_lite.js
│ │ │ │ ├── block_robotis_robotai_lite.js
│ │ │ │ ├── block_sensorboard_lite.js
│ │ │ │ ├── block_whalesbot_drone_lite.js
│ │ │ │ ├── block_wizwing_controller_lite.js
│ │ │ │ ├── index.js
│ │ │ │ ├── metadata_alux_connect_lite.json
│ │ │ │ ├── metadata_alux_nemo_lite.json
│ │ │ │ ├── metadata_alux_teachnic_normal_lite.json
│ │ │ │ ├── metadata_alux_teachnic_power_lite.json
│ │ │ │ ├── metadata_arduino_lite.json
│ │ │ │ ├── metadata_choco_lite.json
│ │ │ │ ├── metadata_cocodron_controller_Lite.json
│ │ │ │ ├── metadata_codewiz_lite.json
│ │ │ │ ├── metadata_hamster_lite.json
│ │ │ │ ├── metadata_microbit2_lite.json
│ │ │ │ ├── metadata_microbit2ble_lite.json
│ │ │ │ ├── metadata_neo_cannon_lite.json
│ │ │ │ ├── metadata_neo_lite.json
│ │ │ │ ├── metadata_neo_spider_lite.json
│ │ │ │ ├── metadata_neobot_purple_lite.json
│ │ │ │ ├── metadata_neobot_soco_lite.json
│ │ │ │ ├── metadata_neobot_thinkcar_lite.json
│ │ │ │ ├── metadata_robolink_ZumiMini_lite.json
│ │ │ │ ├── metadata_robotis_kkokdu_lite.json
│ │ │ │ ├── metadata_robotis_koalabot_lite.json
│ │ │ │ ├── metadata_robotis_rgee_lite.json
│ │ │ │ ├── metadata_robotis_rla_lite.json
│ │ │ │ ├── metadata_robotis_robotai_lite.json
│ │ │ │ ├── metadata_sensorboard_lite.json
│ │ │ │ ├── metadata_whalesbot_drone_lite.json
│ │ │ │ └── metadata_wizwing_controller_lite.json
│ │ │ ├── index.js
│ │ │ └── inputs/
│ │ │ └── keyboard.js
│ │ ├── board.js
│ │ ├── code.js
│ │ ├── code_view.js
│ │ ├── comment.js
│ │ ├── connection_ripple.js
│ │ ├── executors.js
│ │ ├── executors2.js
│ │ ├── extension/
│ │ │ ├── extension.js
│ │ │ ├── guide.js
│ │ │ └── side_tag.js
│ │ ├── field/
│ │ │ ├── angle.js
│ │ │ ├── block.js
│ │ │ ├── color.js
│ │ │ ├── dropdown.js
│ │ │ ├── dropdownDynamic.js
│ │ │ ├── dropdownExtra.js
│ │ │ ├── field.js
│ │ │ ├── image.js
│ │ │ ├── indicator.js
│ │ │ ├── keyboardInput.js
│ │ │ ├── led.js
│ │ │ ├── led2.js
│ │ │ ├── lineBreak.js
│ │ │ ├── musicScale.js
│ │ │ ├── output.js
│ │ │ ├── statement.js
│ │ │ ├── text.js
│ │ │ ├── textDynamic.js
│ │ │ └── textInput.js
│ │ ├── globalSvg.js
│ │ ├── mutator.js
│ │ ├── renderView.js
│ │ ├── scope.js
│ │ ├── scroll.js
│ │ ├── skeleton/
│ │ │ ├── basic/
│ │ │ │ ├── basic.ts
│ │ │ │ ├── basic_boolean_field.ts
│ │ │ │ ├── basic_button.ts
│ │ │ │ ├── basic_button_disabled.ts
│ │ │ │ ├── basic_create.ts
│ │ │ │ ├── basic_create_value.ts
│ │ │ │ ├── basic_define.ts
│ │ │ │ ├── basic_double_loop.ts
│ │ │ │ ├── basic_event.ts
│ │ │ │ ├── basic_loop.ts
│ │ │ │ ├── basic_param.ts
│ │ │ │ ├── basic_string_field.ts
│ │ │ │ ├── basic_text.ts
│ │ │ │ └── basic_text_light.ts
│ │ │ ├── clickable_text.ts
│ │ │ ├── comment.ts
│ │ │ ├── index.ts
│ │ │ └── pebble/
│ │ │ ├── pebble_basic.ts
│ │ │ ├── pebble_event.ts
│ │ │ └── pebble_loop.ts
│ │ ├── skinner.js
│ │ ├── thread.js
│ │ ├── thread_view.js
│ │ ├── toast.js
│ │ ├── trashcan.js
│ │ ├── vim.js
│ │ ├── workspace.js
│ │ └── zoom_controller.js
│ ├── textcoding/
│ │ ├── ast/
│ │ │ ├── jsAstGenerator.js
│ │ │ └── pyAstGenerator.js
│ │ ├── data_processing/
│ │ │ ├── map.js
│ │ │ └── queue.js
│ │ ├── error/
│ │ │ └── textCodingError.js
│ │ ├── hint/
│ │ │ └── python.js
│ │ ├── parser/
│ │ │ └── core/
│ │ │ ├── block/
│ │ │ │ ├── blockToJs.js
│ │ │ │ └── blockToPy.js
│ │ │ └── text/
│ │ │ ├── jsToBlock.js
│ │ │ └── pyToBlock.js
│ │ ├── parser.js
│ │ ├── static/
│ │ │ ├── codeMap.js
│ │ │ └── keyboardCode.js
│ │ └── util/
│ │ ├── console.js
│ │ └── textCodingUtil.js
│ ├── theme/
│ │ ├── old.js
│ │ └── standard.js
│ └── util/
│ ├── audioSocket.js
│ ├── audioUtils.js
│ ├── binPacking.js
│ ├── block_driver.js
│ ├── common.js
│ ├── contextmenu.js
│ ├── curtain.js
│ ├── dataSource.ts
│ ├── destroyer/
│ │ └── Destroyer.ts
│ ├── domUtils.js
│ ├── eventHandler.js
│ ├── extrablockUtils.js
│ ├── functions/
│ │ └── showConsoleBanner.ts
│ ├── fuzzy.js
│ ├── hardwareUtils.ts
│ ├── htmlElementPatcher.js
│ ├── init.js
│ ├── loader.js
│ ├── location.js
│ ├── mediaPipeUtils.ts
│ ├── modal.js
│ ├── restrictor.js
│ ├── scheduler.js
│ ├── static.js
│ ├── tooltip.js
│ ├── tvCast.js
│ ├── utils.js
│ ├── virtualScroll.js
│ ├── workers/
│ │ └── newmotion.worker.ts
│ └── youtube.js
├── test/
│ ├── class/
│ │ └── container.spec.js
│ ├── entry/
│ │ └── entry.js
│ └── textcoding/
│ └── block.js
├── test_util/
│ └── helper.js
├── tsconfig.json
├── types/
│ ├── entry.d.ts
│ ├── index.d.ts
│ └── window.d.ts
├── webpack.config.js
├── webpack_config/
│ ├── common.js
│ ├── dev.js
│ ├── lint.js
│ ├── prod.js
│ └── serve.js
└── weights/
├── age_gender_model-shard1
├── age_gender_model-weights_manifest.json
├── face_expression_model-shard1
├── face_expression_model-weights_manifest.json
├── face_landmark_68_model-shard1
├── face_landmark_68_model-weights_manifest.json
├── face_landmark_68_tiny_model-shard1
├── face_landmark_68_tiny_model-weights_manifest.json
├── tiny_face_detector_model-shard1
└── tiny_face_detector_model-weights_manifest.json
Showing preview only (863K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (11486 symbols across 477 files)
FILE: extern/blockly/.ropeproject/config.py
function set_prefs (line 4) | def set_prefs(prefs):
function project_opened (line 83) | def project_opened(project):
FILE: extern/blockly/blockly_compressed.js
function b (line 23) | function b(a){if(!(a in e.written||a in e.visited)){e.visited[a]=!0;if(a...
function c (line 40) | function c(){}
function a (line 119) | function a(a){a=goog.array.find(a,d);return c[a]||""}
function e (line 356) | function e(c){c&&b.appendChild(goog.isString(c)?a.createTextNode(c):c)}
function c (line 620) | function c(a){return d[a]}
function c (line 621) | function c(a){return d[a]}
function a (line 783) | function a(e){var f=e.getChildrenElement();if(f){var g=!c||b==e.getParen...
function d (line 963) | function d(b){var c=e[b];if((c.type==Blockly.OUTPUT_VALUE||c.type==Block...
function b (line 966) | function b(b){var f=d-c[b].x_,g=e-c[b].y_;Math.sqrt(f*f+g*g)<=a&&k.push(...
function c (line 1062) | function c(a){a instanceof Blockly.Field?this.appendField(a):(goog.asser...
function a (line 1137) | function a(a){return function(b){if(this.changeHandler_){var c=this.chan...
function a (line 1153) | function a(a){return function(b){if(this.changeHandler_){var c=this.chan...
function a (line 1193) | function a(c,d){for(var e=0,f;f=c.childNodes[e];e++)if(f.tagName){var g=...
function b (line 1204) | function b(a,b){Blockly.hideChaff();var c=window.prompt(a,b);return c&&c...
function e (line 1215) | function e(e,f){for(var k=0;k<e.length;k++){var n=Blockly.Block.obtain(d...
FILE: extern/blockly/build.py
function import_path (line 40) | def import_path(fullpath):
class Gen_uncompressed (line 63) | class Gen_uncompressed(threading.Thread):
method __init__ (line 67) | def __init__(self, search_paths):
method run (line 71) | def run(self):
class Gen_compressed (line 139) | class Gen_compressed(threading.Thread):
method __init__ (line 145) | def __init__(self, search_paths):
method run (line 149) | def run(self):
method gen_core (line 156) | def gen_core(self):
method gen_blocks (line 183) | def gen_blocks(self):
method gen_generator (line 209) | def gen_generator(self, language):
method do_compile (line 238) | def do_compile(self, params, target_filename, filenames, remove):
class Gen_langfiles (line 330) | class Gen_langfiles(threading.Thread):
method __init__ (line 336) | def __init__(self):
method _rebuild (line 339) | def _rebuild(self, srcs, dests):
method run (line 357) | def run(self):
FILE: extern/blockly/core/block.js
function addFieldToInput (line 1638) | function addFieldToInput(field) {
FILE: extern/blockly/core/connection.js
function checkConnection_ (line 531) | function checkConnection_(yIndex) {
function checkConnection_ (line 677) | function checkConnection_(yIndex) {
FILE: extern/blockly/core/field_dropdown.js
function callbackFactory (line 259) | function callbackFactory(value) {
FILE: extern/blockly/core/field_dropdowndynamic.js
function callbackFactory (line 170) | function callbackFactory(value) {
FILE: extern/blockly/core/field_variable.js
function promptName (line 140) | function promptName(promptText, defaultText) {
FILE: extern/blockly/core/procedures.js
function populateProcedures (line 195) | function populateProcedures(procedureList, templateName) {
FILE: extern/blockly/core/toolbox.js
function syncTrees (line 155) | function syncTrees(treeIn, treeOut) {
FILE: extern/blockly/core/xml.js
function fieldToDom (line 73) | function fieldToDom(field) {
FILE: extern/blockly/dart_compressed.js
function b (line 26) | function b(){if(c.match(/^\w+$/))return"";var a=Blockly.Dart.variableDB_...
FILE: extern/blockly/generators/dart/lists.js
function cacheList (line 197) | function cacheList() {
FILE: extern/blockly/generators/javascript/lists.js
function cacheList (line 196) | function cacheList() {
FILE: extern/blockly/generators/python/lists.js
function cacheList (line 202) | function cacheList() {
FILE: extern/blockly/i18n/common.py
class InputError (line 25) | class InputError(Exception):
method __init__ (line 34) | def __init__(self, location, msg):
function read_json_file (line 40) | def read_json_file(filename):
function _create_qqq_file (line 67) | def _create_qqq_file(output_dir):
function _close_qqq_file (line 93) | def _close_qqq_file(qqq_file):
function _create_lang_file (line 108) | def _create_lang_file(author, lang, output_dir):
function _close_lang_file (line 142) | def _close_lang_file(lang_file):
function _create_key_file (line 157) | def _create_key_file(output_dir):
function _close_key_file (line 173) | def _close_key_file(key_file):
function write_files (line 186) | def write_files(author, lang, output_dir, units, write_key_file):
function insert_breaks (line 237) | def insert_breaks(s, min_length, max_length):
FILE: extern/blockly/i18n/create_messages.py
function main (line 31) | def main():
FILE: extern/blockly/i18n/dedup_json.py
function main (line 30) | def main():
FILE: extern/blockly/i18n/js_to_json.py
function main (line 56) | def main():
FILE: extern/blockly/i18n/json_to_js.py
function _create_xlf (line 34) | def _create_xlf(target_lang):
function _close_xlf (line 60) | def _close_xlf(xlf_file):
function _process_file (line 79) | def _process_file(path_to_json, target_lang, key_dict):
function main (line 119) | def main():
FILE: extern/blockly/i18n/status.py
function get_prefix (line 37) | def get_prefix(s):
function get_prefix_count (line 50) | def get_prefix_count(prefix, arr):
function output_as_html (line 63) | def output_as_html(messages, apps, verbose):
function output_as_text (line 135) | def output_as_text(messages, apps, verbose):
function output_as_csv (line 174) | def output_as_csv(messages, apps):
function main (line 204) | def main():
FILE: extern/blockly/i18n/tests.py
class TestSequenceFunctions (line 25) | class TestSequenceFunctions(unittest.TestCase):
method test_insert_breaks (line 26) | def test_insert_breaks(self):
FILE: extern/blockly/i18n/xliff_to_json.py
function _parse_trans_unit (line 33) | def _parse_trans_unit(trans_unit):
function _process_file (line 83) | def _process_file(filename):
function sort_units (line 154) | def sort_units(units, templates):
function main (line 184) | def main():
FILE: extern/blockly/javascript_compressed.js
function b (line 25) | function b(){if(c.match(/^\w+$/))return"";var a=Blockly.JavaScript.varia...
FILE: extern/blockly/tests/blockly_test.js
function verify_DB_ (line 21) | function verify_DB_(msg, expected, db) {
function test_DB_addConnection (line 38) | function test_DB_addConnection() {
function test_DB_removeConnection (line 61) | function test_DB_removeConnection() {
function test_addClass (line 96) | function test_addClass() {
function test_removeClass (line 110) | function test_removeClass() {
function test_shortestStringLength (line 127) | function test_shortestStringLength() {
function test_commonWordPrefix (line 138) | function test_commonWordPrefix() {
function test_commonWordSuffix (line 161) | function test_commonWordSuffix() {
FILE: extern/blockly/tests/generator_test.js
function test_prefix (line 21) | function test_prefix() {
FILE: extern/blockly/tests/names_test.js
function test_safeName (line 21) | function test_safeName() {
function test_getName (line 32) | function test_getName() {
function test_getDistinctName (line 44) | function test_getDistinctName() {
function test_nameEquals (line 57) | function test_nameEquals() {
FILE: extern/human/human.js
function n (line 7) | function n(I,N,O){this.low=I|0,this.high=N|0,this.unsigned=!!O}
function r (line 7) | function r(I){return(I&&I.__isLong__)===!0}
function o (line 7) | function o(I,N){var O,L,B;return N?(I>>>=0,(B=0<=I&&I<256)&&(L=i[I],L)?L...
function l (line 7) | function l(I,N){if(isNaN(I))return N?b:y;if(N){if(I<0)return b;if(I>=g)r...
function u (line 7) | function u(I,N,O){return new n(I,N,O)}
function c (line 7) | function c(I,N,O){if(I.length===0)throw Error("empty string");if(I==="Na...
function d (line 7) | function d(I,N){return typeof I=="number"?l(I,N):typeof I=="string"?c(I,...
function s (line 7) | function s(u){var p=this,c=l();p.next=function(){var d=2091639*p.s0+p.c*...
function i (line 7) | function i(u,p){return p.c=u.c,p.s0=u.s0,p.s1=u.s1,p.s2=u.s2,p}
function o (line 7) | function o(u,p){var c=new s(u),d=p&&p.state,h=c.next;return h.int32=func...
function l (line 7) | function l(){var u=4022871197,p=function(c){c=String(c);for(var d=0;d<c....
function s (line 7) | function s(l){var u=this,p="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){...
function i (line 7) | function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u}
function o (line 7) | function o(l,u){var p=new s(l),c=u&&u.state,d=function(){return(p.next()...
function s (line 7) | function s(l){var u=this,p="";u.next=function(){var d=u.x^u.x>>>2;return...
function i (line 7) | function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}
function o (line 7) | function o(l,u){var p=new s(l),c=u&&u.state,d=function(){return(p.next()...
function s (line 7) | function s(l){var u=this;u.next=function(){var c=u.x,d=u.i,h,f,m;return ...
function i (line 7) | function i(l,u){return u.x=l.x.slice(),u.i=l.i,u}
function o (line 7) | function o(l,u){l==null&&(l=+new Date);var p=new s(l),c=u&&u.state,d=fun...
function s (line 7) | function s(l){var u=this;u.next=function(){var c=u.w,d=u.X,h=u.i,f,m;ret...
function i (line 7) | function i(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}
function o (line 7) | function o(l,u){l==null&&(l=+new Date);var p=new s(l),c=u&&u.state,d=fun...
function s (line 7) | function s(l){var u=this,p="";u.next=function(){var d=u.b,h=u.c,f=u.d,m=...
function i (line 7) | function i(l,u){return u.a=l.a,u.b=l.b,u.c=l.c,u.d=l.d,u}
function o (line 7) | function o(l,u){var p=new s(l),c=u&&u.state,d=function(){return(p.next()...
function f (line 7) | function f(w,S,C){var E=[];S=S==!0?{entropy:!0}:S||{};var _=A(x(S.entrop...
function m (line 7) | function m(w){var S,C=w.length,E=this,_=0,$=E.i=E.j=0,M=E.S=[];for(C||(w...
function g (line 7) | function g(w,S){return S.i=w.i,S.j=w.j,S.S=w.S.slice(),S}
function x (line 7) | function x(w,S){var C=[],E=typeof w,_;if(S&&E=="object")for(_ in w)try{C...
function A (line 7) | function A(w,S){for(var C=w+"",E,_=0;_<C.length;)S[d&_]=d&(E^=S[d&_]*19)...
function y (line 7) | function y(){try{var w;return h&&(w=h.randomBytes)?w=w(s):(w=new Uint8Ar...
function b (line 7) | function b(w){return String.fromCharCode.apply(0,w)}
function s (line 7) | function s(){return oe.buffer!=je&&dt(oe.buffer),ht}
function i (line 7) | function i(){return oe.buffer!=je&&dt(oe.buffer),Va}
function o (line 7) | function o(){return oe.buffer!=je&&dt(oe.buffer),Ft}
function l (line 7) | function l(){return oe.buffer!=je&&dt(oe.buffer),aa}
function u (line 7) | function u(){return oe.buffer!=je&&dt(oe.buffer),$a}
function p (line 7) | function p(){return oe.buffer!=je&&dt(oe.buffer),on}
function c (line 7) | function c(){return oe.buffer!=je&&dt(oe.buffer),_a}
function _ (line 7) | function _(F){return d.locateFile?d.locateFile(F,E):E+F}
function O (line 7) | function O(F){F instanceof Ss||H("exiting due to exception: "+F)}
function Ge (line 9) | function Ge(F,q){F||Uo(q)}
function nt (line 9) | function nt(F,q,se){for(var pe=q+se,Te=q;F[Te]&&!(Te>=pe);)++Te;if(Te-q>...
function ut (line 9) | function ut(F,q){return F?nt(i(),F,q):""}
function et (line 9) | function et(F,q,se,pe){if(!(pe>0))return 0;for(var Te=se,Je=se+pe-1,Oe=0...
function rt (line 9) | function rt(F,q,se){return et(F,i(),q,se)}
function dt (line 9) | function dt(F){je=F,d.HEAP8=ht=new Int8Array(F),d.HEAP16=Ft=new Int16Arr...
function bn (line 9) | function bn(){return he}
function Wo (line 9) | function Wo(){if(d.preRun)for(typeof d.preRun=="function"&&(d.preRun=[d....
function Xt (line 9) | function Xt(){$u=!0,!C&&Ou(Bo)}
function _p (line 9) | function _p(){if(!C){if(d.postRun)for(typeof d.postRun=="function"&&(d.p...
function U0 (line 9) | function U0(F){ur.unshift(F)}
function G0 (line 9) | function G0(F){Bo.unshift(F)}
function y5 (line 9) | function y5(F){Un.unshift(F)}
function b5 (line 9) | function b5(F){_r++,d.monitorRunDependencies&&d.monitorRunDependencies(_r)}
function v5 (line 9) | function v5(F){if(_r--,d.monitorRunDependencies&&d.monitorRunDependencie...
function Uo (line 9) | function Uo(F){C?postMessage({cmd:"onAbort",arg:F}):d.onAbort&&d.onAbort...
function Pp (line 9) | function Pp(F){return F.startsWith(H0)}
function _u (line 9) | function _u(F){return F.startsWith("file://")}
function Fp (line 9) | function Fp(F){try{if(F==xa&&ee)return new Uint8Array(ee);if(I)return I(...
function j0 (line 9) | function j0(){if(!ee&&(b||w)){if(typeof fetch=="function"&&!_u(xa))retur...
function q0 (line 9) | function q0(){var F={env:qp,wasi_snapshot_preview1:qp};function q(Oe,We)...
function Ss (line 9) | function Ss(F){this.name="ExitStatus",this.message="Program terminated w...
function Z0 (line 9) | function Z0(F){var q=Le.pthreads[F];delete Le.pthreads[F],q.terminate(),...
function Y0 (line 9) | function Y0(F){var q=Le.pthreads[F];q.postMessage({cmd:"cancel"})}
function Pu (line 9) | function Pu(F){var q=Le.pthreads[F];Ge(q),Le.returnWorkerToPool(q)}
function Op (line 9) | function Op(F){var q=Le.getNewWorker();if(!q)return 6;Le.runningWorkers....
function Fu (line 9) | function Fu(F){if(C)return Pr(1,1,F);Re=F,bn()||(Le.terminateAllThreads(...
function k5 (line 9) | function k5(F,q){if(Re=F,!q&&C)throw Lp(F),"unwind";Fu(F)}
function J0 (line 9) | function J0(F){if(F instanceof Ss||F=="unwind")return Re;y(1,F)}
function Ou (line 9) | function Ou(F){for(;F.length>0;)F.shift()(d)}
function Q0 (line 9) | function Q0(F){var q=Em(),se=F();return ec(q),se}
function I5 (line 9) | function I5(F){return F}
function S5 (line 9) | function S5(F){var q=/\b_Z[\w\d_]+/g;return F.replace(q,function(se){var...
function ef (line 9) | function ef(){var F=Qp(),q=l()[F+44>>2],se=l()[F+48>>2],pe=q-se;$5(q,pe)...
function Lp (line 9) | function Lp(F){if(C)return Pr(2,0,F);try{zp(F)}catch(q){J0(q)}}
function tf (line 9) | function tf(F){var q=Go[F];return q||(F>=Go.length&&(Go.length=F+1),Go[F...
function af (line 9) | function af(F,q){var se=tf(F)(q);bn()?Le.setExitStatus(se):M5(se)}
function T5 (line 9) | function T5(){var F=new Error;if(!F.stack){try{throw new Error}catch(q){...
function nf (line 9) | function nf(F){Le.tlsInitFunctions.push(F)}
function rf (line 9) | function rf(F,q){s().set(F,q)}
function sf (line 9) | function sf(F){N5(F,!w,1,!b),Le.threadInitTLS()}
function of (line 9) | function of(F){C?postMessage({cmd:"cleanupThread",thread:F}):Pu(F)}
function Bp (line 9) | function Bp(F,q,se,pe){return C?Pr(3,1,F,q,se,pe):Wp(F,q,se,pe)}
function Wp (line 9) | function Wp(F,q,se,pe){if(typeof SharedArrayBuffer=="undefined")return H...
function lf (line 9) | function lf(){return 2097152}
function df (line 9) | function df(){return uf}
function Du (line 9) | function Du(F){Atomics.store(l(),F>>2,1),Qp()&&R5(F),Atomics.compareExch...
function pf (line 9) | function pf(F,q,se,pe){if(F==q)setTimeout(()=>Du(pe));else if(C)postMess...
function cf (line 9) | function cf(F,q,se){return-1}
function hf (line 9) | function hf(){Uo("")}
function Ts (line 9) | function Ts(F){Ts.shown||(Ts.shown={}),Ts.shown[F]||(Ts.shown[F]=1,S&&(F...
function ff (line 9) | function ff(){S||w||Ts("Blocking on the main thread is very dangerous, s...
function mf (line 9) | function mf(){return Date.now()}
function Vp (line 9) | function Vp(){return 2147483648}
function gf (line 9) | function gf(){return Vp()}
function xf (line 9) | function xf(F,q,se){i().copyWithin(F,q,q+se)}
function Af (line 9) | function Af(){return S?aS().cpus().length:navigator.hardwareConcurrency}
function Pr (line 9) | function Pr(F,q){var se=arguments.length-2,pe=arguments;return Q0(()=>{f...
function yf (line 9) | function yf(F,q,se){zu.length=q;for(var pe=se>>3,Te=0;Te<q;Te++)zu[Te]=c...
function bf (line 9) | function bf(F){try{return oe.grow(F-je.byteLength+65535>>>16),dt(oe.buff...
function vf (line 9) | function vf(F){var q=i().length;if(F=F>>>0,F<=q)return!1;var se=Vp();if(...
function wf (line 9) | function wf(){throw"unwind"}
function Up (line 9) | function Up(F){return C?Pr(4,1,F):52}
function Gp (line 9) | function Gp(F,q,se,pe,Te){return C?Pr(5,1,F,q,se,pe,Te):70}
function If (line 9) | function If(F,q){var se=kf[F];q===0||q===10?((F===1?U:H)(nt(se,0)),se.le...
function Hp (line 9) | function Hp(F,q,se,pe){if(C)return Pr(6,1,F,q,se,pe);for(var Te=0,Je=0;J...
function jp (line 9) | function jp(F){var q=d["_"+F];return q}
function Sf (line 9) | function Sf(F,q,se,pe,Te){var Je={string:dn=>{var Ko=0;if(dn!=null&&dn!=...
function Tf (line 9) | function Tf(F,q,se,pe){se=se||[];var Te=se.every(Oe=>Oe==="number"||Oe==...
function _5 (line 9) | function _5(F){if(F=F||x,_r>0)return;if(C){h(d),Xt(),postMessage({cmd:"l...
function x (line 10) | function x(X){return s.locateFile?s.locateFile(X,g):g+X}
function S (line 10) | function S(X){X instanceof Vo||$("exiting due to exception: "+X)}
function G (line 10) | function G(X,ie){X||Un(ie)}
function U (line 10) | function U(X,ie,ke){for(var Ye=ie+ke,yt=ie;X[yt]&&!(yt>=Ye);)++yt;if(yt-...
function H (line 10) | function H(X,ie){return X?U(ee,X,ie):""}
function V (line 10) | function V(X,ie,ke,Ye){if(!(Ye>0))return 0;for(var yt=ke,bt=ke+Ye-1,Ze=0...
function Q (line 10) | function Q(X,ie,ke){return V(X,ee,ie,ke)}
function Ke (line 10) | function Ke(X){Z=X,s.HEAP8=re=new Int8Array(X),s.HEAP16=he=new Int16Arra...
function Va (line 10) | function Va(){return N}
function Ft (line 10) | function Ft(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s....
function sn (line 10) | function sn(){ht=!0,dr(rt)}
function aa (line 10) | function aa(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=...
function $a (line 10) | function $a(X){et.unshift(X)}
function on (line 10) | function on(X){rt.unshift(X)}
function _a (line 10) | function _a(X){je.unshift(X)}
function ur (line 10) | function ur(X){dt++,s.monitorRunDependencies&&s.monitorRunDependencies(dt)}
function Bo (line 10) | function Bo(X){if(dt--,s.monitorRunDependencies&&s.monitorRunDependencie...
function Un (line 10) | function Un(X){s.onAbort&&s.onAbort(X),X="Aborted("+X+")",$(X),L=!0,B=1,...
function bn (line 10) | function bn(X){return X.startsWith($u)}
function Wo (line 10) | function Wo(X){return X.startsWith("file://")}
function _p (line 10) | function _p(X){try{if(X==Xt&&I)return new Uint8Array(I);if(b)return b(X)...
function U0 (line 10) | function U0(){if(!I&&(h||f)){if(typeof fetch=="function"&&!Wo(Xt))return...
function G0 (line 10) | function G0(){var X={env:Fu,wasi_snapshot_preview1:Fu};function ie(Ze,qe...
function Vo (line 10) | function Vo(X){this.name="ExitStatus",this.message="Program terminated w...
function dr (line 10) | function dr(X){for(;X.length>0;)X.shift()(s)}
function b5 (line 10) | function b5(X){return X}
function v5 (line 10) | function v5(X){var ie=/\b_Z[\w\d_]+/g;return X.replace(ie,function(ke){v...
function Uo (line 10) | function Uo(){var X=new Error;if(!X.stack){try{throw new Error}catch(ie)...
function H0 (line 10) | function H0(X,ie){re.set(X,ie)}
function Pp (line 10) | function Pp(){Un("")}
function _u (line 10) | function _u(){return 2147483648}
function xa (line 10) | function xa(){return _u()}
function Fp (line 10) | function Fp(X,ie,ke){ee.copyWithin(X,ie,ie+ke)}
function j0 (line 10) | function j0(X){try{return O.grow(X-Z.byteLength+65535>>>16),Ke(O.buffer)...
function q0 (line 10) | function q0(X){var ie=ee.length;X=X>>>0;var ke=_u();if(X>ke)return!1;let...
function w5 (line 10) | function w5(X){return 52}
function K0 (line 10) | function K0(X,ie,ke,Ye,yt){return 70}
function Z0 (line 10) | function Z0(X,ie){var ke=Ss[X];ie===0||ie===10?((X===1?_:$)(U(ke,0)),ke....
function Y0 (line 10) | function Y0(X,ie,ke,Ye){for(var yt=0,bt=0;bt<ke;bt++){var Ze=we[ie>>2],q...
function Pu (line 10) | function Pu(X){var ie=s["_"+X];return ie}
function Op (line 10) | function Op(X,ie,ke,Ye,yt){var bt={string:Fa=>{var Fr=0;if(Fa!=null&&Fa!...
function Dp (line 10) | function Dp(X,ie,ke,Ye){ke=ke||[];var yt=ke.every(Ze=>Ze==="number"||Ze=...
function Zp (line 10) | function Zp(X){if(X=X||p,dt>0||(Ft(),dt>0))return;function ie(){jo||(jo=...
method constructor (line 10) | constructor(e,t){this.backend=e,this.dataMover=t,this.data=new WeakMap,t...
method get (line 10) | get(e){return this.data.has(e)||this.dataMover.moveData(this.backend,e),...
method set (line 10) | set(e,t){this.dataIdsCount++,this.data.set(e,t)}
method has (line 10) | has(e){return this.data.has(e)}
method delete (line 10) | delete(e){return this.dataIdsCount--,this.data.delete(e)}
method numDataIds (line 10) | numDataIds(){return this.dataIdsCount}
method refCount (line 10) | refCount(e){return Ha("refCount")}
method incRef (line 10) | incRef(e){return Ha("incRef")}
method timerAvailable (line 10) | timerAvailable(){return!0}
method time (line 10) | time(e){return Ha("time")}
method read (line 10) | read(e){return Ha("read")}
method readSync (line 10) | readSync(e){return Ha("readSync")}
method readToGPU (line 10) | readToGPU(e,t){return Ha("readToGPU")}
method numDataIds (line 10) | numDataIds(){return Ha("numDataIds")}
method disposeData (line 10) | disposeData(e,t){return Ha("disposeData")}
method write (line 10) | write(e,t,a){return Ha("write")}
method move (line 10) | move(e,t,a,n,r){return Ha("move")}
method createTensorFromTexture (line 10) | createTensorFromTexture(e,t,a){return Ha("createTensorFromTexture")}
method memory (line 10) | memory(){return Ha("memory")}
method floatPrecision (line 10) | floatPrecision(){return Ha("floatPrecision")}
method epsilon (line 10) | epsilon(){return this.floatPrecision()===32?1e-7:1e-4}
method dispose (line 10) | dispose(){return Ha("dispose")}
function Ha (line 10) | function Ha(e){throw new Error(`'${e}' not yet implemented or not found ...
function sA (line 10) | function sA(e){let t=e.length,a=0;for(;t>0;)a=Math.random()*t|0,t--,kc(e...
function iS (line 10) | function iS(e,t){if(e.length!==t.length)throw new Error(`Array sizes mus...
function nd (line 10) | function nd(e,t,a){return Math.max(e,Math.min(t,a))}
function oS (line 10) | function oS(e){return e%2===0?e:e+1}
function kc (line 10) | function kc(e,t,a){let n=e[t];e[t]=e[a],e[a]=n}
function lS (line 10) | function lS(e){let t=0;for(let a=0;a<e.length;a++)t+=e[a];return t}
function uS (line 10) | function uS(e,t){let a=Math.random();return t*a+(1-a)*e}
function dS (line 10) | function dS(e,t){let a=0;for(let n=0;n<e.length;n++){let r=Number(e[n])-...
function P (line 10) | function P(e,t){if(!e)throw new Error(typeof t=="string"?t:t())}
function Sa (line 10) | function Sa(e,t,a=""){P(es(e,t),()=>a+` Shapes ${e} and ${t} must match`)}
function Xs (line 10) | function Xs(e){P(e!=null,()=>"The input to the tensor constructor must b...
function zs (line 10) | function zs(e,t=[],a=!1){if(t==null&&(t=[]),Array.isArray(e)||da(e)&&!a)...
function At (line 10) | function At(e){if(e.length===0)return 1;let t=e[0];for(let a=1;a<e.lengt...
function pS (line 10) | function pS(e){return e.length===0}
function es (line 10) | function es(e,t){if(e===t)return!0;if(e==null||t==null||e.length!==t.len...
function ol (line 10) | function ol(e){return e%1===0}
function cS (line 10) | function cS(e){if(Math.tanh!=null)return Math.tanh(e);if(e===1/0)return ...
function hS (line 10) | function hS(e){let t=Math.ceil(Math.sqrt(e));return[t,Math.ceil(e/t)]}
function fS (line 10) | function fS(e){let t=new Uint32Array(e);for(let a=0;a<e;++a)t[a]=a;retur...
function Qu (line 10) | function Qu(e,t){return t<=e.length?e:e+" ".repeat(t-e.length)}
function mS (line 10) | function mS(e,t=r=>0,a,n){return new Promise((r,s)=>{let i=0,o=()=>{if(e...
function gS (line 10) | function gS(e,t){let a=1,n=-1;for(let s=0;s<e.length;++s)if(e[s]>=0)a*=e...
function wd (line 10) | function wd(e,t){let a=t.length;return e=e==null?t.map((n,r)=>r):[].conc...
function iA (line 10) | function iA(e,t){let a=[],n=[],r=t!=null&&Array.isArray(t)&&t.length===0...
function oA (line 10) | function oA(e,t){let a=null;if(e==null||e==="float32")a=new Float32Array...
function lA (line 10) | function lA(e,t){let a=null;if(e==null||e==="float32")a=new Float32Array...
function uA (line 10) | function uA(e,t){for(let a=0;a<e.length;a++){let n=e[a];if(isNaN(n)||!is...
function dA (line 10) | function dA(e){return e==="bool"||e==="complex64"||e==="float32"||e==="i...
function xS (line 10) | function xS(e,t){return!(t==="complex64"||t==="float32"&&e!=="complex64"...
function da (line 10) | function da(e){return e instanceof Float32Array||e instanceof Int32Array...
function Vm (line 10) | function Vm(e){if(e==="float32"||e==="int32")return 4;if(e==="complex64"...
function pA (line 10) | function pA(e){if(e==null)return 0;let t=0;return e.forEach(a=>t+=a.leng...
function Lr (line 10) | function Lr(e){return typeof e=="string"||e instanceof String}
function cA (line 10) | function cA(e){return typeof e=="boolean"}
function hA (line 10) | function hA(e){return typeof e=="number"}
function Uc (line 10) | function Uc(e){return Array.isArray(e)?Uc(e[0]):e instanceof Float32Arra...
function Hr (line 10) | function Hr(e){return!!(e&&e.constructor&&e.call&&e.apply)}
function Ic (line 10) | function Ic(e,t){for(let a=t;a<e;++a)if(e%a===0)return a;return e}
function vl (line 10) | function vl(e){let t=e.length;if(t<2)return[];let a=new Array(t-1);a[t-2...
function fA (line 10) | function fA(e,t,a,n=!1){let r=new Array;if(t.length===1){let s=t[0]*(n?2...
function al (line 10) | function al(e,t,a=!1){if(e.length===0)return t[0];let n=e.reduce((r,s)=>...
function L1 (line 10) | function L1(e,t){let a=Gc(e,t);for(let n=0;n<a.length;n++)a[n]=1;return a}
function Gc (line 10) | function Gc(e,t){if(t==null||t==="float32"||t==="complex64")return new F...
function AS (line 10) | function AS(e,t){let a=e.reduce((n,r)=>n*r,1);if(t==null||t==="float32")...
function Ja (line 10) | function Ja(e){e.forEach(t=>{P(Number.isInteger(t)&&t>=0,()=>`Tensor mus...
function yS (line 10) | function yS(e,t,a){if(t===0)return 0;if(t===1)return e[0];let n=e[e.leng...
function bS (line 10) | function bS(e,t,a){if(t===0)return[];if(t===1)return[e];let n=new Array(...
function B1 (line 10) | function B1(e){return e&&e.then&&typeof e.then=="function"}
method constructor (line 10) | constructor(e){this.global=e,this.flags={},this.flagRegistry={},this.url...
method setPlatform (line 10) | setPlatform(e,t){this.platform!=null&&(W().getBool("IS_TEST")||W().getBo...
method registerFlag (line 10) | registerFlag(e,t,a){if(this.flagRegistry[e]={evaluationFn:t,setHook:a},t...
method getAsync (line 10) | async getAsync(e){return e in this.flags?this.flags[e]:(this.flags[e]=aw...
method get (line 10) | get(e){if(e in this.flags)return this.flags[e];let t=this.evaluateFlag(e...
method getNumber (line 10) | getNumber(e){return this.get(e)}
method getBool (line 10) | getBool(e){return this.get(e)}
method getFlags (line 10) | getFlags(){return this.flags}
method features (line 10) | get features(){return this.flags}
method set (line 10) | set(e,t){if(this.flagRegistry[e]==null)throw new Error(`Cannot set flag ...
method evaluateFlag (line 10) | evaluateFlag(e){if(this.flagRegistry[e]==null)throw new Error(`Cannot ev...
method setFlags (line 10) | setFlags(e){this.flags=Object.assign({},e)}
method reset (line 10) | reset(){this.flags={},this.urlFlags={},this.populateURLFlags()}
method populateURLFlags (line 10) | populateURLFlags(){if(typeof this.global=="undefined"||typeof this.globa...
function vS (line 10) | function vS(e){let t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(...
function wS (line 10) | function wS(e,t,a){e[decodeURIComponent(t)]=decodeURIComponent(a||"")}
function kS (line 10) | function kS(e,t){if(t=t.toLowerCase(),t==="true"||t==="false")return t==...
function W (line 10) | function W(){return W1}
function IS (line 10) | function IS(e){W1=e}
function gA (line 10) | function gA(){if(Mm==null){let e;if(typeof window!="undefined")e=window;...
function SS (line 10) | function SS(){let e=gA();return e._tfGlobals==null&&(e._tfGlobals=new Ma...
function V1 (line 10) | function V1(e,t){let a=SS();if(a.has(e))return a.get(e);{let n=t();retur...
function zr (line 10) | function zr(...e){W().getBool("IS_TEST")||W().getBool("PROD")||console.w...
function MS (line 10) | function MS(...e){W().getBool("IS_TEST")||W().getBool("PROD")||console.l...
function Sc (line 10) | function Sc(e,t){let a=J1(e,t);return ll.get(a)}
function Hm (line 10) | function Hm(e){return sd.get(e)}
function Zn (line 10) | function Zn(e){let t=ll.entries(),a=[];for(;;){let{done:n,value:r}=t.nex...
function mn (line 10) | function mn(e){let{kernelName:t,backendName:a}=e,n=J1(t,a);ll.has(n)&&zr...
function $S (line 10) | function $S(e){let{kernelName:t}=e;sd.has(t)&&W().getBool("DEBUG")&&zr(`...
function _S (line 10) | function _S(e,t){let a=J1(e,t);if(!ll.has(a))throw new Error(`The kernel...
function PS (line 10) | function PS(e){if(!sd.has(e))throw new Error(`The gradient '${e}' for ba...
function FS (line 10) | function FS(e,t){Zn(e).forEach(a=>{let n=Object.assign({},a,{backendName...
function J1 (line 10) | function J1(e,t){return`${t}_${e}`}
function Ud (line 10) | function Ud(e){return $s.fromString(e,!0,16)}
function jm (line 10) | function jm(e){return e.xor(e.shru(47))}
function yA (line 10) | function yA(e,t,a){let n=e.slice(t,t+a);return $s.fromBytes(Array.from(n...
function ft (line 10) | function ft(e,t){return yA(e,t,8)}
function L5 (line 10) | function L5(e,t){return yA(e,t,4)}
function Kt (line 10) | function Kt(e,t){return t===0?e:e.shru(t).or(e.shl(64-t))}
function Ur (line 10) | function Ur(e,t,a=Ud("9ddfea08eb382d69")){let n=e.xor(t).mul(a);n=n.xor(...
function OS (line 10) | function OS(e,t,a,n,r,s){r=r.add(e),s=Kt(s.add(r).add(n),21);let i=r;ret...
function ic (line 10) | function ic(e,t,a,n){return OS(ft(e,t),ft(e,t+8),ft(e,t+16),ft(e,t+24),a...
function DS (line 10) | function DS(e,t=e.length){if(t>=8){let a=Aa.add(t*2),n=ft(e,0).add(Aa),r...
function zS (line 10) | function zS(e,t=e.length){let a=Aa.add(t*2),n=ft(e,0).mul(Rs),r=ft(e,8),...
function LS (line 10) | function LS(e,t=e.length){let a=Aa.add(t*2),n=ft(e,0).mul(Aa),r=ft(e,8),...
function BS (line 10) | function BS(e,t=e.length){let a=$s.fromNumber(81,!0);if(t<=32)return t<=...
function WS (line 10) | function WS(e,t){return t==="string"?Gd(e):ph([e],t)}
function VS (line 10) | function VS(e,t){return e instanceof Float32Array&&t==="float32"||e inst...
function ph (line 10) | function ph(e,t){if(t==="string")throw new Error("Cannot convert a strin...
function id (line 10) | function id(){return W().platform.now()}
function US (line 10) | function US(e,t){return W().platform.fetch(e,t)}
function Gd (line 10) | function Gd(e,t="utf-8"){return t=t||"utf-8",W().platform.encode(e,t)}
function Tc (line 10) | function Tc(e,t="utf-8"){return t=t||"utf-8",W().platform.decode(e,t)}
method constructor (line 10) | constructor(e,t){this.backendTimer=e,this.logger=t,t==null&&(this.logger...
method profileKernel (line 10) | profileKernel(e,t,a){let n,r=()=>{n=a()},s,i=id();if(this.backendTimer.t...
method logKernelProfile (line 10) | logKernelProfile(e){let{kernelName:t,outputs:a,timeMs:n,inputs:r,extraIn...
function HS (line 10) | function HS(e,t,a){if(t!=="float32")return!1;for(let n=0;n<e.length;n++)...
method logKernelProfile (line 10) | logKernelProfile(e,t,a,n,r,s){let i=typeof n=="number"?Qu(`${n}ms`,9):n....
function qS (line 10) | function qS(e,t,a){let n={},r={};for(let l=0;l<t.length;l++)n[t[l].id]=!...
function XS (line 10) | function XS(e,t,a,n){for(let r=t.length-1;r>=0;r--){let s=t[r],i=[];if(s...
function KS (line 10) | function KS(e,t,a,n){let r=vl(t),s=ZS(e,t,a,r),i=t.length,o=hc(e,t,a,r,s...
function ZS (line 12) | function ZS(e,t,a,n){let r=At(t),s=n[n.length-1],i=new Array(s).fill(0),...
function Uu (line 12) | function Uu(e,t,a){let n;return Array.isArray(e)?n=`${parseFloat(e[0].to...
function bA (line 12) | function bA(e){return e===0?"false":"true"}
function hc (line 12) | function hc(e,t,a,n,r,s=!0){let i=a==="complex64"?2:1,o=t[0],l=t.length;...
function Gu (line 14) | function Gu(e){let t=[];for(let a=0;a<e.length;a+=2)t.push([e[a],e[a+1]]...
method constructor (line 14) | constructor(e,t,a){if(this.dtype=t,this.shape=e.slice(),this.size=At(e),...
method set (line 14) | set(e,...t){t.length===0&&(t=[0]),P(t.length===this.rank,()=>`The number...
method get (line 14) | get(...e){e.length===0&&(e=[0]);let t=0;for(let n of e){if(n<0||n>=this....
method locToIndex (line 14) | locToIndex(e){if(this.rank===0)return 0;if(this.rank===1)return e[0];let...
method indexToLoc (line 14) | indexToLoc(e){if(this.rank===0)return[];if(this.rank===1)return[e];let t...
method rank (line 14) | get rank(){return this.shape.length}
method toTensor (line 14) | toTensor(){return Fn().makeTensor(this.values,this.shape,this.dtype)}
function JS (line 14) | function JS(e){Fn=e}
function QS (line 14) | function QS(e){Qo=e}
function eT (line 14) | function eT(e){YS=e}
method constructor (line 14) | constructor(e,t,a,n){this.kept=!1,this.isDisposedInternal=!1,this.shape=...
method rank (line 14) | get rank(){return this.shape.length}
method buffer (line 14) | async buffer(){let e=await this.data();return Qo.buffer(this.shape,this....
method bufferSync (line 14) | bufferSync(){return Qo.buffer(this.shape,this.dtype,this.dataSync())}
method array (line 14) | async array(){let e=await this.data();return al(this.shape,e,this.dtype=...
method arraySync (line 14) | arraySync(){return al(this.shape,this.dataSync(),this.dtype==="complex64")}
method data (line 14) | async data(){this.throwIfDisposed();let e=Fn().read(this.dataId);if(this...
method dataToGPU (line 14) | dataToGPU(e){return this.throwIfDisposed(),Fn().readToGPU(this.dataId,e)}
method dataSync (line 14) | dataSync(){this.throwIfDisposed();let e=Fn().readSync(this.dataId);if(th...
method bytes (line 14) | async bytes(){this.throwIfDisposed();let e=await Fn().read(this.dataId);...
method dispose (line 14) | dispose(){this.isDisposed||(Fn().disposeTensor(this),this.isDisposedInte...
method isDisposed (line 14) | get isDisposed(){return this.isDisposedInternal}
method throwIfDisposed (line 14) | throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed...
method print (line 14) | print(e=!1){return Qo.print(this,e)}
method clone (line 14) | clone(){return this.throwIfDisposed(),Qo.clone(this)}
method toString (line 14) | toString(e=!1){let t=this.dataSync();return KS(t,this.shape,this.dtype,e)}
method cast (line 14) | cast(e){return this.throwIfDisposed(),Qo.cast(this,e)}
method variable (line 14) | variable(e=!0,t,a){return this.throwIfDisposed(),Fn().makeVariable(this,...
function tT (line 14) | function tT(){return V1("Tensor",()=>pt)}
method constructor (line 14) | constructor(e,t,a,n){super(e.shape,e.dtype,e.dataId,n),this.trainable=t,...
method assign (line 14) | assign(e){if(e.dtype!==this.dtype)throw new Error(`dtype of the new valu...
method dispose (line 14) | dispose(){Fn().disposeVariable(this),this.isDisposedInternal=!0}
function ca (line 14) | function ca(e,t){if(e==="string"||t==="string"){if(e==="string"&&t==="st...
function Hd (line 14) | function Hd(e){return ca(e,"int32")}
function St (line 14) | function St(e,t){if(e.dtype===t.dtype)return[e,t];let a=ca(e.dtype,t.dty...
function wA (line 14) | function wA(e,t){P(e.dtype===t.dtype,()=>`The dtypes of the first(${e.dt...
function nT (line 14) | function nT(e,t){return t.some(a=>a.id===e.id)}
function Q1 (line 14) | function Q1(e){let t=[];return kA(e,t,new Set),t}
function kA (line 14) | function kA(e,t,a){if(e==null)return;if(e instanceof pt){t.push(e);retur...
function rT (line 14) | function rT(e){return Array.isArray(e)||typeof e=="object"}
function _m (line 14) | function _m(e){return e.kernelName!=null}
method constructor (line 14) | constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.num...
method dispose (line 14) | dispose(){for(let e in this.registeredVariables)this.registeredVariables...
method constructor (line 14) | constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this....
method ready (line 14) | async ready(){if(this.pendingBackendInit!=null)return this.pendingBacken...
method backend (line 14) | get backend(){if(this.pendingBackendInit!=null)throw new Error(`Backend ...
method backendNames (line 14) | backendNames(){return Object.keys(this.registryFactory)}
method findBackend (line 14) | findBackend(e){if(!(e in this.registry))if(e in this.registryFactory){le...
method findBackendFactory (line 14) | findBackendFactory(e){return e in this.registryFactory?this.registryFact...
method registerBackend (line 14) | registerBackend(e,t,a=1){return e in this.registryFactory?(zr(`${e} back...
method setBackend (line 14) | async setBackend(e){if(this.registryFactory[e]==null)throw new Error(`Ba...
method setupRegisteredKernels (line 14) | setupRegisteredKernels(){Zn(this.backendName).forEach(e=>{e.setupFunc!=n...
method disposeRegisteredKernels (line 14) | disposeRegisteredKernels(e){Zn(e).forEach(t=>{t.disposeFunc!=null&&t.dis...
method initializeBackend (line 14) | initializeBackend(e){let t=this.registryFactory[e];if(t==null)throw new ...
method removeBackend (line 14) | removeBackend(e){if(!(e in this.registryFactory))throw new Error(`${e} b...
method getSortedBackends (line 14) | getSortedBackends(){if(Object.keys(this.registryFactory).length===0)thro...
method initializeBackendsAndReturnBest (line 14) | initializeBackendsAndReturnBest(){let e=this.getSortedBackends();for(let...
method moveData (line 14) | moveData(e,t){let a=this.state.tensorInfo.get(t),n=a.backend,r=this.read...
method tidy (line 14) | tidy(e,t){let a=null;if(t==null){if(typeof e!="function")throw new Error...
method scopedRun (line 14) | scopedRun(e,t,a){e();try{let n=a();return t(),n}catch(n){throw t(),n}}
method nextTensorId (line 14) | nextTensorId(){return ld.nextTensorId++}
method nextVariableId (line 14) | nextVariableId(){return ld.nextVariableId++}
method clone (line 14) | clone(e){let t=z.runKernel(ki,{x:e}),a={x:e},n=s=>({x:()=>{let i="float3...
method runKernel (line 14) | runKernel(e,t,a){if(this.backendName==null&&this.backend,Sc(e,this.backe...
method shouldCheckForMemLeaks (line 14) | shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}
method checkKernelForMemLeak (line 14) | checkKernelForMemLeak(e,t,a){let n=this.backend.numDataIds(),r=0;a.forEa...
method runKernelFunc (line 14) | runKernelFunc(e){let t,a=[],n=this.isTapeOn(),r=this.state.numBytes,s=th...
method saveTensorsForBackwardMode (line 14) | saveTensorsForBackwardMode(e){return e.map(t=>this.keep(this.clone(t)))}
method getTensorsForGradient (line 14) | getTensorsForGradient(e,t,a){let n=Hm(e);if(n!=null){let r=n.inputsToSav...
method makeTensor (line 14) | makeTensor(e,t,a,n){if(e==null)throw new Error("Values passed to engine....
method makeTensorFromDataId (line 14) | makeTensorFromDataId(e,t,a,n){a=a||"float32";let r={dataId:e,shape:t,dty...
method makeTensorFromTensorInfo (line 14) | makeTensorFromTensorInfo(e,t){let{dataId:a,shape:n,dtype:r}=e,s=new pt(n...
method makeVariable (line 14) | makeVariable(e,t=!0,a,n){a=a||this.nextVariableId().toString(),n!=null&&...
method trackTensor (line 14) | trackTensor(e,t){this.state.numTensors++,e.dtype==="string"&&this.state....
method incRef (line 14) | incRef(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)}
method removeDataId (line 14) | removeDataId(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.ge...
method disposeTensor (line 14) | disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;let t=th...
method disposeVariables (line 14) | disposeVariables(){for(let e in this.state.registeredVariables){let t=th...
method disposeVariable (line 14) | disposeVariable(e){this.disposeTensor(e),this.state.registeredVariables[...
method memory (line 14) | memory(){let e=this.backend.memory();return e.numTensors=this.state.numT...
method profile (line 14) | async profile(e){this.state.profiling=!0;let t=this.state.numBytes,a=thi...
method isTapeOn (line 14) | isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}
method addTapeNode (line 14) | addTapeNode(e,t,a,n,r,s){let i={id:this.state.nextTapeNodeId++,kernelNam...
method keep (line 14) | keep(e){return e.kept=!0,e}
method startTape (line 14) | startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),thi...
method endTape (line 14) | endTape(){this.state.gradientDepth--}
method startScope (line 14) | startScope(e){let t={track:[],name:"unnamed scope",id:this.state.nextSco...
method endScope (line 14) | endScope(e){let t=Q1(e),a=new Set(t.map(r=>r.id));for(let r=0;r<this.sta...
method gradients (line 14) | gradients(e,t,a,n=!1){if(P(t.length>0,()=>"gradients() received an empty...
method customGrad (line 14) | customGrad(e){return P(Hr(e),()=>"The f passed in customGrad(f) must be ...
method readSync (line 14) | readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}
method read (line 14) | read(e){return this.state.tensorInfo.get(e).backend.read(e)}
method readToGPU (line 14) | readToGPU(e,t){return this.state.tensorInfo.get(e).backend.readToGPU(e,t)}
method time (line 14) | async time(e){let t=id(),a=await this.backend.time(e);return a.wallMs=id...
method track (line 14) | track(e){return this.state.activeScope!=null&&(e.scopeId=this.state.acti...
method registeredVariables (line 14) | get registeredVariables(){return this.state.registeredVariables}
method reset (line 14) | reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(...
function sT (line 14) | function sT(e){let t=L1(At(e),"float32");return z.makeTensor(t,e,"float3...
function IA (line 14) | function IA(){let e=gA();if(e._tfengine==null){let t=new mA(e);e._tfengi...
function iT (line 14) | function iT(e,t){let a={a:e,b:t};return z.runKernel(ts,a)}
function oT (line 14) | function oT(){return typeof navigator!="undefined"&&navigator!=null}
function lT (line 14) | function lT(e){Jm=e}
function uT (line 14) | function uT(e){if(Jm!==void 0)return Jm;if(e||oT()){if(e||(e=navigator),...
function SA (line 14) | function SA(){return typeof window!="undefined"&&window.document!=null||...
function Yn (line 14) | function Yn(e,t){let a=e;if(da(e))return t==="string"?[]:[e.length];if(t...
function TA (line 14) | function TA(e,t,a){if(a=a||[],!Array.isArray(e)&&!da(e)){P(t.length===0,...
function V5 (line 14) | function V5(e,t,a,n){if(e!=="string_or_numeric"){if(e==null)throw new Er...
function R (line 14) | function R(e,t,a,n="numeric"){if(e instanceof pt)return V5(n,e.dtype,t,a...
function ud (line 14) | function ud(e,t,a,n="numeric"){if(!Array.isArray(e))throw new Error(`Arg...
function D (line 14) | function D(e){let t=Object.keys(e);if(t.length!==1)throw new Error(`Plea...
function dT (line 14) | function dT(e,t){let a=R(e,"real","complex"),n=R(t,"imag","complex");Sa(...
function rs (line 14) | function rs(e,t,a,n){if(n==null&&(n=Uc(e)),n==="complex64")throw new Err...
function Be (line 14) | function Be(e,t,a){let n=Yn(e,a);return rs(e,t,n,a)}
function pT (line 14) | async function pT(e,t){let a=[],n=[],r=Array.isArray(e)?e.map(i=>i.name)...
function CA (line 14) | function CA(e,t){let a={},n,r=0;for(let s of t){let i=s.name,o=s.dtype,l...
function cT (line 14) | function cT(e){if(e===null)throw new Error(`Invalid input value: ${JSON....
function U5 (line 14) | function U5(e){return t2?Buffer.byteLength(e):new Blob([e]).size}
function hT (line 14) | function hT(e){if(t2)return Buffer.from(e).toString("base64");let t=new ...
function fT (line 14) | function fT(e){if(t2){let n=Buffer.from(e,"base64");return n.buffer.slic...
function a2 (line 14) | function a2(e){if(e.length===1)return e[0];let t=0;e.forEach(r=>{t+=r.by...
function G5 (line 14) | function G5(e){let t="/";for(e=e.trim();e.endsWith(t);)e=e.slice(0,e.len...
function NA (line 14) | function NA(e,t){let a={modelTopology:e.modelTopology,format:e.format,ge...
function EA (line 14) | function EA(e,t,a){let n={modelTopology:e.modelTopology,format:e.format,...
function n2 (line 14) | async function n2(e,t){let a,n;return e.weightsManifest!=null&&([a,n]=aw...
function qd (line 14) | function qd(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error...
function RA (line 14) | function RA(e){let t=[];for(let a of e)t.push(...a.weights);return t}
function mT (line 14) | function mT(){let e=a=>{let n=a<<13,r=0;for(;(n&8388608)===0;)r-=8388608...
function gT (line 14) | function gT(){let e=new Uint32Array(64);e[0]=0,e[31]=1199570944,e[32]=21...
function xT (line 14) | function xT(){let e=new Uint32Array(64);for(let t=0;t<64;t++)e[t]=1024;r...
function AT (line 14) | function AT(){let e=mT(),t=gT(),a=xT();return n=>{let r=new ArrayBuffer(...
method constructor (line 14) | constructor(){this.saveRouters=[],this.loadRouters=[]}
method getInstance (line 14) | static getInstance(){return Rt.instance==null&&(Rt.instance=new Rt),Rt.i...
method registerSaveRouter (line 14) | static registerSaveRouter(e){Rt.getInstance().saveRouters.push(e)}
method registerLoadRouter (line 14) | static registerLoadRouter(e){Rt.getInstance().loadRouters.push(e)}
method getSaveHandlers (line 14) | static getSaveHandlers(e){return Rt.getHandlers(e,"save")}
method getLoadHandlers (line 14) | static getLoadHandlers(e,t){return Rt.getHandlers(e,"load",t)}
method getHandlers (line 14) | static getHandlers(e,t,a){let n=[];return(t==="load"?Rt.getInstance().lo...
function MA (line 14) | function MA(){if(!W().getBool("IS_BROWSER"))throw new Error("Failed to o...
function a1 (line 14) | function a1(e){let t=e.result;t.createObjectStore(Fs,{keyPath:"modelPath...
method constructor (line 14) | constructor(e){if(this.indexedDB=MA(),e==null||!e)throw new Error("For I...
method save (line 14) | async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error(...
method load (line 14) | async load(){return this.databaseAction(this.modelPath)}
method databaseAction (line 14) | databaseAction(e,t){return new Promise((a,n)=>{let r=this.indexedDB.open...
function kT (line 14) | function kT(e){return new Ls(e)}
function IT (line 14) | function IT(e){return e.startsWith(Ls.URL_SCHEME)?e.slice(Ls.URL_SCHEME....
method constructor (line 14) | constructor(){this.indexedDB=MA()}
method listModels (line 14) | async listModels(){return new Promise((e,t)=>{let a=this.indexedDB.open(...
method removeModel (line 14) | async removeModel(e){return e=IT(e),new Promise((t,a)=>{let n=this.index...
function PA (line 14) | function PA(e){return{info:[el,e,_A].join(xr),topology:[el,e,TT].join(xr...
function FA (line 14) | function FA(e){for(let t of Object.values(e))window.localStorage.removeI...
function RT (line 14) | function RT(e){let t=e.split(xr);if(t.length<3)throw new Error(`Invalid ...
function MT (line 14) | function MT(e){return e.startsWith(Bs.URL_SCHEME)?e.slice(Bs.URL_SCHEME....
method constructor (line 14) | constructor(e){if(!W().getBool("IS_BROWSER")||typeof window=="undefined"...
method save (line 14) | async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error(...
method load (line 14) | async load(){let e=JSON.parse(this.LS.getItem(this.keys.info));if(e==nul...
function $T (line 14) | function $T(e){return new Bs(e)}
method constructor (line 14) | constructor(){P(W().getBool("IS_BROWSER"),()=>"Current environment is no...
method listModels (line 14) | async listModels(){let e={},t=el+xr,a=xr+_A;for(let n=0;n<this.LS.length...
method removeModel (line 14) | async removeModel(e){e=MT(e);let t=PA(e);if(this.LS.getItem(t.info)==nul...
method constructor (line 14) | constructor(){this.managers={}}
method getInstance (line 14) | static getInstance(){return Oa.instance==null&&(Oa.instance=new Oa),Oa.i...
method registerManager (line 14) | static registerManager(e,t){P(e!=null,()=>"scheme must not be undefined ...
method getManager (line 14) | static getManager(e){let t=Oa.getInstance().managers[e];if(t==null)throw...
method getSchemes (line 14) | static getSchemes(){return Object.keys(Oa.getInstance().managers)}
function fc (line 14) | function fc(e){if(e.indexOf(nl)===-1)throw new Error(`The url string pro...
function DA (line 14) | async function DA(e,t,a=!1){P(e!==t,()=>`Old path and new path are the s...
function PT (line 14) | async function PT(){let e=Oa.getSchemes(),t={};for(let a of e){let n=awa...
function FT (line 14) | async function FT(e){let t=fc(e);return Oa.getManager(t.scheme).removeMo...
function OT (line 14) | async function OT(e,t){return DA(e,t,!1)}
function DT (line 14) | async function DT(e,t){return DA(e,t,!0)}
method constructor (line 14) | constructor(){this.messageName="setTimeoutCustom",this.functionRefs=[],t...
method fetch (line 14) | fetch(e,t){return fetch(e,t)}
method now (line 14) | now(){return performance.now()}
method encode (line 14) | encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Browser's encode...
method decode (line 14) | decode(e,t){return new TextDecoder(t).decode(e)}
method setTimeoutCustom (line 14) | setTimeoutCustom(e,t){if(typeof window=="undefined"||!W().getBool("USE_S...
method constructor (line 14) | constructor(){this.util=HI(),this.textEncoder=new this.util.TextEncoder}
method fetch (line 14) | fetch(e,t){return W().global.fetch!=null?W().global.fetch(e,t):(Pm==null...
method now (line 14) | now(){let e=process.hrtime();return e[0]*1e3+e[1]/1e6}
method encode (line 14) | encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Node built-in en...
method decode (line 14) | decode(e,t){return e.length===0?"":new this.util.TextDecoder(t).decode(e)}
function Me (line 14) | function Me(e,t="float32",a){return t=t||"float32",Ja(e),new jt(e,t,a)}
function WT (line 14) | function WT(e,t){let a=R(e,"x","cast");if(!dA(t))throw new Error(`Failed...
function VT (line 14) | function VT(e){let t={x:R(e,"x","clone","string_or_numeric")};return z.r...
function r2 (line 14) | function r2(e,t=!1){console.log(e.toString(t))}
function H5 (line 14) | function H5(e){return new Promise(t=>setTimeout(t)).then(e)}
method constructor (line 14) | constructor(e){if(!W().getBool("IS_BROWSER"))throw new Error("browserDow...
method save (line 14) | async save(e){if(typeof document=="undefined")throw new Error("Browser d...
method constructor (line 14) | constructor(e){if(e==null||e.length<1)throw new Error(`When calling brow...
method load (line 14) | async load(){return new Promise((e,t)=>{let a=new FileReader;a.onload=n=...
method loadWeights (line 14) | loadWeights(e){let t=[],a=[];for(let s of e)t.push(...s.weights),a.push(...
method loadWeightsFile (line 14) | loadWeightsFile(e,t){return new Promise((a,n)=>{let r=new FileReader;r.o...
method checkManifestAndWeightFiles (line 14) | checkManifestAndWeightFiles(e){let t=[],a=this.weightsFiles.map(r=>G5(r....
function KT (line 14) | function KT(e="model"){return new ul(e)}
function ZT (line 14) | function ZT(e){return new qT(e)}
function j5 (line 14) | function j5(e,t,a,n){i(e),a=a==null?0:a,n=n==null?1:n,o(a,n);let r=0,s=l...
function zA (line 14) | async function zA(e,t){t==null&&(t={});let a=t.fetchFunc==null?W().platf...
function YT (line 14) | async function YT(e,t="",a,n){return LA(r=>zA(r,{requestInit:n}))(e,t,a)}
function LA (line 14) | function LA(e){return async(t,a="",n)=>{let r=t.map(()=>!1),s={},i=n!=nu...
method constructor (line 15) | constructor(e,t){if(this.DEFAULT_METHOD="POST",t==null&&(t={}),this.weig...
method save (line 15) | async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error(...
method load (line 15) | async load(){let e=await this.fetch(this.path,this.requestInit);if(!e.ok...
method loadWeights (line 15) | async loadWeights(e){let t=Array.isArray(this.path)?this.path[1]:this.pa...
function eC (line 15) | function eC(e){let t=e.lastIndexOf("/"),a=e.lastIndexOf("?"),n=e.substri...
function n1 (line 15) | function n1(e){return e.match(s2.URL_SCHEME_REGEX)!=null}
function i2 (line 15) | function i2(e,t){return new s2(e,t)}
function tC (line 15) | function tC(e,t){return i2(e,t)}
method constructor (line 15) | constructor(e){this.modelArtifacts=e}
method load (line 15) | load(){return this.modelArtifacts}
method constructor (line 15) | constructor(e){this.saveHandler=e}
method save (line 15) | save(e){return this.saveHandler(e)}
method constructor (line 15) | constructor(e){e.load&&(this.load=()=>Promise.resolve(e.load())),e.save&...
function nC (line 15) | function nC(e,t,a,n){let r=arguments;return new aC(VA(...r))}
function VA (line 15) | function VA(e,t,a,n){return arguments.length===1?e.modelTopology!=null||...
function rC (line 15) | function rC(e){return new WA(e)}
function sC (line 15) | function sC(e){return new WA(e)}
function iC (line 15) | function iC(e,t,a=!1,n=!1){let r=R(e,"a","matMul"),s=R(t,"b","matMul");[...
function oC (line 15) | function oC(e,t,a=1,n=0,r="int32"){if(t<2)throw new Error(`Error in oneH...
function o2 (line 15) | function o2(){W().set("PROD",!0)}
function lC (line 15) | function lC(){W().set("DEBUG",!0)}
function uC (line 15) | function uC(){W().set("DEPRECATION_WARNINGS_ENABLED",!1),console.warn("T...
function l2 (line 15) | function l2(e){W().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn...
function dC (line 15) | function dC(){z.disposeVariables()}
function kt (line 15) | function kt(){return z}
function pC (line 15) | function pC(){return z.memory()}
function cC (line 15) | function cC(e){return z.profile(e)}
function $e (line 15) | function $e(e,t){return z.tidy(e,t)}
function Y (line 15) | function Y(e){Q1(e).forEach(t=>t.dispose())}
function On (line 15) | function On(e){return z.keep(e)}
function hC (line 15) | function hC(e){return z.time(e)}
function Xd (line 15) | function Xd(e){return z.setBackend(e)}
function Kd (line 15) | function Kd(){return z.ready()}
function ia (line 15) | function ia(){return z.backendName}
function fC (line 15) | function fC(e){z.removeBackend(e)}
function u2 (line 15) | function u2(e){return z.findBackend(e)}
function mC (line 15) | function mC(e){return z.findBackendFactory(e)}
function go (line 15) | function go(e,t,a=1){return z.registerBackend(e,t,a)}
function tr (line 15) | function tr(){return z.backend}
function gC (line 15) | function gC(e,t){W().setPlatform(e,t)}
function xC (line 15) | function xC(e){let t={input:R(e,"input","imag")};return z.runKernel(Rd,t)}
function AC (line 15) | function AC(e){let t={x:R(e,"x","neg")};return z.runKernel(Vl,t)}
function yC (line 15) | function yC(e){let t={input:R(e,"input","real")};return z.runKernel(Md,t)}
function bC (line 15) | function bC(e,t,a){let n=R(e,"x","transpose");if(t==null&&(t=n.shape.map...
function vC (line 15) | function vC(e,t,a){let n=R(e,"labels","confusionMatrix"),r=R(t,"predicti...
function GA (line 15) | function GA(e,t){let a=e.length,n=[];for(let r=0;r<a;r++){let s=a-1-r,i=...
function d2 (line 15) | function d2(e,t){let a=[];for(let n=0;n<t.length;n++){let r=e[e.length-n...
function zt (line 15) | function zt(e,t){let a=[],n=Math.max(e.length,t.length);for(let r=0;r<n;...
function p2 (line 15) | function p2(e,t,a){if(Xs(e),t!=null&&t.length!==3)throw new Error("tenso...
function HA (line 15) | function HA(e,t=3){if(t>4)throw new Error("Cannot construct Tensor with ...
function kC (line 15) | function kC(e){return e!=null&&e.data instanceof Uint8Array}
function IC (line 15) | function IC(){return typeof window!="undefined"&&typeof ImageBitmap!="un...
function SC (line 15) | function SC(e){return e!=null&&e.width!==0&&e.height!==0}
function TC (line 15) | function TC(e){return IC()&&!(e instanceof ImageBitmap)&&SC(e)&&!kC(e)}
function CC (line 15) | async function CC(e,t=3){let a=null;if(W().getBool("WRAP_TO_IMAGEBITMAP"...
function NC (line 15) | async function NC(e,t){let a=R(e,"img","toPixels");if(!(e instanceof pt)...
function jA (line 15) | function jA(e,t){let a=e.shape.length,n=t.shape.length;if(a<1)throw new ...
function f2 (line 15) | function f2(e,t,a){let n=t.rank>1?t.shape[t.rank-1]:1,r=t.rank>1?t.rank-...
function m2 (line 15) | function m2(e,t,a){if(t.rank<1)throw new Error(`tf.scatterND() expects t...
function qA (line 15) | function qA(e,t,a){let n=t.shape.length,r=n>1?t.shape[n-1]:1,s=a.length,...
function MC (line 15) | function MC(e,t,a){let n=e.shape.length;P(n===t.length,()=>`Error in sli...
function $C (line 15) | function $C(e){let t=[],a=0;for(;e>0;)e&1&&t.push(a),e/=2,a++;return t}
function _C (line 15) | function _C(e,t,a){let n=[];for(let r=0;r<e.length;r++)n[r]=Math.ceil((t...
function XA (line 15) | function XA(e,t,a,n){let r=[...e];for(let s=r.length;s<n.length;s++)r.pu...
function KA (line 15) | function KA(e,t,a){return a<=e?a:a-(t-1)}
function ZA (line 15) | function ZA(e,t){let a=[];for(let n=0;n<e;n++)a.push(t+n);return a}
function PC (line 15) | function PC(e,t,a,n,r,s,i,o,l){let u=e.length,p=new Array(u),c=new Array...
function YA (line 15) | function YA(e,t,a,n,r){let s=[...r],i=ZA(a,t);for(let o=0;o<s.length;o++...
function JA (line 15) | function JA(e,t,a,n,r){let s=[...r],i=ZA(a,t);for(let o=0;o<s.length;o++...
function QA (line 15) | function QA(e,t,a){let n=e[t];return(a&1<<t||n==null)&&(n=1),n}
function ey (line 15) | function ey(e,t,a,n,r,s){let i=t[r],o=a[r]||1;(e&1<<r||s&1<<r||i==null)&...
function ty (line 15) | function ty(e,t,a,n,r,s){let i=t[r],o=a[r]||1;(e&1<<r||s&1<<r||i==null)&...
function FC (line 15) | function FC(e,t,a){let n=a.length;for(let r=0;r<a.length;r++)if(a[r]>1){...
function OC (line 15) | function OC(e,t){let a=e.length>0?e[e.length-1]:1;for(let n=0;n<e.length...
function DC (line 15) | function DC(e,t,a){let n,r=e.shape.length;typeof t=="number"?n=[t,...new...
function zC (line 15) | function zC(e,t,a,n,r,s,i,o,l){let u;if(n==null?(u=new Array(t.length),u...
function LC (line 15) | function LC(e,t){t.beginMask=0,t.endMask=0,t.shrinkAxisMask=0;let a=0;t....
function q5 (line 15) | function q5(e,t,a,n,r,s){if(r[t])return a>0?s[t]:s[t+1&1];{let i=e<0?n+e...
method getClassName (line 15) | getClassName(){return this.constructor.className}
method fromConfig (line 15) | static fromConfig(e,t){return new e(t)}
method constructor (line 15) | constructor(){this.classNameMap={}}
method getMap (line 15) | static getMap(){return _s.instance==null&&(_s.instance=new _s),_s.instance}
method register (line 15) | static register(e){_s.getMap().classNameMap[e.className]=[e,e.fromConfig]}
function ss (line 15) | function ss(e){P(e.className!=null,()=>"Class being registered does not ...
function WC (line 15) | function WC(e,t,a){return a==null&&(a=g2()),s1(e,t,(n,r)=>x2(n,r,a))}
function g2 (line 15) | function g2(){return z.backend.floatPrecision()===32?BC:sy}
function s1 (line 15) | function s1(e,t,a){let n=!0;if((da(e)||da(t))&&(n=!1),da(e)&&da(t)&&(n=!...
function VC (line 19) | function VC(e,t){e().then(()=>t.fail(),()=>t()),typeof expect!="undefine...
function UC (line 19) | function UC(e,t){let a=typeof t=="string"||typeof t=="number"||typeof t=...
function GC (line 19) | function GC(e,t,a){if(a==null&&(a=g2()),!x2(e,t,a))throw new Error(`Numb...
function x2 (line 19) | function x2(e,t,a){return!isFinite(e)&&!isFinite(t)?!0:!(isNaN(e)||isNaN...
function HC (line 19) | function HC(e,t,a){for(let n=0;n<e.length;n++)if(e[n]<t||e[n]>a)throw ne...
function jC (line 19) | function jC(e,t){let a=new Float32Array(e),n=new Float32Array(t);if(a.le...
function iy (line 19) | function iy(e){for(let t=0;t<e.length;t++){let a=e[t];Array.isArray(a)?i...
function qC (line 19) | function qC(e){let t=document.createElement("video");return"playsInline"...
function XC (line 19) | async function XC(e){await e.play(),"requestVideoFrameCallback"in e&&awa...
function KC (line 19) | function KC(e,t){let a=R(e,"a","add"),n=R(t,"b","add");[a,n]=St(a,n);let...
function ZC (line 19) | function ZC(e,t){let a=R(e,"a","floorDiv"),n=R(t,"b","floorDiv");[a,n]=S...
function YC (line 19) | function YC(e,t){let a=R(e,"a","div"),n=R(t,"b","div");if([a,n]=St(a,n),...
function JC (line 19) | function JC(e,t){let a=R(e,"a","mul"),n=R(t,"b","mul");[a,n]=St(a,n);let...
function QC (line 19) | function QC(e){let t=R(e,"x","abs");if(t.dtype==="complex64"){let a={x:t...
function eN (line 19) | function eN(e){let t={x:R(e,"x","acos")};return z.runKernel(kl,t)}
function tN (line 19) | function tN(e){let t={x:R(e,"x","acosh")};return z.runKernel(Il,t)}
function aN (line 19) | function aN(e){P(Array.isArray(e),()=>"The argument passed to tf.addN() ...
function nN (line 19) | function nN(e,t=null,a=!1){let n={x:R(e,"x","all","bool")},r={axis:t,kee...
function rN (line 19) | function rN(e,t=null,a=!1){let n={x:R(e,"x","any","bool")},r={axis:t,kee...
function sN (line 19) | function sN(e,t=0){let a={x:R(e,"x","argMax")},n={axis:t};return z.runKe...
function iN (line 19) | function iN(e,t=0){let a={x:R(e,"x","argMin")},n={axis:t};return z.runKe...
function oN (line 19) | function oN(e){let t={x:R(e,"x","asin")};return z.runKernel(Sl,t)}
function lN (line 19) | function lN(e){let t={x:R(e,"x","asinh")};return z.runKernel(Tl,t)}
function uN (line 19) | function uN(e){let t={x:R(e,"x","atan")};return z.runKernel(Cl,t)}
function dN (line 19) | function dN(e,t){let a=R(e,"a","atan2"),n=R(t,"b","atan2");[a,n]=St(a,n)...
function pN (line 19) | function pN(e){let t={x:R(e,"x","atanh")};return z.runKernel(Nl,t)}
function cN (line 19) | function cN(e,t,a,n,r="NHWC",s){let i=e[3],o=[...t,i],l=yy(r);return Jd(...
function xy (line 19) | function xy(e,t,a,n,r,s,i="channelsLast"){let[o,l]=Ec(t),u;if(i==="chann...
function hN (line 19) | function hN(e,t,a,n,r,s,i="NDHWC"){let[o,l,u]=i1(t),p,c;if(i==="NDHWC")c...
function Jd (line 19) | function Jd(e,t,a,n,r,s,i=!1,o="channelsLast"){let[l,u,p,c]=[-1,-1,-1,-1...
function Ay (line 19) | function Ay(e,t,a,n,r,s=!1,i="channelsLast",o){let[l,u,p,c,d]=[-1,-1,-1,...
function fN (line 19) | function fN(e,t,a,n,r){n==null&&(n=y2(e,t,a));let s=e[0],i=e[1],o=Os((s-...
function mN (line 19) | function mN(e,t,a,n,r,s){r==null&&(r=y2(e,t,n));let i=e[0],o=e[1],l=e[2]...
function y2 (line 19) | function y2(e,t,a,n=1){let r=rl(t,n);return Math.floor((e[0]*(a-1)-a+r)/2)}
function Ec (line 19) | function Ec(e){return typeof e=="number"?[e,e,e]:e.length===2?[e[0],e[1]...
function i1 (line 19) | function i1(e){return typeof e=="number"?[e,e,e]:e}
function rl (line 19) | function rl(e,t){return t<=1?e:e+(e-1)*(t-1)}
function gN (line 19) | function gN(e,t,a,n,r,s,i,o,l){let u,p,c;if(typeof e=="number"){u={top:e...
function xN (line 19) | function xN(e,t,a,n,r,s,i,o,l,u,p){let c,d,h,f;if(typeof e=="number"){c=...
function Os (line 19) | function Os(e,t){if(!t)return Math.trunc(e);switch(t){case"round":return...
function dd (line 19) | function dd(e){let[t,a,n]=Ec(e);return t===1&&a===1&&n===1}
function kr (line 19) | function kr(e,t){return dd(e)||dd(t)}
function yy (line 19) | function yy(e){if(e==="NHWC")return"channelsLast";if(e==="NCHW")return"c...
function Sn (line 19) | function Sn(e,t,a){if(a!=null){if(typeof t=="string")throw Error(`Error ...
function AN (line 19) | function AN(e,t){let a={x:R(e,"x","reshape","string_or_numeric")},n={sha...
function yN (line 19) | function yN(e,t,a,n,r){let s=R(e,"x","avgPool","float32"),i=1;P(kr(a,i),...
function bN (line 19) | function bN(e,t,a,n,r,s="NDHWC"){let i=R(e,"x","avgPool3d","float32"),o=...
function vN (line 19) | function vN(e,t=0){P(e.length>=1,()=>"Pass at least one tensor to concat...
function wN (line 20) | function wN(e){let t={x:R(e,"x","sigmoid","float32")};return z.runKernel...
function kN (line 20) | function kN(e,t,a){let n=R(e,"x","slice","string_or_numeric");if(n.rank=...
function IN (line 20) | function IN(e){let t={x:R(e,"x","tanh","float32")};return z.runKernel(po...
function SN (line 20) | function SN(e,t,a,n,r,s){let i=R(e,"forgetBias","basicLSTMCell"),o=R(t,"...
function TN (line 20) | function TN(e,t,a){let n=R(e,"x","batchToSpaceND"),r=t.reduce((o,l)=>o*l...
function CN (line 20) | function CN(e){let t;return e.rank===0||e.rank===1?t=J(e,[1,1,1,e.size])...
function NN (line 20) | function NN(e,t,a,n,r,s){s==null&&(s=.001);let i=R(e,"x","batchNorm"),o=...
function EN (line 20) | function EN(e,t,a,n,r,s){let i=R(e,"x","batchNorm"),o=R(t,"mean","batchN...
function RN (line 20) | function RN(e,t,a,n,r,s){let i=R(e,"x","batchNorm"),o=R(t,"mean","batchN...
function MN (line 20) | function MN(e,t,a,n,r,s){let i=R(e,"x","batchNorm"),o=R(t,"mean","batchN...
function $N (line 20) | function $N(e,t,a){let n=R(e,"x","bincount"),r=R(t,"weights","bincount")...
function _N (line 20) | function _N(e,t){let a=R(e,"s0","broadcastArgs","int32"),n=R(t,"s1","bro...
function PN (line 20) | function PN(e,t){let a=R(e,"broadcastTo","x"),n=a.shape;if(Ja(t),t.lengt...
function FN (line 20) | function FN(e){let t={x:R(e,"x","ceil","float32")};return z.runKernel(ai...
function nr (line 20) | function nr(e,t,a){Ja(e);let n={shape:e,value:t,dtype:a};return z.runKer...
function ON (line 20) | function ON(e,t,a){let n=R(e,"x","clipByValue");if(P(t<=a,()=>`Error in ...
function DN (line 20) | function DN(e){return at(e,0)}
function zN (line 20) | function zN(e,t){return at(e,t)}
function LN (line 20) | function LN(e,t){return at(e,t)}
function BN (line 20) | function BN(e,t){return at(e,t)}
function WN (line 20) | function WN(e,t,a,n,r="NHWC",s=[1,1],i){let o=R(e,"x","conv2d","float32"...
function VN (line 20) | function VN(e,t,a,n,r="NWC",s=1,i){let o=R(e,"x","conv1d"),l=R(t,"filter...
function UN (line 20) | function UN(e,t,a,n,r,s="NHWC",i){P(e.length===t.rank,()=>`Length of inS...
function GN (line 20) | function GN(e,t,a,n,r,s){let i=R(e,"x","conv2dTranspose"),o=R(t,"filter"...
function HN (line 20) | function HN(e,t,a,n,r="NDHWC",s=[1,1,1]){let i=R(e,"x","conv3d"),o=R(t,"...
function jN (line 20) | function jN(e,t,a,n,r){P(e.length===t.rank,()=>`Length of inShape (${e.l...
function XN (line 20) | function XN(e,t,a,n,r){let s=R(e,"x","conv3dTranspose"),i=R(t,"filter","...
function KN (line 20) | function KN(e){let t={x:R(e,"x","cos","float32")};return z.runKernel(si,t)}
function ZN (line 20) | function ZN(e){let t={x:R(e,"x","cosh","float32")};return z.runKernel(ii...
function YN (line 20) | function YN(e,t=0,a=!1,n=!1){let r={x:R(e,"x","cumprod")},s={axis:t,excl...
function JN (line 20) | function JN(e,t=0,a=!1,n=!1){let r={x:R(e,"x","cumsum")},s={axis:t,exclu...
function QN (line 20) | function QN(e,t,a,n=!1){let r=R(e,"x","denseBincount"),s=R(t,"weights","...
function eE (line 20) | function eE(e,t,a="NHWC"){let n=R(e,"x","depthToSpace","float32"),r=a===...
function tE (line 24) | function tE(e,t,a,n,r="NHWC",s=[1,1],i){let o=R(e,"x","depthwiseConv2d",...
function aE (line 24) | function aE(e){let t={x:R(e,"x","diag")};return z.runKernel(Qc,t)}
function nE (line 24) | function nE(e,t,a,n,r=[1,1],s="NHWC"){let i=R(e,"x","dilation2d"),o=R(t,...
function rE (line 24) | function rE(e,t){let a=R(e,"a","equal","string_or_numeric"),n=R(t,"b","e...
function sE (line 24) | function sE(e,t,a){let n=R(t,"a","where"),r=R(a,"b","where"),s=R(e,"cond...
function iE (line 24) | function iE(e){let t={x:R(e,"x","zerosLike")};return z.runKernel(nu,t)}
function oE (line 24) | function oE(e,t){let a=R(e,"a","div"),n=R(t,"b","div");[a,n]=St(a,n);let...
function lE (line 24) | function lE(e,t){let a=R(e,"t1","dot"),n=R(t,"t2","dot");P((a.rank===1||...
function uE (line 24) | function uE(e,...t){let a=t.map((r,s)=>R(r,`tensors${s}`,"einsum")),n={e...
function dE (line 24) | function dE(e){let t={x:R(e,"x","elu","float32")};return z.runKernel(hi,t)}
function pE (line 24) | function pE(e){let t=R(e,"x","erf");P(t.dtype==="int32"||t.dtype==="floa...
function S2 (line 24) | function S2(e,t){for(let a=0;a<e.length;++a)if(e[e.length-a-1]!==t-1-a)r...
function Xy (line 24) | function Xy(e,t,a){let n=e.length+t.length,r=[],s=0,i=0;for(let o=0;o<n;...
function cE (line 24) | function cE(e,t){let a=[],n=e.length;for(let s=0;s<n;s++)t.indexOf(s)===...
function tp (line 24) | function tp(e,t){let a=t.map(n=>1);return Xy(e,a,t)}
function hE (line 24) | function hE(e,t,a){P(S2(t,a),()=>`${e} supports only inner-most axes for...
function fE (line 24) | function fE(e,t){if(S2(e,t))return null;let a=[];for(let n=0;n<t;++n)e.i...
function mE (line 24) | function mE(e){return e.map((t,a)=>[a,t]).sort((t,a)=>t[1]-a[1]).map(t=>...
function gE (line 24) | function gE(e,t){let a=[];for(let n=t-e;n<t;++n)a.push(n);return a}
function xE (line 24) | function xE(e,t=null,a=!1){let n={x:R(e,"x","max")},r={reductionIndices:...
function AE (line 24) | function AE(e,t=null,a=!1){let n={x:R(e,"x","min")},r={axis:t,keepDims:a...
function yE (line 24) | function yE(e,t){let a=R(e,"base","pow"),n=R(t,"exp","pow");[a,n]=St(a,n...
function Fe (line 24) | function Fe(e,t){if((da(e)&&t!=="string"||Array.isArray(e))&&t!=="comple...
function bE (line 24) | function bE(e){let t={x:R(e,"x","sqrt","float32")};return z.runKernel(no...
function vE (line 24) | function vE(e){let t=R(e,"x","square"),a={};return z.runKernel("Square",...
function wE (line 24) | function wE(e,t=null,a=!1){let n=R(e,"x","sum");n.dtype==="bool"&&(n=He(...
function kE (line 24) | function kE(e,t="euclidean",a=null,n=!1){e=R(e,"x","norm");let r=Ky(e,t,...
function Ky (line 24) | function Ky(e,t,a=null){if(e.rank===0)return qa(e);if(e.rank!==1&&a===nu...
function IE (line 24) | function IE(e,t=null,a=!1){return ap(e,"euclidean",t,a)}
function SE (line 24) | function SE(e){let t={x:R(e,"x","exp")};return z.runKernel(mi,t)}
function TE (line 24) | function TE(e,t=0){let a=R(e,"x","expandDims","string_or_numeric");P(t<=...
function CE (line 24) | function CE(e){let t={x:R(e,"x","expm1")};return z.runKernel(Pl,t)}
function NE (line 24) | function NE(e,t){let a=R(e,"x","tile","string_or_numeric");P(a.rank===t....
function EE (line 24) | function EE(e,t,a,n="float32"){t==null&&(t=e);let r=Me([e,t],n),s=e<=t?e...
function RE (line 24) | function RE(e){let t={x:R(e,"x","floor","float32")};return z.runKernel(x...
function ME (line 24) | function ME(e,t,a=0,n=0){let r=R(e,"x","gather"),s=R(t,"indices","gather...
function $E (line 24) | function $E(e,t){let a=R(e,"a","greater","string_or_numeric"),n=R(t,"b",...
function _E (line 24) | function _E(e,t){let a=R(e,"a","greaterEqual","string_or_numeric"),n=R(t...
function PE (line 24) | function PE(e){let t={x:R(e,"x","isFinite")};return z.runKernel(Dl,t)}
function FE (line 24) | function FE(e){let t={x:R(e,"x","isInf")};return z.runKernel(zl,t)}
function OE (line 24) | function OE(e){let t={x:R(e,"x","isNaN")};return z.runKernel(Ii,t)}
function DE (line 24) | function DE(e,t=.2){let a={x:R(e,"x","leakyRelu")},n={alpha:t};return z....
function zE (line 24) | function zE(e,t){let a=R(e,"a","less","string_or_numeric"),n=R(t,"b","le...
function LE (line 24) | function LE(e,t){let a=R(e,"a","lessEqual","string_or_numeric"),n=R(t,"b...
function ab (line 24) | function ab(e,t,a){if(a<=0)throw new Error("The number of values should ...
function BE (line 24) | function BE(e,t=5,a=1,n=1,r=.5){let s=R(e,"x","localResponseNormalizatio...
function WE (line 25) | function WE(e){let t={x:R(e,"x","log","float32")};return z.runKernel(Ni,t)}
function VE (line 25) | function VE(e){let t={x:R(e,"x","log1p")};return z.runKernel(Ll,t)}
function UE (line 25) | function UE(e){return P(Hr(e),()=>"The f passed in grad(f) must be a fun...
function GE (line 25) | function GE(e){return P(Hr(e),()=>"The f passed in grads(f) must be a fu...
function HE (line 25) | function HE(e){return P(Hr(e),()=>"The f passed in valueAndGrad(f) must ...
function jE (line 25) | function jE(e){return P(Hr(e),()=>"The f passed in valueAndGrads(f) must...
function rb (line 25) | function rb(e,t){P(Hr(e),()=>"The f passed in variableGrads(f) must be a...
function Qn (line 25) | function Qn(e){return z.customGrad(e)}
function mh (line 25) | function mh(e){if(e.filter(t=>t==null).length>0)throw new Error(`Cannot ...
function qE (line 26) | function qE(e){let t={x:R(e,"x","softplus")};return z.runKernel(Fd,t)}
function XE (line 26) | function XE(e){let t=R(e,"x","logSigmoid");return Qn(a=>({value:Xn($2(Xn...
function KE (line 26) | function KE(e,t){let a=R(e,"a","sub"),n=R(t,"b","sub");[a,n]=St(a,n);let...
function ZE (line 26) | function ZE(e,t=-1){let a=R(e,"logits","logSoftmax");if(t===-1&&(t=a.ran...
function YE (line 26) | function YE(e,t=null,a=!1){let n=R(e,"x","logSumExp"),r=wd(t,n.shape),s=...
function JE (line 26) | function JE(e,t){let a=R(e,"a","logicalAnd","bool"),n=R(t,"b","logicalAn...
function QE (line 26) | function QE(e){let t={x:R(e,"x","logicalNot","bool")};return z.runKernel...
function eR (line 26) | function eR(e,t){let a=R(e,"a","logicalOr","bool"),n=R(t,"b","logicalOr"...
function tR (line 26) | function tR(e,t){let a=R(e,"a","logicalXor","bool"),n=R(t,"b","logicalXo...
function aR (line 26) | function aR(e,t,a="left"){let n=R(e,"sortedSequence","searchSorted"),r=R...
function lb (line 26) | function lb(e,t){return gh(e,t,"left")}
function nR (line 26) | function nR(e,t,a,n,r){let s=R(e,"x","maxPool"),i=1,o=s,l=!1;s.rank===3&...
function rR (line 26) | function rR(e,t=[1,1,1],a,n,r,s="NDHWC"){let i=R(e,"x","maxPool3d"),o=i,...
function sR (line 26) | function sR(e,t,a,n,r=!1){let s={x:R(e,"x","maxPoolWithArgmax")},i={filt...
function iR (line 26) | function iR(e,t){let a=R(e,"a","maximum"),n=R(t,"b","maximum");[a,n]=St(...
function oR (line 26) | function oR(e,t=null,a=!1){let n={x:R(e,"x","mean")},r={axis:t,keepDims:...
function fn (line 26) | function fn(e,t="float32"){if(Ja(e),t==="complex64"){let n=fn(e,"float32...
function Wr (line 26) | function Wr(e,t="float32"){if(Ja(e),t==="complex64"){let n=Wr(e,"float32...
function pb (line 26) | function pb(e,t,{indexing:a="xy"}={}){if(a!=="xy"&&a!=="ij")throw new Ty...
function lR (line 26) | function lR(e,t){let a=R(e,"a","minimum"),n=R(t,"b","minimum");[a,n]=St(...
function uR (line 26) | function uR(e,t,a){P(a==="reflect"||a==="symmetric",()=>`Invalid mode. M...
function dR (line 26) | function dR(e,t){let a=R(e,"a","mod"),n=R(t,"b","mod");[a,n]=St(a,n);let...
function pR (line 26) | function pR(e,t=null,a=!1){e=R(e,"x","moments");let n=wd(t,e.shape),r=cd...
function cR (line 26) | function cR(e,t,a,n){let r=R(t,"data","multiRNNCell"),s=ud(a,"c","multiR...
function hR (line 26) | function hR(e,t,a,n=!1){let r=R(e,"logits","multinomial"),s=r.size,i=r.r...
function fR (line 26) | function fR(e,t){let a=R(e,"a","notEqual","string_or_numeric"),n=R(t,"b"...
function mR (line 26) | function mR(e){let t={x:R(e,"x","onesLike")};return z.runKernel(Gl,t)}
function gR (line 26) | function gR(e,t){let a=R(e,"v1","outerProduct"),n=R(t,"v2","outerProduct...
function xR (line 26) | function xR(e,t,a=0){let n=R(e,"x","pad");if(n.rank===0)throw new Error(...
function AR (line 26) | function AR(e,t,a=0){return P(t.length===2,()=>"Invalid number of paddin...
function yR (line 26) | function yR(e,t,a=0){return P(t.length===2&&t[0].length===2&&t[1].length...
function bR (line 26) | function bR(e,t,a=0){return P(t.length===3&&t[0].length===2&&t[1].length...
function vR (line 26) | function vR(e,t,a=0){return P(t.length===4&&t[0].length===2&&t[1].length...
function wR (line 26) | function wR(e,t,a){let n=R(e,"x","spaceToBatchND");P(n.rank>=1+t.length,...
function kR (line 26) | function kR(e,t,a,n,r,s,i){r==null&&(r=[1,1]),s==null&&(s=1),n===0&&(n="...
function IR (line 26) | function IR(e,t,a){let n=a.map(p=>p[0]),r=a.map(p=>p[1]),s=e.concat(n,r)...
function SR (line 26) | function SR(e,t){let a=e.map((s,i)=>s+(s-1)*(t[i]-1)).map(s=>s-1),n=a.ma...
function TR (line 26) | function TR(e,t){let a=R(e,"x","prelu"),n=R(t,"alpha","prelu"),r={x:a,al...
function CR (line 26) | function CR(e,t=null,a=!1){let n=R(e,"x","prod");n.dtype==="bool"&&(n=He...
function NR (line 26) | function NR(e,t,a,n){let r=e.map((p,c)=>R(p,`tensors${c}`,"raggedGather"...
function ER (line 26) | function ER(e,t,a){let n=R(e,"starts","raggedRange"),r=R(t,"limits","rag...
function RR (line 26) | function RR(e,t,a,n,r){let s=R(e,"shape","raggedTensorToTensor","int32")...
function MR (line 26) | function MR(e,t,a){Ja(e);let n=At(e),r=null;if(a==null||a==="float32")r=...
method constructor (line 26) | constructor(e,t,a,n,r){this.mean=e,this.stdDev=t,this.dtype=a,this.nextV...
method nextValue (line 26) | nextValue(){if(!isNaN(this.nextVal)){let n=this.nextVal;return this.next...
method convertValue (line 26) | convertValue(e){return this.dtype==null||this.dtype==="float32"?e:Math.r...
method isValidTruncated (line 26) | isValidTruncated(e){return e<=this.upper&&e>=this.lower}
method constructor (line 26) | constructor(e,t,a,n){this.alpha=e,this.beta=1/t,this.dtype=a;let r=n||Ma...
method nextValue (line 26) | nextValue(){let e,t,a,n,r,s;for(;;){do n=this.randn.nextValue(),s=1+this...
method convertValue (line 26) | convertValue(e){return this.dtype==="float32"?e:Math.round(e)}
method constructor (line 26) | constructor(e=0,t=1,a,n){if(this.canReturnFloat=()=>this.dtype==null||th...
method convertValue (line 26) | convertValue(e){return this.canReturnFloat()?e:Math.round(e)}
method nextValue (line 26) | nextValue(){return this.convertValue(this.min+this.range*this.random())}
function PR (line 26) | function PR(e,t,a=1,n="float32",r){if(Ja(e),a==null&&(a=1),n==null&&(n="...
function FR (line 26) | function FR(e,t=0,a=1,n,r){if(Ja(e),n!=null&&n==="bool")throw new Error(...
function OR (line 26) | function OR(e,t,a){if(t!=null&&t==="bool")throw new Error(`Unsupported d...
function DR (line 26) | function DR(e,t=0,a=1,n="float32",r){Ja(e);let s=Me(e,n),i=new _R(t,a,nu...
function hl (line 26) | function hl(e,t,a=1,n="float32"){if(a===0)throw new Error("Cannot have a...
function zR (line 26) | function zR(e){let t={x:R(e,"x","reciprocal")};return z.runKernel(qi,t)}
function LR (line 26) | function LR(e){let t={x:R(e,"x","relu")};return z.runKernel(Xi,t)}
function BR (line 26) | function BR(e){let t={x:R(e,"x","relu6")};return z.runKernel(Yi,t)}
function WR (line 26) | function WR(e,t){let a={x:R(e,"x","reverse")},n={dims:t};return z.runKer...
function VR (line 26) | function VR(e){let t=R(e,"x","reverse");return P(t.rank===1,()=>`Error i...
function UR (line 26) | function UR(e,t){let a=R(e,"x","reverse");return P(a.rank===2,()=>`Error...
function GR (line 26) | function GR(e,t){let a=R(e,"x","reverse");return P(a.rank===3,()=>`Error...
function HR (line 26) | function HR(e,t){let a=R(e,"x","reverse");return P(a.rank===4,()=>`Error...
function jR (line 26) | function jR(e){let t={x:R(e,"x","round")};return z.runKernel(Xl,t)}
function qR (line 26) | function qR(e){let t={x:R(e,"x","rsqrt","float32")};return z.runKernel(Q...
function XR (line 26) | function XR(e){let t={x:R(e,"x","selu")};return z.runKernel(_d,t)}
function KR (line 26) | function KR(e,t,a,n,r,s=[1,1],i="NHWC"){let o=R(e,"x","separableConv2d")...
function ZR (line 26) | async function ZR(e,t){let a=R(e,"x","setdiff1d"),n=R(t,"y","setdiff1d")...
function YR (line 26) | function YR(e){let t={x:R(e,"x","sign")};return z.runKernel(Pd,t)}
function JR (line 26) | function JR(e){let t={x:R(e,"x","sin","float32")};return z.runKernel(to,t)}
function QR (line 26) | function QR(e){let t={x:R(e,"x","sinh")};return z.runKernel(Yl,t)}
function eM (line 26) | function eM(e,t,a){let n=R(e,"x","slice1d");return P(n.rank===1,()=>`sli...
function tM (line 26) | function tM(e,t,a){let n=R(e,"x","slice2d");return P(n.rank===2,()=>`sli...
function aM (line 26) | function aM(e,t,a){let n=R(e,"x","slice3d");return P(n.rank===3,()=>`sli...
function nM (line 26) | function nM(e,t,a){let n=R(e,"x","slice4d");return P(n.rank===4,()=>`sli...
function rM (line 26) | function rM(e,t=-1){let a=R(e,"logits","softmax","float32");if(t===-1&&(...
function sM (line 26) | function sM(e){P(e.dtype==="complex64",()=>`The dtype for tf.spectral.ff...
function iM (line 26) | function iM(e){P(e.dtype==="complex64",()=>`The dtype for tf.spectral.if...
function oM (line 26) | function oM(e){let t=e.shape[e.shape.length-1],a=e.size/t,n;if(t<=2){let...
function lM (line 26) | function lM(e,t,a=0){let n={x:R(e,"x","split")},r={numOrSizeSplits:t,axi...
function uM (line 26) | function uM(e,t){P(e.dtype==="float32",()=>`The dtype for rfft() must be...
function dM (line 26) | function dM(e,t){let a=R(e,"a","squaredDifference"),n=R(t,"b","squaredDi...
function pM (line 26) | function pM(e,t){let a=R(e,"x","squeeze","string_or_numeric");return J(a...
function cM (line 26) | function cM(e,t=0){let a=ud(e,"tensors","stack","string_or_numeric");P(a...
function hM (line 26) | function hM(e,t=0){let a={x:R(e,"x","step")},n={alpha:t};return z.runKer...
function fM (line 26) | function fM(e,t,a,n,r=0,s=0,i=0,o=0,l=0){let u={x:R(e,"x","stridedSlice"...
function mM (line 26) | function mM(e){let t={x:R(e,"x","tan","float32")};return z.runKernel(uo,t)}
function Ht (line 26) | function Ht(e,t){Xs(e);let a=Yn(e,t);if(a.length!==1)throw new Error("te...
function Kn (line 26) | function Kn(e,t,a){if(Xs(e),t!=null&&t.length!==2)throw new Error("tenso...
function jb (line 26) | function jb(e,t,a){if(Xs(e),t!=null&&t.length!==4)throw new Error("tenso...
function qb (line 26) | function qb(e,t,a){if(Xs(e),t!=null&&t.length!==5)throw new Error("tenso...
function Xb (line 26) | function Xb(e,t,a){if(Xs(e),t!=null&&t.length!==6)throw new Error("tenso...
function gM (line 26) | function gM(e,t=1,a=!0){let n=R(e,"x","topk");if(n.rank===0)throw new Er...
function xM (line 26) | function xM(e,t=0,a=1,n,r){if(Ja(e),n!=null&&n==="bool")throw new Error(...
function AM (line 26) | function AM(e,t=0){let a=R(e,"x","unique","string_or_numeric");P(a.rank>...
function yM (line 26) | function yM(e,t,a){let n=R(e,"x","unsortedSegmentSum"),r=R(t,"segmentIds...
function bM (line 26) | function bM(e,t=0){let a=R(e,"x","unstack","string_or_numeric");P(t>=-a....
function Qb (line 26) | function Qb(e,t){return gh(e,t,"right")}
function e4 (line 26) | function e4(e,t=!0,a,n){return z.makeVariable(e,t,a,n)}
function t4 (line 26) | function t4(e,t){let a=[];for(let s=0;s<t.length;s++)t[s]&&a.push(s);let...
function vM (line 26) | async function vM(e){let t=R(e,"condition","whereAsync","bool"),a=await ...
function wM (line 26) | async function wM(e,t,a){let n=R(e,"tensor","boolMask"),r=R(t,"mask","bo...
function kM (line 26) | function kM(e,t,a,n,r=!0){let s=R(e,"v","movingAverage"),i=R(t,"x","movi...
function IM (line 26) | function IM(e,t,a){Ja(a);let n=R(e,"indices","scatterND","int32"),r=R(t,...
function SM (line 26) | function SM(e,t,a,n){if(e.dtype!=="int32")throw new Error(`tf.sparseToDe...
function TM (line 26) | function TM(e,t,a,n=0){Ja(a);let r=R(e,"sparseIndices","sparseToDense","...
function CM (line 26) | function CM(e,t){let a=R(t,"indices","gatherND","int32"),n={params:R(e,"...
function NM (line 26) | function NM(e,t){if(t==null)return e.shape.slice();if(es(e.shape,t))retu...
function EM (line 26) | function EM(e,t,a,n){let r=R(e,"x","dropout");if(P(r.dtype==="float32",(...
function J2 (line 26) | function J2(e){return Math.floor(Math.pow(2,Math.ceil(Math.log(e)/Math.l...
function vh (line 26) | function vh(e,t,a){let n=1-e%2,r=new Float32Array(e);for(let s=0;s<e;++s...
function RM (line 26) | async function RM(e,t,a=1){let n=R(e,"predictions","inTopK"),r=R(t,"targ...
function MM (line 26) | function MM(e,t,a,n,r,s="NHWC",i){let o=e;e.rank===3&&(o=J(e,[1,e.shape[...
function wh (line 26) | function wh(e,t,a){if(a==null||a==="linear")return e;if(a==="relu")retur...
function kh (line 26) | function kh(e,t){let a=t,n=d2(e.shape,t.shape);return n.length>0&&(a=tt(...
function Ih (line 26) | function Ih(e,t,a,n){if(t==="linear")return e;if(t==="relu")return rp(e)...
function _M (line 26) | function _M({x:e,filter:t,strides:a,pad:n,dataFormat:r="NHWC",dilations:...
function FM (line 26) | function FM(e,t,a,n,r,s=[1,1],i){let o=e;e.rank===3&&(o=J(e,[1,e.shape[0...
function DM (line 26) | function DM(e,t,a,n,r,s=[1,1],i){let o=t,l=!1;t.rank===3&&(l=!0,o=J(t,[1...
function LM (line 26) | function LM({x:e,filter:t,strides:a,pad:n,dataFormat:r="NHWC",dilations:...
function WM (line 26) | function WM({a:e,b:t,transposeA:a=!1,transposeB:n=!1,bias:r,activation:s...
function UM (line 26) | function UM(e){return vh(e,.54,.46)}
function HM (line 26) | function HM(e){return vh(e,.5,.5)}
function jM (line 26) | function jM(e,t,a,n=!1,r=0){let s=0,i=[];for(;s+t<=e.size;)i.push(Pe(e,s...
function qM (line 26) | function qM(e,t,a,n,r=u4){n==null&&(n=J2(t));let s=d4(e,t,a),i=ae(s,r(t)...
function KM (line 26) | function KM(e,t,a,n,r="bilinear",s=0){let i=R(e,"image","cropAndResize")...
function YM (line 26) | function YM(e){let t=R(e,"image","flipLeftRight","float32");P(t.rank===4...
function QM (line 26) | function QM(e){let t=R(e,"image","grayscaleToRGB"),a=t.rank-1,n=t.shape[...
function t$ (line 26) | function t$(e,t,a=0,n=.5){let r=R(e,"image","rotateWithOffset","float32"...
function iu (line 26) | function iu(e,t,a,n,r,s){n==null&&(n=.5),r==null&&(r=Number.NEGATIVE_INF...
function n$ (line 26) | function n$(e,t,a,n=.5,r=Number.NEGATIVE_INFINITY){let s=R(e,"boxes","no...
function s$ (line 26) | function s$(e,t,a){let n=i$(e,t,a),r=n<0?-(n+1):n;e.splice(r,0,t)}
function i$ (line 26) | function i$(e,t,a){return l$(e,t,a||o$)}
function o$ (line 26) | function o$(e,t){return e>t?1:e<t?-1:0}
function l$ (line 26) | function l$(e,t,a){let n=0,r=e.length,s=0,i=!1;for(;n<r;){s=n+(r-n>>>1);...
function p4 (line 26) | function p4(e,t,a,n,r){return e3(e,t,a,n,r,0)}
function c4 (line 26) | function c4(e,t,a,n,r,s){return e3(e,t,a,n,r,0,!1,s,!0)}
function h4 (line 26) | function h4(e,t,a,n,r,s){return e3(e,t,a,n,r,s,!0)}
function e3 (line 26) | function e3(e,t,a,n,r,s,i=!1,o=!1,l=!1){let u=[];for(let g=0;g<t.length;...
function u$ (line 26) | function u$(e,t,a){let n=e.subarray(t*4,t*4+4),r=e.subarray(a*4,a*4+4),s...
function d$ (line 26) | function d$(e,t,a){let n=Math.exp(t*a*a);return a<=e?n:0}
function X5 (line 26) | function X5(e,t){return e.score-t.score||e.score===t.score&&t.boxIndex-e...
function p$ (line 26) | async function p$(e,t,a,n=.5,r=Number.NEGATIVE_INFINITY){let s=R(e,"boxe...
function h$ (line 26) | function h$(e,t,a,n=.5,r=Number.NEGATIVE_INFINITY,s=0){let i=R(e,"boxes"...
function m$ (line 26) | async function m$(e,t,a,n=.5,r=Number.NEGATIVE_INFINITY,s=0){let i=R(e,"...
function x$ (line 26) | function x$(e,t,a,n=.5,r=Number.NEGATIVE_INFINITY,s=!1){let i=R(e,"boxes...
function y$ (line 26) | async function y$(e,t,a,n=.5,r=Number.NEGATIVE_INFINITY,s=!1){let i=R(e,...
function v$ (line 26) | function v$(e,t,a=!1,n=!1){let r=R(e,"images","resizeBilinear");P(r.rank...
function k$ (line 26) | function k$(e,t,a=!1,n=!1){let r=R(e,"images","resizeNearestNeighbor");P...
function S$ (line 26) | function S$(e,t="binary",a=!1,n=.5){let r=R(e,"image","threshold"),s=.29...
function T$ (line 26) | function T$(e,t){let a=Ht([-1]),n=Ht([0]),r=Ht([0]),s,i,o,l,u,p;for(let ...
function N$ (line 26) | function N$(e,t,a="nearest",n="constant",r=0,s){let i=R(e,"image","trans...
function R$ (line 26) | function R$(e,t,a){P(t%1===0,()=>`bandPart(): numLower must be an intege...
function $$ (line 26) | function $$(e){let t;if(Array.isArray(e)){t=!1,P(e!=null&&e.length>0,()=...
function P$ (line 26) | function P$(e,t=!1){if(P(e.rank>=2,()=>`qr() requires input tensor to ha...
function K5 (line 26) | function K5(e,t=!1){return z.tidy(()=>{P(e.shape.length===2,()=>`qr2d() ...
function O$ (line 26) | function O$(e,t,a=ya.SUM_BY_NONZERO_WEIGHTS){let n=R(e,"losses","compute...
function D$ (line 26) | function D$(e,t,a,n=ya.SUM_BY_NONZERO_WEIGHTS){let r=R(e,"labels","absol...
function L$ (line 26) | function L$(e,t,a,n,r=ya.SUM_BY_NONZERO_WEIGHTS){let s=R(e,"labels","cos...
function W$ (line 26) | function W$(e,t,a,n=ya.SUM_BY_NONZERO_WEIGHTS){let r=R(e,"labels","hinge...
function U$ (line 26) | function U$(e,t,a,n=1,r=ya.SUM_BY_NONZERO_WEIGHTS){let s=R(e,"labels","h...
function H$ (line 26) | function H$(e,t,a,n=1e-7,r=ya.SUM_BY_NONZERO_WEIGHTS){let s=R(e,"labels"...
function q$ (line 26) | function q$(e,t,a,n=ya.SUM_BY_NONZERO_WEIGHTS){let r=R(e,"labels","meanS...
function K$ (line 26) | function K$(e,t){let a=R(e,"labels","sigmoidCrossEntropyWithLogits"),n=R...
function Z$ (line 26) | function Z$(e,t,a,n=0,r=ya.SUM_BY_NONZERO_WEIGHTS){let s=R(e,"multiClass...
function J$ (line 26) | function J$(e,t,a=-1){if(a===-1&&(a=t.rank-1),a!==t.rank-1)throw Error(`...
function Q$ (line 26) | function Q$(e,t,a,n=0,r=ya.SUM_BY_NONZERO_WEIGHTS){let s=R(e,"onehotLabe...
function t_ (line 26) | function t_(e,t,a,n){let r=R(e,"indices","sparseFillEmptyRows","int32"),...
function n_ (line 27) | function n_(e,t,a){let n=R(e,"inputIndices","sparseReshape","int32"),r=R...
function s_ (line 28) | function s_(e,t,a){let n=R(e,"data","sparseSegmentMean"),r=R(t,"indices"...
function o_ (line 30) | function o_(e,t,a){let n=R(e,"data","sparseSegmentSum"),r=R(t,"indices",...
function u_ (line 32) | function u_(e,t,a,n,r,s,i,o){let l=R(e,"data","stringNGrams","string");i...
function p_ (line 32) | function p_(e,t,a=!0){let n=R(e,"input","stringSplit","string"),r=R(t,"d...
function h_ (line 32) | function h_(e,t){let a=R(e,"input","stringToHashBucketFast","string"),n=...
method minimize (line 32) | minimize(e,t=!1,a){let{value:n,grads:r}=this.computeGradients(e,a);if(a!...
method iterations (line 32) | get iterations(){return this.iterations_==null&&(this.iterations_=0),thi...
method incrementIterations (line 32) | incrementIterations(){this.iterations_=this.iterations+1}
method computeGradients (line 32) | computeGradients(e,t){return rb(e,t)}
method dispose (line 32) | dispose(){this.iterations_!=null&&Y(this.iterations_)}
method saveIterations (line 32) | async saveIterations(){return this.iterations_==null&&(this.iterations_=...
method getWeights (line 32) | async getWeights(){throw new Error("getWeights() is not implemented for ...
method setWeights (line 32) | async setWeights(e){throw new Error(`setWeights() is not implemented for...
method extractIterations (line 32) | async extractIterations(e){return this.iterations_=(await e[0].tensor.da...
method constructor (line 32) | constructor(e,t,a=null){super(),this.learningRate=e,this.rho=t,this.epsi...
method applyGradients (line 32) | applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).for...
method dispose (line 32) | dispose(){this.accumulatedUpdates!=null&&(Y(this.accumulatedGrads.map(e=...
method getWeights (line 32) | async getWeights(){let e=[...this.accumulatedGrads,...this.accumulatedUp...
method setWeights (line 32) | async setWeights(e){e=await this.extractIterations(e);let t=e.length/2,a...
method getConfig (line 32) | getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:t...
method fromConfig (line 32) | static fromConfig(e,t){return new e(t.learningRate,t.rho,t.epsilon)}
method constructor (line 32) | constructor(e,t=.1){super(),this.learningRate=e,this.initialAccumulatorV...
method applyGradients (line 32) | applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).for...
method dispose (line 32) | dispose(){this.accumulatedGrads!=null&&Y(this.accumulatedGrads.map(e=>e....
method getWeights (line 32) | async getWeights(){return[await this.saveIterations()].concat(this.accum...
method setWeights (line 32) | async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accu...
method getConfig (line 32) | getConfig(){return{learningRate:this.learningRate,initialAccumulatorValu...
method fromConfig (line 32) | static fromConfig(e,t){return new e(t.learningRate,t.initialAccumulatorV...
method constructor (line 32) | constructor(e,t,a,n=null){super(),this.learningRate=e,this.beta1=t,this....
method applyGradients (line 32) | applyGradients(e){let t=Array.isArray(e)?e.map(a=>a.name):Object.keys(e)...
method dispose (line 32) | dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulat...
method getWeights (line 32) | async getWeights(){let e=[...this.accumulatedFirstMoment,...this.accumul...
method setWeights (line 32) | async setWeights(e){e=await this.extractIterations(e),$e(()=>{this.accBe...
method getConfig (line 32) | getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2...
method fromConfig (line 32) | static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.eps...
method constructor (line 32) | constructor(e,t,a,n=null,r=0){super(),this.learningRate=e,this.beta1=t,t...
method applyGradients (line 32) | applyGradients(e){let t=Array.isArray(e)?e.map(a=>a.name):Object.keys(e)...
method dispose (line 32) | dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumula...
method getWeights (line 32) | async getWeights(){throw new Error("getWeights() is not implemented for ...
method setWeights (line 32) | async setWeights(e){throw new Error("setWeights() is not implemented for...
method getConfig (line 32) | getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2...
method fromConfig (line 32) | static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.eps...
method constructor (line 32) | constructor(e){super(),this.learningRate=e,this.setLearningRate(e)}
method applyGradients (line 32) | applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).for...
method setLearningRate (line 32) | setLearningRate(e){this.learningRate=e,this.c!=null&&this.c.dispose(),th...
method dispose (line 32) | dispose(){this.c.dispose()}
method getWeights (line 32) | async getWeights(){return[await this.saveIterations()]}
method setWeights (line 32) | async setWeights(e){if(e=await this.extractIterations(e),e.length!==0)th...
method getConfig (line 32) | getConfig(){return{learningRate:this.learningRate}}
method fromConfig (line 32) | static fromConfig(e,t){return new e(t.learningRate)}
method constructor (line 32) | constructor(e,t,a=!1){super(e),this.learningRate=e,this.momentum=t,this....
method applyGradients (line 32) | applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).for...
method dispose (line 32) | dispose(){this.m.dispose(),this.accumulations!=null&&Y(this.accumulation...
method setMomentum (line 32) | setMomentum(e){this.momentum=e}
method getWeights (line 32) | async getWeights(){return[await this.saveIterations()].concat(this.accum...
method setWeights (line 32) | async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accu...
method getConfig (line 32) | getConfig(){return{learningRate:this.learningRate,momentum:this.momentum...
method fromConfig (line 32) | static fromConfig(e,t){return new e(t.learningRate,t.momentum,t.useNeste...
method constructor (line 32) | constructor(e,t=.9,a=0,n=null,r=!1){if(super(),this.learningRate=e,this....
method applyGradients (line 32) | applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).for...
method dispose (line 32) | dispose(){this.accumulatedMeanSquares!=null&&Y(this.accumulatedMeanSquar...
method getWeights (line 32) | async getWeights(){let e=[...this.accumulatedMeanSquares,...this.accumul...
method setWeights (line 32) | async setWeights(e){e=await this.extractIterations(e);let t=this.centere...
method getConfig (line 32) | getConfig(){return{learningRate:this.learningRate,decay:this.decay,momen...
method fromConfig (line 32) | static fromConfig(e,t){return new e(t.learningRate,t.decay,t.momentum,t....
method sgd (line 32) | static sgd(e){return new ip(e)}
method momentum (line 32) | static momentum(e,t,a=!1){return new Rh(e,t,a)}
method rmsprop (line 32) | static rmsprop(e,t=.9,a=0,n=null,r=!1){return new Mh(e,t,a,n,r)}
method adam (line 32) | static adam(e=.001,t=.9,a=.999,n=null){return new Nh(e,t,a,n)}
method adadelta (line 32) | static adadelta(e=.001,t=.95,a=null){return new Th(e,t,a)}
method adamax (line 32) | static adamax(e=.002,t=.9,a=.999,n=null,r=0){return new Eh(e,t,a,n,r)}
method adagrad (line 32) | static adagrad(e,t=.1){return new Ch(e,t)}
function b4 (line 32) | function b4(){return new Promise(e=>g_(()=>e()))}
function x_ (line 32) | function x_(e,t){let a=e[0].length;e.forEach((r,s)=>{P(r.length===a,()=>...
function A_ (line 32) | function A_(e,t){let a=e[0].slice();for(let n=1;n<e.length;n++)a[t]+=e[n...
function y_ (line 32) | function y_(e,t,a){let n=new Array;if(a==null&&t==null)return n;if(t==nu...
function b_ (line 32) | function b_(e){let t={FIRST_DIM_SIZE:Hn.FIRST_DIM_SIZE,VALUE_ROWIDS:Hn.V...
function v_ (line 32) | function v_(e){return e.length===0?0:e[0]===Hn.FIRST_DIM_SIZE?e.length-1...
function w_ (line 32) | function w_(e,t){if(e==null||t==null)return;let a=e.length,n=t.length;if...
function k_ (line 32) | function k_(e){return e<=t3?e:Ic(e,Math.floor(Math.sqrt(e)))}
function I_ (line 32) | function I_(e,t,a){let n=a*(typeof e=="number"?e:e[0]),r=t*(typeof e=="n...
function S_ (line 32) | function S_(e,t,a,n=!0){let r=[];if(n)r=r.concat(t.slice(0)),r.push(e[0]...
function T_ (line 32) | function T_(e,t,a=!0){let n=[];if(a){n.push(t);for(let r=t+1;r<e;++r)r<=...
function C_ (line 32) | function C_(e,t,a,n=!0){let r=[];n?r.push(e[0]/a):r.push(e[0]*a);for(let...
function N_ (line 32) | function N_(e,t){let a=[0];for(let n=0;n<t;++n)a.push(e[n][0]);return a}
function E_ (line 32) | function E_(e,t,a){let n=e.slice(0,1);for(let r=0;r<a;++r)n.push(e[r+1]-...
function z_ (line 32) | function z_(e,t){if(e.length!==t.length)throw new Error(`Cannot merge re...
function L_ (line 32) | function L_(e){let t=new Float32Array(e.length/2),a=new Float32Array(e.l...
function B_ (line 32) | function B_(e){let t=Math.ceil(e.length/4),a=new Float32Array(t),n=new F...
function W_ (line 32) | function W_(e){let t=Math.floor(e.length/4),a=new Float32Array(t),n=new ...
function V_ (line 32) | function V_(e,t){let a=e[t*2],n=e[t*2+1];return{real:a,imag:n}}
function U_ (line 32) | function U_(e,t,a,n){e[n*2]=t,e[n*2+1]=a}
function G_ (line 32) | function G_(e,t){let a=new Float32Array(e/2),n=new Float32Array(e/2);for...
function H_ (line 32) | function H_(e,t,a){let n=(a?2:-2)*Math.PI*(e/t),r=Math.cos(n),s=Math.sin...
function q_ (line 32) | function q_(e,t){e=e.replace(/\s/g,"");let a=(e.length-e.replace(j_,"")....
function X_ (line 32) | function X_(e,t){let a=new Array(e);a.fill(-1);for(let r=0;r<t.length;++...
function K_ (line 32) | function K_(e,t,a){let n=new Array(e);for(let r=0;r<a.length;++r){let s=...
function Z_ (line 32) | function Z_(e,t){let a=e,n=[],r=0;e.length===0&&a.push(-1),r=e.length+1;...
function Y_ (line 32) | function Y_(e){return e.every((t,a)=>t===a)}
function J_ (line 32) | function J_(e,t){let a=[];for(let n=0;n<e.length;++n)(e[n].length===0||e...
function Q_ (line 32) | function Q_(e,t,a=0){let n=[];if(typeof t=="number")P(e.shape[a]%t===0,(...
function eP (line 32) | function eP(e){return`Received SparseTensor with denseShape[0] = 0 but
function tP (line 33) | function tP(e,t){return`indices(${e}, 0) is invalid: ${t} < 0`}
function aP (line 33) | function aP(e,t,a){return`indices(${e}, 0) is invalid: ${t} >= ${a}`}
function nP (line 33) | function nP(e,t){return`only one output dimension may be -1, not both ${...
function rP (line 33) | function rP(e,t){return`size ${e} must be non-negative, not ${t}`}
function sP (line 33) | function sP(){return"reshape cannot infer the missing input size for an ...
function iP (line 33) | function iP(e,t){let a=At(e),n=At(t);return`Input to reshape is a Sparse...
function oP (line 34) | function oP(e,t){let a=At(e),n=At(t);return`Input to reshape is a tensor...
function lP (line 34) | function lP(){return"segment ids must be >= 0"}
function uP (line 34) | function uP(){return"segment ids are not increasing"}
function dP (line 34) | function dP(e,t){return`Segment id ${e} out of range [0, ${t}), possibly...
function pP (line 34) | function pP(e,t,a){return`Bad: indices[${e}] == ${t} out of range [0, ${...
function cP (line 34) | function cP(e,t){let a=!1,n;for(e<=t3?(n=e,a=!0):n=Ic(e,Math.floor(Math....
function hP (line 34) | function hP(e,t,a){let n=[],r=e.length;for(let s=0;s<r;s++)s!==t?n.push(...
function fP (line 34) | function fP(e,t,a,n){let r=t.shape.length,s=e.shape.length;if(n!==0&&(n<...
function mP (line 35) | function mP(e){try{return e.map(t=>Tc(t))}catch(t){throw new Error(`Fail...
function gP (line 35) | function gP(e){return e.map(t=>Gd(t))}
function AP (line 35) | function AP(e,t){let a={tfOpName:e,category:"custom",inputs:[],attrs:[],...
function w4 (line 35) | function w4(e){return a3[e]}
function yP (line 35) | function yP(e){delete a3[e]}
function k (line 35) | function k(e,t,a,n,r){let s=t.inputParams[e];if(s&&s.inputIndexStart!==v...
function ba (line 35) | function ba(e,t,a,n){let[r,s]=ja(e);if(n!=null){let o=n.getHashTableHand...
function bP (line 35) | function bP(e,t,a){return t[Mc(e,a.currentContextId)]}
function mr (line 35) | function mr(e,t){let[a,n,r]=ja(e);return[Mc(a,t&&t.currentContextId),n,r]}
function Mc (line 35) | function Mc(e,t){return t?`${e}-${t}`:e}
function ja (line 35) | function ja(e){let t=e.split(":");if(t.length===1)return[e,0,void 0];let...
function mc (line 35) | function mc(e,t,a){let n=k("pad",e,t,a);if(n==="explicit"){n=k("explicit...
function gr (line 35) | function gr(e){return e.kept?e:wa(e)}
method constructor (line 35) | constructor(){let e=[k4,I4,S4,T4,C4,N4,E4,R4,M4,$4,_4,P4,F4,O4,D4,z4,L4,...
method Instance (line 35) | static get Instance(){return this._instance||(this._instance=new this)}
method transformGraph (line 35) | transformGraph(e,t={}){let a=e.node,n=[],r=[],s=[],i=a.reduce((f,m)=>(f[...
method mapSignatureEntries (line 35) | mapSignatureEntries(e){return Object.keys(e||{}).reduce((t,a)=>(t[e[a].n...
method mapNode (line 35) | mapNode(e){let t=w4(e.op)||this.opMappers[e.op]||{};e.attr==null&&(e.att...
method mapFunction (line 35) | mapFunction(e){let t=e.nodeDef,a=[],n=[],r={};t!=null&&(r=t.reduce((u,p)...
method mapArgsToSignature (line 35) | mapArgsToSignature(e){return{methodName:e.signature.name,inputs:e.signat...
method mapArgToTensorInfo (line 35) | mapArgToTensorInfo(e,t){let a=e.name;return t!=null&&(a=t[a]),{name:a,dt...
function BP (line 35) | function BP(e){let t=W().global;if(typeof t.atob!="undefined")return t.a...
function V4 (line 35) | function V4(e,t){let a=Array.isArray(e)?String.fromCharCode.apply(null,e...
function o1 (line 35) | function o1(e,t,a,n=!1){let r=e[t];return r!=null?V4(r.s,n):a}
function l1 (line 35) | function l1(e,t,a){let n=e[t];return n?n.b:a}
function u1 (line 35) | function u1(e,t,a){let n=e[t]||{},r=n.i!=null?n.i:n.f!=null?n.f:a;return...
function n3 (line 35) | function n3(e){switch(typeof e=="string"&&(e=wn[e]),e){case wn.DT_FLOAT:...
function ex (line 35) | function ex(e,t,a){let n=e[t];return n&&n.func?n.func.name:a}
function d1 (line 35) | function d1(e,t,a){let n=e[t];return n&&n.type?n3(n.type):a}
function p1 (line 35) | function p1(e,t,a){let n=e[t];return n&&n.list&&n.list.type?n.list.type....
function U4 (line 35) | function U4(e){if(!e.unknownRank)return e.dim!=null?e.dim.map(t=>typeof ...
function c1 (line 35) | function c1(e,t,a){let n=e[t];return n&&n.shape?U4(n.shape):a}
function h1 (line 35) | function h1(e,t,a){let n=e[t];return n?((n.list.f&&n.list.f.length?n.lis...
function f1 (line 35) | function f1(e,t,a,n=!1){let r=e[t];return r&&r.list&&r.list.s?r.list.s.m...
function m1 (line 35) | function m1(e,t,a){let n=e[t];return n&&n.list&&n.list.shape?n.list.shap...
function g1 (line 35) | function g1(e,t,a){let n=e[t];return n&&n.list&&n.list.b?n.list.b:a}
method constructor (line 35) | constructor(e,t,a){this.node=e,this.tensorMap=t,this.context=a,this.inpu...
method getInput (line 35) | getInput(e){return ba(e,this.tensorMap,this.context)}
method getAttr (line 35) | getAttr(e,t){let a=this.node.rawAttrs[e];if(a.tensor!=null)return ba(e,t...
function kn (line 35) | function kn(e,t,a=""){if(!(typeof e=="number"||typeof t=="number")){v.as...
function tx (line 35) | function tx(e){return!(typeof e=="number"||e.some(t=>t<0))}
function Vu (line 35) | function Vu(e,t,a){let n=x1(e,a),r=!tx(n);if(r&&t.length===0)throw new E...
function x1 (line 35) | function x1(e,t){if(typeof e=="number")return t;if(typeof t=="number")re...
method constructor (line 35) | constructor(e,t,a,n,r,s,i){this.name=e,this.dtype=t,this.maxSize=a,this....
method id (line 35) | get id(){return this.idTensor.id}
method closed (line 35) | get closed(){return this.closed_}
method clearAndClose (line 35) | clearAndClose(e){this.tensors.forEach(t=>{(e==null||!e.has(t.tensor.id))...
method size (line 35) | size(){return this.tensors.length}
method read (line 35) | read(e){if(this.closed_)throw new Error(`TensorArray ${this.name} has al...
method readMany (line 35) | readMany(e){return e.map(t=>this.read(t))}
method write (line 35) | write(e,t){if(this.closed_)throw new Error(`TensorArray ${this.name} has...
method writeMany (line 36) | writeMany(e,t){if(e.length!==t.length)throw new Error(`TensorArray ${thi...
method gather (line 36) | gather(e,t){if(!!t&&t!==this.dtype)throw new Error(`TensorArray dtype is...
method concat (line 36) | concat(e){if(!!e&&e!==this.dtype)throw new Error(`TensorArray dtype is $...
method scatter (line 36) | scatter(e,t){if(t.dtype!==this.dtype)throw new Error(`TensorArray dtype ...
method split (line 36) | split(e,t){if(t.dtype!==this.dtype)throw new Error(`TensorArray dtype is...
method constructor (line 38) | constructor(e,t,a,n=-1){this.tensors=e,this.elementShape=t,this.elementD...
method id (line 38) | get id(){return this.idTensor.id}
method copy (line 38) | copy(){return new fl([...this.tensors],this.elementShape,this.elementDty...
method clearAndClose (line 38) | clearAndClose(e){this.tensors.forEach(t=>{(e==null||!e.has(t.id))&&t.dis...
method size (line 38) | size(){return this.tensors.length}
method stack (line 38) | stack(e,t,a=-1){if(t!==this.elementDtype)throw new Error(`Invalid data t...
method popBack (line 38) | popBack(e,t){if(t!==this.elementDtype)throw new Error(`Invalid data type...
method pushBack (line 38) | pushBack(e){if(e.dtype!==this.elementDtype)throw new Error(`Invalid data...
method resize (line 38) | resize(e){if(e<0)throw new Error(`TensorListResize expects size to be no...
method getItem (line 38) | getItem(e,t,a){if(a!==this.elementDtype)throw new Error(`Invalid data ty...
method setItem (line 38) | setItem(e,t){if(t.dtype!==this.elementDtype)throw new Error(`Invalid dat...
method gather (line 38) | gather(e,t,a){if(t!==this.elementDtype)throw new Error(`Invalid data typ...
method concat (line 38) | concat(e,t){if(!!e&&e!==this.elementDtype)throw new Error(`TensorList dt...
function HP (line 38) | function HP(e,t,a){let n=e.dtype;if(e.shape.length<1)throw new Error(`Te...
function jP (line 38) | function jP(e,t,a,n){return new fl([],e,t,n)}
function qP (line 38) | function qP(e,t,a,n){if(t.length!==e.shape[0])throw new Error(`Expected ...
function XP (line 38) | function XP(e,t,a){let n=0,r=t.map(p=>(n+=p,n));if(n!==e.shape[0])throw ...
function ax (line 40) | function ax(e,t,a){let[n,r]=k("fusedOps",e,t,a),s=n==="biasadd",i=!s,o=r...
function Dm (line 40) | function Dm(e,t,a){let n=k("boxes",e,t,a),r=k("scores",e,t,a),s=k("maxOu...
method constructor (line 40) | constructor(e,t){this.keyDType=e,this.valueDType=t,this.handle=Fe(0),thi...
method id (line 40) | get id(){return this.handle.id}
method clearAndClose (line 40) | clearAndClose(){this.tensorMap.forEach(e=>e.dispose()),this.tensorMap.cl...
method size (line 40) | size(){return this.tensorMap.size}
method tensorSize (line 40) | tensorSize(){return Fe(this.size(),"int32")}
method import (line 40) | async import(e,t){this.checkKeyAndValueTensor(e,t);let a=await e.data();...
method find (line 40) | async find(e,t){this.checkKeyAndValueTensor(e,t);let a=await e.data();re...
method findWithDefault (line 40) | findWithDefault(e,t){let a=this.tensorMap.get(e);return a!=null?a:t}
method checkKeyAndValueTensor (line 40) | checkKeyAndValueTensor(e,t){if(e.dtype!==this.keyDType)throw new Error(`...
function nx (line 40) | function nx(e,t,a,n,r=$e){let s=((i,o,l)=>{switch(i.category){case"arith...
method constructor (line 40) | constructor(e={},t={},a={},n={}){this.weightMap=e,this.tensorArrayMap=t,...
method newFrame (line 40) | newFrame(e,t){return{id:e,frameName:t,iterationId:0}}
method currentContext (line 40) | set currentContext(e){this.contexts!==e&&(this.contexts=e,this.generateC...
method currentContext (line 40) | get currentContext(){return this.contexts}
method currentContextId (line 40) | get currentContextId(){return this._currentContextIds[0]}
method currentContextIds (line 40) | get currentContextIds(){return this._currentContextIds}
method generateCurrentContextIds (line 40) | generateCurrentContextIds(){let e=[];for(let t=0;t<this.contexts.length-...
method contextIdforContexts (line 40) | contextIdforContexts(e){return e?e.map(t=>t.id===0&&t.iterationId===0?""...
method enterFrame (line 40) | enterFrame(e){this.contexts&&(this.lastId++,this.contexts=this.contexts....
method exitFrame (line 40) | exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this....
method nextIteration (line 40) | nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=...
method getWeight (line 40) | getWeight(e){return this.weightMap[e]}
method addTensorArray (line 40) | addTensorArray(e){this.tensorArrayMap[e.id]=e}
method getTensorArray (line 40) | getTensorArray(e){return this.tensorArrayMap[e]}
method addTensorList (line 40) | addTensorList(e){this.tensorListMap[e.id]=e}
method getTensorList (line 40) | getTensorList(e){return this.tensorListMap[e]}
method dispose (line 40) | dispose(e){for(let t in this.tensorArrayMap)this.tensorArrayMap[t].clear...
function sx (line 40) | function sx(e,t,a,n){let r=new Set,s=[],i=null,o=null,l=new Set,u=Object...
function fF (line 40) | function fF(e,t,a){let{usedNodes:n,inputs:r}=a,s=[],i=Object.keys(r).map...
function G4 (line 40) | function G4(e){return mF.indexOf(e.op)>=0}
function AF (line 40) | function AF(e){return gF.indexOf(e.op)>=0}
function yF (line 40) | function yF(e){return xF.indexOf(e.op)>=0}
method constructor (line 40) | constructor(e,t){this.graph=e,this.parent=t,this.compiledMap=new Map,thi...
method weightIds (line 40) | get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}
method functionExecutorMap (line 40) | get functionExecutorMap(){return this.parent?this.parent.functionExecuto...
method weightMap (line 40) | get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}
method weightMap (line 40) | set weightMap(e){let t=Object.keys(e).map(a=>e[a].map(n=>n.id));this._we...
method resourceManager (line 40) | set resourceManager(e){this._resourceManager=e}
method inputs (line 40) | get inputs(){return this._inputs.map(e=>({name:e.name,shape:e.attrParams...
method outputs (line 40) | get outputs(){return this._outputs.map(e=>({name:e.name,shape:e.attrPara...
method inputNodes (line 40) | get inputNodes(){return this._inputs.map(e=>e.signatureKey||e.name)}
method outputNodes (line 40) | get outputNodes(){return this._outputs.map(e=>{let t=e.signatureKey||e.n...
method functions (line 40) | get functions(){return Object.keys(this._functions).reduce((e,t)=>(e[t]=...
method getCompilationKey (line 40) | getCompilationKey(e,t){let a=e.map(r=>r.name).sort(),n=t.map(r=>r.name)....
method compile (line 40) | compile(e,t){let a=sx(e,t,this.weightMap,this._initNodes),{missingInputs...
method cloneAndKeepTensor (line 40) | cloneAndKeepTensor(e){if(e==null)return null;let t=e.clone();return On(t...
method cloneTensorList (line 40) | cloneTensorList(e){return e?e.map(t=>this.cloneAndKeepTensor(t)):null}
method cloneTensorMap (line 40) | cloneTensorMap(e){return Object.fromEntries(Object.entries(e).map(([t,a]...
method execute (line 40) | execute(e,t){this.disposeIntermediateTensors(),e=this.mapInputs(e);let a...
method getFrozenTensorIds (line 40) | getFrozenTensorIds(e){let t=[].concat.apply([],Object.keys(e).map(a=>e[a...
method checkTensorForDisposal (line 40) | checkTensorForDisposal(e,t,a,n,r,s,i){t.category==="control"||s.indexOf(...
method executeAsync (line 40) | async executeAsync(e,t){return this._executeAsync(e,t)}
method disposeIntermediateTensors (line 40) | disposeIntermediateTensors(){!this.clonedTensorsMap||(Object.values(this...
method getIntermediateTensors (line 40) | getIntermediateTensors(){return this.clonedTensorsMap}
method _executeAsync (line 40) | async _executeAsync(e,t,a=!1,n={},r={}){this.disposeIntermediateTensors(...
method executeFunctionAsync (line 40) | async executeFunctionAsync(e,t,a){let n=e.reduce((r,s,i)=>(r[this.inputs...
method executeWithControlFlow (line 40) | async executeWithControlFlow(e,t,a,n){let r=Object.keys(e),s=r.map(A=>th...
method processStack (line 40) | processStack(e,t,a,n,r,s,i,o,l){let u=[];for(;t.length>0;){let p=t.pop()...
method processChildNodes (line 40) | processChildNodes(e,t,a,n,r,s){e.children.forEach(i=>{let[o]=mr(i.name,a...
method dispose (line 40) | dispose(){Object.keys(this.weightMap).forEach(e=>this.weightMap[e].forEa...
method checkInputShapeAndType (line 40) | checkInputShapeAndType(e){Object.keys(e).forEach(t=>{let a=e[t],[n]=ja(t...
method mapInputs (line 40) | mapInputs(e){var t,a;let n={};for(let r in e){let s=(a=(t=this._signatur...
method checkInputs (line 40) | checkInputs(e){let t=Object.keys(e).filter(a=>{let[n]=ja(a);return this....
method mapOutputs (line 40) | mapOutputs(e){return e.map(t=>{var a,n;let r=(n=(a=this._signature)===nu...
method checkOutputs (line 40) | checkOutputs(e){e.forEach(t=>{let[a]=ja(t);if(!this.graph.nodes[a])throw...
method constructor (line 40) | constructor(e={},t={}){this.hashTableNameToHandle=e,this.hashTableMap=t}
method addHashTable (line 40) | addHashTable(e,t){this.hashTableNameToHandle[e]=t.handle,this.hashTableM...
method getHashTableHandleByName (line 40) | getHashTableHandleByName(e){return this.hashTableNameToHandle[e]}
method getHashTableById (line 40) | getHashTableById(e){return this.hashTableMap[e]}
method dispose (line 40) | dispose(){for(let e in this.hashTableMap)this.hashTableMap[e].clearAndCl...
method constructor (line 40) | constructor(e,t={},a=jn){this.modelUrl=e,this.loadOptions=t,this.version...
method modelVersion (line 40) | get modelVersion(){return this.version}
method inputNodes (line 40) | get inputNodes(){return this.executor.inputNodes}
method outputNodes (line 40) | get outputNodes(){return this.executor.outputNodes}
method inputs (line 40) | get inputs(){return this.executor.inputs}
method outputs (line 40) | get outputs(){return this.executor.outputs}
method weights (line 40) | get weights(){return this.executor.weightMap}
method metadata (line 40) | get metadata(){return this.artifacts.userDefinedMetadata}
method modelSignature (line 40) | get modelSignature(){return this.signature}
method modelStructuredOutputKeys (line 40) | get modelStructuredOutputKeys(){return this.structuredOutputKeys}
method findIOHandler (line 40) | findIOHandler(){let e=this.modelUrl;if(e.load!=null)this.handler=e;else ...
method load (line 40) | load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("...
method loadSync (line 40) | loadSync(e){this.artifacts=e;let t=this.artifacts.modelTopology,a=this.a...
method save (line 40) | async save(e,t){if(typeof e=="string"){let a=this.io.getSaveHandlers(e);...
method addStructuredOutputNames (line 40) | addStructuredOutputNames(e){if(this.structuredOutputKeys){let t=e instan...
method predict (line 40) | predict(e,t){let a=this.execute(e,this.outputNodes);return this.addStruc...
method predictAsync (line 40) | async predictAsync(e,t){let a=await this.executeAsync(e,this.outputNodes...
method normalizeInputs (line 40) | normalizeInputs(e){var t;if(!(e instanceof pt)&&!Array.isArray(e)){let r...
method normalizeOutputs (line 40) | normalizeOutputs(e){return e=e||this.outputNodes,Array.isArray(e)?e:[e]}
method executeInitializerGraph (line 40) | executeInitializerGraph(){return this.initializer==null?[]:this.initiali...
method executeInitializerGraphAsync (line 40) | async executeInitializerGraphAsync(){return this.initializer==null?[]:th...
method setResourceIdToCapturedInput (line 40) | setResourceIdToCapturedInput(e){if(this.resourceIdToCapturedInput={},thi...
method execute (line 40) | execute(e,t){this.resourceIdToCapturedInput==null&&this.setResourceIdToC...
method executeAsync (line 40) | async executeAsync(e,t){this.resourceIdToCapturedInput==null&&this.setRe...
method getIntermediateTensors (line 40) | getIntermediateTensors(){return this.executor.getIntermediateTensors()}
method disposeIntermediateTensors (line 40) | disposeIntermediateTensors(){this.executor.disposeIntermediateTensors()}
method convertTensorMapToTensorsMap (line 40) | convertTensorMapToTensorsMap(e){return Object.keys(e).reduce((t,a)=>(t[a...
method dispose (line 40) | dispose(){this.executor.dispose(),this.initializer&&(this.initializer.di...
function r3 (line 40) | async function r3(e,t={},a=jn){if(e==null)throw new Error("modelUrl in l...
function kF (line 40) | function kF(e){if(e==null)throw new Error("modelUrl in loadGraphModelSyn...
function IF (line 40) | function IF(e){return e.endsWith("/")||(e=e+"/"),`${e}${wF}${vF}`}
function ye (line 40) | function ye(e,t){Array.isArray(e)||(e=[e]),e.forEach(a=>{a!=null&&v.asse...
method constructor (line 40) | constructor(){super(),this.blockSize=48,this.firstUse=!0,this.data=new v...
method nextDataId (line 40) | nextDataId(){return $h.nextDataId++}
method write (line 40) | write(e,t,a){this.firstUse&&(this.firstUse=!1,W().get("IS_NODE")&&T.warn(`
method makeTensorInfo (line 43) | makeTensorInfo(e,t,a){let n;if(t==="string"&&a!=null&&a.length>0&&v.isSt...
method refCount (line 43) | refCount(e){return this.data.has(e)?this.data.get(e).refCount:0}
method incRef (line 43) | incRef(e){let t=this.data.get(e);t.refCount++}
method decRef (line 43) | decRef(e){if(this.data.has(e)){let t=this.data.get(e);t.refCount--}}
method move (line 43) | move(e,t,a,n,r){this.data.set(e,{values:t,dtype:n,refCount:r})}
method numDataIds (line 43) | numDataIds(){return this.data.numDataIds()}
method read (line 43) | async read(e){return this.readSync(e)}
method readSync (line 43) | readSync(e){let{dtype:t,complexTensorInfos:a}=this.data.get(e);if(t==="c...
method bufferSync (line 43) | bufferSync(e){let t=this.readSync(e.dataId);if(e.dtype==="string")try{le...
method makeOutput (line 43) | makeOutput(e,t,a){return kt().makeTensorFromTensorInfo(this.makeTensorIn...
method disposeData (line 43) | disposeData(e,t=!1){if(this.data.has(e)){if(this.data.get(e).refCount--,...
method disposeIntermediateTensorInfo (line 43) | disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}
method time (line 43) | async time(e){let t=v.now();return e(),{kernelMs:v.now()-t}}
method memory (line 43) | memory(){return{unreliable:!0,reasons:["The reported memory is an upper ...
method where (line 43) | where(e){ye([e],"where");let t=this.readSync(e.dataId);return TF(e.shape...
method dispose (line 43) | dispose(){}
method floatPrecision (line 43) | floatPrecision(){return 32}
method epsilon (line 43) | epsilon(){return super.epsilon()}
function H4 (line 43) | function H4(e){let t=new Float32Array(e.length);for(let a=0;a<e.length;+...
function Lt (line 43) | function Lt(e){return(t,a,n,r,s)=>{let i=T.assertAndGetBroadcastShape(t,...
function Xa (line 43) | function Xa(e){let{inputs:t,backend:a}=e,{real:n,imag:r}=t,s=a.data.get(...
function $c (line 43) | function $c(e,t,a="float32"){if(a==="complex64"){let r=$c(e,t,"float32")...
function er (line 43) | function er(e){let{inputs:t,backend:a}=e,{x:n}=t;return a.incRef(n.dataI...
function Us (line 43) | function Us(e){let{inputs:t,backend:a}=e,{input:n}=t,r=a.data.get(n.data...
function j4 (line 43) | function j4(e,t,a,n){if(n==="int32"){let r=Int32Array.from(e);return[t,"...
function Jr (line 43) | function Jr(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{dtype:s}=n;if(...
function Yt (line 43) | function Yt(e,t,a,n){return a==null?({inputs:r,backend:s})=>{let{a:i,b:o...
function s3 (line 43) | function s3(e){return(t,a,n,r,s,i)=>{let o=T.assertAndGetBroadcastShape(...
function i3 (line 43) | function i3(e,t,a,n,r){let s=v.sizeFromShape(n),i=v.makeZerosTypedArray(...
function X4 (line 43) | function X4(e,t,a,n=!1){let r=e.shape[0],s=e.shape[1],i=Me([r,a],t.dtype...
function os (line 43) | function os(e){return(t,a,n)=>{let r=v.getTypedArrayFromDType(a,t.length...
function ot (line 43) | function ot(e,t,a){return({inputs:n,attrs:r,backend:s})=>{let{x:i}=n;if(...
function ou (line 43) | function ou(e,t,a){return({inputs:n,attrs:r,backend:s})=>{let{x:i}=n;if(...
function o3 (line 43) | function o3(e,t,a,n){let r=v.getArrayFromDType(a,v.sizeFromShape(t));if(...
function a7 (line 43) | function a7(e,t,a,n,r,s,i,o,l){let u=Me([n,s],a);for(let p=0;p<n;p++){le...
function n7 (line 43) | function n7(e,t,a){let n=Me(a,e.dtype);for(let r=0;r<n.size;++r){let s=n...
function l7 (line 43) | function l7(e,t,a){let n=(t-e)/(a-1),r=v.makeZerosTypedArray(a,"float32"...
function d7 (line 43) | function d7(e,t,a,n){let r=v.getTypedArrayFromDType(n,v.sizeFromShape(a)...
function h7 (line 43) | function h7(e,t,a){let n=v.createScalarValue(-1,a);return l3([],t,n,e,a)}
function sO (line 43) | function sO(e){let{inputs:t,backend:a}=e,{x:n}=t;ye(n,"neg");let r=a.dat...
function u3 (line 43) | function u3(e,t,a,n,r){let s=t.length,i=v.sizeFromShape(t),o=v.computeSt...
function La (line 43) | function La(e){let{inputs:t,attrs:a,backend:n}=e,{x:r}=t,{perm:s}=a;ye(r...
function m7 (line 43) | function m7(e,t,a,n){let[r,s]=T.computeOutAndReduceShapes(e,n),i=ca(t,"i...
function dO (line 43) | function dO(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s,keepDim...
function cO (line 43) | function cO(e,t,a){e.forEach((n,r)=>{if(n<0||n>=a){let s=v.indexToLoc(r,...
function hO (line 43) | function hO(e,t){for(let a=0;a<e.length;++a){let n=e[a],r=a===e.length-1...
function fO (line 43) | function fO(e,t,a,n){let r=[],s=0,i=t.length-1+a.length,o=new Array(i).f...
function mO (line 43) | function mO(e){let t=[];for(let a=0;a<e.length;++a){let n=e[a].length,r=...
function ix (line 43) | function ix(e,t){let a=e.slice(0,t);for(;a.length<t;)a.push(1);for(let n...
function gO (line 43) | function gO(e,t,a,n,r,s){let i=ix(t,2)[1],o=ix(s,2)[1],l=0;for(let u of ...
function xO (line 43) | function xO(e,t,a,n,r){let s=t.slice();s[0]=r;let i=v.getArrayFromDType(...
function g7 (line 43) | function g7(e,t,a,n,r,s,i,o){if(e.length===0)throw new Error("paramsNest...
function x7 (line 43) | function x7(e,t,a,n,r,s,i){if(t.length>1)throw new Error("starts must be...
method constructor (line 43) | constructor(e,t,a,n,r,s,i,o,l,u){this.shape=e,this.shapeShape=t,this.val...
method getRowPartitionTypeByDimension (line 43) | getRowPartitionTypeByDimension(e){return this.rowPartitionTypes[0]===vn....
method getRowPartitionTensor (line 43) | getRowPartitionTensor(e){return this.rowPartitionTypes[0]===vn.FIRST_DIM...
method getMaxWidth (line 43) | getMaxWidth(e){let t=this.getRowPartitionTensor(e-1);switch(this.getRowP...
method getMaxWidthRowSplit (line 43) | static getMaxWidthRowSplit(e){let t=e.length;if(t===0||t===1)return 0;le...
method getMaxWidthValueRowID (line 43) | static getMaxWidthValueRowID(e){let t=e.length;if(t===0)return 0;let a=0...
method tensorShapeFromTensor (line 43) | tensorShapeFromTensor(e,t,a=!0){if(t.length===0){if(e[0]===-1)return[];t...
method calculateOutputSize (line 43) | calculateOutputSize(e){let t=this.valuesShape,a=this.defaultValueShape;T...
method calculateFirstParentOutputIndex (line 43) | calculateFirstParentOutputIndex(e,t,a){let n=Math.min(e,a),r=[],s=0;for(...
method calculateOutputIndexRowSplit (line 43) | calculateOutputIndexRowSplit(e,t,a,n){let r=e.length,s=[];for(let i=0;i<...
method calculateOutputIndexValueRowID (line 43) | calculateOutputIndexValueRowID(e,t,a,n){let r=e.length,s=[];if(r===0)ret...
method calculateOutputIndex (line 43) | calculateOutputIndex(e,t,a,n){let r=this.getRowPartitionTensor(e),s=this...
method getFirstDimensionSize (line 43) | getFirstDimensionSize(){let e=this.rowPartitionValues[0];if(this.rowPart...
method compute (line 43) | compute(){if(this.rowPartitionValues[0].length<=0)throw new Error("Inval...
method setOutput (line 43) | setOutput(e,t,a,n){if(a.length===0)return;let r=this.values,s=a,i=n.slic...
function lx (line 43) | function lx(e,t,a){for(let n=0;n<a;n++)e[n]=t[n]}
function ux (line 43) | function ux(e,t){let a=[];for(let n of e){if(n<0){if(!t)throw new Error(...
function A7 (line 43) | function A7(e,t,a,n,r,s,i,o,l,u){return new y1(e,t,a,n,r,s,i,o,l,u).comp...
function d3 (line 43) | function d3(e,t,a,n){let r=e===t,s=e<t&&a<0,i=t<e&&a>1;if(r||s||i)return...
function tl (line 43) | function tl(e,t,a,n,r,s,i,o,l,u){let p=[n/r,r],c=e.values,d=t.values;if(...
function _c (line 43) | function _c(e,t,a,n,r){let s=It.isSliceContinous(n,t,a),i=v.sizeFromShap...
function Gs (line 43) | function Gs(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{begin:s,size:i...
function v7 (line 43) | function v7(e,t,a,n,r,s,i){let o=t[0],l=s[0],u=new Array(l),p=new Array(...
function w7 (line 43) | function w7(e,t,a,n,r){let s=v.sizeFromShape(n),i=t[0],o=r.length,l=[],u...
function p3 (line 43) | function p3(e,t,a,n,r,s=!1,i=0){let o=n.length,l=[t[0],e.length/t[0]],u=...
function I7 (line 43) | function I7(e,t,a,n){let r=Me(e,t.dtype);for(let s=0;s<r.size;s++){let i...
method constructor (line 43) | constructor(e,t,a,n,r,s){this.separator=v.encodeString(e),this.nGramWidt...
method getPadWidth (line 43) | getPadWidth(e){return Math.min(this.padWidth<0?e-1:this.padWidth,e-1)}
method getNumNGrams (line 43) | getNumNGrams(e,t){let a=this.getPadWidth(t);return Math.max(0,e+2*a-t+1)}
method createNGrams (line 43) | createNGrams(e,t,a,n,r,s){for(let i=0;i<r;++i){let o=this.getPadWidth(s)...
method compute (line 43) | compute(e,t){let a=e.length,n=t.length;if(n>0){let o=t[0];if(o!==0)throw...
function c3 (line 43) | function c3(e,t,a,n,r,s,i,o){return new NO(a,n,r,s,i,o).compute(e,t)}
function EO (line 43) | function EO(e,t,a,n){if(!e.length)return;if(t.length===0){for(let s=0;s<...
function h3 (line 43) | function h3(e,t,a){let n=e.length,r=[],s=0,i=0,o=new Array(n);for(let d=...
function f3 (line 43) | function f3(e,t){let a=v.getArrayFromDType("int32",e.length);for(let n=0...
function T7 (line 43) | function T7(e,t){let a=new Array(e.rank);for(let r=0;r<a.length;r++)a[r]...
function C7 (line 43) | function C7(e,t,a=0,n=e.length-1){for(;n>a;){if(n-a>600){let o=n-a+1,l=t...
function N7 (line 43) | function N7(e,t,a,n,r){let s=t[t.length-1],[i,o]=[e.length/s,s],l=v.getT...
function E7 (line 43) | function E7(e,t,a,n){let r=v.parseAxisParam(t,a)[0],s=[1,a[0],1];for(let...
function M7 (line 43) | function M7(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{alpha:s}=n;ye(...
function $7 (line 43) | function $7(e){let{inputs:t,backend:a}=e,{x:n,alpha:r}=t;ye([n,r],"prelu...
function Pc (line 43) | function Pc(e,t,a,n,r){if(a==="linear")return er({inputs:{x:t},backend:e...
function mt (line 43) | function mt(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{shape:s}=n,i=v...
function F7 (line 43) | function F7(e){let{inputs:t,backend:a,attrs:n}=e,{a:r,b:s}=t,{transposeA...
function WO (line 43) | function WO(e){let{inputs:t,backend:a,attrs:n}=e,{a:r,b:s,bias:i,preluAc...
function qO (line 43) | function qO(e){let{inputs:t,backend:a}=e,n=t;ye(t,"addN");let r=n.map(o=...
function KO (line 43) | function KO(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s,keepDim...
function YO (line 43) | function YO(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s,keepDim...
function QO (line 43) | function QO(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s}=n;ye(r...
function tD (line 43) | function tD(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s}=n;ye(r...
function g3 (line 43) | function g3(e,t,a,n,r,s){let i=r.strideHeight,o=r.strideWidth,l=r.dilati...
function O7 (line 43) | function O7(e,t,a,n,r=!1,s=!1){let i=Me(n.outShape,"int32"),o=n.strideHe...
function D7 (line 43) | function D7(e,t,a,n,r,s){let i=r.strideDepth,o=r.strideHeight,l=r.stride...
function fD (line 43) | function fD(e,t){let a=Me(t.outShape,"int32"),n=t.strideDepth,r=t.stride...
function mD (line 43) | function mD(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t;ye(r,"avgPool")...
function xD (line 43) | function xD(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{filterSize:s,s...
function yD (line 43) | function yD(e){let{inputs:t,backend:a,attrs:n}=e,{dy:r,input:s}=t,{filte...
function vD (line 43) | function vD(e){let{inputs:t,backend:a,attrs:n}=e,{dy:r,input:s}=t,i=s;ye...
function kD (line 43) | function kD(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,scale:s,offset:i,m...
function SD (line 43) | function SD(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{blockShape:s,c...
function CD (line 43) | function CD(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,weights:s}=t,{size...
function ED (line 43) | function ED(e){let{inputs:t,backend:a}=e,{s0:n,s1:r}=t,s=a.data.get(n.da...
function gl (line 43) | function gl(e){let{inputs:t,backend:a}=e,{input:n}=t,r=a.data.get(n.data...
function xl (line 43) | function xl(e){let{inputs:t,backend:a,attrs:n}=e,{axis:r}=n,s=v.parseAxi...
function z7 (line 43) | function z7(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,filter:s}=t,{strid...
function zD (line 43) | function zD(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,dy:s}=t,{strides:i...
function BD (line 43) | function BD(e){let{inputs:t,backend:a,attrs:n}=e,{dy:r,filter:s}=t,{inpu...
function VD (line 43) | function VD(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,filter:s}=t,{strid...
function GD (line 43) | function GD(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,dy:s}=t,{strides:i...
function jD (line 43) | function jD(e){let{inputs:t,backend:a,attrs:n}=e,{dy:r,filter:s}=t,{pad:...
function JD (line 43) | function JD(e){let{inputs:t,backend:a,attrs:n}=e,{image:r,boxes:s,boxInd...
function ez (line 43) | function ez(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s,exclusi...
function az (line 43) | function az(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s,exclusi...
function rz (line 43) | function rz(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,weights:s}=t,{size...
function iz (line 43) | function iz(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{blockSize:s,da...
function L7 (line 43) | function L7(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,filter:s}=t,{strid...
function uz (line 43) | function uz(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,dy:s}=t,{strides:i...
function pz (line 43) | function pz(e){let{inputs:t,backend:a,attrs:n}=e,{dy:r,filter:s}=t,{stri...
function hz (line 43) | function hz(e){let{inputs:t,backend:a}=e,{x:n}=t,r=v.sizeFromShape(n.sha...
function lp (line 43) | function lp(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s,keepDim...
function yz (line 43) | function yz(e){let{inputs:t,backend:a,attrs:n}=e,{equation:r}=n,s=t,{all...
function vz (line 43) | function vz(e){let{inputs:t,backend:a}=e,{dy:n,y:r}=t;ye([n,r],"eluGrad"...
function Fc (line 43) | function Fc(e){let{inputs:t,backend:a,attrs:n}=e,{input:r}=t,{dim:s}=n,i...
function B7 (line 43) | function B7(e,t,a){let n=e.shape,r=n[0],s=n[1],i=a.data.get(e.dataId),o=...
function _z (line 43) | function _z(e,t,a){let n=v.sizeFromShape(e.shape),r=a.data.get(e.dataId)...
function Pz (line 43) | function Pz(e){return(e&e-1)===0}
function v1 (line 43) | function v1(e,t,a,n,r){if(a===1)return{real:e,imag:t};let s=T.mergeRealA...
function Fz (line 43) | function Fz(e,t,a){let n=new Float32Array(t*2);for(let r=0;r<t;r++){let ...
function Oz (line 43) | function Oz(e){let{inputs:t,backend:a}=e,{input:n}=t,r=v.sizeFromShape(n...
function A3 (line 43) | function A3(e){let{backend:t,attrs:a}=e,{shape:n,value:r,dtype:s}=a,i=s|...
function Lz (line 43) | function Lz(e,t,a){e.fill(t)}
function Gz (line 43) | function Gz(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,filter:s,bias:i,pr...
function jz (line 43) | function jz(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,filter:s,bias:i,pr...
function Xz (line 43) | function Xz(e){let{inputs:t,backend:a}=e,{params:n,indices:r}=t,s=v.size...
function Zz (line 43) | function Zz(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,indices:s}=t,{axis...
function Jz (line 43) | function Jz(e){let{inputs:t,backend:a}=e,{input:n}=t,r=v.sizeFromShape(n...
function iL (line 43) | function iL(e){let{backend:t,attrs:a}=e,{start:n,stop:r,num:s}=a,i=l7(n,...
function AL (line 43) | function AL(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{depthRadius:s,...
function bL (line 43) | function bL(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,y:s,dy:i}=t,{depth...
function W7 (line 43) | function W7(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{reductionIndic...
function kL (line 43) | function kL(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t;ye(r,"maxPool")...
function SL (line 43) | function SL(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{filterSize:s,s...
function CL (line 43) | function CL(e){let{inputs:t,backend:a,attrs:n}=e,{dy:r,input:s}=t,{filte...
function EL (line 43) | function EL(e){let{inputs:t,backend:a,attrs:n}=e,{dy:r,input:s,output:i}...
function ML (line 43) | function ML(e,t,a,n,r){let s=v.computeStrides(t),i=g3(e,t,a,s,r,"max"),o...
function _L (line 43) | function _L(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s,keepDim...
function FL (line 43) | function FL(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s,keepDim...
function DL (line 43) | function DL(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{paddings:s,mod...
function V7 (line 43) | function V7(e){let{inputs:t,backend:a,attrs:n}=e,{logits:r}=t,{dim:s}=n,...
function GL (line 43) | function GL(e){let{inputs:t,backend:a,attrs:n}=e,{logits:r}=t,{numSample...
function qL (line 43) | function qL(e){let{inputs:t,backend:a,attrs:n}=e,{boxes:r,scores:s}=t,{m...
function ZL (line 43) | function ZL(e){let{inputs:t,backend:a,attrs:n}=e,{boxes:r,scores:s}=t,{m...
function QL (line 43) | function QL(e){let{inputs:t,backend:a,attrs:n}=e,{boxes:r,scores:s}=t,{m...
function tB (line 43) | function tB(e){let{inputs:t,backend:a,attrs:n}=e,{indices:r}=t,{dtype:s,...
function Oc (line 43) | function Oc(e){let{inputs:t,backend:a}=e,{x:n}=t;if(n.dtype==="string")t...
function U7 (line 43) | function U7(e){let{inputs:t,backend:a}=e,{x:n}=t;if(n.dtype==="string")t...
function G7 (line 43) | function G7(e){let{inputs:t,backend:a,attrs:n}=e,{axis:r}=n;if(t.length=...
function iB (line 43) | function iB(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{paddings:s,con...
function dB (line 43) | function dB(e){let{inputs:t,backend:a,attrs:n}=e,{paramsNestedSplits:r,p...
function cB (line 43) | function cB(e){let{inputs:t,backend:a}=e,{starts:n,limits:r,deltas:s}=t,...
function fB (line 43) | function fB(e){let{inputs:t,backend:a,attrs:n}=e,{shape:r,values:s,defau...
function gB (line 43) | function gB(e){let{backend:t,attrs:a}=e,{start:n,stop:r,dtype:s,step:i}=...
function bB (line 43) | function bB(e){let{inputs:t,backend:a,attrs:n}=e,{images:r}=t,{alignCorn...
function wB (line 43) | function wB(e){let{inputs:t,backend:a,attrs:n}=e,{images:r,dy:s}=t,{alig...
function IB (line 43) | function IB(e){let{inputs:t,backend:a,attrs:n}=e,{images:r}=t,{alignCorn...
function TB (line 43) | function TB(e){let{inputs:t,backend:a,attrs:n}=e,{images:r,dy:s}=t,{alig...
function NB (line 43) | function NB(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{dims:s}=n;ye(r...
function _B (line 43) | function _B(e){let{inputs:t,backend:a,attrs:n}=e,{indices:r,updates:s}=t...
function FB (line 43) | function FB(e,t){let a=0,n=e.length,r=0;for(;a<n;)r=Math.floor((a+n)/2),...
function OB (line 43) | function OB(e,t){let a=0,n=e.length,r=0;for(;a<n;)r=Math.floor((a+n)/2),...
function DB (line 43) | function DB(e,t,a,n,r,s){let i=v.getArrayFromDType("int32",a*r);for(let ...
function zB (line 43) | function zB(e){let{inputs:t,backend:a,attrs:n}=e,{sortedSequence:r,value...
function BB (line 43) | function BB(e){let{inputs:t,backend:a}=e,{condition:n,t:r,e:s}=t;ye([n,r...
function tW (line 43) | function tW(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{blockShape:s,p...
function nW (line 43) | function nW(e){let{inputs:t,backend:a}=e,{indices:n,values:r,denseShape:...
function sW (line 47) | function sW(e){let{inputs:t,backend:a}=e,{inputIndices:n,inputShape:r,ne...
function oW (line 49) | function oW(e){let{inputs:t,backend:a}=e,{data:n,indices:r,segmentIds:s}...
function uW (line 51) | function uW(e){let{inputs:t,backend:a}=e,{data:n,indices:r,segmentIds:s}...
function pW (line 53) | function pW(e){let{inputs:t,backend:a,attrs:n}=e,{sparseIndices:r,sparse...
function hW (line 53) | function hW(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{numOrSizeSplit...
function AW (line 53) | function AW(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{begin:s,end:i,...
function bW (line 53) | function bW(e){let{inputs:t,backend:a,attrs:n}=e,{separator:r,nGramWidth...
function wW (line 53) | function wW(e){let{inputs:t,backend:a,attrs:n}=e,{skipEmpty:r}=n,{input:...
function IW (line 53) | function IW(e){let{inputs:t,backend:a,attrs:n}=e,{numBuckets:r}=n,{input...
function RW (line 53) | function RW(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{reps:s}=n;ye(r...
function $W (line 53) | function $W(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{k:s,sorted:i}=...
function PW (line 53) | function PW(e){let{inputs:t,attrs:a,backend:n}=e,{image:r,transforms:s}=...
function px (line 53) | function px(e,t,a){switch(a){case"reflect":return OW(e,t);case"wrap":ret...
function OW (line 53) | function OW(e,t){let a=e;if(a<0)if(t<=1)a=0;else{let n=2*t;a<n&&(a=n*Mat...
function DW (line 53) | function DW(e,t){let a=e;if(a<0)if(t<=1)a=0;else{let n=t-1;a+=t*(Math.tr...
function zW (line 53) | function zW(e,t){return e}
function LW (line 53) | function LW(e,t){return v.clamp(0,e,t-1)}
function ju (line 53) | function ju(e,t,a,n,r,s,i,o,l,u,p){let c=i*n+o*r+l*s+u;return 0<=o&&o<t&...
function BW (line 53) | function BW(e,t,a,n,r,s,i,o,l,u,p){let c=Math.round(o),d=Math.round(l);r...
function WW (line 53) | function WW(e,t,a,n,r,s,i,o,l,u,p){let c=Math.floor(o),d=Math.floor(l),h...
function VW (line 53) | function VW(e){let{inputs:t,attrs:a,backend:n}=e,{axis:r}=a,{x:s}=t;ye(s...
function GW (line 53) | function GW(e){let{inputs:t,backend:a,attrs:n}=e,{value:r}=t,{axis:s}=n;...
function jW (line 53) | function jW(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,segmentIds:s}=t,{n...
function Fh (line 53) | function Fh(e,t){Ps[e]=t}
function Dn (line 53) | function Dn(e,t){if(!(e in Ps)||t!=null){let n=ZW(e,t);if(n!==null)Ps[e]...
function KW (line 53) | function KW(e){if(typeof OffscreenCanvas!="undefined"&&e===2)return new ...
function ZW (line 53) | function ZW(e,t){if(e!==1&&e!==2)throw new Error("Cannot get WebGL rende...
function up (line 53) | function up(e,t){return[t,e]}
function YW (line 53) | function YW(e,t){return e*t}
function uc (line 53) | function uc(e){let t=v.sizeFromShape(e),a=Math.ceil(t/4);return v.sizeTo...
function lu (line 53) | function lu(e,t){return[Math.max(1,Math.ceil(t/2)),Math.max(1,Math.ceil(...
function JW (line 53) | function JW(e,t){let[a,n]=lu(e,t);return a*n*4}
function y3 (line 53) | function y3(e,t){let a=e,n,r,s,i,o,l,u,p,c,d;return W().getNumber("WEBGL...
function le (line 53) | function le(e,t){let a=t();return W().getBool("DEBUG")&&QW(e),a}
function QW (line 53) | function QW(e){let t=e.getError();if(t!==e.NO_ERROR)throw new Error("Web...
function q7 (line 53) | function q7(e){return!!(W().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||e==...
function X7 (line 53) | function X7(e,t){switch(t){case e.NO_ERROR:return"NO_ERROR";case e.INVAL...
function qu (line 53) | function qu(e,t){return Sr(e,()=>e.getExtension(t),'Extension "'+t+'" no...
function K7 (line 53) | function K7(e,t){let a=Sr(e,()=>e.createShader(e.VERTEX_SHADER),"Unable ...
function Z7 (line 53) | function Z7(e,t){let a=Sr(e,()=>e.createShader(e.FRAGMENT_SHADER),"Unabl...
function b3 (line 53) | function b3(e,t){let a=aV.exec(t);if(a==null){console.log(`Couldn't pars...
function Y7 (line 57) | function Y7(e){return Sr(e,()=>e.createProgram(),"Unable to create WebGL...
function J7 (line 57) | function J7(e,t){if(le(e,()=>e.linkProgram(t)),!W().get("ENGINE_COMPILE_...
function gc (line 57) | function gc(e,t){if(le(e,()=>e.validateProgram(t)),e.getProgramParameter...
function Q7 (line 57) | function Q7(e,t){let a=Sr(e,()=>e.createBuffer(),"Unable to create WebGL...
function e6 (line 57) | function e6(e,t){let a=Sr(e,()=>e.createBuffer(),"Unable to create WebGL...
function nV (line 57) | function nV(){return W().getNumber("WEBGL_VERSION")===2?1:4}
function t6 (line 57) | function t6(e){return Sr(e,()=>e.createTexture(),"Unable to create WebGL...
function a6 (line 57) | function a6(e,t){let a=W().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(e<=0||...
function n6 (line 57) | function n6(e){return Sr(e,()=>e.createFramebuffer(),"Unable to create W...
function w1 (line 57) | function w1(e,t,a,n,r,s,i){let o=e.getAttribLocation(t,a);return o===-1?...
function r6 (line 57) | function r6(e,t,a){u6(e,a),le(e,()=>e.activeTexture(e.TEXTURE0+a)),le(e,...
function rV (line 57) | function rV(e,t){u6(e,t),le(e,()=>e.activeTexture(e.TEXTURE0+t)),le(e,()...
function s6 (line 57) | function s6(e,t,a){return Sr(e,()=>e.getUniformLocation(t,a),'uniform "'...
function i6 (line 57) | function i6(e,t,a){return e.getUniformLocation(t,a)}
function o6 (line 57) | function o6(e,t,a,n){le(e,()=>r6(e,t,n)),le(e,()=>e.uniform1i(a,n))}
function sV (line 57) | function sV(e){le(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),le(e,()=>...
function xc (line 57) | function xc(e,t,a){le(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,a)),le(e,()=...
function k1 (line 57) | function k1(e,t){le(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,t)),le(e,()=>e...
function Xu (line 57) | function Xu(e){let t=e.checkFramebufferStatus(e.FRAMEBUFFER);if(t!==e.FR...
function l6 (line 57) | function l6(e,t){switch(t){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:retu...
function Sr (line 57) | function Sr(e,t,a){let n=le(e,()=>t());if(n==null)throw new Error(a);ret...
function u6 (line 57) | function u6(e,t){let a=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,n=t+e.TEXTUR...
function Hs (line 57) | function Hs(e,t=2){return v.sizeFromShape(e.slice(0,e.length-t))}
function js (line 57) | function js(e){if(e.length===0)throw Error("Cannot get rows and columns ...
function Ku (line 57) | function Ku(e){let t=[1,1,1];return e.length===0||e.length===1&&e[0]===1...
function d6 (line 57) | function d6(e,t=!1){let a=W().getNumber("WEBGL_MAX_TEXTURE_SIZE"),n=W()....
function dc (line 57) | function dc(e){return e%2===0}
function md (line 57) | function md(e,t){if(e=e.slice(-2),t=t.slice(-2),v.arraysEqual(e,t)||!e.l...
function p6 (line 57) | function p6(e){if(Ac==null){let t=Dn(e);Ac=t.getParameter(t.MAX_TEXTURE_...
function iV (line 57) | function iV(){Ac=null}
function oV (line 57) | function oV(){yc=null}
function c6 (line 57) | function c6(e){if(yc==null){let t=Dn(e);yc=t.getParameter(t.MAX_TEXTURE_...
function h6 (line 57) | function h6(e){if(e===0)return 0;let t,a=Dn(e);return cn(a,"EXT_disjoint...
function cn (line 57) | function cn(e,t){return e.getExtension(t)!=null}
function I1 (line 57) | function I1(e){try{if(Dn(e)!=null)return!0}catch(t){return console.log("...
function f6 (line 57) | function f6(e){if(e===0)return!1;let t=Dn(e);if(e===1){if(!cn(t,"OES_tex...
function m6 (line 57) | function m6(e){if(e===0)return!1;let t=Dn(e);if(e===1){if(!cn(t,"OES_tex...
function S1 (line 57) | function S1(e){let t=y3(e),a=e.createTexture();e.bindTexture(e.TEXTURE_2...
function lV (line 57) | function lV(e,t){let a=y3(e,t),n=e.createTexture();e.bindTexture(e.TEXTU...
function g6 (line 57) | function g6(e){return e!==2?!1:Dn(e).fenceSync!=null}
function uu (line 57) | function uu(e,t){Array.isArray(e)||(e=[e]),e.forEach(a=>{a!=null&&v.asse...
function Ca (line 57) | function Ca(){let e,t,a,n,r,s,i,o,l,u;return W().getNumber("WEBGL_VERSIO...
function Ao (line 103) | function Ao(e,t,a="index"){let n=v.computeStrides(t);return n.map((r,s)=...
function Oh (line 103) | function Oh(e,t,a="index"){let n=v.computeStrides(t);return n.map((r,s)=...
function uV (line 103) | function uV(e,t){let a=e.length,n=e.map(s=>`${t}[${s}]`),r=new Array(a-1...
function dV (line 103) | function dV(e,t,a="index"){let n=e.map((s,i)=>i),r=uV(n,t);return r.map(...
function v3 (line 103) | function v3(e){let t=v.computeStrides(e).map(a=>a.toString());return`
function w3 (line 107) | function w3(){return`
function pV (line 150) | function pV(e,t,a){let n=[];if(e.forEach(d=>{let h=v.sizeFromShape(d.sha...
function du (line 153) | function du(e,t=!1){let a=e.shapeInfo.logicalShape;switch(a.length){case...
function y6 (line 153) | function y6(e,t){switch(e.shapeInfo.logicalShape.length){case 0:return _...
function cV (line 153) | function cV(e,t,a=!1,n){let r="";a?r+=y6(e,n):r+=du(e,n);let s=e.shapeIn...
function hV (line 153) | function hV(e,t,a){switch(e.length){case 0:return b6();case 1:return kV(...
function fV (line 153) | function fV(e,t,a){switch(e.length){case 0:return b6();case 1:return IV(...
function mV (line 153) | function mV(e){return`
function gV (line 157) | function gV(e){return`
function xV (line 161) | function xV(e){return`
function AV (line 165) | function AV(e){return`${e.version}
function b6 (line 263) | function b6(){return`
function kV (line 267) | function kV(e,t,a){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)];return n[...
function IV (line 296) | function IV(e,t,a){return t[0]===1?a?`
function SV (line 324) | function SV(e,t,a){if(a)return`
function TV (line 355) | function TV(e,t,a){if(a)return`
function CV (line 371) | function CV(e,t,a){if(a)return`
function NV (line 412) | function NV(e,t,a){if(a)return`
function EV (line 428) | function EV(e,t){let a=Ao(["r","c","d","d2","d3"],e);return`
function RV (line 440) | function RV(e,t){let a=Ao(["r","c","d","d2","d3","d4"],e);return`
function MV (line 451) | function MV(e,t,a){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)];if(v.arra...
function $V (line 484) | function $V(e,t,a){return v.arraysEqual(e,t)?a?`
function yo (line 538) | function yo(e){return`offset${e}`}
function _V (line 538) | function _V(e){let t=e.name,a="get"+t.charAt(0).toUpperCase()+t.slice(1)...
function PV (line 542) | function PV(e,t){let a=e.name,n="get"+a.charAt(0).toUpperCase()+a.slice(...
function FV (line 556) | function FV(e,t){let a=e.name,n="get"+a.charAt(0).toUpperCase()+a.slice(...
function OV (line 569) | function OV(e,t){let a=e.name,n="get"+a.charAt(0).toUpperCase()+a.slice(...
function DV (line 607) | function DV(e,t){let a=e.shapeInfo.logicalShape,n=e.name,r="get"+n.charA...
function zV (line 631) | function zV(e,t){let a=e.shapeInfo.logicalShape,n=e.name,r="get"+n.charA...
function LV (line 689) | function LV(e,t){let a=e.shapeInfo.logicalShape,n=e.name,r="get"+n.charA...
function BV (line 709) | function BV(e,t){let a=e.shapeInfo.logicalShape,n=e.name,r="get"+n.charA...
function WV (line 767) | function WV(e,t){let a=e.name,n="get"+a.charAt(0).toUpperCase()+a.slice(...
function VV (line 787) | function VV(e,t){let a=e.shapeInfo.logicalShape,n=e.name,r="get"+n.charA...
function UV (line 857) | function UV(e){let t=e.shapeInfo.logicalShape,a=e.name,n="get"+a.charAt(...
function GV (line 898) | function GV(e){let t=e.shapeInfo.logicalShape,a=e.name,n="get"+a.charAt(...
function pu (line 948) | function pu(e){let t=e.name,a=v.sizeFromShape(e.shapeInfo.logicalShape);...
function HV (line 954) | function HV(e,t){let a=e.name,n=a.charAt(0).toUpperCase()+a.slice(1),r="...
function jV (line 968) | function jV(e,t){let a=e.name,n=a.charAt(0).toUpperCase()+a.slice(1),r="...
function gt (line 979) | function gt(e){if(e<=1)return"int";if(e===2)return"ivec2";if(e===3)retur...
function k3 (line 979) | function k3(e,t,a){let{newShape:n,keptDims:r}=v.squeezeShape(t),s=t.leng...
function cu (line 979) | function cu(e,t){let a=JSON.parse(JSON.stringify(e));return a.shapeInfo....
function hu (line 979) | function hu(e,t){return t.map(a=>e[a]).join(", ")}
function qV (line 979) | function qV(e,t,a,n){let r=a.map((p,c)=>{let d={logicalShape:p.shape,tex...
function v6 (line 979) | function v6(e,t,a){let n={},r={},s={},i=[],o,l,u,p=null,c=null;c=e.getUn...
function cx (line 979) | function cx(e,t){if(e.length!==t.length)throw Error(`Binary was compiled...
function XV (line 979) | function XV(e,t,a,n,r){t.program.enableShapeUniforms||(cx(t.inShapeInfos...
function KV (line 979) | function KV(e,t,a){let n="";t.concat(a).forEach(i=>{let o=i.texData!=nul...
function Na (line 979) | function Na(e){return W().getBool("WEBGL_USE_SHAPES_UNIFORMS")&&e<=4}
method constructor (line 979) | constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packed...
method constructor (line 999) | constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packed...
method constructor (line 1019) | constructor(e){this.variableNames=["A"],this.outTexUsage=pn.DOWNLOAD;let...
method constructor (line 1026) | constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packed...
method constructor (line 1034) | constructor(e,t=!1,a="RGBA"){this.variableNames=["A"],this.customUniform...
method constructor (line 1057) | constructor(e,t=!1){this.variableNames=["A"],this.packedInputs=!1,this.p...
function k6 (line 1101) | function k6(e){let t=Ca(),a=`${t.version}
function I6 (line 1110) | function I6(e){let t=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,...
function S6 (line 1110) | function S6(e){let t=new Uint16Array([0,1,2,2,1,3]);return e6(e,t)}
function dp (line 1110) | function dp(e,t,a,n,r,s){a6(t,a);let i=t6(e),o=e.TEXTURE_2D;return le(e,...
function I3 (line 1110) | function I3(e){return e.internalFormatFloat}
function T6 (line 1110) | function T6(e,t,a,n){let[r,s]=up(t,a);return dp(e,r,s,I3(n),n.textureFor...
function S3 (line 1110) | function S3(e){return e.internalFormatHalfFloat}
function C6 (line 1110) | function C6(e,t,a,n){let[r,s]=up(t,a);return dp(e,r,s,S3(n),n.textureFor...
function T3 (line 1110) | function T3(e){return e.downloadTextureFormat}
function N6 (line 1110) | function N6(e,t,a,n){let[r,s]=up(t,a);return dp(e,r,s,T3(n),e.RGBA,e.UNS...
function C3 (line 1110) | function C3(e){return e.internalFormatPackedFloat}
function E6 (line 1110) | function E6(e,t,a,n){let[r,s]=lu(t,a);return dp(e,r,s,C3(n),e.RGBA,e.FLO...
function N3 (line 1110) | function N3(e){return e.internalFormatPackedHalfFloat}
function R6 (line 1110) | function R6(e,t,a,n){let[r,s]=lu(t,a);return dp(e,r,s,N3(n),e.RGBA,n.tex...
function M6 (line 1110) | function M6(e,t,a){return le(e,()=>e.bindBuffer(e.ARRAY_BUFFER,a)),w1(e,...
function $6 (line 1110) | function $6(e,t,a,n,r,s){le(e,()=>e.bindTexture(e.TEXTURE_2D,t));let i,o...
function _6 (line 1110) | function _6(e,t,a){le(e,()=>e.bindTexture(e.TEXTURE_2D,t)),a.data instan...
function P6 (line 1110) | function P6(e,t,a,n){let r=e.createBuffer();le(e,()=>e.bindBuffer(e.PIXE...
function F6 (line 1110) | function F6(e,t,a){let n=e,r=new Float32Array(a);return n.bindBuffer(n.P...
function O6 (line 1110) | function O6(e,t,a,n){let[r,s]=up(t,a),i=4,o=new Uint8Array(YW(t*a,i));re...
function D6 (line 1110) | function D6(e,t,a,n,r,s,i,o){let l=e,u=new Float32Array(JW(s,i));return ...
function z6 (line 1110) | function z6(e,t,a){let n=new Float32Array(t*a*4);return le(e,()=>e.readP...
method constructor (line 1110) | constructor(e){this.outputTexture=null,this.program=null,this.disposed=!...
method debug (line 1110) | get debug(){return W().getBool("DEBUG")}
method dispose (line 1110) | dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disp...
method createFloat32MatrixTexture (line 1110) | createFloat32MatrixTexture(e,t){return this.throwIfDisposed(),T6(this.gl...
method createFloat16MatrixTexture (line 1110) | createFloat16MatrixTexture(e,t){return this.throwIfDisposed(),C6(this.gl...
method createUnsignedBytesMatrixTexture (line 1110) | createUnsignedBytesMatrixTexture(e,t){return this.throwIfDisposed(),N6(t...
method uploadPixelDataToTexture (line 1110) | uploadPixelDataToTexture(e,t){this.throwIfDisposed(),_6(this.gl,e,t)}
method uploadDenseMatrixToTexture (line 1110) | uploadDenseMatrixToTexture(e,t,a,n){this.throwIfDisposed(),$6(this.gl,e,...
method createFloat16PackedMatrixTexture (line 1110) | createFloat16PackedMatrixTexture(e,t){return this.throwIfDisposed(),R6(t...
method createPackedMatrixTexture (line 1110) | createPackedMatrixTexture(e,t){return this.throwIfDisposed(),E6(this.gl,...
method deleteMatrixTexture (line 1110) | deleteMatrixTexture(e){this.throwIfDisposed(),this.outputTexture===e&&(k...
method downloadByteEncodedFloatMatrixFromOutputTexture (line 1110) | downloadByteEncodedFloatMatrixFromOutputTexture(e,t,a){return this.downl...
method downloadPackedMatrixFromBuffer (line 1110) | downloadPackedMatrixFromBuffer(e,t,a,n,r,s){return D6(this.gl,e,t,a,n,r,...
method downloadFloat32MatrixFromBuffer (line 1110) | downloadFloat32MatrixFromBuffer(e,t){return F6(this.gl,e,t)}
method createBufferFromTexture (line 1110) | createBufferFromTexture(e,t,a){this.bindTextureToFrameBuffer(e);let n=P6...
method createAndWaitForFence (line 1110) | createAndWaitForFence(){let e=this.createFence(this.gl);return this.poll...
method createFence (line 1110) | createFence(e){let t,a;if(W().getBool("WEBGL_FENCE_API_ENABLED")){let n=...
method downloadMatrixFromPackedTexture (line 1110) | downloadMatrixFromPackedTexture(e,t,a){return this.downloadMatrixDriver(...
method createProgram (line 1110) | createProgram(e){this.throwIfDisposed();let t=this.gl;this.vertexShader=...
method deleteProgram (line 1110) | deleteProgram(e){this.throwIfDisposed(),e===this.program&&(this.program=...
method setProgram (line 1110) | setProgram(e){this.throwIfDisposed(),this.program=e,this.program!=null&&...
method getUniformLocation (line 1110) | getUniformLocation(e,t,a=!0){return this.throwIfDisposed(),a?s6(this.gl,...
method getAttributeLocation (line 1110) | getAttributeLocation(e,t){return this.throwIfDisposed(),le(this.gl,()=>t...
method getUniformLocationNoThrow (line 1110) | getUniformLocationNoThrow(e,t){return this.throwIfDisposed(),this.gl.get...
method setInputMatrixTexture (line 1110) | setInputMatrixTexture(e,t,a){this.throwIfDisposed(),this.throwIfNoProgra...
method setOutputMatrixTexture (line 1110) | setOutputMatrixTexture(e,t,a){this.setOutputMatrixTextureDriver(e,a,t)}
method setOutputPackedMatrixTexture (line 1110) | setOutputPackedMatrixTexture(e,t,a){this.throwIfDisposed();let[n,r]=lu(t...
method setOutputMatrixWriteRegion (line 1110) | setOutputMatrixWriteRegion(e,t,a,n){this.setOutputMatrixWriteRegionDrive...
method setOutputPackedMatrixWriteRegion (line 1110) | setOutputPackedMatrixWriteRegion(e,t,a,n){throw new Error("setOutputPack...
method debugValidate (line 1110) | debugValidate(){this.program!=null&&gc(this.gl,this.program),Xu(this.gl)}
method executeProgram (line 1110) | executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let e=th...
method blockUntilAllProgramsCompleted (line 1110) | blockUntilAllProgramsCompleted(){this.throwIfDisposed(),le(this.gl,()=>t...
method getQueryTimerExtension (line 1110) | getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&...
method getQueryTimerExtensionWebGL2 (line 1110) | getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}
method getQueryTimerExtensionWebGL1 (line 1110) | getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}
method beginQuery (line 1110) | beginQuery(){if(W().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERS...
method endQuery (line 1110) | endQuery(){if(W().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSIO...
method waitForQueryAndGetTime (line 1110) | async waitForQueryAndGetTime(e){return await v.repeatedTry(()=>this.disp...
method getQueryTime (line 1110) | getQueryTime(e,t){if(t===0)return null;if(t===2){let a=this.gl;return a....
method isQueryAvailable (line 1110) | isQueryAvailable(e,t){if(t===0)return!0;if(t===2){let a=this.gl,n=this.g...
method pollFence (line 1110) | pollFence(e){return new Promise(t=>{this.addItemToPoll(()=>e.isFencePass...
method pollItems (line 1110) | pollItems(){let e=aU(this.itemsToPoll.map(t=>t.isDoneFn));for(let t=0;t<...
method addItemToPoll (line 1110) | addItemToPoll(e,t){if(this.itemsToPoll.push({isDoneFn:e,resolveFn:t}),th...
method bindTextureToFrameBuffer (line 1110) | bindTextureToFrameBuffer(e){this.throwIfDisposed(),xc(this.gl,e,this.fra...
method unbindTextureToFrameBuffer (line 1110) | unbindTextureToFrameBuffer(){this.outputTexture!=null?(xc(this.gl,this.o...
method downloadMatrixDriver (line 1110) | downloadMatrixDriver(e,t){this.bindTextureToFrameBuffer(e);let a=t();ret...
method setOutputMatrixTextureDriver (line 1110) | setOutputMatrixTextureDriver(e,t,a){this.throwIfDisposed();let n=this.gl...
method setOutputMatrixWriteRegionDriver (line 1110) | setOutputMatrixWriteRegionDriver(e,t,a,n){this.throwIfDisposed(),le(this...
method throwIfDisposed (line 1110) | throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use dis...
method throwIfNoProgram (line 1110) | throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program...
function aU (line 1110) | function aU(e){let t=0;for(;t<e.length&&e[t]();++t);return t-1}
function V6 (line 1110) | function V6(e,t){return["x","y","z","w","u","v"].slice(0,t).map(a=>`${e}...
function va (line 1110) | function va(e,t){return t===1?[e]:V6(e,t)}
function jU (line 1110) | function jU(e,t){if(e===1)return"rc";let a="";for(let n=0;n<e;n++)a+=t[n...
method constructor (line 1110) | constructor(e){if(this.variableNames=["A"],this.packedInputs=!1,this.pac...
method getSourceCoordsArr (line 1126) | getSourceCoordsArr(e){let t=[];for(let a=0;a<=1;a++)for(let n=0;n<=1;n++...
method getOutOfBoundsCondition (line 1126) | getOutOfBoundsCondition(e){if(this.rank===1)return`rc > ${this.enableSha...
method getSetup (line 1126) | getSetup(e){if(this.rank===1)return"";let t=e.slice(-2),a=this.enableSha...
method getOutput (line 1134) | getOutput(e){let t=this.getSourceCoordsArr(e);return this.rank===1?`getA...
method constructor (line 1137) | constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.pack...
function XU (line 1165) | function XU(e,t){return`
method constructor (line 1170) | constructor(e){this.gpgpu=e,this.numUsedTextures=0,this.numFreeTextures=...
method acquireTexture (line 1170) | acquireTexture(e,t,a){let n=mx(t,a),r=gx(e,n,a);r in this.freeTextures||...
method releaseTexture (line 1170) | releaseTexture(e,t,a,n){if(this.freeTextures==null)return;let r=mx(a,n),...
method log (line 1170) | log(){if(!this.logEnabled)return;let e=this.numFreeTextures+this.numUsed...
method numBytesAllocated (line 1170) | get numBytesAllocated(){return this._numBytesAllocated}
method numBytesFree (line 1170) | get numBytesFree(){return this._numBytesFree}
method getNumUsedTextures (line 1170) | getNumUsedTextures(){return this.numUsedTextures}
method getNumFreeTextures (line 1170) | getNumFreeTextures(){return this.numFreeTextures}
method dispose (line 1170) | dispose(){if(this.freeTextures!=null){for(let e in this.freeTextures)thi...
function ZU (line 1170) | function ZU(e,t){let a=e;if(t===a.R32F)return 4;if(t===a.R16F)return 2;i...
function fx (line 1170) | function fx(e,t,a,n,r){let s=YU(t,n),i;if(r){let[l,u]=lu(e[0],e[1]);i=l*...
function YU (line 1170) | function YU(e,t){switch(e){case na.PACKED_2X2_FLOAT32:return C3(t);case ...
function JU (line 1170) | function JU(e){return W().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?e?na.P...
function mx (line 1170) | function mx(e,t){if(e===pn.UPLOAD)return na.PACKED_2X2_FLOAT32;if(e===pn...
function gx (line 1170) | function gx(e,t,a){return`${e[0]}_${e[1]}_${t}_${a}`}
method constructor (line 1170) | constructor(e,t){this.variableNames=["A"],this.outputShape=e,this.enable...
method constructor (line 1214) | constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.pack...
method constructor (line 1225) | constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packed...
function hG (line 1232) | function hG(e){return e in zm||(zm[e]={}),zm[e]}
function gG (line 1232) | function gG(){return W().global.screen==null?1024:W().global.screen.heig...
method constructor (line 1232) | constructor(e){if(super(),this.pendingRead=new WeakMap,this.pendingDispo...
method nextDataId (line 1232) | nextDataId(){return fu.nextDataId++}
method numDataIds (line 1232) | numDataIds(){return this.texData.numDataIds()-this.pendingDeletes}
method writeTexture (line 1232) | writeTexture(e,t,a,n,r,s){let i=this.makeTensorInfo(t,a),o=this.texData....
method write (line 1232) | write(e,t,a){if((W().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||W().getB...
method refCount (line 1232) | refCount(e){return this.texData.has(e)?this.texData.get(e).refCount:0}
method incRef (line 1232) | incRef(e){let t=this.texData.get(e);t.refCount++}
method decRef (line 1232) | decRef(e){if(this.texData.has(e)){let t=this.texData.get(e);t.refCount--}}
method move (line 1232) | move(e,t,a,n,r){if(W().getBool("DEBUG")&&this.checkNumericalProblems(t),...
method disposeIntermediateTensorInfo (line 1232) | disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}
method readSync (line 1232) | readSync(e){let t=this.texData.get(e),{values:a,dtype:n,complexTensorInf...
method read (line 1232) | async read(e){if(this.pendingRead.has(e)){let h=this.pendingRead.get(e);...
method readToGPU (line 1232) | readToGPU(e,t={}){let a=this.texData.get(e),{values:n,shape:r,slice:s,dt...
method bufferSync (line 1232) | bufferSync(e){let t=this.readSync(e.dataId);if(e.dtype==="string")try{le...
method checkNumericalProblems (line 1232) | checkNumericalProblems(e){if(e!=null)for(let t=0;t<e.length;t++){let a=e...
method getValuesFromTexture (line 1232) | getValuesFromTexture(e){let{shape:t,dtype:a,isPacked:n}=this.texData.get...
method timerAvailable (line 1232) | timerAvailable(){return W().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENS...
method time (line 1232) | time(e){let t=this.activeTimers,a=[],n=!1;this.programTimersStack==null?...
method memory (line 1232) | memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesI...
method startTimer (line 1232) | startTimer(){return W().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_...
method endTimer (line 1232) | endTimer(e){return W().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_R...
method getQueryTime (line 1232) | async getQueryTime(e){if(W().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTEN...
method disposeData (line 1232) | disposeData(e,t=!1){if(this.pendingDisposal.has(e))return!1;if(!this.tex...
method releaseGPUData (line 1232) | releaseGPUData(e){let{texture:t,dtype:a,texShape:n,usage:r,isPacked:s,sl...
method getTexture (line 1232) | getTexture(e){return this.uploadToGPU(e),this.texData.get(e).texture.tex...
method getDataInfo (line 1232) | getDataInfo(e){return this.texData.get(e)}
method shouldExecuteOnCPU (line 1232) | shouldExecuteOnCPU(e,t=fG){return W().getBool("WEBGL_CPU_FORWARD")&&e.ev...
method getGPGPUContext (line 1232) | getGPGPUContext(){return this.gpgpu}
method where (line 1232) | where(e){T.warn("tf.where() in webgl locks the UI thread. Call tf.whereA...
method packedUnaryOp (line 1232) | packedUnaryOp(e,t,a){let n=new Vr(e.shape,t),r=this.compileAndRun(n,[e],...
method abs (line 1232) | abs(e){if(this.shouldExecuteOnCPU([e])&&e.dtype!=="complex64"){let n=B6(...
method makeTensorInfo (line 1232) | makeTensorInfo(e,t,a){let n;if(t==="string"&&a!=null&&a.length>0&&v.isSt...
method makeOutput (line 1232) | makeOutput(e,t,a){return kt().makeTensorFromTensorInfo(this.makeTensorIn...
method unpackTensor (line 1232) | unpackTensor(e){let t=new uG(e.shape);return this.runWebGLProgram(t,[e],...
method packTensor (line 1232) | packTensor(e){let t=new qU(e.shape),a=!0;return this.runWebGLProgram(t,[...
method packedReshape (line 1232) | packedReshape(e,t){let a=[Hs(e.shape),...js(e.shape)],n={dtype:e.dtype,s...
method decode (line 1232) | decode(e,t){let a=this.texData.get(e),{isPacked:n,shape:r,dtype:s}=a;if(...
method runWebGLProgram (line 1232) | runWebGLProgram(e,t,a,n,r=!1,s){let i=this.makeTensorInfo(e.outputShape,...
method compileAndRun (line 1232) | compileAndRun(e,t,a,n,r=!1){return a=a||t[0].dtype,this.runWebGLProgram(...
method getAndSaveBinary (line 1232) | getAndSaveBinary(e,t){return e in this.binaryCache||(this.binaryCache[e]...
method getTextureManager (line 1232) | getTextureManager(){return this.textureManager}
method dispose (line 1232) | dispose(){this.disposed||(W().getBool("IS_TEST")||Object.keys(this.binar...
method floatPrecision (line 1232) | floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPreci...
method epsilon (line 1232) | epsilon(){return this.floatPrecision()===32?pG:cG}
method uploadToGPU (line 1232) | uploadToGPU(e){let t=this.texData.get(e),{shape:a,dtype:n,values:r,textu...
method convertAndCacheOnCPU (line 1232) | convertAndCacheOnCPU(e,t){let a=this.texData.get(e),{dtype:n}=a;return t...
method acquireTexture (line 1232) | acquireTexture(e,t,a,n){if(this.numBytesInGPU+=this.computeBytes(e,a),!t...
method computeBytes (line 1232) | computeBytes(e,t){return e[0]*e[1]*v.bytesPerElement(t)}
method checkCompileCompletion (line 1232) | checkCompileCompletion(){for(let[,e]of Object.entries(this.binaryCache))...
method checkCompileCompletionAsync (line 1232) | async checkCompileCompletionAsync(){let e=[];if(this.gpgpu.parallelCompi...
method checkCompletionAsync_ (line 1232) | async checkCompletionAsync_(e){return this.gpgpu.gl.getProgramParameter(...
method checkCompletion_ (line 1232) | checkCompletion_(e){if(this.gpgpu.gl.getProgramParameter(e.webGLProgram,...
method getUniformLocations (line 1232) | getUniformLocations(){for(let[,e]of Object.entries(this.binaryCache)){le...
method createTensorFromTexture (line 1232) | createTensorFromTexture(e,t,a){let{texture:n,height:r,width:s,channels:i...
function xG (line 1232) | function xG(e,t){if(t==="float32"||t==="complex64")return e;if(t==="int3...
function G6 (line 1232) | function G6(){W().set("WEBGL_FORCE_F16_TEXTURES",!0)}
method constructor (line 1235) | constructor(e,t,a){this.variableNames=["A","B"],this.outputShape=T.asser...
method constructor (line 1250) | constructor(e,t,a,n=!1){this.variableNames=["A","B"],this.supportsBroadc...
function Za (line 1294) | function Za(e){let{inputs:t,backend:a}=e,{x:n}=t;return a.incRef(n.dataI...
function ls (line 1294) | function ls(e){let{inputs:t,backend:a}=e,{real:n,imag:r}=t,s=a.makeTenso...
function wG (line 1297) | function wG(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{alpha:s}=n,i=a...
function IG (line 1300) | function IG(e){let{inputs:t,backend:a}=e,{x:n,alpha:r}=t,s=W().getBool("...
function Qe (line 1300) | function Qe({opSnippet:e,packedOpSnippet:t,cpuKernelImpl:a,dtype:n}){ret...
function oa (line 1300) | function oa({opSnippet:e,packedOpSnippet:t,checkOutOfBounds:a=!1,support...
function gd (line 1300) | function gd(e,t=!1){if(e==="linear")return t?rG:QU;if(e==="relu")return ...
method constructor (line 1300) | constructor(e,t,a,n=!1,r=!1,s=!1,i=null,o=!1,l=!1){this.variableNames=["...
method constructor (line 1339) | constructor(e,t,a){this.variableNames=["AReal","AImag","BReal","BImag"],...
function M3 (line 1352) | function M3(e){let{inputs:t,backend:a}=e,{a:n,b:r}=t,s=T.upcastType(n.dt...
function CG (line 1352) | function CG(e,t,a){let n=[Hs(e.shape),...js(e.shape)],r={dtype:e.dtype,s...
function ce (line 1352) | function ce(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{shape:s}=n,i=a...
method constructor (line 1352) | constructor(e,t){this.variableNames=["x"];let{windowSize:a,batchSize:n,i...
method constructor (line 1405) | constructor(e,t){this.variableNames=["x"];let{windowSize:a,batchSize:n,i...
function RG (line 1497) | function RG(e){let t=[];for(;t.length===0||t[t.length-1].outSize!==1;){l...
function bo (line 1497) | function bo(e,t,a,n){let r=RG(e.shape),s=e;for(let i=0;i<r.length;i++){l...
method constructor (line 1497) | constructor(e,t){this.variableNames=["A"];let a=new Array(e.length);for(...
function $G (line 1502) | function $G(e){let t=e.length;if(t>6)throw Error(`Transpose for rank ${t...
method constructor (line 1502) | constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.pack...
function Dh (line 1519) | function Dh(e,t,a){let n=W().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new ...
function PG (line 1519) | function PG(e,t,a,n){let r=t,s=e.shape.length,i=v.parseAxisParam(r,e.sha...
function zh (line 1519) | function zh(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s,keepDim...
function Ia (line 1519) | function Ia(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{perm:s}=n,i=a,...
function Dc (line 1519) | function Dc({a:e,b:t,transposeA:a,transposeB:n,backend:r,bias:s=null,pre...
function DG (line 1519) | function DG(e){let{inputs:t,backend:a,attrs:n}=e,{a:r,b:s,bias:i,preluAc...
function LG (line 1519) | function LG(e){let{inputs:t,backend:a}=e,{x:n}=t;if(a.shouldExecuteOnCPU...
method constructor (line 1526) | constructor(e,t){this.outputShape=[],this.outputShape=e,this.variableNam...
method constructor (line 1534) | constructor(e,t){this.outputShape=[],this.packedInputs=!0,this.packedOut...
function bc (line 1542) | function bc(e){let{inputs:t,backend:a}=e,n=t;if(n.length===1)return Za({...
function JG (line 1542) | function JG(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s,keepDim...
function eH (line 1542) | function eH(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s,keepDim...
method constructor (line 1542) | constructor(e,t,a){this.variableNames=["A"];let{windowSize:n,batchSize:r...
method constructor (line 1562) | constructor(e,t,a,n){this.variableNames=["A"],this.packedInputs=!0,this....
function Y6 (line 1624) | function Y6(e,t,a,n=null){let r=t.shape[0],s=t.shape[1];n!=null&&(r=n.sh...
function J6 (line 1624) | function J6(e,t,a,n=null){let r=n!=null?n.shape:t.shape,s=r[r.length-1],...
function Q6 (line 1624) | function Q6(e,t,a,n){let r=[a];if(T.assertAxesAreInnerMostDims("arg"+n.c...
function rH (line 1624) | function rH(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s}=n,i=v....
function iH (line 1624) | function iH(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s}=n,i=v....
method constructor (line 1642) | constructor(e,t,a,n=!1,r=!1){if(this.variableNames=["x"],t==="avg"&&a)th...
method constructor (line 1783) | constructor(e,t,a,n=!1,r=!1){if(this.variableNames=["x"],t==="avg"&&a)th...
function IH (line 1946) | function IH(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t;uu(r,"avgPool")...
function TH (line 1946) | function TH(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{filterSize:s,s...
method constructor (line 1946) | constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let ...
method constructor (line 1988) | constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let ...
function RH (line 2044) | function RH(e){let{inputs:t,backend:a,attrs:n}=e,{dy:r,input:s}=t,i=s,{f...
function $H (line 2044) | function $H(e){let{inputs:t,backend:a,attrs:n}=e,{dy:r,input:s}=t,i=s;uu...
function PH (line 2044) | function PH(e){let{inputs:t,backend:a,attrs:n}=e,{a:r,b:s}=t,{transposeA...
method constructor (line 2044) | constructor(e,t,a,n,r,s){this.outputShape=[],this.variableNames=["x","me...
method constructor (line 2054) | constructor(e,t,a,n,r,s){this.packedInputs=!0,this.packedOutput=!0,this....
method constructor (line 2067) | constructor(e){this.variableNames=["source"],this.outputShape=e,this.ran...
function WH (line 2077) | function WH(e){if(e===1)return"sourceLoc";if(e<=6)return T1.slice(0,e).m...
method constructor (line 2077) | constructor(e){this.variableNames=["source"],this.packedInputs=!0,this.p...
function UH (line 2106) | function UH(e,t,a,n){let r=n.texData.get(e.dataId),s=n.makeTensorInfo(a,...
function gu (line 2106) | function gu(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{begin:s,size:i...
function qH (line 2106) | function qH(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,weights:s}=t,{size...
function KH (line 2106) | function KH(e){let{inputs:t,backend:a}=e,{s0:n,s1:r}=t,s=a.readSync(n.da...
function hp (line 2106) | function hp(e){let{inputs:t,backend:a}=e,{input:n}=t,r=a.texData.get(n.d...
function tj (line 2106) | function tj(e,t){let a=new qn(e.shape,ej),n=t.runWebGLProgram(a,[e],"int...
function C1 (line 2106) | function C1(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{dtype:s}=n;if(...
method constructor (line 2106) | constructor(e){this.variableNames=["A"],this.customUniforms=[{name:"minV...
method constructor (line 2117) | constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packed...
function oj (line 2128) | function oj(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{clipValueMin:s...
method constructor (line 2128) | constructor(e){this.variableNames=["real","imag"],this.outputShape=e,thi...
function Sx (line 2141) | function Sx(e,t){return{dataId:t.dataId,dtype:t.dtype,shape:e.shape}}
function dj (line 2141) | function dj(e){let{inputs:t,backend:a}=e,{x:n}=t,r=a.texData.get(n.dataI...
method constructor (line 2141) | constructor(e){this.outputShape=[],this.outputShape=T.computeOutShape(e,...
method constructor (line 2150) | constructor(e,t){this.packedInputs=!0,this.packedOutput=!0,this.outputSh...
function pc (line 2187) | function pc(e,t,a){let n=e.indexOf(t);return e.map((r,s)=>s===n?`${r} - ...
function Lh (line 2187) | function Lh(e){let{inputs:t,backend:a}=e,{input:n}=t,r=a.texData.get(n.d...
function Zu (line 2187) | function Zu(e,t,a){let n=e[0].dtype;if(n==="complex64"){let h=e.map(A=>h...
function mj (line 2187) | function mj(e,t,a){let n=T.computeOutShape(e.map(r=>r.shape),t);return{t...
function tv (line 2187) | function tv(e){let{inputs:t,backend:a,attrs:n}=e,{axis:r}=n,s=v.parseAxi...
method constructor (line 2187) | constructor(e,t=!1,a=null,n=!1,r=!1){this.variableNames=["x","W"],this.o...
method constructor (line 2321) | constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;...
method constructor (line 2409) | constructor(e,t=!1,a=null,n=!1,r=!1){this.variableNames=["x","W"],this.p...
method constructor (line 2605) | constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.pack...
function zc (line 2652) | function zc(e,t){let a=e.length;return a>=3?t?[...e.slice(0,-3),e[a-3]*e...
function rv (line 2652) | function rv({x:e,filter:t,convInfo:a,backend:n,bias:r=null,preluActivati...
function sv (line 2652) | function sv({x:e,filter:t,convInfo:a,backend:n,bias:r=null,preluActivati...
function yj (line 2652) | function yj(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,filter:s}=t,{strid...
method constructor (line 2652) | constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterSh...
method constructor (line 2694) | constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;...
method constructor (line 2747) | constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterSh...
method constructor (line 2789) | constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;...
function Sj (line 2846) | function Sj(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,dy:s}=t,{strides:i...
function Cj (line 2846) | function Cj(e){let{inputs:t,backend:a,attrs:n}=e,{dy:r,filter:s}=t,{inpu...
function Ej (line 2846) | function Ej(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,filter:s}=t,{strid...
function Mj (line 2846) | function Mj(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,dy:s}=t,{strides:i...
function _j (line 2846) | function _j(e){let{inputs:t,backend:a,attrs:n}=e,{dy:r,filter:s}=t,{pad:...
method constructor (line 2851) | constructor(e,t,a,n,r){this.variableNames=["Image","Boxes","BoxInd"],thi...
method constructor (line 2912) | constructor(e,t,a,n){this.op=e,this.outputShape=t,this.variableNames=["x...
function Cx (line 2925) | function Cx(e,t,a){if(e===1)return`${t}`;if(e===2)return`${t}.x, ${t}.y`...
function Nx (line 2925) | function Nx(e,t,a){if(e===1)return`${t}`;if(e===2)return`${t}.y`;if(e===...
function iv (line 2925) | function iv(e,t,a,n,r,s){let i=t.shape.length,o=T.getAxesPermutation([n]...
function Gj (line 2925) | function Gj(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s,exclusi...
function jj (line 2925) | function jj(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s,exclusi...
function Xj (line 2925) | function Xj(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,weights:s}=t,{size...
method constructor (line 2925) | constructor(e,t,a){this.variableNames=["x"],this.outputShape=[],this.out...
method getHeightCoordString (line 2944) | getHeightCoordString(){return this.dataFormat==="NHWC"?"coords[1]":"coor...
method getWidthCoordString (line 2944) | getWidthCoordString(){return this.dataFormat==="NHWC"?"coords[2]":"coord...
method getDepthCoordString (line 2944) | getDepthCoordString(){return this.dataFormat==="NHWC"?"coords[3]":"coord...
method getOutputDepthSize (line 2944) | getOutputDepthSize(){return this.dataFormat==="NHWC"?this.outputShape[3]...
method getInputSamplingString (line 2944) | getInputSamplingString(){return this.dataFormat==="NHWC"?"getX(b, in_h, ...
function Yj (line 2944) | function Yj(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{blockSize:s,da...
method constructor (line 2944) | constructor(e,t=!1,a=null,n=!1,r=!1){this.variableNames=["x","W"],this.c...
method constructor (line 2997) | constructor(e,t=!1,a=null,n=!1,r=!1){this.variableNames=["x","W"],this.p...
function Qj (line 3186) | function Qj(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,filter:s}=t,{strid...
method constructor (line 3186) | constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterSh...
method constructor (line 3221) | constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;...
function nq (line 3266) | function nq(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,dy:s}=t,{strides:i...
function sq (line 3266) | function sq(e){let{inputs:t,backend:a,attrs:n}=e,{dy:r,filter:s}=t,{stri...
method constructor (line 3266) | constructor(e){this.variableNames=["X"],this.outputShape=[e,e],this.user...
function lq (line 3272) | function lq(e){let{inputs:t,backend:a}=e,{x:n}=t,r=[...n.shape,...n.shap...
method constructor (line 3272) | constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;...
function pq (line 3310) | function pq(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,filter:s}=t,{strid...
function hq (line 3310) | function hq(e){let{inputs:t,backend:a,attrs:n}=e,{equation:r}=n,s=t,{all...
function N1 (line 3350) | function N1(e){let{inputs:t,attrs:a,backend:n}=e,{dim:r}=a,{input:s}=t,i...
method constructor (line 3350) | constructor(e,t,a){this.variableNames=["real","imag"];let n=t[1];this.ou...
function dv (line 3383) | function dv(e,t,a){let n=a.texData.get(e.dataId),r=v.sizeFromShape(e.sha...
function Oq (line 3383) | function Oq(e){let{inputs:t,backend:a}=e,{input:n}=t;return dv(n,!1,a)}
method constructor (line 3383) | constructor(e,t){this.outputShape=[],this.customUniforms=[{name:"value",...
function fp (line 3388) | function fp(e){let{backend:t,attrs:a}=e,{shape:n,value:r}=a,{dtype:s}=a;...
method constructor (line 3388) | constructor(e){this.variableNames=["Image"],this.outputShape=[];let t=e[...
method constructor (line 3433) | constructor(e){this.variableNames=["A"];let t=Ca(),[a,n]=e;this.outputSh...
method constructor (line 3455) | constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packed...
function Yq (line 3489) | function Yq(e){let{inputs:t,backend:a,attrs:n}=e,{pixels:r}=t,{numChanne...
function Jq (line 3489) | function Jq(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,filter:s,bias:i,pr...
function eX (line 3489) | function eX(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,filter:s,bias:i,pr...
method constructor (line 3489) | constructor(e,t,a,n){this.sliceDim=e,this.strides=t,this.paramsShape=n,t...
function nX (line 3504) | function nX(e){let{inputs:t,backend:a}=e,{params:n,indices:r}=t,s=r.shap...
method constructor (line 3504) | constructor(e,t){this.variableNames=["A","indices"],this.outputShape=t,t...
function iX (line 3511) | function iX(e,t){let a=["resRC.x","resRC.y","resRC.z","resRC.w"],n=[];fo...
function pv (line 3511) | function pv(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,indices:s}=t,{axis...
function gX (line 3515) | function gX(e){let{inputs:t,backend:a}=e,{input:n}=t;return dv(n,!0,a)}
function FX (line 3519) | function FX(e){let{backend:t,attrs:a}=e,{start:n,stop:r,num:s}=a,i=AU(n,...
method constructor (line 3540) | constructor(e,t,a,n,r){this.variableNames=["x"],this.outputShape=[];let ...
method constructor (line 3559) | constructor(e,t,a,n,r){this.variableNames=["x"],this.outputShape=[],this...
method constructor (line 3621) | constructor(e,t,a,n,r){this.variableNames=["inputImage","outputImage","d...
function lK (line 3676) | function lK(e,t,a,n){let r=v.sizeFromShape(t),s=v.sizeFromShape(e.shape)...
function cv (line 3676) | function cv(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{reductionIndic...
function fK (line 3685) | function fK(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t;uu(r,"maxPool")...
function gK (line 3685) | function gK(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{filterSize:s,s...
method constructor (line 3685) | constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inS...
method constructor (line 3731) | constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inS...
function bK (line 3795) | function bK(e){let{inputs:t,backend:a,attrs:n}=e,{dy:r,input:s}=t,i=s,{f...
function wK (line 3795) | function wK(e){let{inputs:t,backend:a,attrs:n}=e,{dy:r,input:s,output:i}...
function IK (line 3795) | function IK(e,t,a,n){let r=new xd(a,"max",!1),s=n.runWebGLProgram(r,[e],...
function TK (line 3795) | function TK(e,t,a,n){let r=v.sizeFromShape(t),s=v.sizeFromShape(e.shape)...
function NK (line 3795) | function NK(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s,keepDim...
method constructor (line 3804) | constructor(e,t,a){this.variableNames=["x"],this.outputShape=t.map((u,p)...
method constructor (line 3833) | constructor(e,t,a){this.variableNames=["x"],this.packedInputs=!0,this.pa...
method constructor (line 3895) | constructor(e,t,a){this.variableNames=["probs"],this.customUniforms=[{na...
function mv (line 3937) | function mv(e){let{inputs:t,backend:a,attrs:n}=e,{logits:r}=t,{dim:s}=n,...
function XK (line 3937) | function XK(e){let{inputs:t,backend:a,attrs:n}=e,{logits:r}=t,{numSample...
function JK (line 3949) | function JK(e){let{inputs:t,backend:a}=e,{x:n}=t;if(a.shouldExecuteOnCPU...
function tZ (line 3949) | function tZ(e){T.warn("tf.nonMaxSuppression() in webgl locks the UI thre...
function rZ (line 3949) | function rZ(e){T.warn("tf.nonMaxSuppression() in webgl locks the UI thre...
function oZ (line 3949) | function oZ(e){T.warn("tf.nonMaxSuppression() in webgl locks the UI thre...
method constructor (line 3949) | constructor(e,t,a,n){this.variableNames=["indices"],this.outputShape=[e,...
function Lc (line 3956) | function Lc(e){let{inputs:t,backend:a}=e,{x:n}=t;if(n.dtype==="complex64...
function gv (line 3956) | function gv(e){let{inputs:t,backend:a}=e,{x:n}=t;if(n.dtype==="string")t...
function fZ (line 3956) | function fZ(e){let{inputs:t,backend:a,attrs:n}=e,{axis:r}=n;if(t.length=...
method constructor (line 3956) | constructor(e,t,a){this.variableNames=["x"],this.customUniforms=[{name:"...
method constructor (line 3981) | constructor(e,t,a){this.variableNames=["x"],this.packedInputs=!0,this.pa...
function kZ (line 4032) | function kZ(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s,keepDim...
function SZ (line 4032) | function SZ(e){let{inputs:t,backend:a,attrs:n}=e,{paramsNestedSplits:r,p...
function CZ (line 4032) | function CZ(e){let{inputs:t,backend:a}=e,{starts:n,limits:r,deltas:s}=t,...
function EZ (line 4032) | function EZ(e){let{inputs:t,backend:a,attrs:n}=e,{shape:r,values:s,defau...
method constructor (line 4056) | constructor(e,t,a,n,r){this.variableNames=["A"],this.outputShape=[];let[...
method constructor (line 4089) | constructor(e,t,a,n,r){this.variableNames=["A"],this.packedInputs=!0,thi...
function HZ (line 4166) | function HZ(e){let{inputs:t,backend:a,attrs:n}=e,{images:r}=t,{alignCorn...
method constructor (line 4166) | constructor(e,t,a){this.variableNames=["dy"],this.outputShape=[],this.ou...
function XZ (line 4247) | function XZ(e){let{inputs:t,backend:a,attrs:n}=e,{images:r,dy:s}=t,{alig...
method constructor (line 4247) | constructor(e,t,a,n,r){this.variableNames=["A"],this.outputShape=[];let[...
method constructor (line 4269) | constructor(e,t,a,n,r){this.variableNames=["A"],this.packedInputs=!0,thi...
function JZ (line 4310) | function JZ(e){let{inputs:t,backend:a,attrs:n}=e,{images:r}=t,{alignCorn...
method constructor (line 4310) | constructor(e,t,a){this.variableNames=["dy"],this.outputShape=[],this.ou...
function tY (line 4380) | function tY(e){let{inputs:t,backend:a,attrs:n}=e,{images:r,dy:s}=t,{alig...
method constructor (line 4380) | constructor(e,t){this.variableNames=["x"];let a=e.length;if(a>4)throw ne...
method constructor (line 4390) | constructor(e,t){this.variableNames=["x"],this.packedInputs=!0,this.pack...
function sY (line 4418) | function sY(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{dims:s}=n,i=r....
method constructor (line 4418) | constructor(e,t){this.variableNames=["Image"],this.outputShape=[],this.c...
method constructor (line 4452) | constructor(e,t,a,n,r,s,i=!0){this.variableNames=["updates","indices","d...
function mY (line 4472) | function mY(e){let{inputs:t,backend:a,attrs:n}=e,{indices:r,updates:s}=t...
method constructor (line 4472) | constructor(e,t,a,n){this.variableNames=["sortedSequence","values"],this...
function AY (line 4497) | function AY(e){let{inputs:t,backend:a,attrs:n}=e,{sortedSequence:r,value...
method constructor (line 4497) | constructor(e,t,a){this.variableNames=["c","a","b"],this.outputShape=t;l...
function vY (line 4507) | function vY(e){let{inputs:t,backend:a}=e,{condition:n,t:r,e:s}=t,i=new b...
function GY (line 4553) | function GY(e){let{inputs:t,backend:a}=e,{indices:n,values:r,denseShape:...
function jY (line 4557) | function jY(e){let{inputs:t,backend:a}=e,{inputIndices:n,inputShape:r,ne...
function XY (line 4557) | function XY(e){let{inputs:t,backend:a}=e,{data:n,indices:r,segmentIds:s}...
function ZY (line 4559) | function ZY(e){let{inputs:t,backend:a}=e,{data:n,indices:r,segmentIds:s}...
function JY (line 4561) | function JY(e){let{inputs:t,backend:a,attrs:n}=e,{sparseIndices:r,sparse...
function eJ (line 4561) | function eJ(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{numOrSizeSplit...
function uJ (line 4561) | function uJ({inputs:e,attrs:t,backend:a}){let{x:n}=e,r=Cn+`
method constructor (line 4563) | constructor(e,t,a){this.variableNames=["x"],this.outputShape=a;let n=a.l...
function cJ (line 4571) | function cJ(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{begin:s,end:i,...
function fJ (line 4571) | function fJ(e){let{inputs:t,backend:a,attrs:n}=e,{separator:r,nGramWidth...
function gJ (line 4571) | function gJ(e){let{inputs:t,backend:a,attrs:n}=e,{skipEmpty:r}=n,{input:...
function AJ (line 4571) | function AJ(e){let{inputs:t,backend:a,attrs:n}=e,{numBuckets:r}=n,{input...
method constructor (line 4574) | constructor(e,t){this.variableNames=["A"];let a=new Array(e.length);for(...
function CJ (line 4579) | function CJ(e){let t=e.length;if(t>5)throw Error(`Tile for rank ${t} is ...
function bv (line 4579) | function bv(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{reps:s}=n;if(r...
method constructor (line 4579) | constructor(e){this.variableNames=["x","indices"],this.customUniforms=[{...
method constructor (line 4619) | constructor(e){this.variableNames=["x","indices"],this.customUniforms=[{...
function Es (line 4653) | function Es(e,t){t!==null&&e.disposeIntermediateTensorInfo(t)}
function Fx (line 4653) | function Fx(e){let t=1;for(;t<e;)t*=2;return t}
function MJ (line 4653) | function MJ(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{k:s,sorted:i}=...
method constructor (line 4653) | constructor(e,t,a,n,r,s){this.variableNames=["Image","Transforms"],this....
function PJ (line 4765) | function PJ(e){let{inputs:t,backend:a,attrs:n}=e,{image:r,transforms:s}=...
function OJ (line 4765) | function OJ(e){let{inputs:t,attrs:a,backend:n}=e,{axis:r}=a,{x:s}=t;uu(s...
function zJ (line 4765) | function zJ(e){let{inputs:t,backend:a,attrs:n}=e,{value:r}=t,{axis:s}=n;...
method constructor (line 4765) | constructor(e,t){this.variableNames=["x","segmentIds"];let a=e.windowSiz...
function WJ (line 4871) | function WJ(e){let{inputs:t,backend:a,attrs:n}=e,{x:r,segmentIds:s}=t,{n...
function GJ (line 4871) | function GJ(e){vv=e.wasm.cwrap(jr,null,["number","array","number","numbe...
function HJ (line 4871) | function HJ(e){let{inputs:t,backend:a,attrs:n}=e,{a:r,b:s,bias:i,preluAc...
function Bt (line 4871) | function Bt(e,t){let a;function n(s){a=s.wasm.cwrap(e,null,["number","nu...
function la (line 4871) | function la(e,t,a){let n;function r(i){n=i.wasm.cwrap(e,null,["number","...
function ZJ (line 4871) | function ZJ(e){wv=e.wasm.cwrap(Ks,null,["array","number","number","numbe...
function YJ (line 4871) | function YJ(e){let{inputs:t,backend:a}=e,n=a.makeOutput(t[0].shape,t[0]....
function Bh (line 4871) | function Bh(e){let{inputs:{x:t},backend:a}=e;if(t.dtype==="string")retur...
function eQ (line 4871) | function eQ(e){kv=e.wasm.cwrap(Ar,null,["number","array","number","numbe...
function Qr (line 4871) | function Qr(e){let{inputs:t,backend:a,attrs:n}=e,[r,s]=aQ(t.x.shape,n.pe...
function tQ (line 4871) | function tQ(e,t){let a=new Array(e.length);for(let n=0;n<a.length;n++)a[...
function aQ (line 4871) | function aQ(e,t){let a=[],n=[];for(let r=0;r<e.length;++r)e[r]!==1&&a.pu...
function us (line 4871) | function us(e,t,a){let n=e.shape,r=e.shape.length,s=v.parseAxisParam(t,n...
function rQ (line 4871) | function rQ(e){Iv=e.wasm.cwrap(Zs,null,["number, number, number"])}
function sQ (line 4871) | function sQ(e){let{backend:t,inputs:a,attrs:n}=e,{axis:r,keepDims:s}=n,{...
function oQ (line 4871) | function oQ(e){Sv=e.wasm.cwrap(Ys,null,["number, number, number"])}
function lQ (line 4871) | function lQ(e){let{backend:t,inputs:a,attrs:n}=e,{axis:r,keepDims:s}=n,{...
function dQ (line 4871) | function dQ(e){Tv=e.wasm.cwrap(Js,null,["number","number","number","numb...
function pQ (line 4871) | function pQ(e){let{backend:t,inputs:a,attrs:n}=e,{axis:r}=n,{x:s}=a,i=t....
function hQ (line 4871) | function hQ(e){Cv=e.wasm.cwrap(Qs,null,["number","number","number","numb...
function fQ (line 4871) | function fQ(e){let{inputs:t,attrs:a,backend:n}=e,r=t.x,s=n.dataIdMap.get...
function za (line 4871) | function za(e){let{inputs:t,attrs:a}=e,{x:n}=t,{shape:r}=a,s=v.sizeFromS...
function xQ (line 4871) | function xQ(e){Nv=e.wasm.cwrap(ei,null,["number","array","number","numbe...
function AQ (line 4871) | function AQ(e){let{inputs:t,backend:a,attrs:n}=e,{a:r,b:s}=t,{transposeA...
function qs (line 4871) | function qs(e){let{inputs:{x:t},attrs:{begin:a,size:n},backend:r}=e,[s,i...
function bQ (line 4871) | function bQ(e,t,a,n,r){let s=0,i=n[0],o=n[1],l=i+r[0];for(let u=i;u<l;u+...
function vQ (line 4871) | function vQ(e,t,a,n,r,s){let i=0,o=r[0],l=r[1],u=r[2],p=o+s[0],c=l+s[1];...
function wQ (line 4871) | function wQ(e,t,a,n,r,s,i){let o=0,l=s[0],u=s[1],p=s[2],c=l+i[0],d=u+i[1...
function IQ (line 4871) | function IQ(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{blockShape:s,c...
function xu (line 4871) | function xu(e){let{inputs:{x:t},attrs:{dtype:a},backend:n}=e,r=n.makeOut...
function NQ (line 4871) | function NQ(e){Ev=e.wasm.cwrap(as,null,["number","number","number","numb...
function EQ (line 4871) | function EQ(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{clipValueMin:s...
function Rv (line 4871) | function Rv(e){let{inputs:t,backend:a}=e,n=v.parseAxisParam(e.attrs.axis...
function $Q (line 4871) | function $Q(e){Mv=e.wasm.cwrap(ni,null,["number","number","number","numb...
function _Q (line 4871) | function _Q(e){let{inputs:t,attrs:a,backend:n}=e,{x:r,filter:s}=t,i=n.da...
function FQ (line 4871) | function FQ(e){$v=e.wasm.cwrap(ri,null,["number","number","number","numb...
function OQ (line 4871) | function OQ(e){let{backend:t,inputs:a,attrs:n}=e,{dy:r,filter:s}=a,{stri...
function BQ (line 4871) | function BQ(e){_v=e.wasm.cwrap(ui,null,["number","number","number","numb...
function WQ (line 4871) | function WQ(e){let{backend:t,inputs:a,attrs:n}=e,{method:r,extrapolation...
function UQ (line 4871) | function UQ(e){Pv=e.wasm.cwrap(oi,null,["number","number","number","numb...
function GQ (line 4871) | function GQ(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s,exclusi...
function jQ (line 4871) | function jQ(e){Fv=e.wasm.cwrap(li,null,["number","number","number","numb...
function qQ (line 4871) | function qQ(e){let{inputs:t,backend:a,attrs:n}=e,{x:r}=t,{axis:s,exclusi...
function KQ (line 4871) | function KQ(e){Ov=e.wasm.cwrap(di,null,["number","number","number","arra...
function ZQ (line 4871) | function ZQ(e){let{backend:t,inputs:a,attrs:n}=e,{x:r}=a,{blockSize:s,da...
function JQ (line 4871) | function JQ(e){Dv=e.wasm.cwrap(pi,null,["number","number","number","numb...
function QQ (line 4871) | function QQ(e){let{inputs:t,attrs:a,backend:n}=e,{x:r,filter:s}=t,i=n.da...
function R1 (line 4871) | function R1(e){let{inputs:t,attrs:a,backend:n}=e,{input:r}=t,{dim:s}=a,i...
function zv (line 4871) | function zv(e){let{attrs:{shape:t,value:a,dtype:n},backend:r}=e,s=r.make...
function oee (line 4871) | function oee(e){Lv=e.wasm.cwrap(gi,null,["number","number","number","num...
function lee (line 4871) | function lee(e){let{inputs:t,backend:a}=e,{image:n}=t,r=a.makeOutput(n.s...
function hee (line 4871) | function hee(e){Bv=e.wasm.cwrap(yi,null,["number","number","number","num...
function fee (line 4871) | function fee(e){let{backend:t,inputs:a,attrs:n}=e,{varianceEpsilon:r}=n,...
function gee (line 4871) | function gee(e){Wv=e.wasm.cwrap(qr,null,["number","number","number","num...
function xee (line 4871) | function xee(e){let{inputs:t,attrs:a,backend:n}=e,{x:r,filter:s,bias:i,p...
function yee (line 4871) | function yee(e){Vv=e.wasm.cwrap(Xr,null,["number","number","number","num...
function bee (line 4871) | function bee(e){let{inputs:t,attrs:a,backend:n}=e,{x:r,filter:s,bias:i,p...
function wee (line 4871) | function wee(e){Uv=e.wasm.cwrap(bi,null,["number","number","number","num...
function kee (line 4871) | function kee(e){let{backend:t,inputs:a}=e,{params:n,indices:r}=a,[s,i,o,...
function See (line 4871) | function See(e){Gv=e.wasm.cwrap("Gather",null,["number","number","array"...
function Tee (line 4871) | function Tee(e){let{backend:t,inputs:a,attrs:n}=e,{x:r,indices:s}=a,{axi...
function _ee (line 4871) | function _ee(e){Hv=e.wasm.cwrap(Si,null,["number","number","number","num...
function Pee (line 4871) | function Pee(e){let{inputs:{x:t},attrs:{alpha:a},backend:n}=e,r=n.dataId...
function Xee (line 4871) | function Xee(e){jv=e.wasm.cwrap(Mi,null,["number","number","number","num...
function Kee (line 4871) | function Kee(e){let{backend:t,inputs:a,attrs:n}=e,{reductionIndices:r,ke...
function Qee (line 4871) | function Qee(e){qv=e.wasm.cwrap(_i,null,["number","number","number","num...
function ete (line 4871
Copy disabled (too large)
Download .json
Condensed preview — 944 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (41,902K chars).
[
{
"path": ".babelrc",
"chars": 504,
"preview": "{\n \"presets\": [\"@babel/preset-env\"],\n \"plugins\": [\n \"@babel/plugin-transform-runtime\",\n \"@babel/plug"
},
{
"path": ".eslintignore",
"chars": 61,
"preview": "src/playground/blocks/hardware/**/*.js\nextern\ntest\ntest_util\n"
},
{
"path": ".eslintrc",
"chars": 3622,
"preview": "{\n \"parser\": \"@babel/eslint-parser\",\n \"plugins\": [\"prettier\"],\n \"extends\": [\"plugin:prettier/recommended\"],\n "
},
{
"path": ".github/pr-labeler.yml",
"chars": 83,
"preview": "feature: feature/*\nsecurity: security/*\nissue: [issue/*, Issue/*]\nhotfix: hotfix/*\n"
},
{
"path": ".github/workflows/build-and-deploy.yml",
"chars": 1903,
"preview": "name: 'build-and-deploy'\non:\n push:\n branches:\n - 'deploy/**'\n - master\n - de"
},
{
"path": ".github/workflows/pull-request-workflow.yml",
"chars": 780,
"preview": "name: PR Workflow\non:\n pull_request:\n types: [opened, edited, synchronize]\n\njobs:\n pr-labeler:\n runs-on: ubuntu-"
},
{
"path": ".github/workflows/release.yml",
"chars": 596,
"preview": "name: 'release'\non:\n release:\n types: [created]\n\njobs:\n release:\n runs-on: ubuntu-latest\n ste"
},
{
"path": ".gitignore",
"chars": 622,
"preview": "# Logs\nlogs\n*.log\n\n# Runtime data\npids\n*.pid\n*.seed\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nl"
},
{
"path": ".prettierrc",
"chars": 198,
"preview": "{\n \"printWidth\": 100,\n \"tabWidth\": 4,\n \"singleQuote\": true,\n \"trailingComma\": \"es5\",\n \"bracketSpacing\": t"
},
{
"path": "COPYING",
"chars": 584,
"preview": " Copyright 2015 Entry Labs\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this"
},
{
"path": "Gruntfile.js",
"chars": 3907,
"preview": "module.exports = function(grunt) {\n 'use strict';\n\n const ClosureCompiler = require('google-closure-compiler').com"
},
{
"path": "Jenkinsfile",
"chars": 2739,
"preview": "pipeline {\n agent none\n stages {\n stage('EntryJS Test') {\n when {\n beforeAgent true\n expression "
},
{
"path": "LICENSE",
"chars": 11357,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "NOTICE",
"chars": 5162,
"preview": "EntryJS\nCopyright 2015 Entry Labs\n\n\nEntryJS project contains subcomponents with separate copyright notices and license t"
},
{
"path": "README-en.md",
"chars": 15341,
"preview": "# entryjs \nentryjs is an HTML5-based block coding library developed by entry.\nIf you access the [Entry](https://playentr"
},
{
"path": "README.md",
"chars": 13704,
"preview": "# entryjs\r\n\r\nentryjs는 엔트리에서 개발한 HTML5 기반의 블록코딩 라이브러리 입니다.\r\n[엔트리](https://playentry.org) 사이트에 접속하시면 entryjs를 사용한 블록코딩 환경을"
},
{
"path": "contributing.md",
"chars": 129,
"preview": "#### 업체PR 가이드\n\n하드웨어 업체에서는\n\nentryjs 레포지토리에서 Pull Request를 보내실때 \n\ndevleop-hw브랜치로 보내주시기 바랍니다.\n\n기타 다른브랜치에 PR보내시면 Reject사유가 될"
},
{
"path": "example/example.ejs",
"chars": 7486,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n <met"
},
{
"path": "example/example_mini.ejs",
"chars": 6555,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n <met"
},
{
"path": "example/example_webgl.ejs",
"chars": 4270,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n <meta charset=\"u"
},
{
"path": "extern/blockly/.ropeproject/config.py",
"chars": 3461,
"preview": "# The default ``config.py``\n\n\ndef set_prefs(prefs):\n \"\"\"This function is called before opening the project\"\"\"\n\n # "
},
{
"path": "extern/blockly/.ropeproject/globalnames",
"chars": 126,
"preview": "\u0002}q\u0001U\u0005build]q\u0002(U\u000eGen_compressedq\u0003U\u0006HEADERq\u0004U\fsearch_pathsq\u0005U\u000bimport_pathq\u0006U\bcalcdepsq\u0007U\u0010Gen_uncompressedq\bU\rGen_langfile"
},
{
"path": "extern/blockly/.ropeproject/history",
"chars": 13,
"preview": "\u0002]q\u0001(]q\u0002]q\u0003e."
},
{
"path": "extern/blockly/.ropeproject/objectdb",
"chars": 5,
"preview": "\u0002}q\u0001."
},
{
"path": "extern/blockly/blockly_compressed.js",
"chars": 587544,
"preview": "// Do not edit this file; automatically generated by build.py.\n\"use strict\";\n\nvar COMPILED=!0,goog=goog||{};goog.global="
},
{
"path": "extern/blockly/blockly_uncompressed.js",
"chars": 460378,
"preview": "// Do not edit this file; automatically generated by build.py.\n\"use strict\";\n\nwindow.BLOCKLY_DIR = (function() {\n // Fi"
},
{
"path": "extern/blockly/blocks/colour.js",
"chars": 3119,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/blocks/lists.js",
"chars": 17840,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/blocks/logic.js",
"chars": 11641,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/blocks/loops.js",
"chars": 7916,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/blocks/math.js",
"chars": 13055,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/blocks/procedures.js",
"chars": 19687,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/blocks/text.js",
"chars": 0,
"preview": ""
},
{
"path": "extern/blockly/blocks/variables.js",
"chars": 3244,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/blocks_compressed.js",
"chars": 44840,
"preview": "// Do not edit this file; automatically generated by build.py.\n\"use strict\";\n\n\n// Copyright 2012 Google Inc. Apache Lic"
},
{
"path": "extern/blockly/build.py",
"chars": 15790,
"preview": "#!/usr/bin/python\n# Compresses the core Blockly files into a single JavaScript file.\n#\n# Copyright 2012 Google Inc.\n# ht"
},
{
"path": "extern/blockly/core/block.js",
"chars": 61763,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2011 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/block_menu.js",
"chars": 27875,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/block_svg.js",
"chars": 42958,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/blockly.js",
"chars": 31471,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2011 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/blocks.js",
"chars": 7851,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2013 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/bubble.js",
"chars": 17969,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/comment.js",
"chars": 7462,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2011 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/connection-animation.js",
"chars": 4160,
"preview": "'use strict';\n\ngoog.provide('Blockly.ConnectionAnimation');\n\ngoog.require('Blockly.Connection');\ngoog.require('goog.Time"
},
{
"path": "extern/blockly/core/connection.js",
"chars": 29689,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2011 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/contextmenu.js",
"chars": 7746,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2011 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/css.js",
"chars": 12063,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2013 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/field.js",
"chars": 8312,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/field_angle.js",
"chars": 8588,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2013 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/field_checkbox.js",
"chars": 3525,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/field_colour.js",
"chars": 5068,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/field_dropdown.js",
"chars": 19715,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/field_dropdowndynamic.js",
"chars": 15739,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/field_icon.js",
"chars": 6546,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/field_image.js",
"chars": 4746,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/field_keydown_input.js",
"chars": 7479,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/field_label.js",
"chars": 3240,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/field_textinput.js",
"chars": 8568,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/field_variable.js",
"chars": 5693,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/flyout.js",
"chars": 19387,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2011 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/generator.js",
"chars": 10762,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/icon.js",
"chars": 5089,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2013 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/inject.js",
"chars": 19149,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2011 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/input.js",
"chars": 6464,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/msg.js",
"chars": 909,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2013 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/mutator.js",
"chars": 10470,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/names.js",
"chars": 4496,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/procedures.js",
"chars": 9236,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/realtime-client-utils.js",
"chars": 12747,
"preview": "/**\n * @license\n * Copyright 2013 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 "
},
{
"path": "extern/blockly/core/realtime.js",
"chars": 17126,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2014 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/scrollbar.js",
"chars": 33124,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2011 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/toolbox.js",
"chars": 10209,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2011 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/tooltip.js",
"chars": 10255,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2011 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/trashcan.js",
"chars": 7595,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2011 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/utils.js",
"chars": 14331,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/variables.js",
"chars": 6059,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/warning.js",
"chars": 4667,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/widgetdiv.js",
"chars": 2887,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2013 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/workspace.js",
"chars": 15832,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/core/xml.js",
"chars": 13489,
"preview": "/**\n * @license\n * Visual Blocks Editor\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licens"
},
{
"path": "extern/blockly/dart_compressed.js",
"chars": 34606,
"preview": "// Do not edit this file; automatically generated by build.py.\n\"use strict\";\n\n\n// Copyright 2014 Google Inc. Apache Lic"
},
{
"path": "extern/blockly/generators/dart/colour.js",
"chars": 5048,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2014 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/dart/lists.js",
"chars": 11411,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2014 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/dart/logic.js",
"chars": 4161,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2014 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/dart/loops.js",
"chars": 6655,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2014 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/dart/math.js",
"chars": 17572,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2014 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/dart/procedures.js",
"chars": 3590,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2014 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/dart/text.js",
"chars": 9447,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2014 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/dart/variables.js",
"chars": 1432,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2014 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/dart.js",
"chars": 7553,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2014 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/javascript/colour.js",
"chars": 4320,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/javascript/lists.js",
"chars": 11165,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/javascript/logic.js",
"chars": 4384,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/javascript/loops.js",
"chars": 7138,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/javascript/math.js",
"chars": 15242,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/javascript/procedures.js",
"chars": 3715,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/javascript/text.js",
"chars": 9280,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/javascript/variables.js",
"chars": 1493,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/javascript.js",
"chars": 15066,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/python/colour.js",
"chars": 3434,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/python/lists.js",
"chars": 10987,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/python/logic.js",
"chars": 4182,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/python/loops.js",
"chars": 7848,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/python/math.js",
"chars": 13961,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/python/procedures.js",
"chars": 4243,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/python/text.js",
"chars": 8979,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/python/variables.js",
"chars": 1449,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/generators/python.js",
"chars": 7739,
"preview": "/**\n * @license\n * Visual Blocks Language\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Lice"
},
{
"path": "extern/blockly/i18n/common.py",
"chars": 9697,
"preview": "#!/usr/bin/python\n\n# Code shared by translation conversion scripts.\n#\n# Copyright 2013 Google Inc.\n# https://blockly.goo"
},
{
"path": "extern/blockly/i18n/create_messages.py",
"chars": 5431,
"preview": "#!/usr/bin/python\n\n# Generate .js files defining Blockly core and language messages.\n#\n# Copyright 2013 Google Inc.\n# ht"
},
{
"path": "extern/blockly/i18n/dedup_json.py",
"chars": 2417,
"preview": "#!/usr/bin/python\n\n# Consolidates duplicate key-value pairs in a JSON file.\n# If the same key is used with different val"
},
{
"path": "extern/blockly/i18n/js_to_json.py",
"chars": 3959,
"preview": "#!/usr/bin/python\n\n# Gives the translation status of the specified apps and languages.\n#\n# Copyright 2013 Google Inc.\n# "
},
{
"path": "extern/blockly/i18n/json_to_js.py",
"chars": 7006,
"preview": "#!/usr/bin/python\n\n# Converts .json files into .js files for use within Blockly apps.\n#\n# Copyright 2013 Google Inc.\n# h"
},
{
"path": "extern/blockly/i18n/status.py",
"chars": 8965,
"preview": "#!/usr/bin/python\n\n# Gives the translation status of the specified apps and languages.\n#\n# Copyright 2013 Google Inc.\n# "
},
{
"path": "extern/blockly/i18n/tests.py",
"chars": 1742,
"preview": "#!/usr/bin/python\n# -*- coding: utf-8 -*-\n\n# Tests of i18n scripts.\n#\n# Copyright 2013 Google Inc.\n# https://blockly.goo"
},
{
"path": "extern/blockly/i18n/xliff_to_json.py",
"chars": 8357,
"preview": "#!/usr/bin/python\n\n# Converts .xlf files into .json files for use at http://translatewiki.net.\n#\n# Copyright 2013 Google"
},
{
"path": "extern/blockly/javascript_compressed.js",
"chars": 40567,
"preview": "// Do not edit this file; automatically generated by build.py.\n\"use strict\";\n\n\n// Copyright 2012 Google Inc. Apache Lic"
},
{
"path": "extern/blockly/msg/js/ar.js",
"chars": 27572,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.ar');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/az-latn.js",
"chars": 28961,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.az-latn');\n\ngoog.req"
},
{
"path": "extern/blockly/msg/js/az.js",
"chars": 29726,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.az');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/be-tarask.js",
"chars": 32453,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.be-tarask');\n\ngoog.r"
},
{
"path": "extern/blockly/msg/js/br.js",
"chars": 32346,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.br');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/ca.js",
"chars": 30202,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.ca');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/cs.js",
"chars": 28681,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.cs');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/da.js",
"chars": 29858,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.da');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/de.js",
"chars": 29525,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.de');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/el.js",
"chars": 30369,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.el');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/en.js",
"chars": 28056,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.en');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/en_us.js",
"chars": 28476,
"preview": "/**\n * Visual Blocks Language\n *\n * Copyright 2012 Google Inc.\n * https://blockly.googlecode.com/\n *\n * Licensed under t"
},
{
"path": "extern/blockly/msg/js/es.js",
"chars": 30429,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.es');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/fa.js",
"chars": 29368,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.fa');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/fi.js",
"chars": 29242,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.fi');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/fr.js",
"chars": 30283,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.fr');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/he.js",
"chars": 27255,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.he');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/hi.js",
"chars": 30061,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.hi');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/hu.js",
"chars": 29108,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.hu');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/ia.js",
"chars": 32336,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.ia');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/id.js",
"chars": 30022,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.id');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/is.js",
"chars": 28565,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.is');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/it.js",
"chars": 30367,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.it');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/ja.js",
"chars": 23824,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.ja');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/ko.js",
"chars": 25102,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.ko');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/lrc.js",
"chars": 32059,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.lrc');\n\ngoog.require"
},
{
"path": "extern/blockly/msg/js/ms.js",
"chars": 29564,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.ms');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/nb.js",
"chars": 28763,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.nb');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/nl.js",
"chars": 29659,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.nl');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/no.js",
"chars": 28516,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.no');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/pl.js",
"chars": 28708,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.pl');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/pms.js",
"chars": 29757,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.pms');\n\ngoog.require"
},
{
"path": "extern/blockly/msg/js/pt-br.js",
"chars": 29883,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.pt-br');\n\ngoog.requi"
},
{
"path": "extern/blockly/msg/js/pt.js",
"chars": 29077,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.pt');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/ro.js",
"chars": 29400,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.ro');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/ru.js",
"chars": 29629,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.ru');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/sq.js",
"chars": 29273,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.sq');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/sr.js",
"chars": 27983,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.sr');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/sv.js",
"chars": 29189,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.sv');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/th.js",
"chars": 27995,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.th');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/tl.js",
"chars": 28931,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.tl');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/tr.js",
"chars": 28869,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.tr');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/uk.js",
"chars": 28605,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.uk');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/vi.js",
"chars": 29773,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.vi');\n\ngoog.require("
},
{
"path": "extern/blockly/msg/js/zh-hans.js",
"chars": 22632,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.zh-hans');\n\ngoog.req"
},
{
"path": "extern/blockly/msg/js/zh-hant.js",
"chars": 23593,
"preview": "// This file was automatically generated. Do not modify.\n\n'use strict';\n\ngoog.provide('Blockly.Msg.zh-hant');\n\ngoog.req"
},
{
"path": "extern/blockly/msg/json/ar.json",
"chars": 22472,
"preview": "{\n \"@metadata\": [],\n \"VARIABLES_DEFAULT_NAME\": \"البند\",\n \"DUPLICATE_BLOCK\": \"ادمج\",\n \"ADD_COMMENT\": \"اضافة ت"
},
{
"path": "extern/blockly/msg/json/az.json",
"chars": 22502,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Cekli829\"\n ]\n },\n \"VARIABLES_DEFAULT_NAME\": \"element"
},
{
"path": "extern/blockly/msg/json/be-tarask.json",
"chars": 7649,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Renessaince\"\n ]\n },\n \"VARIABLES_DEFAULT_NAME\": \"аб’е"
},
{
"path": "extern/blockly/msg/json/br.json",
"chars": 5924,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Fohanno\",\n \"Y-M D\",\n \"Gwenn-Ael\"\n ]\n"
},
{
"path": "extern/blockly/msg/json/ca.json",
"chars": 20857,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Alvaro Vidal-Abarca\",\n \"Espertus\"\n ]\n },\n "
},
{
"path": "extern/blockly/msg/json/cs.json",
"chars": 20690,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Chmee2\",\n \"Rosnicka.kacka\",\n \"Matěj Grabovs"
},
{
"path": "extern/blockly/msg/json/da.json",
"chars": 20534,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Christian List\"\n ]\n },\n \"VARIABLES_DEFAULT_NAME\": \"e"
},
{
"path": "extern/blockly/msg/json/de.json",
"chars": 24686,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Metalhead64\",\n \"M165437\"\n ]\n },\n \"VARIABL"
},
{
"path": "extern/blockly/msg/json/el.json",
"chars": 25297,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Azountas\",\n \"Espertus\",\n \"Evropi\",\n "
},
{
"path": "extern/blockly/msg/json/en.json",
"chars": 23968,
"preview": "{\n \"@metadata\": {\n \"author\": \"Ellen Spertus <ellen.spertus@gmail.com>\",\n \"lastupdated\": \"2014-09-01 18:"
},
{
"path": "extern/blockly/msg/json/es.json",
"chars": 21098,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Fitoschido\",\n \"VegaDark\",\n \"WeSiToS\"\n "
},
{
"path": "extern/blockly/msg/json/fa.json",
"chars": 20013,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Ebraminio\",\n \"Reza1615\"\n ]\n },\n \"VARIABLE"
},
{
"path": "extern/blockly/msg/json/fi.json",
"chars": 20838,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Nike\",\n \"Silvonen\",\n \"Espertus\"\n ]\n "
},
{
"path": "extern/blockly/msg/json/fr.json",
"chars": 22121,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Espertus\",\n \"Gomoko\"\n ]\n },\n \"VARIABLES_D"
},
{
"path": "extern/blockly/msg/json/he.json",
"chars": 22282,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Dorongol\",\n \"YaronSh\",\n \"Amire80\",\n "
},
{
"path": "extern/blockly/msg/json/hi.json",
"chars": 15033,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Bl707\"\n ]\n },\n \"VARIABLES_DEFAULT_NAME\": \"आइटम\",\n "
},
{
"path": "extern/blockly/msg/json/hu.json",
"chars": 20503,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Espertus\",\n \"Takács Viktor László\"\n ]\n },\n "
},
{
"path": "extern/blockly/msg/json/ia.json",
"chars": 7039,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"McDutchie\"\n ]\n },\n \"VARIABLES_DEFAULT_NAME\": \"cosa\","
},
{
"path": "extern/blockly/msg/json/id.json",
"chars": 24922,
"preview": "{\n \"@metadata\": [],\n \"VARIABLES_DEFAULT_NAME\": \"item\",\n \"DUPLICATE_BLOCK\": \"Duplikat\",\n \"ADD_COMMENT\": \"Tamb"
},
{
"path": "extern/blockly/msg/json/is.json",
"chars": 19184,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Jonbg\"\n ]\n },\n \"VARIABLES_DEFAULT_NAME\": \"atriði\",\n "
},
{
"path": "extern/blockly/msg/json/it.json",
"chars": 21032,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Beta16\",\n \"Espertus\",\n \"Nerimic\"\n ]\n"
},
{
"path": "extern/blockly/msg/json/ja.json",
"chars": 19413,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Shirayuki\",\n \"Oda\"\n ]\n },\n \"VARIABLES_DEF"
},
{
"path": "extern/blockly/msg/json/keys.json",
"chars": 2,
"preview": "{\n"
},
{
"path": "extern/blockly/msg/json/ko.json",
"chars": 20781,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Hym411\",\n \"아라\"\n ]\n },\n \"VARIABLES_DEFAULT"
},
{
"path": "extern/blockly/msg/json/lrc.json",
"chars": 5419,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Mogoeilor\"\n ]\n },\n \"DUPLICATE_BLOCK\": \"کپی کردن\",\n "
},
{
"path": "extern/blockly/msg/json/ms.json",
"chars": 20800,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Anakmalaysia\",\n \"Espertus\"\n ]\n },\n \"VARIA"
},
{
"path": "extern/blockly/msg/json/nb.json",
"chars": 24273,
"preview": "{\n \"@metadata\": [],\n \"VARIABLES_DEFAULT_NAME\": \"element\",\n \"DUPLICATE_BLOCK\": \"duplikat\",\n \"ADD_COMMENT\": \"L"
},
{
"path": "extern/blockly/msg/json/nl.json",
"chars": 24618,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Siebrand\"\n ]\n },\n \"VARIABLES_DEFAULT_NAME\": \"item\",\n"
},
{
"path": "extern/blockly/msg/json/pl.json",
"chars": 24218,
"preview": "{\n \"@metadata\": [],\n \"VARIABLES_DEFAULT_NAME\": \"element\",\n \"DUPLICATE_BLOCK\": \"Powiel\",\n \"ADD_COMMENT\": \"Dod"
},
{
"path": "extern/blockly/msg/json/pms.json",
"chars": 20376,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Borichèt\"\n ]\n },\n \"VARIABLES_DEFAULT_NAME\": \"element"
},
{
"path": "extern/blockly/msg/json/pt-br.json",
"chars": 20607,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Espertus\",\n \"Prilopes\",\n \"Mordecaista\"\n "
},
{
"path": "extern/blockly/msg/json/pt.json",
"chars": 23977,
"preview": "{\n \"@metadata\": [],\n \"VARIABLES_DEFAULT_NAME\": \"item\",\n \"DUPLICATE_BLOCK\": \"Duplicar\",\n \"ADD_COMMENT\": \"Adic"
},
{
"path": "extern/blockly/msg/json/qqq.json",
"chars": 71674,
"preview": "{\n \"VARIABLES_DEFAULT_NAME\": \"default name - A simple, general default name for a variable, preferably short. For mor"
},
{
"path": "extern/blockly/msg/json/ro.json",
"chars": 24300,
"preview": "{\n \"@metadata\": [],\n \"VARIABLES_DEFAULT_NAME\": \"element\",\n \"DUPLICATE_BLOCK\": \"Duplicati\",\n \"ADD_COMMENT\": \""
},
{
"path": "extern/blockly/msg/json/ru.json",
"chars": 20462,
"preview": "{\n \"@metadata\": {\n \"authors\": [\n \"Espertus\",\n \"MS\",\n \"Okras\"\n ]\n },"
},
{
"path": "extern/blockly/msg/json/sq.json",
"chars": 24173,
"preview": "{\n \"@metadata\": [],\n \"VARIABLES_DEFAULT_NAME\": \"send\",\n \"DUPLICATE_BLOCK\": \"Kopjo\",\n \"ADD_COMMENT\": \"Vendos "
},
{
"path": "extern/blockly/msg/json/sr.json",
"chars": 23493,
"preview": "{\n \"@metadata\": [],\n \"VARIABLES_DEFAULT_NAME\": \"ставка\",\n \"DUPLICATE_BLOCK\": \"Дуплирај\",\n \"ADD_COMMENT\": \"До"
}
]
// ... and 744 more files (download for full content)
About this extraction
This page contains the full source code of the entrylabs/entryjs GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 944 files (50.3 MB), approximately 9.8M tokens, and a symbol index with 11486 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.