@cuemath/leap 4.1.1-gg4 → 4.1.1-j2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/___vite-browser-external.js +7 -0
- package/dist/_virtual/___vite-browser-external.js.map +1 -0
- package/dist/_virtual/__vite-browser-external.js +5 -0
- package/dist/_virtual/__vite-browser-external.js.map +1 -0
- package/dist/_virtual/_commonjsHelpers.js +24 -4
- package/dist/_virtual/_commonjsHelpers.js.map +1 -1
- package/dist/_virtual/alea.js +5 -0
- package/dist/_virtual/alea.js.map +1 -0
- package/dist/_virtual/seedrandom.js +5 -0
- package/dist/_virtual/seedrandom.js.map +1 -0
- package/dist/_virtual/tychei.js +5 -0
- package/dist/_virtual/tychei.js.map +1 -0
- package/dist/_virtual/xor128.js +5 -0
- package/dist/_virtual/xor128.js.map +1 -0
- package/dist/_virtual/xor4096.js +5 -0
- package/dist/_virtual/xor4096.js.map +1 -0
- package/dist/_virtual/xorshift7.js +5 -0
- package/dist/_virtual/xorshift7.js.map +1 -0
- package/dist/_virtual/xorwow.js +5 -0
- package/dist/_virtual/xorwow.js.map +1 -0
- package/dist/features/av/av-preview/av-preview.js +144 -108
- package/dist/features/av/av-preview/av-preview.js.map +1 -1
- package/dist/features/av/video-analysis/hooks/use-video-analysis.js +143 -0
- package/dist/features/av/video-analysis/hooks/use-video-analysis.js.map +1 -0
- package/dist/features/av/video-analysis/mediapipe/mediapipe-constants.js +89 -0
- package/dist/features/av/video-analysis/mediapipe/mediapipe-constants.js.map +1 -0
- package/dist/features/av/video-analysis/mediapipe/mediapipe-face-detector.js +126 -0
- package/dist/features/av/video-analysis/mediapipe/mediapipe-face-detector.js.map +1 -0
- package/dist/features/av/video-analysis/mediapipe/mediapipe-helpers.js +86 -0
- package/dist/features/av/video-analysis/mediapipe/mediapipe-helpers.js.map +1 -0
- package/dist/features/av/video-analysis/tensorflow/emotion-model.js +404 -0
- package/dist/features/av/video-analysis/tensorflow/emotion-model.js.map +1 -0
- package/dist/features/av/video-analysis/tensorflow/emotion-types.js +20 -0
- package/dist/features/av/video-analysis/tensorflow/emotion-types.js.map +1 -0
- package/dist/features/av/video-analysis/video-analysis-helpers.js +40 -0
- package/dist/features/av/video-analysis/video-analysis-helpers.js.map +1 -0
- package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay-helpers.js +64 -0
- package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay-helpers.js.map +1 -0
- package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay-styled.js +73 -0
- package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay-styled.js.map +1 -0
- package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay.js +78 -0
- package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay.js.map +1 -0
- package/dist/features/av/video-analysis/video-analysis-styled.js +40 -0
- package/dist/features/av/video-analysis/video-analysis-styled.js.map +1 -0
- package/dist/features/av/video-analysis/video-analysis.js +316 -0
- package/dist/features/av/video-analysis/video-analysis.js.map +1 -0
- package/dist/features/chapters/chapters-list/chapter-item/chapter-item.js +27 -25
- package/dist/features/chapters/chapters-list/chapter-item/chapter-item.js.map +1 -1
- package/dist/features/chapters/chapters-list/chapters-list.js +53 -43
- package/dist/features/chapters/chapters-list/chapters-list.js.map +1 -1
- package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js +17 -15
- package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js.map +1 -1
- package/dist/features/chapters-v2/chapter-details/chapter-details.js +66 -62
- package/dist/features/chapters-v2/chapter-details/chapter-details.js.map +1 -1
- package/dist/features/journey/hooks/use-learning-plan-journey/use-chapter-details-journey.js +97 -0
- package/dist/features/journey/hooks/use-learning-plan-journey/use-chapter-details-journey.js.map +1 -0
- package/dist/features/journey/hooks/use-learning-plan-journey/use-learning-plan-journey.js +105 -0
- package/dist/features/journey/hooks/use-learning-plan-journey/use-learning-plan-journey.js.map +1 -0
- package/dist/features/journey/hooks/use-learning-plan-journey/use-resource-assignment-journey.js +64 -0
- package/dist/features/journey/hooks/use-learning-plan-journey/use-resource-assignment-journey.js.map +1 -0
- package/dist/features/journey/hooks/use-learning-plan-journey/use-test-creation-journey.js +64 -0
- package/dist/features/journey/hooks/use-learning-plan-journey/use-test-creation-journey.js.map +1 -0
- package/dist/features/journey/hooks/use-learning-plan-journey/use-worksheet-preview-journey.js +65 -0
- package/dist/features/journey/hooks/use-learning-plan-journey/use-worksheet-preview-journey.js.map +1 -0
- package/dist/features/journey/journey-id/journey-id-teacher.js +1 -1
- package/dist/features/journey/journey-id/journey-id-teacher.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js +105 -93
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js +42 -40
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js +36 -34
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js +126 -107
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js +107 -95
- package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js.map +1 -1
- package/dist/features/milestone/milestone-list-container/milestone-list-container.js +116 -104
- package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
- package/dist/features/milestone/milestone-resources/resources-list/resources-list.js +99 -91
- package/dist/features/milestone/milestone-resources/resources-list/resources-list.js.map +1 -1
- package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js +89 -83
- package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js.map +1 -1
- package/dist/features/trial-session/comps/learning-plan/goal-edit-sync.js +40 -0
- package/dist/features/trial-session/comps/learning-plan/goal-edit-sync.js.map +1 -0
- package/dist/features/trial-session/comps/learning-plan/learning-assign-resource-sync.js +55 -0
- package/dist/features/trial-session/comps/learning-plan/learning-assign-resource-sync.js.map +1 -0
- package/dist/features/trial-session/comps/learning-plan/learning-chapter-details.js +48 -0
- package/dist/features/trial-session/comps/learning-plan/learning-chapter-details.js.map +1 -0
- package/dist/features/trial-session/comps/learning-plan/learning-milestone-sync.js +145 -0
- package/dist/features/trial-session/comps/learning-plan/learning-milestone-sync.js.map +1 -0
- package/dist/features/trial-session/comps/learning-plan/learning-plan-helpers.js +30 -0
- package/dist/features/trial-session/comps/learning-plan/learning-plan-helpers.js.map +1 -0
- package/dist/features/trial-session/comps/learning-plan/learning-plan-view.js +17 -0
- package/dist/features/trial-session/comps/learning-plan/learning-plan-view.js.map +1 -0
- package/dist/features/trial-session/comps/learning-plan/learning-plan.js +93 -0
- package/dist/features/trial-session/comps/learning-plan/learning-plan.js.map +1 -0
- package/dist/features/trial-session/comps/learning-plan/learning-preview-worksheet.js +81 -0
- package/dist/features/trial-session/comps/learning-plan/learning-preview-worksheet.js.map +1 -0
- package/dist/features/trial-session/comps/learning-plan/learning-test-creation-sync.js +41 -0
- package/dist/features/trial-session/comps/learning-plan/learning-test-creation-sync.js.map +1 -0
- package/dist/features/trial-session/comps/worksheet/worksheet.js +41 -34
- package/dist/features/trial-session/comps/worksheet/worksheet.js.map +1 -1
- package/dist/features/trial-session/right-panel/index.js +26 -26
- package/dist/features/trial-session/right-panel/index.js.map +1 -1
- package/dist/features/trial-session/right-panel/right-panel-styled.js +27 -31
- package/dist/features/trial-session/right-panel/right-panel-styled.js.map +1 -1
- package/dist/features/trial-session/right-panel/slide-components-map.js +1 -1
- package/dist/features/trial-session/right-panel/slide-components-map.js.map +1 -1
- package/dist/features/trial-session/trial-session-types.js.map +1 -1
- package/dist/features/ui/buttons/button/button.js +51 -50
- package/dist/features/ui/buttons/button/button.js.map +1 -1
- package/dist/features/ui/buttons/icon-button/icon-button.js +21 -20
- package/dist/features/ui/buttons/icon-button/icon-button.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +76 -66
- package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-navigation.js +44 -48
- package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-navigation.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-section-navigation/worksheet-section-navigation.js +72 -73
- package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-section-navigation/worksheet-section-navigation.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-questions/worksheet-questions.js +31 -33
- package/dist/features/worksheet/worksheet/worksheet-questions/worksheet-questions.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-view.js +39 -39
- package/dist/features/worksheet/worksheet/worksheet-view.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet.js +51 -41
- package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js +47 -34
- package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +27 -24
- package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js +47 -41
- package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js.map +1 -1
- package/dist/features/worksheet/worksheet-preview/worksheet-preview.js +28 -26
- package/dist/features/worksheet/worksheet-preview/worksheet-preview.js.map +1 -1
- package/dist/index.d.ts +161 -4
- package/dist/index.js +452 -446
- package/dist/index.js.map +1 -1
- package/dist/node_modules/@mediapipe/tasks-vision/vision_bundle.js +3713 -0
- package/dist/node_modules/@mediapipe/tasks-vision/vision_bundle.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/backend_cpu.js +155 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/backend_cpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/base.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/base.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/cpu_util.js +27 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/cpu_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Abs.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Abs.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Acos.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Acos.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Acosh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Acosh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Add.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Add.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AddN.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AddN.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/All.js +59 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/All.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Any.js +59 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Any.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ArgMax.js +52 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ArgMax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ArgMin.js +52 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ArgMin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Asin.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Asin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Asinh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Asinh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atan.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atan2.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atan2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atanh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atanh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool3D.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool3D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool3DGrad.js +61 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool3DGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPoolGrad.js +56 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPoolGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchMatMul.js +68 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchMatMul.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchNorm.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchNorm.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchToSpaceND.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchToSpaceND.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Bincount.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Bincount.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Bincount_impl.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Bincount_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BitwiseAnd.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BitwiseAnd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BroadcastArgs.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BroadcastArgs.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cast.js +66 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cast.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Ceil.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Ceil.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ClipByValue.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ClipByValue.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Complex.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Complex.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ComplexAbs.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ComplexAbs.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Concat.js +61 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Concat.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Concat_impl.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Concat_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2D.js +66 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2DBackpropFilter.js +56 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2DBackpropFilter.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2DBackpropInput.js +63 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2DBackpropInput.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3D.js +75 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3DBackpropFilterV2.js +67 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3DBackpropFilterV2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3DBackpropInputV2.js +64 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3DBackpropInputV2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cos.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cos.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cosh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cosh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/CropAndResize.js +91 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/CropAndResize.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cumprod.js +60 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cumprod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cumsum.js +60 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cumsum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DenseBincount.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DenseBincount.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthToSpace.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthToSpace.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNative.js +78 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNative.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js +65 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropInput.js +67 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropInput.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Diag.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Diag.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2D.js +56 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropFilter.js +57 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropFilter.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropInput.js +57 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropInput.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Draw.js +54 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Draw.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Einsum.js +63 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Einsum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Elu.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Elu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/EluGrad.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/EluGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Equal.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Erf.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Erf.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Exp.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Exp.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ExpandDims.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ExpandDims.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Expm1.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Expm1.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FFT.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FFT.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Fill.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Fill.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FlipLeftRight.js +49 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FlipLeftRight.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Floor.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Floor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FloorDiv.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FloorDiv.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedConv2D.js +63 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedConv2D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedDepthwiseConv2D.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedDepthwiseConv2D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherNd.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherNd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherNd_Impl.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherNd_Impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherV2.js +66 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherV2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherV2_impl.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherV2_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Greater.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Greater.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GreaterEqual.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GreaterEqual.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IFFT.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IFFT.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Identity.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Identity.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Imag.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Imag.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsFinite.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsFinite.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsInf.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsInf.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsNaN.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsNaN.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRN.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRN.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRNGrad.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRNGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LeakyRelu.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LeakyRelu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Less.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Less.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LessEqual.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LessEqual.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LinSpace.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LinSpace.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LinSpace_impl.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LinSpace_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log1p.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log1p.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalAnd.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalAnd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalNot.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalNot.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalOr.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalOr.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3D.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3DGrad.js +65 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3DGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolGrad.js +60 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax_impl.js +27 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max_impl.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Maximum.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Maximum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mean.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mean.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Min.js +59 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Min.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Minimum.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Minimum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MirrorPad.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MirrorPad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mod.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multinomial.js +54 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multinomial.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multiply.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multiply.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Neg.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Neg.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV3.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV3.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV4.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV4.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV5.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV5.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NotEqual.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NotEqual.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OneHot.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OneHot.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OnesLike.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OnesLike.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pack.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pack.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/PadV2.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/PadV2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pow.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pow.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Prelu.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Prelu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Prod.js +56 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Prod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedGather.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedGather.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedGather_impl.js +114 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedGather_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedRange.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedRange.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedRange_impl.js +59 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedRange_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedTensorToTensor.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedTensorToTensor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedTensorToTensor_impl.js +275 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedTensorToTensor_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Range.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Range.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Range_impl.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Range_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Real.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Real.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RealDiv.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RealDiv.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reciprocal.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reciprocal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Relu.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Relu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Relu6.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Relu6.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reshape.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reshape.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinear.js +59 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinear.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinearGrad.js +56 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinearGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighbor.js +62 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighbor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighborGrad.js +69 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighborGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reverse.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reverse.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RotateWithOffset.js +53 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RotateWithOffset.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Round.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Round.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Rsqrt.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Rsqrt.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ScatterNd.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ScatterNd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Scatter_impl.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Scatter_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SearchSorted.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SearchSorted.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SearchSorted_impl.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SearchSorted_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Select.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Select.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Selu.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Selu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sigmoid.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sigmoid.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sign.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sign.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sin.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sinh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sinh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Slice.js +55 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Slice.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softmax.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softmax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softplus.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softplus.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SpaceToBatchND.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SpaceToBatchND.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseFillEmptyRows.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseFillEmptyRows.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseFillEmptyRows_impl.js +89 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseFillEmptyRows_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseReshape.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseReshape.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseReshape_impl.js +70 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseReshape_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentMean.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentMean.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentReduction_impl.js +63 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentReduction_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentSum.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentSum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseToDense.js +60 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseToDense.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SplitV.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SplitV.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sqrt.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sqrt.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Square.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Square.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SquaredDifference.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SquaredDifference.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StaticRegexReplace.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StaticRegexReplace.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Step.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Step.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StridedSlice.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StridedSlice.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StridedSlice_impl.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StridedSlice_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringNGrams.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringNGrams.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringNGrams_impl.js +116 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringNGrams_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringSplit.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringSplit.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringSplit_impl.js +64 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringSplit_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringToHashBucketFast.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringToHashBucketFast.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringToHashBucketFast_impl.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringToHashBucketFast_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sub.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sub.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sum.js +61 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tan.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tanh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tanh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TensorScatterUpdate.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TensorScatterUpdate.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tile.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tile.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tile_impl.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tile_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TopK.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TopK.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TopK_impl.js +60 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TopK_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transform.js +127 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transform.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose_impl.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique_impl.js +65 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unpack.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unpack.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/UnsortedSegmentSum.js +52 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/UnsortedSegmentSum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ZerosLike.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ZerosLike.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/_FusedMatMul.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/_FusedMatMul.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/register_all_kernels.js +367 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/register_all_kernels.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/shared.js +120 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/shared.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_impl.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_utils.js +72 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/fft_utils.js +108 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/fft_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/fused_utils.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/fused_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/pool_utils.js +166 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/pool_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_impl.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_utils.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/zeros_impl.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/zeros_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_gpu.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_packed_gpu.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_gpu.js +49 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_packed_gpu.js +103 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/avg_pool_backprop_gpu.js +133 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/avg_pool_backprop_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/backend_webgl.js +583 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/backend_webgl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/base.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/base.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_gpu.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_packed_gpu.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_complex_gpu.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_complex_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_gpu.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_packed_gpu.js +95 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/canvas_util.js +64 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/canvas_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_gpu.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_packed_gpu.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/complex_abs_gpu.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/complex_abs_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_gpu.js +52 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_packed_gpu.js +84 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu.js +240 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu_depthwise.js +115 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu_depthwise.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_packed_gpu.js +104 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu.js +260 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu_depthwise.js +89 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu_depthwise.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_packed_gpu.js +253 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_packed_gpu_depthwise.js +246 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_packed_gpu_depthwise.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/crop_and_resize_gpu.js +106 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/crop_and_resize_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/cum_gpu.js +53 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/cum_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_gpu.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_packed_gpu.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/depth_to_space_gpu.js +59 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/depth_to_space_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/diag_gpu.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/diag_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/dilation_gpu.js +65 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/dilation_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_gpu.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_packed_gpu.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_gpu.js +67 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_packed_gpu.js +82 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/fft_gpu.js +69 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/fft_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/fill_gpu.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/fill_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/flags_webgl.js +74 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/flags_webgl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/flip_left_right_gpu.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/flip_left_right_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_gpu.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_nd_gpu.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_nd_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/glsl_version.js +83 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/glsl_version.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_context.js +295 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_context.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_math.js +230 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_math.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_util.js +139 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/im2col_packed_gpu.js +88 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/im2col_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/arg_min_max.js +62 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/arg_min_max.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/int.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/int.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/kernel_funcs_utils.js +101 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/kernel_funcs_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reduce.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reduce.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reshape.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reshape.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/shared.js +70 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/shared.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Abs.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Abs.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acos.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acos.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acosh.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acosh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Add.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Add.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AddN.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AddN.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/All.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/All.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Any.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Any.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMax.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMin.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asin.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asinh.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asinh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan2.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atanh.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atanh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3D.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3DGrad.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3DGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPoolGrad.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPoolGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul_impl.js +71 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchNorm.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchNorm.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchToSpaceND.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchToSpaceND.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Bincount.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Bincount.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BitwiseAnd.js +52 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BitwiseAnd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BroadcastArgs.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BroadcastArgs.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cast.js +64 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cast.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Ceil.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Ceil.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ClipByValue.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ClipByValue.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Complex.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Complex.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ComplexAbs.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ComplexAbs.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat_impl.js +85 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D.js +56 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropFilter.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropFilter.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropInput.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropInput.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D_impl.js +155 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3D.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropFilterV2.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropFilterV2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropInputV2.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropInputV2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cos.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cos.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cosh.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cosh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/CropAndResize.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/CropAndResize.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cum_impl.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cum_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cumprod.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cumprod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cumsum.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cumsum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DenseBincount.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DenseBincount.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthToSpace.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthToSpace.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNative.js +57 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNative.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropInput.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropInput.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Diag.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Diag.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Dilation2D.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Dilation2D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Einsum.js +63 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Einsum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Elu.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Elu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/EluGrad.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/EluGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Equal.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Erf.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Erf.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Exp.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Exp.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ExpandDims.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ExpandDims.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Expm1.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Expm1.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT_impl.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Fill.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Fill.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FlipLeftRight.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FlipLeftRight.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Floor.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Floor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FloorDiv.js +60 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FloorDiv.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_gpu.js +50 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_packed_gpu.js +62 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedConv2D.js +94 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedConv2D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedDepthwiseConv2D.js +63 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedDepthwiseConv2D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherNd.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherNd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherV2.js +75 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherV2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Greater.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Greater.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GreaterEqual.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GreaterEqual.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IFFT.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IFFT.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Identity.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Identity.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Imag.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Imag.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsFinite.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsFinite.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsInf.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsInf.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsNaN.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsNaN.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRN.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRN.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRNGrad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRNGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LeakyRelu.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LeakyRelu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Less.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Less.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LessEqual.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LessEqual.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LinSpace.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LinSpace.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log1p.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log1p.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalAnd.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalAnd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalNot.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalNot.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalOr.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalOr.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max.js +65 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3D.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3D.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3DGrad.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3DGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolGrad.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax_impl.js +28 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max_impl.js +28 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Maximum.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Maximum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean.js +58 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean_impl.js +28 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Min.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Min.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Minimum.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Minimum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MirrorPad.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MirrorPad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mod.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multinomial.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multinomial.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multiply.js +70 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multiply.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Neg.js +54 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Neg.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV3.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV3.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV4.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV4.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV5.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV5.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NotEqual.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NotEqual.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OneHot.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OneHot.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OnesLike.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OnesLike.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pack.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pack.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/PadV2.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/PadV2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pow.js +57 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pow.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Prelu.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Prelu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Prod.js +56 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Prod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedGather.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedGather.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedRange.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedRange.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedTensorToTensor.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedTensorToTensor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Range.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Range.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Real.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Real.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RealDiv.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RealDiv.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reciprocal.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reciprocal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu6.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu6.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reshape.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reshape.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinear.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinear.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinearGrad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinearGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighbor.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighbor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighborGrad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighborGrad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reverse.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reverse.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RotateWithOffset.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RotateWithOffset.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Round.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Round.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Rsqrt.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Rsqrt.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ScatterNd.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ScatterNd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SearchSorted.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SearchSorted.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Select.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Select.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Selu.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Selu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sigmoid.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sigmoid.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sign.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sign.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sin.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sinh.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sinh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Slice.js +61 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Slice.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softmax.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softmax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softplus.js +49 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softplus.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SpaceToBatchND.js +50 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SpaceToBatchND.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseFillEmptyRows.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseFillEmptyRows.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseReshape.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseReshape.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseSegmentMean.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseSegmentMean.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseSegmentSum.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseSegmentSum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseToDense.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseToDense.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SplitV.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SplitV.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sqrt.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sqrt.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Square.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Square.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SquaredDifference.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SquaredDifference.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StaticRegexReplace.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StaticRegexReplace.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Step.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Step.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StridedSlice.js +54 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StridedSlice.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringNGrams.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringNGrams.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringSplit.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringSplit.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringToHashBucketFast.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringToHashBucketFast.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sub.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sub.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum_impl.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tan.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tanh.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tanh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/TensorScatterUpdate.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/TensorScatterUpdate.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tile.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tile.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/TopK.js +93 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/TopK.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transform.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transform.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose_impl.js +28 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Unique.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Unique.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Unpack.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Unpack.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/UnsortedSegmentSum.js +67 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/UnsortedSegmentSum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ZerosLike.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ZerosLike.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/_FusedMatMul.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/_FusedMatMul.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_gpu.js +49 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_grad_gpu.js +80 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_grad_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_packed_gpu.js +92 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/max_pool_backprop_gpu.js +145 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/max_pool_backprop_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mean_gpu.js +90 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mean_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_gpu.js +64 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_packed_gpu.js +96 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mulmat_packed_gpu.js +72 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mulmat_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/multinomial_gpu.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/multinomial_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/onehot_gpu.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/onehot_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pack_gpu.js +89 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pack_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/packing_util.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/packing_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_gpu.js +60 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_packed_gpu.js +64 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pool_gpu.js +365 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pool_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reduce_gpu.js +128 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reduce_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/register_all_kernels.js +363 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/register_all_kernels.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reshape_packed_gpu.js +69 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reshape_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_backprop_gpu.js +114 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_backprop_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_gpu.js +69 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_packed_gpu.js +113 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_backprop_gpu.js +103 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_backprop_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_gpu.js +58 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_packed_gpu.js +77 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_gpu.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_packed_gpu.js +80 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/rotate_gpu.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/rotate_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/scatter_gpu.js +57 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/scatter_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/scatter_packed_gpu.js +74 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/scatter_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/search_sorted_gpu.js +54 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/search_sorted_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/segment_gpu.js +138 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/segment_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/select_gpu.js +49 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/select_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler.js +1266 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler_util.js +110 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_gpu.js +50 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_packed_gpu.js +58 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/strided_slice_gpu.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/strided_slice_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/tex_util.js +79 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/tex_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/texture_manager.js +147 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/texture_manager.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/tile_gpu.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/tile_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/top_k_gpu.js +106 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/top_k_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transform_gpu.js +157 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transform_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_gpu.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_packed_gpu.js +54 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_gpu.js +50 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_packed_gpu.js +72 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_packed_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unpack_gpu.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unpack_gpu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/webgl_util.js +351 -0
- package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/webgl_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-converter/dist/data/compiled_api.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-converter/dist/data/compiled_api.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-converter/dist/flags.js +23 -0
- package/dist/node_modules/@tensorflow/tfjs-converter/dist/flags.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/backend.js +99 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/backend.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/backend_util.js +139 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/backend_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/complex_util.js +72 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/complex_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/einsum_util.js +105 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/einsum_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_impl.js +101 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_util.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/where_impl.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/where_impl.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/base_side_effects.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/base_side_effects.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/browser_util.js +24 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/browser_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/device_util.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/device_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/engine.js +595 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/engine.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/environment.js +111 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/environment.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/flags.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/flags.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/global_util.js +52 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/global_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/globals.js +62 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/globals.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Abs_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Abs_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Acos_grad.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Acos_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Acosh_grad.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Acosh_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AddN_grad.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AddN_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Add_grad.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Add_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ArgMax_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ArgMax_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ArgMin_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ArgMin_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Asin_grad.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Asin_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Asinh_grad.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Asinh_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atan2_grad.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atan2_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atan_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atan_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atanh_grad.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atanh_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool3D_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool3D_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BatchMatMul_grad.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BatchMatMul_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BatchToSpaceND_grad.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BatchToSpaceND_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BroadcastTo_grad.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BroadcastTo_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cast_grad.js +25 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cast_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Ceil_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Ceil_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ClipByValue_grad.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ClipByValue_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ComplexAbs_grad.js +27 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ComplexAbs_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Concat_grad.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Concat_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2DBackpropInput_grad.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2DBackpropInput_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2D_grad.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2D_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv3D_grad.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv3D_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cos_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cos_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cosh_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cosh_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cumsum_grad.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cumsum_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/DepthwiseConv2dNative_grad.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/DepthwiseConv2dNative_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Dilation2D_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Dilation2D_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Elu_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Elu_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Erf_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Erf_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Exp_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Exp_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ExpandDims_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ExpandDims_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Expm1_grad.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Expm1_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/FloorDiv_grad.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/FloorDiv_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Floor_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Floor_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/FusedBatchNorm_grad.js +63 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/FusedBatchNorm_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/GatherV2_grad.js +61 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/GatherV2_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/GreaterEqual_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/GreaterEqual_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Identity_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Identity_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsFinite_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsFinite_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsInf_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsInf_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsNan_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsNan_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LRN_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LRN_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LeakyRelu_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LeakyRelu_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Log1p_grad.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Log1p_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LogSoftmax_grad.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LogSoftmax_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Log_grad.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Log_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool3D_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool3D_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Max_grad.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Max_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Maximum_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Maximum_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Mean_grad.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Mean_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Min_grad.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Min_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Minimum_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Minimum_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MirrorPad_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MirrorPad_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Mod_grad.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Mod_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Multiply_grad.js +40 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Multiply_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Neg_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Neg_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/OneHot_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/OneHot_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/OnesLike_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/OnesLike_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Pack_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Pack_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/PadV2_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/PadV2_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Pow_grad.js +52 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Pow_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Prelu_grad.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Prelu_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Prod_grad.js +55 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Prod_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/RealDiv_grad.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/RealDiv_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reciprocal_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reciprocal_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Relu6_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Relu6_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Relu_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Relu_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reshape_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reshape_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeBilinear_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeBilinear_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeNearestNeighbor_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeNearestNeighbor_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reverse_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reverse_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Round_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Round_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Rsqrt_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Rsqrt_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Select_grad.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Select_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Selu_grad.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Selu_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sigmoid_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sigmoid_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sign_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sign_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sin_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sin_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sinh_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sinh_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Slice_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Slice_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Softmax_grad.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Softmax_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Softplus_grad.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Softplus_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SpaceToBatchND_grad.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SpaceToBatchND_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SplitV_grad.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SplitV_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sqrt_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sqrt_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Square_grad.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Square_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SquaredDifference_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SquaredDifference_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Step_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Step_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sub_grad.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sub_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sum_grad.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sum_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tan_grad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tan_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tanh_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tanh_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tile_grad.js +63 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tile_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Transpose_grad.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Transpose_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Unpack_grad.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Unpack_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/UnsortedSegmentSum_grad.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/UnsortedSegmentSum_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ZerosLike_grad.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ZerosLike_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/min_max_grad_util.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/min_max_grad_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/hash_util.js +100 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/hash_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/index.js +20 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/index.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/composite_array_buffer.js +74 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/composite_array_buffer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/http.js +131 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/http.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/indexed_db.js +169 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/indexed_db.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/io_utils.js +281 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/io_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/local_storage.js +156 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/local_storage.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/model_management.js +50 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/model_management.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/progress.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/progress.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/router_registry.js +78 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/router_registry.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/types.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/types.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/weights_loader.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/io/weights_loader.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/kernel_names.js +179 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/kernel_names.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/kernel_registry.js +57 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/kernel_registry.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/log.js +28 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/log.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/abs.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/abs.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/acos.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/acos.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/acosh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/acosh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/add.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/add.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/all.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/all.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/any.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/any.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/arg_max.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/arg_max.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/arg_min.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/arg_min.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/array_ops_util.js +70 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/array_ops_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/asin.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/asin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/asinh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/asinh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atan.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atan2.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atan2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atanh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atanh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d_grad.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_grad.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/axis_util.js +72 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/axis_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batch_to_space_nd.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batch_to_space_nd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm2d.js +16 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm3d.js +16 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm3d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm4d.js +16 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm4d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm_util.js +9 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/bincount.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/bincount.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_to.js +50 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_to.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_util.js +56 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/buffer.js +25 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/buffer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cast.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cast.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ceil.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ceil.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/clip_by_value.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/clip_by_value.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/clone.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/clone.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/complex.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/complex.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_1d.js +14 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_1d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_2d.js +10 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_3d.js +10 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_3d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_4d.js +10 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_4d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_util.js +39 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv1d.js +18 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv1d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_filter.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_filter.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_input.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_input.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_transpose.js +12 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_transpose.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_filter.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_filter.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_input.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_input.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_transpose.js +12 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_transpose.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv_util.js +242 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cos.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cos.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cosh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cosh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cumprod.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cumprod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cumsum.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cumsum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dense_bincount.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dense_bincount.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depth_to_space.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depth_to_space.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_filter.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_filter.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_input.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_input.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dilation2d.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dilation2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/div.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/div.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/div_no_nan.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/div_no_nan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dot.js +44 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dot.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dropout.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dropout.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dropout_util.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dropout_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/einsum.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/einsum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/elu.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/elu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/equal.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/erf.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/erf.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/erf_util.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/erf_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/euclidean_norm.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/euclidean_norm.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/exp.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/exp.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/expand_dims.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/expand_dims.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/expm1.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/expm1.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/eye.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/eye.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fill.js +28 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fill.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/floor.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/floor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/floorDiv.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/floorDiv.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused/conv2d.js +99 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused/conv2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused/mat_mul.js +75 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused/mat_mul.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused_util.js +64 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/gather.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/gather.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/gather_nd_util.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/gather_nd_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/greater.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/greater.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/greater_equal.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/greater_equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/imag.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/imag.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/crop_and_resize.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/crop_and_resize.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/flip_left_right.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/flip_left_right.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/grayscale_to_rgb.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/grayscale_to_rgb.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_async.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_async.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded_async.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded_async.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score_async.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score_async.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_bilinear.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_bilinear.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_nearest_neighbor.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_nearest_neighbor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/rgb_to_grayscale.js +54 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/rgb_to_grayscale.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/rotate_with_offset.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/rotate_with_offset.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/threshold.js +72 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/threshold.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/transform.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/transform.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_finite.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_finite.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_inf.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_inf.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_nan.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_nan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/leaky_relu.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/leaky_relu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/less.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/less.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/less_equal.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/less_equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/band_part.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/band_part.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/gram_schmidt.js +55 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/gram_schmidt.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/qr.js +95 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/qr.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization.js +36 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization_backprop.js +28 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization_backprop.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log1p.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log1p.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_sigmoid.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_sigmoid.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_softmax.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_softmax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_sum_exp.js +45 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_sum_exp.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_and.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_and.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_not.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_not.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_or.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_or.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_xor.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_xor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mat_mul.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mat_mul.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d_grad.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_grad.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_grad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/maximum.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/maximum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mean.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mean.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/min.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/min.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/minimum.js +34 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/minimum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mirror_pad.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mirror_pad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mod.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/moments.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/moments.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mul.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mul.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/neg.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/neg.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/nonmax_util.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/nonmax_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/norm.js +73 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/norm.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/not_equal.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/not_equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/one_hot.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/one_hot.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ones.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ones.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ones_like.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ones_like.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/operation.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/operation.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ops.js +60 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ops.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pad.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pool.js +49 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pow.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pow.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/prelu.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/prelu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/print.js +23 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/print.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/prod.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/prod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ragged_to_dense_util.js +83 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ragged_to_dense_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rand_util.js +67 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rand_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/random_normal.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/random_normal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/random_uniform.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/random_uniform.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/range.js +28 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/range.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/real.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/real.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reciprocal.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reciprocal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reduce_util.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reduce_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/relu.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/relu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/relu6.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/relu6.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reshape.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reshape.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reverse.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reverse.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rotate_util.js +24 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rotate_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/round.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/round.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rsqrt.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rsqrt.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/scalar.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/scalar.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/scatter_nd_util.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/scatter_nd_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/segment_util.js +60 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/segment_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/selu.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/selu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/selu_util.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/selu_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/separable_conv2d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/separable_conv2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sigmoid.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sigmoid.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sign.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sign.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sin.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sinh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sinh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice1d.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice1d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice2d.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice3d.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice3d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice4d.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice4d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice_util.js +268 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/softmax.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/softmax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/softplus.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/softplus.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/space_to_batch_nd.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/space_to_batch_nd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_fill_empty_rows_util.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_fill_empty_rows_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_reshape_util.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_reshape_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_segment_reduction_util.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_segment_reduction_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/fft.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/fft.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/ifft.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/ifft.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/irfft.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/irfft.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/rfft.js +49 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/rfft.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/split.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/split.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/split_util.js +21 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/split_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sqrt.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sqrt.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/square.js +28 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/square.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/squared_difference.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/squared_difference.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/squeeze.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/squeeze.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/stack.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/stack.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/step.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/step.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/strided_slice.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/strided_slice.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sub.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sub.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sum.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tan.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tanh.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tanh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor.js +26 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor1d.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor1d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor2d.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor_ops_util.js +47 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor_ops_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tile.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tile.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/topk.js +37 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/topk.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/transpose.js +43 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/transpose.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/truncated_normal.js +33 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/truncated_normal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unique.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unique.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unsorted_segment_sum.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unsorted_segment_sum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unstack.js +32 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unstack.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/variable.js +24 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/variable.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/where.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/where.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/zeros.js +31 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/zeros.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/zeros_like.js +29 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/zeros_like.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adadelta_optimizer.js +89 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adadelta_optimizer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adagrad_optimizer.js +78 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adagrad_optimizer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adam_optimizer.js +98 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adam_optimizer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adamax_optimizer.js +87 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adamax_optimizer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/momentum_optimizer.js +82 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/momentum_optimizer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer.js +106 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer_constructors.js +175 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer_constructors.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/register_optimizers.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/register_optimizers.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/rmsprop_optimizer.js +107 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/rmsprop_optimizer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/sgd_optimizer.js +70 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/sgd_optimizer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/is_typed_array_browser.js +23 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/is_typed_array_browser.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/platform_browser.js +78 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/platform_browser.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/platform_node.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/platform_node.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/profiler.js +92 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/profiler.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/abs.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/abs.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acos.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acos.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acosh.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acosh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/add.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/add.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/all.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/all.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/any.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/any.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_max.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_max.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_min.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_min.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as1d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as1d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as2d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as3d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as3d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as4d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as4d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as5d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as5d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_scalar.js +23 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_scalar.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_type.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_type.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asin.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asinh.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asinh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan2.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan2.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atanh.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atanh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/avg_pool.js +6 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/avg_pool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batch_to_space_nd.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batch_to_space_nd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batchnorm.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batchnorm.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/broadcast_to.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/broadcast_to.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cast.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cast.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ceil.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ceil.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/clip_by_value.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/clip_by_value.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/concat.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/concat.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv1d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv1d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d_transpose.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d_transpose.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cos.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cos.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cosh.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cosh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cumprod.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cumprod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cumsum.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cumsum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depth_to_space.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depth_to_space.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depthwise_conv2d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depthwise_conv2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dilation2d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dilation2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div_no_nan.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div_no_nan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dot.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dot.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/elu.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/elu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/equal.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/erf.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/erf.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/euclidean_norm.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/euclidean_norm.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/exp.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/exp.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expand_dims.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expand_dims.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expm1.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expm1.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/fft.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/fft.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/flatten.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/flatten.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floor.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floorDiv.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floorDiv.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/gather.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/gather.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater_equal.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater_equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ifft.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ifft.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/irfft.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/irfft.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_finite.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_finite.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_inf.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_inf.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_nan.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_nan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/leaky_relu.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/leaky_relu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less_equal.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less_equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/local_response_normalization.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/local_response_normalization.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log1p.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log1p.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sigmoid.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sigmoid.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_softmax.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_softmax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sum_exp.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sum_exp.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_and.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_and.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_not.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_not.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_or.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_or.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_xor.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_xor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mat_mul.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mat_mul.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max_pool.js +6 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max_pool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/maximum.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/maximum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mean.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mean.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/min.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/min.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/minimum.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/minimum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mirror_pad.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mirror_pad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mod.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mul.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mul.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/neg.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/neg.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/norm.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/norm.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/not_equal.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/not_equal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/one_hot.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/one_hot.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ones_like.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ones_like.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pad.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pad.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pool.js +6 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pow.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pow.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prelu.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prelu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prod.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prod.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reciprocal.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reciprocal.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu6.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu6.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape_as.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape_as.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_bilinear.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_bilinear.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_nearest_neighbor.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_nearest_neighbor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reverse.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reverse.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rfft.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rfft.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/round.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/round.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rsqrt.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rsqrt.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/selu.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/selu.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/separable_conv2d.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/separable_conv2d.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sigmoid.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sigmoid.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sign.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sign.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sin.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sin.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sinh.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sinh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/slice.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/slice.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softmax.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softmax.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softplus.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softplus.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/space_to_batch_nd.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/space_to_batch_nd.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/split.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/split.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sqrt.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sqrt.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/square.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/square.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squared_difference.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squared_difference.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squeeze.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squeeze.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/stack.js +24 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/stack.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/step.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/step.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/strided_slice.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/strided_slice.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sub.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sub.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sum.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tan.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tan.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tanh.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tanh.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tile.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tile.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_bool.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_bool.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_float.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_float.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_int.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_int.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/topk.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/topk.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/transpose.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/transpose.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unique.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unique.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unsorted_segment_sum.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unsorted_segment_sum.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unstack.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unstack.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/where.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/where.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/zeros_like.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/zeros_like.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/register_all_gradients.js +228 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/register_all_gradients.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/serialization.js +74 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/serialization.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tape.js +94 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tape.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor.js +320 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_format.js +123 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_format.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_util.js +51 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_util_env.js +80 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_util_env.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/train.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/train.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/types.js +67 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/types.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/util.js +120 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/util.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/util_base.js +340 -0
- package/dist/node_modules/@tensorflow/tfjs-core/dist/util_base.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-data/dist/iterators/lazy_iterator.js +27 -0
- package/dist/node_modules/@tensorflow/tfjs-data/dist/iterators/lazy_iterator.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/activations.js +244 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/activations.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/common.js +23 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/common.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/random_seed.js +23 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/random_seed.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/state.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/state.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/tfjs_backend.js +292 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/tfjs_backend.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/base_callbacks.js +314 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/base_callbacks.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/common.js +68 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/common.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/constraints.js +118 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/constraints.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/base_random_layer.js +27 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/base_random_layer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/container.js +640 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/container.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/executor.js +239 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/executor.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/input_layer.js +81 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/input_layer.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/topology.js +780 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/topology.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training.js +1184 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_dataset.js +192 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_dataset.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_tensors.js +84 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_tensors.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_utils.js +70 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/errors.js +42 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/errors.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/exports.js +22 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/exports.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/exports_layers.js +62 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/exports_layers.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/flags_layers.js +25 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/flags_layers.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/initializers.js +386 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/initializers.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/keras_format/common.js +18 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/keras_format/common.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/keras_format/initializer_config.js +15 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/keras_format/initializer_config.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/advanced_activations.js +184 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/advanced_activations.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional.js +452 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_depthwise.js +77 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_depthwise.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_recurrent.js +197 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_recurrent.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/core.js +328 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/core.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/embeddings.js +87 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/embeddings.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/merge.js +439 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/merge.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/noise.js +102 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/noise.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/normalization.js +186 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/normalization.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/padding.js +75 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/padding.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/pooling.js +308 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/pooling.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/category_encoding.js +58 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/category_encoding.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/center_crop.js +70 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/center_crop.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/image_preprocessing.js +38 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/image_preprocessing.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/image_resizing.js +59 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/image_resizing.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/preprocessing_utils.js +35 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/preprocessing_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/random_width.js +81 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/random_width.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/recurrent.js +682 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/recurrent.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/serialization.js +19 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/serialization.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/wrappers.js +243 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/wrappers.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/logs.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/logs.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/losses.js +184 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/losses.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/metrics.js +116 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/metrics.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/models.js +558 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/models.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/optimizers.js +30 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/optimizers.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/regularizers.js +76 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/regularizers.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/user_defined_metadata.js +46 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/user_defined_metadata.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/conv_utils.js +48 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/conv_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/executor_utils.js +58 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/executor_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/generic_utils.js +180 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/generic_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/layer_utils.js +118 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/layer_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/math_utils.js +56 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/math_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/serialization_utils.js +69 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/serialization_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/types_utils.js +41 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/types_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/variable_utils.js +19 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/variable_utils.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/variables.js +87 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/variables.js.map +1 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/version.js +6 -0
- package/dist/node_modules/@tensorflow/tfjs-layers/dist/version.js.map +1 -0
- package/dist/node_modules/long/src/long.js +675 -0
- package/dist/node_modules/long/src/long.js.map +1 -0
- package/dist/node_modules/seedrandom/index.js +19 -0
- package/dist/node_modules/seedrandom/index.js.map +1 -0
- package/dist/node_modules/seedrandom/lib/alea.js +48 -0
- package/dist/node_modules/seedrandom/lib/alea.js.map +1 -0
- package/dist/node_modules/seedrandom/lib/tychei.js +41 -0
- package/dist/node_modules/seedrandom/lib/tychei.js.map +1 -0
- package/dist/node_modules/seedrandom/lib/xor128.js +41 -0
- package/dist/node_modules/seedrandom/lib/xor128.js.map +1 -0
- package/dist/node_modules/seedrandom/lib/xor4096.js +50 -0
- package/dist/node_modules/seedrandom/lib/xor4096.js.map +1 -0
- package/dist/node_modules/seedrandom/lib/xorshift7.js +53 -0
- package/dist/node_modules/seedrandom/lib/xorshift7.js.map +1 -0
- package/dist/node_modules/seedrandom/lib/xorwow.js +41 -0
- package/dist/node_modules/seedrandom/lib/xorwow.js.map +1 -0
- package/dist/node_modules/seedrandom/seedrandom.js +99 -0
- package/dist/node_modules/seedrandom/seedrandom.js.map +1 -0
- package/package.json +4 -1
- package/dist/features/trial-session/comps/learning-plan/index.js +0 -353
- package/dist/features/trial-session/comps/learning-plan/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topology.js","sources":["../../../../../../node_modules/@tensorflow/tfjs-layers/dist/engine/topology.js"],"sourcesContent":["/**\n * @license\n * Copyright 2018 Google LLC\n *\n * Use of this source code is governed by an MIT-style\n * license that can be found in the LICENSE file or at\n * https://opensource.org/licenses/MIT.\n * =============================================================================\n */\n/* Original source: keras/engine/topology.py */\nimport { serialization, tidy, util } from '@tensorflow/tfjs-core';\nimport { getNextUniqueTensorId, getUid } from '../backend/state';\nimport { getScopedTensorName, getUniqueTensorName, nameScope } from '../common';\nimport { AttributeError, NotImplementedError, RuntimeError, ValueError } from '../errors';\nimport { getInitializer } from '../initializers';\nimport * as generic_utils from '../utils/generic_utils';\nimport * as types_utils from '../utils/types_utils';\nimport * as variable_utils from '../utils/variable_utils';\nimport { batchGetValue, batchSetValue, LayerVariable } from '../variables';\n/**\n * Specifies the ndim, dtype and shape of every input to a layer.\n *\n * Every layer should expose (if appropriate) an `inputSpec` attribute:\n * a list of instances of InputSpec (one per input tensor).\n *\n * A null entry in a shape is compatible with any dimension,\n * a null shape is compatible with any shape.\n */\nexport class InputSpec {\n constructor(args) {\n this.dtype = args.dtype;\n this.shape = args.shape;\n /*\n TODO(michaelterry): Could throw error if ndim and shape are both defined\n (then backport).\n */\n if (args.shape != null) {\n this.ndim = args.shape.length;\n }\n else {\n this.ndim = args.ndim;\n }\n this.maxNDim = args.maxNDim;\n this.minNDim = args.minNDim;\n this.axes = args.axes || {};\n }\n}\n/**\n * `tf.SymbolicTensor` is a placeholder for a Tensor without any concrete value.\n *\n * They are most often encountered when building a graph of `Layer`s for a\n * `tf.LayersModel` and the input data's shape, but not values are known.\n *\n * @doc {heading: 'Models', 'subheading': 'Classes'}\n */\nexport class SymbolicTensor {\n /**\n *\n * @param dtype\n * @param shape\n * @param sourceLayer The Layer that produced this symbolic tensor.\n * @param inputs The inputs passed to sourceLayer's __call__() method.\n * @param nodeIndex\n * @param tensorIndex\n * @param callArgs The keyword arguments passed to the __call__() method.\n * @param name\n * @param outputTensorIndex The index of this tensor in the list of outputs\n * returned by apply().\n */\n constructor(dtype, shape, sourceLayer, inputs, callArgs, name, outputTensorIndex) {\n this.dtype = dtype;\n this.shape = shape;\n this.sourceLayer = sourceLayer;\n this.inputs = inputs;\n this.callArgs = callArgs;\n this.outputTensorIndex = outputTensorIndex;\n this.id = getNextUniqueTensorId();\n if (name != null) {\n this.originalName = getScopedTensorName(name);\n this.name = getUniqueTensorName(this.originalName);\n }\n this.rank = shape.length;\n }\n}\nlet _nextNodeID = 0;\n/**\n * A `Node` describes the connectivity between two layers.\n *\n * Each time a layer is connected to some new input,\n * a node is added to `layer.inboundNodes`.\n *\n * Each time the output of a layer is used by another layer,\n * a node is added to `layer.outboundNodes`.\n *\n * `nodeIndices` and `tensorIndices` are basically fine-grained coordinates\n * describing the origin of the `inputTensors`, verifying the following:\n *\n * `inputTensors[i] ==\n * inboundLayers[i].inboundNodes[nodeIndices[i]].outputTensors[\n * tensorIndices[i]]`\n *\n * A node from layer A to layer B is added to:\n * A.outboundNodes\n * B.inboundNodes\n */\nexport class Node {\n constructor(args, \n // TODO(michaelterry): Define actual type for this.\n callArgs) {\n this.callArgs = callArgs;\n this.id = _nextNodeID++;\n /*\n Layer instance (NOT a list).\n this is the layer that takes a list of input tensors\n and turns them into a list of output tensors.\n the current node will be added to\n the inboundNodes of outboundLayer.\n */\n this.outboundLayer = args.outboundLayer;\n /*\n The following 3 properties describe where\n the input tensors come from: which layers,\n and for each layer, which node and which\n tensor output of each node.\n */\n // List of layer instances.\n this.inboundLayers = args.inboundLayers;\n // List of integers, 1:1 mapping with inboundLayers.\n this.nodeIndices = args.nodeIndices;\n // List of integers, 1:1 mapping with inboundLayers.\n this.tensorIndices = args.tensorIndices;\n /*\n Following 2 properties:\n tensor inputs and outputs of outboundLayer.\n */\n // List of tensors. 1:1 mapping with inboundLayers.\n this.inputTensors = args.inputTensors;\n // List of tensors, created by outboundLayer.call().\n this.outputTensors = args.outputTensors;\n /*\n Following 2 properties: input and output masks.\n List of tensors, 1:1 mapping with inputTensor.\n */\n this.inputMasks = args.inputMasks;\n // List of tensors, created by outboundLayer.computeMask().\n this.outputMasks = args.outputMasks;\n // Following 2 properties: input and output shapes.\n // List of shape tuples, shapes of inputTensors.\n this.inputShapes = args.inputShapes;\n // List of shape tuples, shapes of outputTensors.\n this.outputShapes = args.outputShapes;\n // Add nodes to all layers involved.\n for (const layer of args.inboundLayers) {\n if (layer != null) {\n layer.outboundNodes.push(this);\n }\n }\n args.outboundLayer.inboundNodes.push(this);\n }\n getConfig() {\n const inboundNames = [];\n for (const layer of this.inboundLayers) {\n if (layer != null) {\n inboundNames.push(layer.name);\n }\n else {\n inboundNames.push(null);\n }\n }\n return {\n outboundLayer: this.outboundLayer ? this.outboundLayer.name : null,\n inboundLayers: inboundNames,\n nodeIndices: this.nodeIndices,\n tensorIndices: this.tensorIndices\n };\n }\n}\nlet _nextLayerID = 0;\n/**\n * A layer is a grouping of operations and weights that can be composed to\n * create a `tf.LayersModel`.\n *\n * Layers are constructed by using the functions under the\n * [tf.layers](#Layers-Basic) namespace.\n *\n * @doc {heading: 'Layers', subheading: 'Classes', namespace: 'layers'}\n */\nexport class Layer extends serialization.Serializable {\n constructor(args = {}) {\n super();\n this._callHook = null;\n this._addedWeightNames = [];\n // Porting Notes: PyKeras does not have this property in this base Layer\n // class. Instead lets Layer subclass set it dynamically and checks the\n // value with `hasattr`. In tfjs-layers, we let this be a member of this\n // base class.\n this._stateful = false;\n this.id = _nextLayerID++;\n this.activityRegularizer = null;\n this.inputSpec = null;\n this.supportsMasking = false;\n // These properties will be set upon call of this.build()\n this._trainableWeights = [];\n this._nonTrainableWeights = [];\n this._losses = [];\n this._updates = [];\n this._built = false;\n /*\n These lists will be filled via successive calls\n to this.addInboundNode().\n */\n this.inboundNodes = [];\n this.outboundNodes = [];\n let name = args.name;\n if (!name) {\n const prefix = this.getClassName();\n name = generic_utils.toSnakeCase(prefix) + '_' + getUid(prefix);\n }\n this.name = name;\n this.trainable_ = args.trainable == null ? true : args.trainable;\n if (args.inputShape != null || args.batchInputShape != null) {\n /*\n In this case we will later create an input layer\n to insert before the current layer\n */\n let batchInputShape;\n if (args.batchInputShape != null) {\n batchInputShape = args.batchInputShape;\n }\n else if (args.inputShape != null) {\n let batchSize = null;\n if (args.batchSize != null) {\n batchSize = args.batchSize;\n }\n batchInputShape = [batchSize].concat(args.inputShape);\n }\n this.batchInputShape = batchInputShape;\n // Set dtype.\n let dtype = args.dtype;\n if (dtype == null) {\n dtype = args.inputDType;\n }\n if (dtype == null) {\n dtype = 'float32';\n }\n this.dtype = dtype;\n }\n if (args.weights != null) {\n this.initialWeights = args.weights;\n }\n else {\n this.initialWeights = null;\n }\n // The value of `_refCount` is initialized to null. When the layer is used\n // in a symbolic way for the first time, it will be set to 1.\n this._refCount = null;\n this.fastWeightInitDuringBuild = false;\n }\n /**\n * Converts a layer and its index to a unique (immutable type) name.\n * This function is used internally with `this.containerNodes`.\n * @param layer The layer.\n * @param nodeIndex The layer's position (e.g. via enumerate) in a list of\n * nodes.\n *\n * @returns The unique name.\n */\n static nodeKey(layer, nodeIndex) {\n return layer.name + '_ib-' + nodeIndex.toString();\n }\n /**\n * Returns this.inboundNode at index nodeIndex.\n *\n * Porting note: This is a replacement for _get_node_attribute_at_index()\n * @param nodeIndex\n * @param attrName The name of the attribute related to request for this node.\n */\n getNodeAtIndex(nodeIndex, attrName) {\n if (this.inboundNodes.length === 0) {\n throw new RuntimeError('The layer has never been called ' +\n `and thus has no defined ${attrName}.`);\n }\n if (this.inboundNodes.length <= nodeIndex) {\n throw new ValueError(`Asked to get ${attrName} at node ${nodeIndex}, ` +\n `but the layer has only ${this.inboundNodes.length} inbound nodes.`);\n }\n return this.inboundNodes[nodeIndex];\n }\n /**\n * Retrieves the input tensor(s) of a layer at a given node.\n *\n * @param nodeIndex Integer, index of the node from which to retrieve the\n * attribute. E.g. `nodeIndex=0` will correspond to the first time the layer\n * was called.\n *\n * @return A tensor (or list of tensors if the layer has multiple inputs).\n */\n getInputAt(nodeIndex) {\n return generic_utils.singletonOrArray(this.getNodeAtIndex(nodeIndex, 'input').inputTensors);\n }\n /**\n * Retrieves the output tensor(s) of a layer at a given node.\n *\n * @param nodeIndex Integer, index of the node from which to retrieve the\n * attribute. E.g. `nodeIndex=0` will correspond to the first time the layer\n * was called.\n *\n * @return A tensor (or list of tensors if the layer has multiple outputs).\n */\n getOutputAt(nodeIndex) {\n return generic_utils.singletonOrArray(this.getNodeAtIndex(nodeIndex, 'output').outputTensors);\n }\n // Properties\n /**\n * Retrieves the input tensor(s) of a layer.\n *\n * Only applicable if the layer has exactly one inbound node,\n * i.e. if it is connected to one incoming layer.\n *\n * @return Input tensor or list of input tensors.\n *\n * @exception AttributeError if the layer is connected to more than one\n * incoming layers.\n */\n get input() {\n if (this.inboundNodes.length > 1) {\n throw new AttributeError(`Layer ${this.name}` +\n ' has multiple inbound nodes, ' +\n 'hence the notion of \"layer input\" ' +\n 'is ill-defined. ' +\n 'Use `getInputAt(nodeIndex)` instead.');\n }\n else if (this.inboundNodes.length === 0) {\n throw new AttributeError(`Layer ${this.name}` +\n ' is not connected, no input to return.');\n }\n return generic_utils.singletonOrArray(this.getNodeAtIndex(0, 'input').inputTensors);\n }\n /**\n * Retrieves the output tensor(s) of a layer.\n *\n * Only applicable if the layer has exactly one inbound node,\n * i.e. if it is connected to one incoming layer.\n *\n * @return Output tensor or list of output tensors.\n *\n * @exception AttributeError if the layer is connected to more than one\n * incoming layers.\n */\n get output() {\n if (this.inboundNodes.length === 0) {\n throw new AttributeError(`Layer ${this.name}` +\n ' has no inbound nodes.');\n }\n if (this.inboundNodes.length > 1) {\n throw new AttributeError(`Layer ${this.name}` +\n ' has multiple inbound nodes, ' +\n 'hence the notion of \"layer output\" ' +\n 'is ill-defined. ' +\n 'Use `getOutputAt(nodeIndex)` instead.');\n }\n return generic_utils.singletonOrArray(this.getNodeAtIndex(0, 'output').outputTensors);\n }\n get losses() {\n return this._losses;\n }\n /**\n * Retrieves the Layer's current loss values.\n *\n * Used for regularizers during training.\n */\n calculateLosses() {\n // Porting Node: This is an augmentation to Layer.loss in PyKeras.\n // In PyKeras, Layer.loss returns symbolic tensors. Here a concrete\n // Tensor (specifically Scalar) values are returned. This is due to the\n // imperative backend.\n return this.losses.map(lossFn => lossFn());\n }\n get updates() {\n return this._updates;\n }\n get built() {\n return this._built;\n }\n set built(built) {\n this._built = built;\n }\n get trainable() {\n return this.trainable_;\n }\n set trainable(trainable) {\n this._trainableWeights.forEach(w => w.trainable = trainable);\n this.trainable_ = trainable;\n }\n get trainableWeights() {\n if (this.trainable_) {\n return this._trainableWeights.filter(w => w.trainable);\n }\n else {\n return [];\n }\n }\n set trainableWeights(weights) {\n this._trainableWeights = weights;\n }\n get nonTrainableWeights() {\n if (this.trainable) {\n return this._trainableWeights.filter(w => !w.trainable)\n .concat(this._nonTrainableWeights);\n }\n else {\n return this._trainableWeights.concat(this._nonTrainableWeights);\n }\n }\n set nonTrainableWeights(weights) {\n this._nonTrainableWeights = weights;\n }\n /**\n * The concatenation of the lists trainableWeights and nonTrainableWeights\n * (in this order).\n */\n get weights() {\n return this.trainableWeights.concat(this.nonTrainableWeights);\n }\n get stateful() {\n return this._stateful;\n }\n /**\n * Reset the states of the layer.\n *\n * This method of the base Layer class is essentially a no-op.\n * Subclasses that are stateful (e.g., stateful RNNs) should override this\n * method.\n */\n resetStates() {\n if (!this.stateful) {\n throw new Error('Cannot call the resetStates() method of a non-stateful Layer ' +\n 'object.');\n }\n }\n /**\n * Checks compatibility between the layer and provided inputs.\n *\n * This checks that the tensor(s) `input`\n * verify the input assumptions of the layer\n * (if any). If not, exceptions are raised.\n *\n * @param inputs Input tensor or list of input tensors.\n *\n * @exception ValueError in case of mismatch between\n * the provided inputs and the expectations of the layer.\n */\n assertInputCompatibility(inputs) {\n const inputsList = generic_utils.toList(inputs);\n if (this.inputSpec == null || this.inputSpec.length === 0) {\n return;\n }\n const inputSpec = generic_utils.toList(this.inputSpec);\n if (inputsList.length !== inputSpec.length) {\n throw new ValueError(`Layer ${this.name} expects ${inputSpec.length} inputs, ` +\n `but it received ${inputsList.length} input tensors. ` +\n `Input received: ${inputs}`);\n }\n for (let inputIndex = 0; inputIndex < inputsList.length; inputIndex++) {\n const x = inputsList[inputIndex];\n const spec = inputSpec[inputIndex];\n if (spec == null) {\n continue;\n }\n // Check ndim.\n const ndim = x.rank;\n if (spec.ndim != null) {\n if (ndim !== spec.ndim) {\n throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: ` +\n `expected ndim=${spec.ndim}, found ndim=${ndim}`);\n }\n }\n if (spec.maxNDim != null) {\n if (ndim > spec.maxNDim) {\n throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}` +\n `: expected max_ndim=${spec.maxNDim}, found ndim=${ndim}`);\n }\n }\n if (spec.minNDim != null) {\n if (ndim < spec.minNDim) {\n throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}` +\n `: expected min_ndim=${spec.minNDim}, found ndim=${ndim}.`);\n }\n }\n // Check dtype.\n if (spec.dtype != null) {\n if (x.dtype !== spec.dtype) {\n throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name} ` +\n `: expected dtype=${spec.dtype}, found dtype=${x.dtype}.`);\n }\n }\n // Check specific shape axes.\n if (spec.axes) {\n const xShape = x.shape;\n for (const key in spec.axes) {\n const axis = Number(key);\n const value = spec.axes[key];\n // Perform Python-style slicing in case axis < 0;\n // TODO(cais): Use https://github.com/alvivi/typescript-underscore to\n // ensure type safety through Underscore calls.\n const xShapeAtAxis = axis >= 0 ? xShape[axis] : xShape[xShape.length + axis];\n if (value != null && [value, null].indexOf(xShapeAtAxis) === -1) {\n throw new ValueError(`Input ${inputIndex} is incompatible with layer ` +\n `${this.name}: expected axis ${axis} of input shape to ` +\n `have value ${value} but got shape ${xShape}.`);\n }\n }\n }\n // Check shape.\n if (spec.shape != null) {\n for (let i = 0; i < spec.shape.length; ++i) {\n const specDim = spec.shape[i];\n const dim = x.shape[i];\n if (specDim != null && dim != null) {\n if (specDim !== dim) {\n throw new ValueError(`Input ${inputIndex} is incompatible with layer ` +\n `${this.name}: expected shape=${spec.shape}, ` +\n `found shape=${x.shape}.`);\n }\n }\n }\n }\n }\n }\n /**\n * This is where the layer's logic lives.\n *\n * @param inputs Input tensor, or list/tuple of input tensors.\n * @param kwargs Additional keyword arguments.\n *\n * @return A tensor or list/tuple of tensors.\n */\n call(inputs, kwargs) {\n return inputs;\n }\n invokeCallHook(inputs, kwargs) {\n if (this._callHook != null) {\n this._callHook(inputs, kwargs);\n }\n }\n /**\n * Set call hook.\n * This is currently used for testing only.\n * @param callHook\n */\n setCallHook(callHook) {\n this._callHook = callHook;\n }\n /**\n * Clear call hook.\n * This is currently used for testing only.\n */\n clearCallHook() {\n this._callHook = null;\n }\n /**\n * Builds or executes a `Layer`'s logic.\n *\n * When called with `tf.Tensor`(s), execute the `Layer`'s computation and\n * return Tensor(s). For example:\n *\n * ```js\n * const denseLayer = tf.layers.dense({\n * units: 1,\n * kernelInitializer: 'zeros',\n * useBias: false\n * });\n *\n * // Invoke the layer's apply() method with a `tf.Tensor` (with concrete\n * // numeric values).\n * const input = tf.ones([2, 2]);\n * const output = denseLayer.apply(input);\n *\n * // The output's value is expected to be [[0], [0]], due to the fact that\n * // the dense layer has a kernel initialized to all-zeros and does not have\n * // a bias.\n * output.print();\n * ```\n *\n * When called with `tf.SymbolicTensor`(s), this will prepare the layer for\n * future execution. This entails internal book-keeping on shapes of\n * expected Tensors, wiring layers together, and initializing weights.\n *\n * Calling `apply` with `tf.SymbolicTensor`s are typically used during the\n * building of non-`tf.Sequential` models. For example:\n *\n * ```js\n * const flattenLayer = tf.layers.flatten();\n * const denseLayer = tf.layers.dense({units: 1});\n *\n * // Use tf.layers.input() to obtain a SymbolicTensor as input to apply().\n * const input = tf.input({shape: [2, 2]});\n * const output1 = flattenLayer.apply(input);\n *\n * // output1.shape is [null, 4]. The first dimension is the undetermined\n * // batch size. The second dimension comes from flattening the [2, 2]\n * // shape.\n * console.log(JSON.stringify(output1.shape));\n *\n * // The output SymbolicTensor of the flatten layer can be used to call\n * // the apply() of the dense layer:\n * const output2 = denseLayer.apply(output1);\n *\n * // output2.shape is [null, 1]. The first dimension is the undetermined\n * // batch size. The second dimension matches the number of units of the\n * // dense layer.\n * console.log(JSON.stringify(output2.shape));\n *\n * // The input and output can be used to construct a model that consists\n * // of the flatten and dense layers.\n * const model = tf.model({inputs: input, outputs: output2});\n * ```\n *\n * @param inputs a `tf.Tensor` or `tf.SymbolicTensor` or an Array of them.\n * @param kwargs Additional keyword arguments to be passed to `call()`.\n *\n * @return Output of the layer's `call` method.\n *\n * @exception ValueError error in case the layer is missing shape information\n * for its `build` call.\n *\n * @doc {heading: 'Models', 'subheading': 'Classes'}\n */\n // Porting Note: This is a replacement for __call__() in Python.\n apply(inputs, kwargs) {\n kwargs = kwargs || {};\n this.assertNotDisposed();\n // Ensure inputs are all the same type.\n const inputsList = generic_utils.toList(inputs);\n const allAreSymbolic = checkAllSymbolic(inputs);\n const noneAreSymbolic = checkNoneSymbolic(inputs);\n if (allAreSymbolic === noneAreSymbolic) {\n throw new ValueError('Arguments to apply() must be all ' +\n 'SymbolicTensors or all Tensors');\n }\n // TODO(michaelterry): nameScope() may not be necessary.\n return nameScope(this.name, () => {\n // Handle laying building (weight creating, input spec locking).\n if (!this.built) {\n /*\n Throw exceptions in case the input is not compatible\n with the inputSpec specified in the layer constructor.\n */\n this.assertInputCompatibility(inputs);\n // Collect input shapes to build layer.\n const inputShapes = [];\n for (const xElem of generic_utils.toList(inputs)) {\n inputShapes.push(xElem.shape);\n }\n this.build(generic_utils.singletonOrArray(inputShapes));\n this.built = true;\n // Load weights that were specified at layer instantiation.\n if (this.initialWeights) {\n this.setWeights(this.initialWeights);\n }\n if (this._refCount === null && noneAreSymbolic) {\n // The first use of this layer is a non-symbolic call, set ref count\n // to 1 so the Layer can be properly disposed if its dispose() method\n // is called.\n this._refCount = 1;\n }\n }\n /*\n Throw exceptions in case the input is not compatible\n with the inputSpec set at build time.\n */\n this.assertInputCompatibility(inputs);\n // Handle mask propagation.\n // TODO(michaelterry): Mask propagation not currently implemented.\n // Actually call the layer, collecting output(s), mask(s), and shape(s).\n if (noneAreSymbolic) {\n let output = this.call(inputs, kwargs);\n // Apply masks to the output tensors if the layer supports it.\n if (this.supportsMasking) {\n // TODO(mattsoulanille): pass the input tensors' masks to computeMask\n this.setMaskMetadata(inputs, output);\n }\n // If the layer returns tensors from its inputs, unmodified,\n // we copy them to avoid loss of tensor metadata.\n const outputList = generic_utils.toList(output);\n const outputListCopy = [];\n // TODO(michaelterry): This copying may not be necessary given our eager\n // backend.\n for (let x of outputList) {\n if (inputsList.indexOf(x) !== -1) {\n x = x.clone();\n }\n outputListCopy.push(x);\n }\n output = generic_utils.singletonOrArray(outputListCopy);\n if (this.activityRegularizer != null) {\n throw new NotImplementedError('Layer invocation in the presence of activity ' +\n 'regularizer(s) is not supported yet.');\n }\n // TODO(michaelterry): Call addInboundNode()?\n return output;\n }\n else {\n const inputShape = collectInputShape(inputs);\n const outputShape = this.computeOutputShape(inputShape);\n let output;\n const outputDType = guessOutputDType(inputs);\n this.warnOnIncompatibleInputShape(Array.isArray(inputs) ? inputShape[0] :\n inputShape);\n if (outputShape != null && outputShape.length > 0 &&\n Array.isArray(outputShape[0])) {\n // We have multiple output shapes. Create multiple output tensors.\n output = outputShape\n .map((shape, index) => new SymbolicTensor(outputDType, shape, this, generic_utils.toList(inputs), kwargs, this.name, index));\n }\n else {\n output = new SymbolicTensor(outputDType, outputShape, this, generic_utils.toList(inputs), kwargs, this.name);\n }\n /*\n Add an inbound node to the layer, so that it keeps track\n of the call and of all new variables created during the call.\n This also updates the layer history of the output tensor(s).\n If the input tensor(s) had no previous history,\n this does nothing.\n */\n this.addInboundNode(inputs, output, null, null, inputShape, outputShape, kwargs);\n this._refCount++;\n if (this.activityRegularizer != null) {\n throw new NotImplementedError('Layer invocation in the presence of activity ' +\n 'regularizer(s) is not supported yet.');\n }\n return output;\n }\n });\n }\n /**\n * Check compatibility between input shape and this layer's batchInputShape.\n *\n * Print warning if any incompatibility is found.\n *\n * @param inputShape Input shape to be checked.\n */\n warnOnIncompatibleInputShape(inputShape) {\n if (this.batchInputShape == null) {\n return;\n }\n else if (inputShape.length !== this.batchInputShape.length) {\n console.warn(`The rank of the input tensor provided (shape: ` +\n `${JSON.stringify(inputShape)}) does not match that of the ` +\n `batchInputShape (${JSON.stringify(this.batchInputShape)}) ` +\n `of the layer ${this.name}`);\n }\n else {\n let dimMismatch = false;\n this.batchInputShape.forEach((dimension, i) => {\n if (dimension != null && inputShape[i] != null &&\n inputShape[i] !== dimension) {\n dimMismatch = true;\n }\n });\n if (dimMismatch) {\n console.warn(`The shape of the input tensor ` +\n `(${JSON.stringify(inputShape)}) does not ` +\n `match the expectation of layer ${this.name}: ` +\n `${JSON.stringify(this.batchInputShape)}`);\n }\n }\n }\n /**\n * Retrieves the output shape(s) of a layer.\n *\n * Only applicable if the layer has only one inbound node, or if all inbound\n * nodes have the same output shape.\n *\n * @returns Output shape or shapes.\n * @throws AttributeError: if the layer is connected to more than one incoming\n * nodes.\n *\n * @doc {heading: 'Models', 'subheading': 'Classes'}\n */\n get outputShape() {\n if (this.inboundNodes == null || this.inboundNodes.length === 0) {\n throw new AttributeError(`The layer ${this.name} has never been called and thus has no ` +\n `defined output shape.`);\n }\n const allOutputShapes = [];\n for (const node of this.inboundNodes) {\n const shapeString = JSON.stringify(node.outputShapes);\n if (allOutputShapes.indexOf(shapeString) === -1) {\n allOutputShapes.push(shapeString);\n }\n }\n if (allOutputShapes.length === 1) {\n const outputShapes = this.inboundNodes[0].outputShapes;\n if (Array.isArray(outputShapes) && Array.isArray(outputShapes[0]) &&\n outputShapes.length === 1) {\n return outputShapes[0];\n }\n else {\n return outputShapes;\n }\n }\n else {\n throw new AttributeError(`The layer ${this.name} has multiple inbound nodes with different ` +\n `output shapes. Hence the notion of \"output shape\" is ill-defined ` +\n `for the layer.`);\n // TODO(cais): Implement getOutputShapeAt().\n }\n }\n /**\n * Counts the total number of numbers (e.g., float32, int32) in the\n * weights.\n *\n * @returns An integer count.\n * @throws RuntimeError: If the layer is not built yet (in which case its\n * weights are not defined yet.)\n *\n * @doc {heading: 'Models', 'subheading': 'Classes'}\n */\n countParams() {\n if (!this.built) {\n throw new RuntimeError(`You tried to call countParams() on ${this.name}, ` +\n `but the layer is not built yet. Build it first by calling ` +\n `build(batchInputShape).`);\n }\n return variable_utils.countParamsInWeights(this.weights);\n }\n /**\n * Creates the layer weights.\n *\n * Must be implemented on all layers that have weights.\n *\n * Called when apply() is called to construct the weights.\n *\n * @param inputShape A `Shape` or array of `Shape` (unused).\n *\n * @doc {heading: 'Models', 'subheading': 'Classes'}\n */\n build(inputShape) {\n this.built = true;\n }\n /**\n * Returns the current values of the weights of the layer.\n *\n * @param trainableOnly Whether to get the values of only trainable weights.\n * @returns Weight values as an `Array` of `tf.Tensor`s.\n *\n * @doc {heading: 'Models', 'subheading': 'Classes'}\n */\n getWeights(trainableOnly = false) {\n return batchGetValue(trainableOnly ? this.trainableWeights : this.weights);\n }\n /**\n * Sets the weights of the layer, from Tensors.\n *\n * @param weights a list of Tensors. The number of arrays and their shape\n * must match number of the dimensions of the weights of the layer (i.e.\n * it should match the output of `getWeights`).\n *\n * @exception ValueError If the provided weights list does not match the\n * layer's specifications.\n *\n * @doc {heading: 'Models', 'subheading': 'Classes'}\n */\n setWeights(weights) {\n tidy(() => {\n const params = this.weights;\n if (params.length !== weights.length) {\n // TODO(cais): Restore the following and use `providedWeights`, instead\n // of `weights` in the error message, once the deeplearn.js bug is\n // fixed: https://github.com/PAIR-code/deeplearnjs/issues/498 const\n // providedWeights = JSON.stringify(weights).slice(0, 50);\n throw new ValueError(`You called setWeights(weights) on layer \"${this.name}\" ` +\n `with a weight list of length ${weights.length}, ` +\n `but the layer was expecting ${params.length} weights. ` +\n `Provided weights: ${weights}...`);\n }\n if (params.length === 0) {\n return;\n }\n const weightValueTuples = [];\n const paramValues = batchGetValue(params);\n for (let i = 0; i < paramValues.length; ++i) {\n const pv = paramValues[i];\n const p = params[i];\n const w = weights[i];\n if (!util.arraysEqual(pv.shape, w.shape)) {\n throw new ValueError(`Layer weight shape ${pv.shape} ` +\n `not compatible with provided weight shape ${w.shape}`);\n }\n weightValueTuples.push([p, w]);\n }\n batchSetValue(weightValueTuples);\n });\n }\n /**\n * Adds a weight variable to the layer.\n *\n * @param name Name of the new weight variable.\n * @param shape The shape of the weight.\n * @param dtype The dtype of the weight.\n * @param initializer An initializer instance.\n * @param regularizer A regularizer instance.\n * @param trainable Whether the weight should be trained via backprop or not\n * (assuming that the layer itself is also trainable).\n * @param constraint An optional trainable.\n * @return The created weight variable.\n *\n * @doc {heading: 'Models', 'subheading': 'Classes'}\n */\n addWeight(name, shape, dtype, initializer, regularizer, trainable, constraint, getInitializerFunc) {\n // Reject duplicate weight names.\n if (this._addedWeightNames.indexOf(name) !== -1) {\n throw new ValueError(`Duplicate weight name ${name} for layer ${this.name}`);\n }\n this._addedWeightNames.push(name);\n if (dtype == null) {\n dtype = 'float32';\n }\n if (this.fastWeightInitDuringBuild) {\n initializer = getInitializerFunc != null ? getInitializerFunc() :\n getInitializer('zeros');\n }\n const initValue = initializer.apply(shape, dtype);\n const weight = new LayerVariable(initValue, dtype, name, trainable, constraint);\n initValue.dispose();\n // Request backend not to dispose the weights of the model on scope() exit.\n if (regularizer != null) {\n this.addLoss(() => regularizer.apply(weight.read()));\n }\n if (trainable == null) {\n trainable = true;\n }\n if (trainable) {\n this._trainableWeights.push(weight);\n }\n else {\n this._nonTrainableWeights.push(weight);\n }\n return weight;\n }\n /**\n * Set the fast-weight-initialization flag.\n *\n * In cases where the initialized weight values will be immediately\n * overwritten by loaded weight values during model loading, setting\n * the flag to `true` saves unnecessary calls to potentially expensive\n * initializers and speeds up the loading process.\n *\n * @param value Target value of the flag.\n */\n setFastWeightInitDuringBuild(value) {\n this.fastWeightInitDuringBuild = value;\n }\n /**\n * Add losses to the layer.\n *\n * The loss may potentially be conditional on some inputs tensors,\n * for instance activity losses are conditional on the layer's inputs.\n *\n * @doc {heading: 'Models', 'subheading': 'Classes'}\n */\n addLoss(losses) {\n if (losses == null || Array.isArray(losses) && losses.length === 0) {\n return;\n }\n // Update this.losses\n losses = generic_utils.toList(losses);\n if (this._losses !== undefined && this._losses !== null) {\n this.losses.push(...losses);\n }\n }\n /**\n * Computes the output shape of the layer.\n *\n * Assumes that the layer will be built to match that input shape provided.\n *\n * @param inputShape A shape (tuple of integers) or a list of shape tuples\n * (one per output tensor of the layer). Shape tuples can include null for\n * free dimensions, instead of an integer.\n *\n * @doc {heading: 'Models', 'subheading': 'Classes'}\n */\n computeOutputShape(inputShape) {\n return inputShape;\n }\n /**\n * Computes an output mask tensor.\n *\n * @param inputs Tensor or list of tensors.\n * @param mask Tensor or list of tensors.\n *\n * @return null or a tensor (or list of tensors, one per output tensor of the\n * layer).\n */\n computeMask(inputs, mask) {\n if (!this.supportsMasking) {\n if (mask != null) {\n if (Array.isArray(mask)) {\n mask.forEach(maskElement => {\n if (maskElement != null) {\n throw new TypeError(`Layer ${this.name} does not support masking, ` +\n 'but was passed an inputMask.');\n }\n });\n }\n else {\n throw new TypeError(`Layer ${this.name} does not support masking, ` +\n 'but was passed an inputMask.');\n }\n }\n // masking not explicitly supported: return null as mask\n return null;\n }\n // if masking is explictly supported, by default\n // carry over the input mask\n return mask;\n }\n setMaskMetadata(inputs, outputs, previousMask) {\n if (!this.supportsMasking) {\n return;\n }\n const outputMasks = this.computeMask(inputs, previousMask);\n const outputsList = generic_utils.toList(outputs);\n const outputMasksList = generic_utils.toList(outputMasks);\n if (outputsList.length !== outputMasksList.length) {\n throw new Error(`${this.name} outputs ${outputsList.length} tensors ` +\n `but ${outputsList.length} masks for those tensors`);\n }\n for (let i = 0; i < outputsList.length; i++) {\n outputsList[i].kerasMask = outputMasksList[i];\n }\n }\n /**\n * Internal method to create an inbound node for the layer.\n *\n * @param inputTensors List of input tensors.\n * @param outputTensors List of output tensors.\n * @param inputMasks List of input masks (a mask can be a tensor, or null).\n * @param outputMasks List of output masks (a mask can be a tensor, or null).\n * @param inputShapes List of input shape tuples.\n * @param outputShapes List of output shape tuples.\n * @param kwargs Dictionary of keyword arguments that were passed to the\n * `call` method of the layer at the call that created the node.\n */\n addInboundNode(inputTensors, outputTensors, inputMasks, outputMasks, inputShapes, outputShapes, kwargs = null) {\n const inputTensorList = generic_utils.toList(inputTensors);\n outputTensors = generic_utils.toList(outputTensors);\n inputMasks = generic_utils.toList(inputMasks);\n outputMasks = generic_utils.toList(outputMasks);\n inputShapes = types_utils.normalizeShapeList(inputShapes);\n outputShapes = types_utils.normalizeShapeList(outputShapes);\n // Collect input tensor(s) coordinates.\n const inboundLayers = [];\n const nodeIndices = [];\n const tensorIndices = [];\n for (const x of inputTensorList) {\n /*\n * TODO(michaelterry): Keras adds this value to tensors; it's not\n * clear whether we'll use this or not.\n */\n inboundLayers.push(x.sourceLayer);\n nodeIndices.push(x.nodeIndex);\n tensorIndices.push(x.tensorIndex);\n }\n // Create node, add it to inbound nodes.\n // (This call has side effects.)\n // tslint:disable-next-line:no-unused-expression\n new Node({\n outboundLayer: this,\n inboundLayers,\n nodeIndices,\n tensorIndices,\n inputTensors: inputTensorList,\n outputTensors,\n inputMasks,\n outputMasks,\n inputShapes,\n outputShapes\n }, kwargs);\n // Update tensor history\n for (let i = 0; i < outputTensors.length; i++) {\n // TODO(michaelterry: _uses_learning_phase not tracked.\n outputTensors[i].sourceLayer = this;\n outputTensors[i].nodeIndex = this.inboundNodes.length - 1;\n outputTensors[i].tensorIndex = i;\n }\n }\n /**\n * Returns the config of the layer.\n *\n * A layer config is a TS dictionary (serializable)\n * containing the configuration of a layer.\n * The same layer can be reinstantiated later\n * (without its trained weights) from this configuration.\n *\n * The config of a layer does not include connectivity\n * information, nor the layer class name. These are handled\n * by 'Container' (one layer of abstraction above).\n *\n * Porting Note: The TS dictionary follows TS naming standards for\n * keys, and uses tfjs-layers type-safe Enums. Serialization methods\n * should use a helper function to convert to the pythonic storage\n * standard. (see serialization_utils.convertTsToPythonic)\n *\n * @returns TS dictionary of configuration.\n *\n * @doc {heading: 'Models', 'subheading': 'Classes'}\n */\n getConfig() {\n const config = { name: this.name, trainable: this.trainable };\n if (this.batchInputShape != null) {\n config['batchInputShape'] = this.batchInputShape;\n }\n if (this.dtype != null) {\n config['dtype'] = this.dtype;\n }\n return config;\n }\n /**\n * Dispose the weight variables that this Layer instance holds.\n *\n * @returns {number} Number of disposed variables.\n */\n disposeWeights() {\n this.weights.forEach(weight => weight.dispose());\n return this.weights.length;\n }\n assertNotDisposed() {\n if (this._refCount === 0) {\n throw new Error(`Layer '${this.name}' is already disposed.`);\n }\n }\n /**\n * Attempt to dispose layer's weights.\n *\n * This method decreases the reference count of the Layer object by 1.\n *\n * A Layer is reference-counted. Its reference count is incremented by 1\n * the first item its `apply()` method is called and when it becomes a part\n * of a new `Node` (through calling the `apply()` method on a\n * `tf.SymbolicTensor`).\n *\n * If the reference count of a Layer becomes 0, all the weights will be\n * disposed and the underlying memory (e.g., the textures allocated in WebGL)\n * will be freed.\n *\n * Note: If the reference count is greater than 0 after the decrement, the\n * weights of the Layer will *not* be disposed.\n *\n * After a Layer is disposed, it cannot be used in calls such as `apply()`,\n * `getWeights()` or `setWeights()` anymore.\n *\n * @returns A DisposeResult Object with the following fields:\n * - refCountAfterDispose: The reference count of the Container after this\n * `dispose()` call.\n * - numDisposedVariables: Number of `tf.Variable`s (i.e., weights) disposed\n * during this `dispose()` call.\n * @throws {Error} If the layer is not built yet, or if the layer has already\n * been disposed.\n *\n * @doc {heading: 'Models', 'subheading': 'Classes'}\n */\n dispose() {\n if (!this.built) {\n throw new Error(`Cannot dispose Layer ${this.name} because it has not been ` +\n `built yet.`);\n }\n if (this._refCount === null) {\n throw new Error(`Cannot dispose Layer ${this.name} because it has not been used ` +\n `yet.`);\n }\n this.assertNotDisposed();\n let numDisposedVariables = 0;\n if (--this._refCount === 0) {\n numDisposedVariables = this.disposeWeights();\n }\n return { refCountAfterDispose: this._refCount, numDisposedVariables };\n }\n}\n/**\n * Collects the input shape(s) of a list of `tf.Tensor`s or\n * `tf.SymbolicTensor`s.\n *\n * TODO(michaelterry): Update PyKeras docs (backport).\n *\n * @param inputTensors List of input tensors (or single input tensor).\n *\n * @return List of shape tuples (or single tuple), one tuple per input.\n */\nfunction collectInputShape(inputTensors) {\n inputTensors =\n generic_utils.toList(inputTensors);\n const shapes = [];\n for (const x of inputTensors) {\n shapes.push(x.shape);\n }\n return generic_utils.singletonOrArray(shapes);\n}\n/**\n * Guesses output dtype based on inputs.\n *\n * At present, just returns 'float32' for any input.\n *\n * @param inputTensors List of input tensors (or single input tensor).\n *\n * @return The guessed DType. At present, always returns 'float32'.\n */\nfunction guessOutputDType(inputTensors) {\n return 'float32';\n}\n/**\n * Returns the list of input tensors necessary to compute `tensor`.\n *\n * Output will always be a list of tensors (potentially with 1 element).\n *\n * @param tensor The tensor to start from.\n * @param layer Origin layer of the tensor.\n * @param nodeIndex Origin node index of the tensor.\n *\n * @return Array of input tensors.\n */\nexport function getSourceInputs(tensor, layer, nodeIndex) {\n if (layer == null || (nodeIndex != null && nodeIndex > 0)) {\n layer = tensor.sourceLayer;\n nodeIndex = tensor.nodeIndex;\n }\n if (layer.inboundNodes.length === 0) {\n return [tensor];\n }\n else {\n const node = layer.inboundNodes[nodeIndex];\n if (node.inboundLayers.length === 0) {\n return node.inputTensors;\n }\n else {\n const sourceTensors = [];\n for (let i = 0; i < node.inboundLayers.length; i++) {\n const x = node.inputTensors[i];\n const layer = node.inboundLayers[i];\n const nodeIndex = node.nodeIndices[i];\n const previousSources = getSourceInputs(x, layer, nodeIndex);\n // Avoid input redundancy.\n for (const x of previousSources) {\n if (sourceTensors.indexOf(x) === -1) {\n sourceTensors.push(x);\n }\n }\n }\n return sourceTensors;\n }\n }\n}\nfunction checkAllSymbolic(tensors) {\n let allAreSymbolic = true;\n for (const tensor of generic_utils.toList(tensors)) {\n if (!(tensor instanceof SymbolicTensor)) {\n allAreSymbolic = false;\n break;\n }\n }\n return allAreSymbolic;\n}\nfunction checkNoneSymbolic(tensors) {\n let noneAreSymbolic = true;\n for (const tensor of generic_utils.toList(tensors)) {\n if (tensor instanceof SymbolicTensor) {\n noneAreSymbolic = false;\n break;\n }\n }\n return noneAreSymbolic;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wb2xvZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZmpzLWxheWVycy9zcmMvZW5naW5lL3RvcG9sb2d5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsK0NBQStDO0FBRS9DLE9BQU8sRUFBbUIsYUFBYSxFQUFVLElBQUksRUFBRSxJQUFJLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRixPQUFPLEVBQUMscUJBQXFCLEVBQUUsTUFBTSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUFDLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUU5RSxPQUFPLEVBQUMsY0FBYyxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDeEYsT0FBTyxFQUFDLGNBQWMsRUFBYyxNQUFNLGlCQUFpQixDQUFDO0FBSTVELE9BQU8sS0FBSyxhQUFhLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxLQUFLLFdBQVcsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssY0FBYyxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQXVCekU7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLE9BQU8sU0FBUztJQWNwQixZQUFZLElBQW1CO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEI7OztVQUdFO1FBQ0YsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtZQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFD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LENBQUMsQ0FBQztnQkFDN0QsMEJBQTBCO2dCQUMxQixLQUFLLE1BQU0sQ0FBQyxJQUFJLGVBQWUsRUFBRTtvQkFDL0IsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO3dCQUNuQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN2QjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxhQUFhLENBQUM7U0FDdEI7S0FDRjtBQUNILENBQUM7QUFJRCxTQUFTLGdCQUFnQixDQUFDLE9BQXNDO0lBRTlELElBQUksY0FBYyxHQUFHLElBQUksQ0FBQztJQUMxQixLQUFLLE1BQU0sTUFBTSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDbEQsSUFBSSxDQUFDLENBQUMsTUFBTSxZQUFZLGNBQWMsQ0FBQyxFQUFFO1lBQ3ZDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDdkIsTUFBTTtTQUNQO0tBQ0Y7SUFDRCxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxPQUNlO0lBQ3hDLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQztJQUMzQixLQUFLLE1BQU0sTUFBTSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDbEQsSUFBSSxNQUFNLFlBQVksY0FBYyxFQUFFO1lBQ3BDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDeEIsTUFBTTtTQUNQO0tBQ0Y7SUFDRCxPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMTggR29vZ2xlIExMQ1xuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZVxuICogbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIG9yIGF0XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVC5cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKi9cblxuLyogT3JpZ2luYWwgc291cmNlOiBrZXJhcy9lbmdpbmUvdG9wb2xvZ3kucHkgKi9cblxuaW1wb3J0IHtEYXRhVHlwZSwgU2NhbGFyLCBzZXJpYWxpemF0aW9uLCBUZW5zb3IsIHRpZHksIHV0aWx9IGZyb20gJ0B0ZW5zb3JmbG93L3RmanMtY29yZSc7XG5cbmltcG9ydCB7Z2V0TmV4dFVuaXF1ZVRlbnNvcklkLCBnZXRVaWR9IGZyb20gJy4uL2JhY2tlbmQvc3RhdGUnO1xuaW1wb3J0IHtnZXRTY29wZWRUZW5zb3JOYW1lLCBnZXRVbmlxdWVUZW5zb3JOYW1lLCBuYW1lU2NvcGV9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQge0NvbnN0cmFpbnR9IGZyb20gJy4uL2NvbnN0cmFpbnRzJztcbmltcG9ydCB7QXR0cmlidXRlRXJyb3IsIE5vdEltcGxlbWVudGVkRXJyb3IsIFJ1bnRpbWVFcnJvciwgVmFsdWVFcnJvcn0gZnJvbSAnLi4vZXJyb3JzJztcbmltcG9ydCB7Z2V0SW5pdGlhbGl6ZXIsIEluaXRpYWxpemVyfSBmcm9tICcuLi9pbml0aWFsaXplcnMnO1xuaW1wb3J0IHtTaGFwZX0gZnJvbSAnLi4va2VyYXNfZm9ybWF0L2NvbW1vbic7XG5pbXBvcnQge1JlZ3VsYXJpemVyfSBmcm9tICcuLi9yZWd1bGFyaXplcnMnO1xuaW1wb3J0IHtLd2FyZ3MsIFJlZ3VsYXJpemVyRm59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCAqIGFzIGdlbmVyaWNfdXRpbHMgZnJvbSAnLi4vdXRpbHMvZ2VuZXJpY191dGlscyc7XG5pbXBvcnQgKiBhcyB0eXBlc191dGlscyBmcm9tICcuLi91dGlscy90eXBlc191dGlscyc7XG5pbXBvcnQgKiBhcyB2YXJpYWJsZV91dGlscyBmcm9tICcuLi91dGlscy92YXJpYWJsZV91dGlscyc7XG5pbXBvcnQge2JhdGNoR2V0VmFsdWUsIGJhdGNoU2V0VmFsdWUsIExheWVyVmFyaWFibGV9IGZyb20gJy4uL3ZhcmlhYmxlcyc7XG5cbi8vIFRPRE8obWljaGFlbHRlcnJ5KTogVGhpcyBpcyBhIHN0dWIgdW50aWwgaXQncyBkZWZpbmVkLlxuZXhwb3J0IHR5cGUgT3AgPSAoeDogTGF5ZXJWYXJpYWJsZSkgPT4gTGF5ZXJWYXJpYWJsZTtcblxuLyoqXG4gKiBDb25zdHJ1Y3RvciBhcmd1bWVudHMgZm9yIElucHV0U3BlYy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnB1dFNwZWNBcmdzIHtcbiAgLyoqIEV4cGVjdGVkIGRhdGF0eXBlIG9mIHRoZSBpbnB1dC4gKi9cbiAgZHR5cGU/OiBEYXRhVHlwZTtcbiAgLyoqIEV4cGVjdGVkIHNoYXBlIG9mIHRoZSBpbnB1dCAobWF5IGluY2x1ZGUgbnVsbCBmb3IgdW5jaGVja2VkIGF4ZXMpLiAqL1xuICBzaGFwZT86IFNoYXBlO1xuICAvKiogRXhwZWN0ZWQgcmFuayBvZiB0aGUgaW5wdXQuICovXG4gIG5kaW0/OiBudW1iZXI7XG4gIC8qKiBNYXhpbXVtIHJhbmsgb2YgdGhlIGlucHV0LiAqL1xuICBtYXhORGltPzogbnVtYmVyO1xuICAvKiogTWluaW11bSByYW5rIG9mIHRoZSBpbnB1dC4gKi9cbiAgbWluTkRpbT86IG51bWJlcjtcbiAgLyoqIERpY3Rpb25hcnkgbWFwcGluZyBpbnRlZ2VyIGF4ZXMgdG8gYSBzcGVjaWZpYyBkaW1lbnNpb24gdmFsdWUuICovXG4gIGF4ZXM/OiB7W2F4aXM6IG51bWJlcl06IG51bWJlcn07XG59XG5cbi8qKlxuICogU3BlY2lmaWVzIHRoZSBuZGltLCBkdHlwZSBhbmQgc2hhcGUgb2YgZXZlcnkgaW5wdXQgdG8gYSBsYXllci5cbiAqXG4gKiBFdmVyeSBsYXllciBzaG91bGQgZXhwb3NlIChpZiBhcHByb3ByaWF0ZSkgYW4gYGlucHV0U3BlY2AgYXR0cmlidXRlOlxuICogYSBsaXN0IG9mIGluc3RhbmNlcyBvZiBJbnB1dFNwZWMgKG9uZSBwZXIgaW5wdXQgdGVuc29yKS5cbiAqXG4gKiBBIG51bGwgZW50cnkgaW4gYSBzaGFwZSBpcyBjb21wYXRpYmxlIHdpdGggYW55IGRpbWVuc2lvbixcbiAqIGEgbnVsbCBzaGFwZSBpcyBjb21wYXRpYmxlIHdpdGggYW55IHNoYXBlLlxuICovXG5leHBvcnQgY2xhc3MgSW5wdXRTcGVjIHtcbiAgLyoqIEV4cGVjdGVkIGRhdGF0eXBlIG9mIHRoZSBpbnB1dC4gKi9cbiAgZHR5cGU/OiBEYXRhVHlwZTtcbiAgLyoqIEV4cGVjdGVkIHNoYXBlIG9mIHRoZSBpbnB1dCAobWF5IGluY2x1ZGUgbnVsbCBmb3IgdW5jaGVja2VkIGF4ZXMpLiAqL1xuICBzaGFwZT86IFNoYXBlO1xuICAvKiogRXhwZWN0ZWQgcmFuayBvZiB0aGUgaW5wdXQuICovXG4gIG5kaW0/OiBudW1iZXI7XG4gIC8qKiBNYXhpbXVtIHJhbmsgb2YgdGhlIGlucHV0LiAqL1xuICBtYXhORGltPzogbnVtYmVyO1xuICAvKiogTWluaW11bSByYW5rIG9mIHRoZSBpbnB1dC4gKi9cbiAgbWluTkRpbT86IG51bWJlcjtcbiAgLyoqIERpY3Rpb25hcnkgbWFwcGluZyBpbnRlZ2VyIGF4ZXMgdG8gYSBzcGVjaWZpYyBkaW1lbnNpb24gdmFsdWUuICovXG4gIGF4ZXM/OiB7W2F4aXM6IG51bWJlcl06IG51bWJlcn07XG5cbiAgY29uc3RydWN0b3IoYXJnczogSW5wdXRTcGVjQXJncykge1xuICAgIHRoaXMuZHR5cGUgPSBhcmdzLmR0eXBlO1xuICAgIHRoaXMuc2hhcGUgPSBhcmdzLnNoYXBlO1xuICAgIC8qXG4gICAgICBUT0RPKG1pY2hhZWx0ZXJyeSk6IENvdWxkIHRocm93IGVycm9yIGlmIG5kaW0gYW5kIHNoYXBlIGFyZSBib3RoIGRlZmluZWRcbiAgICAgICAgKHRoZW4gYmFja3BvcnQpLlxuICAgICovXG4gICAgaWYgKGFyZ3Muc2hhcGUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5uZGltID0gYXJncy5zaGFwZS5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmRpbSA9IGFyZ3MubmRpbTtcbiAgICB9XG4gICAgdGhpcy5tYXhORGltID0gYXJncy5tYXhORGltO1xuICAgIHRoaXMubWluTkRpbSA9IGFyZ3MubWluTkRpbTtcbiAgICB0aGlzLmF4ZXMgPSBhcmdzLmF4ZXMgfHwge307XG4gIH1cbn1cblxuLyoqXG4gKiBgdGYuU3ltYm9saWNUZW5zb3JgIGlzIGEgcGxhY2Vob2xkZXIgZm9yIGEgVGVuc29yIHdpdGhvdXQgYW55IGNvbmNyZXRlIHZhbHVlLlxuICpcbiAqIFRoZXkgYXJlIG1vc3Qgb2Z0ZW4gZW5jb3VudGVyZWQgd2hlbiBidWlsZGluZyBhIGdyYXBoIG9mIGBMYXllcmBzIGZvciBhXG4gKiBgdGYuTGF5ZXJzTW9kZWxgIGFuZCB0aGUgaW5wdXQgZGF0YSdzIHNoYXBlLCBidXQgbm90IHZhbHVlcyBhcmUga25vd24uXG4gKlxuICogQGRvYyB7aGVhZGluZzogJ01vZGVscycsICdzdWJoZWFkaW5nJzogJ0NsYXNzZXMnfVxuICovXG5leHBvcnQgY2xhc3MgU3ltYm9saWNUZW5zb3Ige1xuICAvKiBBIHVuaXF1ZSBJRCBmb3IgdGhlIHRlbnNvciB0byBiZSBhYmxlIHRvIGRpZmZlcmVudGlhdGUgdGVuc29ycy4gKi9cbiAgcmVhZG9ubHkgaWQ6IG51bWJlcjtcbiAgLy8gVGhlIGZ1bGx5IHNjb3BlZCBuYW1lIG9mIHRoaXMgVmFyaWFibGUsIGluY2x1ZGluZyBhIHVuaXF1ZSBzdWZmaXggaWYgbmVlZGVkXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLy8gVGhlIG9yaWdpbmFsbHkgcmVxdWVzdGVkIGZ1bGx5IHNjb3BlZCBuYW1lIG9mIHRoaXMgVmFyaWFibGUsIG5vdCBpbmNsdWRpbmdcbiAgLy8gYW55IHVuaXF1ZSBzdWZmaXguICBUaGlzIG1heSBiZSBuZWVkZWQgd2hlbiByZXN0b3Jpbmcgd2VpZ2h0cyBiZWNhdXNlIHRoaXNcbiAgLy8gb3JpZ2luYWwgbmFtZSBpcyB1c2VkIGFzIGEga2V5LlxuICByZWFkb25seSBvcmlnaW5hbE5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBSYW5rL2RpbWVuc2lvbmFsaXR5IG9mIHRoZSB0ZW5zb3IuXG4gICAqL1xuICByZWFkb25seSByYW5rOiBudW1iZXI7XG4gIC8qKlxuICAgKiBSZXBsYWNlbWVudCBmb3IgX2tlcmFzX2hpc3RvcnkuXG4gICAqL1xuICBub2RlSW5kZXg6IG51bWJlcjtcbiAgLyoqXG4gICAqIFJlcGxhY2VtZW50IGZvciBfa2VyYXNfaGlzdG9yeS5cbiAgICovXG4gIHRlbnNvckluZGV4OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBkdHlwZVxuICAgKiBAcGFyYW0gc2hhcGVcbiAgICogQHBhcmFtIHNvdXJjZUxheWVyIFRoZSBMYXllciB0aGF0IHByb2R1Y2VkIHRoaXMgc3ltYm9saWMgdGVuc29yLlxuICAgKiBAcGFyYW0gaW5wdXRzIFRoZSBpbnB1dHMgcGFzc2VkIHRvIHNvdXJjZUxheWVyJ3MgX19jYWxsX18oKSBtZXRob2QuXG4gICAqIEBwYXJhbSBub2RlSW5kZXhcbiAgICogQHBhcmFtIHRlbnNvckluZGV4XG4gICAqIEBwYXJhbSBjYWxsQXJncyBUaGUga2V5d29yZCBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBfX2NhbGxfXygpIG1ldGhvZC5cbiAgICogQHBhcmFtIG5hbWVcbiAgICogQHBhcmFtIG91dHB1dFRlbnNvckluZGV4IFRoZSBpbmRleCBvZiB0aGlzIHRlbnNvciBpbiB0aGUgbGlzdCBvZiBvdXRwdXRzXG4gICAqICAgcmV0dXJuZWQgYnkgYXBwbHkoKS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcmVhZG9ubHkgZHR5cGU6IERhdGFUeXBlLCByZWFkb25seSBzaGFwZTogU2hhcGUsXG4gICAgICBwdWJsaWMgc291cmNlTGF5ZXI6IExheWVyLCByZWFkb25seSBpbnB1dHM6IFN5bWJvbGljVGVuc29yW10sXG4gICAgICByZWFkb25seSBjYWxsQXJnczogS3dhcmdzLCBuYW1lPzogc3RyaW5nLFxuICAgICAgcmVhZG9ubHkgb3V0cHV0VGVuc29ySW5kZXg/OiBudW1iZXIpIHtcbiAgICB0aGlzLmlkID0gZ2V0TmV4dFVuaXF1ZVRlbnNvcklkKCk7XG4gICAgaWYgKG5hbWUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5vcmlnaW5hbE5hbWUgPSBnZXRTY29wZWRUZW5zb3JOYW1lKG5hbWUpO1xuICAgICAgdGhpcy5uYW1lID0gZ2V0VW5pcXVlVGVuc29yTmFtZSh0aGlzLm9yaWdpbmFsTmFtZSk7XG4gICAgfVxuICAgIHRoaXMucmFuayA9IHNoYXBlLmxlbmd0aDtcbiAgfVxufVxuXG4vKipcbiAqIENvbnN0cnVjdG9yIGFyZ3VtZW50cyBmb3IgTm9kZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb2RlQXJncyB7XG4gIC8qKlxuICAgKiBUaGUgbGF5ZXIgdGhhdCB0YWtlcyBgaW5wdXRUZW5zb3JzYCBhbmQgdHVybnMgdGhlbSBpbnRvIGBvdXRwdXRUZW5zb3JzYC5cbiAgICogKHRoZSBub2RlIGdldHMgY3JlYXRlZCB3aGVuIHRoZSBgY2FsbGAgbWV0aG9kIG9mIHRoZSBsYXllciBpcyBjYWxsZWQpLlxuICAgKi9cbiAgb3V0Ym91bmRMYXllcjogTGF5ZXI7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgbGF5ZXJzLCB0aGUgc2FtZSBsZW5ndGggYXMgYGlucHV0VGVuc29yc2AsIHRoZSBsYXllcnMgZnJvbSB3aGVyZVxuICAgKiBgaW5wdXRUZW5zb3JzYCBvcmlnaW5hdGUuXG4gICAqL1xuICBpbmJvdW5kTGF5ZXJzOiBMYXllcltdO1xuICAvKipcbiAgICogQSBsaXN0IG9mIGludGVnZXJzLCB0aGUgc2FtZSBsZW5ndGggYXMgYGluYm91bmRMYXllcnNgLiBgbm9kZUluZGljZXNbaV1gIGlzXG4gICAqIHRoZSBvcmlnaW4gbm9kZSBvZiBgaW5wdXRUZW5zb3JzW2ldYCAobmVjZXNzYXJ5IHNpbmNlIGVhY2ggaW5ib3VuZCBsYXllclxuICAgKiBtaWdodCBoYXZlIHNldmVyYWwgbm9kZXMsIGUuZy4gaWYgdGhlIGxheWVyIGlzIGJlaW5nIHNoYXJlZCB3aXRoIGFcbiAgICogZGlmZmVyZW50IGRhdGEgc3RyZWFtKS5cbiAgICovXG4gIG5vZGVJbmRpY2VzOiBudW1iZXJbXTtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBpbnRlZ2VycywgdGhlIHNhbWUgbGVuZ3RoIGFzIGBpbmJvdW5kTGF5ZXJzYC4gYHRlbnNvckluZGljZXNbaV1gXG4gICAqIGlzIHRoZSBpbmRleCBvZiBgaW5wdXRUZW5zb3JzW2ldYCB3aXRoaW4gdGhlIG91dHB1dCBvZiB0aGUgaW5ib3VuZCBsYXllclxuICAgKiAobmVjZXNzYXJ5IHNpbmNlIGVhY2ggaW5ib3VuZCBsYXllciBtaWdodCBoYXZlIG11bHRpcGxlIHRlbnNvciBvdXRwdXRzLFxuICAgKiB3aXRoIGVhY2ggb25lIGJlaW5nIGluZGVwZW5kZW50bHkgbWFuaXB1bGFibGUpLlxuICAgKi9cbiAgdGVuc29ySW5kaWNlczogbnVtYmVyW107XG4gIC8qKiBMaXN0IG9mIGlucHV0IHRlbnNvcnMuICovXG4gIGlucHV0VGVuc29yczogU3ltYm9saWNUZW5zb3JbXTtcbiAgLyoqIExpc3Qgb2Ygb3V0cHV0IHRlbnNvcnMuICovXG4gIG91dHB1dFRlbnNvcnM6IFN5bWJvbGljVGVuc29yW107XG4gIC8qKiBMaXN0IG9mIGlucHV0IG1hc2tzIChhIG1hc2sgY2FuIGJlIGEgdGVuc29yLCBvciBudWxsKS4gKi9cbiAgaW5wdXRNYXNrczogVGVuc29yW107XG4gIC8qKiBMaXN0IG9mIG91dHB1dCBtYXNrcyAoYSBtYXNrIGNhbiBiZSBhIHRlbnNvciwgb3IgbnVsbCkuICovXG4gIG91dHB1dE1hc2tzOiBUZW5zb3JbXTtcbiAgLyoqIExpc3Qgb2YgaW5wdXQgc2hhcGUgdHVwbGVzLiAqL1xuICBpbnB1dFNoYXBlczogU2hhcGV8U2hhcGVbXTtcbiAgLyoqIExpc3Qgb2Ygb3V0cHV0IHNoYXBlIHR1cGxlcy4gKi9cbiAgb3V0cHV0U2hhcGVzOiBTaGFwZXxTaGFwZVtdO1xufVxuXG4vKipcbiAqIFRoZSB0eXBlIG9mIHRoZSByZXR1cm4gdmFsdWUgb2YgTGF5ZXIuZGlzcG9zZSgpIGFuZCBDb250YWluZXIuZGlzcG9zZSgpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERpc3Bvc2VSZXN1bHQge1xuICAvKipcbiAgICogUmVmZXJlbmNlIGNvdW50IGFmdGVyIHRoZSBkaXNwb3NlIGNhbGwuXG4gICAqL1xuICByZWZDb3VudEFmdGVyRGlzcG9zZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgdmFyaWFibGVzIGRpc3Bvc2UgaW4gdGhpcyBkaXNwb3NlIGNhbGwuXG4gICAqL1xuICBudW1EaXNwb3NlZFZhcmlhYmxlczogbnVtYmVyO1xufVxuXG5sZXQgX25leHROb2RlSUQgPSAwO1xuXG4vKipcbiAqIEEgYE5vZGVgIGRlc2NyaWJlcyB0aGUgY29ubmVjdGl2aXR5IGJldHdlZW4gdHdvIGxheWVycy5cbiAqXG4gKiBFYWNoIHRpbWUgYSBsYXllciBpcyBjb25uZWN0ZWQgdG8gc29tZSBuZXcgaW5wdXQsXG4gKiBhIG5vZGUgaXMgYWRkZWQgdG8gYGxheWVyLmluYm91bmROb2Rlc2AuXG4gKlxuICogRWFjaCB0aW1lIHRoZSBvdXRwdXQgb2YgYSBsYXllciBpcyB1c2VkIGJ5IGFub3RoZXIgbGF5ZXIsXG4gKiBhIG5vZGUgaXMgYWRkZWQgdG8gYGxheWVyLm91dGJvdW5kTm9kZXNgLlxuICpcbiAqIGBub2RlSW5kaWNlc2AgYW5kIGB0ZW5zb3JJbmRpY2VzYCBhcmUgYmFzaWNhbGx5IGZpbmUtZ3JhaW5lZCBjb29yZGluYXRlc1xuICogZGVzY3JpYmluZyB0aGUgb3JpZ2luIG9mIHRoZSBgaW5wdXRUZW5zb3JzYCwgdmVyaWZ5aW5nIHRoZSBmb2xsb3dpbmc6XG4gKlxuICogYGlucHV0VGVuc29yc1tpXSA9PVxuICogaW5ib3VuZExheWVyc1tpXS5pbmJvdW5kTm9kZXNbbm9kZUluZGljZXNbaV1dLm91dHB1dFRlbnNvcnNbXG4gKiAgIHRlbnNvckluZGljZXNbaV1dYFxuICpcbiAqIEEgbm9kZSBmcm9tIGxheWVyIEEgdG8gbGF5ZXIgQiBpcyBhZGRlZCB0bzpcbiAqICAgICBBLm91dGJvdW5kTm9kZXNcbiAqICAgICBCLmluYm91bmROb2Rlc1xuICovXG5leHBvcnQgY2xhc3MgTm9kZSB7XG4gIC8qKlxuICAgKiBUaGUgbGF5ZXIgdGhhdCB0YWtlcyBgaW5wdXRUZW5zb3JzYCBhbmQgdHVybnMgdGhlbSBpbnRvIGBvdXRwdXRUZW5zb3JzYFxuICAgKiAodGhlIG5vZGUgZ2V0cyBjcmVhdGVkIHdoZW4gdGhlIGBjYWxsYCBtZXRob2Qgb2YgdGhlIGxheWVyIGlzIGNhbGxlZCkuXG4gICAqL1xuICBvdXRib3VuZExheWVyOiBMYXllcjtcbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBsYXllcnMsIHRoZSBzYW1lIGxlbmd0aCBhcyBgaW5wdXRUZW5zb3JzYCwgdGhlIGxheWVycyBmcm9tIHdoZXJlXG4gICAqIGBpbnB1dFRlbnNvcnNgIG9yaWdpbmF0ZS5cbiAgICovXG4gIGluYm91bmRMYXllcnM6IExheWVyW107XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgaW50ZWdlcnMsIHRoZSBzYW1lIGxlbmd0aCBhcyBgaW5ib3VuZExheWVyc2AuIGBub2RlSW5kaWNlc1tpXWAgaXNcbiAgICogdGhlIG9yaWdpbiBub2RlIG9mIGBpbnB1dFRlbnNvcnNbaV1gIChuZWNlc3Nhcnkgc2luY2UgZWFjaCBpbmJvdW5kIGxheWVyXG4gICAqIG1pZ2h0IGhhdmUgc2V2ZXJhbCBub2RlcywgZS5nLiBpZiB0aGUgbGF5ZXIgaXMgYmVpbmcgc2hhcmVkIHdpdGggYVxuICAgKiBkaWZmZXJlbnQgZGF0YSBzdHJlYW0pLlxuICAgKi9cbiAgbm9kZUluZGljZXM6IG51bWJlcltdO1xuICAvKipcbiAgICogQSBsaXN0IG9mIGludGVnZXJzLCB0aGUgc2FtZSBsZW5ndGggYXMgYGluYm91bmRMYXllcnNgLiBgdGVuc29ySW5kaWNlc1tpXWBcbiAgICogaXMgdGhlIGluZGV4IG9mIGBpbnB1dFRlbnNvcnNbaV1gIHdpdGhpbiB0aGUgb3V0cHV0IG9mIHRoZSBpbmJvdW5kIGxheWVyXG4gICAqIChuZWNlc3Nhcnkgc2luY2UgZWFjaCBpbmJvdW5kIGxheWVyIG1pZ2h0IGhhdmUgbXVsdGlwbGUgdGVuc29yIG91dHB1dHMsXG4gICAqIHdpdGggZWFjaCBvbmUgYmVpbmcgaW5kZXBlbmRlbnRseSBtYW5pcHVsYWJsZSkuXG4gICAqL1xuICB0ZW5zb3JJbmRpY2VzOiBudW1iZXJbXTtcbiAgLyoqIExpc3Qgb2YgaW5wdXQgdGVuc29ycy4gKi9cbiAgaW5wdXRUZW5zb3JzOiBTeW1ib2xpY1RlbnNvcltdO1xuICAvKiogTGlzdCBvZiBvdXRwdXQgdGVuc29ycy4gKi9cbiAgb3V0cHV0VGVuc29yczogU3ltYm9saWNUZW5zb3JbXTtcbiAgLyoqIExpc3Qgb2YgaW5wdXQgbWFza3MgKGEgbWFzayBjYW4gYmUgYSB0ZW5zb3IsIG9yIG51bGwpLiAqL1xuICBpbnB1dE1hc2tzOiBUZW5zb3JbXTtcbiAgLyoqIExpc3Qgb2Ygb3V0cHV0IG1hc2tzIChhIG1hc2sgY2FuIGJlIGEgdGVuc29yLCBvciBudWxsKS4gKi9cbiAgb3V0cHV0TWFza3M6IFRlbnNvcltdO1xuICAvKiogTGlzdCBvZiBpbnB1dCBzaGFwZSB0dXBsZXMuICovXG4gIGlucHV0U2hhcGVzOiBTaGFwZXxTaGFwZVtdO1xuICAvKiogTGlzdCBvZiBvdXRwdXQgc2hhcGUgdHVwbGVzLiAqL1xuICBvdXRwdXRTaGFwZXM6IFNoYXBlfFNoYXBlW107XG5cbiAgcmVhZG9ubHkgaWQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIGFyZ3M6IE5vZGVBcmdzLFxuICAgICAgLy8gVE9ETyhtaWNoYWVsdGVycnkpOiBEZWZpbmUgYWN0dWFsIHR5cGUgZm9yIHRoaXMuXG4gICAgICBwdWJsaWMgY2FsbEFyZ3M/OiBLd2FyZ3MpIHtcbiAgICB0aGlzLmlkID0gX25leHROb2RlSUQrKztcbiAgICAvKlxuICAgICAgTGF5ZXIgaW5zdGFuY2UgKE5PVCBhIGxpc3QpLlxuICAgICAgdGhpcyBpcyB0aGUgbGF5ZXIgdGhhdCB0YWtlcyBhIGxpc3Qgb2YgaW5wdXQgdGVuc29yc1xuICAgICAgYW5kIHR1cm5zIHRoZW0gaW50byBhIGxpc3Qgb2Ygb3V0cHV0IHRlbnNvcnMuXG4gICAgICB0aGUgY3VycmVudCBub2RlIHdpbGwgYmUgYWRkZWQgdG9cbiAgICAgIHRoZSBpbmJvdW5kTm9kZXMgb2Ygb3V0Ym91bmRMYXllci5cbiAgICAqL1xuICAgIHRoaXMub3V0Ym91bmRMYXllciA9IGFyZ3Mub3V0Ym91bmRMYXllcjtcblxuICAgIC8qXG4gICAgICAgIFRoZSBmb2xsb3dpbmcgMyBwcm9wZXJ0aWVzIGRlc2NyaWJlIHdoZXJlXG4gICAgICAgIHRoZSBpbnB1dCB0ZW5zb3JzIGNvbWUgZnJvbTogd2hpY2ggbGF5ZXJzLFxuICAgICAgICBhbmQgZm9yIGVhY2ggbGF5ZXIsIHdoaWNoIG5vZGUgYW5kIHdoaWNoXG4gICAgICAgIHRlbnNvciBvdXRwdXQgb2YgZWFjaCBub2RlLlxuICAgICovXG5cbiAgICAvLyBMaXN0IG9mIGxheWVyIGluc3RhbmNlcy5cbiAgICB0aGlzLmluYm91bmRMYXllcnMgPSBhcmdzLmluYm91bmRMYXllcnM7XG4gICAgLy8gTGlzdCBvZiBpbnRlZ2VycywgMToxIG1hcHBpbmcgd2l0aCBpbmJvdW5kTGF5ZXJzLlxuICAgIHRoaXMubm9kZUluZGljZXMgPSBhcmdzLm5vZGVJbmRpY2VzO1xuICAgIC8vIExpc3Qgb2YgaW50ZWdlcnMsIDE6MSBtYXBwaW5nIHdpdGggaW5ib3VuZExheWVycy5cbiAgICB0aGlzLnRlbnNvckluZGljZXMgPSBhcmdzLnRlbnNvckluZGljZXM7XG5cbiAgICAvKlxuICAgICAgICBGb2xsb3dpbmcgMiBwcm9wZXJ0aWVzOlxuICAgICAgICB0ZW5zb3IgaW5wdXRzIGFuZCBvdXRwdXRzIG9mIG91dGJvdW5kTGF5ZXIuXG4gICAgKi9cblxuICAgIC8vIExpc3Qgb2YgdGVuc29ycy4gMToxIG1hcHBpbmcgd2l0aCBpbmJvdW5kTGF5ZXJzLlxuICAgIHRoaXMuaW5wdXRUZW5zb3JzID0gYXJncy5pbnB1dFRlbnNvcnM7XG4gICAgLy8gTGlzdCBvZiB0ZW5zb3JzLCBjcmVhdGVkIGJ5IG91dGJvdW5kTGF5ZXIuY2FsbCgpLlxuICAgIHRoaXMub3V0cHV0VGVuc29ycyA9IGFyZ3Mub3V0cHV0VGVuc29ycztcblxuICAgIC8qXG4gICAgICAgIEZvbGxvd2luZyAyIHByb3BlcnRpZXM6IGlucHV0IGFuZCBvdXRwdXQgbWFza3MuXG4gICAgICAgIExpc3Qgb2YgdGVuc29ycywgMToxIG1hcHBpbmcgd2l0aCBpbnB1dFRlbnNvci5cbiAgICAqL1xuICAgIHRoaXMuaW5wdXRNYXNrcyA9IGFyZ3MuaW5wdXRNYXNrcztcbiAgICAvLyBMaXN0IG9mIHRlbnNvcnMsIGNyZWF0ZWQgYnkgb3V0Ym91bmRMYXllci5jb21wdXRlTWFzaygpLlxuICAgIHRoaXMub3V0cHV0TWFza3MgPSBhcmdzLm91dHB1dE1hc2tzO1xuXG4gICAgLy8gRm9sbG93aW5nIDIgcHJvcGVydGllczogaW5wdXQgYW5kIG91dHB1dCBzaGFwZXMuXG5cbiAgICAvLyBMaXN0IG9mIHNoYXBlIHR1cGxlcywgc2hhcGVzIG9mIGlucHV0VGVuc29ycy5cbiAgICB0aGlzLmlucHV0U2hhcGVzID0gYXJncy5pbnB1dFNoYXBlcztcbiAgICAvLyBMaXN0IG9mIHNoYXBlIHR1cGxlcywgc2hhcGVzIG9mIG91dHB1dFRlbnNvcnMuXG4gICAgdGhpcy5vdXRwdXRTaGFwZXMgPSBhcmdzLm91dHB1dFNoYXBlcztcblxuICAgIC8vIEFkZCBub2RlcyB0byBhbGwgbGF5ZXJzIGludm9sdmVkLlxuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgYXJncy5pbmJvdW5kTGF5ZXJzKSB7XG4gICAgICBpZiAobGF5ZXIgIT0gbnVsbCkge1xuICAgICAgICBsYXllci5vdXRib3VuZE5vZGVzLnB1c2godGhpcyk7XG4gICAgICB9XG4gICAgfVxuICAgIGFyZ3Mub3V0Ym91bmRMYXllci5pbmJvdW5kTm9kZXMucHVzaCh0aGlzKTtcbiAgfVxuXG4gIGdldENvbmZpZygpOiBzZXJpYWxpemF0aW9uLkNvbmZpZ0RpY3Qge1xuICAgIGNvbnN0IGluYm91bmROYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMuaW5ib3VuZExheWVycykge1xuICAgICAgaWYgKGxheWVyICE9IG51bGwpIHtcbiAgICAgICAgaW5ib3VuZE5hbWVzLnB1c2gobGF5ZXIubmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbmJvdW5kTmFtZXMucHVzaChudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIG91dGJvdW5kTGF5ZXI6IHRoaXMub3V0Ym91bmRMYXllciA/IHRoaXMub3V0Ym91bmRMYXllci5uYW1lIDogbnVsbCxcbiAgICAgIGluYm91bmRMYXllcnM6IGluYm91bmROYW1lcyxcbiAgICAgIG5vZGVJbmRpY2VzOiB0aGlzLm5vZGVJbmRpY2VzLFxuICAgICAgdGVuc29ySW5kaWNlczogdGhpcy50ZW5zb3JJbmRpY2VzXG4gICAgfTtcbiAgfVxufVxuXG4vKiogQ29uc3RydWN0b3IgYXJndW1lbnRzIGZvciBMYXllci4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBMYXllckFyZ3Mge1xuICAvKipcbiAgICogSWYgZGVmaW5lZCwgd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZSBhbiBpbnB1dCBsYXllciB0byBpbnNlcnQgYmVmb3JlIHRoaXNcbiAgICogbGF5ZXIuIElmIGJvdGggYGlucHV0U2hhcGVgIGFuZCBgYmF0Y2hJbnB1dFNoYXBlYCBhcmUgZGVmaW5lZCxcbiAgICogYGJhdGNoSW5wdXRTaGFwZWAgd2lsbCBiZSB1c2VkLiBUaGlzIGFyZ3VtZW50IGlzIG9ubHkgYXBwbGljYWJsZSB0byBpbnB1dFxuICAgKiBsYXllcnMgKHRoZSBmaXJzdCBsYXllciBvZiBhIG1vZGVsKS5cbiAgICovXG4gIGlucHV0U2hhcGU/OiBTaGFwZTtcbiAgLyoqXG4gICAqIElmIGRlZmluZWQsIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUgYW4gaW5wdXQgbGF5ZXIgdG8gaW5zZXJ0IGJlZm9yZSB0aGlzXG4gICAqIGxheWVyLiBJZiBib3RoIGBpbnB1dFNoYXBlYCBhbmQgYGJhdGNoSW5wdXRTaGFwZWAgYXJlIGRlZmluZWQsXG4gICAqIGBiYXRjaElucHV0U2hhcGVgIHdpbGwgYmUgdXNlZC4gVGhpcyBhcmd1bWVudCBpcyBvbmx5IGFwcGxpY2FibGUgdG8gaW5wdXRcbiAgICogbGF5ZXJzICh0aGUgZmlyc3QgbGF5ZXIgb2YgYSBtb2RlbCkuXG4gICAqL1xuICBiYXRjaElucHV0U2hhcGU/OiBTaGFwZTtcbiAgLyoqXG4gICAqIElmIGBpbnB1dFNoYXBlYCBpcyBzcGVjaWZpZWQgYW5kIGBiYXRjaElucHV0U2hhcGVgIGlzICpub3QqIHNwZWNpZmllZCxcbiAgICogYGJhdGNoU2l6ZWAgaXMgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIGBiYXRjaElucHV0U2hhcGVgOiBgW2JhdGNoU2l6ZSxcbiAgICogLi4uaW5wdXRTaGFwZV1gXG4gICAqL1xuICBiYXRjaFNpemU/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgZGF0YS10eXBlIGZvciB0aGlzIGxheWVyLiBEZWZhdWx0cyB0byAnZmxvYXQzMicuXG4gICAqIFRoaXMgYXJndW1lbnQgaXMgb25seSBhcHBsaWNhYmxlIHRvIGlucHV0IGxheWVycyAodGhlIGZpcnN0IGxheWVyIG9mIGFcbiAgICogbW9kZWwpLlxuICAgKi9cbiAgZHR5cGU/OiBEYXRhVHlwZTtcbiAgLyoqIE5hbWUgZm9yIHRoaXMgbGF5ZXIuICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB3ZWlnaHRzIG9mIHRoaXMgbGF5ZXIgYXJlIHVwZGF0YWJsZSBieSBgZml0YC5cbiAgICogRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICovXG4gIHRyYWluYWJsZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbml0aWFsIHdlaWdodCB2YWx1ZXMgb2YgdGhlIGxheWVyLlxuICAgKi9cbiAgd2VpZ2h0cz86IFRlbnNvcltdO1xuICAvKiogTGVnYWN5IHN1cHBvcnQuIERvIG5vdCB1c2UgZm9yIG5ldyBjb2RlLiAqL1xuICBpbnB1dERUeXBlPzogRGF0YVR5cGU7XG59XG5cbi8vIElmIG5lY2Vzc2FyeSwgYWRkIGBvdXRwdXRgIGFyZ3VtZW50cyB0byB0aGUgQ2FsbEhvb2sgZnVuY3Rpb24uXG4vLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VkIGZvciB0ZXN0aW5nIG9ubHksIGJ1dCBtYXkgYmUgdXNlZCBmb3IgZGVidWdnZXItcmVsYXRlZFxuLy8gcHVycG9zZXMgaW4gdGhlIGZ1dHVyZS5cbmV4cG9ydCB0eXBlIENhbGxIb29rID0gKGlucHV0czogVGVuc29yfFRlbnNvcltdLCBrd2FyZ3M6IEt3YXJncykgPT4gdm9pZDtcblxubGV0IF9uZXh0TGF5ZXJJRCA9IDA7XG5cbi8qKlxuICogQSBsYXllciBpcyBhIGdyb3VwaW5nIG9mIG9wZXJhdGlvbnMgYW5kIHdlaWdodHMgdGhhdCBjYW4gYmUgY29tcG9zZWQgdG9cbiAqIGNyZWF0ZSBhIGB0Zi5MYXllcnNNb2RlbGAuXG4gKlxuICogTGF5ZXJzIGFyZSBjb25zdHJ1Y3RlZCBieSB1c2luZyB0aGUgZnVuY3Rpb25zIHVuZGVyIHRoZVxuICogW3RmLmxheWVyc10oI0xheWVycy1CYXNpYykgbmFtZXNwYWNlLlxuICpcbiAqIEBkb2Mge2hlYWRpbmc6ICdMYXllcnMnLCBzdWJoZWFkaW5nOiAnQ2xhc3NlcycsIG5hbWVzcGFjZTogJ2xheWVycyd9XG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMYXllciBleHRlbmRzIHNlcmlhbGl6YXRpb24uU2VyaWFsaXphYmxlIHtcbiAgLyoqIE5hbWUgZm9yIHRoaXMgbGF5ZXIuIE11c3QgYmUgdW5pcXVlIHdpdGhpbiBhIG1vZGVsLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMaXN0IG9mIElucHV0U3BlYyBjbGFzcyBpbnN0YW5jZXMuXG4gICAqXG4gICAqIEVhY2ggZW50cnkgZGVzY3JpYmVzIG9uZSByZXF1aXJlZCBpbnB1dDpcbiAgICogLSBuZGltXG4gICAqIC0gZHR5cGVcbiAgICogQSBsYXllciB3aXRoIGBuYCBpbnB1dCB0ZW5zb3JzIG11c3QgaGF2ZSBhbiBgaW5wdXRTcGVjYCBvZiBsZW5ndGggYG5gLlxuICAgKi9cbiAgaW5wdXRTcGVjOiBJbnB1dFNwZWNbXTtcbiAgc3VwcG9ydHNNYXNraW5nOiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgbGF5ZXIgd2VpZ2h0cyB3aWxsIGJlIHVwZGF0ZWQgZHVyaW5nIHRyYWluaW5nLiAqL1xuICBwcm90ZWN0ZWQgdHJhaW5hYmxlXzogYm9vbGVhbjtcbiAgYmF0Y2hJbnB1dFNoYXBlOiBTaGFwZTtcbiAgZHR5cGU6IERhdGFUeXBlO1xuICBpbml0aWFsV2VpZ2h0czogVGVuc29yW107XG5cbiAgaW5ib3VuZE5vZGVzOiBOb2RlW107XG4gIG91dGJvdW5kTm9kZXM6IE5vZGVbXTtcblxuICBhY3Rpdml0eVJlZ3VsYXJpemVyOiBSZWd1bGFyaXplcjtcblxuICBwcm90ZWN0ZWQgX3RyYWluYWJsZVdlaWdodHM6IExheWVyVmFyaWFibGVbXTtcbiAgcHJpdmF0ZSBfbm9uVHJhaW5hYmxlV2VpZ2h0czogTGF5ZXJWYXJpYWJsZVtdO1xuICBwcml2YXRlIF9sb3NzZXM6IFJlZ3VsYXJpemVyRm5bXTtcbiAgLy8gVE9ETyhjYWlzKTogX3VwZGF0ZXMgaXMgY3VycmVudGx5IHVudXNlZC5cbiAgcHJpdmF0ZSBfdXBkYXRlczogVGVuc29yW107XG4gIHByaXZhdGUgX2J1aWx0OiBib29sZWFuO1xuICBwcml2YXRlIF9jYWxsSG9vazogQ2FsbEhvb2sgPSBudWxsO1xuXG4gIHByaXZhdGUgX2FkZGVkV2VpZ2h0TmFtZXM6IHN0cmluZ1tdID0gW107XG5cbiAgcmVhZG9ubHkgaWQ6IG51bWJlcjtcblxuICAvLyBQb3J0aW5nIE5vdGVzOiBQeUtlcmFzIGRvZXMgbm90IGhhdmUgdGhpcyBwcm9wZXJ0eSBpbiB0aGlzIGJhc2UgTGF5ZXJcbiAgLy8gICBjbGFzcy4gSW5zdGVhZCBsZXRzIExheWVyIHN1YmNsYXNzIHNldCBpdCBkeW5hbWljYWxseSBhbmQgY2hlY2tzIHRoZVxuICAvLyAgIHZhbHVlIHdpdGggYGhhc2F0dHJgLiBJbiB0ZmpzLWxheWVycywgd2UgbGV0IHRoaXMgYmUgYSBtZW1iZXIgb2YgdGhpc1xuICAvLyAgIGJhc2UgY2xhc3MuXG4gIHByb3RlY3RlZCBfc3RhdGVmdWwgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgX3JlZkNvdW50OiBudW1iZXJ8bnVsbDtcblxuICAvLyBBIGZsYWcgZm9yIHdoZXRoZXIgZmFzdCAoaS5lLiwgYWxsLXplcm8pIHdlaWdodCBpbml0aWFsaXphdGlvbiBpcyB0b1xuICAvLyBiZSB1c2VkIGR1cmluZyBgYnVpbGQoKWAgY2FsbC4gVGhpcyBzcGVlZHMgdXAgd2VpZ2h0IGluaXRpYWxpemF0aW9uXG4gIC8vIGJ5IHNhdmluZyB1bm5lY2Vzc2FyeSBjYWxscyB0byBleHBlbnNpdmUgaW5pdGlhbGl6ZXJzIGluIGNhc2VzIHdoZXJlXG4gIC8vIHRoZSBpbml0aWFsaXplZCB2YWx1ZXMgd2lsbCBiZSBvdmVyd3JpdHRlbiBieSBsb2FkZWQgd2VpZ2h0IHZhbHVlc1xuICAvLyBkdXJpbmcgbW9kZWwgbG9hZGluZy5cbiAgcHJpdmF0ZSBmYXN0V2VpZ2h0SW5pdER1cmluZ0J1aWxkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKGFyZ3M6IExheWVyQXJncyA9IHt9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmlkID0gX25leHRMYXllcklEKys7XG5cbiAgICB0aGlzLmFjdGl2aXR5UmVndWxhcml6ZXIgPSBudWxsO1xuXG4gICAgdGhpcy5pbnB1dFNwZWMgPSBudWxsO1xuICAgIHRoaXMuc3VwcG9ydHNNYXNraW5nID0gZmFsc2U7XG5cbiAgICAvLyBUaGVzZSBwcm9wZXJ0aWVzIHdpbGwgYmUgc2V0IHVwb24gY2FsbCBvZiB0aGlzLmJ1aWxkKClcbiAgICB0aGlzLl90cmFpbmFibGVXZWlnaHRzID0gW107XG4gICAgdGhpcy5fbm9uVHJhaW5hYmxlV2VpZ2h0cyA9IFtdO1xuICAgIHRoaXMuX2xvc3NlcyA9IFtdO1xuICAgIHRoaXMuX3VwZGF0ZXMgPSBbXTtcbiAgICB0aGlzLl9idWlsdCA9IGZhbHNlO1xuXG4gICAgLypcbiAgICAgIFRoZXNlIGxpc3RzIHdpbGwgYmUgZmlsbGVkIHZpYSBzdWNjZXNzaXZlIGNhbGxzXG4gICAgICB0byB0aGlzLmFkZEluYm91bmROb2RlKCkuXG4gICAgICovXG4gICAgdGhpcy5pbmJvdW5kTm9kZXMgPSBbXTtcbiAgICB0aGlzLm91dGJvdW5kTm9kZXMgPSBbXTtcblxuICAgIGxldCBuYW1lID0gYXJncy5uYW1lO1xuICAgIGlmICghbmFtZSkge1xuICAgICAgY29uc3QgcHJlZml4ID0gdGhpcy5nZXRDbGFzc05hbWUoKTtcbiAgICAgIG5hbWUgPSBnZW5lcmljX3V0aWxzLnRvU25ha2VDYXNlKHByZWZpeCkgKyAnXycgKyBnZXRVaWQocHJlZml4KTtcbiAgICB9XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcblxuICAgIHRoaXMudHJhaW5hYmxlXyA9IGFyZ3MudHJhaW5hYmxlID09IG51bGwgPyB0cnVlIDogYXJncy50cmFpbmFibGU7XG5cbiAgICBpZiAoYXJncy5pbnB1dFNoYXBlICE9IG51bGwgfHwgYXJncy5iYXRjaElucHV0U2hhcGUgIT0gbnVsbCkge1xuICAgICAgLypcbiAgICAgICAgSW4gdGhpcyBjYXNlIHdlIHdpbGwgbGF0ZXIgY3JlYXRlIGFuIGlucHV0IGxheWVyXG4gICAgICAgIHRvIGluc2VydCBiZWZvcmUgdGhlIGN1cnJlbnQgbGF5ZXJcbiAgICAgICAqL1xuICAgICAgbGV0IGJhdGNoSW5wdXRTaGFwZTogU2hhcGU7XG4gICAgICBpZiAoYXJncy5iYXRjaElucHV0U2hhcGUgIT0gbnVsbCkge1xuICAgICAgICBiYXRjaElucHV0U2hhcGUgPSBhcmdzLmJhdGNoSW5wdXRTaGFwZTtcbiAgICAgIH0gZWxzZSBpZiAoYXJncy5pbnB1dFNoYXBlICE9IG51bGwpIHtcbiAgICAgICAgbGV0IGJhdGNoU2l6ZTogbnVtYmVyID0gbnVsbDtcbiAgICAgICAgaWYgKGFyZ3MuYmF0Y2hTaXplICE9IG51bGwpIHtcbiAgICAgICAgICBiYXRjaFNpemUgPSBhcmdzLmJhdGNoU2l6ZTtcbiAgICAgICAgfVxuICAgICAgICBiYXRjaElucHV0U2hhcGUgPSBbYmF0Y2hTaXplXS5jb25jYXQoYXJncy5pbnB1dFNoYXBlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYmF0Y2hJbnB1dFNoYXBlID0gYmF0Y2hJbnB1dFNoYXBlO1xuXG4gICAgICAvLyBTZXQgZHR5cGUuXG4gICAgICBsZXQgZHR5cGUgPSBhcmdzLmR0eXBlO1xuICAgICAgaWYgKGR0eXBlID09IG51bGwpIHtcbiAgICAgICAgZHR5cGUgPSBhcmdzLmlucHV0RFR5cGU7XG4gICAgICB9XG4gICAgICBpZiAoZHR5cGUgPT0gbnVsbCkge1xuICAgICAgICBkdHlwZSA9ICdmbG9hdDMyJztcbiAgICAgIH1cbiAgICAgIHRoaXMuZHR5cGUgPSBkdHlwZTtcbiAgICB9XG5cbiAgICBpZiAoYXJncy53ZWlnaHRzICE9IG51bGwpIHtcbiAgICAgIHRoaXMuaW5pdGlhbFdlaWdodHMgPSBhcmdzLndlaWdodHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdGlhbFdlaWdodHMgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIFRoZSB2YWx1ZSBvZiBgX3JlZkNvdW50YCBpcyBpbml0aWFsaXplZCB0byBudWxsLiBXaGVuIHRoZSBsYXllciBpcyB1c2VkXG4gICAgLy8gaW4gYSBzeW1ib2xpYyB3YXkgZm9yIHRoZSBmaXJzdCB0aW1lLCBpdCB3aWxsIGJlIHNldCB0byAxLlxuICAgIHRoaXMuX3JlZkNvdW50ID0gbnVsbDtcblxuICAgIHRoaXMuZmFzdFdlaWdodEluaXREdXJpbmdCdWlsZCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgbGF5ZXIgYW5kIGl0cyBpbmRleCB0byBhIHVuaXF1ZSAoaW1tdXRhYmxlIHR5cGUpIG5hbWUuXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBpbnRlcm5hbGx5IHdpdGggYHRoaXMuY29udGFpbmVyTm9kZXNgLlxuICAgKiBAcGFyYW0gbGF5ZXIgVGhlIGxheWVyLlxuICAgKiBAcGFyYW0gbm9kZUluZGV4IFRoZSBsYXllcidzIHBvc2l0aW9uIChlLmcuIHZpYSBlbnVtZXJhdGUpIGluIGEgbGlzdCBvZlxuICAgKiAgIG5vZGVzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgdW5pcXVlIG5hbWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhdGljIG5vZGVLZXkobGF5ZXI6IExheWVyLCBub2RlSW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBsYXllci5uYW1lICsgJ19pYi0nICsgbm9kZUluZGV4LnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGlzLmluYm91bmROb2RlIGF0IGluZGV4IG5vZGVJbmRleC5cbiAgICpcbiAgICogUG9ydGluZyBub3RlOiBUaGlzIGlzIGEgcmVwbGFjZW1lbnQgZm9yIF9nZXRfbm9kZV9hdHRyaWJ1dGVfYXRfaW5kZXgoKVxuICAgKiBAcGFyYW0gbm9kZUluZGV4XG4gICAqIEBwYXJhbSBhdHRyTmFtZSBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlIHJlbGF0ZWQgdG8gcmVxdWVzdCBmb3IgdGhpcyBub2RlLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXROb2RlQXRJbmRleChub2RlSW5kZXg6IG51bWJlciwgYXR0ck5hbWU6IHN0cmluZyk6IE5vZGUge1xuICAgIGlmICh0aGlzLmluYm91bmROb2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBSdW50aW1lRXJyb3IoXG4gICAgICAgICAgJ1RoZSBsYXllciBoYXMgbmV2ZXIgYmVlbiBjYWxsZWQgJyArXG4gICAgICAgICAgYGFuZCB0aHVzIGhhcyBubyBkZWZpbmVkICR7YXR0ck5hbWV9LmApO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbmJvdW5kTm9kZXMubGVuZ3RoIDw9IG5vZGVJbmRleCkge1xuICAgICAgdGhyb3cgbmV3IFZhbHVlRXJyb3IoXG4gICAgICAgICAgYEFza2VkIHRvIGdldCAke2F0dHJOYW1lfSBhdCBub2RlICR7bm9kZUluZGV4fSwgYCArXG4gICAgICAgICAgYGJ1dCB0aGUgbGF5ZXIgaGFzIG9ubHkgJHt0aGlzLmluYm91bmROb2Rlcy5sZW5ndGh9IGluYm91bmQgbm9kZXMuYCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmluYm91bmROb2Rlc1tub2RlSW5kZXhdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgaW5wdXQgdGVuc29yKHMpIG9mIGEgbGF5ZXIgYXQgYSBnaXZlbiBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0gbm9kZUluZGV4IEludGVnZXIsIGluZGV4IG9mIHRoZSBub2RlIGZyb20gd2hpY2ggdG8gcmV0cmlldmUgdGhlXG4gICAqICAgYXR0cmlidXRlLiBFLmcuIGBub2RlSW5kZXg9MGAgd2lsbCBjb3JyZXNwb25kIHRvIHRoZSBmaXJzdCB0aW1lIHRoZSBsYXllclxuICAgKiAgIHdhcyBjYWxsZWQuXG4gICAqXG4gICAqIEByZXR1cm4gQSB0ZW5zb3IgKG9yIGxpc3Qgb2YgdGVuc29ycyBpZiB0aGUgbGF5ZXIgaGFzIG11bHRpcGxlIGlucHV0cykuXG4gICAqL1xuICBnZXRJbnB1dEF0KG5vZGVJbmRleDogbnVtYmVyKTogU3ltYm9saWNUZW5zb3J8U3ltYm9saWNUZW5zb3JbXSB7XG4gICAgcmV0dXJuIGdlbmVyaWNfdXRpbHMuc2luZ2xldG9uT3JBcnJheShcbiAgICAgICAgdGhpcy5nZXROb2RlQXRJbmRleChub2RlSW5kZXgsICdpbnB1dCcpLmlucHV0VGVuc29ycyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBvdXRwdXQgdGVuc29yKHMpIG9mIGEgbGF5ZXIgYXQgYSBnaXZlbiBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0gbm9kZUluZGV4IEludGVnZXIsIGluZGV4IG9mIHRoZSBub2RlIGZyb20gd2hpY2ggdG8gcmV0cmlldmUgdGhlXG4gICAqICAgYXR0cmlidXRlLiBFLmcuIGBub2RlSW5kZXg9MGAgd2lsbCBjb3JyZXNwb25kIHRvIHRoZSBmaXJzdCB0aW1lIHRoZSBsYXllclxuICAgKiAgIHdhcyBjYWxsZWQuXG4gICAqXG4gICAqIEByZXR1cm4gQSB0ZW5zb3IgKG9yIGxpc3Qgb2YgdGVuc29ycyBpZiB0aGUgbGF5ZXIgaGFzIG11bHRpcGxlIG91dHB1dHMpLlxuICAgKi9cbiAgZ2V0T3V0cHV0QXQobm9kZUluZGV4OiBudW1iZXIpOiBTeW1ib2xpY1RlbnNvcnxTeW1ib2xpY1RlbnNvcltdIHtcbiAgICByZXR1cm4gZ2VuZXJpY191dGlscy5zaW5nbGV0b25PckFycmF5KFxuICAgICAgICB0aGlzLmdldE5vZGVBdEluZGV4KG5vZGVJbmRleCwgJ291dHB1dCcpLm91dHB1dFRlbnNvcnMpO1xuICB9XG5cbiAgLy8gUHJvcGVydGllc1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGlucHV0IHRlbnNvcihzKSBvZiBhIGxheWVyLlxuICAgKlxuICAgKiBPbmx5IGFwcGxpY2FibGUgaWYgdGhlIGxheWVyIGhhcyBleGFjdGx5IG9uZSBpbmJvdW5kIG5vZGUsXG4gICAqIGkuZS4gaWYgaXQgaXMgY29ubmVjdGVkIHRvIG9uZSBpbmNvbWluZyBsYXllci5cbiAgICpcbiAgICogQHJldHVybiBJbnB1dCB0ZW5zb3Igb3IgbGlzdCBvZiBpbnB1dCB0ZW5zb3JzLlxuICAgKlxuICAgKiBAZXhjZXB0aW9uIEF0dHJpYnV0ZUVycm9yIGlmIHRoZSBsYXllciBpcyBjb25uZWN0ZWQgdG8gbW9yZSB0aGFuIG9uZVxuICAgKiAgIGluY29taW5nIGxheWVycy5cbiAgICovXG4gIGdldCBpbnB1dCgpOiBTeW1ib2xpY1RlbnNvcnxTeW1ib2xpY1RlbnNvcltdIHtcbiAgICBpZiAodGhpcy5pbmJvdW5kTm9kZXMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEF0dHJpYnV0ZUVycm9yKFxuICAgICAgICAgIGBMYXllciAke3RoaXMubmFtZX1gICtcbiAgICAgICAgICAnIGhhcyBtdWx0aXBsZSBpbmJvdW5kIG5vZGVzLCAnICtcbiAgICAgICAgICAnaGVuY2UgdGhlIG5vdGlvbiBvZiBcImxheWVyIGlucHV0XCIgJyArXG4gICAgICAgICAgJ2lzIGlsbC1kZWZpbmVkLiAnICtcbiAgICAgICAgICAnVXNlIGBnZXRJbnB1dEF0KG5vZGVJbmRleClgIGluc3RlYWQuJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmluYm91bmROb2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBBdHRyaWJ1dGVFcnJvcihcbiAgICAgICAgICBgTGF5ZXIgJHt0aGlzLm5hbWV9YCArXG4gICAgICAgICAgJyBpcyBub3QgY29ubmVjdGVkLCBubyBpbnB1dCB0byByZXR1cm4uJyk7XG4gICAgfVxuICAgIHJldHVybiBnZW5lcmljX3V0aWxzLnNpbmdsZXRvbk9yQXJyYXkoXG4gICAgICAgIHRoaXMuZ2V0Tm9kZUF0SW5kZXgoMCwgJ2lucHV0JykuaW5wdXRUZW5zb3JzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIG91dHB1dCB0ZW5zb3Iocykgb2YgYSBsYXllci5cbiAgICpcbiAgICogT25seSBhcHBsaWNhYmxlIGlmIHRoZSBsYXllciBoYXMgZXhhY3RseSBvbmUgaW5ib3VuZCBub2RlLFxuICAgKiBpLmUuIGlmIGl0IGlzIGNvbm5lY3RlZCB0byBvbmUgaW5jb21pbmcgbGF5ZXIuXG4gICAqXG4gICAqIEByZXR1cm4gT3V0cHV0IHRlbnNvciBvciBsaXN0IG9mIG91dHB1dCB0ZW5zb3JzLlxuICAgKlxuICAgKiBAZXhjZXB0aW9uIEF0dHJpYnV0ZUVycm9yIGlmIHRoZSBsYXllciBpcyBjb25uZWN0ZWQgdG8gbW9yZSB0aGFuIG9uZVxuICAgKiAgIGluY29taW5nIGxheWVycy5cbiAgICovXG4gIGdldCBvdXRwdXQoKTogU3ltYm9saWNUZW5zb3J8U3ltYm9saWNUZW5zb3JbXSB7XG4gICAgaWYgKHRoaXMuaW5ib3VuZE5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEF0dHJpYnV0ZUVycm9yKFxuICAgICAgICAgIGBMYXllciAke3RoaXMubmFtZX1gICtcbiAgICAgICAgICAnIGhhcyBubyBpbmJvdW5kIG5vZGVzLicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbmJvdW5kTm9kZXMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEF0dHJpYnV0ZUVycm9yKFxuICAgICAgICAgIGBMYXllciAke3RoaXMubmFtZX1gICtcbiAgICAgICAgICAnIGhhcyBtdWx0aXBsZSBpbmJvdW5kIG5vZGVzLCAnICtcbiAgICAgICAgICAnaGVuY2UgdGhlIG5vdGlvbiBvZiBcImxheWVyIG91dHB1dFwiICcgK1xuICAgICAgICAgICdpcyBpbGwtZGVmaW5lZC4gJyArXG4gICAgICAgICAgJ1VzZSBgZ2V0T3V0cHV0QXQobm9kZUluZGV4KWAgaW5zdGVhZC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIGdlbmVyaWNfdXRpbHMuc2luZ2xldG9uT3JBcnJheShcbiAgICAgICAgdGhpcy5nZXROb2RlQXRJbmRleCgwLCAnb3V0cHV0Jykub3V0cHV0VGVuc29ycyk7XG4gIH1cblxuICBnZXQgbG9zc2VzKCk6IFJlZ3VsYXJpemVyRm5bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvc3NlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIExheWVyJ3MgY3VycmVudCBsb3NzIHZhbHVlcy5cbiAgICpcbiAgICogVXNlZCBmb3IgcmVndWxhcml6ZXJzIGR1cmluZyB0cmFpbmluZy5cbiAgICovXG4gIGNhbGN1bGF0ZUxvc3NlcygpOiBTY2FsYXJbXSB7XG4gICAgLy8gUG9ydGluZyBOb2RlOiBUaGlzIGlzIGFuIGF1Z21lbnRhdGlvbiB0byBMYXllci5sb3NzIGluIFB5S2VyYXMuXG4gICAgLy8gICBJbiBQeUtlcmFzLCBMYXllci5sb3NzIHJldHVybnMgc3ltYm9saWMgdGVuc29ycy4gSGVyZSBhIGNvbmNyZXRlXG4gICAgLy8gICBUZW5zb3IgKHNwZWNpZmljYWxseSBTY2FsYXIpIHZhbHVlcyBhcmUgcmV0dXJuZWQuIFRoaXMgaXMgZHVlIHRvIHRoZVxuICAgIC8vICAgaW1wZXJhdGl2ZSBiYWNrZW5kLlxuICAgIHJldHVybiB0aGlzLmxvc3Nlcy5tYXAobG9zc0ZuID0+IGxvc3NGbigpKTtcbiAgfVxuXG4gIGdldCB1cGRhdGVzKCk6IFRlbnNvcltdIHtcbiAgICByZXR1cm4gdGhpcy5fdXBkYXRlcztcbiAgfVxuXG4gIGdldCBidWlsdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYnVpbHQ7XG4gIH1cblxuICBzZXQgYnVpbHQoYnVpbHQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9idWlsdCA9IGJ1aWx0O1xuICB9XG5cbiAgZ2V0IHRyYWluYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50cmFpbmFibGVfO1xuICB9XG5cbiAgc2V0IHRyYWluYWJsZSh0cmFpbmFibGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl90cmFpbmFibGVXZWlnaHRzLmZvckVhY2godyA9PiB3LnRyYWluYWJsZSA9IHRyYWluYWJsZSk7XG4gICAgdGhpcy50cmFpbmFibGVfID0gdHJhaW5hYmxlO1xuICB9XG5cbiAgZ2V0IHRyYWluYWJsZVdlaWdodHMoKTogTGF5ZXJWYXJpYWJsZVtdIHtcbiAgICBpZiAodGhpcy50cmFpbmFibGVfKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhaW5hYmxlV2VpZ2h0cy5maWx0ZXIodyA9PiB3LnRyYWluYWJsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBzZXQgdHJhaW5hYmxlV2VpZ2h0cyh3ZWlnaHRzOiBMYXllclZhcmlhYmxlW10pIHtcbiAgICB0aGlzLl90cmFpbmFibGVXZWlnaHRzID0gd2VpZ2h0cztcbiAgfVxuXG4gIGdldCBub25UcmFpbmFibGVXZWlnaHRzKCk6IExheWVyVmFyaWFibGVbXSB7XG4gICAgaWYgKHRoaXMudHJhaW5hYmxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhaW5hYmxlV2VpZ2h0cy5maWx0ZXIodyA9PiAhdy50cmFpbmFibGUpXG4gICAgICAgICAgLmNvbmNhdCh0aGlzLl9ub25UcmFpbmFibGVXZWlnaHRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYWluYWJsZVdlaWdodHMuY29uY2F0KHRoaXMuX25vblRyYWluYWJsZVdlaWdodHMpO1xuICAgIH1cbiAgfVxuXG4gIHNldCBub25UcmFpbmFibGVXZWlnaHRzKHdlaWdodHM6IExheWVyVmFyaWFibGVbXSkge1xuICAgIHRoaXMuX25vblRyYWluYWJsZVdlaWdodHMgPSB3ZWlnaHRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBsaXN0cyB0cmFpbmFibGVXZWlnaHRzIGFuZCBub25UcmFpbmFibGVXZWlnaHRzXG4gICAqIChpbiB0aGlzIG9yZGVyKS5cbiAgICovXG4gIGdldCB3ZWlnaHRzKCk6IExheWVyVmFyaWFibGVbXSB7XG4gICAgcmV0dXJuIHRoaXMudHJhaW5hYmxlV2VpZ2h0cy5jb25jYXQodGhpcy5ub25UcmFpbmFibGVXZWlnaHRzKTtcbiAgfVxuXG4gIGdldCBzdGF0ZWZ1bCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGVmdWw7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhlIHN0YXRlcyBvZiB0aGUgbGF5ZXIuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIG9mIHRoZSBiYXNlIExheWVyIGNsYXNzIGlzIGVzc2VudGlhbGx5IGEgbm8tb3AuXG4gICAqIFN1YmNsYXNzZXMgdGhhdCBhcmUgc3RhdGVmdWwgKGUuZy4sIHN0YXRlZnVsIFJOTnMpIHNob3VsZCBvdmVycmlkZSB0aGlzXG4gICAqIG1ldGhvZC5cbiAgICovXG4gIHJlc2V0U3RhdGVzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGF0ZWZ1bCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdDYW5ub3QgY2FsbCB0aGUgcmVzZXRTdGF0ZXMoKSBtZXRob2Qgb2YgYSBub24tc3RhdGVmdWwgTGF5ZXIgJyArXG4gICAgICAgICAgJ29iamVjdC4nKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGNvbXBhdGliaWxpdHkgYmV0d2VlbiB0aGUgbGF5ZXIgYW5kIHByb3ZpZGVkIGlucHV0cy5cbiAgICpcbiAgICogVGhpcyBjaGVja3MgdGhhdCB0aGUgdGVuc29yKHMpIGBpbnB1dGBcbiAgICogdmVyaWZ5IHRoZSBpbnB1dCBhc3N1bXB0aW9ucyBvZiB0aGUgbGF5ZXJcbiAgICogKGlmIGFueSkuIElmIG5vdCwgZXhjZXB0aW9ucyBhcmUgcmFpc2VkLlxuICAgKlxuICAgKiBAcGFyYW0gaW5wdXRzIElucHV0IHRlbnNvciBvciBsaXN0IG9mIGlucHV0IHRlbnNvcnMuXG4gICAqXG4gICAqIEBleGNlcHRpb24gVmFsdWVFcnJvciBpbiBjYXNlIG9mIG1pc21hdGNoIGJldHdlZW5cbiAgICogICB0aGUgcHJvdmlkZWQgaW5wdXRzIGFuZCB0aGUgZXhwZWN0YXRpb25zIG9mIHRoZSBsYXllci5cbiAgICovXG4gIHByb3RlY3RlZCBhc3NlcnRJbnB1dENvbXBhdGliaWxpdHkoaW5wdXRzOiBUZW5zb3J8VGVuc29yW118U3ltYm9saWNUZW5zb3J8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9saWNUZW5zb3JbXSk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0c0xpc3QgPSBnZW5lcmljX3V0aWxzLnRvTGlzdChpbnB1dHMpO1xuICAgIGlmICh0aGlzLmlucHV0U3BlYyA9PSBudWxsIHx8IHRoaXMuaW5wdXRTcGVjLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpbnB1dFNwZWMgPSBnZW5lcmljX3V0aWxzLnRvTGlzdCh0aGlzLmlucHV0U3BlYyk7XG4gICAgaWYgKGlucHV0c0xpc3QubGVuZ3RoICE9PSBpbnB1dFNwZWMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsdWVFcnJvcihcbiAgICAgICAgICBgTGF5ZXIgJHt0aGlzLm5hbWV9IGV4cGVjdHMgJHtpbnB1dFNwZWMubGVuZ3RofSBpbnB1dHMsIGAgK1xuICAgICAgICAgIGBidXQgaXQgcmVjZWl2ZWQgJHtpbnB1dHNMaXN0Lmxlbmd0aH0gaW5wdXQgdGVuc29ycy4gYCArXG4gICAgICAgICAgYElucHV0IHJlY2VpdmVkOiAke2lucHV0c31gKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaW5wdXRJbmRleCA9IDA7IGlucHV0SW5kZXggPCBpbnB1dHNMaXN0Lmxlbmd0aDsgaW5wdXRJbmRleCsrKSB7XG4gICAgICBjb25zdCB4ID0gaW5wdXRzTGlzdFtpbnB1dEluZGV4XTtcbiAgICAgIGNvbnN0IHNwZWM6IElucHV0U3BlYyA9IGlucHV0U3BlY1tpbnB1dEluZGV4XTtcbiAgICAgIGlmIChzcGVjID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIG5kaW0uXG4gICAgICBjb25zdCBuZGltID0geC5yYW5rO1xuICAgICAgaWYgKHNwZWMubmRpbSAhPSBudWxsKSB7XG4gICAgICAgIGlmIChuZGltICE9PSBzcGVjLm5kaW0pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsdWVFcnJvcihcbiAgICAgICAgICAgICAgYElucHV0ICR7aW5wdXRJbmRleH0gaXMgaW5jb21wYXRpYmxlIHdpdGggbGF5ZXIgJHt0aGlzLm5hbWV9OiBgICtcbiAgICAgICAgICAgICAgYGV4cGVjdGVkIG5kaW09JHtzcGVjLm5kaW19LCBmb3VuZCBuZGltPSR7bmRpbX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHNwZWMubWF4TkRpbSAhPSBudWxsKSB7XG4gICAgICAgIGlmIChuZGltID4gc3BlYy5tYXhORGltKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFZhbHVlRXJyb3IoXG4gICAgICAgICAgICAgIGBJbnB1dCAke2lucHV0SW5kZXh9IGlzIGluY29tcGF0aWJsZSB3aXRoIGxheWVyICR7dGhpcy5uYW1lfWAgK1xuICAgICAgICAgICAgICBgOiBleHBlY3RlZCBtYXhfbmRpbT0ke3NwZWMubWF4TkRpbX0sIGZvdW5kIG5kaW09JHtuZGltfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc3BlYy5taW5ORGltICE9IG51bGwpIHtcbiAgICAgICAgaWYgKG5kaW0gPCBzcGVjLm1pbk5EaW0pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsdWVFcnJvcihcbiAgICAgICAgICAgICAgYElucHV0ICR7aW5wdXRJbmRleH0gaXMgaW5jb21wYXRpYmxlIHdpdGggbGF5ZXIgJHt0aGlzLm5hbWV9YCArXG4gICAgICAgICAgICAgIGA6IGV4cGVjdGVkIG1pbl9uZGltPSR7c3BlYy5taW5ORGltfSwgZm91bmQgbmRpbT0ke25kaW19LmApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGR0eXBlLlxuICAgICAgaWYgKHNwZWMuZHR5cGUgIT0gbnVsbCkge1xuICAgICAgICBpZiAoeC5kdHlwZSAhPT0gc3BlYy5kdHlwZSkge1xuICAgICAgICAgIHRocm93IG5ldyBWYWx1ZUVycm9yKFxuICAgICAgICAgICAgICBgSW5wdXQgJHtpbnB1dEluZGV4fSBpcyBpbmNvbXBhdGlibGUgd2l0aCBsYXllciAke3RoaXMubmFtZX0gYCArXG4gICAgICAgICAgICAgIGA6IGV4cGVjdGVkIGR0eXBlPSR7c3BlYy5kdHlwZX0sIGZvdW5kIGR0eXBlPSR7eC5kdHlwZX0uYCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgc3BlY2lmaWMgc2hhcGUgYXhlcy5cbiAgICAgIGlmIChzcGVjLmF4ZXMpIHtcbiAgICAgICAgY29uc3QgeFNoYXBlID0geC5zaGFwZTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc3BlYy5heGVzKSB7XG4gICAgICAgICAgY29uc3QgYXhpcyA9IE51bWJlcihrZXkpO1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gc3BlYy5heGVzW2tleV07XG4gICAgICAgICAgLy8gUGVyZm9ybSBQeXRob24tc3R5bGUgc2xpY2luZyBpbiBjYXNlIGF4aXMgPCAwO1xuICAgICAgICAgIC8vIFRPRE8oY2Fpcyk6IFVzZSBodHRwczovL2dpdGh1Yi5jb20vYWx2aXZpL3R5cGVzY3JpcHQtdW5kZXJzY29yZSB0b1xuICAgICAgICAgIC8vIGVuc3VyZSB0eXBlIHNhZmV0eSB0aHJvdWdoIFVuZGVyc2NvcmUgY2FsbHMuXG4gICAgICAgICAgY29uc3QgeFNoYXBlQXRBeGlzID1cbiAgICAgICAgICAgICAgYXhpcyA+PSAwID8geFNoYXBlW2F4aXNdIDogeFNoYXBlW3hTaGFwZS5sZW5ndGggKyBheGlzXTtcbiAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiBbdmFsdWUsIG51bGxdLmluZGV4T2YoeFNoYXBlQXRBeGlzKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBWYWx1ZUVycm9yKFxuICAgICAgICAgICAgICAgIGBJbnB1dCAke2lucHV0SW5kZXh9IGlzIGluY29tcGF0aWJsZSB3aXRoIGxheWVyIGAgK1xuICAgICAgICAgICAgICAgIGAke3RoaXMubmFtZX06IGV4cGVjdGVkIGF4aXMgJHtheGlzfSBvZiBpbnB1dCBzaGFwZSB0byBgICtcbiAgICAgICAgICAgICAgICBgaGF2ZSB2YWx1ZSAke3ZhbHVlfSBidXQgZ290IHNoYXBlICR7eFNoYXBlfS5gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgc2hhcGUuXG4gICAgICBpZiAoc3BlYy5zaGFwZSAhPSBudWxsKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3BlYy5zaGFwZS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIGNvbnN0IHNwZWNEaW0gPSBzcGVjLnNoYXBlW2ldO1xuICAgICAgICAgIGNvbnN0IGRpbSA9IHguc2hhcGVbaV07XG4gICAgICAgICAgaWYgKHNwZWNEaW0gIT0gbnVsbCAmJiBkaW0gIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHNwZWNEaW0gIT09IGRpbSkge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgVmFsdWVFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBJbnB1dCAke2lucHV0SW5kZXh9IGlzIGluY29tcGF0aWJsZSB3aXRoIGxheWVyIGAgK1xuICAgICAgICAgICAgICAgICAgYCR7dGhpcy5uYW1lfTogZXhwZWN0ZWQgc2hhcGU9JHtzcGVjLnNoYXBlfSwgYCArXG4gICAgICAgICAgICAgICAgICBgZm91bmQgc2hhcGU9JHt4LnNoYXBlfS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyB3aGVyZSB0aGUgbGF5ZXIncyBsb2dpYyBsaXZlcy5cbiAgICpcbiAgICogQHBhcmFtIGlucHV0cyBJbnB1dCB0ZW5zb3IsIG9yIGxpc3QvdHVwbGUgb2YgaW5wdXQgdGVuc29ycy5cbiAgICogQHBhcmFtIGt3YXJncyBBZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLlxuICAgKlxuICAgKiBAcmV0dXJuIEEgdGVuc29yIG9yIGxpc3QvdHVwbGUgb2YgdGVuc29ycy5cbiAgICovXG4gIGNhbGwoaW5wdXRzOiBUZW5zb3J8VGVuc29yW10sIGt3YXJnczogS3dhcmdzKTogVGVuc29yfFRlbnNvcltdIHtcbiAgICByZXR1cm4gaW5wdXRzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGludm9rZUNhbGxIb29rKGlucHV0czogVGVuc29yfFRlbnNvcltdLCBrd2FyZ3M6IEt3YXJncykge1xuICAgIGlmICh0aGlzLl9jYWxsSG9vayAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9jYWxsSG9vayhpbnB1dHMsIGt3YXJncyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjYWxsIGhvb2suXG4gICAqIFRoaXMgaXMgY3VycmVudGx5IHVzZWQgZm9yIHRlc3Rpbmcgb25seS5cbiAgICogQHBhcmFtIGNhbGxIb29rXG4gICAqL1xuICBzZXRDYWxsSG9vayhjYWxsSG9vazogQ2FsbEhvb2spIHtcbiAgICB0aGlzLl9jYWxsSG9vayA9IGNhbGxIb29rO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGNhbGwgaG9vay5cbiAgICogVGhpcyBpcyBjdXJyZW50bHkgdXNlZCBmb3IgdGVzdGluZyBvbmx5LlxuICAgKi9cbiAgY2xlYXJDYWxsSG9vaygpIHtcbiAgICB0aGlzLl9jYWxsSG9vayA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIG9yIGV4ZWN1dGVzIGEgYExheWVyYCdzIGxvZ2ljLlxuICAgKlxuICAgKiBXaGVuIGNhbGxlZCB3aXRoIGB0Zi5UZW5zb3JgKHMpLCBleGVjdXRlIHRoZSBgTGF5ZXJgJ3MgY29tcHV0YXRpb24gYW5kXG4gICAqIHJldHVybiBUZW5zb3IocykuIEZvciBleGFtcGxlOlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiBjb25zdCBkZW5zZUxheWVyID0gdGYubGF5ZXJzLmRlbnNlKHtcbiAgICogICB1bml0czogMSxcbiAgICogICBrZXJuZWxJbml0aWFsaXplcjogJ3plcm9zJyxcbiAgICogICB1c2VCaWFzOiBmYWxzZVxuICAgKiB9KTtcbiAgICpcbiAgICogLy8gSW52b2tlIHRoZSBsYXllcidzIGFwcGx5KCkgbWV0aG9kIHdpdGggYSBgdGYuVGVuc29yYCAod2l0aCBjb25jcmV0ZVxuICAgKiAvLyBudW1lcmljIHZhbHVlcykuXG4gICAqIGNvbnN0IGlucHV0ID0gdGYub25lcyhbMiwgMl0pO1xuICAgKiBjb25zdCBvdXRwdXQgPSBkZW5zZUxheWVyLmFwcGx5KGlucHV0KTtcbiAgICpcbiAgICogLy8gVGhlIG91dHB1dCdzIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIFtbMF0sIFswXV0sIGR1ZSB0byB0aGUgZmFjdCB0aGF0XG4gICAqIC8vIHRoZSBkZW5zZSBsYXllciBoYXMgYSBrZXJuZWwgaW5pdGlhbGl6ZWQgdG8gYWxsLXplcm9zIGFuZCBkb2VzIG5vdCBoYXZlXG4gICAqIC8vIGEgYmlhcy5cbiAgICogb3V0cHV0LnByaW50KCk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBXaGVuIGNhbGxlZCB3aXRoIGB0Zi5TeW1ib2xpY1RlbnNvcmAocyksIHRoaXMgd2lsbCBwcmVwYXJlIHRoZSBsYXllciBmb3JcbiAgICogZnV0dXJlIGV4ZWN1dGlvbi4gIFRoaXMgZW50YWlscyBpbnRlcm5hbCBib29rLWtlZXBpbmcgb24gc2hhcGVzIG9mXG4gICAqIGV4cGVjdGVkIFRlbnNvcnMsIHdpcmluZyBsYXllcnMgdG9nZXRoZXIsIGFuZCBpbml0aWFsaXppbmcgd2VpZ2h0cy5cbiAgICpcbiAgICogQ2FsbGluZyBgYXBwbHlgIHdpdGggYHRmLlN5bWJvbGljVGVuc29yYHMgYXJlIHR5cGljYWxseSB1c2VkIGR1cmluZyB0aGVcbiAgICogYnVpbGRpbmcgb2Ygbm9uLWB0Zi5TZXF1ZW50aWFsYCBtb2RlbHMuIEZvciBleGFtcGxlOlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiBjb25zdCBmbGF0dGVuTGF5ZXIgPSB0Zi5sYXllcnMuZmxhdHRlbigpO1xuICAgKiBjb25zdCBkZW5zZUxheWVyID0gdGYubGF5ZXJzLmRlbnNlKHt1bml0czogMX0pO1xuICAgKlxuICAgKiAvLyBVc2UgdGYubGF5ZXJzLmlucHV0KCkgdG8gb2J0YWluIGEgU3ltYm9saWNUZW5zb3IgYXMgaW5wdXQgdG8gYXBwbHkoKS5cbiAgICogY29uc3QgaW5wdXQgPSB0Zi5pbnB1dCh7c2hhcGU6IFsyLCAyXX0pO1xuICAgKiBjb25zdCBvdXRwdXQxID0gZmxhdHRlbkxheWVyLmFwcGx5KGlucHV0KTtcbiAgICpcbiAgICogLy8gb3V0cHV0MS5zaGFwZSBpcyBbbnVsbCwgNF0uIFRoZSBmaXJzdCBkaW1lbnNpb24gaXMgdGhlIHVuZGV0ZXJtaW5lZFxuICAgKiAvLyBiYXRjaCBzaXplLiBUaGUgc2Vjb25kIGRpbWVuc2lvbiBjb21lcyBmcm9tIGZsYXR0ZW5pbmcgdGhlIFsyLCAyXVxuICAgKiAvLyBzaGFwZS5cbiAgICogY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkob3V0cHV0MS5zaGFwZSkpO1xuICAgKlxuICAgKiAvLyBUaGUgb3V0cHV0IFN5bWJvbGljVGVuc29yIG9mIHRoZSBmbGF0dGVuIGxheWVyIGNhbiBiZSB1c2VkIHRvIGNhbGxcbiAgICogLy8gdGhlIGFwcGx5KCkgb2YgdGhlIGRlbnNlIGxheWVyOlxuICAgKiBjb25zdCBvdXRwdXQyID0gZGVuc2VMYXllci5hcHBseShvdXRwdXQxKTtcbiAgICpcbiAgICogLy8gb3V0cHV0Mi5zaGFwZSBpcyBbbnVsbCwgMV0uIFRoZSBmaXJzdCBkaW1lbnNpb24gaXMgdGhlIHVuZGV0ZXJtaW5lZFxuICAgKiAvLyBiYXRjaCBzaXplLiBUaGUgc2Vjb25kIGRpbWVuc2lvbiBtYXRjaGVzIHRoZSBudW1iZXIgb2YgdW5pdHMgb2YgdGhlXG4gICAqIC8vIGRlbnNlIGxheWVyLlxuICAgKiBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShvdXRwdXQyLnNoYXBlKSk7XG4gICAqXG4gICAqIC8vIFRoZSBpbnB1dCBhbmQgb3V0cHV0IGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBhIG1vZGVsIHRoYXQgY29uc2lzdHNcbiAgICogLy8gb2YgdGhlIGZsYXR0ZW4gYW5kIGRlbnNlIGxheWVycy5cbiAgICogY29uc3QgbW9kZWwgPSB0Zi5tb2RlbCh7aW5wdXRzOiBpbnB1dCwgb3V0cHV0czogb3V0cHV0Mn0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIGlucHV0cyBhIGB0Zi5UZW5zb3JgIG9yIGB0Zi5TeW1ib2xpY1RlbnNvcmAgb3IgYW4gQXJyYXkgb2YgdGhlbS5cbiAgICogQHBhcmFtIGt3YXJncyBBZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byBgY2FsbCgpYC5cbiAgICpcbiAgICogQHJldHVybiBPdXRwdXQgb2YgdGhlIGxheWVyJ3MgYGNhbGxgIG1ldGhvZC5cbiAgICpcbiAgICogQGV4Y2VwdGlvbiBWYWx1ZUVycm9yIGVycm9yIGluIGNhc2UgdGhlIGxheWVyIGlzIG1pc3Npbmcgc2hhcGUgaW5mb3JtYXRpb25cbiAgICogICBmb3IgaXRzIGBidWlsZGAgY2FsbC5cbiAgICpcbiAgICogQGRvYyB7aGVhZGluZzogJ01vZGVscycsICdzdWJoZWFkaW5nJzogJ0NsYXNzZXMnfVxuICAgKi9cbiAgLy8gUG9ydGluZyBOb3RlOiBUaGlzIGlzIGEgcmVwbGFjZW1lbnQgZm9yIF9fY2FsbF9fKCkgaW4gUHl0aG9uLlxuICBhcHBseShcbiAgICAgIGlucHV0czogVGVuc29yfFRlbnNvcltdfFN5bWJvbGljVGVuc29yfFN5bWJvbGljVGVuc29yW10sXG4gICAgICBrd2FyZ3M/OiBLd2FyZ3MpOiBUZW5zb3J8VGVuc29yW118U3ltYm9saWNUZW5zb3J8U3ltYm9saWNUZW5zb3JbXSB7XG4gICAga3dhcmdzID0ga3dhcmdzIHx8IHt9O1xuXG4gICAgdGhpcy5hc3NlcnROb3REaXNwb3NlZCgpO1xuXG4gICAgLy8gRW5zdXJlIGlucHV0cyBhcmUgYWxsIHRoZSBzYW1lIHR5cGUuXG4gICAgY29uc3QgaW5wdXRzTGlzdCA9IGdlbmVyaWNfdXRpbHMudG9MaXN0KGlucHV0cyk7XG5cbiAgICBjb25zdCBhbGxBcmVTeW1ib2xpYyA9IGNoZWNrQWxsU3ltYm9saWMoaW5wdXRzKTtcbiAgICBjb25zdCBub25lQXJlU3ltYm9saWMgPSBjaGVja05vbmVTeW1ib2xpYyhpbnB1dHMpO1xuXG4gICAgaWYgKGFsbEFyZVN5bWJvbGljID09PSBub25lQXJlU3ltYm9saWMpIHtcbiAgICAgIHRocm93IG5ldyBWYWx1ZUVycm9yKFxuICAgICAgICAgICdBcmd1bWVudHMgdG8gYXBwbHkoKSBtdXN0IGJlIGFsbCAnICtcbiAgICAgICAgICAnU3ltYm9saWNUZW5zb3JzIG9yIGFsbCBUZW5zb3JzJyk7XG4gICAgfVxuXG4gICAgLy8gVE9ETyhtaWNoYWVsdGVycnkpOiBuYW1lU2NvcGUoKSBtYXkgbm90IGJlIG5lY2Vzc2FyeS5cbiAgICByZXR1cm4gbmFtZVNjb3BlKHRoaXMubmFtZSwgKCkgPT4ge1xuICAgICAgLy8gSGFuZGxlIGxheWluZyBidWlsZGluZyAod2VpZ2h0IGNyZWF0aW5nLCBpbnB1dCBzcGVjIGxvY2tpbmcpLlxuICAgICAgaWYgKCF0aGlzLmJ1aWx0KSB7XG4gICAgICAgIC8qXG4gICAgICAgICAgVGhyb3cgZXhjZXB0aW9ucyBpbiBjYXNlIHRoZSBpbnB1dCBpcyBub3QgY29tcGF0aWJsZVxuICAgICAgICAgIHdpdGggdGhlIGlucHV0U3BlYyBzcGVjaWZpZWQgaW4gdGhlIGxheWVyIGNvbnN0cnVjdG9yLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5hc3NlcnRJbnB1dENvbXBhdGliaWxpdHkoaW5wdXRzKTtcblxuICAgICAgICAvLyBDb2xsZWN0IGlucHV0IHNoYXBlcyB0byBidWlsZCBsYXllci5cbiAgICAgICAgY29uc3QgaW5wdXRTaGFwZXM6IFNoYXBlW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCB4RWxlbSBvZiBnZW5lcmljX3V0aWxzLnRvTGlzdChpbnB1dHMpKSB7XG4gICAgICAgICAgaW5wdXRTaGFwZXMucHVzaCh4RWxlbS5zaGFwZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5idWlsZChnZW5lcmljX3V0aWxzLnNpbmdsZXRvbk9yQXJyYXkoaW5wdXRTaGFwZXMpKTtcbiAgICAgICAgdGhpcy5idWlsdCA9IHRydWU7XG5cbiAgICAgICAgLy8gTG9hZCB3ZWlnaHRzIHRoYXQgd2VyZSBzcGVjaWZpZWQgYXQgbGF5ZXIgaW5zdGFudGlhdGlvbi5cbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbFdlaWdodHMpIHtcbiAgICAgICAgICB0aGlzLnNldFdlaWdodHModGhpcy5pbml0aWFsV2VpZ2h0cyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fcmVmQ291bnQgPT09IG51bGwgJiYgbm9uZUFyZVN5bWJvbGljKSB7XG4gICAgICAgICAgLy8gVGhlIGZpcnN0IHVzZSBvZiB0aGlzIGxheWVyIGlzIGEgbm9uLXN5bWJvbGljIGNhbGwsIHNldCByZWYgY291bnRcbiAgICAgICAgICAvLyB0byAxIHNvIHRoZSBMYXllciBjYW4gYmUgcHJvcGVybHkgZGlzcG9zZWQgaWYgaXRzIGRpc3Bvc2UoKSBtZXRob2RcbiAgICAgICAgICAvLyBpcyBjYWxsZWQuXG4gICAgICAgICAgdGhpcy5fcmVmQ291bnQgPSAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8qXG4gICAgICAgIFRocm93IGV4Y2VwdGlvbnMgaW4gY2FzZSB0aGUgaW5wdXQgaXMgbm90IGNvbXBhdGlibGVcbiAgICAgICAgd2l0aCB0aGUgaW5wdXRTcGVjIHNldCBhdCBidWlsZCB0aW1lLlxuICAgICAgKi9cbiAgICAgIHRoaXMuYXNzZXJ0SW5wdXRDb21wYXRpYmlsaXR5KGlucHV0cyk7XG5cbiAgICAgIC8vIEhhbmRsZSBtYXNrIHByb3BhZ2F0aW9uLlxuICAgICAgLy8gVE9ETyhtaWNoYWVsdGVycnkpOiBNYXNrIHByb3BhZ2F0aW9uIG5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWQuXG5cbiAgICAgIC8vIEFjdHVhbGx5IGNhbGwgdGhlIGxheWVyLCBjb2xsZWN0aW5nIG91dHB1dChzKSwgbWFzayhzKSwgYW5kIHNoYXBlKHMpLlxuICAgICAgaWYgKG5vbmVBcmVTeW1ib2xpYykge1xuICAgICAgICBsZXQgb3V0cHV0ID0gdGhpcy5jYWxsKGlucHV0cywga3dhcmdzKTtcblxuICAgICAgICAvLyBBcHBseSBtYXNrcyB0byB0aGUgb3V0cHV0IHRlbnNvcnMgaWYgdGhlIGxheWVyIHN1cHBvcnRzIGl0LlxuICAgICAgICBpZiAodGhpcy5zdXBwb3J0c01hc2tpbmcpIHtcbiAgICAgICAgICAvLyBUT0RPKG1hdHRzb3VsYW5pbGxlKTogcGFzcyB0aGUgaW5wdXQgdGVuc29ycycgbWFza3MgdG8gY29tcHV0ZU1hc2tcbiAgICAgICAgICB0aGlzLnNldE1hc2tNZXRhZGF0YShpbnB1dHMsIG91dHB1dCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiB0aGUgbGF5ZXIgcmV0dXJucyB0ZW5zb3JzIGZyb20gaXRzIGlucHV0cywgdW5tb2RpZmllZCxcbiAgICAgICAgLy8gd2UgY29weSB0aGVtIHRvIGF2b2lkIGxvc3Mgb2YgdGVuc29yIG1ldGFkYXRhLlxuICAgICAgICBjb25zdCBvdXRwdXRMaXN0OiBUZW5zb3JbXSA9IGdlbmVyaWNfdXRpbHMudG9MaXN0KG91dHB1dCk7XG4gICAgICAgIGNvbnN0IG91dHB1dExpc3RDb3B5OiBUZW5zb3JbXSA9IFtdO1xuICAgICAgICAvLyBUT0RPKG1pY2hhZWx0ZXJyeSk6IFRoaXMgY29weWluZyBtYXkgbm90IGJlIG5lY2Vzc2FyeSBnaXZlbiBvdXIgZWFnZXJcbiAgICAgICAgLy8gYmFja2VuZC5cbiAgICAgICAgZm9yIChsZXQgeCBvZiBvdXRwdXRMaXN0KSB7XG4gICAgICAgICAgaWYgKGlucHV0c0xpc3QuaW5kZXhPZih4KSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHggPSB4LmNsb25lKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG91dHB1dExpc3RDb3B5LnB1c2goeCk7XG4gICAgICAgIH1cbiAgICAgICAgb3V0cHV0ID0gZ2VuZXJpY191dGlscy5zaW5nbGV0b25PckFycmF5KG91dHB1dExpc3RDb3B5KTtcblxuICAgICAgICBpZiAodGhpcy5hY3Rpdml0eVJlZ3VsYXJpemVyICE9IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcihcbiAgICAgICAgICAgICAgJ0xheWVyIGludm9jYXRpb24gaW4gdGhlIHByZXNlbmNlIG9mIGFjdGl2aXR5ICcgK1xuICAgICAgICAgICAgICAncmVndWxhcml6ZXIocykgaXMgbm90IHN1cHBvcnRlZCB5ZXQuJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUT0RPKG1pY2hhZWx0ZXJyeSk6IENhbGwgYWRkSW5ib3VuZE5vZGUoKT9cbiAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGlucHV0U2hhcGUgPSBjb2xsZWN0SW5wdXRTaGFwZShpbnB1dHMpO1xuICAgICAgICBjb25zdCBvdXRwdXRTaGFwZSA9IHRoaXMuY29tcHV0ZU91dHB1dFNoYXBlKGlucHV0U2hhcGUpO1xuICAgICAgICBsZXQgb3V0cHV0OiBTeW1ib2xpY1RlbnNvcnxTeW1ib2xpY1RlbnNvcltdO1xuICAgICAgICBjb25zdCBvdXRwdXREVHlwZSA9IGd1ZXNzT3V0cHV0RFR5cGUoaW5wdXRzKTtcbiAgICAgICAgdGhpcy53YXJuT25JbmNvbXBhdGlibGVJbnB1dFNoYXBlKFxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShpbnB1dHMpID8gaW5wdXRTaGFwZVswXSBhcyBTaGFwZSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFNoYXBlIGFzIFNoYXBlKTtcblxuICAgICAgICBpZiAob3V0cHV0U2hhcGUgIT0gbnVsbCAmJiBvdXRwdXRTaGFwZS5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KG91dHB1dFNoYXBlWzBdKSkge1xuICAgICAgICAgIC8vIFdlIGhhdmUgbXVsdGlwbGUgb3V0cHV0IHNoYXBlcy4gQ3JlYXRlIG11bHRpcGxlIG91dHB1dCB0ZW5zb3JzLlxuICAgICAgICAgIG91dHB1dCA9IChvdXRwdXRTaGFwZSBhcyBTaGFwZVtdKVxuICAgICAgICAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNoYXBlLCBpbmRleCkgPT4gbmV3IFN5bWJvbGljVGVuc29yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dERUeXBlLCBzaGFwZSwgdGhpcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmljX3V0aWxzLnRvTGlzdChpbnB1dHMpLCBrd2FyZ3MsIHRoaXMubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dHB1dCA9IG5ldyBTeW1ib2xpY1RlbnNvcihcbiAgICAgICAgICAgICAgb3V0cHV0RFR5cGUsIG91dHB1dFNoYXBlIGFzIFNoYXBlLCB0aGlzLFxuICAgICAgICAgICAgICBnZW5lcmljX3V0aWxzLnRvTGlzdChpbnB1dHMpLCBrd2FyZ3MsIHRoaXMubmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvKlxuICAgICAgICAgIEFkZCBhbiBpbmJvdW5kIG5vZGUgdG8gdGhlIGxheWVyLCBzbyB0aGF0IGl0IGtlZXBzIHRyYWNrXG4gICAgICAgICAgb2YgdGhlIGNhbGwgYW5kIG9mIGFsbCBuZXcgdmFyaWFibGVzIGNyZWF0ZWQgZHVyaW5nIHRoZSBjYWxsLlxuICAgICAgICAgIFRoaXMgYWxzbyB1cGRhdGVzIHRoZSBsYXllciBoaXN0b3J5IG9mIHRoZSBvdXRwdXQgdGVuc29yKHMpLlxuICAgICAgICAgIElmIHRoZSBpbnB1dCB0ZW5zb3IocykgaGFkIG5vIHByZXZpb3VzIGhpc3RvcnksXG4gICAgICAgICAgdGhpcyBkb2VzIG5vdGhpbmcuXG4gICAgICAgICovXG4gICAgICAgIHRoaXMuYWRkSW5ib3VuZE5vZGUoXG4gICAgICAgICAgICBpbnB1dHMsIG91dHB1dCwgbnVsbCwgbnVsbCwgaW5wdXRTaGFwZSwgb3V0cHV0U2hhcGUsIGt3YXJncyk7XG4gICAgICAgIHRoaXMuX3JlZkNvdW50Kys7XG5cbiAgICAgICAgaWYgKHRoaXMuYWN0aXZpdHlSZWd1bGFyaXplciAhPSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoXG4gICAgICAgICAgICAgICdMYXllciBpbnZvY2F0aW9uIGluIHRoZSBwcmVzZW5jZSBvZiBhY3Rpdml0eSAnICtcbiAgICAgICAgICAgICAgJ3JlZ3VsYXJpemVyKHMpIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LicpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBjb21wYXRpYmlsaXR5IGJldHdlZW4gaW5wdXQgc2hhcGUgYW5kIHRoaXMgbGF5ZXIncyBiYXRjaElucHV0U2hhcGUuXG4gICAqXG4gICAqIFByaW50IHdhcm5pbmcgaWYgYW55IGluY29tcGF0aWJpbGl0eSBpcyBmb3VuZC5cbiAgICpcbiAgICogQHBhcmFtIGlucHV0U2hhcGUgSW5wdXQgc2hhcGUgdG8gYmUgY2hlY2tlZC5cbiAgICovXG4gIHByb3RlY3RlZCB3YXJuT25JbmNvbXBhdGlibGVJbnB1dFNoYXBlKGlucHV0U2hhcGU6IFNoYXBlKSB7XG4gICAgaWYgKHRoaXMuYmF0Y2hJbnB1dFNoYXBlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGlucHV0U2hhcGUubGVuZ3RoICE9PSB0aGlzLmJhdGNoSW5wdXRTaGFwZS5sZW5ndGgpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgVGhlIHJhbmsgb2YgdGhlIGlucHV0IHRlbnNvciBwcm92aWRlZCAoc2hhcGU6IGAgK1xuICAgICAgICAgIGAke0pTT04uc3RyaW5naWZ5KGlucHV0U2hhcGUpfSkgZG9lcyBub3QgbWF0Y2ggdGhhdCBvZiB0aGUgYCArXG4gICAgICAgICAgYGJhdGNoSW5wdXRTaGFwZSAoJHtKU09OLnN0cmluZ2lmeSh0aGlzLmJhdGNoSW5wdXRTaGFwZSl9KSBgICtcbiAgICAgICAgICBgb2YgdGhlIGxheWVyICR7dGhpcy5uYW1lfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZGltTWlzbWF0Y2ggPSBmYWxzZTtcbiAgICAgIHRoaXMuYmF0Y2hJbnB1dFNoYXBlLmZvckVhY2goKGRpbWVuc2lvbiwgaSkgPT4ge1xuICAgICAgICBpZiAoZGltZW5zaW9uICE9IG51bGwgJiYgaW5wdXRTaGFwZVtpXSAhPSBudWxsICYmXG4gICAgICAgICAgICBpbnB1dFNoYXBlW2ldICE9PSBkaW1lbnNpb24pIHtcbiAgICAgICAgICBkaW1NaXNtYXRjaCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKGRpbU1pc21hdGNoKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBUaGUgc2hhcGUgb2YgdGhlIGlucHV0IHRlbnNvciBgICtcbiAgICAgICAgICAgIGAoJHtKU09OLnN0cmluZ2lmeShpbnB1dFNoYXBlKX0pIGRvZXMgbm90IGAgK1xuICAgICAgICAgICAgYG1hdGNoIHRoZSBleHBlY3RhdGlvbiBvZiBsYXllciAke3RoaXMubmFtZX06IGAgK1xuICAgICAgICAgICAgYCR7SlNPTi5zdHJpbmdpZnkodGhpcy5iYXRjaElucHV0U2hhcGUpfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIG91dHB1dCBzaGFwZShzKSBvZiBhIGxheWVyLlxuICAgKlxuICAgKiBPbmx5IGFwcGxpY2FibGUgaWYgdGhlIGxheWVyIGhhcyBvbmx5IG9uZSBpbmJvdW5kIG5vZGUsIG9yIGlmIGFsbCBpbmJvdW5kXG4gICAqIG5vZGVzIGhhdmUgdGhlIHNhbWUgb3V0cHV0IHNoYXBlLlxuICAgKlxuICAgKiBAcmV0dXJucyBPdXRwdXQgc2hhcGUgb3Igc2hhcGVzLlxuICAgKiBAdGhyb3dzIEF0dHJpYnV0ZUVycm9yOiBpZiB0aGUgbGF5ZXIgaXMgY29ubmVjdGVkIHRvIG1vcmUgdGhhbiBvbmUgaW5jb21pbmdcbiAgICogICBub2Rlcy5cbiAgICpcbiAgICogQGRvYyB7aGVhZGluZzogJ01vZGVscycsICdzdWJoZWFkaW5nJzogJ0NsYXNzZXMnfVxuICAgKi9cbiAgZ2V0IG91dHB1dFNoYXBlKCk6IFNoYXBlfFNoYXBlW10ge1xuICAgIGlmICh0aGlzLmluYm91bmROb2RlcyA9PSBudWxsIHx8IHRoaXMuaW5ib3VuZE5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEF0dHJpYnV0ZUVycm9yKFxuICAgICAgICAgIGBUaGUgbGF5ZXIgJHt0aGlzLm5hbWV9IGhhcyBuZXZlciBiZWVuIGNhbGxlZCBhbmQgdGh1cyBoYXMgbm8gYCArXG4gICAgICAgICAgYGRlZmluZWQgb3V0cHV0IHNoYXBlLmApO1xuICAgIH1cbiAgICBjb25zdCBhbGxPdXRwdXRTaGFwZXM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBub2RlIG9mIHRoaXMuaW5ib3VuZE5vZGVzKSB7XG4gICAgICBjb25zdCBzaGFwZVN0cmluZyA9IEpTT04uc3RyaW5naWZ5KG5vZGUub3V0cHV0U2hhcGVzKTtcbiAgICAgIGlmIChhbGxPdXRwdXRTaGFwZXMuaW5kZXhPZihzaGFwZVN0cmluZykgPT09IC0xKSB7XG4gICAgICAgIGFsbE91dHB1dFNoYXBlcy5wdXNoKHNoYXBlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFsbE91dHB1dFNoYXBlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IG91dHB1dFNoYXBlcyA9IHRoaXMuaW5ib3VuZE5vZGVzWzBdLm91dHB1dFNoYXBlcztcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG91dHB1dFNoYXBlcykgJiYgQXJyYXkuaXNBcnJheShvdXRwdXRTaGFwZXNbMF0pICYmXG4gICAgICAgICAgb3V0cHV0U2hhcGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gKG91dHB1dFNoYXBlcyBhcyBTaGFwZVtdKVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvdXRwdXRTaGFwZXM7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEF0dHJpYnV0ZUVycm9yKFxuICAgICAgICAgIGBUaGUgbGF5ZXIgJHt0aGlzLm5hbWV9IGhhcyBtdWx0aXBsZSBpbmJvdW5kIG5vZGVzIHdpdGggZGlmZmVyZW50IGAgK1xuICAgICAgICAgIGBvdXRwdXQgc2hhcGVzLiBIZW5jZSB0aGUgbm90aW9uIG9mIFwib3V0cHV0IHNoYXBlXCIgaXMgaWxsLWRlZmluZWQgYCArXG4gICAgICAgICAgYGZvciB0aGUgbGF5ZXIuYCk7XG4gICAgICAvLyBUT0RPKGNhaXMpOiBJbXBsZW1lbnQgZ2V0T3V0cHV0U2hhcGVBdCgpLlxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb3VudHMgdGhlIHRvdGFsIG51bWJlciBvZiBudW1iZXJzIChlLmcuLCBmbG9hdDMyLCBpbnQzMikgaW4gdGhlXG4gICAqIHdlaWdodHMuXG4gICAqXG4gICAqIEByZXR1cm5zIEFuIGludGVnZXIgY291bnQuXG4gICAqIEB0aHJvd3MgUnVudGltZUVycm9yOiBJZiB0aGUgbGF5ZXIgaXMgbm90IGJ1aWx0IHlldCAoaW4gd2hpY2ggY2FzZSBpdHNcbiAgICogICB3ZWlnaHRzIGFyZSBub3QgZGVmaW5lZCB5ZXQuKVxuICAgKlxuICAgKiBAZG9jIHtoZWFkaW5nOiAnTW9kZWxzJywgJ3N1YmhlYWRpbmcnOiAnQ2xhc3Nlcyd9XG4gICAqL1xuICBjb3VudFBhcmFtcygpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5idWlsdCkge1xuICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFcnJvcihcbiAgICAgICAgICBgWW91IHRyaWVkIHRvIGNhbGwgY291bnRQYXJhbXMoKSBvbiAke3RoaXMubmFtZX0sIGAgK1xuICAgICAgICAgIGBidXQgdGhlIGxheWVyIGlzIG5vdCBidWlsdCB5ZXQuIEJ1aWxkIGl0IGZpcnN0IGJ5IGNhbGxpbmcgYCArXG4gICAgICAgICAgYGJ1aWxkKGJhdGNoSW5wdXRTaGFwZSkuYCk7XG4gICAgfVxuICAgIHJldHVybiB2YXJpYWJsZV91dGlscy5jb3VudFBhcmFtc0luV2VpZ2h0cyh0aGlzLndlaWdodHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIGxheWVyIHdlaWdodHMuXG4gICAqXG4gICAqIE11c3QgYmUgaW1wbGVtZW50ZWQgb24gYWxsIGxheWVycyB0aGF0IGhhdmUgd2VpZ2h0cy5cbiAgICpcbiAgICogQ2FsbGVkIHdoZW4gYXBwbHkoKSBpcyBjYWxsZWQgdG8gY29uc3RydWN0IHRoZSB3ZWlnaHRzLlxuICAgKlxuICAgKiBAcGFyYW0gaW5wdXRTaGFwZSBBIGBTaGFwZWAgb3IgYXJyYXkgb2YgYFNoYXBlYCAodW51c2VkKS5cbiAgICpcbiAgICogQGRvYyB7aGVhZGluZzogJ01vZGVscycsICdzdWJoZWFkaW5nJzogJ0NsYXNzZXMnfVxuICAgKi9cbiAgYnVpbGQoaW5wdXRTaGFwZTogU2hhcGV8U2hhcGVbXSkge1xuICAgIHRoaXMuYnVpbHQgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWVzIG9mIHRoZSB3ZWlnaHRzIG9mIHRoZSBsYXllci5cbiAgICpcbiAgICogQHBhcmFtIHRyYWluYWJsZU9ubHkgV2hldGhlciB0byBnZXQgdGhlIHZhbHVlcyBvZiBvbmx5IHRyYWluYWJsZSB3ZWlnaHRzLlxuICAgKiBAcmV0dXJucyBXZWlnaHQgdmFsdWVzIGFzIGFuIGBBcnJheWAgb2YgYHRmLlRlbnNvcmBzLlxuICAgKlxuICAgKiBAZG9jIHtoZWFkaW5nOiAnTW9kZWxzJywgJ3N1YmhlYWRpbmcnOiAnQ2xhc3Nlcyd9XG4gICAqL1xuICBnZXRXZWlnaHRzKHRyYWluYWJsZU9ubHkgPSBmYWxzZSk6IFRlbnNvcltdIHtcbiAgICByZXR1cm4gYmF0Y2hHZXRWYWx1ZSh0cmFpbmFibGVPbmx5ID8gdGhpcy50cmFpbmFibGVXZWlnaHRzIDogdGhpcy53ZWlnaHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB3ZWlnaHRzIG9mIHRoZSBsYXllciwgZnJvbSBUZW5zb3JzLlxuICAgKlxuICAgKiBAcGFyYW0gd2VpZ2h0cyBhIGxpc3Qgb2YgVGVuc29ycy4gVGhlIG51bWJlciBvZiBhcnJheXMgYW5kIHRoZWlyIHNoYXBlXG4gICAqICAgbXVzdCBtYXRjaCBudW1iZXIgb2YgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIHdlaWdodHMgb2YgdGhlIGxheWVyIChpLmUuXG4gICAqICAgaXQgc2hvdWxkIG1hdGNoIHRoZSBvdXRwdXQgb2YgYGdldFdlaWdodHNgKS5cbiAgICpcbiAgICogQGV4Y2VwdGlvbiBWYWx1ZUVycm9yIElmIHRoZSBwcm92aWRlZCB3ZWlnaHRzIGxpc3QgZG9lcyBub3QgbWF0Y2ggdGhlXG4gICAqICAgbGF5ZXIncyBzcGVjaWZpY2F0aW9ucy5cbiAgICpcbiAgICogQGRvYyB7aGVhZGluZzogJ01vZGVscycsICdzdWJoZWFkaW5nJzogJ0NsYXNzZXMnfVxuICAgKi9cbiAgc2V0V2VpZ2h0cyh3ZWlnaHRzOiBUZW5zb3JbXSk6IHZvaWQge1xuICAgIHRpZHkoKCkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy53ZWlnaHRzO1xuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggIT09IHdlaWdodHMubGVuZ3RoKSB7XG4gICAgICAgIC8vIFRPRE8oY2Fpcyk6IFJlc3RvcmUgdGhlIGZvbGxvd2luZyBhbmQgdXNlIGBwcm92aWRlZFdlaWdodHNgLCBpbnN0ZWFkXG4gICAgICAgIC8vIG9mIGB3ZWlnaHRzYCBpbiB0aGUgZXJyb3IgbWVzc2FnZSwgb25jZSB0aGUgZGVlcGxlYXJuLmpzIGJ1ZyBpc1xuICAgICAgICAvLyBmaXhlZDogaHR0cHM6Ly9naXRodWIuY29tL1BBSVItY29kZS9kZWVwbGVhcm5qcy9pc3N1ZXMvNDk4IGNvbnN0XG4gICAgICAgIC8vIHByb3ZpZGVkV2VpZ2h0cyA9IEpTT04uc3RyaW5naWZ5KHdlaWdodHMpLnNsaWNlKDAsIDUwKTtcbiAgICAgICAgdGhyb3cgbmV3IFZhbHVlRXJyb3IoXG4gICAgICAgICAgICBgWW91IGNhbGxlZCBzZXRXZWlnaHRzKHdlaWdodHMpIG9uIGxheWVyIFwiJHt0aGlzLm5hbWV9XCIgYCArXG4gICAgICAgICAgICBgd2l0aCBhIHdlaWdodCBsaXN0IG9mIGxlbmd0aCAke3dlaWdodHMubGVuZ3RofSwgYCArXG4gICAgICAgICAgICBgYnV0IHRoZSBsYXllciB3YXMgZXhwZWN0aW5nICR7cGFyYW1zLmxlbmd0aH0gd2VpZ2h0cy4gYCArXG4gICAgICAgICAgICBgUHJvdmlkZWQgd2VpZ2h0czogJHt3ZWlnaHRzfS4uLmApO1xuICAgICAgfVxuICAgICAgaWYgKHBhcmFtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qgd2VpZ2h0VmFsdWVUdXBsZXM6IEFycmF5PFtMYXllclZhcmlhYmxlLCBUZW5zb3JdPiA9IFtdO1xuICAgICAgY29uc3QgcGFyYW1WYWx1ZXMgPSBiYXRjaEdldFZhbHVlKHBhcmFtcyk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtVmFsdWVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNvbnN0IHB2ID0gcGFyYW1WYWx1ZXNbaV07XG4gICAgICAgIGNvbnN0IHAgPSBwYXJhbXNbaV07XG4gICAgICAgIGNvbnN0IHcgPSB3ZWlnaHRzW2ldO1xuICAgICAgICBpZiAoIXV0aWwuYXJyYXlzRXF1YWwocHYuc2hhcGUsIHcuc2hhcGUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFZhbHVlRXJyb3IoXG4gICAgICAgICAgICAgIGBMYXllciB3ZWlnaHQgc2hhcGUgJHtwdi5zaGFwZX0gYCArXG4gICAgICAgICAgICAgIGBub3QgY29tcGF0aWJsZSB3aXRoIHByb3ZpZGVkIHdlaWdodCBzaGFwZSAke3cuc2hhcGV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgd2VpZ2h0VmFsdWVUdXBsZXMucHVzaChbcCwgd10pO1xuICAgICAgfVxuICAgICAgYmF0Y2hTZXRWYWx1ZSh3ZWlnaHRWYWx1ZVR1cGxlcyk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHdlaWdodCB2YXJpYWJsZSB0byB0aGUgbGF5ZXIuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIG5ldyB3ZWlnaHQgdmFyaWFibGUuXG4gICAqIEBwYXJhbSBzaGFwZSBUaGUgc2hhcGUgb2YgdGhlIHdlaWdodC5cbiAgICogQHBhcmFtIGR0eXBlIFRoZSBkdHlwZSBvZiB0aGUgd2VpZ2h0LlxuICAgKiBAcGFyYW0gaW5pdGlhbGl6ZXIgQW4gaW5pdGlhbGl6ZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSByZWd1bGFyaXplciBBIHJlZ3VsYXJpemVyIGluc3RhbmNlLlxuICAgKiBAcGFyYW0gdHJhaW5hYmxlIFdoZXRoZXIgdGhlIHdlaWdodCBzaG91bGQgYmUgdHJhaW5lZCB2aWEgYmFja3Byb3Agb3Igbm90XG4gICAqICAgKGFzc3VtaW5nIHRoYXQgdGhlIGxheWVyIGl0c2VsZiBpcyBhbHNvIHRyYWluYWJsZSkuXG4gICAqIEBwYXJhbSBjb25zdHJhaW50IEFuIG9wdGlvbmFsIHRyYWluYWJsZS5cbiAgICogQHJldHVybiBUaGUgY3JlYXRlZCB3ZWlnaHQgdmFyaWFibGUuXG4gICAqXG4gICAqIEBkb2Mge2hlYWRpbmc6ICdNb2RlbHMnLCAnc3ViaGVhZGluZyc6ICdDbGFzc2VzJ31cbiAgICovXG4gIHByb3RlY3RlZCBhZGRXZWlnaHQoXG4gICAgICBuYW1lOiBzdHJpbmcsIHNoYXBlOiBTaGFwZSwgZHR5cGU/OiBEYXRhVHlwZSwgaW5pdGlhbGl6ZXI/OiBJbml0aWFsaXplcixcbiAgICAgIHJlZ3VsYXJpemVyPzogUmVndWxhcml6ZXIsIHRyYWluYWJsZT86IGJvb2xlYW4sIGNvbnN0cmFpbnQ/OiBDb25zdHJhaW50LFxuICAgICAgZ2V0SW5pdGlhbGl6ZXJGdW5jPzogRnVuY3Rpb24pOiBMYXllclZhcmlhYmxlIHtcbiAgICAvLyBSZWplY3QgZHVwbGljYXRlIHdlaWdodCBuYW1lcy5cbiAgICBpZiAodGhpcy5fYWRkZWRXZWlnaHROYW1lcy5pbmRleE9mKG5hbWUpICE9PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IFZhbHVlRXJyb3IoXG4gICAgICAgICAgYER1cGxpY2F0ZSB3ZWlnaHQgbmFtZSAke25hbWV9IGZvciBsYXllciAke3RoaXMubmFtZX1gKTtcbiAgICB9XG4gICAgdGhpcy5fYWRkZWRXZWlnaHROYW1lcy5wdXNoKG5hbWUpO1xuXG4gICAgaWYgKGR0eXBlID09IG51bGwpIHtcbiAgICAgIGR0eXBlID0gJ2Zsb2F0MzInO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZhc3RXZWlnaHRJbml0RHVyaW5nQnVpbGQpIHtcbiAgICAgIGluaXRpYWxpemVyID0gZ2V0SW5pdGlhbGl6ZXJGdW5jICE9IG51bGwgPyBnZXRJbml0aWFsaXplckZ1bmMoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW5pdGlhbGl6ZXIoJ3plcm9zJyk7XG4gICAgfVxuICAgIGNvbnN0IGluaXRWYWx1ZSA9IGluaXRpYWxpemVyLmFwcGx5KHNoYXBlLCBkdHlwZSk7XG4gICAgY29uc3Qgd2VpZ2h0ID1cbiAgICAgICAgbmV3IExheWVyVmFyaWFibGUoaW5pdFZhbHVlLCBkdHlwZSwgbmFtZSwgdHJhaW5hYmxlLCBjb25zdHJhaW50KTtcbiAgICBpbml0VmFsdWUuZGlzcG9zZSgpO1xuICAgIC8vIFJlcXVlc3QgYmFja2VuZCBub3QgdG8gZGlzcG9zZSB0aGUgd2VpZ2h0cyBvZiB0aGUgbW9kZWwgb24gc2NvcGUoKSBleGl0LlxuICAgIGlmIChyZWd1bGFyaXplciAhPSBudWxsKSB7XG4gICAgICB0aGlzLmFkZExvc3MoKCkgPT4gcmVndWxhcml6ZXIuYXBwbHkod2VpZ2h0LnJlYWQoKSkpO1xuICAgIH1cbiAgICBpZiAodHJhaW5hYmxlID09IG51bGwpIHtcbiAgICAgIHRyYWluYWJsZSA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0cmFpbmFibGUpIHtcbiAgICAgIHRoaXMuX3RyYWluYWJsZVdlaWdodHMucHVzaCh3ZWlnaHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9ub25UcmFpbmFibGVXZWlnaHRzLnB1c2god2VpZ2h0KTtcbiAgICB9XG4gICAgcmV0dXJuIHdlaWdodDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZhc3Qtd2VpZ2h0LWluaXRpYWxpemF0aW9uIGZsYWcuXG4gICAqXG4gICAqIEluIGNhc2VzIHdoZXJlIHRoZSBpbml0aWFsaXplZCB3ZWlnaHQgdmFsdWVzIHdpbGwgYmUgaW1tZWRpYXRlbHlcbiAgICogb3ZlcndyaXR0ZW4gYnkgbG9hZGVkIHdlaWdodCB2YWx1ZXMgZHVyaW5nIG1vZGVsIGxvYWRpbmcsIHNldHRpbmdcbiAgICogdGhlIGZsYWcgdG8gYHRydWVgIHNhdmVzIHVubmVjZXNzYXJ5IGNhbGxzIHRvIHBvdGVudGlhbGx5IGV4cGVuc2l2ZVxuICAgKiBpbml0aWFsaXplcnMgYW5kIHNwZWVkcyB1cCB0aGUgbG9hZGluZyBwcm9jZXNzLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgVGFyZ2V0IHZhbHVlIG9mIHRoZSBmbGFnLlxuICAgKi9cbiAgc2V0RmFzdFdlaWdodEluaXREdXJpbmdCdWlsZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZmFzdFdlaWdodEluaXREdXJpbmdCdWlsZCA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBsb3NzZXMgdG8gdGhlIGxheWVyLlxuICAgKlxuICAgKiBUaGUgbG9zcyBtYXkgcG90ZW50aWFsbHkgYmUgY29uZGl0aW9uYWwgb24gc29tZSBpbnB1dHMgdGVuc29ycyxcbiAgICogZm9yIGluc3RhbmNlIGFjdGl2aXR5IGxvc3NlcyBhcmUgY29uZGl0aW9uYWwgb24gdGhlIGxheWVyJ3MgaW5wdXRzLlxuICAgKlxuICAgKiBAZG9jIHtoZWFkaW5nOiAnTW9kZWxzJywgJ3N1YmhlYWRpbmcnOiAnQ2xhc3Nlcyd9XG4gICAqL1xuICBhZGRMb3NzKGxvc3NlczogUmVndWxhcml6ZXJGbnxSZWd1bGFyaXplckZuW10pOiB2b2lkIHtcbiAgICBpZiAobG9zc2VzID09IG51bGwgfHwgQXJyYXkuaXNBcnJheShsb3NzZXMpICYmIGxvc3Nlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gVXBkYXRlIHRoaXMubG9zc2VzXG4gICAgbG9zc2VzID0gZ2VuZXJpY191dGlscy50b0xpc3QobG9zc2VzKTtcbiAgICBpZiAodGhpcy5fbG9zc2VzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5fbG9zc2VzICE9PSBudWxsKSB7XG4gICAgICB0aGlzLmxvc3Nlcy5wdXNoKC4uLmxvc3Nlcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIHRoZSBvdXRwdXQgc2hhcGUgb2YgdGhlIGxheWVyLlxuICAgKlxuICAgKiBBc3N1bWVzIHRoYXQgdGhlIGxheWVyIHdpbGwgYmUgYnVpbHQgdG8gbWF0Y2ggdGhhdCBpbnB1dCBzaGFwZSBwcm92aWRlZC5cbiAgICpcbiAgICogQHBhcmFtIGlucHV0U2hhcGUgQSBzaGFwZSAodHVwbGUgb2YgaW50ZWdlcnMpIG9yIGEgbGlzdCBvZiBzaGFwZSB0dXBsZXNcbiAgICogICAob25lIHBlciBvdXRwdXQgdGVuc29yIG9mIHRoZSBsYXllcikuIFNoYXBlIHR1cGxlcyBjYW4gaW5jbHVkZSBudWxsIGZvclxuICAgKiAgIGZyZWUgZGltZW5zaW9ucywgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyLlxuICAgKlxuICAgKiBAZG9jIHtoZWFkaW5nOiAnTW9kZWxzJywgJ3N1YmhlYWRpbmcnOiAnQ2xhc3Nlcyd9XG4gICAqL1xuICBjb21wdXRlT3V0cHV0U2hhcGUoaW5wdXRTaGFwZTogU2hhcGV8U2hhcGVbXSk6IFNoYXBlfFNoYXBlW10ge1xuICAgIHJldHVybiBpbnB1dFNoYXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIGFuIG91dHB1dCBtYXNrIHRlbnNvci5cbiAgICpcbiAgICogQHBhcmFtIGlucHV0cyBUZW5zb3Igb3IgbGlzdCBvZiB0ZW5zb3JzLlxuICAgKiBAcGFyYW0gbWFzayBUZW5zb3Igb3IgbGlzdCBvZiB0ZW5zb3JzLlxuICAgKlxuICAgKiBAcmV0dXJuIG51bGwgb3IgYSB0ZW5zb3IgKG9yIGxpc3Qgb2YgdGVuc29ycywgb25lIHBlciBvdXRwdXQgdGVuc29yIG9mIHRoZVxuICAgKiBsYXllcikuXG4gICAqL1xuICBjb21wdXRlTWFzayhpbnB1dHM6IFRlbnNvcnxUZW5zb3JbXSwgbWFzaz86IFRlbnNvcnxUZW5zb3JbXSk6IFRlbnNvclxuICAgICAgfFRlbnNvcltdIHtcbiAgICBpZiAoIXRoaXMuc3VwcG9ydHNNYXNraW5nKSB7XG4gICAgICBpZiAobWFzayAhPSBudWxsKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG1hc2spKSB7XG4gICAgICAgICAgbWFzay5mb3JFYWNoKG1hc2tFbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChtYXNrRWxlbWVudCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgICAgICAgICBgTGF5ZXIgJHt0aGlzLm5hbWV9IGRvZXMgbm90IHN1cHBvcnQgbWFza2luZywgYCArXG4gICAgICAgICAgICAgICAgICAnYnV0IHdhcyBwYXNzZWQgYW4gaW5wdXRNYXNrLicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgICAgIGBMYXllciAke3RoaXMubmFtZX0gZG9lcyBub3Qgc3VwcG9ydCBtYXNraW5nLCBgICtcbiAgICAgICAgICAgICAgJ2J1dCB3YXMgcGFzc2VkIGFuIGlucHV0TWFzay4nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gbWFza2luZyBub3QgZXhwbGljaXRseSBzdXBwb3J0ZWQ6IHJldHVybiBudWxsIGFzIG1hc2tcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBpZiBtYXNraW5nIGlzIGV4cGxpY3RseSBzdXBwb3J0ZWQsIGJ5IGRlZmF1bHRcbiAgICAvLyBjYXJyeSBvdmVyIHRoZSBpbnB1dCBtYXNrXG4gICAgcmV0dXJuIG1hc2s7XG4gIH1cblxuICBwcml2YXRlIHNldE1hc2tNZXRhZGF0YShcbiAgICAgIGlucHV0czogVGVuc29yfFRlbnNvcltdLCBvdXRwdXRzOiBUZW5zb3J8VGVuc29yW10sXG4gICAgICBwcmV2aW91c01hc2s/OiBUZW5zb3J8VGVuc29yW10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3VwcG9ydHNNYXNraW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0TWFza3MgPSB0aGlzLmNvbXB1dGVNYXNrKGlucHV0cywgcHJldmlvdXNNYXNrKTtcbiAgICBjb25zdCBvdXRwdXRzTGlzdCA9IGdlbmVyaWNfdXRpbHMudG9MaXN0KG91dHB1dHMpO1xuICAgIGNvbnN0IG91dHB1dE1hc2tzTGlzdCA9IGdlbmVyaWNfdXRpbHMudG9MaXN0KG91dHB1dE1hc2tzKTtcblxuICAgIGlmIChvdXRwdXRzTGlzdC5sZW5ndGggIT09IG91dHB1dE1hc2tzTGlzdC5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgJHt0aGlzLm5hbWV9IG91dHB1dHMgJHtvdXRwdXRzTGlzdC5sZW5ndGh9IHRlbnNvcnMgYCArXG4gICAgICAgICAgYGJ1dCAke291dHB1dHNMaXN0Lmxlbmd0aH0gbWFza3MgZm9yIHRob3NlIHRlbnNvcnNgKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvdXRwdXRzTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgb3V0cHV0c0xpc3RbaV0ua2VyYXNNYXNrID0gb3V0cHV0TWFza3NMaXN0W2ldO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcm5hbCBtZXRob2QgdG8gY3JlYXRlIGFuIGluYm91bmQgbm9kZSBmb3IgdGhlIGxheWVyLlxuICAgKlxuICAgKiBAcGFyYW0gaW5wdXRUZW5zb3JzIExpc3Qgb2YgaW5wdXQgdGVuc29ycy5cbiAgICogQHBhcmFtIG91dHB1dFRlbnNvcnMgTGlzdCBvZiBvdXRwdXQgdGVuc29ycy5cbiAgICogQHBhcmFtIGlucHV0TWFza3MgTGlzdCBvZiBpbnB1dCBtYXNrcyAoYSBtYXNrIGNhbiBiZSBhIHRlbnNvciwgb3IgbnVsbCkuXG4gICAqIEBwYXJhbSBvdXRwdXRNYXNrcyBMaXN0IG9mIG91dHB1dCBtYXNrcyAoYSBtYXNrIGNhbiBiZSBhIHRlbnNvciwgb3IgbnVsbCkuXG4gICAqIEBwYXJhbSBpbnB1dFNoYXBlcyBMaXN0IG9mIGlucHV0IHNoYXBlIHR1cGxlcy5cbiAgICogQHBhcmFtIG91dHB1dFNoYXBlcyBMaXN0IG9mIG91dHB1dCBzaGFwZSB0dXBsZXMuXG4gICAqIEBwYXJhbSBrd2FyZ3MgRGljdGlvbmFyeSBvZiBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0IHdlcmUgcGFzc2VkIHRvIHRoZVxuICAgKiAgIGBjYWxsYCBtZXRob2Qgb2YgdGhlIGxheWVyIGF0IHRoZSBjYWxsIHRoYXQgY3JlYXRlZCB0aGUgbm9kZS5cbiAgICovXG4gIHByaXZhdGUgYWRkSW5ib3VuZE5vZGUoXG4gICAgICBpbnB1dFRlbnNvcnM6IFN5bWJvbGljVGVuc29yfFN5bWJvbGljVGVuc29yW10sXG4gICAgICBvdXRwdXRUZW5zb3JzOiBTeW1ib2xpY1RlbnNvcnxTeW1ib2xpY1RlbnNvcltdLFxuICAgICAgaW5wdXRNYXNrczogVGVuc29yfFRlbnNvcltdLCBvdXRwdXRNYXNrczogVGVuc29yfFRlbnNvcltdLFxuICAgICAgaW5wdXRTaGFwZXM6IFNoYXBlfFNoYXBlW10sIG91dHB1dFNoYXBlczogU2hhcGV8U2hhcGVbXSxcbiAgICAgIGt3YXJnczoge30gPSBudWxsKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRUZW5zb3JMaXN0OiBTeW1ib2xpY1RlbnNvcltdID1cbiAgICAgICAgZ2VuZXJpY191dGlscy50b0xpc3QoaW5wdXRUZW5zb3JzKTtcbiAgICBvdXRwdXRUZW5zb3JzID0gZ2VuZXJpY191dGlscy50b0xpc3Qob3V0cHV0VGVuc29ycyk7XG4gICAgaW5wdXRNYXNrcyA9IGdlbmVyaWNfdXRpbHMudG9MaXN0KGlucHV0TWFza3MpO1xuICAgIG91dHB1dE1hc2tzID0gZ2VuZXJpY191dGlscy50b0xpc3Qob3V0cHV0TWFza3MpO1xuICAgIGlucHV0U2hhcGVzID0gdHlwZXNfdXRpbHMubm9ybWFsaXplU2hhcGVMaXN0KGlucHV0U2hhcGVzKTtcbiAgICBvdXRwdXRTaGFwZXMgPSB0eXBlc191dGlscy5ub3JtYWxpemVTaGFwZUxpc3Qob3V0cHV0U2hhcGVzKTtcblxuICAgIC8vIENvbGxlY3QgaW5wdXQgdGVuc29yKHMpIGNvb3JkaW5hdGVzLlxuICAgIGNvbnN0IGluYm91bmRMYXllcnM6IExheWVyW10gPSBbXTtcbiAgICBjb25zdCBub2RlSW5kaWNlczogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCB0ZW5zb3JJbmRpY2VzOiBudW1iZXJbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgeCBvZiBpbnB1dFRlbnNvckxpc3QpIHtcbiAgICAgIC8qXG4gICAgICAgKiBUT0RPKG1pY2hhZWx0ZXJyeSk6IEtlcmFzIGFkZHMgdGhpcyB2YWx1ZSB0byB0ZW5zb3JzOyBpdCdzIG5vdFxuICAgICAgICogY2xlYXIgd2hldGhlciB3ZSdsbCB1c2UgdGhpcyBvciBub3QuXG4gICAgICAgKi9cbiAgICAgIGluYm91bmRMYXllcnMucHVzaCh4LnNvdXJjZUxheWVyKTtcbiAgICAgIG5vZGVJbmRpY2VzLnB1c2goeC5ub2RlSW5kZXgpO1xuICAgICAgdGVuc29ySW5kaWNlcy5wdXNoKHgudGVuc29ySW5kZXgpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBub2RlLCBhZGQgaXQgdG8gaW5ib3VuZCBub2Rlcy5cbiAgICAvLyAoVGhpcyBjYWxsIGhhcyBzaWRlIGVmZmVjdHMuKVxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11bnVzZWQtZXhwcmVzc2lvblxuICAgIG5ldyBOb2RlKFxuICAgICAgICB7XG4gICAgICAgICAgb3V0Ym91bmRMYXllcjogdGhpcyxcbiAgICAgICAgICBpbmJvdW5kTGF5ZXJzLFxuICAgICAgICAgIG5vZGVJbmRpY2VzLFxuICAgICAgICAgIHRlbnNvckluZGljZXMsXG4gICAgICAgICAgaW5wdXRUZW5zb3JzOiBpbnB1dFRlbnNvckxpc3QsXG4gICAgICAgICAgb3V0cHV0VGVuc29ycyxcbiAgICAgICAgICBpbnB1dE1hc2tzLFxuICAgICAgICAgIG91dHB1dE1hc2tzLFxuICAgICAgICAgIGlucHV0U2hhcGVzLFxuICAgICAgICAgIG91dHB1dFNoYXBlc1xuICAgICAgICB9LFxuICAgICAgICBrd2FyZ3MpO1xuXG4gICAgLy8gVXBkYXRlIHRlbnNvciBoaXN0b3J5XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvdXRwdXRUZW5zb3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAvLyBUT0RPKG1pY2hhZWx0ZXJyeTogX3VzZXNfbGVhcm5pbmdfcGhhc2Ugbm90IHRyYWNrZWQuXG4gICAgICBvdXRwdXRUZW5zb3JzW2ldLnNvdXJjZUxheWVyID0gdGhpcztcbiAgICAgIG91dHB1dFRlbnNvcnNbaV0ubm9kZUluZGV4ID0gdGhpcy5pbmJvdW5kTm9kZXMubGVuZ3RoIC0gMTtcbiAgICAgIG91dHB1dFRlbnNvcnNbaV0udGVuc29ySW5kZXggPSBpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb25maWcgb2YgdGhlIGxheWVyLlxuICAgKlxuICAgKiBBIGxheWVyIGNvbmZpZyBpcyBhIFRTIGRpY3Rpb25hcnkgKHNlcmlhbGl6YWJsZSlcbiAgICogY29udGFpbmluZyB0aGUgY29uZmlndXJhdGlvbiBvZiBhIGxheWVyLlxuICAgKiBUaGUgc2FtZSBsYXllciBjYW4gYmUgcmVpbnN0YW50aWF0ZWQgbGF0ZXJcbiAgICogKHdpdGhvdXQgaXRzIHRyYWluZWQgd2VpZ2h0cykgZnJvbSB0aGlzIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIFRoZSBjb25maWcgb2YgYSBsYXllciBkb2VzIG5vdCBpbmNsdWRlIGNvbm5lY3Rpdml0eVxuICAgKiBpbmZvcm1hdGlvbiwgbm9yIHRoZSBsYXllciBjbGFzcyBuYW1lLiAgVGhlc2UgYXJlIGhhbmRsZWRcbiAgICogYnkgJ0NvbnRhaW5lcicgKG9uZSBsYXllciBvZiBhYnN0cmFjdGlvbiBhYm92ZSkuXG4gICAqXG4gICAqIFBvcnRpbmcgTm90ZTogVGhlIFRTIGRpY3Rpb25hcnkgZm9sbG93cyBUUyBuYW1pbmcgc3RhbmRhcmRzIGZvclxuICAgKiBrZXlzLCBhbmQgdXNlcyB0ZmpzLWxheWVycyB0eXBlLXNhZmUgRW51bXMuICBTZXJpYWxpemF0aW9uIG1ldGhvZHNcbiAgICogc2hvdWxkIHVzZSBhIGhlbHBlciBmdW5jdGlvbiB0byBjb252ZXJ0IHRvIHRoZSBweXRob25pYyBzdG9yYWdlXG4gICAqIHN0YW5kYXJkLiAoc2VlIHNlcmlhbGl6YXRpb25fdXRpbHMuY29udmVydFRzVG9QeXRob25pYylcbiAgICpcbiAgICogQHJldHVybnMgVFMgZGljdGlvbmFyeSBvZiBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAZG9jIHtoZWFkaW5nOiAnTW9kZWxzJywgJ3N1YmhlYWRpbmcnOiAnQ2xhc3Nlcyd9XG4gICAqL1xuICBnZXRDb25maWcoKTogc2VyaWFsaXphdGlvbi5Db25maWdEaWN0IHtcbiAgICBjb25zdCBjb25maWc6XG4gICAgICAgIHNlcmlhbGl6YXRpb24uQ29uZmlnRGljdCA9IHtuYW1lOiB0aGlzLm5hbWUsIHRyYWluYWJsZTogdGhpcy50cmFpbmFibGV9O1xuICAgIGlmICh0aGlzLmJhdGNoSW5wdXRTaGFwZSAhPSBudWxsKSB7XG4gICAgICBjb25maWdbJ2JhdGNoSW5wdXRTaGFwZSddID0gdGhpcy5iYXRjaElucHV0U2hhcGU7XG4gICAgfVxuICAgIGlmICh0aGlzLmR0eXBlICE9IG51bGwpIHtcbiAgICAgIGNvbmZpZ1snZHR5cGUnXSA9IHRoaXMuZHR5cGU7XG4gICAgfVxuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICAvKipcbiAgICogRGlzcG9zZSB0aGUgd2VpZ2h0IHZhcmlhYmxlcyB0aGF0IHRoaXMgTGF5ZXIgaW5zdGFuY2UgaG9sZHMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IE51bWJlciBvZiBkaXNwb3NlZCB2YXJpYWJsZXMuXG4gICAqL1xuICBwcm90ZWN0ZWQgZGlzcG9zZVdlaWdodHMoKTogbnVtYmVyIHtcbiAgICB0aGlzLndlaWdodHMuZm9yRWFjaCh3ZWlnaHQgPT4gd2VpZ2h0LmRpc3Bvc2UoKSk7XG4gICAgcmV0dXJuIHRoaXMud2VpZ2h0cy5sZW5ndGg7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXNzZXJ0Tm90RGlzcG9zZWQoKSB7XG4gICAgaWYgKHRoaXMuX3JlZkNvdW50ID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYExheWVyICcke3RoaXMubmFtZX0nIGlzIGFscmVhZHkgZGlzcG9zZWQuYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEF0dGVtcHQgdG8gZGlzcG9zZSBsYXllcidzIHdlaWdodHMuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGRlY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBMYXllciBvYmplY3QgYnkgMS5cbiAgICpcbiAgICogQSBMYXllciBpcyByZWZlcmVuY2UtY291bnRlZC4gSXRzIHJlZmVyZW5jZSBjb3VudCBpcyBpbmNyZW1lbnRlZCBieSAxXG4gICAqIHRoZSBmaXJzdCBpdGVtIGl0cyBgYXBwbHkoKWAgbWV0aG9kIGlzIGNhbGxlZCBhbmQgd2hlbiBpdCBiZWNvbWVzIGEgcGFydFxuICAgKiBvZiBhIG5ldyBgTm9kZWAgKHRocm91Z2ggY2FsbGluZyB0aGUgYGFwcGx5KClgIG1ldGhvZCBvbiBhXG4gICAqIGB0Zi5TeW1ib2xpY1RlbnNvcmApLlxuICAgKlxuICAgKiBJZiB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGEgTGF5ZXIgYmVjb21lcyAwLCBhbGwgdGhlIHdlaWdodHMgd2lsbCBiZVxuICAgKiBkaXNwb3NlZCBhbmQgdGhlIHVuZGVybHlpbmcgbWVtb3J5IChlLmcuLCB0aGUgdGV4dHVyZXMgYWxsb2NhdGVkIGluIFdlYkdMKVxuICAgKiB3aWxsIGJlIGZyZWVkLlxuICAgKlxuICAgKiBOb3RlOiBJZiB0aGUgcmVmZXJlbmNlIGNvdW50IGlzIGdyZWF0ZXIgdGhhbiAwIGFmdGVyIHRoZSBkZWNyZW1lbnQsIHRoZVxuICAgKiB3ZWlnaHRzIG9mIHRoZSBMYXllciB3aWxsICpub3QqIGJlIGRpc3Bvc2VkLlxuICAgKlxuICAgKiBBZnRlciBhIExheWVyIGlzIGRpc3Bvc2VkLCBpdCBjYW5ub3QgYmUgdXNlZCBpbiBjYWxscyBzdWNoIGFzIGBhcHBseSgpYCxcbiAgICogYGdldFdlaWdodHMoKWAgb3IgYHNldFdlaWdodHMoKWAgYW55bW9yZS5cbiAgICpcbiAgICogQHJldHVybnMgQSBEaXNwb3NlUmVzdWx0IE9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgZmllbGRzOlxuICAgKiAgIC0gcmVmQ291bnRBZnRlckRpc3Bvc2U6IFRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIENvbnRhaW5lciBhZnRlciB0aGlzXG4gICAqICAgICBgZGlzcG9zZSgpYCBjYWxsLlxuICAgKiAgIC0gbnVtRGlzcG9zZWRWYXJpYWJsZXM6IE51bWJlciBvZiBgdGYuVmFyaWFibGVgcyAoaS5lLiwgd2VpZ2h0cykgZGlzcG9zZWRcbiAgICogICAgIGR1cmluZyB0aGlzIGBkaXNwb3NlKClgIGNhbGwuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgbGF5ZXIgaXMgbm90IGJ1aWx0IHlldCwgb3IgaWYgdGhlIGxheWVyIGhhcyBhbHJlYWR5XG4gICAqICAgYmVlbiBkaXNwb3NlZC5cbiAgICpcbiAgICogQGRvYyB7aGVhZGluZzogJ01vZGVscycsICdzdWJoZWFkaW5nJzogJ0NsYXNzZXMnfVxuICAgKi9cbiAgZGlzcG9zZSgpOiBEaXNwb3NlUmVzdWx0IHtcbiAgICBpZiAoIXRoaXMuYnVpbHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2Fubm90IGRpc3Bvc2UgTGF5ZXIgJHt0aGlzLm5hbWV9IGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuIGAgK1xuICAgICAgICAgIGBidWlsdCB5ZXQuYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3JlZkNvdW50ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYENhbm5vdCBkaXNwb3NlIExheWVyICR7dGhpcy5uYW1lfSBiZWNhdXNlIGl0IGhhcyBub3QgYmVlbiB1c2VkIGAgK1xuICAgICAgICAgIGB5ZXQuYCk7XG4gICAgfVxuXG4gICAgdGhpcy5hc3NlcnROb3REaXNwb3NlZCgpO1xuXG4gICAgbGV0IG51bURpc3Bvc2VkVmFyaWFibGVzID0gMDtcbiAgICBpZiAoLS10aGlzLl9yZWZDb3VudCA9PT0gMCkge1xuICAgICAgbnVtRGlzcG9zZWRWYXJpYWJsZXMgPSB0aGlzLmRpc3Bvc2VXZWlnaHRzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtyZWZDb3VudEFmdGVyRGlzcG9zZTogdGhpcy5fcmVmQ291bnQsIG51bURpc3Bvc2VkVmFyaWFibGVzfTtcbiAgfVxufVxuXG4vKipcbiAqIENvbGxlY3RzIHRoZSBpbnB1dCBzaGFwZShzKSBvZiBhIGxpc3Qgb2YgYHRmLlRlbnNvcmBzIG9yXG4gKiBgdGYuU3ltYm9saWNUZW5zb3Jgcy5cbiAqXG4gKiBUT0RPKG1pY2hhZWx0ZXJyeSk6IFVwZGF0ZSBQeUtlcmFzIGRvY3MgKGJhY2twb3J0KS5cbiAqXG4gKiBAcGFyYW0gaW5wdXRUZW5zb3JzIExpc3Qgb2YgaW5wdXQgdGVuc29ycyAob3Igc2luZ2xlIGlucHV0IHRlbnNvcikuXG4gKlxuICogQHJldHVybiBMaXN0IG9mIHNoYXBlIHR1cGxlcyAob3Igc2luZ2xlIHR1cGxlKSwgb25lIHR1cGxlIHBlciBpbnB1dC5cbiAqL1xuZnVuY3Rpb24gY29sbGVjdElucHV0U2hhcGUoaW5wdXRUZW5zb3JzOiBTeW1ib2xpY1RlbnNvcnxTeW1ib2xpY1RlbnNvcltdfFRlbnNvcnxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlbnNvcltdKTogU2hhcGV8U2hhcGVbXSB7XG4gIGlucHV0VGVuc29ycyA9XG4gICAgICBnZW5lcmljX3V0aWxzLnRvTGlzdChpbnB1dFRlbnNvcnMpIGFzIFN5bWJvbGljVGVuc29yW10gfCBUZW5zb3JbXTtcbiAgY29uc3Qgc2hhcGVzOiBTaGFwZVtdID0gW107XG4gIGZvciAoY29uc3QgeCBvZiBpbnB1dFRlbnNvcnMpIHtcbiAgICBzaGFwZXMucHVzaCh4LnNoYXBlKTtcbiAgfVxuICByZXR1cm4gZ2VuZXJpY191dGlscy5zaW5nbGV0b25PckFycmF5KHNoYXBlcyk7XG59XG5cbi8qKlxuICogR3Vlc3NlcyBvdXRwdXQgZHR5cGUgYmFzZWQgb24gaW5wdXRzLlxuICpcbiAqIEF0IHByZXNlbnQsIGp1c3QgcmV0dXJucyAnZmxvYXQzMicgZm9yIGFueSBpbnB1dC5cbiAqXG4gKiBAcGFyYW0gaW5wdXRUZW5zb3JzIExpc3Qgb2YgaW5wdXQgdGVuc29ycyAob3Igc2luZ2xlIGlucHV0IHRlbnNvcikuXG4gKlxuICogQHJldHVybiBUaGUgZ3Vlc3NlZCBEVHlwZS4gQXQgcHJlc2VudCwgYWx3YXlzIHJldHVybnMgJ2Zsb2F0MzInLlxuICovXG5mdW5jdGlvbiBndWVzc091dHB1dERUeXBlKGlucHV0VGVuc29yczogU3ltYm9saWNUZW5zb3J8U3ltYm9saWNUZW5zb3JbXXxUZW5zb3J8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFRlbnNvcltdKTogRGF0YVR5cGUge1xuICByZXR1cm4gJ2Zsb2F0MzInO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGxpc3Qgb2YgaW5wdXQgdGVuc29ycyBuZWNlc3NhcnkgdG8gY29tcHV0ZSBgdGVuc29yYC5cbiAqXG4gKiBPdXRwdXQgd2lsbCBhbHdheXMgYmUgYSBsaXN0IG9mIHRlbnNvcnMgKHBvdGVudGlhbGx5IHdpdGggMSBlbGVtZW50KS5cbiAqXG4gKiBAcGFyYW0gdGVuc29yIFRoZSB0ZW5zb3IgdG8gc3RhcnQgZnJvbS5cbiAqIEBwYXJhbSBsYXllciBPcmlnaW4gbGF5ZXIgb2YgdGhlIHRlbnNvci5cbiAqIEBwYXJhbSBub2RlSW5kZXggT3JpZ2luIG5vZGUgaW5kZXggb2YgdGhlIHRlbnNvci5cbiAqXG4gKiBAcmV0dXJuIEFycmF5IG9mIGlucHV0IHRlbnNvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTb3VyY2VJbnB1dHMoXG4gICAgdGVuc29yOiBTeW1ib2xpY1RlbnNvciwgbGF5ZXI/OiBMYXllcixcbiAgICBub2RlSW5kZXg/OiBudW1iZXIpOiBTeW1ib2xpY1RlbnNvcltdIHtcbiAgaWYgKGxheWVyID09IG51bGwgfHwgKG5vZGVJbmRleCAhPSBudWxsICYmIG5vZGVJbmRleCA+IDApKSB7XG4gICAgbGF5ZXIgPSB0ZW5zb3Iuc291cmNlTGF5ZXI7XG4gICAgbm9kZUluZGV4ID0gdGVuc29yLm5vZGVJbmRleDtcbiAgfVxuICBpZiAobGF5ZXIuaW5ib3VuZE5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbdGVuc29yXTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBub2RlID0gbGF5ZXIuaW5ib3VuZE5vZGVzW25vZGVJbmRleF07XG4gICAgaWYgKG5vZGUuaW5ib3VuZExheWVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBub2RlLmlucHV0VGVuc29ycztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc291cmNlVGVuc29yczogU3ltYm9saWNUZW5zb3JbXSA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmluYm91bmRMYXllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgeCA9IG5vZGUuaW5wdXRUZW5zb3JzW2ldO1xuICAgICAgICBjb25zdCBsYXllciA9IG5vZGUuaW5ib3VuZExheWVyc1tpXTtcbiAgICAgICAgY29uc3Qgbm9kZUluZGV4ID0gbm9kZS5ub2RlSW5kaWNlc1tpXTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNTb3VyY2VzID0gZ2V0U291cmNlSW5wdXRzKHgsIGxheWVyLCBub2RlSW5kZXgpO1xuICAgICAgICAvLyBBdm9pZCBpbnB1dCByZWR1bmRhbmN5LlxuICAgICAgICBmb3IgKGNvbnN0IHggb2YgcHJldmlvdXNTb3VyY2VzKSB7XG4gICAgICAgICAgaWYgKHNvdXJjZVRlbnNvcnMuaW5kZXhPZih4KSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHNvdXJjZVRlbnNvcnMucHVzaCh4KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzb3VyY2VUZW5zb3JzO1xuICAgIH1cbiAgfVxufVxuXG50eXBlIE1heWJlU3ltYm9saWMgPSBTeW1ib2xpY1RlbnNvcnxUZW5zb3I7XG5cbmZ1bmN0aW9uIGNoZWNrQWxsU3ltYm9saWModGVuc29yczogTWF5YmVTeW1ib2xpY3xNYXliZVN5bWJvbGljW10pOlxuICAgIHRlbnNvcnMgaXMgU3ltYm9saWNUZW5zb3J8U3ltYm9saWNUZW5zb3JbXSB7XG4gIGxldCBhbGxBcmVTeW1ib2xpYyA9IHRydWU7XG4gIGZvciAoY29uc3QgdGVuc29yIG9mIGdlbmVyaWNfdXRpbHMudG9MaXN0KHRlbnNvcnMpKSB7XG4gICAgaWYgKCEodGVuc29yIGluc3RhbmNlb2YgU3ltYm9saWNUZW5zb3IpKSB7XG4gICAgICBhbGxBcmVTeW1ib2xpYyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBhbGxBcmVTeW1ib2xpYztcbn1cblxuZnVuY3Rpb24gY2hlY2tOb25lU3ltYm9saWModGVuc29yczogTWF5YmVTeW1ib2xpY3xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heWJlU3ltYm9saWNbXSk6IHRlbnNvcnMgaXMgVGVuc29yfFRlbnNvcltdIHtcbiAgbGV0IG5vbmVBcmVTeW1ib2xpYyA9IHRydWU7XG4gIGZvciAoY29uc3QgdGVuc29yIG9mIGdlbmVyaWNfdXRpbHMudG9MaXN0KHRlbnNvcnMpKSB7XG4gICAgaWYgKHRlbnNvciBpbnN0YW5jZW9mIFN5bWJvbGljVGVuc29yKSB7XG4gICAgICBub25lQXJlU3ltYm9saWMgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbm9uZUFyZVN5bWJvbGljO1xufVxuIl19"],"names":["InputSpec","args","SymbolicTensor","dtype","shape","sourceLayer","inputs","callArgs","name","outputTensorIndex","getNextUniqueTensorId","getScopedTensorName","getUniqueTensorName","_nextNodeID","Node","layer","inboundNames","_nextLayerID","Layer","serialization.Serializable","prefix","generic_utils.toSnakeCase","getUid","batchInputShape","batchSize","nodeIndex","attrName","RuntimeError","ValueError","generic_utils.singletonOrArray","AttributeError","lossFn","built","trainable","w","weights","inputsList","generic_utils.toList","inputSpec","inputIndex","x","spec","ndim","xShape","key","axis","value","xShapeAtAxis","i","specDim","dim","kwargs","callHook","allAreSymbolic","checkAllSymbolic","noneAreSymbolic","checkNoneSymbolic","nameScope","inputShapes","xElem","output","outputList","outputListCopy","NotImplementedError","inputShape","collectInputShape","outputShape","outputDType","guessOutputDType","index","dimMismatch","dimension","allOutputShapes","node","shapeString","outputShapes","variable_utils.countParamsInWeights","trainableOnly","batchGetValue","tidy","params","weightValueTuples","paramValues","pv","p","util.arraysEqual","batchSetValue","initializer","regularizer","constraint","getInitializerFunc","getInitializer","initValue","weight","LayerVariable","losses","mask","maskElement","outputs","previousMask","outputMasks","outputsList","outputMasksList","inputTensors","outputTensors","inputMasks","inputTensorList","types_utils.normalizeShapeList","inboundLayers","nodeIndices","tensorIndices","config","numDisposedVariables","shapes","getSourceInputs","tensor","sourceTensors","previousSources","tensors"],"mappings":"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","x_google_ignoreList":[0]}
|