From c2d48f0e38a7fe1bd8c839c05a3b40424da85f28 Mon Sep 17 00:00:00 2001 From: Joey Lee Date: Fri, 22 Mar 2019 19:37:32 -0400 Subject: [PATCH] =?UTF-8?q?Release=20v0.2.2=20=F0=9F=8E=89=20(#331)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Updated issues template and added PR template (#315) * added github issue template * updated issue template * updated ISSUE_TEMPLATE with friendlier wording and structure * added pr template * added branch notes * Hi! I noticed that the changes made here: https://github.com/ml5js/ml5-library/pull/295 have not made their way into the documentation! (#318) * Updated issues template and added PR template (#315) * added github issue template * updated issue template * updated ISSUE_TEMPLATE with friendlier wording and structure * added pr template * added branch notes * Updated CONTRIBUTING.md with npm run manual-test * Hi! I noticed that the changes made here: https://github.com/ml5js/ml5-library/pull/295 have not made their way into the documentation! (#318) (#319) * Updated issues template and added PR template (#315) * added github issue template * updated issue template * updated ISSUE_TEMPLATE with friendlier wording and structure * added pr template * added branch notes * Updated CONTRIBUTING.md with npm run manual-test * Add tests to CharRNN (#307) (#320) * add tests to CharRNN * test(CharRNN): add tests to CharRNN added descriptive tests to ensure CharRNN behaves like its example * remove dist * Updated CONTRIBUTING docs and README (#322) * updated readme specifying versions for lib * added documentation to contributing.md * added updates * added label and confidence as output for yolo results (#316) * added label and confidence as output * updates yolo test to use label instead of className * Increase test timeout (#321) * added label and confidence as output * updates yolo test to use label instead of className * set jasmine.DEFAULT_TIMEOUT_INTERVAL to 60000ms * Merges in https://github.com/ml5js/ml5-library/pull/313 via master using deprecating-master branch (#323) * Add tests to CharRNN (#307) * add tests to CharRNN * test(CharRNN): add tests to CharRNN added descriptive tests to ensure CharRNN behaves like its example * remove dist * check preload support for other nets and classifiers (#313) Adds specified nets to support preload // TODO: add examples showing appropriate use of preload * added v0.2.2 to package.json in anticipation of new release * Fixing an issue with prettier and eslint (#324) * Fixing an issue with prettier and eslint There is a conflict between arrow syntax rules in airbnb eslint configuration and the way default prettier works in VSCode. These additional setting should help anyone using VSCode with autoformat + prettier to not run into problems building the library. I am open to better ways of handling this of course! (Note the changes in ImageClassifier are trivial and just testing). * adding eslint-config-prettier as dev dependency * trivial change to run tests again * Adjust charrnn test option length (#326) * changed 500 to 100 to shorted test time * fixed .tobe() to match option * changed vocab size to 64 * changed timeout to 12000 * Adjust charrnn length - comment 2nd test for now (#329) * changed 500 to 100 to shorted test time * fixed .tobe() to match option * changed vocab size to 64 * changed timeout to 12000 * comment out second charRNN test for now to allow merging PRs * Forcing magenta dependency to 0.1.2 (#328) The SketchRNN example doesn't work with more recent magenta (0.1.4) probably due to us lagging behind in versions of tf.js? * SketchRNN creation function should be lowercase (#325) This is related to the discussion in #297. * added v0.2.2 to package.json in anticipation of new release (#330) hooray adding release v0.2.2 * added latest v0.2.2 --- .eslintrc.json | 2 +- .github/ISSUE_TEMPLATE.md | 32 ++++---- .github/PULL_REQUEST_TEMPLATE.md | 31 ++++++++ .gitignore | 1 - .vscode/settings.json | 5 ++ CONTRIBUTING.md | 132 ++++++++++++++++++++++++++++--- README.md | 14 +++- assets/header.png | Bin 0 -> 302617 bytes assets/ml5-localhost.png | Bin 0 -> 683987 bytes assets/ml5-webpack-build.png | Bin 0 -> 392523 bytes dist/ml5.min.js | 14 ++-- dist/ml5.min.js.map | 2 +- package-lock.json | 67 ++++++++++------ package.json | 5 +- src/CharRNN/index_test.js | 58 +++++++++++--- src/ImageClassifier/index.js | 28 +++++-- src/SketchRNN/index.js | 6 +- src/Word2vec/index_test.js | 2 +- src/YOLO/index.js | 4 +- src/YOLO/index_test.js | 2 +- src/index.js | 20 ++--- 21 files changed, 319 insertions(+), 106 deletions(-) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .vscode/settings.json create mode 100644 assets/header.png create mode 100644 assets/ml5-localhost.png create mode 100644 assets/ml5-webpack-build.png diff --git a/.eslintrc.json b/.eslintrc.json index 141f79d30..dc1a72230 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,5 +1,5 @@ { - "extends": "airbnb-base", + "extends": ["airbnb-base", "prettier"], "globals": { "fetch": false, "document": true diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 3dda4a9e3..5ffb6cc03 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,27 +1,23 @@ -## Nature of issue? +## β†’ Description πŸ“ -- [ ] Found a bug -- [ ] Existing feature enhancement -- [ ] New feature request -- [ ] Other +A clear and concise description of what the issue is about. Let us know if you: +- found a bug πŸ› +- want to suggest an update πŸ’‘ +- have an idea for a new feature πŸ†• -*** -## Details about the Bug: -> Please describe the bug you've encountered. Make sure to include the following information below. -### Web browser and version: (e.g. Firefox version 65, Chrome version 71.0) -### Operating System: (e.g. MacOS, Windows, Ubuntu) +## β†’ Screenshots πŸ–Ό +(Any relevant screenshots, sketches, or helpful concept diagrams) -### Steps to reproduce this bug: -*** -## Existing Feature Enhancement details: -> Please describe the feature enhancement you're hoping to see. +## β†’ Helpful Information πŸ¦„ +A list of relevant information for this issue. This will help people navigate the project and offer some clues of where to start. Depending on the nature of this issue, important and helpful information might include: -*** - -## New feature details: -> Please describe the new feature you're hoping to see. \ No newline at end of file +- **Web browser and version** (e.g. Firefox version 65, Chrome version 71.0) +- **Operating System** (e.g. MacOS, Windows, Ubuntu) +- Steps to reproduce the issue +- ml5 version you're using +- Links to example code in the [p5 web editor](https://editor.p5js.org) or other online shareable code editor diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..45766b101 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,31 @@ + +## β†’ Submit changes to the relevant branch 🌲 + +We have 2 branches you can submit to, **development** or **release**. You'd make us so happy 😊 if you submitted your pull request to the branch that is most relevant for your submission. + +- for pull requests related to **new features** πŸ†• make sure to use the **development** branch +- for pull requests related to bug πŸ›fixes of the existing stable release, make sure your pull request goes to the **release** branch. + + +## β†’ Description πŸ“ + +A clear and concise description of what the pull request is about. Let us know if you are: + +- fixing a bug πŸ› +- adding an update πŸ›  +- submitting a new feature πŸ†• + +## β†’ Screenshots πŸ–Ό +(Any relevant screenshots, sketches, or helpful concept diagrams - these are helpful for our release notes and for getting people excited about your super cool feature and/or fix!) + + +## β†’ Relevant Example or Paired Pull Request to [ml5-examples](https://github.com/ml5js/ml5-examples) πŸ¦„ + +In order to help the ml5 team understand your pull request, we ask that you please submit an example to [ml5-examples](https://github.com/ml5js/ml5-examples) showcasing how your integrated feature works. You're also welcome to show how this works by providing code that can be easily run by others. + +## β†’ Relevant documentation 🌴 + +Write a few notes about your pull request. Document any functionality that might be helpful for others who want to run and test your changes. If we don't know how to make use of your contribution, we won't be able t integrate it! πŸ™ + + + diff --git a/.gitignore b/.gitignore index 1cb107c41..f3a9fa55b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ examples/es6/node_modules experiments/node_modules node_modules **/npm-debug.log -.vscode *.DS_STORE experiments manual-test diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..5738b5d0a --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "prettier.trailingComma": "all", + "prettier.printWidth": 100, + "prettier.arrowParens": "avoid" +} \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a33041ed3..f3cd7abfd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,22 +1,122 @@ # How to Contribute - -This project is still a work in progress, but we encourage everyone to join, propose ideas and help in the development! +> Welcome to the ml5 project! Developing ml5 is not just about developing machine learning software, it is about making machine learning approachable for a broad audience of artists, creative coders, and students. The library provides access to machine learning algorithms and models in the browser, building on top of TensorFlow.js with no other external dependencies. The library is supported by code examples, tutorials, and sample datasets with an emphasis on ethical computing. Bias in data, stereotypical harms, and responsible crowdsourcing are part of the documentation around data collection and usage. We're building **friendly** machine learning for the web - we're glad you're here! + +![friendly machine learning for the web](assets/header.png) + +## The ml5 ecosystem (last updated: 22, March 2019) + +ml5.js is comprised a number of sister repositories which you can find at the [ml5 github organization - github.com/ml5js](https://github.com/ml5js). As a contributor of ml5 you should be aware of the other parallel repositories of the ml5 project. + +- **The 3 main repositories you'll likely be working with**: + + [ml5-library]([https://github.com/ml5js](https://github.com/ml5js/ml5-library)) + * this is the main ml5js library. When building the library, all of the files in the `/src` directory get bundled into the `ml5.js` library. Releases to the ml5 library get sent to `npm` and are hosted at https://unpkg.com/ (e.g. `https://unpkg.com/ml5@0.2.1/dist/ml5.min.js`) + + [ml5-examples](https://github.com/ml5js/ml5-examples) + * the ml5-examples repo showcases the functionality of the ml5-library. When submitting new features or updates to the ml5 library, you should also make a pull request to the ml5-examples repo to showcase how your new feature works. Usually examples are submitted in a simple p5.js sketch, but they can also be in vanilla javascript. + + [ml5-website](https://github.com/ml5js/ml5-website) + * the ml5-website is what you see here: https://ml5js.org/. As we make changes to the ml5 API and examples, the website also needs to be updated. For now, we're working with a manual process to updating changes, but we're working on development processes to help sync all these efforts. For now, make sure to update the ml5-examples and ml5-website when making changes to ml5-library and vice-versa. +- **Data and models**: + + [ml5-data-and-models](https://github.com/ml5js/ml5-data-and-models) + * This repository stores data sets and pre-trained models you can use in ml5.js. + + [pix2pix_models](https://github.com/ml5js/pix2pix_models): + * A collection of pix2pix models ++ **Training your own models**: + + [training-lstm](https://github.com/ml5js/training-lstm) + * Multi-layer Recurrent Neural Networks (LSTM, RNN) for character-level language models in Python using Tensorflow and modified to work with tensorflow.js and ml5js + + [training-word2vec](https://github.com/ml5js/training-word2vec) + * How to train your own word2vec model for use with ml5.js + + [training-styletransfer](https://github.com/ml5js/training-styletransfer) + * This repository contains a slightly modified version of Fast Style Transfer in TensorFlow. It trains a neural network on the style of any image you provide it and outputs a model you can use in ml5.js with the ml5.styleTransfer() method. + + [training-pix2pix](https://github.com/ml5js/training-pix2pix) + * documentation coming soon + +## Contributing Workflow + +Preamble: If you're interested in to contribute to the ml5 project, just know you can always open an issue to ask questions or flag things that may seem confusing, unclear or intimidating. Our goal is to make ml5 as open and supportive as possible for those who want to be involved. Ok, now that's out of the way, here's how a general workflow for what contributions might look like to ml5. + +### For bug fixes +1. you read the CONTRIBUTING.md docs ❀️ +2. you take a peek at the [issues](https://github.com/ml5js/ml5-library/issues) and identify one you'd like to address OR you file an issue about a bug you discovered. πŸ› +3. you make a comment on an existing issue or post your issue and indicate that you're curious to do your best to solve it πŸ”¬ +4. you create a new branch on your `forked` copy of the ml5-library and call it something meaningful like `fix-detection-results` +5. you jam on fixing the bug, commit your changes with meaningful commit messages, and push your changes to your bug fix branch (e.g. `fix-detection-results`) +6. when ready, make a pull request to the `release` branch or `development` branch of ml5-library. Submit to the `release` branch if the bug you found was in the current ml5 release - the version of ml5 which is on npm. Submit to the `development` branch if the bug you found was in `developmpent` branch of ml5-library. +7. the ml5 dev team will review your changes and quite likely correspond with you on your changes. When all looks good, your changes will be merged in. πŸŽ‰ +8. hi-fives πŸ‘ and hugs πŸ€— + +### For new features or feature additions/updates +1. you read the CONTRIBUTING.md docs ❀️ +2. you take a peek at the [issues](https://github.com/ml5js/ml5-library/issues) and identify one you'd like to address OR you file an issue about the feature you're looking to add or update. πŸ› +3. you make a comment on an existing issue or post your issue and indicate that you're curious to do your best to add this to ml5-library πŸ”¬ +4. you create a new branch on your `forked` copy of the ml5-library and call it something meaningful like `new-generative-model-x` +5. you jam on your new feature, commit your changes with meaningful commit messages, and push your changes to your new feature branch (e.g. `new-generative-model-x`) +6. when ready, make a pull request to the `development` branch of ml5-library. Submit to the `development` since your feature is part of the new frontier of the ml5-library. Important is step 7 below. +7. you should also submit a pull request to ml5-examples with an example of your new feature so the ml5 dev team can run your proposed feature and provide feedback. +8. the ml5 dev team will review your changes and quite likely correspond with you on your changes. When all looks good, your changes will be merged in. πŸŽ‰ +9. hi-fives πŸ‘ and hugs πŸ€— + +**Now that you have a general impression for what this process might look like, you can get started!** ## Getting Started If you want to help develop this library, here are the steps to get started: + +### Setup + +We use node.js as our development environment for bundling code, running tests, and more. If you've never used node.js before, here's the steps to get node up and running on your machine. Installation requirements differ according to your computer's operating system. Please refer to the correct setup section for your specific environment + +- [windows]() +- [macOS]() + +#### For Windows Users +* Install node.js Version 10: https://nodejs.org/en/download/ + +#### For macOS Users + +For mac users, we recommend installing nodejs through homebrew which is a package manager. Even further, we recommend installing nodejs using nvm which is a node version manager so that you can install different versions of nodejs and switch between them. You can skip all that and use install nodejs - https://nodejs.org/en/download/ - but we do recommend using homebrew, etc. + +This is how you can do this: + +**Install [homebrew](https://brew.sh/)** + +Open up your terminal and paste + enter: +```sh +/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" +``` + +Next use homebrew to **install nvm and node** using the `brew` command (ref: https://www.wdiaz.org/how-to-install-nvm-with-homebrew/): + +```sh +brew install nvm +mkdir ~/.nvm +nvm install node +nvm install 10.15 +nvm use 10 + +nvm run node --version +``` + +NOTE: you may need to add the reference to nvm and node into your `bash_profile` in which case you can paste the following into the `~/.bash_profile` or `~/.zshenv` file if you are using ZSH, or in `~/.bashrc` for BASH or `~/.zshrc` for ZSH ref: https://www.wdiaz.org/how-to-install-nvm-with-homebrew/): + +```sh +export NVM_DIR="$HOME/.nvm" +NVM_HOMEBREW="/usr/local/opt/nvm/nvm.sh" +[ -s "$NVM_HOMEBREW" ] && \. "$NVM_HOMEBREW" +``` + +### Developing ml5 + 1. Fork the repository to your account, and then clone it your computer: - ```bash - git clone https://github.com/YOURGITHUBHANDLE/ml5-library.git - ``` + ```bash + git clone https://github.com/YOURGITHUBHANDLE/ml5-library.git + ``` 2. Install dependencies: - ```bash - cd ml5-library - npm install - ``` + ```bash + cd ml5-library + npm install + ``` 3. This project is developed using [Webpack](https://webpack.js.org/). Webpack is a module bundler that "bundles" different files into one file. This file is usually called a library. @@ -57,12 +157,20 @@ If you want to help develop this library, here are the steps to get started: + 501 hidden modules webpack: Compiled successfully. ``` - + ![image of terminal window with webpack message](/assets/ml5-webpack-build.png) + ![localhost:8080/ml5.js shows compiled library](/assets/ml5-localhost.png) + If you see this message, it means the project is actively being built by Webpack's `webpack-dev-server`. Any changes you make to any file in the `/src` folder will automatically rebuild the `ml5.js` and `ml5.min.js` libraries as long as the server continues to run. 4. Develop! - Create a new folder called `/experiments` in the project's root folder. Create an `index.html` file inside `/experiments` and add the following: + Run this command from the root of the project: + + ```bash + npm run manual-test + ``` + + This creates a new folder called `/manual-test` in the project's root folder. Create an `index.html` file inside `/manual-test` and add the following: ```html @@ -127,7 +235,7 @@ If you want to help develop this library, here are the steps to get started: Just be sure to add files before running commitizen! -7. (OPTIONAL) Push your code and submit a Pull Request! +7. (OPTIONAL) Push your code and submit a Pull Request! Remember if you make a pull request on a new features or feature update you should make a parallel pull request to the ml5-examples repo so that others can use your new feature and test it out. ## Running Unit Tests diff --git a/README.md b/README.md index fb0ce4d3f..a0fa5db56 100644 --- a/README.md +++ b/README.md @@ -56,8 +56,18 @@ You can find a collection of standalone examples in this repository: [github.com These examples are meant to serve as an introduction to the library and machine learning concepts. +## Code of Conduct +We believe in a friendly internet and community as much as we do in building friendly machine learning for the web. Please refer to our [CODE OF CONDUCT](CODE_OF_CONDUCT.md) for our rules for interacting with ml5 as a developer, contributor, or user. + ## Contributing +Want to be a **contributor πŸ— to the ml5.js library**? If yes and you're interested to submit new features, fix bugs, or help develop the ml5.js ecosystem, please go to our [CONTRIBUTING](CONTRIBUTING.md) documentation to get started. + +See [CONTRIBUTING](CONTRIBUTING.md) πŸ›  + +## Acknowledgements + +ml5.js is supported by the time and dedication of open source developers from all over the world. Funding and support is generously provided by a [Google Education grant](https://edu.google.com/giving/?modal_active=none) via [Dan Shiffman](https://shiffman.net/) at NYU's ITP/IMA program. + +Many thanks [BrowserStack](https://www.browserstack.com/) for providing testing support. -See [CONTRIBUTING](CONTRIBUTING.md) -Thanks [BrowserStack](https://www.browserstack.com/) for providing testing support. diff --git a/assets/header.png b/assets/header.png new file mode 100644 index 0000000000000000000000000000000000000000..123351d4e157cc8081b28340b8ae7466c25b84bc GIT binary patch literal 302617 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 z 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

{j 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 Y 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 z%0D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%0D` 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℞ZL6zJG zre#ewv*xVplDwyLz(&(*PeK}4A9y>mo@z=}Vp^~J(4GFRQ|X!hwI$qzvDGm_L!7G8@~DU@&m1a@kftM0tMz; z?=CYsxAwl9bL&ssuRFbtj`PO! zY&}?LGpS81oa)9hz{hjYZE+)3N-d=e*@D;-;2L<2Rk~Ekkh%Q9YtnO^AvxUA!r&f7 z`yTf)fy-Q7;1F#+uZDtd2SJV}O{^{Iwc1V~fw@HrrrvCG(0NF%8Ds@;t~?pO+kewE z@ZPMl8QmZ+d!WXE;q8$WX20hJ_|_)wTO5Kf_G+TTesSHGFpAfH!*$zA0(j*^rwcp^ zZd{o|+1V`=L8C@Kwyk!-q?T@(_R|ueansbtdUM-Gif>KRRUY*OpB$N_jPWoc@)3ro zZL@9PA6B;vm{}X;X7G2M8P1tc9%X_DmlJSemh*_@Z2#s7dFJYH`{i|p_Ez12H%j9S z`t+S6yTl0Cc2o*+wWwG;;#dM6AA7BhSr}F-gNn|bZ3%M~pBI$d267maeq6^Of_b3d zLuUHynBRo^00!!6J-XY|A=}eHn3mj2`?n zUyISisG@68Vqi3dx6a1#@cTt!v543!V^=IciYI2vv?WAe^;L&F$LzHDG~x0G(Kxb! zVJKrj#O;w>g1Ql z!+7?sR9k3XQ>n_1MCZW56MUDVgG!-s=A5-^7Eo2CzbssYS@jGviRb8|PQ2)g>s$`x z4YAE0nqEx39-wToJvAw;wVP5E&4NF(DfaE{8phVnj{MePH`?Bo{A5cydgA4B{KI2v zXHMP$Wz&fC#u$fFjr3K34J&it4+=?ZcyUd1bu1p@0=-Jnsk8puT;K(*HF3MJ*cCX+ zjQ`w6nEQH8>aoj&mblIBeWS+!y&oLLQMT4vVi5dg0caf>Loo?|yyrNnyA%xO9Sz~f?7dC_( zZy|YHldhh9&V8fFI_te{FEqe)qS;1MA~bD)@q0zK_OwJxS@Ydtrkg(HtoR_(&D55qc5!x5tec53 zv+F!U7SZWiF;WR@RgPdR&leAUyrBYdzV8Bl+oJYux(;(p2a3Di9Li%T&EKG91viXd z6vcPZOk8!`6^^-(*g|j{dcJ8ND_gEjk9}x0AZa2FbsInD`}&%xmfXchBQSJI%0RgJ zTn_IIk0GE1LgFt9Gn^qBXho-1vW<-2u@OXz*t9magfsPd9y-JTZ=Or(2;JH9bYyEL zN3vV1IT8Et%OFm|byQF@yfZtX_WaW8Spr zvXVY|+~d+@cA-uE2DLxQL;Q7d-P%z}S`QC_lAbJNn-lNR5C&1Zch zHk)IQ^O{?iHtM{yLgCsXXfTrZG%Jz4*H}AsPSEwOdtsc))Ved77x8wwKx-K{9!PKH zK4sXJh`1a|If0Og?l+f^r)oZ!ktvzD#=7X`R^^A1+}N(-dkS(0E?9Yxj*(2ggnHxa z|JLcfQM7`85D<56{bJlvCH>>{ZO)+o5^V`8rjE1-LQvB_5Bf?S`8=qFn$|L?n>x}m zXqcMTDrm~U6sx9rb%MKKL_N~_7wQkr^3-=rLe>Vy0ql+}mP31Q%Q zBlU1Ps68{>YO>pZ2X}0pv++N`EyD}E5NUR*9+EoZv@!FU@|zEcBTwC;dUm}_Jult5 z^GMQ-h*v99RuVHz-)hCCKJTiYAiZzfc^s#im*?i(`Q{4j>=92_*-<`fqMYM+ZHxyA z#*6ghh6}soo%2yV>bjD-yp93FX2g|Ir%~M8EFzDp7o<7j+Kh7JsQs&i(>VlAWpK%Q zBu_R}C|1~brd_-(f~a@DsHacv72L2q@9DUnc{os=zCTmV&!bk8)Ka^O@RTu+nG>Xbgc5ykZW(Z|V~J!~ zi8C$D|AcxT-Q`#MoDX=Qnf$B^HzKZ}J~(xpF;Dh-qD5NnJD8=|v}Aaa-;UAzwZ2JP z^qISk4y>YzlKK693GWn7#yUT3_=w=c2zqA5^DZ=4bK1GeThpCrIUbVMTDv^qVj&Rg zlIb+jhw3@)lYWjRHNJKsk7=r@$BNZ zoSrD9Gyf>Y)^k#>=X_NUnlDqC%%0)V2~4&BNhGp!LEFU z7_Euckk$mO1*aKfa!1ex=c<==Z5c?dlaEGFd^1iJlBI)W<>vI)?Py&qB~$3iurBU| zS7F2-^=GXt8mNKFgdMN_^Qz-0osR#=>3n(qo6Y372X&dC*v*()RQ#8RK9iFcKp(XmjtH`CVam!J2SgPiL#9yk>V%ER!uhuZ z(YCB%R&m$f)(GRzubyXY(mGAxr8vL81i=dL8oKkQ+{AiOj5%JOc!f%p8(nn{Wc0x5 zM+k{`M>z5uQJjJ8^&)4_eH2Xztt*h82tsrxQiv3^-y$sapnTeCEybLrt6Sk;znd0{ zBn`J{l<(9(9dBBRi1;JHO}6H>Wr82G4s_L_mgDw&oeT5}_t$&v^S1vmz`t9cE==FU zu8hk9c*Hx_L&7_ol+#p~))>k@JDSj{k5``bgzeZow-F?Lrn^3hX0jVH38?OHWOSd( zli42RUos`BSmQFS@hj$MSg`cbwG&fmv%Dj`EkP0Ie(TQ8V-MNEIXzSz#F_Cl4euL1 zax2Q*GQ}8=zJyd{lCHWps=4>XE|zvd+(mjTqf&NZ_nf88fZt9)iPp@VIx&?q-a$H3 zj{>YNcH8ynLJp(#pgR@2_A~q0c`TbgoZ)+-X^;5&sJXAhCBDr2YLV$fDlez_HDMCMqmlwwmnWe9&8M*V|~9Zce|| z-cJ7#*-fM9l5YCpt3%b(xtPH@y2aGlk;PYBDyG)=c^^DAJS8AN9wGTF;0HBpUO~a? ztBFmBCgC%hP!RlCgh?m#?bE^uJV+yA{=S6 zubdQ8{m#5;sX$KQiCay(HoDni9Se%JHX;jbt9Oq=jBFFiPYq!0b$K;E#@bVaVCzf4 zePN&7hdXI38O(UxCZw__l0^7vNTAj?llWdobEnHJO*$Xk<;Qg!s!aImh(p`?Ble4dWw(QR<9P$AM z9a2^KO!N!bnZzS2A};n%<9r{FdeZJtXCl?n0uOUT!QaFc7?Je$aG4xq-4iczFKTRiT@>XMK<_^j{8`4+EcCN@GgCwkZ|<9r={3Qj z&y{b4u}#pACaj=0?2y&OIfd5kKNxeeZOeq_A3&W}`BH6ekFN$6GNypoJ!#dLdTGOB z2>#E$e5w_O-w3N%X@ypgu7ATmXjY1|u*hn|JSEVmB2`4%7+SxyjPWKXE<>>sB~R$B zP-V&>L@XCht?a4QV-U(bMDyl&xoiD`aSzN<0RP_Etuo%C;T8%X)jcpU&&Rh3j9O?250D|XFFCX zHa76t#FojmBq80^2pW?KV&pGDR)764l=RWDyHB2aj+~CidUf0Zpo@8N!Z$?_2G{xc z3F2H@Aouk5$$v|0-Hs;JtKQ!)kVnUA>F)$y{_7Y2<_ErGN1sc`KIi%#eYD8nkMe0Q zk$XrK^5d+jfrs#eECC{H{#W{_N}C6({~B~Lq4b>VHC-B@y~TgIxn23(@n1PU{~W4E ztxo=29#y&hRxItWR_r0ruo3;h zfJ~lCL?nK=O8P7P|39~kpN7wWI`Q($HzEYB#9VT)9?Pi-`QT{~&?EbWKT&9wvk!fDn2FDFRXi1VZmUgbtw!h=_EM-lar3NC`dk z4x#rZE%X+8edFHedG_y|*}v!AbKZGp$PB|@B;Txi-Rr)t>$9Hz_c~P+7^wU&7Qj|u zh7G1LRQz9kDHkpte9oF9xwv>}MMJWQeObXH`&J@yhRNRH=u4W{wReJL0WdrDnEPYK zu4~N;e#{A1?!Jt3>Gdc5?t!0YnrqP2R#jANNPwQlAzMntlDec~rd(_JoF_+Q8ppu( zt2vp}i1n{CV-vxy{JCnjC+qH~;>Fr_0W;T@5;wYBS}3xI6^EwvWdanwQMIim7l$WP z^D>?~r329<*uw==%^M>)+rv6vPS_+yZ>US{-@!VKxl{54e%5e3A#iFiAehD_607}Mbh>$g(AKG% zX6`G&IP{gc*29Gtb`OPA@BZCM&99FBUteN{vFbksDeNx==|3Kr?mqb3YoZOk`Z%d1 zUqnl@^PYI6E_a#Wp>s2=r&w$ucc;H{YI^dR!dp;qHKsswt*&*b6DEh+)+mp6@ZaP~teqI0@JsP9@3xC4(^F6hfW7{~ld9mEpH8H<^Q%vAfY~7* zmY(3q0&4FXNx>dIbndW8>z=tXFG7H7!q&IfKPhnw(S49vxwF|{MB~vYE@WY4ecEi^ zER1}X!0{oXGwa;cv}B`o_r=9p&?+Rq_M9@YvY|gF3wz5pjgfF|guZDnTIY%j3IdNz z)fFkfP&P2+@}hbg2b49w*8&@@`13p08?P7W4VV-m^nm!Q5)+K_7CcW_h zS05cL$E>!Rxd|AkVAObOOj+I0oWgDZK_!>7T-ZiY_oBujK;l!jb|>-BWmdY54>qS( z5WI@rkE;yj|7U&rr(tLxoA|$1)>cm7pC>$$fW# z#eb1j2Y~j!;Dlb3G}+ucN%sUcJ)Y$~{P2&%aA7hJEPh4p!07Uv+GSvQuyT8Nk%lU3 z|iMb^N@Aap^O=p_6B z*@~*`IPrQPasIaWT?t=;rn9RY_=E3s|Grb(CHPA}$To^;P!oGj&jEH9i4*Dg#9Puh zKL5kqMY%lqzYGE=0`$7R+5NI6cLSf}mC>MxjF*WG;b-@?qK;Q$f+8%$pb3HNRiK0j z;DO4YLCRIMhmnrBCqfa~LLj9mo@wpY6WnHpHsILH;+q#e*rp19jWQ3DI{c&d*XCaL z%VsVzkx)9joLr=(#(@>EXfP!arO<@SIKaK19Iuoz?mhkKX{v5#-NsLcYGtb5l@D!> zuG%|7(c1d*fIaTwAnece=+)u0Nhn`StT36E=g_5_bDtz(0Y?`X0=>Mqt~nI`*|Cyx z{tF}4r-~E*`CTwllm)fw3O$J$C=t5n6*JmfBAswUDq#3I&kOgKQwxQ{6zrqer^#Cn zK5t>vz4a+L!&fhOpf_&c6|`$+{wmX=Os{mnTn^V~@B1e^wcf^qbtODk2r(S~Z1#%U zYNX}CXA#?12h?tOR1!-SYst!ckwnpHexK$)eQFfDSM9lR+)LZJ%-<(=A=1)dYu

B*8Quc=9b(Kx%p2zSa{Xl-`m%uc7;^qWgPYzLa#*ia))Yqx_*s4F8z?C*G!x>LAkqLG>704vN5v<_}MwZ2@&izKnMFo z_}uvA_q!dLTZG7TLe?L#h?D-*${NYK=W%%quNc}Kx(TOBI(xQ@eK^4K&Q9z?s7NFE z=%gPX92&mS98&`F2`fQ~PyZfy5V3weQ?gN4`IgdWQt43`*Y~Q{W^!4M`=|6o{srl} zL&+$LSaYn!M_BaxP(pIOk@lQ-484$8+QX;zHwQ0L%jPy)T|CMfq_+xQ2w%EOS#T8f z8IM#P7$@t8GR<~26WyY_^H3Jf91Or!qbkbQ!coDWqWoG7bob?!ZFRlh z+1S_|MF!}Ve!3=Zq?{)?qtP=MHd}{o`+6&e8Ev~7%`&=%bN}XYOV0I@jW9KHP zOqgy5TX*PIO7X^W=Sbvo>oKaLp;E3O3-7|c&FptFgQZK@OtWi6UUS=zwAn8M$bt3k zCEhBp>MDt3q|hxx(4_ENKAltp1DTxw6JjNs;Ws}Pj#pRDzF%~0*HZa*qptk>C&*^U zm60{64!%+Ea>Brk8Dz;e-Hgl$OI7_gexD|=&V9=rdc!Ahap&soHw4MP%;eZsEQXQW z*lbml)yQq}-q`C)Pg45yCG^7k=uB zuG|pg2Lua6T#j8#yX)dEf4_PDcGO+JGAs96*O0zJ$_T}2rvg6UM(pwB##%>GnSB~B zvx9JtzyQ^ZoLEX~w>yRTX8{A-p9(!~nM00)$mF6+mw99VSKi$O z{@-sC4O+j%^T;wz=UYRJ){1L5Lm_dLs4*8Lo1dbM0D~Ebz560WNUi|Id}5zEQHnHZ z^JZah*Qs<%;A~ur^WnDvD#mH8jUEUmO$5}h;ZLZO)pzf97Yv&GpiQ~zGIzDFrar-$}LO&zm=!H9&5#?^>RbeZBTM9&=-7jnuQvZZTkPmNx8jC=;scCAxafwur_JjsuhRRlOkgBk6O>?= zbsGaoa|&r*t>%^E>By^{sZO|5Tu$MT_N%hB_peI9V9?&NFl`K7!vlWTU3ARvHS_Jb zelpqRz30)kiHJb2eJ{M4RSpKBzdgDqy!+QFnC#1+`nrGeUmIq*dIS5rbTiW5=NwE} z$Hf;eQ?{d!viYA2<_#YX``?ZRyt~H7=*4!~J`w3Ze1NLHP0AmDMob1eQewu( zL4`LjRek%AK%-+=;SGnX&6QW*CK7awU4Sq>)-1e9!g#EU$~{^(AzIg*1qhSl(?XvP zdGQHRvtxq7o2W5h*@cA$wnlPcTG<7e#%<5$g4VT2!L8wO%9!u33vP|u!+vjD62o! zSxtd*|HI<%iYsNw^H^KDHH-A|Rhl6lrjAY#E%MOsC9H>zRVsP3kvr>13?0Ba$0TbA zkB0BrNV$Dv?U12k?Qs^g?=A`a z3l>ZD57)ePZzKoT-Pg)rK%zme&%e*q1okKyhWsB)}vpwtVVb!2#u)^gl9PK3#V5br?L6d86k+w?zk+^k!w6s6wsCorCN$pbnobsek z+gaOJ&F}e6>CD#|`^<4UPaN=|@`&Nu&vK@d5oe#=sXjh#dy0nZfSE+b_+xx^aZ_3R ztv=|O28*Re-)!C`h~Xz)u7{Rx#_vVOpB`w!_7D3JkOmD8T8>{wMor!Tn|jgLdMEj0 z)K%`q79TaXzB+o_vYeC&Z=3h^_a-WvJOvaU9Pm1!vSDts*A4m7@ zlR#4A{l|^?^lheup3i9M50qS_1k()aLvrfeU20{je%dxNfO# z+L5Q8$2RqZaw9^4@u?Xl=>|+-7}^1#N~#$f-g?7YP$)Zdyi)rK0z3(YC{{K)%>>vZ z-Aj<#bY!q=PL$fB`J?$fC2u4{{=gad&DyHtYb7#&`D^=*eK&1KM*P3)yOba8FVM0V zN|9=t{*V^XHqDmS&^FDLcGWihDIKS6nlD|YZCWTju5J4NQ;33KvgGB91-q5GRjZXn z%xify&kQBK*E10!q(E!1t?9^i;tEI9Q>3bE(NU9Sd@0D>>Ul+C%GRfzk*A{8oZF&! zFS5gs@__)oRKSO;%s}9)im+F~ZW+-8!mAnUmyyrB&x{)-GPQ8){Y^REtFy=F`h4by z%cnK!{uIb$Bayd$iDM3A{E$hmp3IUq%N=*hPCCFDA5Ev9T`2bvM?N+eMQ{?5v%~t> zci*brN|RYLiCb_RGuRWqhs83`xwzuK5~}Pm%f$%1}ucWhFx+I0dGE^Pc@`hIk)*aGd7~Sr^OG#v=x$SX1Rsoze>WKkCc&*}iOtLZMe5B$(Dzff2>aNBpLF>3 z2H@9c6I)wa36j->;el>Wl8CC(S;ts|hp7@kQwiqQc5yt3=9$xxV}Wf@^Ytsyk}8SMh!x7KIkM>myee6(>FNQiB+F+p0v$%6(2r0zb3c`AYj~z^hljZvj#Jn z@pyO94HZps+4MKO1ICv9AckyKqN6rqcGV^VdUfjhbx`H~Fm!lP@6RRdX`L_jwl6lj z=5qHUzYSNXpAvu#B8>Roio80}ib%j@ELT=<a3tTkEsDBL33-Ckhv_NETeACcCO_Gi*u7Dq zvtA-b9zLeKC+q$_@Jy60>X$JkzVN`qSETQ{p-c8>2Vz8{tO*2?s~X`k(TaAYy_Xrp zkIdWX9-UVhpiFsVR4;0@rkTarQ*?|7wXgnIP_?i)5{U5J5+Z(I-POlCo%o@K>sh9f zNb0H^zegdn;YeOX6a*{w9L8X7tow)XF{H)bid-0S_{DbHY zGqiM9?rx2sZ+Hib;G%nQSZWf{yT};&N)`G`N@oI2oiv+J!%ji}f()azJ88bNtcLbK z?n}VD-bA29UG7PKckBxVydM?GT#XD&SvrsWCLxmYU2A<}cCZP{i#eh@CRt${0J0ZK z)Wox|mW&7)hr&NlB5x^l3+eL_ilM9tw-$u9<`UTD=8F~=nD92qk_w)aQu@qtZSTvF z?i^9F)!gM@9_%l_E58~2(pTa%&Y9yeNHZzG_kJ#PF%Lk>mG@m-Z-;EZ8j?I;TGTMMj76P#-;jtYX_R#!&xY$bxHNLb79hT%?G)e5LMD~?uSW#{Z@hXebOtbV6Ew=V)mxQ zDsYwgRjg;4aJreep1ZAH#;^FHd5_?J@he)h4&~xo)wX1Jngxn%nG^c?b?|(UJB`aQ z)%~}{@X`|I4&89QK%)Q|VuFY4{8+?=AL$7CfpGe1t(C8F zny7pIUCqGOOKq#fo_ZOvdbZgcsyDzus(QBCI8ku5;tm(shomRVosU47r<)%yxEyt0 zkE~ffI7!F9yYhF^>7qE{B0~D3mUlZYfPV48ecLyS;rnVDTZL(*7gQRKVL`emh6#_W z&{$pc!S`6*ONI&GE`EAP8XVu=MS z{Ep(g3g7j#LMFPWy(cEypG&XKzbRk5rpwt5l3gMYThrOiUX+tiplYP>eU$br3CPI# z{WRNBx9xs?+m5(r&)(3ncfK3 z1^eVX@qR$;*Bcru&%3JHxw<>Wctd!pR6`+`71u)4>0+(QhcsQd`5h)=5jwlMJXF4h z5OCCiUO&lrL{Y&$O%SA+hw4dTx@~IzLloys^0IMfgfvQxWr<2aTf<{}7+g&=ky$k3 zUPM~b-LVxpSrB6*5?2cR1t+pH>b0)h`%Lr#5~+gKC>&veOcP}?F5BHGeH0PZd=b&R zj?SH6C!S!i4&c0H&E5;!s^Yvh>w~YYAtVy`r*yB?ArDObmK#Z>!v#wR-Q_M^vxkot zk%%12IrL}^I9Y9NBqyv$0Cw(T?Oku^sWAVnmCB-)qQ|(Dip60pbD&6G0OE;Ng+NgJ*I|uh6{_>wN39eO&!lyiZAqGld z#30Y}NnvQy%`sLTTX@su{%@ zcPg=DqF2z#;#E)(e%(SRaL_(nbujrFhI2keKZucgy{hgPW_-Gdr1jnYNJqcZ33~C; zv^APYfB%On)@b{h)&-+dK_mBx3TRTCJ-r+&FB8Q<;yj@6T>W96im?8= z69}3Zk87h^aX$9xP(?(qhJDvBI5ZV8uq^mK&H1-;n#D8q1ZEDHG9Ap3Z@pr~WqwT< z5?8c8e?dp{*3{T15*j*7b72_nhtF{trahhMh>d$ zvVD^BQy$~#SPavm63Lv~0y2v4U%eMW5|z>gRb1CNPEJHI9XWXZ7UxSlJwBBb~!)(u{@9i%F#tnD%1nD0VM2Z0-|$SY_9* zt%#R3(V&{~qvuOg1r68mg)AO;EOiJFABO?2%|d6c+xSoYuV33~aD11K2RkOfqZ+(brcJs>Ahe`KwI$oa%BjP^-RCahFANJ$*>G%!vUbS z(zcA}c_M+{!zrqP7^6_RAVoOqaxYpPtg+Vge4$jO0B|Oj*S#ml>2oUl$fKUYAwy|SUb!^i5o5aOfK^`X0B3B z07LbqCoO-yj`_g;XZyw195&?X;~1h03tdv!x&G{a`0GIbTWb zIntvGCwbD$D}Yb7FDmriVNNA&`r>lh5I_$M9ceH0ZT9Q*Fo+w|Esy3)D(v7q!e zo$$u!b;tL_xH>QQ%C9S9)Y?@}twLI()`I81r7rD#+G6Vb0QbdEb z?k_rvu#CuS6;O&tNQffr*?HJV#*$R?EA}Sa;Yye2ffyI!R2MgF#^{?+)`1u{xWkAt zr!G>VK|cL~U&x9QiNfU2 ztj(F`D-&xjH^LFiT|cuX#mESJYo6#_k2=|>c@P5wA4&QUxur~m{z^D9@qG;h5NjUh zU9M)2sqw1&5TnBaf9f%0)|dV4FU~I^!3|Wu#k6T6Cs!`JA+0BO=X|}yV_dZ-*_6ev zH_p(saDtHrG*&abZ$Wp#zG-J%IRZaJQQkAfQsmyh zUZGwiFtVM<$6tjeYO`@pVG9CZ%=%#h9W#Th8rFQ@5qmSW{5Jgk))&syU{{l36NKxv zfJ2&UOW}qCdn$~Pe=7|?`AA3rbekJ0ZqQ7>FwHu3%YsauceZOAHt4A48q=nq!?*QJ zgr!fPnclN><(>ez<@{MYAw9LIJf~z>H+ti+QzLmfua?RZ63}XFe64D0VRsj|oD5D- zDZ!Kq854i*>rh?20DDW3Y~=&i>!(kkl(uVK^CaVgE&)gzk6(9+XxzmrNdooG>JraY zkt{erEy`@A!uxW zJTVu;Hy*R)&ajR5K>5b3X8~_Nc33%ZETzR8q;yCwCsR6AgHsdCpUK+se+k*s@RzeA zdb>TajEUB|Ax~?*alQhaXVEnwLMgxxY_d&Q>E#p|f?;XN-NRx5^#MvdT;d zIyF644VEHxNK>!z_Q51jN3tvy!c%cctn2k*LtQAoUncN>W--M!f>Gtm0R%@ki=TXs zZ4yBm5xiaPwbKhtmFJ_VO)m|8o#&>@C#Lp*xyry>x z)_8F=#R=B``W$gptsG%+^E^sD&p}eQB%Niuu=&J-^eQXWQXIY;r4-h`3{77;@VyX8 z1qWc>&z`SM@cqI|(Q9_Q-kOd*sTNUk4)Jthp83)tWY5AWcrK|jiAD`~v_?3qd!#JY zQ{?LAbSX0|0>byB9FR<5w(3G#LI|~5q%Z(e-<+7wp)0Ys7QPQ9=WStpCP$&}T_}U7 z%`kBB<)d<*x}su4##}1up#FE*sRqZNEww=#FMGxh%#A)839`P{*u&pY?D#R0yQKq| zx#G?m0Bd`QB^7@)izwQ7#yrW<(4aSbGrnx!Z>+}oCwox;{^VxqB&uwe=Ar7&i$ga; z1hAh^hOs;vUL2kIBPFj2PzJfgDxX`O;_*J)Ps10#`Q~%Q)2enJ=}#a^x+ojp=~-`g z6E3Iz6X>PTiOfPw$=IGfC7m_^E}d$D4AiZj)`zS)++6OGUeXX0tLFhMy?c`J35qKk z>fWAww3sF*G<#l&Pk~^ca@EMy-)BIlGVBst7nOEh`iDhy0js3X(+*1yp8eEb__1u@ zCA-Yr>uukJc9x+_Cj#49^g<33C}pb$&vHAc+4dJ42Xb#YW&0hN33$pw4>(;lUBE55 z>1@hr6~i~30`Oi=b}~0`$>gfB_r$sM#lJTVVS?_wezCE!0NtBg^J8G)4L7^c*~YE3 zvJ=jCo0Idzm5J(AsN-;6s}}|`@%On3@0KHR5yCX2>h9Q6AM@ z-lQn-H99USya^jalwS~NV6-=uf?MNb1jxHR|JSyj%o-acT%^mb0sYJA)0sJQ6HF`a zheV0WP9HV(T};Upm&H2CmL$au#v@M`fGI_k!&(!G*B?mm>%aTx??WwIRI@2yN=U>; zDupL@q@6Pv9ym4PCrRZJor+o!NroBQFNHi`{@fngw$199KP!$9(8JB&@k92i*C}NY zeP`pm4Ial#Vn$xGkgC1fVBDxK7WMKGLYc869W@qOvy4kHys zW~0y)m}G13KyGGle5|5xjdvrsKG1N0O<9^MzI|WuoLpzJ!mNMQW_<}67bq=#Z!DG1 zn8ar0)}=ui2Xk+@NPk8f;Az*R^ma$Fb^Ptg-(ON!)rSr?f`uQ5Usq8#6p~o`Az)KF zrH8T2jy)&?R1j;YiM)Qt^8Uqrl<3CA$N@@hEPPNIY6nsR(wvA$RH{Fo@yOJ|*Vgl8 z|E^u-B5+%8s6CUR7J-sw`zSuNp`f2%hy4EcQs z6(XWd&CR*teR8rnYtS)DK7f5%86bU;hbcoA`7ZUA?YskcB~v5EhG;~nFdRAz7E9&d zf*h2&P+vw)Opaxc7n$@Nx6(UNl#iYW;A~>^#gX}2H&}N<*&d{ZZnTffb<~AFlb>_6 z>R1cxz=2WP(!4KbXPKP*Y3F6~+pdJHWHp2Mdk9mS+x6BwJ8ePlf#*vk1##AzaEYeB zBUH31zBeahe%CXm;WW-c=jHt{4ZfGSS;j8}dA4xVMv^KIIH|kKng-7myh>RDscn+@6EM>Z$PglRD0^PN9;U zTd z9aTmOvWco8owA8)CI#6>b(2onMh%gIz)@4AQ{brIq@Z0FOrV;HcmDYnC-1`ZOHSU! z=XhMazh%UAP1~i-bxk|NsB5~uhuGFc@!dY!3cIR_k_8-Y$mq{?l>iM9KSI6gqTJ$P zQ33I=xG1+(lsE4Q=K2I(V*2jCC4Zzyh zHTxVd;Q$y!5?V-&IE zv$XJr*OUQf2cvO5l8Iy*fT?27b!fd(BM<*Lz6Sf*Lh62|HFd6r9ICQgu6&G#nih>? z#^Kg11g76ap2`N%52^8g7oh;F3nC(+@%U z*Rg|&9^m~>GadL4-L^AUg9zQIjPvbp&;nLkDWn2Kw*WII9bllHO)hPm9%>#sz?hq+ zK&hh`di}PpdEzKj@`VZK0DHt2P|z#*`OHic74qXmVRvASFR|pTxas@DFl4KbiYAmJ z`J0Yq=&On!7W1`^{$XKNJ2?wulMf-ayDlOUbt8&LYIXAf$+eBHIu|~Di_1rEH~O7g zqCSrC$>yq6M+mfLBkA>744V*L#S6tTe`D~WGLSL&#?(5D9*}|?XiLF? zC#T|i77egYbL#ovn|j=kRt;Xcnd61ep4Wbiuy(?P_HSJC=f|>Y*^-3THP8`l|Ncya zQMVYeu1<|efvpejn`0d6kBx@SF>~{?(LdCxgaeX!gJD6}h~8;9R?}*$r!KxJ&HXoq zR`;bAm)md~)wSLf0LguS!CSau7qfv?<&t*;GhBx8ilvx80Vk;#plLG!k~Ph+%w*(E z>#Ljn6>0Q=AP)wzy~yZQH1^0N;BI=FE75Br zFHRy3z&Sg=$adT_)9TIBv$m>tWsM{-&=aLl@1xKVlAJj(WoCTYU}XQyt7_xs(3q+e zBH+NO;H~_-WZ=*E$HYEyXGdd=15`nfkKn5**qdKnX@ss_Wp^b$1C*B(X_h^xKey22 zbMKMfW#&u1lO0R!OS(XL_VtaErknQ)v_Y=-JraVm#q2)lq5|{>?Z%0& z{iGIUufGH|f+5tmM!KD|Nax0j;r?9vmW{FZ~U3xv{x9aNy-D%N2kqf<-QqvKz9=*;n>EwYkRWD9*sP4x}+tCtQk zXU6@l!(Wji;lgz7Y!M)j`NcF7?8=VoaxJS;6$_U2(m@|RuwkToPf=r!FkU9pg_@A1 zTmM;yniwRzfbw^veV-|VFikDwqAR$8A{a&F_Fl1@C|^*rXqTnkV{)NYysIVe_**Km zv4qRntR%AZTt8u2WnLP1k$4>O- zNr^|W%jZ#O0c6I`_REH}Bmh^UY)BkI>+L-!V+7&|jIS??2&$-zYks-;z% z)wTe8B-fo!g_mQZs!(EVlFg|aR3b+~Y$rOgx$ugismH&~+8eMUdZaX6|DeL=u2IY! z7?L*-U$#bSZ^KcqdsC&Jv$(8wm?ZCl&c@g` za1qYYR1Wy(EtXBoK`3$;W!dES`XKYRlIA&Y!lY>(^*Re>jCsBnaiy(5>nC#H8GVHcnsR9UY#ty_v zO4a(Me{W%rZ%m{RXNsEp6IG{i6%X;)CltdhOQ*u5KJapI)83}_bqk<2aL+5xtwCre zBuN3a0kd030E;Uk(_=P!-PoHY_m1yW4B@L9$Cze zoAEDdyQ@<&z6fYXY%pOH;opp1?%X$LY4SBOC#17|WB6e5Q`6JZyMF7iKBLqzVh!I` z`Qn4fEzuS2i1e~(8}XG|f|`@J#kY|*Z&rk#-sBSN6Fi^z+~vaH2>z-|_k7}Om&+cK8rwnC1T$laC@fm@ZwquA`@;2k*~&)!4X;8PRPDVoUbQ1*KowlsqOC~; zxJ444Q&<&au3>C+FdETGeq*B;ezTTRm2Nqs)*>Pa%@ZyCR9Sbo$zE9$qa;>CplGXK z>GGi5Fz^P^N}0oiR<7-nJ#7V!xhl)?7qjzAVKFgN6CxX5X2Jlkl<;jPRGv}iTN1Gx zT2#<9b0N1FKms z_TY2x8({-y@l?*eZhp6419M^IMnVOt*({x}A)Z@pz5s0 zR8-6%ik?w*x02-s28sNw-=^>Fr`!3?^d8L8qcFUO^%j$Ky2OOL27{GBz3hbo$WMN+ zdKq8gSg&REbHFG#`S8Bt-G8$f^J0i2T8@&MnwpT_*A85f@mx!gY6JO zJ`|YX1o~DP4#)RQHLo&+mi58DA3plV`iMY0aCqNHB8fvHjCUb457mbO@WzGGw{=gm z^?r|d)CFzc6GjOQ>1zoxg;at|a_0`isP+AFF;j%m>(+~Sj6!AY-r}3z0}2&{fBJ%B z#NOcGb^}z@(2g+bXZ;DvFRX`Vql12VGfB4MUW02u!4a4)t+*jXz@34Tt*ZC7l zC(AE&Gy7m)9Wx|mik$f8IkZqa)-qHP=;F4~wnjqAx;J5tL=H0}9cW}uj;Oy}eVV0)myN%qN*@3DilNSu!+1O(omqKl z^-yUZ98C`hVNmGet^aNunc^0fv7K3b+xFn`JV%#HYP~~u6;lni$*^;Zp!947yANrv zVq^1p;W`>PGO7DA%G~v>+-e85KNrnP-*BOLjT&iex@v6h$RSw3Xdf3#IO?cWDeg zcU~(Sd!_?~63ZUSkToi@dme_r9T=JS&}X=i91IoC3B`Ui|AEdnWzvDmPK1|E_ux{a zf%4hvb|01y%ND?l`*FQ7>@?)%0fWI#ypYv)@P&(q3={ zA$l419m(sdak+z9dl?QKwd$!Uxq~`;84ev2u7nHHe_@DizU`abe?0gYj9bDOWdSf` zH2n~bnI&StZr?`f4$*`KK~WcvfVcFj2&D1{1X$fsp%^hHy4zm&F1Hj z%bBiD%&~en-6f)$dg$#VVeOpR-|t7MZw@`$az85FU^3#X=NlJ?(TvcT+n_>F>i3`_ zCe%cnQ`7-q*ufah2)Eee~9g*~fEGmpTiAB7{Y zQ|(dd-#x3C0nazsTf*K(bbd|QVS3!Tad4-32fQ8`bieM6Pn0DFjRd}8uaUBvlh zw;ijjpZwXiv!74TwT?Zyp0OVix6p@f;fR7=P2cpv+DCRfLK9t<>Kg0mX{TD#dR~Yi zyKVSRTv%EX!$dU_grb^(DffNl&>R0yl#1$kx=SRzeZ2Jvj!%~nLzRW>7+1}KbBb@u z_Y2xU8#uH>lVYNz)#q1_gJ_>nE_aBvmK_LKT-0;)wCFCn^7c|6g+5gSmGn+4COoPG zU7pU3pYwKTu)?o2Si(5dWNP1eqNM<1Z2BlNo!6rCAWLd})6j&Zp%hxv9ondLVT~@~ znc`DZrNz?art^u2EWR6^$?|=OQMB~@8|BNHEg>h*2uxUEP$(j#028h%?pWzXJEhH> z7j$=Y996a1bSm)Wy*fMZaLa>N4>OOSuU~z-9l!eK1fLYy;hiUIX>6IIMHH?0aw9r9 znfopjLm|-4(mL-FgTggC{~2SUB!<_%+>>j2*a+N!KT-r9B1tL2Nb2DX!TOjWJ;^4E z^U2!zk>UQ`zwyCiaJ@uYAP}_m!xf<5*67$5)XnhnmfIsKz+JZ-iDX1{a3W)3s)915 zJTOqrFrPFSKA+rPZ7|43HLY-g5kSLS0;FLcFKMei=l>7DA8R>~H&2bq(B*uTVzX!S z^!We90?6ohIj8>jgcl3~a)t4!?+1rI6nTZw;$^3xrlA6^^t z=#C0aH^Y<`{Q;D~sIZP4Qfyg~bPrcx&6OT{4JkXcraYxJz8q#om9EPbl^NO8ez!<8 z>IsfJ>^epJen+Wtod9>l>H2}@LSW*`jEMVAveW04e!ZFc8k_ptj5nzTd>($vQt7T{ zFWmmU8nd7H4>$tzKOrVndKid_6~+HeNFUQ4NhjZJ3HUEg3P;GNxlbw?=BRt%o}h&> z{^{AKFXd)DH?vDMD~iEnFYK5nERMEU0Y(R4G*8afZ zmf!n&uB0a8gvQ{?pRr#z$Wo-|bCd|903G!M16r+Dg&)+Dt?d+S}`3jVJNG>p$6_x@Q zowp<pIxL-DN!0Gm1KU)az7dxqfoV>mMJHn{f(EZZ83}t0+AP)vTtX}-d zgH^Eniy5Q;d6DdYxVPe8fFFz`Kco?||G%E;{v+Z+e|~{vY;nEo$FKq&`audT4*QyJ z7|A#CuQw!Adcr;pc|{or1}wS-@Nloe7vrT-RE+xs(2t}`CXB&~K&RS*uW=}4g4=%iyGT@Kr$Vk?iQTNql7 zM`Tk@bkCE4Sa2Ww?X57UU;aYUIo|j~(wX}UoCfWM9ehvrKcqrc7d*@BfXD^eXn#tR!GeE$(4Wo#D-(SJ9MM!!> z@&qwMsAI1F{oM>xQi~VIQ+2K#p-*s}UaQ~#TWHJQ!Ce0LzgO#EO@4};)XD(dvuse0 z{)5pW*+fHTkNEzv9b+(Slg9Xpe@o!}3kgC=fIh`%GVA|g?>&Q>?Ao>AP(&;gMMde@ zxIv22Av8fix^!tlrAdcChy+MP5L5(|-jUuxO6U+3q!*DAdPGWq0HKE#_=5M|&&{6M z&%4oYzdyd2?*}u4fni;1t+O5HaUK`J23JN{5^?oCr-_(CnuDM0>Lf<8M`p#_HT7(3=;2`;$ zpR+X5+dI3rdkhfwfw)0oaE-|GzJJ#+InK{bkKBkyhp&yHD*h84i5jwr)ffXd#KrP( zojhe_U~f6QY41uPMfK%#1^-p*C*xef_q9c{IFYUG6*8aN%FO=2V=Dcqk%HIaZH<3V zd;52EH~{57Vso4=J9x%qSw?U1JrsIsCovwMlBhDQdwv+gKFF112M9d5#SWVPx9b?k=z?s;^8AYOJ?J(!+J%uV>>k5(@j$a zSC%?_NA*t=CC2F_Hto0tdYw(Q3iI3QjBW(Tu!vRU3=f4!A&4ewkPm0i_}plvQ^&bOZ$&T#-Z&prG>MNwHowuJ3<_W;XpmUn2B4p%|04vBxJ^RjYGi#N;eKv!*p zO8D?x5XWGawye2)pQt{nb6e${bw#DyS!d+3lU0_6?C^}cQ+kR@TcNP*W0!SIP0lYXXwyC7(#|5hIC$l;` zaR01NW&LF4d`Z05O}xq7%U)m;qwtkV`cvfezx8zg+6hcB>40B-DYA2KYg;%m zvHe{gpIdLfhg0HxQO)HB&@oQ6m7Jbu*Ap^BdaGo2%bcU)jE>Y$H*{@vo|w&&;Lr+& ztG0c;W3-b_MrlnTw#KnUZ(7Zbos_7p4xd&zxaU{Bkk_zR(@G;TM0(+(Vf4?IGVd^b zX~hrMb&+n|i%zXITDst&(TfLCFL$;JrM&dRg8f*z`LP+={B36zz3*z7i}S0uY_Gg` z;HwMIX;2$7+q4flE3&y$HI-Z!))P!I#KYgNm&R)$5GB0-8 zdrfUW{+hZu=vqnoNw)P`>-Bs7ZxC0%xLBZMcv^xY)wK#gU$9c4CEcKg?vZzCdolSj zG3SP&;%73|{b_pSNml;bk4f5{AFZe8pTDE#b@3xJ9qI^5*6JOSI6E{VDAs9*9e8ay zNh!M!i41n~ND(y0&Um$!*CzKNMZkY0XO?an=`i2>F%qy|-!+qb9gvdSwb9Fp-3gD+ zoYIvZvImz{ac8XBZ1>{l+HI}jci))o>cng?63!*-9#_s|JvHC?U zi!BCo_v=0IrlMt`iC^-?K20=%idg1^BB$2SQOziHd1qJ47nt@Y^bF|sCl{ZQfw3}e z>9FECkK4^Vt-%YKT5%>cSN?1Z0OVTo&jJ4T9{Dn#{n2L4zvms-)n(E$9#v&)0Iblw zZW6e2|IYJw$Jhl9KnjndbpMZVBl@qxU+XdUBCO=*`lvtn&v zcrmufERqE@-nQEJOrEhzcq(7~W)b9@klnY_)(@p4M!uI==I{xQ4%*u&dL}KH^5azn zMVQzeb%3Ur@`A}1NmMICQv=hvRky;+pI`XX$Cd?hiw`K|ca)iqm5U>>KJ z$xNov;;7_%hlC%2btUCJo&0(;xKVF`p(sLlb-5Dlbg%n>jGCPvwfD%oarDq$+DVSS zw)oXO4dB}!%d46c071{5_KlUy+K1oF-YNJhV3F9Rn&({P<~bx(>(=UeKqhjnSk8l_l-{kXL<~aIOZ_;EEGAyVc&ZCRU&> zdzanpq!Q7B+f-Jh7}I|{&ePbQ~SJyyd%+laPJ?1aQik90tGOy337ShQxy zI+>pO|bH zqjgw3ITz<~q(~9Tozw2L6kF@Oy&{mk^bj(UXTU%Inr3l0&%7|bOgtxqxZ=jk0%}_U z8!vJ;FC|EE{4zFS?Gs_W&tDCE^P+S;+g#9)2G1ncIc^ zD?d#h$tGd}hc_qu;-B1{vvS$(^^!!CP|}(Z`*gWZ#7aj{DkoOi1U&jMDp9_ftX?~E z4Cxa)JQ}vA7aGMRA~8IC&S*SrTJxL2WHoPm4Z5Tpd9yAT-4$xNcHa^TtrD6Eh=7V_ z#F>OYk&)i|Kz!B^T&E3;F6gu{8Xr5yT;yst9yvB2;c#(H`Z6uL;tIk_RzSc+`F2Np z#YjoVrd*<@>K*?--4=@T|0G$QzmhDEBT1HIpYj_r|6|;hr)1Q@b}CJonDVI4n{&Yq zT^eUUUe8`lr)0Wl#Nx$mj_i#M*3DVykhUebQ~hZ~&p(m@yX=szt0Mb9C)jifK6uNX zd2B)6s=lj}5a#G9n`3W3^*~0$X0bF~^wp;dnmM1uPFWp*yh6yOX3MY7O4)IA-SpOzb>V z0`VdT8s?*Kar0@?)`(^w%u*I+h_A}a#KH|w_e;yRW~INA{i!ddx^W~yLjOvT{Qn?9 z(k7>G`+Cl^chfSu-C8A+>fu>EPh)cAYNixoEv0{MVmgsmD_CX`FiZ1CyGc3(ANnJA zbe>cQM8W^@X2%Zg>@t89kDFE4qG_nl@=HH834VI`?N81Vuk-pWZKkUBtYL|=5jCqN z^zh|IT{-BVoc!ThkGPq~zt)QQleJ0#QndM62iHw}7CfseZ>iC0ZIZ!HYnf(fNA3-l z?Wxp^)l`Oy++2Lk^?d0+E5zTtsyj!IzyI*~FC003*B9)YZNo}pH4kEo+}7$WO~$q6 zhnXZIw0ezpd2?v4E;}l~%x%`_*q(EIe`l9*HF$-)RU?G1=4ST6J<9q1H+swrg7NXs zQrYIH{`A=W82&kSvW3I?Pw-D%6Ezt%MTeCBAMVoOpRM0LV$j(ngErbZl4G&XU;7G> z9}uk`dfDck7>~a(vI^Hh545C^a?oKL6-RnsXXfv_lJQ)C$IoA?Ui?+e|K?HsTKkXP zBd$93`e6iPVEV`Z9XI#!B&Vl(n62mghXI2`oE12da;p4FIaB`s?f5$b|Ns1UY~#;A zcL5DY5ZlrnmhxNsW&yWe@@Q#(@PMbULHJ)Lvc_6`PfCzwmH!dQ^#B;%+36F@>(Dkl zs)uQquK6Y=$n(1~bF1Nql^b!vN#Po;_Xi#``Osq?R+EtftAixph-5iOO|fT?RH>?e zNjY;mZ&R`q${C3qWguvgT>Ga`jSrm4K^7(7;VLa=RvJ5=r3bT^mr8Z~G|uEo%FR|~ z$${(h2j7R3%;s4ixxgx8H47WGudpMwP7HplvL7{H5bSz_sC-?E)=`+>JUJN=9D)Nj zwH}zJ64ZCyCz0qd+)LMqe%X^HXvC2Ayvy2=T9eN5C@Z>m?sH&Wm?C?H-zii9y zM}zVASZ8>6a5(c&tIgK=ei6XL5bhN_CiwE#+d6*%CVs4Hp4Pp>2#xB}rJ%nwwYv0> ztt5}PVcTNxDM0=%1-%RgF?@nXPJG{r{IFo3-a7T-p*$J2RzHC#agXA-S@@^kBk5P{ z**2x%Ug*~Wk;;ms+JnTvz=fI<`D>WNzB2Lo-=m8EGT=L9J^mfg-j z2wY2$OsE)Npb+oaB$~CTw|WNJ6sBR~>dtT%-Js}V+Nh=~QMvVQ!W&@(LZP8+wN#do zh>hpG&9N0l&w~OI7CYK-7;58rOJ_>z~ z;rZ>xGOJuBl*N3B?5_McP78~rk-Hr_N?!`34+ z!;<03>EA9HlKBCjU3F+Ao&_*!9YMGujpn})?yb)+mo6mWoU?xXC%{eD*HiWl+jVeQ zZ}$9n9qkO6y5c8t9uSBFI_2`$RN3$;i^mRykF>=#?!IU?xKHw%?9rdLH9;Vv=%bH) za+sG3`FYK|I+8`I(+yb$9Pv34rPch~uXiyo<^$;poD~JKF!S1XGYw@9?y}$#0sb-+ zr}iHvloYk5@Z~8B3f6tMo9Xc*PphYvy9^r_6r(?wfz<^Gifyyfq!B)aQ*o5BZ+UGJ zS>N}H9CIgs(5d{hk=BlfXu6s55ifd7JS_YKhu-Gee1~&_p3T&H`BgXWqy=ove8&!4 zk5;qXQbP8|^v@VxpYH&2>CYc-8--7Pujj4Xzr-lC~$jmhd#Z-l8R)T+&-7&2zGHIx_Tz_M`PRYD*btPOgKb>#YZ zNY*#?H8z1<1u{e}#51~0;K?@d|ohx(_G-8EKd`U>-mc=<2O_SK6{hN`U zL-k3rIA}_d5=9f5NqG4SCCzNbkCGhB3x3hM1o*YA0U6d+d$fLzL7q-t1r$5LH)HjL zhs&*0moSd?olr>wg&P<6oNw6L@>f?c!!&Q;>~o+zZ<&ad2WDrHQD#un%kOXaX`&Q0 zh?lJDu4*R2HgIne>~G&MK-TP6c63c!@z7I)i-8aH{D=M)j9qm(36?kl#b#mf7FGuE7DaOXzbvM+x=A{<8fpYZL zV;$!z)u+K>@o^vD6x!B#j2R197rfPSpV>5~pa)Ts)7P$OscVYka`{CX1m-o+pj0WI z`_wcva+mE-0N1ZPU)FPry6gzFh%qxP$}rADdi)R@?m0zFoP*8PjWU4?*7SQYIs59! zRB&93U8iAP?#@p36eE_+V+Nuurzmx6Y{ZAA zp9c%JuB?E+*uj0rm^wKbfD;J`6n}BhqM;w|>K!xokx}ni9sxqEf0b^he;;8;z6tm& z@%oYVq#h5@joUth=LF5=tpuIPZZ?7}={G<*0(2BE7X;NH;)2mbJh zfp4Vd28zu$mr6kcB_hzdxwQnRWX}*|O zQ$UgH_9**Su6GTeik-J%8c#-NYAvx3cBQ%BW?)JS^lEIC0@?z`(sqS&x*%(q9)1z&D$|Ijef^Rm|04E50U zV=U}eE!o^zB#M-NWfW8GN3^^17RgG3wPHeg10K35y&^_otwr-+}Ya?%r86 z`2l%FYp!H}(Z!-LsBTJD_=@`NqC8>;PJK5IBCIi#Mt}h#o&M!5^d%nCsB-q0h|N z3gf=^S8F*{L)?3%MjtwMb(c9hvdSjLnm^6GHbe|?5{MhgJEL)eeglgZ+1`E`JY)M| z=j()r+hcg9y;*FmvlEMV4F>8~S&RX(h#E4^)DZZDI$v&3EViNoa3jv0Q+R&5wBmed za@hljJ1IO0X#FUuvcn*8Tt2dnn|OJQ1}2Z5fE=!Ut11w`X1ynLvJ=>E2C3IQ6IiTh zIZv%^vKCkX)6{-YJE~TXwwW=EXJ*E=;v+&PMD=zz%cPass|>4mZuG{;n|-aWnYmj8 zKR$AKeLR|@M*+@gck1c>% zCBHjVaDj5@R4Kz#u0G9=i7qvOjwc___yPO};-^b;Pz&Wk?df#!(Lot*$GRo?6MX=nHndn)i75TC+^phpeo zvIfN5>$j(`!aub)46cY@kaMYKb?agM7QdghJM&ZR%VQ~)MtT+lXa?1t@)tTCF<9Ah zKjIQU1Ey~=yxo8~`n@iyq@rDkb%=2Rb2g6OTWV$BsnQ+}e1#C(LB!1D2sw*!ImHUg z!mFN+$BB4CM{1>{7v4JFJPoSCp2fdC0L5NG>Lz`ys!Im=<3(*el$=o_XvRx%xRH|u znAiI8>sRA$*#?mFI14=C+VirXTgvqOc8dBN3XjMK_;aF7f_msjH6;;T%=}mLc9>Ci zC*;P)#)Y*OoxPj(qv`;ZG=*>W>j!qcvKBG=QqE$X0#3I>){;a;6*gF*FDQ>)fC=ZJ3j8F60*|$`dH|ODzlxVVJU0;%cv%iH6|T zEpc|awCW*6=5~0fq51g`?eYV^w`@rb!P0XJPj^Am)IiT2x;v(r!~rMGt69BwUoh_7 zc^?R%go}`Ceh9~2j+<6FN#wV*1zLu?2SDpj&5VTIdH1QD8QE_mt&0(#86Pdfn@k!m zB?!B9KOW_dACf_i0duHs-wWwUax1bB$-lgjvNqa%(N(93fFeRWrI{aLi`XHrLRi9W zWHRBUc$O^JD?cbhmP;G6V3ljbnUI=N8s0w|MA z-P>DMOiceCR<|8qxpYWc@+^(%$e~4K;X}tBb1lP(aSLyyqA}{9_fke9qfKlOqZMj) z^Vr?hh5njy@WcZrkLKy^ATd_bE?8Rfmy=(?6|s+q$zxx<7CgCYUCw!N0S-J69jT?4_}});&FzJnYC0 z8gIGBEl?!8H?HH5VA`q)7aT3NJFE{k9fZ(xZodd*(fgIIH?EU-D0B)RJj$W z)Q~Qnn0f4tJA=^2mn-|zUZ@v&JBbw6L;rG{O#A*WH$Q(?XjW`yNqnTDRhS+bxe;$r z)TV7~ZZM9R-=UUi#!aTyJ`{w^OplluSu4DTXwCD_$FR)C;wAfMr-9dAPFLzh{euA(b~sdKQJe zbs`kK?e=K}EK``=3rd+^^DjVUQf*uZRHZcA>p7cW-Z8S{6G|*KNfdHpGg!`T&D?kF z+sSJTF-!JJUmJz-_(!0@6LDq;uZfjrny=IIuZku&Y;Kebe<#|gM~#>|*a&M$+jv}n zNXYWE4zzjo=tsg%B#%6H=IIj1ZyO!WSD*EI;_j~3#C6jOtcrjAdL6~8>$On9vEO;3 znMp)!3Klec<*mtj{5OwHekUtFM$p0%CVU0R16LAy+waF}J(#l9@ad_k} z^wTg&G3V*KIu)8?LjppcZn0REn(D|ZNC}C7$EL^DGf*XA6P{QfU z_`yRfFJ?now@}EEY;WIalM!b0pv>*yFfr@~5|ZuhYF#>r>Ucy7!Q6cb)wgawPc(!b zK(I;Q)~m)3RPl%c0;*>hGf%{??=#nNZNO6qhaWcf>0k%SbqAWxlMz*f~*7q^61NJ)1Y~B84GW80KOq^nWb^l#% zH%2bp3LSnq*Q|4lZ)4x7&8gQ=gT`upy{2%N7>6t0?pZ45tv-`yztk$mh3kniM42L0 z$FL8@7Yu5KSnL*-3Jdehhp)LoFD(^MZa(lap{>a3S?Zmqv_+;L23JYS1j1YgXr6Y% zwsMqUD~owqwplVe$%-{hBpg_|jeFm+rgcZGEg1G0gc4lyzQ%9)*r8tDOnhChylHYn z15&7Q_UgRy=p8O~VGC%P))N1c2~AQc)WVSK;IsHP7mGU;gLE?5sg~KNqsfXfVmG0| zoh`}+EF*708jAV2U}jJ^(C0H!DQ&xCb{+i!2qH|KM07UdI3@Ng;d|aG;eaPKCE`}~cxR702qj?Wt1s z;h!_mKQVuXRvsrL(`^rCZBH`$TuO#p2=$4$Qw)3kTQIlxrr0mC$}298J}X&*`Z%$W z(psj?F=OyeTT6KxQ+4=a6pL7tRo0^?-0OCFR!~RtOwo$#vQ|HV)uzF5ERKt>c%56p zHiiRD5F=4&k(Hyp228&wk-c^1eaq4k*rtPq8}FbhQgQQZ?d#oH4;m61bkVe2G}Ouy zs=N?Tf}S=TD$r~-xP$SVaPf)HdgGB11prEB zm^>)+=1;s~opIFkoLB+t$l}s?c~v&M52N|)DeBMRPv>FeUrO2cDE%*J_N;kML(I&( zC2?xj16IzCtK(g>QQEiq&3d_JE?Iec2&S;{G9=Ug=u&=~zfySMp&?OIP1uX)vh}jq zmjP?Sx1PCjef{BIlXbok_@%jL&Eb?Kvn%(Shu@?c3;`X6YVt zPawmdVY?ESRq;pO89>Rz4z0)Y^T%!$Bqsp4ILbsZWu;F=-tQq|kFj*QT zZX|uCK*1;XZorG*qPb-H{6Yub)-a&yG(Kp*|5_aV#PsXmG*N;AUG!&C`J$yEmk3%T zHJQLHV}~Tq^)>4Q5a#9J<9^5s*0*MTQCM*V3OP9BWo?4VigzPuqyk>-c1`i;ZPz*L zfa2>&ey79sx!+0z+kVxO$hbC(J^k13T)kgYMp*?aLIPAvAscn#8IjGJ_^ZrZVkO~t zo0nDBF5e5m<{tnk-30>h1;9Rrgcf`6xk8uZ8P-6Aaze| z8#Sz;Zwua>50zzM(Tn{0er`alzQ)a~2KkJ?x~OPy$*aRiA>@oj$+}UqR2n{Abv98i z+KlFvPmwNz_tJ3eh0`@*7;eS8d5+|Z2-17rb-Y)M)funmfjtewyoy;JdrxkO(ehG< z^v^wx*$~a8J!o(VqBwJ}T+4aGc~AT!58IPH-d1Qt9_AaqMbjMfp2UMw4m^HpT%>RW z@BKm~wcPnbexE)4o}50wji1SbQyX!cywGCuwWO9z4hH*3A@dT+i2W%|l_wz(TFfHu z#tO0i@7~y|kxI^*i!P}r@#qpVgLYd3(xO#2`n+(_nd$kD6ZEqx(!1@X9187mCNNrK zta#jU(O6U&)DjqC2cLYfDaL38HZ=>h*OwSJjjBjSL|@@MAfBV3|B06$)UGVF$k8jb zk`m*pIyIJ5>$dST!Wd+T-LqlEdixXxjZDr8bBvU0*!K%b0P|j{&z+)n3pbFy#{^ui zSvz;fWkzbBuhBl&qnx|j9BS}$(8_|VUnmtD zyDtld<0Wm{dZ`poXpui{8QL$YUE2HhWPBxDZ{wcdT*XXaHf~W9ZBqO8T3VYE2o!hi zLiOOiCWX_=LD!zp(ohHYJHjeAM6Zj{#9W!9?6`arvkskS511?zL(qK9akp z5_Dmu5SO{R^Etr|aLGjoRO z7&Kd}AS#6eTyHq?a*<)kJU(38Cjd8J72#np6;1*@&~KC8J+MuF_vpp>w)nQu{KzZQ z?qxT_!*?85o0sAQMKmXF74(u1Os|7=t+Re&3nTi5b_*PzfoL_MR<0hZP0GwVMd%C| zC@QhDVpW8^k_+02d}U%UMcnWG=5fm^7LNR$I}{gM#U0ysD)>r%dqo~!Y$8jv_~l1R zv?x{;8Ji}#E*cZ~~@UuDyW!=Q$YG4g>|Ch}a z2fi-uit2=D0%=?!E5r(D^i2eb63??Qq%bHusNKZaA|QA@kEjv*rP?xXHIz@}mEecl zV{e@&(65E3rFXw#u+Z^GBabsmChPk>Ot3O|z-8Gk0bx`sPh zEh_v#8M=is7_a$yu}3^{%UCv|JykG1rf=IWZ*p5?`@}XlC5v~L_X0p3+eB=n(NxB_D@vNMiIH*gnnT$27%9w zD|9`5E~luJ#vnYb!7^)m@ujv`3%FSAKeYfPjhN-P2UFb{v_4<+GwUtqY58xf06_7 z^Q*F@u8aFdp<#lJXP8r_2D|>s#+dXl6@w3Ri16@BjIJ*?(LX*c$Xbb8qFg9mGy`^r2cyX<)mc4B;PbzQfE@Ghd3hzLOz zH+o=7`dBq??WXhJ9e1gbF1!z=T8n0rneV+y%x=qyw%rjarsW{ zqRvZ8aaqh!_BF{3K_gy{m%nySE3U1tmqE-;O+`%%#LQDAsurM{FY5dwp^^yZwN}^i zB+?Lgm5Y$vDiP!>_NRIJ&TwQE^jYp% zygu`NSIPN$a0T0s|N0P+oZC9IPb0vfu`>uXs2`F$Y-oW@gUH495GzE^fhI~ zymo(ppc!u%9oXt&h)0zA**n40JYg#Z+paQB-FtJ`{V1(kO;T*Jt4IuGn%-^P_Yn1^Qw1zT z(fy-@j;I;8V>t2w=Xlv^QMt~R&58H=V0kkTGYYJ809}Uz18N9eb#)GG`B|teL$S@c ztZ3U&5?2FL^@Z)&NjiJf^POAS?K5F;6G2IeKRVcbBasipumgMGtT3F=Ol| zEeZ;|`2H`V_yfsfI~67fXt=TLvvA{sXW`ZLYf76$oQ6y%J7!i{aNJIG%S!Uf{|UpJ z`ZZ3~`SVWDI)1(LBXEH-ZfC`*aDSa?$t{;EaqDwm@-{-@>uc!t<`h%SCQ z{|c%c>H(`zyrNToh9<`hZKZeM;2^AI<^4oT@&+eGz20FMgVH0irbC~RzZmgK?c7U#11rcR&YO=#C7;&nuh`x4YuOk^&URGnH$OmA-Mo2Iu&d5YD6QI>soJ_^ zpfs(oD!2b@M^tRy$_iIpz9s=<-=&VCDHV?xn%(lZ^jU}-2wIFZGaEuiSCg|uzs{#I z+QV?Oy4TUP@xeNj%nI$RHG!y}Q$Ecb5L;qgAzG7ySTOW>cgg<4WrgE+ZO;Fo^dHDf z_ps}*4%-AmR+sG<;ImRZeB%3RA=z3YEf0<{v&Ak2xLa4BZk%)9!dn#_?jy-z z_3(O(6s<1|d9}aEzhmYmTNZ^eX>bH?M;;8*=jjhn@0>C2>LW^@#k|~qW>s9+3g54) z6?$*M^xVZ2%G(%XH4#8_Y&7jxI=X!82=6-d-y$A78}b;;%bI@K9KDNo6yQzZ8DMUU$hguj+* z8i+9~+5nL@jGn!=eo?kV;XYfkW_a49x3|jIi);y2SrNx?K7-ZtC{Wy*}=^X*wCT zO}vCBaRRCs)}vCEqUmQLFs)^5@s2f~xj*c!2FkIZy{;W-6hCi+-T%9qJPUo7SQyCS zg^Y-vt0>?y3>*d{Xpst=W8?$dS-)D5B$hDiUk&o+XUC%69mXLkVc!5@CK?G$qOS7V zX2rA)1wGr2NPjk3?xg#%eAU7e^c-EouKza84M(??82cjC}h4*$VD`j?;uf9iiHXz`zP-@gSds`xyt zNMpJWkb5yxM+5raQqpY)uJReEtu zQ0_mX=<6dUtlEmDET*$PkB|m-DY?R`qa%V!B}PzmdJDU91)7#5OCJAlEfBX$7pHLq!EZ3p%0yPW7T=pc4$O zUE!v!m1qFZ|c^twVabVRZ!-?sIQrgms#)ZJpz$upR$1&>K; zf9PM{@}B~i3W`jix)uIH?r$LbOq$QVZEtM!e`}Alr;&Shj#}<%pS_O#6?>DkNkNH; zw`%Q$jA910Vp1Txqan#NxJa@U# z+#b#?G@rv@KOPZ$2t;DzN8aI7717m3e$~UB&K$B_9&<7ausj^TEuV3*eZ9~g?ya*M z-@l(=wGf=d`&%jNzRM9Pci`nALtf;1(qvtWBGoY%^N|j|o>&H#? z{%61p+*Q)j=N@+g&rLjYy%$xVspryvNPPV&d+u>%aWie1lQO3# z$d9`%jAh5gClGdLJVbe$6p!v)E8!FC)QF{KJ{(nttB@Brz)+zTKCo-?ZmnWU1>oy1 zqi=nOWl%CD7>$Le5k+F{B(S?wG!nNQTX7Zad*nugG7(nXt!>VkRs>4_+^G$(^8{=? zaAOF(1K%BUbW*|;T*QyfM^#Mkla2{oYw|9GV9OqTWe6x8hLpg2d7yBdA}ii9ORoVC z2_TQXOW>*dtsWx6lorJw^FQ+rE%X*JF>&Y)0In=n8AL@Al7X3d;Ab&f2D;%YG*Ph{ z?(=ZMlQqA*OkVp3KUUY{2VS3cef@r5T9tx{Ynnuw*?4A{89mNb;|k96$||W5MGLuP zq%Jx*MNVl|cVP|Bl$4r8uzWs4t8(wRl78PK{y^^+`Sj9}dgQpgeM*jdwDG4Wr!u*> z)6H{Bo$UUWFu_JOBK=z+=eyku$fHtm$ zMz-~YI7Eg_<*f{;)mYD1DeMk%cfc-@MkETmsuUp?_Vz?PqBkVJExhH;XS6a;Gz!;} zF~tyedzSs?-@nx;Dtj}aca0KS{8JY(Z3T?$><4(5qMhk8LlEa|sk zcJ1vI=BySzp-$a7;agSSTT}Bk>&)6K_2LvsLE}{?>&zd-}kv zEAQal5Z7tB*=zLQe5ym4E<99M8mRg@WJ%-E5nT5+>T$O!?8^gPt;^t|(!|J!0CKJ%?SIh`@j5(2qHYtVRF)L1gNZJh3%D`F5xF6*ea4|%+H>g%#x*v8#642-TQk&3k1H6L@V`6b%&UTbkaWi%>E zH<5UrwbjLG81o{VpvfyI3yX`qma#k9KYW|u1> zgA1FGR7reoZCp6_0v};yXvp0|T@7P)`m~3U0*oeM-5PKD?7^V%Nc1hHC%4m_=P?>S z=(&->JR>Xfq&n}c@5BYu?Yr_&-)w$^n|sMg=F`$1L}GX-Y%NYOKYF?s zOY21pD{`J<_@)7$ZzY<)y=LlC<&X)f{^etz@kq0EgA6_?`JST#xI=DmWw zjqSWsb4B%tt3Xyu(?)Se{ln^tk(JM13od}`?1GjYq&o)tiw!A6m!!8pzl=Ctm4qsu z*jW-b|3~UZ`eYzUo?)5ce75Rcj7lg+-p1y$-8z97wQVcm(%`>+u} zOtUe*7v{liS7EV`0Da#QU}`HH&bPajT)niu&pSLfw#gjbOh!*4JnEY!dDmCIOpn;6 z^e1U-CDqv>l&xjvU(C$Icm{w90j1-q#ZM7$WW(rIH4fswWmZKU%TmSH;wc(XHk|^ zS-1RsI{JJ=j}7RGjD$MgGR%_mH_bfZh?(E~B{w1e2hCUsK*~)Z?9E+!S(&r9l2}^D@?-{V(+s9~_nLvB#U#x;*2oAqnUIgp6dMvKUe% zgZXoNpVpL9NsT(FZg0EqUU6rf4$pII)yk~lpd}&M3)tlLnsS>IlFrlLM94C!^H#r9 zd*%-P{++f`jWJ|RzfEnBr|BC~(!5tp-54_H1dyM4RfL}f(kuu%f8FguyPC~S?=4U= zcjWnb8?jEM$&@Wh(*R7=P66C7M$xd<7hbPE5%1iv5#UD*0w^oY+`tX3b0xy_!Is#x z`NyD<$c&0bfspl;M0L@K8w7VUY9y&`yl1m0+2|VEreVFa`@vqwDJAK9adwvb|d53T7eKtiD@x+lnm4F`Er({hunMU%Nu{+mxq#SR9Q6ZGxIvE&7<3A3e{iNlzx;vA=-ae zM4PLtuT4?9IK|BC@20&7$5nU;2*^z*;?YcI_)9(IY3iMyW@TRDS+xBXiVtLa_dyjN zi%FQ8cdN#DT}B6eQls^U;dOf8lamzm354%HSlnO^45a1C4VC_SW69>OV`#r9tz1lW zP)*5{&Jz?#fX{R2&1f}#-3OuGD)FYBT@>(Hn#eU|5k2}#Gm(xoybB@RBcon|^3K;( ze9Xd-5_3EZzeC^~-4JehP3KB%P$L4bFNRVTO+J$zGY@JK<|ho8EI!m?GhQ{uMK12w zJneT9Hoki{Esa|?31s$w_II!{U-pC}Sr+dh>YKRo4_l_3cH{jM0Ov6@be;g@%{JY- zr^fKAk7m+F4c?@BN!!#if#GF0nuD!|ifQwz<5!l3>(w2dRN%SFYBXcpPyO3yx4gnofN^OPXo4Jw>uRpOYN-YtInhE?qUB zs}AxW4Mld6u9CEI#9U;N>Q;R(bYa;C)uFCpx+LMB)nO=nlWX~^rE$@$ii`jd*x#Ms zK0chDE%0n7!-~Nzs6+}F>m;Pt%5Z{1m->Q$3vA1jl+ZE4 zyaY(gr?3L1NSe)5-K~A$xm{V29aP%>qNk*%Rf3zhTSn)TY7tik%Wr`NvQ$Sfr`BI0 z8^uTR;p5`-h%$h`67sqQNu;y=(J#Up+xJqJ=lzP2zK zuwQxms#>C}v0q&f(5T%C`j@OR%Q?3PjgM%z%hAa>xs25`1|hGfQcDqc3~&95vX*_14RX6S_tEkh%mF4X~M(Tz1r|AhEpn!DA7Vk> zN)o?S&BN~9zG ztw~uv{Jpj9%IlpB=0hCo#n{tmM3fxJ-~K6(Bm zM@P#<#kE#!re&=wf0a$q6oFK-ph-68XY$k*8=_lea!B4bkZ5Zn03F)Jh6jVewI|Cygjt+!?FWI%xBae94Zdsb5b z8G(~oHHpO{=^(>$tkuwv_bu}@<-zcp8RH*%ewH8n7azm%@@@7K@f$jmj}Uwt_w#6% zdW($jvI*e=!FqkL&8j}@C#tcE<)|0$Oo1cj{FZ#OH)zbn`h}+JS7nUd)?h!Cs%~e{ zE#B^hlwv-pL1!+U3asq!y;Y0^%n{w)}JYl!sw|EXfCo_C1w+@Sw`ghv%1|4X4T zcG?9YHvgFM)CPN?TtO{&H>RwDJJf?6kx=;bA}L;|P_y7dw$;pupSxz~s4iYXa*?^e zp<8$N|1$fYDjDf_@hwb=b?VkUhj|f8s}N*n$+Hs?5f8rO`6MLi`h#biIx>X(h0FO# zPwDk#bSkrM-&584c$Yer?4n_(S*-B%DI0K+{9iyf4rt_y$ruot;Zl+!7q5SAW%XjX z+K?XC_HMLfICdjF;4jrQ$6{C5HJ}>a^r*ZOO52jzu>$>vrbKuVQB7?+u2N2hp^T8gfP2rrHjNkJejS43d3K6;b zdnRdo#3a{nhbGDQ4^^z>m{m9(`|}6D@X{Bv+v`0e zAkt(uP}dToUa-By@K{(RMy6uzH3Dmew^Sw(9!EM+H%y(wajDH|9BhQ`Z{?)6b5a8IG zRbCgQ8qf=M2XEL!quLrx6{0vfDaS&W_Kq^Ac=ye7=rnPMocuj0P&w{x)q~B?jTPhX zPuH2*iQ#|(!6Eiv!iTacAo zO8vx&drs->?4busof6t}=wSHi(G1%s_phM~;XtUY`cQU{2s3U>UeVRh>;LNJ)Fg-a zVx9cNI_8I(B7tJieQm`*gC&tBE>$=dLDPA9+@(rvMl36qg79OqoF$6IJB;=Bd{nO? zzA$O`j=-p1Wi9e}Yn93NTTP1ek!`0lxV3wba{Vi{)f@xk=y3!1{j{sH=gV3GHPiP9 zab!yiZG)YZJTmnE+gjxN{{5n3*3RmBlJm@%Or%%&Uf&RzAB$k-1<532W)I}GtumUhC3=ZL3?x7CDjOw-Y7 zNJpSd;egP|JHfRle*QU<5P0aM-`VE(XG3GzKd>uUUYovUt+D$=>)mSy&tG42zmrXx z(Jt-_yCN&QF|AqQP8_04ndw4YCu$&n?Amu$=zjLLb^mXEiI3jaaGqP;YB;<8rQu`* z8czD3qOELU4y#xGooFkdx%A~``hnlLD*wEUob%bHkgguKRa@+5`K7N!xXUY`bQq{O zJAdkAuk#H?vHd%pZ0Y|?j>9*a;YHg>$w^%+3#gOH#0BLC0{1=Lc2nBe6Z6yzFqrV$ z7l_@fy?;?;TYeifj74-S$UOU1oBss#903%8m;O|bmQyJium88|(Nnwjbqu{x@2GJQ z38`9`M&H3#{u0_(X}1Z8Pd?jEUeA+nyH@UelE}96DgqI$~3=jOY*OKz#_hN zrmwf1>5aM&THBD4+@D&j{^mxq>id*tD%5P-c{EW{rT@~XLB zP+6V3$-2m$M>f|24<>nB;tg^E==7O_s^PqU^``AW8+0EamAdw)R4VT|%)+C8Cza|8 z2;jXV?)9Y1Lv9zGi=^oo93N}J<*GiKDO=AFTWHePHswC{`Moi?!|-0l1im=(l|HpV z7W4_w(9?N)P-g*k2m}$L_80#+Np3m`g+F+|3L#4A>y6jt9#!NGiO1ZhKh{dBUQ35d z>IK*-{;!&p?Cg`}eAZR^{w06j*OkRdHbHIEPQau@@$E}~z@$X^Pm_`Xh5)nT&e6A$ zooqi%N@ltXq7lHZKscQ@hjoi?}>^k;N{PeSHOm^o2WKHqTIxG?oJkIbADI5nB z?oFbn|2IuaMmPR*_*_o~WYt0r0J3WCOPwvNCb}Ft(t{#w2No9U(@rK6n^hlaw#Mr$ zO#BJgup+n^N{4~Sa;iVC9{|_ja!F%dBwHcJ?5%VT9Ap_xh>89Q*EnW@fC)7C^LTFB zXd(=mN0KwUN~PcPi@YlUSMtXT?zM>mjmNrIr)7#HAUc}Ir{Bz0dWyKF3rakgw|f^T zw%nM0EU7Z01^#4k&^WZr(jX(Ls(ZyhY&aRALSMKa?2c=0iWPA&1BQk{k8-PZl7=lQ zDu7D~QjJ=JYngZ#aYrpHgzGm-rGE-@__y0418gfY==_T;ec+a%LGqtAHwp!pc`y7s zo13Qn@=rC-G&>}!ft{{ec=nlV>|v74j3}R3{}Gw=@%!Fg!wJn_3y}zeZ0}F}XL6zZ zXA*?9nz?1>9)1_e6CMv29I6l(bpf`+WX;$5_3!jKm%Z@G_` z6kopnNU><=HQ_%!=wT1HZB^Lf$X18R`WJ%W(PwvcCIL8(D}B&G?Lb!2ELdU?7xj3x zaD5rN=F&PIZSFd$GGOY#B9>i%EISMMDn`oopRXx8k5PseOzGw&&9-RH-+~eGW%f3_ zP&<*zUBN(5q}(EBT}<|MfUZLwF!q{J;^N~|4?7Mr9nW*Zl*fzP@m~|e@1OW~qaxCO z>5gm8=^ew||DLP<-Ui&;HsxsliDU6R`1_T}I>2q|GuP1)TQTSOI>Tx6NAz{!pmKXH z>Bx{^itV)OTR~hFvu2r~IDzvTWhpWztfxOQw_StZ?T5OKuz2QJB&%d56Y*g{f7tLJ z`sdUfLgyPzYraKfwxGsmsxP{R|LDF@JW6rENSgHa^2x>z2N)w+%?CK%|7D9BHu-Hl z-He|QLEB#?H~R6)x=QIVzOn?7BqdS9a0?L zT7=DR8>ei!b)DUE>-tYm%ndxTg_hRUl?I^z?>nS6!Lak|DbAkfv`nkXLZ?}{N@ZfA zGCL(%=g(A>pWQ5JcUSe_G(B~>t&Lh!(iWxqhXi0&Y?UWjcc=`0y=+)8EhN=hpiRqE zHFIm_>8Q3k?LB#FN%}=0K~11N1K;2Qz#Z@X$g13gyBekE7{v;3jP*BZ@-++$7SH}+ z=})zf7^U!lp!ro@MAti)sF?-tVHH2MU;g>3@3d=_KC`V8KQX`6i9@$_;tAiI=zzu7 ze~Nto;~EI~UGmS_h+yYWnasIXH)Lv$M}zpsD4FhJ0wzdv3%#+06h09-H|a%Ma@y0g z@$8*xIzEa(vbe_ow(o3at0HYEgp-9A-+j;nM%oB*_ zsrLZ5*3dHHb>kR zA=IC3^(rmfv|xAItE__#$y+yv0!AgEq{T9yvK+@&w~5=`5pCf-5)O!FoFRHwwL!Q) zh(VxbOS-muiI&CqLoNHtMvYZ@R$JGCLWASAPb;fCR&oFpX`Jly(;{Z% z)`iCmGwnKW|6)_J6X%~DB}ylbXI;5}SlDiuKu^pj;aitS+V`nFzZ9aHVh}l=HMx-E z9*2>Pp23Zzx@%ee)l}E4`YYNoWda|e!O~xNt&ctHiU=PU@U)X2v`}+2g5F%ID-CHv z=9x(ugs&o#F+7RblC;`1AL!K5zhs%6-o`6Of89UslC7D|?oSX zGx9|MVFBC}Zh|np9n1ab>fLeY{XbI*rO7=rJqKzK8}B{5tBd=uHb4Q}){TmNK-d?e z|Al#noHxTw`c00c>M%T|F*-PJ%q?in|47nHWrTKg)tk(Pchh2KVYG#}z$~o!uUnNU zZlkRId#jS?0Q(O1r*9l{ONn>Pzw?a)*moZc1Y7&orK*UP_epI9&-iKkLcW~Uw;4#g zA|_H}gM1YUH2@5CJaxq|+s2_zxELjw1HY z$Q|`lf?q102&{Y%@7CdPJR)9jkWI|+__(=X~$7!Cu}SQfDQSdCLWA@f&bg&wExp_l;m5l{#^@TyDQrN ze>DGO68C@0acuGS3Q8|4_Ztl2jH1h0jsU#9Q;G8Qg2~x}okO#G(!>mUpN%d1HhRK&%&=`-{Ar%| zn|Ida);`&mK4V#bPHwg>;{aQXVY3}fI)@ovco|$ss&>o^KM&TH;h9PsdharS%h4^h zBbKwRpz_M~VJ^G-=^idw6@Hqn@5aSWlz73t&v1fRViRDe?F8#dYjU`6-2DX!#<(du zs(E3pU_+|isdCGM#KMS2QjTj}`wmG3n%!iP!BG4XR4_S#NfJ=cL|KD7@m4 z1M&|f2Q~)`xrO;YZ+_b^Kh^nahf+2xrrThp8BJT=^!;t#*8n(y8oh%`1@KRK3{^1o z5lyzRy44&b%S_ zB)CdXsCiwg(3iMR>PE;Q5-Lb}C*!%6U6{NCayE9AQUpA&VbZ&U4jOnYs17+TA4%YO zwIOVNt}mBonzreqWEWb$Xk=h^Qn*jhZnQXDEY_E1&><#2YPv_X+Tyd~fC8PtJ=Nu1 zjS(Z?Iz#XJLq#{9&uVKRd~4@&O24N0;|+&bR*s6Ock$Oi*9C&sf`*5ORa{*(54?Q& zVq=ESd?fgT6d;d9btT zMlJH}w(ah&pW9u*-|rMWcI^uex83-BW}G6#e?T-17*98{`9?4>-cw$;V0pNr%m1U) zMa1r4y{C^}NYwZ$6rPA?c(L$)*S>4GZ}GY;Ngf-T%1KuroSk0^LPLh{E3&$Quxv!W zK*h2gM4Q{6v_*Mgu<~Yf&2eh|k>}}3Yr^I)aqr)S>ttaQT4`qO`nBs(V{;w`i5GP3 z2PiKR&BpW>VT6t9$X=J(6scC)a4>07O?iSt;&DCA%1{j8-*iqL;*k@Pkf_ON9XU&{ zZdVTI%-0RQP$A*MI*ot#|DMbaf>c zx%vAyg6~B$1NJ13w1Yd{&C{>&k9P=oE@o8}PS~4hzEfV9peqZQ5J)A3FnI;V;J!y2 z^x3EcqP^;)52xeV7Z>h85)m;bnS^L<>2IOb#t%LEY=J4p-gOa%Lj>zYt zZSf20Qsf(R?f>r)x;r+%Xl^WB-I1paHSxAxtnC_QHfXIaYHY*p_Dpo9OVOf|EXq5S zHsaFBTJnTKbpAYOsS8M%;06`EHwlUM)gI@Z#HARv@YW$3wGs~Jku=?Gj7R{N(*XI) z-Js>;_~xOn*H?4b(tC;%5bYO)Y%?*}HYc7Kp*K%)X;+o@JqzGw0i5VVn69dKqFP7Z z-HtsmXIt6LemH56{jlNMWz|5wgsT-%NKov+NXzsIq9Sc}18@Y2ioN(2)hXg+7td0b z17eBD2p$Bun9=6sKS<-o6RjY)X7bvDyvp(WrO(|DSmM7Ze%nA=eIc_%01s!fvh`U0t*3Kxt z4B=5Cdfe10(*^s0J>qYgKwVoM9w90=Di6dth^x!Z#|_**5u|YtLyWcR47>^^VyE^q zbmB_5MNE)OPG51bHM?2Ydjx4{tCOXrCWjkb)OM{>^g{aQ%9V}@*fB>Ey>H2>eic%a zZF_bFgs`K%U+7#+DDUh_6TT;7^3nZtw5|`rt*ZKgan#GfJ3dG*lS!3LrUFy`My_&1Iq{IxWD;x?jSa&Fc5^9omE)qy+D<)Zlx# zZDs#`3jqC2{P*w3ja~atcNojyu34nZ8M%?)LeDqwX-~4{Egjq2nbqVh`|gm=3q^qD z>2rFa#NH@zYb7#TAvP5ac%Ee2C7s23JPF|`WdffXvhc2~u9p!XPrGv7Nu&MsY^#Hv zQ7-qBZ>KH;^q#^auX#*q%u##G%r}G??btp9;zRaZwSRh!NVKvGNeIVlJ`F* zdrQpw5oOMpbwH+ROi4qttsl6Ot3-@D!;36rxmnor&1;DX;p5}qVrvX~*`H3}8?fi9 zCBy`*ADYnmPZ~_^7rRV-!9}I>oM_2+ZXNhu61j>dhWm{iJ?qe1%rw!FeP58HFH~Ys zQI>xJLvBRTZJy$RiTJ4=Zr?+W?&i)6&vE^v0PnT&@XK#|gTjV+a?@^vgT|H~YT&$8 zX#RZsuO|5ma83C)NY)-U5tM;K%W~|5*u#R{UEwyq_~Xj-@r)Xr`?$B0p}1KMr*Erk z4vnk1>_n2QjP97Zl?D!`j!2A==R(E_5#ls^P&w>A25GsSI0Bn9yPhHa%w=#XXI5Lo z^vjrUVP30n@0DS(F6St(Q=;IbX2P%6UQ^d+qWQHwR!b&fKK1p2bd0lb*E6RZ>M(Oh zuTD2ymwx!P-FFI|AxAsWmF6i5E%$1qY$w|b9wCUrnj$F1lGj!WTE#;`MSs@c&-~vqT%UJ-xy`x+> zwQUr&2emcf8T&^G%pB>XyjE1{oTOC|s95Dom&E_Km z-z;=Z55bH;aavkatFokcWuVQbDNd9%h!-7NwPBbiQ8htXWAmabS8arwZW@Sy*(3H= zB@rkfFFM?G^LE~5HrltB@X~bCByaNrdb5vEY|0IHTB*1M2W(QRQI0gQ8|IP&yri%D zY5|fmEE;WQ%j3%;>ZWf)LEro#t3Q@qlPFovy@YXgzS)y3d-v8U{#L3D(+ zEnIkh$y7OMBJ_79LYV0L!(P_xO9;`9{=c&fiJS6ds* z7~+exY9W6MlR~V(M#v-DIbkO~2;OM!^9y}zCkY@>%The4nZ2K zna0n&Cn}UW5WU1RYWjoHJ&a8;VT9ZYT28$icTMmF<=C-2rw*LHp=XmjnEIJAu9gKZ zt>|8?{1gs$qC1N|akeW)1XoRVm$CVxM2}k}gkG502<)83qUomx3{m+VkfiHsPunGG zWHI0&&FbED2}q6S2D06x?E|FR2+djr3aU|dgjTsLU2mja9_BOL*^B*5{+9eEXpyBV z@W1V&l56Ul6}?j*m7D+UqoQMLC;VUds3bRgWDQd37ChE9@ho-oyUL%MOp(mL?Jr=r z29qjFkN=m{s+skxQF>ghR2ftm~ySvR0{+7o`>)|b{m`Fu} zcV)yz(7qcLs;2&Pa-G;6y0*tU30CUWqU7v-sdV?X04_#U8yS zVJTVil)XW^i`ZBEXMg3*McGUev|Cy^K({Afwgx%?!nsL{*} z(O9cgdZ2r3X!87g!$}RS_hf=i-ssC;bETh0WD-6Q>tY8@zM=4l`9_OcA z7oMKE!50CzN+rL4#y*us?l;w+*g#6pKtA~9*rezCo6}5e6Cyj(GsnN;ITnLjkYTdj zsFr;)7Mf;nu)X!WjL_Wz@-s!m`#k5AGH;~;+6dz_cau(~MOAJN>orNZ-^Dj(iMw2) zYC^2hV9k~jV;+*Fd7m3T4I4M%yFj@G$wy0_sbU+;lgm1rrlpX?G36Wdv))KHB+iju z8{3K=&>Kt0BUDn4r;{QYGtZ4dH3hC*xT8$C_`OlaN1-fTH2H?X9dnTNBr4HU7Sb8u z@i@VG=_}XE56I$q+QsNEO35#m@eyp?_Te{*AFDeOx!;g{OR4I-qOosbh)GeHNIB~o zX?mZtyxuw~2p8IYGL|p)M{;B#3k|Q>GbCBT+8)BBBGe#GIxf}dclEsCn>Hxn!l8=T zZ?ff0?_;YqQo{op*OQpymG|!~wadxuqFg`Ca9Vb69X1V*uazrm@s&$nhgGjT#%k70 z$@O;q7wfPL9;YK)F5jScEeSJo=rtzEP|lUgKk@pOOeFy4jnCYjkOU^I}yqKNIQeyX{?_>qN;u& zw-2?%wbzK9-51Rt=XUL0RRr1UK7wdET_GvWGEdLZDT_dICZ1Y*qak6C6oxz?&(ksP zW`VjMjNyT?cxa@XV`RBrnPDeL61;99uJ|A%f+$?Yp?-R{27`V*?jS(#6F>Q?j`C=DdvhvWI z%q>N(BiM5k80U{;*m;mgU`itkxbhE?M=`H3h2T@mbW5Z2fTqlj2GtLCv$M0uU)mI@ z+CZ9aDvK0K5I2b#?x}`yyam%%c5MY|L*U9c5A~P9j=0v;G{;0(ftlsPgcXUOh|X(= zhxeo4izy2)N}|TEp%!iQFG|*je1DoM)$Yu`ye4%C)8?TQXO|77n`m@cBv3ji)C#m* zSD*3bXDIz;MkDW6W38n%WiR?DiJ~P+&-9{SuiEgWUQ5!|qO5Ux(bcLpB2709^L$g$ zW;0?rXy9K}^L%sAHN6Bpfr9orkr(Y*wc&5Nc`t7>4edLi1|moQ$3hl=hOrfUWa-N2 z^e)SjB-Z4ah`tS2#6-kV5%Lq{yBEyC~W z3~FAQstW&P+FBuZsncWkmn#)tD){+cK)wW*WslmBzw^q66F0o1-a@+3iQo4qzH1BT zSN%{S-?dd!d8P}vHVn#aFN4t*2t0lgl_d?tU01wR z##r3zt-yP^uow+rWWhOo=uX)gpxZAw`q{kSK-V=y1*-nu$UnUHirdV2^tz*W6P&kfUI0`*KG3-?a=&C_a)1}RmTBY*Ce+BL zmrN9F5C`zsv;j6;8X}~UEXTW$ueI0&T6+^19T&85Ju&eAjLxX4pX>otL}4TP9GLX{7=P7D$j?FPop zt+dQ7l=V0yOFH5U?0JWq*HGn$vQ2BGLy7F6{{E4qn0Rd*CTi$QxjjdFMLOQ8G9N^U zE-3W5B*+Zy;VB=EU>i#j=a-6qx$9690W+*i`NY?WQNA)ZPA~x^70rj)c3W)K5fSn_ zkdS0s@+mnF&eFUk%HXH7$VQt z&vDGgPKgMDOA7xbpDCg5BVV*qv(EiwE)@J+gd@NqS7BohlRg08;2|+?WT}xw+(Om za7x$aEk7G>e>y^A%cC(LclrFrL-Q2@(&f?HT0?M+TQEHoQcUHMz$G*h$Cm}QvBvvQ zuRKARUa076J_;iv%S2S9G_G~T`59GTE3PZB135qI4JcraVNh6T?#nF{-Z~tm%ZD_EEN?n)A%#J*o4Ky)qVx1=SmmwFXW&>Qk+evk~DJ z5UOfea&85oM6PsY;}!Og>Y~0_!kp%})Dl97h>YANL<+sS^a-`5 z_=Dw^K-Z2SUIFJ)s$03ess`S%ABNSkA9lkvZX9{mB@tYIvh7juJVs-Y^RWrAaIJqH51HedZg}aYkIrOjqpFx2$fMdkyX~$YjGzorg7}Rm1A5Q$*G& zap6;;MuedS&HXDXf;Bls3*BB1Y$>q|1H^vM9Jf;Zr9`u)Q64p~PZW2;jnyW?GU9P; zOzn%Oho93x&&JrGo9-1gfNuOQ#va4sgQ`3$6mm1ExR1ZKj%nl*QCna=H?2eCLdksG zA*T1k_+rGRNqFI+>PPa5M6U#!Y%N^RLXH<}7N?PMx?G8^rK3oSLkjXxu@(5Vhu&_` z8hu0>@k-Q0_B>_Ur=rFS{WwdsTn$l{mGqbXVHM3)mWpmtSiQ^XY%ZOxMVtCX60M4%X zjz67UIZE$H?E3M+^cG6ED8~m<@AHY(#>#s)I={DPCVD1mJPNawl-md zLhwH-oBYdnyeFZ=Xmvv~ zF}5bD*ge`Mv@o-A^CeHrS!R>*XuOlIBiZo6RP7B#veSbm%X;zTZzl9=m#HH7lZtW& zY^;};mYM^9Zz*|n5h!ao%O#r$Rq<*(onn{rv8Ze&l_GG7x(@Sg>C~A|K0cJR0lS~hGOW#1Jx+}FK+ zLxR_N)hC{gE*u>Q8}FI$I&OL63p@mgYfsQMe06Uw6SX?y`S_R_Rf~2rRmszm zZgAi|D^0WlG1DWQo&xfOa!8p+Ax<{c@-D%Sivv51T1LmtGyJ{QlZ&UzJ!Z)_LsBi# z`^`4nZN^yz--ITU8-v#~j2GrfvyrDV?P)#)jl~M9{Y~Sg;S~eG3zgb~yc0OTlbS-_E*#z=~6{jYA())i_up@JCM+3_IH&Eh7&i_ z&cb?7RaT?JzDY}$Nl!6zNoS+;&yt~$y#q!CohT0`x{tQACd>YQ@>I!DKUuV9m%kBz zG@&Zl#A(){^a(wc;Bd<^1M}!xnF8k%ma@!+&iMq>Oz(rN9fEw4J|7D;T^+`CL3i6_ z)s|&MaS2vF%HL`k3NvbMbP|Z3>(uHBoQcGNn{zX)g*bKSMqHbuyAFsB9V%qFx1%Kj z0FVzfImyL!Vm z?H*^45hx=gg-mF#B{0!{(4)gbVh4L&qoU!XK`7QU@c5!5*U9`Lf~e!}>ym}8Jcp*5$w|~hk6DL; zDBzV*F7tj!FPijD_4#=7V-9nB;Fk_JUucv!bJ}8WN+^sSM5Pc(K<-9*JyAJ#!k+cFK^7`fBlVRw6$SuyUMxfC$K6$*N%f2t&)Two;Jxw(JOn7ha zH5rLnWrRRbfS$M2 zAzYU7`#CY9=lWJhj#XD)8{o1Fsp|fbp{Ac4d%}b;*tBpsY9e-8+Qt&M1~El@CMA?S z5w+7Gxbx~yHa-K9k3Ds;G6~iTfWp8Jl93NQ|AHS?Qr_FaFCp3QawQw)Xs7py+UjPBS&cP(X=l4?$^;BErG)`---Uidoe5K+=D95hV2G5_5|iJL z{lnG_U#_!1`+PraV7hgVF_^Ac=>jNj@L$ZwEu+nHT+|@sUohqvu6M( z(#Ihu?(+WnufON-i%IMgVI3InP%Po~w)LpLSQsP5oC z{$sja&HIZ^5x@VZXj|-W^FBOxA8s@$-WCevF8Rf?$9gP_`z#q*^$ZE7MeF>QU56i8 zpGTyQEee@2q?fHU2X8$H0TsOAX;_ zSQ}4mQ=z<;&ww2Ods(SX^Vrfs1EUk}=*@Y+N+N1}Y(a?(QHnxGQ}B;qqm;ziEMW}0 z)_CeY;m9ojpv}Tos-0_QT%z6UA}jw1BvvLRkWRe?>`8vC%$N>LoSJJ3<9hb_oIW*k z;k}8>G0q{+eY=0+ieaH9WeCT%Sw+!1+&h}p{Oz*)dTiqiElzE*%~9K!Fgump035;c ztG2di2$d)|&XL}_io>8B?HDiN8k?Z?`N#+~(_W!-(GLstBC=K?4&xsrZy?yl!QUcA zzC=`BukYY#^8q{DXrcjZV?hq{4HFvb6+Yjyz1rmMPr&d@bjeIz;w^0OPj8Z?(|4r| zdJ`AravHKFLpcGF!TOmH(>{CgbeJb!XZ1MpHqCnKe0X?IrF0MZ8*{@=hA+H64uRLJ zEs3`_CkP4N_j+np^#a!7of49=4*nx6{ZsV&x8I$U*_Ke%L$_|o^r7EQsB)$ZH%9@| zTIJEv&g3m3tW4XR-7EqeNw4SYdCxN_^d0dv*mE4#FB>9QUcd0=sg#iZe}(Z?ygZ8c z@Tnl46p{{Qv+Qx%u3=G|dgS$)G0NH9kK1?t+I-jAM%=Vq-eQ^|B7VOD+PTiflw*lqAz0$_sg`&uZ@L@20)txH zwU{U=`5hfVA! zUY3|qHM%~wlqh;-+H_Vo5loQ6+MPA)zRhC?dqMBs&{q zhbXlGt#HxJZy|@Hlh8*`-^&8^JQ2#K2qSAu)G$8xK}fc@(;GMRI)r&%MBQ$3=G0$e+ZF+ zwHasp7VP88D12wgK?z2C0-G&8(t3^Fz~Rqa?BOwuz^EOcFX?EK@%^LZ{wrQ-YM{abyb={P7hXC>=peJu)&;G`${~~r$7yZJf^YfJ_2>|T)Im*wc$DW%M zcj+g(_tUx5hj@!M*tK`+s~zp_#c0pej83m7+6UU+gye&$vArz& zh2oQf6cA)fibUib7Off0Kh}{~RU#9Yko5X4MeEjar`dd02Q8E`c*xPzf0DC)y`TP@kdovC|-ddmq$}a4sCl#4J zA_@;fGI71nf%zYV=~JC^B+YgNYba$9wTf&BxoNtmtF`T;g7xCUX@fq;*)|8YD6oA; zT+-v~n<%3Ef||rC5q&F@xG>t9nA8=&lmk&VVd<1)(4Y>2$JyUfo}ur2v(( z6B&PU=<1-lqb^E|RokD_QTT1a#!TXMX6%ewg|?whGX}|vd3%H50|Z`%pE1nmTbxii zH;K%f6=(j;Ez9uXbSAUi!UfSfVzsM_2kZ>t9S+ZjDs4Psm&pu3Ja3K%v;Yjkk<$k+ zyfo5?q8MlhV=9^6M%`|09RWXU0Q5#|u4Jf~2y2QA)m^157_C0seAWj5c}MuP|& z4K?A04muf+236gY>4sivoiqzaMYd?V6cptPD9;>^tz4X6(_HRuX<&_?QT28gWS$P^ z$lk)iudp8}{U+F)V-`lvSf9!6lk?T|M3x0rM~nL|fnzgCr3;6ar8+%hIjL_tl}BNM{o*<~W9i2Ruur;hf?e)#0eC%-P^ikAO)f`2rR8$4o$4ST*(MgP7+A z%4n{~2gjA^#nlk6DF)FfW$|>m!!xgMtn5vv*{!xLesz6R8hbpbEj(nT5j*BCb{Gup zw#gTU9@H9-_87ugODNP?freRRa~Hy zel?z2w|b^_B8~Qf;YFPN464K-y3V?3Na$S}0+p)8GkGsm7wcL6Nov({RqUtekM5Tu zH*hAatATs0-ee2F2TJ!3_MX>MbI~_`1GwB=rp5l${JEcrzBTCrHd7}ZB0)}!1Ly&9 z*Yb=^1#j^(Tw*(%MF1$>!;kE{aY7BIhGHwhRD4J0SYUbRw`N2J%(Woa$)X-y0CZ_g zckDCF12#@PX%^ipgLS|$-4NQU{?kp+jF!Y>A{N@*m!vewW&JEH=5|P2>@!Q9xNs43 zs8hp1R1Yafc}B(QWJEn`(%G|Tu&Vbn9r+=+K}))6q%xxVRP(|?`UM-lh8Bf;!f^*B z1B$;^lxJ5I$@!weA5jj?=!K+8>yWC`7CdAE$;WAWKO+=&KY2>h<1iNMRw5^gWeRqrl{UcT2+;>S3-H>JT)SAm&7<5 z5703nQ~cO#;!T%ASY;wd<+aA2ZrFd)r<@C!bUI^2dF3YTWL?`9e)0Qlt>{wKB;oEp zu>0p_;}PX?)x>EqU7{uqk++JjaTAlwIX>osF5mB*E7TG*~AHg708u;#0t`oZU z&2?YcSGzXq&*tso8NZlvw)^p85{A4468+B?5se%$&}wyFlJ^7{ z*Y-x|K;Z3#7Xjy44mdE&-?CHDh`_*I4vLD*OUIPBgIOG@-_ASqWpiJAVtZ&^V)UX( zvFLZVhe0I@>yT`wo?%-)jn3~B;35cUB%orW_(!;onuw06Om@i?S(s^k_*T?Zer~p9 z$1fXDKu9xgd*AxD-nY#2zt1TP0?c5r4;RaGz-5Iwl$4h}rF}d(W^p_@luU&^KLNc4 zO{Z};;3he}L-rL{);q_$3o5-g?JAyT-4FGTW%pdp9_^9qdZfp5IJ$pVzK+oz0PT{# z?p9rq>hSh@`t?8{F6;9TXNIynPS5CBzTNBDKhG5bFSHvJY?rJ$-!Q)xj4A&%z>|XU zk(7Ge)Sv=%WLj!`?(3{l7ikZ}f@wKTRt48mr9wgB?%`a2xG&6T9Q)Qqcu$g4W}}+E z<%#$#k4FfAvjxBD^6~76DRuJK17!f=kVNGb)5>4z2;#s%>f0 z2fxswCb~aonFUq5pJ88g!t811)k~{9#hT!nIEKCIP7;#dSV4>~2n~CYuR69wK9))~ zi7Z_F!$y4fyJ8rh(`?kray2$UDU9-BHw$Tco%q3Se%4qEZvCmPh87<&-NNljDW_3G zlVgv3*=7UIgqT;w)%u#;ixfl z@9Fy__p7your53&>E!H879Xann*k@&V1RTa$Gs(bowMqQD_HNz780(0A3J?V#^-iy zXM5{xg6Z|^KK^iZ?ArL7q@_9W0}sVAK?zd=NBwu3X_&xvp4S<6r*4x1@cXHqf96+V zI=I7G6JC_zgR^IfA0rQQsiKU`Lz#L2$$BIb&?};3qFgSS5QIw#&&;Db&d{~AOG7)} zSoLI8e~_}^ozfg6p}x$R4@zoaWhzW@eeB$l#rieIYR;Z|!?f4#>%>EOllc5bQi3$! zPbDS}qBJhl^I7WX10Rf(jj^?F-Vn-_o}dhu*h==-0WxDvA@K?f1&hZ(rX`21YBPdAgD8d`zytr^|(5 zsoCOwhb4<_?q`SNl#MVlw^Pst(xz5b78x%~*H7;`Jd!v^ym&oL0{kTp!Q!UQ`%RmE zU+a|D^)4Zs_W0kU9zy%e1uV(wNkeL-GksmZZ7lNB=k`%%djN z+RAw4Ts+_J%w6Z^woSrox2CR%X}=~zKdqB?qGat`&+sDPZ)f3Ph}OV1eCRZ*8xf4oZEHa#HMa)my7`}q16d5pmWEOi!6)uxXCGGh zoN;;j5CV5l^>i|_JxC}ph~fTR)C8!(!UUu+nFTI~rOL4Xf)0JKg$~7YziLpBGGnWi zzq*yY0GBJ+E1r6~(EwRqp=OT>?^F<7F_yCIrZvz-$MIWPcsks+lxZ?SJFluje3BPi z!--$Zz6lIUervK&dfP^mxZI?PHaLmHp8Du4rMc-00LK~~UZl-Qzid2;uNh|#v6(|k z*+A{87d08aR5OLyd-fZ>H%@w;t!(KS$GSrXz0#xgPI@JOknwZ==^b6|?C z!P|zj5@jp8FpzIW08IRb=>345GM0f1BmcePFdxI|BM-ha?I|sY<=#>SSv>x0*|0-Z zkWEWKJlpUdL;;32W#3{WBu>nWld?Z-)E}|dv+$fLE5hzWqSDKeD^DGIk8XW_e8A^t zbx{84$-bXbao4V&c^TiU;W>c&=v|uF{UmcNBIOb|CV7hVEg7aY?_=)l0dczOQo8X7 zz@7+~Z~`ii!OY9im?)u4jX2o#18W`Dv{DGUQ)bs`WDY)*c$-uCoU-x#-ZmLit3TNi zTywv9X)h@-C;if%*0oYv-`m%^S#PJCrUH5Jzc$Oz39T9cV?oyseoBBl$ zC4ZslOiAjwHM&C(h2H<&e=m!ywbmoelI4R7^Yu-n2mSM#dOVwZkQ|+NS_>Z=KGnPv zM*4r)d+(^Gx25Xy7UerT}qT*gD6dq-n)Q+NC`baXo7SC z(o34sTL=&!gg|nG`*zot+nQy&wS>y=1LT7gS*HACF&k%RJ z%L!fjty5*nXaK&k=HN3*vy8rk3$ht&H++p9Z3M1A{f41Fzn>gVbyp7O{Hqn&zg{P` zr#`04)NJ26<7b-$qkCt{0|PdOkALg*qp%V7!ev;KwfsVF$_ayGRE0*)GheQA*}Xf; zlJezBk-cu1irbeUgHolKKnlP4CChR8@Zqr`)N%Tj8KN``TI}d-<^WhNrzciFw9%*h z`zhZ!hns`I{*lP4EyQ`bS~p>>WV+&3qVkN4LNUS_PqI-M7>}EI;1orXT(3Lvq?f^a zpFKL0oHfmY{czoJJ@}BwEYs{W(wDh{WI!Z**_G|pwN~EAKk(MR_Uo(a0|wu4hW4*h zZm{<>ARU^}&&)R8HI^l9WjPjQi!6A)G^1QyWx-b6U5cB}WBi6cSD>tDho^sgJsXiE zgQv^5gmc9_8nje1R#1GPnTX*O3`kH(A_^iK`%7DX6$9xCoRV<&IMQv|Ejg0}XG_{^fYNc#6uo$n9+!2fuUI>0QVzsKG+zvuxkzg>L+ z-;HcHuqoMT2fO^_S`hCZnmhx~zWFi#2>J#3lQG6j%7CHI{Tii6CbT3s!ka{i>=~zB zHn(}Q&x84WmV!OEIP9B=3=S_ydX4=(8pCTBKbcKUUdclFCqiXwZsM4mZ40Wo?f82u zMVucyF@dECD^F2d%R*m@3@T#e(KPo@Jh&A!FPl-G2@MsTXzJrzX!TPZm=FYuM8=G< zw4L3W8egp9Xs0Qjy{i{7x+Y7Q&Gq62Jul4&+Y1s&mnBrsRp*A9bVdJn5lY`#>~?||8#KcBBAq}lB#KgB$f zpUikm#HbxEPfHGYU6dbfLNaL{c7Hr&VfR`Ao-}YS_?`noFi~)PZZ)_nwqNL3z6$0n zo2~MO>lGg#p}1sKvvta84Ah65EuE<1HhqzThER*oxGmHqxeHZ&sI=5QB-ua}mgFT8 z5{RvOuFqt;P)&{F7>|oTFRF6SM5^V?m58gae6NllOZw1pzv$va-;2_56UUNTjHS*C zpJ|ixy%U)#*UO`sfRYDV$lfXP*i_phIN)bXSvTf+eo_ui&ND6Rx57xguGeqNb`!zs z{oK=K{TH0TFee6~7BN9d7K^?RlR21F(k!F~x+>loKZeG55~p)6PUgAjT$o6+iVG|= zFe8@%KFxBEkV3d4DAkj1whUIJWlqvY5BVm# z^GMqu#4K$O3c-HtWbe}r%ax_t8gXMjX6$&HdKDj=e~YHJU5s|iq)F`vY^WA`HtclcPo<{|NxZ1eJ71_di9}XVG@y&bqYl8P)sui1tk+$Ai zA(z59Ylc<>`RwmV=%Iui!J-3jl*rCGhXu3Lc0P=O3ZzUn?AbqlE zHIEF=iHX^dH0seTsx>OTV*Fmyb@X|cC{H%Mn8oEadS7qrv@3`C$-|8SKl0z?*pX6>nIQS^H zppNIrD`NC8D|_Qgxc9O{r*-dS1^kJJ-ZNI}rs+?}=8sk16Itz=8#aUiGINt7AoE1} z-p#vtjAzy>Qp;I;m+*WK%u}RIml}}<5jCMB3eJY8bNHhPqVW%OPMa}K&_c;U0fe~@ z!q6yEN`zZPlG0t!;G;F88DEV(Y1w6&lUCQtl61nA@R1Fi&d%@+UtH~ZO+-Y?0vCJUQav2g1~SIwk7uSXb6yD-O6UACr*p`8b5^C74ZyQ^ zo_iEWFfaHrg`pYMI^yet8}s0g_=y^`is1NgJ@dFMbgrb&5x2=~i3~&!vJ=|#IocTC z&q|B(lOGZhjvBQQxOt%*&M{J^C3Y)tX4M&A>^AxSh|iRDYaBb@llK0rcw&`$^|c&6 zH0r1o(8!?X(&Q(LWc?+9FX$nDiNhJ6{Xgn=w6v3qu8$@hk(%TiF^H=*_pH5063B5- zkFF0Kgm|u^(65Yif*l>N4SIfg2blRFe@5yyxz9z}+vP-)n#=U6$GZ1%vy`ICL@ALi zH!-7RxsTvzttYh`&(CbdCnlz}25TJvlJAf!=R6=kyA4deHa9S4H!7VvO3Qik64(PT z%2sTm&gHhoYx$G$BfeE!j3$C)(WT=DVklRxI2s5k`hVxY8)JigdYaa;I_pBLU)X)> zQ2cNzDs$68F9OUylEMrYemW#=st302vSK)9K8BHf!~*|ibvaZ}cJWtYciFdk)P zh5@HZ9~Rn(MppB!X1JC2x=pnz3o7%4ITb?hFOdozjgzAb63i!Tq*?do+#Wo4KX`)f zg%7pO?Kf~p9qB%2CezhOu$@hUKo|1HEL>tSqNZoT=$XEGXGq1Ep+^#HhJ&3o;I2Y| z1t?xU@Yp8e86sq69m>RpAorV*!6y`5-3qqSkK5~nC+T4LN)lJVK){GlkfNmdZ!a7tsOIZXHYjfJKL%V(yK+y3qV1x;>q=^tdyIYNpaFi zYZ>+(Mb=PNq^_8jrlvp7r~+tE&%z*{=al21E|$;-pSc7p6~G5pkBlL?DpQt56ren7 z(G}HtFrr{m2_)fCcMXsj&+@v#Cd*o!YoKE!4nxFSwYllhia%mzU~~6-^o>-3_UI5P zyEo`Dk^;#WT1?vfj*Ts==q$#$2Coqtt=yo6J~2Lb*@4ON;R$XR82CMIHM018?f>Jd zE{pP+J;adhmxLeYc;L^#Sl)QR2E9xe`xL9}_Z#lQiSI#y=fSdmD;Xz{#2s13>?>e{ zhaY=i%H%-V<_?i7vEW68`%?c1Z0FQ|6jfer2aCVAQvamU9#TmFrg$2>vE&qQaRAr# z(t?Okssnopg0a2_sE-xaQ$fzvVc@bqLn2Wl`#1*LA9KD>j%l^?+dy{0(Mj$}+D%PkHrPeIzOm?-~Di zp`9QIbw-I&)or5Zd%|P=ZY^H8^8MzN@#<;}XaEYPG zlj3>X|7aT&g2*RK*_>U)Tv?Yku)yEu;JZ83j94nD=?v+qtSDo>z}|QlAfF>~7-Yk- z&}=Vvu>O-15B#sNQ2Y78CLjJN>YJp5&8$o6k;~7=yoG}(7w)WSll0x#HDGDaKtFzb zm-u^RvAruUDea&O48vlx^zCZxRQDu1c!|q`fRX`IpOn{a;XMuVoZ!ubzrq&zm{oY3?Ukdsu(NUw4?XD5rAIijzFU4|2kKyn+iK z@?*+(6eQP7&-USUdeQMc#q)m~!=~mg$H>&W9pB&j?%!Zlcj;L8GexoQtUsFfZOTg2-`hYh&ja&86VoLVviNYW z?o%E>?&im`0%Q5G2&}7`js*T6<&DU0^ zHd2m!B|hA-mc4xC#d>Au@z+MyDNC;3{H&(4!g@s1Dd97a>8s*~3^e4SOR5lHGT3j` z0Tej^E8Y4|fo%i}ZJsNOc8^~JGRI~Z*z7y6;l?FAQ2je}wF_SqP%zwJImP^Ym{IX_60D~t@e=*Dgqf#?rfTAC zWi9~^wA4pVamJh;hcz=)OhZ~nk|}7xhQivCCa9nt$p%G!sHB1X%e+X-xu40 zRY~=mOv-IUoj^JJg(P3&6w!#`t+PTL<0cuDzVj12DxS~6614S4g5oc-TD1~=x@=WC z#hfoRJZV-~A9qY>&OA0M@441sFsQ7lSZ;nCewHM5xH9jHOHWGnTm)lN==^D_5D*uhpX|Eh=_eI>^F_fI_SDB}j%SJx z=emi^-km6T#n!KAU|cs@R9L~+IQH0O!5Wo&sqJCKO@kw>x@)l8r=13>&nC_zL||WB z6io;#8MUKmIOO!8u^pJLIfDg!?s<{X911z0r&>d4yq_^1IB6qE7NmcLjS6s4mIgI? z-f0E;*Xv0BcU$`RpL$8{3Vm)YzotTKXDarL;}la5q+X}SslE$Y^Bp2_SKIPVM!Z6F>u>;m}^p{l(3u+eFPCb#Hxo0g%1er$w3|M9ICzL)^r z7+koiWms!xwTF6W9%7rIlgbl0$QQ+cC6+I^?ftHsNKilc`bDK`^ zZD2RYb=ySF!&%lT5!4B4^D8iW-jeBVt~+bAoWk`zKaOZJx3(3e`We@C{b$lX0Z-i+ z&9gUjT->h$43*g2Jimd-SSt>s^7u`19`PJXFigK9xLVbbS$L=a9dmHMnb57Yow?Cb+s?zd=yu@q9y91of9hi_ zLIQy#^iUMel6AaNE0oaZ^i<m!9?-^p3G2vP_lsw8Zk! z@LI|NVEus%&B{pRJH7K|E>NYY7iynW+t5jN8nb>97AB4vq4K=qlr)uMV-RHMyBG4y z8IQYNgW6rCW%3w=IE?+yDL7iWkzixFq8Pwi!^fn`{PqpH*}j;_Z=NL&h`HAS`A|*h zF_Oj%i+D)$xqaH(0V=fgj+@CV+jcWiyWC9WNAVLMx~2afu}N_~m@aF(1KFtbWUeB* zUT>VDF+%)dbw|z1M#a`naUxJ?I$lc@WxTYmO7KL!D>XKwKon%P7mPMbc|1WaM zSk3nQxE(_)%tJy*wD%uD)b2G(f;X_nm?TbJPI2NY4`8l z6REu0<2$&4t60B34K02J^_(chR32I1QRH6IJiHz47P>=P4wBAO*&M9*tIf|S=!~Ex zo!5wV^73E}mV;{>sKSvR~Xm_F$UX^ty9NdoLuR@{MBx^|jQS%FhoO zS5jeIl^6|bu&gDvudfoKhG&uwND)n_5mbj4k_^`F*pBYcBW~L6nqF|u_VkMFGW$K# zFX-9>sUA1t8kv?ME@KJoOv>=o&F3Gw>LUd$+JAPWZ5oDDDupGu>T>{Mm#?q;&`vS3 zCB}|Mu>@#LY_&3`v|+ zu;pM;kF9L7<4sB@G?(Nzi;5K`RkZsY@XK8T9{j#NVAuT*81RTfszMG@NY%P7zVBhK zGY@1YLYAk{u4Qh^c^cu@S$g)3_d+;!+1H6*nRDKbeeE%GHabCfquO%#k{4QuLS=Ly zRNlX&{qWUs;!ztR3a#`G|6yM?e}D?`U?)0YqL#K9ynr1BXaDT(1F4r8MiwO^S8%f7 zu!#vmn<)4GEStja_U)=e=+kb8bW5h4kiKWz{$FbK&)UGh(C+(KjJgnpU5RSgc6P>R z{u|jDIh4vC(u~%F?Id9lqgPMPdK9Ei~DUUJrUuU zNgLC)=BZcvn7x16;kR9Ng0$_T8r3dmwC5Up9}V405eik&iehoI?dEE2J10n)M2#Os z>Y)>PAzSa%x78@`)52!-4+i`G^H={}#Q*DcKXy%|$@WBE-!+kY)Q=?F9DD@j)kdX3)~?lIAVGH6k`(AyY9Dn%~jpY9l3ytWpEF4Vy@rP7Ru{ z17;1jQnu-bN>%2V$t~WeHiBj(r^rF$=3v%rp2j!{7vQ^pkhpyN3kSdGK2YvXk^m1J z-%g+&KHez~@_r7XGP3{sDzftz>SJb&AF7QfLk2dq?{zS^GqLt-g$SA|3_7JR$5I;K@Gn1dxB5!9_;)6e%?3R-l)jzo9WRpAF zkoO`>JT3v6vo@T{U9+CfDty~l_ANKYBv&Ae8N{7&h zjtHg~gE-*DBv}tZ*jZ{}^r$BTRNn2d)ny7!8Dq?Q%41!=3DE~pexVGht~RL-3=~>Z0Dp>f??%A(U%xuWc8g&*LayIN$d$iS!lI{8 z(8{+I@2#5y{V`oVTvN)Z3)Y;S+-+{`Zcy9H6IJ-WLuM$9Bi!r`WWD~B^u(z4G8e8; z)A@T;aeZRdE%s{DKQ?^Wu22{fVlG?Y(!2IXc`bF*1~cXm3N?b%ux=JT zH5$Q!X@%%ZN87(;{99n~S8d^+tL~NZFEIC4q58`X%-w6DGK5kH&Sx@Nny^0qaALHH z{=g?~3BKQAT*ZG@K;(WlzRX=rBX=rxW>iHKBE7(^hy_PvetXAgJL!33T8I~W)3trl z4%;Cgy-To>SH7JZ_x~2*!~4LzJ=G=PE9;u+(B~F;F+Phn+J6wN7#`z*Bl$A8qH=dA zoBntbA#hVdt1{^n2{?A2opJ~6OqaEKXGY1hs0k)W<4H@3z~g?$jTEV@%N6Wh2zp?Zggh($O5 z0#cvy*hQVDS`QU%X}L}$=G_ea!0A7ovJrYEn6h6)h0P|N`8Jy2_l09N78bL3y|2ID zcV>EwZP9rbpThTMd($+Y_zf^E#ryu`T*X{IR<=uDG4Oa&=qF!^^M$U}xzN|M&Ui%;HbwyWUYGXKwB0ApB#H{Zo0I!0*-@Tw(P1Wh*P8R%A%nPFQ( z$;2yDB~pPD@|WMIkmZCwUfth!-sKgxi^z%JCX_dRC-5aui)+)Hl8zPTDm4c#p58|k_!A~PSKWn%a<@s@7`7c!cCQr%ioV$2 zKI5OFS6l?@tQFw8mqHF_-oo2lGsaB&C#Ux;Z`{dx>ehF;Wv{Jm21atny!Tum-zGE9 zX(Y@4Mx=aj!0XJeRSei(#ohexUTx!lfXa{}ll{L zj(T&vW)|nf%g2>>xaKNY&O6}Lt8bdcu*4-9#3XHg_FVNWvcuk;Q?}NP$3xjFkckAe zl70k>2}$6^(h^R%+7%pr$;3nHGEmVBWt)OIufhOvY?Jv z1Yt?tj3`Ctg*;nzbpt%QqVNkXB!Hr*v{}d>G4m^09}NLbe>=DE!FYP%z4&i{7qsF| znTh9DPTIIDC*3Q>tbg#)l-wOfeSf{K+Sm5HtH`^G^wUp;h)?E)H(#Hi`$m6oT<%~4 zlU+xIU9mIByz%iSqs^tM@fqggRbS2rpF=d?ux+a_ECSe*YXsOMi!`q~&PK2hK^iQa zCdn;u(3z$%T|p-k5-9xAZ#*MFZs!>>tG`NV(fj8ZRJb0PUowNe01=tC2FK?dRFc_q zje(Ix%k!Ar#KcQa#i3VL>l3X!?ouCK17rD0Gt|YS^8~RO%NWUJS<=~4!nTx4)@rpz zVtU`bHRfmG?8t4C8WvDI!_h7Sy*$z5RYfSj!c-l;-lZ~qS7v!!OKVN>bVg{G3`9TF z#BNa@x8gI>`IgeNUueknDpwQ@=fqZ?#0_D*!s8;v-2_7!Ju%$T=w7al3d{%`-V9QXQ_mEMX^@{yQ}b)mHJB+y7v_7jt^5#VSOM;1RxZ%tkC3mwC08#6z=e6UGJSzfcTN* za}mFhU%N}~de+hH97}_JC&${e@Z~>6pPx7Z(|3a>T8jlCkkJ1Wea<)vtk(vOC5pP? zG5`=Qp_raWYS9J=M*dt(ip{n6RpDQ|#i)34| zFN*Ad?XMk`P@68qvYSjAMbA3h0`U+ZdSVuO{1%kny-VQ!a3R*oO}zubV)rZhN`s(y z=I+P)u4O-X9olLeg&)LTT_bK}YH=P(aRy|F*&~#dN z7TSD>sNJS$9Jiv4*XI}asAGwDLjyRwb`_r%nY>!VczKq(%ebe$efl* zcV#QJ(Le39z*y&`qdX!O9X0A@tl>MK4UeAvn);OVVA)B67TI1&FB?0LD02KV9 zoEs1+Lx9>X$ZQpG%G#2;Wz}LZ=%B^=C}|@++<&jru=Bb)r(LHWxqj7k9d?n{do5zGcT>cWc|{$0 zH4Eq?*cyH5B|`l<$l(MzHHx4JK{*@s;&kPowYw}==hOQa6TEq#z024Wx7TfD|1c;- z_09LFmo^Ie!%_1^d>Yk{DZ0F#kmfNU`pZJgY>wjAp(IMxtzE*+-9Gp)rg6{Q4(#c82t(X{ZCT4^E3-I?mIYazU^IDO(w2<9Qh+k`zLoi*&x zo(Hz`D7SWLzIF6}6=To*MnDWve)Eiv(t7|NHBZrvv{Q5=hbX#{k9vGf6#l)!&jcdLDd4l)DqiHx9%#2`ch_Dtk=$dM?F>qQHr6 zh?5{RTypp&@TZWI6S8$bcjKnLxmn3w2W~89DfQl2*58;(boGJMUpbT|u1s)zGn4nc zdQr%dQta{#WVG>=`h=q0P&$rzcp^=nK=nIhsnV{3L(wnw?c1G#!yeUvV_5w+Y&}ux z#hge2Ln}8-(N(cvEAp^#US>%pO;NH|Y|j~?lfRML>^`(Xy|yh9Jhx-gdlm_99-|yJ z)^!os=aIvIFuIa-JE|70?N$8pJFED=qQL(dqQL)ULbqG%&~iR7j|{X$=!TE}%+Kuz zew|g&+DAPS^rb@o)Uc3feKa#I5onH;7Uh(UKp|? zGNkJ#h{r2m)y{5tcFmV^U^)N88s`*S$D zqh(FZYVQ`*BNK_|EuJiX337h_O}7IW*}U$7#KaR7fT9vp7d{{6`CHGoD7#AuS>3da zUGR^8hi{<7iZcGIIw|wWLNmsqD9sjurlTe!3AzI(imFx%J%`#L%&mNdnlDENf5Zr* z{w!=}Rq0iP+JZ_Zz94|Lef^|t#kJh~MvMyRl+kV&Hym&UF)dd>wG?*YIwT%w+ zjc}?|=9iGuDf4f2v;L(%EWy$PnaFjioEvTNX9|R)z6qTEe3TUToly{T;|8SdUM-+#5-;UOR*m-?Rt0X&f8U%~1CWAkYtd=*<}tN~ z?9bjTBAMtCsJtnSMiyr-V>2lnq|%!oU+*g>RU{BVcvl@6im(+ zY-jWDRa5z^v4QFBX*Xy9&%~878)?0PoRA$D?kVKn<+e3n&gNGdo$c2lT~Q_S;-T>}0fas8 z^cqh~&RJIYia}9i2yHwbSO_r?3+6J*NUUdqX#`x~qE*;1egS zaw*Eq@QLP4;Ay)L!Gznjs-NKZ1;`$_fy4{c$1L(gV$p=|-dCXXv{ZWmt;i0p!weFkaYkaI= zmR1KljY%x~%;m)g9}P)&wu%As%Y#APG-e%UzC_GHPA?HJB9(U}wN)4bX@I#mhOOWb z8QB8DUz27@>3nQ807mL#?`+D^M13b3I?%islD;F>Q>2;z*U#xbk$FT9={cgil0=$D zvjWl)*exyjsw;V4I&y1f6#*M&_k}6%em~fd@JoJCM3xgxEof^n{M)=6pu3C3clf0g z%-p||`isSf-g1$z(HER>sh3%kY~_9q`d48wmNA(3UnzXh!>`CRaE6DF7{^nA-mrSg z5rn%mb)6W44jaKwy27D?tQzBK8sQAsU`%Xn72)3rd^mLoP0wewiRW`cxvIRMBJmK$ zxM>8;;4w_xRA+%0yoW@fCL?Iqk+~_Pu5WEXWGn>l3K_c+;~u_lc#iXxp;VUAC}U@`R;{N7JBiuMJV#k zxR{I#1})Fz<4hy=BDTW|-%!2to8jCD5AI4#Sqa8qz(F5JBYOvkM_RO-NKKiV7+U;X z<42&)bT&Lgok04Gj0>Zk;*XG>CbIFcOrhk?&UTp_SL33nPhBfZYR|kI&trk_GE<*~ z-PX9nbq6Tg8E@TcY*%z=I$ivW&S=~Rf!7wvZwhi1A56z#aeWDBzLi|}xi~a4i$(JA zoDBjdJ{dD`o#;OC)oHc?Ip-LYsoJEgTD-K`6E14tc?o%l7IL1i$0ET9p$8wDjSZ24&jIjm~cdj4yXJ;PZrh@+(Z&KouWs&e_rC$GRbP@uWP! z{9TNP>(sqDL{>lIL)FF$fnXjs0nf$_-oXWdjgttLbPtzdr&?z5*g@wi7Rup6q*aSn z`_L+&a^R)(ovy*_>8yx#uS6vc-XN`B8%wYcA#j+6hHI-!Gs|Q&Nvm}-9G1iqGn?x%z?on*QA>{n}gjjey~v`7G-i$Oa^$B8IVpsDMCxg5r}e4O*K`F?DQ- zo6|b7Uj;!bk4^(^YSKHlP-Jloly9{b9o-@IHQpY!m0Wm;>|nvj$A{+Cui45a9`8Nx z)De-MjM!qpuTVpJg&-uQjasJ-R)6BVcsC=?#klEMwB=UqInR{yBno_mA*sCe#n6EI zt)+QvrVEb9{|f9eh|ZdX<~dk^Y&_XfAO%y{R&>;=SM4$EgAXRfWUN0N&0btgQ)FDD z!OtZ-N!yfw?v2sYx}7rY=QOuv)~{zyUc{MQ?5JhBWP{ZWy^9>WCrG?2VwIF6-Rmwm zg#9*Ek;@HpgkhWF37y4grlub*3dyv$V#m>!*CH`)4rG=dvi@uFhWx;-OHeXC1_%61 zauYr` z$$HgRBYIEvPaJlZ?fV>AX^UqjlI$^-)(8w0oEphQAUW+{NYgzWNsp-sf4ptd&6w!hJ~IplC< zZR$ONFgQ5{s3j8kJG$Ztt+6RtlG?$X zU!gm$n`nhXHdt1J2bJ!dn8oAa4p`h#F^%eGq+_1bN%6*F?TGha z-n7A_)Ze$kPl>BzH`4GG$}?&mU1d1pb7F&aM^k!A*OV95#I28rZ4TOU>c*z6yP@Zj z*b7$ii-gBNw2?$0s|V)Pkb4OP6h^{p&Wq)GIIoL&*!Abk`z`Q`;lEc?Zj6OV)O*~l zc4{Iep#qtsT1cbUKvkvbICDQiCU)A3gW`xTsrR(Pll=C0;xPST@z_(;`F!H+x^qx` zjYl7}{J8b-oZgn&Oq}OavHOFukT`(M$U|ocXS!fDu8mY@#Eu5y@f*;ttm<@3X&tEJ z9^e!+>Qg0tp$7LBYg&)>&%qJhUVbF6VemHOi}|hw05pi!eaJC?c+HQ9^__MbEy45r zj6aI*)ciV!Qd$uc>BQC-o)+$r+|XLanic;LsbR$d@j-PCuK>MbIGErDwin)@J6-E0 z2v|`7uu=o;EZ6KV5N)?WwTgV=wKVSH2)F6+pH5${+UuV$+Dby2USDy6l5@YfO%uEI z)5{@tRM}8GI)!wPRRDxv{aH(5-*EC5ngSXqzQspb)$peb6S3kBGh}8N&p||7CHd48 zxw8;E)9}$?+Q|lwcA6A{L020}#?W()o>S~@@30V(8_kxW{<;-Nb%li9=z)uPID2k> z#*LQ$ZFcg8KxV?mu|gR~^52(PreiKxK-EX`7br26SDf8tJlig8R|ZoFHD+z z<){N|rr(+0QF%kLrRHH_TDrHL^WN%lS0Lg3j6fk8uLZ`Wb7<5^lPPu_T$ko&S?p}> z#$WE=YLf+EP9Rp-#a}3%?&4NJ9^)B;qSXfkT#4+S)HQ|dBKSGG;yOqEnpY}a_!_-A z>jfXiC-RQ-bqO;_z79h#=@!3OK8g=jSX0<)O&yy-0@1F-PA9J|D{Ct(Ui_lRG{%Jn z(P5D9*h$R959=Ym5Qpwp=sDX^toPnzNrKcGwB8Cj>o=Uby$Flb$SlbX0 z2`GUzeNVhiEo5dZSkDc=3KGG1hj$GW$mct8^szHPlc}vt}*HXYei-~1ZWT;D6!2%Bwwif{jjix z!RiQkEVK><#G+Q$1geRzcvR1ws~H@_5^Ts`*jSWWyc>}J*7PCh$)iT(L9%a6b}-;O?=C)qeSIUspe z51o2LYq5eIR<5?G2C30%F_q&ruC&FJtsHg{D) zwqw*c$afb@;5trnN<$oC@?fKu0Q;)o7x@hB%H_i659o|N<2V+al-mKc zDP~k53CM&Pf(cL78>Xv`$9w{AE1PTBb%WAR(l+U9rPAf&qm)X;oW-13-;g7Oi-C5O4f?kx#z6KiF74b`?-cAqvtCN5*`d>0 zpzOjBv}w=kOXcGOFAZ)61lN+0v0iUf-!h2Bif~Xa;_%mofQmmyG_UIB6b3N|$Ch5Y z)#4l_**k}GWj#&QFTMmY0Y$IA97xxB=vXLLzky5}&>75?B8mla&Mb?#PuG$q_*kpk zH^mpNZxxEY#fMTc>sMH5OeNov`f6%_Hnh}F#2Cvjebc)6)H|X+q<3{tuCJCPv7*4> zb7%8~U8hs;G&9|!#;udgLq~ApD;rgiCg5TL=qTT^*r}rfx%Aam`9IWVH-n$Nn>a9N zjVc};0zQYg%of~e$DO({06VcD)?St4B_`EO5#yn?iu}~T>H3HScW2%1AjVDk#oCz7 ztx(B0zn>Tm%+qWGcP6GymY%!>^!u0Oo18X}ONCae9n&wY1qB7yV~2-GH#Y#$S@++& z3*zo~Xq}{E)SELUb00=qcQdTw``z!GmO_Hiw(Q;j|L22T@2ks3Dt&nsNH3Y;R4+ZN7IWI zNnr};lulQl2`pt9;8uWK)KE|E6J8dVr+Vblr#va&IF>(<@GR|<9OrAkb8QhXlORI& zq88qv;JcbXzjOGS$p(2FGW$GsxB~q?_F;U?Ekvn&-dsW+719(HoIWat?<4OQLIH znN=By%LcaAhuP+=-QcmjV%TM;4zzaW07X&(5zlYb4CrBB_Tc;apVh)wD{E*@=6$#wT0J0Kf8VR>Q|(}j zj^+o$SgYX`azUG~<0$q*hNRR9)bpVd&RPf4F79}s#0u~EcUN(zlBb;f*OQ)BIaNju z48LJxzuzK$gbuMK_(qOYg7v;>RO4y-A(Qt^rB|tb2ua~(O>r9a!Uq9Y>6Vb=XwN4o z%ml-N~_BoIt zPCd&EyF7bv)akOGMs?v~89|*Hb1psWjN&|dNYrUa&xF1i{-~p8;{tvj)Vu(h2Q@5Q zhTe0mJ&gnpk*`Ay3WzS#peE8G$DC9mClPQQ88WP~AeBm#U5g?bPOA@T*a+DJo*Rgm zIDbT@*l9umV+HnPzp=6ed(OIRdZ4)GeiZhq2tTK&MS;LMhL}ZF&39@wNAlgpC_;d< zpV;LTKPEpD`|4W1O7$%8A>YZ;r+qKFX{30rl*aa@_0Y)i2$W9ujj9Abd2aX@X?@1U)we1_qJ`925UK_WXRvz%#jMnZ!@pHyq%KJN_?Vk?V9APbXvVF z@@&^jV~L2w1^yIg=)W&Pcq#MQduOzf>@;c9X$T z4cs(lvkV#&enl{?XszjF6wozA#+<~vm-3@N-@hkR0~+hN+40#19HWi2T+Ci}B>|UL zM$M~k`&jWarmqXm>X z7HZX))u#Z1F;Tx&NqLT?2&M#ltkMxK$*Ele72OFk5_XgvKwpGEL)V{a!UAhQ_@*^L~XWA*RSd(q?qc##ojy-T!xi;rgn`J5= zgue6K_bNT9m|+R^zEr#y-`9u0>N;msRai95k8QZ+xXTJ9k%L3~(Zq((gluK+50^`7 zzDgR~eqS*t(~+^5z6j>B?kM3zhnQdb25IU5Un0M)ef+H^o`)R^jPO*fBmyOY%j}-) zZ~quGx_hrRG)!gAum&C6^iiTeY{{08rg1X|ZNLE5&T|P0yun;2M^bMWM>=T+AN8HZ zi!qzC?#&nK*I}2iKBC-&g73eXuFeRv2{M?-s+j!-qwcmu2IjFToC?seW}E2%}vc> zfezY9-~S)h-aD$vbzA!uPy_@)QK}S0=}l=uXd;4irFW!vPAFf2IHoC?Ezb+eo#`L~a=iKkH9z02|@BOy7wM?JLH{fYO zYv2_9qaiY)p#ZEm%K^A!Y3Dsg(~{t0lx_vSUFVvg&G>cVyZvkT@Ma1H(Eht1kx$1x zD$ka>S0&d2Ct6+vu&^ZiViTTJ8i2T_PiC;fc2Bq)716>xA8m6W#%O|F-#fKDqu%Yn zs`ew2d9KEbT~VR#RJz=z<50hVDrmwtN72$9z&Bd@3{%)q z#cEPQ)=R(fwS&CzBj_TO;GOs%W*gt;PWJhka7q%#aURFk%o^>d(ZzP79L`K}%f`N5 zsSz62P^Sg~TqPZ4KANeC8cQWg-hB;YTf$6w;YzTL9S*o#)NE_Jt*mPu^GFHS*t$Ue zY^o(lM81(&!Nd0?bx5Jfqq@*VV!_tqS+4+Mtf$=(3V)HLs_LU4B>@D=SL0H>>Ii2? zG2%>j%*F?%1?&xX;VWEB={K2J&>w-!qsOBJCeDz&v#m%{ijvaq6X^|;G1Pk@sFZY0 zIm!cwe|vx)|M!#1l&{+ zis6A8LGxT62PeF@_kLJoi?#03v_TJ^yT`g7{Z z#;1mBz@^=!g@N3gzCg<8>Gi(%!_R?yN17DS>q$@x_cCq{cwvW>RIh(q3Vi9EX?u?x$+Ay(vvQK(` z`0$TMXWnR6_MkoQdqsoQ`Mq@L@F-Z9A*E5?)G=2^vsAt}B5i=tB0spvpI41{RQL6N!t^^c5KT1 zlKrux`D*cae)2i{M`fM+N0s06$}Of#*ZSO zd-v4P`}E3mK8*5lX~tN@3zr8TGFE2d`K93bXgRDUJ{?n95A1Kz#At03G-Xx%OxxPe z1!m8}VBn{P+P=({IEp4jC61{HQHA623VKyHw0)yVrV{7q71X)yI(zmRM%<+471X
zbZ5IYX-xk_nB&(m2bi(?VB^<}|~FiL;v5uKa{U zbmRSVptBL#2)+Bk!(QJu(fMrF3dF?`$?Z7YKs=gQOMAMPYBjrePAkY0OxfssQvZ^| z3Ry%yyti0tS~cgd6gC#L2v}R=7^xOlcSD_(E(e}Msr1ISFpqBhffC!Sz#fNG4TKcf!O)M4xt_0(?(^Uh(rAZhUgl7rK`_W*b~% zwTquR(x9nFuZUSSDQ6^p?S&9jZwv;mYa6V_ zT*W7Twy~h@wEUw35&7t{c;Y~u73Vt39}&?9mX)@;$(BiZMlN2JSHqWlj2ecN2nnh` z%JZnDzn({lB9iaDWY64pqtWwNR$3o^eNNhv71;)bF^s6j7y3A7q9au8MoRN^`58h# z1P;(D;v+kg5~ds`=G*T~L;wU^|GKA9G(aiAG*c@sq%{xIV6kvEi=vl;)LFY-j}bVg zelMh#F)_9{#K?Tus24U>1&I+C)a6NPP&v~e*%Ip4WEk;~svWdbXFJwdzdng0W3z1E zz+`m8gQOkT{jb!^&Uz2eVYlJv>=#}$2&_B51rnL0Eh4uKL|Az78o6T-Re3m$7j;tt zO{Ult!+(vKm_dtwONrKI0jClAPBFs9|PQR!lwSv09711~oMY<8z?QF(- zc$WM#FFd9awGI(P!CUhH;CZi>gzKrO@oxZiC^X|dm8+n$8#Xb9!OhY+3&cSapJB*6 z{0;e%WY4<7ae6|$K`F+Ar+@fOQAf-?tk-Y$8~tcIPDgcVF0|X)VV11d>IK;g znF)U+-hFYJJ9|o%&#MUcxX@VV|M98NySHXZNq#8vFc=oPEhL_(#6%qGdC(2U|Nbf0!7@u5)t zN&Uu;qWL66(-aQasM;X&k+k89gm9&CR@g15b~ZS$AqkH!afnbJl! z3}QU>PBGD zrn0@}Tcx4HmHHPn7sw~Z#Ujo}pxu2t`4A`mm-I^}7U&1?-HrJxGNgZ}hQUF?ILPYz zuoQCXF+}-7K^o*F@*?$j`7i7Z_+4meIHgv>1v8!rU=D*|0<`a~sibM;ALWXn-b_-Q z#ThWRSZg}!3B)c$SJHvwkpjEa$M|Ts<;m44hxH>SEY=KbmVG2QCjsaq)>^l|K`2a? z_NfDLd!fJFnqauy7}NI@sCgP$vj-YSXy2=WeI$hb>{Vu$ltq|aq> z0cw{LZq@c60^Q;OwaUL{|7L@fiYgfT0v)S^di0Dx9^&VoM_;@3_g9jYU$%FC;jO^S zGcK0o+onm+iAMoX9z~5_tXcn{%u7+O#`H!)>()5tfVdXSJMxA+B~Yp8p2t}QY{)zh z>_%$seD2~u#Dsqb{y}K~l8SPiPxcIGzg@V=$LR+E&QibQ&@MAzlD#2wQNO@LOgn$Z z>K$jiR|rk(7iXLC>-8LKC;otg&wIgfo{pHObU-@Rwj#E1_blALn2xXPd)4PuRK1SX zAESN~4rhpB(L@NfxUXUvtTBX?;n!qMU7(-1J>!8_b^_4dT~556yff-Q<9OAqo-hB0 ziGN19A0{&Jy0<-3Zw@qhg+K&i(R=FiU;hy-Z3Ta{kceD?}E)n4^PX-Z0+fOWeb+s zxPlhx*LdqGb*}5^ZTzz*oXS?@R}KTTHFiZakYwl)XuN3*5H|6fu-Lj%=yOX)`1Qds z0L385Tp~m53_UL)Yx(6}zq9C3^5NQAA6zHjxU-uBQI30VZJsXXr{$}MXlmhsMZ(CH zYb5N6Q){$+k5pE+7WSHzJCeUAhpQ&H35Shwy%A>38=P);u9X!)Fl|B(1|LCzG|25Iry z1S(>H7-X$afdWhEChMaE)MWLCxU8?^jLjY4&n?%%5|fOA(Z8{za)}J4T)0v%%4v5? zT6d8P452}Hs*me^i5HFn-uYb7pKyuS?i}UhVf7pPSbYb(iCdQ?v~++c9Xn>Hg*$G@ z)Suf4Sjx&T^X)gCb3%us&SSRknpybN1(MDCLzdtbGah$_^f7c?Q$4cNr!j64T6nyQ zt^%b)AXWf!dguW5G9bvfQQt4e>QVpl;l`=ILtidixn_St3Qn;xR5|;Ci?;vft!urv zUh&i3XfF+FrIv-kvPSL<{Z%4=poU_^foJYG$ChCMTM|XSE^fx+SfvEskk0zM&a(ja>g+&|3NO633bl zkWA5A`TAQ>Dnv^7wArKUib$^k*lW*eS>R|%t;6GAr#sQm-i!dWmIEGIQ%if|tTEN_ zu|+tYW7<&?rZJcRL6}$_ip|MP0!0aT;T+k%2phD!c3J{DEtLrq?%d#VL{^5d)BXZ! zt_wZ!%G4-lC({AwX}mw;d}A&=M5{)|Je3(hL_$}wBggL*PJ)`X?tA;lf6k0%K~h#r z#j%0Ua$g!AcHj$h^EioTCIYy06wl_fX{u$snnz{VFAKT)cBY58_H4zMb(Ww3-9z&`<@|4cb{d?1meetFr+6 zlPGG`(W`H-f9&o8zMVgWT6n=@RQbwX=6n2Y$zieh}| zhrqcbY^RYRlJVx5r;PcDVJ8v*UgvyCmX!@3h?|H*AYWgTzL*7c++d((eh(7gpIdo< z_GMd2m6INuB5LLy*=nL|%7>51dYHN8W&!d~EN+&Cwx+V4+jKvy10{`I zcRjbR8cxbO1Oi&FWj5(LpyV{HgbASTy4-Uta>oqY+*YJ+k$&19pX+wK@p`-cbFC`) zS;hKdjWTejaE#sqY2Wc}m5lJlMJ%bSH5vTqSJpc>9QJ9Ih0S4!SS7_qXYOiI ze7t(|TGS^)WR(ihe^Ky`MUM+euJre(ZKygtksa6G7aV0~EnbnM=~Es42#@Cg z0wA32`Xsdn8`B9SUq$>V*CTpkJdL~G@|DZ|L@}4`0tKKhZe|}RI4^#0nH zE)iuhgu8Rz5dE^{^D=Vh33Js3A(F!1Z_wP}RObnJKzj}YFeXk-Cq(&D4Mi9F1zOuK zMj%iIT5We{j$N?|@|q;yj>5B_=950jC?u4v7n6KC$k zT9EMS0P<$R3UX>`GWE6|j=B?Z8+dtdt{D`6Dcahf1}L^Z|l!sGE4+m;mw4GV8H3x-Mik)GpO2l zN5l9Gr$?E~D>gY2ZTG?%zcre==cDnP;zoH$<$aIixi*imtVCRr2~DsQ+bBqU3HIED zpG?lHJ!C-gxWi~KOn;RNk2R!pNzwJG4U_Bx#5)% zCiUbw;5p|OWyqV;O0gkYnE#e+eU+b~+)kv2H@vJrHhXXGlvR4#(p|ZI=_t%$mt4cA z`3ug{>KPBjLN~lrhClCW7)%G82o}tMSk9!qq_u~e-Lu@&`4uG09d}jSW$Uyn#2_Ns zQsU+^6F6_7dd>E8?lR_9!1Q;`z3Q+B?bGDWANp6WELa8)8uBW!sMNF)Xg110{0qGm zW0>ne9{Y#8CjJ*AH9omnEvGD%b=*l=ZtFs?%Yk)PcCh~w7sF;)n4IEetSFiAs04@A zH}T}i`Vs}wZXDD*{?b*mS}%y@ys@@RTbKf=ANVf{fF}G(VyM`}y>j-*Fx|9iS13yp6gg7O?a!4eDm9ZV$#MC4f z4a8n&F*_O?*=*1Lo>4HWoamE++z+md)O7cb0`E>-M?T%WYk)3oxL(xUQ*OXy=1|OR z>KtU*7-yq@|5LEP5|UwdyZ61m=+|AskUtE-l|Qd){Eb>%FxwlP68IYm0tG^3-9CzJNg8KhpBnhm*D&laiuzZbi7d|FfBx8g-5F+gq5i|9Aoqq~$N1DO z0Dc)pR5P{9{iqV@{r*G2xi6F~u;<5KY8Hhvg1*s83kjte4@U&SuNGBvei$lLQ`Epg zD)2|kmn~K96yH(H2MvXq=ds_b4;$D*VdWRcUXtwg`tN&JGbQRqS{>oW^Y?r)`{ooj zzdX0FoT{-WFEusmdhF(GNYLk4jgkG{_)7ier`-Vv7>OqMnb-y%Fc? zhI2CA&OSgNGb&lsz{{}ldAt0bOLg^t0vwrT^(P#8R~OI_gG;t3)2KOBI-kqC^4&Jr z;rPkR=cBjg%L z4VWAN?*_Rfn5yThM`G*#=({Z|C-gNABg&k)lJ6nShgSxfPz&fRDl;=%&5B=ZW8KcG zh$}>TYs7v|?kK7aS6ZHjZ<0Kmf)MgFo}0|0&RmUm*M8I-G@bwK?v3r^DQx5WrtC$l zf^6=2smB6}vcPjY8@%O0P4D=QD3ypH{J_Ick?Jx6h)I={i6P@rg);YM;-KX82DDL+ zdfv{y43_K%ZxkyaC{Li$NC`+&_z2hNxKBa|bcMafW4Gp-uDFD%-}-6>_DcB`meam(45nuz+#3@;k!?KPP6HI8y142a$7&$-egXY)2z zCOEuN7&o%nMYeqB+uiO4rrRAZAQi>6Qv1WsVXYjM{)Oj`QS_s`!rV-UN133HXV_D> zRWpib19Nu*GMeb#7}7UaduSAxFH6vwA;Z5v%5{rWEHC5i{iguB`QmN-@l&B=>8~_- z>r|MA&&LI6WBAf$keEhN!z0%R)FkX*@Fi}i4_F+k> zs$DI7zL!r~T~}b=8cvWIOjA9pEq3mBbtXRlRS1?HdoYpOV)e5~u?6Fgm*`_?%f1n` z6K#A-Mb#J-Mfp9MwT}_$0mK{T^i)pLjgS9eHGD8LwotiBerpfEm{AG+yLVP$O+=O& z)4=vQjW~NBe?TsolH`o7a_l+5~3-?nY7VJ(q{qF>s%KZv< z>ICe6TyqbNkJ$;EeN0a)T{OOHq)!q&5`Fe$EG3rXY z`^u^hK2@Zq*?8`1;$dwhTkPOlbCv?fDFN|mV-NFq$nxdYap?M$=s(+DH>vwIi#Hqz z{gsqEa(-3XJTX^Z81a5&awAYG*1-FD0JOvvjNZ^2P~JKZzB~f`9@t^uN@)rEvg|vD zKI4^Kz(wJ`xtZ#wFb%Xyit)gh?*;gKC|mmn+dYqYNnq8B{E}E;%@gX&2xZB;dqGce zMegUn6*i}uz1tP&aT;=O-zW`q0Mr^duY#1ylI z&NxAwKeV+hgRCzN6lyAW^p|anKfB+~%+MN=er$|cM7!?ci|)@6@T9LLeCRu$*D!dr zY0+0%oAWyQVgS*2T#x%}x4_*Od2uD&B6EM{fl@(v?U_JRM|g?pnUlE(UV)O|lJyu4 zXpyWU>jJjL)Y@%jI^N#r(>G=7{SuC*|M{qdqi4RJ@-g=QVC!nkC&S9*%l1!t19dZc z3@zLj{$_z| z2vUwD%xWK(ny$Rkhp)UG+iZFZHDSx_{!2R2kt}m8)?YeOiuhG5I+B92CzjATLe+ot z^12pLPTLxERM{D1 zs}O)s2(y4mV%}A{2cO_g8r~lW&{ssV;5{u7Tzt{2$uv_$`S7qG)0>lj7f^zxI5@Vtpjfu$!$MBo#pGWp&Myq%S-{SGE-TwY-_R z^AyC}l@SPmgp<+i2ogbwn7koaPOpBDe;+cG+=VHd$d;lv>^tny*)q}N&v`EDH^>#* z+f4?Z9@@}9if3ivd6l2zjdzoUYUT81=`Gz51W) zT@M`lrrOSQ$S{Nfc5uFQu)bP#l?ncQ58+iGh3N$R)>?shXk-;nHhl5XH;nVMKcpU$ zO~j%f5QMG)->N=^v^4AM5{>(Wup39ry*rX_-+&*${E}OBuZV2_WC3XOnaEMQ7x8G^Z(1=! zoXWrhJ7aCOM^%>ctEfwCmfl87&TNgs3ZQ^%@i_+Y$a92a8aw}XvL&2^28*OU7@T%j z=Om-yvfP~wp%l`bFL9@=_{#48IQ4CJE$Infs15v-TRZl;^WL#I7c9hNE%LsoJgPG% zbOnpsu7r_ZDu@;>DG-MXml^@y`wtPa%WtTU`vNWPF6G@k6bk#{UeJ$n+7=|R9&7^I z`w3W;KmMp`NnW;3U^+eTR(Ew-R9;JryTk)1s3L;gC~xpvb=q9s?IRz-W#JIKD_J-F zEh|T!veon}QHbd}lc{nyE@v`#{;c}~8Zql>hn_|SY&QoGM6~ITg9)lwhxSiXRx&=y z8t4gPYfdQd%Dd9DH9XUNZ;LPB(MWa+-j0$G=+4Osb{T4>XW=?W4M{7Jg*${&GZpS) z|2?Fz_-F4#p$s8y^+r6_4MyN;%cfK%tTKXbb&EQ_+=utCrW&}y)%QyK^oNf@x*P`>EYY5-*8rF zGUeNC%}5rWeCz;`^W|E+ufmCnp(YtuDrlL*0fEC!M-xW$^FQW`u@7MRI*9fHSMiDz z#6@3(clc(kMWfK!pwM}sSLO~g^v0=ky%A2CuqH7QEV2?@A{;}r74{wFetN2m#Z>{M zb$?akB#NqKKX(Qd*6-w_`P~0A)#NzMCS4E}PJV?1nGuvn%<^`|P4i36k3cNaQX9ca z_d0>6X&U4(@1_+(9WBxP&e`UkkhkNtiZvTuCg)anbZWb5=29ihK0EylZ(HM*jbW92 zgw4UIfIIn7M}pA5Qmkc^k|@$r7uNq3xXhfc*ZaNgqo zN6m7`?!SGNUWEMwh`0k?E-PfYvyShr`rRz137&p{-VX~U9(k9}>jIIA_(9~}sU>HmL#a>4E>*^Ss>fQc-E%} z@h%Ca3fQU@TeYKJj0I-qzieC_du+n_NGAWeyF+V5WE?gW8>( zmCbX77Evn8WX_M+mS5S$eF~GyMYftA3pTfXZE`j)Q@qZXAW;oO=&W?4G8pj^93B^} zzf=40DB7(2{7*{dPbXr(mJ(&(l`!mp_f2;8wB&eyEWi2` zq?vvTy8!XeT9|wL9;Yz(rIrf^E-PSyB(cYm(3rBGh_+=Pw)enLjInEZ#IJyK@BCJB zZx7tk)rqqQydTVKgFv3?ovV<`kC5vt%Md=V$2)R^908|V_<+h6xDR|nq=rpS);$Be9 zeXCGrg&C7SyyZ3)et5SoEuana3Nz$(epyW8`*40c-aWKr^Z z+5!2_az=<=$t+9geZvW_-WOC@IObK@o~+BW@fB9A(A)#hm*u~bH?Cy?gob^oz%v5D zfi-M$!XV3!NQHzhS;!Nn5Lr9cd}p+sgUi8*_?vBm(B$jXqpd}GM@5NaP|0)Ybuh@S zs|4H!{3OCi$T$vfYl3@zFUb$@-m!vk6XapKf+}2QV!cvU(z^Y0>dn6HyZA)kIfvDv zH$NG9xdo?Tdj7m%vqkK3ff#Y$9v)!iWnDxAkRI!2B;AjpQaC6FZq=uK*mRXJvpt@4 z4$)-;6sotPxxRHBo_r1qd{izGTAJ?5MhA~DX9R3ClnvMw`M*}*X=+wjep@wm$HO^4 z3uYXl?yk1l?!*48y}#Q~#iC1ML=60}*F)6#?jY*i*JeLFm{UsCU&>jb+WLvvoFaL^ zj^0Gb)1&L{GY)7(mhC(dDL(oqil&eZ7?`8?F%l372xPoT!t3Amdesgu>7GKn`YQ1b zDPi+AlcU=GO7D+A?kcqQ1{m&}ECFkzPda-m{CZ#~{dU&HUM`>P0MV}{$l zm=#=;0t)0hN<^8EtEo@_Gl+Q5XC@7`yB<+p^bevT$VC15>bF9>s~L?V9h%nHruQb8 zQC+Wyz$PMF>@7DJNGr|{-`HAI^1lj$uHAph!K7BC`fo@H|2v4+0upc$FSca^9Ep<- zJCi;l!oRQOwcR?TCiO17LckfRBqt{|o?tUwGi)sgag0U?z=Fy|C-7+z6q85{Vi&+m z6y0q8@{U@RY8ys|DBXwW5^QTK_c-WMgmaQV zB}smMC78@kw`u5_a=H+rJ?HKul!XAG9wpu(W`GA8gmyG*wLQE^QZy3CzgN5=Ki_=k zev10I>RLkN>+CqEsqnk+?e!t0xy!-l&bKRgeP_=7^9k{_K_dYy6BuFCNo0=5TVi{| zzg`6AhuJ*eKM2W=%V>?w20eD$5Uez`t-kgNv3~ljD;`?DP9mln%vy*hZNIa z`Hf#}hRrGv*|)|!+I_tM_W&$u?)%6EJ|qV>e#E$jp&M{bjn}RPKcNbmsb7gx4~Rov zv`=CSJkA;o?D3YsUjK*)HY5(%{x*M?9Yp_jeD!1I(xqm5_3B4s^;@rQM^7^))@GAX zP0uIg#9)U!ECWY|opjc>z~GA#ILZ%K1J+Lfk)%Dn5rlGgnEvvW53*lB`s|z(3WW*u z?}*V}^&9d;^&AG5bY`RAR6KdC(I7IcdP1c?AJR^)x2ozdjogWxa^DRsY|u1nO+18{ z-_kJ$Tr4=)*YI0GUwJ|L^>hiYcxr5LPFF$i@3{B+y~d%ESv^u; zTTB(sGpX_~>a~Fi%&Ws84~mxUpBe1&6VqO}k$ZmZhoHwfkM{)}(9rDp8{H zr@%)5z+)ahSN4mRd(zr5qM)o+!o^eqOH$E4#Cf`t{b4c}Ki8Y3elzQ5VG$ zmHhLI6*D&6!g*eYkFPdyu)UaPZ!!e7cp(>#ByzZf72u2BJuI*P*jgg{ zW?b0Sev#C9hy(1ZB~s_WE0&<*eB*#Ae2szAE}2Y2@>Z?rtm=8%n*7!($n-X*&~6Xg z*yMB9s^qvH1gf5^YmAcxGru*7`<%bmtTQB>Wxzl=qDJk>!NMVZvjPc&=^9Ru1enj0 zp}FQxH+fNySS`>^1@&N*qIi)czS|3_mowYCo$#4H#PSjKh4Y?ard8U$n-wBkzx*Eg zH-FZhiXMsLWw8aiTs$jmB5hr;eklTUZZ07P9d?^v#s?NL*ZHN{r)*=3vTVLSN8RT`{{n`#FMYR1hNCN%Ysu+Wl+XFxs;?wi~ zYl#Tj#2xout6e~Y$SVXN$Yq9yQKQAK^Xni8-e^cnPJEBpisg>;Wm%Uc-%d-?za)Jm zFkGEXPjqwL`6b7srBI;>rmPhFR-nrZN6?;*DpEA0J@tARFwt)=a3fV z?I*T&Y_8taij+xji{?>iw8qbYTyv^;$u37A*krW%)-4v z!<06Xk(nsAo*|&|6)QPV2^L{;&DP00$#>-gwy5eVX`&Y{wrnb3 z8nsINOef&6z|2k!Dx~{q0hRjYT}{TS1+}EEt%_LAe#o({MO|(*!2&vhi7oj*f!hMj z2rD7Sd)Yb@KNV^%NmogoWhvfgO2RS$xZ$6uJ(0Z699^7(St!hCF)AhgVx9$_Pe%X6 z9uJNGcOmVVbu8G+Z>dhg&OA-MuqJ<_wF`vMd| zZ0b+eSK&jkFG6nc-@g2$$we21eb6D@4D-YPsVIsbt@<-pG2c)K@{v!rkD~&KBs>aT zHisC3^o1n5FGax1{!-gg+FIJ$%1R4G_QXqdN{UIQ*;`6RM#kH?%uMPYi6C(QY&uk= z((Zv{FibqF9RvD z*exCnJ&&?Y5e<&N__K;>*N&{Ju$5o*?m{Tks#IJfjcEu~3Yv_8)G!E8|M<@T?uC%# z3q-abD=DeI^iBPC$JdyR+Di*wwuM`i|5pYUpQ3!Q@W1neticg+v;W=i{PQyim6-$r z_m=;c;~PgL{#7KBGsAs)YvlDKNq>B)S8c>^_gP5xz>0F`QBFqAJjKb_z9zgS6y0HwTPgyw1phfz|K;L= zu+qsOG;dMi;o->PTmTwF9M9Dbujz6h>9N#V`euw9??>K<9y$4alf=;TFV5$HaN6Ts z?fv>#J5OpV>blWpwkGxdHPH|r%k+Hl|7rgIPH}+WI}8Ygo{ZGkSi*QJ3O;ct{oam< z<7^upobN1mDalXtA){Zvi28AL=BYNsho*>NHNX@ zMrS<18~$uIO=>DL(%J|el47hWm$6Q?uD9jTxT8O}Ut_7& z(=+zW)Tdo z_T(GA?TFtvP4Be%$KBfBa>*87;kCt%74b9pLGC=|*R-GQ0=+RQ{`A)Ez3!$`VWCw_ zauKf5g(kjrNvvvCF?gXBO6qC6XNpyDgV6QQ1c}ru>EE5Jn*T3t(^@lE;_t8j-YiTP zntpU60|YG*NQg8^>R3Tq`4uC}{NOdww#Jd!Yq&g7+7IV&tFxY9GsE5ad!`X7x040p z^wmzxZCxjXP3Irh6mlOW0wLUR&%$z_dC-CXtdc&28;&3A)xya-aqK*H0$2Y0p@QoO zIn8E1v>g3BMBsZ;)n^Bw)}YVRw3fGe#KB|}!DiL8rTD?H&18iX^~mGs;8Td9-U1r$ zm>fe?gG$r!yf}^Y#gPxEklZNaol!=`X`U`F7(&w z!SCS5j=W!BfVdrC zik@p!<%^*46fvJ}ow|vaU1UxAOCGp;GSGZ(X8QgNU4-q>82B&t5-$piFQYIi27Jze zmUAq-?uN>{p(`1-f2?yDTSO((6yubymO&-knMSaZO9{|2eA1T`4b-?)dstB?JRn`~ z8Yn?oxeKh1nhVNx#oe-d!B6LH2Fx=PL*0DVt{IbH$@Gx9k@vblfQv$&G8R>PLwgdg z;Wfr3C4Y`5XDRm5RI_qh2rG8R8GX7Ja4B_zg4|43c=Bsu>vRgKa(85H(*4$&^t}(1 z1D8nHw1;D^YXNnZZ^F(~&n4v(aYXB8VDy`#=$=FFDJYxTj(zKIAAvd z$z*c{*bzXkKNjt26m{W&H>@;2sjBvPg?+@ecuS`AD@`IorWD)5T4${tr`@!&Um%CX zBQI^>OK`=x6FM2upZd%X8;l*tUy_s%pg?~&!VcBHbYW<#q0{$&?6huV>A|d_k z1U4;B9f4MjeEZOmCG$gf*NB}~Lg>26Y0_jdiOMxO!;-VB(YR*wwVQa6-JQhob$9<6 zf(f56VW|ddN5?lpQgsA)KhUk$4*z1pg}K;xH8M(DC|NrYmpLm4B$v=$@SSQY6s*_g z;V(Pzt}Zu*AG*DDrH`5EuRcCm`g~rH|2w%%Q<>f`j{dRe5WGU}J|g;^3#i z3hZ^j)1%kx;rZolcAyq!>yQdh8E-RI>c^hX<2r?W#Nr{w+Waon{D_(p%z@3WbE+{bzAMK+NA>wDT`=vEh;S&+|`U}mX@ z!Gd}U{@j9OqG*E%@iAFw{>j%3M`Tm6xNoez5JB$8rurLJS(R4M=5b+a!F5*xx!_wK zsNv}Gifb~*S*R{Dc7n(kI(YmGep=6vGgv2`VD?s$zb`n=lX? z#5k)8*Ko!Kho3Y8uR1eLasWBKE?xHty=V#ZKw$yg-~>AC)&yg1CHaguf3c6{DCnI1 zvVSpP%crVgX1*5@m+gU;zE-}^J+>4NsS8Rz@2iWi$Ou-3{b5W@`eT^Blk@(l{nzD< zwYTLnLKQ-kKxk^S31GAs%SB8#w4O8D=moea2TyBz-qKTPGOk~?TKI-B_gg3qk^%KI zb~rIRq(dG)Bx@p-enA&Nac;p73|6!4>L z#>AIBga&W%?e4)yP3)Vr9POKCsYRCWu8UY#QI-vObK*weq&b&)vnACOUiTojR)@Uo zW43f$JLJb}d1LzK(dRPT`IZ$v7=m)enWO}%8WVa$9ji}D1Zba$ zlm&AWL4>s`M=KjDAOBP}~_hb~9ad^1Gh7 z@TLoXTP*P4+@&2bhQPri5mU+FRKUBRvkZ81mW{zU=IMAC>xh}wGbko)En^~;Tj!8A zFpq|)x~rZJ`mg;?4y*nCvIC**_pce1#(C9tdC$wSm0~H=PZ)2l)dwnXS2uGYa*tru zin`B+9`dexYm{l6Z4qA+w$@hYP|O!p@Hx)%J(`Uoh$ni_(e8`(a?$n;Q%hYga9P~_ zH8RH>-~tO6NSBu9s7>IBDtaxs2EpxSG&+=&2PrAq7=(IE2zv6M0)WuQ^ zGM|}R*G5p#VZFd>}Et7ZU`;mQFgBzze1Ol!Rjy~hmq80vqks`0m zYw&@+Pj|a7NV;T=DBk3bzk=`D`O|gMNzVk z4X9u}j%T&cu)B+y=$cxq&FV{X@I~J;;`rDOA^-T?PCEbi+76+>_})&s!1&n?q2M@p zCtYy-g&f{T>z)1kK@<`RA1x?*xIrS4U>~jb_8$frHQ$)3Slq)1PC_`Z1v4n|2g2ua}G@KHH1@uQH9YiMb;5&?RJ5^{;>CHls=v7oh5Rs zK04_iw4=j5sE1Oow~-1l__w9 zKU*aFji_MBX`@GvL@~w1_aKg8f@>EFLfo*p{SO!h^-gSFGv9QH*jD<#$y$Pq!B{ah zMfM8R;>arntEY(dWV{X<6tX%q|M}APcWDxQQ2VAUY~UyR*_QyWazDDbv;afc$op}4yg zYl}mnI0Schr^P80DeltZZovuekQR4$g1ZE6`aJKQxp(IKX5N2*44KXD*|X>T4g-a1 z1j0E6#TuelXB)S5=sn+T?adL`#iX&Oo;>aCZt!D$;yB-jjSwiSf8e?Fwn?2U-% z8iR}9(*SUe0|O838HQ#1s$#0SrlB7s3z0tc#!+Qzb6E65KFgeEEL!=)zj^0Nq~7^=e(q3L}h z4I%lV1D~V$zg=x7ZSHdZxoF}=G#ymnwc-vKBN4Gjmr?IC(sUwg+>@F_Mukf*r8>%- zDAv?T3YJq&5#*~seNp?q(DiB3_?XaUHtf-f6yzw8yIZ7eC*t+X!h0~w1J|Sc5i!|8 zWg2FdTzCWw^GQ-DK2)D%&;D{kq!ctA`Q$4)(ydtz6P)VURd$E$C$ezd-nz-x}&t<2MA9tVs&hsQ=$~a>66SsIx zu94$izCPd)w0n>o5=;iJR}|@SHuf$vKqpRqbEv{vUnGT8oRq`%ZhIS7tli_2~qEzlG#|v2J1^Yp|J4OIrIDRx;mqz?#z;Ao;2B-c2DMw4J z2XC$ukE^1>zD0_w92&d#tvyeDBuri@^<$@2USiITy%-JP>+ivp7K5ZFcP-<=lL^_H zH;_)KBdnTl>ahLYC%i8Q)26u^Z$TL!CaeY90uZ3r;t)P>%8&BGuMcNWrh49MRAFJl zoxm$#V8sZ$gp(AZDt7P1_d~7VMb{6Vp{BmZ+ih^>8%m)s%Qye4`4Xe%Lkq?iteRNK zr0zdXeji>bo?N$_*>QO=sQe5o$oq(kohj}w1JUYq3Y+5l@RJB48618R{t3xNau{g2 z2BAfn=b?$DxNt>QrkF=0^B5YioCS^LDi?^%X|rImXA8Xq2ZC`mS)WLfkK`xS zO%iTiLU79d6yqkcehN7%`GJ_Q%Rbwa&gO-+REeIjo=v`RI1XH7e3vJ@JZAIBGuxwX z4LZ8p0CIBYa2ry`FI@V4PI~Nv!_&Dahs#e%c(!HUUm`1!~6 z_hn6sYKe@)MNW}I*Hi7MT#jCo-+SYaKI|#onxw#dvBKO#iu(Mc*6$#t?M{Kb%kVpY zfSlsUcY_5BFBz-_FZ~m0oJA-ulU6;IOkt7KL?2Jw-~o3)A6{zvB{5}!?c~kU**n#f zRcP~)qc*x=n-k*bVs?I^BOk+dn(5+l*SFY(YFExD3riPJT=vjV1b-^71POBuPoFwg z#n)7j`gwZC6%9}ne4w?_BL^5YcpNif@+!$;exbC~`zh+D zzOiG4b$zd;YQpZQb}4Y3u0~g#Og2fuyfmeRVfpkIwJ^v8_1&PeU~~9bb2Tt8jGh`o zAvEnje)&#r7DKpYsk?iStymww=|E>Kt+&Jf^*P`u>FuIeA!S@-2Z zSN>JgCDvL}FN-D6#=tl~=8!mI=HWuAMU^0X^noDVJU?S`In{(jq;(#9`L?H48wP#s zrmX~bm_CUrqoZ51yUQy zNI0{eZA`p#EDcah$F@^IvHn~tk(Ru?K5}gT_bugRD3=FOeL!(gi&{CmS#sUOOlKLz zDt{bRK3H93fbK^DVDgy7%kzx47>G#xwU$wFLq54E?^Na)t~1;5IVM7piUV1rmqQ?c zqZFN{YBpgb8P>&vl<8F}&A>83ze3W$=Zu=Lcmq3b#1Yyq{D$SWrKXZ_#yRRUkPav60{FWntS){}kvsY%J&dmjLyd!~KY>@SB`TCm+O7yh(4) zODl?=W66r|-vX=}OW_bW+ZxQXr5je@91e%T&r1M#9IYQby#`Q0_95+SF^?`7y@~z4 zLZmZFJ_yL;k6jX<*lS88G|*78yOyxMAb}(IlCE|2-7&;Hb_*tEn%6DC`zXsh2{+ab z58mMN#VLSF)V+$t6h@HIJ+X8r6@?&jT8#s*hKYX;)N;1JXBzm>FG(sLF(#)N#=q^H z;&T19?`#@gil*)_HLSlg)cPaWmCyd%hM4w`javqUp(s1lAjRSkanysMs%Pt#3=E^8 z^*R4CU`oCjZHy0UPoF(K#+h z>h}mxa(eB#f*2c=_s6~Bt(|IuY+tUy+rM>A1K>jh6%Acab|za|Y?-%8|I9NQfd+j= zx&&N5NG1$7ZG#^@?|$110zr`n)&kzK_?H(qtieU4oUf!{u(8uEkE%g4QT`oY?d8U7 zEgxKlzT{vB1&-8uMdkN0<-#o#@WjWMC<&MFJzBAVQBoyArH_~RP5Wu62^~&@N07)W zf|IB#DDy=i+d(0IgU@?J3N;J!#-15w#j#32r=@gDce`x;gH+)F8du|8uTzoE-Bfz- z_1&78m;JtzS8?LkC-sCCzGt@LvrA4Len0Mv`%UY0iiBEQz1IdNxxNLdybuu z$2t-scv=q1}q01vs6#C*X(2cVBn48%N_x5iI4a+xEBa-Kg^+& zLhk)@nTt{C(=WERVAQ^o0!DqgjMKqKf$5htmzj5E=ECqR`}hh63-_^|z?3b#{%hBw zJPNmo^d`iX+=S_ibof(D@*~-$Z+*hn&;E(ip5|m#0S@KwFUfV=5r&^EgKY)^fyX|i z3z}UC8gp|Y25q}%GT^G=-oUZ205nH2P0hYm--OEh)|6s=qSg;|b}xeHdo>4+f`tLA zC`eJMj%ymXuD!yy9(&?^8A;*}m|R)kY;`(3UUsmZ3O!n%)PKwvml^B;R+uOm+ zUDj%tLhv8m-WIlK9z64KCu#b)4z=bOSaa7R1xk_o~|1npY0xnSa%=X_U?UTp; z>{4TW3BH#aBbNQhFP_>OaNz6JwEg_J(JlG-nm+pYd!Om zrHh;4d^PmU(v&KWKld#?T~~j9$Vu?*MP~b}xEs(b)va+nRVw0#jgL|hSC%Yr27I%| zci+kHMDy19#5saplkkn0TdZ)WiVz6bL>K$_hWlL(c#g?;r_+)V5Tr%Pf=0~2ApP>% zoUhaS_TVSttqSD%-8Bm_HNDnLBc0Iy(b8#BRPinzBuTspEZL9R&P%pQdJg*_v6}mi zYo!uK+6lF#t7l2HxiWQMjkJ@x{VJdM(Oo{|l>ik0+$#Gb z^W6lqn$Vw`GEr=1N{bT!TKL4$mES6+ULe!#44*i$JDOj)Szoq|YhFrSL%UOc2lhal zYHWw(*SCYGIsEIsUw%z}c$q=8Kf|_ioBfY(VkBu%BMno4pY`Cb3_e(45vT z91e!&N?BpduKdCv?Cp$O=vjiu zp(r$xkdS^5^5D(Co~_jbyB%)SF=(fq-j<4w_$YFTDU$-jzWJoo==G-C;0Z~Wpx9J@ zXuu>TNuuSd_igLbZkcx`$;;=oozi=F9mD1!(tS*+72pcCHN?1 zbRTK6|G{S;!jnf$wzy+7_7?@$4vfRhZ>KM#oLU}_8fz>U~vG+OF`bc#-f zfGb^dBZNEeH+DEx<^5t~v+Noc9IK<(A6N4gy)SgyDY>5gu#avd#r$2C4i{R9 zeICm_-Gm?lw4s;n6P9V$D;6xMi47~&wmTg~$B^-!yrCN#ft)P-$${2z-)>!VFS5W}W5Z#0Kc{%# zv|kmpREa{$T2QQs11~S~6UhRZ+G+9&V5A(grU2Nl!wa6o7XN0gl#=ABU>i}p?bO=M z15DZG$~|Y${hqJn&A0Q_9V8C0_c^1_XVYMRkDRbgYZ?#VdH zYCi&D`bn*r;pP=r{Q{!Y)1t|o>Lm=Ko_##Cf><^N+k3yD{oKBRB?B`oV`A|>q(U*y z?X64(bA8Kp=h-M~UVhPV`kO*!di$Hp`?Om>YB3CKTXQV@@mHLlO#SaY?KC>@1^WJ{FA$P2MD+AM(wk#zs5az!VmU_kc*T zx@B|~?A&L=xOty9C;HcU!y>QU+?>NiV#xlpddSIb3Th{6xndMo16KU}iCmSnq zE8)Dmft<;HIq8BS90gT07MQt8Jd{8GDm$#s<9EZ;4~TCCyQoh8dCFQ98u-mm0=K~l zA3XzR)NVY3Et?h;IIoTifg5w-lNeJSqc`<)jAwo_8c`aj8xDlj9avqmU-DlRI4H+LtFk5mM0@e+b1JJdRXcp)DwjR z?LfJaqcmm%?c)O=Pnq+n}Fv5oWP`M0>;Lj@oPuk<* z{75tL>+5t5M%wjrtDn8kPO{~T=sf6eCN3uF=UJqi4`$W9&s+qypTo#@a~>!7*A@** zZp^T(n;*O7PN^xL`K42DO=(7ZZcJ|1mPE(@Z0d`R&u=b?jjwO&i;wSbE{TtyZR$&m z-)$~QxV#udqGJ5A^uh&kkdVsq%hF31)IoZxqAyEQq#j8Y#4cEaVpJ$!^$}h029>Bj zbltt)Vvp;2#~ys~X3&{xw#yrP>zyE=`wn+J#px;J;;m2`yJ4o|`XhRJW{PCO1)tS7 zeXNBsKkSx@Tk1q#azjNn+dyR=8!c^8L5ml%PO`uIhSvytS)#S5s#FcT+Pb|FI{Q1x zka10(<4}SfX_%U%{dM$E?_S=2OZlRG_D3Pvc^|*vVB{5Tpz!KR(a800O_Vd_Amc5q zg-$~%;!*D%g!vFmAQRhd$hV@l^J6@^l{vG=T5L@GV^LASR@D9-gE4+0;VZ6zp4_|Z zB|e+BGj+e-ti6*db`zSNum0@?NkZ$k1?oul6JwdPnrYGKDyzq;=Brc>?%>Z9o%@u!dkj9Ckh70nf`f529L@OJgt z!_o*e(VYr>le6jYK&&Gc!n}F&P5XmM=K4Vumoof?<5KP&SFBY|8!TTuDa+5up;Mem zYs6Z-du<|?xtWWRD|BqLuH>3GOHEA^qqwYk+VY-Gw9q`WUMo?ZZ1qaPamO*`@-b88 zH|mQX#O4Fv>36@3mrNV8r+VH-yGf=kI>E7T9V!}-(%DGSwAsURGHiWh;Cs(-+(9#} z+hk=lMM!+KXJ?Xz)I*ANHvbDy&{Z^FkB)~91a`Ys}k z3va~6(vzG$KfU%b4*O!t^b8q~U=nA3l`Z(*A|v7I!mUCcy@FIM|;V`c6XS(GZiGQur2kJhj3R!#2k zK+l7`?i6Ld>rU6tGNW~n6NOTm1GNsf2r2t7AEWIG_Oi!n1~_`JJ_wASJ)aWy$n^25 zK24z2P!7Y*WzwrZJLAH4?g1nCcKc@gUqZCEK`XK3jjW#+WUT=9y4x&t&5Vdriu4_Z zYH!**>Nu@Q3DzNPDRT7N%v&}h81!nH>{(=t;kcp7v`Y}bk zf7fVSlnTFZbI9X0lg8I^T?lcH55&;A4D-}5k1XU&MlTR*BFB)v!_~)iqv^E@O}*^e z&p;j4mr{IwWp^P8Af@+y5t)!O!WzK?5=$0#f{WjC3dle{kVOmMQ2s8p@lWn1IYUB# zK3w}2@q%mLIppgcls-PJt6@#7nyt><2M8nxV>WoQh0Wry-tv6nIQ!#D1l1N+B@{Fd4&rmKQKHra~+M7d(4j=Vcz@i<_kzy4}@_1&KirgX@usMvS#IQ0; zdfJ(+Qa%N3h4{oVX{EtcellVD?ezy9p?D%X=kkF8!!Pj|8K5^>iZtU2SLfQ(WGRQY z3sZoDmOfc*&jfrEhX=_RT7fI!H1lQbpOsZAre$bZ*B3tmCgosv6ZuaGv-kq;k3mqN z*R50fqhXB?d&p1l&K>+oSSkl`%h|=Xkdrz8E5o2c*pgq`-zDb<QCduerau!0}I0qLfUnJd} z+F~63OcB|b;goJNZ+^9GsNEipxjC_3F0*<6 zLor=Gvi#_6eN!0<5n7EwLmPGhjSOngt!vtBsdtBY%Rdyh&yUl7><@inow^{{@x8W8PpP4Rf)r{L;6f_1p%$ZZ}JQ@}auS@}Tuw zYR@ogji^|T>V%+N@{*3;U-rAFsWm#Q3cRQUGb%o}xzU=RmXy~`zu1^N`pbUXyk`SH zG?X{Jfu>&v__N@dIDF)lSi-!;`^$dY?$V)iAj?GHQuiOfz4{O`NRvSPe=PtK`!p|g zk81dw3q`u#xr1Qm75mY`OMVBv&SN43<@>FIF?kO0y&Zf@Z3giYadQ_!iecaezhe_RY9) z>-DlLG_=kGK8OQ*GDD)N<_8SzgrCapisVOO=C2Kw{v{9(P)xf~%m4-0(QcN(UT0m` z5`z;HnAL3D@mMBX&Z3h=BP0lEogTW>I(k69Xz$w8Yc)#e&ZxpLEjwQD)>25nf-PYk zV)yKuW8o14o6_zN-noi<33&xt{Bz=|b~hjWd*WpTtYi`imP;H+e1~Y`erSY6k$h-^ z!hcU~*iuJT^ZvaTHhT%ukIdNvkqnhmc#Ss+N}b>CZAjkVKjtQgYb8d)IwlyQ*sRaG z^qm?n^~A0-tEZ{M2pMnGcJJLm-WluirVjopGN7A0(1c7T-TSnrPzp$nb6U#Ux zT;-+nahvJPk91B;P6b2at29F9i%l~=6z6`rX(oQwc89_+PwyP=+?KlOo}H#Ky1`ze z#=G6{iVYolyOC7RWAKyk3TTf=#k46JcxKu!*_%9@q=T~T-8c%=O5~6h;hEA@Yt_~wMNnWjZJr|XcudAK)ashwrgU-Z-HM5%QZt$+8PR-{ zVrI{zk*4jT^B@)E(p7muZn3PWApFx0Y}IzI@BYB%C_R=#LfJ^6)re$vff zIambim(``u8T{NRP)V$8$bPpI>>%#EQ?IzekCutExd@o6*w~;$Qo+6$zWBmH&~LSqS-E(k1SFT(WZ>x?6KVY;7+HUl4VP^MOnA+(a(MOkY~=L zFx=G%us+P!K@qm-s%$u5!6iaznC7eN=QN7h&+|n&IqtGLS7PwNmH~J{ zuOY15amEZTtZcG(hmflSL4`~@P4*!)!eA^~V$M}$9h`M|k#_HSIjmf>ckm;2kH-(z z+wsVbxIy9i#0z8We-DMAO3{Oc}cD^bGhf7!U1r_8gU;ou3gzx-2~$X zqyB;6IBMENTxlPYg*YL_-wv_9Qso!(y9JhCNe8RIK-Ce;I9zHAon6VCi6B~4oE$7^2~ZM$oM|~ zG<8Kw?|VLWzWp`Dt{&hUzWeukU+`Z8+#@)J6$8?E7bVFUqHVF654M_H>t52 zIi&B@`mtUf4lh$t3#;aMt98+ncBUW*qS+&jeYUAFT6CX1TQGc@1o~@|egi(*U;9fA zouyvvxXM419%2SKjO_lR)Ww8-qJ61lTQ*sZwG@JneF7>|H&j*|Xe4}1+iRx@AB>FB za>dWxUbHdvlwV75h|Y1%U73Sx^~VxPFYq4%9D~@^`>GbX39uA4xrtp1aLdTf2ryJ+ zNxlF1Ge5=8!UBQ&hB{mZRVchn=FJh@u#If9_}V@;&Q3<%uq~Q z0%J3cEbU81lM}%qr?pk{0E^ z!$`tGFMJZD4r{cjjbmgCNo~R`CL9{s+{MJI;atN(%uZW2)NO{Qc=?A<5{x)Zcl2J` z^j@2^5|OL^h?^t`w3D@~iiifX^$(bkN=8I(Z(YZ1Ci@JGb=3hc^;ySkNmYyCp$E}9s7TeNZXrY*(G za;RtSw(1V*2GFRl2SF*9P81-%B=NeX$^{qvaU~LP3+I{w%insyji;a0Gbaf&{QrbU z3&HpBeI1o+KRB@=hBfIg_zi@E-zQayx_MX@T8hy9;-yLk`FSE_cvTudet(D9u)kif z^)I{(nb?$^i_k?mtA{d1rj2)Gn-d_A5x$KbnW(^=Am*lr6mjhf;trdhgHTkIIlo1D zTooQ7WuOE1FUmOuofO>3s|tnW_9}k^h8?ask1-&@re(Bxhmoa)eKyZWM;>=yMa`4= z+xgAJG`oVy8y4|DkW5!S@$Br+Vn&N=mJVkZBh`MD-RlZaJo_^IGD4Hv?II8HFK6Q2 zetuAcAp|_Za|F|kKcjm){sK4~!Pd_Pt+ppz~hCDjpvktAALWsKDWq{`t-wYxU0kSQx zQnJx|ouVd|@b?A96)o480nXl=ZO`9|YBH1$-exY`I&?M}tVdo^l}jZ|1G3lYD&5z; z(rdU)&8{0=L@*hD^l-P;3Ov0N`boP}=IPp^Jc<7A+BYWTrM3{4R-~Hjb=hn`YGte^ z%yT#!g)hn3iGd3DwCIl`e?T?o8x1QhShyxLCs-3c7@!q7 zpwB7{zncE<5}%2g2H={=L@Xy#WC_0TXq93ul|(P_C%a4GDZe`0o&mF)APCGelc}XF zE-NSAW3?FAG@HKxEYVkAq~Dqe0h<%zP8%kM+)jlm{nmfI49H`^dM!(y;{S_cZg>R8 zVe%@3y)0@JE_@T8j6|D_VCYZh*<%-1Y~h~qn(ka~GteG>ty-F=iqlF}5jfJtu9Fqf za+rCyD*xU;X)5_Uvkp@wqMM%hS)T@|p&$P~`?O!WbUADijc`aoG}$q)`e0oD#1DzV z0euLf%+rXHrZ@AR8NGKAIf_m9ss%M4=n|#ycV%aqk)*l*J^}%F2jI8FMwn=tZp^-<3Jx37b$1*nNMmuT#*oy+Ox?$GpSSy8yw_%zoREr0UQU ziGR0qS?z}s>e^j>xzXFu6ofkej?v3R$ed1|4gW0pao1&$4O7U_ibkkWhiX?jt(t!- z51nQz8oki^Gj_x3-OLBtG!U`|#9*>>P@d#j@@3HX@-rbLaz+C^E#aA@#$NM;Os5E7DKwrEK$g|#?!Jjyg4=UY1j%j# z)!SK$?8Luq@84!Wqscd|t_G8apFSd*9++AVB`1hxr;9zSP_^DOm4s*WIcSY&#@iEV z#?zlTP}|$KvD(^s#H?9|nfXZ3_KsRce9oG9&)CqS@2gXC^Xq!)?X?HG!Exg>&7xH8 zSf61_Ao2U?WsDH*V5O`pQJrl@s%vCF>rm}?ZF6R z>pyt+0HXi)D6&Uq#dewz)V9QVr2@MUTxzc}cpUvDbuU;9Ew8)hLb6fNxiGtL%RhdO z^I6P4^gBm1$ErzyAMhJJ)7j+e%tcCtG2=G6`}XjA^Zu#317cef9}-7{u+Wwygp9$Q zTN@rRRu%lQup<=a&2Z18`$!*;YgGm}9x`HmwW5j_izag??Vm)DMrP&D z2)KST&QM_VE>B6j^~@$BDHOiVN?&5EAnQFs=L4e+!xKn%Zu+3ZLHXs&q%bu2>;Rq2 z6ZUziy#i~yfWH~3$wr~yBW0JpmQ5NK`7x(Sa`wyySO2slb+~Eo+2dcr+ut6=2Y3qp zyu-ex=T8E>jQ85n^JS>65DN2j*y>qaw3N~C)81cdZ_i_e2aoM9OaTSUDIZN9j;$N~ zo6F(%1G7HZ+K%{ZcmY8|_F@2~{uI25;TmEf0E^Pzwel2YKV50t^GFGGGu>O-PkYO?~K~{v@C^HdWn*(PSR9t z>e+g@-+s1CBz|5<)#lX}3YjJJ9Hbz@!`fjGh}HUF`>w~?8KbzNH=yPTwQ z=jU13Wa3X@(w)Vh&>z(lpZf96O(~+e7_5rQr4pk& zEZ)9c$3~3JDzFq>A--Uwoz}aUpeI_F-`=#JGJ1r0^7$o0*d)yWB7dwx+kng~0vNpX zESHW_Nh1cZT!`V_QL`!*bycrNl@ge>ysQ#lwAmY7dJ%nY0cM}Lu^>kYJn*;dcXnDu zZnmE+-B{LnC2`6dd)C*cQH(?Vy~ri}&%Fah6n(2vgtK5nD+Oc5Cb%lf5u+*~+NMD) z_tbA!#9rH&coA-xGYY`-RI$>d+a4Q4Tswg4`%u%6*%s3dd;GBw?bZ?qYKV@bx#6zJ zFZ+%;5bxv~)LB*-}-LI>&hw&X#v|!)b z=2X3}@fdsjSVqcGnViXbuF+!m&rq1b8BXS55(W4sG|dB(r3+PspWtyd8{gkN7DL}h zE9ouA=kYy6z<<$Hz|&3E_%90G29sNIb4o-0Y1qlhAC8I5b z5Fm!+op2)!{vgtAu^pDfK!(#jIO8e#X@lE~*WuSOuw{81-X|r}`)yxaRi8 z)M8{d+G33j=Y`(VIad_&;&=j%f8zq3p7Ki|Q*JiVNg&vO7AXqWE+_ zTxCizEJjH7*O4LXxH6-+O+`M0OgP{FAqVY}gKqd@G(jbN*V9%buMJ*Hkkg zEp+>gqcUuN083f&ZpwU>RHF*0)Z>X`?)=Q-i+h~k*{e*kK(tCp0)m!0L;?$Yyg<1~ z+g#hF#W3GVdqLLKUr9gnd<>!8I=CF!VJuK()=yN#t_3|RlP%pLYpQ)e>K;e>4K29QXkEOATivuy+{XbCF(Lj@@1-CrGiBxpuuT%7=2)qH6z_$J zOS(I^MM!H2JSEt(8hC!cQ#k4TayBLHkuqT!0#AnM2s6R=yvjG(Ihyxf!?ss<$N^qe zq=(LDo)j}3h5$;6tDok)cCtuz5?}%wp9htuM|4r(n)t0$b7h$EB4>99==0TS#(RO# zFoX^Fn_DHuyn!A&-NA=ek99gYK8}`uP8>$#xr8iKXYJqdLy(Myx&LJbU07(<)S1od zm&3OuahX4m=UujgGS$-AeGFIluqjLb5PA3xI6Cwg-|=S|zQ$fI6a#P`AI?@uYb1u@ znA8XCV_8k*v-^BKpY_C1+oPV2d3FIkzQAHX!1O%8^K$@(*;-RZjK?G7*I6R?;l41J z@S2UF0B-XqwXn&nxq9EB=K#XDSBf21_T6f5*Ewb;;R+UMql?bs4>UlNc`xHzOX0qxIq)*{yh4-{Rw(%fs_0-x;Dd~uc8-{ zMuSo8H(a55*DJVL*{_RYVQ3#>v%i3~-H@VELQ6eUUXrtIIzrmM{`OuH9_xDAyf_FB zb(Ct*7oeJ6%%uH!A!X>!nuDdqZfN||?on3CZHrL*>HdP#;o-9p9oc9^Ao{UjDF;l)-(t_yi7KvxQnvd??A2h7IJbcXfE)7Lci-iyK_k-1yTF&U|;k zLP*g+SI0*>;K^!-+ub>NLrzY+5T{c&<}DU4#=my=>s?VBufWdgt`4nGUviqA)e=}z z3Cr4it7CAYbQx9Q5zdHF^yAl_vO_7ZlX`=NzL9F-C&aCC7e>+U74Y53ZCIA-##zIX zH784>KX&1j9}dl=N@r7e&R6f1vk1wz|l-+IzY4vpku4U)O)>N=?k zeVwbouLM3#P>XFNd%4KgaD@_~_!J(?g%r4VgrWN=BCS7PH->H$+`3*M{{ptYj2F7h zARj+b3X}4*^)xxi_UHUL&Md~;$obdrz8nu;Zh8q-@poV@v34@)M%ETO6{xh~ELd0F z^bvl{I%OI4mpW(PeGAvydBeLK&s=Ie?A0VuXKsEhV6Pvr139qVWejsJWeodsv|#nwv!zz>e|2oGFS*73VP*WH7^PU>xn3zD zHq-VB2UMfBh^}QNe>BE__#Tb_kSe-JgPA-I?PX|Grw%v`G;(@OdeMCDjl!qa5{qj> z;U7ZM->vDL?LnV1q5W~&@-y`1p z*W%q$Nyz=6EcGPeM#{GL!``|YqxCkG3v~^@=~`%3H(vUY<25RoL7srBe!sBgn)sLR zu1bqk(8wY--ig3cWv_CKi$pYk-0d+w9R++z1+dF2%>e#4 zVGtPZ@!>h#@2+8&kw=xpfcxD@(WG-PDU0jv0q52!XixcRdhmPP zVMgL^Ub!J}`fA41bH_Ad4+Gv3=yRV3pkAsW41DaxJ*s_RnhL<#Y>( zf}7f(z2LPL!-o`yn1NlF9J;8hfsC84azIO(DgJxsd0W!NQy!DR5%oX6NOG=?Rr_&F zQim1!(-vb?b_$QeSA7G`0Lfl9%K zTkTm!XO_WvI%69Xy9mtBSBtZ%#RmyCg7NiSn~|@3G>^i+DlwO~+{WS)w!EvZt~f9< zqCL`im8e6KnP*_HKTeO?I215f&?NQH-A?- z_D=XHjtp$Oc%^S8Ht+#8eE}a59f6zT>^l34IQMURDSiSmxydA~C4)C|sa zZR%{P5anrUPd&`q6-W(;3}4^r{0!d-8O)m# zB!|Tb29F-#ShumgZ*=@~S^E}PC^lmImw8X_747GBkd^g7$$P);TmDqeTo!o!ZI3WD zinyA4OINq^(Ha)mQd(D&9`hj)U*b7*@%#&QKN|X8V{Op0 zG@)cf34&bdF}$qnfudc}zTIM2f9iIpx+A({!FMD!#HYo8Ll8yVZ+x?xkvCW^u}sll7#vRA1bTk>=nrQ^%)jp34jtMjuvMr-OA|G&0m5I2S5g{S9=2 z{12Ae)210YmKur_R(!iJnVd4t0e{zW!2CTN#z+rQt7qFUClDZ`~&OI5+lreQT_4L_kB^4Y%my6U;L8dl9YcL zBEf^`ZnD_blk`oBpFiNEh(7_pa$1?nFTH}Q(6@+zfIG~>(W__XLFPoemWvE8e(`X?z?FvUEo^@{JN0FF_2y%6{@QmT@lBc z%EPD+JJgC0NK%-Z1zM5Liyg#!u64r)JBH$Ku3bINK2dPG4!!>~5}#!si>gw`(SOqR zeYs7p?pLa&)ZuHxsL7`Va%H!_y=EUGWVep7QP^XGTvoh^w=Y$GH)#8( zx&*W7L5cx-XcG;AdJ!eS1phr;Bw`hcV0*Heu5UwiY+9_Jt0)ns0mWG63d=9&)yKO# z49JYHCxE|%cyR=^JiGM_7`_zAmwZ|89o+E2{yJc4Be`<8YkYV>&uMdx_eUi6?|&t> z$Qz7u!iI@N0+M4?=~`hsTw8n#>_j%6cJGWJXU5R4CJqzZ*2`+N6{h`Wc>3K|4=W4F z5fp&>%|azCiwta5#ug?LJzq?uC>B92l#R4T1D&gWgZw>%-e;Bf`fv9!D0UTF_UBVa z$vG+fJ3+F-%(%BRC(&z;e?$baSe;34(6 z(ahPGFTp#oK4nlO$GQZ(qGVDp#o6j}zDt@sJ-l{@w)5Pcx#aS)%mk2A`sE^Pu&ZO7 z?~Dy;zCh3y>;QCRUE!81Pia!2eCzoRUUaTaCn8gc*5g7rwxoE>p0{gQV(gf9Q9l1v zBZ(eSqKS1bQ+E@dFkn2gR1oIr3>MUH(+V{u-$;pl@hYBVxzUQsjrGLn zy2u(oDF0OVobPrs1)tM$!;{lI_&Gc!j1`sTY822wdMV}ZCDYBo37^jKd^)1c*3z@BKOikMH0Iqo2gu{dCfGta2BoK=0A@Hx+K@{^NZ zB-Dv^|4pWX;LE_6RkrdkbrG|)8ww$*Nb+=WcpL5v8h!g8ox%8jkkJ2zHO!s9X9yCl zb~FU+39@%dGJS%(+qdp(L4Te@_4ilAI9|!VAw`pWNRb+G03c1!1xit|qDF*hOMvdx zLFU%lc=;dy0Sa+&ynK(5K|%Z?nM$dz#^!BmFkm&2+19H8qo9~^K`D%joT6o3LGBBr zRgje(?R-*B?Puk}BrQ_i8P4|(@RFTmw`N%5FLYBEoj23%H3&xC4~|mpwH?#Q1G60{ z^dUzt>Ue__1>yQ2qKwgwqnzD#1qf;3EXh$i(&7XWL;AH&)C&=84Dm~cs+D%R**J-? zk%fs64tIC-(T3n@!oUGIs67)*9KzuurjYX}hk6YU_)V^~a9mLVh_S4BV=p5NI zzt0YQjg7B7dUTI%Eyo4%yLuY}g!2FI0)#@D7a~*E);L!d=8yV*c}8wD`S@Ct$X!S9 z4P64H5JN-wfK6S4PbFTuv~y5;=eVmXx5+ZJ1>4I*?A6$_9~7ai_CcpaVST^(%A?8XDR+9m*bmn)hdu?+M;+R)Mw{ z%r|k+b>gbNlngA+PM;ESzqBE9YI!6UXmP1%lASvOho|$GdN{>>lUcLVR*v_!shvMm zF$&H1?!JEYPW1L)kNJdZoeuF4p%GsY&?$MMQ6%W;pf=G#u1daCTWE4&fk&J8b0yb@ zYnRHlY*C!m;1_yo56vLN9tUG>ujcexxjwpg9ZIq>8N7Z{{Bwx@i!H`#RGQ$ff~R&N zwa=*d-|8J;B0Lj71Ai`41iYQEM9enx zY%ri`I?t!8BT-LKg{+CC@3&pgpGyD2zs>yNmKbfVl~)J$sjwt|6Vv3n==vqyY$EY$ z>G^}_!wY69znZ>J^U$q(tgjL8aYTJX=(?>9?EEgZ)Hd%x1q}Zga%TOC(b>McTDF%j zCbzZ$I@g+ummk*ZL>72qE%vQA=J3}Q^*<(T}R@$ej1xjpMl?^8o>P=_W{8O48Tkmv0UsN4{9d*zN8i=w<4A* zc{@?qmeilaTICQ_@d{Iw8ufzzTWs%o|KokfNP-e^k0mPtxV=}VtT}ZC?^Nex*7!B& zsdXIPe-==#2I5rN=6a|c^rp_6JN}u(?8{viDg^63H^^EcI)n7AO--*68 zzNP7e+vC04?&+Y!JKn52o;*yGz4H`MUP~*BwazWf=6`w;2poe?cM=e>Ug91{st(cv z2_^dPi*{CGvN=CL-ft_C?Amv2G+qzw@YVc;hRkgTJI9`-6`X@Rq+q8?A@nG>pwD#B z!r)XF`le01nuT%h+H9P%fUs4<$_6m*Mv1K5FCnJhO^Pd!Sv@!mWaD z!>Me4`C;DW>Qd_6*yt1wiIm#tM_caa@Pj`;^p#y~Brck~ft!6}^~nHRK;@ zO1vzw*lqMrgmYDNHqyv%|Ls*F2($ELryv-b<_F%e>v&@FDJd3`11db zoOJ1L;wG<{VOKFuVi$~z=unHexHxx42QQ&wJsC~Rk(9Jt4t{gvg!XSKEBmnnJ~JlL z+a?nJf!ekBhE^o^W?GT|7h2cA;Cl0YB+9a`KD95pq`fYDIRW>%bKPWd#J<{N)bF_l zY%S;Ma>x~H%|9wa2QQ+-c0C)PJa_1oK)sgLu0_Xo-VMFw_Yds&an1v+38tU+18L?j z1kl&dZs?FpS#7Gc{tuPpS*YLY#RA`P40^$N?<^@?s6e?m`R&89%`4= zFJ~6aI{~*309RJFSXLdK`8Z#gA^#ZGZ+Ll8(Up3t{zLcu$9h~k`vCf@JtZuR5akr*=Cb{Io6@?*Alwkmn*!=AJ_e z@mcssC!5RYk0-Nz6w9h4rWa#B+rM7v(>=CmBe>{nz$N}6@&g#Zn0UFYx}m_ z`wip{g>#+odVTq?R_R`iOgO-71m52qF8pKpbeQv5>Dd{v=Orgse|uU-d-v{H7IC*& zo-gOEeKtNtdu{uKe8Z0CX>vT{I{p5_Vr6O>w^)pq_CdJ^r>^T=P`GTR30!{seqiR; z%TZ9?>wBYrlWvbq*b@0D#^mFJ-@0-M9q)=HVqCGp(-|o3e%(A$3N?mI#>1?Fg?};Y-6_d>Y+f z<=?zp-O{QSvl|0z>YVohWR2oeD}=AWl6L{zn_qJLdTV6Fx=CAn`mKF?Y-6&fQ8$8U zLwfU<*3=Ik@ZI6C9Ju3{D-QM2-eY59n>*fL9sg_b|68XvaNwP&P3zTvys_VO@pHP_ zIrpC1O#J?7&vU|YUae9yRr~ux+E&4*`L_TCK@m8?A9U=ywo&W+wn{hr?K*q^P|3ek z&_DFcsXZGS`uTeQ3mW<+F6$;|vwJ%7UQq0g9+W2M2Mj*xfDLb#iezIJlR~!~Iy-|N zT75M)ynPwd1@ znMMp8elikos7(%#w8ZdsOU8j@Mf!KC)6h?jrhmG7JWKFmR~zExnFroxs{SIbCbuK4 z#RoKvk#&y%C8}%1oY!L9?mh42ux#inUTeOZ=eeut!`VzLjjcqP#9y-Z=CK-Xy!3Tz z3i&Q#c;bzQ_t&8vpB&V=(8z>soYgYf*IXt1b8lZ%DO)gD(O~<@@MeH3O}0AVxCcr> z9b-9r2YAKanu~c#q}*4ulen;8+|{k?FQdWdP=0?vaVx(uSHB;Wdt$CE+U5y23yY>m zJ<+qUv@D>Ft+x*+)fk%WC#^d=5aREgisaf|_^#|+!}k3)-I9WO0`j(Z?+QKGeHTx96D>UeQwU^1!RVhE?lVpGaAY3F|y2 z!%=XsnooB<7tBP>Ek!QP%glsyPOc~Uyg4S$POthd)NW@qG`O+JHhyPOUw1^D?N zy0Mt^+{-DZ7$xG;(n}ku=qNSH&#=mYcTc@a#;eRN#!>9bdsii8o!`I;1YH>Y7wAG? z68P$s2A8voUDI06hj5iz(npu3n~A4qi4AwzTDq^Qd4oLyM@**EvvA9K9k+duE9 zdS)18b-efnmW6g)^Zu&Jx))~sT&!yOvGTt}@me=Z*HUoJ@pWlv-cgOYTTx2OoCJ$7gk#!_*{Yz>K%WbgDLLnECNZ z*H~$v`%?&JF?;E$E+n3&Iay6sWNF{BYL8}IOjy%5`jo9Qxkip=X`f6_3W<%e_Hbe% zC9o$`mfn#vtm0v6ecI{5T?|TyomyhBa7!B_kC7~V^;x;{fTBoX)%9kZ<}EdTAO_q3xT(V;Wd@0_5BF#2eK7C~Hes%_CnJ}h&(10J z#i#VFvoPMjJIwRYadx__@G3q;`3N(DX0FXf5OiivH)=>#j~Xc34s7=opoF=pjZ-Qx z?ZNT$EvuFH0)`W0H5T;96Pc*>fx<7(`6fe%>ZHED24`eub^Vo>N4Fh5w8_WMf16OG z;qYOx3(tb2CPfmDwr4`n;-8P8*;Pw#SZgL0%W1IJAsSR@ zS~Y5p`FiQq{>tAf85n%9M9R`cJFf^)ofoULN6e-i^+rISPaRzm}auL_1hbPL-7En>-jHKSz z(aK84vN{_e43EH?F|kU@q#w%#J9x+SX+d8l}X6&VL zaE!wwB)tU2KEza{omsk54e}xEBIoF9cqq)9!-tTa@oj5JZ#_1ubQZ)eTe>$?B0BW` z-7`p2T@p@+;lFLNWSv1;Vxu+1tEEE>$9(WPSHQQOK?#s2TC^Ch&ePWHN5!K&`1B;@ zzEePW>TcFzF}<6nwUg$3LY;dW$j@2?MN@g~bmp4XrVy1XK7xygB#;xMZ zxLbwBkRNNd^9r3P?pD5l z?D9Zr-x|($b0WslZFU~0Oc6)WU|(8RegVI>4>pUrku{<*cXrr5DZR&e z?I`h~YQ*FP=*O2IT;2F`xe(m`?{B3MD)e(?KLtdO$$}VKC}=D4%j0mSK-5cAUbJ_f zcq&83mAq*BnrE)SsA9Gkoeq`_v8kBN_~3`rHwVnU1gU*eb4;B6oI86)p;D8f>fD|} z(b5{r!Dq_h09D8a8Xb)mQJ2(KEm@vw?s~B9-75*iBiCfiWPfv4ycV;3Nt0PxxNJu^ z;#{L?O0et>p@IVpnacux26#*F^UM~!@<-O(lM?HaV?*v;g~cCb;xnJH88gLo!|fN1 z5H&**)ni-{9_&*c=zMCc86q6WCsYAxD({4~;Xew^DS!YnA?&B(gixq;e+8x+tU znxtD7j=m)CC9QcBe*Ur?@O8P^M^~Vbv(HhN*sB_%A!c2J( z8kr+M^}5mo>GQu{u~@;=iBb*@Si(e0v8U?D(MGuSTPvpzZW;8ns$k;5uP2fQpUSRu z5Hn1%(=DHmE31u^Exk>nALJ3Zjh*pwrs%ST;!m|>XAq8=q*+wNJ56-qwoDWju+U+R z?!wGLlT5GS;9F|6Bg9n8Fik}&d9}M`vUYEPm(k7%kLd}>MVQw3n*iOHoFa_jrBGtX z1qu|MJgBOl?C+p9W8-H~YQ>87{@R7)j@WPDYms;xtV&l*c|sqZ)BuP;*rAeJYipem z*!ihqU3Op_goK;G4N~k!b!MI0hqQB6n{bzN9i50B8`i12k^6@riCP}-i@J^}<+s|c zwJMj6x{EChyX&%FwUlFA`=*x2X?z!9l}@XmQRm@^a;pRMUGnPfgRv*ILj!Gtw<-Ex zYDvAehF^U;Rfy3xgbh&Xo%%5F%8jg`)a`qiAHy1wb-i9= z#;@9ylyKtjV|ncV0aD0VJK{v9oc_(CqRyHj#SMDi3!ze%%AaT_$To+Nj8w<@x~?P* z#^zd9JNG+8Eq6^o)HPF*ZO`OhwNwUzsfEa6%8Nt5)vkX3XiKCfJn zVVyO+8$YS${=qsb&fLtn_l~PTiqfTTWKo0WZEFBPV$hF9-Lr+FI&z zR~3Ue!WGN%9&eYhGXEhb~0g7X^lgV<3#=D*Ppm8o|;;fP(o+L4m zN{g6YWGKG`z{T}N(+iW3;%1{R5djTDjvZF`{E>Uxw+@D^;UJgcVjZ*rkFs#_M`(I) zS68!GNM4Ylb~}Yyn?^5pcczYuBf^LgL6hQ^Gj}6sqYm-2%!l5+$J<-$I(x`z5$xN6 z1D_z`n3^k8t$Bx>5d5HBFdBSEIp>nmRJfCvcaQ9g#u?ns=>DL7f1KyN5xll4KdqsZ^UhmZ8Y!rjg0s{A$ zilZqZ?~6J=J6e{GT&j6N!N?JuQu1NJyD5r{;~HRP%LO9&5nr`jHR}-<-rg<@`c<7D zT0XW@~+3!gLdyO{c{$6_O;yn987WmRYW%_Co`qDX?_71y-rEI@}*{-J?mA_+Bu( z(s_*-*fCBSi8;w{U{GSjiFHSNBbV{74YUxKn2RW*OLBc)jow3aY^)aT2`lqJ9zkBF z)d-1Tj(2rEUM-GCR3Ajt0;>&%=5Je)CnQC`)rDb$R;yVjAE$6uUT76bP9T9x-T%>YeW zjJ2I0ugi%tQ6Wk3`gig!6w8Hz86WYPb?u0oYU=COojc|pyw=v9;3D@`=AzqFZE)T* z2XP{pv2VtJ&-J=?{h;I$;}D2$Q-Xmt$Wx49gT!!82G?FHepqI8+o$Ytaq1+E!?}Jn zfbpO*zHhJJv&;eakejE}J}SrsWu`SgtN{wJ-lEt|W%jwzNF+(+9w4$xC)L0~n+8-Dm4ES-{=# zskf54$MZab+V_UYA?ADU1Gfi*#>YNbu#Vwl^=-0XX25$_`F3nl1#^H5c~D5SdUOL(8jIY^zfBvAKg&#tc7fE_(bJDPc8(@LsB4Mq97MG58@j#5ppQ&m5hI44#I%R-tl*)WHPw#zY6OF@3-kt?}v~W`Q+NztPm)^~VkewM)l0>0rzXkPt z$>y|G>1zv!T;b%@J~F#7pK^`;wtC@{Q9-p^0~dg)g!v9ggk^kU-5C{wkOoc1CNj56 z8SVdKar0Z`b+;~&u`Ck{CSuL`>R-{f;&%)%{h|X2!w8yi0QwUyu2f_F{BT8Pt*_<` ztn0YGhAdw=E-5DX(`Z`lNm~5=&EhYAs5(dJ%|pI+*f}uOhC|3~Bfa)`&-B<+kL#1h z)$%;JLn0?q6DeK-1BFoO9E%vZ#dMkDmw&LM@OV(<=*8@$Jf=s5M>8vueH|X9;>kJ(E&D3fyQ9qZl2Psw!U+vVIOc0 zyx$v!6#H`&1Q|+@h>Gy5Y^x$DF2E&_X<#&Nkg!s%-2}n+^*hp6^8j8)d)E^jZLY~N zqtvoE&~q;FwAk+3iJi*_GPMKxSNs~vf&m8YFoG%CZpbju-piL*=HL)4W?ePTvo5C@ z(!jBZ7?)^}RXIKzAA)Y}9nady#Uam{%{`4Aa9sM0P&M5`X;-JRs71%b;GHgH<4}N3F5vMTpm43n|(R3*H<_L zolGqykJxFC8of08zjnfZ5Jn67Dp!GWF&D^|76k?tzEH7zIjh86>{8Xz1FEd(nz^hw z7S0TFq@*fU`?y&Yd7FQcsGPrLE++9h554ko$%n06c#Gs+V`Fq>z*U7kjZNdJ?}dLU z>ZA}^lipMMTFTg(gSacH%#SQ~yFT@aB}_e&%FSZ;M07z@gV!zT)TPu$(7s^J(dI?U z6V3Kuv~-B#$Y-MfkBXag)3#fOdFXQ{mZ>nlIUR?u|Wp&CiH)768&Nbr|wHDcEH&tf)bBYF9xuGRQA*jiMd2^t!E;k@dma zdmi$dVnnCFMWs$LKE{^@p9)FoQ<}D4h$o+x(2%GeeKh^{=FHquQ%dKjD3h4GN2e+A zTAp)|*Q^Qs$lL6XrkzrJ!97(H&9q>9>|9tQ9zkx5F^pIrQr!i4snTP5Z1PMCT7!`v zKvJ8DUVk2AR?zjef=yq2(z#V17ZOxkJAG@*Rffy^7jAP8o`+-gN%WanhGtQ1yRtUz z!%`xVm_g@-7m~ z$4Sokp^}u3I<8^W*3Yz79r-S!;q4E|2uDcS2yb`oif>b$4Euy3{Mziy>g)bv zjNy%JX%tL%j^~KE)VNOGN*)%@zGP}ytuW-sIL4LRwF91+yw+cAz@AkVwoIk6l{4&& zgx1yTw@VKNv@gBNoQstW#B)ke7CNxvl)9_3x-5611B<&pBLK9LT-u1^)FP%?FU~E+ z)Xfq<_~&@yBz6MVqEFz$*smXMUXi~D+b|@ZO$=!u^I2E!-=eF6z69QSrQi-#=a0;3 zBwL_&(BA|Ix5`&oeg!W=76+^ueic_Th-8baJ8eGF$S)26bWcgMg_jSr^of!1TCiZ} z4`OL|2(z_4!)UD$8F$G@eY}Cp1`|3YLPDoovpU~F^5T_<-m7K=IV_z*9u)Sy#Hslu z)$dKHVCwmU#B*#RtQ}2CYfT~dAg#hRUbid4D3Dx{3GdB7ui_cxDlWE^c3yEn1(8=h zGeV2`nVgDGd6MecG<{5hFmY$BQyn=hVLFaslE~ALHHV5*+JxfS7(OGufzPSFm&pC= zsxq2ud_=WH$5Z^xVb6Q;R!O-PlksFz=j!4ffM9G^KDa*812Cr-^hKD7Q#Je?cZz*| zD(1o$t{-n!GDFE~uB|LB`lYB>w0%7~11>pZ;X^)1z7xN`b{A!u3NSk>Hh#inWlKhw z_s3FMBjxnvt|1D7SUiL%H3UyWv9l6r1El&&o^V=rFyM9?+r~v)k0(FY7kk1BCkTxC zQ!Q!3@X!R(-`WfY|-spEKYVACq#5Q3M)wOmN4g^1qfv<{FQ@4rq*)fSTX(hM3?7Ytm%#ijTV&Zq+~ z?rqX!0yYye4}(f>*gOrIrcy-oDR{4F2Q3S^0rB{BVUo|1kknW39e0U?~wkmVfj zWVY!tNw0Gi~IJ${_K+Mh{0opQP&hlw0>B^2R)b6Jy!Hdh}4&{*Ew_Y}H z^JvTWBi5ELk^_u_-Psmp<%kc%GUTadIm2~Y96h}>MV{`BLbMXWZ1Q?~BP<^0@ar@R z+Q|UHP1TrIjz>>!+542cz&AII$b7$aFJdm1^I_UY{9U)(Ws6|)BYKr;HEV{_(wtKY z@cnOL8q(SrB{5m#V}_;*D-3oaPjeZ%q+rEHl-D8AcxY{B3i{b_(2Nbapz=eABObz@ zSUS+I>9TlFP)V>KPx@|FbFI>BgzNAE2K_aGhR8>RuUZ*(IaaS!++el7*QLS)N;DP% z;cUN-Tw{aHQIW+?pl|uI{(nM7+7_KY7}?jwX`s{=qL+o!UZ>ow6Q$C}RNaF0C{9f} z+4PH+btQa(=lX9mK9GS1$fW~px}TLVb3V>!SZ>yv&eN4s+>^slZddB}%qnIu4FF1L zrrQ5wf&OcK*CM49_$O$WzFb9uua$^j-w|{o`|C%ff%*_Vm63HEb_uuA(BA3Cre=}5 zPh$b*VUDG(JzL(a*~JVfDV+QS%9Kl8irdZ+ZR@4Gt?tFsh`X@BPU355h-0HSJ(}7B zuvz38xmLEOYuW3P$E)nw^;L;<7VHUH09%L4vipIu!Bg6l-s5wY0Elt#$;^sa;!KaTxLG#~;yhq(o%E zCq{iOd<>Wk`-w&e&>p@dV(Sa+*6*onMUy;c#L`+)#dl*E2>*eE%-4;s<}uXN&^s8$+5+yz zo?lOc%zO@Llxfg>mOG#8otF+z#hXXnVKrG2`Bb)LN`&(3iy? zhe%SsEJ+xtzw%ls7sS8N+&t6XG}#zz?D!_(EBw??Gp+iN&WsJ50#vjvPrSPnrMePG zYxv?2Kfg$JdZos(wYl5$D+bi-He9`(tM>>P?Xu><>ANiOZ)Z3P^tNTW>5cdv&abu3 zyR^QT5!Q)f_-&C>SvX35mKi+lt5$U7$R@p1fTE4k1=#vsrkiwA%CtTLNS7rRG^6Lm!cf$(XoaF7_G&rM79z=V3kH_ieMyt!DtH3nA zHB%(z$#m5R`BiZg+y&ci?%JGNQ0$^Q=bST^`T)7L{hZ)P@n5Hn>etSPlt%b&$oTPY zlZpul2^?edwcu>%Vcvreb-PH*&mQ>2C|@yUgrI7&v==9qvS(*PQ2Doi^!ml_W^Xp; zJ39y8?)rU)ZLpvNN0Ld-@6f<$8%snEUL{<+-qWa+t{Uam=YuklY1GW|89copKa#MM zBY9IGMsRAfM;sj@Ww-HailfAxhPLmL?vvMC+ykBzuGF&fj$1>^6a$_!*Yt}oalOGA z9YKjLA^esOVJ{UfH5j3j+aTq%n4pgpN}Euy05AJh?}f)90iO3KvrkN1Qe#$R4@KlH z2sO?}n9aRqXgLNwv_5}6mXyUi&*@_!3Cbw z?BgiN4K+0#=Bo^HEgeet;Q6tCSxPPMCO!;};d|BQ5>^D~FW=jGW%E*puk;mDvOSUE z3xxO)!uA7}9V;bmaszfq%}K6@ zKW4M}myz`?p$B>EGZ2SccAO0oM8wFSw2g+2@D&VRry|;H!DS^L3hNlu*r#vPRB}z& z6x{?zE_0j&4WwoRW;zSWW^NvLestkp#BEIR>i=kph8zVSv@bu~ycPYUKV4J25#sna z4RJD?hqyYS>(sPS0hgPIXylrfV5D0jop^LzH>fhjm9aSCpcaokRj@a1_vXv^V`?{n zS7qw4Nqe&vZ6F~{kkBS9&+VD{M5J+}fMPkKn3Gfm>hX`ZThW!KcL$-12q-JKbC2g> zmqnxIUSjyBLo2?9P#8QblbyFv&{N=m6%~rK-)Zp^Bg%jNORz47JU4EpcLXjB95ne) z;Q6!RZoZ>P2aHD3`_y5k5XcS$N5_Iu2%h>!k*Ljs$d98~(uYIe>$tjUrSmw=Jdg$Z z7d9)1SX1Sv2q>2s5lcsGj_jXIYxw7;1q?*+rVXwM7>F02Cvc*MWttVdd5HMYy>U9! zagv{^d%QllY{IU)K&FTA%rk{iQlXF=`Xj831~z_P#aqNkfxmHu`SzQzzgmesws-EY z9R_DDsMb3uH%A2PO6zv~x+zKd<3B?i4)b%@-)8-KlXl0rVrA>>M2#I(MoF(A&pNY{u)2^!tTy}l|qaVTG!Qt zqhM=Dw#%L$PulcLsMarYHNd_{wtUG4hf%0aJU<*6^{3T-@!uU8;hOvc4*q0wXJR@{ z<=wK7EpS@pppVQ?R@>~{w$p-<&r+F%TantAFuoC30eKRkRO1h^*|J$BaowWX!~WZ3 zge^#Gm?KU3Y`3V-u1aR zy0|4Ek4!Zl+Nl^ffvEV_C(QYlvLeXdpepa^1!AJ0yT4eTeVT>S(ey6w5)9qW9A6*@D zVnbybpMA^oZeLIR`GA^mPvQqPTUhi<{3Ut5(z1-#U>?#x&Y?QU(C0j^uhJC8Pmn*0 z`9{U@wvzVLS&06~q+BGBJ{1C0&2`ew2j zuGHEn%K*IsJTmO(9(ibFhb^&{WcG|t*kM5@3L!j5*yG%U8826YDLWl4MP=w!nzci#L0^Rqx!8 zOIaJs_)%)E2)?$_or`pSh8o#w5iQg0a!6_NrRmQ+_4jR}9P+|0eGkLI*1E3CN`q%y zgPTLKZ+b~8G_5bd$t>u1U|RkInEuzzFzB62@Y)#ZhfoARUxA?KOMGKT>tV;fCT1a-OgS(j8ub#qZX#_NOG` z{--1o0GqY0c94e-)8%P8#NuAQYJcr-VO$IHhwXhgvJrcPcLN)D6xmrJ+jOtO+2O3M7QTdI3Ky>2XT9I}<4`BPcAD#<5P znB4;)uIGHZALRK8&5)}WGT(xjd|J+5oZv`4QZ#5+s zUOr|L*XwE7w*esq05MrhLV{IgDlio z>i3c%@()M@iR@2|_RLN|*7?^)L@SI}0Vkfl!6HfFWvDtGSJEoqLW)V*|1{yNpZb^Q z_Qf`%cwqh`_XPpm2Iig9MZ|||WG~mk3M{*(SZYyjql16)o~M8Gp7f0xcb0)kf$MlwR-dZUY)b9!EJ_D+q~ zl{lH$HPdyV1;9VFniC8Z$?|tT9;J8sF>c@SQN@2?faT(>b!^fH3pslH7gFXTZdLp`O9vO0u1A+(u-PSVc#CluarXHh;*U00@$)h9+w1%R9l*CAr=X(0yP|M z^#+&4c>Eshmc!+jANq%3%nU4hapQVkp{H9(&!Mq)1J6kPk0}w>mX506H}X+=mxJPu zE(zP7|7mUSU;vb$A&>oHf^}Q2mQy%-U?l2&tEK?KMBk5( zk0!Ysa)90cS#E4W-QlUfT{&BF0}QKPMw3!-Xucr(S3FKGb-5O8fe|9*GBaVkQPry9 zuwGOTVXDybw9AXs+zsmyAn98c=J?p)c&z?IeK-(v(RM3Go0kEr2dCuS-x1|?^G-tr zJ~m8mn05!5Y~D3PPyr11(IXnHVuzs`)cw^#&Fl@D!HUL`>uUfWe zlpO~t%{<&;ozYh~YWP%HloMa*fR%9?2Er16c3bf|ELbqoNYsF&xD$aO#T8oqlpNr!Q zXwntS3Vkl#`?F%K@7MfLLc;;bDoDyC+uw1R@i1uh1V}0Q!4B&<2h5xHxhDNbBHnWm z;X)-^rVq^{+EIuB-~?ZPS>UJ+7wb^_T6QgRD$Z`;dpJ$_PdJ^ltNh(5Kd$$2kx+NR za^TY_mlt}yJ1k0K>+W!Q+(JY*Oq1-U_g+yMjXhBPRj<8QrzO_qXDjQvv9jY&jM(+^ zjUv?c08-Xs!7-3VS>c&zq#>0PKkj{BE^i>%GE5LP{j$KGh(E8|m46lT(2%b9 zX7&@$+iw6m{s(~mzN*EjAi zmY+3L^)nldteM$q8Awhi2Gnv{yHAnxb5ry~s=?dv>8oL4ZD*iw&$xBBtJ2aCs*q**mbU^vzk$D(gA9T!myl~# zII{_`AEXEGcu?xH7M7>db)iFQN`H7JoKe;Y9$rL|M0~o9In9gy$zaFZM~s@$wIR}! z6>896G9P!@O}DFiMNy?aHx4WZw$k1@YqiU-3JCW+1@d^G&%$EC#9Wqf#Ssy z*Q%*6e+DWJpA_CknrI(cmk-$i!-@LZY4uLl?NISO7bfeZDmwXj0N)>sZG?*GYZU`I z(<*TypwEZ7-}%kk3E-Uicb?PYU(ODU4O7SqDv?4~0Dqb>TBFMEr3sCLRcmxSbU7?D z73zRHS`q*pUuz6z5Y$0G3)P3Vb?s4+D-AgTBDO{#ZoFFaea>Tla_JOE|FyVjVXs}* zQ%B8rS`Fn3+zgwAtq0w%Lf3KemTkZyxGqXNg#h2 zb1Dl*B^!k>A8#0=RGR`=HsR%w>qFvnyaIzfZbH3EO=&8$K zIZ)ELU9-OCl(9OmuMa)7Wm0y;+jMgXbAFy7jw)C{pG9iuO88!2t!cVCj=20!l@d=m?AQe2P z%M(ou$25Y>=9F7ecz&;#wQIvJ`DGay8}BkG^~Y0hfH;y}jP(n@6|qqYmHT=}>%Lsu z6E97%Q#7`^NL`LBPsL!hc3AsH&!=eywb`-^<>3~tV?l&1Ejw-rPuPV8nYGag*o?mS zszKbEg@X}QcohJ6$3-is^9isrJX)~r&zLXudnpHco)$X?8o)384In9l?s-00$JVMg z23iab#7Hl0A~=_-8naP$T6V_TLGd+VlAyF+ml?m>+aDYA7Hv54Z){{2+WrTqF+_HI zBY~^j@>E5yg(yIt&NL`0MtjZMxbdw_4+dOTjp)B7ihs4Em)`4A=}9Ou0*JL$^PsCl z;8bU>Q4AEA_y>MCG$7BMnkhJ%qDv-nkaC?{AfK9Gb2OH|XsP-zW9_-;)BMs?F?&QGE8qD-GzI1G!asB>zO~VSVgh z)4MfR@j7ldJACj~)tI2Cb~)n%ia;o^QXC|$N#;5WUKmX_i8_N~1ie5ht|Z%m0$^a5 z4m(T$90-8`ad6hJgOIohRq((VWkPst6y30e!0Yi3l%$TXog!!bLj8^Ye0 z?s>&?%f2`jPNF)!0MwJ;J8=Y3WTn~$*M4YNR|r4;=n0NcDO3Ku15-E^2I|!KGgoc9IIDe5n zdfH4G;3bP1#Qa^Nye4%UPc~1Dvic=yYsQAJU&?)YrZC90h0O~FUI=<6SsF)3l7QW910Hp+b5XPF6D9PCh9^ea;#Fc`6_sAhi zJVb>2emZ9|udlHL7`qp5U{tir<)R7tEw|rw0?raxYeIr(m^+my#HA|=dru{Z2 z^2^Em=M6o*w1=K?4)|KNATvt|TeG>aUfZ1T=_=5Kf#RE#UfVm0x6B+!vddw67On6P z0=t1gKe4CoypU(wm(?#&6{H9ho3~FF83^{$odOP9e|G|lsaHaIJ+^JN^xoTmn-(E0 zdVyjtgAqnwEbkSpE7n@}wO*=?m_S@E5)4yp)6<%Y8+(puJ`xV#{__ot2E4nNYHtwa zcue5cW>kA^1syycgtq-V&hD$hort}dVN}JN4^WJts#&GjN`72;vN_Fo+9&scXGaxg z?PSv;+>U=cw0i#Y7+tCXF`b53UB+~~8;#=?##{OeseOwmMM`PCakO*rXq7eH1DZk+ zZussI-+y;w4`;(iO9^kn6{#LKVfAmIqOu+k2#8eEkp&AetsW9?8-*Isqk+=VFoKVZ zM;=Tw=7g$(MT#h1XA9h&a&f{+^3}M?r=<@8TBSc@6<=3&|&@k7V&R-3V32Ok4|a=$2N!i zQ%fvpGz=CAyr>&cGD9r~xV2W6)}$KHr<8*bl_}Hv|HfG&Yi9LcK(BTvw=d5OthtLY zI&PM83JsXxOdQMmL!mYKAHmbhi47P{1J#+j0H^$9DMp#YIKov8$PcP~ISy$e&|%nv zG@-85_n5#T;8HFuY@Z*`*7wIGO1@3P+c_DzD$t5Qqy(l`dVY;i^cFNZGY$Pr;dDaK zo!^#D=k$1B$HCg3!-u~uA5&n+B|j(+z@>pOR(D$=o|66-N76TP`AF`?n~8iZ*3x;5 zjF8LC1=&O4ilW%krhpVXDnexWWg9qmx!k-#&^1A{BGXEO_I9?GUWZ+Fx1=I?f&DH} zhAI+0OUhu`^+KNc#vo7EZ;eGGs<^fiz`&);z9V-AiOFYMNd%eY0VtqPT#HHglAJAr zYS%rjE@!I_3W9-i8;D^@H$I?a+w8M(rU7!j(~OR7D9OjGB*JCLnAGw)-#p(`n$_>e z|C%*)H$8T;Ct{8FvRmFY*-n6cyb>W;aznS;oQBXQT@`lzI+oZ}s>c0-U~ANSRd}{Y z&;qaN9vlf;e(u0U=L3I#qCc|WS7=l1c|=oz+eTAHJBn`#Om})48;giA`IX)<7U%5a_BN8_VgLxJ@U5&si^AJ;V1vGe{W|kq+suD0WH_p;s?xotBAjX zqqW_6tkHTc8~~90f`#LAQHn+ANDvT339BVP zq$Q<0;CnIX@4wS{9+MqFZ1j~&zwznWQm0l1ANlQUX7XR-pgTLC?&LnW^J(Cvij*X; z8NBD4un7w%85HziYa?U5Zur61Q1Jb;+_1bPL>5V9@n!8RPQcRB)Y_6@QPUqTRfY!= zoaFw+6`~s=7&-9b?q@Dl)={dQpx)aeTG{v)`Y1&z;!$<19k|&eh1f+pc{OY~AS#Zk z^iIY(eHs9^Gj&2iupE>kEpEC~1%}Oei85oRFuYdU0M!rsv-o3jZEKHU3EE zVII=B2nz*_k>&IzS{gbzR-^cIQBf4`4~5&RH1y(aD7ix2dTVhX=;PF6J0hAx6;|Hn zS;BM~Jl%hXCfQ)6w&>uYnXMNLwdz)f-QgEdhy+j;s=|T?=wus=mo+07J6a0c;Vcn+ z0KlSGOEtn<`b$|Z2T`N!HHNt(k+|10KRMz93ek-!PHa=91}tD@)bQtmopEnW68~-& zF6-X>s`H{7udgp7J;x!RO`f+o!lU|s%KP@Xq|Y|)t+v^oR@N%p%tPfm&CInV^MJOM zVzqKs69t6IQWK5Tlmx-Ko@Hf9uGBIQ6_uI-nWCZswo*$xWC?f#QxOG)5&;np?~U!* zv*&qO@B9DjAAb1w!TWdL*L@wn*L8jG`&TkTO^0BXN$!}3J9u`BzMXDuzFBcGaKhmGQcutZ0=;?t7aRtr+=@)!j-p)sp3J;J zXo~`(uATcNN!1tk0=Rs`%7ZM)piK?vOP^dFLV&t8}zoKYyJ3)%c&w z*>vx^`dQ*9N$e#zPjGFO@}(*(pz)eq^{u3q$HJCM?Y?NVw1TINeLCk1bbc}3)p3nZ zs=Oxs^!p&*pHa)2Ph7OMsK++0-Ae@|g(P8uw=T|F74f`GkT$umavyk zV#`qgamHS>2Pa3X!Xt8~BVrWHbd|m_x)v=&M+lvn*abg^=R{J5x>L_%FGPZxI%41m ztxoUex#&z8Xb5T%&C=WaGxP+UzVqQ{q>?YPj(V5uFzxaRP9~vNPNtrdRG%!XFx%So z8-=|Y$E!~@<6q7cvVXWKWxqc=7~L}$f&W+wZh+WSKXk5H0Ae_rr*m}}qRszWq2hpx z8jga>VZ@mx-<88f#Y*|R2cEX;4@p@O8OCnes@cBC_GKsw0i9gyQi>~u3zw{RzAZej zSgQ6gZ(b?6_1Ke{b zM6nXIOI_uIU1Pf6wttP*ey$#W9z~0LAF!){etKrnKh6)3yf+0w$FSy+AOxH@>+iij zz0tHO?66!#GC_7Lr|GIR`X*UmGD&nUdIGXa;-_+}-@!QPm+H&o%UV}<+$K@kmFGWb z{gl1^3?<+G$+9@qOV8T*h7}BT`vl}S^*x!s zO$5mB{6Y%2X8@!>qsw$J5MhU(WNPgc)Z11d=Re*(KUbR+7kJP)Q4&W1RfI{^_u!7J zbkayurmk#z0jA{+Wi+Wc>_s7xzq87JLpgu>~BP|p*4pG3Ns8pLL(td-ZY0DxekN=;X7vlcROME-&%hEr3d$-= z=RBO=OxyY+M)ulOAA_UqVjwKP(6RSz6~f#caN+KPy>7C-y4Ll&U*(gbOu|6uc4s_| zj6MZ$v}q5uutiD=bL;~r{pXs=0p?ORE@DsNaDdau!iDQEfVxO{ubG;d-2aSm^4a4~ z_0eeEy=ryT7VuU+P>x$>*vV{%|5lT~(h#nv*StvBNwaTYhM?wK3lt@THt-Uk6o?XB z4s{N_%Fln1tQYU!jXw-;0Ol1yzLsd#u_f71nev+N$nz+)1sHBSuvYPAw?^wq7#y>y z#aSP-%R>9sr>h}XF=ZGuAg=TQrBnJ0_D=-``BYYndQ}{(#gs8 z`pGa|#ogpf3)KL;64wfa&5;a_)R+DDA-E>{T+Lx?O%*b%qtJJmr2709f-Scx6hz60 z%B`q;lFU8$S&x$EtgqMta#{X$Gw8)ZEGdjw@`<4n&=gq~2gUA+69;ZJYX)T#P)YmO z0%U(IfNd7F1wbeB8*z^b&2)D{aOx!D~=L(Ez6P?fXCyx~$sj z2~<&u_}~*YBtD(UZ>GKn#nohI%uT-Q6qtN}ltl?HPf`IU4{|rreV7xYye_{VTIJB3 zG5O;;EUXdme1fc@FOGmD^fL;UD(z6J9S^vg0-Eyfd*M!F`p(?%zN2k#hz0pH z9bEPj*znRY1g4#Y%f8m4`# z?|DsfW$@cIvoD~PlY3(s+Ka61ATrFA7D!<)ZtGEiP%`pbdk!tL%ovCt!8&$b>jI^Keh(YFck2YuhiA`04ftL4@$UqJqSCsvSbm+F zqYq$iG8Mw^)N?>;f5-h|J_Wm2UElhkQ19DhD3OosfO`bq*Gq9796I^8k|w5^HTtc(EaXBU?7fF;LV2vsH_D>C>79 z%P!xg_tZD`J()5n0)Na64m7GBW{1=)I_&s`{v%cU@ltzsdtIYszmE|uK5___0)a+ z6KPzdIx7$$bs=Cc91ov8cq$lG79IT3sBd#JX)(ehN@DCq0VB;dlIw?hlzVKlw}; zNecb3>jbh{$V?o2pYesy8Q+W2k)H}LMuK=Y*G(9E4J)J6F$eWuNWX8Ef`)zCnfMe$ zqmw2UH}nwnMFE^cg81Q6e{#|u1i%d1VK?YM&11XcL$7QGMZk^VV*;4>ti&t%I@P3Ab4g1y=;C=;_8CY= zvGHCO>g#599L>MyJM(I!_2nvlX$b1j*rIunB0!zuag@cVYg)qcK*mP+%Qy<38Iqrn ztdUy8;dF87B@&2rRMQeMA?&DlPV2DHsGcZvcrNSf*!PHf?P>k8p=}%U`RS3V&7D75 zlSJm<3ECNwisrZ!pps8f$X8QtKGwpAm_j@LcZm|{EsyOlUl>Y=8F3iL&@*hvA}8>o z=2Bmm{kVt=F9?x^H*0U*DuV$h9B+quLM}*|JF@Y_tr=@B7io)?D&58u2T>vk!()M3 zo}Y;4fCNN*1G5rqD6!r7RemWF5*~sH_m;dbvaeoi08*VR`LQ(bMrNvM6S4|FH*fl& z_PIZeK>_;hOr1HH0&+8fp$KsUw@`>t!G4vaE362HE7e||!0Pep1Ls#{|C;uT|7RbC z60ZRfnCoM7f7snbyY*J2GOCeO1VW=tc;3F8o-eUT0S}JMsDFr zvUS@diRz)-!uYM)oLcos)4zvP31ZiT0=E%m#T1>rPX}7R^&?&D05nNgy*NTzOaQbz zYvRKoGQ5!#zLG@sM@Pk?B}x7&4uw@OjT^yMjiJQ#Fk1PJTp_TVV#V~DV)aC=a5(A$(qNFm zEVz($?S1{xsL!vv0>ryx$Y@9DzmOW?3cDt3}!cqABXd5nX+8|zV>xZ-;yuB-I%Z5 z%>p$qCvc^%RuFPyP`xoIJe@Q8Q&$UcdfFN%&~c8moB|DvBD*#Mj|K3)p%(bM`a%aV zHn=LUGtkU>Ol(EG*1QztqPQhsAgXIA2uL0E>W9E%BjuqaChBDT(8FpI2b@no7~fEn zCXu#)M%))obcOBn>;v%hV=5 z^`V?BJ3ZZ>uV>;&+LQ->%}xIMb3#|*PVwXK3IJ$(=j%N`0apqFE_W6~$F!hV;r6$| zUtPh@5iTp|0H&zkXR7nyGJJCZ5M-h0bY4&1J?`OU!)VX~dh#p+XsN_1#E`-R!z>vj zrLc0;zhNE(8)DqY;TI%UnquzBG7$Wwp0#u*M2PWa0v|5Dz9M1G zxnB_8n^w*}sS5t|VNo$<3e5Fd>2H7)P_46wS|neWE4Sg^U$e5q>j~s^Gf*!p!_h3p zmxU)RbqIT5+tf=I7OILYnYt36$wm8Xo-?6B*^q8*^XQjdD#tVb;~ z6c@lT&$;Nnj&>i}Y*ulZdX!Pp9@u_^{~lVZ&mh}5uzO^V zYTNz@BfA*thkaXI&QF)IK5+|!o663&=O;pxrWdJJufkr7>I@`idi5@+lIz5bmIs&L zmo;6i`N3`6zWcOXbg$A&i^#nW2o{}oHMze^0AoD1(t%grwp$;qzFpsy-y-x2;|XI< zQrF9{$+4L6nm+R-u(Eq~+C{@}i9ht!PTe9u6WKw1_9qQu4G>d+JST%B*)$0w7wPi@ zX$_5HJ}m^%{X+qq&|2h)teEzh>V}CfV4z4JSDiN@|65geL3%C*7R?&-9%9 z`yMKYAx)RlB2<~Rse@S7c~V<(9U1QSAenIMv0(DYLnT?O`t&(-`ImjSH8x=8N)8>m z;mPIZ-#`3#*Cz{r_?mu9)=y64{|a$^gA6;o>|}dJ)Cf%Hl|;DX93o1eH1M+HNEzEh z?{EaywH~IM=^sWMM~2>U69g5TC^!7gm1*z5!QPL8wr&jRp#G^+idAl5g+c0}f(`-d zu<)KoEGiyAkv7=&mk&*(Kn$RHC5kF4#pWj_Yrdx+PaMCd$s9`39i6$tMiN3HZjSpe zqy5gA>0VTOu!YzNv4yZi9I42+B8k#N-%WH+U{4%!$P(5Q(RNNmH_#MLs;8k$O~HY` zN8-J+ixWJ)oLBTjScx|v#PEOc8?E>GaxUn4w*h4^fF zc{(2a`cWB2H@3nR=dd2X&V(OT`xZ><5)FQ2x35I%jizA&4tFa6Sv1P}lE@-|9YY{Rofs zF4*!C5LxCwL1b7j z1!_pA4v)yNh<$YLMWI*$CZ6W|UZ?)W_eXqp{gO@!h4|1t`pq@TA0P7*w1XzidB5>q ziwicZPTG<36KdUPTV;)%-@9+df=s`p-AwsqE%gp)$EQcV0f3Ab6Jo6_uE8{#j^*`K z3B-<4kh!DgD#O1q9iK+ti@OUm*Cd1&d^hT_U3OwFGwg&O)-k~m^|zi|75qqIT1B+l*9{*qti7O=P2eT(oKniT!s zhU%M}U%kNJdT|i*;B6%(c|I2O`%os<>H1r-T?Yf99LBm+1t+2Lz+{TIKh;9P=^|({ z^)0rr4mt=UaqgRWcUddg*R3bL4YMj(|FX&D=7sKjKqW#&M!EbZ)}W zVUYVr6FxR@<@;yWK)dbV>sQQ@YOZ|vJ=WV`taAwl<`uYR_eR};S6F3y0XKb@sjzgC z>CEfso37tmlor}Lf7NIrDk;0n-L?K0`I-Bu$Zq;xrWdZY;ymeG{nog4dfZ_kt+12c zoaTf3_fQA`*%>SVWET1mUu=@r+EyZTV@d)hvrEb-?`KsK+BAJo+)TEsk4}9j^E3(ZWY0F)(PYxd^FOelUmSW4t@37GxQTYX zhaC9xf~obO1hUakaRC>gl8(`THO2m5095ct)xiZpzJyVfPYTn(1aaEjz3f;?s_!c# zfpwo}pUo{~WC9DE4rb!P#>5%q1h(=ycrAkKX6>$XG|7+sqgSlBCVe3cuYSWV3fkFO z&1g6;db#HZLsPTxmOI;i@UhtPdtJ)a&e)BCdlpoWlAVfDy30ce#Xhc*1`J#I?aD86 zv#tGiE&6cYM+=s$-ud$ffBlfMAPc(lLbH<3>`V0vI3y~sJF(eGqMz(+U>;Lf4^5|{ zsZOmZe>g?1pW3`Bhpe97JHq`W+sa8OhYwQw1!!tiRWy9YW|l5Wbz^6SRR098Yl!&0 zQLD>LP?0#A&?q+yGTKR4g@)wu@n*Ivbp@xTQIS6AEDM~C0QCc^_+ZWx|AGAyPCjGnhL=_xPM zp_x17%GOigy4nZGAr0LPXW_XREP9%vbD4w@E{7smUPbgxN=gb+6}cJnYGFhFq;mtG zsUtfCL*N2fJ+<=MK5is~;pHMI%x-$F8|y@rG%78`EI~6#?(v_(n-gaZXtzvxJ)h zTi@nyk-TJ#%wDRVDeI%PhaI@Vs4pQ$vx&wwc|qKR8rjh&MVvHT?Qd{fG}xg4%wSM| z2RLJs7tqHU7PBXF4Lp4)mC z)A`Nx6*t6%{uhNz!yJ3T94(s4WuC=erw+d&rldKst$?PSU_6_SziO@udYk1fBs6_1 zG-n9P2^W?c+2NhN7v~k4EJ~e3?{`28lNC0sN9!pn2>Ytw>~bC}&W`X`4w`2 zc6s)vp&sn#Mw&97$(5n5--|Y9nNs8eZ|OH$(qF-3>0n7Q4J#){)21#OH?-4{5Ah&9Pjpb#k^qCFV?Dv zkk+#Sj+K;whRlwNH0#=w!IxD{Q7YzTbsf7CO}dnaabiS^lPoXhIqBexoBgfw4&Ci& z#T0C|1nV(K2_>+6t5fFIW|$Q`kTyB~-N0E;z&+vSOqZ|K(lVFNDc-XdvCkH`M`+~e zP-S6D$Ra1BJ8H4CJ^I#?;cX9wC5X4qWsw*G9jF{I4-+Re2FbE1jy&MhEKe(TIKT~| z)2DHf5chfl(+NYr5vYb7Jk+vD+0txJjIPH6)9qm1QNg0wC`*QN*%3=yC7u#IjnHi? z9@8O64RO$%o{VXru^xf!&e_Z}lLIJHIL%*Z!Qwtprm}%c{SSZgPGtCnsOZxVU*ZpU z@tA!je%aPN87x7?ihY>9DN;GTy~z89y9-^KrysY?Er_1Q_)xdh!=f58(<%vQ4nv#S zk7VFy0%z#VAd;tU&K7L7C&HZ$*xQSx*e~VDhJ`xKhH*w9=8OS@F%gL#oyF+zoMq3Y zoq|j!JYQ{zMXNVYer`nBPE%^^66f=&yMCxJ#rp>wX26?KJBredXuEkZ>r0%*fHz6E9 ztvE7kil>isZID#PCAXzRVA3>b%4NAzs@`}1rF$5i#oUY(d7<6ZqMON7dDG-)D!kQa zBPiRK*uy2iVfljMR+2-8d^7;^(=&bP44P^F9)NOvoc5VjvMBz6mYTr2i!Qhv#( zqN)(=r*m5M-+K1u(|Isc>$NIR2o3d>ukf;hhr(rve3~WLFOim7!Zi{Ba-zD3QJ<<0 z+5cc4moN$+SL3hoqEj(&Vet=vtKOsQwp}#Bxw(0tLA+|v;+QGh#J_V~DiHM=K zPB~{NUNO+|>ok~i2Pj!QaMh8MW2IHLqihq*$mV^JuwkJEH10wpD5yum0wvXvS=~H6 zKf)m#&e;hOdo1B216(CJ(nBoDmy)9n}r;a~prf1)~&*PA^+I;#!RnNxx0 z?u;m21R+>5T~$XVwXx3Rk|k)QmfgNFCvq6BC40;LB4hN6>m^{>zg7+kuZYv{*VBt;AmF_wfSFj(t=nvs9Vn0#C5806qp zEKz6)C9tdB;;j~p__=fj`U)G$kA3O_E(6^%`$E5w!VtM;i>3{g}{ zhR|!jKPIK6(N6z`F<7y)_s~bp7M{BYn?n&gYB51H#A!_H9~T*v00D2dZYqdUlX~)+ z%N2(s;(px%~?TtD$7jM`;7Lm#z)(*Wyfflz5&3j z88d0wQn);lq;&4`#)%3h3<^TG9EB9hfr8A5Z{`we@<;;*G<75txz~P%aHAVft-0FY zik)_Cjg=Xzy= zv)RAPIjSQ^q@A|xASOG`mh9l$f&`&xJISF$M9WO`V{8ZU9X_yF~re!upaRp}S4uY4#8cs@(#p7EHVVr=` z24rId8U0hEZN+>&I+q}3ZNbQ+BV94UI({WeT;(a0H@UCKwLF*=%K0W%=yrz`6itn@ z7hVz;Pr5DT7w7fBG}kfFY^{Ga-=$>}gUvayAL{mPp5k@RfBVn5NyYp0K6~tOygC1V zMp7LzI(p=!cDO5ZwBVlviKjuLwqR@^tnC4CIgbTT&aKER%=rmpEWo6E zT0LEJt9XZ;-(^*c#^GkX^X#?w zd@+lXhA!!xn~6=a4a8+|H{q@+?Wgi>==esqT2|R=g8kF*Eymss87q z_rygp*OUN#QH!5dSKjA%Gw!GG0g6Kxt;DH+U=BMru)jVA*56rDg!vMtse0*c_t(Vh zPmNT3UNQFOC=-8|eE1bex}KK-6HIBdxDgdZ(RH1qt$MB&G)KwhA=#DNBe_+W<4qWd zw;nc|t@j^>6k1A%EZ?}`%`a^aUUj>$En0UjR6V3_jv8Y+I!bx+z2Qy_h^V8GkGX7g z_q~_3$9_``{<*7gxb|weZTU8{;S~i=RYK9!a&NA{3VlN;_MZtcjDq$rhr}aCPJ%F{ zE$PJix;JPeZQuHae`Qv%$GTBbiEf#SC=>7uFzFPtET<}vT$uNT(FJq%^o~5PZJ6>O z-6#g|5MCdn^%fs0lmd6*F;;MYO0D@(u)E%c=phUfG%dEvyt?Hxg{UQz>pu;?PkTyb z(kgq3$1{;o%2U;bSMm&%&YZ?mOVo|sk0@J>K5?e9=EjrDL*4!X_FNm0EW$yMnZe2R ztzIGLr}UMezRC@4z~FEvni|gHxoOOJzT4=V-b>R(nk+tL3>Haq!asePxFjGCe$)NF zZ?4xCVdG>*wB&5*DSy0V;!|S9m~MQ%5ex5in&-U(wc}CZP?k?mDhhkRHeGbumJBN@ zkC~Anh!+NeNKuqAXGCEU@=Hu>)QRa?21({Vs1ynJa=k{2?q`UBK3=GMnS?1AASly_2w#4)Un+V{navw&{S;IP3Be-SwK^s3pysua0D&{q~duQJmH(nDQ+Ws=QpA z_Haecj1f8R?s_4kZP1A-SCFa9?^zqH=Z%QE403Lb!--NR_EOS1r?#pG?@n!8c_SA) z26<^OOrcjzUKU(2?$8_;j5t5_8(vmm$+vjU94tLHoDFhQKSoTjt9mb2G|3oo&6STu z3+#m+j4Hi{&{6=^Jv^cn`RWaJ54>2p4TlPwIZa?61oWx_8!YfW(PflYl<^d3$@PU< z(18ohxxg30BH2!~v$p92F|{!E*eV$r7sH5O(~w#nx(;icxA;DPM!s=i^U zTHtn-r;KlN5w;0!qGVQ*X$AR&@=(9`1Z=j4==#$B+hE^qz);v{3B&B}(6}~ideQ(D zQm|!~&~im(E6is53VzyWbPo-tdA+#P_Mm&=mlDbVA&T&JoI_-x;~X}`yHi=Vz_Va% zNT9u4Y48cBn>JXOp^EEmpf*uK5bBhoTR|SCnyVYF1MUubh36c?zy*cU$_+-;^yd!} zDr!>ZQ_`$bJAIlA|G0gUnAN<^-dNp~SK zCzFg96Br9dTnGF{SI~0#+0QA1R!#SC!48hUwTQ(<-gKUjKk15#VLwoY_1v4M8K~Xlkxs;)UjQ(kw8!XkjU~+W>Yz!mtV`K5_w;Gtm*JsfD z4mP8a($*Z>Jiy4R8nbNF_;4TaCkZn{GYukYbVg+EgsB=nqVsA=b1Lb~lfHsMx&mk3 z+=*t9@8O+-PsAPfww>l1OIdgJzWSK%*0$rNyYq&Fj)k!V&J-tzXopozJj-$|$FuJQ z<7ltmdb@6{h-`roVA9>PAV^8v9ZVX&Z0bngdFZlxCg^CbT6|1kh~# z`CSRNxvxW%{8*q=;9H~}t(E-FDIfZHOO&UuXWA3{+^E|Ayc2aqyXJW+**5Ck^nSZ6 zIHBfGmZ-+2TGc~2o=_Z*^kmHwe#`0mvkl$0p^Tv$?#*eU*aMuL8#jp-EDpBEh6qVC z>bvj@s^wSu8!HQ=;4&(+wQ_th;{lCJNsE@TQuT#;nC5iFAad~n#n}`pwx}6d5dVF+ z?k#O3FH5*esSqMzSw=_wNV8zX&B3V?cS5u*^y*B5TSIyD8FWYBc1~b&ht&ZIceLiU zOzQLsB*1BExaJh;N}-%d*d2(cujskzY|NAv#NDaMPFx)SFMPlj5rsVa0_vF9iFzV zgIAV`bN{(QrHd(wzF%K8I7oTh2rk!5l>;CC2p;uU+x;_cym<}`VPi+J;)azn^CmZK zn_OzuD$mAxXiM)Y>@C)JPhWNsxODaRsN@vY2w6tG?<`2CoX6Ov>xTht&bYnx%7yHJ&jml9kEqeH3g)!FRG7QTF$=3!;9+UQUd z#}hVKWQ}w`NkO|125`rM8QoE5*hF?KdP~!E?fhTyuBv7TUfs#ho7u^bAsMQF>bc`Z z-fzlGj48BY);&>llFUEaMCVjZegzWPJIWDDtf#h&tzgWYo2kknYAapzqa%>XAC-vU zQj@>II%l~x0VdzN2s=7#*$F+?At+2N~P%ZCZAhee_@bSy!r%IGdB`n(L z%2vN&)VP=;>3;f4IeSJQaArBF;#53MPh9CJb~-bWI~$w#_$Mre??}plYedt!_?KwB zdllK}SUc9f*^{^qu24S^!PUvtay;F#Lwpai_%n31GNvMO+7`TAOd24+hBY_pPk*k_ zF6@rJ5+!klgKN(}RHEG<)$hYv9Ge;>mDls-n4a14!4}Y!p6*CkYFw*b{d)sUw!<03 z=-Cbzl6JCWx+fj~<6C?6vL6(kPXgpqh21Hx;qIdWmyE}Yoril*ntY2NmC~aeFENc9vj;uBF1-;3HoZN;+Bo)j6>dr5$UJI3vB35 zMn%5*&3=$jjK}_N)qtNYoxVmSK5f74IR$a$%P#5(eK~zN#5&`$sz&x+G;#IrK1A^L z?h#gTZ)4;x6%(~fD`P7=z!{8G_Y=9XT)OdxK7{oiT6{W((~_sewFn;-B<;G`eKDATufC$= zektGlzcWs7|EhP%KxW4D9(r!65GxW~q|dCG{Rj^9!xkBAnV)u6C<=Nl2ozky%Fyi6Bz9*bW;GXsxUzro3t5s(9 zt`5vNUetoo%!3@+~6S*lH^LYL4=1YfQR`_9m}meo#?n zT$XFqZ`?HgGNaX7uu&qr-X$YFxZYU-{sYyOm96dP@vn9+HNNZ*=b5fNy+Bj5a^Qs| z!Tw(HI%Pq^+P@pvYAqOejs2bSMJ9I88^QJL@?frY)!)QkrP=8ZG)I-f#|??>hs`nU z`o)*O`Cl!X`%C-k-Veg&_qiZ`Gv(Xq>@2kVXbFfpL~YP|TD#alVbY;xZ+ z-D3B*w2o~?WzjcpF|*J2Yx^aqmqdK{ARV)&mz&Hun{4&V{{p+3+~uby#y4Q95{*?g wj7{9=6OF=$|MY{#W%mE$cX}5m%znK5*<;wchJqI#fS)}c2X@oHKl01}0rOv0&&a[a.length-1])&&(6===i[0]||2===i[0])){o=0;continue}if(3===i[0]&&(!a||i[1]>a[0]&&i[1]0;)r=Math.random()*t|0,n=e[--t],e[t]=e[r],e[r]=n}function m(e,t,n){return Math.max(e,Math.min(t,n))}function g(e){return e%2==0?e:e+1}function y(e){for(var t=0,n=0;n1;--t)if(e%t==0)return[t,e/t];return[1,e]}function I(e,t){return t<=e.length?e:e+" ".repeat(t-e.length)}function C(e,t,n){return void 0===t&&(t=function(e){return 0}),new Promise(function(r,a){var i=0,o=function(){if(e())r();else{var s=t(++i);null!=n&&i>=n?a():setTimeout(o,s)}};o()})}function P(e,t){for(var n=1,r=-1,a=0;a=0)n*=e[a];else if(-1===e[a]){if(-1!==r)throw Error("Shapes can only have 1 implicit size. Found -1 at dim "+r+" and dim "+a);r=a}else if(e[a]<0)throw Error("Shapes can not be < 0. Found "+e[a]+" at dim "+a);if(-1===r){if(t>0&&t!==n)throw Error("Size("+t+") must match the product of shape "+e);return e}if(0===n)throw Error("Cannot infer the missing size in ["+e+"] when there are 0 elements");if(t%n!=0)throw Error("The implicit shape can't be a fractional number. Got "+t+" / "+n);var i=e.slice();return i[r]=t/n,i}function A(e,t){for(var n=[],r=[],a=0,i=0;ii)&&1===e[i]&&(n.push(e[i]),r.push(i)),t[a]<=i&&a++}1!==e[i]&&(n.push(e[i]),r.push(i))}return{newShape:n,keptDims:r}}function T(e,t){var n=null;if(null==e||"float32"===e)n=new Float32Array(t);else if("int32"===e)n=new Int32Array(t);else{if("bool"!==e)throw new Error("Unknown data type "+e);n=new Uint8Array(t)}return n}function M(e,t,n){if("float32"===t)for(var r=0;r=0;--r)n[r]=n[r+1]*e[r+1];return n}function V(e,t,n){return function(e,t){return e instanceof Float32Array&&"float32"===t||e instanceof Int32Array&&"int32"===t||e instanceof Uint8Array&&"bool"===t}(e,t)?e:(Array.isArray(e)&&(e=_(e)),function(e,t,n){if(null==t||"float32"===t||"complex64"===t)return new Float32Array(e);if("int32"===t)return n&&R(e,t),new Int32Array(e);if("bool"===t){for(var r=new Uint8Array(e.length),a=0;a1)for(var l=0;lK){var c=X*s,f=Array.from(t.subarray(0,c)),p=Array.from(t.subarray(u-X*s,u));return"complex64"===r&&(f=Z(f),p=Z(p)),["["+f.map(function(e,t){return J(e,i[t])}).join(", ")+", ..., "+p.map(function(e,t){return J(e,i[u-X+t])}).join(", ")+"]"]}return["["+("complex64"===r?Z(t):Array.from(t)).map(function(e,t){return J(e,i[t])}).join(", ")+"]"]}var h=n.slice(1),d=a.slice(1),m=a[0]*s,g=[];if(u>K){for(var y=0;y {...}) to avoid memory leaks.");return this.keepTensors.add(e.id),e},e.prototype.startScope=function(e,t){void 0===t&&(t=!1),t&&0===this.gradientScopeCount&&(this.activeTape=[]),t&&this.gradientScopeCount++;var n={track:[],name:"unnamed scope"};e&&(n.name=e),this.scopeStack.push(n),this.activeScope=n},e.prototype.endScope=function(e,t){var n=this;void 0===t&&(t=!1),t&&(this.gradientScopeCount--,0===this.gradientScopeCount&&(this.activeTape=null));var r=new Set(this.keepTensors),a=se(e);a.forEach(function(e){return r.add(e.id)});for(var i=0;i0,"gradients() received an empty list of xs."),this.tidy("gradients",function(){var i=e();b(i instanceof re,"The result y returned by f() must be a tensor.");var o=function(e,t,n){for(var r={},a={},i=0;i=0;i--)for(o=(d=e[i]).inputs,c=0;c0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");var s={};return s[i.id]=null==n?function(e){var t=U(E(e),"float32");return re.make(e,{values:t})}(i.shape):n,function(e,t){for(var n=function(n){var r=t[n],a=[];if(r.outputs.forEach(function(t){var n=e[t.id];if(null!=n)a.push(n);else{var r=re.make(t.shape,{values:W(t.size,t.dtype)},t.dtype);a.push(r)}}),null==r.gradient)throw new Error("Cannot compute gradient: gradient function not found for "+r.name+".");var i=r.gradient(1===r.outputs.length?a[0]:a);for(var o in r.inputs){if(!(o in i))throw new Error("Cannot backprop through input "+o+". Available gradients found: "+Object.keys(i)+".");var s=i[o](),u=r.inputs[o];if(!N(s.shape,u.shape))throw new Error("Error in gradient for op "+r.name+". The gradient of input '"+o+"' has shape '"+s.shape+"', which does not match the shape of the input '"+u.shape+"'");if(null==e[u.id])e[u.id]=s;else{var l=e[u.id];e[u.id]=l.add(s),l.dispose()}}},r=t.length-1;r>=0;r--)n(r)}(s,o),{value:i,grads:t.map(function(e){return s[e.id]})}},!0)},e.prototype.customGrad=function(e){var t=this;return b(B(e),"The f passed in customGrad(f) must be a function."),function(){for(var n,r,a=[],i=0;i {op();...}); to avoid memory leaks.");return this.activeScope.track.push(e),e},e.nextTensorId=0,e.nextVariableId=0,e}();!function(e){e[e.NUMBER=0]="NUMBER",e[e.BOOLEAN=1]="BOOLEAN",e[e.STRING=2]="STRING"}(ue||(ue={}));var ce,fe=[{name:"DEBUG",type:ue.BOOLEAN},{name:"IS_BROWSER",type:ue.BOOLEAN},{name:"WEBGL_LAZILY_UNPACK",type:ue.BOOLEAN},{name:"WEBGL_CPU_FORWARD",type:ue.BOOLEAN},{name:"WEBGL_PACK_BATCHNORMALIZATION",type:ue.BOOLEAN},{name:"WEBGL_CONV_IM2COL",type:ue.BOOLEAN},{name:"WEBGL_MAX_TEXTURE_SIZE",type:ue.NUMBER},{name:"WEBGL_PAGING_ENABLED",type:ue.BOOLEAN},{name:"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",type:ue.NUMBER},{name:"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",type:ue.BOOLEAN},{name:"WEBGL_VERSION",type:ue.NUMBER},{name:"WEBGL_RENDER_FLOAT32_ENABLED",type:ue.BOOLEAN},{name:"WEBGL_DOWNLOAD_FLOAT_ENABLED",type:ue.BOOLEAN},{name:"WEBGL_FENCE_API_ENABLED",type:ue.BOOLEAN},{name:"WEBGL_SIZE_UPLOAD_UNIFORM",type:ue.NUMBER},{name:"BACKEND",type:ue.STRING},{name:"EPSILON",type:ue.NUMBER},{name:"PROD",type:ue.BOOLEAN},{name:"TENSORLIKE_CHECK_SHAPE_CONSISTENCY",type:ue.BOOLEAN}];function pe(e){try{if(null!=h(e))return!0}catch(e){return!1}return!1}var he="tfjsflags";function de(){var e={};if("undefined"==typeof window||void 0===window.location||void 0===window.location.search)return e;var t=function(e){var t={};return window.location.search.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,function(e){for(var n=[],r=1;r0&&!function(){var e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))}();if("HAS_WEBGL"===t)return this.get("WEBGL_VERSION")>0;if("WEBGL_VERSION"===t)return pe(2)?2:pe(1)?1:0;if("WEBGL_RENDER_FLOAT32_ENABLED"===t)return function(e){if(0===e)return!1;var t=h(e);if(1===e){if(!me(t,"OES_texture_float"))return!1}else if(!me(t,"EXT_color_buffer_float"))return!1;return ge(t,e)}(this.get("WEBGL_VERSION"));if("WEBGL_DOWNLOAD_FLOAT_ENABLED"===t)return function(e){if(0===e)return!1;var t=h(e);if(1===e){if(!me(t,"OES_texture_float"))return!1;if(!me(t,"WEBGL_color_buffer_float"))return!1}else if(!me(t,"EXT_color_buffer_float"))return!1;return ge(t,e)}(this.get("WEBGL_VERSION"));if("WEBGL_FENCE_API_ENABLED"===t)return function(e){return 2===e&&null!=h(e).fenceSync}(this.get("WEBGL_VERSION"));if("WEBGL_SIZE_UPLOAD_UNIFORM"===t)return this.get("WEBGL_RENDER_FLOAT32_ENABLED")?4:0;if("TEST_EPSILON"===t)return 32===this.backend.floatPrecision()?.001:.1;if("EPSILON"===t)return 32===this.backend.floatPrecision()?1e-7:.001;if("PROD"===t)return!1;if("TENSORLIKE_CHECK_SHAPE_CONSISTENCY"===t)return!this.get("PROD");throw new Error("Unknown feature "+t+".")},t.prototype.setFeatures=function(e){this.features=Object.assign({},e)},t.prototype.reset=function(){this.features=de(),null!=this.globalEngine&&(this.globalEngine=null)},Object.defineProperty(t.prototype,"backend",{get:function(){return this.engine.backend},enumerable:!0,configurable:!0}),t.prototype.findBackend=function(e){return e in this.registry?this.registry[e].backend:null},t.prototype.registerBackend=function(e,t,n,r){var a=this;if(void 0===n&&(n=1),e in this.registry)return console.warn(e+" backend was already registered. Reusing existing backend"),null!=r&&r(function(){return a.engine}),!1;try{var i=t();return i.setDataMover({moveData:function(e){return a.engine.moveData(e)}}),this.registry[e]={backend:i,priority:n},!0}catch(t){return console.warn("Registration of backend "+e+" failed"),console.warn(t.stack||t.message),!1}},t.prototype.removeBackend=function(e){if(!(e in this.registry))throw new Error(e+" backend not found in registry");this.registry[e].backend.dispose(),delete this.registry[e]},Object.defineProperty(t.prototype,"engine",{get:function(){return this.initEngine(),this.globalEngine},enumerable:!0,configurable:!0}),t.prototype.initEngine=function(){var e=this;if(null==this.globalEngine){this.backendName=this.get("BACKEND");var t=this.findBackend(this.backendName);this.globalEngine=new le(t,!1,function(){return e.get("DEBUG")})}},t}(),ve=function(){var t=function(){var t;if("undefined"!=typeof window)t=window;else{if(void 0===e)throw new Error("Could not find a global object");t=e}return t}();return null==t.ENV&&(t.ENV=new ye(de()),ne(function(){return t.ENV.engine})),t.ENV}(),be=Object.freeze({Environment:ye,ENV:ve});function we(e){return b(B(e),"The f passed in grad(f) must be a function"),function(t,n){return b(t instanceof re,"The x passed in grad(f)(x) must be a tensor"),b(null==n||n instanceof re,"The dy passed in grad(f)(x, dy) must be a tensor"),ve.engine.tidy(function(){var r=ve.engine.gradients(function(){return e(t)},[t],n),a=r.value,i=r.grads;return null!=n&&w(a.shape,n.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),Oe(i),i[0]})}}function xe(e){return b(B(e),"The f passed in grads(f) must be a function"),function(t,n){return b(Array.isArray(t)&&t.every(function(e){return e instanceof re}),"The args passed in grads(f)(args) must be an array of tensors"),b(null==n||n instanceof re,"The dy passed in grads(f)(args, dy) must be a tensor"),ve.engine.tidy(function(){var r=ve.engine.gradients(function(){return e.apply(void 0,t)},t,n),a=r.value,i=r.grads;return null!=n&&w(a.shape,n.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Oe(i),i})}}function _e(e){return b(B(e),"The f passed in valueAndGrad(f) must be a function"),function(t,n){b(t instanceof re,"The x passed in valueAndGrad(f)(x) must be a tensor"),b(null==n||n instanceof re,"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");var r=ve.engine.gradients(function(){return e(t)},[t],n),a=r.grads,i=r.value;return Oe(a),{grad:a[0],value:i}}}function Ee(e){return b(B(e),"The f passed in valueAndGrads(f) must be a function"),function(t,n){b(Array.isArray(t)&&t.every(function(e){return e instanceof re}),"The args passed in valueAndGrads(f)(args) must be array of tensors"),b(null==n||n instanceof re,"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");var r=ve.engine.gradients(function(){return e.apply(void 0,t)},t,n);return null!=n&&w(r.value.shape,n.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Oe(r.grads),r}}function Ne(e,t){if(b(B(e),"The f passed in variableGrads(f) must be a function"),b(null==t||Array.isArray(t)&&t.every(function(e){return e instanceof ae}),"The varList passed in variableGrads(f, varList) must be an array of variables"),null==t)for(var n in t=[],ve.engine.registeredVariables)t.push(ve.engine.registeredVariables[n]);var r=t.length;b((t=t.filter(function(e){return e.trainable})).length>0,"variableGrads() expects at least one of the input variables to be trainable, but none of the "+r+" variables is trainable.");var a=ve.engine.gradients(e,t,null,!0),i=a.value,o=a.grads;b(o.some(function(e){return null!=e}),"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),b(0===i.rank,"The f passed in variableGrads(f) must return a scalar, but it returned a rank-"+i.rank+" tensor");var s={};return t.forEach(function(e,t){null!=o[t]&&(s[e.name]=o[t])}),{value:i,grads:s}}function Se(e){return ve.engine.customGrad(e)}function Oe(e){if(e.filter(function(e){return null==e}).length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that\n the f you passed encloses all operations that lead from x to y.")}var ke=ye.tidy,Ie=ye.keep,Ce=ye.dispose,Pe=ye.time,Ae=ye.profile;function Te(){for(var e=[],t=0;t=2*t+1||a%2==1?o.push(a):i.push(a);r.push.apply(r,i),r.push(0),r.push.apply(r,o)}return r}function De(e,t,n,r){void 0===r&&(r=!0);var a=[];r?a.push(e[0]/n):a.push(e[0]*n);for(var i=1;i=-n&&ee.rank)throw new Error("index innermost dimension length must be <= tensor rank; saw: "+t.shape[t.rank-1]+" vs. "+e.rank);if(0===e.size)throw new Error("Requested more than 0 entries, but input is empty. Input shape: "+e.shape+".");for(var n=t.shape,r=n[n.length-1],a=1,i=0;i1?t.shape[t.rank-1]:1,a=n.length,i=1,o=r;o0?a>=c[t]:a<=c[t]);a+=r[t])n+=1;return n}),[l,h,f]}function Ze(e,t,n,r,a){var i=t[a];e&1<0?Number.MIN_SAFE_INTEGER:Number.MAX_SAFE_INTEGER);var o=r[a];return i<0&&(i+=o),m(0,i,o-1)}function Qe(e,t,n,r,a){var i=t[a];e&1<0?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER);var o=r[a];return i<0&&(i+=o),n[a]>0?m(0,i,o):m(-1,i,o-1)}function et(e){var t=e;if(j(e))return[e.length];if(!Array.isArray(e))return[];for(var n=[];t instanceof Array;)n.push(t.length),t=t[0];return e instanceof Array&&ve.get("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&function e(t,n,r){if(r=r||[],t instanceof Array){b(n.length>0,function(){return"Element arr["+r.join("][")+"] should be a primitive, but is an array of "+t.length+" elements"}),b(t.length===n[0],function(){return"Element arr["+r.join("][")+"] should have "+n[0]+" elements, but has "+t.length+" elements"});for(var a=n.slice(1),i=0;i1)return vt([0],r);var a=W(Math.abs(Math.ceil((t-e)/n)),r);ta}).sort(function(e,t){return t.score-e.score}),o=[],s=0;s=0;--p)if(Ut(e,c,o[p])>=r){f=!0;break}if(!f&&(o.push(c),o.length>=n))break}return ft(o,"int32")}function Ut(e,t,n){var r=e.subarray(4*t,4*t+4),a=e.subarray(4*n,4*n+4),i=Math.min(r[0],r[2]),o=Math.min(r[1],r[3]),s=Math.max(r[0],r[2]),u=Math.max(r[1],r[3]),l=Math.min(a[0],a[2]),c=Math.min(a[1],a[3]),f=Math.max(a[0],a[2]),p=Math.max(a[1],a[3]),h=(s-i)*(u-o),d=(f-l)*(p-c);if(h<=0||d<=0)return 0;var m=Math.max(i,l),g=Math.max(o,c),y=Math.min(s,f),v=Math.min(u,p),b=Math.max(y-m,0)*Math.max(v-g,0);return b/(h+d-b)}function Wt(e,t,n){var r=Array(e.rank).fill(0),a=e.shape.slice();return t.map(function(t){a[n]=t;var i=e.slice(r,a);return r[n]+=t,i})}function qt(e,t,n,r,a){for(var i=t[t.length-1],o=[e.length/i,i],s=o[0],u=o[1],l=T(n,s*r),c=T("int32",s*r),f=0;f1&&1===o&&r.unshift(i)}return r}function Gt(e,t){for(var n=[],r=0;r1)&&n.unshift(i)}return n}function Ht(e,t){for(var n=[],r=Math.max(e.length,t.length),a=0;a1?"["+t+"]":"")+";":"uniform sampler2D "+e.name+";"});i=i.join("\n");var o,s,u=e.map(function(e){return function(e,t,n){var r=function(e){var t=e.name,n="get"+t.charAt(0).toUpperCase()+t.slice(1)+"Flat",r=E(e.shapeInfo.logicalShape);if(e.shapeInfo.isUniform)return 1===r?"float "+n+"(int index) {return "+t+";}":"\n float "+n+"(int index) {\n for (int i = 0; i < "+r+"; i++) {\n if (i == index) {\n return "+t+"[i];\n }\n }\n }\n ";var a=e.shapeInfo.texShape,i=a[0],o=a[1];return 1===o&&1===i?"\n float "+n+"(int index) {\n return sampleTexture("+t+", halfCR);\n }\n ":1===o?"\n float "+n+"(int index) {\n vec2 uv = vec2(0.5, (float(index) + 0.5) / "+i+".0);\n return sampleTexture("+t+", uv);\n }\n ":1===i?"\n float "+n+"(int index) {\n vec2 uv = vec2((float(index) + 0.5) / "+o+".0, 0.5);\n return sampleTexture("+t+", uv);\n }\n ":"\n float "+n+"(int index) {\n vec2 uv = UVfrom1D("+i+", "+o+", index);\n return sampleTexture("+t+", uv);\n }\n "}(e);return e.shapeInfo.isPacked?r+=function e(t){var n=t.shapeInfo.logicalShape;switch(n.length){case 1:return function(e){var t=e.name,n="get"+t.charAt(0).toUpperCase()+t.slice(1),r=e.shapeInfo.texShape,a=[Math.ceil(r[0]/2),Math.ceil(r[1]/2)];return"\n vec4 "+n+"(int index) {\n vec2 uv = packedUVfrom1D(\n "+a[0]+", "+a[1]+", index);\n return texture2D("+t+", uv);\n }\n "}(t);case 2:return function(e){var t=e.shapeInfo.logicalShape,n=e.name,r="get"+n.charAt(0).toUpperCase()+n.slice(1),a=e.shapeInfo.texShape,i=a[0],o=a[1];if(null!=a&&N(t,a))return"\n vec4 "+r+"(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2("+o+".0, "+i+".0);\n\n return texture2D("+n+", uv);\n }\n ";var s=[Math.ceil(a[0]/2),Math.ceil(a[1]/2)];return"\n vec4 "+r+"(int row, int col) {\n vec2 uv = packedUVfrom2D("+Math.ceil(t[1]/2)+", "+s[0]+", "+s[1]+", row, col);\n return texture2D("+n+", uv);\n }\n "}(t);case 3:return function(t){var n=t.shapeInfo.logicalShape,r=t.name,a="get"+r.charAt(0).toUpperCase()+r.slice(1),i=t.shapeInfo.texShape,o=[Math.ceil(i[0]/2),Math.ceil(i[1]/2)];if(1===n[0])return"\n "+e(fn(t,n.slice(1)))+"\n vec4 "+a+"(int b, int row, int col) {\n return "+a+"("+pn(["b","row","col"],[1,2])+");\n }\n ";var s=o[0],u=o[1],l=Math.ceil(n[2]/2);return"\n vec4 "+a+"(int b, int row, int col) {\n vec2 uv = packedUVfrom3D(\n "+s+", "+u+", "+l*Math.ceil(n[1]/2)+", "+l+", b, row, col);\n return texture2D("+r+", uv);\n }\n "}(t);case 4:return function(e){var t=e.shapeInfo.logicalShape,n=e.name,r="get"+n.charAt(0).toUpperCase()+n.slice(1),a=e.shapeInfo.texShape,i=[Math.ceil(a[0]/2),Math.ceil(a[1]/2)],o=i[0],s=i[1],u=Math.ceil(t[3]/2),l=u*Math.ceil(t[2]/2);return"\n vec4 "+r+"(int b2, int b, int row, int col) {\n vec2 uv = packedUVfrom4D(\n "+o+", "+s+", "+l*t[1]+",\n "+l+", "+u+", b2, b, row, col);\n return texture2D("+n+", uv);\n }\n "}(t);default:throw new Error("Packed "+n.length+"-D input sampling is not yet supported")}}(e):r+=function e(t){var n=t.shapeInfo.logicalShape;switch(n.length){case 0:return function(e){var t=e.name,n="get"+t.charAt(0).toUpperCase()+t.slice(1);return e.shapeInfo.isUniform?"float "+n+"() {return "+t+";}":"\n float "+n+"() {\n return sampleTexture("+t+", halfCR);\n }\n "}(t);case 1:return function(e){var t=e.name,n="get"+t.charAt(0).toUpperCase()+t.slice(1);return"\n float "+n+"(int index) {\n return "+n+"Flat(index);\n }\n "}(t);case 2:return function(t){var n=t.shapeInfo.logicalShape,r=t.name,a="get"+r.charAt(0).toUpperCase()+r.slice(1),i=t.shapeInfo.texShape;if(null!=i&&N(n,i)){var o=i[0];return"\n float "+a+"(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2("+i[1]+".0, "+o+".0);\n return sampleTexture("+r+", uv);\n }\n "}var s=A(n),u=s.newShape,l=s.keptDims,c=u;if(c.lengths||o.length>0),c=function(e){for(var t=0;t=1?"coords = 0;":s.map(function(e){return"coords["+(e+u)+"] = 0;"}).join("\n"))+"\n return get"+n+"("+(i<2&&a>0?"coords":e.shapeInfo.logicalShape.map(function(e,t){return"coords["+(t+u)+"]"}).join(", "))+");\n }\n "}(e,t,a,i);var p=E(e.shapeInfo.logicalShape),h="";l&&c&&(h="\n int mainPart = index / "+p+";\n index -= mainPart * "+p+";\n ");var d=t.texShape;if(f)return 1===p?"float "+i+"() {return "+r+";}":"\n float "+i+"() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+d[0]+", "+d[1]+"));\n int index = resTexRC.x * "+d[1]+" + resTexRC.y;\n "+h+"\n return get"+a+"Flat(index);\n }\n ";var m=e.shapeInfo.texShape;return N(m,d)?"\n float "+i+"() {\n return sampleTexture("+r+", resultUV);\n }\n ":"\n float "+i+"() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+d[0]+", "+d[1]+"));\n int index = resTexRC.x * "+d[1]+" + resTexRC.y;\n "+h+"\n int texR = index / "+m[1]+";\n int texC = index - texR * "+m[1]+";\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+m[1]+".0, "+m[0]+".0);\n\n return sampleTexture("+r+", uv);\n }\n "}(e,t,n)),r}(e,t,r)}).join("\n"),l=t.texShape,c=un;return t.isPacked?(o=function(e,t){switch(e.length){case 0:return"\n int getOutputCoords() {\n return 0;\n }\n ";case 1:return function(e,t){var n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)];return 1===t[0]?"\n int getOutputCoords() {\n return 2 * int(resultUV.x * "+n[1]+".0);\n }\n ":1===t[1]?"\n int getOutputCoords() {\n return 2 * int(resultUV.y * "+n[0]+".0);\n }\n ":"\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n return resTexRC.x * "+n[1]+" + resTexRC.y;\n }\n "}(0,t);case 2:return function(e,t){var n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)];if(N(e,t))return"\n ivec2 getOutputCoords() {\n return 2 * ivec2(resultUV.yx * vec2("+n[0]+", "+n[1]+"));\n }\n ";var r=Math.ceil(e[1]/2);return"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n\n int index = resTexRC.x * "+n[1]+" + resTexRC.y;\n int r = 2 * (index / "+r+");\n int c = imod(index, "+r+") * 2;\n\n return ivec2(r, c);\n }\n "}(e,t);case 3:return function(e,t){var n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)],r=Math.ceil(e[2]/2),a=r*Math.ceil(e[1]/2);return"\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n int index = resTexRC.x * "+n[1]+" + resTexRC.y;\n\n int b = index / "+a+";\n index -= b * "+a+";\n\n int r = 2 * (index / "+r+");\n int c = imod(index, "+r+") * 2;\n\n return ivec3(b, r, c);\n }\n "}(e,t);case 4:return function(e,t){var n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)],r=Math.ceil(e[3]/2),a=r*Math.ceil(e[2]/2),i=a*e[1];return"\n ivec4 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n int index = resTexRC.x * "+n[1]+" + resTexRC.y;\n\n int b2 = index / "+i+";\n index -= b2 * "+i+";\n\n int b = index / "+a+";\n index -= b * "+a+";\n\n int r = 2 * (index / "+r+");\n int c = imod(index, "+r+") * 2;\n\n return ivec4(b2, b, r, c);\n }\n "}(e,t);default:throw new Error(e.length+"-D packed output coordinate fetching is not yet supported")}}(t.logicalShape,l),s=sn):(o=function(e,t){switch(e.length){case 0:return"\n int getOutputCoords() {\n return 0;\n }\n ";case 1:return function(e,t){return 1===t[0]?"\n int getOutputCoords() {\n return int(resultUV.x * "+t[1]+".0);\n }\n ":1===t[1]?"\n int getOutputCoords() {\n return int(resultUV.y * "+t[0]+".0);\n }\n ":"\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n return resTexRC.x * "+t[1]+" + resTexRC.y;\n }\n "}(0,t);case 2:return function(e,t){return N(e,t)?"\n ivec2 getOutputCoords() {\n return ivec2(resultUV.yx * vec2("+t[0]+", "+t[1]+"));\n }\n ":1===e[1]?"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n return ivec2(index, 0);\n }\n ":1===e[0]?"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n return ivec2(0, index);\n }\n ":"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n int r = index / "+e[1]+";\n int c = index - r * "+e[1]+";\n return ivec2(r, c);\n }\n "}(e,t);case 3:return function(e,t){var n=tn(["r","c","d"],e);return"\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n "+n+"\n return ivec3(r, c, d);\n }\n "}(e,t);case 4:return function(e,t){var n=tn(["r","c","d","d2"],e);return"\n ivec4 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n "+n+"\n return ivec4(r, c, d, d2);\n }\n "}(e,t);case 5:return function(e,t){var n=tn(["r","c","d","d2","d3"],e);return"\n ivec5 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx * vec2("+t[0]+",\n "+t[1]+"));\n\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n\n "+n+"\n\n ivec5 outShape = ivec5(r, c, d, d2, d3);\n return outShape;\n }\n "}(e,t);case 6:return function(e,t){var n=tn(["r","c","d","d2","d3","d4"],e);return"\n ivec6 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n\n "+n+"\n\n ivec6 result = ivec6(r, c, d, d2, d3, d4);\n return result;\n }\n "}(e,t);default:throw new Error(e.length+"-D output sampling is not yet supported")}}(t.logicalShape,l),s=on),a&&(c+=ln),[c,an,s,i,o,u,n].join("\n")}var an="\n float sampleTexture(sampler2D textureSampler, vec2 uv) {\n return texture2D(textureSampler, uv).r;\n }\n",on="\n void setOutput(float val) {\n gl_FragColor = vec4(val, 0, 0, 0);\n }\n",sn="\n void setOutput(vec4 val) {\n gl_FragColor = val;\n }\n",un="\n precision highp float;\n precision highp int;\n varying vec2 resultUV;\n const vec2 halfCR = vec2(0.5, 0.5);\n\n struct ivec5\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n };\n\n struct ivec6\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n int v;\n };\n\n bool isNaN(float val) {\n return (val < 1.0 || 0.0 < val || val == 0.0) ? false : true;\n }\n\n bool hasNaN(vec4 values) {\n vec4 v1 = values * values;\n vec4 v2 = values * values;\n return any(notEqual(v1, v2));\n }\n\n float getNaN(vec4 values) {\n return dot(vec4(1), values);\n }\n\n int round(float value) {\n return int(floor(value + 0.5));\n }\n\n int imod(int x, int y) {\n return x - y * (x / y);\n }\n\n //Based on the work of Dave Hoskins\n //https://www.shadertoy.com/view/4djSRW\n #define HASHSCALE1 443.8975\n float random(float seed){\n vec2 p = resultUV * seed;\n vec3 p3 = fract(vec3(p.xyx) * HASHSCALE1);\n p3 += dot(p3, p3.yzx + 19.19);\n return fract((p3.x + p3.y) * p3.z);\n }\n\n \nvec2 UVfrom1D(int texNumR, int texNumC, int index) {\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\nvec2 packedUVfrom1D(int texNumR, int texNumC, int index) {\n int texelIndex = index / 2;\n int texR = texelIndex / texNumC;\n int texC = texelIndex - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom2D(int texNumR, int texNumC, int numC, int row, int col) {\n int index = row * numC + col;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\nvec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR,\n int texNumC, int row, int col) {\n int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = texelIndex / texNumC;\n int texC = texelIndex - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom3D(int texNumR, int texNumC, int stride0,\n int stride1, int row, int col, int depth) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * stride0 + col * stride1 + depth;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\nvec2 packedUVfrom3D(int texNumR, int texNumC,\n int texelsInBatch, int texelsInLogicalRow, int b,\n int row, int col) {\n int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom4D(int texNumR, int texNumC, int stride0,\n int stride1, int stride2, int row, int col, int depth,\n int depth2) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * stride0 + col * stride1 + depth * stride2 + depth2;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\nvec2 packedUVfrom4D(int texNumR, int texNumC, int texelsInBatch2,\n int texelsInBatch, int texelsInLogicalRow, int b2, int b,\n int row, int col) {\n int index = b2 * texelsInBatch2 + b * texelsInBatch +\n (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom5D(int texNumR, int texNumC, int stride0,\n int stride1, int stride2, int stride3, int row, int col, int depth,\n int depth2, int depth3) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * stride0 + col * stride1 +\n depth * stride2 + depth2 * stride3 + depth3;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom6D(int texNumR, int texNumC, int stride0,\n int stride1, int stride2, int stride3, int stride4,\n int row, int col, int depth, int depth2, int depth3, int depth4) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * stride0 + col * stride1 + depth * stride2 + depth2 *\n stride3 + depth3 * stride4 + depth4;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n",ln="\n float getChannel(vec4 frag, vec2 innerDims) {\n vec2 modCoord = mod(innerDims, 2.);\n return modCoord.x == 0. ?\n (modCoord.y == 0. ? frag.r : frag.g) :\n (modCoord.y == 0. ? frag.b : frag.a);\n }\n float getChannel(vec4 frag, int dim) {\n float modCoord = mod(float(dim), 2.);\n return modCoord == 0. ? frag.r : frag.g;\n }\n";function cn(e){if(e<=1)return"int";if(2===e)return"ivec2";if(3===e)return"ivec3";if(4===e)return"ivec4";if(5===e)return"ivec5";if(6===e)return"ivec6";throw Error("GPU for rank "+e+" is not yet supported")}function fn(e,t){var n=JSON.parse(JSON.stringify(e));return n.shapeInfo.logicalShape=t,n}function pn(e,t){return t.map(function(t){return e[t]}).join(", ")}function hn(e,t){if(1===e)return""+t;if(2===e)return t+".y";if(3===e)return t+".z";if(4===e)return t+".w";throw Error("Cumulative sum for rank "+e+" is not yet supported")}var dn,mn,gn=function(){function e(e,t,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=e,this.blockSize=t,this.dataFormat=n,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int h = "+this.getHeightCoordString()+";\n int w = "+this.getWidthCoordString()+";\n int d = "+this.getDepthCoordString()+";\n\n int in_h = h / "+t+";\n int offset_h = imod(h, "+t+");\n int in_w = w / "+t+";\n int offset_w = imod(w, "+t+");\n int offset_d = (offset_h * "+t+" + offset_w) *\n "+this.getOutputDepthSize()+";\n int in_d = d + offset_d;\n\n float result = "+this.getInputSamplingString()+";\n setOutput(result);\n }\n "}return e.prototype.getHeightCoordString=function(){return"NHWC"===this.dataFormat?"coords[1]":"coords[2]"},e.prototype.getWidthCoordString=function(){return"NHWC"===this.dataFormat?"coords[2]":"coords[3]"},e.prototype.getDepthCoordString=function(){return"NHWC"===this.dataFormat?"coords[3]":"coords[1]"},e.prototype.getOutputDepthSize=function(){return"NHWC"===this.dataFormat?this.outputShape[3]:this.outputShape[1]},e.prototype.getInputSamplingString=function(){return"NHWC"===this.dataFormat?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"},e}(),yn=function(e,t,n){this.variableNames=["real","imag"];var r=t[1];this.outputShape=t;var a=n?"2.0 * "+Math.PI:"-2.0 * "+Math.PI,i=n?r+".0":"1.0";this.userCode="\n const float exponentMultiplier = "+a+";\n\n float unaryOpComplex(float real, float expR, float imag, float expI) {\n "+e+"\n }\n\n float mulMatDFT(int batch, int index) {\n float indexRatio = float(index) / float("+r+");\n float exponentMultiplierTimesIndexRatio =\n exponentMultiplier * indexRatio;\n\n float result = 0.0;\n\n for (int i = 0; i < "+r+"; i++) {\n // x = (-2|2 * PI / N) * index * i;\n float x = exponentMultiplierTimesIndexRatio * float(i);\n float expR = cos(x);\n float expI = sin(x);\n float real = getReal(batch, i);\n float imag = getImag(batch, i);\n\n result +=\n unaryOpComplex(real, expR, imag, expI) / "+i+";\n }\n\n return result;\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n setOutput(mulMatDFT(coords[0], coords[1]));\n }\n "};function vn(e,t){return[t,e]}function bn(e,t){return e*t}function wn(e,t,n){var r=function(e,t){if(e%t!=0)throw new Error("unpackedSize ("+e+") must be a multiple of "+t);return e/t}(e.length,n);if(t.length= "+r);for(var a=0,i=0;in||t>n)throw r="["+e+"x"+t+"]",new Error("Requested texture size "+r+" greater than WebGL maximum on this browser / GPU ["+n+"x"+n+"].")}function Fn(e){return Yn(e,function(){return e.createFramebuffer()},"Unable to create WebGLFramebuffer.")}function Vn(e,t,n,r,a,i,o){var s=e.getAttribLocation(t,n);return-1!==s&&(En(e,function(){return e.bindBuffer(e.ARRAY_BUFFER,r)}),En(e,function(){return e.vertexAttribPointer(s,a,e.FLOAT,!1,i,o)}),En(e,function(){return e.enableVertexAttribArray(s)}),!0)}function Un(e,t,n){Jn(e,n),En(e,function(){return e.activeTexture(e.TEXTURE0+n)}),En(e,function(){return e.bindTexture(e.TEXTURE_2D,t)})}function Wn(e,t,n){return Yn(e,function(){return e.getUniformLocation(t,n)},'uniform "'+n+'" not present in program.')}function qn(e,t,n){return e.getUniformLocation(t,n)}function $n(e,t,n,r,a){En(e,function(){return Un(e,n,a)}),En(e,function(){return e.uniform1i(r,a)})}function Gn(e,t,n){En(e,function(){return e.bindFramebuffer(e.FRAMEBUFFER,n)}),En(e,function(){return e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0)})}function Hn(e,t){En(e,function(){return e.bindFramebuffer(e.FRAMEBUFFER,t)}),En(e,function(){return e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0)})}function Kn(e){var t=e.checkFramebufferStatus(e.FRAMEBUFFER);if(t!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+Xn(e,t))}function Xn(e,t){switch(t){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return"unknown error "+t}}function Yn(e,t,n){var r=En(e,function(){return t()});if(null==r)throw new Error(n);return r}function Jn(e,t){var n=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=t+e.TEXTURE0;if(rn)throw new Error("textureUnit must be in [gl.TEXTURE0, gl.TEXTURE"+n+"].")}function Zn(e,t){void 0===t&&(t=!1);var n=ve.get("WEBGL_MAX_TEXTURE_SIZE");if(t&&(n*=2,e=e.map(function(t,n){return n>=e.length-2?g(e[n]):e[n]})),2!==e.length){var r=A(e);e=r.newShape}var a=E(e);return e.length<=1&&a<=n?[a,1]:2===e.length&&e[0]<=n&&e[1]<=n?e:3===e.length&&e[0]*e[1]<=n&&e[2]<=n?[e[0]*e[1],e[2]]:3===e.length&&e[0]<=n&&e[1]*e[2]<=n?[e[0],e[1]*e[2]]:4===e.length&&e[0]*e[1]*e[2]<=n&&e[3]<=n?[e[0]*e[1]*e[2],e[3]]:4===e.length&&e[0]<=n&&e[1]*e[2]*e[3]<=n?[e[0],e[1]*e[2]*e[3]]:k(a)}function Qn(e){return e%2==0}function er(e,t){if(N(e=e.slice(-2),t=t.slice(-2)))return!0;if(!e.length||!t.length)return!0;if(0===e[0]||0===e[1]||0===t[0]||0===t[1])return!0;if(e.length!==t.length){if(N(A(e).newShape,A(t).newShape))return!0}else if(Qn(e[0])&&Qn(t[0])){if(Qn(e[1])&&Qn(t[1]))return!0;if(e[1]===t[1])return!0}return!1}var tr=Object.freeze({callAndCheck:En,enableDebugWebGLErrorChecking:Sn,checkWebGLError:On,getWebGLErrorMessage:kn,getExtensionOrThrow:In,createVertexShader:Cn,createFragmentShader:Pn,createProgram:Tn,linkProgram:Mn,validateProgram:Rn,createStaticVertexBuffer:Dn,createStaticIndexBuffer:jn,getNumChannels:Ln,createTexture:Bn,validateTextureSize:zn,createFramebuffer:Fn,bindVertexBufferToProgramAttribute:Vn,bindTextureUnit:Un,unbindTextureUnit:function(e,t){Jn(e,t),En(e,function(){return e.activeTexture(e.TEXTURE0+t)}),En(e,function(){return e.bindTexture(e.TEXTURE_2D,null)})},getProgramUniformLocationOrThrow:Wn,getProgramUniformLocation:qn,bindTextureToProgramUniformSampler:$n,bindCanvasToFramebuffer:function(e){En(e,function(){return e.bindFramebuffer(e.FRAMEBUFFER,null)}),En(e,function(){return e.viewport(0,0,e.canvas.width,e.canvas.height)}),En(e,function(){return e.scissor(0,0,e.canvas.width,e.canvas.height)})},bindColorTextureToFramebuffer:Gn,unbindColorTextureFromFramebuffer:Hn,validateFramebuffer:Kn,getFramebufferErrorMessage:Xn,getTextureShapeFromLogicalShape:Zn,isReshapeFree:er});function nr(e){return Cn(e,"\n precision highp float;\n attribute vec3 clipSpacePos;\n attribute vec2 uv;\n varying vec2 resultUV;\n\n void main() {\n gl_Position = vec4(clipSpacePos, 1);\n resultUV = uv;\n }")}function rr(e){return Dn(e,new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]))}function ar(e){return jn(e,new Uint16Array([0,1,2,2,1,3]))}function ir(e,t){var n,r,a,i,o,s,u,l=e;return 2===ve.get("WEBGL_VERSION")?(n=l.R32F,r=l.R16F,a=l.RGBA32F,i=l.RED,o=4,s=1,u=l.HALF_FLOAT):(n=e.RGBA,r=e.RGBA,a=l.RGBA,i=e.RGBA,o=4,s=4,u=null!=t?t.HALF_FLOAT_OES:null),{internalFormatFloat:n,internalFormatHalfFloat:r,internalFormatPackedFloat:a,textureFormatFloat:i,downloadTextureFormat:e.RGBA,downloadUnpackNumChannels:o,defaultNumChannels:s,textureTypeHalfFloat:u}}function or(e,t,n,r,a,i){zn(t,n);var o=Bn(e),s=e.TEXTURE_2D;return En(e,function(){return e.bindTexture(s,o)}),En(e,function(){return e.texParameteri(s,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE)}),En(e,function(){return e.texParameteri(s,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)}),En(e,function(){return e.texParameteri(s,e.TEXTURE_MIN_FILTER,e.NEAREST)}),En(e,function(){return e.texParameteri(s,e.TEXTURE_MAG_FILTER,e.NEAREST)}),En(e,function(){return e.texImage2D(s,0,r,t,n,0,a,i,null)}),En(e,function(){return e.bindTexture(e.TEXTURE_2D,null)}),o}function sr(e,t,n,r){var a=vn(t,n);return or(e,a[0],a[1],r.internalFormatFloat,r.textureFormatFloat,e.FLOAT)}function ur(e,t,n,r){var a=vn(t,n);return or(e,a[0],a[1],r.internalFormatFloat,r.textureFormatFloat,r.textureTypeHalfFloat)}function lr(e,t,n,r){var a=vn(t,n);return or(e,a[0],a[1],e.RGBA,e.RGBA,e.UNSIGNED_BYTE)}function cr(e,t,n,r){var a=xn(t,n);return or(e,a[0],a[1],r.internalFormatPackedFloat,e.RGBA,e.FLOAT)}function fr(e,t,n,r){var a=xn(t,n);return or(e,a[0],a[1],r.internalFormatHalfFloat,e.RGBA,r.textureTypeHalfFloat)}function pr(e,t,n){return En(e,function(){return e.bindBuffer(e.ARRAY_BUFFER,n)}),Vn(e,t,"clipSpacePos",n,3,20,0)&&Vn(e,t,"uv",n,2,20,12)}function hr(e,t,n){En(e,function(){return e.bindTexture(e.TEXTURE_2D,t)}),En(e,function(){return e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n)}),En(e,function(){return e.bindTexture(e.TEXTURE_2D,null)})}function dr(e,t,n,r,a,i){zn(n,r),En(e,function(){return e.bindTexture(e.TEXTURE_2D,t)}),En(e,function(){return e.texSubImage2D(e.TEXTURE_2D,0,0,0,n,r,i,e.FLOAT,a)}),En(e,function(){return e.bindTexture(e.TEXTURE_2D,null)})}function mr(e,t,n,r,a,i,o){var s,u=vn(n,r),l=u[0],c=u[1];1===o.defaultNumChannels?s=a:function(e,t,n){var r=bn(e.length,n);if(t.length= "+r);for(var a=0,i=0;i=\n "+i);for(var o=r%2==1,s=n%2==1,u=Math.floor(r/2),l=Math.floor(n/2),c=Math.ceil(r/2),f=c*Math.ceil(n/2),p=g(n)*g(r),h=0;h= "+i);for(var o=r%2==1,s=n%2==1,u=Math.floor(r/2),l=Math.floor(n/2),c=Math.ceil(r/2),f=c*Math.ceil(n/2),p=g(n)*g(r),h=0;h0?(t=this.beginQuery(),this.endQuery(),n=function(){return r.isQueryAvailable(t,ve.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}):n=function(){return!0};return{query:t,isFencePassed:n}},e.prototype.downloadMatrixFromPackedTexture=function(e,t,n,r,a,i){var o=this;return this.downloadMatrixDriver(e,function(){return xr(o.gl,t,n,r,a,i,o.textureConfig)})},e.prototype.createProgram=function(e){this.throwIfDisposed();var t=this.gl,n=Pn(t,e),r=nr(t),a=Tn(t);return En(t,function(){return t.attachShader(a,r)}),En(t,function(){return t.attachShader(a,n)}),Mn(t,a),this.autoDebugValidate&&Rn(t,a),this.vertexAttrsAreBound||(this.setProgram(a),this.vertexAttrsAreBound=pr(t,this.program,this.vertexBuffer)),a},e.prototype.deleteProgram=function(e){var t=this;this.throwIfDisposed(),e===this.program&&(this.program=null),null!=e&&En(this.gl,function(){return t.gl.deleteProgram(e)})},e.prototype.setProgram=function(e){var t=this;this.throwIfDisposed(),this.program=e,null!=this.program&&this.autoDebugValidate&&Rn(this.gl,this.program),En(this.gl,function(){return t.gl.useProgram(e)})},e.prototype.getUniformLocation=function(e,t,n){return void 0===n&&(n=!0),this.throwIfDisposed(),n?Wn(this.gl,e,t):qn(this.gl,e,t)},e.prototype.getAttributeLocation=function(e,t){var n=this;return this.throwIfDisposed(),En(this.gl,function(){return n.gl.getAttribLocation(e,t)})},e.prototype.getUniformLocationNoThrow=function(e,t){return this.throwIfDisposed(),this.gl.getUniformLocation(e,t)},e.prototype.setInputMatrixTexture=function(e,t,n){this.throwIfDisposed(),this.throwIfNoProgram(),$n(this.gl,this.program,e,t,n)},e.prototype.setOutputMatrixTexture=function(e,t,n){this.setOutputMatrixTextureDriver(e,n,t)},e.prototype.setOutputPackedMatrixTexture=function(e,t,n){this.throwIfDisposed();var r=xn(t,n),a=r[0],i=r[1];this.setOutputMatrixTextureDriver(e,a,i)},e.prototype.setOutputMatrixWriteRegion=function(e,t,n,r){this.setOutputMatrixWriteRegionDriver(n,e,r,t)},e.prototype.setOutputPackedMatrixWriteRegion=function(e,t,n,r){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")},e.prototype.debugValidate=function(){null!=this.program&&Rn(this.gl,this.program),Kn(this.gl)},e.prototype.executeProgram=function(){this.throwIfDisposed(),this.throwIfNoProgram();var e=this.gl;this.autoDebugValidate&&this.debugValidate(),En(e,function(){return e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0)})},e.prototype.blockUntilAllProgramsCompleted=function(){var e=this;this.throwIfDisposed(),En(this.gl,function(){return e.gl.finish()})},e.prototype.getQueryTimerExtension=function(){return null==this.disjointQueryTimerExtension&&(this.disjointQueryTimerExtension=In(this.gl,2===ve.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension},e.prototype.getQueryTimerExtensionWebGL2=function(){return this.getQueryTimerExtension()},e.prototype.getQueryTimerExtensionWebGL1=function(){return this.getQueryTimerExtension()},e.prototype.beginQuery=function(){if(2===ve.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var e=this.gl,t=this.getQueryTimerExtensionWebGL2(),n=e.createQuery();return e.beginQuery(t.TIME_ELAPSED_EXT,n),n}var r=this.getQueryTimerExtensionWebGL1(),a=r.createQueryEXT();return r.beginQueryEXT(r.TIME_ELAPSED_EXT,a),a},e.prototype.endQuery=function(){if(2!==ve.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var e=this.getQueryTimerExtensionWebGL1();e.endQueryEXT(e.TIME_ELAPSED_EXT)}else{var t=this.gl,n=this.getQueryTimerExtensionWebGL2();t.endQuery(n.TIME_ELAPSED_EXT)}},e.prototype.waitForQueryAndGetTime=function(e){return l(this,void 0,void 0,function(){var t=this;return c(this,function(n){switch(n.label){case 0:return[4,C(function(){return t.disposed||t.isQueryAvailable(e,ve.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))})];case 1:return n.sent(),[2,this.getQueryTime(e,ve.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))]}})})},e.prototype.getQueryTime=function(e,t){if(0===t)return null;if(2===t){var n=this.gl;return n.getQueryParameter(e,n.QUERY_RESULT)/1e6}var r=this.getQueryTimerExtensionWebGL1();return r.getQueryObjectEXT(e,r.QUERY_RESULT_EXT)/1e6},e.prototype.isQueryAvailable=function(e,t){if(0===t)return!0;if(2===t){var n=this.gl,r=this.getQueryTimerExtensionWebGL2(),a=n.getQueryParameter(e,n.QUERY_RESULT_AVAILABLE);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),a&&!this.disjoint}return a=(r=this.getQueryTimerExtensionWebGL1()).getQueryObjectEXT(e,r.QUERY_RESULT_AVAILABLE_EXT),null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),a&&!this.disjoint},e.prototype.pollFence=function(e){var t=this;return new Promise(function(n){t.addItemToPoll(function(){return e.isFencePassed()},function(){return n()})})},e.prototype.pollItems=function(){for(var e=function(e){for(var t=0,n=e.length-1,r=-1;t<=n;){var a=t+n>>1;e[a]()?(r=a,t=a+1):n=a-1}return r}(this.itemsToPoll.map(function(e){return e.isDoneFn})),t=0;t<=e;++t)(0,this.itemsToPoll[t].resolveFn)();this.itemsToPoll=this.itemsToPoll.slice(e+1)},e.prototype.addItemToPoll=function(e,t){var n=this;this.itemsToPoll.push({isDoneFn:e,resolveFn:t}),this.itemsToPoll.length>1||C(function(){return n.pollItems(),0===n.itemsToPoll.length})},e.prototype.bindTextureToFrameBuffer=function(e){this.throwIfDisposed(),Gn(this.gl,e,this.framebuffer),this.autoDebugValidate&&Kn(this.gl)},e.prototype.unbindTextureToFrameBuffer=function(){null!=this.outputTexture?(Gn(this.gl,this.outputTexture,this.framebuffer),this.autoDebugValidate&&Kn(this.gl)):Hn(this.gl,this.framebuffer)},e.prototype.downloadMatrixDriver=function(e,t){this.bindTextureToFrameBuffer(e);var n=t();return this.unbindTextureToFrameBuffer(),n},e.prototype.setOutputMatrixTextureDriver=function(e,t,n){this.throwIfDisposed();var r=this.gl;Gn(r,e,this.framebuffer),this.autoDebugValidate&&Kn(r),this.outputTexture=e,En(r,function(){return r.viewport(0,0,t,n)}),En(r,function(){return r.scissor(0,0,t,n)})},e.prototype.setOutputMatrixWriteRegionDriver=function(e,t,n,r){var a=this;this.throwIfDisposed(),En(this.gl,function(){return a.gl.scissor(e,t,n,r)})},e.prototype.throwIfDisposed=function(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")},e.prototype.throwIfNoProgram=function(){if(null==this.program)throw new Error("No GPU program is currently set.")},e}();function Nr(e,t){if(e.length!==t.length)throw Error("Binary was compiled with "+e.length+" inputs, but was executed with "+t.length+" inputs");e.forEach(function(e,n){var r=e.logicalShape,a=t[n],i=a.shape;if(!N(r,i))throw Error("Binary was compiled with different shapes than the current args. Shapes "+r+" and "+i+" must match");if(!e.isUniform||!a.isUniform){var o=e.texShape,s=a.isUniform?null:a.texData.texShape;if(!N(o,s))throw Error("Binary was compiled with different texture shapes than the current args. Shape "+o+" and "+s+" must match")}})}var Sr=function(e,t,n,r,a){void 0===r&&(r=!1),void 0===a&&(a=!1),this.variableNames=["matrixA","matrixB"],this.usesPackedTextures=!0,this.outputShape=n;var i=r?e[0]:e[1],o=Math.ceil(i/2),s=r?"i * 2, rc.x":"rc.x, i * 2",u=a?"rc.y, i * 2":"i * 2, rc.y",l=r?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],c=a?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"];this.userCode="\n const float sharedDimension = "+o+".0;\n\n vec4 dot2x2ARowBCol(ivec2 rc) {\n vec4 result = vec4(0);\n for (int i = 0; i < "+o+"; i++) {\n vec4 a = getMatrixA("+s+");\n vec4 b = getMatrixB("+u+");\n\n result += ("+l[0]+" * "+c[0]+") + ("+l[1]+" * "+c[1]+");\n }\n return result;\n }\n\n void main() {\n ivec2 rc = getOutputCoords();\n setOutput(dot2x2ARowBCol(rc));\n }\n "},Or=function(){function e(e,t,n){this.variableNames=["probs"],this.outputShape=[e,n],this.userCode="\n uniform float seed;\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n\n float r = random(seed);\n float cdf = 0.0;\n\n for (int i = 0; i < "+(t-1)+"; i++) {\n cdf += getProbs(batch, i);\n\n if (r < cdf) {\n setOutput(float(i));\n return;\n }\n }\n\n // If no other event happened, last event happened.\n setOutput(float("+(t-1)+"));\n }\n "}return e.prototype.getCustomSetupFunc=function(e){var t=this;return function(n,r){null==t.seedLoc&&(t.seedLoc=n.getUniformLocation(r,"seed")),n.gl.uniform1f(t.seedLoc,e)}},e}();function kr(e,t){return 1===t?[e]:function(e,t){return["x","y","z","w","u","v"].slice(0,t).map(function(t){return e+"."+t})}(e,t)}var Ir=function(e,t,n){if(this.variableNames=["x"],"avg"===t&&n)throw new Error("Cannot compute positions for average pool.");var r=e.filterWidth,a=e.strideHeight,i=e.strideWidth,o=e.dilationHeight,s=e.dilationWidth,u=e.effectiveFilterHeight,l=e.effectiveFilterWidth,c=e.padInfo.top,f=e.padInfo.left;this.outputShape=e.outShape;var p="avg"===t,h="0.0";if(p||(h="-1.0 / 0.0"),n)this.userCode="\n const ivec2 strides = ivec2("+a+", "+i+");\n const ivec2 pads = ivec2("+c+", "+f+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n float avgValue = 0.0;\n\n for (int wR = 0; wR < "+u+";\n wR += "+o+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+l+";\n wC += "+s+") {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= "+e.inWidth+") {\n continue;\n }\n\n float value = getX(batch, xR, xC, d);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value >= currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition = wR * "+l+" + wC;\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n ";else{var d=t+"("+t+"("+t+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"avg"===t&&(d="avgValue / count");var m=4*Math.floor(r/4),g=r%4,y="\n if ("+p+") {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = max(values, minMaxValue);\n }\n ";this.userCode="\n const ivec2 strides = ivec2("+a+", "+i+");\n const ivec2 pads = ivec2("+c+", "+f+");\n const float initializationValue = "+h+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xR, int xC, int d) {\n if (xC < 0 || xC >= "+e.inWidth+") {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xR, xC, d);\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n vec4 minMaxValue = vec4("+h+");\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wR = 0; wR < "+u+";\n wR += "+o+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+m+"; wC += 4) {\n int xC = xCCorner + wC * "+s+";\n\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n getValue(batch, xR, xC + 2 * "+s+", d),\n getValue(batch, xR, xC + 3 * "+s+", d)\n );\n\n "+y+"\n }\n\n int xC = xCCorner + "+m+";\n if ("+(1===g)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+y+"\n } else if ("+(2===g)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n initializationValue,\n initializationValue\n );\n\n "+y+"\n } else if ("+(3===g)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n getValue(batch, xR, xC + 2 * "+s+", d),\n initializationValue\n );\n\n "+y+"\n }\n }\n setOutput("+d+");\n }\n "}},Cr=function(e,t,n,r,a,i,o){void 0===o&&(o=!0),this.variableNames=["updates","indices","defaultValue"],this.outputShape=i;var s=cn(a.length),u=cn(i.length),l="";1===n?l="i":2===n&&(l="i, j");var c="getIndices("+l+")",f="";1===r?f="i":2===r&&(f="i, coords[1]");var p="getUpdates("+f+")",h=t>1?"strides[j]":"strides";this.userCode="\n "+s+" strides = "+s+"("+a+");\n\n void main() {\n "+u+" coords = getOutputCoords();\n float sum = 0.0;\n bool found = false;\n for (int i = 0; i < "+e+"; i++) {\n int flattenedIndex = 0;\n for (int j = 0; j < "+t+"; j++) {\n int index = round("+c+");\n flattenedIndex += index * "+h+";\n }\n if (flattenedIndex == coords[0]) {\n sum += "+p+";\n found = true;\n }\n }\n setOutput(mix(getDefaultValue(), sum, float(found)));\n }\n "},Pr=function(){function e(e){this.variableNames=["source"],this.outputShape=e,this.rank=e.length;var t=cn(this.rank),n=function(e){if(1===e)return"sourceLoc";if(2===e)return"sourceLoc.x, sourceLoc.y";if(3===e)return"sourceLoc.x, sourceLoc.y, sourceLoc.z";if(4===e)return"sourceLoc.x, sourceLoc.y, sourceLoc.z, sourceLoc.w";throw Error("Slicing for rank "+e+" is not yet supported")}(this.rank);this.userCode="\n uniform "+t+" start;\n\n void main() {\n "+t+" sourceLoc = start + getOutputCoords();\n setOutput(getSource("+n+"));\n }\n "}return e.prototype.getCustomSetupFunc=function(e){var t=this;if(e.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the length of start ("+e.length+")");return function(n,r){if(null!=t.startLoc||(t.startLoc=n.getUniformLocationNoThrow(r,"start"),null!=t.startLoc))if(1===t.rank)n.gl.uniform1i(t.startLoc,e[0]);else if(2===t.rank)n.gl.uniform2i(t.startLoc,e[0],e[1]);else if(3===t.rank)n.gl.uniform3i(t.startLoc,e[0],e[1],e[2]);else{if(4!==t.rank)throw Error("Slicing for rank "+t.rank+" is not yet supported");n.gl.uniform4i(t.startLoc,e[0],e[1],e[2],e[3])}}},e}(),Ar=function(){function e(e){this.gpgpu=e,this.numUsedTextures=0,this.numFreeTextures=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}return e.prototype.acquireTexture=function(e,t,n){var r,a=Tr(t,n),i=Mr(e,a,n);if(i in this.freeTextures||(this.freeTextures[i]=[]),i in this.usedTextures||(this.usedTextures[i]=[]),this.freeTextures[i].length>0){this.numFreeTextures--,this.numUsedTextures++,this.log();var o=this.freeTextures[i].shift();return this.usedTextures[i].push(o),o}return this.numUsedTextures++,this.log(),a===mn.PACKED_2X2_FLOAT32?r=this.gpgpu.createPackedMatrixTexture(e[0],e[1]):a===mn.PACKED_2X2_FLOAT16?r=this.gpgpu.createFloat16PackedMatrixTexture(e[0],e[1]):a===mn.UNPACKED_FLOAT32?r=this.gpgpu.createFloat32MatrixTexture(e[0],e[1]):a===mn.UNPACKED_FLOAT16?r=this.gpgpu.createFloat16MatrixTexture(e[0],e[1]):a===mn.PACKED_4X1_UNSIGNED_BYTE&&(r=this.gpgpu.createUnsignedBytesMatrixTexture(e[0],e[1])),this.usedTextures[i].push(r),r},e.prototype.releaseTexture=function(e,t,n,r){if(null!=this.freeTextures){var a=Mr(t,Tr(n,r),r);a in this.freeTextures||(this.freeTextures[a]=[]),this.freeTextures[a].push(e),this.numFreeTextures++,this.numUsedTextures--;var i=this.usedTextures[a],o=i.indexOf(e);if(o<0)throw new Error("Cannot release a texture that was never provided by this texture manager");i.splice(o,1),this.log()}},e.prototype.log=function(){if(this.logEnabled){var e=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",this.numFreeTextures+" / "+this.numUsedTextures,"("+e+")")}},e.prototype.getNumUsedTextures=function(){return this.numUsedTextures},e.prototype.getNumFreeTextures=function(){return this.numFreeTextures},e.prototype.dispose=function(){var e=this;if(null!=this.freeTextures){for(var t in this.freeTextures)this.freeTextures[t].forEach(function(t){e.gpgpu.deleteMatrixTexture(t)});for(var t in this.usedTextures)this.usedTextures[t].forEach(function(t){e.gpgpu.deleteMatrixTexture(t)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0}},e}();function Tr(e,t){if(t)return ve.get("WEBGL_RENDER_FLOAT32_ENABLED")?mn.PACKED_2X2_FLOAT32:mn.PACKED_2X2_FLOAT16;if(e===dn.DOWNLOAD||e===dn.PIXELS)return mn.PACKED_4X1_UNSIGNED_BYTE;if(e===dn.UPLOAD)return mn.UNPACKED_FLOAT32;if(e===dn.RENDER)return ve.get("WEBGL_RENDER_FLOAT32_ENABLED")?mn.UNPACKED_FLOAT32:mn.UNPACKED_FLOAT16;throw new Error("Unknown logical texture type "+e)}function Mr(e,t,n){return e[0]+"_"+e[1]+"_"+t+"_"+n}var Rr=1.7580993408473768,Dr=1.0507009873554805,jr=function(){function e(e,t){this.variableNames=["A"],this.outputShape=e,this.userCode="\n uniform float NAN;\n float unaryOperation(float x) {\n "+t+"\n }\n\n void main() {\n float x = getAAtOutCoords();\n float y = unaryOperation(x);\n\n setOutput(y);\n }\n "}return e.prototype.getCustomSetupFunc=function(){var e=this;return function(t,n){null==e.startLoc&&(e.startLoc=t.getUniformLocationNoThrow(n,"NAN"),null==e.startLoc)||t.gl.uniform1f(e.startLoc,NaN)}},e}(),Lr="if (isNaN(x)) return x;",Br=function(e){this.variableNames=["A"],this.usesPackedTextures=!0,this.outputShape=e;var t=e.length,n=kr("rc",t),r=cn(t),a=function(e,t){if(1===e)return"rc";for(var n="",r=0;r=1,"Pass at least one tensor to concat");var n=nt(e,"tensors","concat");t=Ve(t,n[0].shape)[0];var r=Ge(n.map(function(e){return e.shape}),t);if(0===E(r))return lt([],r);if(1===(n=n.filter(function(e){return e.size>0})).length)return n[0];var a=n.map(function(e){return e.shape});!function(e,t){var n=e[0].length;e.forEach(function(e,t){b(e.length===n,"Error in concat"+n+"D: rank of tensors["+t+"] must be the same as the rank of the rest ("+n+")")}),b(t>=0&&t>>0,t=(r*=t)>>>0,t+=4294967296*(r-=t)}return 2.3283064365386963e-10*(t>>>0)});n.next=function(){var e=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=e-(n.c=0|e)},n.c=1,n.s0=r(" "),n.s1=r(" "),n.s2=r(" "),n.s0-=r(e),n.s0<0&&(n.s0+=1),n.s1-=r(e),n.s1<0&&(n.s1+=1),n.s2-=r(e),n.s2<0&&(n.s2+=1),r=null}(e),a=t&&t.state,i=n.next;return i.int32=function(){return 4294967296*n.next()|0},i.double=function(){return i()+1.1102230246251565e-16*(2097152*i()|0)},i.quick=i,a&&("object"==typeof a&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.alea=a}(0,e)}),Hr=$r(function(e){!function(e,t,n){function r(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t}function a(e,t){var n=new function(e){var t=this,n="";t.x=0,t.y=0,t.z=0,t.w=0,t.next=function(){var e=t.x^t.x<<11;return t.x=t.y,t.y=t.z,t.z=t.w,t.w^=t.w>>>19^e^e>>>8},e===(0|e)?t.x=e:n+=e;for(var r=0;r>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.xor128=a}(0,e)}),Kr=$r(function(e){!function(e,t,n){function r(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t.v=e.v,t.d=e.d,t}function a(e,t){var n=new function(e){var t=this,n="";t.next=function(){var e=t.x^t.x>>>2;return t.x=t.y,t.y=t.z,t.z=t.w,t.w=t.v,(t.d=t.d+362437|0)+(t.v=t.v^t.v<<4^e^e<<1)|0},t.x=0,t.y=0,t.z=0,t.w=0,t.v=0,e===(0|e)?t.x=e:n+=e;for(var r=0;r>>4),t.next()}(e),a=t&&t.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.xorwow=a}(0,e)}),Xr=$r(function(e){!function(e,t,n){function r(e,t){return t.x=e.x.slice(),t.i=e.i,t}function a(e,t){null==e&&(e=+new Date);var n=new function(e){var t=this;t.next=function(){var e,n,r=t.x,a=t.i;return e=r[a],n=(e^=e>>>7)^e<<24,n^=(e=r[a+1&7])^e>>>10,n^=(e=r[a+3&7])^e>>>3,n^=(e=r[a+4&7])^e<<7,e=r[a+7&7],n^=(e^=e<<13)^e<<9,r[a]=n,t.i=a+1&7,n},function(e,t){var n,r=[];if(t===(0|t))r[0]=t;else for(t=""+t,n=0;n0;--n)e.next()}(t,e)}(e),a=t&&t.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&(a.x&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.xorshift7=a}(0,e)}),Yr=$r(function(e){!function(e,t,n){function r(e,t){return t.i=e.i,t.w=e.w,t.X=e.X.slice(),t}function a(e,t){null==e&&(e=+new Date);var n=new function(e){var t=this;t.next=function(){var e,n,r=t.w,a=t.X,i=t.i;return t.w=r=r+1640531527|0,n=a[i+34&127],e=a[i=i+1&127],n^=n<<13,e^=e<<17,n^=n>>>15,e^=e>>>12,n=a[i]=n^e,t.i=i,n+(r^r>>>16)|0},function(e,t){var n,r,a,i,o,s=[],u=128;for(t===(0|t)?(r=t,t=null):(t+="\0",r=0,u=Math.max(u,t.length)),a=0,i=-32;i>>15,r^=r<<4,r^=r>>>13,i>=0&&(o=o+1640531527|0,a=0==(n=s[127&i]^=r+o)?a+1:0);for(a>=128&&(s[127&(t&&t.length||0)]=-1),a=127,i=512;i>0;--i)r=s[a+34&127],n=s[a=a+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,s[a]=r^n;e.w=o,e.X=s,e.i=a}(t,e)}(e),a=t&&t.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&(a.X&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.xor4096=a}(0,e)}),Jr=$r(function(e){!function(e,t,n){function r(e,t){return t.a=e.a,t.b=e.b,t.c=e.c,t.d=e.d,t}function a(e,t){var n=new function(e){var t=this,n="";t.next=function(){var e=t.b,n=t.c,r=t.d,a=t.a;return e=e<<25^e>>>7^n,n=n-r|0,r=r<<24^r>>>8^a,a=a-e|0,t.b=e=e<<20^e>>>12^n,t.c=n=n-r|0,t.d=r<<16^n>>>16^a,t.a=a-e|0},t.a=0,t.b=0,t.c=-1640531527,t.d=1367130551,e===Math.floor(e)?(t.a=e/4294967296|0,t.b=0|e):n+=e;for(var r=0;r>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.tychei=a}(0,e)}),Zr=$r(function(e){!function(t,r){var a,i=this,o=256,s=6,u="random",l=r.pow(o,s),c=r.pow(2,52),f=2*c,p=o-1;function h(e,n,h){var y=[],v=m(function e(t,n){var r,a=[],i=typeof t;if(n&&"object"==i)for(r in t)try{a.push(e(t[r],n-1))}catch(e){}return a.length?a:"string"==i?t:t+"\0"}((n=1==n?{entropy:!0}:n||{}).entropy?[e,g(t)]:null==e?function(){try{var e;return a&&(e=a.randomBytes)?e=e(o):(e=new Uint8Array(o),(i.crypto||i.msCrypto).getRandomValues(e)),g(e)}catch(e){var n=i.navigator,r=n&&n.plugins;return[+new Date,i,r,i.screen,g(t)]}}():e,3),y),b=new function(e){var t,n=e.length,r=this,a=0,i=r.i=r.j=0,s=r.S=[];for(n||(e=[n++]);a=f;)e/=2,t/=2,n>>>=1;return(e+n)/t};return w.int32=function(){return 0|b.g(4)},w.quick=function(){return b.g(4)/4294967296},w.double=w,m(g(b.S),t),(n.pass||h||function(e,t,n,a){return a&&(a.S&&d(a,b),e.state=function(){return d(b,{})}),n?(r[u]=e,t):e})(w,v,"global"in n?n.global:this==r,n.state)}function d(e,t){return t.i=e.i,t.j=e.j,t.S=e.S.slice(),t}function m(e,t){for(var n,r=e+"",a=0;a=1||0===o);var s=Math.sqrt(-2*Math.log(o)/o);t=this.mean+this.stdDev*a*s,n=this.mean+this.stdDev*i*s,this.truncated&&!this.isValidTruncated(t)||(r=!0)}return this.truncated&&!this.isValidTruncated(n)||(this.nextVal=this.convertValue(n)),this.convertValue(t)},e.prototype.convertValue=function(e){return null==this.dtype||"float32"===this.dtype?e:Math.round(e)},e.prototype.isValidTruncated=function(e){return e<=this.upper&&e>=this.lower},e}();function ta(e,t){return l(this,void 0,void 0,function(){var n,r,a,i,o,s,u,l,f,p,h,d,m,g,y,v,b,w,x,_;return c(this,function(c){switch(c.label){case 0:if(2!==(n=tt(e,"img","toPixels","int32")).rank&&3!==n.rank)throw new Error("toPixels only supports rank 2 or 3 tensors, got rank "+n.rank+".");if(r=n.shape.slice(0,2),a=r[0],i=r[1],(o=2===n.rank?1:n.shape[2])>4||2===o)throw new Error("toPixels only supports depth of size 1, 3 or 4 but got "+o);return s=n.min(),u=n.max(),[4,s.data()];case 1:return l=c.sent()[0],[4,u.data()];case 2:if(f=c.sent()[0],s.dispose(),u.dispose(),"float32"===n.dtype){if(l<0||f>1)throw new Error("Tensor values for a float32 Tensor must be in the range [0 - 1] but got range ["+l+" - "+f+"].")}else{if("int32"!==n.dtype)throw new Error("Unsupported type for toPixels: "+n.dtype+". Please use float32 or int32 tensors.");if(l<0||f>255)throw new Error("Tensor values for a int32 Tensor must be in the range [0 - 255] but got range ["+l+" - "+f+"].")}return[4,n.data()];case 3:for(p=c.sent(),h="float32"===n.dtype?255:1,d=new Uint8ClampedArray(i*a*4),m=0;m=1+t.length,"input rank is "+r.rank+" but should be > than blockShape.length "+t.length),b(n.length===t.length,"crops.length is "+n.length+" but should be equal to blockShape.length "+t.length),b(r.shape[0]%a==0,"input tensor batch is "+r.shape[0]+" but is not divisible by the product of the elements of blockShape "+t.join(" * ")+" === "+a),ve.engine.runKernel(function(e){return e.batchToSpaceND(r,t,n)},{$x:r},function(e){return{$x:function(){return e.spaceToBatchND(t,n)}}})}}),ia=rt({cast_:function(e,t){var n=tt(e,"x","cast");return ve.engine.runKernel(function(e){return e.cast(n,t)},{$x:n},function(e){return{$x:function(){return e.clone()}}})}}),oa=rt({clone_:function(e){var t=tt(e,"x","clone");return ve.engine.runKernel(function(e){return re.make(t.shape,{dataId:t.dataId},t.dtype)},{$x:t},function(e){return{$x:function(){return e.toFloat()}}})}}),sa=rt({cumsum_:function(e,t,n,r){void 0===t&&(t=0),void 0===n&&(n=!1),void 0===r&&(r=!1);var a=tt(e,"x","cumsum"),i=We([t|=0],a.rank),o=a;null!=i&&(o=a.transpose(i));var s=$e(1,a.rank)[0],u=ve.engine.runKernel(function(e){return e.cumsum(o,s,n,r)},{permutedX:o},function(e){return{permutedX:function(){return e.cumsum(t,n,!r)}}});return null!=i&&(u=u.transpose(i)),u}}),ua=rt({depthToSpace_:function(e,t,n){void 0===n&&(n="NHWC");var r=tt(e,"x","depthToSpace"),a="NHWC"===n?r.shape[1]:r.shape[2],i="NHWC"===n?r.shape[2]:r.shape[3],o="NHWC"===n?r.shape[3]:r.shape[1];return b(a*t>=0,"Negative dimension size caused by overflow when multiplying\n "+a+" and "+t+" for depthToSpace with input shape\n "+r.shape),b(i*t>=0,"Negative dimension size caused by overflow when multiplying\n "+i+" and "+t+" for depthToSpace with input shape\n "+r.shape),b(o%(t*t)==0,"Dimension size must be evenly divisible by "+t*t+" but is "+o+" for depthToSpace with input shape "+r.shape),ve.engine.runKernel(function(e){return e.depthToSpace(r,t,n)},{$x:r})}}),la=rt({expandDims_:function(e,t){void 0===t&&(t=0);var n=tt(e,"x","expandDims");b(t<=n.rank,"Axis must be <= rank of the tensor");var r=n.shape.slice();return t<0&&(b(-(n.rank+1)<=t,"Axis must be in the interval ["+-(n.rank+1)+", "+n.rank+"]"),t=n.rank+t+1),r.splice(t,0,1),_a(n,r)}}),ca=rt({eye_:function(e,t,n,r){void 0===r&&(r="float32"),null==t&&(t=e);for(var a=na([e,t],r),i=e<=t?e:t,o=0;o4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");return ve.engine.fromPixels(e,t)}}),pa=rt({multinomial_:function(e,t,n,r){void 0===r&&(r=!1);var a=tt(e,"logits","multinomial"),i=a.size,o=a.rank;if(i<2)throw new Error("Error in multinomial: you need at least 2 outcomes, but got "+i+".");if(o>2)throw new Error("Rank of probabilities must be 1 or 2, but is "+o);n=n||Math.random();var s=1===o?a.as2D(1,-1):a,u=ve.engine.runKernel(function(e){return e.multinomial(s,r,t,n)},{logits2D:s});return 1===o?u.as1D():u}}),ha=rt({oneHot_:function(e,t,n,r){void 0===n&&(n=1),void 0===r&&(r=0);var a=tt(e,"indices","oneHot","int32");if(b("int32"===a.dtype,"Indices must be of dtype `int32`"),t<2)throw new Error("Error in oneHot: depth must be >=2, but it is "+t);return ve.engine.runKernel(function(e){return e.oneHot(a,t,n,r)},{$indices:a},function(e){return{$indices:function(){return Ct(a)}}})}}),da=rt({pad_:function(e,t,n){void 0===n&&(n=0);var r=tt(e,"x","pad");if(0===r.rank)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");var a=t.map(function(e){return e[0]});return ve.engine.runKernel(function(e){return e.pad(r,t,n)},{$x:r},function(e){return{$x:function(){return e.slice(a,r.shape)}}})}}),ma=rt({pad1d_:function(e,t,n){return void 0===n&&(n=0),b(2===t.length,"Invalid number of paddings. Must be length of 2."),da(e,[t],n)}}),ga=rt({pad2d_:function(e,t,n){return void 0===n&&(n=0),b(2===t.length&&2===t[0].length&&2===t[1].length,"Invalid number of paddings. Must be length of 2 each."),da(e,t,n)}}),ya=rt({pad3d_:function(e,t,n){return void 0===n&&(n=0),b(3===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length,"Invalid number of paddings. Must be length of 2 each."),da(e,t,n)}}),va=rt({pad4d_:function(e,t,n){return void 0===n&&(n=0),b(4===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length&&2===t[3].length,"Invalid number of paddings. Must be length of 2 each."),da(e,t,n)}}),ba=rt({rand_:function(e,t,n){var r=E(e),a=null;if(null==n||"float32"===n)a=new Float32Array(r);else if("int32"===n)a=new Int32Array(r);else{if("bool"!==n)throw new Error("Unknown data type "+n);a=new Uint8Array(r)}for(var i=0;i=1+t.length,"input rank "+r.rank+" should be > than [blockShape] "+t.length),b(n.length===t.length,"paddings.shape[0] "+n.length+" must be equal to [blockShape] "+t.length),b(r.shape.reduce(function(e,r,a){return a>0&&a<=t.length?e&&(r+n[a-1][0]+n[a-1][1])%t[a-1]==0:e},!0),"input spatial dimensions "+r.shape.slice(1)+" with paddings "+n.toString()+" must be divisible by blockShapes "+t.toString()),ve.engine.runKernel(function(e){return e.spaceToBatchND(r,t,n)},{$x:r},function(e){return{$x:function(){return e.batchToSpaceND(t,n)}}})}}),Na=rt({squeeze_:function(e,t){var n=tt(e,"x","squeeze");return _a(n,A(n.shape,t).newShape)}}),Sa=rt({stack_:function(e,t){void 0===t&&(t=0);var n=nt(e,"tensors","stack");if(b(n.length>=1,"Pass at least one tensor to tf.stack"),1===n.length)return n[0].expandDims(t);var r=n[0].rank,a=n[0].shape,i=n[0].dtype;b(t<=r,"Axis must be <= rank of the tensor"),n.forEach(function(e){w(a,e.shape,"All tensors passed to stack must have matching shapes")}),n.forEach(function(e){b(i===e.dtype,"All tensors passed to stack must have matching dtypes")});var o=n.map(function(e){return e.expandDims(t)});return zr(o,t)}}),Oa=rt({tile_:function(e,t){var n=tt(e,"x","tile");return b(n.rank===t.length,"Error in transpose: rank of input "+n.rank+" must match length of reps "+t+"."),ve.engine.runKernel(function(e){return e.tile(n,t)},{$x:n},function(e){return{$x:function(){var r=Ct(n);if(1===n.rank)for(var a=0;a1?n[n.length-2]:1,u=n[n.length-1];return this.gpgpu.downloadMatrixFromPackedTexture(a,o,s,u,i[0],i[1])}return this.gpgpu.downloadFloat32MatrixFromOutputTexture(a,i[0],i[1])}var l=this.makeTensorHandle(n,"float32");l.size=E(n),this.texData.get(l.dataId).usage=dn.DOWNLOAD;var c=new function(e){this.variableNames=["A"],this.outputShape=e,this.userCode="\n const float FLOAT_MAX = 1.70141184e38;\n const float FLOAT_MIN = 1.17549435e-38;\n\n lowp vec4 encode_float(highp float v) {\n if (isNaN(v)) {\n return vec4(255, 255, 255, 255);\n }\n\n highp float av = abs(v);\n\n if(av < FLOAT_MIN) {\n return vec4(0.0, 0.0, 0.0, 0.0);\n } else if(v > FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;\n } else if(v < -FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 255.0) / 255.0;\n }\n\n highp vec4 c = vec4(0,0,0,0);\n\n highp float e = floor(log2(av));\n highp float m = exp2(fract(log2(av))) - 1.0;\n\n c[2] = floor(128.0 * m);\n m -= c[2] / 128.0;\n c[1] = floor(32768.0 * m);\n m -= c[1] / 32768.0;\n c[0] = floor(8388608.0 * m);\n\n highp float ebias = e + 127.0;\n c[3] = floor(ebias / 2.0);\n ebias -= c[3] * 2.0;\n c[2] += floor(ebias) * 128.0;\n\n c[3] += 128.0 * step(0.0, -v);\n\n return c / 255.0;\n }\n\n void main() {\n float x = getAAtOutCoords();\n gl_FragColor = encode_float(x);\n }\n "}(n);this.compileAndRun(c,[{shape:n,dtype:r,dataId:e}],l,null,!1);var f=this.texData.get(l.dataId),p=this.gpgpu.downloadByteEncodedFloatMatrixFromOutputTexture(f.texture,f.texShape[0],f.texShape[1]);return this.disposeData(l.dataId),p},e.prototype.time=function(e){return l(this,void 0,void 0,function(){var t,n,r,a,i,o,s;return c(this,function(u){switch(u.label){case 0:return t=this.activeTimers,n=[],r=!1,null==this.programTimersStack?(this.programTimersStack=n,r=!0):this.activeTimers.push(n),this.activeTimers=n,e(),a=_(this.activeTimers.map(function(e){return e.query})).filter(function(e){return null!=e}),i=_(this.activeTimers.map(function(e){return e.name})).filter(function(e){return null!=e}),this.activeTimers=t,r&&(this.programTimersStack=null),[4,Promise.all(a)];case 1:return o=u.sent(),s={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:y(o),getExtraProfileInfo:function(){return o.map(function(e,t){return{name:i[t],ms:e}}).map(function(e){return e.name+": "+e.ms}).join(", ")},wallMs:null},this.uploadWaitMs=0,this.downloadWaitMs=0,[2,s]}})})},e.prototype.memory=function(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU}},e.prototype.startTimer=function(){return ve.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?this.gpgpu.beginQuery():{startMs:performance.now(),endMs:null}},e.prototype.endTimer=function(e){return ve.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(this.gpgpu.endQuery(),e):(e.endMs=performance.now(),e)},e.prototype.getQueryTime=function(e){return l(this,void 0,void 0,function(){var t;return c(this,function(n){return ve.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?[2,this.gpgpu.waitForQueryAndGetTime(e)]:[2,(t=e).endMs-t.startMs]})})},e.prototype.disposeData=function(e){if(!this.pendingDisposal.has(e))if(this.pendingRead.has(e))this.pendingDisposal.add(e);else if(this.texData.has(e)){var t=this.texData.get(e),n=t.texture,r=t.texShape,a=t.usage,i=t.complexTensors,o=t.isPacked;null!=n&&this.releaseTexture(e,n,r,a,o),null!=i&&(i.real.dispose(),i.imag.dispose()),this.texData.delete(e)}},e.prototype.getTexture=function(e){return this.uploadToGPU(e),this.texData.get(e).texture},e.prototype.getCPUBackend=function(){return ve.get("WEBGL_CPU_FORWARD")?(null==this.cpuBackend&&(this.cpuBackend=ve.findBackend("cpu")),this.cpuBackend):null},e.prototype.shouldExecuteOnCPU=function(e,t){var n=this;return void 0===t&&(t=10),null!=this.getCPUBackend()&&e.every(function(e){return null==n.texData.get(e.dataId).texture&&e.size4)throw new Error("WebGL backend: Reverse of rank-"+n+" tensor is not yet supported");if(this.outputShape=e,1!==n){var r=e.map(function(n,r){return function(n){return-1!==t.indexOf(n)&&1!==e[n]?e[n]+" - coords["+n+"] - 1":"coords["+n+"]"}(r)}).join(","),a=cn(n);this.userCode="\n void main() {\n "+a+" coords = getOutputCoords();\n setOutput(getX("+r+"));\n }\n "}else this.userCode="\n void main() {\n int coord = getOutputCoords();\n setOutput(getX("+e[0]+" - coord - 1));\n }\n "}(e.shape,t);return this.compileAndRun(n,[e])},e.prototype.concat2Tensors=function(e,t,n){var r=Ge([e.shape,t.shape],n),a=e.as2D(-1,E(e.shape.slice(n))),i=t.as2D(-1,E(t.shape.slice(n))),o=new function(e,t){this.variableNames=["A","B"],this.outputShape=[],this.outputShape=Ge([e,t],1),this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int yR = coords.x;\n int yC = coords.y;\n\n float value = 0.0;\n if (yC < "+e[1]+") {\n value = getA(yR, yC);\n } else {\n yC -= "+e[1]+";\n value = getB(yR, yC);\n }\n\n setOutput(value);\n }\n "}(a.shape,i.shape);return this.compileAndRun(o,[a,i]).reshape(r)},e.prototype.concat=function(e,t){if(this.shouldExecuteOnCPU(e))return this.cpuBackend.concat(e,t);if(1===e.length)return e[0];for(var n=e[0],r=1;r1e3){n&&(e=e.transpose([0,2,1])),r&&(t=t.transpose([0,2,1]));var u=1===i?e:e.as3D(s,o,1),l=1===i?2:1,c=1===i?t.as3D(s,1,o):t;return this.multiply(u,c).sum(l,!0)}if(1===s){var f=e.as2D(e.shape[1],e.shape[2]),p=t.as2D(t.shape[1],t.shape[2]),h=new Sr(f.shape,p.shape,[a,i],n,r),d=this.compileAndRun(h,[f,p],this.makePackedTensor(h.outputShape));return!1===ve.get("WEBGL_LAZILY_UNPACK")&&(d=this.unpackTensor(d)),d.reshape([1,d.shape[0],d.shape[1]])}return this.compileAndRun(new function(e,t,n,r){void 0===n&&(n=!1),void 0===r&&(r=!1),this.variableNames=["matrixA","matrixB"];var a=e[0],i=n?e[2]:e[1],o=r?t[1]:t[2],s=n?e[1]:e[2];this.outputShape=[a,i,o];var u=function(e,t){return n?"batch, "+t+" + "+e+", aRow":"batch, aRow, "+t+" + "+e},l=function(e,t){return r?"batch, bCol, "+t+" + "+e:"batch, "+t+" + "+e+", bCol"},c=4*Math.floor(s/4),f=s%4;this.userCode=" float dotARowBCol(int batch, int aRow, int bCol) {\n float result = 0.0;\n for (int i = 0; i < "+c+"; i += 4) {\n vec4 a = vec4(\n getMatrixA("+u(0,"i")+"),\n getMatrixA("+u(1,"i")+"),\n getMatrixA("+u(2,"i")+"),\n getMatrixA("+u(3,"i")+")\n );\n vec4 b = vec4(\n getMatrixB("+l(0,"i")+"),\n getMatrixB("+l(1,"i")+"),\n getMatrixB("+l(2,"i")+"),\n getMatrixB("+l(3,"i")+")\n );\n\n result += dot(a, b);\n }\n\n if ("+(1===f)+") {\n result += getMatrixA("+u(0,c)+") *\n getMatrixB("+l(0,c)+");\n } else if ("+(2===f)+") {\n vec2 a = vec2(\n getMatrixA("+u(0,c)+"),\n getMatrixA("+u(1,c)+")\n );\n vec2 b = vec2(\n getMatrixB("+l(0,c)+"),\n getMatrixB("+l(1,c)+")\n );\n result += dot(a, b);\n } else if ("+(3===f)+") {\n vec3 a = vec3(\n getMatrixA("+u(0,c)+"),\n getMatrixA("+u(1,c)+"),\n getMatrixA("+u(2,c)+")\n );\n vec3 b = vec3(\n getMatrixB("+l(0,c)+"),\n getMatrixB("+l(1,c)+"),\n getMatrixB("+l(2,c)+")\n );\n result += dot(a, b);\n }\n\n return result;\n }\n\n void main() {\n ivec3 resBRC = getOutputCoords();\n setOutput(dotARowBCol(resBRC.x, resBRC.y, resBRC.z));\n }\n "}(e.shape,t.shape,n,r),[e,t])},e.prototype.multiply=function(e,t){if("complex64"===e.dtype){var n=this.texData.get(e.dataId),r=this.texData.get(t.dataId),a=new Jt("return areal * breal - aimag * bimag;",e.shape,t.shape),i=new Jt("return areal * bimag + aimag * breal;",e.shape,t.shape),o=[this.makeComplexComponentTensorHandle(e,n.complexTensors.real),this.makeComplexComponentTensorHandle(e,n.complexTensors.imag),this.makeComplexComponentTensorHandle(t,r.complexTensors.real),this.makeComplexComponentTensorHandle(t,r.complexTensors.imag)],s=this.compileAndRun(a,o),u=this.compileAndRun(i,o),l=this.complex(s,u);return s.dispose(),u.dispose(),l}if(this.shouldExecuteOnCPU([e,t]))return this.cpuBackend.multiply(e,t);var c=new en("return a * b;",e.shape,t.shape),f=this.makeOutputArray(c.outputShape,e.dtype);return this.compileAndRun(c,[e,t],f)},e.prototype.batchNormalization=function(e,t,n,r,a,i){var o=[e,t,n],s=null;null!=i&&(s=i.shape,o.push(i));var u=null;null!=a&&(u=a.shape,o.push(a));var l=null,c=Kt;ve.get("WEBGL_PACK_BATCHNORMALIZATION")&&(l=this.makePackedTensor(e.shape),c=Xt);var f=new c(e.shape,t.shape,n.shape,s,u,r);return this.compileAndRun(f,o,l)},e.prototype.localResponseNormalization4D=function(e,t,n,r,a){var i=new function(e,t,n,r,a){this.variableNames=["x"],this.outputShape=[];var i,o=t,s=e[3]-1;this.outputShape=e;var u="float("+n+") + float("+r+") * sum";i=.5===a?"inversesqrt("+u+")":1===a?"1.0/("+u+")":"exp(log("+u+") * float(-"+a+"));",this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n int d = coords[3];\n float x = getX(b, r, c, d);\n float sum = 0.0;\n for (int j = -"+o+"; j <= "+o+"; j++) {\n int idx = d + j;\n if (idx >= 0 && idx <= "+s+") {\n float z = getX(b, r, c, idx);\n sum += z * z;\n }\n }\n float val = x * "+i+";\n setOutput(val);\n }\n "}(e.shape,t,n,r,a);return this.compileAndRun(i,[e])},e.prototype.LRNGrad=function(e,t,n,r,a,i,o){var s=new function(e,t,n,r,a){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=e,this.depth=e[3],this.depthRadius=t,this.bias=n,this.alpha=r,this.beta=a,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n\n float result = 0.0;\n for (int d = 0; d < "+this.depth+"; ++d) {\n int depthBegin = int(max(0.0, float(d - "+t+")));\n int depthEnd = int(min(float("+this.depth+"),\n float(d + "+t+" + 1)));\n\n const int MIN_DEPTH_BEGIN = 0;\n const int MAX_DEPTH_END = "+this.depth+";\n\n float norm = 0.0;\n for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) {\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd) {\n norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k);\n }\n else {\n break;\n }\n }\n\n norm = float("+r+") * norm + float("+n+");\n\n for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd){\n float dyi = -2.0 * float("+r+")\n * float("+a+")\n * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d)\n / norm;\n if (k == d) {\n dyi += pow(norm, -1.0 * "+a+");\n }\n if (k == coords[3]) {\n dyi *= getDy(b, r, c, d);\n result += dyi;\n }\n }\n else {\n break;\n }\n }\n }\n setOutput(result);\n }\n "}(t.shape,r,a,i,o);return this.compileAndRun(s,[t,n,e])},e.prototype.tile=function(e,t){var n=new function(e,t){this.variableNames=["A"];for(var n=new Array(e.length),r=0;r5)throw Error("Tile for rank "+t+" is not yet supported");if(1===t)return"imod(resRC, "+e[0]+")";for(var n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],r=[],a=0;a= end) {\n setOutput(float("+n+"));\n } else {\n setOutput(getX(outC - start));\n }\n }\n "}(e.shape,t,n);return this.compileAndRun(r,[e])},e.prototype.transpose=function(e,t){var n=new function(e,t){this.variableNames=["A"];for(var n=new Array(e.length),r=0;r6)throw Error("Transpose for rank "+t+" is not yet supported");for(var n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],r=new Array(t),a=0;a4)throw Error("Gather for rank "+n+" is not yet supported");if(1===n)return"int(getIndices(resRC))";for(var r=["resRC.x","resRC.y","resRC.z","resRC.w"],a=[],i=0;i 4 with a WebGL backend not implemented yet");var r=t.reduce(function(e,t){return e*t}),a=Me(e.shape,t,r),i=Re(a.length,t.length),o=De(e.shape,t,r),s=je(n,t.length),u=Le(o,n,t.length);return e.reshape(a).transpose(i).reshape(o).slice(s,u)},e.prototype.spaceToBatchND=function(e,t,n){b(e.rank<=4,"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");var r=t.reduce(function(e,t){return e*t}),a=[[0,0]];a.push.apply(a,n);for(var i=1+t.length;i= 1.0 && floatedReducedAllValue >= 1.0);\n ",p="bvec4"):"any"===t&&(o="0.0",f="\n bool reducedAnyValue = any(values);\n float floatedReducedAnyValue = float(reducedAnyValue);\n anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);\n ",p="bvec4");var h="";a%n>0&&(h="\n if (inIdx < 0 || inIdx >= "+a+") {\n return initializationValue;\n }\n "),this.userCode="\n const float initializationValue = "+o+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float getValue(int batch, int inIdx) {\n "+h+"\n return getX(batch, inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * "+n+";\n\n vec4 minMaxValue = vec4("+o+");\n float prodValue = 1.0;\n float sumValue = 0.0;\n float allValue = 1.0;\n float anyValue = 0.0;\n\n for (int i = 0; i < "+l+"; i += 4) {\n int inIdx = inOffset + i;\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n "+f+"\n }\n\n int inIdx = inOffset + "+l+";\n if ("+(1===c)+") {\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+f+"\n } else if ("+(2===c)+") {\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n "+f+"\n } else if ("+(3===c)+") {\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n "+f+"\n }\n setOutput("+u+");\n }\n "}({windowSize:Xe(a),inSize:a,batchSize:r},t),o=i.outputShape,s=o[0],u=o[1],l=this.makeOutputArray([s,u],n);return this.compileAndRun(i,[e],l),1===l.shape[1]?l:this.reduce(l,t,n)},e.prototype.argReduce=function(e,t,n){void 0===n&&(n=null);var r=e.shape[0],a=e.shape[1];null!=n&&(r=n.shape[0],a=n.shape[1]);var i=new function(e,t,n){this.variableNames=["A"];var r=e.windowSize,a=e.batchSize,i=e.inSize,o=Math.ceil(i/r);n||this.variableNames.push("bestIndicesA"),this.outputShape=[a,o];var s="max"===t?">":"<",u=n?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * "+r+";\n\n int bestIndex = inOffset;\n float bestValue = getA(batch, bestIndex);\n\n for (int i = 0; i < "+r+"; i++) {\n int inIdx = "+u+";\n float candidate = getA(batch, inIdx);\n if (candidate "+s+" bestValue) {\n bestValue = candidate;\n bestIndex = inIdx;\n }\n }\n setOutput(float(bestIndex));\n }\n "}({windowSize:Xe(a),inSize:a,batchSize:r},t,null==n),o=i.outputShape,s=o[0],u=o[1],l=this.makeOutputArray([s,u],"int32"),c=[e];return null!=n&&c.push(n),this.compileAndRun(i,c,l),1===l.shape[1]?l:this.argReduce(e,t,l)},e.prototype.sum=function(e,t){Ue("sum",t,e.rank);var n=ze(e.shape,t),r=n[0],a=E(n[1]),i=e.as2D(-1,a),o=Tt(e.dtype);return this.reduce(i,"sum",o).reshape(r)},e.prototype.prod=function(e,t){var n=ze(e.shape,t),r=n[0],a=E(n[1]),i=e.as2D(-1,a),o=Tt(e.dtype);return this.reduce(i,"prod",o).reshape(r)},e.prototype.unsortedSegmentSum=function(e,t,n){var r=0,a=We([r],e.rank),i=e;null!=a&&(i=e.transpose(a),r=$e(1,e.rank)[0]);var o=function(e,t,n){for(var r=[],a=e.length,i=0;it||n===e){r=!0;break}n=z(e,n+1)}return n}(o,a),u=new function(e,t){this.variableNames=["x","segmentIds"];var n=e.windowSize,r=e.batchSize,a=e.inSize,i=e.numSegments,o=i*Math.ceil(a/n);this.outputShape=[r,o];var s=4*Math.floor(n/4),u=n%4,l="\n sumValue += dot(values, filter);\n ",c="";a%n>0&&(c="\n if (inIdx < 0 || inIdx >= "+a+") {\n return initializationValue;\n }\n ");var f="";a%n>0&&(f="\n if (inIdx < 0 || inIdx >= "+a+") {\n return -1.0;\n }\n "),this.userCode="\n const float initializationValue = 0.0;\n\n float getValue(int batch, int inIdx) {\n "+c+"\n return getX(batch, inIdx);\n }\n\n float getSegmentIdAtIndex(int inIdx) {\n "+f+"\n return getSegmentIds(inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = int(floor(float(outIdx) / float(\n "+i+")) * float("+n+"));\n int currentSeg = int(mod(float(outIdx), float("+i+")));\n\n float sumValue = 0.0;\n\n for (int i = 0; i < "+s+"; i += 4) {\n int inIdx = inOffset + i;\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n vec4 filter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0\n );\n\n "+l+"\n }\n\n int inIdx = inOffset + "+s+";\n if ("+(1===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n int inIdxSeg = int(getSegmentIdAtIndex(inIdx));\n\n vec4 filter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n 0,\n 0,\n 0\n );\n\n "+l+"\n } else if ("+(2===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n vec4 filter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n 0,\n 0\n );\n\n "+l+"\n } else if ("+(3===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n vec4 filter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n 0\n );\n\n "+l+"\n }\n setOutput(sumValue);\n }\n "}({windowSize:s,inSize:o,batchSize:i,numSegments:a},t),l=u.outputShape,c=l[0],f=l[1],p=this.makeOutputArray([c,f],r);return this.compileAndRun(u,[e,n],p),p.shape[1]===a?p:(n=xt(0,a).tile([o/s]),this.segOpCompute(p,t,n,r,a))},e.prototype.argMin=function(e,t){var n=[t];Ue("argMin",n,e.rank);var r=ze(e.shape,n),a=r[0],i=E(r[1]),o=e.as2D(-1,i);return this.argReduce(o,"min").reshape(a)},e.prototype.argMax=function(e,t){var n=[t];Ue("argMax",n,e.rank);var r=ze(e.shape,n),a=r[0],i=E(r[1]),o=e.as2D(-1,i);return this.argReduce(o,"max").reshape(a)},e.prototype.cumsum=function(e,t,n,r){if(t!==e.rank-1)throw new Error("WebGL cumsum shader expects an inner-most axis="+(e.rank-1)+" but got axis="+t);var a=new function(e,t,n){this.variableNames=["x"],this.outputShape=e;var r=e.length,a=e[e.length-1],i=n?"<":">";this.userCode="\n int getIndex(int i) {\n "+(n?"return "+a+" -i - 1;":"return i;")+"\n }\n\n void main() {\n "+cn(r)+" coords = getOutputCoords();\n int end = "+hn(r,"coords")+";\n float val = 0.0;\n for (int i = "+a+" - 1; i >= 0; i -= 1) {\n int idx = getIndex(i);\n if (idx "+i+" end) {\n continue;\n }\n if (idx == end && "+t+") {\n continue;\n }\n "+hn(r,"coords")+" = idx;\n val += getX("+function(e,t){if(1===e)return""+t;if(2===e)return t+".x, "+t+".y";if(3===e)return t+".x, "+t+".y, "+t+".z";if(4===e)return t+".x, "+t+".y, "+t+".z, "+t+".w";throw Error("Cumulative sum for rank "+e+" is not yet supported")}(r,"coords")+");\n }\n setOutput(val);\n }\n "}(e.shape,n,r);return this.compileAndRun(a,[e])},e.prototype.equal=function(e,t){var n=new en("return float(a == b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.notEqual=function(e,t){var n=new en("return float(a != b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.less=function(e,t){if(this.shouldExecuteOnCPU([e,t]))return this.cpuBackend.less(e,t);var n=new en("return float(a < b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.lessEqual=function(e,t){var n=new en("return float(a <= b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.greater=function(e,t){if(this.shouldExecuteOnCPU([e,t]))return this.cpuBackend.greater(e,t);var n=new en("return float(a > b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.greaterEqual=function(e,t){var n=new en("return float(a >= b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.logicalNot=function(e){var t=new jr(e.shape,"return float(!(x >= 1.0));");return this.compileAndRun(t,[e])},e.prototype.logicalAnd=function(e,t){var n=new en("return float(a >= 1.0 && b >= 1.0);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.logicalOr=function(e,t){var n=new en("return float(a >= 1.0 || b >= 1.0);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.select=function(e,t,n){var r=new function(e,t,n){var r,a;if(this.variableNames=["c","a","b"],this.outputShape=t,n>4)throw Error("Where for rank "+n+" is not yet supported");if(1===n)a="resRC",r="resRC";else{for(var i=["resRC.x","resRC.y","resRC.z","resRC.w"],o=[],s=[],u=0;u= 1.0) {\n setOutput(getA("+a+"));\n } else {\n setOutput(getB("+a+"));\n }\n }\n "}(e.rank,t.shape,t.rank),a=this.makeOutputArray(r.outputShape,At(t.dtype,n.dtype));return this.compileAndRun(r,[e,t,n],a)},e.prototype.where=function(e){Te("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");var t=e.dataSync();return Pa(e.shape,t)},e.prototype.topk=function(e,t,n){return qt(e.dataSync(),e.shape,e.dtype,t)},e.prototype.min=function(e,t){Ue("min",t,e.rank);var n=ze(e.shape,t),r=n[0],a=E(n[1]),i=e.as2D(-1,a);return this.reduce(i,"min",i.dtype).reshape(r)},e.prototype.minimum=function(e,t){if(this.shouldExecuteOnCPU([e,t]))return this.cpuBackend.minimum(e,t);var n=new en("\n if (isNaN(a)) return a;\n if (isNaN(b)) return b;\n\n return min(a, b);\n",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.mod=function(e,t){var n=new en("if (b == 0.0) return NAN;\n return mod(a, b);",e.shape,t.shape),r=n.getCustomSetupFunc();return this.compileAndRun(n,[e,t],null,r)},e.prototype.max=function(e,t){Ue("max",t,e.rank);var n=ze(e.shape,t),r=n[0],a=E(n[1]),i=e.as2D(-1,a);return this.reduce(i,"max",i.dtype).reshape(r)},e.prototype.maximum=function(e,t){if(this.shouldExecuteOnCPU([e,t]))return this.cpuBackend.maximum(e,t);var n=new en("\n if (isNaN(a)) return a;\n if (isNaN(b)) return b;\n\n return max(a, b);\n",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.all=function(e,t){Ue("all",t,e.rank);var n=ze(e.shape,t),r=n[0],a=E(n[1]),i=e.as2D(-1,a);return this.reduce(i,"all",i.dtype).reshape(r)},e.prototype.any=function(e,t){Ue("any",t,e.rank);var n=ze(e.shape,t),r=n[0],a=E(n[1]),i=e.as2D(-1,a);return this.reduce(i,"any",i.dtype).reshape(r)},e.prototype.squaredDifference=function(e,t){var n=new en("return (a - b) * (a - b);",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.realDivide=function(e,t){var n=new en("if (a == b) return 1.0;\n return a / b;",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"float32");return this.compileAndRun(n,[e,t],r)},e.prototype.floorDiv=function(e,t){var n=new en("\n float resultSign = sign(a) * sign(b);\n int ia = round(a);\n int ib = round(b);\n int result = ia / ib;\n int amodb = ia - ib * result;\n\n if (resultSign < 0.0 && amodb != 0) {\n result -= 1;\n }\n return float(result);\n",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"int32");return this.compileAndRun(n,[e,t],r)},e.prototype.add=function(e,t){if("complex64"===e.dtype&&"complex64"===t.dtype)return this.complexSeparableBinaryOp(e,t,Zt);var n=new en(Zt,e.shape,t.shape),r=this.makeOutputArray(n.outputShape,At(e.dtype,t.dtype));return this.compileAndRun(n,[e,t],r)},e.prototype.complexSeparableBinaryOp=function(e,t,n){var r=this,a=this.texData.get(e.dataId),i=this.texData.get(t.dataId),o=[[a.complexTensors.real,i.complexTensors.real],[a.complexTensors.imag,i.complexTensors.imag]].map(function(a){var i=a[0],o=a[1],s=new en(n,e.shape,t.shape),u=r.makeOutputArray(s.outputShape,At(i.dtype,o.dtype)),l=r.makeComplexComponentTensorHandle(e,i),c=r.makeComplexComponentTensorHandle(t,o);return r.compileAndRun(s,[l,c],u)}),s=o[0],u=o[1],l=this.complex(s,u);return s.dispose(),u.dispose(),l},e.prototype.makeComplexComponentTensorHandle=function(e,t){return{dataId:t.dataId,dtype:t.dtype,shape:e.shape}},e.prototype.addN=function(e){for(var t=e[0],n=1;n 0.5) {\n return ceil(x);\n } else {\n if (mod(base, 2.0) == 0.0) {\n return base;\n } else {\n return base + 1.0;\n }\n }\n");return this.compileAndRun(t,[e])},e.prototype.exp=function(e){var t=new jr(e.shape,"return exp(x);");return this.compileAndRun(t,[e])},e.prototype.expm1=function(e){var t=new jr(e.shape,"return exp(x) - 1.0;");return this.compileAndRun(t,[e])},e.prototype.log=function(e){var t=new jr(e.shape,"if (x < 0.0) return NAN;\n return log(x);"),n=t.getCustomSetupFunc();return this.compileAndRun(t,[e],null,n)},e.prototype.log1p=function(e){var t=new jr(e.shape,"return log(1.0 + x);");return this.compileAndRun(t,[e])},e.prototype.sqrt=function(e){var t=new jr(e.shape,"return sqrt(x);");return this.compileAndRun(t,[e])},e.prototype.rsqrt=function(e){var t=new jr(e.shape,"return inversesqrt(x);");return this.compileAndRun(t,[e])},e.prototype.square=function(e){var t=new jr(e.shape,"return x * x;");return this.compileAndRun(t,[e])},e.prototype.reciprocal=function(e){var t=new jr(e.shape,"return 1.0 / x;");return this.compileAndRun(t,[e])},e.prototype.relu=function(e){var t=new jr(e.shape,"if (isNaN(x)) return x;\n return (x < 0.0) ? 0.0 : x;\n");return this.compileAndRun(t,[e])},e.prototype.elu=function(e){var t=new jr(e.shape,"return (x >= 0.0) ? x : (exp(x) - 1.0);");return this.compileAndRun(t,[e])},e.prototype.eluDer=function(e,t){var n=new en("return (b >= 1.0) ? a : a * (b + 1.0);",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.selu=function(e){var t=new jr(e.shape,"\n // Stable and Attracting Fixed Point (0, 1) for Normalized Weights.\n // see: https://arxiv.org/abs/1706.02515\n float scaleAlpha = 1.7580993408473768;\n float scale = 1.0507009873554805;\n return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);\n");return this.compileAndRun(t,[e])},e.prototype.int=function(e){var t=new jr(e.shape,"return float(int(x));"),n=this.makeOutputArray(t.outputShape,"int32");return this.compileAndRun(t,[e],n)},e.prototype.clip=function(e,t,n){var r=new function(e,t,n){this.variableNames=["A"],this.outputShape=e,this.userCode="\n void main() {\n float value = getAAtOutCoords();\n if (isNaN(value)) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, float("+t+"), float("+n+")));\n }\n "}(e.shape,t,n);return this.compileAndRun(r,[e])},e.prototype.abs=function(e){var t=new jr(e.shape,"return abs(x);");return this.compileAndRun(t,[e])},e.prototype.complexAbs=function(e){var t=this.texData.get(e.dataId),n=new function(e){this.variableNames=["real","imag"],this.outputShape=e,this.userCode="\n void main() {\n float real = getRealAtOutCoords();\n float imag = getImagAtOutCoords();\n vec2 v = vec2(real, imag);\n\n setOutput(sqrt(dot(v, v)));\n }\n "}(e.shape),r=[this.makeComplexComponentTensorHandle(e,t.complexTensors.real),this.makeComplexComponentTensorHandle(e,t.complexTensors.imag)];return this.compileAndRun(n,r)},e.prototype.sigmoid=function(e){var t=new jr(e.shape,"return 1.0 / (1.0 + exp(-1.0 * x));");return this.compileAndRun(t,[e])},e.prototype.softplus=function(e){var t=new jr(e.shape,"\n float epsilon = 1.1920928955078125e-7;\n float threshold = log(epsilon) + 2.0;\n\n bool too_large = x > -threshold;\n bool too_small = x < threshold;\n\n float result;\n float exp_x = exp(x);\n\n if (too_large){\n result = x;\n }\n else if (too_small){\n result = exp_x;\n }\n else{\n result = log(exp_x + 1.0);\n }\n return result;\n");return this.compileAndRun(t,[e])},e.prototype.sin=function(e){var t=new jr(e.shape,"if (isNaN(x)) return x;\n return sin(x);\n");return this.compileAndRun(t,[e])},e.prototype.cos=function(e){var t=new jr(e.shape,"if (isNaN(x)) return x;\n return cos(x);\n");return this.compileAndRun(t,[e])},e.prototype.tan=function(e){var t=new jr(e.shape,"return tan(x);");return this.compileAndRun(t,[e])},e.prototype.asin=function(e){var t=new jr(e.shape,"return asin(x);");return this.compileAndRun(t,[e])},e.prototype.acos=function(e){var t=new jr(e.shape,"return acos(x);");return this.compileAndRun(t,[e])},e.prototype.atan=function(e){var t=new jr(e.shape,"if (isNaN(x)) return x;\n return atan(x);\n");return this.compileAndRun(t,[e])},e.prototype.atan2=function(e,t){var n=new en("\n if (isNaN(a)) return a;\n if (isNaN(b)) return b;\n\n return atan(a, b);\n",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.sinh=function(e){var t=new jr(e.shape,"\n float e2x = exp(x);\n return (e2x - 1.0 / e2x) / 2.0;\n");return this.compileAndRun(t,[e])},e.prototype.cosh=function(e){var t=new jr(e.shape,"\n float e2x = exp(-x);\n return (e2x + 1.0 / e2x) / 2.0;\n");return this.compileAndRun(t,[e])},e.prototype.tanh=function(e){var t=new jr(e.shape,"\n float e2x = exp(-2.0 * abs(x));\n return sign(x) * (1.0 - e2x) / (1.0 + e2x);\n");return this.compileAndRun(t,[e])},e.prototype.asinh=function(e){var t=new jr(e.shape,"return log(x + sqrt(x * x + 1.0));");return this.compileAndRun(t,[e])},e.prototype.acosh=function(e){var t=new jr(e.shape,"if (isNaN(x)) return x;\n if (x < 1.0) return NAN;\n return log(x + sqrt(x * x - 1.0));"),n=t.getCustomSetupFunc();return this.compileAndRun(t,[e],null,n)},e.prototype.atanh=function(e){var t=new jr(e.shape,"if (isNaN(x)) return x;\n if ((x < -1.0) || (x > 1.0)) return NAN;\n return (log(1.0 + x) - log(1.0 - x)) / 2.0;"),n=t.getCustomSetupFunc();return this.compileAndRun(t,[e],null,n)},e.prototype.erf=function(e){var t=new jr(e.shape,'\n // Error function is calculated approximately with elementary function.\n // See "Handbook of Mathematical Functions with Formulas,\n // Graphs, and Mathematical Tables", Abramowitz and Stegun.\n float p = 0.3275911;\n float a1 = 0.254829592;\n float a2 = -0.284496736;\n float a3 = 1.421413741;\n float a4 = -1.453152027;\n float a5 = 1.061405429;\n\n float t = 1.0 / (1.0 + p * x);\n return 1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x);\n');return this.compileAndRun(t,[e])},e.prototype.step=function(e,t){var n=new jr(e.shape,function(e){return void 0===e&&(e=0),Lr+"\n return x > 0.0 ? 1.0 : float("+e+");\n "}(t));return this.compileAndRun(n,[e])},e.prototype.conv2dWithIm2Row=function(e,t,n){var r=n.filterWidth,a=n.filterHeight,i=n.inChannels,o=n.outWidth,s=n.outHeight,u=r*a*i,l=s*o,c=[u,l],f=e.squeeze([0]),p=t.reshape([u,-1]),h=new function(e,t,n){this.variableNames=["A"],this.outputShape=e;var r=n.filterWidth,a=n.inChannels,i=n.strideWidth,o=n.strideHeight,s=n.padInfo,u=n.outWidth,l=n.dilationWidth,c=n.dilationHeight,f=s.left,p=s.top,h=a*r;this.userCode="\n void main() {\n ivec2 rc = getOutputCoords();\n\n vec4 result = vec4(0);\n\n for(int row=0; row<=1; row++) {\n for(int col=0; col<=1; col++) {\n int blockIndex = rc.y + col;\n int pos = rc.x + row;\n\n if(blockIndex >= "+e[1]+" || pos >= "+e[0]+") continue;\n\n int offsetY = int(blockIndex / ("+u+")) * "+o+" - "+p+";\n int d0 = offsetY + "+c+" * (pos / "+h+");\n\n if(d0 >= "+t[0]+" || d0 < 0) continue;\n\n int offsetX = int(mod(float(blockIndex), "+u+".) * "+i+". - "+f+".);\n int d1 = offsetX + "+l+" * (int(mod(float(pos), "+h+".) / "+a+".));\n\n if(d1 >= "+t[1]+" || d1 < 0) continue;\n\n result[row * 2 + col] = getA(d0, d1, int(mod(float(pos), "+a+".)));\n }\n }\n\n gl_FragColor = result;\n }\n "}(c,f.shape,n),d=this.compileAndRun(h,[f],this.makePackedTensor(c)),m=new Sr(d.shape,p.shape,[l,n.outChannels],!0,!1),g=this.compileAndRun(m,[d,p],this.makePackedTensor(m.outputShape));return!1===ve.get("WEBGL_LAZILY_UNPACK")&&(g=this.unpackTensor(g)),g.reshape([1,s,o,n.outChannels])},e.prototype.conv2d=function(e,t,n){if(ve.get("WEBGL_CONV_IM2COL")&&1===e.shape[0])return this.conv2dWithIm2Row(e,t,n);var r=new function(e){this.variableNames=["x","W"],this.outputShape=e.outShape;var t=e.padInfo.top,n=e.padInfo.left,r=e.strideHeight,a=e.strideWidth,i=e.dilationHeight,o=e.dilationWidth,s=e.filterHeight,u=e.filterWidth,l=4*Math.floor(e.inChannels/4),c=e.inChannels%4;this.userCode="\n const ivec2 strides = ivec2("+r+", "+a+");\n const ivec2 pads = ivec2("+t+", "+n+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d2 = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+s+"; wR++) {\n int xR = xRCorner + wR * "+i+";\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+u+"; wC++) {\n int xC = xCCorner + wC * "+o+";\n\n if (xC < 0 || xC >= "+e.inWidth+") {\n continue;\n }\n\n for (int d1 = 0; d1 < "+l+"; d1 += 4) {\n vec4 xValues = vec4(\n getX(batch, xR, xC, d1),\n getX(batch, xR, xC, d1 + 1),\n getX(batch, xR, xC, d1 + 2),\n getX(batch, xR, xC, d1 + 3)\n );\n vec4 wValues = vec4(\n getW(wR, wC, d1, d2),\n getW(wR, wC, d1 + 1, d2),\n getW(wR, wC, d1 + 2, d2),\n getW(wR, wC, d1 + 3, d2)\n );\n\n dotProd += dot(xValues, wValues);\n }\n\n if ("+(1===c)+") {\n dotProd +=\n getX(batch, xR, xC, "+l+") *\n getW(wR, wC, "+l+", d2);\n } else if ("+(2===c)+") {\n vec2 xValues = vec2(\n getX(batch, xR, xC, "+l+"),\n getX(batch, xR, xC, "+l+" + 1)\n );\n vec2 wValues = vec2(\n getW(wR, wC, "+l+", d2),\n getW(wR, wC, "+l+" + 1, d2)\n );\n dotProd += dot(xValues, wValues);\n } else if ("+(3===c)+") {\n vec3 xValues = vec3(\n getX(batch, xR, xC, "+l+"),\n getX(batch, xR, xC, "+l+" + 1),\n getX(batch, xR, xC, "+l+" + 2)\n );\n vec3 wValues = vec3(\n getW(wR, wC, "+l+", d2),\n getW(wR, wC, "+l+" + 1, d2),\n getW(wR, wC, "+l+" + 2, d2)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.conv2dDerInput=function(e,t,n){var r=new function(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;var t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,i=t-1-e.padInfo.top,o=n-1-e.padInfo.left;this.userCode="\n const ivec2 pads = ivec2("+i+", "+o+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n\n ivec2 dyCorner = coords.yz - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+t+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+e.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+t+" - 1 - wR;\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+a+".0;\n\n if (dyC < 0.0 || dyC >= "+e.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+n+" - 1 - wC;\n\n for (int d2 = 0; d2 < "+e.outChannels+"; d2++) {\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.conv2dDerFilter=function(e,t,n){var r=new function(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;var t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int d2 = coords.w;\n\n // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int b = 0; b < "+e.batchSize+"; b++) {\n for (int yR = 0; yR < "+e.outHeight+"; yR++) {\n int xR = wR + yR * "+t+" - "+r+";\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+e.outWidth+"; yC++) {\n int xC = wC + yC * "+n+" - "+a+";\n\n if (xC < 0 || xC >= "+e.inWidth+") {\n continue;\n }\n\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.depthwiseConv2D=function(e,t,n){var r=new function(e){this.variableNames=["x","W"],this.outputShape=e.outShape;var t=e.inHeight,n=e.inWidth,r=e.padInfo.top,a=e.padInfo.left,i=e.strideHeight,o=e.strideWidth,s=e.dilationHeight,u=e.dilationWidth,l=e.filterHeight,c=e.filterWidth,f=e.outChannels/e.inChannels;this.userCode="\n const ivec2 strides = ivec2("+i+", "+o+");\n const ivec2 pads = ivec2("+r+", "+a+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n ivec2 xRCCorner = coords.yz * strides - pads;\n int d2 = coords.w;\n int d1 = d2 / "+f+";\n int q = d2 - d1 * "+f+";\n\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n // TODO(dsmilkov): Flatten the two for loops and vec4 the operations.\n for (int wR = 0; wR < "+l+"; wR++) {\n int xR = xRCorner + wR * "+s+";\n\n if (xR < 0 || xR >= "+t+") {\n continue;\n }\n\n for (int wC = 0; wC < "+c+"; wC++) {\n int xC = xCCorner + wC * "+u+";\n\n if (xC < 0 || xC >= "+n+") {\n continue;\n }\n\n float xVal = getX(batch, xR, xC, d1);\n float wVal = getW(wR, wC, d1, q);\n dotProd += xVal * wVal;\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.depthwiseConv2DDerInput=function(e,t,n){var r=new function(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;var t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,i=t-1-e.padInfo.top,o=n-1-e.padInfo.left,s=e.outChannels/e.inChannels;this.userCode="\n const ivec2 pads = ivec2("+i+", "+o+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n ivec2 dyCorner = coords.yz - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n float dotProd = 0.0;\n\n for (int wR = 0; wR < "+t+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+e.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+t+" - 1 - wR;\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+a+".0;\n\n if (dyC < 0.0 || dyC >= "+e.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+n+" - 1 - wC;\n\n // TODO: Vec4 over the channelMul\n for (int dm = 0; dm < "+s+"; dm++) {\n int d2 = d1 * "+s+" + dm;\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, dm);\n dotProd += xValue * wValue;\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.depthwiseConv2DDerFilter=function(e,t,n){var r=new function(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;var t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left,i=e.outChannels/e.inChannels;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int dm = coords.w;\n int d2 = d1 * "+i+" + dm;\n\n float dotProd = 0.0;\n\n // TODO: Vec4 over the batch size\n for (int b = 0; b < "+e.batchSize+"; b++) {\n for (int yR = 0; yR < "+e.outHeight+"; yR++) {\n int xR = wR + yR * "+t+" - "+r+";\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+e.outWidth+"; yC++) {\n int xC = wC + yC * "+n+" - "+a+";\n\n if (xC < 0 || xC >= "+e.inWidth+") {\n continue;\n }\n\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.maxPool=function(e,t){var n=new Ir(t,"max",!1),r=this.makeOutputArray(n.outputShape,e.dtype);return this.compileAndRun(n,[e],r)},e.prototype.avgPool=function(e,t){var n=new Ir(t,"avg",!1),r=this.makeOutputArray(n.outputShape,"float32");return this.compileAndRun(n,[e],r)},e.prototype.maxPoolBackprop=function(e,t,n,r){var a=new Ir(r,"max",!0),i=this.compileAndRun(a,[t]),o=new function(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;var t=e.strideHeight,n=e.strideWidth,r=e.dilationHeight,a=e.effectiveFilterHeight,i=e.effectiveFilterWidth,o=a-1-e.padInfo.top,s=i-1-e.padInfo.left,u=a*i-1;this.userCode="\n const ivec2 pads = ivec2("+o+", "+s+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+a+";\n wR += "+r+") {\n float dyR = float(dyRCorner + wR) / "+t+".0;\n\n if (dyR < 0.0 || dyR >= "+e.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+i+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+n+".0;\n\n if (dyC < 0.0 || dyC >= "+e.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n int maxPosValue = "+u+" - int(getMaxPos(b, idyR, idyC, d));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue = wR * "+i+" + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n setOutput(dotProd);\n }\n "}(r),s=this.makeOutputArray(o.outputShape,t.dtype),u=this.compileAndRun(o,[e,i],s);return i.dispose(),u},e.prototype.avgPoolBackprop=function(e,t,n){var r=new function(e){this.variableNames=["dy"],this.outputShape=e.inShape;var t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,i=e.dilationHeight,o=e.dilationWidth,s=e.effectiveFilterHeight,u=e.effectiveFilterWidth,l=s-1-e.padInfo.top,c=u-1-e.padInfo.left,f=1/(t*n);this.userCode="\n const ivec2 pads = ivec2("+l+", "+c+");\n const float avgMultiplier = float("+f+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+s+";\n wR += "+i+") {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+e.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+u+";\n wC+= "+o+") {\n float dyC = float(dyCCorner + wC) / "+a+".0;\n\n if (dyC < 0.0 || dyC >= "+e.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n setOutput(dotProd);\n }\n "}(n),a=this.makeOutputArray(r.outputShape,t.dtype);return this.compileAndRun(r,[e],a)},e.prototype.cast=function(e,t){return Dt(e,t,this)},e.prototype.reshape=function(e,t){return this.texData.get(e.dataId).isPacked&&!er(e.shape,t)?this.packedReshape(e,t):jt(e,t)},e.prototype.resizeBilinear=function(e,t,n,r){var a=new function(e,t,n,r){this.variableNames=["A"],this.outputShape=[];var a=e[0],i=e[1],o=e[2],s=e[3];this.outputShape=[a,t,n,s];var u=[r&&t>1?i-1:i,r&&n>1?o-1:o],l=[r&&t>1?t-1:t,r&&n>1?n-1:n];this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n "+u[0]/l[0]+",\n "+u[1]/l[1]+");\n const vec2 inputShapeRC = vec2("+i+".0, "+o+".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the four integer indices.\n ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);\n ivec2 sourceCeilRC = ivec2(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d);\n float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d);\n float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d);\n float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n float top = topLeft + (topRight - topLeft) * fracRC.y;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n float newValue = top + (bottom - top) * fracRC.x;\n\n setOutput(newValue);\n }\n "}(e.shape,t,n,r);return this.compileAndRun(a,[e])},e.prototype.resizeBilinearBackprop=function(e,t,n){var r=new function(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t.shape;var r=t.shape,a=r[1],i=r[2],o=e.shape,s=o[1],u=o[2],l=[n&&s>1?a-1:a,n&&u>1?i-1:i],c=[n&&s>1?s-1:s,n&&u>1?u-1:u],f=l[0]/c[0],p=l[1]/c[1],h=1/f,d=1/p,m=2*Math.ceil(h)+2,g=2*Math.ceil(d)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float("+f+");\n const float widthScale = float("+p+");\n\n const float invHeightScale = float("+h+");\n const float invWidthScale = float("+d+");\n\n const int winHeight = int("+m+");\n const int winWidth = int("+g+");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(startRLerp - float(winHeight / 2));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(startCLerp - float(winWidth / 2));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= "+s+") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= "+u+") {\n continue;\n }\n\n float dxR = float(dyR) * heightScale;\n int topDxRIndex = int(floor(dxR));\n int bottomDxRIndex = int(min(ceil(dxR), "+(a-1)+".0));\n float dxRLerp = dxR - float(topDxRIndex);\n float inverseDxRLerp = 1.0 - dxRLerp;\n\n float dxC = float(dyC) * widthScale;\n int leftDxCIndex = int(floor(dxC));\n int rightDxCIndex = int(min(ceil(dxC), "+(i-1)+".0));\n float dxCLerp = dxC - float(leftDxCIndex);\n float inverseDxCLerp = 1.0 - dxCLerp;\n\n if (r == topDxRIndex && c == leftDxCIndex) {\n // topLeft\n accumulator +=\n getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp;\n }\n\n if (r == topDxRIndex && c == rightDxCIndex) {\n // topRight\n accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp;\n }\n\n if (r == bottomDxRIndex && c == leftDxCIndex) {\n // bottomLeft\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp;\n }\n\n if (r == bottomDxRIndex && c == rightDxCIndex) {\n // bottomRight\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp;\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n "}(e,t,n);return this.compileAndRun(r,[e])},e.prototype.resizeNearestNeighbor=function(e,t,n,r){var a=new function(e,t,n,r){this.variableNames=["A"],this.outputShape=[];var a=e[0],i=e[1],o=e[2],s=e[3];this.outputShape=[a,t,n,s];var u=[r&&t>1?i-1:i,r&&n>1?o-1:o],l=[r&&t>1?t-1:t,r&&n>1?n-1:n],c=r?"0.5":"0.0";this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n "+u[0]/l[0]+",\n "+u[1]/l[1]+");\n const vec2 inputShapeRC = vec2("+i+".0, "+o+".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestRC = ivec2(\n min(inputShapeRC - 1.0, floor(sourceFracIndexRC + "+c+")));\n\n float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);\n\n setOutput(newValue);\n }\n "}(e.shape,t,n,r);return this.compileAndRun(a,[e])},e.prototype.resizeNearestNeighborBackprop=function(e,t,n){var r=new function(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t.shape;var r=t.shape,a=r[1],i=r[2],o=e.shape,s=o[1],u=o[2],l=[n&&s>1?a-1:a,n&&u>1?i-1:i],c=[n&&s>1?s-1:s,n&&u>1?u-1:u],f=l[0]/c[0],p=l[1]/c[1],h=1/f,d=1/p,m=2*Math.ceil(h)+2,g=2*Math.ceil(d)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float("+f+");\n const float widthScale = float("+p+");\n\n const float invHeightScale = float("+h+");\n const float invWidthScale = float("+d+");\n\n const int winHeight = int("+m+");\n const int winWidth = int("+g+");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(floor(startRLerp - float(winHeight / 2)));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(floor(startCLerp - float(winWidth / 2)));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= "+s+") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= "+u+") {\n continue;\n }\n\n float sourceFracRow =\n float("+l[0]+") *\n (float(dyR) / float("+c[0]+"));\n\n float sourceFracCol =\n float("+l[1]+") *\n (float(dyC) / float("+c[1]+"));\n\n int sourceNearestRow = int(min(\n float(int("+a+") - 1),\n "+n+" ? float(round(sourceFracRow)) :\n float(floor(sourceFracRow))));\n\n int sourceNearestCol = int(min(\n float(int("+i+") - 1),\n "+n+" ? float(round(sourceFracCol)) :\n float(floor(sourceFracCol))));\n\n if (r == sourceNearestRow && c == sourceNearestCol) {\n accumulator += getDy(b, dyR, dyC, d);\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n "}(e,t,n);return this.compileAndRun(r,[e])},e.prototype.multinomial=function(e,t,n,r){var a=t?e:at(e),i=a.shape[0],o=a.shape[1],s=new Or(i,o,n),u=this.makeOutputArray(s.outputShape,"int32"),l=s.getCustomSetupFunc(r);return this.compileAndRun(s,[a],u,l)},e.prototype.oneHot=function(e,t,n,r){var a=new function(e,t,n,r){this.variableNames=["indices"],this.outputShape=[e,t],this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int index = round(getIndices(coords.x));\n setOutput(mix(float("+r+"), float("+n+"),\n float(index == coords.y)));\n }\n "}(e.size,t,n,r);return this.compileAndRun(a,[e])},e.prototype.nonMaxSuppression=function(e,t,n,r,a){return Te("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead"),Vt(e.dataSync(),t.dataSync(),n,r,a)},e.prototype.cropAndResize=function(e,t,n,r,a,i){var o=new function(e,t,n,r,a){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];var i=e[0],o=e[1],s=e[2],u=e[3],l=t[0],c=n[0],f=n[1];this.outputShape=[l,c,f,u];var p="bilinear"===r?1:0,h=[o-1+".0",s-1+".0"],d=h[0],m=h[1],g=c>1?[""+(o-1)/(c-1),"(y2-y1) * height_ratio","y1*"+d+" + float(y)*(height_scale)"]:["0.0","0.0","0.5 * (y1+y2) * "+d],y=g[0],v=g[1],b=g[2],w=f>1?[""+(s-1)/(f-1),"(x2-x1) * width_ratio","x1*"+m+" + float(x)*(width_scale)"]:["0.0","0.0","0.5 * (x1+x2) * "+m],x=w[0],_=w[1],E=w[2];this.userCode="\n const float height_ratio = float("+y+");\n const float width_ratio = float("+x+");\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int y = coords[1];\n int x = coords[2];\n int d = coords[3];\n\n // get box vals\n float y1 = getBoxes(b,0);\n float x1 = getBoxes(b,1);\n float y2 = getBoxes(b,2);\n float x2 = getBoxes(b,3);\n\n // get image in batch index\n int bInd = round(getBoxInd(b));\n if(bInd < 0 || bInd >= "+i+") {\n return;\n }\n\n float height_scale = "+v+";\n float width_scale = "+_+";\n\n float in_y = "+b+";\n if( in_y < 0.0 || in_y > "+d+" ) {\n setOutput(float("+a+"));\n return;\n }\n float in_x = "+E+";\n if( in_x < 0.0 || in_x > "+m+" ) {\n setOutput(float("+a+"));\n return;\n }\n\n vec2 sourceFracIndexRC = vec2(in_y,in_x);\n if("+p+" == 1) {\n // Compute the four integer indices.\n ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);\n ivec2 sourceCeilRC = ivec2(ceil(sourceFracIndexRC));\n\n float topLeft = getImage(b, sourceFloorRC.x, sourceFloorRC.y, d);\n float bottomLeft = getImage(b, sourceCeilRC.x, sourceFloorRC.y, d);\n float topRight = getImage(b, sourceFloorRC.x, sourceCeilRC.y, d);\n float bottomRight = getImage(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n float top = topLeft + (topRight - topLeft) * fracRC.y;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n float newValue = top + (bottom - top) * fracRC.x;\n setOutput(newValue);\n } else {\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestRC = ivec2(floor(\n sourceFracIndexRC + vec2(0.5,0.5)));\n float newValue = getImage(b, sourceNearestRC.x, sourceNearestRC.y, d);\n setOutput(newValue);\n }\n }\n "}(e.shape,t.shape,r,a,i);return this.compileAndRun(o,[e,t,n])},e.prototype.depthToSpace=function(e,t,n){b(t>1,"blockSize should be > 1 for depthToSpace, but was: "+t);var r=e.shape[0],a=("NHWC"===n?e.shape[1]:e.shape[2])*t,i=("NHWC"===n?e.shape[2]:e.shape[3])*t,o=("NHWC"===n?e.shape[3]:e.shape[1])/(t*t),s=new gn("NHWC"===n?[r,a,i,o]:[r,o,a,i],t,n);return this.compileAndRun(s,[e])},e.prototype.split=function(e,t,n){return Wt(e,t,n)},e.prototype.scatterND=function(e,t,n){var r=Ye(0,e,n),a=r.sliceRank,i=r.numUpdates,o=r.sliceSize,s=r.strides,u=r.outputSize,l=[u/o,o],c=e.reshape([i,a]),f=t.reshape([i,o]);if(0===u)return jt(lt([]),n);var p=ct(0),h=new Cr(i,a,c.rank,f.rank,s,l);return this.compileAndRun(h,[f,c,p]).reshape(n)},e.prototype.sparseToDense=function(e,t,n,r){var a=Ye(0,e,n),i=a.sliceRank,o=a.numUpdates,s=a.strides,u=a.outputSize,l=new Cr(o,i,e.rank,t.rank,s,[u,1],!1);return this.compileAndRun(l,[t,e,r]).reshape(n)},e.prototype.fft=function(e){return this.fftImpl(e,!1)},e.prototype.ifft=function(e){return this.fftImpl(e,!0)},e.prototype.fftImpl=function(e,t){var n=this.texData.get(e.dataId),r=new yn("return real * expR - imag * expI;",e.shape,t),a=new yn("return real * expI + imag * expR;",e.shape,t),i=[this.makeComplexComponentTensorHandle(e,n.complexTensors.real),this.makeComplexComponentTensorHandle(e,n.complexTensors.imag)],o=this.compileAndRun(r,i),s=this.compileAndRun(a,i),u=this.complex(o,s).as2D(e.shape[0],e.shape[1]);return o.dispose(),s.dispose(),u},e.prototype.gatherND=function(e,t){var n=t.shape,r=n[n.length-1],a=He(e,t),i=a[0],o=a[1],s=a[2],u=a[3],l=t.reshape([o,r]),c=e.reshape([e.size/s,s]),f=new function(e,t,n){this.sliceDim=e,this.strides=t,this.variableNames=["x","indices"],this.outputShape=n;var r=cn(t.length),a=cn(n.length),i=this.sliceDim>1?"strides[j]":"strides";this.userCode="\n "+r+" strides = "+r+"("+this.strides+");\n void main() {\n "+a+" coords = getOutputCoords();\n int flattenIndex = 0;\n for (int j = 0; j < "+this.sliceDim+"; j++) {\n int index = round(getIndices(coords[0], j));\n flattenIndex += index * "+i+";\n }\n setOutput(getX(flattenIndex, coords[1]));\n }\n "}(r,u,[o,s]);return this.compileAndRun(f,[c,l]).reshape(i)},e.prototype.makeOutputArray=function(e,t){return re.make(e,{},t)},e.prototype.makePackedTensor=function(e){var t=re.make(e,{});return this.texData.get(t.dataId).isPacked=!0,t},e.prototype.unpackTensor=function(e){var t=new Br(e.shape);return this.compileAndRun(t,[e])},e.prototype.getBatchDim=function(e,t){return void 0===t&&(t=2),E(e.slice(0,e.length-t))},e.prototype.getRowsCols=function(e){if(0===e.length)throw Error("Cannot get rows and columns of an empty shape array.");return[e.length>1?e[e.length-2]:1,e[e.length-1]]},e.prototype.packedReshape=function(e,t){var n=e.reshape([this.getBatchDim(e.shape)].concat(this.getRowsCols(e.shape))),r=[this.getBatchDim(t)].concat(this.getRowsCols(t)),a=new function(e,t){this.variableNames=["A"],this.usesPackedTextures=!0,this.outputShape=e;for(var n="",r=0;r<4;r++){var a="thisRC = rc;";r%2==1&&(a+="thisRC.z += 1;"),r>1&&(a+="thisRC.y += 1;"),n+="\n "+a+"\n "+(r>0?"if(thisRC.y < rows && thisRC.z < cols){":"")+"\n int flatIndex = getFlatIndex(thisRC);\n\n ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex);\n vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z));\n\n result["+r+"] =\n getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims);\n "+(r>0?"}":"")+"\n "}this.userCode="\n \n ivec3 inputCoordsFromReshapedOutCoords(int index) {\n "+tn(["r","c","d"],t)+"\n return ivec3(r, c, d);\n }\n \n "+function(e){return"\n int getFlatIndex(ivec3 coords) {\n return round("+function(e,t){if(e.length!==t.length)throw new Error("Vectors to be dotted must be of the same length -got "+e.length+" and "+t.length);for(var n=[],r=Math.floor(e.length/4),a=e.length%4,i=0;i "+t[0];for(var r="",a=e-2;a= "+t[a],a= "+t+";\n bool rEdge = rp1 >= "+n+";\n "}(t,e[e.length-1],e[e.length-2],n),o=function(e,t){var n=e.length,r=function(e,t){for(var n=[],r=0;r<=1;r++)for(var a=0;a<=1;a++){for(var i=(0===r?"r":"rp1")+", "+(0===a?"c":"cp1"),o=2;o= "+e[0]+" ? 0. : getA(rc + 1),\n 0, 0":"getA("+r[0]+"),\n cEdge ? 0. : getA("+r[1]+"),\n rEdge ? 0. : getA("+r[2]+"),\n rEdge || cEdge ? 0. : getA("+r[3]+")"}(e,n);this.userCode="\n void main() {\n "+r+" rc = getOutputCoords();\n\n if("+a+") {\n gl_FragColor = vec4(0);\n } else {\n "+i+"\n\n setOutput(vec4("+o+"));\n }\n }\n "}(t.shape),a=i.compileAndRun(r,[t],i.makePackedTensor(t.shape))),n=i.texData.get(a.dataId),t=a}return i.uploadToGPU(t.dataId),{shape:t.shape,texData:n,isUniform:!1}});this.uploadToGPU(n.dataId);var s,u={shape:n.shape,texData:this.texData.get(n.dataId),isUniform:!1},l=function(e,t,n){var r="";o.concat(n).forEach(function(e){r+=e.shape+"_"+(e.isUniform?"uniform":e.texData.texShape)});var a=e.userCode,i=(!0===e.supportsBroadcasting).toString();return e.constructor.name+"_"+i+"_"+r+"_"+a}(e,0,u),c=this.getAndSaveBinary(l,function(){return function(e,t,n,r){for(var a=t.userCode,i=n.map(function(e,n){var r={logicalShape:e.shape,texShape:e.isUniform?null:e.texData.texShape,isUniform:e.isUniform,isPacked:!e.isUniform&&e.texData.isPacked};return{name:t.variableNames[n],shapeInfo:r}}),o=i.map(function(e){return e.shapeInfo}),s={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.isPacked},u=rn(i,s,a,!0===t.supportsBroadcasting,t.usesPackedTextures),l=e.createProgram(u),c={},f=0;fthis.NUM_BYTES_BEFORE_PAGING)for(var p=this.numBytesInGPU-this.NUM_BYTES_BEFORE_PAGING;p>0&&this.lruDataGPU.length>0;){var h=this.lruDataGPU.shift(),d=this.texData.get(h),m=d.shape,g=d.dtype;p-=this.computeBytes(m,g),this.read(h)}return f&&(s=this.endTimer(s),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(s)})),n},e.prototype.getAndSaveBinary=function(e,t){return e in this.binaryCache||(this.binaryCache[e]=t()),this.binaryCache[e]},e.prototype.getTextureManager=function(){return this.textureManager},e.prototype.dispose=function(){if(!this.disposed){for(var e in this.binaryCache)this.gpgpu.deleteProgram(this.binaryCache[e].webGLProgram);this.textureManager.dispose(),this.canvas.remove(),null!=this.fromPixels2DContext&&this.fromPixels2DContext.canvas.remove(),this.gpgpuCreatedLocally&&this.gpgpu.dispose(),this.disposed=!0}},e.prototype.floatPrecision=function(){var e=this;return ke(function(){return e.abs(ct(1e-8)).get()>0?32:16})},e.prototype.uploadToGPU=function(e){var t=this.texData.get(e),n=t.shape,r=t.values,a=t.texture,i=t.dtype,o=t.usage,s=t.isPacked;if(null==a){var u,l=null!=this.activeTimers;l&&(u=performance.now());var c=Zn(n,s);t.texShape=c;var f=this.acquireTexture(e,c,o,s);if(t.texture=f,null!=r){if(s){var p=E(n.slice(0,n.length-2)),h=n.length>1?n[n.length-2]:1,d=n[n.length-1];this.gpgpu.uploadMatrixToPackedTexture(f,p,h,d,Ma(r,i))}else this.gpgpu.uploadMatrixToTexture(f,c[0],c[1],Ma(r,i));t.values=null,l&&(this.uploadWaitMs+=performance.now()-u)}}else ve.get("WEBGL_PAGING_ENABLED")&&this.lruDataGPU.indexOf(e)>=0&&(this.lruDataGPU.splice(this.lruDataGPU.indexOf(e),1),this.lruDataGPU.push(e))},e.prototype.convertAndCacheOnCPU=function(e,t){var n=this.delayedStorage,r=this.texData.get(e),a=r.texture,i=r.texShape,o=r.dtype,s=r.usage,u=r.isPacked;return n&&null!=a&&(this.releaseTexture(e,a,i,s,u),r.texture=null,r.texShape=null),r.usage=dn.UPLOAD,null!=t&&(r.values=function(e,t){if("float32"===t||"complex64"===t)return e;if("int32"===t||"bool"===t){for(var n="int32"===t?new Int32Array(e.length):new Uint8Array(e.length),r=0;r=0&&this.lruDataGPU.splice(u,1)}this.numBytesInGPU-=this.computeBytes(o,s),this.textureManager.releaseTexture(t,n,r,a)},e.prototype.acquireTexture=function(e,t,n,r){var a=this.texData.get(e),i=a.shape,o=a.dtype;return ve.get("WEBGL_PAGING_ENABLED")&&this.lruDataGPU.push(e),this.numBytesInGPU+=this.computeBytes(i,o),this.textureManager.acquireTexture(t,n,r)},e.prototype.computeBytes=function(e,t){return E(e)*L(t)},e}();function Ma(e,t){return e instanceof Float32Array?e:new Float32Array(e)}ve.get("IS_BROWSER")&&ve.registerBackend("webgl",function(){return new Ta},2,ne);var Ra=rt({abs_:function(e){var t=tt(e,"x","abs");return"complex64"===t.dtype?ve.engine.runKernel(function(e){return e.complexAbs(t)},{$x:t}):ve.engine.runKernel(function(e){return e.abs(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.toFloat().step(-1))}}})}}),Da=rt({acos_:function(e){var t=tt(e,"x","acos");return ve.engine.runKernel(function(e){return e.acos(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(ct(1).sub(t.toFloat().square()).sqrt()).neg()}}})}}),ja=rt({acosh_:function(e){var t=tt(e,"x","acosh");return ve.engine.runKernel(function(e){return e.acosh(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.toFloat().square().sub(ct(1)).sqrt())}}})}}),La=rt({asin_:function(e){var t=tt(e,"x","asin");return ve.engine.runKernel(function(e){return e.asin(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(ct(1).sub(t.toFloat().square()).sqrt())}}})}}),Ba=rt({asinh_:function(e){var t=tt(e,"x","asinh");return ve.engine.runKernel(function(e){return e.asinh(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(ct(1).add(t.toFloat().square()).sqrt())}}})}}),za=rt({atan_:function(e){var t=tt(e,"x","atan");return ve.engine.runKernel(function(e){return e.atan(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(ct(1).add(t.toFloat().square()))}}})}}),Fa=rt({atanh_:function(e){var t=tt(e,"x","atanh");return ve.engine.runKernel(function(e){return e.atanh(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(ct(1).sub(t.toFloat().square()))}}})}}),Va=rt({ceil_:function(e){var t=tt(e,"x","ceil");return ve.engine.runKernel(function(e){return e.ceil(t)},{$x:t},function(e){return{$x:function(){return Ct(e)}}})}}),Ua=rt({clipByValue_:function(e,t,n){var r=tt(e,"x","clipByValue");return b(t<=n,"Error in clip: min ("+t+") must be less than or equal to max ("+n+")."),ve.engine.runKernel(function(e){return e.clip(r,t,n)},{$x:r},function(e){return{$x:function(){return e.where(r.greaterEqual(ct(t)).logicalAnd(r.lessEqual(ct(n))),Ct(e))}}})}}),Wa=rt({cos_:function(e){var t=tt(e,"x","cos");return ve.engine.runKernel(function(e){return e.cos(t)},{$x:t},function(e){return{$x:function(){return t.toFloat().sin().neg().mulStrict(e)}}})}}),qa=rt({cosh_:function(e){var t=tt(e,"x","cosh");return ve.engine.runKernel(function(e){return e.cosh(t)},{$x:t},function(e){return{$x:function(){return t.toFloat().sinh().mulStrict(e)}}})}}),$a=rt({erf_:function(e){var t=tt(e,"x","erf");return b("int32"===t.dtype||"float32"===t.dtype,"Input dtype must be `int32` or `float32`."),"int32"===t.dtype&&(t=t.toFloat()),ve.engine.runKernel(function(e){return e.erf(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(ct(2/Math.sqrt(Math.PI)).mul(t.square().neg().exp()))}}})}}),Ga=rt({exp_:function(e){var t=tt(e,"x","exp");return ve.engine.runKernel(function(e,n){return n(e.exp(t))},{$x:t},function(e,t){var n=t[0];return{$x:function(){return e.mulStrict(n)}}})}}),Ha=rt({expm1_:function(e){var t=tt(e,"x","expm1");return ve.engine.runKernel(function(e){return e.expm1(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.exp())}}})}}),Ka=rt({floor_:function(e){var t=tt(e,"x","floor");return ve.engine.runKernel(function(e){return e.floor(t)},{$x:t},function(e){return{$x:function(){return Ct(e)}}})}}),Xa=rt({log_:function(e){var t=tt(e,"x","log");return ve.engine.runKernel(function(e){return e.log(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.toFloat())}}})}}),Ya=rt({log1p_:function(e){var t=tt(e,"x","log1p");return ve.engine.runKernel(function(e){return e.log1p(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.add(ct(1)))}}})}}),Ja=rt({logSigmoid_:function(e){var t=tt(e,"x","logSigmoid");return ve.engine.runKernel(function(e){return e.softplus(t.neg()).neg()},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.neg().sigmoid())}}})}}),Za=rt({neg_:function(e){var t=tt(e,"x","neg");return ve.engine.runKernel(function(e){return e.neg(t)},{$x:t},function(e){return{$x:function(){return e.neg()}}})}}),Qa=rt({reciprocal_:function(e){var t=tt(e,"x","reciprocal");return ve.engine.runKernel(function(e){return e.reciprocal(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.square().neg())}}})}}),ei=rt({round_:function(e){var t=tt(e,"x","round");return ve.engine.runKernel(function(e){return e.round(t)},{$x:t},function(e){return{$x:function(){return Ct(e)}}})}}),ti=rt({rsqrt_:function(e){var t=tt(e,"x","rsqrt");return ve.engine.runKernel(function(e){return e.rsqrt(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.pow(ct(1.5)).mul(ct(2))).neg()}}})}}),ni=rt({sigmoid_:function(e){var t=tt(e,"x","sigmoid");return ve.engine.runKernel(function(e,n){return n(e.sigmoid(t))},{$x:t},function(e,t){var n=t[0];return{$x:function(){return e.mulStrict(n.mul(ct(1).sub(n)))}}})}}),ri=rt({sign_:function(e){var t=tt(e,"x","sign");return ve.engine.runKernel(function(e){return e.sign(t)},{$x:t},function(e){return{$x:function(){return Ct(e)}}})}}),ai=rt({sin_:function(e){var t=tt(e,"x","sin");return ve.engine.runKernel(function(e){return e.sin(t)},{$x:t},function(e){return{$x:function(){return t.toFloat().cos().mulStrict(e)}}})}}),ii=rt({sinh_:function(e){var t=tt(e,"x","sinh");return ve.engine.runKernel(function(e){return e.sinh(t)},{$x:t},function(e){return{$x:function(){return t.toFloat().cosh().mulStrict(e)}}})}}),oi=rt({softplus_:function(e){var t=tt(e,"x","softplus");return ve.engine.runKernel(function(e){return e.softplus(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.sigmoid())}}})}}),si=rt({sqrt_:function(e){var t=tt(e,"x","sqrt");return ve.engine.runKernel(function(e){return e.sqrt(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.toFloat().sqrt().mul(ct(2)))}}})}}),ui=rt({square_:function(e){var t=tt(e,"x","square");return ve.engine.runKernel(function(e){return e.square(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.toFloat().mul(ct(2)))}}})}}),li=rt({step_:function(e,t){void 0===t&&(t=0);var n=tt(e,"x","step");return ve.engine.runKernel(function(e){return e.step(n,t)},{$x:n},function(e){return{$x:function(){return Ct(e)}}})}}),ci=rt({tan_:function(e){var t=tt(e,"x","tan");return ve.engine.runKernel(function(e){return e.tan(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.cos().square())}}})}}),fi=rt({tanh_:function(e){var t=tt(e,"x","tanh");return ve.engine.runKernel(function(e,n){return n(e.tanh(t))},{$x:t},function(e,t){var n=t[0];return{$x:function(){return ct(1).sub(n.square()).mulStrict(e)}}})}});function pi(e){return null==e?null:0===e.rank?e.as1D():1===e.rank?e:2===e.rank?e.as4D(1,1,e.shape[0],e.shape[1]):3===e.rank?e.as4D(1,e.shape[0],e.shape[1],e.shape[2]):e}var hi=rt({batchNormalization2d_:function(e,t,n,r,a,i){void 0===r&&(r=.001);var o,s,u=tt(e,"x","batchNormalization"),l=tt(t,"mean","batchNormalization"),c=tt(n,"variance","batchNormalization");return null!=a&&(o=tt(a,"scale","batchNormalization")),null!=i&&(s=tt(i,"offset","batchNormalization")),b(2===u.rank,"Error in batchNormalization3D: x must be rank 3 but got rank "+u.rank+"."),b(2===l.rank||1===l.rank,"Error in batchNormalization2D: mean must be rank 2 or rank 1 but got rank "+l.rank+"."),b(2===c.rank||1===c.rank,"Error in batchNormalization2D: variance must be rank 2 or rank 1 but got rank "+c.rank+"."),null!=o&&b(2===o.rank||1===o.rank,"Error in batchNormalization2D: scale must be rank 2 or rank 1 but got rank "+o.rank+"."),null!=s&&b(2===s.rank||1===s.rank,"Error in batchNormalization2D: offset must be rank 2 or rank 1 but got rank "+s.rank+"."),gi(u,l,c,r,o,s)}}),di=rt({batchNormalization3d_:function(e,t,n,r,a,i){void 0===r&&(r=.001);var o,s,u=tt(e,"x","batchNormalization"),l=tt(t,"mean","batchNormalization"),c=tt(n,"variance","batchNormalization");return null!=a&&(o=tt(a,"scale","batchNormalization")),null!=i&&(s=tt(i,"offset","batchNormalization")),b(3===u.rank,"Error in batchNormalization3D: x must be rank 3 but got rank "+u.rank+"."),b(3===l.rank||1===l.rank,"Error in batchNormalization3D: mean must be rank 3 or rank 1 but got rank "+l.rank+"."),b(3===c.rank||1===c.rank,"Error in batchNormalization3D: variance must be rank 3 or rank 1 but got rank "+c.rank+"."),null!=o&&b(3===o.rank||1===o.rank,"Error in batchNormalization3D: scale must be rank 3 or rank 1 but got rank "+o.rank+"."),null!=s&&b(3===s.rank||1===s.rank,"Error in batchNormalization3D: offset must be rank 3 or rank 1 but got rank "+s.rank+"."),gi(u,l,c,r,o,s)}}),mi=rt({batchNormalization4d_:function(e,t,n,r,a,i){void 0===r&&(r=.001);var o,s,u=tt(e,"x","batchNormalization"),l=tt(t,"mean","batchNormalization"),c=tt(n,"variance","batchNormalization");return null!=a&&(o=tt(a,"scale","batchNormalization")),null!=i&&(s=tt(i,"offset","batchNormalization")),b(4===u.rank,"Error in batchNormalization4D: x must be rank 4 but got rank "+u.rank+"."),b(4===l.rank||1===l.rank,"Error in batchNormalization4D: mean must be rank 4 or rank 1 but got rank "+l.rank+"."),b(4===c.rank||1===c.rank,"Error in batchNormalization4D: variance must be rank 4 or rank 1 but got rank "+c.rank+"."),null!=o&&b(4===o.rank||1===o.rank,"Error in batchNormalization4D: scale must be rank 4 or rank 1 but got rank "+o.rank+"."),null!=s&&b(4===s.rank||1===s.rank,"Error in batchNormalization4D: offset must be rank 4 or rank 1 but got rank "+s.rank+"."),gi(u,l,c,r,o,s)}}),gi=rt({batchNormalization_:function(e,t,n,r,a,i){void 0===r&&(r=.001);var o,s,u,l=tt(e,"x","batchNormalization"),c=tt(t,"mean","batchNormalization"),f=tt(n,"variance","batchNormalization");return null!=a&&(o=tt(a,"scale","batchNormalization")),null!=i&&(s=tt(i,"offset","batchNormalization")),b(c.rank===f.rank,"Batch normalization gradient requires mean and variance to have equal ranks."),b(null==s||c.rank===s.rank,"Batch normalization gradient requires mean and offset to have equal ranks."),b(null==o||c.rank===o.rank,"Batch normalization gradient requires mean and scale to have equal ranks."),u=0===l.rank||1===l.rank?l.as4D(1,1,1,l.size):2===l.rank?l.as4D(1,1,l.shape[0],l.shape[1]):3===l.rank?l.as4D(1,l.shape[0],l.shape[1],l.shape[2]):l,ve.engine.runKernel(function(e){return e.batchNormalization(u,pi(c),pi(f),r,pi(o),pi(s))},{$x:l,$mean:c,$variance:f,$scale:o,$offset:s},function(e){var t=null==o?ct(1):o,n=Gt(c.shape,u.shape),a=[];if(1===c.rank){for(var i=0;i=2&&i.rank>=2&&a.rank===i.rank,"Error in matMul: inputs must have the same rank of at least 2, got ranks "+a.rank+" and "+i.rank+"."),b(N(c,f),"Error in matMul: outer dimensions ("+c+") and ("+f+") of Tensors with shapes "+a.shape+" and "+i.shape+" must match."),b(o===s,"Error in matMul: inner shapes ("+o+") and ("+s+") of Tensors with shapes "+a.shape+" and "+i.shape+" and transposeA="+n+" and transposeB="+r+" must match.");var d=a.shape.slice(0,-2).concat([u,l]),m=n?a.as3D(p,o,u):a.as3D(p,u,o),g=r?i.as3D(h,l,s):i.as3D(h,s,l);return ve.engine.runKernel(function(e){return e.batchMatMul(m,g,n,r)},{$a:m,$b:g},function(e){return n||r?!n&&r?{$a:function(){return e.matMul(g.toFloat(),!1,!1)},$b:function(){return e.matMul(m.toFloat(),!0,!1)}}:n&&!r?{$a:function(){return g.toFloat().matMul(e,!1,!0)},$b:function(){return m.toFloat().matMul(e,!1,!1)}}:{$a:function(){return g.toFloat().matMul(e,!0,!0)},$b:function(){return e.matMul(m.toFloat(),!0,!0)}}:{$a:function(){return e.matMul(g.toFloat(),!1,!0)},$b:function(){return m.toFloat().matMul(e,!0,!1)}}}).reshape(d)}}),Si=rt({dot_:function(e,t){var n=tt(e,"t1","dot"),r=tt(t,"t2","dot");b(!(1!==n.rank&&2!==n.rank||1!==r.rank&&2!==r.rank),"Error in dot: inputs must all be rank 1 or 2, but got ranks "+n.rank+" and "+r.rank+".");var a=1===n.rank?n.size:n.shape[1],i=1===r.rank?r.size:r.shape[0];return b(a===i,"Error in dot: inner dimensions of inputs must match, but got "+a+" and "+i+"."),1===n.rank&&1===r.rank?n.as2D(1,-1).matMul(r.as2D(-1,1)).asScalar():1===n.rank&&2===r.rank?n.as2D(1,-1).matMul(r.as2D(r.shape[0],r.shape[1])).as1D():2===n.rank&&1===r.rank?n.matMul(r.as2D(-1,1)).as1D():n.matMul(r.as2D(r.shape[0],r.shape[1]))}}),Oi=rt({outerProduct_:function(e,t){var n=tt(e,"v1","outerProduct"),r=tt(t,"v2","outerProduct");return b(1===n.rank&&1===r.rank,"Error in outerProduct: inputs must be rank 1, but got ranks "+n.rank+" and "+r.rank+"."),n.as2D(-1,1).matMul(r.as2D(1,-1))}});function ki(e,t,n,r,a,i){b(e.length===t.rank,"Length of inShape ("+e.length+") and rank of dy ("+t.rank+") must match");var o=e,s=t,u=!1;3===t.rank&&(u=!0,s=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]),o=[1,e[0],e[1],e[2]]);var l=o[3],c=s.shape[3];b(4===o.length,"Error in conv2dDerInput: inShape must be length 4, but got length "+o.length+"."),b(4===s.rank,"Error in conv2dDerInput: dy must be rank 4, but got rank "+s.rank),b(4===n.rank,"Error in conv2dDerInput: filter must be rank 4, but got rank "+n.rank),b(l===n.shape[2],"Error in conv2dDerInput: depth of input ("+l+") must match input depth for filter "+n.shape[2]+"."),b(c===n.shape[3],"Error in conv2dDerInput: depth of output ("+c+") must match output depth for filter "+n.shape[3]+"."),null!=i&&b(S(a),"Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+a+".");var f=vi(o,n.shape,r,1,a,i),p=ve.engine.runKernel(function(e){return e.conv2dDerInput(s,n,f)},{dy4D:s,filter:n},function(e){return{dy4D:function(){return Pi(e,n,r,a,"NHWC",1,i)},filter:function(){return Ai(e,s,n.shape,r,a,i)}}});return u?p.as3D(p.shape[1],p.shape[2],p.shape[3]):p}function Ii(e,t,n,r,a,i){var o=e;3===e.rank&&(o=e.as4D(1,e.shape[0],e.shape[1],e.shape[2]));var s=t;3===s.rank&&(s=t.as4D(1,t.shape[0],t.shape[1],t.shape[2])),b(4===o.rank,"Error in conv2dDerFilter: input must be rank 4, but got shape "+o.shape+"."),b(4===s.rank,"Error in conv2dDerFilter: dy must be rank 4, but got shape "+s.shape+"."),b(4===n.length,"Error in conv2dDerFilter: filterShape must be length 4, but got "+n+"."),b(o.shape[3]===n[2],"Error in conv2dDerFilter: depth of input "+o.shape[3]+") must match input depth in filter ("+n[2]+"."),b(s.shape[3]===n[3],"Error in conv2dDerFilter: depth of dy ("+s.shape[3]+") must match output depth for filter ("+n[3]+")."),null!=i&&b(S(a),"Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+a+".");var u=vi(o.shape,n,r,1,a,i);return ve.engine.runKernel(function(e){return e.conv2dDerFilter(o,s,u)},{x4D:o,dy4D:s})}var Ci=rt({conv1d_:function(e,t,n,r,a,i,o){void 0===a&&(a="NWC"),void 0===i&&(i=1);var s=tt(e,"x","conv1d"),u=tt(t,"filter","conv1d"),l=s,c=!1;2===s.rank&&(c=!0,l=s.as3D(1,s.shape[0],s.shape[1])),b(3===l.rank,"Error in conv1d: input must be rank 3, but got rank "+l.rank+"."),b(3===u.rank,"Error in conv1d: filter must be rank 3, but got rank "+u.rank+"."),null!=o&&b(S(r),"Error in conv1d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+"."),b(l.shape[2]===u.shape[1],"Error in conv1d: depth of input ("+l.shape[2]+") must match input depth for filter "+u.shape[1]+"."),b(Ei(n,i),"Error in conv1D: Either stride or dilation must be 1. Got stride "+n+" and dilation '"+i+"'"),b("NWC"===a,"Error in conv1d: got dataFormat of "+a+" but only NWC is currently supported.");var f=u.as4D(1,u.shape[0],u.shape[1],u.shape[2]),p=l.as4D(l.shape[0],1,l.shape[1],l.shape[2]),h=Pi(p,f,[1,n],r,"NHWC",[1,i],o);return c?h.as2D(h.shape[2],h.shape[3]):h.as3D(h.shape[0],h.shape[2],h.shape[3])}}),Pi=rt({conv2d_:function(e,t,n,r,a,i,o){void 0===a&&(a="NHWC"),void 0===i&&(i=[1,1]);var s=tt(e,"x","conv2d"),u=tt(t,"filter","conv2d"),l=s,c=!1;3===s.rank&&(c=!0,l=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),b(4===l.rank,"Error in conv2d: input must be rank 4, but got rank "+l.rank+"."),b(4===u.rank,"Error in conv2d: filter must be rank 4, but got rank "+u.rank+"."),null!=o&&b(S(r),"Error in conv2d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+"."),b(l.shape[3]===u.shape[2],"Error in conv2d: depth of input ("+l.shape[3]+") must match input depth for filter "+u.shape[2]+"."),b(Ei(n,i),"Error in conv2D: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+i+"'"),b("NHWC"===a,"Error in conv2d: got dataFormat of "+a+" but only NHWC is currently supported.");var f,p=vi(l.shape,u.shape,n,i,r,o);if(1!==p.filterHeight||1!==p.filterWidth||1!==p.dilationHeight||1!==p.dilationWidth||1!==p.strideHeight||1!==p.strideWidth||"SAME"!==p.padInfo.type&&"VALID"!==p.padInfo.type)f=ve.engine.runKernel(function(e){return e.conv2d(l,u,p)},{x:l,$filter:u},function(e){return b(_i(i),"Error in gradient of conv2D: dilation rates greater than 1 are notyet supported in gradients. Got dilations '"+i+"'"),{x:function(){return ki(l.shape,e,u,n,r)},$filter:function(){return Ii(l,e,u.shape,n,r)}}});else{var h=l.reshape([-1,p.inChannels]),d=u.reshape([p.inChannels,p.outChannels]);f=Ni(h,d).reshape(p.outShape)}return c?f.as3D(f.shape[1],f.shape[2],f.shape[3]):f}}),Ai=rt({conv2dDerFilter_:Ii}),Ti=rt({depthwiseConv2d_:function(e,t,n,r,a,i,o){void 0===a&&(a="NHWC"),void 0===i&&(i=[1,1]);var s=tt(e,"x","depthwiseConv2d"),u=tt(t,"filter","depthwiseConv2d"),l=s,c=!1;3===s.rank&&(c=!0,l=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),b(4===l.rank,"Error in depthwiseConv2d: input must be rank 4, but got rank "+l.rank+"."),b(4===u.rank,"Error in depthwiseConv2d: filter must be rank 4, but got rank "+u.rank+"."),b(l.shape[3]===u.shape[2],"Error in depthwiseConv2d: number of input channels ("+l.shape[3]+") must match the inChannels dimension in filter "+u.shape[2]+"."),null==i&&(i=[1,1]),b(Ei(n,i),"Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+i+"'"),null!=o&&b(S(r),"Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+".");var f=vi(l.shape,u.shape,n,i,r,o,!0),p=ve.engine.runKernel(function(e){return e.depthwiseConv2D(l,u,f)},{x:l,$filter:u},function(e){return b(_i(i),"Error in gradient of depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '"+i+"'"),{x:function(){return function(e,t,n,r){var a=t,i=!1;3===t.rank&&(i=!0,a=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]));var o=ve.engine.runKernel(function(e){return e.depthwiseConv2DDerInput(a,n,r)},{dy4D:a});return i?o.as3D(o.shape[1],o.shape[2],o.shape[3]):o}(l.shape,e,u,f)},$filter:function(){return function(e,t,n,r){var a=e;3===e.rank&&(a=e.as4D(1,e.shape[0],e.shape[1],e.shape[2]));var i=t;return 3===i.rank&&(i=t.as4D(1,t.shape[0],t.shape[1],t.shape[2])),ve.engine.runKernel(function(e){return e.depthwiseConv2DDerFilter(a,i,r)},{x4D:a,dy4D:i})}(l,e,u.shape,f)}}});return c?p.as3D(p.shape[1],p.shape[2],p.shape[3]):p}}),Mi=rt({separableConv2d_:function(e,t,n,r,a,i,o){void 0===i&&(i=[1,1]),void 0===o&&(o="NHWC");var s=tt(e,"x","separableConv2d"),u=tt(t,"depthwiseFilter","separableConv2d"),l=tt(n,"pointwiseFilter","separableConv2d"),c=s,f=!1;if(3===s.rank&&(f=!0,c=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),"NCHW"===o)throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");b(4===c.rank,"Error in separableConv2d: input must be rank 4, but got rank "+c.rank+"."),b(4===u.rank,"Error in separableConv2d: depthwise filter must be rank 4, but got rank "+u.rank+"."),b(4===l.rank,"Error in separableConv2d: pointwise filter must be rank 4, but got rank "+u.rank+"."),b(1===l.shape[0],"Error in separableConv2d: the first dimension of pointwise filter must be 1, but got "+l.shape[0]+"."),b(1===l.shape[1],"Error in separableConv2d: the second dimension of pointwise filter must be 1, but got "+l.shape[1]+".");var p=u.shape[2],h=u.shape[3];b(l.shape[2]===p*h,"Error in separableConv2d: the third dimension of pointwise filter must be "+p*h+", but got "+l.shape[2]+".");var d=Ti(c,u,r,a,o,i),m=Pi(d,l,1,"valid",o);return f?m.as3D(m.shape[1],m.shape[2],m.shape[3]):m}}),Ri=rt({conv2dTranspose_:function(e,t,n,r,a,i){return ki(n,tt(e,"x","conv2dTranspose"),tt(t,"filter","conv2dTranspose"),r,a,i)}}),Di=rt({reverse_:function(e,t){var n=tt(e,"x","reverse");if(0===n.rank)return n.clone();var r=Ve(t,n.shape);return ve.engine.runKernel(function(e){return e.reverse(n,r)},{$x:n},function(e){return{$x:function(){return e.reverse(r)}}}).reshapeAs(n)}}),ji=rt({reverse1d_:function(e){var t=tt(e,"x","reverse");return b(1===t.rank,"Error in reverse1D: x must be rank 1 but got\n rank "+t.rank+"."),Di(t,0)}}),Li=rt({reverse2d_:function(e,t){var n=tt(e,"x","reverse");return b(2===n.rank,"Error in reverse2D: x must be rank 2 but got\n rank "+n.rank+"."),Di(n,t)}}),Bi=rt({reverse3d_:function(e,t){var n=tt(e,"x","reverse");return b(3===n.rank,"Error in reverse3D: x must be rank 3 but got\n rank "+n.rank+"."),Di(n,t)}}),zi=rt({reverse4d_:function(e,t){var n=tt(e,"x","reverse");return b(4===n.rank,"Error in reverse4D: x must be rank 4 but got\n rank "+n.rank+"."),Di(n,t)}});function Fi(e,t,n,r,a,i){var o=tt(e,"x","maxPool"),s=o,u=!1;3===o.rank&&(u=!0,s=o.as4D(1,o.shape[0],o.shape[1],o.shape[2])),null==r&&(r=[1,1]),b(4===s.rank,"Error in maxPool: input must be rank 4 but got rank "+s.rank+"."),b(Ei(n,r),"Error in maxPool: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+r+"'"),null!=i&&b(S(a),"Error in maxPool: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+a+".");var l=yi(s.shape,t,n,r,a,i),c=ve.engine.runKernel(function(e,t){return t(e.maxPool(s,l))},{x:s},function(e,i){var o=i[0];return{x:function(){return function(e,t,n,r,a,i,o,s){var u=tt(e,"dy","maxPoolBackprop"),l=tt(t,"input","maxPoolBackprop"),c=tt(n,"output","maxPoolBackprop");b(l.rank===u.rank,"Rank of input ("+l.rank+") does not match rank of dy ("+u.rank+")"),null==i&&(i=[1,1]),b(Ei(a,i),"Error in maxPoolBackProp: Either strides or dilations must be 1. Got strides "+a+" and dilations '"+i+"'"),b(4===u.rank,"Error in maxPoolBackprop: dy must be rank 4 but got rank "+u.rank+"."),b(4===l.rank,"Error in maxPoolBackprop: input must be rank 4 but got rank "+l.rank+".");var f=yi(l.shape,r,a,i,o,s);return ve.engine.runKernel(function(e){return e.maxPoolBackprop(u,l,c,f)},{$dy:u,$input:l})}(e,s,o,t,n,r,a)}}});return u?c.as3D(c.shape[1],c.shape[2],c.shape[3]):c}function Vi(e,t,n,r,a,i){var o=tt(e,"x","avgPool");b("float32"===o.dtype,"The input dtype to avgPool must be float32"),null==r&&(r=[1,1]),b(Ei(n,r),"Error in avgPool: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+r+"'");var s=o,u=!1;3===o.rank&&(u=!0,s=o.as4D(1,o.shape[0],o.shape[1],o.shape[2])),b(4===s.rank,"Error in avgPool: x must be rank 4 but got rank "+s.rank+"."),null!=i&&b(S(a),"Error in avgPool: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+a+".");var l=yi(s.shape,t,n,r,a),c=ve.engine.runKernel(function(e){return e.avgPool(s,l)},{x:s},function(e){return{x:function(){return function(e,t,n,r,a,i){var o=tt(e,"dy","avgPoolBackprop"),s=tt(t,"input","avgPoolBackprop");b(s.rank===o.rank,"Rank of input ("+s.rank+") does not match rank of dy ("+o.rank+")"),null==a&&(a=[1,1]),b(Ei(r,a),"Error in avgPoolBackprop: Either strides or dilations must be 1. Got strides "+r+" and dilations '"+a+"'");var u=s,l=o,c=!1;3===s.rank&&(c=!0,u=s.as4D(1,s.shape[0],s.shape[1],s.shape[2]),l=o.as4D(1,o.shape[0],o.shape[1],o.shape[2])),b(4===l.rank,"Error in avgPoolBackprop: dy must be rank 4 but got rank "+l.rank+"."),b(4===u.rank,"Error in avgPoolBackprop: input must be rank 4 but got rank "+u.rank+".");var f=yi(u.shape,n,r,a,i),p=ve.engine.runKernel(function(e){return e.avgPoolBackprop(l,u,f)},{dy4D:l,input4D:u});return c?p.as3D(p.shape[1],p.shape[2],p.shape[3]):p}(e,s,t,n,r,a)}}});return c=c.cast(o.dtype),u?c.as3D(c.shape[1],c.shape[2],c.shape[3]):c}var Ui=rt({maxPool_:function(e,t,n,r,a){return Fi(e,t,n,1,r,a)}}),Wi=rt({avgPool_:function(e,t,n,r,a){return Vi(e,t,n,1,r,a)}}),qi=rt({pool_:function(e,t,n,r,a,i){null==a&&(a=[1,1]),null==i&&(i=1),0===r&&(r="valid");var o=tt(e,"x","maxPool"),s=o,u=!1;3===o.rank&&(u=!0,s=o.as4D(1,o.shape[0],o.shape[1],o.shape[2])),b(Ei(i,a),"Error in pool: Either strides or dilations must be 1. Got strides "+i+" and dilations '"+a+"'");var l,c=yi(s.shape,t,i,a,r),f=[c.dilationHeight,c.dilationWidth];l="same"===r?function(e,t){var n=e.map(function(e,n){return e+(e-1)*(t[n]-1)}).map(function(e){return e-1}),r=n.map(function(e){return Math.floor(e/2)}),a=n.map(function(e,t){return e-r[t]});return n.map(function(e,t){return[r[t],a[t]]})}([c.filterHeight,c.filterWidth],f):[[0,0],[0,0]];var p=1===f[0]&&1===f[1],h=function(e,t,n){var r=n.map(function(e){return e[0]}),a=n.map(function(e){return e[1]}),i=e.concat(r,a),o=t.map(function(e,t){return(e-i[t]%e)%e}),s=a.map(function(e,t){return e+o[t]});return[t.map(function(e,t){return[r[t],s[t]]}),t.map(function(e,t){return[0,o[t]]})]}([c.inHeight,c.inWidth],f,l),d=h[0],m=h[1],g=p?r:"valid",y=p?s:Ea(s,f,d),v=("avg"===n?function(){return Vi(y,t,i,1,g)}:function(){return Fi(y,t,i,1,g)})(),w=p?v:aa(v,f,m);return u?w.as3D(w.shape[1],w.shape[2],w.shape[3]):w}}),$i=rt({slice_:function(e,t,n){var r,a,i=tt(e,"x","slice");if(0===i.rank)throw new Error("Slicing scalar is not possible");r="number"==typeof t?[t].concat(new Array(i.rank-1).fill(0)):t.length=0?e:(b(-1===e,"Bad value in size"),i.shape[t]-r[t])}),function(e,t,n){b(e.rank===t.length,"Error in slice"+e.rank+"D: Length of begin "+t+" must match the rank of the array ("+e.rank+")."),b(e.rank===n.length,"Error in slice"+e.rank+"D: Length of size "+n+" must match the rank of the array ("+e.rank+").");for(var r=0;r0&&(t=t.sum(r)),t.reshape(n.shape)},$b:function(){var t=e,n=Gt(r.shape,a);return n.length>0&&(t=t.sum(n)),t.reshape(r.shape)}}})}}),_o=rt({addN_:function(e){b(Array.isArray(e),function(){return"The argument passed to tf.addN() must be a list of tensors"}),b(e.length>=1,function(){return"Must pass at least one tensor to tf.addN(), but got "+e.length});var t=e.map(function(e,t){return tt(e,"tensors"+t,"addN")}),n=t[0];t.forEach(function(e){if(e.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(function(e){if(!N(e.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});var r=t;return ve.engine.runKernel(function(e){return e.addN(t)},r,function(e){var n={};return t.forEach(function(t,r){n[r]=function(){return e.clone()}}),n})}}),Eo=rt({addStrict_:function(e,t){return w(e.shape,t.shape,"Error in addStrict: "),e.add(t)}}),No=rt({atan2_:function(e,t){var n=tt(e,"a","atan2"),r=tt(t,"b","atan2");oe(n,r);var a=Ht(n.shape,r.shape);return ve.engine.runKernel(function(e){return e.atan2(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=xo(n.square(),r.square()),i=e.mul(r.div(t)),o=Gt(n.shape,a);return o.length>0&&(i=i.sum(o)),i.reshape(n.shape)},$b:function(){var t=xo(n.square(),r.square()),i=Za(e.mul(n.div(t))),o=Gt(r.shape,a);return o.length>0&&(i=i.sum(o)),i.reshape(r.shape)}}})}}),So=rt({div_:function(e,t){var n,r=tt(e,"a","div"),a=tt(t,"b","div");if(oe(r,a),"int32"===r.dtype&&"int32"===a.dtype)return ko(r,a);n=function(e){return e.realDivide(r,a)};var i=Ht(r.shape,a.shape);return ve.engine.runKernel(n,{$a:r,$b:a},function(e){return{$a:function(){var t=e.div(a.toFloat()),n=Gt(r.shape,i);return n.length>0?t.sum(n).reshape(r.shape):t},$b:function(){var t=e.mul(r.toFloat()),n=Gt(a.shape,i);n.length>0&&(t=t.sum(n).reshape(a.shape));var o=a.square();return t.div(o.toFloat()).neg()}}})}}),Oo=rt({divStrict_:function(e,t){return w(e.shape,t.shape,"Error in divideStrict: "),e.div(t)}}),ko=rt({floorDiv_:function(e,t){var n=tt(e,"a","floorDiv"),r=tt(t,"b","floorDiv");oe(n,r);var a=Ht(n.shape,r.shape);return ve.engine.runKernel(function(e){return e.floorDiv(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=e.div(r.toFloat()),i=Gt(n.shape,a);return i.length>0?t.sum(i).reshape(n.shape):t},$b:function(){var t=e.mul(n.toFloat()),i=Gt(r.shape,a);i.length>0&&(t=t.sum(i).reshape(r.shape));var o=r.square();return t.div(o.toFloat()).neg()}}})}}),Io=rt({maximum_:function(e,t){var n=tt(e,"a","maximum"),r=tt(t,"b","maximum");return oe(n,r),"bool"===n.dtype&&(n=n.toInt()),"bool"===r.dtype&&(r=r.toInt()),Ht(n.shape,r.shape),ve.engine.runKernel(function(e){return e.maximum(n,r)},{$a:n,$b:r},function(e){return{$a:function(){return e.mul(n.greaterEqual(r).toFloat())},$b:function(){return e.mul(n.less(r).toFloat())}}})}}),Co=rt({maximumStrict_:function(e,t){return w(e.shape,t.shape,"Error in maximumStrict: "),e.maximum(t)}}),Po=rt({minimum_:function(e,t){var n=tt(e,"a","minimum"),r=tt(t,"b","minimum");return oe(n,r),"bool"===n.dtype&&(n=n.toInt()),"bool"===r.dtype&&(r=r.toInt()),Ht(n.shape,r.shape),ve.engine.runKernel(function(e){return e.minimum(n,r)},{$a:n,$b:r},function(e){return{$a:function(){return e.mul(n.lessEqual(r).toFloat())},$b:function(){return e.mul(n.greater(r).toFloat())}}})}}),Ao=rt({minimumStrict_:function(e,t){return w(e.shape,t.shape,"Error in minimumStrict: "),e.minimum(t)}}),To=rt({mod_:function(e,t){var n=tt(e,"a","mod"),r=tt(t,"b","mod");oe(n,r);var a=Ht(n.shape,r.shape);return ve.engine.runKernel(function(e){return e.mod(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=Gt(n.shape,a);return t.length>0?e.sum(t).reshape(n.shape):e},$b:function(){var t=e.mul(n.div(r).floor().neg()),i=Gt(r.shape,a);return i.length>0?t.sum(i).reshape(r.shape):t}}})}}),Mo=rt({modStrict_:function(e,t){return w(e.shape,t.shape,"Error in modStrict: "),e.mod(t)}}),Ro=rt({mul_:function(e,t){var n=tt(e,"a","mul"),r=tt(t,"b","mul");oe(n,r);var a=Ht(n.shape,r.shape);return ve.engine.runKernel(function(e){return e.multiply(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=e.mul(r.toFloat()),i=Gt(n.shape,a);return i.length>0?t.sum(i).reshape(n.shape):t},$b:function(){var t=e.mul(n.toFloat()),i=Gt(r.shape,a);return i.length>0?t.sum(i).reshape(r.shape):t}}})}}),Do=rt({mulStrict_:function(e,t){return w(e.shape,t.shape,"Error in multiplyStrict: "),e.mul(t)}}),jo=rt({pow_:function(e,t){var n=tt(e,"base","pow"),r=tt(t,"exp","pow"),a=Ht(n.shape,r.shape);return e=n.cast(At(n.dtype,r.dtype)),t=r.cast(At(n.dtype,r.dtype)),ve.engine.runKernel(function(e,t){return t(e.pow(n,r))},{$base:n,$exp:r},function(e,t){var i=t[0];return{$base:function(){var t=r.toFloat(),i=e.mul(t.mul(n.pow(t.sub(ct(1))))),o=Gt(n.shape,a);return o.length>0&&(i=i.sum(o)),i.reshape(n.shape)},$exp:function(){var t=e.mul(i.mul(n.log()).toFloat()),o=Gt(r.shape,a);return o.length>0&&(t=t.sum(o)),t.reshape(r.shape)}}})}}),Lo=rt({powStrict_:function(e,t){return w(e.shape,t.shape,"Error in powStrict: "),e.pow(t)}}),Bo=rt({squaredDifference_:function(e,t){var n=tt(e,"a","squaredDifference"),r=tt(t,"b","squaredDifference");return oe(n,r),Ht(n.shape,r.shape),ve.engine.runKernel(function(e){return e.squaredDifference(n,r)},{$a:n,$b:r},function(e){var t=ct(2);return{$a:function(){return e.mul(n.sub(r).mul(t))},$b:function(){return e.mul(r.sub(n).mul(t))}}})}}),zo=rt({squaredDifferenceStrict_:function(e,t){return w(e.shape,t.shape,"Error in squaredDifferenceStrict: "),e.squaredDifference(t)}}),Fo=rt({sub_:function(e,t){var n=tt(e,"a","sub"),r=tt(t,"b","sub");oe(n,r);var a=Ht(n.shape,r.shape);return ve.engine.runKernel(function(e){return e.subtract(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=e,r=Gt(n.shape,a);return r.length>0&&(t=t.sum(r)),t.reshape(n.shape)},$b:function(){var t=e,n=Gt(r.shape,a);return n.length>0&&(t=t.sum(n)),t.neg().reshape(r.shape)}}})}}),Vo=rt({subStrict_:function(e,t){return w(e.shape,t.shape,"Error in subStrict: "),e.sub(t)}}),Uo=rt({logicalAnd_:function(e,t){var n=tt(e,"a","logicalAnd","bool"),r=tt(t,"b","logicalAnd","bool");return b("bool"===n.dtype&&"bool"===r.dtype,"Error Array must be of type bool."),Ht(n.shape,r.shape),ve.engine.runKernel(function(e){return e.logicalAnd(n,r)},{$a:n,$b:r})}}),Wo=rt({logicalNot_:function(e){var t=tt(e,"x","logicalNot","bool");return b("bool"===t.dtype,"Error Array must be of type bool."),ve.engine.runKernel(function(e){return e.logicalNot(t)},{$x:t})}}),qo=rt({logicalOr_:function(e,t){var n=tt(e,"a","logicalOr","bool"),r=tt(t,"b","logicalOr","bool");return b("bool"===n.dtype&&"bool"===r.dtype,"Error Array must be of type bool."),Ht(n.shape,r.shape),ve.engine.runKernel(function(e){return e.logicalOr(n,r)},{$a:n,$b:r})}}),$o=rt({logicalXor_:function(e,t){var n=tt(e,"a","logicalXor","bool"),r=tt(t,"b","logicalXor","bool");return b("bool"===n.dtype&&"bool"===r.dtype,"Error Array must be of type bool."),Ht(n.shape,r.shape),qo(e,t).logicalAnd(Uo(e,t).logicalNot())}}),Go=rt({where_:function(e,t,n){var r=tt(t,"a","where"),a=tt(n,"b","where"),i=tt(e,"condition","where","bool");return b("bool"===i.dtype,"Error Condition must be of type bool."),w(r.shape,a.shape,"Error in where: "),1===i.rank?b(i.shape[0]===r.shape[0],"The first dimension of `a` must match the size of `condition`."):w(i.shape,a.shape,"Error in where: "),ve.engine.runKernel(function(e){return e.select(i,r,a)},{$condition:i,$a:r,$b:a},function(e){return{$condition:function(){return Ct(i)},$a:function(){return e.mul(i.cast(r.dtype))},$b:function(){return e.mul(i.logicalNot().cast(a.dtype))}}})}}),Ho=function(e){return l(this,void 0,void 0,function(){var t,n,r;return c(this,function(a){switch(a.label){case 0:return b("bool"===(t=tt(e,"condition","where","bool")).dtype,"Condition must be of type bool."),[4,t.data()];case 1:return n=a.sent(),r=Pa(t.shape,n),e!==t&&t.dispose(),[2,r]}})})},Ko=rt({elu_:function(e){var t=tt(e,"x","elu");return ve.engine.runKernel(function(e,n){return n(e.elu(t))},{$x:t},function(e,t){var n=t[0];return{$x:function(){return ve.engine.runKernel(function(t){return t.eluDer(e,n)},{dy:e,y:n})}}})}}),Xo=rt({leakyRelu_:function(e,t){void 0===t&&(t=.2);var n=tt(e,"x","leakyRelu");return Io(ct(t).mul(n),n)}}),Yo=rt({prelu_:function(e,t){var n=tt(e,"x","prelu"),r=tt(t,"alpha","prelu"),a=ct(0);return Io(a,n).add(r.mul(Po(a,n)))}}),Jo=rt({relu_:function(e){var t=tt(e,"x","relu");return"bool"===t.dtype?t.toInt():ve.engine.runKernel(function(e){return e.relu(t)},{$x:t},function(e){var n=t.step();return{$x:function(){return e.mulStrict(n.toFloat())}}})}}),Zo=rt({selu_:function(e){var t=tt(e,"x","selu");return ve.engine.runKernel(function(e){return e.selu(t)},{$x:t},function(e){return{$x:function(){var n=t.greater(ct(0)),r=ct(Rr),a=ct(Dr),i=e.mul(a),o=e.mul(r).mul(t.toFloat().exp());return Go(n,i,o)}}})}}),Qo=rt({transpose_:function(e,t){var n=tt(e,"x","transpose");return null==t&&(t=n.shape.map(function(e,t){return t}).reverse()),b(n.rank===t.length,"Error in transpose: rank of input "+n.rank+" must match length of perm "+t+"."),t.forEach(function(e){b(e>=0&&ea)throw new Error("'k' passed to topk() must be <= the last dimension ("+a+") but got "+t);var i=ve.engine.runKernel(function(e){return e.topk(r,t,n)},{$x:r});return{values:i[0],indices:i[1]}}}),ps=rt({scatterND_:function(e,t,n){var r=tt(e,"indices","scatterND","int32"),a=tt(t,"updates","scatterND");return function(e,t,n){if(t.rank<1)throw new Error("tf.scatterND() expects the indices to be rank 1 or higher, but the rank was "+t.rank+".");if(e.rank<1)throw new Error("tf.scatterND() expects the updates to be rank 1 or higher, but the rank was "+e.rank+".");if("int32"!==t.dtype)throw new Error("The dtype of 'indices' should be int32, but got dtype: "+t.dtype);if(n.length<1)throw new Error("Output rank must be greater or equal to 1, but got shape: "+n);if(0===n.length){if(0===t.size)throw new Error("Indices specified for empty output. indices shape: "+t.shape);if(0===e.size)throw new Error("Updates specified for empty output. updates shape: "+e.shape)}!function(e,t,n){var r=t.rank>1?t.shape[t.rank-1]:1,a=t.rank>1?t.rank-1:1,i="Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: "+n.shape+", indices.shape: "+t.shape+", shape: "+e+", sliceDim: "+r+", and batchDim: "+a+".";if(n.rank2)throw new Error("sparseIndices should be a scalar, vector, or matrix, but got shape "+e.shape+".");var a=e.rank>0?e.shape[0]:1,i=e.rank>1?e.shape[1]:1;if(n.length!==i)throw new Error("outputShape has incorrect number of elements:, "+n.length+", should be: "+i+".");var o=t.size;if(0!==t.rank&&(1!==t.rank||o!==a))throw new Error("sparseValues has incorrect shape "+t.shape+", should be [] or ["+a+"]");if(t.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}(a,i,n,o),ve.engine.runKernel(function(e){return e.sparseToDense(a,i,n,o)},{$sparseIndices:a,$sparseValues:i,$defaultValue:o})}}),vs=rt({gatherND_:function(e,t){var n=tt(t,"indices","gatherND","int32"),r=tt(e,"x","gatherND");return ve.engine.runKernel(function(e){return e.gatherND(r,n)},{$x:r,$indices:n})}});!function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"}(as||(as={}));var bs=rt({absoluteDifference_:function(e,t,n,r){void 0===r&&(r=as.SUM_BY_NONZERO_WEIGHTS);var a=tt(e,"labels","absoluteDifference"),i=tt(t,"predictions","absoluteDifference"),o=null;null!=n&&(o=tt(n,"weights","absoluteDifference")),w(a.shape,i.shape,"Error in absoluteDifference: ");var s=a.sub(i).abs();return ws(s,o,r)}}),ws=rt({computeWeightedLoss_:function(e,t,n){void 0===n&&(n=as.SUM_BY_NONZERO_WEIGHTS);var r=tt(e,"losses","computeWeightedLoss"),a=null;null!=t&&(a=tt(t,"weights","computeWeightedLoss"));var i=null==a?r:r.mul(a);if(n===as.NONE)return i;if(n===as.SUM)return i.sum();if(n===as.MEAN){if(null==a)return i.mean();var o=E(r.shape)/E(a.shape),s=i.sum().div(a.sum());return o>1?s.div(ct(o)):s}if(n===as.SUM_BY_NONZERO_WEIGHTS){if(null==a)return i.sum().div(ct(r.size));var u=a.mul(yt(r.shape)).notEqual(ct(0)).sum().toFloat();return i.sum().div(u)}throw Error("Unknown reduction: "+n)}}),xs=rt({cosineDistance_:function(e,t,n,r,a){void 0===a&&(a=as.SUM_BY_NONZERO_WEIGHTS);var i=tt(e,"labels","cosineDistance"),o=tt(t,"predictions","cosineDistance"),s=null;null!=r&&(s=tt(r,"weights","cosineDistance")),w(i.shape,o.shape,"Error in cosineDistance: ");var u=ct(1).sub(i.mul(o).sum(n,!0));return ws(u,s,a)}}),_s=rt({hingeLoss_:function(e,t,n,r){void 0===r&&(r=as.SUM_BY_NONZERO_WEIGHTS);var a=tt(e,"labels","hingeLoss"),i=tt(t,"predictions","hingeLoss"),o=null;null!=n&&(o=tt(n,"weights","hingeLoss")),w(a.shape,i.shape,"Error in hingeLoss: ");var s=ct(1);a=ct(2).mul(a).sub(s);var u=s.sub(a.mul(i)).relu();return ws(u,o,r)}}),Es=rt({huberLoss_:function(e,t,n,r,a){void 0===r&&(r=1),void 0===a&&(a=as.SUM_BY_NONZERO_WEIGHTS);var i=tt(e,"labels","huberLoss"),o=tt(t,"predictions","huberLoss"),s=null;null!=n&&(s=tt(n,"weights","huberLoss")),w(i.shape,o.shape,"Error in huberLoss: ");var u=ct(r),l=o.sub(i).abs(),c=Po(l,u),f=l.sub(c),p=ct(.5).mul(c.square()).add(u.mul(f));return ws(p,s,a)}}),Ns=rt({logLoss_:function(e,t,n,r,a){void 0===r&&(r=1e-7),void 0===a&&(a=as.SUM_BY_NONZERO_WEIGHTS);var i=tt(e,"labels","logLoss"),o=tt(t,"predictions","logLoss"),s=null;null!=n&&(s=tt(n,"weights","logLoss")),w(i.shape,o.shape,"Error in logLoss: ");var u=ct(1),l=ct(r),c=i.mul(o.add(l).log()).neg().sub(u.sub(i).mul(u.sub(o).add(l).log()));return ws(c,s,a)}}),Ss=rt({meanSquaredError_:function(e,t,n,r){void 0===r&&(r=as.SUM_BY_NONZERO_WEIGHTS);var a=tt(e,"labels","meanSquaredError"),i=tt(t,"predictions","meanSquaredError"),o=null;null!=n&&(o=tt(n,"weights","meanSquaredError")),w(a.shape,i.shape,"Error in meanSquaredError: ");var s=a.squaredDifference(i);return ws(s,o,r)}}),Os=rt({sigmoidCrossEntropy_:function(e,t,n,r,a){void 0===r&&(r=0),void 0===a&&(a=as.SUM_BY_NONZERO_WEIGHTS);var i=tt(e,"multiClassLabels","sigmoidCrossEntropy"),o=tt(t,"logits","sigmoidCrossEntropy"),s=null;if(null!=n&&(s=tt(n,"weights","sigmoidCrossEntropy")),w(i.shape,o.shape,"Error in sigmoidCrossEntropy: "),r>0){var u=ct(r),l=ct(1),c=ct(.5);i=i.mul(l.sub(u)).add(c.mul(u))}var f=function(e,t){var n=tt(e,"labels","sigmoidCrossEntropyWithLogits"),r=tt(t,"logits","sigmoidCrossEntropyWithLogits");w(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");var a=r.relu(),i=r.mul(n),o=r.abs().neg().exp().log1p();return a.sub(i).add(o)}(i,o);return ws(f,s,a)}}),ks=rt({softmaxCrossEntropy_:function(e,t,n,r,a){void 0===r&&(r=0),void 0===a&&(a=as.SUM_BY_NONZERO_WEIGHTS);var i=tt(e,"onehotLabels","softmaxCrossEntropy"),o=tt(t,"logits","softmaxCrossEntropy"),s=null;if(null!=n&&(s=tt(n,"weights","softmaxCrossEntropy")),w(i.shape,o.shape,"Error in softmaxCrossEntropy: "),r>0){var u=ct(r),l=ct(1),c=ct(i.shape[1]);i=i.mul(l.sub(u)).add(u.div(c))}var f=function(e,t,n){if(void 0===n&&(n=-1),-1===n&&(n=t.rank-1),n!==t.rank-1)throw Error("Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank "+t.rank+" and dim was "+n);return Se(function(e,t){var r=t.logSumExp([n],!0),a=t.toFloat().sub(r);return{value:a.mul(e).neg().sum([n]),gradFunc:function(t){var r=Fe(t.shape,[n]);return[t.reshape(r).mul(e.toFloat().sub(a.exp())),t.reshape(r).mul(a.exp().sub(e.toFloat()))]}}})(e,t)}(i,o);return ws(f,s,a)}}),Is=Object.freeze({get Reduction(){return as},absoluteDifference:bs,computeWeightedLoss:ws,cosineDistance:xs,hingeLoss:_s,huberLoss:Es,logLoss:Ns,meanSquaredError:Ss,sigmoidCrossEntropy:Os,softmaxCrossEntropy:ks});function Cs(e,t){return void 0===t&&(t=!1),ve.engine.tidy(function(){if(2!==e.shape.length)throw new Error("qr2d() requires a 2D Tensor, but got a "+e.shape.length+"D Tensor.");for(var n=e.shape[0],r=e.shape[1],a=ca(n),i=e.clone(),o=pt([[1]],[1,1]),s=o.clone(),u=n>=r?r:n,l=function(e){var t,u=i,l=s,c=a;t=ve.engine.tidy(function(){var t=i.slice([e,e],[n-e,1]),u=t.norm(),l=i.slice([e,e],[1,1]),c=l.sign().neg(),f=l.sub(c.mul(u)),p=t.div(f);s=1===p.shape[0]?o.clone():o.concat(p.slice([1,0],[p.shape[0]-1,p.shape[1]]),0);var h=c.matMul(f).div(u).neg(),d=i.slice([e,0],[n-e,r]),m=h.mul(s);i=0===e?d.sub(m.matMul(s.transpose().matMul(d))):i.slice([0,0],[e,r]).concat(d.sub(m.matMul(s.transpose().matMul(d))),0);var g=a.slice([0,e],[n,a.shape[1]-e]);return a=0===e?g.sub(g.matMul(s).matMul(m.transpose())):a.slice([0,0],[n,e]).concat(g.sub(g.matMul(s).matMul(m.transpose())),1),[s,i,a]}),s=t[0],i=t[1],a=t[2],Ce([u,l,c])},c=0;cr&&(a=a.slice([0,0],[n,r]),i=i.slice([0,0],[r,r])),[a,i]})}var Ps=rt({gramSchmidt_:function(e){var t;if(Array.isArray(e)){t=!1,b(null!=e&&e.length>0,"Gram-Schmidt process: input must not be null, undefined, or empty");for(var n=e[0].shape[0],r=1;r0)for(var n=0;n= 2, but got rank "+e.rank);if(2===e.rank)return Cs(e,t);var n=e.shape.slice(0,e.shape.length-2).reduce(function(e,t){return e*t}),r=[],a=[];return Ia(e.reshape([n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0).forEach(function(e){var n=Cs(e,t),i=n[0],o=n[1];r.push(i),a.push(o)}),[Sa(r,0).reshape(e.shape),Sa(a,0).reshape(e.shape)]}}),Ts=Object.freeze({gramSchmidt:Ps,qr:As});function Ms(e,t,n,r,a){null==r&&(r=.5),null==a&&(a=Number.NEGATIVE_INFINITY);var i=e.shape[0];return n=Math.min(n,i),b(0<=r&&r<=1,"iouThreshold must be in [0, 1], but was '"+r+"'"),b(2===e.rank,"boxes must be a 2D tensor, but was of rank '"+e.rank+"'"),b(4===e.shape[1],"boxes must have 4 columns, but 2nd dimension was "+e.shape[1]),b(1===t.rank,"scores must be a 1D tensor"),b(t.shape[0]===i,"scores has incompatible shape with boxes. Expected "+i+", but was "+t.shape[0]),{maxOutputSize:n,iouThreshold:r,scoreThreshold:a}}var Rs=rt({resizeBilinear_:function(e,t,n){void 0===n&&(n=!1);var r=tt(e,"images","resizeBilinear");b(3===r.rank||4===r.rank,"Error in resizeBilinear: x must be rank 3 or 4, but got rank "+r.rank+"."),b(2===t.length,"Error in resizeBilinear: new shape must 2D, but got shape "+t+".");var a=r,i=!1;3===r.rank&&(i=!0,a=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var o=t[0],s=t[1],u=ve.engine.runKernel(function(e,t){return e.resizeBilinear(a,o,s,n)},{batchImages:a},function(e,t){return{batchImages:function(){return ve.engine.runKernel(function(t){return t.resizeBilinearBackprop(e,a,n)},{})}}});return i?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),Ds=rt({resizeNearestNeighbor_:function(e,t,n){void 0===n&&(n=!1);var r=tt(e,"images","resizeNearestNeighbor");b(3===r.rank||4===r.rank,"Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank "+r.rank+"."),b(2===t.length,"Error in resizeNearestNeighbor: new shape must 2D, but got shape "+t+"."),b("float32"===r.dtype||"int32"===r.dtype,"`images` must have `int32` or `float32` as dtype");var a=r,i=!1;3===r.rank&&(i=!0,a=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var o=t[0],s=t[1],u=ve.engine.runKernel(function(e,t){return e.resizeNearestNeighbor(a,o,s,n)},{batchImages:a},function(e,t){return{batchImages:function(){return ve.engine.runKernel(function(t){return t.resizeNearestNeighborBackprop(e,a,n)},{})}}});return i?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),js=rt({nonMaxSuppression_:function(e,t,n,r,a){void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY);var i=tt(e,"boxes","nonMaxSuppression"),o=tt(t,"scores","nonMaxSuppression"),s=Ms(i,o,n,r,a);return n=s.maxOutputSize,r=s.iouThreshold,a=s.scoreThreshold,ve.engine.runKernel(function(e){return e.nonMaxSuppression(i,o,n,r,a)},{$boxes:i})}}),Ls=Object.freeze({resizeBilinear:Rs,resizeNearestNeighbor:Ds,nonMaxSuppression:js,nonMaxSuppressionAsync:function(e,t,n,r,a){return void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY),l(this,void 0,void 0,function(){var i,o,s,u,l,f;return c(this,function(c){switch(c.label){case 0:return i=tt(e,"boxes","nonMaxSuppressionAsync"),o=tt(t,"scores","nonMaxSuppressionAsync"),s=Ms(i,o,n,r,a),n=s.maxOutputSize,r=s.iouThreshold,a=s.scoreThreshold,[4,i.data()];case 1:return u=c.sent(),[4,o.data()];case 2:return l=c.sent(),f=Vt(u,l,n,r,a),i!==e&&i.dispose(),o!==t&&o.dispose(),[2,f]}})})},cropAndResize:function(e,t,n,r,a,i){var o=tt(e,"image","cropAndResize","float32"),s=tt(t,"boxes","cropAndResize","float32"),u=tt(n,"boxInd","cropAndResize","int32");a=a||"bilinear",i=i||0;var l=s.shape[0];return b(4===o.rank,"Error in cropAndResize: image must be rank 4,but got rank "+o.rank+"."),b(2===s.rank&&4===s.shape[1],"Error in cropAndResize: boxes must be have size ["+l+",4] but had shape "+s.shape+"."),b(1===u.rank&&u.shape[0]===l,"Error in cropAndResize: boxInd must be have size ["+l+"] but had shape "+s.shape+"."),b("int32"===u.dtype,"Error in cropAndResize: boxInd must be of dtype int32, but got dtype "+u.dtype+"."),b(2===r.length,"Error in cropAndResize: cropSize must be of length 2, but got length "+r.length+"."),b(r[0]>=1&&r[1]>=1,"cropSize must be atleast [1,1], but was "+r),b("bilinear"===a||"nearest"===a,"method must be bilinear or nearest, but was "+a),ve.engine.runKernel(function(e,t){return e.cropAndResize(o,s,u,r,a,i)},{$image:o,$boxes:s})}}),Bs=Object.freeze({image:Ls,linalg:Ts,losses:Is,spectral:gs,op:rt,batchNormalization2d:hi,batchNormalization3d:di,batchNormalization4d:mi,batchNormalization:gi,complex:ot,real:st,imag:ut,concat:zr,concat1d:Fr,concat2d:Vr,concat3d:Ur,concat4d:Wr,split:qr,conv1d:Ci,conv2d:Pi,conv2dDerFilter:Ai,depthwiseConv2d:Ti,separableConv2d:Mi,conv2dTranspose:Ri,matMul:Ni,dot:Si,outerProduct:Oi,reverse:Di,reverse1d:ji,reverse2d:Li,reverse3d:Bi,reverse4d:zi,maxPool:Ui,avgPool:Wi,pool:qi,slice:$i,slice1d:Gi,slice2d:Hi,slice3d:Ki,slice4d:Xi,abs:Ra,acos:Da,acosh:ja,asin:La,asinh:Ba,atan:za,atanh:Fa,ceil:Va,clipByValue:Ua,cos:Wa,cosh:qa,erf:$a,exp:Ga,expm1:Ha,floor:Ka,log:Xa,log1p:Ya,logSigmoid:Ja,neg:Za,reciprocal:Qa,round:ei,rsqrt:ti,sigmoid:ni,sign:ri,sin:ai,sinh:ii,softplus:oi,sqrt:si,square:ui,step:li,tan:ci,tanh:fi,all:Ji,any:Zi,argMax:Qi,argMin:eo,logSumExp:to,max:no,mean:ro,min:ao,moments:io,sum:oo,prod:so,equal:uo,equalStrict:lo,greater:co,greaterEqual:fo,greaterEqualStrict:po,greaterStrict:ho,less:mo,lessEqual:go,lessEqualStrict:yo,lessStrict:vo,notEqual:bo,notEqualStrict:wo,add:xo,addN:_o,addStrict:Eo,atan2:No,div:So,divStrict:Oo,floorDiv:ko,maximum:Io,maximumStrict:Co,minimum:Po,minimumStrict:Ao,mod:To,modStrict:Mo,mul:Ro,mulStrict:Do,pow:jo,powStrict:Lo,squaredDifference:Bo,squaredDifferenceStrict:zo,sub:Fo,subStrict:Vo,elu:Ko,leakyRelu:Xo,prelu:Yo,relu:Jo,selu:Zo,logicalAnd:Uo,logicalNot:Wo,logicalOr:qo,logicalXor:$o,where:Go,whereAsync:Ho,buffer:na,toPixels:ta,print:ra,batchToSpaceND:aa,cast:ia,clone:oa,cumsum:sa,depthToSpace:ua,expandDims:la,eye:ca,fromPixels:fa,multinomial:pa,oneHot:ha,pad:da,pad1d:ma,pad2d:ga,pad3d:ya,pad4d:va,rand:ba,randomNormal:wa,randomUniform:xa,reshape:_a,spaceToBatchND:Ea,squeeze:Na,stack:Sa,tile:Oa,truncatedNormal:ka,unstack:Ia,setdiff1dAsync:Ca,fill:bt,linspace:wt,ones:yt,range:xt,scalar:ct,tensor:lt,tensor1d:ft,tensor2d:pt,tensor3d:ht,tensor4d:dt,tensor5d:mt,tensor6d:gt,zeros:vt,onesLike:It,zerosLike:Ct,transpose:Qo,softmax:at,logSoftmax:it,localResponseNormalization:es,norm:ts,gather:is,unsortedSegmentSum:os,basicLSTMCell:ss,multiRNNCell:us,movingAverage:ls,stridedSlice:cs,topk:fs,scatterND:ps,fft:hs,ifft:ds,rfft:ms,sparseToDense:ys,gatherND:vs}),zs=function(){function e(){this.blockSize=48,this.firstUse=!0,ve.get("IS_BROWSER")&&(this.fromPixels2DContext=document.createElement("canvas").getContext("2d"))}return e.prototype.setDataMover=function(e){this.data=new Mt(e)},e.prototype.register=function(e,t,n){if(this.firstUse&&(this.firstUse=!1,ve.get("IS_NODE")&&Te("\n============================\nHi there πŸ‘‹. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details.\n============================\n")),this.data.has(e))throw new Error("Data buffer is already registered");this.data.set(e,{dtype:n})},e.prototype.write=function(e,t){if(null==t)throw new Error("MathBackendCPU.write(): values can not be null");this.data.get(e).values=t},e.prototype.fromPixels=function(e,t){if(null==e)throw new Error("pixels passed to tf.fromPixels() can not be null");var n,r;if(ve.get("IS_NODE")&&null==e.getContext)throw new Error("When running in node, pixels must be an HTMLCanvasElement like the one returned by the `canvas` npm package");if(null!=e.getContext)n=e.getContext("2d").getImageData(0,0,e.width,e.height).data;else if(e instanceof ImageData)n=e.data;else{if(!(e instanceof HTMLImageElement||e instanceof HTMLVideoElement))throw new Error("pixels passed to tf.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement or ImageData, but was "+e.constructor.name);if(null==this.fromPixels2DContext)throw new Error("Can't read pixels from HTMLImageElement outside the browser.");this.fromPixels2DContext.canvas.width=e.width,this.fromPixels2DContext.canvas.height=e.height,this.fromPixels2DContext.drawImage(e,0,0,e.width,e.height),n=this.fromPixels2DContext.getImageData(0,0,e.width,e.height).data}if(4===t)r=new Int32Array(n);else{var a=e.width*e.height;r=new Int32Array(a*t);for(var i=0;ip&&(p=m,h=d)}u[c]=h}return o},e.prototype.cumsum=function(e,t,n,r){if(this.assertNotComplex(e,"cumsum"),t!==e.rank-1)throw new Error("backend.cumsum in CPU expects an inner-most axis="+(e.rank-1)+" but got axis="+t);for(var a=At(e.dtype,"int32"),i=vt(e.shape,a),o=i.dataSync(),s=e.dataSync(),u=e.shape[e.rank-1],l=r?function(e,t){return e+u-t-1}:function(e,t){return e+t},c=0;ct?1:0})},e.prototype.greaterEqual=function(e,t){return this.assertNotComplex([e,t],"greaterEqual"),this.broadcastedBinaryOp(e,t,"bool",function(e,t){return e>=t?1:0})},e.prototype.logicalNot=function(e){this.assertNotComplex(e,"logicalNot");for(var t=e.dataSync(),n=new Int32Array(t.length),r=0;r1||1===t.rank?1:t.shape[1],c=0;c=0&&t>=0?n:(n+t)%t})},e.prototype.max=function(e,t){this.assertNotComplex(e,"max"),Ue("max",t,e.rank);for(var n=ze(e.shape,t),r=n[0],a=n[1],i=vt(r,e.dtype),o=E(a),s=i.dataSync(),u=e.dataSync(),l=0;lf&&(f=h)}s[l]=f}return i},e.prototype.maximum=function(e,t){return this.assertNotComplex([e,t],"maximum"),this.broadcastedBinaryOp(e,t,e.dtype,function(e,t){return Math.max(e,t)})},e.prototype.all=function(e,t){this.assertNotComplex(e,"all"),Ue("all",t,e.rank);for(var n=ze(e.shape,t),r=n[0],a=n[1],i=vt(r,e.dtype),o=E(a),s=i.dataSync(),u=e.dataSync(),l=0;l0?n[r]=1:n[r]=0;return re.make(e.shape,{values:n})},e.prototype.round=function(e){this.assertNotComplex(e,"round");for(var t=e.dataSync(),n=new Float32Array(t.length),r=0;r.5?n[r]=Math.ceil(t[r]):n[r]=a%2==0?a:a+1}return re.make(e.shape,{values:n})},e.prototype.exp=function(e){this.assertNotComplex(e,"exp");for(var t=e.dataSync(),n=new Float32Array(t.length),r=0;r=0?a:Math.exp(a)-1}return re.make(e.shape,{values:t})},e.prototype.eluDer=function(e,t){this.assertNotComplex([e,t],"eluDer");for(var n=new Float32Array(t.size),r=t.dataSync(),a=e.dataSync(),i=0;i=1?a[i]:a[i]*(o+1)}return re.make(t.shape,{values:n})},e.prototype.selu=function(e){this.assertNotComplex(e,"selu");for(var t=new Float32Array(e.size),n=e.dataSync(),r=0;r=0?1.0507009873554805*a:1.7580993408473768*(Math.exp(a)-1)}return re.make(e.shape,{values:t})},e.prototype.clip=function(e,t,n){this.assertNotComplex(e,"clip");for(var r=new Float32Array(e.size),a=e.dataSync(),i=0;in?n:o-t,s=r[a]0?1:t}return re.make(e.shape,{values:n})},e.prototype.conv2d=function(e,t,n){this.assertNotComplex([e,t],"conv2d");for(var r=n.filterHeight,a=n.filterWidth,i=n.dilationHeight,o=n.dilationWidth,s=n.padInfo.left,u=n.padInfo.top,l=na(n.outShape,e.dtype),c=e.dataSync(),f=t.dataSync(),p=l.values,h=0;h=n.inHeight))for(var x=b*t.strides[0],_=d+w*e.strides[1],E=0;E=n.inWidth))for(var I=x+O*t.strides[1],C=_+k*n.inChannels,P=I,A=0;A=n.inHeight))for(var _=w*t.strides[0],E=m+x*e.strides[1],N=0;N=n.inWidth))for(var C=_+k*t.strides[1],P=E+I*n.inChannels,A=S,T=C,M=0;MA?A=L:"avg"===n&&(T+=L,M++)}if(isNaN(A))break}d[O+k*y+x]="avg"===n?T/M:A}return h.toTensor()},e.prototype.maxPool=function(e,t){return this.pool(e,t,"max")},e.prototype.maxPoolPositions=function(e,t){for(var n=na(t.outShape,"int32"),r=t.strideHeight,a=t.strideWidth,i=t.dilationHeight,o=t.dilationWidth,s=t.effectiveFilterHeight,u=t.effectiveFilterWidth,l=t.padInfo.top,c=t.padInfo.left,f=0;fx&&(x=k,_=N*u+O)}n.set(_,f,h,y,p)}}return n.toTensor()},e.prototype.maxPoolBackprop=function(e,t,n,r){this.assertNotComplex([t,n],"maxPoolBackprop");for(var a=this.maxPoolPositions(t,r),i=r.strideHeight,o=r.strideWidth,s=r.dilationHeight,u=r.dilationWidth,l=r.effectiveFilterHeight,c=r.effectiveFilterWidth,f=c-1-r.padInfo.left,p=l-1-r.padInfo.top,h=na(t.shape,"float32"),d=0;d=r.outHeight||Math.floor(_)!==_))for(var E=0;E=r.outWidth||Math.floor(N)!==N)){var S=l*c-1-a.get(d,_,N,m)===x*c+E?1:0;0!==S&&(w+=e.get(d,_,N,m)*S)}}}h.set(w,d,g,y,m)}return h.toTensor()},e.prototype.avgPoolBackprop=function(e,t,n){this.assertNotComplex([e,t],"avgPoolBackprop");for(var r=n.strideHeight,a=n.strideWidth,i=n.filterHeight,o=n.filterWidth,s=n.dilationHeight,u=n.dilationWidth,l=n.effectiveFilterHeight,c=n.effectiveFilterWidth,f=c-1-n.padInfo.left,p=l-1-n.padInfo.top,h=na(t.shape,"float32"),d=1/(i*o),m=0;m=n.outHeight||Math.floor(E)!==E))for(var N=0;N=n.outWidth||Math.floor(S)!==S||(x+=e.get(m,E,S,g))}}h.set(x*d,m,y,v,g)}return h.toTensor()},e.prototype.cast=function(e,t){return Dt(e,t,this)},e.prototype.reshape=function(e,t){return jt(e,t)},e.prototype.avgPool=function(e,t){return this.assertNotComplex(e,"avgPool"),this.pool(e,t,"avg").toFloat()},e.prototype.resizeBilinear=function(e,t,n,r){this.assertNotComplex(e,"resizeBilinear");for(var a=e.shape,i=a[0],o=a[1],s=a[2],u=a[3],l=e.dataSync(),c=new Float32Array(E([i,t,n,u])),f=[r&&t>1?o-1:o,r&&n>1?s-1:s],p=[r&&t>1?t-1:t,r&&n>1?n-1:n],h=0,d=f[0]/p[0],m=f[1]/p[1],g=0;g1?i-1:i,n&&c>1?o-1:o],h=[n&&l>1?l-1:l,n&&c>1?c-1:c],d=p[0]/h[0],m=p[1]/h[1],g=e.dataSync(),y=0,v=0;v1?o-1:o,r&&n>1?s-1:s],p=[r&&t>1?t-1:t,r&&n>1?n-1:n],h=f[0]/p[0],d=f[1]/p[1],m=0,g=0;g1?i-1:i,n&&c>1?o-1:o],d=[n&&l>1?l-1:l,n&&c>1?c-1:c],m=h[0]/d[0],g=h[1]/d[1],y=1/m,v=1/g,b=2*Math.ceil(y)+2,w=2*Math.ceil(v)+2,x=0;x=l)){var D=_+R*e.strides[1],j=R*m;if(E===Math.min(i-1,n?Math.round(j):Math.floor(j)))for(var L=0;L=c)){var z=D+B*e.strides[2],F=B*g;k===Math.min(o-1,n?Math.round(F):Math.floor(F))&&(T+=p[z+A])}}}}f[I+A]=T}return dt(f,t.shape,t.dtype)},e.prototype.batchNormalization=function(e,t,n,r,a,i){this.assertNotComplex([e,t,n,a,i],"batchNormalization");for(var o=e.dataSync(),s=t.dataSync(),u=n.dataSync(),l=a?a.dataSync():new Float32Array([1]),c=i?i.dataSync():new Float32Array([0]),f=new Float32Array(o.length),p=c.length,h=l.length,d=u.length,m=s.length,g=0,y=0,v=0,b=0,w=0;w=p&&(g=0),y>=m&&(y=0),v>=h&&(v=0),b>=d&&(b=0);return dt(f,e.shape)},e.prototype.localResponseNormalization4D=function(e,t,n,r,a){this.assertNotComplex(e,"localResponseNormalization4D");var i=e.shape[3],o=i-1,s=e.dataSync(),u=E(e.shape),l=new Float32Array(u);function c(e){for(var n=e%i,r=e-n+Math.max(0,n-t),a=e-n+Math.min(n+t,o),u=0;r<=a;r++){var l=s[r];u+=l*l}return u}for(var f=0;f=0&&e.get(i)1,"blockSize should be > 1 for depthToSpace, but was: "+t);for(var r=e.shape[0],a=e.shape[1],i=e.shape[2],o=e.shape[3],s=a*t,u=i*t,l=o/(t*t),c=e.dataSync(),f=new Float32Array(r*s*u*l),p=0,h=0;h=s))for(var k=p>1?(N-_)*(u-1)/(p-1):0,I=h>1?(S-E)*(l-1)/(h-1):0,C=0;C1?_*(u-1)+C*k:.5*(_+N)*(u-1);if(P<0||P>u-1)for(var A=0;A1?E*(l-1)+A*I:.5*(E+S)*(l-1))<0||$>l-1)for(T=0;T1?E*(l-1)+A*I:.5*(E+S)*(l-1))<0||$>l-1)for(T=0;T=e.size/s)throw new Error("Invalid indices: "+h+" does not index into "+e.shape);for(var y=0;y=r/a)throw new Error("Invalid indices: "+m+" does not index into "+n);for(var b=0;b0,"scheme must not be an empty string.");var r=e.getInstance();b(null==r.managers[t],"A model store manager is already registered for scheme '"+t+"'."),r.managers[t]=n},e.getManager=function(e){var t=this.getInstance().managers[e];if(null==t)throw new Error("Cannot find model manager for scheme '"+e+"'");return t},e.getSchemes=function(){return Object.keys(this.getInstance().managers)},e}();function Zs(e){if(-1===e.indexOf(Ys))throw new Error("The url string provided does not contain a scheme. Supported schemes are: "+Js.getSchemes().join(","));return{scheme:e.split(Ys)[0],path:e.split(Ys)[1]}}function Qs(e,t,n){return void 0===n&&(n=!1),l(this,void 0,void 0,function(){var r,a,i,o,s,u,l,f,p;return c(this,function(c){switch(c.label){case 0:return b(e!==t,"Old path and new path are the same: '"+e+"'"),b((r=Xs.getLoadHandlers(e)).length>0,"Copying failed because no load handler is found for source URL "+e+"."),b(r.length<2,"Copying failed because more than one ("+r.length+") load handlers for source URL "+e+"."),a=r[0],b((i=Xs.getSaveHandlers(t)).length>0,"Copying failed because no save handler is found for destination URL "+t+"."),b(i.length<2,"Copying failed because more than one ("+r.length+") save handlers for destination URL "+t+"."),o=i[0],s=Zs(e).scheme,u=Zs(e).path,l=s===Zs(e).scheme,[4,a.load()];case 1:return f=c.sent(),n&&l?[4,Js.getManager(s).removeModel(u)]:[3,3];case 2:c.sent(),c.label=3;case 3:return[4,o.save(f)];case 4:return p=c.sent(),!n||l?[3,6]:[4,Js.getManager(s).removeModel(u)];case 5:c.sent(),c.label=6;case 6:return[2,p.modelArtifactsInfo]}})})}var eu="models_store",tu="model_info_store";function nu(){if(!ve.get("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");var e=window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(null==t)throw new Error("The current browser does not appear to support IndexedDB.");return t}function ru(e){var t=e.result;t.createObjectStore(eu,{keyPath:"modelPath"}),t.createObjectStore(tu,{keyPath:"modelPath"})}var au=function(){function e(e){if(this.indexedDB=nu(),null==e||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}return e.prototype.save=function(e){return l(this,void 0,void 0,function(){return c(this,function(t){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return[2,this.databaseAction(this.modelPath,e)]})})},e.prototype.load=function(){return l(this,void 0,void 0,function(){return c(this,function(e){return[2,this.databaseAction(this.modelPath)]})})},e.prototype.databaseAction=function(e,t){var n=this;return new Promise(function(e,r){var a=n.indexedDB.open("tensorflowjs",1);a.onupgradeneeded=function(){return ru(a)},a.onsuccess=function(){var i=a.result;if(null==t){var o=i.transaction(eu,"readonly"),s=o.objectStore(eu).get(n.modelPath);s.onsuccess=function(){if(null==s.result)return i.close(),r(new Error("Cannot find model with path '"+n.modelPath+"' in IndexedDB."));e(s.result.modelArtifacts)},s.onerror=function(e){return i.close(),r(s.error)},o.oncomplete=function(){return i.close()}}else{var u,l=Ks(t),c=i.transaction(tu,"readwrite"),f=c.objectStore(tu),p=f.put({modelPath:n.modelPath,modelArtifactsInfo:l});p.onsuccess=function(){var a=(u=i.transaction(eu,"readwrite")).objectStore(eu).put({modelPath:n.modelPath,modelArtifacts:t,modelArtifactsInfo:l});a.onsuccess=function(){return e({modelArtifactsInfo:l})},a.onerror=function(e){var t=(f=c.objectStore(tu)).delete(n.modelPath);t.onsuccess=function(){return i.close(),r(a.error)},t.onerror=function(e){return i.close(),r(a.error)}}},p.onerror=function(e){return i.close(),r(p.error)},c.oncomplete=function(){null==u?i.close():u.oncomplete=function(){return i.close()}}}},a.onerror=function(e){return r(a.error)}})},e.URL_SCHEME="indexeddb://",e}(),iu=function(e){return ve.get("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(au.URL_SCHEME)?function(e){return new au(e)}(e.slice(au.URL_SCHEME.length)):null};Xs.registerSaveRouter(iu),Xs.registerLoadRouter(iu);var ou=function(){function e(){this.indexedDB=nu()}return e.prototype.listModels=function(){return l(this,void 0,void 0,function(){var e=this;return c(this,function(t){return[2,new Promise(function(t,n){var r=e.indexedDB.open("tensorflowjs",1);r.onupgradeneeded=function(){return ru(r)},r.onsuccess=function(){var e=r.result,a=e.transaction(tu,"readonly"),i=a.objectStore(tu).getAll();i.onsuccess=function(){for(var e={},n=0,r=i.result;n0,"URL path for browserHTTPRequest must not be null, undefined or empty."),Array.isArray(e)&&b(2===e.length,"URL paths for browserHTTPRequest must have a length of 2, (actual length is "+e.length+")."),this.path=e,null!=t&&null!=t.body)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t||{}}return e.prototype.save=function(e){return l(this,void 0,void 0,function(){var t,n,r,a;return c(this,function(i){switch(i.label){case 0:if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");return(t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit)).body=new FormData,n=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,weightsManifest:n},t.body.append("model.json",new Blob([JSON.stringify(r)],{type:"application/json"}),"model.json"),null!=e.weightData&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:"application/octet-stream"}),"model.weights.bin"),[4,fetch(this.path,t)];case 1:if((a=i.sent()).ok)return[2,{modelArtifactsInfo:Ks(e),responses:[a]}];throw new Error("BrowserHTTPRequest.save() failed due to HTTP response status "+a.status+".")}})})},e.prototype.load=function(){return l(this,void 0,void 0,function(){return c(this,function(e){return[2,Array.isArray(this.path)?this.loadBinaryModel():this.loadJSONModel()]})})},e.prototype.loadBinaryTopology=function(){return l(this,void 0,void 0,function(){var e,t;return c(this,function(n){switch(n.label){case 0:return n.trys.push([0,3,,4]),[4,fetch(this.path[0],this.requestInit)];case 1:if(!(e=n.sent()).ok)throw new Error("BrowserHTTPRequest.load() failed due to HTTP response: "+e.statusText);return[4,e.arrayBuffer()];case 2:return[2,n.sent()];case 3:throw t=n.sent(),new Error(this.path[0]+" not found. "+t);case 4:return[2]}})})},e.prototype.loadBinaryModel=function(){return l(this,void 0,void 0,function(){var e,t,n,r,a,i,o,s;return c(this,function(u){switch(u.label){case 0:return e=this.loadBinaryTopology(),[4,fetch(this.path[1],this.requestInit)];case 1:if(!(t=u.sent()).ok)throw new Error("BrowserHTTPRequest.load() failed due to HTTP response: "+t.statusText);return[4,Promise.all([e,t])];case 2:return n=u.sent(),r=n[0],[4,n[1].json()];case 3:return null==(a=u.sent())?[3,5]:[4,this.loadWeights(a)];case 4:s=u.sent(),i=s[0],o=s[1],u.label=5;case 5:return[2,{modelTopology:r,weightSpecs:i,weightData:o}]}})})},e.prototype.loadJSONModel=function(){return l(this,void 0,void 0,function(){var e,t,n,r,a,i,o,s;return c(this,function(u){switch(u.label){case 0:return[4,fetch(this.path,this.requestInit)];case 1:if(!(e=u.sent()).ok)throw new Error("BrowserHTTPRequest.load() failed due to HTTP response: "+e.statusText);return[4,e.json()];case 2:if(t=u.sent(),n=t.modelTopology,r=t.weightsManifest,null==n&&null==r)throw new Error("The JSON from HTTP path "+this.path+" contains neither model topology or manifest for weights.");return null==r?[3,4]:(o=t.weightsManifest,[4,this.loadWeights(o)]);case 3:s=u.sent(),a=s[0],i=s[1],u.label=4;case 4:return[2,{modelTopology:n,weightSpecs:a,weightData:i}]}})})},e.prototype.loadWeights=function(e){return l(this,void 0,void 0,function(){var t,n,r,a,i,o,s,u,l,f,p,h;return c(this,function(c){switch(c.label){case 0:for(t=Array.isArray(this.path)?this.path[1]:this.path,n=function(e){var t=e.lastIndexOf("/"),n=e.lastIndexOf("?");return[e.substring(0,t)+"/",n>t?e.substring(n):""]}(t),r=n[0],a=n[1],i=this.weightPathPrefix||r,o=[],s=0,u=e;s0&&(e=u({weightSpecs:this.weightSpecs},e)),null!=this.weightData&&this.weightData.byteLength>0&&(e=u({weightData:this.weightData},e)),[2,e]})})},e}(),Cu=function(){function e(e){this.saveHandler=e}return e.prototype.save=function(e){return l(this,void 0,void 0,function(){return c(this,function(t){return[2,this.saveHandler(e)]})})},e}(),Pu=Xs.registerSaveRouter,Au=Xs.registerLoadRouter,Tu=Xs.getSaveHandlers,Mu=Xs.getLoadHandlers,Ru=Object.freeze({browserFiles:function(e){return new _u(e)},browserHTTPRequest:ku,concatenateArrayBuffers:Gs,decodeWeights:Ws,encodeWeights:function(e){return l(this,void 0,void 0,function(){var t,n,r,a;return c(this,function(i){switch(i.label){case 0:for(r in t=[],n=[],e){if("float32"!==(a=e[r]).dtype&&"int32"!==a.dtype&&"bool"!==a.dtype)throw new Error("Unsupported dtype in weight '"+r+"': "+a.dtype);t.push({name:r,shape:a.shape,dtype:a.dtype}),n.push(a.data())}return[4,Promise.all(n)];case 1:return[2,{data:function(e){if(null===e)throw new Error("Invalid input value: "+JSON.stringify(e));var t=0,n=[];e.forEach(function(e){if(t+=e.byteLength,n.push(e.byteLength===e.buffer.byteLength?e:new e.constructor(e)),!(e instanceof Float32Array||e instanceof Int32Array||e instanceof Uint8Array))throw new Error("Unsupported TypedArray subtype: "+e.constructor.name)});var r=new Uint8Array(t),a=0;return n.forEach(function(e){r.set(new Uint8Array(e.buffer),a),a+=e.byteLength}),r.buffer}(i.sent()),specs:t}]}})})},fromMemory:function(e,t,n){return new Iu(e,t,n)},getLoadHandlers:Mu,getModelArtifactsInfoForJSON:Ks,getSaveHandlers:Tu,loadWeights:function(e,t,n,r){return void 0===t&&(t=""),l(this,void 0,void 0,function(){var a,i,o,s,u,l,f,p,h,d;return c(this,function(c){switch(c.label){case 0:if(a=e.map(function(){return!1}),i={},o=null!=n?n.map(function(){return!1}):[],s=[],e.forEach(function(e,t){var r=0;e.weights.forEach(function(e){var u="quantization"in e?e.quantization.dtype:e.dtype,l=Us[u]*E(e.shape),c=function(){a[t]=!0,null==i[t]&&(i[t]=[]),i[t].push({manifestEntry:e,groupOffset:r,sizeBytes:l})};null!=n?n.forEach(function(t,n){t===e.name&&(c(),o[n]=!0)}):c(),s.push(e.name),r+=l})}),!o.every(function(e){return e}))throw u=n.filter(function(e,t){return!o[t]}),new Error("Could not find weights in manifest with names: "+u.join(", ")+". \nManifest JSON has weights with names: "+s.join(", ")+".");return l=a.reduce(function(e,t,n){return t&&e.push(n),e},[]),f=[],l.forEach(function(n){e[n].paths.forEach(function(e){var n=t+(t.endsWith("/")?"":"/")+e;f.push(n)})}),[4,Eu(f,r)];case 1:return p=c.sent(),h={},d=0,l.forEach(function(t){for(var n=e[t].paths.length,r=0,a=0;a0&&Number.isInteger(n),"If provided, numClasses must be a positive integer, but got "+n),b(1===r.rank,"Expected the rank of labels to be 1, but got "+r.rank),b(1===a.rank,"Expected the rank of predictions to be 1, but got "+a.rank),b(r.shape[0]===a.shape[0],"Mismatch in the number of examples: "+r.shape[0]+" vs. "+a.shape[0]+". Labels and predictions should have the same number of elements."),b(n>0&&Number.isInteger(n),"numClasses is required to be a positive integer, but got "+n);var i=ha(r.asType("int32"),n),o=ha(a.asType("int32"),n);return i.transpose().matMul(o).asType("int32")}}),ju=Object.freeze({confusionMatrix:Du}),Lu=function(){function e(){}return e.prototype.getClassName=function(){return this.constructor.className},e.fromConfig=function(e,t){return new e(t)},e}(),Bu=function(){function e(){this.classNameMap={}}return e.getMap=function(){return null==e.instance&&(e.instance=new e),e.instance},e.register=function(t){e.getMap().classNameMap[t.className]=[t,t.fromConfig]},e}();function zu(e){b(null!=e.className,"Class being registered does not have the static className property defined."),b("string"==typeof e.className,"className is required to be a string, but got type "+typeof e.className),b(e.className.length>0,"Class being registered has an empty-string as its className, which is disallowed."),Bu.register(e)}var Fu=Object.freeze({Serializable:Lu,SerializationMap:Bu,registerClass:zu});function Vu(e,t,n){if(null==n&&(n=ve.get("TEST_EPSILON")),e instanceof re||t instanceof re){if(e instanceof re&&t instanceof re){if(e.dtype!==t.dtype)throw new Error("Arrays are of different type actual: "+e.dtype+" vs expected: "+t.dtype+".");if(!N(e.shape,t.shape))throw new Error("Arrays are of different shape actual: "+e.shape+" vs expected: "+t.shape+".")}}else{var r=e.constructor.name,a=t.constructor.name;if(r!==a)throw new Error("Arrays are of different type actual: "+r+" vs expected: "+a)}var i,o;if(i=e instanceof re?e.dataSync():e,o=t instanceof re?t.dataSync():t,i.length!==o.length)throw new Error("Arrays have different lengths actual: "+i.length+" vs expected: "+o.length+".\nActual: "+i+".\nExpected: "+o+".");for(var s=0;sn)}var Wu=Object.freeze({WEBGL_ENVS:{HAS_WEBGL:!0},NODE_ENVS:{IS_NODE:!0},CHROME_ENVS:{IS_CHROME:!0},BROWSER_ENVS:{IS_BROWSER:!0},CPU_ENVS:{HAS_WEBGL:!1},BROWSER_CPU_ENVS:{BACKEND:"test-cpu"},ALL_ENVS:{},expectArraysClose:Vu,expectPromiseToFail:function(e,t){e().then(function(){return t.fail()},function(){return t()})},expectArraysEqual:function(e,t){return Vu(e,t,0)},expectNumbersClose:function(e,t,n){if(null==n&&(n=ve.get("TEST_EPSILON")),!Uu(e,t,n))throw new Error("Numbers differ: actual === "+e+", expected === "+t)},expectValuesInRange:function(e,t,n){var r;r=e instanceof re?e.dataSync():e;for(var a=0;an)throw new Error("Value out of range:"+r[a]+" low: "+t+", high: "+n)},expectArrayBuffersEqual:function(e,t){expect(new Float32Array(e)).toEqual(new Float32Array(t))}}),qu="0.13.11",$u=Object.freeze({gpgpu_util:_r,webgl_util:tr,MathBackendWebGL:Ta,GPGPUContext:Er}),Gu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return s(t,e),t.prototype.minimize=function(e,t,n){void 0===t&&(t=!1);var r=this.computeGradients(e,n),a=r.value,i=r.grads;return this.applyGradients(i),Object.keys(i).forEach(function(e){return i[e].dispose()}),t?a:(a.dispose(),null)},t.prototype.computeGradients=function(e,t){return Ne(e,t)},t}(Lu),Hu=function(e){function t(t,n,r){void 0===r&&(r=null);var a=e.call(this)||this;return a.learningRate=t,a.rho=n,a.epsilon=r,a.accumulatedGrads={},a.accumulatedUpdates={},a.c=Ie(ct(-t)),a.rhoScalar=Ie(ct(n)),a.oneMinusRho=Ie(ct(1-n)),null===r&&(r=ve.get("EPSILON")),a.epsilonScalar=Ie(ct(r)),a}return s(t,e),t.prototype.applyGradients=function(e){var t=this,n=function(n){var a=ve.engine.registeredVariables[n];null==r.accumulatedGrads[n]&&ke(function(){t.accumulatedGrads[n]=Ct(a).variable(!1)}),null==r.accumulatedUpdates[n]&&ke(function(){t.accumulatedUpdates[n]=Ct(a).variable(!1)});var i=e[n],o=r.accumulatedGrads[n],s=r.accumulatedUpdates[n];ke(function(){var e=t.rhoScalar.mul(o).add(t.oneMinusRho.mul(i.square())),r=s.add(t.epsilonScalar).sqrt().div(o.add(t.epsilonScalar).sqrt()).mul(i),u=t.rhoScalar.mul(s).add(t.oneMinusRho.mul(r.square()));t.accumulatedGrads[n].assign(e),t.accumulatedUpdates[n].assign(u);var l=t.c.mul(r).add(a);a.assign(l)})},r=this;for(var a in e)n(a)},t.prototype.dispose=function(){var e=this;this.c.dispose(),this.epsilonScalar.dispose(),this.rhoScalar.dispose(),this.oneMinusRho.dispose(),null!=this.accumulatedUpdates&&(Object.keys(this.accumulatedUpdates).forEach(function(t){return e.accumulatedUpdates[t].dispose()}),Object.keys(this.accumulatedGrads).forEach(function(t){return e.accumulatedGrads[t].dispose()}))},t.prototype.getConfig=function(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}},t.fromConfig=function(e,t){return new e(t.learningRate,t.rho,t.epsilon)},t.className="AdadeltaOptimizer",t}(Gu);zu(Hu);var Ku=function(e){function t(t,n){void 0===n&&(n=.1);var r=e.call(this)||this;return r.learningRate=t,r.initialAccumulatorValue=n,r.accumulatedGrads={},r.c=Ie(ct(-t)),r.epsilon=Ie(ct(ve.get("EPSILON"))),r}return s(t,e),t.prototype.applyGradients=function(e){var t=this,n=function(n){var a=ve.engine.registeredVariables[n];null==r.accumulatedGrads[n]&&ke(function(){t.accumulatedGrads[n]=bt(a.shape,t.initialAccumulatorValue).variable(!1)});var i=e[n],o=r.accumulatedGrads[n];ke(function(){var e=o.add(i.square());t.accumulatedGrads[n].assign(e);var r=t.c.mul(i.div(e.add(t.epsilon).sqrt())).add(a);a.assign(r)})},r=this;for(var a in e)n(a)},t.prototype.dispose=function(){var e=this;this.epsilon.dispose(),this.c.dispose(),null!=this.accumulatedGrads&&Object.keys(this.accumulatedGrads).forEach(function(t){return e.accumulatedGrads[t].dispose()})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}},t.fromConfig=function(e,t){return new e(t.learningRate,t.initialAccumulatorValue)},t.className="AdagradOptimizer",t}(Gu);zu(Ku);var Xu=function(e){function t(t,n,r,a){void 0===a&&(a=null);var i=e.call(this)||this;return i.learningRate=t,i.beta1=n,i.beta2=r,i.epsilon=a,i.accumulatedFirstMoment={},i.accumulatedSecondMoment={},i.c=Ie(ct(-t)),i.beta1Scalar=Ie(ct(n)),i.beta2Scalar=Ie(ct(r)),ke(function(){i.accBeta1=ct(n).variable(),i.accBeta2=ct(r).variable()}),i.oneMinusBeta1=Ie(ct(1-n)),i.oneMinusBeta2=Ie(ct(1-r)),i.one=Ie(ct(1)),null===a&&(a=ve.get("EPSILON")),i.epsScalar=Ie(ct(a)),i}return s(t,e),t.prototype.applyGradients=function(e){var t=this;ke(function(){var n=t.one.sub(t.accBeta1),r=t.one.sub(t.accBeta2);for(var a in e){var i=ve.engine.registeredVariables[a];if(null==t.accumulatedFirstMoment[a]){var o=!1;t.accumulatedFirstMoment[a]=Ct(i).variable(o)}null==t.accumulatedSecondMoment[a]&&(o=!1,t.accumulatedSecondMoment[a]=Ct(i).variable(o));var s=e[a],u=t.accumulatedFirstMoment[a],l=t.accumulatedSecondMoment[a],c=t.beta1Scalar.mul(u).add(t.oneMinusBeta1.mul(s)),f=t.beta2Scalar.mul(l).add(t.oneMinusBeta2.mul(s.square())),p=c.div(n),h=f.div(r);t.accumulatedFirstMoment[a].assign(c),t.accumulatedSecondMoment[a].assign(f);var d=t.c.mul(p.div(t.epsScalar.add(h.sqrt()))).add(i);i.assign(d)}t.accBeta1.assign(t.accBeta1.mul(t.beta1Scalar)),t.accBeta2.assign(t.accBeta2.mul(t.beta2Scalar))})},t.prototype.dispose=function(){var e=this;this.c.dispose(),this.epsScalar.dispose(),this.beta1Scalar.dispose(),this.beta2Scalar.dispose(),this.accBeta1.dispose(),this.accBeta2.dispose(),this.oneMinusBeta1.dispose(),this.oneMinusBeta2.dispose(),this.one.dispose(),null!=this.accumulatedFirstMoment&&Object.keys(this.accumulatedFirstMoment).forEach(function(t){return e.accumulatedFirstMoment[t].dispose()}),null!=this.accumulatedSecondMoment&&Object.keys(this.accumulatedSecondMoment).forEach(function(t){return e.accumulatedSecondMoment[t].dispose()})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}},t.fromConfig=function(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)},t.className="AdamOptimizer",t}(Gu);zu(Xu);var Yu=function(e){function t(t,n,r,a,i){void 0===a&&(a=null),void 0===i&&(i=0);var o=e.call(this)||this;return o.learningRate=t,o.beta1=n,o.beta2=r,o.epsilon=a,o.decay=i,o.accumulatedFirstMoment={},o.accumulatedWeightedInfNorm={},o.c=Ie(ct(-t)),o.beta1Scalar=Ie(ct(n)),o.beta2Scalar=Ie(ct(r)),o.decayScalar=Ie(ct(i)),ke(function(){o.iteration=ct(0).variable(),o.accBeta1=ct(n).variable()}),o.oneMinusBeta1=Ie(ct(1-n)),o.one=Ie(ct(1)),null===a&&(a=ve.get("EPSILON")),o.epsScalar=Ie(ct(a)),o}return s(t,e),t.prototype.applyGradients=function(e){var t=this;ke(function(){var n=t.one.sub(t.accBeta1),r=t.c.div(t.one.add(t.decayScalar.mul(t.iteration)));for(var a in e){var i=ve.engine.registeredVariables[a];if(null==t.accumulatedFirstMoment[a]){var o=!1;t.accumulatedFirstMoment[a]=Ct(i).variable(o)}null==t.accumulatedWeightedInfNorm[a]&&(o=!1,t.accumulatedWeightedInfNorm[a]=Ct(i).variable(o));var s=e[a],u=t.accumulatedFirstMoment[a],l=t.accumulatedWeightedInfNorm[a],c=t.beta1Scalar.mul(u).add(t.oneMinusBeta1.mul(s)),f=t.beta2Scalar.mul(l),p=s.abs(),h=f.maximum(p);t.accumulatedFirstMoment[a].assign(c),t.accumulatedWeightedInfNorm[a].assign(h);var d=r.div(n).mul(c.div(t.epsScalar.add(h))).add(i);i.assign(d)}t.iteration.assign(t.iteration.add(t.one)),t.accBeta1.assign(t.accBeta1.mul(t.beta1Scalar))})},t.prototype.dispose=function(){var e=this;this.c.dispose(),this.epsScalar.dispose(),this.accBeta1.dispose(),this.beta1Scalar.dispose(),this.beta2Scalar.dispose(),this.oneMinusBeta1.dispose(),this.decayScalar.dispose(),this.iteration.dispose(),this.one.dispose(),null!=this.accumulatedFirstMoment&&Object.keys(this.accumulatedFirstMoment).forEach(function(t){return e.accumulatedFirstMoment[t].dispose()}),null!=this.accumulatedWeightedInfNorm&&Object.keys(this.accumulatedWeightedInfNorm).forEach(function(t){return e.accumulatedWeightedInfNorm[t].dispose()})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}},t.fromConfig=function(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)},t.className="AdamaxOptimizer",t}(Gu);zu(Yu);var Ju=function(e){function t(t){var n=e.call(this)||this;return n.learningRate=t,n.setLearningRate(t),n}return s(t,e),t.prototype.applyGradients=function(e){var t=this;Object.keys(e).forEach(function(n){var r=e[n],a=ve.engine.registeredVariables[n];ke(function(){var e=t.c.mul(r).add(a);a.assign(e)})})},t.prototype.setLearningRate=function(e){this.learningRate=e,null!=this.c&&this.c.dispose(),this.c=Ie(ct(-e))},t.prototype.dispose=function(){this.c.dispose()},t.prototype.getConfig=function(){return{learningRate:this.learningRate}},t.fromConfig=function(e,t){return new e(t.learningRate)},t.className="SGDOptimizer",t}(Gu);zu(Ju);var Zu=function(e){function t(t,n,r){void 0===r&&(r=!1);var a=e.call(this,t)||this;return a.learningRate=t,a.momentum=n,a.useNesterov=r,a.m=ct(a.momentum),a.accumulations={},a}return s(t,e),t.prototype.applyGradients=function(e){var t=this,n=function(n){var a=ve.engine.registeredVariables[n];null==r.accumulations[n]&&ke(function(){t.accumulations[n]=Ct(a).variable(!1)});var i=r.accumulations[n],o=e[n];ke(function(){var e,r=t.m.mul(i).add(o);e=t.useNesterov?t.c.mul(o.add(r.mul(t.m))).add(a):t.c.mul(r).add(a),t.accumulations[n].assign(r),a.assign(e)})},r=this;for(var a in e)n(a)},t.prototype.dispose=function(){if(e.prototype.dispose.call(this),this.m.dispose(),null!=this.accumulations)for(var t in this.accumulations)this.accumulations[t].dispose()},t.prototype.setMomentum=function(e){this.momentum=e},t.prototype.getConfig=function(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}},t.fromConfig=function(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)},t.className="MomentumOptimizer",t}(Ju);zu(Zu);var Qu=function(e){function t(t,n,r,a,i){void 0===n&&(n=.9),void 0===r&&(r=0),void 0===a&&(a=null),void 0===i&&(i=!1);var o=e.call(this)||this;return o.learningRate=t,o.decay=n,o.momentum=r,o.epsilon=a,o.accumulatedMeanSquares={},o.accumulatedMeanGrads={},o.accumulatedMoments={},o.c=Ie(ct(t)),o.decayScalar=Ie(ct(n)),o.momentumScalar=Ie(ct(r)),o.oneMinusDecay=Ie(ct(1-n)),o.centered=i,null===a&&(a=ve.get("EPSILON")),o.epsilonScalar=Ie(ct(a)),o}return s(t,e),t.prototype.applyGradients=function(e){var t=this,n=function(n){var a=ve.engine.registeredVariables[n];null==r.accumulatedMeanSquares[n]&&ke(function(){t.accumulatedMeanSquares[n]=Ct(a).variable(!1)}),null==r.accumulatedMeanGrads[n]&&r.centered&&ke(function(){t.accumulatedMeanGrads[n]=Ct(a).variable(!1)}),null==r.accumulatedMoments[n]&&ke(function(){t.accumulatedMoments[n]=Ct(a).variable(!1)});var i=r.accumulatedMeanSquares[n],o=r.accumulatedMeanGrads[n],s=r.accumulatedMoments[n],u=e[n];ke(function(){var e=t.decayScalar.mul(i).add(t.oneMinusDecay.mul(u.square()));if(t.centered){var r=t.decayScalar.mul(o).add(t.oneMinusDecay.mul(u)),l=t.momentumScalar.mul(s).add(t.c.mul(u).div(e.sub(r.square().add(t.epsilonScalar)).sqrt()));t.accumulatedMeanSquares[n].assign(e),t.accumulatedMeanGrads[n].assign(r),t.accumulatedMoments[n].assign(l);var c=a.sub(l);a.assign(c)}else{var f=t.decayScalar.mul(i).add(t.oneMinusDecay.mul(u.square()));l=t.momentumScalar.mul(s).add(t.c.mul(u).div(f.add(t.epsilonScalar).sqrt())),t.accumulatedMeanSquares[n].assign(f),t.accumulatedMoments[n].assign(l),c=a.sub(l),a.assign(c)}})},r=this;for(var a in e)n(a)},t.prototype.dispose=function(){var e=this;this.c.dispose(),this.epsilonScalar.dispose(),this.decayScalar.dispose(),this.momentumScalar.dispose(),this.oneMinusDecay.dispose(),null!=this.accumulatedMeanSquares&&Object.keys(this.accumulatedMeanSquares).forEach(function(t){return e.accumulatedMeanSquares[t].dispose()}),null!=this.accumulatedMeanGrads&&this.centered&&Object.keys(this.accumulatedMeanGrads).forEach(function(t){return e.accumulatedMeanGrads[t].dispose()}),null!=this.accumulatedMoments&&Object.keys(this.accumulatedMoments).forEach(function(t){return e.accumulatedMoments[t].dispose()})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}},t.fromConfig=function(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)},t.className="RMSPropOptimizer",t}(Gu);zu(Qu);var el=function(){function e(){}return e.sgd=function(e){return new Ju(e)},e.momentum=function(e,t,n){return void 0===n&&(n=!1),new Zu(e,t,n)},e.rmsprop=function(e,t,n,r,a){return void 0===t&&(t=.9),void 0===n&&(n=0),void 0===r&&(r=null),void 0===a&&(a=!1),new Qu(e,t,n,r,a)},e.adam=function(e,t,n,r){return void 0===e&&(e=.001),void 0===t&&(t=.9),void 0===n&&(n=.999),void 0===r&&(r=null),new Xu(e,t,n,r)},e.adadelta=function(e,t,n){return void 0===e&&(e=.001),void 0===t&&(t=.95),void 0===n&&(n=null),new Hu(e,t,n)},e.adamax=function(e,t,n,r,a){return void 0===e&&(e=.002),void 0===t&&(t=.9),void 0===n&&(n=.999),void 0===r&&(r=null),void 0===a&&(a=0),new Yu(e,t,n,r,a)},e.adagrad=function(e,t){return void 0===t&&(t=.1),new Ku(e,t)},e}(),tl={sgd:el.sgd,momentum:el.momentum,adadelta:el.adadelta,adagrad:el.adagrad,rmsprop:el.rmsprop,adamax:el.adamax,adam:el.adam},nl=ye.setBackend,rl=ye.getBackend,al=ye.disposeVariables,il=ye.memory;te=Bs}.call(this,n(46),n(26),n(160).setImmediate,n(16).Buffer)},function(e,t,n){"use strict";(function(e,r,a,i){n.d(t,"Fc",function(){return vu}),n.d(t,"Ya",function(){return bu}),n.d(t,"Ga",function(){return wu}),n.d(t,"Gb",function(){return xu}),n.d(t,"Dd",function(){return ou}),n.d(t,"Tb",function(){return is}),n.d(t,"La",function(){return ge}),n.d(t,"hb",function(){return Zs}),n.d(t,"Ec",function(){return nu}),n.d(t,"nd",function(){return iu}),n.d(t,"yd",function(){return V}),n.d(t,"Ed",function(){return su}),n.d(t,"a",function(){return lu}),n.d(t,"b",function(){return cu}),n.d(t,"c",function(){return fu}),n.d(t,"d",function(){return pu}),n.d(t,"g",function(){return du}),n.d(t,"h",function(){return uu}),n.d(t,"i",function(){return mu}),n.d(t,"l",function(){return hu}),n.d(t,"m",function(){return Q}),n.d(t,"n",function(){return X}),n.d(t,"Bd",function(){return te}),n.d(t,"o",function(){return ee}),n.d(t,"j",function(){return gt}),n.d(t,"k",function(){return Co}),n.d(t,"e",function(){return me}),n.d(t,"f",function(){return de}),n.d(t,"gb",function(){return ts}),n.d(t,"ob",function(){return Yo}),n.d(t,"zb",function(){return Go}),n.d(t,"ac",function(){return Je}),n.d(t,"H",function(){return qa}),n.d(t,"I",function(){return $a}),n.d(t,"J",function(){return Ga}),n.d(t,"G",function(){return Ha}),n.d(t,"Q",function(){return Qe}),n.d(t,"qc",function(){return et}),n.d(t,"fb",function(){return tt}),n.d(t,"R",function(){return vr}),n.d(t,"S",function(){return br}),n.d(t,"T",function(){return wr}),n.d(t,"U",function(){return xr}),n.d(t,"V",function(){return _r}),n.d(t,"Sc",function(){return Er}),n.d(t,"W",function(){return ii}),n.d(t,"X",function(){return oi}),n.d(t,"Ea",function(){return si}),n.d(t,"Dc",function(){return ui}),n.d(t,"Y",function(){return li}),n.d(t,"Ab",function(){return Qa}),n.d(t,"Ja",function(){return ei}),n.d(t,"bc",function(){return ti}),n.d(t,"uc",function(){return ci}),n.d(t,"vc",function(){return fi}),n.d(t,"wc",function(){return pi}),n.d(t,"xc",function(){return hi}),n.d(t,"yc",function(){return di}),n.d(t,"Cb",function(){return mi}),n.d(t,"E",function(){return gi}),n.d(t,"Kc",function(){return yi}),n.d(t,"Lc",function(){return vi}),n.d(t,"Mc",function(){return bi}),n.d(t,"Nc",function(){return wi}),n.d(t,"Oc",function(){return xi}),n.d(t,"p",function(){return fa}),n.d(t,"q",function(){return pa}),n.d(t,"r",function(){return ha}),n.d(t,"z",function(){return da}),n.d(t,"A",function(){return ma}),n.d(t,"B",function(){return ga}),n.d(t,"D",function(){return ya}),n.d(t,"N",function(){return va}),n.d(t,"O",function(){return ba}),n.d(t,"Z",function(){return wa}),n.d(t,"Aa",function(){return xa}),n.d(t,"Oa",function(){return _a}),n.d(t,"Pa",function(){return Ea}),n.d(t,"Ra",function(){return Na}),n.d(t,"Ua",function(){return Sa}),n.d(t,"rb",function(){return Oa}),n.d(t,"sb",function(){return ka}),n.d(t,"tb",function(){return Ia}),n.d(t,"Sb",function(){return Ca}),n.d(t,"rc",function(){return Pa}),n.d(t,"zc",function(){return Aa}),n.d(t,"Ac",function(){return Ta}),n.d(t,"Gc",function(){return Ma}),n.d(t,"Hc",function(){return Ra}),n.d(t,"Ic",function(){return Da}),n.d(t,"Jc",function(){return ja}),n.d(t,"Qc",function(){return La}),n.d(t,"Tc",function(){return Ba}),n.d(t,"Uc",function(){return za}),n.d(t,"Zc",function(){return Fa}),n.d(t,"ed",function(){return Va}),n.d(t,"fd",function(){return Ua}),n.d(t,"v",function(){return Ei}),n.d(t,"w",function(){return Ni}),n.d(t,"x",function(){return Si}),n.d(t,"y",function(){return Oi}),n.d(t,"ub",function(){return ki}),n.d(t,"Bb",function(){return Ii}),n.d(t,"Fb",function(){return Ci}),n.d(t,"Hb",function(){return Pi}),n.d(t,"Mb",function(){return Ai}),n.d(t,"dd",function(){return Ti}),n.d(t,"Ma",function(){return Mi}),n.d(t,"Na",function(){return Ri}),n.d(t,"bb",function(){return Di}),n.d(t,"cb",function(){return ji}),n.d(t,"db",function(){return Li}),n.d(t,"eb",function(){return Bi}),n.d(t,"kb",function(){return zi}),n.d(t,"lb",function(){return Fi}),n.d(t,"mb",function(){return Vi}),n.d(t,"nb",function(){return Ui}),n.d(t,"Vb",function(){return Wi}),n.d(t,"Wb",function(){return qi}),n.d(t,"s",function(){return $i}),n.d(t,"t",function(){return Gi}),n.d(t,"u",function(){return Hi}),n.d(t,"C",function(){return Ki}),n.d(t,"Ha",function(){return Xi}),n.d(t,"Ia",function(){return Yi}),n.d(t,"Va",function(){return Ji}),n.d(t,"Db",function(){return Zi}),n.d(t,"Eb",function(){return Qi}),n.d(t,"Ib",function(){return eo}),n.d(t,"Jb",function(){return to}),n.d(t,"Kb",function(){return no}),n.d(t,"Lb",function(){return ro}),n.d(t,"Ob",function(){return ao}),n.d(t,"Pb",function(){return io}),n.d(t,"hc",function(){return oo}),n.d(t,"ic",function(){return so}),n.d(t,"Vc",function(){return uo}),n.d(t,"Wc",function(){return lo}),n.d(t,"bd",function(){return co}),n.d(t,"cd",function(){return fo}),n.d(t,"Ka",function(){return bo}),n.d(t,"jb",function(){return wo}),n.d(t,"jc",function(){return xo}),n.d(t,"sc",function(){return _o}),n.d(t,"Cc",function(){return Eo}),n.d(t,"vb",function(){return po}),n.d(t,"wb",function(){return ho}),n.d(t,"xb",function(){return mo}),n.d(t,"yb",function(){return go}),n.d(t,"Fd",function(){return yo}),n.d(t,"Gd",function(){return vo}),n.d(t,"L",function(){return Dr}),n.d(t,"rd",function(){return Rr}),n.d(t,"kc",function(){return jr}),n.d(t,"K",function(){return Lr}),n.d(t,"M",function(){return Br}),n.d(t,"P",function(){return zr}),n.d(t,"Ba",function(){return Fr}),n.d(t,"Da",function(){return Vr}),n.d(t,"Qa",function(){return Ur}),n.d(t,"Sa",function(){return Wr}),n.d(t,"Wa",function(){return qr}),n.d(t,"Rb",function(){return $r}),n.d(t,"Xb",function(){return Gr}),n.d(t,"cc",function(){return Hr}),n.d(t,"dc",function(){return Kr}),n.d(t,"ec",function(){return Xr}),n.d(t,"fc",function(){return Yr}),n.d(t,"gc",function(){return Jr}),n.d(t,"mc",function(){return Zr}),n.d(t,"nc",function(){return Qr}),n.d(t,"oc",function(){return ea}),n.d(t,"tc",function(){return ta}),n.d(t,"Rc",function(){return na}),n.d(t,"Xc",function(){return ra}),n.d(t,"Yc",function(){return aa}),n.d(t,"pd",function(){return ia}),n.d(t,"vd",function(){return oa}),n.d(t,"xd",function(){return sa}),n.d(t,"Ta",function(){return pt}),n.d(t,"pb",function(){return ht}),n.d(t,"Yb",function(){return ct}),n.d(t,"pc",function(){return dt}),n.d(t,"Bc",function(){return rt}),n.d(t,"gd",function(){return nt}),n.d(t,"hd",function(){return at}),n.d(t,"id",function(){return it}),n.d(t,"jd",function(){return ot}),n.d(t,"kd",function(){return st}),n.d(t,"ld",function(){return ut}),n.d(t,"md",function(){return lt}),n.d(t,"Hd",function(){return ft}),n.d(t,"Zb",function(){return xt}),n.d(t,"Id",function(){return _t}),n.d(t,"ud",function(){return No}),n.d(t,"Pc",function(){return Ze}),n.d(t,"qb",function(){return So}),n.d(t,"Ub",function(){return Oo}),n.d(t,"Xa",function(){return Po}),n.d(t,"wd",function(){return Ao}),n.d(t,"F",function(){return To}),n.d(t,"Qb",function(){return Mo}),n.d(t,"Nb",function(){return Ro}),n.d(t,"ad",function(){return Do}),n.d(t,"sd",function(){return jo}),n.d(t,"td",function(){return yu}),n.d(t,"od",function(){return Ne}),n.d(t,"ib",function(){return Se}),n.d(t,"Fa",function(){return Oe}),n.d(t,"qd",function(){return ke}),n.d(t,"lc",function(){return Ie}),n.d(t,"Ca",function(){return _e}),n.d(t,"Za",function(){return ye}),n.d(t,"ab",function(){return ve}),n.d(t,"zd",function(){return be}),n.d(t,"Ad",function(){return we}),n.d(t,"Cd",function(){return xe}); +var o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};function s(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var u=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&a[a.length-1])&&(6===i[0]||2===i[0])){o=0;continue}if(3===i[0]&&(!a||i[1]>a[0]&&i[1]0;)r=Math.random()*t|0,n=e[--t],e[t]=e[r],e[r]=n}function m(e,t,n){return Math.max(e,Math.min(t,n))}function g(e){return e%2==0?e:e+1}function y(e){for(var t=0,n=0;n1;--t)if(e%t==0)return[t,e/t];return[1,e]}function I(e,t){return t<=e.length?e:e+" ".repeat(t-e.length)}function C(e,t,n){return void 0===t&&(t=function(e){return 0}),new Promise(function(r,a){var i=0,o=function(){if(e())r();else{var s=t(++i);null!=n&&i>=n?a():setTimeout(o,s)}};o()})}function P(e,t){for(var n=1,r=-1,a=0;a=0)n*=e[a];else if(-1===e[a]){if(-1!==r)throw Error("Shapes can only have 1 implicit size. Found -1 at dim "+r+" and dim "+a);r=a}else if(e[a]<0)throw Error("Shapes can not be < 0. Found "+e[a]+" at dim "+a);if(-1===r){if(t>0&&t!==n)throw Error("Size("+t+") must match the product of shape "+e);return e}if(0===n)throw Error("Cannot infer the missing size in ["+e+"] when there are 0 elements");if(t%n!=0)throw Error("The implicit shape can't be a fractional number. Got "+t+" / "+n);var i=e.slice();return i[r]=t/n,i}function A(e,t){for(var n=[],r=[],a=0,i=0;ii)&&1===e[i]&&(n.push(e[i]),r.push(i)),t[a]<=i&&a++}1!==e[i]&&(n.push(e[i]),r.push(i))}return{newShape:n,keptDims:r}}function T(e,t){var n=null;if(null==e||"float32"===e)n=new Float32Array(t);else if("int32"===e)n=new Int32Array(t);else{if("bool"!==e)throw new Error("Unknown data type "+e);n=new Uint8Array(t)}return n}function M(e,t,n){if("float32"===t)for(var r=0;r=0;--r)n[r]=n[r+1]*e[r+1];return n}function V(e,t,n){return function(e,t){return e instanceof Float32Array&&"float32"===t||e instanceof Int32Array&&"int32"===t||e instanceof Uint8Array&&"bool"===t}(e,t)?e:(Array.isArray(e)&&(e=_(e)),function(e,t,n){if(null==t||"float32"===t||"complex64"===t)return new Float32Array(e);if("int32"===t)return n&&R(e,t),new Int32Array(e);if("bool"===t){for(var r=new Uint8Array(e.length),a=0;a1)for(var l=0;lK){var c=X*s,f=Array.from(t.subarray(0,c)),p=Array.from(t.subarray(u-X*s,u));return"complex64"===r&&(f=Z(f),p=Z(p)),["["+f.map(function(e,t){return J(e,i[t])}).join(", ")+", ..., "+p.map(function(e,t){return J(e,i[u-X+t])}).join(", ")+"]"]}return["["+("complex64"===r?Z(t):Array.from(t)).map(function(e,t){return J(e,i[t])}).join(", ")+"]"]}var h=n.slice(1),d=a.slice(1),m=a[0]*s,g=[];if(u>K){for(var y=0;y {...}) to avoid memory leaks.");return this.keepTensors.add(e.id),e},e.prototype.startScope=function(e,t){void 0===t&&(t=!1),t&&0===this.gradientScopeCount&&(this.activeTape=[]),t&&this.gradientScopeCount++;var n={track:[],name:"unnamed scope"};e&&(n.name=e),this.scopeStack.push(n),this.activeScope=n},e.prototype.endScope=function(e,t){var n=this;void 0===t&&(t=!1),t&&(this.gradientScopeCount--,0===this.gradientScopeCount&&(this.activeTape=null));var r=new Set(this.keepTensors),a=se(e);a.forEach(function(e){return r.add(e.id)});for(var i=0;i0,"gradients() received an empty list of xs."),this.tidy("gradients",function(){var i=e();b(i instanceof re,"The result y returned by f() must be a tensor.");var o=function(e,t,n){for(var r={},a={},i=0;i=0;i--)for(o=(d=e[i]).inputs,c=0;c0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");var s={};return s[i.id]=null==n?function(e){var t=U(E(e),"float32");return re.make(e,{values:t})}(i.shape):n,function(e,t){for(var n=function(n){var r=t[n],a=[];if(r.outputs.forEach(function(t){var n=e[t.id];if(null!=n)a.push(n);else{var r=re.make(t.shape,{values:W(t.size,t.dtype)},t.dtype);a.push(r)}}),null==r.gradient)throw new Error("Cannot compute gradient: gradient function not found for "+r.name+".");var i=r.gradient(1===r.outputs.length?a[0]:a);for(var o in r.inputs){if(!(o in i))throw new Error("Cannot backprop through input "+o+". Available gradients found: "+Object.keys(i)+".");var s=i[o](),u=r.inputs[o];if(!N(s.shape,u.shape))throw new Error("Error in gradient for op "+r.name+". The gradient of input '"+o+"' has shape '"+s.shape+"', which does not match the shape of the input '"+u.shape+"'");if(null==e[u.id])e[u.id]=s;else{var l=e[u.id];e[u.id]=l.add(s),l.dispose()}}},r=t.length-1;r>=0;r--)n(r)}(s,o),{value:i,grads:t.map(function(e){return s[e.id]})}},!0)},e.prototype.customGrad=function(e){var t=this;return b(B(e),"The f passed in customGrad(f) must be a function."),function(){for(var n,r,a=[],i=0;i {op();...}); to avoid memory leaks.");return this.activeScope.track.push(e),e},e.nextTensorId=0,e.nextVariableId=0,e}();!function(e){e[e.NUMBER=0]="NUMBER",e[e.BOOLEAN=1]="BOOLEAN",e[e.STRING=2]="STRING"}(ue||(ue={}));var ce,fe=[{name:"DEBUG",type:ue.BOOLEAN},{name:"IS_BROWSER",type:ue.BOOLEAN},{name:"WEBGL_LAZILY_UNPACK",type:ue.BOOLEAN},{name:"WEBGL_CPU_FORWARD",type:ue.BOOLEAN},{name:"WEBGL_PACK_BATCHNORMALIZATION",type:ue.BOOLEAN},{name:"WEBGL_CONV_IM2COL",type:ue.BOOLEAN},{name:"WEBGL_MAX_TEXTURE_SIZE",type:ue.NUMBER},{name:"WEBGL_PAGING_ENABLED",type:ue.BOOLEAN},{name:"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",type:ue.NUMBER},{name:"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",type:ue.BOOLEAN},{name:"WEBGL_VERSION",type:ue.NUMBER},{name:"WEBGL_RENDER_FLOAT32_ENABLED",type:ue.BOOLEAN},{name:"WEBGL_DOWNLOAD_FLOAT_ENABLED",type:ue.BOOLEAN},{name:"WEBGL_FENCE_API_ENABLED",type:ue.BOOLEAN},{name:"WEBGL_SIZE_UPLOAD_UNIFORM",type:ue.NUMBER},{name:"BACKEND",type:ue.STRING},{name:"EPSILON",type:ue.NUMBER},{name:"PROD",type:ue.BOOLEAN},{name:"TENSORLIKE_CHECK_SHAPE_CONSISTENCY",type:ue.BOOLEAN}];function pe(e){try{if(null!=h(e))return!0}catch(e){return!1}return!1}var he="tfjsflags";function de(){var e={};if("undefined"==typeof window||void 0===window.location||void 0===window.location.search)return e;var t=function(e){var t={};return window.location.search.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,function(e){for(var n=[],r=1;r0&&!function(){var e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))}();if("HAS_WEBGL"===t)return this.get("WEBGL_VERSION")>0;if("WEBGL_VERSION"===t)return pe(2)?2:pe(1)?1:0;if("WEBGL_RENDER_FLOAT32_ENABLED"===t)return function(e){if(0===e)return!1;var t=h(e);if(1===e){if(!me(t,"OES_texture_float"))return!1}else if(!me(t,"EXT_color_buffer_float"))return!1;return ge(t,e)}(this.get("WEBGL_VERSION"));if("WEBGL_DOWNLOAD_FLOAT_ENABLED"===t)return function(e){if(0===e)return!1;var t=h(e);if(1===e){if(!me(t,"OES_texture_float"))return!1;if(!me(t,"WEBGL_color_buffer_float"))return!1}else if(!me(t,"EXT_color_buffer_float"))return!1;return ge(t,e)}(this.get("WEBGL_VERSION"));if("WEBGL_FENCE_API_ENABLED"===t)return function(e){return 2===e&&null!=h(e).fenceSync}(this.get("WEBGL_VERSION"));if("WEBGL_SIZE_UPLOAD_UNIFORM"===t)return this.get("WEBGL_RENDER_FLOAT32_ENABLED")?4:0;if("TEST_EPSILON"===t)return 32===this.backend.floatPrecision()?.001:.1;if("EPSILON"===t)return 32===this.backend.floatPrecision()?1e-7:.001;if("PROD"===t)return!1;if("TENSORLIKE_CHECK_SHAPE_CONSISTENCY"===t)return!this.get("PROD");throw new Error("Unknown feature "+t+".")},t.prototype.setFeatures=function(e){this.features=Object.assign({},e)},t.prototype.reset=function(){this.features=de(),null!=this.globalEngine&&(this.globalEngine=null)},Object.defineProperty(t.prototype,"backend",{get:function(){return this.engine.backend},enumerable:!0,configurable:!0}),t.prototype.findBackend=function(e){return e in this.registry?this.registry[e].backend:null},t.prototype.registerBackend=function(e,t,n,r){var a=this;if(void 0===n&&(n=1),e in this.registry)return console.warn(e+" backend was already registered. Reusing existing backend"),null!=r&&r(function(){return a.engine}),!1;try{var i=t();return i.setDataMover({moveData:function(e){return a.engine.moveData(e)}}),this.registry[e]={backend:i,priority:n},!0}catch(t){return console.warn("Registration of backend "+e+" failed"),console.warn(t.stack||t.message),!1}},t.prototype.removeBackend=function(e){if(!(e in this.registry))throw new Error(e+" backend not found in registry");this.registry[e].backend.dispose(),delete this.registry[e]},Object.defineProperty(t.prototype,"engine",{get:function(){return this.initEngine(),this.globalEngine},enumerable:!0,configurable:!0}),t.prototype.initEngine=function(){var e=this;if(null==this.globalEngine){this.backendName=this.get("BACKEND");var t=this.findBackend(this.backendName);this.globalEngine=new le(t,!1,function(){return e.get("DEBUG")})}},t}(),ve=function(){var t=function(){var t;if("undefined"!=typeof window)t=window;else{if(void 0===e)throw new Error("Could not find a global object");t=e}return t}();return null==t.ENV&&(t.ENV=new ye(de()),ne(function(){return t.ENV.engine})),t.ENV}(),be=Object.freeze({Environment:ye,ENV:ve});function we(e){return b(B(e),"The f passed in grad(f) must be a function"),function(t,n){return b(t instanceof re,"The x passed in grad(f)(x) must be a tensor"),b(null==n||n instanceof re,"The dy passed in grad(f)(x, dy) must be a tensor"),ve.engine.tidy(function(){var r=ve.engine.gradients(function(){return e(t)},[t],n),a=r.value,i=r.grads;return null!=n&&w(a.shape,n.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),Oe(i),i[0]})}}function xe(e){return b(B(e),"The f passed in grads(f) must be a function"),function(t,n){return b(Array.isArray(t)&&t.every(function(e){return e instanceof re}),"The args passed in grads(f)(args) must be an array of tensors"),b(null==n||n instanceof re,"The dy passed in grads(f)(args, dy) must be a tensor"),ve.engine.tidy(function(){var r=ve.engine.gradients(function(){return e.apply(void 0,t)},t,n),a=r.value,i=r.grads;return null!=n&&w(a.shape,n.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Oe(i),i})}}function _e(e){return b(B(e),"The f passed in valueAndGrad(f) must be a function"),function(t,n){b(t instanceof re,"The x passed in valueAndGrad(f)(x) must be a tensor"),b(null==n||n instanceof re,"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");var r=ve.engine.gradients(function(){return e(t)},[t],n),a=r.grads,i=r.value;return Oe(a),{grad:a[0],value:i}}}function Ee(e){return b(B(e),"The f passed in valueAndGrads(f) must be a function"),function(t,n){b(Array.isArray(t)&&t.every(function(e){return e instanceof re}),"The args passed in valueAndGrads(f)(args) must be array of tensors"),b(null==n||n instanceof re,"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");var r=ve.engine.gradients(function(){return e.apply(void 0,t)},t,n);return null!=n&&w(r.value.shape,n.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Oe(r.grads),r}}function Ne(e,t){if(b(B(e),"The f passed in variableGrads(f) must be a function"),b(null==t||Array.isArray(t)&&t.every(function(e){return e instanceof ae}),"The varList passed in variableGrads(f, varList) must be an array of variables"),null==t)for(var n in t=[],ve.engine.registeredVariables)t.push(ve.engine.registeredVariables[n]);var r=t.length;b((t=t.filter(function(e){return e.trainable})).length>0,"variableGrads() expects at least one of the input variables to be trainable, but none of the "+r+" variables is trainable.");var a=ve.engine.gradients(e,t,null,!0),i=a.value,o=a.grads;b(o.some(function(e){return null!=e}),"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),b(0===i.rank,"The f passed in variableGrads(f) must return a scalar, but it returned a rank-"+i.rank+" tensor");var s={};return t.forEach(function(e,t){null!=o[t]&&(s[e.name]=o[t])}),{value:i,grads:s}}function Se(e){return ve.engine.customGrad(e)}function Oe(e){if(e.filter(function(e){return null==e}).length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that\n the f you passed encloses all operations that lead from x to y.")}var ke=ye.tidy,Ie=ye.keep,Ce=ye.dispose,Pe=ye.time,Ae=ye.profile;function Te(){for(var e=[],t=0;t=2*t+1||a%2==1?o.push(a):i.push(a);r.push.apply(r,i),r.push(0),r.push.apply(r,o)}return r}function De(e,t,n,r){void 0===r&&(r=!0);var a=[];r?a.push(e[0]/n):a.push(e[0]*n);for(var i=1;i=-n&&ee.rank)throw new Error("index innermost dimension length must be <= tensor rank; saw: "+t.shape[t.rank-1]+" vs. "+e.rank);if(0===e.size)throw new Error("Requested more than 0 entries, but input is empty. Input shape: "+e.shape+".");for(var n=t.shape,r=n[n.length-1],a=1,i=0;i1?t.shape[t.rank-1]:1,a=n.length,i=1,o=r;o0?a>=c[t]:a<=c[t]);a+=r[t])n+=1;return n}),[l,h,f]}function Ze(e,t,n,r,a){var i=t[a];e&1<0?Number.MIN_SAFE_INTEGER:Number.MAX_SAFE_INTEGER);var o=r[a];return i<0&&(i+=o),m(0,i,o-1)}function Qe(e,t,n,r,a){var i=t[a];e&1<0?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER);var o=r[a];return i<0&&(i+=o),n[a]>0?m(0,i,o):m(-1,i,o-1)}function et(e){var t=e;if(j(e))return[e.length];if(!Array.isArray(e))return[];for(var n=[];t instanceof Array;)n.push(t.length),t=t[0];return e instanceof Array&&ve.get("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&function e(t,n,r){if(r=r||[],t instanceof Array){b(n.length>0,function(){return"Element arr["+r.join("][")+"] should be a primitive, but is an array of "+t.length+" elements"}),b(t.length===n[0],function(){return"Element arr["+r.join("][")+"] should have "+n[0]+" elements, but has "+t.length+" elements"});for(var a=n.slice(1),i=0;i1)return vt([0],r);var a=W(Math.abs(Math.ceil((t-e)/n)),r);ta}).sort(function(e,t){return t.score-e.score}),o=[],s=0;s=0;--p)if(Ut(e,c,o[p])>=r){f=!0;break}if(!f&&(o.push(c),o.length>=n))break}return ft(o,"int32")}function Ut(e,t,n){var r=e.subarray(4*t,4*t+4),a=e.subarray(4*n,4*n+4),i=Math.min(r[0],r[2]),o=Math.min(r[1],r[3]),s=Math.max(r[0],r[2]),u=Math.max(r[1],r[3]),l=Math.min(a[0],a[2]),c=Math.min(a[1],a[3]),f=Math.max(a[0],a[2]),p=Math.max(a[1],a[3]),h=(s-i)*(u-o),d=(f-l)*(p-c);if(h<=0||d<=0)return 0;var m=Math.max(i,l),g=Math.max(o,c),y=Math.min(s,f),v=Math.min(u,p),b=Math.max(y-m,0)*Math.max(v-g,0);return b/(h+d-b)}function Wt(e,t,n){var r=Array(e.rank).fill(0),a=e.shape.slice();return t.map(function(t){a[n]=t;var i=e.slice(r,a);return r[n]+=t,i})}function qt(e,t,n,r,a){for(var i=t[t.length-1],o=[e.length/i,i],s=o[0],u=o[1],l=T(n,s*r),c=T("int32",s*r),f=0;f1&&1===o&&r.unshift(i)}return r}function Gt(e,t){for(var n=[],r=0;r1)&&n.unshift(i)}return n}function Ht(e,t){for(var n=[],r=Math.max(e.length,t.length),a=0;a1?"["+t+"]":"")+";":"uniform sampler2D "+e.name+";"});i=i.join("\n");var o,s,u=e.map(function(e){return function(e,t,n){var r=function(e){var t=e.name,n="get"+t.charAt(0).toUpperCase()+t.slice(1)+"Flat",r=E(e.shapeInfo.logicalShape);if(e.shapeInfo.isUniform)return 1===r?"float "+n+"(int index) {return "+t+";}":"\n float "+n+"(int index) {\n for (int i = 0; i < "+r+"; i++) {\n if (i == index) {\n return "+t+"[i];\n }\n }\n }\n ";var a=e.shapeInfo.texShape,i=a[0],o=a[1];return 1===o&&1===i?"\n float "+n+"(int index) {\n return sampleTexture("+t+", halfCR);\n }\n ":1===o?"\n float "+n+"(int index) {\n vec2 uv = vec2(0.5, (float(index) + 0.5) / "+i+".0);\n return sampleTexture("+t+", uv);\n }\n ":1===i?"\n float "+n+"(int index) {\n vec2 uv = vec2((float(index) + 0.5) / "+o+".0, 0.5);\n return sampleTexture("+t+", uv);\n }\n ":"\n float "+n+"(int index) {\n vec2 uv = UVfrom1D("+i+", "+o+", index);\n return sampleTexture("+t+", uv);\n }\n "}(e);return e.shapeInfo.isPacked?r+=function e(t){var n=t.shapeInfo.logicalShape;switch(n.length){case 1:return function(e){var t=e.name,n="get"+t.charAt(0).toUpperCase()+t.slice(1),r=e.shapeInfo.texShape,a=[Math.ceil(r[0]/2),Math.ceil(r[1]/2)];return"\n vec4 "+n+"(int index) {\n vec2 uv = packedUVfrom1D(\n "+a[0]+", "+a[1]+", index);\n return texture2D("+t+", uv);\n }\n "}(t);case 2:return function(e){var t=e.shapeInfo.logicalShape,n=e.name,r="get"+n.charAt(0).toUpperCase()+n.slice(1),a=e.shapeInfo.texShape,i=a[0],o=a[1];if(null!=a&&N(t,a))return"\n vec4 "+r+"(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2("+o+".0, "+i+".0);\n\n return texture2D("+n+", uv);\n }\n ";var s=[Math.ceil(a[0]/2),Math.ceil(a[1]/2)];return"\n vec4 "+r+"(int row, int col) {\n vec2 uv = packedUVfrom2D("+Math.ceil(t[1]/2)+", "+s[0]+", "+s[1]+", row, col);\n return texture2D("+n+", uv);\n }\n "}(t);case 3:return function(t){var n=t.shapeInfo.logicalShape,r=t.name,a="get"+r.charAt(0).toUpperCase()+r.slice(1),i=t.shapeInfo.texShape,o=[Math.ceil(i[0]/2),Math.ceil(i[1]/2)];if(1===n[0])return"\n "+e(fn(t,n.slice(1)))+"\n vec4 "+a+"(int b, int row, int col) {\n return "+a+"("+pn(["b","row","col"],[1,2])+");\n }\n ";var s=o[0],u=o[1],l=Math.ceil(n[2]/2);return"\n vec4 "+a+"(int b, int row, int col) {\n vec2 uv = packedUVfrom3D(\n "+s+", "+u+", "+l*Math.ceil(n[1]/2)+", "+l+", b, row, col);\n return texture2D("+r+", uv);\n }\n "}(t);case 4:return function(e){var t=e.shapeInfo.logicalShape,n=e.name,r="get"+n.charAt(0).toUpperCase()+n.slice(1),a=e.shapeInfo.texShape,i=[Math.ceil(a[0]/2),Math.ceil(a[1]/2)],o=i[0],s=i[1],u=Math.ceil(t[3]/2),l=u*Math.ceil(t[2]/2);return"\n vec4 "+r+"(int b2, int b, int row, int col) {\n vec2 uv = packedUVfrom4D(\n "+o+", "+s+", "+l*t[1]+",\n "+l+", "+u+", b2, b, row, col);\n return texture2D("+n+", uv);\n }\n "}(t);default:throw new Error("Packed "+n.length+"-D input sampling is not yet supported")}}(e):r+=function e(t){var n=t.shapeInfo.logicalShape;switch(n.length){case 0:return function(e){var t=e.name,n="get"+t.charAt(0).toUpperCase()+t.slice(1);return e.shapeInfo.isUniform?"float "+n+"() {return "+t+";}":"\n float "+n+"() {\n return sampleTexture("+t+", halfCR);\n }\n "}(t);case 1:return function(e){var t=e.name,n="get"+t.charAt(0).toUpperCase()+t.slice(1);return"\n float "+n+"(int index) {\n return "+n+"Flat(index);\n }\n "}(t);case 2:return function(t){var n=t.shapeInfo.logicalShape,r=t.name,a="get"+r.charAt(0).toUpperCase()+r.slice(1),i=t.shapeInfo.texShape;if(null!=i&&N(n,i)){var o=i[0];return"\n float "+a+"(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2("+i[1]+".0, "+o+".0);\n return sampleTexture("+r+", uv);\n }\n "}var s=A(n),u=s.newShape,l=s.keptDims,c=u;if(c.lengths||o.length>0),c=function(e){for(var t=0;t=1?"coords = 0;":s.map(function(e){return"coords["+(e+u)+"] = 0;"}).join("\n"))+"\n return get"+n+"("+(i<2&&a>0?"coords":e.shapeInfo.logicalShape.map(function(e,t){return"coords["+(t+u)+"]"}).join(", "))+");\n }\n "}(e,t,a,i);var p=E(e.shapeInfo.logicalShape),h="";l&&c&&(h="\n int mainPart = index / "+p+";\n index -= mainPart * "+p+";\n ");var d=t.texShape;if(f)return 1===p?"float "+i+"() {return "+r+";}":"\n float "+i+"() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+d[0]+", "+d[1]+"));\n int index = resTexRC.x * "+d[1]+" + resTexRC.y;\n "+h+"\n return get"+a+"Flat(index);\n }\n ";var m=e.shapeInfo.texShape;return N(m,d)?"\n float "+i+"() {\n return sampleTexture("+r+", resultUV);\n }\n ":"\n float "+i+"() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+d[0]+", "+d[1]+"));\n int index = resTexRC.x * "+d[1]+" + resTexRC.y;\n "+h+"\n int texR = index / "+m[1]+";\n int texC = index - texR * "+m[1]+";\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+m[1]+".0, "+m[0]+".0);\n\n return sampleTexture("+r+", uv);\n }\n "}(e,t,n)),r}(e,t,r)}).join("\n"),l=t.texShape,c=un;return t.isPacked?(o=function(e,t){switch(e.length){case 0:return"\n int getOutputCoords() {\n return 0;\n }\n ";case 1:return function(e,t){var n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)];return 1===t[0]?"\n int getOutputCoords() {\n return 2 * int(resultUV.x * "+n[1]+".0);\n }\n ":1===t[1]?"\n int getOutputCoords() {\n return 2 * int(resultUV.y * "+n[0]+".0);\n }\n ":"\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n return resTexRC.x * "+n[1]+" + resTexRC.y;\n }\n "}(0,t);case 2:return function(e,t){var n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)];if(N(e,t))return"\n ivec2 getOutputCoords() {\n return 2 * ivec2(resultUV.yx * vec2("+n[0]+", "+n[1]+"));\n }\n ";var r=Math.ceil(e[1]/2);return"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n\n int index = resTexRC.x * "+n[1]+" + resTexRC.y;\n int r = 2 * (index / "+r+");\n int c = imod(index, "+r+") * 2;\n\n return ivec2(r, c);\n }\n "}(e,t);case 3:return function(e,t){var n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)],r=Math.ceil(e[2]/2),a=r*Math.ceil(e[1]/2);return"\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n int index = resTexRC.x * "+n[1]+" + resTexRC.y;\n\n int b = index / "+a+";\n index -= b * "+a+";\n\n int r = 2 * (index / "+r+");\n int c = imod(index, "+r+") * 2;\n\n return ivec3(b, r, c);\n }\n "}(e,t);case 4:return function(e,t){var n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)],r=Math.ceil(e[3]/2),a=r*Math.ceil(e[2]/2),i=a*e[1];return"\n ivec4 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n int index = resTexRC.x * "+n[1]+" + resTexRC.y;\n\n int b2 = index / "+i+";\n index -= b2 * "+i+";\n\n int b = index / "+a+";\n index -= b * "+a+";\n\n int r = 2 * (index / "+r+");\n int c = imod(index, "+r+") * 2;\n\n return ivec4(b2, b, r, c);\n }\n "}(e,t);default:throw new Error(e.length+"-D packed output coordinate fetching is not yet supported")}}(t.logicalShape,l),s=sn):(o=function(e,t){switch(e.length){case 0:return"\n int getOutputCoords() {\n return 0;\n }\n ";case 1:return function(e,t){return 1===t[0]?"\n int getOutputCoords() {\n return int(resultUV.x * "+t[1]+".0);\n }\n ":1===t[1]?"\n int getOutputCoords() {\n return int(resultUV.y * "+t[0]+".0);\n }\n ":"\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n return resTexRC.x * "+t[1]+" + resTexRC.y;\n }\n "}(0,t);case 2:return function(e,t){return N(e,t)?"\n ivec2 getOutputCoords() {\n return ivec2(resultUV.yx * vec2("+t[0]+", "+t[1]+"));\n }\n ":1===e[1]?"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n return ivec2(index, 0);\n }\n ":1===e[0]?"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n return ivec2(0, index);\n }\n ":"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n int r = index / "+e[1]+";\n int c = index - r * "+e[1]+";\n return ivec2(r, c);\n }\n "}(e,t);case 3:return function(e,t){var n=tn(["r","c","d"],e);return"\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n "+n+"\n return ivec3(r, c, d);\n }\n "}(e,t);case 4:return function(e,t){var n=tn(["r","c","d","d2"],e);return"\n ivec4 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n "+n+"\n return ivec4(r, c, d, d2);\n }\n "}(e,t);case 5:return function(e,t){var n=tn(["r","c","d","d2","d3"],e);return"\n ivec5 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx * vec2("+t[0]+",\n "+t[1]+"));\n\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n\n "+n+"\n\n ivec5 outShape = ivec5(r, c, d, d2, d3);\n return outShape;\n }\n "}(e,t);case 6:return function(e,t){var n=tn(["r","c","d","d2","d3","d4"],e);return"\n ivec6 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n\n "+n+"\n\n ivec6 result = ivec6(r, c, d, d2, d3, d4);\n return result;\n }\n "}(e,t);default:throw new Error(e.length+"-D output sampling is not yet supported")}}(t.logicalShape,l),s=on),a&&(c+=ln),[c,an,s,i,o,u,n].join("\n")}var an="\n float sampleTexture(sampler2D textureSampler, vec2 uv) {\n return texture2D(textureSampler, uv).r;\n }\n",on="\n void setOutput(float val) {\n gl_FragColor = vec4(val, 0, 0, 0);\n }\n",sn="\n void setOutput(vec4 val) {\n gl_FragColor = val;\n }\n",un="\n precision highp float;\n precision highp int;\n varying vec2 resultUV;\n const vec2 halfCR = vec2(0.5, 0.5);\n\n struct ivec5\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n };\n\n struct ivec6\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n int v;\n };\n\n bool isNaN(float val) {\n return (val < 1.0 || 0.0 < val || val == 0.0) ? false : true;\n }\n\n bool hasNaN(vec4 values) {\n vec4 v1 = values * values;\n vec4 v2 = values * values;\n return any(notEqual(v1, v2));\n }\n\n float getNaN(vec4 values) {\n return dot(vec4(1), values);\n }\n\n int round(float value) {\n return int(floor(value + 0.5));\n }\n\n int imod(int x, int y) {\n return x - y * (x / y);\n }\n\n //Based on the work of Dave Hoskins\n //https://www.shadertoy.com/view/4djSRW\n #define HASHSCALE1 443.8975\n float random(float seed){\n vec2 p = resultUV * seed;\n vec3 p3 = fract(vec3(p.xyx) * HASHSCALE1);\n p3 += dot(p3, p3.yzx + 19.19);\n return fract((p3.x + p3.y) * p3.z);\n }\n\n \nvec2 UVfrom1D(int texNumR, int texNumC, int index) {\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\nvec2 packedUVfrom1D(int texNumR, int texNumC, int index) {\n int texelIndex = index / 2;\n int texR = texelIndex / texNumC;\n int texC = texelIndex - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom2D(int texNumR, int texNumC, int numC, int row, int col) {\n int index = row * numC + col;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\nvec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR,\n int texNumC, int row, int col) {\n int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = texelIndex / texNumC;\n int texC = texelIndex - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom3D(int texNumR, int texNumC, int stride0,\n int stride1, int row, int col, int depth) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * stride0 + col * stride1 + depth;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\nvec2 packedUVfrom3D(int texNumR, int texNumC,\n int texelsInBatch, int texelsInLogicalRow, int b,\n int row, int col) {\n int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom4D(int texNumR, int texNumC, int stride0,\n int stride1, int stride2, int row, int col, int depth,\n int depth2) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * stride0 + col * stride1 + depth * stride2 + depth2;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\nvec2 packedUVfrom4D(int texNumR, int texNumC, int texelsInBatch2,\n int texelsInBatch, int texelsInLogicalRow, int b2, int b,\n int row, int col) {\n int index = b2 * texelsInBatch2 + b * texelsInBatch +\n (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom5D(int texNumR, int texNumC, int stride0,\n int stride1, int stride2, int stride3, int row, int col, int depth,\n int depth2, int depth3) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * stride0 + col * stride1 +\n depth * stride2 + depth2 * stride3 + depth3;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom6D(int texNumR, int texNumC, int stride0,\n int stride1, int stride2, int stride3, int stride4,\n int row, int col, int depth, int depth2, int depth3, int depth4) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * stride0 + col * stride1 + depth * stride2 + depth2 *\n stride3 + depth3 * stride4 + depth4;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n",ln="\n float getChannel(vec4 frag, vec2 innerDims) {\n vec2 modCoord = mod(innerDims, 2.);\n return modCoord.x == 0. ?\n (modCoord.y == 0. ? frag.r : frag.g) :\n (modCoord.y == 0. ? frag.b : frag.a);\n }\n float getChannel(vec4 frag, int dim) {\n float modCoord = mod(float(dim), 2.);\n return modCoord == 0. ? frag.r : frag.g;\n }\n";function cn(e){if(e<=1)return"int";if(2===e)return"ivec2";if(3===e)return"ivec3";if(4===e)return"ivec4";if(5===e)return"ivec5";if(6===e)return"ivec6";throw Error("GPU for rank "+e+" is not yet supported")}function fn(e,t){var n=JSON.parse(JSON.stringify(e));return n.shapeInfo.logicalShape=t,n}function pn(e,t){return t.map(function(t){return e[t]}).join(", ")}function hn(e,t){if(1===e)return""+t;if(2===e)return t+".y";if(3===e)return t+".z";if(4===e)return t+".w";throw Error("Cumulative sum for rank "+e+" is not yet supported")}var dn,mn,gn=function(){function e(e,t,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=e,this.blockSize=t,this.dataFormat=n,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int h = "+this.getHeightCoordString()+";\n int w = "+this.getWidthCoordString()+";\n int d = "+this.getDepthCoordString()+";\n\n int in_h = h / "+t+";\n int offset_h = imod(h, "+t+");\n int in_w = w / "+t+";\n int offset_w = imod(w, "+t+");\n int offset_d = (offset_h * "+t+" + offset_w) *\n "+this.getOutputDepthSize()+";\n int in_d = d + offset_d;\n\n float result = "+this.getInputSamplingString()+";\n setOutput(result);\n }\n "}return e.prototype.getHeightCoordString=function(){return"NHWC"===this.dataFormat?"coords[1]":"coords[2]"},e.prototype.getWidthCoordString=function(){return"NHWC"===this.dataFormat?"coords[2]":"coords[3]"},e.prototype.getDepthCoordString=function(){return"NHWC"===this.dataFormat?"coords[3]":"coords[1]"},e.prototype.getOutputDepthSize=function(){return"NHWC"===this.dataFormat?this.outputShape[3]:this.outputShape[1]},e.prototype.getInputSamplingString=function(){return"NHWC"===this.dataFormat?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"},e}(),yn=function(e,t,n){this.variableNames=["real","imag"];var r=t[1];this.outputShape=t;var a=n?"2.0 * "+Math.PI:"-2.0 * "+Math.PI,i=n?r+".0":"1.0";this.userCode="\n const float exponentMultiplier = "+a+";\n\n float unaryOpComplex(float real, float expR, float imag, float expI) {\n "+e+"\n }\n\n float mulMatDFT(int batch, int index) {\n float indexRatio = float(index) / float("+r+");\n float exponentMultiplierTimesIndexRatio =\n exponentMultiplier * indexRatio;\n\n float result = 0.0;\n\n for (int i = 0; i < "+r+"; i++) {\n // x = (-2|2 * PI / N) * index * i;\n float x = exponentMultiplierTimesIndexRatio * float(i);\n float expR = cos(x);\n float expI = sin(x);\n float real = getReal(batch, i);\n float imag = getImag(batch, i);\n\n result +=\n unaryOpComplex(real, expR, imag, expI) / "+i+";\n }\n\n return result;\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n setOutput(mulMatDFT(coords[0], coords[1]));\n }\n "};function vn(e,t){return[t,e]}function bn(e,t){return e*t}function wn(e,t,n){var r=function(e,t){if(e%t!=0)throw new Error("unpackedSize ("+e+") must be a multiple of "+t);return e/t}(e.length,n);if(t.length= "+r);for(var a=0,i=0;in||t>n)throw r="["+e+"x"+t+"]",new Error("Requested texture size "+r+" greater than WebGL maximum on this browser / GPU ["+n+"x"+n+"].")}function Fn(e){return Yn(e,function(){return e.createFramebuffer()},"Unable to create WebGLFramebuffer.")}function Vn(e,t,n,r,a,i,o){var s=e.getAttribLocation(t,n);return-1!==s&&(En(e,function(){return e.bindBuffer(e.ARRAY_BUFFER,r)}),En(e,function(){return e.vertexAttribPointer(s,a,e.FLOAT,!1,i,o)}),En(e,function(){return e.enableVertexAttribArray(s)}),!0)}function Un(e,t,n){Jn(e,n),En(e,function(){return e.activeTexture(e.TEXTURE0+n)}),En(e,function(){return e.bindTexture(e.TEXTURE_2D,t)})}function Wn(e,t,n){return Yn(e,function(){return e.getUniformLocation(t,n)},'uniform "'+n+'" not present in program.')}function qn(e,t,n){return e.getUniformLocation(t,n)}function $n(e,t,n,r,a){En(e,function(){return Un(e,n,a)}),En(e,function(){return e.uniform1i(r,a)})}function Gn(e,t,n){En(e,function(){return e.bindFramebuffer(e.FRAMEBUFFER,n)}),En(e,function(){return e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0)})}function Hn(e,t){En(e,function(){return e.bindFramebuffer(e.FRAMEBUFFER,t)}),En(e,function(){return e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0)})}function Kn(e){var t=e.checkFramebufferStatus(e.FRAMEBUFFER);if(t!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+Xn(e,t))}function Xn(e,t){switch(t){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return"unknown error "+t}}function Yn(e,t,n){var r=En(e,function(){return t()});if(null==r)throw new Error(n);return r}function Jn(e,t){var n=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=t+e.TEXTURE0;if(rn)throw new Error("textureUnit must be in [gl.TEXTURE0, gl.TEXTURE"+n+"].")}function Zn(e,t){void 0===t&&(t=!1);var n=ve.get("WEBGL_MAX_TEXTURE_SIZE");if(t&&(n*=2,e=e.map(function(t,n){return n>=e.length-2?g(e[n]):e[n]})),2!==e.length){var r=A(e);e=r.newShape}var a=E(e);return e.length<=1&&a<=n?[a,1]:2===e.length&&e[0]<=n&&e[1]<=n?e:3===e.length&&e[0]*e[1]<=n&&e[2]<=n?[e[0]*e[1],e[2]]:3===e.length&&e[0]<=n&&e[1]*e[2]<=n?[e[0],e[1]*e[2]]:4===e.length&&e[0]*e[1]*e[2]<=n&&e[3]<=n?[e[0]*e[1]*e[2],e[3]]:4===e.length&&e[0]<=n&&e[1]*e[2]*e[3]<=n?[e[0],e[1]*e[2]*e[3]]:k(a)}function Qn(e){return e%2==0}function er(e,t){if(N(e=e.slice(-2),t=t.slice(-2)))return!0;if(!e.length||!t.length)return!0;if(0===e[0]||0===e[1]||0===t[0]||0===t[1])return!0;if(e.length!==t.length){if(N(A(e).newShape,A(t).newShape))return!0}else if(Qn(e[0])&&Qn(t[0])){if(Qn(e[1])&&Qn(t[1]))return!0;if(e[1]===t[1])return!0}return!1}var tr=Object.freeze({callAndCheck:En,enableDebugWebGLErrorChecking:Sn,checkWebGLError:On,getWebGLErrorMessage:kn,getExtensionOrThrow:In,createVertexShader:Cn,createFragmentShader:Pn,createProgram:Tn,linkProgram:Mn,validateProgram:Rn,createStaticVertexBuffer:Dn,createStaticIndexBuffer:jn,getNumChannels:Ln,createTexture:Bn,validateTextureSize:zn,createFramebuffer:Fn,bindVertexBufferToProgramAttribute:Vn,bindTextureUnit:Un,unbindTextureUnit:function(e,t){Jn(e,t),En(e,function(){return e.activeTexture(e.TEXTURE0+t)}),En(e,function(){return e.bindTexture(e.TEXTURE_2D,null)})},getProgramUniformLocationOrThrow:Wn,getProgramUniformLocation:qn,bindTextureToProgramUniformSampler:$n,bindCanvasToFramebuffer:function(e){En(e,function(){return e.bindFramebuffer(e.FRAMEBUFFER,null)}),En(e,function(){return e.viewport(0,0,e.canvas.width,e.canvas.height)}),En(e,function(){return e.scissor(0,0,e.canvas.width,e.canvas.height)})},bindColorTextureToFramebuffer:Gn,unbindColorTextureFromFramebuffer:Hn,validateFramebuffer:Kn,getFramebufferErrorMessage:Xn,getTextureShapeFromLogicalShape:Zn,isReshapeFree:er});function nr(e){return Cn(e,"\n precision highp float;\n attribute vec3 clipSpacePos;\n attribute vec2 uv;\n varying vec2 resultUV;\n\n void main() {\n gl_Position = vec4(clipSpacePos, 1);\n resultUV = uv;\n }")}function rr(e){return Dn(e,new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]))}function ar(e){return jn(e,new Uint16Array([0,1,2,2,1,3]))}function ir(e,t){var n,r,a,i,o,s,u,l=e;return 2===ve.get("WEBGL_VERSION")?(n=l.R32F,r=l.R16F,a=l.RGBA32F,i=l.RED,o=4,s=1,u=l.HALF_FLOAT):(n=e.RGBA,r=e.RGBA,a=l.RGBA,i=e.RGBA,o=4,s=4,u=null!=t?t.HALF_FLOAT_OES:null),{internalFormatFloat:n,internalFormatHalfFloat:r,internalFormatPackedFloat:a,textureFormatFloat:i,downloadTextureFormat:e.RGBA,downloadUnpackNumChannels:o,defaultNumChannels:s,textureTypeHalfFloat:u}}function or(e,t,n,r,a,i){zn(t,n);var o=Bn(e),s=e.TEXTURE_2D;return En(e,function(){return e.bindTexture(s,o)}),En(e,function(){return e.texParameteri(s,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE)}),En(e,function(){return e.texParameteri(s,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)}),En(e,function(){return e.texParameteri(s,e.TEXTURE_MIN_FILTER,e.NEAREST)}),En(e,function(){return e.texParameteri(s,e.TEXTURE_MAG_FILTER,e.NEAREST)}),En(e,function(){return e.texImage2D(s,0,r,t,n,0,a,i,null)}),En(e,function(){return e.bindTexture(e.TEXTURE_2D,null)}),o}function sr(e,t,n,r){var a=vn(t,n);return or(e,a[0],a[1],r.internalFormatFloat,r.textureFormatFloat,e.FLOAT)}function ur(e,t,n,r){var a=vn(t,n);return or(e,a[0],a[1],r.internalFormatFloat,r.textureFormatFloat,r.textureTypeHalfFloat)}function lr(e,t,n,r){var a=vn(t,n);return or(e,a[0],a[1],e.RGBA,e.RGBA,e.UNSIGNED_BYTE)}function cr(e,t,n,r){var a=xn(t,n);return or(e,a[0],a[1],r.internalFormatPackedFloat,e.RGBA,e.FLOAT)}function fr(e,t,n,r){var a=xn(t,n);return or(e,a[0],a[1],r.internalFormatHalfFloat,e.RGBA,r.textureTypeHalfFloat)}function pr(e,t,n){return En(e,function(){return e.bindBuffer(e.ARRAY_BUFFER,n)}),Vn(e,t,"clipSpacePos",n,3,20,0)&&Vn(e,t,"uv",n,2,20,12)}function hr(e,t,n){En(e,function(){return e.bindTexture(e.TEXTURE_2D,t)}),En(e,function(){return e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n)}),En(e,function(){return e.bindTexture(e.TEXTURE_2D,null)})}function dr(e,t,n,r,a,i){zn(n,r),En(e,function(){return e.bindTexture(e.TEXTURE_2D,t)}),En(e,function(){return e.texSubImage2D(e.TEXTURE_2D,0,0,0,n,r,i,e.FLOAT,a)}),En(e,function(){return e.bindTexture(e.TEXTURE_2D,null)})}function mr(e,t,n,r,a,i,o){var s,u=vn(n,r),l=u[0],c=u[1];1===o.defaultNumChannels?s=a:function(e,t,n){var r=bn(e.length,n);if(t.length= "+r);for(var a=0,i=0;i=\n "+i);for(var o=r%2==1,s=n%2==1,u=Math.floor(r/2),l=Math.floor(n/2),c=Math.ceil(r/2),f=c*Math.ceil(n/2),p=g(n)*g(r),h=0;h= "+i);for(var o=r%2==1,s=n%2==1,u=Math.floor(r/2),l=Math.floor(n/2),c=Math.ceil(r/2),f=c*Math.ceil(n/2),p=g(n)*g(r),h=0;h0?(t=this.beginQuery(),this.endQuery(),n=function(){return r.isQueryAvailable(t,ve.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}):n=function(){return!0};return{query:t,isFencePassed:n}},e.prototype.downloadMatrixFromPackedTexture=function(e,t,n,r,a,i){var o=this;return this.downloadMatrixDriver(e,function(){return xr(o.gl,t,n,r,a,i,o.textureConfig)})},e.prototype.createProgram=function(e){this.throwIfDisposed();var t=this.gl,n=Pn(t,e),r=nr(t),a=Tn(t);return En(t,function(){return t.attachShader(a,r)}),En(t,function(){return t.attachShader(a,n)}),Mn(t,a),this.autoDebugValidate&&Rn(t,a),this.vertexAttrsAreBound||(this.setProgram(a),this.vertexAttrsAreBound=pr(t,this.program,this.vertexBuffer)),a},e.prototype.deleteProgram=function(e){var t=this;this.throwIfDisposed(),e===this.program&&(this.program=null),null!=e&&En(this.gl,function(){return t.gl.deleteProgram(e)})},e.prototype.setProgram=function(e){var t=this;this.throwIfDisposed(),this.program=e,null!=this.program&&this.autoDebugValidate&&Rn(this.gl,this.program),En(this.gl,function(){return t.gl.useProgram(e)})},e.prototype.getUniformLocation=function(e,t,n){return void 0===n&&(n=!0),this.throwIfDisposed(),n?Wn(this.gl,e,t):qn(this.gl,e,t)},e.prototype.getAttributeLocation=function(e,t){var n=this;return this.throwIfDisposed(),En(this.gl,function(){return n.gl.getAttribLocation(e,t)})},e.prototype.getUniformLocationNoThrow=function(e,t){return this.throwIfDisposed(),this.gl.getUniformLocation(e,t)},e.prototype.setInputMatrixTexture=function(e,t,n){this.throwIfDisposed(),this.throwIfNoProgram(),$n(this.gl,this.program,e,t,n)},e.prototype.setOutputMatrixTexture=function(e,t,n){this.setOutputMatrixTextureDriver(e,n,t)},e.prototype.setOutputPackedMatrixTexture=function(e,t,n){this.throwIfDisposed();var r=xn(t,n),a=r[0],i=r[1];this.setOutputMatrixTextureDriver(e,a,i)},e.prototype.setOutputMatrixWriteRegion=function(e,t,n,r){this.setOutputMatrixWriteRegionDriver(n,e,r,t)},e.prototype.setOutputPackedMatrixWriteRegion=function(e,t,n,r){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")},e.prototype.debugValidate=function(){null!=this.program&&Rn(this.gl,this.program),Kn(this.gl)},e.prototype.executeProgram=function(){this.throwIfDisposed(),this.throwIfNoProgram();var e=this.gl;this.autoDebugValidate&&this.debugValidate(),En(e,function(){return e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0)})},e.prototype.blockUntilAllProgramsCompleted=function(){var e=this;this.throwIfDisposed(),En(this.gl,function(){return e.gl.finish()})},e.prototype.getQueryTimerExtension=function(){return null==this.disjointQueryTimerExtension&&(this.disjointQueryTimerExtension=In(this.gl,2===ve.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension},e.prototype.getQueryTimerExtensionWebGL2=function(){return this.getQueryTimerExtension()},e.prototype.getQueryTimerExtensionWebGL1=function(){return this.getQueryTimerExtension()},e.prototype.beginQuery=function(){if(2===ve.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var e=this.gl,t=this.getQueryTimerExtensionWebGL2(),n=e.createQuery();return e.beginQuery(t.TIME_ELAPSED_EXT,n),n}var r=this.getQueryTimerExtensionWebGL1(),a=r.createQueryEXT();return r.beginQueryEXT(r.TIME_ELAPSED_EXT,a),a},e.prototype.endQuery=function(){if(2!==ve.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var e=this.getQueryTimerExtensionWebGL1();e.endQueryEXT(e.TIME_ELAPSED_EXT)}else{var t=this.gl,n=this.getQueryTimerExtensionWebGL2();t.endQuery(n.TIME_ELAPSED_EXT)}},e.prototype.waitForQueryAndGetTime=function(e){return l(this,void 0,void 0,function(){var t=this;return c(this,function(n){switch(n.label){case 0:return[4,C(function(){return t.disposed||t.isQueryAvailable(e,ve.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))})];case 1:return n.sent(),[2,this.getQueryTime(e,ve.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))]}})})},e.prototype.getQueryTime=function(e,t){if(0===t)return null;if(2===t){var n=this.gl;return n.getQueryParameter(e,n.QUERY_RESULT)/1e6}var r=this.getQueryTimerExtensionWebGL1();return r.getQueryObjectEXT(e,r.QUERY_RESULT_EXT)/1e6},e.prototype.isQueryAvailable=function(e,t){if(0===t)return!0;if(2===t){var n=this.gl,r=this.getQueryTimerExtensionWebGL2(),a=n.getQueryParameter(e,n.QUERY_RESULT_AVAILABLE);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),a&&!this.disjoint}return a=(r=this.getQueryTimerExtensionWebGL1()).getQueryObjectEXT(e,r.QUERY_RESULT_AVAILABLE_EXT),null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),a&&!this.disjoint},e.prototype.pollFence=function(e){var t=this;return new Promise(function(n){t.addItemToPoll(function(){return e.isFencePassed()},function(){return n()})})},e.prototype.pollItems=function(){for(var e=function(e){for(var t=0,n=e.length-1,r=-1;t<=n;){var a=t+n>>1;e[a]()?(r=a,t=a+1):n=a-1}return r}(this.itemsToPoll.map(function(e){return e.isDoneFn})),t=0;t<=e;++t)(0,this.itemsToPoll[t].resolveFn)();this.itemsToPoll=this.itemsToPoll.slice(e+1)},e.prototype.addItemToPoll=function(e,t){var n=this;this.itemsToPoll.push({isDoneFn:e,resolveFn:t}),this.itemsToPoll.length>1||C(function(){return n.pollItems(),0===n.itemsToPoll.length})},e.prototype.bindTextureToFrameBuffer=function(e){this.throwIfDisposed(),Gn(this.gl,e,this.framebuffer),this.autoDebugValidate&&Kn(this.gl)},e.prototype.unbindTextureToFrameBuffer=function(){null!=this.outputTexture?(Gn(this.gl,this.outputTexture,this.framebuffer),this.autoDebugValidate&&Kn(this.gl)):Hn(this.gl,this.framebuffer)},e.prototype.downloadMatrixDriver=function(e,t){this.bindTextureToFrameBuffer(e);var n=t();return this.unbindTextureToFrameBuffer(),n},e.prototype.setOutputMatrixTextureDriver=function(e,t,n){this.throwIfDisposed();var r=this.gl;Gn(r,e,this.framebuffer),this.autoDebugValidate&&Kn(r),this.outputTexture=e,En(r,function(){return r.viewport(0,0,t,n)}),En(r,function(){return r.scissor(0,0,t,n)})},e.prototype.setOutputMatrixWriteRegionDriver=function(e,t,n,r){var a=this;this.throwIfDisposed(),En(this.gl,function(){return a.gl.scissor(e,t,n,r)})},e.prototype.throwIfDisposed=function(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")},e.prototype.throwIfNoProgram=function(){if(null==this.program)throw new Error("No GPU program is currently set.")},e}();function Nr(e,t){if(e.length!==t.length)throw Error("Binary was compiled with "+e.length+" inputs, but was executed with "+t.length+" inputs");e.forEach(function(e,n){var r=e.logicalShape,a=t[n],i=a.shape;if(!N(r,i))throw Error("Binary was compiled with different shapes than the current args. Shapes "+r+" and "+i+" must match");if(!e.isUniform||!a.isUniform){var o=e.texShape,s=a.isUniform?null:a.texData.texShape;if(!N(o,s))throw Error("Binary was compiled with different texture shapes than the current args. Shape "+o+" and "+s+" must match")}})}var Sr=function(e,t,n,r,a){void 0===r&&(r=!1),void 0===a&&(a=!1),this.variableNames=["matrixA","matrixB"],this.usesPackedTextures=!0,this.outputShape=n;var i=r?e[0]:e[1],o=Math.ceil(i/2),s=r?"i * 2, rc.x":"rc.x, i * 2",u=a?"rc.y, i * 2":"i * 2, rc.y",l=r?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],c=a?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"];this.userCode="\n const float sharedDimension = "+o+".0;\n\n vec4 dot2x2ARowBCol(ivec2 rc) {\n vec4 result = vec4(0);\n for (int i = 0; i < "+o+"; i++) {\n vec4 a = getMatrixA("+s+");\n vec4 b = getMatrixB("+u+");\n\n result += ("+l[0]+" * "+c[0]+") + ("+l[1]+" * "+c[1]+");\n }\n return result;\n }\n\n void main() {\n ivec2 rc = getOutputCoords();\n setOutput(dot2x2ARowBCol(rc));\n }\n "},Or=function(){function e(e,t,n){this.variableNames=["probs"],this.outputShape=[e,n],this.userCode="\n uniform float seed;\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n\n float r = random(seed);\n float cdf = 0.0;\n\n for (int i = 0; i < "+(t-1)+"; i++) {\n cdf += getProbs(batch, i);\n\n if (r < cdf) {\n setOutput(float(i));\n return;\n }\n }\n\n // If no other event happened, last event happened.\n setOutput(float("+(t-1)+"));\n }\n "}return e.prototype.getCustomSetupFunc=function(e){var t=this;return function(n,r){null==t.seedLoc&&(t.seedLoc=n.getUniformLocation(r,"seed")),n.gl.uniform1f(t.seedLoc,e)}},e}();function kr(e,t){return 1===t?[e]:function(e,t){return["x","y","z","w","u","v"].slice(0,t).map(function(t){return e+"."+t})}(e,t)}var Ir=function(e,t,n){if(this.variableNames=["x"],"avg"===t&&n)throw new Error("Cannot compute positions for average pool.");var r=e.filterWidth,a=e.strideHeight,i=e.strideWidth,o=e.dilationHeight,s=e.dilationWidth,u=e.effectiveFilterHeight,l=e.effectiveFilterWidth,c=e.padInfo.top,f=e.padInfo.left;this.outputShape=e.outShape;var p="avg"===t,h="0.0";if(p||(h="-1.0 / 0.0"),n)this.userCode="\n const ivec2 strides = ivec2("+a+", "+i+");\n const ivec2 pads = ivec2("+c+", "+f+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n float avgValue = 0.0;\n\n for (int wR = 0; wR < "+u+";\n wR += "+o+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+l+";\n wC += "+s+") {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= "+e.inWidth+") {\n continue;\n }\n\n float value = getX(batch, xR, xC, d);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value >= currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition = wR * "+l+" + wC;\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n ";else{var d=t+"("+t+"("+t+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"avg"===t&&(d="avgValue / count");var m=4*Math.floor(r/4),g=r%4,y="\n if ("+p+") {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = max(values, minMaxValue);\n }\n ";this.userCode="\n const ivec2 strides = ivec2("+a+", "+i+");\n const ivec2 pads = ivec2("+c+", "+f+");\n const float initializationValue = "+h+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xR, int xC, int d) {\n if (xC < 0 || xC >= "+e.inWidth+") {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xR, xC, d);\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n vec4 minMaxValue = vec4("+h+");\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wR = 0; wR < "+u+";\n wR += "+o+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+m+"; wC += 4) {\n int xC = xCCorner + wC * "+s+";\n\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n getValue(batch, xR, xC + 2 * "+s+", d),\n getValue(batch, xR, xC + 3 * "+s+", d)\n );\n\n "+y+"\n }\n\n int xC = xCCorner + "+m+";\n if ("+(1===g)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+y+"\n } else if ("+(2===g)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n initializationValue,\n initializationValue\n );\n\n "+y+"\n } else if ("+(3===g)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n getValue(batch, xR, xC + 2 * "+s+", d),\n initializationValue\n );\n\n "+y+"\n }\n }\n setOutput("+d+");\n }\n "}},Cr=function(e,t,n,r,a,i,o){void 0===o&&(o=!0),this.variableNames=["updates","indices","defaultValue"],this.outputShape=i;var s=cn(a.length),u=cn(i.length),l="";1===n?l="i":2===n&&(l="i, j");var c="getIndices("+l+")",f="";1===r?f="i":2===r&&(f="i, coords[1]");var p="getUpdates("+f+")",h=t>1?"strides[j]":"strides";this.userCode="\n "+s+" strides = "+s+"("+a+");\n\n void main() {\n "+u+" coords = getOutputCoords();\n float sum = 0.0;\n bool found = false;\n for (int i = 0; i < "+e+"; i++) {\n int flattenedIndex = 0;\n for (int j = 0; j < "+t+"; j++) {\n int index = round("+c+");\n flattenedIndex += index * "+h+";\n }\n if (flattenedIndex == coords[0]) {\n sum += "+p+";\n found = true;\n }\n }\n setOutput(mix(getDefaultValue(), sum, float(found)));\n }\n "},Pr=function(){function e(e){this.variableNames=["source"],this.outputShape=e,this.rank=e.length;var t=cn(this.rank),n=function(e){if(1===e)return"sourceLoc";if(2===e)return"sourceLoc.x, sourceLoc.y";if(3===e)return"sourceLoc.x, sourceLoc.y, sourceLoc.z";if(4===e)return"sourceLoc.x, sourceLoc.y, sourceLoc.z, sourceLoc.w";throw Error("Slicing for rank "+e+" is not yet supported")}(this.rank);this.userCode="\n uniform "+t+" start;\n\n void main() {\n "+t+" sourceLoc = start + getOutputCoords();\n setOutput(getSource("+n+"));\n }\n "}return e.prototype.getCustomSetupFunc=function(e){var t=this;if(e.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the length of start ("+e.length+")");return function(n,r){if(null!=t.startLoc||(t.startLoc=n.getUniformLocationNoThrow(r,"start"),null!=t.startLoc))if(1===t.rank)n.gl.uniform1i(t.startLoc,e[0]);else if(2===t.rank)n.gl.uniform2i(t.startLoc,e[0],e[1]);else if(3===t.rank)n.gl.uniform3i(t.startLoc,e[0],e[1],e[2]);else{if(4!==t.rank)throw Error("Slicing for rank "+t.rank+" is not yet supported");n.gl.uniform4i(t.startLoc,e[0],e[1],e[2],e[3])}}},e}(),Ar=function(){function e(e){this.gpgpu=e,this.numUsedTextures=0,this.numFreeTextures=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}return e.prototype.acquireTexture=function(e,t,n){var r,a=Tr(t,n),i=Mr(e,a,n);if(i in this.freeTextures||(this.freeTextures[i]=[]),i in this.usedTextures||(this.usedTextures[i]=[]),this.freeTextures[i].length>0){this.numFreeTextures--,this.numUsedTextures++,this.log();var o=this.freeTextures[i].shift();return this.usedTextures[i].push(o),o}return this.numUsedTextures++,this.log(),a===mn.PACKED_2X2_FLOAT32?r=this.gpgpu.createPackedMatrixTexture(e[0],e[1]):a===mn.PACKED_2X2_FLOAT16?r=this.gpgpu.createFloat16PackedMatrixTexture(e[0],e[1]):a===mn.UNPACKED_FLOAT32?r=this.gpgpu.createFloat32MatrixTexture(e[0],e[1]):a===mn.UNPACKED_FLOAT16?r=this.gpgpu.createFloat16MatrixTexture(e[0],e[1]):a===mn.PACKED_4X1_UNSIGNED_BYTE&&(r=this.gpgpu.createUnsignedBytesMatrixTexture(e[0],e[1])),this.usedTextures[i].push(r),r},e.prototype.releaseTexture=function(e,t,n,r){if(null!=this.freeTextures){var a=Mr(t,Tr(n,r),r);a in this.freeTextures||(this.freeTextures[a]=[]),this.freeTextures[a].push(e),this.numFreeTextures++,this.numUsedTextures--;var i=this.usedTextures[a],o=i.indexOf(e);if(o<0)throw new Error("Cannot release a texture that was never provided by this texture manager");i.splice(o,1),this.log()}},e.prototype.log=function(){if(this.logEnabled){var e=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",this.numFreeTextures+" / "+this.numUsedTextures,"("+e+")")}},e.prototype.getNumUsedTextures=function(){return this.numUsedTextures},e.prototype.getNumFreeTextures=function(){return this.numFreeTextures},e.prototype.dispose=function(){var e=this;if(null!=this.freeTextures){for(var t in this.freeTextures)this.freeTextures[t].forEach(function(t){e.gpgpu.deleteMatrixTexture(t)});for(var t in this.usedTextures)this.usedTextures[t].forEach(function(t){e.gpgpu.deleteMatrixTexture(t)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0}},e}();function Tr(e,t){if(t)return ve.get("WEBGL_RENDER_FLOAT32_ENABLED")?mn.PACKED_2X2_FLOAT32:mn.PACKED_2X2_FLOAT16;if(e===dn.DOWNLOAD||e===dn.PIXELS)return mn.PACKED_4X1_UNSIGNED_BYTE;if(e===dn.UPLOAD)return mn.UNPACKED_FLOAT32;if(e===dn.RENDER)return ve.get("WEBGL_RENDER_FLOAT32_ENABLED")?mn.UNPACKED_FLOAT32:mn.UNPACKED_FLOAT16;throw new Error("Unknown logical texture type "+e)}function Mr(e,t,n){return e[0]+"_"+e[1]+"_"+t+"_"+n}var Rr=1.7580993408473768,Dr=1.0507009873554805,jr=function(){function e(e,t){this.variableNames=["A"],this.outputShape=e,this.userCode="\n uniform float NAN;\n float unaryOperation(float x) {\n "+t+"\n }\n\n void main() {\n float x = getAAtOutCoords();\n float y = unaryOperation(x);\n\n setOutput(y);\n }\n "}return e.prototype.getCustomSetupFunc=function(){var e=this;return function(t,n){null==e.startLoc&&(e.startLoc=t.getUniformLocationNoThrow(n,"NAN"),null==e.startLoc)||t.gl.uniform1f(e.startLoc,NaN)}},e}(),Lr="if (isNaN(x)) return x;",Br=function(e){this.variableNames=["A"],this.usesPackedTextures=!0,this.outputShape=e;var t=e.length,n=kr("rc",t),r=cn(t),a=function(e,t){if(1===e)return"rc";for(var n="",r=0;r=1,"Pass at least one tensor to concat");var n=nt(e,"tensors","concat");t=Ve(t,n[0].shape)[0];var r=Ge(n.map(function(e){return e.shape}),t);if(0===E(r))return lt([],r);if(1===(n=n.filter(function(e){return e.size>0})).length)return n[0];var a=n.map(function(e){return e.shape});!function(e,t){var n=e[0].length;e.forEach(function(e,t){b(e.length===n,"Error in concat"+n+"D: rank of tensors["+t+"] must be the same as the rank of the rest ("+n+")")}),b(t>=0&&t>>0,t=(r*=t)>>>0,t+=4294967296*(r-=t)}return 2.3283064365386963e-10*(t>>>0)});n.next=function(){var e=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=e-(n.c=0|e)},n.c=1,n.s0=r(" "),n.s1=r(" "),n.s2=r(" "),n.s0-=r(e),n.s0<0&&(n.s0+=1),n.s1-=r(e),n.s1<0&&(n.s1+=1),n.s2-=r(e),n.s2<0&&(n.s2+=1),r=null}(e),a=t&&t.state,i=n.next;return i.int32=function(){return 4294967296*n.next()|0},i.double=function(){return i()+1.1102230246251565e-16*(2097152*i()|0)},i.quick=i,a&&("object"==typeof a&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.alea=a}(0,e)}),Hr=$r(function(e){!function(e,t,n){function r(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t}function a(e,t){var n=new function(e){var t=this,n="";t.x=0,t.y=0,t.z=0,t.w=0,t.next=function(){var e=t.x^t.x<<11;return t.x=t.y,t.y=t.z,t.z=t.w,t.w^=t.w>>>19^e^e>>>8},e===(0|e)?t.x=e:n+=e;for(var r=0;r>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.xor128=a}(0,e)}),Kr=$r(function(e){!function(e,t,n){function r(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t.v=e.v,t.d=e.d,t}function a(e,t){var n=new function(e){var t=this,n="";t.next=function(){var e=t.x^t.x>>>2;return t.x=t.y,t.y=t.z,t.z=t.w,t.w=t.v,(t.d=t.d+362437|0)+(t.v=t.v^t.v<<4^e^e<<1)|0},t.x=0,t.y=0,t.z=0,t.w=0,t.v=0,e===(0|e)?t.x=e:n+=e;for(var r=0;r>>4),t.next()}(e),a=t&&t.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.xorwow=a}(0,e)}),Xr=$r(function(e){!function(e,t,n){function r(e,t){return t.x=e.x.slice(),t.i=e.i,t}function a(e,t){null==e&&(e=+new Date);var n=new function(e){var t=this;t.next=function(){var e,n,r=t.x,a=t.i;return e=r[a],n=(e^=e>>>7)^e<<24,n^=(e=r[a+1&7])^e>>>10,n^=(e=r[a+3&7])^e>>>3,n^=(e=r[a+4&7])^e<<7,e=r[a+7&7],n^=(e^=e<<13)^e<<9,r[a]=n,t.i=a+1&7,n},function(e,t){var n,r=[];if(t===(0|t))r[0]=t;else for(t=""+t,n=0;n0;--n)e.next()}(t,e)}(e),a=t&&t.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&(a.x&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.xorshift7=a}(0,e)}),Yr=$r(function(e){!function(e,t,n){function r(e,t){return t.i=e.i,t.w=e.w,t.X=e.X.slice(),t}function a(e,t){null==e&&(e=+new Date);var n=new function(e){var t=this;t.next=function(){var e,n,r=t.w,a=t.X,i=t.i;return t.w=r=r+1640531527|0,n=a[i+34&127],e=a[i=i+1&127],n^=n<<13,e^=e<<17,n^=n>>>15,e^=e>>>12,n=a[i]=n^e,t.i=i,n+(r^r>>>16)|0},function(e,t){var n,r,a,i,o,s=[],u=128;for(t===(0|t)?(r=t,t=null):(t+="\0",r=0,u=Math.max(u,t.length)),a=0,i=-32;i>>15,r^=r<<4,r^=r>>>13,i>=0&&(o=o+1640531527|0,a=0==(n=s[127&i]^=r+o)?a+1:0);for(a>=128&&(s[127&(t&&t.length||0)]=-1),a=127,i=512;i>0;--i)r=s[a+34&127],n=s[a=a+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,s[a]=r^n;e.w=o,e.X=s,e.i=a}(t,e)}(e),a=t&&t.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&(a.X&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.xor4096=a}(0,e)}),Jr=$r(function(e){!function(e,t,n){function r(e,t){return t.a=e.a,t.b=e.b,t.c=e.c,t.d=e.d,t}function a(e,t){var n=new function(e){var t=this,n="";t.next=function(){var e=t.b,n=t.c,r=t.d,a=t.a;return e=e<<25^e>>>7^n,n=n-r|0,r=r<<24^r>>>8^a,a=a-e|0,t.b=e=e<<20^e>>>12^n,t.c=n=n-r|0,t.d=r<<16^n>>>16^a,t.a=a-e|0},t.a=0,t.b=0,t.c=-1640531527,t.d=1367130551,e===Math.floor(e)?(t.a=e/4294967296|0,t.b=0|e):n+=e;for(var r=0;r>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.tychei=a}(0,e)}),Zr=$r(function(e){!function(t,r){var a,i=this,o=256,s=6,u="random",l=r.pow(o,s),c=r.pow(2,52),f=2*c,p=o-1;function h(e,n,h){var y=[],v=m(function e(t,n){var r,a=[],i=typeof t;if(n&&"object"==i)for(r in t)try{a.push(e(t[r],n-1))}catch(e){}return a.length?a:"string"==i?t:t+"\0"}((n=1==n?{entropy:!0}:n||{}).entropy?[e,g(t)]:null==e?function(){try{var e;return a&&(e=a.randomBytes)?e=e(o):(e=new Uint8Array(o),(i.crypto||i.msCrypto).getRandomValues(e)),g(e)}catch(e){var n=i.navigator,r=n&&n.plugins;return[+new Date,i,r,i.screen,g(t)]}}():e,3),y),b=new function(e){var t,n=e.length,r=this,a=0,i=r.i=r.j=0,s=r.S=[];for(n||(e=[n++]);a=f;)e/=2,t/=2,n>>>=1;return(e+n)/t};return w.int32=function(){return 0|b.g(4)},w.quick=function(){return b.g(4)/4294967296},w.double=w,m(g(b.S),t),(n.pass||h||function(e,t,n,a){return a&&(a.S&&d(a,b),e.state=function(){return d(b,{})}),n?(r[u]=e,t):e})(w,v,"global"in n?n.global:this==r,n.state)}function d(e,t){return t.i=e.i,t.j=e.j,t.S=e.S.slice(),t}function m(e,t){for(var n,r=e+"",a=0;a=1||0===o);var s=Math.sqrt(-2*Math.log(o)/o);t=this.mean+this.stdDev*a*s,n=this.mean+this.stdDev*i*s,this.truncated&&!this.isValidTruncated(t)||(r=!0)}return this.truncated&&!this.isValidTruncated(n)||(this.nextVal=this.convertValue(n)),this.convertValue(t)},e.prototype.convertValue=function(e){return null==this.dtype||"float32"===this.dtype?e:Math.round(e)},e.prototype.isValidTruncated=function(e){return e<=this.upper&&e>=this.lower},e}();function ta(e,t){return l(this,void 0,void 0,function(){var n,r,a,i,o,s,u,l,f,p,h,d,m,g,y,v,b,w,x,_;return c(this,function(c){switch(c.label){case 0:if(2!==(n=tt(e,"img","toPixels","int32")).rank&&3!==n.rank)throw new Error("toPixels only supports rank 2 or 3 tensors, got rank "+n.rank+".");if(r=n.shape.slice(0,2),a=r[0],i=r[1],(o=2===n.rank?1:n.shape[2])>4||2===o)throw new Error("toPixels only supports depth of size 1, 3 or 4 but got "+o);return s=n.min(),u=n.max(),[4,s.data()];case 1:return l=c.sent()[0],[4,u.data()];case 2:if(f=c.sent()[0],s.dispose(),u.dispose(),"float32"===n.dtype){if(l<0||f>1)throw new Error("Tensor values for a float32 Tensor must be in the range [0 - 1] but got range ["+l+" - "+f+"].")}else{if("int32"!==n.dtype)throw new Error("Unsupported type for toPixels: "+n.dtype+". Please use float32 or int32 tensors.");if(l<0||f>255)throw new Error("Tensor values for a int32 Tensor must be in the range [0 - 255] but got range ["+l+" - "+f+"].")}return[4,n.data()];case 3:for(p=c.sent(),h="float32"===n.dtype?255:1,d=new Uint8ClampedArray(i*a*4),m=0;m=1+t.length,"input rank is "+r.rank+" but should be > than blockShape.length "+t.length),b(n.length===t.length,"crops.length is "+n.length+" but should be equal to blockShape.length "+t.length),b(r.shape[0]%a==0,"input tensor batch is "+r.shape[0]+" but is not divisible by the product of the elements of blockShape "+t.join(" * ")+" === "+a),ve.engine.runKernel(function(e){return e.batchToSpaceND(r,t,n)},{$x:r},function(e){return{$x:function(){return e.spaceToBatchND(t,n)}}})}}),ia=rt({cast_:function(e,t){var n=tt(e,"x","cast");return ve.engine.runKernel(function(e){return e.cast(n,t)},{$x:n},function(e){return{$x:function(){return e.clone()}}})}}),oa=rt({clone_:function(e){var t=tt(e,"x","clone");return ve.engine.runKernel(function(e){return re.make(t.shape,{dataId:t.dataId},t.dtype)},{$x:t},function(e){return{$x:function(){return e.toFloat()}}})}}),sa=rt({cumsum_:function(e,t,n,r){void 0===t&&(t=0),void 0===n&&(n=!1),void 0===r&&(r=!1);var a=tt(e,"x","cumsum"),i=We([t|=0],a.rank),o=a;null!=i&&(o=a.transpose(i));var s=$e(1,a.rank)[0],u=ve.engine.runKernel(function(e){return e.cumsum(o,s,n,r)},{permutedX:o},function(e){return{permutedX:function(){return e.cumsum(t,n,!r)}}});return null!=i&&(u=u.transpose(i)),u}}),ua=rt({depthToSpace_:function(e,t,n){void 0===n&&(n="NHWC");var r=tt(e,"x","depthToSpace"),a="NHWC"===n?r.shape[1]:r.shape[2],i="NHWC"===n?r.shape[2]:r.shape[3],o="NHWC"===n?r.shape[3]:r.shape[1];return b(a*t>=0,"Negative dimension size caused by overflow when multiplying\n "+a+" and "+t+" for depthToSpace with input shape\n "+r.shape),b(i*t>=0,"Negative dimension size caused by overflow when multiplying\n "+i+" and "+t+" for depthToSpace with input shape\n "+r.shape),b(o%(t*t)==0,"Dimension size must be evenly divisible by "+t*t+" but is "+o+" for depthToSpace with input shape "+r.shape),ve.engine.runKernel(function(e){return e.depthToSpace(r,t,n)},{$x:r})}}),la=rt({expandDims_:function(e,t){void 0===t&&(t=0);var n=tt(e,"x","expandDims");b(t<=n.rank,"Axis must be <= rank of the tensor");var r=n.shape.slice();return t<0&&(b(-(n.rank+1)<=t,"Axis must be in the interval ["+-(n.rank+1)+", "+n.rank+"]"),t=n.rank+t+1),r.splice(t,0,1),_a(n,r)}}),ca=rt({eye_:function(e,t,n,r){void 0===r&&(r="float32"),null==t&&(t=e);for(var a=na([e,t],r),i=e<=t?e:t,o=0;o4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");return ve.engine.fromPixels(e,t)}}),pa=rt({multinomial_:function(e,t,n,r){void 0===r&&(r=!1);var a=tt(e,"logits","multinomial"),i=a.size,o=a.rank;if(i<2)throw new Error("Error in multinomial: you need at least 2 outcomes, but got "+i+".");if(o>2)throw new Error("Rank of probabilities must be 1 or 2, but is "+o);n=n||Math.random();var s=1===o?a.as2D(1,-1):a,u=ve.engine.runKernel(function(e){return e.multinomial(s,r,t,n)},{logits2D:s});return 1===o?u.as1D():u}}),ha=rt({oneHot_:function(e,t,n,r){void 0===n&&(n=1),void 0===r&&(r=0);var a=tt(e,"indices","oneHot","int32");if(b("int32"===a.dtype,"Indices must be of dtype `int32`"),t<2)throw new Error("Error in oneHot: depth must be >=2, but it is "+t);return ve.engine.runKernel(function(e){return e.oneHot(a,t,n,r)},{$indices:a},function(e){return{$indices:function(){return Ct(a)}}})}}),da=rt({pad_:function(e,t,n){void 0===n&&(n=0);var r=tt(e,"x","pad");if(0===r.rank)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");var a=t.map(function(e){return e[0]});return ve.engine.runKernel(function(e){return e.pad(r,t,n)},{$x:r},function(e){return{$x:function(){return e.slice(a,r.shape)}}})}}),ma=rt({pad1d_:function(e,t,n){return void 0===n&&(n=0),b(2===t.length,"Invalid number of paddings. Must be length of 2."),da(e,[t],n)}}),ga=rt({pad2d_:function(e,t,n){return void 0===n&&(n=0),b(2===t.length&&2===t[0].length&&2===t[1].length,"Invalid number of paddings. Must be length of 2 each."),da(e,t,n)}}),ya=rt({pad3d_:function(e,t,n){return void 0===n&&(n=0),b(3===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length,"Invalid number of paddings. Must be length of 2 each."),da(e,t,n)}}),va=rt({pad4d_:function(e,t,n){return void 0===n&&(n=0),b(4===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length&&2===t[3].length,"Invalid number of paddings. Must be length of 2 each."),da(e,t,n)}}),ba=rt({rand_:function(e,t,n){var r=E(e),a=null;if(null==n||"float32"===n)a=new Float32Array(r);else if("int32"===n)a=new Int32Array(r);else{if("bool"!==n)throw new Error("Unknown data type "+n);a=new Uint8Array(r)}for(var i=0;i=1+t.length,"input rank "+r.rank+" should be > than [blockShape] "+t.length),b(n.length===t.length,"paddings.shape[0] "+n.length+" must be equal to [blockShape] "+t.length),b(r.shape.reduce(function(e,r,a){return a>0&&a<=t.length?e&&(r+n[a-1][0]+n[a-1][1])%t[a-1]==0:e},!0),"input spatial dimensions "+r.shape.slice(1)+" with paddings "+n.toString()+" must be divisible by blockShapes "+t.toString()),ve.engine.runKernel(function(e){return e.spaceToBatchND(r,t,n)},{$x:r},function(e){return{$x:function(){return e.batchToSpaceND(t,n)}}})}}),Na=rt({squeeze_:function(e,t){var n=tt(e,"x","squeeze");return _a(n,A(n.shape,t).newShape)}}),Sa=rt({stack_:function(e,t){void 0===t&&(t=0);var n=nt(e,"tensors","stack");if(b(n.length>=1,"Pass at least one tensor to tf.stack"),1===n.length)return n[0].expandDims(t);var r=n[0].rank,a=n[0].shape,i=n[0].dtype;b(t<=r,"Axis must be <= rank of the tensor"),n.forEach(function(e){w(a,e.shape,"All tensors passed to stack must have matching shapes")}),n.forEach(function(e){b(i===e.dtype,"All tensors passed to stack must have matching dtypes")});var o=n.map(function(e){return e.expandDims(t)});return zr(o,t)}}),Oa=rt({tile_:function(e,t){var n=tt(e,"x","tile");return b(n.rank===t.length,"Error in transpose: rank of input "+n.rank+" must match length of reps "+t+"."),ve.engine.runKernel(function(e){return e.tile(n,t)},{$x:n},function(e){return{$x:function(){var r=Ct(n);if(1===n.rank)for(var a=0;a1?n[n.length-2]:1,u=n[n.length-1];return this.gpgpu.downloadMatrixFromPackedTexture(a,o,s,u,i[0],i[1])}return this.gpgpu.downloadFloat32MatrixFromOutputTexture(a,i[0],i[1])}var l=this.makeTensorHandle(n,"float32");l.size=E(n),this.texData.get(l.dataId).usage=dn.DOWNLOAD;var c=new function(e){this.variableNames=["A"],this.outputShape=e,this.userCode="\n const float FLOAT_MAX = 1.70141184e38;\n const float FLOAT_MIN = 1.17549435e-38;\n\n lowp vec4 encode_float(highp float v) {\n if (isNaN(v)) {\n return vec4(255, 255, 255, 255);\n }\n\n highp float av = abs(v);\n\n if(av < FLOAT_MIN) {\n return vec4(0.0, 0.0, 0.0, 0.0);\n } else if(v > FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;\n } else if(v < -FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 255.0) / 255.0;\n }\n\n highp vec4 c = vec4(0,0,0,0);\n\n highp float e = floor(log2(av));\n highp float m = exp2(fract(log2(av))) - 1.0;\n\n c[2] = floor(128.0 * m);\n m -= c[2] / 128.0;\n c[1] = floor(32768.0 * m);\n m -= c[1] / 32768.0;\n c[0] = floor(8388608.0 * m);\n\n highp float ebias = e + 127.0;\n c[3] = floor(ebias / 2.0);\n ebias -= c[3] * 2.0;\n c[2] += floor(ebias) * 128.0;\n\n c[3] += 128.0 * step(0.0, -v);\n\n return c / 255.0;\n }\n\n void main() {\n float x = getAAtOutCoords();\n gl_FragColor = encode_float(x);\n }\n "}(n);this.compileAndRun(c,[{shape:n,dtype:r,dataId:e}],l,null,!1);var f=this.texData.get(l.dataId),p=this.gpgpu.downloadByteEncodedFloatMatrixFromOutputTexture(f.texture,f.texShape[0],f.texShape[1]);return this.disposeData(l.dataId),p},e.prototype.time=function(e){return l(this,void 0,void 0,function(){var t,n,r,a,i,o,s;return c(this,function(u){switch(u.label){case 0:return t=this.activeTimers,n=[],r=!1,null==this.programTimersStack?(this.programTimersStack=n,r=!0):this.activeTimers.push(n),this.activeTimers=n,e(),a=_(this.activeTimers.map(function(e){return e.query})).filter(function(e){return null!=e}),i=_(this.activeTimers.map(function(e){return e.name})).filter(function(e){return null!=e}),this.activeTimers=t,r&&(this.programTimersStack=null),[4,Promise.all(a)];case 1:return o=u.sent(),s={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:y(o),getExtraProfileInfo:function(){return o.map(function(e,t){return{name:i[t],ms:e}}).map(function(e){return e.name+": "+e.ms}).join(", ")},wallMs:null},this.uploadWaitMs=0,this.downloadWaitMs=0,[2,s]}})})},e.prototype.memory=function(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU}},e.prototype.startTimer=function(){return ve.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?this.gpgpu.beginQuery():{startMs:performance.now(),endMs:null}},e.prototype.endTimer=function(e){return ve.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(this.gpgpu.endQuery(),e):(e.endMs=performance.now(),e)},e.prototype.getQueryTime=function(e){return l(this,void 0,void 0,function(){var t;return c(this,function(n){return ve.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?[2,this.gpgpu.waitForQueryAndGetTime(e)]:[2,(t=e).endMs-t.startMs]})})},e.prototype.disposeData=function(e){if(!this.pendingDisposal.has(e))if(this.pendingRead.has(e))this.pendingDisposal.add(e);else if(this.texData.has(e)){var t=this.texData.get(e),n=t.texture,r=t.texShape,a=t.usage,i=t.complexTensors,o=t.isPacked;null!=n&&this.releaseTexture(e,n,r,a,o),null!=i&&(i.real.dispose(),i.imag.dispose()),this.texData.delete(e)}},e.prototype.getTexture=function(e){return this.uploadToGPU(e),this.texData.get(e).texture},e.prototype.getCPUBackend=function(){return ve.get("WEBGL_CPU_FORWARD")?(null==this.cpuBackend&&(this.cpuBackend=ve.findBackend("cpu")),this.cpuBackend):null},e.prototype.shouldExecuteOnCPU=function(e,t){var n=this;return void 0===t&&(t=10),null!=this.getCPUBackend()&&e.every(function(e){return null==n.texData.get(e.dataId).texture&&e.size4)throw new Error("WebGL backend: Reverse of rank-"+n+" tensor is not yet supported");if(this.outputShape=e,1!==n){var r=e.map(function(n,r){return function(n){return-1!==t.indexOf(n)&&1!==e[n]?e[n]+" - coords["+n+"] - 1":"coords["+n+"]"}(r)}).join(","),a=cn(n);this.userCode="\n void main() {\n "+a+" coords = getOutputCoords();\n setOutput(getX("+r+"));\n }\n "}else this.userCode="\n void main() {\n int coord = getOutputCoords();\n setOutput(getX("+e[0]+" - coord - 1));\n }\n "}(e.shape,t);return this.compileAndRun(n,[e])},e.prototype.concat2Tensors=function(e,t,n){var r=Ge([e.shape,t.shape],n),a=e.as2D(-1,E(e.shape.slice(n))),i=t.as2D(-1,E(t.shape.slice(n))),o=new function(e,t){this.variableNames=["A","B"],this.outputShape=[],this.outputShape=Ge([e,t],1),this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int yR = coords.x;\n int yC = coords.y;\n\n float value = 0.0;\n if (yC < "+e[1]+") {\n value = getA(yR, yC);\n } else {\n yC -= "+e[1]+";\n value = getB(yR, yC);\n }\n\n setOutput(value);\n }\n "}(a.shape,i.shape);return this.compileAndRun(o,[a,i]).reshape(r)},e.prototype.concat=function(e,t){if(this.shouldExecuteOnCPU(e))return this.cpuBackend.concat(e,t);if(1===e.length)return e[0];for(var n=e[0],r=1;r1e3){n&&(e=e.transpose([0,2,1])),r&&(t=t.transpose([0,2,1]));var u=1===i?e:e.as3D(s,o,1),l=1===i?2:1,c=1===i?t.as3D(s,1,o):t;return this.multiply(u,c).sum(l,!0)}if(1===s){var f=e.as2D(e.shape[1],e.shape[2]),p=t.as2D(t.shape[1],t.shape[2]),h=new Sr(f.shape,p.shape,[a,i],n,r),d=this.compileAndRun(h,[f,p],this.makePackedTensor(h.outputShape));return!1===ve.get("WEBGL_LAZILY_UNPACK")&&(d=this.unpackTensor(d)),d.reshape([1,d.shape[0],d.shape[1]])}return this.compileAndRun(new function(e,t,n,r){void 0===n&&(n=!1),void 0===r&&(r=!1),this.variableNames=["matrixA","matrixB"];var a=e[0],i=n?e[2]:e[1],o=r?t[1]:t[2],s=n?e[1]:e[2];this.outputShape=[a,i,o];var u=function(e,t){return n?"batch, "+t+" + "+e+", aRow":"batch, aRow, "+t+" + "+e},l=function(e,t){return r?"batch, bCol, "+t+" + "+e:"batch, "+t+" + "+e+", bCol"},c=4*Math.floor(s/4),f=s%4;this.userCode=" float dotARowBCol(int batch, int aRow, int bCol) {\n float result = 0.0;\n for (int i = 0; i < "+c+"; i += 4) {\n vec4 a = vec4(\n getMatrixA("+u(0,"i")+"),\n getMatrixA("+u(1,"i")+"),\n getMatrixA("+u(2,"i")+"),\n getMatrixA("+u(3,"i")+")\n );\n vec4 b = vec4(\n getMatrixB("+l(0,"i")+"),\n getMatrixB("+l(1,"i")+"),\n getMatrixB("+l(2,"i")+"),\n getMatrixB("+l(3,"i")+")\n );\n\n result += dot(a, b);\n }\n\n if ("+(1===f)+") {\n result += getMatrixA("+u(0,c)+") *\n getMatrixB("+l(0,c)+");\n } else if ("+(2===f)+") {\n vec2 a = vec2(\n getMatrixA("+u(0,c)+"),\n getMatrixA("+u(1,c)+")\n );\n vec2 b = vec2(\n getMatrixB("+l(0,c)+"),\n getMatrixB("+l(1,c)+")\n );\n result += dot(a, b);\n } else if ("+(3===f)+") {\n vec3 a = vec3(\n getMatrixA("+u(0,c)+"),\n getMatrixA("+u(1,c)+"),\n getMatrixA("+u(2,c)+")\n );\n vec3 b = vec3(\n getMatrixB("+l(0,c)+"),\n getMatrixB("+l(1,c)+"),\n getMatrixB("+l(2,c)+")\n );\n result += dot(a, b);\n }\n\n return result;\n }\n\n void main() {\n ivec3 resBRC = getOutputCoords();\n setOutput(dotARowBCol(resBRC.x, resBRC.y, resBRC.z));\n }\n "}(e.shape,t.shape,n,r),[e,t])},e.prototype.multiply=function(e,t){if("complex64"===e.dtype){var n=this.texData.get(e.dataId),r=this.texData.get(t.dataId),a=new Jt("return areal * breal - aimag * bimag;",e.shape,t.shape),i=new Jt("return areal * bimag + aimag * breal;",e.shape,t.shape),o=[this.makeComplexComponentTensorHandle(e,n.complexTensors.real),this.makeComplexComponentTensorHandle(e,n.complexTensors.imag),this.makeComplexComponentTensorHandle(t,r.complexTensors.real),this.makeComplexComponentTensorHandle(t,r.complexTensors.imag)],s=this.compileAndRun(a,o),u=this.compileAndRun(i,o),l=this.complex(s,u);return s.dispose(),u.dispose(),l}if(this.shouldExecuteOnCPU([e,t]))return this.cpuBackend.multiply(e,t);var c=new en("return a * b;",e.shape,t.shape),f=this.makeOutputArray(c.outputShape,e.dtype);return this.compileAndRun(c,[e,t],f)},e.prototype.batchNormalization=function(e,t,n,r,a,i){var o=[e,t,n],s=null;null!=i&&(s=i.shape,o.push(i));var u=null;null!=a&&(u=a.shape,o.push(a));var l=null,c=Kt;ve.get("WEBGL_PACK_BATCHNORMALIZATION")&&(l=this.makePackedTensor(e.shape),c=Xt);var f=new c(e.shape,t.shape,n.shape,s,u,r);return this.compileAndRun(f,o,l)},e.prototype.localResponseNormalization4D=function(e,t,n,r,a){var i=new function(e,t,n,r,a){this.variableNames=["x"],this.outputShape=[];var i,o=t,s=e[3]-1;this.outputShape=e;var u="float("+n+") + float("+r+") * sum";i=.5===a?"inversesqrt("+u+")":1===a?"1.0/("+u+")":"exp(log("+u+") * float(-"+a+"));",this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n int d = coords[3];\n float x = getX(b, r, c, d);\n float sum = 0.0;\n for (int j = -"+o+"; j <= "+o+"; j++) {\n int idx = d + j;\n if (idx >= 0 && idx <= "+s+") {\n float z = getX(b, r, c, idx);\n sum += z * z;\n }\n }\n float val = x * "+i+";\n setOutput(val);\n }\n "}(e.shape,t,n,r,a);return this.compileAndRun(i,[e])},e.prototype.LRNGrad=function(e,t,n,r,a,i,o){var s=new function(e,t,n,r,a){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=e,this.depth=e[3],this.depthRadius=t,this.bias=n,this.alpha=r,this.beta=a,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n\n float result = 0.0;\n for (int d = 0; d < "+this.depth+"; ++d) {\n int depthBegin = int(max(0.0, float(d - "+t+")));\n int depthEnd = int(min(float("+this.depth+"),\n float(d + "+t+" + 1)));\n\n const int MIN_DEPTH_BEGIN = 0;\n const int MAX_DEPTH_END = "+this.depth+";\n\n float norm = 0.0;\n for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) {\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd) {\n norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k);\n }\n else {\n break;\n }\n }\n\n norm = float("+r+") * norm + float("+n+");\n\n for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd){\n float dyi = -2.0 * float("+r+")\n * float("+a+")\n * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d)\n / norm;\n if (k == d) {\n dyi += pow(norm, -1.0 * "+a+");\n }\n if (k == coords[3]) {\n dyi *= getDy(b, r, c, d);\n result += dyi;\n }\n }\n else {\n break;\n }\n }\n }\n setOutput(result);\n }\n "}(t.shape,r,a,i,o);return this.compileAndRun(s,[t,n,e])},e.prototype.tile=function(e,t){var n=new function(e,t){this.variableNames=["A"];for(var n=new Array(e.length),r=0;r5)throw Error("Tile for rank "+t+" is not yet supported");if(1===t)return"imod(resRC, "+e[0]+")";for(var n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],r=[],a=0;a= end) {\n setOutput(float("+n+"));\n } else {\n setOutput(getX(outC - start));\n }\n }\n "}(e.shape,t,n);return this.compileAndRun(r,[e])},e.prototype.transpose=function(e,t){var n=new function(e,t){this.variableNames=["A"];for(var n=new Array(e.length),r=0;r6)throw Error("Transpose for rank "+t+" is not yet supported");for(var n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],r=new Array(t),a=0;a4)throw Error("Gather for rank "+n+" is not yet supported");if(1===n)return"int(getIndices(resRC))";for(var r=["resRC.x","resRC.y","resRC.z","resRC.w"],a=[],i=0;i 4 with a WebGL backend not implemented yet");var r=t.reduce(function(e,t){return e*t}),a=Me(e.shape,t,r),i=Re(a.length,t.length),o=De(e.shape,t,r),s=je(n,t.length),u=Le(o,n,t.length);return e.reshape(a).transpose(i).reshape(o).slice(s,u)},e.prototype.spaceToBatchND=function(e,t,n){b(e.rank<=4,"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");var r=t.reduce(function(e,t){return e*t}),a=[[0,0]];a.push.apply(a,n);for(var i=1+t.length;i= 1.0 && floatedReducedAllValue >= 1.0);\n ",p="bvec4"):"any"===t&&(o="0.0",f="\n bool reducedAnyValue = any(values);\n float floatedReducedAnyValue = float(reducedAnyValue);\n anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);\n ",p="bvec4");var h="";a%n>0&&(h="\n if (inIdx < 0 || inIdx >= "+a+") {\n return initializationValue;\n }\n "),this.userCode="\n const float initializationValue = "+o+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float getValue(int batch, int inIdx) {\n "+h+"\n return getX(batch, inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * "+n+";\n\n vec4 minMaxValue = vec4("+o+");\n float prodValue = 1.0;\n float sumValue = 0.0;\n float allValue = 1.0;\n float anyValue = 0.0;\n\n for (int i = 0; i < "+l+"; i += 4) {\n int inIdx = inOffset + i;\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n "+f+"\n }\n\n int inIdx = inOffset + "+l+";\n if ("+(1===c)+") {\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+f+"\n } else if ("+(2===c)+") {\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n "+f+"\n } else if ("+(3===c)+") {\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n "+f+"\n }\n setOutput("+u+");\n }\n "}({windowSize:Xe(a),inSize:a,batchSize:r},t),o=i.outputShape,s=o[0],u=o[1],l=this.makeOutputArray([s,u],n);return this.compileAndRun(i,[e],l),1===l.shape[1]?l:this.reduce(l,t,n)},e.prototype.argReduce=function(e,t,n){void 0===n&&(n=null);var r=e.shape[0],a=e.shape[1];null!=n&&(r=n.shape[0],a=n.shape[1]);var i=new function(e,t,n){this.variableNames=["A"];var r=e.windowSize,a=e.batchSize,i=e.inSize,o=Math.ceil(i/r);n||this.variableNames.push("bestIndicesA"),this.outputShape=[a,o];var s="max"===t?">":"<",u=n?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * "+r+";\n\n int bestIndex = inOffset;\n float bestValue = getA(batch, bestIndex);\n\n for (int i = 0; i < "+r+"; i++) {\n int inIdx = "+u+";\n float candidate = getA(batch, inIdx);\n if (candidate "+s+" bestValue) {\n bestValue = candidate;\n bestIndex = inIdx;\n }\n }\n setOutput(float(bestIndex));\n }\n "}({windowSize:Xe(a),inSize:a,batchSize:r},t,null==n),o=i.outputShape,s=o[0],u=o[1],l=this.makeOutputArray([s,u],"int32"),c=[e];return null!=n&&c.push(n),this.compileAndRun(i,c,l),1===l.shape[1]?l:this.argReduce(e,t,l)},e.prototype.sum=function(e,t){Ue("sum",t,e.rank);var n=ze(e.shape,t),r=n[0],a=E(n[1]),i=e.as2D(-1,a),o=Tt(e.dtype);return this.reduce(i,"sum",o).reshape(r)},e.prototype.prod=function(e,t){var n=ze(e.shape,t),r=n[0],a=E(n[1]),i=e.as2D(-1,a),o=Tt(e.dtype);return this.reduce(i,"prod",o).reshape(r)},e.prototype.unsortedSegmentSum=function(e,t,n){var r=0,a=We([r],e.rank),i=e;null!=a&&(i=e.transpose(a),r=$e(1,e.rank)[0]);var o=function(e,t,n){for(var r=[],a=e.length,i=0;it||n===e){r=!0;break}n=z(e,n+1)}return n}(o,a),u=new function(e,t){this.variableNames=["x","segmentIds"];var n=e.windowSize,r=e.batchSize,a=e.inSize,i=e.numSegments,o=i*Math.ceil(a/n);this.outputShape=[r,o];var s=4*Math.floor(n/4),u=n%4,l="\n sumValue += dot(values, filter);\n ",c="";a%n>0&&(c="\n if (inIdx < 0 || inIdx >= "+a+") {\n return initializationValue;\n }\n ");var f="";a%n>0&&(f="\n if (inIdx < 0 || inIdx >= "+a+") {\n return -1.0;\n }\n "),this.userCode="\n const float initializationValue = 0.0;\n\n float getValue(int batch, int inIdx) {\n "+c+"\n return getX(batch, inIdx);\n }\n\n float getSegmentIdAtIndex(int inIdx) {\n "+f+"\n return getSegmentIds(inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = int(floor(float(outIdx) / float(\n "+i+")) * float("+n+"));\n int currentSeg = int(mod(float(outIdx), float("+i+")));\n\n float sumValue = 0.0;\n\n for (int i = 0; i < "+s+"; i += 4) {\n int inIdx = inOffset + i;\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n vec4 filter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0\n );\n\n "+l+"\n }\n\n int inIdx = inOffset + "+s+";\n if ("+(1===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n int inIdxSeg = int(getSegmentIdAtIndex(inIdx));\n\n vec4 filter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n 0,\n 0,\n 0\n );\n\n "+l+"\n } else if ("+(2===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n vec4 filter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n 0,\n 0\n );\n\n "+l+"\n } else if ("+(3===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n vec4 filter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n 0\n );\n\n "+l+"\n }\n setOutput(sumValue);\n }\n "}({windowSize:s,inSize:o,batchSize:i,numSegments:a},t),l=u.outputShape,c=l[0],f=l[1],p=this.makeOutputArray([c,f],r);return this.compileAndRun(u,[e,n],p),p.shape[1]===a?p:(n=xt(0,a).tile([o/s]),this.segOpCompute(p,t,n,r,a))},e.prototype.argMin=function(e,t){var n=[t];Ue("argMin",n,e.rank);var r=ze(e.shape,n),a=r[0],i=E(r[1]),o=e.as2D(-1,i);return this.argReduce(o,"min").reshape(a)},e.prototype.argMax=function(e,t){var n=[t];Ue("argMax",n,e.rank);var r=ze(e.shape,n),a=r[0],i=E(r[1]),o=e.as2D(-1,i);return this.argReduce(o,"max").reshape(a)},e.prototype.cumsum=function(e,t,n,r){if(t!==e.rank-1)throw new Error("WebGL cumsum shader expects an inner-most axis="+(e.rank-1)+" but got axis="+t);var a=new function(e,t,n){this.variableNames=["x"],this.outputShape=e;var r=e.length,a=e[e.length-1],i=n?"<":">";this.userCode="\n int getIndex(int i) {\n "+(n?"return "+a+" -i - 1;":"return i;")+"\n }\n\n void main() {\n "+cn(r)+" coords = getOutputCoords();\n int end = "+hn(r,"coords")+";\n float val = 0.0;\n for (int i = "+a+" - 1; i >= 0; i -= 1) {\n int idx = getIndex(i);\n if (idx "+i+" end) {\n continue;\n }\n if (idx == end && "+t+") {\n continue;\n }\n "+hn(r,"coords")+" = idx;\n val += getX("+function(e,t){if(1===e)return""+t;if(2===e)return t+".x, "+t+".y";if(3===e)return t+".x, "+t+".y, "+t+".z";if(4===e)return t+".x, "+t+".y, "+t+".z, "+t+".w";throw Error("Cumulative sum for rank "+e+" is not yet supported")}(r,"coords")+");\n }\n setOutput(val);\n }\n "}(e.shape,n,r);return this.compileAndRun(a,[e])},e.prototype.equal=function(e,t){var n=new en("return float(a == b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.notEqual=function(e,t){var n=new en("return float(a != b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.less=function(e,t){if(this.shouldExecuteOnCPU([e,t]))return this.cpuBackend.less(e,t);var n=new en("return float(a < b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.lessEqual=function(e,t){var n=new en("return float(a <= b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.greater=function(e,t){if(this.shouldExecuteOnCPU([e,t]))return this.cpuBackend.greater(e,t);var n=new en("return float(a > b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.greaterEqual=function(e,t){var n=new en("return float(a >= b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.logicalNot=function(e){var t=new jr(e.shape,"return float(!(x >= 1.0));");return this.compileAndRun(t,[e])},e.prototype.logicalAnd=function(e,t){var n=new en("return float(a >= 1.0 && b >= 1.0);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.logicalOr=function(e,t){var n=new en("return float(a >= 1.0 || b >= 1.0);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.select=function(e,t,n){var r=new function(e,t,n){var r,a;if(this.variableNames=["c","a","b"],this.outputShape=t,n>4)throw Error("Where for rank "+n+" is not yet supported");if(1===n)a="resRC",r="resRC";else{for(var i=["resRC.x","resRC.y","resRC.z","resRC.w"],o=[],s=[],u=0;u= 1.0) {\n setOutput(getA("+a+"));\n } else {\n setOutput(getB("+a+"));\n }\n }\n "}(e.rank,t.shape,t.rank),a=this.makeOutputArray(r.outputShape,At(t.dtype,n.dtype));return this.compileAndRun(r,[e,t,n],a)},e.prototype.where=function(e){Te("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");var t=e.dataSync();return Pa(e.shape,t)},e.prototype.topk=function(e,t,n){return qt(e.dataSync(),e.shape,e.dtype,t)},e.prototype.min=function(e,t){Ue("min",t,e.rank);var n=ze(e.shape,t),r=n[0],a=E(n[1]),i=e.as2D(-1,a);return this.reduce(i,"min",i.dtype).reshape(r)},e.prototype.minimum=function(e,t){if(this.shouldExecuteOnCPU([e,t]))return this.cpuBackend.minimum(e,t);var n=new en("\n if (isNaN(a)) return a;\n if (isNaN(b)) return b;\n\n return min(a, b);\n",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.mod=function(e,t){var n=new en("if (b == 0.0) return NAN;\n return mod(a, b);",e.shape,t.shape),r=n.getCustomSetupFunc();return this.compileAndRun(n,[e,t],null,r)},e.prototype.max=function(e,t){Ue("max",t,e.rank);var n=ze(e.shape,t),r=n[0],a=E(n[1]),i=e.as2D(-1,a);return this.reduce(i,"max",i.dtype).reshape(r)},e.prototype.maximum=function(e,t){if(this.shouldExecuteOnCPU([e,t]))return this.cpuBackend.maximum(e,t);var n=new en("\n if (isNaN(a)) return a;\n if (isNaN(b)) return b;\n\n return max(a, b);\n",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.all=function(e,t){Ue("all",t,e.rank);var n=ze(e.shape,t),r=n[0],a=E(n[1]),i=e.as2D(-1,a);return this.reduce(i,"all",i.dtype).reshape(r)},e.prototype.any=function(e,t){Ue("any",t,e.rank);var n=ze(e.shape,t),r=n[0],a=E(n[1]),i=e.as2D(-1,a);return this.reduce(i,"any",i.dtype).reshape(r)},e.prototype.squaredDifference=function(e,t){var n=new en("return (a - b) * (a - b);",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.realDivide=function(e,t){var n=new en("if (a == b) return 1.0;\n return a / b;",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"float32");return this.compileAndRun(n,[e,t],r)},e.prototype.floorDiv=function(e,t){var n=new en("\n float resultSign = sign(a) * sign(b);\n int ia = round(a);\n int ib = round(b);\n int result = ia / ib;\n int amodb = ia - ib * result;\n\n if (resultSign < 0.0 && amodb != 0) {\n result -= 1;\n }\n return float(result);\n",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"int32");return this.compileAndRun(n,[e,t],r)},e.prototype.add=function(e,t){if("complex64"===e.dtype&&"complex64"===t.dtype)return this.complexSeparableBinaryOp(e,t,Zt);var n=new en(Zt,e.shape,t.shape),r=this.makeOutputArray(n.outputShape,At(e.dtype,t.dtype));return this.compileAndRun(n,[e,t],r)},e.prototype.complexSeparableBinaryOp=function(e,t,n){var r=this,a=this.texData.get(e.dataId),i=this.texData.get(t.dataId),o=[[a.complexTensors.real,i.complexTensors.real],[a.complexTensors.imag,i.complexTensors.imag]].map(function(a){var i=a[0],o=a[1],s=new en(n,e.shape,t.shape),u=r.makeOutputArray(s.outputShape,At(i.dtype,o.dtype)),l=r.makeComplexComponentTensorHandle(e,i),c=r.makeComplexComponentTensorHandle(t,o);return r.compileAndRun(s,[l,c],u)}),s=o[0],u=o[1],l=this.complex(s,u);return s.dispose(),u.dispose(),l},e.prototype.makeComplexComponentTensorHandle=function(e,t){return{dataId:t.dataId,dtype:t.dtype,shape:e.shape}},e.prototype.addN=function(e){for(var t=e[0],n=1;n 0.5) {\n return ceil(x);\n } else {\n if (mod(base, 2.0) == 0.0) {\n return base;\n } else {\n return base + 1.0;\n }\n }\n");return this.compileAndRun(t,[e])},e.prototype.exp=function(e){var t=new jr(e.shape,"return exp(x);");return this.compileAndRun(t,[e])},e.prototype.expm1=function(e){var t=new jr(e.shape,"return exp(x) - 1.0;");return this.compileAndRun(t,[e])},e.prototype.log=function(e){var t=new jr(e.shape,"if (x < 0.0) return NAN;\n return log(x);"),n=t.getCustomSetupFunc();return this.compileAndRun(t,[e],null,n)},e.prototype.log1p=function(e){var t=new jr(e.shape,"return log(1.0 + x);");return this.compileAndRun(t,[e])},e.prototype.sqrt=function(e){var t=new jr(e.shape,"return sqrt(x);");return this.compileAndRun(t,[e])},e.prototype.rsqrt=function(e){var t=new jr(e.shape,"return inversesqrt(x);");return this.compileAndRun(t,[e])},e.prototype.square=function(e){var t=new jr(e.shape,"return x * x;");return this.compileAndRun(t,[e])},e.prototype.reciprocal=function(e){var t=new jr(e.shape,"return 1.0 / x;");return this.compileAndRun(t,[e])},e.prototype.relu=function(e){var t=new jr(e.shape,"if (isNaN(x)) return x;\n return (x < 0.0) ? 0.0 : x;\n");return this.compileAndRun(t,[e])},e.prototype.elu=function(e){var t=new jr(e.shape,"return (x >= 0.0) ? x : (exp(x) - 1.0);");return this.compileAndRun(t,[e])},e.prototype.eluDer=function(e,t){var n=new en("return (b >= 1.0) ? a : a * (b + 1.0);",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.selu=function(e){var t=new jr(e.shape,"\n // Stable and Attracting Fixed Point (0, 1) for Normalized Weights.\n // see: https://arxiv.org/abs/1706.02515\n float scaleAlpha = 1.7580993408473768;\n float scale = 1.0507009873554805;\n return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);\n");return this.compileAndRun(t,[e])},e.prototype.int=function(e){var t=new jr(e.shape,"return float(int(x));"),n=this.makeOutputArray(t.outputShape,"int32");return this.compileAndRun(t,[e],n)},e.prototype.clip=function(e,t,n){var r=new function(e,t,n){this.variableNames=["A"],this.outputShape=e,this.userCode="\n void main() {\n float value = getAAtOutCoords();\n if (isNaN(value)) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, float("+t+"), float("+n+")));\n }\n "}(e.shape,t,n);return this.compileAndRun(r,[e])},e.prototype.abs=function(e){var t=new jr(e.shape,"return abs(x);");return this.compileAndRun(t,[e])},e.prototype.complexAbs=function(e){var t=this.texData.get(e.dataId),n=new function(e){this.variableNames=["real","imag"],this.outputShape=e,this.userCode="\n void main() {\n float real = getRealAtOutCoords();\n float imag = getImagAtOutCoords();\n vec2 v = vec2(real, imag);\n\n setOutput(sqrt(dot(v, v)));\n }\n "}(e.shape),r=[this.makeComplexComponentTensorHandle(e,t.complexTensors.real),this.makeComplexComponentTensorHandle(e,t.complexTensors.imag)];return this.compileAndRun(n,r)},e.prototype.sigmoid=function(e){var t=new jr(e.shape,"return 1.0 / (1.0 + exp(-1.0 * x));");return this.compileAndRun(t,[e])},e.prototype.softplus=function(e){var t=new jr(e.shape,"\n float epsilon = 1.1920928955078125e-7;\n float threshold = log(epsilon) + 2.0;\n\n bool too_large = x > -threshold;\n bool too_small = x < threshold;\n\n float result;\n float exp_x = exp(x);\n\n if (too_large){\n result = x;\n }\n else if (too_small){\n result = exp_x;\n }\n else{\n result = log(exp_x + 1.0);\n }\n return result;\n");return this.compileAndRun(t,[e])},e.prototype.sin=function(e){var t=new jr(e.shape,"if (isNaN(x)) return x;\n return sin(x);\n");return this.compileAndRun(t,[e])},e.prototype.cos=function(e){var t=new jr(e.shape,"if (isNaN(x)) return x;\n return cos(x);\n");return this.compileAndRun(t,[e])},e.prototype.tan=function(e){var t=new jr(e.shape,"return tan(x);");return this.compileAndRun(t,[e])},e.prototype.asin=function(e){var t=new jr(e.shape,"return asin(x);");return this.compileAndRun(t,[e])},e.prototype.acos=function(e){var t=new jr(e.shape,"return acos(x);");return this.compileAndRun(t,[e])},e.prototype.atan=function(e){var t=new jr(e.shape,"if (isNaN(x)) return x;\n return atan(x);\n");return this.compileAndRun(t,[e])},e.prototype.atan2=function(e,t){var n=new en("\n if (isNaN(a)) return a;\n if (isNaN(b)) return b;\n\n return atan(a, b);\n",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.sinh=function(e){var t=new jr(e.shape,"\n float e2x = exp(x);\n return (e2x - 1.0 / e2x) / 2.0;\n");return this.compileAndRun(t,[e])},e.prototype.cosh=function(e){var t=new jr(e.shape,"\n float e2x = exp(-x);\n return (e2x + 1.0 / e2x) / 2.0;\n");return this.compileAndRun(t,[e])},e.prototype.tanh=function(e){var t=new jr(e.shape,"\n float e2x = exp(-2.0 * abs(x));\n return sign(x) * (1.0 - e2x) / (1.0 + e2x);\n");return this.compileAndRun(t,[e])},e.prototype.asinh=function(e){var t=new jr(e.shape,"return log(x + sqrt(x * x + 1.0));");return this.compileAndRun(t,[e])},e.prototype.acosh=function(e){var t=new jr(e.shape,"if (isNaN(x)) return x;\n if (x < 1.0) return NAN;\n return log(x + sqrt(x * x - 1.0));"),n=t.getCustomSetupFunc();return this.compileAndRun(t,[e],null,n)},e.prototype.atanh=function(e){var t=new jr(e.shape,"if (isNaN(x)) return x;\n if ((x < -1.0) || (x > 1.0)) return NAN;\n return (log(1.0 + x) - log(1.0 - x)) / 2.0;"),n=t.getCustomSetupFunc();return this.compileAndRun(t,[e],null,n)},e.prototype.erf=function(e){var t=new jr(e.shape,'\n // Error function is calculated approximately with elementary function.\n // See "Handbook of Mathematical Functions with Formulas,\n // Graphs, and Mathematical Tables", Abramowitz and Stegun.\n float p = 0.3275911;\n float a1 = 0.254829592;\n float a2 = -0.284496736;\n float a3 = 1.421413741;\n float a4 = -1.453152027;\n float a5 = 1.061405429;\n\n float t = 1.0 / (1.0 + p * x);\n return 1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x);\n');return this.compileAndRun(t,[e])},e.prototype.step=function(e,t){var n=new jr(e.shape,function(e){return void 0===e&&(e=0),Lr+"\n return x > 0.0 ? 1.0 : float("+e+");\n "}(t));return this.compileAndRun(n,[e])},e.prototype.conv2dWithIm2Row=function(e,t,n){var r=n.filterWidth,a=n.filterHeight,i=n.inChannels,o=n.outWidth,s=n.outHeight,u=r*a*i,l=s*o,c=[u,l],f=e.squeeze([0]),p=t.reshape([u,-1]),h=new function(e,t,n){this.variableNames=["A"],this.outputShape=e;var r=n.filterWidth,a=n.inChannels,i=n.strideWidth,o=n.strideHeight,s=n.padInfo,u=n.outWidth,l=n.dilationWidth,c=n.dilationHeight,f=s.left,p=s.top,h=a*r;this.userCode="\n void main() {\n ivec2 rc = getOutputCoords();\n\n vec4 result = vec4(0);\n\n for(int row=0; row<=1; row++) {\n for(int col=0; col<=1; col++) {\n int blockIndex = rc.y + col;\n int pos = rc.x + row;\n\n if(blockIndex >= "+e[1]+" || pos >= "+e[0]+") continue;\n\n int offsetY = int(blockIndex / ("+u+")) * "+o+" - "+p+";\n int d0 = offsetY + "+c+" * (pos / "+h+");\n\n if(d0 >= "+t[0]+" || d0 < 0) continue;\n\n int offsetX = int(mod(float(blockIndex), "+u+".) * "+i+". - "+f+".);\n int d1 = offsetX + "+l+" * (int(mod(float(pos), "+h+".) / "+a+".));\n\n if(d1 >= "+t[1]+" || d1 < 0) continue;\n\n result[row * 2 + col] = getA(d0, d1, int(mod(float(pos), "+a+".)));\n }\n }\n\n gl_FragColor = result;\n }\n "}(c,f.shape,n),d=this.compileAndRun(h,[f],this.makePackedTensor(c)),m=new Sr(d.shape,p.shape,[l,n.outChannels],!0,!1),g=this.compileAndRun(m,[d,p],this.makePackedTensor(m.outputShape));return!1===ve.get("WEBGL_LAZILY_UNPACK")&&(g=this.unpackTensor(g)),g.reshape([1,s,o,n.outChannels])},e.prototype.conv2d=function(e,t,n){if(ve.get("WEBGL_CONV_IM2COL")&&1===e.shape[0])return this.conv2dWithIm2Row(e,t,n);var r=new function(e){this.variableNames=["x","W"],this.outputShape=e.outShape;var t=e.padInfo.top,n=e.padInfo.left,r=e.strideHeight,a=e.strideWidth,i=e.dilationHeight,o=e.dilationWidth,s=e.filterHeight,u=e.filterWidth,l=4*Math.floor(e.inChannels/4),c=e.inChannels%4;this.userCode="\n const ivec2 strides = ivec2("+r+", "+a+");\n const ivec2 pads = ivec2("+t+", "+n+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d2 = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+s+"; wR++) {\n int xR = xRCorner + wR * "+i+";\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+u+"; wC++) {\n int xC = xCCorner + wC * "+o+";\n\n if (xC < 0 || xC >= "+e.inWidth+") {\n continue;\n }\n\n for (int d1 = 0; d1 < "+l+"; d1 += 4) {\n vec4 xValues = vec4(\n getX(batch, xR, xC, d1),\n getX(batch, xR, xC, d1 + 1),\n getX(batch, xR, xC, d1 + 2),\n getX(batch, xR, xC, d1 + 3)\n );\n vec4 wValues = vec4(\n getW(wR, wC, d1, d2),\n getW(wR, wC, d1 + 1, d2),\n getW(wR, wC, d1 + 2, d2),\n getW(wR, wC, d1 + 3, d2)\n );\n\n dotProd += dot(xValues, wValues);\n }\n\n if ("+(1===c)+") {\n dotProd +=\n getX(batch, xR, xC, "+l+") *\n getW(wR, wC, "+l+", d2);\n } else if ("+(2===c)+") {\n vec2 xValues = vec2(\n getX(batch, xR, xC, "+l+"),\n getX(batch, xR, xC, "+l+" + 1)\n );\n vec2 wValues = vec2(\n getW(wR, wC, "+l+", d2),\n getW(wR, wC, "+l+" + 1, d2)\n );\n dotProd += dot(xValues, wValues);\n } else if ("+(3===c)+") {\n vec3 xValues = vec3(\n getX(batch, xR, xC, "+l+"),\n getX(batch, xR, xC, "+l+" + 1),\n getX(batch, xR, xC, "+l+" + 2)\n );\n vec3 wValues = vec3(\n getW(wR, wC, "+l+", d2),\n getW(wR, wC, "+l+" + 1, d2),\n getW(wR, wC, "+l+" + 2, d2)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.conv2dDerInput=function(e,t,n){var r=new function(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;var t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,i=t-1-e.padInfo.top,o=n-1-e.padInfo.left;this.userCode="\n const ivec2 pads = ivec2("+i+", "+o+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n\n ivec2 dyCorner = coords.yz - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+t+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+e.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+t+" - 1 - wR;\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+a+".0;\n\n if (dyC < 0.0 || dyC >= "+e.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+n+" - 1 - wC;\n\n for (int d2 = 0; d2 < "+e.outChannels+"; d2++) {\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.conv2dDerFilter=function(e,t,n){var r=new function(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;var t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int d2 = coords.w;\n\n // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int b = 0; b < "+e.batchSize+"; b++) {\n for (int yR = 0; yR < "+e.outHeight+"; yR++) {\n int xR = wR + yR * "+t+" - "+r+";\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+e.outWidth+"; yC++) {\n int xC = wC + yC * "+n+" - "+a+";\n\n if (xC < 0 || xC >= "+e.inWidth+") {\n continue;\n }\n\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.depthwiseConv2D=function(e,t,n){var r=new function(e){this.variableNames=["x","W"],this.outputShape=e.outShape;var t=e.inHeight,n=e.inWidth,r=e.padInfo.top,a=e.padInfo.left,i=e.strideHeight,o=e.strideWidth,s=e.dilationHeight,u=e.dilationWidth,l=e.filterHeight,c=e.filterWidth,f=e.outChannels/e.inChannels;this.userCode="\n const ivec2 strides = ivec2("+i+", "+o+");\n const ivec2 pads = ivec2("+r+", "+a+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n ivec2 xRCCorner = coords.yz * strides - pads;\n int d2 = coords.w;\n int d1 = d2 / "+f+";\n int q = d2 - d1 * "+f+";\n\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n // TODO(dsmilkov): Flatten the two for loops and vec4 the operations.\n for (int wR = 0; wR < "+l+"; wR++) {\n int xR = xRCorner + wR * "+s+";\n\n if (xR < 0 || xR >= "+t+") {\n continue;\n }\n\n for (int wC = 0; wC < "+c+"; wC++) {\n int xC = xCCorner + wC * "+u+";\n\n if (xC < 0 || xC >= "+n+") {\n continue;\n }\n\n float xVal = getX(batch, xR, xC, d1);\n float wVal = getW(wR, wC, d1, q);\n dotProd += xVal * wVal;\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.depthwiseConv2DDerInput=function(e,t,n){var r=new function(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;var t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,i=t-1-e.padInfo.top,o=n-1-e.padInfo.left,s=e.outChannels/e.inChannels;this.userCode="\n const ivec2 pads = ivec2("+i+", "+o+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n ivec2 dyCorner = coords.yz - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n float dotProd = 0.0;\n\n for (int wR = 0; wR < "+t+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+e.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+t+" - 1 - wR;\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+a+".0;\n\n if (dyC < 0.0 || dyC >= "+e.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+n+" - 1 - wC;\n\n // TODO: Vec4 over the channelMul\n for (int dm = 0; dm < "+s+"; dm++) {\n int d2 = d1 * "+s+" + dm;\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, dm);\n dotProd += xValue * wValue;\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.depthwiseConv2DDerFilter=function(e,t,n){var r=new function(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;var t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left,i=e.outChannels/e.inChannels;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int dm = coords.w;\n int d2 = d1 * "+i+" + dm;\n\n float dotProd = 0.0;\n\n // TODO: Vec4 over the batch size\n for (int b = 0; b < "+e.batchSize+"; b++) {\n for (int yR = 0; yR < "+e.outHeight+"; yR++) {\n int xR = wR + yR * "+t+" - "+r+";\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+e.outWidth+"; yC++) {\n int xC = wC + yC * "+n+" - "+a+";\n\n if (xC < 0 || xC >= "+e.inWidth+") {\n continue;\n }\n\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.maxPool=function(e,t){var n=new Ir(t,"max",!1),r=this.makeOutputArray(n.outputShape,e.dtype);return this.compileAndRun(n,[e],r)},e.prototype.avgPool=function(e,t){var n=new Ir(t,"avg",!1),r=this.makeOutputArray(n.outputShape,"float32");return this.compileAndRun(n,[e],r)},e.prototype.maxPoolBackprop=function(e,t,n,r){var a=new Ir(r,"max",!0),i=this.compileAndRun(a,[t]),o=new function(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;var t=e.strideHeight,n=e.strideWidth,r=e.dilationHeight,a=e.effectiveFilterHeight,i=e.effectiveFilterWidth,o=a-1-e.padInfo.top,s=i-1-e.padInfo.left,u=a*i-1;this.userCode="\n const ivec2 pads = ivec2("+o+", "+s+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+a+";\n wR += "+r+") {\n float dyR = float(dyRCorner + wR) / "+t+".0;\n\n if (dyR < 0.0 || dyR >= "+e.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+i+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+n+".0;\n\n if (dyC < 0.0 || dyC >= "+e.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n int maxPosValue = "+u+" - int(getMaxPos(b, idyR, idyC, d));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue = wR * "+i+" + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n setOutput(dotProd);\n }\n "}(r),s=this.makeOutputArray(o.outputShape,t.dtype),u=this.compileAndRun(o,[e,i],s);return i.dispose(),u},e.prototype.avgPoolBackprop=function(e,t,n){var r=new function(e){this.variableNames=["dy"],this.outputShape=e.inShape;var t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,i=e.dilationHeight,o=e.dilationWidth,s=e.effectiveFilterHeight,u=e.effectiveFilterWidth,l=s-1-e.padInfo.top,c=u-1-e.padInfo.left,f=1/(t*n);this.userCode="\n const ivec2 pads = ivec2("+l+", "+c+");\n const float avgMultiplier = float("+f+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+s+";\n wR += "+i+") {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+e.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+u+";\n wC+= "+o+") {\n float dyC = float(dyCCorner + wC) / "+a+".0;\n\n if (dyC < 0.0 || dyC >= "+e.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n setOutput(dotProd);\n }\n "}(n),a=this.makeOutputArray(r.outputShape,t.dtype);return this.compileAndRun(r,[e],a)},e.prototype.cast=function(e,t){return Dt(e,t,this)},e.prototype.reshape=function(e,t){return this.texData.get(e.dataId).isPacked&&!er(e.shape,t)?this.packedReshape(e,t):jt(e,t)},e.prototype.resizeBilinear=function(e,t,n,r){var a=new function(e,t,n,r){this.variableNames=["A"],this.outputShape=[];var a=e[0],i=e[1],o=e[2],s=e[3];this.outputShape=[a,t,n,s];var u=[r&&t>1?i-1:i,r&&n>1?o-1:o],l=[r&&t>1?t-1:t,r&&n>1?n-1:n];this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n "+u[0]/l[0]+",\n "+u[1]/l[1]+");\n const vec2 inputShapeRC = vec2("+i+".0, "+o+".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the four integer indices.\n ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);\n ivec2 sourceCeilRC = ivec2(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d);\n float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d);\n float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d);\n float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n float top = topLeft + (topRight - topLeft) * fracRC.y;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n float newValue = top + (bottom - top) * fracRC.x;\n\n setOutput(newValue);\n }\n "}(e.shape,t,n,r);return this.compileAndRun(a,[e])},e.prototype.resizeBilinearBackprop=function(e,t,n){var r=new function(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t.shape;var r=t.shape,a=r[1],i=r[2],o=e.shape,s=o[1],u=o[2],l=[n&&s>1?a-1:a,n&&u>1?i-1:i],c=[n&&s>1?s-1:s,n&&u>1?u-1:u],f=l[0]/c[0],p=l[1]/c[1],h=1/f,d=1/p,m=2*Math.ceil(h)+2,g=2*Math.ceil(d)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float("+f+");\n const float widthScale = float("+p+");\n\n const float invHeightScale = float("+h+");\n const float invWidthScale = float("+d+");\n\n const int winHeight = int("+m+");\n const int winWidth = int("+g+");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(startRLerp - float(winHeight / 2));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(startCLerp - float(winWidth / 2));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= "+s+") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= "+u+") {\n continue;\n }\n\n float dxR = float(dyR) * heightScale;\n int topDxRIndex = int(floor(dxR));\n int bottomDxRIndex = int(min(ceil(dxR), "+(a-1)+".0));\n float dxRLerp = dxR - float(topDxRIndex);\n float inverseDxRLerp = 1.0 - dxRLerp;\n\n float dxC = float(dyC) * widthScale;\n int leftDxCIndex = int(floor(dxC));\n int rightDxCIndex = int(min(ceil(dxC), "+(i-1)+".0));\n float dxCLerp = dxC - float(leftDxCIndex);\n float inverseDxCLerp = 1.0 - dxCLerp;\n\n if (r == topDxRIndex && c == leftDxCIndex) {\n // topLeft\n accumulator +=\n getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp;\n }\n\n if (r == topDxRIndex && c == rightDxCIndex) {\n // topRight\n accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp;\n }\n\n if (r == bottomDxRIndex && c == leftDxCIndex) {\n // bottomLeft\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp;\n }\n\n if (r == bottomDxRIndex && c == rightDxCIndex) {\n // bottomRight\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp;\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n "}(e,t,n);return this.compileAndRun(r,[e])},e.prototype.resizeNearestNeighbor=function(e,t,n,r){var a=new function(e,t,n,r){this.variableNames=["A"],this.outputShape=[];var a=e[0],i=e[1],o=e[2],s=e[3];this.outputShape=[a,t,n,s];var u=[r&&t>1?i-1:i,r&&n>1?o-1:o],l=[r&&t>1?t-1:t,r&&n>1?n-1:n],c=r?"0.5":"0.0";this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n "+u[0]/l[0]+",\n "+u[1]/l[1]+");\n const vec2 inputShapeRC = vec2("+i+".0, "+o+".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestRC = ivec2(\n min(inputShapeRC - 1.0, floor(sourceFracIndexRC + "+c+")));\n\n float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);\n\n setOutput(newValue);\n }\n "}(e.shape,t,n,r);return this.compileAndRun(a,[e])},e.prototype.resizeNearestNeighborBackprop=function(e,t,n){var r=new function(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t.shape;var r=t.shape,a=r[1],i=r[2],o=e.shape,s=o[1],u=o[2],l=[n&&s>1?a-1:a,n&&u>1?i-1:i],c=[n&&s>1?s-1:s,n&&u>1?u-1:u],f=l[0]/c[0],p=l[1]/c[1],h=1/f,d=1/p,m=2*Math.ceil(h)+2,g=2*Math.ceil(d)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float("+f+");\n const float widthScale = float("+p+");\n\n const float invHeightScale = float("+h+");\n const float invWidthScale = float("+d+");\n\n const int winHeight = int("+m+");\n const int winWidth = int("+g+");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(floor(startRLerp - float(winHeight / 2)));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(floor(startCLerp - float(winWidth / 2)));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= "+s+") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= "+u+") {\n continue;\n }\n\n float sourceFracRow =\n float("+l[0]+") *\n (float(dyR) / float("+c[0]+"));\n\n float sourceFracCol =\n float("+l[1]+") *\n (float(dyC) / float("+c[1]+"));\n\n int sourceNearestRow = int(min(\n float(int("+a+") - 1),\n "+n+" ? float(round(sourceFracRow)) :\n float(floor(sourceFracRow))));\n\n int sourceNearestCol = int(min(\n float(int("+i+") - 1),\n "+n+" ? float(round(sourceFracCol)) :\n float(floor(sourceFracCol))));\n\n if (r == sourceNearestRow && c == sourceNearestCol) {\n accumulator += getDy(b, dyR, dyC, d);\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n "}(e,t,n);return this.compileAndRun(r,[e])},e.prototype.multinomial=function(e,t,n,r){var a=t?e:at(e),i=a.shape[0],o=a.shape[1],s=new Or(i,o,n),u=this.makeOutputArray(s.outputShape,"int32"),l=s.getCustomSetupFunc(r);return this.compileAndRun(s,[a],u,l)},e.prototype.oneHot=function(e,t,n,r){var a=new function(e,t,n,r){this.variableNames=["indices"],this.outputShape=[e,t],this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int index = round(getIndices(coords.x));\n setOutput(mix(float("+r+"), float("+n+"),\n float(index == coords.y)));\n }\n "}(e.size,t,n,r);return this.compileAndRun(a,[e])},e.prototype.nonMaxSuppression=function(e,t,n,r,a){return Te("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead"),Vt(e.dataSync(),t.dataSync(),n,r,a)},e.prototype.cropAndResize=function(e,t,n,r,a,i){var o=new function(e,t,n,r,a){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];var i=e[0],o=e[1],s=e[2],u=e[3],l=t[0],c=n[0],f=n[1];this.outputShape=[l,c,f,u];var p="bilinear"===r?1:0,h=[o-1+".0",s-1+".0"],d=h[0],m=h[1],g=c>1?[""+(o-1)/(c-1),"(y2-y1) * height_ratio","y1*"+d+" + float(y)*(height_scale)"]:["0.0","0.0","0.5 * (y1+y2) * "+d],y=g[0],v=g[1],b=g[2],w=f>1?[""+(s-1)/(f-1),"(x2-x1) * width_ratio","x1*"+m+" + float(x)*(width_scale)"]:["0.0","0.0","0.5 * (x1+x2) * "+m],x=w[0],_=w[1],E=w[2];this.userCode="\n const float height_ratio = float("+y+");\n const float width_ratio = float("+x+");\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int y = coords[1];\n int x = coords[2];\n int d = coords[3];\n\n // get box vals\n float y1 = getBoxes(b,0);\n float x1 = getBoxes(b,1);\n float y2 = getBoxes(b,2);\n float x2 = getBoxes(b,3);\n\n // get image in batch index\n int bInd = round(getBoxInd(b));\n if(bInd < 0 || bInd >= "+i+") {\n return;\n }\n\n float height_scale = "+v+";\n float width_scale = "+_+";\n\n float in_y = "+b+";\n if( in_y < 0.0 || in_y > "+d+" ) {\n setOutput(float("+a+"));\n return;\n }\n float in_x = "+E+";\n if( in_x < 0.0 || in_x > "+m+" ) {\n setOutput(float("+a+"));\n return;\n }\n\n vec2 sourceFracIndexRC = vec2(in_y,in_x);\n if("+p+" == 1) {\n // Compute the four integer indices.\n ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);\n ivec2 sourceCeilRC = ivec2(ceil(sourceFracIndexRC));\n\n float topLeft = getImage(b, sourceFloorRC.x, sourceFloorRC.y, d);\n float bottomLeft = getImage(b, sourceCeilRC.x, sourceFloorRC.y, d);\n float topRight = getImage(b, sourceFloorRC.x, sourceCeilRC.y, d);\n float bottomRight = getImage(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n float top = topLeft + (topRight - topLeft) * fracRC.y;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n float newValue = top + (bottom - top) * fracRC.x;\n setOutput(newValue);\n } else {\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestRC = ivec2(floor(\n sourceFracIndexRC + vec2(0.5,0.5)));\n float newValue = getImage(b, sourceNearestRC.x, sourceNearestRC.y, d);\n setOutput(newValue);\n }\n }\n "}(e.shape,t.shape,r,a,i);return this.compileAndRun(o,[e,t,n])},e.prototype.depthToSpace=function(e,t,n){b(t>1,"blockSize should be > 1 for depthToSpace, but was: "+t);var r=e.shape[0],a=("NHWC"===n?e.shape[1]:e.shape[2])*t,i=("NHWC"===n?e.shape[2]:e.shape[3])*t,o=("NHWC"===n?e.shape[3]:e.shape[1])/(t*t),s=new gn("NHWC"===n?[r,a,i,o]:[r,o,a,i],t,n);return this.compileAndRun(s,[e])},e.prototype.split=function(e,t,n){return Wt(e,t,n)},e.prototype.scatterND=function(e,t,n){var r=Ye(0,e,n),a=r.sliceRank,i=r.numUpdates,o=r.sliceSize,s=r.strides,u=r.outputSize,l=[u/o,o],c=e.reshape([i,a]),f=t.reshape([i,o]);if(0===u)return jt(lt([]),n);var p=ct(0),h=new Cr(i,a,c.rank,f.rank,s,l);return this.compileAndRun(h,[f,c,p]).reshape(n)},e.prototype.sparseToDense=function(e,t,n,r){var a=Ye(0,e,n),i=a.sliceRank,o=a.numUpdates,s=a.strides,u=a.outputSize,l=new Cr(o,i,e.rank,t.rank,s,[u,1],!1);return this.compileAndRun(l,[t,e,r]).reshape(n)},e.prototype.fft=function(e){return this.fftImpl(e,!1)},e.prototype.ifft=function(e){return this.fftImpl(e,!0)},e.prototype.fftImpl=function(e,t){var n=this.texData.get(e.dataId),r=new yn("return real * expR - imag * expI;",e.shape,t),a=new yn("return real * expI + imag * expR;",e.shape,t),i=[this.makeComplexComponentTensorHandle(e,n.complexTensors.real),this.makeComplexComponentTensorHandle(e,n.complexTensors.imag)],o=this.compileAndRun(r,i),s=this.compileAndRun(a,i),u=this.complex(o,s).as2D(e.shape[0],e.shape[1]);return o.dispose(),s.dispose(),u},e.prototype.gatherND=function(e,t){var n=t.shape,r=n[n.length-1],a=He(e,t),i=a[0],o=a[1],s=a[2],u=a[3],l=t.reshape([o,r]),c=e.reshape([e.size/s,s]),f=new function(e,t,n){this.sliceDim=e,this.strides=t,this.variableNames=["x","indices"],this.outputShape=n;var r=cn(t.length),a=cn(n.length),i=this.sliceDim>1?"strides[j]":"strides";this.userCode="\n "+r+" strides = "+r+"("+this.strides+");\n void main() {\n "+a+" coords = getOutputCoords();\n int flattenIndex = 0;\n for (int j = 0; j < "+this.sliceDim+"; j++) {\n int index = round(getIndices(coords[0], j));\n flattenIndex += index * "+i+";\n }\n setOutput(getX(flattenIndex, coords[1]));\n }\n "}(r,u,[o,s]);return this.compileAndRun(f,[c,l]).reshape(i)},e.prototype.makeOutputArray=function(e,t){return re.make(e,{},t)},e.prototype.makePackedTensor=function(e){var t=re.make(e,{});return this.texData.get(t.dataId).isPacked=!0,t},e.prototype.unpackTensor=function(e){var t=new Br(e.shape);return this.compileAndRun(t,[e])},e.prototype.getBatchDim=function(e,t){return void 0===t&&(t=2),E(e.slice(0,e.length-t))},e.prototype.getRowsCols=function(e){if(0===e.length)throw Error("Cannot get rows and columns of an empty shape array.");return[e.length>1?e[e.length-2]:1,e[e.length-1]]},e.prototype.packedReshape=function(e,t){var n=e.reshape([this.getBatchDim(e.shape)].concat(this.getRowsCols(e.shape))),r=[this.getBatchDim(t)].concat(this.getRowsCols(t)),a=new function(e,t){this.variableNames=["A"],this.usesPackedTextures=!0,this.outputShape=e;for(var n="",r=0;r<4;r++){var a="thisRC = rc;";r%2==1&&(a+="thisRC.z += 1;"),r>1&&(a+="thisRC.y += 1;"),n+="\n "+a+"\n "+(r>0?"if(thisRC.y < rows && thisRC.z < cols){":"")+"\n int flatIndex = getFlatIndex(thisRC);\n\n ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex);\n vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z));\n\n result["+r+"] =\n getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims);\n "+(r>0?"}":"")+"\n "}this.userCode="\n \n ivec3 inputCoordsFromReshapedOutCoords(int index) {\n "+tn(["r","c","d"],t)+"\n return ivec3(r, c, d);\n }\n \n "+function(e){return"\n int getFlatIndex(ivec3 coords) {\n return round("+function(e,t){if(e.length!==t.length)throw new Error("Vectors to be dotted must be of the same length -got "+e.length+" and "+t.length);for(var n=[],r=Math.floor(e.length/4),a=e.length%4,i=0;i "+t[0];for(var r="",a=e-2;a= "+t[a],a= "+t+";\n bool rEdge = rp1 >= "+n+";\n "}(t,e[e.length-1],e[e.length-2],n),o=function(e,t){var n=e.length,r=function(e,t){for(var n=[],r=0;r<=1;r++)for(var a=0;a<=1;a++){for(var i=(0===r?"r":"rp1")+", "+(0===a?"c":"cp1"),o=2;o= "+e[0]+" ? 0. : getA(rc + 1),\n 0, 0":"getA("+r[0]+"),\n cEdge ? 0. : getA("+r[1]+"),\n rEdge ? 0. : getA("+r[2]+"),\n rEdge || cEdge ? 0. : getA("+r[3]+")"}(e,n);this.userCode="\n void main() {\n "+r+" rc = getOutputCoords();\n\n if("+a+") {\n gl_FragColor = vec4(0);\n } else {\n "+i+"\n\n setOutput(vec4("+o+"));\n }\n }\n "}(t.shape),a=i.compileAndRun(r,[t],i.makePackedTensor(t.shape))),n=i.texData.get(a.dataId),t=a}return i.uploadToGPU(t.dataId),{shape:t.shape,texData:n,isUniform:!1}});this.uploadToGPU(n.dataId);var s,u={shape:n.shape,texData:this.texData.get(n.dataId),isUniform:!1},l=function(e,t,n){var r="";o.concat(n).forEach(function(e){r+=e.shape+"_"+(e.isUniform?"uniform":e.texData.texShape)});var a=e.userCode,i=(!0===e.supportsBroadcasting).toString();return e.constructor.name+"_"+i+"_"+r+"_"+a}(e,0,u),c=this.getAndSaveBinary(l,function(){return function(e,t,n,r){for(var a=t.userCode,i=n.map(function(e,n){var r={logicalShape:e.shape,texShape:e.isUniform?null:e.texData.texShape,isUniform:e.isUniform,isPacked:!e.isUniform&&e.texData.isPacked};return{name:t.variableNames[n],shapeInfo:r}}),o=i.map(function(e){return e.shapeInfo}),s={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.isPacked},u=rn(i,s,a,!0===t.supportsBroadcasting,t.usesPackedTextures),l=e.createProgram(u),c={},f=0;fthis.NUM_BYTES_BEFORE_PAGING)for(var p=this.numBytesInGPU-this.NUM_BYTES_BEFORE_PAGING;p>0&&this.lruDataGPU.length>0;){var h=this.lruDataGPU.shift(),d=this.texData.get(h),m=d.shape,g=d.dtype;p-=this.computeBytes(m,g),this.read(h)}return f&&(s=this.endTimer(s),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(s)})),n},e.prototype.getAndSaveBinary=function(e,t){return e in this.binaryCache||(this.binaryCache[e]=t()),this.binaryCache[e]},e.prototype.getTextureManager=function(){return this.textureManager},e.prototype.dispose=function(){if(!this.disposed){for(var e in this.binaryCache)this.gpgpu.deleteProgram(this.binaryCache[e].webGLProgram);this.textureManager.dispose(),this.canvas.remove(),null!=this.fromPixels2DContext&&this.fromPixels2DContext.canvas.remove(),this.gpgpuCreatedLocally&&this.gpgpu.dispose(),this.disposed=!0}},e.prototype.floatPrecision=function(){var e=this;return ke(function(){return e.abs(ct(1e-8)).get()>0?32:16})},e.prototype.uploadToGPU=function(e){var t=this.texData.get(e),n=t.shape,r=t.values,a=t.texture,i=t.dtype,o=t.usage,s=t.isPacked;if(null==a){var u,l=null!=this.activeTimers;l&&(u=performance.now());var c=Zn(n,s);t.texShape=c;var f=this.acquireTexture(e,c,o,s);if(t.texture=f,null!=r){if(s){var p=E(n.slice(0,n.length-2)),h=n.length>1?n[n.length-2]:1,d=n[n.length-1];this.gpgpu.uploadMatrixToPackedTexture(f,p,h,d,Ma(r,i))}else this.gpgpu.uploadMatrixToTexture(f,c[0],c[1],Ma(r,i));t.values=null,l&&(this.uploadWaitMs+=performance.now()-u)}}else ve.get("WEBGL_PAGING_ENABLED")&&this.lruDataGPU.indexOf(e)>=0&&(this.lruDataGPU.splice(this.lruDataGPU.indexOf(e),1),this.lruDataGPU.push(e))},e.prototype.convertAndCacheOnCPU=function(e,t){var n=this.delayedStorage,r=this.texData.get(e),a=r.texture,i=r.texShape,o=r.dtype,s=r.usage,u=r.isPacked;return n&&null!=a&&(this.releaseTexture(e,a,i,s,u),r.texture=null,r.texShape=null),r.usage=dn.UPLOAD,null!=t&&(r.values=function(e,t){if("float32"===t||"complex64"===t)return e;if("int32"===t||"bool"===t){for(var n="int32"===t?new Int32Array(e.length):new Uint8Array(e.length),r=0;r=0&&this.lruDataGPU.splice(u,1)}this.numBytesInGPU-=this.computeBytes(o,s),this.textureManager.releaseTexture(t,n,r,a)},e.prototype.acquireTexture=function(e,t,n,r){var a=this.texData.get(e),i=a.shape,o=a.dtype;return ve.get("WEBGL_PAGING_ENABLED")&&this.lruDataGPU.push(e),this.numBytesInGPU+=this.computeBytes(i,o),this.textureManager.acquireTexture(t,n,r)},e.prototype.computeBytes=function(e,t){return E(e)*L(t)},e}();function Ma(e,t){return e instanceof Float32Array?e:new Float32Array(e)}ve.get("IS_BROWSER")&&ve.registerBackend("webgl",function(){return new Ta},2,ne);var Ra=rt({abs_:function(e){var t=tt(e,"x","abs");return"complex64"===t.dtype?ve.engine.runKernel(function(e){return e.complexAbs(t)},{$x:t}):ve.engine.runKernel(function(e){return e.abs(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.toFloat().step(-1))}}})}}),Da=rt({acos_:function(e){var t=tt(e,"x","acos");return ve.engine.runKernel(function(e){return e.acos(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(ct(1).sub(t.toFloat().square()).sqrt()).neg()}}})}}),ja=rt({acosh_:function(e){var t=tt(e,"x","acosh");return ve.engine.runKernel(function(e){return e.acosh(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.toFloat().square().sub(ct(1)).sqrt())}}})}}),La=rt({asin_:function(e){var t=tt(e,"x","asin");return ve.engine.runKernel(function(e){return e.asin(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(ct(1).sub(t.toFloat().square()).sqrt())}}})}}),Ba=rt({asinh_:function(e){var t=tt(e,"x","asinh");return ve.engine.runKernel(function(e){return e.asinh(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(ct(1).add(t.toFloat().square()).sqrt())}}})}}),za=rt({atan_:function(e){var t=tt(e,"x","atan");return ve.engine.runKernel(function(e){return e.atan(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(ct(1).add(t.toFloat().square()))}}})}}),Fa=rt({atanh_:function(e){var t=tt(e,"x","atanh");return ve.engine.runKernel(function(e){return e.atanh(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(ct(1).sub(t.toFloat().square()))}}})}}),Va=rt({ceil_:function(e){var t=tt(e,"x","ceil");return ve.engine.runKernel(function(e){return e.ceil(t)},{$x:t},function(e){return{$x:function(){return Ct(e)}}})}}),Ua=rt({clipByValue_:function(e,t,n){var r=tt(e,"x","clipByValue");return b(t<=n,"Error in clip: min ("+t+") must be less than or equal to max ("+n+")."),ve.engine.runKernel(function(e){return e.clip(r,t,n)},{$x:r},function(e){return{$x:function(){return e.where(r.greaterEqual(ct(t)).logicalAnd(r.lessEqual(ct(n))),Ct(e))}}})}}),Wa=rt({cos_:function(e){var t=tt(e,"x","cos");return ve.engine.runKernel(function(e){return e.cos(t)},{$x:t},function(e){return{$x:function(){return t.toFloat().sin().neg().mulStrict(e)}}})}}),qa=rt({cosh_:function(e){var t=tt(e,"x","cosh");return ve.engine.runKernel(function(e){return e.cosh(t)},{$x:t},function(e){return{$x:function(){return t.toFloat().sinh().mulStrict(e)}}})}}),$a=rt({erf_:function(e){var t=tt(e,"x","erf");return b("int32"===t.dtype||"float32"===t.dtype,"Input dtype must be `int32` or `float32`."),"int32"===t.dtype&&(t=t.toFloat()),ve.engine.runKernel(function(e){return e.erf(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(ct(2/Math.sqrt(Math.PI)).mul(t.square().neg().exp()))}}})}}),Ga=rt({exp_:function(e){var t=tt(e,"x","exp");return ve.engine.runKernel(function(e,n){return n(e.exp(t))},{$x:t},function(e,t){var n=t[0];return{$x:function(){return e.mulStrict(n)}}})}}),Ha=rt({expm1_:function(e){var t=tt(e,"x","expm1");return ve.engine.runKernel(function(e){return e.expm1(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.exp())}}})}}),Ka=rt({floor_:function(e){var t=tt(e,"x","floor");return ve.engine.runKernel(function(e){return e.floor(t)},{$x:t},function(e){return{$x:function(){return Ct(e)}}})}}),Xa=rt({log_:function(e){var t=tt(e,"x","log");return ve.engine.runKernel(function(e){return e.log(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.toFloat())}}})}}),Ya=rt({log1p_:function(e){var t=tt(e,"x","log1p");return ve.engine.runKernel(function(e){return e.log1p(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.add(ct(1)))}}})}}),Ja=rt({logSigmoid_:function(e){var t=tt(e,"x","logSigmoid");return ve.engine.runKernel(function(e){return e.softplus(t.neg()).neg()},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.neg().sigmoid())}}})}}),Za=rt({neg_:function(e){var t=tt(e,"x","neg");return ve.engine.runKernel(function(e){return e.neg(t)},{$x:t},function(e){return{$x:function(){return e.neg()}}})}}),Qa=rt({reciprocal_:function(e){var t=tt(e,"x","reciprocal");return ve.engine.runKernel(function(e){return e.reciprocal(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.square().neg())}}})}}),ei=rt({round_:function(e){var t=tt(e,"x","round");return ve.engine.runKernel(function(e){return e.round(t)},{$x:t},function(e){return{$x:function(){return Ct(e)}}})}}),ti=rt({rsqrt_:function(e){var t=tt(e,"x","rsqrt");return ve.engine.runKernel(function(e){return e.rsqrt(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.pow(ct(1.5)).mul(ct(2))).neg()}}})}}),ni=rt({sigmoid_:function(e){var t=tt(e,"x","sigmoid");return ve.engine.runKernel(function(e,n){return n(e.sigmoid(t))},{$x:t},function(e,t){var n=t[0];return{$x:function(){return e.mulStrict(n.mul(ct(1).sub(n)))}}})}}),ri=rt({sign_:function(e){var t=tt(e,"x","sign");return ve.engine.runKernel(function(e){return e.sign(t)},{$x:t},function(e){return{$x:function(){return Ct(e)}}})}}),ai=rt({sin_:function(e){var t=tt(e,"x","sin");return ve.engine.runKernel(function(e){return e.sin(t)},{$x:t},function(e){return{$x:function(){return t.toFloat().cos().mulStrict(e)}}})}}),ii=rt({sinh_:function(e){var t=tt(e,"x","sinh");return ve.engine.runKernel(function(e){return e.sinh(t)},{$x:t},function(e){return{$x:function(){return t.toFloat().cosh().mulStrict(e)}}})}}),oi=rt({softplus_:function(e){var t=tt(e,"x","softplus");return ve.engine.runKernel(function(e){return e.softplus(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.sigmoid())}}})}}),si=rt({sqrt_:function(e){var t=tt(e,"x","sqrt");return ve.engine.runKernel(function(e){return e.sqrt(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.toFloat().sqrt().mul(ct(2)))}}})}}),ui=rt({square_:function(e){var t=tt(e,"x","square");return ve.engine.runKernel(function(e){return e.square(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.toFloat().mul(ct(2)))}}})}}),li=rt({step_:function(e,t){void 0===t&&(t=0);var n=tt(e,"x","step");return ve.engine.runKernel(function(e){return e.step(n,t)},{$x:n},function(e){return{$x:function(){return Ct(e)}}})}}),ci=rt({tan_:function(e){var t=tt(e,"x","tan");return ve.engine.runKernel(function(e){return e.tan(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.cos().square())}}})}}),fi=rt({tanh_:function(e){var t=tt(e,"x","tanh");return ve.engine.runKernel(function(e,n){return n(e.tanh(t))},{$x:t},function(e,t){var n=t[0];return{$x:function(){return ct(1).sub(n.square()).mulStrict(e)}}})}});function pi(e){return null==e?null:0===e.rank?e.as1D():1===e.rank?e:2===e.rank?e.as4D(1,1,e.shape[0],e.shape[1]):3===e.rank?e.as4D(1,e.shape[0],e.shape[1],e.shape[2]):e}var hi=rt({batchNormalization2d_:function(e,t,n,r,a,i){void 0===r&&(r=.001);var o,s,u=tt(e,"x","batchNormalization"),l=tt(t,"mean","batchNormalization"),c=tt(n,"variance","batchNormalization");return null!=a&&(o=tt(a,"scale","batchNormalization")),null!=i&&(s=tt(i,"offset","batchNormalization")),b(2===u.rank,"Error in batchNormalization3D: x must be rank 3 but got rank "+u.rank+"."),b(2===l.rank||1===l.rank,"Error in batchNormalization2D: mean must be rank 2 or rank 1 but got rank "+l.rank+"."),b(2===c.rank||1===c.rank,"Error in batchNormalization2D: variance must be rank 2 or rank 1 but got rank "+c.rank+"."),null!=o&&b(2===o.rank||1===o.rank,"Error in batchNormalization2D: scale must be rank 2 or rank 1 but got rank "+o.rank+"."),null!=s&&b(2===s.rank||1===s.rank,"Error in batchNormalization2D: offset must be rank 2 or rank 1 but got rank "+s.rank+"."),gi(u,l,c,r,o,s)}}),di=rt({batchNormalization3d_:function(e,t,n,r,a,i){void 0===r&&(r=.001);var o,s,u=tt(e,"x","batchNormalization"),l=tt(t,"mean","batchNormalization"),c=tt(n,"variance","batchNormalization");return null!=a&&(o=tt(a,"scale","batchNormalization")),null!=i&&(s=tt(i,"offset","batchNormalization")),b(3===u.rank,"Error in batchNormalization3D: x must be rank 3 but got rank "+u.rank+"."),b(3===l.rank||1===l.rank,"Error in batchNormalization3D: mean must be rank 3 or rank 1 but got rank "+l.rank+"."),b(3===c.rank||1===c.rank,"Error in batchNormalization3D: variance must be rank 3 or rank 1 but got rank "+c.rank+"."),null!=o&&b(3===o.rank||1===o.rank,"Error in batchNormalization3D: scale must be rank 3 or rank 1 but got rank "+o.rank+"."),null!=s&&b(3===s.rank||1===s.rank,"Error in batchNormalization3D: offset must be rank 3 or rank 1 but got rank "+s.rank+"."),gi(u,l,c,r,o,s)}}),mi=rt({batchNormalization4d_:function(e,t,n,r,a,i){void 0===r&&(r=.001);var o,s,u=tt(e,"x","batchNormalization"),l=tt(t,"mean","batchNormalization"),c=tt(n,"variance","batchNormalization");return null!=a&&(o=tt(a,"scale","batchNormalization")),null!=i&&(s=tt(i,"offset","batchNormalization")),b(4===u.rank,"Error in batchNormalization4D: x must be rank 4 but got rank "+u.rank+"."),b(4===l.rank||1===l.rank,"Error in batchNormalization4D: mean must be rank 4 or rank 1 but got rank "+l.rank+"."),b(4===c.rank||1===c.rank,"Error in batchNormalization4D: variance must be rank 4 or rank 1 but got rank "+c.rank+"."),null!=o&&b(4===o.rank||1===o.rank,"Error in batchNormalization4D: scale must be rank 4 or rank 1 but got rank "+o.rank+"."),null!=s&&b(4===s.rank||1===s.rank,"Error in batchNormalization4D: offset must be rank 4 or rank 1 but got rank "+s.rank+"."),gi(u,l,c,r,o,s)}}),gi=rt({batchNormalization_:function(e,t,n,r,a,i){void 0===r&&(r=.001);var o,s,u,l=tt(e,"x","batchNormalization"),c=tt(t,"mean","batchNormalization"),f=tt(n,"variance","batchNormalization");return null!=a&&(o=tt(a,"scale","batchNormalization")),null!=i&&(s=tt(i,"offset","batchNormalization")),b(c.rank===f.rank,"Batch normalization gradient requires mean and variance to have equal ranks."),b(null==s||c.rank===s.rank,"Batch normalization gradient requires mean and offset to have equal ranks."),b(null==o||c.rank===o.rank,"Batch normalization gradient requires mean and scale to have equal ranks."),u=0===l.rank||1===l.rank?l.as4D(1,1,1,l.size):2===l.rank?l.as4D(1,1,l.shape[0],l.shape[1]):3===l.rank?l.as4D(1,l.shape[0],l.shape[1],l.shape[2]):l,ve.engine.runKernel(function(e){return e.batchNormalization(u,pi(c),pi(f),r,pi(o),pi(s))},{$x:l,$mean:c,$variance:f,$scale:o,$offset:s},function(e){var t=null==o?ct(1):o,n=Gt(c.shape,u.shape),a=[];if(1===c.rank){for(var i=0;i=2&&i.rank>=2&&a.rank===i.rank,"Error in matMul: inputs must have the same rank of at least 2, got ranks "+a.rank+" and "+i.rank+"."),b(N(c,f),"Error in matMul: outer dimensions ("+c+") and ("+f+") of Tensors with shapes "+a.shape+" and "+i.shape+" must match."),b(o===s,"Error in matMul: inner shapes ("+o+") and ("+s+") of Tensors with shapes "+a.shape+" and "+i.shape+" and transposeA="+n+" and transposeB="+r+" must match.");var d=a.shape.slice(0,-2).concat([u,l]),m=n?a.as3D(p,o,u):a.as3D(p,u,o),g=r?i.as3D(h,l,s):i.as3D(h,s,l);return ve.engine.runKernel(function(e){return e.batchMatMul(m,g,n,r)},{$a:m,$b:g},function(e){return n||r?!n&&r?{$a:function(){return e.matMul(g.toFloat(),!1,!1)},$b:function(){return e.matMul(m.toFloat(),!0,!1)}}:n&&!r?{$a:function(){return g.toFloat().matMul(e,!1,!0)},$b:function(){return m.toFloat().matMul(e,!1,!1)}}:{$a:function(){return g.toFloat().matMul(e,!0,!0)},$b:function(){return e.matMul(m.toFloat(),!0,!0)}}:{$a:function(){return e.matMul(g.toFloat(),!1,!0)},$b:function(){return m.toFloat().matMul(e,!0,!1)}}}).reshape(d)}}),Si=rt({dot_:function(e,t){var n=tt(e,"t1","dot"),r=tt(t,"t2","dot");b(!(1!==n.rank&&2!==n.rank||1!==r.rank&&2!==r.rank),"Error in dot: inputs must all be rank 1 or 2, but got ranks "+n.rank+" and "+r.rank+".");var a=1===n.rank?n.size:n.shape[1],i=1===r.rank?r.size:r.shape[0];return b(a===i,"Error in dot: inner dimensions of inputs must match, but got "+a+" and "+i+"."),1===n.rank&&1===r.rank?n.as2D(1,-1).matMul(r.as2D(-1,1)).asScalar():1===n.rank&&2===r.rank?n.as2D(1,-1).matMul(r.as2D(r.shape[0],r.shape[1])).as1D():2===n.rank&&1===r.rank?n.matMul(r.as2D(-1,1)).as1D():n.matMul(r.as2D(r.shape[0],r.shape[1]))}}),Oi=rt({outerProduct_:function(e,t){var n=tt(e,"v1","outerProduct"),r=tt(t,"v2","outerProduct");return b(1===n.rank&&1===r.rank,"Error in outerProduct: inputs must be rank 1, but got ranks "+n.rank+" and "+r.rank+"."),n.as2D(-1,1).matMul(r.as2D(1,-1))}});function ki(e,t,n,r,a,i){b(e.length===t.rank,"Length of inShape ("+e.length+") and rank of dy ("+t.rank+") must match");var o=e,s=t,u=!1;3===t.rank&&(u=!0,s=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]),o=[1,e[0],e[1],e[2]]);var l=o[3],c=s.shape[3];b(4===o.length,"Error in conv2dDerInput: inShape must be length 4, but got length "+o.length+"."),b(4===s.rank,"Error in conv2dDerInput: dy must be rank 4, but got rank "+s.rank),b(4===n.rank,"Error in conv2dDerInput: filter must be rank 4, but got rank "+n.rank),b(l===n.shape[2],"Error in conv2dDerInput: depth of input ("+l+") must match input depth for filter "+n.shape[2]+"."),b(c===n.shape[3],"Error in conv2dDerInput: depth of output ("+c+") must match output depth for filter "+n.shape[3]+"."),null!=i&&b(S(a),"Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+a+".");var f=vi(o,n.shape,r,1,a,i),p=ve.engine.runKernel(function(e){return e.conv2dDerInput(s,n,f)},{dy4D:s,filter:n},function(e){return{dy4D:function(){return Pi(e,n,r,a,"NHWC",1,i)},filter:function(){return Ai(e,s,n.shape,r,a,i)}}});return u?p.as3D(p.shape[1],p.shape[2],p.shape[3]):p}function Ii(e,t,n,r,a,i){var o=e;3===e.rank&&(o=e.as4D(1,e.shape[0],e.shape[1],e.shape[2]));var s=t;3===s.rank&&(s=t.as4D(1,t.shape[0],t.shape[1],t.shape[2])),b(4===o.rank,"Error in conv2dDerFilter: input must be rank 4, but got shape "+o.shape+"."),b(4===s.rank,"Error in conv2dDerFilter: dy must be rank 4, but got shape "+s.shape+"."),b(4===n.length,"Error in conv2dDerFilter: filterShape must be length 4, but got "+n+"."),b(o.shape[3]===n[2],"Error in conv2dDerFilter: depth of input "+o.shape[3]+") must match input depth in filter ("+n[2]+"."),b(s.shape[3]===n[3],"Error in conv2dDerFilter: depth of dy ("+s.shape[3]+") must match output depth for filter ("+n[3]+")."),null!=i&&b(S(a),"Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+a+".");var u=vi(o.shape,n,r,1,a,i);return ve.engine.runKernel(function(e){return e.conv2dDerFilter(o,s,u)},{x4D:o,dy4D:s})}var Ci=rt({conv1d_:function(e,t,n,r,a,i,o){void 0===a&&(a="NWC"),void 0===i&&(i=1);var s=tt(e,"x","conv1d"),u=tt(t,"filter","conv1d"),l=s,c=!1;2===s.rank&&(c=!0,l=s.as3D(1,s.shape[0],s.shape[1])),b(3===l.rank,"Error in conv1d: input must be rank 3, but got rank "+l.rank+"."),b(3===u.rank,"Error in conv1d: filter must be rank 3, but got rank "+u.rank+"."),null!=o&&b(S(r),"Error in conv1d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+"."),b(l.shape[2]===u.shape[1],"Error in conv1d: depth of input ("+l.shape[2]+") must match input depth for filter "+u.shape[1]+"."),b(Ei(n,i),"Error in conv1D: Either stride or dilation must be 1. Got stride "+n+" and dilation '"+i+"'"),b("NWC"===a,"Error in conv1d: got dataFormat of "+a+" but only NWC is currently supported.");var f=u.as4D(1,u.shape[0],u.shape[1],u.shape[2]),p=l.as4D(l.shape[0],1,l.shape[1],l.shape[2]),h=Pi(p,f,[1,n],r,"NHWC",[1,i],o);return c?h.as2D(h.shape[2],h.shape[3]):h.as3D(h.shape[0],h.shape[2],h.shape[3])}}),Pi=rt({conv2d_:function(e,t,n,r,a,i,o){void 0===a&&(a="NHWC"),void 0===i&&(i=[1,1]);var s=tt(e,"x","conv2d"),u=tt(t,"filter","conv2d"),l=s,c=!1;3===s.rank&&(c=!0,l=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),b(4===l.rank,"Error in conv2d: input must be rank 4, but got rank "+l.rank+"."),b(4===u.rank,"Error in conv2d: filter must be rank 4, but got rank "+u.rank+"."),null!=o&&b(S(r),"Error in conv2d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+"."),b(l.shape[3]===u.shape[2],"Error in conv2d: depth of input ("+l.shape[3]+") must match input depth for filter "+u.shape[2]+"."),b(Ei(n,i),"Error in conv2D: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+i+"'"),b("NHWC"===a,"Error in conv2d: got dataFormat of "+a+" but only NHWC is currently supported.");var f,p=vi(l.shape,u.shape,n,i,r,o);if(1!==p.filterHeight||1!==p.filterWidth||1!==p.dilationHeight||1!==p.dilationWidth||1!==p.strideHeight||1!==p.strideWidth||"SAME"!==p.padInfo.type&&"VALID"!==p.padInfo.type)f=ve.engine.runKernel(function(e){return e.conv2d(l,u,p)},{x:l,$filter:u},function(e){return b(_i(i),"Error in gradient of conv2D: dilation rates greater than 1 are notyet supported in gradients. Got dilations '"+i+"'"),{x:function(){return ki(l.shape,e,u,n,r)},$filter:function(){return Ii(l,e,u.shape,n,r)}}});else{var h=l.reshape([-1,p.inChannels]),d=u.reshape([p.inChannels,p.outChannels]);f=Ni(h,d).reshape(p.outShape)}return c?f.as3D(f.shape[1],f.shape[2],f.shape[3]):f}}),Ai=rt({conv2dDerFilter_:Ii}),Ti=rt({depthwiseConv2d_:function(e,t,n,r,a,i,o){void 0===a&&(a="NHWC"),void 0===i&&(i=[1,1]);var s=tt(e,"x","depthwiseConv2d"),u=tt(t,"filter","depthwiseConv2d"),l=s,c=!1;3===s.rank&&(c=!0,l=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),b(4===l.rank,"Error in depthwiseConv2d: input must be rank 4, but got rank "+l.rank+"."),b(4===u.rank,"Error in depthwiseConv2d: filter must be rank 4, but got rank "+u.rank+"."),b(l.shape[3]===u.shape[2],"Error in depthwiseConv2d: number of input channels ("+l.shape[3]+") must match the inChannels dimension in filter "+u.shape[2]+"."),null==i&&(i=[1,1]),b(Ei(n,i),"Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+i+"'"),null!=o&&b(S(r),"Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+".");var f=vi(l.shape,u.shape,n,i,r,o,!0),p=ve.engine.runKernel(function(e){return e.depthwiseConv2D(l,u,f)},{x:l,$filter:u},function(e){return b(_i(i),"Error in gradient of depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '"+i+"'"),{x:function(){return function(e,t,n,r){var a=t,i=!1;3===t.rank&&(i=!0,a=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]));var o=ve.engine.runKernel(function(e){return e.depthwiseConv2DDerInput(a,n,r)},{dy4D:a});return i?o.as3D(o.shape[1],o.shape[2],o.shape[3]):o}(l.shape,e,u,f)},$filter:function(){return function(e,t,n,r){var a=e;3===e.rank&&(a=e.as4D(1,e.shape[0],e.shape[1],e.shape[2]));var i=t;return 3===i.rank&&(i=t.as4D(1,t.shape[0],t.shape[1],t.shape[2])),ve.engine.runKernel(function(e){return e.depthwiseConv2DDerFilter(a,i,r)},{x4D:a,dy4D:i})}(l,e,u.shape,f)}}});return c?p.as3D(p.shape[1],p.shape[2],p.shape[3]):p}}),Mi=rt({separableConv2d_:function(e,t,n,r,a,i,o){void 0===i&&(i=[1,1]),void 0===o&&(o="NHWC");var s=tt(e,"x","separableConv2d"),u=tt(t,"depthwiseFilter","separableConv2d"),l=tt(n,"pointwiseFilter","separableConv2d"),c=s,f=!1;if(3===s.rank&&(f=!0,c=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),"NCHW"===o)throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");b(4===c.rank,"Error in separableConv2d: input must be rank 4, but got rank "+c.rank+"."),b(4===u.rank,"Error in separableConv2d: depthwise filter must be rank 4, but got rank "+u.rank+"."),b(4===l.rank,"Error in separableConv2d: pointwise filter must be rank 4, but got rank "+u.rank+"."),b(1===l.shape[0],"Error in separableConv2d: the first dimension of pointwise filter must be 1, but got "+l.shape[0]+"."),b(1===l.shape[1],"Error in separableConv2d: the second dimension of pointwise filter must be 1, but got "+l.shape[1]+".");var p=u.shape[2],h=u.shape[3];b(l.shape[2]===p*h,"Error in separableConv2d: the third dimension of pointwise filter must be "+p*h+", but got "+l.shape[2]+".");var d=Ti(c,u,r,a,o,i),m=Pi(d,l,1,"valid",o);return f?m.as3D(m.shape[1],m.shape[2],m.shape[3]):m}}),Ri=rt({conv2dTranspose_:function(e,t,n,r,a,i){return ki(n,tt(e,"x","conv2dTranspose"),tt(t,"filter","conv2dTranspose"),r,a,i)}}),Di=rt({reverse_:function(e,t){var n=tt(e,"x","reverse");if(0===n.rank)return n.clone();var r=Ve(t,n.shape);return ve.engine.runKernel(function(e){return e.reverse(n,r)},{$x:n},function(e){return{$x:function(){return e.reverse(r)}}}).reshapeAs(n)}}),ji=rt({reverse1d_:function(e){var t=tt(e,"x","reverse");return b(1===t.rank,"Error in reverse1D: x must be rank 1 but got\n rank "+t.rank+"."),Di(t,0)}}),Li=rt({reverse2d_:function(e,t){var n=tt(e,"x","reverse");return b(2===n.rank,"Error in reverse2D: x must be rank 2 but got\n rank "+n.rank+"."),Di(n,t)}}),Bi=rt({reverse3d_:function(e,t){var n=tt(e,"x","reverse");return b(3===n.rank,"Error in reverse3D: x must be rank 3 but got\n rank "+n.rank+"."),Di(n,t)}}),zi=rt({reverse4d_:function(e,t){var n=tt(e,"x","reverse");return b(4===n.rank,"Error in reverse4D: x must be rank 4 but got\n rank "+n.rank+"."),Di(n,t)}});function Fi(e,t,n,r,a,i){var o=tt(e,"x","maxPool"),s=o,u=!1;3===o.rank&&(u=!0,s=o.as4D(1,o.shape[0],o.shape[1],o.shape[2])),null==r&&(r=[1,1]),b(4===s.rank,"Error in maxPool: input must be rank 4 but got rank "+s.rank+"."),b(Ei(n,r),"Error in maxPool: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+r+"'"),null!=i&&b(S(a),"Error in maxPool: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+a+".");var l=yi(s.shape,t,n,r,a,i),c=ve.engine.runKernel(function(e,t){return t(e.maxPool(s,l))},{x:s},function(e,i){var o=i[0];return{x:function(){return function(e,t,n,r,a,i,o,s){var u=tt(e,"dy","maxPoolBackprop"),l=tt(t,"input","maxPoolBackprop"),c=tt(n,"output","maxPoolBackprop");b(l.rank===u.rank,"Rank of input ("+l.rank+") does not match rank of dy ("+u.rank+")"),null==i&&(i=[1,1]),b(Ei(a,i),"Error in maxPoolBackProp: Either strides or dilations must be 1. Got strides "+a+" and dilations '"+i+"'"),b(4===u.rank,"Error in maxPoolBackprop: dy must be rank 4 but got rank "+u.rank+"."),b(4===l.rank,"Error in maxPoolBackprop: input must be rank 4 but got rank "+l.rank+".");var f=yi(l.shape,r,a,i,o,s);return ve.engine.runKernel(function(e){return e.maxPoolBackprop(u,l,c,f)},{$dy:u,$input:l})}(e,s,o,t,n,r,a)}}});return u?c.as3D(c.shape[1],c.shape[2],c.shape[3]):c}function Vi(e,t,n,r,a,i){var o=tt(e,"x","avgPool");b("float32"===o.dtype,"The input dtype to avgPool must be float32"),null==r&&(r=[1,1]),b(Ei(n,r),"Error in avgPool: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+r+"'");var s=o,u=!1;3===o.rank&&(u=!0,s=o.as4D(1,o.shape[0],o.shape[1],o.shape[2])),b(4===s.rank,"Error in avgPool: x must be rank 4 but got rank "+s.rank+"."),null!=i&&b(S(a),"Error in avgPool: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+a+".");var l=yi(s.shape,t,n,r,a),c=ve.engine.runKernel(function(e){return e.avgPool(s,l)},{x:s},function(e){return{x:function(){return function(e,t,n,r,a,i){var o=tt(e,"dy","avgPoolBackprop"),s=tt(t,"input","avgPoolBackprop");b(s.rank===o.rank,"Rank of input ("+s.rank+") does not match rank of dy ("+o.rank+")"),null==a&&(a=[1,1]),b(Ei(r,a),"Error in avgPoolBackprop: Either strides or dilations must be 1. Got strides "+r+" and dilations '"+a+"'");var u=s,l=o,c=!1;3===s.rank&&(c=!0,u=s.as4D(1,s.shape[0],s.shape[1],s.shape[2]),l=o.as4D(1,o.shape[0],o.shape[1],o.shape[2])),b(4===l.rank,"Error in avgPoolBackprop: dy must be rank 4 but got rank "+l.rank+"."),b(4===u.rank,"Error in avgPoolBackprop: input must be rank 4 but got rank "+u.rank+".");var f=yi(u.shape,n,r,a,i),p=ve.engine.runKernel(function(e){return e.avgPoolBackprop(l,u,f)},{dy4D:l,input4D:u});return c?p.as3D(p.shape[1],p.shape[2],p.shape[3]):p}(e,s,t,n,r,a)}}});return c=c.cast(o.dtype),u?c.as3D(c.shape[1],c.shape[2],c.shape[3]):c}var Ui=rt({maxPool_:function(e,t,n,r,a){return Fi(e,t,n,1,r,a)}}),Wi=rt({avgPool_:function(e,t,n,r,a){return Vi(e,t,n,1,r,a)}}),qi=rt({pool_:function(e,t,n,r,a,i){null==a&&(a=[1,1]),null==i&&(i=1),0===r&&(r="valid");var o=tt(e,"x","maxPool"),s=o,u=!1;3===o.rank&&(u=!0,s=o.as4D(1,o.shape[0],o.shape[1],o.shape[2])),b(Ei(i,a),"Error in pool: Either strides or dilations must be 1. Got strides "+i+" and dilations '"+a+"'");var l,c=yi(s.shape,t,i,a,r),f=[c.dilationHeight,c.dilationWidth];l="same"===r?function(e,t){var n=e.map(function(e,n){return e+(e-1)*(t[n]-1)}).map(function(e){return e-1}),r=n.map(function(e){return Math.floor(e/2)}),a=n.map(function(e,t){return e-r[t]});return n.map(function(e,t){return[r[t],a[t]]})}([c.filterHeight,c.filterWidth],f):[[0,0],[0,0]];var p=1===f[0]&&1===f[1],h=function(e,t,n){var r=n.map(function(e){return e[0]}),a=n.map(function(e){return e[1]}),i=e.concat(r,a),o=t.map(function(e,t){return(e-i[t]%e)%e}),s=a.map(function(e,t){return e+o[t]});return[t.map(function(e,t){return[r[t],s[t]]}),t.map(function(e,t){return[0,o[t]]})]}([c.inHeight,c.inWidth],f,l),d=h[0],m=h[1],g=p?r:"valid",y=p?s:Ea(s,f,d),v=("avg"===n?function(){return Vi(y,t,i,1,g)}:function(){return Fi(y,t,i,1,g)})(),w=p?v:aa(v,f,m);return u?w.as3D(w.shape[1],w.shape[2],w.shape[3]):w}}),$i=rt({slice_:function(e,t,n){var r,a,i=tt(e,"x","slice");if(0===i.rank)throw new Error("Slicing scalar is not possible");r="number"==typeof t?[t].concat(new Array(i.rank-1).fill(0)):t.length=0?e:(b(-1===e,"Bad value in size"),i.shape[t]-r[t])}),function(e,t,n){b(e.rank===t.length,"Error in slice"+e.rank+"D: Length of begin "+t+" must match the rank of the array ("+e.rank+")."),b(e.rank===n.length,"Error in slice"+e.rank+"D: Length of size "+n+" must match the rank of the array ("+e.rank+").");for(var r=0;r0&&(t=t.sum(r)),t.reshape(n.shape)},$b:function(){var t=e,n=Gt(r.shape,a);return n.length>0&&(t=t.sum(n)),t.reshape(r.shape)}}})}}),_o=rt({addN_:function(e){b(Array.isArray(e),function(){return"The argument passed to tf.addN() must be a list of tensors"}),b(e.length>=1,function(){return"Must pass at least one tensor to tf.addN(), but got "+e.length});var t=e.map(function(e,t){return tt(e,"tensors"+t,"addN")}),n=t[0];t.forEach(function(e){if(e.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(function(e){if(!N(e.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});var r=t;return ve.engine.runKernel(function(e){return e.addN(t)},r,function(e){var n={};return t.forEach(function(t,r){n[r]=function(){return e.clone()}}),n})}}),Eo=rt({addStrict_:function(e,t){return w(e.shape,t.shape,"Error in addStrict: "),e.add(t)}}),No=rt({atan2_:function(e,t){var n=tt(e,"a","atan2"),r=tt(t,"b","atan2");oe(n,r);var a=Ht(n.shape,r.shape);return ve.engine.runKernel(function(e){return e.atan2(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=xo(n.square(),r.square()),i=e.mul(r.div(t)),o=Gt(n.shape,a);return o.length>0&&(i=i.sum(o)),i.reshape(n.shape)},$b:function(){var t=xo(n.square(),r.square()),i=Za(e.mul(n.div(t))),o=Gt(r.shape,a);return o.length>0&&(i=i.sum(o)),i.reshape(r.shape)}}})}}),So=rt({div_:function(e,t){var n,r=tt(e,"a","div"),a=tt(t,"b","div");if(oe(r,a),"int32"===r.dtype&&"int32"===a.dtype)return ko(r,a);n=function(e){return e.realDivide(r,a)};var i=Ht(r.shape,a.shape);return ve.engine.runKernel(n,{$a:r,$b:a},function(e){return{$a:function(){var t=e.div(a.toFloat()),n=Gt(r.shape,i);return n.length>0?t.sum(n).reshape(r.shape):t},$b:function(){var t=e.mul(r.toFloat()),n=Gt(a.shape,i);n.length>0&&(t=t.sum(n).reshape(a.shape));var o=a.square();return t.div(o.toFloat()).neg()}}})}}),Oo=rt({divStrict_:function(e,t){return w(e.shape,t.shape,"Error in divideStrict: "),e.div(t)}}),ko=rt({floorDiv_:function(e,t){var n=tt(e,"a","floorDiv"),r=tt(t,"b","floorDiv");oe(n,r);var a=Ht(n.shape,r.shape);return ve.engine.runKernel(function(e){return e.floorDiv(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=e.div(r.toFloat()),i=Gt(n.shape,a);return i.length>0?t.sum(i).reshape(n.shape):t},$b:function(){var t=e.mul(n.toFloat()),i=Gt(r.shape,a);i.length>0&&(t=t.sum(i).reshape(r.shape));var o=r.square();return t.div(o.toFloat()).neg()}}})}}),Io=rt({maximum_:function(e,t){var n=tt(e,"a","maximum"),r=tt(t,"b","maximum");return oe(n,r),"bool"===n.dtype&&(n=n.toInt()),"bool"===r.dtype&&(r=r.toInt()),Ht(n.shape,r.shape),ve.engine.runKernel(function(e){return e.maximum(n,r)},{$a:n,$b:r},function(e){return{$a:function(){return e.mul(n.greaterEqual(r).toFloat())},$b:function(){return e.mul(n.less(r).toFloat())}}})}}),Co=rt({maximumStrict_:function(e,t){return w(e.shape,t.shape,"Error in maximumStrict: "),e.maximum(t)}}),Po=rt({minimum_:function(e,t){var n=tt(e,"a","minimum"),r=tt(t,"b","minimum");return oe(n,r),"bool"===n.dtype&&(n=n.toInt()),"bool"===r.dtype&&(r=r.toInt()),Ht(n.shape,r.shape),ve.engine.runKernel(function(e){return e.minimum(n,r)},{$a:n,$b:r},function(e){return{$a:function(){return e.mul(n.lessEqual(r).toFloat())},$b:function(){return e.mul(n.greater(r).toFloat())}}})}}),Ao=rt({minimumStrict_:function(e,t){return w(e.shape,t.shape,"Error in minimumStrict: "),e.minimum(t)}}),To=rt({mod_:function(e,t){var n=tt(e,"a","mod"),r=tt(t,"b","mod");oe(n,r);var a=Ht(n.shape,r.shape);return ve.engine.runKernel(function(e){return e.mod(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=Gt(n.shape,a);return t.length>0?e.sum(t).reshape(n.shape):e},$b:function(){var t=e.mul(n.div(r).floor().neg()),i=Gt(r.shape,a);return i.length>0?t.sum(i).reshape(r.shape):t}}})}}),Mo=rt({modStrict_:function(e,t){return w(e.shape,t.shape,"Error in modStrict: "),e.mod(t)}}),Ro=rt({mul_:function(e,t){var n=tt(e,"a","mul"),r=tt(t,"b","mul");oe(n,r);var a=Ht(n.shape,r.shape);return ve.engine.runKernel(function(e){return e.multiply(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=e.mul(r.toFloat()),i=Gt(n.shape,a);return i.length>0?t.sum(i).reshape(n.shape):t},$b:function(){var t=e.mul(n.toFloat()),i=Gt(r.shape,a);return i.length>0?t.sum(i).reshape(r.shape):t}}})}}),Do=rt({mulStrict_:function(e,t){return w(e.shape,t.shape,"Error in multiplyStrict: "),e.mul(t)}}),jo=rt({pow_:function(e,t){var n=tt(e,"base","pow"),r=tt(t,"exp","pow"),a=Ht(n.shape,r.shape);return e=n.cast(At(n.dtype,r.dtype)),t=r.cast(At(n.dtype,r.dtype)),ve.engine.runKernel(function(e,t){return t(e.pow(n,r))},{$base:n,$exp:r},function(e,t){var i=t[0];return{$base:function(){var t=r.toFloat(),i=e.mul(t.mul(n.pow(t.sub(ct(1))))),o=Gt(n.shape,a);return o.length>0&&(i=i.sum(o)),i.reshape(n.shape)},$exp:function(){var t=e.mul(i.mul(n.log()).toFloat()),o=Gt(r.shape,a);return o.length>0&&(t=t.sum(o)),t.reshape(r.shape)}}})}}),Lo=rt({powStrict_:function(e,t){return w(e.shape,t.shape,"Error in powStrict: "),e.pow(t)}}),Bo=rt({squaredDifference_:function(e,t){var n=tt(e,"a","squaredDifference"),r=tt(t,"b","squaredDifference");return oe(n,r),Ht(n.shape,r.shape),ve.engine.runKernel(function(e){return e.squaredDifference(n,r)},{$a:n,$b:r},function(e){var t=ct(2);return{$a:function(){return e.mul(n.sub(r).mul(t))},$b:function(){return e.mul(r.sub(n).mul(t))}}})}}),zo=rt({squaredDifferenceStrict_:function(e,t){return w(e.shape,t.shape,"Error in squaredDifferenceStrict: "),e.squaredDifference(t)}}),Fo=rt({sub_:function(e,t){var n=tt(e,"a","sub"),r=tt(t,"b","sub");oe(n,r);var a=Ht(n.shape,r.shape);return ve.engine.runKernel(function(e){return e.subtract(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=e,r=Gt(n.shape,a);return r.length>0&&(t=t.sum(r)),t.reshape(n.shape)},$b:function(){var t=e,n=Gt(r.shape,a);return n.length>0&&(t=t.sum(n)),t.neg().reshape(r.shape)}}})}}),Vo=rt({subStrict_:function(e,t){return w(e.shape,t.shape,"Error in subStrict: "),e.sub(t)}}),Uo=rt({logicalAnd_:function(e,t){var n=tt(e,"a","logicalAnd","bool"),r=tt(t,"b","logicalAnd","bool");return b("bool"===n.dtype&&"bool"===r.dtype,"Error Array must be of type bool."),Ht(n.shape,r.shape),ve.engine.runKernel(function(e){return e.logicalAnd(n,r)},{$a:n,$b:r})}}),Wo=rt({logicalNot_:function(e){var t=tt(e,"x","logicalNot","bool");return b("bool"===t.dtype,"Error Array must be of type bool."),ve.engine.runKernel(function(e){return e.logicalNot(t)},{$x:t})}}),qo=rt({logicalOr_:function(e,t){var n=tt(e,"a","logicalOr","bool"),r=tt(t,"b","logicalOr","bool");return b("bool"===n.dtype&&"bool"===r.dtype,"Error Array must be of type bool."),Ht(n.shape,r.shape),ve.engine.runKernel(function(e){return e.logicalOr(n,r)},{$a:n,$b:r})}}),$o=rt({logicalXor_:function(e,t){var n=tt(e,"a","logicalXor","bool"),r=tt(t,"b","logicalXor","bool");return b("bool"===n.dtype&&"bool"===r.dtype,"Error Array must be of type bool."),Ht(n.shape,r.shape),qo(e,t).logicalAnd(Uo(e,t).logicalNot())}}),Go=rt({where_:function(e,t,n){var r=tt(t,"a","where"),a=tt(n,"b","where"),i=tt(e,"condition","where","bool");return b("bool"===i.dtype,"Error Condition must be of type bool."),w(r.shape,a.shape,"Error in where: "),1===i.rank?b(i.shape[0]===r.shape[0],"The first dimension of `a` must match the size of `condition`."):w(i.shape,a.shape,"Error in where: "),ve.engine.runKernel(function(e){return e.select(i,r,a)},{$condition:i,$a:r,$b:a},function(e){return{$condition:function(){return Ct(i)},$a:function(){return e.mul(i.cast(r.dtype))},$b:function(){return e.mul(i.logicalNot().cast(a.dtype))}}})}}),Ho=function(e){return l(this,void 0,void 0,function(){var t,n,r;return c(this,function(a){switch(a.label){case 0:return b("bool"===(t=tt(e,"condition","where","bool")).dtype,"Condition must be of type bool."),[4,t.data()];case 1:return n=a.sent(),r=Pa(t.shape,n),e!==t&&t.dispose(),[2,r]}})})},Ko=rt({elu_:function(e){var t=tt(e,"x","elu");return ve.engine.runKernel(function(e,n){return n(e.elu(t))},{$x:t},function(e,t){var n=t[0];return{$x:function(){return ve.engine.runKernel(function(t){return t.eluDer(e,n)},{dy:e,y:n})}}})}}),Xo=rt({leakyRelu_:function(e,t){void 0===t&&(t=.2);var n=tt(e,"x","leakyRelu");return Io(ct(t).mul(n),n)}}),Yo=rt({prelu_:function(e,t){var n=tt(e,"x","prelu"),r=tt(t,"alpha","prelu"),a=ct(0);return Io(a,n).add(r.mul(Po(a,n)))}}),Jo=rt({relu_:function(e){var t=tt(e,"x","relu");return"bool"===t.dtype?t.toInt():ve.engine.runKernel(function(e){return e.relu(t)},{$x:t},function(e){var n=t.step();return{$x:function(){return e.mulStrict(n.toFloat())}}})}}),Zo=rt({selu_:function(e){var t=tt(e,"x","selu");return ve.engine.runKernel(function(e){return e.selu(t)},{$x:t},function(e){return{$x:function(){var n=t.greater(ct(0)),r=ct(Rr),a=ct(Dr),i=e.mul(a),o=e.mul(r).mul(t.toFloat().exp());return Go(n,i,o)}}})}}),Qo=rt({transpose_:function(e,t){var n=tt(e,"x","transpose");return null==t&&(t=n.shape.map(function(e,t){return t}).reverse()),b(n.rank===t.length,"Error in transpose: rank of input "+n.rank+" must match length of perm "+t+"."),t.forEach(function(e){b(e>=0&&ea)throw new Error("'k' passed to topk() must be <= the last dimension ("+a+") but got "+t);var i=ve.engine.runKernel(function(e){return e.topk(r,t,n)},{$x:r});return{values:i[0],indices:i[1]}}}),ps=rt({scatterND_:function(e,t,n){var r=tt(e,"indices","scatterND","int32"),a=tt(t,"updates","scatterND");return function(e,t,n){if(t.rank<1)throw new Error("tf.scatterND() expects the indices to be rank 1 or higher, but the rank was "+t.rank+".");if(e.rank<1)throw new Error("tf.scatterND() expects the updates to be rank 1 or higher, but the rank was "+e.rank+".");if("int32"!==t.dtype)throw new Error("The dtype of 'indices' should be int32, but got dtype: "+t.dtype);if(n.length<1)throw new Error("Output rank must be greater or equal to 1, but got shape: "+n);if(0===n.length){if(0===t.size)throw new Error("Indices specified for empty output. indices shape: "+t.shape);if(0===e.size)throw new Error("Updates specified for empty output. updates shape: "+e.shape)}!function(e,t,n){var r=t.rank>1?t.shape[t.rank-1]:1,a=t.rank>1?t.rank-1:1,i="Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: "+n.shape+", indices.shape: "+t.shape+", shape: "+e+", sliceDim: "+r+", and batchDim: "+a+".";if(n.rank2)throw new Error("sparseIndices should be a scalar, vector, or matrix, but got shape "+e.shape+".");var a=e.rank>0?e.shape[0]:1,i=e.rank>1?e.shape[1]:1;if(n.length!==i)throw new Error("outputShape has incorrect number of elements:, "+n.length+", should be: "+i+".");var o=t.size;if(0!==t.rank&&(1!==t.rank||o!==a))throw new Error("sparseValues has incorrect shape "+t.shape+", should be [] or ["+a+"]");if(t.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}(a,i,n,o),ve.engine.runKernel(function(e){return e.sparseToDense(a,i,n,o)},{$sparseIndices:a,$sparseValues:i,$defaultValue:o})}}),vs=rt({gatherND_:function(e,t){var n=tt(t,"indices","gatherND","int32"),r=tt(e,"x","gatherND");return ve.engine.runKernel(function(e){return e.gatherND(r,n)},{$x:r,$indices:n})}});!function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"}(as||(as={}));var bs=rt({absoluteDifference_:function(e,t,n,r){void 0===r&&(r=as.SUM_BY_NONZERO_WEIGHTS);var a=tt(e,"labels","absoluteDifference"),i=tt(t,"predictions","absoluteDifference"),o=null;null!=n&&(o=tt(n,"weights","absoluteDifference")),w(a.shape,i.shape,"Error in absoluteDifference: ");var s=a.sub(i).abs();return ws(s,o,r)}}),ws=rt({computeWeightedLoss_:function(e,t,n){void 0===n&&(n=as.SUM_BY_NONZERO_WEIGHTS);var r=tt(e,"losses","computeWeightedLoss"),a=null;null!=t&&(a=tt(t,"weights","computeWeightedLoss"));var i=null==a?r:r.mul(a);if(n===as.NONE)return i;if(n===as.SUM)return i.sum();if(n===as.MEAN){if(null==a)return i.mean();var o=E(r.shape)/E(a.shape),s=i.sum().div(a.sum());return o>1?s.div(ct(o)):s}if(n===as.SUM_BY_NONZERO_WEIGHTS){if(null==a)return i.sum().div(ct(r.size));var u=a.mul(yt(r.shape)).notEqual(ct(0)).sum().toFloat();return i.sum().div(u)}throw Error("Unknown reduction: "+n)}}),xs=rt({cosineDistance_:function(e,t,n,r,a){void 0===a&&(a=as.SUM_BY_NONZERO_WEIGHTS);var i=tt(e,"labels","cosineDistance"),o=tt(t,"predictions","cosineDistance"),s=null;null!=r&&(s=tt(r,"weights","cosineDistance")),w(i.shape,o.shape,"Error in cosineDistance: ");var u=ct(1).sub(i.mul(o).sum(n,!0));return ws(u,s,a)}}),_s=rt({hingeLoss_:function(e,t,n,r){void 0===r&&(r=as.SUM_BY_NONZERO_WEIGHTS);var a=tt(e,"labels","hingeLoss"),i=tt(t,"predictions","hingeLoss"),o=null;null!=n&&(o=tt(n,"weights","hingeLoss")),w(a.shape,i.shape,"Error in hingeLoss: ");var s=ct(1);a=ct(2).mul(a).sub(s);var u=s.sub(a.mul(i)).relu();return ws(u,o,r)}}),Es=rt({huberLoss_:function(e,t,n,r,a){void 0===r&&(r=1),void 0===a&&(a=as.SUM_BY_NONZERO_WEIGHTS);var i=tt(e,"labels","huberLoss"),o=tt(t,"predictions","huberLoss"),s=null;null!=n&&(s=tt(n,"weights","huberLoss")),w(i.shape,o.shape,"Error in huberLoss: ");var u=ct(r),l=o.sub(i).abs(),c=Po(l,u),f=l.sub(c),p=ct(.5).mul(c.square()).add(u.mul(f));return ws(p,s,a)}}),Ns=rt({logLoss_:function(e,t,n,r,a){void 0===r&&(r=1e-7),void 0===a&&(a=as.SUM_BY_NONZERO_WEIGHTS);var i=tt(e,"labels","logLoss"),o=tt(t,"predictions","logLoss"),s=null;null!=n&&(s=tt(n,"weights","logLoss")),w(i.shape,o.shape,"Error in logLoss: ");var u=ct(1),l=ct(r),c=i.mul(o.add(l).log()).neg().sub(u.sub(i).mul(u.sub(o).add(l).log()));return ws(c,s,a)}}),Ss=rt({meanSquaredError_:function(e,t,n,r){void 0===r&&(r=as.SUM_BY_NONZERO_WEIGHTS);var a=tt(e,"labels","meanSquaredError"),i=tt(t,"predictions","meanSquaredError"),o=null;null!=n&&(o=tt(n,"weights","meanSquaredError")),w(a.shape,i.shape,"Error in meanSquaredError: ");var s=a.squaredDifference(i);return ws(s,o,r)}}),Os=rt({sigmoidCrossEntropy_:function(e,t,n,r,a){void 0===r&&(r=0),void 0===a&&(a=as.SUM_BY_NONZERO_WEIGHTS);var i=tt(e,"multiClassLabels","sigmoidCrossEntropy"),o=tt(t,"logits","sigmoidCrossEntropy"),s=null;if(null!=n&&(s=tt(n,"weights","sigmoidCrossEntropy")),w(i.shape,o.shape,"Error in sigmoidCrossEntropy: "),r>0){var u=ct(r),l=ct(1),c=ct(.5);i=i.mul(l.sub(u)).add(c.mul(u))}var f=function(e,t){var n=tt(e,"labels","sigmoidCrossEntropyWithLogits"),r=tt(t,"logits","sigmoidCrossEntropyWithLogits");w(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");var a=r.relu(),i=r.mul(n),o=r.abs().neg().exp().log1p();return a.sub(i).add(o)}(i,o);return ws(f,s,a)}}),ks=rt({softmaxCrossEntropy_:function(e,t,n,r,a){void 0===r&&(r=0),void 0===a&&(a=as.SUM_BY_NONZERO_WEIGHTS);var i=tt(e,"onehotLabels","softmaxCrossEntropy"),o=tt(t,"logits","softmaxCrossEntropy"),s=null;if(null!=n&&(s=tt(n,"weights","softmaxCrossEntropy")),w(i.shape,o.shape,"Error in softmaxCrossEntropy: "),r>0){var u=ct(r),l=ct(1),c=ct(i.shape[1]);i=i.mul(l.sub(u)).add(u.div(c))}var f=function(e,t,n){if(void 0===n&&(n=-1),-1===n&&(n=t.rank-1),n!==t.rank-1)throw Error("Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank "+t.rank+" and dim was "+n);return Se(function(e,t){var r=t.logSumExp([n],!0),a=t.toFloat().sub(r);return{value:a.mul(e).neg().sum([n]),gradFunc:function(t){var r=Fe(t.shape,[n]);return[t.reshape(r).mul(e.toFloat().sub(a.exp())),t.reshape(r).mul(a.exp().sub(e.toFloat()))]}}})(e,t)}(i,o);return ws(f,s,a)}}),Is=Object.freeze({get Reduction(){return as},absoluteDifference:bs,computeWeightedLoss:ws,cosineDistance:xs,hingeLoss:_s,huberLoss:Es,logLoss:Ns,meanSquaredError:Ss,sigmoidCrossEntropy:Os,softmaxCrossEntropy:ks});function Cs(e,t){return void 0===t&&(t=!1),ve.engine.tidy(function(){if(2!==e.shape.length)throw new Error("qr2d() requires a 2D Tensor, but got a "+e.shape.length+"D Tensor.");for(var n=e.shape[0],r=e.shape[1],a=ca(n),i=e.clone(),o=pt([[1]],[1,1]),s=o.clone(),u=n>=r?r:n,l=function(e){var t,u=i,l=s,c=a;t=ve.engine.tidy(function(){var t=i.slice([e,e],[n-e,1]),u=t.norm(),l=i.slice([e,e],[1,1]),c=l.sign().neg(),f=l.sub(c.mul(u)),p=t.div(f);s=1===p.shape[0]?o.clone():o.concat(p.slice([1,0],[p.shape[0]-1,p.shape[1]]),0);var h=c.matMul(f).div(u).neg(),d=i.slice([e,0],[n-e,r]),m=h.mul(s);i=0===e?d.sub(m.matMul(s.transpose().matMul(d))):i.slice([0,0],[e,r]).concat(d.sub(m.matMul(s.transpose().matMul(d))),0);var g=a.slice([0,e],[n,a.shape[1]-e]);return a=0===e?g.sub(g.matMul(s).matMul(m.transpose())):a.slice([0,0],[n,e]).concat(g.sub(g.matMul(s).matMul(m.transpose())),1),[s,i,a]}),s=t[0],i=t[1],a=t[2],Ce([u,l,c])},c=0;cr&&(a=a.slice([0,0],[n,r]),i=i.slice([0,0],[r,r])),[a,i]})}var Ps=rt({gramSchmidt_:function(e){var t;if(Array.isArray(e)){t=!1,b(null!=e&&e.length>0,"Gram-Schmidt process: input must not be null, undefined, or empty");for(var n=e[0].shape[0],r=1;r0)for(var n=0;n= 2, but got rank "+e.rank);if(2===e.rank)return Cs(e,t);var n=e.shape.slice(0,e.shape.length-2).reduce(function(e,t){return e*t}),r=[],a=[];return Ia(e.reshape([n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0).forEach(function(e){var n=Cs(e,t),i=n[0],o=n[1];r.push(i),a.push(o)}),[Sa(r,0).reshape(e.shape),Sa(a,0).reshape(e.shape)]}}),Ts=Object.freeze({gramSchmidt:Ps,qr:As});function Ms(e,t,n,r,a){null==r&&(r=.5),null==a&&(a=Number.NEGATIVE_INFINITY);var i=e.shape[0];return n=Math.min(n,i),b(0<=r&&r<=1,"iouThreshold must be in [0, 1], but was '"+r+"'"),b(2===e.rank,"boxes must be a 2D tensor, but was of rank '"+e.rank+"'"),b(4===e.shape[1],"boxes must have 4 columns, but 2nd dimension was "+e.shape[1]),b(1===t.rank,"scores must be a 1D tensor"),b(t.shape[0]===i,"scores has incompatible shape with boxes. Expected "+i+", but was "+t.shape[0]),{maxOutputSize:n,iouThreshold:r,scoreThreshold:a}}var Rs=rt({resizeBilinear_:function(e,t,n){void 0===n&&(n=!1);var r=tt(e,"images","resizeBilinear");b(3===r.rank||4===r.rank,"Error in resizeBilinear: x must be rank 3 or 4, but got rank "+r.rank+"."),b(2===t.length,"Error in resizeBilinear: new shape must 2D, but got shape "+t+".");var a=r,i=!1;3===r.rank&&(i=!0,a=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var o=t[0],s=t[1],u=ve.engine.runKernel(function(e,t){return e.resizeBilinear(a,o,s,n)},{batchImages:a},function(e,t){return{batchImages:function(){return ve.engine.runKernel(function(t){return t.resizeBilinearBackprop(e,a,n)},{})}}});return i?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),Ds=rt({resizeNearestNeighbor_:function(e,t,n){void 0===n&&(n=!1);var r=tt(e,"images","resizeNearestNeighbor");b(3===r.rank||4===r.rank,"Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank "+r.rank+"."),b(2===t.length,"Error in resizeNearestNeighbor: new shape must 2D, but got shape "+t+"."),b("float32"===r.dtype||"int32"===r.dtype,"`images` must have `int32` or `float32` as dtype");var a=r,i=!1;3===r.rank&&(i=!0,a=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var o=t[0],s=t[1],u=ve.engine.runKernel(function(e,t){return e.resizeNearestNeighbor(a,o,s,n)},{batchImages:a},function(e,t){return{batchImages:function(){return ve.engine.runKernel(function(t){return t.resizeNearestNeighborBackprop(e,a,n)},{})}}});return i?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),js=rt({nonMaxSuppression_:function(e,t,n,r,a){void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY);var i=tt(e,"boxes","nonMaxSuppression"),o=tt(t,"scores","nonMaxSuppression"),s=Ms(i,o,n,r,a);return n=s.maxOutputSize,r=s.iouThreshold,a=s.scoreThreshold,ve.engine.runKernel(function(e){return e.nonMaxSuppression(i,o,n,r,a)},{$boxes:i})}}),Ls=Object.freeze({resizeBilinear:Rs,resizeNearestNeighbor:Ds,nonMaxSuppression:js,nonMaxSuppressionAsync:function(e,t,n,r,a){return void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY),l(this,void 0,void 0,function(){var i,o,s,u,l,f;return c(this,function(c){switch(c.label){case 0:return i=tt(e,"boxes","nonMaxSuppressionAsync"),o=tt(t,"scores","nonMaxSuppressionAsync"),s=Ms(i,o,n,r,a),n=s.maxOutputSize,r=s.iouThreshold,a=s.scoreThreshold,[4,i.data()];case 1:return u=c.sent(),[4,o.data()];case 2:return l=c.sent(),f=Vt(u,l,n,r,a),i!==e&&i.dispose(),o!==t&&o.dispose(),[2,f]}})})},cropAndResize:function(e,t,n,r,a,i){var o=tt(e,"image","cropAndResize","float32"),s=tt(t,"boxes","cropAndResize","float32"),u=tt(n,"boxInd","cropAndResize","int32");a=a||"bilinear",i=i||0;var l=s.shape[0];return b(4===o.rank,"Error in cropAndResize: image must be rank 4,but got rank "+o.rank+"."),b(2===s.rank&&4===s.shape[1],"Error in cropAndResize: boxes must be have size ["+l+",4] but had shape "+s.shape+"."),b(1===u.rank&&u.shape[0]===l,"Error in cropAndResize: boxInd must be have size ["+l+"] but had shape "+s.shape+"."),b("int32"===u.dtype,"Error in cropAndResize: boxInd must be of dtype int32, but got dtype "+u.dtype+"."),b(2===r.length,"Error in cropAndResize: cropSize must be of length 2, but got length "+r.length+"."),b(r[0]>=1&&r[1]>=1,"cropSize must be atleast [1,1], but was "+r),b("bilinear"===a||"nearest"===a,"method must be bilinear or nearest, but was "+a),ve.engine.runKernel(function(e,t){return e.cropAndResize(o,s,u,r,a,i)},{$image:o,$boxes:s})}}),Bs=Object.freeze({image:Ls,linalg:Ts,losses:Is,spectral:gs,op:rt,batchNormalization2d:hi,batchNormalization3d:di,batchNormalization4d:mi,batchNormalization:gi,complex:ot,real:st,imag:ut,concat:zr,concat1d:Fr,concat2d:Vr,concat3d:Ur,concat4d:Wr,split:qr,conv1d:Ci,conv2d:Pi,conv2dDerFilter:Ai,depthwiseConv2d:Ti,separableConv2d:Mi,conv2dTranspose:Ri,matMul:Ni,dot:Si,outerProduct:Oi,reverse:Di,reverse1d:ji,reverse2d:Li,reverse3d:Bi,reverse4d:zi,maxPool:Ui,avgPool:Wi,pool:qi,slice:$i,slice1d:Gi,slice2d:Hi,slice3d:Ki,slice4d:Xi,abs:Ra,acos:Da,acosh:ja,asin:La,asinh:Ba,atan:za,atanh:Fa,ceil:Va,clipByValue:Ua,cos:Wa,cosh:qa,erf:$a,exp:Ga,expm1:Ha,floor:Ka,log:Xa,log1p:Ya,logSigmoid:Ja,neg:Za,reciprocal:Qa,round:ei,rsqrt:ti,sigmoid:ni,sign:ri,sin:ai,sinh:ii,softplus:oi,sqrt:si,square:ui,step:li,tan:ci,tanh:fi,all:Ji,any:Zi,argMax:Qi,argMin:eo,logSumExp:to,max:no,mean:ro,min:ao,moments:io,sum:oo,prod:so,equal:uo,equalStrict:lo,greater:co,greaterEqual:fo,greaterEqualStrict:po,greaterStrict:ho,less:mo,lessEqual:go,lessEqualStrict:yo,lessStrict:vo,notEqual:bo,notEqualStrict:wo,add:xo,addN:_o,addStrict:Eo,atan2:No,div:So,divStrict:Oo,floorDiv:ko,maximum:Io,maximumStrict:Co,minimum:Po,minimumStrict:Ao,mod:To,modStrict:Mo,mul:Ro,mulStrict:Do,pow:jo,powStrict:Lo,squaredDifference:Bo,squaredDifferenceStrict:zo,sub:Fo,subStrict:Vo,elu:Ko,leakyRelu:Xo,prelu:Yo,relu:Jo,selu:Zo,logicalAnd:Uo,logicalNot:Wo,logicalOr:qo,logicalXor:$o,where:Go,whereAsync:Ho,buffer:na,toPixels:ta,print:ra,batchToSpaceND:aa,cast:ia,clone:oa,cumsum:sa,depthToSpace:ua,expandDims:la,eye:ca,fromPixels:fa,multinomial:pa,oneHot:ha,pad:da,pad1d:ma,pad2d:ga,pad3d:ya,pad4d:va,rand:ba,randomNormal:wa,randomUniform:xa,reshape:_a,spaceToBatchND:Ea,squeeze:Na,stack:Sa,tile:Oa,truncatedNormal:ka,unstack:Ia,setdiff1dAsync:Ca,fill:bt,linspace:wt,ones:yt,range:xt,scalar:ct,tensor:lt,tensor1d:ft,tensor2d:pt,tensor3d:ht,tensor4d:dt,tensor5d:mt,tensor6d:gt,zeros:vt,onesLike:It,zerosLike:Ct,transpose:Qo,softmax:at,logSoftmax:it,localResponseNormalization:es,norm:ts,gather:is,unsortedSegmentSum:os,basicLSTMCell:ss,multiRNNCell:us,movingAverage:ls,stridedSlice:cs,topk:fs,scatterND:ps,fft:hs,ifft:ds,rfft:ms,sparseToDense:ys,gatherND:vs}),zs=function(){function e(){this.blockSize=48,this.firstUse=!0,ve.get("IS_BROWSER")&&(this.fromPixels2DContext=document.createElement("canvas").getContext("2d"))}return e.prototype.setDataMover=function(e){this.data=new Mt(e)},e.prototype.register=function(e,t,n){if(this.firstUse&&(this.firstUse=!1,ve.get("IS_NODE")&&Te("\n============================\nHi there πŸ‘‹. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details.\n============================\n")),this.data.has(e))throw new Error("Data buffer is already registered");this.data.set(e,{dtype:n})},e.prototype.write=function(e,t){if(null==t)throw new Error("MathBackendCPU.write(): values can not be null");this.data.get(e).values=t},e.prototype.fromPixels=function(e,t){if(null==e)throw new Error("pixels passed to tf.fromPixels() can not be null");var n,r;if(ve.get("IS_NODE")&&null==e.getContext)throw new Error("When running in node, pixels must be an HTMLCanvasElement like the one returned by the `canvas` npm package");if(null!=e.getContext)n=e.getContext("2d").getImageData(0,0,e.width,e.height).data;else if(e instanceof ImageData)n=e.data;else{if(!(e instanceof HTMLImageElement||e instanceof HTMLVideoElement))throw new Error("pixels passed to tf.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement or ImageData, but was "+e.constructor.name);if(null==this.fromPixels2DContext)throw new Error("Can't read pixels from HTMLImageElement outside the browser.");this.fromPixels2DContext.canvas.width=e.width,this.fromPixels2DContext.canvas.height=e.height,this.fromPixels2DContext.drawImage(e,0,0,e.width,e.height),n=this.fromPixels2DContext.getImageData(0,0,e.width,e.height).data}if(4===t)r=new Int32Array(n);else{var a=e.width*e.height;r=new Int32Array(a*t);for(var i=0;ip&&(p=m,h=d)}u[c]=h}return o},e.prototype.cumsum=function(e,t,n,r){if(this.assertNotComplex(e,"cumsum"),t!==e.rank-1)throw new Error("backend.cumsum in CPU expects an inner-most axis="+(e.rank-1)+" but got axis="+t);for(var a=At(e.dtype,"int32"),i=vt(e.shape,a),o=i.dataSync(),s=e.dataSync(),u=e.shape[e.rank-1],l=r?function(e,t){return e+u-t-1}:function(e,t){return e+t},c=0;ct?1:0})},e.prototype.greaterEqual=function(e,t){return this.assertNotComplex([e,t],"greaterEqual"),this.broadcastedBinaryOp(e,t,"bool",function(e,t){return e>=t?1:0})},e.prototype.logicalNot=function(e){this.assertNotComplex(e,"logicalNot");for(var t=e.dataSync(),n=new Int32Array(t.length),r=0;r1||1===t.rank?1:t.shape[1],c=0;c=0&&t>=0?n:(n+t)%t})},e.prototype.max=function(e,t){this.assertNotComplex(e,"max"),Ue("max",t,e.rank);for(var n=ze(e.shape,t),r=n[0],a=n[1],i=vt(r,e.dtype),o=E(a),s=i.dataSync(),u=e.dataSync(),l=0;lf&&(f=h)}s[l]=f}return i},e.prototype.maximum=function(e,t){return this.assertNotComplex([e,t],"maximum"),this.broadcastedBinaryOp(e,t,e.dtype,function(e,t){return Math.max(e,t)})},e.prototype.all=function(e,t){this.assertNotComplex(e,"all"),Ue("all",t,e.rank);for(var n=ze(e.shape,t),r=n[0],a=n[1],i=vt(r,e.dtype),o=E(a),s=i.dataSync(),u=e.dataSync(),l=0;l0?n[r]=1:n[r]=0;return re.make(e.shape,{values:n})},e.prototype.round=function(e){this.assertNotComplex(e,"round");for(var t=e.dataSync(),n=new Float32Array(t.length),r=0;r.5?n[r]=Math.ceil(t[r]):n[r]=a%2==0?a:a+1}return re.make(e.shape,{values:n})},e.prototype.exp=function(e){this.assertNotComplex(e,"exp");for(var t=e.dataSync(),n=new Float32Array(t.length),r=0;r=0?a:Math.exp(a)-1}return re.make(e.shape,{values:t})},e.prototype.eluDer=function(e,t){this.assertNotComplex([e,t],"eluDer");for(var n=new Float32Array(t.size),r=t.dataSync(),a=e.dataSync(),i=0;i=1?a[i]:a[i]*(o+1)}return re.make(t.shape,{values:n})},e.prototype.selu=function(e){this.assertNotComplex(e,"selu");for(var t=new Float32Array(e.size),n=e.dataSync(),r=0;r=0?1.0507009873554805*a:1.7580993408473768*(Math.exp(a)-1)}return re.make(e.shape,{values:t})},e.prototype.clip=function(e,t,n){this.assertNotComplex(e,"clip");for(var r=new Float32Array(e.size),a=e.dataSync(),i=0;in?n:o-t,s=r[a]0?1:t}return re.make(e.shape,{values:n})},e.prototype.conv2d=function(e,t,n){this.assertNotComplex([e,t],"conv2d");for(var r=n.filterHeight,a=n.filterWidth,i=n.dilationHeight,o=n.dilationWidth,s=n.padInfo.left,u=n.padInfo.top,l=na(n.outShape,e.dtype),c=e.dataSync(),f=t.dataSync(),p=l.values,h=0;h=n.inHeight))for(var x=b*t.strides[0],_=d+w*e.strides[1],E=0;E=n.inWidth))for(var I=x+O*t.strides[1],C=_+k*n.inChannels,P=I,A=0;A=n.inHeight))for(var _=w*t.strides[0],E=m+x*e.strides[1],N=0;N=n.inWidth))for(var C=_+k*t.strides[1],P=E+I*n.inChannels,A=S,T=C,M=0;MA?A=L:"avg"===n&&(T+=L,M++)}if(isNaN(A))break}d[O+k*y+x]="avg"===n?T/M:A}return h.toTensor()},e.prototype.maxPool=function(e,t){return this.pool(e,t,"max")},e.prototype.maxPoolPositions=function(e,t){for(var n=na(t.outShape,"int32"),r=t.strideHeight,a=t.strideWidth,i=t.dilationHeight,o=t.dilationWidth,s=t.effectiveFilterHeight,u=t.effectiveFilterWidth,l=t.padInfo.top,c=t.padInfo.left,f=0;fx&&(x=k,_=N*u+O)}n.set(_,f,h,y,p)}}return n.toTensor()},e.prototype.maxPoolBackprop=function(e,t,n,r){this.assertNotComplex([t,n],"maxPoolBackprop");for(var a=this.maxPoolPositions(t,r),i=r.strideHeight,o=r.strideWidth,s=r.dilationHeight,u=r.dilationWidth,l=r.effectiveFilterHeight,c=r.effectiveFilterWidth,f=c-1-r.padInfo.left,p=l-1-r.padInfo.top,h=na(t.shape,"float32"),d=0;d=r.outHeight||Math.floor(_)!==_))for(var E=0;E=r.outWidth||Math.floor(N)!==N)){var S=l*c-1-a.get(d,_,N,m)===x*c+E?1:0;0!==S&&(w+=e.get(d,_,N,m)*S)}}}h.set(w,d,g,y,m)}return h.toTensor()},e.prototype.avgPoolBackprop=function(e,t,n){this.assertNotComplex([e,t],"avgPoolBackprop");for(var r=n.strideHeight,a=n.strideWidth,i=n.filterHeight,o=n.filterWidth,s=n.dilationHeight,u=n.dilationWidth,l=n.effectiveFilterHeight,c=n.effectiveFilterWidth,f=c-1-n.padInfo.left,p=l-1-n.padInfo.top,h=na(t.shape,"float32"),d=1/(i*o),m=0;m=n.outHeight||Math.floor(E)!==E))for(var N=0;N=n.outWidth||Math.floor(S)!==S||(x+=e.get(m,E,S,g))}}h.set(x*d,m,y,v,g)}return h.toTensor()},e.prototype.cast=function(e,t){return Dt(e,t,this)},e.prototype.reshape=function(e,t){return jt(e,t)},e.prototype.avgPool=function(e,t){return this.assertNotComplex(e,"avgPool"),this.pool(e,t,"avg").toFloat()},e.prototype.resizeBilinear=function(e,t,n,r){this.assertNotComplex(e,"resizeBilinear");for(var a=e.shape,i=a[0],o=a[1],s=a[2],u=a[3],l=e.dataSync(),c=new Float32Array(E([i,t,n,u])),f=[r&&t>1?o-1:o,r&&n>1?s-1:s],p=[r&&t>1?t-1:t,r&&n>1?n-1:n],h=0,d=f[0]/p[0],m=f[1]/p[1],g=0;g1?i-1:i,n&&c>1?o-1:o],h=[n&&l>1?l-1:l,n&&c>1?c-1:c],d=p[0]/h[0],m=p[1]/h[1],g=e.dataSync(),y=0,v=0;v1?o-1:o,r&&n>1?s-1:s],p=[r&&t>1?t-1:t,r&&n>1?n-1:n],h=f[0]/p[0],d=f[1]/p[1],m=0,g=0;g1?i-1:i,n&&c>1?o-1:o],d=[n&&l>1?l-1:l,n&&c>1?c-1:c],m=h[0]/d[0],g=h[1]/d[1],y=1/m,v=1/g,b=2*Math.ceil(y)+2,w=2*Math.ceil(v)+2,x=0;x=l)){var D=_+R*e.strides[1],j=R*m;if(E===Math.min(i-1,n?Math.round(j):Math.floor(j)))for(var L=0;L=c)){var z=D+B*e.strides[2],F=B*g;k===Math.min(o-1,n?Math.round(F):Math.floor(F))&&(T+=p[z+A])}}}}f[I+A]=T}return dt(f,t.shape,t.dtype)},e.prototype.batchNormalization=function(e,t,n,r,a,i){this.assertNotComplex([e,t,n,a,i],"batchNormalization");for(var o=e.dataSync(),s=t.dataSync(),u=n.dataSync(),l=a?a.dataSync():new Float32Array([1]),c=i?i.dataSync():new Float32Array([0]),f=new Float32Array(o.length),p=c.length,h=l.length,d=u.length,m=s.length,g=0,y=0,v=0,b=0,w=0;w=p&&(g=0),y>=m&&(y=0),v>=h&&(v=0),b>=d&&(b=0);return dt(f,e.shape)},e.prototype.localResponseNormalization4D=function(e,t,n,r,a){this.assertNotComplex(e,"localResponseNormalization4D");var i=e.shape[3],o=i-1,s=e.dataSync(),u=E(e.shape),l=new Float32Array(u);function c(e){for(var n=e%i,r=e-n+Math.max(0,n-t),a=e-n+Math.min(n+t,o),u=0;r<=a;r++){var l=s[r];u+=l*l}return u}for(var f=0;f=0&&e.get(i)1,"blockSize should be > 1 for depthToSpace, but was: "+t);for(var r=e.shape[0],a=e.shape[1],i=e.shape[2],o=e.shape[3],s=a*t,u=i*t,l=o/(t*t),c=e.dataSync(),f=new Float32Array(r*s*u*l),p=0,h=0;h=s))for(var k=p>1?(N-_)*(u-1)/(p-1):0,I=h>1?(S-E)*(l-1)/(h-1):0,C=0;C1?_*(u-1)+C*k:.5*(_+N)*(u-1);if(P<0||P>u-1)for(var A=0;A1?E*(l-1)+A*I:.5*(E+S)*(l-1))<0||$>l-1)for(T=0;T1?E*(l-1)+A*I:.5*(E+S)*(l-1))<0||$>l-1)for(T=0;T=e.size/s)throw new Error("Invalid indices: "+h+" does not index into "+e.shape);for(var y=0;y=r/a)throw new Error("Invalid indices: "+m+" does not index into "+n);for(var b=0;b0,"scheme must not be an empty string.");var r=e.getInstance();b(null==r.managers[t],"A model store manager is already registered for scheme '"+t+"'."),r.managers[t]=n},e.getManager=function(e){var t=this.getInstance().managers[e];if(null==t)throw new Error("Cannot find model manager for scheme '"+e+"'");return t},e.getSchemes=function(){return Object.keys(this.getInstance().managers)},e}();function Zs(e){if(-1===e.indexOf(Ys))throw new Error("The url string provided does not contain a scheme. Supported schemes are: "+Js.getSchemes().join(","));return{scheme:e.split(Ys)[0],path:e.split(Ys)[1]}}function Qs(e,t,n){return void 0===n&&(n=!1),l(this,void 0,void 0,function(){var r,a,i,o,s,u,l,f,p;return c(this,function(c){switch(c.label){case 0:return b(e!==t,"Old path and new path are the same: '"+e+"'"),b((r=Xs.getLoadHandlers(e)).length>0,"Copying failed because no load handler is found for source URL "+e+"."),b(r.length<2,"Copying failed because more than one ("+r.length+") load handlers for source URL "+e+"."),a=r[0],b((i=Xs.getSaveHandlers(t)).length>0,"Copying failed because no save handler is found for destination URL "+t+"."),b(i.length<2,"Copying failed because more than one ("+r.length+") save handlers for destination URL "+t+"."),o=i[0],s=Zs(e).scheme,u=Zs(e).path,l=s===Zs(e).scheme,[4,a.load()];case 1:return f=c.sent(),n&&l?[4,Js.getManager(s).removeModel(u)]:[3,3];case 2:c.sent(),c.label=3;case 3:return[4,o.save(f)];case 4:return p=c.sent(),!n||l?[3,6]:[4,Js.getManager(s).removeModel(u)];case 5:c.sent(),c.label=6;case 6:return[2,p.modelArtifactsInfo]}})})}var eu="models_store",tu="model_info_store";function nu(){if(!ve.get("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");var e=window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(null==t)throw new Error("The current browser does not appear to support IndexedDB.");return t}function ru(e){var t=e.result;t.createObjectStore(eu,{keyPath:"modelPath"}),t.createObjectStore(tu,{keyPath:"modelPath"})}var au=function(){function e(e){if(this.indexedDB=nu(),null==e||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}return e.prototype.save=function(e){return l(this,void 0,void 0,function(){return c(this,function(t){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return[2,this.databaseAction(this.modelPath,e)]})})},e.prototype.load=function(){return l(this,void 0,void 0,function(){return c(this,function(e){return[2,this.databaseAction(this.modelPath)]})})},e.prototype.databaseAction=function(e,t){var n=this;return new Promise(function(e,r){var a=n.indexedDB.open("tensorflowjs",1);a.onupgradeneeded=function(){return ru(a)},a.onsuccess=function(){var i=a.result;if(null==t){var o=i.transaction(eu,"readonly"),s=o.objectStore(eu).get(n.modelPath);s.onsuccess=function(){if(null==s.result)return i.close(),r(new Error("Cannot find model with path '"+n.modelPath+"' in IndexedDB."));e(s.result.modelArtifacts)},s.onerror=function(e){return i.close(),r(s.error)},o.oncomplete=function(){return i.close()}}else{var u,l=Ks(t),c=i.transaction(tu,"readwrite"),f=c.objectStore(tu),p=f.put({modelPath:n.modelPath,modelArtifactsInfo:l});p.onsuccess=function(){var a=(u=i.transaction(eu,"readwrite")).objectStore(eu).put({modelPath:n.modelPath,modelArtifacts:t,modelArtifactsInfo:l});a.onsuccess=function(){return e({modelArtifactsInfo:l})},a.onerror=function(e){var t=(f=c.objectStore(tu)).delete(n.modelPath);t.onsuccess=function(){return i.close(),r(a.error)},t.onerror=function(e){return i.close(),r(a.error)}}},p.onerror=function(e){return i.close(),r(p.error)},c.oncomplete=function(){null==u?i.close():u.oncomplete=function(){return i.close()}}}},a.onerror=function(e){return r(a.error)}})},e.URL_SCHEME="indexeddb://",e}(),iu=function(e){return ve.get("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(au.URL_SCHEME)?function(e){return new au(e)}(e.slice(au.URL_SCHEME.length)):null};Xs.registerSaveRouter(iu),Xs.registerLoadRouter(iu);var ou=function(){function e(){this.indexedDB=nu()}return e.prototype.listModels=function(){return l(this,void 0,void 0,function(){var e=this;return c(this,function(t){return[2,new Promise(function(t,n){var r=e.indexedDB.open("tensorflowjs",1);r.onupgradeneeded=function(){return ru(r)},r.onsuccess=function(){var e=r.result,a=e.transaction(tu,"readonly"),i=a.objectStore(tu).getAll();i.onsuccess=function(){for(var e={},n=0,r=i.result;n0,"URL path for browserHTTPRequest must not be null, undefined or empty."),Array.isArray(e)&&b(2===e.length,"URL paths for browserHTTPRequest must have a length of 2, (actual length is "+e.length+")."),this.path=e,null!=t&&null!=t.body)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t||{}}return e.prototype.save=function(e){return l(this,void 0,void 0,function(){var t,n,r,a;return c(this,function(i){switch(i.label){case 0:if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");return(t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit)).body=new FormData,n=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,weightsManifest:n},t.body.append("model.json",new Blob([JSON.stringify(r)],{type:"application/json"}),"model.json"),null!=e.weightData&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:"application/octet-stream"}),"model.weights.bin"),[4,fetch(this.path,t)];case 1:if((a=i.sent()).ok)return[2,{modelArtifactsInfo:Ks(e),responses:[a]}];throw new Error("BrowserHTTPRequest.save() failed due to HTTP response status "+a.status+".")}})})},e.prototype.load=function(){return l(this,void 0,void 0,function(){return c(this,function(e){return[2,Array.isArray(this.path)?this.loadBinaryModel():this.loadJSONModel()]})})},e.prototype.loadBinaryTopology=function(){return l(this,void 0,void 0,function(){var e,t;return c(this,function(n){switch(n.label){case 0:return n.trys.push([0,3,,4]),[4,fetch(this.path[0],this.requestInit)];case 1:if(!(e=n.sent()).ok)throw new Error("BrowserHTTPRequest.load() failed due to HTTP response: "+e.statusText);return[4,e.arrayBuffer()];case 2:return[2,n.sent()];case 3:throw t=n.sent(),new Error(this.path[0]+" not found. "+t);case 4:return[2]}})})},e.prototype.loadBinaryModel=function(){return l(this,void 0,void 0,function(){var e,t,n,r,a,i,o,s;return c(this,function(u){switch(u.label){case 0:return e=this.loadBinaryTopology(),[4,fetch(this.path[1],this.requestInit)];case 1:if(!(t=u.sent()).ok)throw new Error("BrowserHTTPRequest.load() failed due to HTTP response: "+t.statusText);return[4,Promise.all([e,t])];case 2:return n=u.sent(),r=n[0],[4,n[1].json()];case 3:return null==(a=u.sent())?[3,5]:[4,this.loadWeights(a)];case 4:s=u.sent(),i=s[0],o=s[1],u.label=5;case 5:return[2,{modelTopology:r,weightSpecs:i,weightData:o}]}})})},e.prototype.loadJSONModel=function(){return l(this,void 0,void 0,function(){var e,t,n,r,a,i,o,s;return c(this,function(u){switch(u.label){case 0:return[4,fetch(this.path,this.requestInit)];case 1:if(!(e=u.sent()).ok)throw new Error("BrowserHTTPRequest.load() failed due to HTTP response: "+e.statusText);return[4,e.json()];case 2:if(t=u.sent(),n=t.modelTopology,r=t.weightsManifest,null==n&&null==r)throw new Error("The JSON from HTTP path "+this.path+" contains neither model topology or manifest for weights.");return null==r?[3,4]:(o=t.weightsManifest,[4,this.loadWeights(o)]);case 3:s=u.sent(),a=s[0],i=s[1],u.label=4;case 4:return[2,{modelTopology:n,weightSpecs:a,weightData:i}]}})})},e.prototype.loadWeights=function(e){return l(this,void 0,void 0,function(){var t,n,r,a,i,o,s,u,l,f,p,h;return c(this,function(c){switch(c.label){case 0:for(t=Array.isArray(this.path)?this.path[1]:this.path,n=function(e){var t=e.lastIndexOf("/"),n=e.lastIndexOf("?");return[e.substring(0,t)+"/",n>t?e.substring(n):""]}(t),r=n[0],a=n[1],i=this.weightPathPrefix||r,o=[],s=0,u=e;s0&&(e=u({weightSpecs:this.weightSpecs},e)),null!=this.weightData&&this.weightData.byteLength>0&&(e=u({weightData:this.weightData},e)),[2,e]})})},e}(),Cu=function(){function e(e){this.saveHandler=e}return e.prototype.save=function(e){return l(this,void 0,void 0,function(){return c(this,function(t){return[2,this.saveHandler(e)]})})},e}(),Pu=Xs.registerSaveRouter,Au=Xs.registerLoadRouter,Tu=Xs.getSaveHandlers,Mu=Xs.getLoadHandlers,Ru=Object.freeze({browserFiles:function(e){return new _u(e)},browserHTTPRequest:ku,concatenateArrayBuffers:Gs,decodeWeights:Ws,encodeWeights:function(e){return l(this,void 0,void 0,function(){var t,n,r,a;return c(this,function(i){switch(i.label){case 0:for(r in t=[],n=[],e){if("float32"!==(a=e[r]).dtype&&"int32"!==a.dtype&&"bool"!==a.dtype)throw new Error("Unsupported dtype in weight '"+r+"': "+a.dtype);t.push({name:r,shape:a.shape,dtype:a.dtype}),n.push(a.data())}return[4,Promise.all(n)];case 1:return[2,{data:function(e){if(null===e)throw new Error("Invalid input value: "+JSON.stringify(e));var t=0,n=[];e.forEach(function(e){if(t+=e.byteLength,n.push(e.byteLength===e.buffer.byteLength?e:new e.constructor(e)),!(e instanceof Float32Array||e instanceof Int32Array||e instanceof Uint8Array))throw new Error("Unsupported TypedArray subtype: "+e.constructor.name)});var r=new Uint8Array(t),a=0;return n.forEach(function(e){r.set(new Uint8Array(e.buffer),a),a+=e.byteLength}),r.buffer}(i.sent()),specs:t}]}})})},fromMemory:function(e,t,n){return new Iu(e,t,n)},getLoadHandlers:Mu,getModelArtifactsInfoForJSON:Ks,getSaveHandlers:Tu,loadWeights:function(e,t,n,r){return void 0===t&&(t=""),l(this,void 0,void 0,function(){var a,i,o,s,u,l,f,p,h,d;return c(this,function(c){switch(c.label){case 0:if(a=e.map(function(){return!1}),i={},o=null!=n?n.map(function(){return!1}):[],s=[],e.forEach(function(e,t){var r=0;e.weights.forEach(function(e){var u="quantization"in e?e.quantization.dtype:e.dtype,l=Us[u]*E(e.shape),c=function(){a[t]=!0,null==i[t]&&(i[t]=[]),i[t].push({manifestEntry:e,groupOffset:r,sizeBytes:l})};null!=n?n.forEach(function(t,n){t===e.name&&(c(),o[n]=!0)}):c(),s.push(e.name),r+=l})}),!o.every(function(e){return e}))throw u=n.filter(function(e,t){return!o[t]}),new Error("Could not find weights in manifest with names: "+u.join(", ")+". \nManifest JSON has weights with names: "+s.join(", ")+".");return l=a.reduce(function(e,t,n){return t&&e.push(n),e},[]),f=[],l.forEach(function(n){e[n].paths.forEach(function(e){var n=t+(t.endsWith("/")?"":"/")+e;f.push(n)})}),[4,Eu(f,r)];case 1:return p=c.sent(),h={},d=0,l.forEach(function(t){for(var n=e[t].paths.length,r=0,a=0;a0&&Number.isInteger(n),"If provided, numClasses must be a positive integer, but got "+n),b(1===r.rank,"Expected the rank of labels to be 1, but got "+r.rank),b(1===a.rank,"Expected the rank of predictions to be 1, but got "+a.rank),b(r.shape[0]===a.shape[0],"Mismatch in the number of examples: "+r.shape[0]+" vs. "+a.shape[0]+". Labels and predictions should have the same number of elements."),b(n>0&&Number.isInteger(n),"numClasses is required to be a positive integer, but got "+n);var i=ha(r.asType("int32"),n),o=ha(a.asType("int32"),n);return i.transpose().matMul(o).asType("int32")}}),ju=Object.freeze({confusionMatrix:Du}),Lu=function(){function e(){}return e.prototype.getClassName=function(){return this.constructor.className},e.fromConfig=function(e,t){return new e(t)},e}(),Bu=function(){function e(){this.classNameMap={}}return e.getMap=function(){return null==e.instance&&(e.instance=new e),e.instance},e.register=function(t){e.getMap().classNameMap[t.className]=[t,t.fromConfig]},e}();function zu(e){b(null!=e.className,"Class being registered does not have the static className property defined."),b("string"==typeof e.className,"className is required to be a string, but got type "+typeof e.className),b(e.className.length>0,"Class being registered has an empty-string as its className, which is disallowed."),Bu.register(e)}var Fu=Object.freeze({Serializable:Lu,SerializationMap:Bu,registerClass:zu});function Vu(e,t,n){if(null==n&&(n=ve.get("TEST_EPSILON")),e instanceof re||t instanceof re){if(e instanceof re&&t instanceof re){if(e.dtype!==t.dtype)throw new Error("Arrays are of different type actual: "+e.dtype+" vs expected: "+t.dtype+".");if(!N(e.shape,t.shape))throw new Error("Arrays are of different shape actual: "+e.shape+" vs expected: "+t.shape+".")}}else{var r=e.constructor.name,a=t.constructor.name;if(r!==a)throw new Error("Arrays are of different type actual: "+r+" vs expected: "+a)}var i,o;if(i=e instanceof re?e.dataSync():e,o=t instanceof re?t.dataSync():t,i.length!==o.length)throw new Error("Arrays have different lengths actual: "+i.length+" vs expected: "+o.length+".\nActual: "+i+".\nExpected: "+o+".");for(var s=0;sn)}var Wu=Object.freeze({WEBGL_ENVS:{HAS_WEBGL:!0},NODE_ENVS:{IS_NODE:!0},CHROME_ENVS:{IS_CHROME:!0},BROWSER_ENVS:{IS_BROWSER:!0},CPU_ENVS:{HAS_WEBGL:!1},BROWSER_CPU_ENVS:{BACKEND:"test-cpu"},ALL_ENVS:{},expectArraysClose:Vu,expectPromiseToFail:function(e,t){e().then(function(){return t.fail()},function(){return t()})},expectArraysEqual:function(e,t){return Vu(e,t,0)},expectNumbersClose:function(e,t,n){if(null==n&&(n=ve.get("TEST_EPSILON")),!Uu(e,t,n))throw new Error("Numbers differ: actual === "+e+", expected === "+t)},expectValuesInRange:function(e,t,n){var r;r=e instanceof re?e.dataSync():e;for(var a=0;an)throw new Error("Value out of range:"+r[a]+" low: "+t+", high: "+n)},expectArrayBuffersEqual:function(e,t){expect(new Float32Array(e)).toEqual(new Float32Array(t))}}),qu="0.13.11",$u=Object.freeze({gpgpu_util:_r,webgl_util:tr,MathBackendWebGL:Ta,GPGPUContext:Er}),Gu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return s(t,e),t.prototype.minimize=function(e,t,n){void 0===t&&(t=!1);var r=this.computeGradients(e,n),a=r.value,i=r.grads;return this.applyGradients(i),Object.keys(i).forEach(function(e){return i[e].dispose()}),t?a:(a.dispose(),null)},t.prototype.computeGradients=function(e,t){return Ne(e,t)},t}(Lu),Hu=function(e){function t(t,n,r){void 0===r&&(r=null);var a=e.call(this)||this;return a.learningRate=t,a.rho=n,a.epsilon=r,a.accumulatedGrads={},a.accumulatedUpdates={},a.c=Ie(ct(-t)),a.rhoScalar=Ie(ct(n)),a.oneMinusRho=Ie(ct(1-n)),null===r&&(r=ve.get("EPSILON")),a.epsilonScalar=Ie(ct(r)),a}return s(t,e),t.prototype.applyGradients=function(e){var t=this,n=function(n){var a=ve.engine.registeredVariables[n];null==r.accumulatedGrads[n]&&ke(function(){t.accumulatedGrads[n]=Ct(a).variable(!1)}),null==r.accumulatedUpdates[n]&&ke(function(){t.accumulatedUpdates[n]=Ct(a).variable(!1)});var i=e[n],o=r.accumulatedGrads[n],s=r.accumulatedUpdates[n];ke(function(){var e=t.rhoScalar.mul(o).add(t.oneMinusRho.mul(i.square())),r=s.add(t.epsilonScalar).sqrt().div(o.add(t.epsilonScalar).sqrt()).mul(i),u=t.rhoScalar.mul(s).add(t.oneMinusRho.mul(r.square()));t.accumulatedGrads[n].assign(e),t.accumulatedUpdates[n].assign(u);var l=t.c.mul(r).add(a);a.assign(l)})},r=this;for(var a in e)n(a)},t.prototype.dispose=function(){var e=this;this.c.dispose(),this.epsilonScalar.dispose(),this.rhoScalar.dispose(),this.oneMinusRho.dispose(),null!=this.accumulatedUpdates&&(Object.keys(this.accumulatedUpdates).forEach(function(t){return e.accumulatedUpdates[t].dispose()}),Object.keys(this.accumulatedGrads).forEach(function(t){return e.accumulatedGrads[t].dispose()}))},t.prototype.getConfig=function(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}},t.fromConfig=function(e,t){return new e(t.learningRate,t.rho,t.epsilon)},t.className="AdadeltaOptimizer",t}(Gu);zu(Hu);var Ku=function(e){function t(t,n){void 0===n&&(n=.1);var r=e.call(this)||this;return r.learningRate=t,r.initialAccumulatorValue=n,r.accumulatedGrads={},r.c=Ie(ct(-t)),r.epsilon=Ie(ct(ve.get("EPSILON"))),r}return s(t,e),t.prototype.applyGradients=function(e){var t=this,n=function(n){var a=ve.engine.registeredVariables[n];null==r.accumulatedGrads[n]&&ke(function(){t.accumulatedGrads[n]=bt(a.shape,t.initialAccumulatorValue).variable(!1)});var i=e[n],o=r.accumulatedGrads[n];ke(function(){var e=o.add(i.square());t.accumulatedGrads[n].assign(e);var r=t.c.mul(i.div(e.add(t.epsilon).sqrt())).add(a);a.assign(r)})},r=this;for(var a in e)n(a)},t.prototype.dispose=function(){var e=this;this.epsilon.dispose(),this.c.dispose(),null!=this.accumulatedGrads&&Object.keys(this.accumulatedGrads).forEach(function(t){return e.accumulatedGrads[t].dispose()})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}},t.fromConfig=function(e,t){return new e(t.learningRate,t.initialAccumulatorValue)},t.className="AdagradOptimizer",t}(Gu);zu(Ku);var Xu=function(e){function t(t,n,r,a){void 0===a&&(a=null);var i=e.call(this)||this;return i.learningRate=t,i.beta1=n,i.beta2=r,i.epsilon=a,i.accumulatedFirstMoment={},i.accumulatedSecondMoment={},i.c=Ie(ct(-t)),i.beta1Scalar=Ie(ct(n)),i.beta2Scalar=Ie(ct(r)),ke(function(){i.accBeta1=ct(n).variable(),i.accBeta2=ct(r).variable()}),i.oneMinusBeta1=Ie(ct(1-n)),i.oneMinusBeta2=Ie(ct(1-r)),i.one=Ie(ct(1)),null===a&&(a=ve.get("EPSILON")),i.epsScalar=Ie(ct(a)),i}return s(t,e),t.prototype.applyGradients=function(e){var t=this;ke(function(){var n=t.one.sub(t.accBeta1),r=t.one.sub(t.accBeta2);for(var a in e){var i=ve.engine.registeredVariables[a];if(null==t.accumulatedFirstMoment[a]){var o=!1;t.accumulatedFirstMoment[a]=Ct(i).variable(o)}null==t.accumulatedSecondMoment[a]&&(o=!1,t.accumulatedSecondMoment[a]=Ct(i).variable(o));var s=e[a],u=t.accumulatedFirstMoment[a],l=t.accumulatedSecondMoment[a],c=t.beta1Scalar.mul(u).add(t.oneMinusBeta1.mul(s)),f=t.beta2Scalar.mul(l).add(t.oneMinusBeta2.mul(s.square())),p=c.div(n),h=f.div(r);t.accumulatedFirstMoment[a].assign(c),t.accumulatedSecondMoment[a].assign(f);var d=t.c.mul(p.div(t.epsScalar.add(h.sqrt()))).add(i);i.assign(d)}t.accBeta1.assign(t.accBeta1.mul(t.beta1Scalar)),t.accBeta2.assign(t.accBeta2.mul(t.beta2Scalar))})},t.prototype.dispose=function(){var e=this;this.c.dispose(),this.epsScalar.dispose(),this.beta1Scalar.dispose(),this.beta2Scalar.dispose(),this.accBeta1.dispose(),this.accBeta2.dispose(),this.oneMinusBeta1.dispose(),this.oneMinusBeta2.dispose(),this.one.dispose(),null!=this.accumulatedFirstMoment&&Object.keys(this.accumulatedFirstMoment).forEach(function(t){return e.accumulatedFirstMoment[t].dispose()}),null!=this.accumulatedSecondMoment&&Object.keys(this.accumulatedSecondMoment).forEach(function(t){return e.accumulatedSecondMoment[t].dispose()})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}},t.fromConfig=function(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)},t.className="AdamOptimizer",t}(Gu);zu(Xu);var Yu=function(e){function t(t,n,r,a,i){void 0===a&&(a=null),void 0===i&&(i=0);var o=e.call(this)||this;return o.learningRate=t,o.beta1=n,o.beta2=r,o.epsilon=a,o.decay=i,o.accumulatedFirstMoment={},o.accumulatedWeightedInfNorm={},o.c=Ie(ct(-t)),o.beta1Scalar=Ie(ct(n)),o.beta2Scalar=Ie(ct(r)),o.decayScalar=Ie(ct(i)),ke(function(){o.iteration=ct(0).variable(),o.accBeta1=ct(n).variable()}),o.oneMinusBeta1=Ie(ct(1-n)),o.one=Ie(ct(1)),null===a&&(a=ve.get("EPSILON")),o.epsScalar=Ie(ct(a)),o}return s(t,e),t.prototype.applyGradients=function(e){var t=this;ke(function(){var n=t.one.sub(t.accBeta1),r=t.c.div(t.one.add(t.decayScalar.mul(t.iteration)));for(var a in e){var i=ve.engine.registeredVariables[a];if(null==t.accumulatedFirstMoment[a]){var o=!1;t.accumulatedFirstMoment[a]=Ct(i).variable(o)}null==t.accumulatedWeightedInfNorm[a]&&(o=!1,t.accumulatedWeightedInfNorm[a]=Ct(i).variable(o));var s=e[a],u=t.accumulatedFirstMoment[a],l=t.accumulatedWeightedInfNorm[a],c=t.beta1Scalar.mul(u).add(t.oneMinusBeta1.mul(s)),f=t.beta2Scalar.mul(l),p=s.abs(),h=f.maximum(p);t.accumulatedFirstMoment[a].assign(c),t.accumulatedWeightedInfNorm[a].assign(h);var d=r.div(n).mul(c.div(t.epsScalar.add(h))).add(i);i.assign(d)}t.iteration.assign(t.iteration.add(t.one)),t.accBeta1.assign(t.accBeta1.mul(t.beta1Scalar))})},t.prototype.dispose=function(){var e=this;this.c.dispose(),this.epsScalar.dispose(),this.accBeta1.dispose(),this.beta1Scalar.dispose(),this.beta2Scalar.dispose(),this.oneMinusBeta1.dispose(),this.decayScalar.dispose(),this.iteration.dispose(),this.one.dispose(),null!=this.accumulatedFirstMoment&&Object.keys(this.accumulatedFirstMoment).forEach(function(t){return e.accumulatedFirstMoment[t].dispose()}),null!=this.accumulatedWeightedInfNorm&&Object.keys(this.accumulatedWeightedInfNorm).forEach(function(t){return e.accumulatedWeightedInfNorm[t].dispose()})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}},t.fromConfig=function(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)},t.className="AdamaxOptimizer",t}(Gu);zu(Yu);var Ju=function(e){function t(t){var n=e.call(this)||this;return n.learningRate=t,n.setLearningRate(t),n}return s(t,e),t.prototype.applyGradients=function(e){var t=this;Object.keys(e).forEach(function(n){var r=e[n],a=ve.engine.registeredVariables[n];ke(function(){var e=t.c.mul(r).add(a);a.assign(e)})})},t.prototype.setLearningRate=function(e){this.learningRate=e,null!=this.c&&this.c.dispose(),this.c=Ie(ct(-e))},t.prototype.dispose=function(){this.c.dispose()},t.prototype.getConfig=function(){return{learningRate:this.learningRate}},t.fromConfig=function(e,t){return new e(t.learningRate)},t.className="SGDOptimizer",t}(Gu);zu(Ju);var Zu=function(e){function t(t,n,r){void 0===r&&(r=!1);var a=e.call(this,t)||this;return a.learningRate=t,a.momentum=n,a.useNesterov=r,a.m=ct(a.momentum),a.accumulations={},a}return s(t,e),t.prototype.applyGradients=function(e){var t=this,n=function(n){var a=ve.engine.registeredVariables[n];null==r.accumulations[n]&&ke(function(){t.accumulations[n]=Ct(a).variable(!1)});var i=r.accumulations[n],o=e[n];ke(function(){var e,r=t.m.mul(i).add(o);e=t.useNesterov?t.c.mul(o.add(r.mul(t.m))).add(a):t.c.mul(r).add(a),t.accumulations[n].assign(r),a.assign(e)})},r=this;for(var a in e)n(a)},t.prototype.dispose=function(){if(e.prototype.dispose.call(this),this.m.dispose(),null!=this.accumulations)for(var t in this.accumulations)this.accumulations[t].dispose()},t.prototype.setMomentum=function(e){this.momentum=e},t.prototype.getConfig=function(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}},t.fromConfig=function(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)},t.className="MomentumOptimizer",t}(Ju);zu(Zu);var Qu=function(e){function t(t,n,r,a,i){void 0===n&&(n=.9),void 0===r&&(r=0),void 0===a&&(a=null),void 0===i&&(i=!1);var o=e.call(this)||this;return o.learningRate=t,o.decay=n,o.momentum=r,o.epsilon=a,o.accumulatedMeanSquares={},o.accumulatedMeanGrads={},o.accumulatedMoments={},o.c=Ie(ct(t)),o.decayScalar=Ie(ct(n)),o.momentumScalar=Ie(ct(r)),o.oneMinusDecay=Ie(ct(1-n)),o.centered=i,null===a&&(a=ve.get("EPSILON")),o.epsilonScalar=Ie(ct(a)),o}return s(t,e),t.prototype.applyGradients=function(e){var t=this,n=function(n){var a=ve.engine.registeredVariables[n];null==r.accumulatedMeanSquares[n]&&ke(function(){t.accumulatedMeanSquares[n]=Ct(a).variable(!1)}),null==r.accumulatedMeanGrads[n]&&r.centered&&ke(function(){t.accumulatedMeanGrads[n]=Ct(a).variable(!1)}),null==r.accumulatedMoments[n]&&ke(function(){t.accumulatedMoments[n]=Ct(a).variable(!1)});var i=r.accumulatedMeanSquares[n],o=r.accumulatedMeanGrads[n],s=r.accumulatedMoments[n],u=e[n];ke(function(){var e=t.decayScalar.mul(i).add(t.oneMinusDecay.mul(u.square()));if(t.centered){var r=t.decayScalar.mul(o).add(t.oneMinusDecay.mul(u)),l=t.momentumScalar.mul(s).add(t.c.mul(u).div(e.sub(r.square().add(t.epsilonScalar)).sqrt()));t.accumulatedMeanSquares[n].assign(e),t.accumulatedMeanGrads[n].assign(r),t.accumulatedMoments[n].assign(l);var c=a.sub(l);a.assign(c)}else{var f=t.decayScalar.mul(i).add(t.oneMinusDecay.mul(u.square()));l=t.momentumScalar.mul(s).add(t.c.mul(u).div(f.add(t.epsilonScalar).sqrt())),t.accumulatedMeanSquares[n].assign(f),t.accumulatedMoments[n].assign(l),c=a.sub(l),a.assign(c)}})},r=this;for(var a in e)n(a)},t.prototype.dispose=function(){var e=this;this.c.dispose(),this.epsilonScalar.dispose(),this.decayScalar.dispose(),this.momentumScalar.dispose(),this.oneMinusDecay.dispose(),null!=this.accumulatedMeanSquares&&Object.keys(this.accumulatedMeanSquares).forEach(function(t){return e.accumulatedMeanSquares[t].dispose()}),null!=this.accumulatedMeanGrads&&this.centered&&Object.keys(this.accumulatedMeanGrads).forEach(function(t){return e.accumulatedMeanGrads[t].dispose()}),null!=this.accumulatedMoments&&Object.keys(this.accumulatedMoments).forEach(function(t){return e.accumulatedMoments[t].dispose()})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}},t.fromConfig=function(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)},t.className="RMSPropOptimizer",t}(Gu);zu(Qu);var el=function(){function e(){}return e.sgd=function(e){return new Ju(e)},e.momentum=function(e,t,n){return void 0===n&&(n=!1),new Zu(e,t,n)},e.rmsprop=function(e,t,n,r,a){return void 0===t&&(t=.9),void 0===n&&(n=0),void 0===r&&(r=null),void 0===a&&(a=!1),new Qu(e,t,n,r,a)},e.adam=function(e,t,n,r){return void 0===e&&(e=.001),void 0===t&&(t=.9),void 0===n&&(n=.999),void 0===r&&(r=null),new Xu(e,t,n,r)},e.adadelta=function(e,t,n){return void 0===e&&(e=.001),void 0===t&&(t=.95),void 0===n&&(n=null),new Hu(e,t,n)},e.adamax=function(e,t,n,r,a){return void 0===e&&(e=.002),void 0===t&&(t=.9),void 0===n&&(n=.999),void 0===r&&(r=null),void 0===a&&(a=0),new Yu(e,t,n,r,a)},e.adagrad=function(e,t){return void 0===t&&(t=.1),new Ku(e,t)},e}(),tl={sgd:el.sgd,momentum:el.momentum,adadelta:el.adadelta,adagrad:el.adagrad,rmsprop:el.rmsprop,adamax:el.adamax,adam:el.adam},nl=ye.setBackend,rl=ye.getBackend,al=ye.disposeVariables,il=ye.memory;te=Bs}.call(this,n(46),n(26),n(162).setImmediate,n(16).Buffer)},function(e,t,n){"use strict";(function(e,r,a,i){n.d(t,"Fc",function(){return vu}),n.d(t,"Ya",function(){return bu}),n.d(t,"Ga",function(){return wu}),n.d(t,"Gb",function(){return xu}),n.d(t,"Dd",function(){return ou}),n.d(t,"Tb",function(){return is}),n.d(t,"La",function(){return ge}),n.d(t,"hb",function(){return Zs}),n.d(t,"Ec",function(){return nu}),n.d(t,"nd",function(){return iu}),n.d(t,"yd",function(){return V}),n.d(t,"Ed",function(){return su}),n.d(t,"a",function(){return lu}),n.d(t,"b",function(){return cu}),n.d(t,"c",function(){return fu}),n.d(t,"d",function(){return pu}),n.d(t,"g",function(){return du}),n.d(t,"h",function(){return uu}),n.d(t,"i",function(){return mu}),n.d(t,"l",function(){return hu}),n.d(t,"m",function(){return Q}),n.d(t,"n",function(){return X}),n.d(t,"Bd",function(){return te}),n.d(t,"o",function(){return ee}),n.d(t,"j",function(){return gt}),n.d(t,"k",function(){return Co}),n.d(t,"e",function(){return me}),n.d(t,"f",function(){return de}),n.d(t,"gb",function(){return ts}),n.d(t,"ob",function(){return Yo}),n.d(t,"zb",function(){return Go}),n.d(t,"ac",function(){return Je}),n.d(t,"H",function(){return qa}),n.d(t,"I",function(){return $a}),n.d(t,"J",function(){return Ga}),n.d(t,"G",function(){return Ha}),n.d(t,"Q",function(){return Qe}),n.d(t,"qc",function(){return et}),n.d(t,"fb",function(){return tt}),n.d(t,"R",function(){return vr}),n.d(t,"S",function(){return br}),n.d(t,"T",function(){return wr}),n.d(t,"U",function(){return xr}),n.d(t,"V",function(){return _r}),n.d(t,"Sc",function(){return Er}),n.d(t,"W",function(){return ii}),n.d(t,"X",function(){return oi}),n.d(t,"Ea",function(){return si}),n.d(t,"Dc",function(){return ui}),n.d(t,"Y",function(){return li}),n.d(t,"Ab",function(){return Qa}),n.d(t,"Ja",function(){return ei}),n.d(t,"bc",function(){return ti}),n.d(t,"uc",function(){return ci}),n.d(t,"vc",function(){return fi}),n.d(t,"wc",function(){return pi}),n.d(t,"xc",function(){return hi}),n.d(t,"yc",function(){return di}),n.d(t,"Cb",function(){return mi}),n.d(t,"E",function(){return gi}),n.d(t,"Kc",function(){return yi}),n.d(t,"Lc",function(){return vi}),n.d(t,"Mc",function(){return bi}),n.d(t,"Nc",function(){return wi}),n.d(t,"Oc",function(){return xi}),n.d(t,"p",function(){return fa}),n.d(t,"q",function(){return pa}),n.d(t,"r",function(){return ha}),n.d(t,"z",function(){return da}),n.d(t,"A",function(){return ma}),n.d(t,"B",function(){return ga}),n.d(t,"D",function(){return ya}),n.d(t,"N",function(){return va}),n.d(t,"O",function(){return ba}),n.d(t,"Z",function(){return wa}),n.d(t,"Aa",function(){return xa}),n.d(t,"Oa",function(){return _a}),n.d(t,"Pa",function(){return Ea}),n.d(t,"Ra",function(){return Na}),n.d(t,"Ua",function(){return Sa}),n.d(t,"rb",function(){return Oa}),n.d(t,"sb",function(){return ka}),n.d(t,"tb",function(){return Ia}),n.d(t,"Sb",function(){return Ca}),n.d(t,"rc",function(){return Pa}),n.d(t,"zc",function(){return Aa}),n.d(t,"Ac",function(){return Ta}),n.d(t,"Gc",function(){return Ma}),n.d(t,"Hc",function(){return Ra}),n.d(t,"Ic",function(){return Da}),n.d(t,"Jc",function(){return ja}),n.d(t,"Qc",function(){return La}),n.d(t,"Tc",function(){return Ba}),n.d(t,"Uc",function(){return za}),n.d(t,"Zc",function(){return Fa}),n.d(t,"ed",function(){return Va}),n.d(t,"fd",function(){return Ua}),n.d(t,"v",function(){return Ei}),n.d(t,"w",function(){return Ni}),n.d(t,"x",function(){return Si}),n.d(t,"y",function(){return Oi}),n.d(t,"ub",function(){return ki}),n.d(t,"Bb",function(){return Ii}),n.d(t,"Fb",function(){return Ci}),n.d(t,"Hb",function(){return Pi}),n.d(t,"Mb",function(){return Ai}),n.d(t,"dd",function(){return Ti}),n.d(t,"Ma",function(){return Mi}),n.d(t,"Na",function(){return Ri}),n.d(t,"bb",function(){return Di}),n.d(t,"cb",function(){return ji}),n.d(t,"db",function(){return Li}),n.d(t,"eb",function(){return Bi}),n.d(t,"kb",function(){return zi}),n.d(t,"lb",function(){return Fi}),n.d(t,"mb",function(){return Vi}),n.d(t,"nb",function(){return Ui}),n.d(t,"Vb",function(){return Wi}),n.d(t,"Wb",function(){return qi}),n.d(t,"s",function(){return $i}),n.d(t,"t",function(){return Gi}),n.d(t,"u",function(){return Hi}),n.d(t,"C",function(){return Ki}),n.d(t,"Ha",function(){return Xi}),n.d(t,"Ia",function(){return Yi}),n.d(t,"Va",function(){return Ji}),n.d(t,"Db",function(){return Zi}),n.d(t,"Eb",function(){return Qi}),n.d(t,"Ib",function(){return eo}),n.d(t,"Jb",function(){return to}),n.d(t,"Kb",function(){return no}),n.d(t,"Lb",function(){return ro}),n.d(t,"Ob",function(){return ao}),n.d(t,"Pb",function(){return io}),n.d(t,"hc",function(){return oo}),n.d(t,"ic",function(){return so}),n.d(t,"Vc",function(){return uo}),n.d(t,"Wc",function(){return lo}),n.d(t,"bd",function(){return co}),n.d(t,"cd",function(){return fo}),n.d(t,"Ka",function(){return bo}),n.d(t,"jb",function(){return wo}),n.d(t,"jc",function(){return xo}),n.d(t,"sc",function(){return _o}),n.d(t,"Cc",function(){return Eo}),n.d(t,"vb",function(){return po}),n.d(t,"wb",function(){return ho}),n.d(t,"xb",function(){return mo}),n.d(t,"yb",function(){return go}),n.d(t,"Fd",function(){return yo}),n.d(t,"Gd",function(){return vo}),n.d(t,"L",function(){return Dr}),n.d(t,"rd",function(){return Rr}),n.d(t,"kc",function(){return jr}),n.d(t,"K",function(){return Lr}),n.d(t,"M",function(){return Br}),n.d(t,"P",function(){return zr}),n.d(t,"Ba",function(){return Fr}),n.d(t,"Da",function(){return Vr}),n.d(t,"Qa",function(){return Ur}),n.d(t,"Sa",function(){return Wr}),n.d(t,"Wa",function(){return qr}),n.d(t,"Rb",function(){return $r}),n.d(t,"Xb",function(){return Gr}),n.d(t,"cc",function(){return Hr}),n.d(t,"dc",function(){return Kr}),n.d(t,"ec",function(){return Xr}),n.d(t,"fc",function(){return Yr}),n.d(t,"gc",function(){return Jr}),n.d(t,"mc",function(){return Zr}),n.d(t,"nc",function(){return Qr}),n.d(t,"oc",function(){return ea}),n.d(t,"tc",function(){return ta}),n.d(t,"Rc",function(){return na}),n.d(t,"Xc",function(){return ra}),n.d(t,"Yc",function(){return aa}),n.d(t,"pd",function(){return ia}),n.d(t,"vd",function(){return oa}),n.d(t,"xd",function(){return sa}),n.d(t,"Ta",function(){return pt}),n.d(t,"pb",function(){return ht}),n.d(t,"Yb",function(){return ct}),n.d(t,"pc",function(){return dt}),n.d(t,"Bc",function(){return rt}),n.d(t,"gd",function(){return nt}),n.d(t,"hd",function(){return at}),n.d(t,"id",function(){return it}),n.d(t,"jd",function(){return ot}),n.d(t,"kd",function(){return st}),n.d(t,"ld",function(){return ut}),n.d(t,"md",function(){return lt}),n.d(t,"Hd",function(){return ft}),n.d(t,"Zb",function(){return xt}),n.d(t,"Id",function(){return _t}),n.d(t,"ud",function(){return No}),n.d(t,"Pc",function(){return Ze}),n.d(t,"qb",function(){return So}),n.d(t,"Ub",function(){return Oo}),n.d(t,"Xa",function(){return Po}),n.d(t,"wd",function(){return Ao}),n.d(t,"F",function(){return To}),n.d(t,"Qb",function(){return Mo}),n.d(t,"Nb",function(){return Ro}),n.d(t,"ad",function(){return Do}),n.d(t,"sd",function(){return jo}),n.d(t,"td",function(){return yu}),n.d(t,"od",function(){return Ne}),n.d(t,"ib",function(){return Se}),n.d(t,"Fa",function(){return Oe}),n.d(t,"qd",function(){return ke}),n.d(t,"lc",function(){return Ie}),n.d(t,"Ca",function(){return _e}),n.d(t,"Za",function(){return ye}),n.d(t,"ab",function(){return ve}),n.d(t,"zd",function(){return be}),n.d(t,"Ad",function(){return we}),n.d(t,"Cd",function(){return xe}); /** * @license * Copyright 2018 Google LLC. All Rights Reserved. @@ -32,7 +32,7 @@ var o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__p * limitations under the License. * ============================================================================= */ -var o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};function s(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var u=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&a[a.length-1])&&(6===i[0]||2===i[0])){o=0;continue}if(3===i[0]&&(!a||i[1]>a[0]&&i[1]0;)r=Math.random()*t|0,n=e[--t],e[t]=e[r],e[r]=n}function p(e,t,n){return Math.max(e,Math.min(t,n))}function h(e,t){var n=Math.random();return t*n+(1-n)*e}function d(e,t){if(!e)throw new Error("string"==typeof t?t:t())}function m(e,t,n){void 0===n&&(n=""),d(w(e,t),n+" Shapes "+e+" and "+t+" must match")}function g(e){d(null!=e,"The input to the tensor constructor must be a non-null value.")}function y(e,t){if(void 0===t&&(t=[]),Array.isArray(e))for(var n=0;n0,function(){return"Element arr["+r.join("][")+"] should be a primitive, but is an array of "+t.length+" elements"}),d(t.length===n[0],function(){return"Element arr["+r.join("][")+"] should have "+n[0]+" elements, but has "+t.length+" elements"});for(var a=n.slice(1),i=0;i1;--t)if(e%t==0)return[t,e/t];return[1,e]}function N(e,t){return t<=e.length?e:e+" ".repeat(t-e.length)}function S(e,t,n){return void 0===t&&(t=function(e){return 0}),new Promise(function(r,a){var i=0,o=function(){if(e())r();else{var s=t(++i);null!=n&&i>=n?a():setTimeout(o,s)}};o()})}function O(e,t){for(var n=1,r=-1,a=0;a=0)n*=e[a];else if(-1===e[a]){if(-1!==r)throw Error("Shapes can only have 1 implicit size. Found -1 at dim "+r+" and dim "+a);r=a}else if(e[a]<0)throw Error("Shapes can not be < 0. Found "+e[a]+" at dim "+a);if(-1===r){if(t>0&&t!==n)throw Error("Size("+t+") must match the product of shape "+e);return e}if(0===n)throw Error("Cannot infer the missing size in ["+e+"] when there are 0 elements");if(t%n!=0)throw Error("The implicit shape can't be a fractional number. Got "+t+" / "+n);var i=e.slice();return i[r]=t/n,i}function k(e,t){for(var n=[],r=[],a=0,i=0;ii)&&1===e[i]&&(n.push(e[i]),r.push(i)),t[a]<=i&&a++}1!==e[i]&&(n.push(e[i]),r.push(i))}return{newShape:n,keptDims:r}}function I(e,t){var n=null;if(null==e||"float32"===e)n=new Float32Array(t);else if("int32"===e)n=new Int32Array(t);else{if("bool"!==e)throw new Error("Unknown data type "+e);n=new Uint8Array(t)}return n}function C(e,t,n){if("float32"===t)for(var r=0;r=0;--r)n[r]=n[r+1]*e[r+1];return n}function L(e,t,n){return function(e,t){return e instanceof Float32Array&&"float32"===t||e instanceof Int32Array&&"int32"===t||e instanceof Uint8Array&&"bool"===t}(e,t)?e:(Array.isArray(e)&&(e=y(e)),function(e,t,n){if(null==t||"float32"===t||"complex64"===t)return new Float32Array(e);if("int32"===t)return n&&P(e,t),new Int32Array(e);if("bool"===t){for(var r=new Uint8Array(e.length),a=0;a1)for(var l=0;lq){var c=$*s,f=Array.from(t.subarray(0,c)),p=Array.from(t.subarray(u-$*s,u));return"complex64"===r&&(f=K(f),p=K(p)),["["+f.map(function(e,t){return H(e,i[t])}).join(", ")+", ..., "+p.map(function(e,t){return H(e,i[u-$+t])}).join(", ")+"]"]}return["["+("complex64"===r?K(t):Array.from(t)).map(function(e,t){return H(e,i[t])}).join(", ")+"]"]}var h=n.slice(1),d=a.slice(1),m=a[0]*s,g=[];if(u>q){for(var y=0;y<$;y++){var v=(b=y*m)+m;g.push.apply(g,e(t.subarray(b,v),h,r,d,i,!1))}for(g.push("..."),y=u-$;y {...}) to avoid memory leaks.");return this.keepTensors.add(e.id),e},e.prototype.startScope=function(e,t){void 0===t&&(t=!1),t&&0===this.gradientScopeCount&&(this.activeTape=[]),t&&this.gradientScopeCount++;var n={track:[],name:"unnamed scope"};e&&(n.name=e),this.scopeStack.push(n),this.activeScope=n},e.prototype.endScope=function(e,t){var n=this;void 0===t&&(t=!1),t&&(this.gradientScopeCount--,0===this.gradientScopeCount&&(this.activeTape=null));var r=new Set(this.keepTensors),a=re(e);a.forEach(function(e){return r.add(e.id)});for(var i=0;i0,"gradients() received an empty list of xs."),this.tidy("gradients",function(){var i=e();d(i instanceof Q,"The result y returned by f() must be a tensor.");var o=function(e,t,n){for(var r={},a={},i=0;i=0;i--)for(o=(d=e[i]).inputs,c=0;c0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");var s={};return s[i.id]=null==n?function(e){var t=B(b(e),"float32");return Q.make(e,{values:t})}(i.shape):n,function(e,t){for(var n=function(n){var r=t[n],a=[];if(r.outputs.forEach(function(t){var n=e[t.id];if(null!=n)a.push(n);else{var r=Q.make(t.shape,{values:z(t.size,t.dtype)},t.dtype);a.push(r)}}),null==r.gradient)throw new Error("Cannot compute gradient: gradient function not found for "+r.name+".");var i=r.gradient(1===r.outputs.length?a[0]:a);for(var o in r.inputs){if(!(o in i))throw new Error("Cannot backprop through input "+o+". Available gradients found: "+Object.keys(i)+".");var s=i[o](),u=r.inputs[o];if(!w(s.shape,u.shape))throw new Error("Error in gradient for op "+r.name+". The gradient of input '"+o+"' has shape '"+s.shape+"', which does not match the shape of the input '"+u.shape+"'");if(null==e[u.id])e[u.id]=s;else{var l=e[u.id];e[u.id]=l.add(s),l.dispose()}}},r=t.length-1;r>=0;r--)n(r)}(s,o),{value:i,grads:t.map(function(e){return s[e.id]})}},!0)},e.prototype.customGrad=function(e){var t=this;return d(R(e),"The f passed in customGrad(f) must be a function."),function(){for(var n,r,a=[],i=0;i {op();...}); to avoid memory leaks.");return this.activeScope.track.push(e),e},e}();!function(e){e[e.NUMBER=0]="NUMBER",e[e.BOOLEAN=1]="BOOLEAN",e[e.STRING=2]="STRING"}(ae||(ae={}));var oe=[{name:"DEBUG",type:ae.BOOLEAN},{name:"IS_BROWSER",type:ae.BOOLEAN},{name:"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",type:ae.NUMBER},{name:"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",type:ae.BOOLEAN},{name:"WEBGL_VERSION",type:ae.NUMBER},{name:"WEBGL_RENDER_FLOAT32_ENABLED",type:ae.BOOLEAN},{name:"WEBGL_DOWNLOAD_FLOAT_ENABLED",type:ae.BOOLEAN},{name:"WEBGL_FENCE_API_ENABLED",type:ae.BOOLEAN},{name:"BACKEND",type:ae.STRING},{name:"EPSILON",type:ae.NUMBER}];function se(e,t){var n;try{n=fe(e,t)}catch(e){return!1}return null!=n&&(pe(n),!0)}var ue="tfjsflags";function le(){var e={};if("undefined"==typeof window||void 0===window.location)return e;var t=function(e){var t={};return window.location.search.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,function(e){for(var n=[],r=1;r0?0:function(e,t){if(0===e)return 0;var n,r=fe(e,t);return n=ce(r,"EXT_disjoint_timer_query_webgl2")&&2===e?2:ce(r,"EXT_disjoint_timer_query")?1:0,null!=r&&pe(r),n}(n,this.get("IS_BROWSER"))}if("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE"===t)return this.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!function(){var e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))}();if("HAS_WEBGL"===t)return this.get("WEBGL_VERSION")>0;if("WEBGL_VERSION"===t)return se(2,this.get("IS_BROWSER"))?2:se(1,this.get("IS_BROWSER"))?1:0;if("WEBGL_RENDER_FLOAT32_ENABLED"===t)return function(e,t){if(0===e)return!1;var n=fe(e,t);if(1===e){if(!ce(n,"OES_texture_float"))return!1}else if(!ce(n,"EXT_color_buffer_float"))return!1;var r=he(n,e);return pe(n),r}(this.get("WEBGL_VERSION"),this.get("IS_BROWSER"));if("WEBGL_DOWNLOAD_FLOAT_ENABLED"===t)return function(e,t){if(0===e)return!1;var n=fe(e,t);if(1===e){if(!ce(n,"OES_texture_float"))return!1;if(!ce(n,"WEBGL_color_buffer_float"))return!1}else if(!ce(n,"EXT_color_buffer_float"))return!1;var r=he(n,e);return pe(n),r}(this.get("WEBGL_VERSION"),this.get("IS_BROWSER"));if("WEBGL_FENCE_API_ENABLED"===t)return function(e,t){if(2!==e)return!1;var n=fe(e,t),r=null!=n.fenceSync;return pe(n),r}(this.get("WEBGL_VERSION"),this.get("IS_BROWSER"));if("TEST_EPSILON"===t)return 32===this.backend.floatPrecision()?.001:.1;if("EPSILON"===t)return 32===this.backend.floatPrecision()?1e-7:.001;throw new Error("Unknown feature "+t+".")},t.prototype.setFeatures=function(e){this.features=Object.assign({},e)},t.prototype.reset=function(){this.features=le(),null!=this.globalEngine&&(this.globalEngine=null)},t.prototype.initBackend=function(e,t){var n=this;if(void 0===t&&(t=!1),this.backendName=e,this.engines[e])this.globalEngine=this.engines[e];else{var r=this.findBackend(e);this.globalEngine=new ie(r,t,function(){return n.get("DEBUG")}),this.engines[e]=this.globalEngine}},Object.defineProperty(t.prototype,"backend",{get:function(){return this.engine.backend},enumerable:!0,configurable:!0}),t.prototype.findBackend=function(e){return e in this.registry?this.registry[e].backend:null},t.prototype.registerBackend=function(e,t,n,r){var a=this;if(void 0===n&&(n=1),e in this.registry)return console.warn(e+" backend was already registered. Reusing existing backend"),null!=r&&r(function(){return a.engine}),!1;try{var i=t();return this.registry[e]={backend:i,priority:n},!0}catch(t){return console.warn("Registration of backend "+e+" failed"),console.warn(t.stack||t.message),!1}},t.prototype.removeBackend=function(e){if(!(e in this.registry))throw new Error(e+" backend not found in registry");this.registry[e].backend.dispose(),delete this.registry[e],e in this.engines&&delete this.engines[e]},Object.defineProperty(t.prototype,"engine",{get:function(){return this.initDefaultBackend(),this.globalEngine},enumerable:!0,configurable:!0}),t.prototype.initDefaultBackend=function(){null==this.globalEngine&&this.initBackend(this.get("BACKEND"),!1)},t}(),me=function(){var t=function(){var t;if("undefined"!=typeof window)t=window;else{if(void 0===e)throw new Error("Could not find a global object");t=e}return t}();return null==t.ENV&&(t.ENV=new de(le()),Z(function(){return t.ENV.engine})),t.ENV}(),ge=Object.freeze({Environment:de,ENV:me});function ye(e){return d(R(e),"The f passed in grad(f) must be a function"),function(t,n){return d(t instanceof Q,"The x passed in grad(f)(x) must be a tensor"),d(null==n||n instanceof Q,"The dy passed in grad(f)(x, dy) must be a tensor"),me.engine.tidy(function(){var r=me.engine.gradients(function(){return e(t)},[t],n),a=r.value,i=r.grads;return null!=n&&m(a.shape,n.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),Ee(i),i[0]})}}function ve(e){return d(R(e),"The f passed in grads(f) must be a function"),function(t,n){return d(Array.isArray(t)&&t.every(function(e){return e instanceof Q}),"The args passed in grads(f)(args) must be an array of tensors"),d(null==n||n instanceof Q,"The dy passed in grads(f)(args, dy) must be a tensor"),me.engine.tidy(function(){var r=me.engine.gradients(function(){return e.apply(void 0,t)},t,n),a=r.value,i=r.grads;return null!=n&&m(a.shape,n.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Ee(i),i})}}function be(e){return d(R(e),"The f passed in valueAndGrad(f) must be a function"),function(t,n){d(t instanceof Q,"The x passed in valueAndGrad(f)(x) must be a tensor"),d(null==n||n instanceof Q,"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");var r=me.engine.gradients(function(){return e(t)},[t],n),a=r.grads,i=r.value;return Ee(a),{grad:a[0],value:i}}}function we(e){return d(R(e),"The f passed in valueAndGrads(f) must be a function"),function(t,n){d(Array.isArray(t)&&t.every(function(e){return e instanceof Q}),"The args passed in valueAndGrads(f)(args) must be array of tensors"),d(null==n||n instanceof Q,"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");var r=me.engine.gradients(function(){return e.apply(void 0,t)},t,n);return null!=n&&m(r.value.shape,n.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Ee(r.grads),r}}function xe(e,t){if(d(R(e),"The f passed in variableGrads(f) must be a function"),d(null==t||Array.isArray(t)&&t.every(function(e){return e instanceof ee}),"The varList passed in variableGrads(f, varList) must be an array of variables"),null==t)for(var n in t=[],me.engine.registeredVariables)t.push(me.engine.registeredVariables[n]);var r=t.length;d((t=t.filter(function(e){return e.trainable})).length>0,"variableGrads() expects at least one of the input variables to be trainable, but none of the "+r+" variables is trainable.");var a=me.engine.gradients(e,t,null,!0),i=a.value,o=a.grads;d(o.some(function(e){return null!=e}),"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),d(0===i.rank,"The f passed in variableGrads(f) must return a scalar, but it returned a rank-"+i.rank+" tensor");var s={};return t.forEach(function(e,t){null!=o[t]&&(s[e.name]=o[t])}),{value:i,grads:s}}function _e(e){return me.engine.customGrad(e)}function Ee(e){if(e.filter(function(e){return null==e}).length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that\n the f you passed encloses all operations that lead from x to y.")}var Ne=de.tidy,Se=de.keep,Oe=de.dispose,ke=de.time,Ie=de.profile;function Ce(){for(var e=[],t=0;t=2*t+1||a%2==1?o.push(a):i.push(a);r.push.apply(r,i),r.push(0),r.push.apply(r,o)}return r}function Te(e,t,n,r){void 0===r&&(r=!0);var a=[];r?a.push(e[0]/n):a.push(e[0]*n);for(var i=1;i=-n&&e0?a>=c[t]:a<=c[t]);a+=r[t])n+=1;return n}),[l,h,f]}function He(e,t,n,r,a){var i=t[a];e&1<0?Number.MIN_SAFE_INTEGER:Number.MAX_SAFE_INTEGER);var o=r[a];return i<0&&(i+=o),p(0,i,o-1)}function Ke(e,t,n,r,a){var i=t[a];e&1<0?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER);var o=r[a];return i<0&&(i+=o),n[a]>0?p(0,i,o):p(-1,i,o-1)}function Xe(e,t,n,r){if(void 0===r&&(r="float32"),r=r||"float32",e instanceof Q)return e;if(!T(e)&&!Array.isArray(e)&&"number"!=typeof e&&"boolean"!=typeof e)throw new Error("Argument '"+t+"' passed to '"+n+"' must be a Tensor or TensorLike, but got "+e.constructor.name);var a=v(e);return T(e)||Array.isArray(e)||(e=[e]),Q.make(a,{values:L(e,r,me.get("DEBUG"))},r)}function Ye(e,t,n){if(!Array.isArray(e))throw new Error("Argument "+t+" passed to "+n+" must be a `Tensor[]` or `TensorLike[]`");return e.map(function(e,r){return Xe(e,t+"["+r+"]",n)})}function Je(e){var t=Object.keys(e);if(1!==t.length)throw new Error("Please provide an object with a single key (operation name) mapping to a function. Got an object with "+t.length+" keys.");var n=t[0],r=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1));var a=function(){for(var e=[],t=0;t1)return ft([0],r);var a=z(Math.abs(Math.ceil((t-e)/n)),r);ta}).sort(function(e,t){return t.score-e.score}),o=[],s=0;s=0;--p)if(Pt(e,c,o[p])>=r){f=!0;break}if(!f&&(o.push(c),o.length>=n))break}return at(o,"int32")}function Pt(e,t,n){var r=e.subarray(4*t,4*t+4),a=e.subarray(4*n,4*n+4),i=Math.min(r[0],r[2]),o=Math.min(r[1],r[3]),s=Math.max(r[0],r[2]),u=Math.max(r[1],r[3]),l=Math.min(a[0],a[2]),c=Math.min(a[1],a[3]),f=Math.max(a[0],a[2]),p=Math.max(a[1],a[3]),h=(s-i)*(u-o),d=(f-l)*(p-c);if(h<=0||d<=0)return 0;var m=Math.max(i,l),g=Math.max(o,c),y=Math.min(s,f),v=Math.min(u,p),b=Math.max(y-m,0)*Math.max(v-g,0);return b/(h+d-b)}function At(e,t,n){var r=Array(e.rank).fill(0),a=e.shape.slice();return t.map(function(t){a[n]=t;var i=e.slice(r,a);return r[n]+=t,i})}function Tt(e,t,n,r,a){for(var i=t[t.length-1],o=[e.length/i,i],s=o[0],u=o[1],l=I(n,s*r),c=I("int32",s*r),f=0;f1&&1===o&&r.unshift(i)}return r}function Rt(e,t){for(var n=[],r=0;r1)&&n.unshift(i)}return n}function Dt(e,t){for(var n=[],r=Math.max(e.length,t.length),a=0;a1?"["+t+"]":"")+";":"uniform sampler2D "+e.name+";"});a=a.join("\n");var i,o=e.map(function(e){return function(e,t,n){var r=function(e){var t=e.name,n="get"+t.charAt(0).toUpperCase()+t.slice(1)+"Flat",r=b(e.shapeInfo.logicalShape);if(e.shapeInfo.isUniform)return 1===r?"float "+n+"(int index) {return "+t+";}":"\n float "+n+"(int index) {\n for (int i = 0; i < "+r+"; i++) {\n if (i == index) {\n return "+t+"[i];\n }\n }\n }\n ";var a=e.shapeInfo.texShape,i=a[0],o=a[1];return 1===o&&1===i?"\n float "+n+"(int index) {\n return sampleTexture("+t+", halfCR);\n }\n ":1===o?"\n float "+n+"(int index) {\n vec2 uv = vec2(0.5, (float(index) + 0.5) / "+i+".0);\n return sampleTexture("+t+", uv);\n }\n ":1===i?"\n float "+n+"(int index) {\n vec2 uv = vec2((float(index) + 0.5) / "+o+".0, 0.5);\n return sampleTexture("+t+", uv);\n }\n ":"\n float "+n+"(int index) {\n vec2 uv = UVfrom1D("+i+", "+o+", index);\n return sampleTexture("+t+", uv);\n }\n "}(e);return r+=function e(t){var n=t.shapeInfo.logicalShape;switch(n.length){case 0:return function(e){var t=e.name,n="get"+t.charAt(0).toUpperCase()+t.slice(1);return e.shapeInfo.isUniform?"float "+n+"() {return "+t+";}":"\n float "+n+"() {\n return sampleTexture("+t+", halfCR);\n }\n "}(t);case 1:return function(e){var t=e.name,n="get"+t.charAt(0).toUpperCase()+t.slice(1);return"\n float "+n+"(int index) {\n return "+n+"Flat(index);\n }\n "}(t);case 2:return function(t){var n=t.shapeInfo.logicalShape,r=t.name,a="get"+r.charAt(0).toUpperCase()+r.slice(1),i=t.shapeInfo.texShape;if(null!=i&&w(n,i)){var o=i[0];return"\n float "+a+"(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2("+i[1]+".0, "+o+".0);\n return sampleTexture("+r+", uv);\n }\n "}var s=k(n),u=s.newShape,l=s.keptDims,c=u;if(c.lengths||o.length>0),c=function(e){for(var t=0;t=1?"coords = 0;":s.map(function(e){return"coords["+(e+u)+"] = 0;"}).join("\n"))+"\n return get"+n+"("+(i<2&&a>0?"coords":e.shapeInfo.logicalShape.map(function(e,t){return"coords["+(t+u)+"]"}).join(", "))+");\n }\n "}(e,t,a,i);var p=b(e.shapeInfo.logicalShape),h="";l&&c&&(h="\n int mainPart = index / "+p+";\n index -= mainPart * "+p+";\n ");var d=t.texShape;if(f)return 1===p?"float "+i+"() {return "+r+";}":"\n float "+i+"() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+d[0]+", "+d[1]+"));\n int index = resTexRC.x * "+d[1]+" + resTexRC.y;\n "+h+"\n return get"+a+"Flat(index);\n }\n ";var m=e.shapeInfo.texShape;return w(m,d)?"\n float "+i+"() {\n return sampleTexture("+r+", resultUV);\n }\n ":"\n float "+i+"() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+d[0]+", "+d[1]+"));\n int index = resTexRC.x * "+d[1]+" + resTexRC.y;\n "+h+"\n int texR = index / "+m[1]+";\n int texC = index - texR * "+m[1]+";\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+m[1]+".0, "+m[0]+".0);\n\n return sampleTexture("+r+", uv);\n }\n "}(e,t,n)),r}(e,t,r)}).join("\n"),s=t.texShape;return i=t.isPacked?function(e,t){switch(e.length){case 0:return"\n int getOutputCoords() {\n return 0;\n }\n ";case 2:return function(e,t){return"\n ivec2 getOutputCoords() {\n return 2 * ivec2(resultUV.yx * vec2("+Math.ceil(t[0]/2)+", "+Math.ceil(t[1]/2)+"));\n }\n "}(0,t);default:throw new Error(e.length+"-D output packed sampling is not yet supported")}}(t.logicalShape,s):function(e,t){switch(e.length){case 0:return"\n int getOutputCoords() {\n return 0;\n }\n ";case 1:return function(e,t){return 1===t[0]?"\n int getOutputCoords() {\n return int(resultUV.x * "+t[1]+".0);\n }\n ":1===t[1]?"\n int getOutputCoords() {\n return int(resultUV.y * "+t[0]+".0);\n }\n ":"\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n return resTexRC.x * "+t[1]+" + resTexRC.y;\n }\n "}(0,t);case 2:return function(e,t){return w(e,t)?"\n ivec2 getOutputCoords() {\n return ivec2(resultUV.yx * vec2("+t[0]+", "+t[1]+"));\n }\n ":1===e[1]?"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n return ivec2(index, 0);\n }\n ":1===e[0]?"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n return ivec2(0, index);\n }\n ":"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n int r = index / "+e[1]+";\n int c = index - r * "+e[1]+";\n return ivec2(r, c);\n }\n "}(e,t);case 3:return function(e,t){var n=e[1]*e[2],r=e[2];return"\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n int r = index / "+n+";\n index -= r * "+n+";\n int c = index / "+r+";\n int d = index - c * "+r+";\n return ivec3(r, c, d);\n }\n "}(e,t);case 4:return function(e,t){var n=e[3],r=e[2]*n,a=e[1]*r;return"\n ivec4 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n\n int r = index / "+a+";\n index -= r * "+a+";\n\n int c = index / "+r+";\n index -= c * "+r+";\n\n int d = index / "+n+";\n int d2 = index - d * "+n+";\n\n return ivec4(r, c, d, d2);\n }\n "}(e,t);case 5:return function(e,t){var n=e[4],r=e[3]*n,a=e[2]*r,i=e[1]*a;return"\n ivec5 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx * vec2("+t[0]+",\n "+t[1]+"));\n\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n\n int r = index / "+i+";\n index -= r * "+i+";\n\n int c = index / "+a+";\n index -= c * "+a+";\n\n int d = index / "+r+";\n index -= d * "+r+";\n\n int d2 = index / "+n+";\n int d3 = index - d2 * "+n+";\n\n ivec5 outShape = ivec5(r, c, d, d2, d3);\n return outShape;\n }\n "}(e,t);case 6:return function(e,t){var n=e[5],r=e[4]*n,a=e[3]*r,i=e[2]*a,o=e[1]*i;return"\n ivec6 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n\n int r = index / "+o+";\n index -= r * "+o+";\n\n int c = index / "+i+";\n index -= c * "+i+";\n\n int d = index / "+a+";\n index -= d * "+a+";\n\n int d2 = index / "+r+";\n index -= d2 * "+r+";\n\n int d3 = index / "+n+";\n int d4 = index - d3 * "+n+";\n\n ivec6 result = ivec6(r, c, d, d2, d3, d4);\n return result;\n }\n "}(e,t);default:throw new Error(e.length+"-D output sampling is not yet supported")}}(t.logicalShape,s),[Wt,Vt,Ut,a,i,o,n].join("\n")}var Vt="\n float sampleTexture(sampler2D textureSampler, vec2 uv) {\n return texture2D(textureSampler, uv).r;\n }\n",Ut="\n void setOutput(float val) {\n gl_FragColor = vec4(val, 0, 0, 0);\n }\n",Wt="\n precision highp float;\n precision highp int;\n varying vec2 resultUV;\n const vec2 halfCR = vec2(0.5, 0.5);\n\n struct ivec5\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n };\n\n struct ivec6\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n int v;\n };\n\n bool isNaN(float val) {\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\n }\n\n bool hasNaN(vec4 values) {\n vec4 v1 = values * values;\n vec4 v2 = values * values;\n return any(notEqual(v1, v2));\n }\n\n float getNaN(vec4 values) {\n return dot(vec4(1), values);\n }\n\n int round(float value) {\n return int(floor(value + 0.5));\n }\n\n int imod(int x, int y) {\n return x - y * (x / y);\n }\n\n //Based on the work of Dave Hoskins\n //https://www.shadertoy.com/view/4djSRW\n #define HASHSCALE1 443.8975\n float random(float seed){\n vec2 p = resultUV * seed;\n vec3 p3 = fract(vec3(p.xyx) * HASHSCALE1);\n p3 += dot(p3, p3.yzx + 19.19);\n return fract((p3.x + p3.y) * p3.z);\n }\n\n \nvec2 UVfrom1D(int texNumR, int texNumC, int index) {\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom2D(int texNumR, int texNumC, int numC, int row, int col) {\n int index = row * numC + col;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom3D(int texNumR, int texNumC, int stride0,\n int stride1, int row, int col, int depth) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * stride0 + col * stride1 + depth;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom4D(int texNumR, int texNumC, int stride0,\n int stride1, int stride2, int row, int col, int depth,\n int depth2) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * stride0 + col * stride1 + depth * stride2 + depth2;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom5D(int texNumR, int texNumC, int stride0,\n int stride1, int stride2, int stride3, int row, int col, int depth,\n int depth2, int depth3) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * stride0 + col * stride1 +\n depth * stride2 + depth2 * stride3 + depth3;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom6D(int texNumR, int texNumC, int stride0,\n int stride1, int stride2, int stride3, int stride4,\n int row, int col, int depth, int depth2, int depth3, int depth4) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * stride0 + col * stride1 + depth * stride2 + depth2 *\n stride3 + depth3 * stride4 + depth4;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n";function qt(e){if(e<=1)return"int";if(2===e)return"ivec2";if(3===e)return"ivec3";if(4===e)return"ivec4";if(5===e)return"ivec5";if(6===e)return"ivec6";throw Error("GPU for rank "+e+" is not yet supported")}function $t(e,t){var n=JSON.parse(JSON.stringify(e));return n.shapeInfo.logicalShape=t,n}function Gt(e,t){return t.map(function(t){return e[t]}).join(", ")}function Ht(e,t){if(1===e)return""+t;if(2===e)return t+".y";if(3===e)return t+".z";if(4===e)return t+".w";throw Error("Cumulative sum for rank "+e+" is not yet supported")}var Kt,Xt,Yt=function(){function e(e,t,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=e,this.blockSize=t,this.dataFormat=n,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int h = "+this.getHeightCoordString()+";\n int w = "+this.getWidthCoordString()+";\n int d = "+this.getDepthCoordString()+";\n\n int in_h = h / "+t+";\n int offset_h = imod(h, "+t+");\n int in_w = w / "+t+";\n int offset_w = imod(w, "+t+");\n int offset_d = (offset_h * "+t+" + offset_w) *\n "+this.getOutputDepthSize()+";\n int in_d = d + offset_d;\n\n float result = "+this.getInputSamplingString()+";\n setOutput(result);\n }\n "}return e.prototype.getHeightCoordString=function(){return"NHWC"===this.dataFormat?"coords[1]":"coords[2]"},e.prototype.getWidthCoordString=function(){return"NHWC"===this.dataFormat?"coords[2]":"coords[3]"},e.prototype.getDepthCoordString=function(){return"NHWC"===this.dataFormat?"coords[3]":"coords[1]"},e.prototype.getOutputDepthSize=function(){return"NHWC"===this.dataFormat?this.outputShape[3]:this.outputShape[1]},e.prototype.getInputSamplingString=function(){return"NHWC"===this.dataFormat?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"},e}();function Jt(e,t){return[t,e]}function Zt(e,t){return e*t}function Qt(e,t,n){var r=function(e,t){if(e%t!=0)throw new Error("unpackedSize ("+e+") must be a multiple of "+t);return e/t}(e.length,n);if(t.length= "+r);for(var a=0,i=0;ir||n>r)throw a="["+t+"x"+n+"]",new Error("Requested texture size "+a+" greater than WebGL maximum on this browser / GPU ["+r+"x"+r+"].")}function Nn(e){return Rn(e,function(){return e.createFramebuffer()},"Unable to create WebGLFramebuffer.")}function Sn(e,t,n,r,a,i,o){var s=e.getAttribLocation(t,n);return-1!==s&&(on(e,function(){return e.bindBuffer(e.ARRAY_BUFFER,r)}),on(e,function(){return e.vertexAttribPointer(s,a,e.FLOAT,!1,i,o)}),on(e,function(){return e.enableVertexAttribArray(s)}),!0)}function On(e,t,n){Dn(e,n),on(e,function(){return e.activeTexture(e.TEXTURE0+n)}),on(e,function(){return e.bindTexture(e.TEXTURE_2D,t)})}function kn(e,t,n){return Rn(e,function(){return e.getUniformLocation(t,n)},'uniform "'+n+'" not present in program.')}function In(e,t,n){return e.getUniformLocation(t,n)}function Cn(e,t,n,r,a){on(e,function(){return On(e,n,a)}),on(e,function(){return e.uniform1i(r,a)})}function Pn(e,t,n){on(e,function(){return e.bindFramebuffer(e.FRAMEBUFFER,n)}),on(e,function(){return e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0)})}function An(e,t){on(e,function(){return e.bindFramebuffer(e.FRAMEBUFFER,t)}),on(e,function(){return e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0)})}function Tn(e){var t=e.checkFramebufferStatus(e.FRAMEBUFFER);if(t!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+Mn(e,t))}function Mn(e,t){switch(t){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return"unknown error "+t}}function Rn(e,t,n){var r=on(e,function(){return t()});if(null==r)throw new Error(n);return r}function Dn(e,t){var n=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=t+e.TEXTURE0;if(rn)throw new Error("textureUnit must be in [gl.TEXTURE0, gl.TEXTURE"+n+"].")}function jn(e,t){2!==t.length&&(t=k(t).newShape);var n=wn(e),r=b(t);return t.length<=1&&r<=n?[r,1]:2===t.length&&t[0]<=n&&t[1]<=n?t:3===t.length&&t[0]<=n&&t[1]*t[2]<=n?[t[0],t[1]*t[2]]:4===t.length&&t[0]<=n&&t[1]*t[2]*t[3]<=n?[t[0],t[1]*t[2]*t[3]]:E(r)}var Ln=Object.freeze({createWebGLRenderingContext:rn,createWebGLRenderingContextFromCanvas:an,callAndCheck:on,enableDebugWebGLErrorChecking:un,checkWebGLError:ln,getWebGLErrorMessage:cn,getExtensionOrThrow:fn,createVertexShader:pn,createFragmentShader:hn,createProgram:mn,linkProgram:gn,validateProgram:yn,createStaticVertexBuffer:vn,createStaticIndexBuffer:bn,queryMaxTextureSize:wn,getNumChannels:xn,createTexture:_n,validateTextureSize:En,createFramebuffer:Nn,bindVertexBufferToProgramAttribute:Sn,bindTextureUnit:On,unbindTextureUnit:function(e,t){Dn(e,t),on(e,function(){return e.activeTexture(e.TEXTURE0+t)}),on(e,function(){return e.bindTexture(e.TEXTURE_2D,null)})},getProgramUniformLocationOrThrow:kn,getProgramUniformLocation:In,bindTextureToProgramUniformSampler:Cn,bindCanvasToFramebuffer:function(e){on(e,function(){return e.bindFramebuffer(e.FRAMEBUFFER,null)}),on(e,function(){return e.viewport(0,0,e.canvas.width,e.canvas.height)}),on(e,function(){return e.scissor(0,0,e.canvas.width,e.canvas.height)})},bindColorTextureToFramebuffer:Pn,unbindColorTextureFromFramebuffer:An,validateFramebuffer:Tn,getFramebufferErrorMessage:Mn,getTextureShapeFromLogicalShape:jn});function Bn(e){var t,n={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};return on(t=null!=e?an(e,n):rn(n),function(){return t.disable(t.DEPTH_TEST)}),on(t,function(){return t.disable(t.STENCIL_TEST)}),on(t,function(){return t.disable(t.BLEND)}),on(t,function(){return t.disable(t.DITHER)}),on(t,function(){return t.disable(t.POLYGON_OFFSET_FILL)}),on(t,function(){return t.disable(t.SAMPLE_COVERAGE)}),on(t,function(){return t.enable(t.SCISSOR_TEST)}),on(t,function(){return t.enable(t.CULL_FACE)}),on(t,function(){return t.cullFace(t.BACK)}),t}function zn(e){return pn(e,"\n precision highp float;\n attribute vec3 clipSpacePos;\n attribute vec2 uv;\n varying vec2 resultUV;\n\n void main() {\n gl_Position = vec4(clipSpacePos, 1);\n resultUV = uv;\n }")}function Fn(e){return vn(e,new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]))}function Vn(e){return bn(e,new Uint16Array([0,1,2,2,1,3]))}function Un(e,t){var n,r,a,i,o,s,u,l=e;return 2===me.get("WEBGL_VERSION")?(n=l.R32F,r=l.R16F,a=l.RGBA32F,i=l.RED,o=4,s=1,u=l.HALF_FLOAT):(n=e.RGBA,r=e.RGBA,a=l.RGBA,i=e.RGBA,o=4,s=4,u=null!=t?t.HALF_FLOAT_OES:null),{internalFormatFloat:n,internalFormatHalfFloat:r,internalFormatPackedFloat:a,textureFormatFloat:i,downloadTextureFormat:e.RGBA,downloadUnpackNumChannels:o,defaultNumChannels:s,textureTypeHalfFloat:u}}function Wn(e,t,n,r,a,i){En(e,t,n);var o=_n(e),s=e.TEXTURE_2D;return on(e,function(){return e.bindTexture(s,o)}),on(e,function(){return e.texParameteri(s,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE)}),on(e,function(){return e.texParameteri(s,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)}),on(e,function(){return e.texParameteri(s,e.TEXTURE_MIN_FILTER,e.NEAREST)}),on(e,function(){return e.texParameteri(s,e.TEXTURE_MAG_FILTER,e.NEAREST)}),on(e,function(){return e.texImage2D(s,0,r,t,n,0,a,i,null)}),on(e,function(){return e.bindTexture(e.TEXTURE_2D,null)}),o}function qn(e,t,n,r){var a=Jt(t,n);return Wn(e,a[0],a[1],r.internalFormatFloat,r.textureFormatFloat,e.FLOAT)}function $n(e,t,n,r){var a=Jt(t,n);return Wn(e,a[0],a[1],r.internalFormatFloat,r.textureFormatFloat,r.textureTypeHalfFloat)}function Gn(e,t,n,r){var a=Jt(t,n);return Wn(e,a[0],a[1],e.RGBA,e.RGBA,e.UNSIGNED_BYTE)}function Hn(e,t,n,r){var a=en(t,n);return Wn(e,a[0],a[1],r.internalFormatPackedFloat,e.RGBA,e.FLOAT)}function Kn(e,t,n){return on(e,function(){return e.bindBuffer(e.ARRAY_BUFFER,n)}),Sn(e,t,"clipSpacePos",n,3,20,0)&&Sn(e,t,"uv",n,2,20,12)}function Xn(e,t,n){on(e,function(){return e.bindTexture(e.TEXTURE_2D,t)}),on(e,function(){return e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n)}),on(e,function(){return e.bindTexture(e.TEXTURE_2D,null)})}function Yn(e,t,n,r,a,i){En(e,n,r),on(e,function(){return e.bindTexture(e.TEXTURE_2D,t)}),on(e,function(){return e.texSubImage2D(e.TEXTURE_2D,0,0,0,n,r,i,e.FLOAT,a)}),on(e,function(){return e.bindTexture(e.TEXTURE_2D,null)})}function Jn(e,t,n,r,a,i,o){var s,u=Jt(n,r),l=u[0],c=u[1];1===o.defaultNumChannels?s=a:function(e,t,n){var r=Zt(e.length,n);if(t.length= "+r);for(var a=0,i=0;i= "+a);for(var i=en(t,n),o=i[0],s=i[1],u=n%2==1,l=t%2==1,c=Math.floor(n/2),f=Math.floor(t/2),p=u?4:0,h=n,d=0,m=0;m= "+a);for(var i=n%2==1,o=t%2==1,s=Math.floor(n/2),u=Math.floor(t/2),l=en(t,n),c=l[0],f=l[1],p=i?4:0,h=n+(i?1:0),d=0,m=0,g=n,y=0;y0?(t=this.beginQuery(),this.endQuery(),n=function(){return r.isQueryAvailable(t,me.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}):n=function(){return!0};return{query:t,isFencePassed:n}},e.prototype.downloadMatrixFromPackedTexture=function(e,t,n){var r=this;return this.downloadMatrixDriver(e,function(){return rr(r.gl,t,n,r.textureConfig)})},e.prototype.createProgram=function(e){this.throwIfDisposed();var t=this.gl,n=hn(t,e),r=zn(t),a=mn(t);return on(t,function(){return t.attachShader(a,r)}),on(t,function(){return t.attachShader(a,n)}),gn(t,a),this.autoDebugValidate&&yn(t,a),this.vertexAttrsAreBound||(this.setProgram(a),this.vertexAttrsAreBound=Kn(t,this.program,this.vertexBuffer)),a},e.prototype.deleteProgram=function(e){var t=this;this.throwIfDisposed(),e===this.program&&(this.program=null),null!=e&&on(this.gl,function(){return t.gl.deleteProgram(e)})},e.prototype.setProgram=function(e){var t=this;this.throwIfDisposed(),this.program=e,null!=this.program&&this.autoDebugValidate&&yn(this.gl,this.program),on(this.gl,function(){return t.gl.useProgram(e)})},e.prototype.getUniformLocation=function(e,t,n){return void 0===n&&(n=!0),this.throwIfDisposed(),n?kn(this.gl,e,t):In(this.gl,e,t)},e.prototype.getAttributeLocation=function(e,t){var n=this;return this.throwIfDisposed(),on(this.gl,function(){return n.gl.getAttribLocation(e,t)})},e.prototype.getUniformLocationNoThrow=function(e,t){return this.throwIfDisposed(),this.gl.getUniformLocation(e,t)},e.prototype.setInputMatrixTexture=function(e,t,n){this.throwIfDisposed(),this.throwIfNoProgram(),Cn(this.gl,this.program,e,t,n)},e.prototype.setOutputMatrixTexture=function(e,t,n){this.setOutputMatrixTextureDriver(e,n,t)},e.prototype.setOutputPackedMatrixTexture=function(e,t,n){this.throwIfDisposed();var r=en(t,n),a=r[0],i=r[1];this.setOutputMatrixTextureDriver(e,a,i)},e.prototype.setOutputMatrixWriteRegion=function(e,t,n,r){this.setOutputMatrixWriteRegionDriver(n,e,r,t)},e.prototype.setOutputPackedMatrixWriteRegion=function(e,t,n,r){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")},e.prototype.debugValidate=function(){null!=this.program&&yn(this.gl,this.program),Tn(this.gl)},e.prototype.executeProgram=function(){this.throwIfDisposed(),this.throwIfNoProgram();var e=this.gl;this.autoDebugValidate&&this.debugValidate(),on(e,function(){return e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0)})},e.prototype.blockUntilAllProgramsCompleted=function(){var e=this;this.throwIfDisposed(),on(this.gl,function(){return e.gl.finish()})},e.prototype.getQueryTimerExtension=function(){return null==this.disjointQueryTimerExtension&&(this.disjointQueryTimerExtension=fn(this.gl,2===me.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension},e.prototype.getQueryTimerExtensionWebGL2=function(){return this.getQueryTimerExtension()},e.prototype.getQueryTimerExtensionWebGL1=function(){return this.getQueryTimerExtension()},e.prototype.beginQuery=function(){if(2===me.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var e=this.gl,t=this.getQueryTimerExtensionWebGL2(),n=e.createQuery();return e.beginQuery(t.TIME_ELAPSED_EXT,n),n}var r=this.getQueryTimerExtensionWebGL1(),a=r.createQueryEXT();return r.beginQueryEXT(r.TIME_ELAPSED_EXT,a),a},e.prototype.endQuery=function(){if(2!==me.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var e=this.getQueryTimerExtensionWebGL1();e.endQueryEXT(e.TIME_ELAPSED_EXT)}else{var t=this.gl,n=this.getQueryTimerExtensionWebGL2();t.endQuery(n.TIME_ELAPSED_EXT)}},e.prototype.waitForQueryAndGetTime=function(e){return l(this,void 0,void 0,function(){var t=this;return c(this,function(n){switch(n.label){case 0:return[4,S(function(){return t.isQueryAvailable(e,me.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))})];case 1:return n.sent(),[2,this.getQueryTime(e,me.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))]}})})},e.prototype.getQueryTime=function(e,t){if(0===t)return null;if(2===t){var n=this.gl;return n.getQueryParameter(e,n.QUERY_RESULT)/1e6}var r=this.getQueryTimerExtensionWebGL1();return r.getQueryObjectEXT(e,r.QUERY_RESULT_EXT)/1e6},e.prototype.isQueryAvailable=function(e,t){if(0===t)return!0;if(2===t){var n=this.gl,r=this.getQueryTimerExtensionWebGL2(),a=n.getQueryParameter(e,n.QUERY_RESULT_AVAILABLE);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),a&&!this.disjoint}return a=(r=this.getQueryTimerExtensionWebGL1()).getQueryObjectEXT(e,r.QUERY_RESULT_AVAILABLE_EXT),null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),a&&!this.disjoint},e.prototype.pollFence=function(e){var t=this;return new Promise(function(n){t.addItemToPoll(function(){return e.isFencePassed()},function(){return n()})})},e.prototype.pollItems=function(){for(var e=function(e){for(var t=0,n=e.length-1,r=-1;t<=n;){var a=t+n>>1;e[a]()?(r=a,t=a+1):n=a-1}return r}(this.itemsToPoll.map(function(e){return e.isDoneFn})),t=0;t<=e;++t)(0,this.itemsToPoll[t].resolveFn)();this.itemsToPoll=this.itemsToPoll.slice(e+1)},e.prototype.addItemToPoll=function(e,t){var n=this;this.itemsToPoll.push({isDoneFn:e,resolveFn:t}),this.itemsToPoll.length>1||S(function(){return n.pollItems(),0===n.itemsToPoll.length})},e.prototype.bindTextureToFrameBuffer=function(e){this.throwIfDisposed(),Pn(this.gl,e,this.framebuffer),this.autoDebugValidate&&Tn(this.gl)},e.prototype.unbindTextureToFrameBuffer=function(){null!=this.outputTexture?(Pn(this.gl,this.outputTexture,this.framebuffer),this.autoDebugValidate&&Tn(this.gl)):An(this.gl,this.framebuffer)},e.prototype.downloadMatrixDriver=function(e,t){this.bindTextureToFrameBuffer(e);var n=t();return this.unbindTextureToFrameBuffer(),n},e.prototype.setOutputMatrixTextureDriver=function(e,t,n){this.throwIfDisposed();var r=this.gl;Pn(r,e,this.framebuffer),this.autoDebugValidate&&Tn(r),this.outputTexture=e,on(r,function(){return r.viewport(0,0,t,n)}),on(r,function(){return r.scissor(0,0,t,n)})},e.prototype.setOutputMatrixWriteRegionDriver=function(e,t,n,r){var a=this;this.throwIfDisposed(),on(this.gl,function(){return a.gl.scissor(e,t,n,r)})},e.prototype.throwIfDisposed=function(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")},e.prototype.throwIfNoProgram=function(){if(null==this.program)throw new Error("No GPU program is currently set.")},e}();function or(e,t){if(e.length!==t.length)throw Error("Binary was compiled with "+e.length+" inputs, but was executed with "+t.length+" inputs");e.forEach(function(e,n){var r=e.logicalShape,a=t[n],i=a.shape;if(!w(r,i))throw Error("Binary was compiled with different shapes than the current args. Shapes "+r+" and "+i+" must match");if(!e.isUniform||!a.isUniform){var o=e.texShape,s=a.isUniform?null:a.texData.texShape;if(!w(o,s))throw Error("Binary was compiled with different texture shapes than the current args. Shape "+o+" and "+s+" must match")}})}var sr=function(){function e(e,t,n){this.variableNames=["probs"],this.outputShape=[e,n],this.userCode="\n uniform float seed;\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n\n float r = random(seed);\n float cdf = 0.0;\n\n for (int i = 0; i < "+(t-1)+"; i++) {\n cdf += getProbs(batch, i);\n\n if (r < cdf) {\n setOutput(float(i));\n return;\n }\n }\n\n // If no other event happened, last event happened.\n setOutput(float("+(t-1)+"));\n }\n "}return e.prototype.getCustomSetupFunc=function(e){var t=this;return function(n,r){null==t.seedLoc&&(t.seedLoc=n.getUniformLocation(r,"seed")),n.gl.uniform1f(t.seedLoc,e)}},e}(),ur=function(e){this.variableNames=["A"],this.outputShape=e,this.userCode="\n void main() {\n ivec2 rc = getOutputCoords();\n\n int r = rc.x;\n int c = rc.y;\n int rp1 = r + 1;\n int cp1 = c + 1;\n\n bool cEdge = cp1 >= "+e[1]+";\n bool rEdge = rp1 >= "+e[0]+";\n\n gl_FragColor = vec4(\n getA(r, c),\n cEdge ? 0. : getA(r, cp1),\n rEdge ? 0. : getA(rp1, c),\n rEdge || cEdge ? 0. : getA(rp1, cp1)\n );\n }\n "},lr=function(e,t,n){if(this.variableNames=["x"],"avg"===t&&n)throw new Error("Cannot compute positions for average pool.");var r=e.filterHeight,a=e.filterWidth,i=e.strideHeight,o=e.strideWidth,s=e.padInfo.top,u=e.padInfo.left;this.outputShape=e.outShape;var l="avg"===t,c="0.0";if(l||(c="-1.0 / 0.0"),n)this.userCode="\n const ivec2 strides = ivec2("+i+", "+o+");\n const ivec2 pads = ivec2("+s+", "+u+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n float avgValue = 0.0;\n\n for (int wR = 0; wR < "+r+"; wR++) {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+a+"; wC++) {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= "+e.inWidth+") {\n continue;\n }\n\n float value = getX(batch, xR, xC, d);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value >= currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition = wR * "+a+" + wC;\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n ";else{var f=t+"("+t+"("+t+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"avg"===t&&(f="avgValue / count");var p=4*Math.floor(a/4),h=a%4,d="\n if ("+l+") {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = max(values, minMaxValue);\n }\n ";this.userCode="\n const ivec2 strides = ivec2("+i+", "+o+");\n const ivec2 pads = ivec2("+s+", "+u+");\n const float initializationValue = "+c+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xR, int xC, int d) {\n if (xC < 0 || xC >= "+e.inWidth+") {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xR, xC, d);\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n vec4 minMaxValue = vec4("+c+");\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wR = 0; wR < "+r+"; wR++) {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+p+"; wC += 4) {\n int xC = xCCorner + wC;\n\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + 1, d),\n getValue(batch, xR, xC + 2, d),\n getValue(batch, xR, xC + 3, d)\n );\n\n "+d+"\n }\n\n int xC = xCCorner + "+p+";\n if ("+(1===h)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+d+"\n } else if ("+(2===h)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + 1, d),\n initializationValue,\n initializationValue\n );\n\n "+d+"\n } else if ("+(3===h)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + 1, d),\n getValue(batch, xR, xC + 2, d),\n initializationValue\n );\n\n "+d+"\n }\n }\n setOutput("+f+");\n }\n "}},cr=function(){function e(e){this.variableNames=["source"],this.outputShape=e,this.rank=e.length;var t=qt(this.rank),n=function(e){if(1===e)return"sourceLoc";if(2===e)return"sourceLoc.x, sourceLoc.y";if(3===e)return"sourceLoc.x, sourceLoc.y, sourceLoc.z";if(4===e)return"sourceLoc.x, sourceLoc.y, sourceLoc.z, sourceLoc.w";throw Error("Slicing for rank "+e+" is not yet supported")}(this.rank);this.userCode="\n uniform "+t+" start;\n\n void main() {\n "+t+" sourceLoc = start + getOutputCoords();\n setOutput(getSource("+n+"));\n }\n "}return e.prototype.getCustomSetupFunc=function(e){var t=this;if(e.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the length of start ("+e.length+")");return function(n,r){if(null!=t.startLoc||(t.startLoc=n.getUniformLocationNoThrow(r,"start"),null!=t.startLoc))if(1===t.rank)n.gl.uniform1i(t.startLoc,e[0]);else if(2===t.rank)n.gl.uniform2i(t.startLoc,e[0],e[1]);else if(3===t.rank)n.gl.uniform3i(t.startLoc,e[0],e[1],e[2]);else{if(4!==t.rank)throw Error("Slicing for rank "+t.rank+" is not yet supported");n.gl.uniform4i(t.startLoc,e[0],e[1],e[2],e[3])}}},e}(),fr=function(){function e(e){this.gpgpu=e,this.numUsedTextures=0,this.numFreeTextures=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}return e.prototype.acquireTexture=function(e,t){var n,r=pr(t),a=hr(e,r);if(a in this.freeTextures||(this.freeTextures[a]=[]),a in this.usedTextures||(this.usedTextures[a]=[]),this.freeTextures[a].length>0){this.numFreeTextures--,this.numUsedTextures++,this.log();var i=this.freeTextures[a].shift();return this.usedTextures[a].push(i),i}return this.numUsedTextures++,this.log(),r===Xt.PACKED_2X2_FLOAT32?n=this.gpgpu.createPackedMatrixTexture(e[0],e[1]):r===Xt.UNPACKED_FLOAT32?n=this.gpgpu.createFloat32MatrixTexture(e[0],e[1]):r===Xt.UNPACKED_FLOAT16?n=this.gpgpu.createFloat16MatrixTexture(e[0],e[1]):r===Xt.PACKED_4X1_UNSIGNED_BYTE&&(n=this.gpgpu.createUnsignedBytesMatrixTexture(e[0],e[1])),this.usedTextures[a].push(n),n},e.prototype.releaseTexture=function(e,t,n){var r=hr(t,pr(n));r in this.freeTextures||(this.freeTextures[r]=[]),this.freeTextures[r].push(e),this.numFreeTextures++,this.numUsedTextures--;var a=this.usedTextures[r],i=a.indexOf(e);if(i<0)throw new Error("Cannot release a texture that was never provided by this texture manager");a.splice(i,1),this.log()},e.prototype.log=function(){if(this.logEnabled){var e=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",this.numFreeTextures+" / "+this.numUsedTextures,"("+e+")")}},e.prototype.getNumUsedTextures=function(){return this.numUsedTextures},e.prototype.getNumFreeTextures=function(){return this.numFreeTextures},e.prototype.dispose=function(){var e=this;if(null!=this.freeTextures){for(var t in this.freeTextures)this.freeTextures[t].forEach(function(t){e.gpgpu.deleteMatrixTexture(t)});for(var t in this.usedTextures)this.usedTextures[t].forEach(function(t){e.gpgpu.deleteMatrixTexture(t)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0}},e}();function pr(e){if(e===Kt.DOWNLOAD||e===Kt.PIXELS)return Xt.PACKED_4X1_UNSIGNED_BYTE;if(e===Kt.UPLOAD)return Xt.UNPACKED_FLOAT32;if(e===Kt.RENDER)return me.get("WEBGL_RENDER_FLOAT32_ENABLED")?Xt.UNPACKED_FLOAT32:Xt.UNPACKED_FLOAT16;if(e===Kt.PACK)return Xt.PACKED_2X2_FLOAT32;throw new Error("Unknown logical texture type "+e)}function hr(e,t){return e[0]+"_"+e[1]+"_"+t}var dr=1.7580993408473768,mr=1.0507009873554805,gr=function(){function e(e,t){this.variableNames=["A"],this.outputShape=e,this.userCode="\n uniform float NAN;\n float unaryOperation(float x) {\n "+t+"\n }\n\n void main() {\n float x = getAAtOutCoords();\n float y = unaryOperation(x);\n\n setOutput(y);\n }\n "}return e.prototype.getCustomSetupFunc=function(){var e=this;return function(t,n){null==e.startLoc&&(e.startLoc=t.getUniformLocationNoThrow(n,"NAN"),null==e.startLoc)||t.gl.uniform1f(e.startLoc,NaN)}},e}(),yr="if (isNaN(x)) return x;",vr=Je({concat_:function(e,t){void 0===t&&(t=0),d(e.length>=1,"Pass at least one tensor to concat");var n=Ye(e,"tensors","concat");t=Be(t,n[0].shape)[0];var r=We(n.map(function(e){return e.shape}),t);if(0===b(r))return nt([],r);if(1===(n=n.filter(function(e){return e.size>0})).length)return n[0];var a=n.map(function(e){return e.shape});!function(e,t){var n=e[0].length;e.forEach(function(e,t){d(e.length===n,"Error in concat"+n+"D: rank of tensors["+t+"] must be the same as the rank of the rest ("+n+")")}),d(t>=0&&t>>0,t=(r*=t)>>>0,t+=4294967296*(r-=t)}return 2.3283064365386963e-10*(t>>>0)});n.next=function(){var e=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=e-(n.c=0|e)},n.c=1,n.s0=r(" "),n.s1=r(" "),n.s2=r(" "),n.s0-=r(e),n.s0<0&&(n.s0+=1),n.s1-=r(e),n.s1<0&&(n.s1+=1),n.s2-=r(e),n.s2<0&&(n.s2+=1),r=null}(e),a=t&&t.state,i=n.next;return i.int32=function(){return 4294967296*n.next()|0},i.double=function(){return i()+1.1102230246251565e-16*(2097152*i()|0)},i.quick=i,a&&("object"==typeof a&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.alea=a}(0,e)}),Or=Nr(function(e){!function(e,t,n){function r(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t}function a(e,t){var n=new function(e){var t=this,n="";t.x=0,t.y=0,t.z=0,t.w=0,t.next=function(){var e=t.x^t.x<<11;return t.x=t.y,t.y=t.z,t.z=t.w,t.w^=t.w>>>19^e^e>>>8},e===(0|e)?t.x=e:n+=e;for(var r=0;r>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.xor128=a}(0,e)}),kr=Nr(function(e){!function(e,t,n){function r(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t.v=e.v,t.d=e.d,t}function a(e,t){var n=new function(e){var t=this,n="";t.next=function(){var e=t.x^t.x>>>2;return t.x=t.y,t.y=t.z,t.z=t.w,t.w=t.v,(t.d=t.d+362437|0)+(t.v=t.v^t.v<<4^e^e<<1)|0},t.x=0,t.y=0,t.z=0,t.w=0,t.v=0,e===(0|e)?t.x=e:n+=e;for(var r=0;r>>4),t.next()}(e),a=t&&t.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.xorwow=a}(0,e)}),Ir=Nr(function(e){!function(e,t,n){function r(e,t){return t.x=e.x.slice(),t.i=e.i,t}function a(e,t){null==e&&(e=+new Date);var n=new function(e){var t=this;t.next=function(){var e,n,r=t.x,a=t.i;return e=r[a],n=(e^=e>>>7)^e<<24,n^=(e=r[a+1&7])^e>>>10,n^=(e=r[a+3&7])^e>>>3,n^=(e=r[a+4&7])^e<<7,e=r[a+7&7],n^=(e^=e<<13)^e<<9,r[a]=n,t.i=a+1&7,n},function(e,t){var n,r=[];if(t===(0|t))r[0]=t;else for(t=""+t,n=0;n0;--n)e.next()}(t,e)}(e),a=t&&t.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&(a.x&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.xorshift7=a}(0,e)}),Cr=Nr(function(e){!function(e,t,n){function r(e,t){return t.i=e.i,t.w=e.w,t.X=e.X.slice(),t}function a(e,t){null==e&&(e=+new Date);var n=new function(e){var t=this;t.next=function(){var e,n,r=t.w,a=t.X,i=t.i;return t.w=r=r+1640531527|0,n=a[i+34&127],e=a[i=i+1&127],n^=n<<13,e^=e<<17,n^=n>>>15,e^=e>>>12,n=a[i]=n^e,t.i=i,n+(r^r>>>16)|0},function(e,t){var n,r,a,i,o,s=[],u=128;for(t===(0|t)?(r=t,t=null):(t+="\0",r=0,u=Math.max(u,t.length)),a=0,i=-32;i>>15,r^=r<<4,r^=r>>>13,i>=0&&(o=o+1640531527|0,a=0==(n=s[127&i]^=r+o)?a+1:0);for(a>=128&&(s[127&(t&&t.length||0)]=-1),a=127,i=512;i>0;--i)r=s[a+34&127],n=s[a=a+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,s[a]=r^n;e.w=o,e.X=s,e.i=a}(t,e)}(e),a=t&&t.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&(a.X&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.xor4096=a}(0,e)}),Pr=Nr(function(e){!function(e,t,n){function r(e,t){return t.a=e.a,t.b=e.b,t.c=e.c,t.d=e.d,t}function a(e,t){var n=new function(e){var t=this,n="";t.next=function(){var e=t.b,n=t.c,r=t.d,a=t.a;return e=e<<25^e>>>7^n,n=n-r|0,r=r<<24^r>>>8^a,a=a-e|0,t.b=e=e<<20^e>>>12^n,t.c=n=n-r|0,t.d=r<<16^n>>>16^a,t.a=a-e|0},t.a=0,t.b=0,t.c=-1640531527,t.d=1367130551,e===Math.floor(e)?(t.a=e/4294967296|0,t.b=0|e):n+=e;for(var r=0;r>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.tychei=a}(0,e)}),Ar=Nr(function(e){!function(t,r){var a,i=this,o=256,s=6,u="random",l=r.pow(o,s),c=r.pow(2,52),f=2*c,p=o-1;function h(e,n,h){var y=[],v=m(function e(t,n){var r,a=[],i=typeof t;if(n&&"object"==i)for(r in t)try{a.push(e(t[r],n-1))}catch(e){}return a.length?a:"string"==i?t:t+"\0"}((n=1==n?{entropy:!0}:n||{}).entropy?[e,g(t)]:null==e?function(){try{var e;return a&&(e=a.randomBytes)?e=e(o):(e=new Uint8Array(o),(i.crypto||i.msCrypto).getRandomValues(e)),g(e)}catch(e){var n=i.navigator,r=n&&n.plugins;return[+new Date,i,r,i.screen,g(t)]}}():e,3),y),b=new function(e){var t,n=e.length,r=this,a=0,i=r.i=r.j=0,s=r.S=[];for(n||(e=[n++]);a=f;)e/=2,t/=2,n>>>=1;return(e+n)/t};return w.int32=function(){return 0|b.g(4)},w.quick=function(){return b.g(4)/4294967296},w.double=w,m(g(b.S),t),(n.pass||h||function(e,t,n,a){return a&&(a.S&&d(a,b),e.state=function(){return d(b,{})}),n?(r[u]=e,t):e})(w,v,"global"in n?n.global:this==r,n.state)}function d(e,t){return t.i=e.i,t.j=e.j,t.S=e.S.slice(),t}function m(e,t){for(var n,r=e+"",a=0;a=1||0===o);var s=Math.sqrt(-2*Math.log(o)/o);t=this.mean+this.stdDev*a*s,n=this.mean+this.stdDev*i*s,this.truncated&&!this.isValidTruncated(t)||(r=!0)}return this.truncated&&!this.isValidTruncated(n)||(this.nextVal=this.convertValue(n)),this.convertValue(t)},e.prototype.convertValue=function(e){return null==this.dtype||"float32"===this.dtype?e:Math.round(e)},e.prototype.isValidTruncated=function(e){return e<=this.upper&&e>=this.lower},e}();function Rr(e,t){return l(this,void 0,void 0,function(){var n,r,a,i,o,s,u,l,f,p,h,d,m,g,y,v,b,w,x,_;return c(this,function(c){switch(c.label){case 0:if(2!==(n=Xe(e,"img","toPixels","int32")).rank&&3!==n.rank)throw new Error("toPixels only supports rank 2 or 3 tensors, got rank "+n.rank+".");if(r=n.shape.slice(0,2),a=r[0],i=r[1],(o=2===n.rank?1:n.shape[2])>4||2===o)throw new Error("toPixels only supports depth of size 1, 3 or 4 but got "+o);return s=n.min(),u=n.max(),[4,s.data()];case 1:return l=c.sent()[0],[4,u.data()];case 2:if(f=c.sent()[0],s.dispose(),u.dispose(),"float32"===n.dtype){if(l<0||f>1)throw new Error("Tensor values for a float32 Tensor must be in the range [0 - 1] but got range ["+l+" - "+f+"].")}else{if("int32"!==n.dtype)throw new Error("Unsupported type for toPixels: "+n.dtype+". Please use float32 or int32 tensors.");if(l<0||f>255)throw new Error("Tensor values for a int32 Tensor must be in the range [0 - 255] but got range ["+l+" - "+f+"].")}return[4,n.data()];case 3:for(p=c.sent(),h="float32"===n.dtype?255:1,d=new Uint8ClampedArray(i*a*4),m=0;m=1+t.length,"input rank should be > than [blockShape] but got "+r.rank),d(n.length===t.length,"crops.shape[0] must be equal to [blockShape] but got "+n.length),d(r.shape[0]%a==0,"input tensor batch must be divisible by prod( blockShape )"),me.engine.runKernel(function(e){return e.batchToSpaceND(r,t,n)},{$x:r},function(e){return{$x:function(){return e.spaceToBatchND(t,n)}}})}}),Br=Je({cast_:function(e,t){var n=Xe(e,"x","cast");return me.engine.runKernel(function(e){return e.cast(n,t)},{$x:n},function(e){return{$x:function(){return e.clone()}}})}}),zr=Je({clone_:function(e){var t=Xe(e,"x","clone");return me.engine.runKernel(function(e){return Q.make(t.shape,{dataId:t.dataId},t.dtype)},{$x:t},function(e){return{$x:function(){return e.toFloat()}}})}}),Fr=Je({cumsum_:function(e,t,n,r){void 0===t&&(t=0),void 0===n&&(n=!1),void 0===r&&(r=!1);var a=Xe(e,"x","cumsum"),i=Fe([t|=0],a.rank),o=a;null!=i&&(o=a.transpose(i));var s=Ue(1,a.rank)[0],u=me.engine.runKernel(function(e){return e.cumsum(o,s,n,r)},{permutedX:o},function(e){return{permutedX:function(){return e.cumsum(t,n,!r)}}});return null!=i&&(u=u.transpose(i)),u}}),Vr=Je({depthToSpace_:function(e,t,n){void 0===n&&(n="NHWC");var r=Xe(e,"x","depthToSpace"),a="NHWC"===n?r.shape[1]:r.shape[2],i="NHWC"===n?r.shape[2]:r.shape[3],o="NHWC"===n?r.shape[3]:r.shape[1];return d(a*t>=0,"Negative dimension size caused by overflow when multiplying\n "+a+" and "+t+" for depthToSpace with input shape\n "+r.shape),d(i*t>=0,"Negative dimension size caused by overflow when multiplying\n "+i+" and "+t+" for depthToSpace with input shape\n "+r.shape),d(o%(t*t)==0,"Dimension size must be evenly divisible by "+t*t+" but is "+o+" for depthToSpace with input shape "+r.shape),me.engine.runKernel(function(e){return e.depthToSpace(r,t,n)},{$x:r})}}),Ur=Je({expandDims_:function(e,t){void 0===t&&(t=0);var n=Xe(e,"x","expandDims");d(t<=n.rank,"Axis must be <= rank of the tensor");var r=n.shape.slice();return t<0&&(d(-(n.rank+1)<=t,"Axis must be in the interval ["+-(n.rank+1)+", "+n.rank+"]"),t=n.rank+t+1),r.splice(t,0,1),ta(n,r)}}),Wr=Je({eye_:function(e,t,n,r){void 0===r&&(r="float32"),null==t&&(t=e);for(var a=Dr([e,t],r),i=e<=t?e:t,o=0;o4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");return me.engine.fromPixels(e,t)}}),$r=Je({multinomial_:function(e,t,n,r){void 0===r&&(r=!1);var a=Xe(e,"logits","multinomial"),i=a.size,o=a.rank;if(i<2)throw new Error("Error in multinomial: you need at least 2 outcomes, but got "+i+".");if(o>2)throw new Error("Rank of probabilities must be 1 or 2, but is "+o);n=n||Math.random();var s=1===o?a.as2D(1,-1):a,u=me.engine.runKernel(function(e){return e.multinomial(s,r,t,n)},{logits2D:s});return 1===o?u.as1D():u}}),Gr=Je({oneHot_:function(e,t,n,r){void 0===n&&(n=1),void 0===r&&(r=0);var a=Xe(e,"indices","oneHot","int32");if(d("int32"===a.dtype,"Indices must be of dtype `int32`"),t<2)throw new Error("Error in oneHot: depth must be >=2, but it is "+t);return me.engine.runKernel(function(e){return e.oneHot(a,t,n,r)},{$indices:a},function(e){return{$indices:function(){return _t(a)}}})}}),Hr=Je({pad_:function(e,t,n){void 0===n&&(n=0);var r=Xe(e,"x","pad");if(0===r.rank)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");var a=t.map(function(e){return e[0]});return me.engine.runKernel(function(e){return e.pad(r,t,n)},{$x:r},function(e){return{$x:function(){return e.slice(a,r.shape)}}})}}),Kr=Je({pad1d_:function(e,t,n){return void 0===n&&(n=0),d(2===t.length,"Invalid number of paddings. Must be length of 2."),Hr(e,[t],n)}}),Xr=Je({pad2d_:function(e,t,n){return void 0===n&&(n=0),d(2===t.length&&2===t[0].length&&2===t[1].length,"Invalid number of paddings. Must be length of 2 each."),Hr(e,t,n)}}),Yr=Je({pad3d_:function(e,t,n){return void 0===n&&(n=0),d(3===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length,"Invalid number of paddings. Must be length of 2 each."),Hr(e,t,n)}}),Jr=Je({pad4d_:function(e,t,n){return void 0===n&&(n=0),d(4===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length&&2===t[3].length,"Invalid number of paddings. Must be length of 2 each."),Hr(e,t,n)}}),Zr=Je({rand_:function(e,t,n){var r=b(e),a=null;if(null==n||"float32"===n)a=new Float32Array(r);else if("int32"===n)a=new Int32Array(r);else{if("bool"!==n)throw new Error("Unknown data type "+n);a=new Uint8Array(r)}for(var i=0;i=1+t.length,"input rank "+r.rank+" should be > than [blockShape] "+t.length),d(n.length===t.length,"paddings.shape[0] "+n.length+" must be equal to [blockShape] "+t.length),d(r.shape.reduce(function(e,r,a){return a>0&&a<=t.length?e&&(r+n[a-1][0]+n[a-1][1])%t[a-1]==0:e},!0),"input spatial dimensions "+r.shape.slice(1)+" with paddings "+n.toString()+" must be divisible by blockShapes "+t.toString()),me.engine.runKernel(function(e){return e.spaceToBatchND(r,t,n)},{$x:r},function(e){return{$x:function(){return e.batchToSpaceND(t,n)}}})}}),ra=Je({squeeze_:function(e,t){var n=Xe(e,"x","squeeze");return ta(n,k(n.shape,t).newShape)}}),aa=Je({stack_:function(e,t){void 0===t&&(t=0);var n=Ye(e,"tensors","stack");if(d(n.length>=1,"Pass at least one tensor to tf.stack"),1===n.length)return n[0].expandDims(t);var r=n[0].rank,a=n[0].shape,i=n[0].dtype;d(t<=r,"Axis must be <= rank of the tensor"),n.forEach(function(e){m(a,e.shape,"All tensors passed to stack must have matching shapes")}),n.forEach(function(e){d(i===e.dtype,"All tensors passed to stack must have matching dtypes")});var o=n.map(function(e){return e.expandDims(t)});return vr(o,t)}}),ia=Je({tile_:function(e,t){var n=Xe(e,"x","tile");return d(n.rank===t.length,"Error in transpose: rank of input "+n.rank+" must match length of reps "+t+"."),me.engine.runKernel(function(e){return e.tile(n,t)},{$x:n},function(e){return{$x:function(){var r=_t(n);if(1===n.rank)for(var a=0;a FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;\n } else if(v < -FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 255.0) / 255.0;\n }\n\n highp vec4 c = vec4(0,0,0,0);\n\n highp float e = floor(log2(av));\n highp float m = exp2(fract(log2(av))) - 1.0;\n\n c[2] = floor(128.0 * m);\n m -= c[2] / 128.0;\n c[1] = floor(32768.0 * m);\n m -= c[1] / 32768.0;\n c[0] = floor(8388608.0 * m);\n\n highp float ebias = e + 127.0;\n c[3] = floor(ebias / 2.0);\n ebias -= c[3] * 2.0;\n c[2] += floor(ebias) * 128.0;\n\n c[3] += 128.0 * step(0.0, -v);\n\n return c / 255.0;\n }\n\n void main() {\n float x = getAAtOutCoords();\n gl_FragColor = encode_float(x);\n }\n "}(a);this.compileAndRun(s,[o],i,null,!1);var u=this.texData.get(i.dataId),l=this.gpgpu.downloadByteEncodedFloatMatrixFromOutputTexture(u.texture,u.texShape[0],u.texShape[1]);return o.dispose(),i.dispose(),l},e.prototype.time=function(e){return l(this,void 0,void 0,function(){var t,n,r,a,i,o;return c(this,function(s){switch(s.label){case 0:return t=this.activeTimers,n=[],r=!1,null==this.programTimersStack?(this.programTimersStack=n,r=!0):this.activeTimers.push(n),this.activeTimers=n,e(),a=y(this.activeTimers),this.activeTimers=t,r&&(this.programTimersStack=null),[4,Promise.all(a).then(function(e){var t=0;return e.forEach(function(e){return t+=e}),t})];case 1:return i=s.sent(),o={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:i,wallMs:null},this.uploadWaitMs=0,this.downloadWaitMs=0,[2,o]}})})},e.prototype.memory=function(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU}},e.prototype.startTimer=function(){return me.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?this.gpgpu.beginQuery():{startMs:performance.now(),endMs:null}},e.prototype.endTimer=function(e){return me.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(this.gpgpu.endQuery(),e):(e.endMs=performance.now(),e)},e.prototype.getQueryTime=function(e){return l(this,void 0,void 0,function(){var t;return c(this,function(n){return me.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?[2,this.gpgpu.waitForQueryAndGetTime(e)]:[2,(t=e).endMs-t.startMs]})})},e.prototype.disposeData=function(e){if(!this.pendingDisposal.has(e))if(this.pendingRead.has(e))this.pendingDisposal.add(e);else if(this.texData.has(e)){var t=this.texData.get(e),n=t.texture,r=t.texShape,a=t.usage,i=t.complexTensors;null!=n&&this.releaseTexture(e,n,r,a),null!=i&&(i.real.dispose(),i.imag.dispose()),this.texData.delete(e)}},e.prototype.getTexture=function(e){return this.uploadToGPU(e),this.texData.get(e).texture},e.prototype.getGPGPUContext=function(){return this.gpgpu},e.prototype.getCanvas=function(){return this.canvas},e.prototype.complex=function(e,t){var n=Q.make(e.shape,{},"complex64");return this.texData.get(n.dataId).complexTensors={real:me.engine.keep(e.clone()),imag:me.engine.keep(t.clone())},n},e.prototype.real=function(e){return this.texData.get(e.dataId).complexTensors.real.clone()},e.prototype.imag=function(e){return this.texData.get(e.dataId).complexTensors.imag.clone()},e.prototype.slice=function(e,t,n){var r=new cr(n),a=r.getCustomSetupFunc(t);return this.compileAndRun(r,[e],null,a)},e.prototype.stridedSlice=function(e,t,n,r,a,i,o,s,u){var l=Ge(e.shape,t,n,r,a,i,o,s,u),c=l[0],f=l[1],p=l[2],h=f.filter(function(e,t){return-1===p.indexOf(t)});if(h.some(function(e){return 0===e}))return nt([],h);var d=new function(e,t,n,r){this.variableNames=["x"];var a=n.filter(function(e,t){return-1===r.indexOf(t)});this.outputShape=a;var i=n.length,o=qt(n.length),s=qt(a.length),u="";if(1===i)u="coords * strides + begin";else{var l=0;u=n.map(function(e,t){return-1===r.indexOf(t)?(l++,1===a.length?"coords * strides["+t+"] + begin["+t+"]":"coords["+(l-1)+"] * strides["+t+"] + begin["+t+"]"):"begin["+t+"]"}).join(",")}this.userCode="\n "+o+" begin = "+o+"("+e+");\n "+o+" strides = "+o+"("+t+");\n\n void main() {\n "+s+" coords = getOutputCoords();\n setOutput(getX("+u+"));\n }\n "}(c,r,f,p);return this.compileAndRun(d,[e])},e.prototype.reverse=function(e,t){var n=new function(e,t){this.variableNames=["x"];var n=e.length;if(n>4)throw new Error("WebGL backend: Reverse of rank-"+n+" tensor is not yet supported");if(this.outputShape=e,1!==n){var r=e.map(function(n,r){return function(n){return-1!==t.indexOf(n)&&1!==e[n]?e[n]+" - coords["+n+"] - 1":"coords["+n+"]"}(r)}).join(","),a=qt(n);this.userCode="\n void main() {\n "+a+" coords = getOutputCoords();\n setOutput(getX("+r+"));\n }\n "}else this.userCode="\n void main() {\n int coord = getOutputCoords();\n setOutput(getX("+e[0]+" - coord - 1));\n }\n "}(e.shape,t);return this.compileAndRun(n,[e])},e.prototype.concat2Tensors=function(e,t,n){var r=We([e.shape,t.shape],n),a=e.as2D(-1,b(e.shape.slice(n))),i=t.as2D(-1,b(t.shape.slice(n))),o=new function(e,t){this.variableNames=["A","B"],this.outputShape=[],this.outputShape=We([e,t],1),this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int yR = coords.x;\n int yC = coords.y;\n\n float value = 0.0;\n if (yC < "+e[1]+") {\n value = getA(yR, yC);\n } else {\n yC -= "+e[1]+";\n value = getB(yR, yC);\n }\n\n setOutput(value);\n }\n "}(a.shape,i.shape);return this.compileAndRun(o,[a,i]).reshape(r)},e.prototype.concat=function(e,t){if(1===e.length)return e[0];for(var n=e[0],r=1;r= 0 && idx <= "+s+") {\n float z = getX(b, r, c, idx);\n sum += z * z;\n }\n }\n float val = x * "+i+";\n setOutput(val);\n }\n "}(e.shape,t,n,r,a);return this.compileAndRun(i,[e])},e.prototype.LRNGrad=function(e,t,n,r,a,i,o){var s=new function(e,t,n,r,a){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=e,this.depth=e[3],this.depthRadius=t,this.bias=n,this.alpha=r,this.beta=a,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n\n float result = 0.0;\n for (int d = 0; d < "+this.depth+"; ++d) {\n int depthBegin = int(max(0.0, float(d - "+t+")));\n int depthEnd = int(min(float("+this.depth+"),\n float(d + "+t+" + 1)));\n\n const int MIN_DEPTH_BEGIN = 0;\n const int MAX_DEPTH_END = "+this.depth+";\n\n float norm = 0.0;\n for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) {\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd) {\n norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k);\n }\n else {\n break;\n }\n }\n\n norm = float("+r+") * norm + float("+n+");\n\n for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd){\n float dyi = -2.0 * float("+r+")\n * float("+a+")\n * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d)\n / norm;\n if (k == d) {\n dyi += pow(norm, -1.0 * "+a+");\n }\n if (k == coords[3]) {\n dyi *= getDy(b, r, c, d);\n result += dyi;\n }\n }\n else {\n break;\n }\n }\n }\n setOutput(result);\n }\n "}(t.shape,r,a,i,o);return this.compileAndRun(s,[t,n,e])},e.prototype.tile=function(e,t){var n=new function(e,t){this.variableNames=["A"];for(var n=new Array(e.length),r=0;r5)throw Error("Tile for rank "+t+" is not yet supported");if(1===t)return"imod(resRC, "+e[0]+")";for(var n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],r=[],a=0;a= end) {\n setOutput(float("+n+"));\n } else {\n setOutput(getX(outC - start));\n }\n }\n "}(e.shape,t,n);return this.compileAndRun(r,[e])},e.prototype.transpose=function(e,t){var n=new function(e,t){this.variableNames=["A"];for(var n=new Array(e.length),r=0;r6)throw Error("Transpose for rank "+t+" is not yet supported");for(var n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],r=new Array(t),a=0;a4)throw Error("Gather for rank "+n+" is not yet supported");if(1===n)return"int(getIndices(resRC))";for(var r=["resRC.x","resRC.y","resRC.z","resRC.w"],a=[],i=0;i 4 with a WebGL backend not implemented yet");var r=t.reduce(function(e,t){return e*t}),a=Pe(e.shape,t,r),i=Ae(a.length,t.length),o=Te(e.shape,t,r),s=Me(n,t.length),u=Re(o,n,t.length);return e.reshape(a).transpose(i).reshape(o).slice(s,u)},e.prototype.spaceToBatchND=function(e,t,n){d(e.rank<=4,"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");var r=t.reduce(function(e,t){return e*t}),a=[[0,0]];a.push.apply(a,n);for(var i=1+t.length;i= 1.0 && floatedReducedAllValue >= 1.0);\n ",p="bvec4"):"any"===t&&(o="0.0",f="\n bool reducedAnyValue = any(values);\n float floatedReducedAnyValue = float(reducedAnyValue);\n anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);\n ",p="bvec4");var h="";a%n>0&&(h="\n if (inIdx < 0 || inIdx >= "+a+") {\n return initializationValue;\n }\n "),this.userCode="\n const float initializationValue = "+o+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float getValue(int batch, int inIdx) {\n "+h+"\n return getX(batch, inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * "+n+";\n\n vec4 minMaxValue = vec4("+o+");\n float sumValue = 0.0;\n float allValue = 1.0;\n float anyValue = 0.0;\n\n for (int i = 0; i < "+l+"; i += 4) {\n int inIdx = inOffset + i;\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n "+f+"\n }\n\n int inIdx = inOffset + "+l+";\n if ("+(1===c)+") {\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+f+"\n } else if ("+(2===c)+") {\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n "+f+"\n } else if ("+(3===c)+") {\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n "+f+"\n }\n setOutput("+u+");\n }\n "}({windowSize:$e(a),inSize:a,batchSize:r},t),o=i.outputShape,s=o[0],u=o[1],l=this.makeOutputArray([s,u],n);return this.compileAndRun(i,[e],l),1===l.shape[1]?l:this.reduce(l,t,n)},e.prototype.argReduce=function(e,t,n){void 0===n&&(n=null);var r=e.shape[0],a=e.shape[1];null!=n&&(r=n.shape[0],a=n.shape[1]);var i=new function(e,t,n){this.variableNames=["A"];var r=e.windowSize,a=e.batchSize,i=e.inSize,o=Math.ceil(i/r);n||this.variableNames.push("bestIndicesA"),this.outputShape=[a,o];var s="max"===t?">":"<",u=n?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * "+r+";\n\n int bestIndex = 0;\n float bestValue = getA(batch, inOffset);\n\n for (int i = 0; i < "+r+"; i++) {\n int inIdx = "+u+";\n float candidate = getA(batch, inIdx);\n if (candidate "+s+" bestValue) {\n bestValue = candidate;\n bestIndex = inIdx;\n }\n }\n setOutput(float(bestIndex));\n }\n "}({windowSize:$e(a),inSize:a,batchSize:r},t,null==n),o=i.outputShape,s=o[0],u=o[1],l=this.makeOutputArray([s,u],"int32"),c=[e];return null!=n&&c.push(n),this.compileAndRun(i,c,l),1===l.shape[1]?l:this.argReduce(e,t,l)},e.prototype.sum=function(e,t){ze("sum",t,e.rank);var n=je(e.shape,t),r=n[0],a=b(n[1]),i=e.as2D(-1,a),o=St(e.dtype);return this.reduce(i,"sum",o).reshape(r)},e.prototype.unsortedSegmentSum=function(e,t,n){var r=0,a=Fe([r],e.rank),i=e;null!=a&&(i=e.transpose(a),r=Ue(1,e.rank)[0]);var o=function(e,t,n){for(var r=[],a=e.length,i=0;it||n===e){r=!0;break}n=D(e,n+1)}return n}(o,a),u=new function(e,t){this.variableNames=["x","segmentIds"];var n=e.windowSize,r=e.batchSize,a=e.inSize,i=e.numSegments,o=i*Math.ceil(a/n);this.outputShape=[r,o];var s=4*Math.floor(n/4),u=n%4,l="\n sumValue += dot(values, filter);\n ",c="";a%n>0&&(c="\n if (inIdx < 0 || inIdx >= "+a+") {\n return initializationValue;\n }\n ");var f="";a%n>0&&(f="\n if (inIdx < 0 || inIdx >= "+a+") {\n return -1.0;\n }\n "),this.userCode="\n const float initializationValue = 0.0;\n\n float getValue(int batch, int inIdx) {\n "+c+"\n return getX(batch, inIdx);\n }\n\n float getSegmentIdAtIndex(int inIdx) {\n "+f+"\n return getSegmentIds(inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = int(floor(float(outIdx) / float(\n "+i+")) * float("+n+"));\n int currentSeg = int(mod(float(outIdx), float("+i+")));\n\n float sumValue = 0.0;\n\n for (int i = 0; i < "+s+"; i += 4) {\n int inIdx = inOffset + i;\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n vec4 filter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0\n );\n\n "+l+"\n }\n\n int inIdx = inOffset + "+s+";\n if ("+(1===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n int inIdxSeg = int(getSegmentIdAtIndex(inIdx));\n\n vec4 filter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n 0,\n 0,\n 0\n );\n\n "+l+"\n } else if ("+(2===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n vec4 filter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n 0,\n 0\n );\n\n "+l+"\n } else if ("+(3===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n vec4 filter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n 0\n );\n\n "+l+"\n }\n setOutput(sumValue);\n }\n "}({windowSize:s,inSize:o,batchSize:i,numSegments:a},t),l=u.outputShape,c=l[0],f=l[1],p=this.makeOutputArray([c,f],r);return this.compileAndRun(u,[e,n],p),p.shape[1]===a?p:(n=dt(0,a).tile([o/s]),this.segOpCompute(p,t,n,r,a))},e.prototype.argMin=function(e,t){var n=[t];ze("argMin",n,e.rank);var r=je(e.shape,n),a=r[0],i=b(r[1]),o=e.as2D(-1,i);return this.argReduce(o,"min").reshape(a)},e.prototype.argMax=function(e,t){var n=[t];ze("argMax",n,e.rank);var r=je(e.shape,n),a=r[0],i=b(r[1]),o=e.as2D(-1,i);return this.argReduce(o,"max").reshape(a)},e.prototype.cumsum=function(e,t,n,r){if(t!==e.rank-1)throw new Error("WebGL cumsum shader expects an inner-most axis="+(e.rank-1)+" but got axis="+t);var a=new function(e,t,n){this.variableNames=["x"],this.outputShape=e;var r=e.length,a=e[e.length-1],i=n?"<":">";this.userCode="\n int getIndex(int i) {\n "+(n?"return "+a+" -i - 1;":"return i;")+"\n }\n\n void main() {\n "+qt(r)+" coords = getOutputCoords();\n int end = "+Ht(r,"coords")+";\n float val = 0.0;\n for (int i = "+a+" - 1; i >= 0; i -= 1) {\n int idx = getIndex(i);\n if (idx "+i+" end) {\n continue;\n }\n if (idx == end && "+t+") {\n continue;\n }\n "+Ht(r,"coords")+" = idx;\n val += getX("+function(e,t){if(1===e)return""+t;if(2===e)return t+".x, "+t+".y";if(3===e)return t+".x, "+t+".y, "+t+".z";if(4===e)return t+".x, "+t+".y, "+t+".z, "+t+".w";throw Error("Cumulative sum for rank "+e+" is not yet supported")}(r,"coords")+");\n }\n setOutput(val);\n }\n "}(e.shape,n,r);return this.compileAndRun(a,[e])},e.prototype.equal=function(e,t){var n=new zt("return float(a == b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.notEqual=function(e,t){var n=new zt("return float(a != b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.less=function(e,t){var n=new zt("return float(a < b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.lessEqual=function(e,t){var n=new zt("return float(a <= b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.greater=function(e,t){var n=new zt("return float(a > b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.greaterEqual=function(e,t){var n=new zt("return float(a >= b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.logicalNot=function(e){var t=new gr(e.shape,"return float(!(x >= 1.0));");return this.compileAndRun(t,[e])},e.prototype.logicalAnd=function(e,t){var n=new zt("return float(a >= 1.0 && b >= 1.0);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.logicalOr=function(e,t){var n=new zt("return float(a >= 1.0 || b >= 1.0);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.select=function(e,t,n){var r=new function(e,t,n){var r,a;if(this.variableNames=["c","a","b"],this.outputShape=t,n>4)throw Error("Where for rank "+n+" is not yet supported");if(1===n)a="resRC",r="resRC";else{for(var i=["resRC.x","resRC.y","resRC.z","resRC.w"],o=[],s=[],u=0;u= 1.0) {\n setOutput(getA("+a+"));\n } else {\n setOutput(getB("+a+"));\n }\n }\n "}(e.rank,t.shape,t.rank),a=this.makeOutputArray(r.outputShape,Nt(t.dtype,n.dtype));return this.compileAndRun(r,[e,t,n],a)},e.prototype.where=function(e){Ce("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");var t=e.dataSync();return ua(e.shape,t)},e.prototype.topk=function(e,t,n){return Tt(e.dataSync(),e.shape,e.dtype,t)},e.prototype.min=function(e,t){ze("min",t,e.rank);var n=je(e.shape,t),r=n[0],a=b(n[1]),i=e.as2D(-1,a);return this.reduce(i,"min",i.dtype).reshape(r)},e.prototype.minimum=function(e,t){var n=new zt("\n if (isNaN(a)) return a;\n if (isNaN(b)) return b;\n\n return min(a, b);\n",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.mod=function(e,t){var n=new zt("if (b == 0.0) return NAN;\n return mod(a, b);",e.shape,t.shape),r=n.getCustomSetupFunc();return this.compileAndRun(n,[e,t],null,r)},e.prototype.max=function(e,t){ze("max",t,e.rank);var n=je(e.shape,t),r=n[0],a=b(n[1]),i=e.as2D(-1,a);return this.reduce(i,"max",i.dtype).reshape(r)},e.prototype.maximum=function(e,t){var n=new zt("\n if (isNaN(a)) return a;\n if (isNaN(b)) return b;\n\n return max(a, b);\n",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.all=function(e,t){ze("all",t,e.rank);var n=je(e.shape,t),r=n[0],a=b(n[1]),i=e.as2D(-1,a);return this.reduce(i,"all",i.dtype).reshape(r)},e.prototype.any=function(e,t){ze("any",t,e.rank);var n=je(e.shape,t),r=n[0],a=b(n[1]),i=e.as2D(-1,a);return this.reduce(i,"any",i.dtype).reshape(r)},e.prototype.squaredDifference=function(e,t){var n=new zt("return (a - b) * (a - b);",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.realDivide=function(e,t){var n=new zt("if (a == b) return 1.0;\n return a / b;",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"float32");return this.compileAndRun(n,[e,t],r)},e.prototype.floorDiv=function(e,t){var n=new zt("\n float resultSign = sign(a) * sign(b);\n int ia = round(a);\n int ib = round(b);\n int result = ia / ib;\n int amodb = ia - ib * result;\n\n if (resultSign < 0.0 && amodb != 0) {\n result -= 1;\n }\n return float(result);\n",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"int32");return this.compileAndRun(n,[e,t],r)},e.prototype.add=function(e,t){if("complex64"===e.dtype&&"complex64"===t.dtype)return this.complexSeparableBinaryOp(e,t,Lt);var n=new zt(Lt,e.shape,t.shape),r=this.makeOutputArray(n.outputShape,Nt(e.dtype,t.dtype));return this.compileAndRun(n,[e,t],r)},e.prototype.complexSeparableBinaryOp=function(e,t,n){var r=this,a=this.texData.get(e.dataId),i=this.texData.get(t.dataId),o=[[a.complexTensors.real,i.complexTensors.real],[a.complexTensors.imag,i.complexTensors.imag]].map(function(a){var i=a[0],o=a[1],s=new zt(n,e.shape,t.shape),u=r.makeOutputArray(s.outputShape,Nt(i.dtype,o.dtype)),l=r.makeComplexComponentTensorHandle(e,i),c=r.makeComplexComponentTensorHandle(t,o);return r.compileAndRun(s,[l,c],u)}),s=o[0],u=o[1],l=this.complex(s,u);return s.dispose(),u.dispose(),l},e.prototype.makeComplexComponentTensorHandle=function(e,t){return{dataId:t.dataId,dtype:t.dtype,shape:e.shape}},e.prototype.addN=function(e){for(var t=e[0],n=1;n 0.5) {\n return ceil(x);\n } else {\n if (mod(base, 2.0) == 0.0) {\n return base;\n } else {\n return base + 1.0;\n }\n }\n");return this.compileAndRun(t,[e])},e.prototype.exp=function(e){var t=new gr(e.shape,"return exp(x);");return this.compileAndRun(t,[e])},e.prototype.expm1=function(e){var t=new gr(e.shape,"return exp(x) - 1.0;");return this.compileAndRun(t,[e])},e.prototype.log=function(e){var t=new gr(e.shape,"if (x < 0.0) return NAN;\n return log(x);"),n=t.getCustomSetupFunc();return this.compileAndRun(t,[e],null,n)},e.prototype.log1p=function(e){var t=new gr(e.shape,"return log(1.0 + x);");return this.compileAndRun(t,[e])},e.prototype.sqrt=function(e){var t=new gr(e.shape,"return sqrt(x);");return this.compileAndRun(t,[e])},e.prototype.rsqrt=function(e){var t=new gr(e.shape,"return inversesqrt(x);");return this.compileAndRun(t,[e])},e.prototype.square=function(e){var t=new gr(e.shape,"return x * x;");return this.compileAndRun(t,[e])},e.prototype.reciprocal=function(e){var t=new gr(e.shape,"return 1.0 / x;");return this.compileAndRun(t,[e])},e.prototype.relu=function(e){var t=new gr(e.shape,"if (isNaN(x)) return x;\n return (x < 0.0) ? 0.0 : x;\n");return this.compileAndRun(t,[e])},e.prototype.elu=function(e){var t=new gr(e.shape,"return (x >= 0.0) ? x : (exp(x) - 1.0);");return this.compileAndRun(t,[e])},e.prototype.eluDer=function(e,t){var n=new zt("return (b >= 1.0) ? a : a * (b + 1.0);",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.selu=function(e){var t=new gr(e.shape,"\n // Stable and Attracting Fixed Point (0, 1) for Normalized Weights.\n // see: https://arxiv.org/abs/1706.02515\n float scaleAlpha = 1.7580993408473768;\n float scale = 1.0507009873554805;\n return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);\n");return this.compileAndRun(t,[e])},e.prototype.int=function(e){var t=new gr(e.shape,"return float(int(x));"),n=this.makeOutputArray(t.outputShape,"int32");return this.compileAndRun(t,[e],n)},e.prototype.clip=function(e,t,n){var r=new function(e,t,n){this.variableNames=["A"],this.outputShape=e,this.userCode="\n void main() {\n float value = getAAtOutCoords();\n if (isNaN(value)) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, float("+t+"), float("+n+")));\n }\n "}(e.shape,t,n);return this.compileAndRun(r,[e])},e.prototype.abs=function(e){var t=new gr(e.shape,"return abs(x);");return this.compileAndRun(t,[e])},e.prototype.sigmoid=function(e){var t=new gr(e.shape,"return 1.0 / (1.0 + exp(-1.0 * x));");return this.compileAndRun(t,[e])},e.prototype.softplus=function(e){var t=new gr(e.shape,"\n float epsilon = 1.1920928955078125e-7;\n float threshold = log(epsilon) + 2.0;\n\n bool too_large = x > -threshold;\n bool too_small = x < threshold;\n\n float result;\n float exp_x = exp(x);\n\n if (too_large){\n result = x;\n }\n else if (too_small){\n result = exp_x;\n }\n else{\n result = log(exp_x + 1.0);\n }\n return result;\n");return this.compileAndRun(t,[e])},e.prototype.sin=function(e){var t=new gr(e.shape,"if (isNaN(x)) return x;\n return sin(x);\n");return this.compileAndRun(t,[e])},e.prototype.cos=function(e){var t=new gr(e.shape,"if (isNaN(x)) return x;\n return cos(x);\n");return this.compileAndRun(t,[e])},e.prototype.tan=function(e){var t=new gr(e.shape,"return tan(x);");return this.compileAndRun(t,[e])},e.prototype.asin=function(e){var t=new gr(e.shape,"return asin(x);");return this.compileAndRun(t,[e])},e.prototype.acos=function(e){var t=new gr(e.shape,"return acos(x);");return this.compileAndRun(t,[e])},e.prototype.atan=function(e){var t=new gr(e.shape,"if (isNaN(x)) return x;\n return atan(x);\n");return this.compileAndRun(t,[e])},e.prototype.atan2=function(e,t){var n=new zt("\n if (isNaN(a)) return a;\n if (isNaN(b)) return b;\n\n return atan(a, b);\n",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.sinh=function(e){var t=new gr(e.shape,"\n float e2x = exp(x);\n return (e2x - 1.0 / e2x) / 2.0;\n");return this.compileAndRun(t,[e])},e.prototype.cosh=function(e){var t=new gr(e.shape,"\n float e2x = exp(-x);\n return (e2x + 1.0 / e2x) / 2.0;\n");return this.compileAndRun(t,[e])},e.prototype.tanh=function(e){var t=new gr(e.shape,"\n float e2x = exp(-2.0 * abs(x));\n return sign(x) * (1.0 - e2x) / (1.0 + e2x);\n");return this.compileAndRun(t,[e])},e.prototype.asinh=function(e){var t=new gr(e.shape,"return log(x + sqrt(x * x + 1.0));");return this.compileAndRun(t,[e])},e.prototype.acosh=function(e){var t=new gr(e.shape,"if (isNaN(x)) return x;\n if (x < 1.0) return NAN;\n return log(x + sqrt(x * x - 1.0));"),n=t.getCustomSetupFunc();return this.compileAndRun(t,[e],null,n)},e.prototype.atanh=function(e){var t=new gr(e.shape,"if (isNaN(x)) return x;\n if ((x < -1.0) || (x > 1.0)) return NAN;\n return (log(1.0 + x) - log(1.0 - x)) / 2.0;"),n=t.getCustomSetupFunc();return this.compileAndRun(t,[e],null,n)},e.prototype.erf=function(e){var t=new gr(e.shape,'\n // Error function is calculated approximately with elementary function.\n // See "Handbook of Mathematical Functions with Formulas,\n // Graphs, and Mathematical Tables", Abramowitz and Stegun.\n float p = 0.3275911;\n float a1 = 0.254829592;\n float a2 = -0.284496736;\n float a3 = 1.421413741;\n float a4 = -1.453152027;\n float a5 = 1.061405429;\n\n float t = 1.0 / (1.0 + p * x);\n return 1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x);\n');return this.compileAndRun(t,[e])},e.prototype.step=function(e,t){var n=new gr(e.shape,function(e){return void 0===e&&(e=0),yr+"\n return x > 0.0 ? 1.0 : float("+e+");\n "}(t));return this.compileAndRun(n,[e])},e.prototype.conv2d=function(e,t,n){var r=new function(e){this.variableNames=["x","W"],this.outputShape=e.outShape;var t=e.padInfo.top,n=e.padInfo.left,r=e.strideHeight,a=e.strideWidth,i=e.dilationHeight,o=e.dilationWidth,s=e.filterHeight,u=e.filterWidth,l=4*Math.floor(e.inChannels/4),c=e.inChannels%4;this.userCode="\n const ivec2 strides = ivec2("+r+", "+a+");\n const ivec2 pads = ivec2("+t+", "+n+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d2 = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+s+"; wR++) {\n int xR = xRCorner + wR * "+i+";\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+u+"; wC++) {\n int xC = xCCorner + wC * "+o+";\n\n if (xC < 0 || xC >= "+e.inWidth+") {\n continue;\n }\n\n for (int d1 = 0; d1 < "+l+"; d1 += 4) {\n vec4 xValues = vec4(\n getX(batch, xR, xC, d1),\n getX(batch, xR, xC, d1 + 1),\n getX(batch, xR, xC, d1 + 2),\n getX(batch, xR, xC, d1 + 3)\n );\n vec4 wValues = vec4(\n getW(wR, wC, d1, d2),\n getW(wR, wC, d1 + 1, d2),\n getW(wR, wC, d1 + 2, d2),\n getW(wR, wC, d1 + 3, d2)\n );\n\n dotProd += dot(xValues, wValues);\n }\n\n if ("+(1===c)+") {\n dotProd +=\n getX(batch, xR, xC, "+l+") *\n getW(wR, wC, "+l+", d2);\n } else if ("+(2===c)+") {\n vec2 xValues = vec2(\n getX(batch, xR, xC, "+l+"),\n getX(batch, xR, xC, "+l+" + 1)\n );\n vec2 wValues = vec2(\n getW(wR, wC, "+l+", d2),\n getW(wR, wC, "+l+" + 1, d2)\n );\n dotProd += dot(xValues, wValues);\n } else if ("+(3===c)+") {\n vec3 xValues = vec3(\n getX(batch, xR, xC, "+l+"),\n getX(batch, xR, xC, "+l+" + 1),\n getX(batch, xR, xC, "+l+" + 2)\n );\n vec3 wValues = vec3(\n getW(wR, wC, "+l+", d2),\n getW(wR, wC, "+l+" + 1, d2),\n getW(wR, wC, "+l+" + 2, d2)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.conv2dDerInput=function(e,t,n){var r=new function(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;var t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,i=t-1-e.padInfo.top,o=n-1-e.padInfo.left;this.userCode="\n const ivec2 pads = ivec2("+i+", "+o+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n\n ivec2 dyCorner = coords.yz - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+t+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+e.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+t+" - 1 - wR;\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+a+".0;\n\n if (dyC < 0.0 || dyC >= "+e.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+n+" - 1 - wC;\n\n for (int d2 = 0; d2 < "+e.outChannels+"; d2++) {\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.conv2dDerFilter=function(e,t,n){var r=new function(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;var t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int d2 = coords.w;\n\n // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int b = 0; b < "+e.batchSize+"; b++) {\n for (int yR = 0; yR < "+e.outHeight+"; yR++) {\n int xR = wR + yR * "+t+" - "+r+";\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+e.outWidth+"; yC++) {\n int xC = wC + yC * "+n+" - "+a+";\n\n if (xC < 0 || xC >= "+e.inWidth+") {\n continue;\n }\n\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.depthwiseConv2D=function(e,t,n){var r=new function(e){this.variableNames=["x","W"],this.outputShape=e.outShape;var t=e.inHeight,n=e.inWidth,r=e.padInfo.top,a=e.padInfo.left,i=e.strideHeight,o=e.strideWidth,s=e.dilationHeight,u=e.dilationWidth,l=e.filterHeight,c=e.filterWidth,f=e.outChannels/e.inChannels;this.userCode="\n const ivec2 strides = ivec2("+i+", "+o+");\n const ivec2 pads = ivec2("+r+", "+a+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n ivec2 xRCCorner = coords.yz * strides - pads;\n int d2 = coords.w;\n int d1 = d2 / "+f+";\n int q = d2 - d1 * "+f+";\n\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n // TODO(dsmilkov): Flatten the two for loops and vec4 the operations.\n for (int wR = 0; wR < "+l+"; wR++) {\n int xR = xRCorner + wR * "+s+";\n\n if (xR < 0 || xR >= "+t+") {\n continue;\n }\n\n for (int wC = 0; wC < "+c+"; wC++) {\n int xC = xCCorner + wC * "+u+";\n\n if (xC < 0 || xC >= "+n+") {\n continue;\n }\n\n float xVal = getX(batch, xR, xC, d1);\n float wVal = getW(wR, wC, d1, q);\n dotProd += xVal * wVal;\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.depthwiseConv2DDerInput=function(e,t,n){var r=new function(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;var t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,i=t-1-e.padInfo.top,o=n-1-e.padInfo.left,s=e.outChannels/e.inChannels;this.userCode="\n const ivec2 pads = ivec2("+i+", "+o+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n ivec2 dyCorner = coords.yz - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n float dotProd = 0.0;\n\n for (int wR = 0; wR < "+t+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+e.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+t+" - 1 - wR;\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+a+".0;\n\n if (dyC < 0.0 || dyC >= "+e.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+n+" - 1 - wC;\n\n // TODO: Vec4 over the channelMul\n for (int dm = 0; dm < "+s+"; dm++) {\n int d2 = d1 * "+s+" + dm;\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, dm);\n dotProd += xValue * wValue;\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.depthwiseConv2DDerFilter=function(e,t,n){var r=new function(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;var t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left,i=e.outChannels/e.inChannels;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int dm = coords.w;\n int d2 = d1 * "+i+" + dm;\n\n float dotProd = 0.0;\n\n // TODO: Vec4 over the batch size\n for (int b = 0; b < "+e.batchSize+"; b++) {\n for (int yR = 0; yR < "+e.outHeight+"; yR++) {\n int xR = wR + yR * "+t+" - "+r+";\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+e.outWidth+"; yC++) {\n int xC = wC + yC * "+n+" - "+a+";\n\n if (xC < 0 || xC >= "+e.inWidth+") {\n continue;\n }\n\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.maxPool=function(e,t){var n=new lr(t,"max",!1),r=this.makeOutputArray(n.outputShape,e.dtype);return this.compileAndRun(n,[e],r)},e.prototype.avgPool=function(e,t){var n=new lr(t,"avg",!1),r=this.makeOutputArray(n.outputShape,"float32");return this.compileAndRun(n,[e],r)},e.prototype.maxPoolBackprop=function(e,t,n,r){var a=new lr(r,"max",!0),i=this.compileAndRun(a,[t]),o=new function(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;var t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,i=t-1-e.padInfo.top,o=n-1-e.padInfo.left,s=t*n-1;this.userCode="\n const ivec2 pads = ivec2("+i+", "+o+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+t+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+e.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+a+".0;\n\n if (dyC < 0.0 || dyC >= "+e.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n int maxPosValue = "+s+" - int(getMaxPos(b, idyR, idyC, d));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue = wR * "+n+" + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n setOutput(dotProd);\n }\n "}(r),s=this.makeOutputArray(o.outputShape,t.dtype),u=this.compileAndRun(o,[e,i],s);return i.dispose(),u},e.prototype.avgPoolBackprop=function(e,t,n){var r=new function(e){this.variableNames=["dy"],this.outputShape=e.inShape;var t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,i=t-1-e.padInfo.top,o=n-1-e.padInfo.left,s=1/(t*n);this.userCode="\n const ivec2 pads = ivec2("+i+", "+o+");\n const float avgMultiplier = float("+s+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+t+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+e.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+a+".0;\n\n if (dyC < 0.0 || dyC >= "+e.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n setOutput(dotProd);\n }\n "}(n),a=this.makeOutputArray(r.outputShape,t.dtype);return this.compileAndRun(r,[e],a)},e.prototype.cast=function(e,t){return Ot(e,t,this)},e.prototype.reshape=function(e,t){return kt(e,t)},e.prototype.resizeBilinear=function(e,t,n,r){var a=new function(e,t,n,r){this.variableNames=["A"],this.outputShape=[];var a=e[0],i=e[1],o=e[2],s=e[3];this.outputShape=[a,t,n,s];var u=[r&&t>1?i-1:i,r&&n>1?o-1:o],l=[r&&t>1?t-1:t,r&&n>1?n-1:n];this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n "+u[0]/l[0]+",\n "+u[1]/l[1]+");\n const vec2 inputShapeRC = vec2("+i+".0, "+o+".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the four integer indices.\n ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);\n ivec2 sourceCeilRC = ivec2(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d);\n float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d);\n float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d);\n float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n float top = topLeft + (topRight - topLeft) * fracRC.y;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n float newValue = top + (bottom - top) * fracRC.x;\n\n setOutput(newValue);\n }\n "}(e.shape,t,n,r);return this.compileAndRun(a,[e])},e.prototype.resizeBilinearBackprop=function(e,t,n){var r=new function(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t.shape;var r=t.shape,a=r[1],i=r[2],o=e.shape,s=o[1],u=o[2],l=[n&&s>1?a-1:a,n&&u>1?i-1:i],c=[n&&s>1?s-1:s,n&&u>1?u-1:u],f=l[0]/c[0],p=l[1]/c[1],h=1/f,d=1/p,m=2*Math.ceil(h)+2,g=2*Math.ceil(d)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float("+f+");\n const float widthScale = float("+p+");\n\n const float invHeightScale = float("+h+");\n const float invWidthScale = float("+d+");\n\n const int winHeight = int("+m+");\n const int winWidth = int("+g+");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(startRLerp - float(winHeight / 2));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(startCLerp - float(winWidth / 2));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= "+s+") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= "+u+") {\n continue;\n }\n\n float dxR = float(dyR) * heightScale;\n int topDxRIndex = int(floor(dxR));\n int bottomDxRIndex = int(min(ceil(dxR), "+(a-1)+".0));\n float dxRLerp = dxR - float(topDxRIndex);\n float inverseDxRLerp = 1.0 - dxRLerp;\n\n float dxC = float(dyC) * widthScale;\n int leftDxCIndex = int(floor(dxC));\n int rightDxCIndex = int(min(ceil(dxC), "+(i-1)+".0));\n float dxCLerp = dxC - float(leftDxCIndex);\n float inverseDxCLerp = 1.0 - dxCLerp;\n\n if (r == topDxRIndex && c == leftDxCIndex) {\n // topLeft\n accumulator +=\n getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp;\n }\n\n if (r == topDxRIndex && c == rightDxCIndex) {\n // topRight\n accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp;\n }\n\n if (r == bottomDxRIndex && c == leftDxCIndex) {\n // bottomLeft\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp;\n }\n\n if (r == bottomDxRIndex && c == rightDxCIndex) {\n // bottomRight\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp;\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n "}(e,t,n);return this.compileAndRun(r,[e])},e.prototype.resizeNearestNeighbor=function(e,t,n,r){var a=new function(e,t,n,r){this.variableNames=["A"],this.outputShape=[];var a=e[0],i=e[1],o=e[2],s=e[3];this.outputShape=[a,t,n,s];var u=[r&&t>1?i-1:i,r&&n>1?o-1:o],l=[r&&t>1?t-1:t,r&&n>1?n-1:n],c=r?"0.5":"0.0";this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n "+u[0]/l[0]+",\n "+u[1]/l[1]+");\n const vec2 inputShapeRC = vec2("+i+".0, "+o+".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestRC = ivec2(\n min(inputShapeRC - 1.0, floor(sourceFracIndexRC + "+c+")));\n\n float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);\n\n setOutput(newValue);\n }\n "}(e.shape,t,n,r);return this.compileAndRun(a,[e])},e.prototype.resizeNearestNeighborBackprop=function(e,t,n){var r=new function(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t.shape;var r=t.shape,a=r[1],i=r[2],o=e.shape,s=o[1],u=o[2],l=[n&&s>1?a-1:a,n&&u>1?i-1:i],c=[n&&s>1?s-1:s,n&&u>1?u-1:u],f=l[0]/c[0],p=l[1]/c[1],h=1/f,d=1/p,m=2*Math.ceil(h)+2,g=2*Math.ceil(d)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float("+f+");\n const float widthScale = float("+p+");\n\n const float invHeightScale = float("+h+");\n const float invWidthScale = float("+d+");\n\n const int winHeight = int("+m+");\n const int winWidth = int("+g+");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(floor(startRLerp - float(winHeight / 2)));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(floor(startCLerp - float(winWidth / 2)));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= "+s+") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= "+u+") {\n continue;\n }\n\n float sourceFracRow =\n float("+l[0]+") *\n (float(dyR) / float("+c[0]+"));\n\n float sourceFracCol =\n float("+l[1]+") *\n (float(dyC) / float("+c[1]+"));\n\n int sourceNearestRow = int(min(\n float(int("+a+") - 1),\n "+n+" ? float(round(sourceFracRow)) :\n float(floor(sourceFracRow))));\n\n int sourceNearestCol = int(min(\n float(int("+i+") - 1),\n "+n+" ? float(round(sourceFracCol)) :\n float(floor(sourceFracCol))));\n\n if (r == sourceNearestRow && c == sourceNearestCol) {\n accumulator += getDy(b, dyR, dyC, d);\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n "}(e,t,n);return this.compileAndRun(r,[e])},e.prototype.multinomial=function(e,t,n,r){var a=t?e:Ze(e),i=a.shape[0],o=a.shape[1],s=new sr(i,o,n),u=this.makeOutputArray(s.outputShape,"int32"),l=s.getCustomSetupFunc(r);return this.compileAndRun(s,[a],u,l)},e.prototype.oneHot=function(e,t,n,r){var a=new function(e,t,n,r){this.variableNames=["indices"],this.outputShape=[e,t],this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int index = round(getIndices(coords.x));\n setOutput(mix(float("+r+"), float("+n+"),\n float(index == coords.y)));\n }\n "}(e.size,t,n,r);return this.compileAndRun(a,[e])},e.prototype.nonMaxSuppression=function(e,t,n,r,a){return Ce("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead"),Ct(e.dataSync(),t.dataSync(),n,r,a)},e.prototype.cropAndResize=function(e,t,n,r,a,i){var o=new function(e,t,n,r,a){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];var i=e[0],o=e[1],s=e[2],u=e[3],l=t[0],c=n[0],f=n[1];this.outputShape=[l,c,f,u];var p="bilinear"===r?1:0,h=[o-1+".0",s-1+".0"],d=h[0],m=h[1],g=c>1?[""+(o-1)/(c-1),"(y2-y1) * height_ratio","y1*"+d+" + float(y)*(height_scale)"]:["0.0","0.0","0.5 * (y1+y2) * "+d],y=g[0],v=g[1],b=g[2],w=f>1?[""+(s-1)/(f-1),"(x2-x1) * width_ratio","x1*"+m+" + float(x)*(width_scale)"]:["0.0","0.0","0.5 * (x1+x2) * "+m],x=w[0],_=w[1],E=w[2];this.userCode="\n const float height_ratio = float("+y+");\n const float width_ratio = float("+x+");\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int y = coords[1];\n int x = coords[2];\n int d = coords[3];\n\n // get box vals\n float y1 = getBoxes(b,0);\n float x1 = getBoxes(b,1);\n float y2 = getBoxes(b,2);\n float x2 = getBoxes(b,3);\n\n // get image in batch index\n int bInd = round(getBoxInd(b));\n if(bInd < 0 || bInd >= "+i+") {\n return;\n }\n\n float height_scale = "+v+";\n float width_scale = "+_+";\n\n float in_y = "+b+";\n if( in_y < 0.0 || in_y > "+d+" ) {\n setOutput(float("+a+"));\n return;\n }\n float in_x = "+E+";\n if( in_x < 0.0 || in_x > "+m+" ) {\n setOutput(float("+a+"));\n return;\n }\n\n vec2 sourceFracIndexRC = vec2(in_y,in_x);\n if("+p+" == 1) {\n // Compute the four integer indices.\n ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);\n ivec2 sourceCeilRC = ivec2(ceil(sourceFracIndexRC));\n\n float topLeft = getImage(b, sourceFloorRC.x, sourceFloorRC.y, d);\n float bottomLeft = getImage(b, sourceCeilRC.x, sourceFloorRC.y, d);\n float topRight = getImage(b, sourceFloorRC.x, sourceCeilRC.y, d);\n float bottomRight = getImage(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n float top = topLeft + (topRight - topLeft) * fracRC.y;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n float newValue = top + (bottom - top) * fracRC.x;\n setOutput(newValue);\n } else {\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestRC = ivec2(floor(\n sourceFracIndexRC + vec2(0.5,0.5)));\n float newValue = getImage(b, sourceNearestRC.x, sourceNearestRC.y, d);\n setOutput(newValue);\n }\n }\n "}(e.shape,t.shape,r,a,i);return this.compileAndRun(o,[e,t,n])},e.prototype.depthToSpace=function(e,t,n){d(t>1,"blockSize should be > 1 for depthToSpace, but was: "+t);var r=e.shape[0],a=("NHWC"===n?e.shape[1]:e.shape[2])*t,i=("NHWC"===n?e.shape[2]:e.shape[3])*t,o=("NHWC"===n?e.shape[3]:e.shape[1])/(t*t),s=new Yt("NHWC"===n?[r,a,i,o]:[r,o,a,i],t,n);return this.compileAndRun(s,[e])},e.prototype.split=function(e,t,n){return At(e,t,n)},e.prototype.makeOutputArray=function(e,t){return Q.make(e,{},t)},e.prototype.compileAndRun=function(e,t,n,r,a){var i=this;if(void 0===a&&(a=!0),null==n&&(n=this.makeOutputArray(e.outputShape,t[0].dtype)),0===n.size)return this.texData.get(n.dataId).values=I(n.dtype,0),n;var o=t.map(function(e){if("complex64"===e.dtype)throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");var t=i.texData.get(e.dataId);return null==t.texture&&b(e.shape)<=32?{shape:e.shape,texData:null,isUniform:!0,uniformValues:i.readSync(e.dataId)}:(i.uploadToGPU(e.dataId),{shape:e.shape,texData:t,isUniform:!1})});this.uploadToGPU(n.dataId);var s,u={shape:n.shape,texData:this.texData.get(n.dataId),isUniform:!1},l=function(e,t,n){var r="";o.concat(n).forEach(function(e){r+=e.shape+"_"+(e.isUniform?"uniform":e.texData.texShape)});var a=e.userCode,i=(!0===e.supportsBroadcasting).toString();return e.constructor.name+"_"+i+"_"+r+"_"+a}(e,0,u),c=this.getAndSaveBinary(l,function(){return function(e,t,n,r){for(var a=t.userCode,i=n.map(function(e,n){var r={logicalShape:e.shape,texShape:e.isUniform?null:e.texData.texShape,isUniform:e.isUniform,isPacked:!e.isUniform&&e.texData.usage===Kt.PACK};return{name:t.variableNames[n],shapeInfo:r}}),o=i.map(function(e){return e.shapeInfo}),s={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.usage===Kt.PACK},u=Ft(i,s,a,!0===t.supportsBroadcasting),l=e.createProgram(u),c={},f=0;fthis.NUM_BYTES_BEFORE_PAGING)for(var p=this.numBytesInGPU-this.NUM_BYTES_BEFORE_PAGING;p>0&&this.lruDataGPU.length>0;){var h=this.lruDataGPU.shift(),d=this.texData.get(h),m=d.shape,g=d.dtype;p-=this.computeBytes(m,g),this.read(h)}return f&&(s=this.endTimer(s),this.activeTimers.push(this.getQueryTime(s))),n},e.prototype.getAndSaveBinary=function(e,t){return e in this.binaryCache||(this.binaryCache[e]=t()),this.binaryCache[e]},e.prototype.getTextureManager=function(){return this.textureManager},e.prototype.dispose=function(){if(!this.disposed){for(var e in this.binaryCache)this.gpgpu.deleteProgram(this.binaryCache[e].webGLProgram);this.textureManager.dispose(),this.canvas.remove(),null!=this.fromPixelsCanvas&&this.fromPixelsCanvas.remove(),this.gpgpuCreatedLocally&&this.gpgpu.dispose(),this.disposed=!0}},e.prototype.floatPrecision=function(){var e=this;return Ne(function(){return e.abs(rt(1e-8)).get()>0?32:16})},e.prototype.throwIfNoData=function(e){if(!this.texData.has(e))throw new Error("WebGL backend: No data found for this tensor. Did you change your backend in the middle of the program? New backends can't use Tensors created with previous backends")},e.prototype.uploadToGPU=function(e){this.throwIfNoData(e);var t=this.texData.get(e),n=t.shape,r=t.values,a=t.texture,i=(t.dtype,t.usage);if(null==a){var o,s=null!=this.activeTimers;s&&(o=performance.now());var u=jn(this.gpgpu.gl,n);t.texShape=u;var l=this.acquireTexture(e,u,i);t.texture=l,null!=r&&(this.gpgpu.uploadMatrixToTexture(l,u[0],u[1],r instanceof Float32Array?r:new Float32Array(r)),t.values=null,s&&(this.uploadWaitMs+=performance.now()-o))}else this.lruDataGPU.indexOf(e)>=0&&(this.lruDataGPU.splice(this.lruDataGPU.indexOf(e),1),this.lruDataGPU.push(e))},e.prototype.cacheOnCPU=function(e,t){var n=this.delayedStorage,r=this.texData.get(e),a=r.texture,i=r.texShape,o=r.dtype,s=r.usage;n&&null!=a&&(this.releaseTexture(e,a,i,s),r.texture=null,r.texShape=null),r.usage=Kt.UPLOAD,null!=t&&(r.values=function(e,t){if("float32"===t||"complex64"===t)return e;if("int32"===t||"bool"===t){for(var n="int32"===t?new Int32Array(e.length):new Uint8Array(e.length),r=0;r=0&&this.lruDataGPU.splice(s,1),this.numBytesInGPU-=this.computeBytes(i,o),this.textureManager.releaseTexture(t,n,r)},e.prototype.acquireTexture=function(e,t,n){var r=this.texData.get(e),a=r.shape,i=r.dtype;return this.lruDataGPU.push(e),this.numBytesInGPU+=this.computeBytes(a,i),this.textureManager.acquireTexture(t,n)},e.prototype.computeBytes=function(e,t){return b(e)*M(t)},e}();me.get("IS_BROWSER")&&me.registerBackend("webgl",function(){return new ca},2,Z);var fa=Je({abs_:function(e){var t=Xe(e,"x","abs");return me.engine.runKernel(function(e){return e.abs(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.toFloat().step(-1))}}})}}),pa=Je({acos_:function(e){var t=Xe(e,"x","acos");return me.engine.runKernel(function(e){return e.acos(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(rt(1).sub(t.toFloat().square()).sqrt()).neg()}}})}}),ha=Je({acosh_:function(e){var t=Xe(e,"x","acosh");return me.engine.runKernel(function(e){return e.acosh(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.toFloat().square().sub(rt(1)).sqrt())}}})}}),da=Je({asin_:function(e){var t=Xe(e,"x","asin");return me.engine.runKernel(function(e){return e.asin(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(rt(1).sub(t.toFloat().square()).sqrt())}}})}}),ma=Je({asinh_:function(e){var t=Xe(e,"x","asinh");return me.engine.runKernel(function(e){return e.asinh(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(rt(1).add(t.toFloat().square()).sqrt())}}})}}),ga=Je({atan_:function(e){var t=Xe(e,"x","atan");return me.engine.runKernel(function(e){return e.atan(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(rt(1).add(t.toFloat().square()))}}})}}),ya=Je({atanh_:function(e){var t=Xe(e,"x","atanh");return me.engine.runKernel(function(e){return e.atanh(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(rt(1).sub(t.toFloat().square()))}}})}}),va=Je({ceil_:function(e){var t=Xe(e,"x","ceil");return me.engine.runKernel(function(e){return e.ceil(t)},{$x:t},function(e){return{$x:function(){return _t(e)}}})}}),ba=Je({clipByValue_:function(e,t,n){var r=Xe(e,"x","clipByValue");return d(t<=n,"Error in clip: min ("+t+") must be less than or equal to max ("+n+")."),me.engine.runKernel(function(e){return e.clip(r,t,n)},{$x:r},function(e){return{$x:function(){return e.where(r.greaterEqual(rt(t)).logicalAnd(r.lessEqual(rt(n))),_t(e))}}})}}),wa=Je({cos_:function(e){var t=Xe(e,"x","cos");return me.engine.runKernel(function(e){return e.cos(t)},{$x:t},function(e){return{$x:function(){return t.toFloat().sin().neg().mulStrict(e)}}})}}),xa=Je({cosh_:function(e){var t=Xe(e,"x","cosh");return me.engine.runKernel(function(e){return e.cosh(t)},{$x:t},function(e){return{$x:function(){return t.toFloat().sinh().mulStrict(e)}}})}}),_a=Je({erf_:function(e){var t=Xe(e,"x","erf");return d("int32"===t.dtype||"float32"===t.dtype,"Input dtype must be `int32` or `float32`."),"int32"===t.dtype&&(t=t.toFloat()),me.engine.runKernel(function(e){return e.erf(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(rt(2/Math.sqrt(Math.PI)).mul(t.square().neg().exp()))}}})}}),Ea=Je({exp_:function(e){var t=Xe(e,"x","exp");return me.engine.runKernel(function(e,n){return n(e.exp(t))},{$x:t},function(e,t){var n=t[0];return{$x:function(){return e.mulStrict(n)}}})}}),Na=Je({expm1_:function(e){var t=Xe(e,"x","expm1");return me.engine.runKernel(function(e){return e.expm1(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.exp())}}})}}),Sa=Je({floor_:function(e){var t=Xe(e,"x","floor");return me.engine.runKernel(function(e){return e.floor(t)},{$x:t},function(e){return{$x:function(){return _t(e)}}})}}),Oa=Je({log_:function(e){var t=Xe(e,"x","log");return me.engine.runKernel(function(e){return e.log(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.toFloat())}}})}}),ka=Je({log1p_:function(e){var t=Xe(e,"x","log1p");return me.engine.runKernel(function(e){return e.log1p(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.add(rt(1)))}}})}}),Ia=Je({logSigmoid_:function(e){var t=Xe(e,"x","logSigmoid");return me.engine.runKernel(function(e){return e.softplus(t.neg()).neg()},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.neg().sigmoid())}}})}}),Ca=Je({neg_:function(e){var t=Xe(e,"x","neg");return me.engine.runKernel(function(e){return e.neg(t)},{$x:t},function(e){return{$x:function(){return e.neg()}}})}}),Pa=Je({reciprocal_:function(e){var t=Xe(e,"x","reciprocal");return me.engine.runKernel(function(e){return e.reciprocal(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.square().neg())}}})}}),Aa=Je({round_:function(e){var t=Xe(e,"x","round");return me.engine.runKernel(function(e){return e.round(t)},{$x:t},function(e){return{$x:function(){return _t(e)}}})}}),Ta=Je({rsqrt_:function(e){var t=Xe(e,"x","rsqrt");return me.engine.runKernel(function(e){return e.rsqrt(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.pow(rt(1.5)).mul(rt(2))).neg()}}})}}),Ma=Je({sigmoid_:function(e){var t=Xe(e,"x","sigmoid");return me.engine.runKernel(function(e,n){return n(e.sigmoid(t))},{$x:t},function(e,t){var n=t[0];return{$x:function(){return e.mulStrict(n.mul(rt(1).sub(n)))}}})}}),Ra=Je({sign_:function(e){var t=Xe(e,"x","sign");return me.engine.runKernel(function(e){return e.sign(t)},{$x:t},function(e){return{$x:function(){return _t(e)}}})}}),Da=Je({sin_:function(e){var t=Xe(e,"x","sin");return me.engine.runKernel(function(e){return e.sin(t)},{$x:t},function(e){return{$x:function(){return t.toFloat().cos().mulStrict(e)}}})}}),ja=Je({sinh_:function(e){var t=Xe(e,"x","sinh");return me.engine.runKernel(function(e){return e.sinh(t)},{$x:t},function(e){return{$x:function(){return t.toFloat().cosh().mulStrict(e)}}})}}),La=Je({softplus_:function(e){var t=Xe(e,"x","softplus");return me.engine.runKernel(function(e){return e.softplus(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.sigmoid())}}})}}),Ba=Je({sqrt_:function(e){var t=Xe(e,"x","sqrt");return me.engine.runKernel(function(e){return e.sqrt(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.toFloat().sqrt().mul(rt(2)))}}})}}),za=Je({square_:function(e){var t=Xe(e,"x","square");return me.engine.runKernel(function(e){return e.square(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.toFloat().mul(rt(2)))}}})}}),Fa=Je({step_:function(e,t){void 0===t&&(t=0);var n=Xe(e,"x","step");return me.engine.runKernel(function(e){return e.step(n,t)},{$x:n},function(e){return{$x:function(){return _t(e)}}})}}),Va=Je({tan_:function(e){var t=Xe(e,"x","tan");return me.engine.runKernel(function(e){return e.tan(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.cos().square())}}})}}),Ua=Je({tanh_:function(e){var t=Xe(e,"x","tanh");return me.engine.runKernel(function(e,n){return n(e.tanh(t))},{$x:t},function(e,t){var n=t[0];return{$x:function(){return rt(1).sub(n.square()).mulStrict(e)}}})}});function Wa(e){return null==e?null:0===e.rank?e.as1D():1===e.rank?e:2===e.rank?e.as4D(1,1,e.shape[0],e.shape[1]):3===e.rank?e.as4D(1,e.shape[0],e.shape[1],e.shape[2]):e}var qa=Je({batchNormalization2d_:function(e,t,n,r,a,i){void 0===r&&(r=.001);var o,s,u=Xe(e,"x","batchNormalization"),l=Xe(t,"mean","batchNormalization"),c=Xe(n,"variance","batchNormalization");return null!=a&&(o=Xe(a,"scale","batchNormalization")),null!=i&&(s=Xe(i,"offset","batchNormalization")),d(2===u.rank,"Error in batchNormalization3D: x must be rank 3 but got rank "+u.rank+"."),d(2===l.rank||1===l.rank,"Error in batchNormalization2D: mean must be rank 2 or rank 1 but got rank "+l.rank+"."),d(2===c.rank||1===c.rank,"Error in batchNormalization2D: variance must be rank 2 or rank 1 but got rank "+c.rank+"."),null!=o&&d(2===o.rank||1===o.rank,"Error in batchNormalization2D: scale must be rank 2 or rank 1 but got rank "+o.rank+"."),null!=s&&d(2===s.rank||1===s.rank,"Error in batchNormalization2D: offset must be rank 2 or rank 1 but got rank "+s.rank+"."),Ha(u,l,c,r,o,s)}}),$a=Je({batchNormalization3d_:function(e,t,n,r,a,i){void 0===r&&(r=.001);var o,s,u=Xe(e,"x","batchNormalization"),l=Xe(t,"mean","batchNormalization"),c=Xe(n,"variance","batchNormalization");return null!=a&&(o=Xe(a,"scale","batchNormalization")),null!=i&&(s=Xe(i,"offset","batchNormalization")),d(3===u.rank,"Error in batchNormalization3D: x must be rank 3 but got rank "+u.rank+"."),d(3===l.rank||1===l.rank,"Error in batchNormalization3D: mean must be rank 3 or rank 1 but got rank "+l.rank+"."),d(3===c.rank||1===c.rank,"Error in batchNormalization3D: variance must be rank 3 or rank 1 but got rank "+c.rank+"."),null!=o&&d(3===o.rank||1===o.rank,"Error in batchNormalization3D: scale must be rank 3 or rank 1 but got rank "+o.rank+"."),null!=s&&d(3===s.rank||1===s.rank,"Error in batchNormalization3D: offset must be rank 3 or rank 1 but got rank "+s.rank+"."),Ha(u,l,c,r,o,s)}}),Ga=Je({batchNormalization4d_:function(e,t,n,r,a,i){void 0===r&&(r=.001);var o,s,u=Xe(e,"x","batchNormalization"),l=Xe(t,"mean","batchNormalization"),c=Xe(n,"variance","batchNormalization");return null!=a&&(o=Xe(a,"scale","batchNormalization")),null!=i&&(s=Xe(i,"offset","batchNormalization")),d(4===u.rank,"Error in batchNormalization4D: x must be rank 4 but got rank "+u.rank+"."),d(4===l.rank||1===l.rank,"Error in batchNormalization4D: mean must be rank 4 or rank 1 but got rank "+l.rank+"."),d(4===c.rank||1===c.rank,"Error in batchNormalization4D: variance must be rank 4 or rank 1 but got rank "+c.rank+"."),null!=o&&d(4===o.rank||1===o.rank,"Error in batchNormalization4D: scale must be rank 4 or rank 1 but got rank "+o.rank+"."),null!=s&&d(4===s.rank||1===s.rank,"Error in batchNormalization4D: offset must be rank 4 or rank 1 but got rank "+s.rank+"."),Ha(u,l,c,r,o,s)}}),Ha=Je({batchNormalization_:function(e,t,n,r,a,i){void 0===r&&(r=.001);var o,s,u,l=Xe(e,"x","batchNormalization"),c=Xe(t,"mean","batchNormalization"),f=Xe(n,"variance","batchNormalization");return null!=a&&(o=Xe(a,"scale","batchNormalization")),null!=i&&(s=Xe(i,"offset","batchNormalization")),d(c.rank===f.rank,"Batch normalization gradient requires mean and variance to have equal ranks."),d(null==s||c.rank===s.rank,"Batch normalization gradient requires mean and offset to have equal ranks."),d(null==o||c.rank===o.rank,"Batch normalization gradient requires mean and scale to have equal ranks."),u=0===l.rank||1===l.rank?l.as4D(1,1,1,l.size):2===l.rank?l.as4D(1,1,l.shape[0],l.shape[1]):3===l.rank?l.as4D(1,l.shape[0],l.shape[1],l.shape[2]):l,me.engine.runKernel(function(e){return e.batchNormalization(u,Wa(c),Wa(f),r,Wa(o),Wa(s))},{$x:l,$mean:c,$variance:f,$scale:o,$offset:s},function(e){var t=null==o?rt(1):o,n=Rt(c.shape,u.shape),a=[];if(1===c.rank){for(var i=0;i=2&&i.rank>=2&&a.rank===i.rank,"Error in matMul: inputs must have the same rank of at least 2, got ranks "+a.rank+" and "+i.rank+"."),d(w(c,f),"Error in matMul: outer dimensions ("+c+") and ("+f+") of Tensors with shapes "+a.shape+" and "+i.shape+" must match."),d(o===s,"Error in matMul: inner shapes ("+o+") and ("+s+") of Tensors with shapes "+a.shape+" and "+i.shape+" and transposeA="+n+" and transposeB="+r+" must match.");var m=a.shape.slice(0,-2).concat([u,l]),g=n?a.as3D(p,o,u):a.as3D(p,u,o),y=r?i.as3D(h,l,s):i.as3D(h,s,l);return me.engine.runKernel(function(e){return e.batchMatMul(g,y,n,r)},{$a:g,$b:y},function(e){return n||r?!n&&r?{$a:function(){return e.matMul(y.toFloat(),!1,!1)},$b:function(){return e.matMul(g.toFloat(),!0,!1)}}:n&&!r?{$a:function(){return y.toFloat().matMul(e,!1,!0)},$b:function(){return g.toFloat().matMul(e,!1,!1)}}:{$a:function(){return y.toFloat().matMul(e,!0,!0)},$b:function(){return e.matMul(g.toFloat(),!0,!0)}}:{$a:function(){return e.matMul(y.toFloat(),!1,!0)},$b:function(){return g.toFloat().matMul(e,!0,!1)}}}).reshape(m)}}),ei=Je({dot_:function(e,t){var n=Xe(e,"t1","dot"),r=Xe(t,"t2","dot");d(!(1!==n.rank&&2!==n.rank||1!==r.rank&&2!==r.rank),"Error in dot: inputs must all be rank 1 or 2, but got ranks "+n.rank+" and "+r.rank+".");var a=1===n.rank?n.size:n.shape[1],i=1===r.rank?r.size:r.shape[0];return d(a===i,"Error in dot: inner dimensions of inputs must match, but got "+a+" and "+i+"."),1===n.rank&&1===r.rank?n.as2D(1,-1).matMul(r.as2D(-1,1)).asScalar():1===n.rank&&2===r.rank?n.as2D(1,-1).matMul(r.as2D(r.shape[0],r.shape[1])).as1D():2===n.rank&&1===r.rank?n.matMul(r.as2D(-1,1)).as1D():n.matMul(r.as2D(r.shape[0],r.shape[1]))}}),ti=Je({outerProduct_:function(e,t){var n=Xe(e,"v1","outerProduct"),r=Xe(t,"v2","outerProduct");return d(1===n.rank&&1===r.rank,"Error in outerProduct: inputs must be rank 1, but got ranks "+n.rank+" and "+r.rank+"."),n.as2D(-1,1).matMul(r.as2D(1,-1))}});function ni(e,t,n,r,a,i){d(e.length===t.rank,"Length of inShape ("+e.length+") and rank of dy ("+t.rank+") must match");var o=e,s=t,u=!1;3===t.rank&&(u=!0,s=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]),o=[1,e[0],e[1],e[2]]);var l=o[3],c=s.shape[3];d(4===o.length,"Error in conv2dDerInput: inShape must be length 4, but got length "+o.length+"."),d(4===s.rank,"Error in conv2dDerInput: dy must be rank 4, but got rank "+s.rank),d(4===n.rank,"Error in conv2dDerInput: filter must be rank 4, but got rank "+n.rank),d(l===n.shape[2],"Error in conv2dDerInput: depth of input ("+l+") must match input depth for filter "+n.shape[2]+"."),d(c===n.shape[3],"Error in conv2dDerInput: depth of output ("+c+") must match output depth for filter "+n.shape[3]+"."),null!=i&&d(x(a),"Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+a+".");var f=Xa(o,n.shape,r,1,a,i),p=me.engine.runKernel(function(e){return e.conv2dDerInput(s,n,f)},{dy4D:s});return u?p.as3D(p.shape[1],p.shape[2],p.shape[3]):p}function ri(e){var t=function(e){return"number"==typeof e?[e,e]:e}(e),n=t[0],r=t[1];return 1===n&&1===r}function ai(e,t){return ri(e)||ri(t)}var ii=Je({conv1d_:function(e,t,n,r,a,i,o){void 0===a&&(a="NWC"),void 0===i&&(i=1);var s=Xe(e,"x","conv1d"),u=Xe(t,"filter","conv1d"),l=s,c=!1;2===s.rank&&(c=!0,l=s.as3D(1,s.shape[0],s.shape[1])),d(3===l.rank,"Error in conv1d: input must be rank 3, but got rank "+l.rank+"."),d(3===u.rank,"Error in conv1d: filter must be rank 3, but got rank "+u.rank+"."),null!=o&&d(x(r),"Error in conv1d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+"."),d(l.shape[2]===u.shape[1],"Error in conv1d: depth of input ("+l.shape[2]+") must match input depth for filter "+u.shape[1]+"."),d(ai(n,i),"Error in conv1D: Either stride or dilation must be 1. Got stride "+n+" and dilation '"+i+"'"),d("NWC"===a,"Error in conv1d: got dataFormat of "+a+" but only NWC is currently supported.");var f=u.as4D(1,u.shape[0],u.shape[1],u.shape[2]),p=l.as4D(l.shape[0],1,l.shape[1],l.shape[2]),h=oi(p,f,[1,n],r,"NHWC",[1,i],o);return c?h.as2D(h.shape[2],h.shape[3]):h.as3D(h.shape[0],h.shape[2],h.shape[3])}}),oi=Je({conv2d_:function(e,t,n,r,a,i,o){void 0===a&&(a="NHWC"),void 0===i&&(i=[1,1]);var s=Xe(e,"x","conv2d"),u=Xe(t,"filter","conv2d"),l=s,c=!1;3===s.rank&&(c=!0,l=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),d(4===l.rank,"Error in conv2d: input must be rank 4, but got rank "+l.rank+"."),d(4===u.rank,"Error in conv2d: filter must be rank 4, but got rank "+u.rank+"."),null!=o&&d(x(r),"Error in conv2d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+"."),d(l.shape[3]===u.shape[2],"Error in conv2d: depth of input ("+l.shape[3]+") must match input depth for filter "+u.shape[2]+"."),d(ai(n,i),"Error in conv2D: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+i+"'"),d("NHWC"===a,"Error in conv2d: got dataFormat of "+a+" but only NHWC is currently supported.");var f,p=Xa(l.shape,u.shape,n,i,r,o);if(1===p.filterHeight&&1===p.filterWidth&&1===p.dilationHeight&&1===p.dilationWidth&&1===p.strideHeight&&1===p.strideWidth&&"SAME"===p.padInfo.type){var h=l.reshape([-1,p.inChannels]),m=u.reshape([p.inChannels,p.outChannels]);f=Qa(h,m).reshape(p.outShape)}else f=me.engine.runKernel(function(e){return e.conv2d(l,u,p)},{x:l,$filter:u},function(e){return d(ri(i),"Error in gradient of conv2D: dilation rates greater than 1 are notyet supported in gradients. Got dilations '"+i+"'"),{x:function(){return ni(l.shape,e,u,n,r)},$filter:function(){return function(e,t,n,r,a,i){var o=e;3===e.rank&&(o=e.as4D(1,e.shape[0],e.shape[1],e.shape[2]));var s=t;3===s.rank&&(s=t.as4D(1,t.shape[0],t.shape[1],t.shape[2])),d(4===o.rank,"Error in conv2dDerFilter: input must be rank 4, but got shape "+o.shape+"."),d(4===s.rank,"Error in conv2dDerFilter: dy must be rank 4, but got shape "+s.shape+"."),d(4===n.length,"Error in conv2dDerFilter: filterShape must be length 4, but got "+n+"."),d(o.shape[3]===n[2],"Error in conv2dDerFilter: depth of input "+o.shape[3]+") must match input depth in filter ("+n[2]+"."),d(s.shape[3]===n[3],"Error in conv2dDerFilter: depth of dy ("+s.shape[3]+") must match output depth for filter ("+n[3]+").");var u=Xa(o.shape,n,r,1,a,i);return me.engine.runKernel(function(e){return e.conv2dDerFilter(o,s,u)},{x4D:o,dy4D:s})}(l,e,u.shape,n,r)}}});return c?f.as3D(f.shape[1],f.shape[2],f.shape[3]):f}}),si=Je({depthwiseConv2d_:function(e,t,n,r,a,i,o){void 0===a&&(a="NHWC"),void 0===i&&(i=[1,1]);var s=Xe(e,"x","depthwiseConv2d"),u=Xe(t,"filter","depthwiseConv2d"),l=s,c=!1;3===s.rank&&(c=!0,l=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),d(4===l.rank,"Error in depthwiseConv2d: input must be rank 4, but got rank "+l.rank+"."),d(4===u.rank,"Error in depthwiseConv2d: filter must be rank 4, but got rank "+u.rank+"."),d(l.shape[3]===u.shape[2],"Error in depthwiseConv2d: number of input channels ("+l.shape[3]+") must match the inChannels dimension in filter "+u.shape[2]+"."),null==i&&(i=[1,1]),d(ai(n,i),"Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+i+"'"),null!=o&&d(x(r),"Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+".");var f=Xa(l.shape,u.shape,n,i,r,o,!0),p=me.engine.runKernel(function(e){return e.depthwiseConv2D(l,u,f)},{x:l,$filter:u},function(e){return d(ri(i),"Error in gradient of depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '"+i+"'"),{x:function(){return function(e,t,n,r){var a=t,i=!1;3===t.rank&&(i=!0,a=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]));var o=me.engine.runKernel(function(e){return e.depthwiseConv2DDerInput(a,n,r)},{dy4D:a});return i?o.as3D(o.shape[1],o.shape[2],o.shape[3]):o}(l.shape,e,u,f)},$filter:function(){return function(e,t,n,r){var a=e;3===e.rank&&(a=e.as4D(1,e.shape[0],e.shape[1],e.shape[2]));var i=t;return 3===i.rank&&(i=t.as4D(1,t.shape[0],t.shape[1],t.shape[2])),me.engine.runKernel(function(e){return e.depthwiseConv2DDerFilter(a,i,r)},{x4D:a,dy4D:i})}(l,e,u.shape,f)}}});return c?p.as3D(p.shape[1],p.shape[2],p.shape[3]):p}}),ui=Je({separableConv2d_:function(e,t,n,r,a,i,o){void 0===i&&(i=[1,1]),void 0===o&&(o="NHWC");var s=Xe(e,"x","separableConv2d"),u=Xe(t,"depthwiseFilter","separableConv2d"),l=Xe(n,"pointwiseFilter","separableConv2d"),c=s,f=!1;if(3===s.rank&&(f=!0,c=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),"NCHW"===o)throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");d(4===c.rank,"Error in separableConv2d: input must be rank 4, but got rank "+c.rank+"."),d(4===u.rank,"Error in separableConv2d: depthwise filter must be rank 4, but got rank "+u.rank+"."),d(4===l.rank,"Error in separableConv2d: pointwise filter must be rank 4, but got rank "+u.rank+"."),d(1===l.shape[0],"Error in separableConv2d: the first dimension of pointwise filter must be 1, but got "+l.shape[0]+"."),d(1===l.shape[1],"Error in separableConv2d: the second dimension of pointwise filter must be 1, but got "+l.shape[1]+".");var p=u.shape[2],h=u.shape[3];d(l.shape[2]===p*h,"Error in separableConv2d: the third dimension of pointwise filter must be "+p*h+", but got "+l.shape[2]+".");var m=si(c,u,r,a,o,i),g=oi(m,l,1,"valid",o);return f?g.as3D(g.shape[1],g.shape[2],g.shape[3]):g}}),li=Je({conv2dTranspose_:function(e,t,n,r,a,i){return ni(n,Xe(e,"x","conv2dTranspose"),Xe(t,"filter","conv2dTranspose"),r,a,i)}}),ci=Je({reverse_:function(e,t){var n=Xe(e,"x","reverse");if(0===n.rank)return n.clone();var r=Be(t,n.shape);return me.engine.runKernel(function(e){return e.reverse(n,r)},{$x:n},function(e){return{$x:function(){return e.reverse(r)}}}).reshapeAs(n)}}),fi=Je({reverse1d_:function(e){var t=Xe(e,"x","reverse");return d(1===t.rank,"Error in reverse1D: x must be rank 1 but got\n rank "+t.rank+"."),ci(t,0)}}),pi=Je({reverse2d_:function(e,t){var n=Xe(e,"x","reverse");return d(2===n.rank,"Error in reverse2D: x must be rank 2 but got\n rank "+n.rank+"."),ci(n,t)}}),hi=Je({reverse3d_:function(e,t){var n=Xe(e,"x","reverse");return d(3===n.rank,"Error in reverse3D: x must be rank 3 but got\n rank "+n.rank+"."),ci(n,t)}}),di=Je({reverse4d_:function(e,t){var n=Xe(e,"x","reverse");return d(4===n.rank,"Error in reverse4D: x must be rank 4 but got\n rank "+n.rank+"."),ci(n,t)}}),mi=Je({maxPool_:function(e,t,n,r,a){var i=Xe(e,"x","maxPool"),o=i,s=!1;3===i.rank&&(s=!0,o=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),d(4===o.rank,"Error in maxPool: input must be rank 4 but got rank "+o.rank+"."),null!=a&&d(x(r),"Error in maxPool: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+r+".");var u=Ka(o.shape,t,n,r,a),l=me.engine.runKernel(function(e,t){return t(e.maxPool(o,u))},{x:o},function(e,a){var i=a[0];return{x:function(){return function(e,t,n,r,a,i,o){var s=Xe(e,"dy","maxPoolBackprop"),u=Xe(t,"input","maxPoolBackprop"),l=Xe(n,"output","maxPoolBackprop");d(u.rank===s.rank,"Rank of input ("+u.rank+") does not match rank of dy ("+s.rank+")"),d(4===s.rank,"Error in maxPoolBackprop: dy must be rank 4 but got rank "+s.rank+"."),d(4===u.rank,"Error in maxPoolBackprop: input must be rank 4 but got rank "+u.rank+".");var c=Ka(u.shape,r,a,i,o);return me.engine.runKernel(function(e){return e.maxPoolBackprop(s,u,l,c)},{$dy:s,$input:u})}(e,o,i,t,n,r)}}});return s?l.as3D(l.shape[1],l.shape[2],l.shape[3]):l}}),gi=Je({avgPool_:function(e,t,n,r,a){var i=Xe(e,"x","avgPool");d("float32"===i.dtype,"The input dtype to avgPool must be float32");var o=i,s=!1;3===i.rank&&(s=!0,o=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),d(4===o.rank,"Error in avgPool: x must be rank 4 but got rank "+o.rank+"."),null!=a&&d(x(r),"Error in avgPool: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+r+".");var u=Ka(o.shape,t,n,r),l=me.engine.runKernel(function(e){return e.avgPool(o,u)},{x:o},function(e){return{x:function(){return function(e,t,n,r,a){var i=Xe(e,"dy","avgPoolBackprop"),o=Xe(t,"input","avgPoolBackprop");d(o.rank===i.rank,"Rank of input ("+o.rank+") does not match rank of dy ("+i.rank+")");var s=o,u=i,l=!1;3===o.rank&&(l=!0,s=o.as4D(1,o.shape[0],o.shape[1],o.shape[2]),u=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),d(4===u.rank,"Error in avgPoolBackprop: dy must be rank 4 but got rank "+u.rank+"."),d(4===s.rank,"Error in avgPoolBackprop: input must be rank 4 but got rank "+s.rank+".");var c=Ka(s.shape,n,r,a),f=me.engine.runKernel(function(e){return e.avgPoolBackprop(u,s,c)},{dy4D:u,input4D:s});return l?f.as3D(f.shape[1],f.shape[2],f.shape[3]):f}(e,o,t,n,r)}}});return l=l.cast(i.dtype),s?l.as3D(l.shape[1],l.shape[2],l.shape[3]):l}}),yi=Je({slice_:function(e,t,n){var r,a,i=Xe(e,"x","slice");if(0===i.rank)throw new Error("Slicing scalar is not possible");r="number"==typeof t?[t].concat(new Array(i.rank-1).fill(0)):t.length=0?e:(d(-1===e,"Bad value in size"),i.shape[t]-r[t])}),function(e,t,n){d(e.rank===t.length,"Error in slice"+e.rank+"D: Length of begin "+t+" must match the rank of the array ("+e.rank+")."),d(e.rank===n.length,"Error in slice"+e.rank+"D: Length of size "+n+" must match the rank of the array ("+e.rank+").");for(var r=0;r0&&(t=t.sum(r)),t.reshape(n.shape)},$b:function(){var t=e,n=Rt(r.shape,a);return n.length>0&&(t=t.sum(n)),t.reshape(r.shape)}}})}}),Gi=Je({addN_:function(e){d(Array.isArray(e),function(){return"The argument passed to tf.addN() must be a list of tensors"}),d(e.length>=1,function(){return"Must pass at least one tensor to tf.addN(), but got "+e.length});var t=e.map(function(e,t){return Xe(e,"tensors"+t,"addN")}),n=t[0];t.forEach(function(e){if(e.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(function(e){if(!w(e.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});var r=t;return me.engine.runKernel(function(e){return e.addN(t)},r,function(e){var n={};return t.forEach(function(t,r){n[r]=function(){return e.clone()}}),n})}}),Hi=Je({addStrict_:function(e,t){return m(e.shape,t.shape,"Error in addStrict: "),e.add(t)}}),Ki=Je({atan2_:function(e,t){var n=Xe(e,"a","atan2"),r=Xe(t,"b","atan2");ne(n,r);var a=Dt(n.shape,r.shape);return me.engine.runKernel(function(e){return e.atan2(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=$i(n.square(),r.square()),i=e.mul(r.div(t)),o=Rt(n.shape,a);return o.length>0&&(i=i.sum(o)),i.reshape(n.shape)},$b:function(){var t=$i(n.square(),r.square()),i=Ca(e.mul(n.div(t))),o=Rt(r.shape,a);return o.length>0&&(i=i.sum(o)),i.reshape(r.shape)}}})}}),Xi=Je({div_:function(e,t){var n,r=Xe(e,"a","div"),a=Xe(t,"b","div");if(ne(r,a),"int32"===r.dtype&&"int32"===a.dtype)return Ji(r,a);n=function(e){return e.realDivide(r,a)};var i=Dt(r.shape,a.shape);return me.engine.runKernel(n,{$a:r,$b:a},function(e){return{$a:function(){var t=e.div(a.toFloat()),n=Rt(r.shape,i);return n.length>0?t.sum(n).reshape(r.shape):t},$b:function(){var t=e.mul(r.toFloat()),n=Rt(a.shape,i);n.length>0&&(t=t.sum(n).reshape(a.shape));var o=a.square();return t.div(o.toFloat()).neg()}}})}}),Yi=Je({divStrict_:function(e,t){return m(e.shape,t.shape,"Error in divideStrict: "),e.div(t)}}),Ji=Je({floorDiv_:function(e,t){var n=Xe(e,"a","floorDiv"),r=Xe(t,"b","floorDiv");ne(n,r);var a=Dt(n.shape,r.shape);return me.engine.runKernel(function(e){return e.floorDiv(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=e.div(r.toFloat()),i=Rt(n.shape,a);return i.length>0?t.sum(i).reshape(n.shape):t},$b:function(){var t=e.mul(n.toFloat()),i=Rt(r.shape,a);i.length>0&&(t=t.sum(i).reshape(r.shape));var o=r.square();return t.div(o.toFloat()).neg()}}})}}),Zi=Je({maximum_:function(e,t){var n=Xe(e,"a","maximum"),r=Xe(t,"b","maximum");return ne(n,r),"bool"===n.dtype&&(n=n.toInt()),"bool"===r.dtype&&(r=r.toInt()),Dt(n.shape,r.shape),me.engine.runKernel(function(e){return e.maximum(n,r)},{$a:n,$b:r},function(e){return{$a:function(){return e.mul(n.greaterEqual(r).toFloat())},$b:function(){return e.mul(n.less(r).toFloat())}}})}}),Qi=Je({maximumStrict_:function(e,t){return m(e.shape,t.shape,"Error in maximumStrict: "),e.maximum(t)}}),eo=Je({minimum_:function(e,t){var n=Xe(e,"a","minimum"),r=Xe(t,"b","minimum");return ne(n,r),"bool"===n.dtype&&(n=n.toInt()),"bool"===r.dtype&&(r=r.toInt()),Dt(n.shape,r.shape),me.engine.runKernel(function(e){return e.minimum(n,r)},{$a:n,$b:r},function(e){return{$a:function(){return e.mul(n.lessEqual(r).toFloat())},$b:function(){return e.mul(n.greater(r).toFloat())}}})}}),to=Je({minimumStrict_:function(e,t){return m(e.shape,t.shape,"Error in minimumStrict: "),e.minimum(t)}}),no=Je({mod_:function(e,t){var n=Xe(e,"a","mod"),r=Xe(t,"b","mod");ne(n,r);var a=Dt(n.shape,r.shape);return me.engine.runKernel(function(e){return e.mod(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=Rt(n.shape,a);return t.length>0?e.sum(t).reshape(n.shape):e},$b:function(){var t=e.mul(n.div(r).floor().neg()),i=Rt(r.shape,a);return i.length>0?t.sum(i).reshape(r.shape):t}}})}}),ro=Je({modStrict_:function(e,t){return m(e.shape,t.shape,"Error in modStrict: "),e.mod(t)}}),ao=Je({mul_:function(e,t){var n=Xe(e,"a","mul"),r=Xe(t,"b","mul");ne(n,r);var a=Dt(n.shape,r.shape);return me.engine.runKernel(function(e){return e.multiply(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=e.mul(r.toFloat()),i=Rt(n.shape,a);return i.length>0?t.sum(i).reshape(n.shape):t},$b:function(){var t=e.mul(n.toFloat()),i=Rt(r.shape,a);return i.length>0?t.sum(i).reshape(r.shape):t}}})}}),io=Je({mulStrict_:function(e,t){return m(e.shape,t.shape,"Error in multiplyStrict: "),e.mul(t)}}),oo=Je({pow_:function(e,t){var n=Xe(e,"base","pow"),r=Xe(t,"exp","pow"),a=Dt(n.shape,r.shape);return e=n.cast(Nt(n.dtype,r.dtype)),t=r.cast(Nt(n.dtype,r.dtype)),me.engine.runKernel(function(e,t){return t(e.pow(n,r))},{$base:n,$exp:r},function(e,t){var i=t[0];return{$base:function(){var t=e.mul(r.toFloat().mul(i.div(n))),o=Rt(n.shape,a);return o.length>0&&(t=t.sum(o)),t.reshape(n.shape)},$exp:function(){var t=e.mul(i.mul(n.log()).toFloat()),o=Rt(r.shape,a);return o.length>0&&(t=t.sum(o)),t.reshape(r.shape)}}})}}),so=Je({powStrict_:function(e,t){return m(e.shape,t.shape,"Error in powStrict: "),e.pow(t)}}),uo=Je({squaredDifference_:function(e,t){var n=Xe(e,"a","squaredDifference"),r=Xe(t,"b","squaredDifference");return ne(n,r),Dt(n.shape,r.shape),me.engine.runKernel(function(e){return e.squaredDifference(n,r)},{$a:n,$b:r},function(e){var t=rt(2);return{$a:function(){return e.mul(n.sub(r).mul(t))},$b:function(){return e.mul(r.sub(n).mul(t))}}})}}),lo=Je({squaredDifferenceStrict_:function(e,t){return m(e.shape,t.shape,"Error in squaredDifferenceStrict: "),e.squaredDifference(t)}}),co=Je({sub_:function(e,t){var n=Xe(e,"a","sub"),r=Xe(t,"b","sub");ne(n,r);var a=Dt(n.shape,r.shape);return me.engine.runKernel(function(e){return e.subtract(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=e,r=Rt(n.shape,a);return r.length>0&&(t=t.sum(r)),t.reshape(n.shape)},$b:function(){var t=e,n=Rt(r.shape,a);return n.length>0&&(t=t.sum(n)),t.neg().reshape(r.shape)}}})}}),fo=Je({subStrict_:function(e,t){return m(e.shape,t.shape,"Error in subStrict: "),e.sub(t)}}),po=Je({logicalAnd_:function(e,t){var n=Xe(e,"a","logicalAnd","bool"),r=Xe(t,"b","logicalAnd","bool");return d("bool"===n.dtype&&"bool"===r.dtype,"Error Array must be of type bool."),Dt(n.shape,r.shape),me.engine.runKernel(function(e){return e.logicalAnd(n,r)},{$a:n,$b:r})}}),ho=Je({logicalNot_:function(e){var t=Xe(e,"x","logicalNot","bool");return d("bool"===t.dtype,"Error Array must be of type bool."),me.engine.runKernel(function(e){return e.logicalNot(t)},{$x:t})}}),mo=Je({logicalOr_:function(e,t){var n=Xe(e,"a","logicalOr","bool"),r=Xe(t,"b","logicalOr","bool");return d("bool"===n.dtype&&"bool"===r.dtype,"Error Array must be of type bool."),Dt(n.shape,r.shape),me.engine.runKernel(function(e){return e.logicalOr(n,r)},{$a:n,$b:r})}}),go=Je({logicalXor_:function(e,t){var n=Xe(e,"a","logicalXor","bool"),r=Xe(t,"b","logicalXor","bool");return d("bool"===n.dtype&&"bool"===r.dtype,"Error Array must be of type bool."),Dt(n.shape,r.shape),mo(e,t).logicalAnd(po(e,t).logicalNot())}}),yo=Je({where_:function(e,t,n){var r=Xe(t,"a","where"),a=Xe(n,"b","where"),i=Xe(e,"condition","where","bool");return d("bool"===i.dtype,"Error Condition must be of type bool."),m(r.shape,a.shape,"Error in where: "),1===i.rank?d(i.shape[0]===r.shape[0],"The first dimension of `a` must match the size of `condition`."):m(i.shape,a.shape,"Error in where: "),me.engine.runKernel(function(e){return e.select(i,r,a)},{$condition:i,$a:r,$b:a},function(e){return{$condition:function(){return _t(i)},$a:function(){return e.mul(i.cast(r.dtype))},$b:function(){return e.mul(i.logicalNot().cast(a.dtype))}}})}}),vo=function(e){return l(this,void 0,void 0,function(){var t,n,r;return c(this,function(a){switch(a.label){case 0:return d("bool"===(t=Xe(e,"condition","where","bool")).dtype,"Condition must be of type bool."),[4,t.data()];case 1:return n=a.sent(),r=ua(t.shape,n),e!==t&&t.dispose(),[2,r]}})})},bo=Je({elu_:function(e){var t=Xe(e,"x","elu");return me.engine.runKernel(function(e,n){return n(e.elu(t))},{$x:t},function(e,t){var n=t[0];return{$x:function(){return me.engine.runKernel(function(t){return t.eluDer(e,n)},{dy:e,y:n})}}})}}),wo=Je({leakyRelu_:function(e,t){void 0===t&&(t=.2);var n=Xe(e,"x","leakyRelu");return Zi(rt(t).mul(n),n)}}),xo=Je({prelu_:function(e,t){var n=Xe(e,"x","prelu"),r=Xe(t,"alpha","prelu"),a=rt(0);return Zi(a,n).add(r.mul(eo(a,n)))}}),_o=Je({relu_:function(e){var t=Xe(e,"x","relu");return"bool"===t.dtype?t.toInt():me.engine.runKernel(function(e){return e.relu(t)},{$x:t},function(e){var n=t.step();return{$x:function(){return e.mulStrict(n.toFloat())}}})}}),Eo=Je({selu_:function(e){var t=Xe(e,"x","selu");return me.engine.runKernel(function(e){return e.selu(t)},{$x:t},function(e){return{$x:function(){var n=t.greater(rt(0)),r=rt(dr),a=rt(mr),i=e.mul(a),o=e.mul(r).mul(t.toFloat().exp());return yo(n,i,o)}}})}}),No=Je({transpose_:function(e,t){var n=Xe(e,"x","transpose");return null==t&&(t=n.shape.map(function(e,t){return t}).reverse()),d(n.rank===t.length,"Error in transpose: rank of input "+n.rank+" must match length of perm "+t+"."),t.forEach(function(e){d(e>=0&&ea)throw new Error("'k' passed to topk() must be <= the last dimension ("+a+") but got "+t);var i=me.engine.runKernel(function(e){return e.topk(r,t,n)},{$x:r});return{values:i[0],indices:i[1]}}});!function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"}(Co||(Co={}));var Lo=Je({absoluteDifference_:function(e,t,n,r){void 0===r&&(r=Co.SUM_BY_NONZERO_WEIGHTS);var a=Xe(e,"labels","absoluteDifference"),i=Xe(t,"predictions","absoluteDifference"),o=null;null!=n&&(o=Xe(n,"weights","absoluteDifference")),m(a.shape,i.shape,"Error in absoluteDifference: ");var s=a.sub(i).abs();return Bo(s,o,r)}}),Bo=Je({computeWeightedLoss_:function(e,t,n){void 0===n&&(n=Co.SUM_BY_NONZERO_WEIGHTS);var r=Xe(e,"losses","computeWeightedLoss"),a=null;null!=t&&(a=Xe(t,"weights","computeWeightedLoss"));var i=null==a?r:r.mul(a);if(n===Co.NONE)return i;if(n===Co.SUM)return i.sum();if(n===Co.MEAN){if(null==a)return i.mean();var o=b(r.shape)/b(a.shape),s=i.sum().div(a.sum());return o>1?s.div(rt(o)):s}if(n===Co.SUM_BY_NONZERO_WEIGHTS){if(null==a)return i.sum().div(rt(r.size));var u=a.mul(ct(r.shape)).notEqual(rt(0)).sum().toFloat();return i.sum().div(u)}throw Error("Unknown reduction: "+n)}}),zo=Je({cosineDistance_:function(e,t,n,r,a){void 0===a&&(a=Co.SUM_BY_NONZERO_WEIGHTS);var i=Xe(e,"labels","cosineDistance"),o=Xe(t,"predictions","cosineDistance"),s=null;null!=r&&(s=Xe(r,"weights","cosineDistance")),m(i.shape,o.shape,"Error in cosineDistance: ");var u=rt(1).sub(i.mul(o).sum(n,!0));return Bo(u,s,a)}}),Fo=Je({hingeLoss_:function(e,t,n,r){void 0===r&&(r=Co.SUM_BY_NONZERO_WEIGHTS);var a=Xe(e,"labels","hingeLoss"),i=Xe(t,"predictions","hingeLoss"),o=null;null!=n&&(o=Xe(n,"weights","hingeLoss")),m(a.shape,i.shape,"Error in hingeLoss: ");var s=rt(1);a=rt(2).mul(a).sub(s);var u=s.sub(a.mul(i)).relu();return Bo(u,o,r)}}),Vo=Je({huberLoss_:function(e,t,n,r,a){void 0===r&&(r=1),void 0===a&&(a=Co.SUM_BY_NONZERO_WEIGHTS);var i=Xe(e,"labels","huberLoss"),o=Xe(t,"predictions","huberLoss"),s=null;null!=n&&(s=Xe(n,"weights","huberLoss")),m(i.shape,o.shape,"Error in huberLoss: ");var u=rt(r),l=o.sub(i).abs(),c=eo(l,u),f=l.sub(c),p=rt(.5).mul(c.square()).add(u.mul(f));return Bo(p,s,a)}}),Uo=Je({logLoss_:function(e,t,n,r,a){void 0===r&&(r=1e-7),void 0===a&&(a=Co.SUM_BY_NONZERO_WEIGHTS);var i=Xe(e,"labels","logLoss"),o=Xe(t,"predictions","logLoss"),s=null;null!=n&&(s=Xe(n,"weights","logLoss")),m(i.shape,o.shape,"Error in logLoss: ");var u=rt(1),l=rt(r),c=i.mul(o.add(l).log()).neg().sub(u.sub(i).mul(u.sub(o).add(l).log()));return Bo(c,s,a)}}),Wo=Je({meanSquaredError_:function(e,t,n,r){void 0===r&&(r=Co.SUM_BY_NONZERO_WEIGHTS);var a=Xe(e,"labels","meanSquaredError"),i=Xe(t,"predictions","meanSquaredError"),o=null;null!=n&&(o=Xe(n,"weights","meanSquaredError")),m(a.shape,i.shape,"Error in meanSquaredError: ");var s=a.squaredDifference(i);return Bo(s,o,r)}}),qo=Je({sigmoidCrossEntropy_:function(e,t,n,r,a){void 0===r&&(r=0),void 0===a&&(a=Co.SUM_BY_NONZERO_WEIGHTS);var i=Xe(e,"multiClassLabels","sigmoidCrossEntropy"),o=Xe(t,"logits","sigmoidCrossEntropy"),s=null;if(null!=n&&(s=Xe(n,"weights","sigmoidCrossEntropy")),m(i.shape,o.shape,"Error in sigmoidCrossEntropy: "),r>0){var u=rt(r),l=rt(1),c=rt(.5);i=i.mul(l.sub(u)).add(c.mul(u))}var f=function(e,t){var n=Xe(e,"labels","sigmoidCrossEntropyWithLogits"),r=Xe(t,"logits","sigmoidCrossEntropyWithLogits");m(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");var a=r.relu(),i=r.mul(n),o=r.abs().neg().exp().log1p();return a.sub(i).add(o)}(i,o);return Bo(f,s,a)}}),$o=Je({softmaxCrossEntropy_:function(e,t,n,r,a){void 0===r&&(r=0),void 0===a&&(a=Co.SUM_BY_NONZERO_WEIGHTS);var i=Xe(e,"onehotLabels","softmaxCrossEntropy"),o=Xe(t,"logits","softmaxCrossEntropy"),s=null;if(null!=n&&(s=Xe(n,"weights","softmaxCrossEntropy")),m(i.shape,o.shape,"Error in softmaxCrossEntropy: "),r>0){var u=rt(r),l=rt(1),c=rt(i.shape[1]);i=i.mul(l.sub(u)).add(u.div(c))}var f=function(e,t,n){if(void 0===n&&(n=-1),-1===n&&(n=t.rank-1),n!==t.rank-1)throw Error("Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank "+t.rank+" and dim was "+n);return _e(function(e,t){var r=t.logSumExp([n],!0),a=t.toFloat().sub(r);return{value:a.mul(e).neg().sum([n]),gradFunc:function(t){var r=Le(t.shape,[n]);return[t.reshape(r).mul(e.toFloat().sub(a.exp())),t.reshape(r).mul(a.exp().sub(e.toFloat()))]}}})(e,t)}(i,o);return Bo(f,s,a)}}),Go=Object.freeze({get Reduction(){return Co},absoluteDifference:Lo,computeWeightedLoss:Bo,cosineDistance:zo,hingeLoss:Fo,huberLoss:Vo,logLoss:Uo,meanSquaredError:Wo,sigmoidCrossEntropy:qo,softmaxCrossEntropy:$o});function Ho(e,t){return void 0===t&&(t=!1),me.engine.tidy(function(){if(2!==e.shape.length)throw new Error("qr2d() requires a 2D Tensor, but got a "+e.shape.length+"D Tensor.");for(var n=e.shape[0],r=e.shape[1],a=Wr(n),i=e.clone(),o=it([[1]],[1,1]),s=o.clone(),u=n>=r?r:n,l=function(e){var t,u=i,l=s,c=a;t=me.engine.tidy(function(){var t=i.slice([e,e],[n-e,1]),u=t.norm(),l=i.slice([e,e],[1,1]),c=l.sign().neg(),f=l.sub(c.mul(u)),p=t.div(f);s=1===p.shape[0]?o.clone():o.concat(p.slice([1,0],[p.shape[0]-1,p.shape[1]]),0);var h=c.matMul(f).div(u).neg(),d=i.slice([e,0],[n-e,r]),m=h.mul(s);i=0===e?d.sub(m.matMul(s.transpose().matMul(d))):i.slice([0,0],[e,r]).concat(d.sub(m.matMul(s.transpose().matMul(d))),0);var g=a.slice([0,e],[n,a.shape[1]-e]);return a=0===e?g.sub(g.matMul(s).matMul(m.transpose())):a.slice([0,0],[n,e]).concat(g.sub(g.matMul(s).matMul(m.transpose())),1),[s,i,a]}),s=t[0],i=t[1],a=t[2],Oe([u,l,c])},c=0;cr&&(a=a.slice([0,0],[n,r]),i=i.slice([0,0],[r,r])),[a,i]})}var Ko=Je({gramSchmidt_:function(e){var t;if(Array.isArray(e)){t=!1,d(null!=e&&e.length>0,"Gram-Schmidt process: input must not be null, undefined, or empty");for(var n=e[0].shape[0],r=1;r0)for(var n=0;n= 2, but got rank "+e.rank);if(2===e.rank)return Ho(e,t);var n=e.shape.slice(0,e.shape.length-2).reduce(function(e,t){return e*t}),r=[],a=[];return sa(e.reshape([n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0).forEach(function(e){var n=Ho(e,t),i=n[0],o=n[1];r.push(i),a.push(o)}),[aa(r,0).reshape(e.shape),aa(a,0).reshape(e.shape)]}}),Yo=Object.freeze({gramSchmidt:Ko,qr:Xo});function Jo(e,t,n,r,a){null==r&&(r=.5),null==a&&(a=Number.NEGATIVE_INFINITY);var i=e.shape[0];return n=Math.min(n,i),d(0<=r&&r<=1,"iouThreshold must be in [0, 1], but was '"+r+"'"),d(2===e.rank,"boxes must be a 2D tensor, but was of rank '"+e.rank+"'"),d(4===e.shape[1],"boxes must have 4 columns, but 2nd dimension was "+e.shape[1]),d(1===t.rank,"scores must be a 1D tensor"),d(t.shape[0]===i,"scores has incompatible shape with boxes. Expected "+i+", but was "+t.shape[0]),{maxOutputSize:n,iouThreshold:r,scoreThreshold:a}}var Zo=Je({resizeBilinear_:function(e,t,n){void 0===n&&(n=!1);var r=Xe(e,"images","resizeBilinear");d(3===r.rank||4===r.rank,"Error in resizeBilinear: x must be rank 3 or 4, but got rank "+r.rank+"."),d(2===t.length,"Error in resizeBilinear: new shape must 2D, but got shape "+t+".");var a=r,i=!1;3===r.rank&&(i=!0,a=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var o=t[0],s=t[1],u=me.engine.runKernel(function(e,t){return e.resizeBilinear(a,o,s,n)},{batchImages:a},function(e,t){return{batchImages:function(){return me.engine.runKernel(function(t){return t.resizeBilinearBackprop(e,a,n)},{})}}});return i?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),Qo=Je({resizeNearestNeighbor_:function(e,t,n){void 0===n&&(n=!1);var r=Xe(e,"images","resizeNearestNeighbor");d(3===r.rank||4===r.rank,"Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank "+r.rank+"."),d(2===t.length,"Error in resizeNearestNeighbor: new shape must 2D, but got shape "+t+"."),d("float32"===r.dtype||"int32"===r.dtype,"`images` must have `int32` or `float32` as dtype");var a=r,i=!1;3===r.rank&&(i=!0,a=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var o=t[0],s=t[1],u=me.engine.runKernel(function(e,t){return e.resizeNearestNeighbor(a,o,s,n)},{batchImages:a},function(e,t){return{batchImages:function(){return me.engine.runKernel(function(t){return t.resizeNearestNeighborBackprop(e,a,n)},{})}}});return i?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),es=Je({nonMaxSuppression_:function(e,t,n,r,a){void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY);var i=Xe(e,"boxes","nonMaxSuppression"),o=Xe(t,"scores","nonMaxSuppression"),s=Jo(i,o,n,r,a);return n=s.maxOutputSize,r=s.iouThreshold,a=s.scoreThreshold,me.engine.runKernel(function(e){return e.nonMaxSuppression(i,o,n,r,a)},{$boxes:i})}}),ts=Object.freeze({resizeBilinear:Zo,resizeNearestNeighbor:Qo,nonMaxSuppression:es,nonMaxSuppressionAsync:function(e,t,n,r,a){return void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY),l(this,void 0,void 0,function(){var i,o,s,u,l,f;return c(this,function(c){switch(c.label){case 0:return i=Xe(e,"boxes","nonMaxSuppressionAsync"),o=Xe(t,"scores","nonMaxSuppressionAsync"),s=Jo(i,o,n,r,a),n=s.maxOutputSize,r=s.iouThreshold,a=s.scoreThreshold,[4,i.data()];case 1:return u=c.sent(),[4,o.data()];case 2:return l=c.sent(),f=Ct(u,l,n,r,a),i!==e&&i.dispose(),o!==t&&o.dispose(),[2,f]}})})},cropAndResize:function(e,t,n,r,a,i){var o=Xe(e,"image","cropAndResize","float32"),s=Xe(t,"boxes","cropAndResize","float32"),u=Xe(n,"boxInd","cropAndResize","int32");a=a||"bilinear",i=i||0;var l=s.shape[0];return d(4===o.rank,"Error in cropAndResize: image must be rank 4,but got rank "+o.rank+"."),d(2===s.rank&&4===s.shape[1],"Error in cropAndResize: boxes must be have size ["+l+",4] but had shape "+s.shape+"."),d(1===u.rank&&u.shape[0]===l,"Error in cropAndResize: boxInd must be have size ["+l+"] but had shape "+s.shape+"."),d("int32"===u.dtype,"Error in cropAndResize: boxInd must be of dtype int32, but got dtype "+u.dtype+"."),d(2===r.length,"Error in cropAndResize: cropSize must be of length 2, but got length "+r.length+"."),d(r[0]>=1&&r[1]>=1,"cropSize must be atleast [1,1], but was "+r),d("bilinear"===a||"nearest"===a,"method must be bilinear or nearest, but was "+a),me.engine.runKernel(function(e,t){return e.cropAndResize(o,s,u,r,a,i)},{$image:o,$boxes:s})}}),ns=Object.freeze({image:ts,linalg:Yo,losses:Go,op:Je,batchNormalization2d:qa,batchNormalization3d:$a,batchNormalization4d:Ga,batchNormalization:Ha,complex:Qe,real:et,imag:tt,concat:vr,concat1d:br,concat2d:wr,concat3d:xr,concat4d:_r,split:Er,conv1d:ii,conv2d:oi,depthwiseConv2d:si,separableConv2d:ui,conv2dTranspose:li,matMul:Qa,dot:ei,outerProduct:ti,reverse:ci,reverse1d:fi,reverse2d:pi,reverse3d:hi,reverse4d:di,maxPool:mi,avgPool:gi,slice:yi,slice1d:vi,slice2d:bi,slice3d:wi,slice4d:xi,abs:fa,acos:pa,acosh:ha,asin:da,asinh:ma,atan:ga,atanh:ya,ceil:va,clipByValue:ba,cos:wa,cosh:xa,erf:_a,exp:Ea,expm1:Na,floor:Sa,log:Oa,log1p:ka,logSigmoid:Ia,neg:Ca,reciprocal:Pa,round:Aa,rsqrt:Ta,sigmoid:Ma,sign:Ra,sin:Da,sinh:ja,softplus:La,sqrt:Ba,square:za,step:Fa,tan:Va,tanh:Ua,all:Ei,any:Ni,argMax:Si,argMin:Oi,logSumExp:ki,max:Ii,mean:Ci,min:Pi,moments:Ai,sum:Ti,equal:Mi,equalStrict:Ri,greater:Di,greaterEqual:ji,greaterEqualStrict:Li,greaterStrict:Bi,less:zi,lessEqual:Fi,lessEqualStrict:Vi,lessStrict:Ui,notEqual:Wi,notEqualStrict:qi,add:$i,addN:Gi,addStrict:Hi,atan2:Ki,div:Xi,divStrict:Yi,floorDiv:Ji,maximum:Zi,maximumStrict:Qi,minimum:eo,minimumStrict:to,mod:no,modStrict:ro,mul:ao,mulStrict:io,pow:oo,powStrict:so,squaredDifference:uo,squaredDifferenceStrict:lo,sub:co,subStrict:fo,elu:bo,leakyRelu:wo,prelu:xo,relu:_o,selu:Eo,logicalAnd:po,logicalNot:ho,logicalOr:mo,logicalXor:go,where:yo,whereAsync:vo,buffer:Dr,toPixels:Rr,print:jr,batchToSpaceND:Lr,cast:Br,clone:zr,cumsum:Fr,depthToSpace:Vr,expandDims:Ur,eye:Wr,fromPixels:qr,multinomial:$r,oneHot:Gr,pad:Hr,pad1d:Kr,pad2d:Xr,pad3d:Yr,pad4d:Jr,rand:Zr,randomNormal:Qr,randomUniform:ea,reshape:ta,spaceToBatchND:na,squeeze:ra,stack:aa,tile:ia,truncatedNormal:oa,unstack:sa,fill:pt,linspace:ht,ones:ct,range:dt,scalar:rt,tensor:nt,tensor1d:at,tensor2d:it,tensor3d:ot,tensor4d:st,tensor5d:ut,tensor6d:lt,zeros:ft,onesLike:xt,zerosLike:_t,transpose:No,softmax:Ze,localResponseNormalization:So,norm:Oo,gather:Po,unsortedSegmentSum:Ao,basicLSTMCell:To,multiRNNCell:Mo,movingAverage:Ro,stridedSlice:Do,topk:jo}),rs=function(){function e(){this.blockSize=48,this.data=new WeakMap,this.firstUse=!0,me.get("IS_BROWSER")&&(this.canvas=document.createElement("canvas"))}return e.prototype.register=function(e,t,n){if(this.firstUse&&(this.firstUse=!1,me.get("IS_NODE")&&Ce("\n============================\nHi there πŸ‘‹. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details.\n============================\n")),this.data.has(e))throw new Error("Data buffer is already registered");this.data.set(e,{dtype:n})},e.prototype.write=function(e,t){if(null==t)throw new Error("MathBackendCPU.write(): values can not be null");this.throwIfNoData(e),this.data.get(e).values=t},e.prototype.fromPixels=function(e,t){if(null==e)throw new Error("pixels passed to tf.fromPixels() can not be null");var n,r;if(me.get("IS_NODE")&&null==e.getContext)throw new Error("When running in node, pixels must be an HTMLCanvasElement like the one returned by the `canvas` npm package");if(null!=e.getContext)n=e.getContext("2d").getImageData(0,0,e.width,e.height).data;else if(e instanceof ImageData)n=e.data;else{if(!(e instanceof HTMLImageElement||e instanceof HTMLVideoElement))throw new Error("pixels passed to tf.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement or ImageData, but was "+e.constructor.name);if(null==this.canvas)throw new Error("Can't read pixels from HTMLImageElement outside the browser.");this.canvas.width=e.width,this.canvas.height=e.height,this.canvas.getContext("2d").drawImage(e,0,0,e.width,e.height),n=this.canvas.getContext("2d").getImageData(0,0,e.width,e.height).data}if(4===t)r=new Int32Array(n);else{var a=e.width*e.height;r=new Int32Array(a*t);for(var i=0;ip&&(p=m,h=d)}u[c]=h}return o},e.prototype.cumsum=function(e,t,n,r){if(this.assertNotComplex(e,"cumsum"),t!==e.rank-1)throw new Error("backend.cumsum in CPU expects an inner-most axis="+(e.rank-1)+" but got axis="+t);for(var a=Nt(e.dtype,"int32"),i=ft(e.shape,a),o=i.dataSync(),s=e.dataSync(),u=e.shape[e.rank-1],l=r?function(e,t){return e+u-t-1}:function(e,t){return e+t},c=0;ct?1:0})},e.prototype.greaterEqual=function(e,t){return this.assertNotComplex([e,t],"greaterEqual"),this.broadcastedBinaryOp(e,t,"bool",function(e,t){return e>=t?1:0})},e.prototype.logicalNot=function(e){this.assertNotComplex(e,"logicalNot");for(var t=e.dataSync(),n=new Int32Array(t.length),r=0;r1||1===t.rank?1:t.shape[1],c=0;c=0&&t>=0?n:(n+t)%t})},e.prototype.max=function(e,t){this.assertNotComplex(e,"max"),ze("max",t,e.rank);for(var n=je(e.shape,t),r=n[0],a=n[1],i=ft(r,e.dtype),o=b(a),s=i.dataSync(),u=e.dataSync(),l=0;lf&&(f=h)}s[l]=f}return i},e.prototype.maximum=function(e,t){return this.assertNotComplex([e,t],"maximum"),this.broadcastedBinaryOp(e,t,e.dtype,function(e,t){return Math.max(e,t)})},e.prototype.all=function(e,t){this.assertNotComplex(e,"all"),ze("all",t,e.rank);for(var n=je(e.shape,t),r=n[0],a=n[1],i=ft(r,e.dtype),o=b(a),s=i.dataSync(),u=e.dataSync(),l=0;l0?n[r]=1:n[r]=0;return Q.make(e.shape,{values:n})},e.prototype.round=function(e){this.assertNotComplex(e,"round");for(var t=e.dataSync(),n=new Float32Array(t.length),r=0;r.5?n[r]=Math.ceil(t[r]):n[r]=a%2==0?a:a+1}return Q.make(e.shape,{values:n})},e.prototype.exp=function(e){this.assertNotComplex(e,"exp");for(var t=e.dataSync(),n=new Float32Array(t.length),r=0;r=0?a:Math.exp(a)-1}return Q.make(e.shape,{values:t})},e.prototype.eluDer=function(e,t){this.assertNotComplex([e,t],"eluDer");for(var n=new Float32Array(t.size),r=t.dataSync(),a=e.dataSync(),i=0;i=1?a[i]:a[i]*(o+1)}return Q.make(t.shape,{values:n})},e.prototype.selu=function(e){this.assertNotComplex(e,"selu");for(var t=new Float32Array(e.size),n=e.dataSync(),r=0;r=0?1.0507009873554805*a:1.7580993408473768*(Math.exp(a)-1)}return Q.make(e.shape,{values:t})},e.prototype.clip=function(e,t,n){this.assertNotComplex(e,"clip");for(var r=new Float32Array(e.size),a=e.dataSync(),i=0;in?n:o-t,s=r[a]0?1:t}return Q.make(e.shape,{values:n})},e.prototype.conv2d=function(e,t,n){this.assertNotComplex([e,t],"conv2d");for(var r=n.filterHeight,a=n.filterWidth,i=n.dilationHeight,o=n.dilationWidth,s=n.padInfo.left,u=n.padInfo.top,l=Dr(n.outShape,e.dtype),c=e.dataSync(),f=t.dataSync(),p=l.values,h=0;h=n.inHeight))for(var x=b*t.strides[0],_=d+w*e.strides[1],E=0;E=n.inWidth))for(var I=x+O*t.strides[1],C=_+k*n.inChannels,P=I,A=0;A=n.inHeight))for(var _=w*t.strides[0],E=m+x*e.strides[1],N=0;N=n.inWidth))for(var C=_+k*t.strides[1],P=E+I*n.inChannels,A=S,T=C,M=0;Mx?x=O:"avg"===n&&(_+=O,E++)}if(isNaN(x))break}s.set("avg"===n?_/E:x,f,h,y,p)}return s.toTensor()},e.prototype.maxPool=function(e,t){return this.pool(e,t,"max")},e.prototype.maxPoolPositions=function(e,t){for(var n=Dr(t.outShape,"int32"),r=t.strideHeight,a=t.strideWidth,i=t.filterHeight,o=t.filterWidth,s=t.padInfo.top,u=t.padInfo.left,l=0;lb&&(b=S,w=_*o+N)}n.set(w,l,f,m,c)}return n.toTensor()},e.prototype.maxPoolBackprop=function(e,t,n,r){this.assertNotComplex([t,n],"maxPoolBackprop");for(var a=this.maxPoolPositions(t,r),i=r.strideHeight,o=r.strideWidth,s=r.filterHeight,u=r.filterWidth,l=u-1-r.padInfo.left,c=s-1-r.padInfo.top,f=Dr(t.shape,"float32"),p=0;p=r.outHeight||Math.floor(w)!==w))for(var x=0;x=r.outWidth||Math.floor(_)!==_)){var E=s*u-1-a.get(p,w,_,h)===b*u+x?1:0;0!==E&&(v+=e.get(p,w,_,h)*E)}}}f.set(v,p,d,m,h)}return f.toTensor()},e.prototype.avgPoolBackprop=function(e,t,n){this.assertNotComplex([e,t],"avgPoolBackprop");for(var r=n.strideHeight,a=n.strideWidth,i=n.filterHeight,o=n.filterWidth,s=o-1-n.padInfo.left,u=i-1-n.padInfo.top,l=Dr(t.shape,"float32"),c=1/(i*o),f=0;f=n.outHeight||Math.floor(b)!==b))for(var w=0;w=n.outWidth||Math.floor(x)!==x||(y+=e.get(f,b,x,p))}}l.set(y*c,f,h,d,p)}return l.toTensor()},e.prototype.cast=function(e,t){return Ot(e,t,this)},e.prototype.reshape=function(e,t){return kt(e,t)},e.prototype.avgPool=function(e,t){return this.assertNotComplex(e,"avgPool"),this.pool(e,t,"avg").toFloat()},e.prototype.resizeBilinear=function(e,t,n,r){this.assertNotComplex(e,"resizeBilinear");for(var a=e.shape,i=a[0],o=a[1],s=a[2],u=a[3],l=Dr([i,t,n,u],e.dtype),c=[r&&t>1?o-1:o,r&&n>1?s-1:s],f=[r&&t>1?t-1:t,r&&n>1?n-1:n],p=0;p1?i-1:i,n&&c>1?o-1:o],h=[n&&l>1?l-1:l,n&&c>1?c-1:c],d=p[0]/h[0],m=p[1]/h[1],g=0;g1?o-1:o,r&&n>1?s-1:s],f=[r&&t>1?t-1:t,r&&n>1?n-1:n],p=0;p1?i-1:i,n&&c>1?o-1:o],h=[n&&l>1?l-1:l,n&&c>1?c-1:c],d=1/(p[0]/h[0]),m=1/(p[1]/h[1]),g=2*Math.ceil(d)+2,y=2*Math.ceil(m)+2,v=0;v=l))for(var C=0;C=c)){var A=p[0]*(I/h[0]),T=p[1]*(P/h[1]),M=Math.min(i-1,n?Math.round(A):Math.floor(A)),R=Math.min(o-1,n?Math.round(T):Math.floor(T));b===M&&w===R&&(O+=e.get(v,I,P,S))}}}f.set(O,v,b,w,S)}return f.toTensor()},e.prototype.batchNormalization=function(e,t,n,r,a,i){this.assertNotComplex([e,t,n,a,i],"batchNormalization");for(var o=e.dataSync(),s=t.dataSync(),u=n.dataSync(),l=a?a.dataSync():new Float32Array([1]),c=i?i.dataSync():new Float32Array([0]),f=new Float32Array(o.length),p=c.length,h=l.length,d=u.length,m=s.length,g=0,y=0,v=0,b=0,w=0;w=p&&(g=0),y>=m&&(y=0),v>=h&&(v=0),b>=d&&(b=0);return st(f,e.shape)},e.prototype.localResponseNormalization4D=function(e,t,n,r,a){this.assertNotComplex(e,"localResponseNormalization4D");var i=e.shape[3],o=i-1,s=e.dataSync(),u=b(e.shape),l=new Float32Array(u);function c(e){for(var n=e%i,r=e-n+Math.max(0,n-t),a=e-n+Math.min(n+t,o),u=0;r<=a;r++){var l=s[r];u+=l*l}return u}for(var f=0;f=0&&e.get(i)1,"blockSize should be > 1 for depthToSpace, but was: "+t);for(var r=e.shape[0],a=e.shape[1],i=e.shape[2],o=e.shape[3],s=a*t,u=i*t,l=o/(t*t),c=e.dataSync(),f=new Float32Array(r*s*u*l),p=0,h=0;h=s))for(var k=p>1?(N-_)*(u-1)/(p-1):0,I=h>1?(S-E)*(l-1)/(h-1):0,C=0;C1?_*(u-1)+C*k:.5*(_+N)*(u-1);if(P<0||P>u-1)for(var A=0;A1?E*(l-1)+A*I:.5*(E+S)*(l-1))<0||$>l-1)for(T=0;T1?E*(l-1)+A*I:.5*(E+S)*(l-1))<0||$>l-1)for(T=0;T0,"scheme must not be an empty string.");var r=e.getInstance();d(null==r.managers[t],"A model store manager is already registered for scheme '"+t+"'."),r.managers[t]=n},e.getManager=function(e){var t=this.getInstance().managers[e];if(null==t)throw new Error("Cannot find model manager for scheme '"+e+"'");return t},e.getSchemes=function(){return Object.keys(this.getInstance().managers)},e}();function gs(e){if(-1===e.indexOf(ds))throw new Error("The url string provided does not contain a scheme. Supported schemes are: "+ms.getSchemes().join(","));return{scheme:e.split(ds)[0],path:e.split(ds)[1]}}function ys(e,t,n){return void 0===n&&(n=!1),l(this,void 0,void 0,function(){var r,a,i,o,s,u,l,f,p;return c(this,function(c){switch(c.label){case 0:return d(e!==t,"Old path and new path are the same: '"+e+"'"),d((r=hs.getLoadHandlers(e)).length>0,"Copying failed because no load handler is found for source URL "+e+"."),d(r.length<2,"Copying failed because more than one ("+r.length+") load handlers for source URL "+e+"."),a=r[0],d((i=hs.getSaveHandlers(t)).length>0,"Copying failed because no save handler is found for destination URL "+t+"."),d(i.length<2,"Copying failed because more than one ("+r.length+") save handlers for destination URL "+t+"."),o=i[0],s=gs(e).scheme,u=gs(e).path,l=s===gs(e).scheme,[4,a.load()];case 1:return f=c.sent(),n&&l?[4,ms.getManager(s).removeModel(u)]:[3,3];case 2:c.sent(),c.label=3;case 3:return[4,o.save(f)];case 4:return p=c.sent(),!n||l?[3,6]:[4,ms.getManager(s).removeModel(u)];case 5:c.sent(),c.label=6;case 6:return[2,p.modelArtifactsInfo]}})})}var vs="models_store",bs="model_info_store";function ws(){if(!me.get("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");var e=window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(null==t)throw new Error("The current browser does not appear to support IndexedDB.");return t}function xs(e){var t=e.result;t.createObjectStore(vs,{keyPath:"modelPath"}),t.createObjectStore(bs,{keyPath:"modelPath"})}var _s=function(){function e(e){if(this.indexedDB=ws(),null==e||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}return e.prototype.save=function(e){return l(this,void 0,void 0,function(){return c(this,function(t){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return[2,this.databaseAction(this.modelPath,e)]})})},e.prototype.load=function(){return l(this,void 0,void 0,function(){return c(this,function(e){return[2,this.databaseAction(this.modelPath)]})})},e.prototype.databaseAction=function(e,t){var n=this;return new Promise(function(e,r){var a=n.indexedDB.open("tensorflowjs",1);a.onupgradeneeded=function(){return xs(a)},a.onsuccess=function(){var i=a.result;if(null==t){var o=i.transaction(vs,"readonly"),s=o.objectStore(vs).get(n.modelPath);s.onsuccess=function(){if(null==s.result)return i.close(),r(new Error("Cannot find model with path '"+n.modelPath+"' in IndexedDB."));e(s.result.modelArtifacts)},s.onerror=function(e){return i.close(),r(s.error)},o.oncomplete=function(){return i.close()}}else{var u,l=ps(t),c=i.transaction(bs,"readwrite"),f=c.objectStore(bs),p=f.put({modelPath:n.modelPath,modelArtifactsInfo:l});p.onsuccess=function(){var a=(u=i.transaction(vs,"readwrite")).objectStore(vs).put({modelPath:n.modelPath,modelArtifacts:t,modelArtifactsInfo:l});a.onsuccess=function(){return e({modelArtifactsInfo:l})},a.onerror=function(e){var t=(f=c.objectStore(bs)).delete(n.modelPath);t.onsuccess=function(){return i.close(),r(a.error)},t.onerror=function(e){return i.close(),r(a.error)}}},p.onerror=function(e){return i.close(),r(p.error)},c.oncomplete=function(){null==u?i.close():u.oncomplete=function(){return i.close()}}}},a.onerror=function(e){return r(a.error)}})},e.URL_SCHEME="indexeddb://",e}(),Es=function(e){return me.get("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(_s.URL_SCHEME)?function(e){return new _s(e)}(e.slice(_s.URL_SCHEME.length)):null};hs.registerSaveRouter(Es),hs.registerLoadRouter(Es);var Ns=function(){function e(){this.indexedDB=ws()}return e.prototype.listModels=function(){return l(this,void 0,void 0,function(){var e=this;return c(this,function(t){return[2,new Promise(function(t,n){var r=e.indexedDB.open("tensorflowjs",1);r.onupgradeneeded=function(){return xs(r)},r.onsuccess=function(){var e=r.result,a=e.transaction(bs,"readonly"),i=a.objectStore(bs).getAll();i.onsuccess=function(){for(var e={},n=0,r=i.result;n0,"URL path for browserHTTPRequest must not be null, undefined or empty."),Array.isArray(e)&&d(2===e.length,"URL paths for browserHTTPRequest must have a length of 2, (actual length is "+e.length+")."),this.path=e,null!=t&&null!=t.body)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t||{}}return e.prototype.save=function(e){return l(this,void 0,void 0,function(){var t,n,r,a;return c(this,function(i){switch(i.label){case 0:if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");return(t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit)).body=new FormData,n=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,weightsManifest:n},t.body.append("model.json",new Blob([JSON.stringify(r)],{type:"application/json"}),"model.json"),null!=e.weightData&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:"application/octet-stream"}),"model.weights.bin"),[4,fetch(this.path,t)];case 1:if(200===(a=i.sent()).status)return[2,{modelArtifactsInfo:ps(e),responses:[a]}];throw new Error("BrowserHTTPRequest.save() failed due to HTTP response status "+a.status+".")}})})},e.prototype.load=function(){return l(this,void 0,void 0,function(){return c(this,function(e){return[2,Array.isArray(this.path)?this.loadBinaryModel():this.loadJSONModel()]})})},e.prototype.loadBinaryTopology=function(){return l(this,void 0,void 0,function(){var e;return c(this,function(t){switch(t.label){case 0:return t.trys.push([0,3,,4]),[4,fetch(this.path[0],this.requestInit)];case 1:return[4,t.sent().arrayBuffer()];case 2:return[2,t.sent()];case 3:throw e=t.sent(),new Error(this.path[0]+" not found. "+e);case 4:return[2]}})})},e.prototype.loadBinaryModel=function(){return l(this,void 0,void 0,function(){var e,t,n,r,a,i,o,s;return c(this,function(u){switch(u.label){case 0:return e=this.loadBinaryTopology(),[4,fetch(this.path[1],this.requestInit)];case 1:return t=u.sent(),[4,Promise.all([e,t])];case 2:return n=u.sent(),r=n[0],[4,n[1].json()];case 3:return null==(a=u.sent())?[3,5]:[4,this.loadWeights(a)];case 4:s=u.sent(),i=s[0],o=s[1],u.label=5;case 5:return[2,{modelTopology:r,weightSpecs:i,weightData:o}]}})})},e.prototype.loadJSONModel=function(){return l(this,void 0,void 0,function(){var e,t,n,r,a,i,o;return c(this,function(s){switch(s.label){case 0:return[4,fetch(this.path,this.requestInit)];case 1:return[4,s.sent().json()];case 2:if(e=s.sent(),t=e.modelTopology,n=e.weightsManifest,null==t&&null==n)throw new Error("The JSON from HTTP path "+this.path+" contains neither model topology or manifest for weights.");return null==n?[3,4]:(i=e.weightsManifest,[4,this.loadWeights(i)]);case 3:o=s.sent(),r=o[0],a=o[1],s.label=4;case 4:return[2,{modelTopology:t,weightSpecs:r,weightData:a}]}})})},e.prototype.loadWeights=function(e){return l(this,void 0,void 0,function(){var t,n,r,a,i,o,s,u,l;return c(this,function(c){switch(c.label){case 0:for(t=Array.isArray(this.path)?this.path[1]:this.path,n=[],r=0,a=e;r0&&(e=u({weightSpecs:this.weightSpecs},e)),null!=this.weightData&&this.weightData.byteLength>0&&(e=u({weightData:this.weightData},e)),[2,e]})})},e}(),Hs=function(){function e(e){this.saveHandler=e}return e.prototype.save=function(e){return l(this,void 0,void 0,function(){return c(this,function(t){return[2,this.saveHandler(e)]})})},e}(),Ks=hs.registerSaveRouter,Xs=hs.registerLoadRouter,Ys=hs.getSaveHandlers,Js=hs.getLoadHandlers,Zs=Object.freeze({browserFiles:function(e){return new Fs(e)},browserHTTPRequest:$s,concatenateArrayBuffers:cs,decodeWeights:ss,encodeWeights:function(e){return l(this,void 0,void 0,function(){var t,n,r,a;return c(this,function(i){switch(i.label){case 0:for(r in t=[],n=[],e){if("float32"!==(a=e[r]).dtype&&"int32"!==a.dtype&&"bool"!==a.dtype)throw new Error("Unsupported dtype in weight '"+r+"': "+a.dtype);t.push({name:r,shape:a.shape,dtype:a.dtype}),n.push(a.data())}return[4,Promise.all(n)];case 1:return[2,{data:function(e){if(null===e)throw new Error("Invalid input value: "+JSON.stringify(e));var t=0,n=[];e.forEach(function(e){if(t+=e.byteLength,n.push(e.byteLength===e.buffer.byteLength?e:new e.constructor(e)),!(e instanceof Float32Array||e instanceof Int32Array||e instanceof Uint8Array))throw new Error("Unsupported TypedArray subtype: "+e.constructor.name)});var r=new Uint8Array(t),a=0;return n.forEach(function(e){r.set(new Uint8Array(e.buffer),a),a+=e.byteLength}),r.buffer}(i.sent()),specs:t}]}})})},fromMemory:function(e,t,n){return new Gs(e,t,n)},getLoadHandlers:Js,getModelArtifactsInfoForJSON:ps,getSaveHandlers:Ys,loadWeights:function(e,t,n,r){return void 0===t&&(t=""),l(this,void 0,void 0,function(){var a,i,o,s,u,l,f,p,h,d;return c(this,function(c){switch(c.label){case 0:if(a=e.map(function(){return!1}),i={},o=null!=n?n.map(function(){return!1}):[],s=[],e.forEach(function(e,t){var r=0;e.weights.forEach(function(e){var u="quantization"in e?e.quantization.dtype:e.dtype,l=os[u]*b(e.shape),c=function(){a[t]=!0,null==i[t]&&(i[t]=[]),i[t].push({manifestEntry:e,groupOffset:r,sizeBytes:l})};null!=n?n.forEach(function(t,n){t===e.name&&(c(),o[n]=!0)}):c(),s.push(e.name),r+=l})}),!o.every(function(e){return e}))throw u=n.filter(function(e,t){return!o[t]}),new Error("Could not find weights in manifest with names: "+u.join(", ")+". \nManifest JSON has weights with names: "+s.join(", ")+".");return l=a.reduce(function(e,t,n){return t&&e.push(n),e},[]),f=[],l.forEach(function(n){e[n].paths.forEach(function(e){var n=t+(t.endsWith("/")?"":"/")+e;f.push(n)})}),[4,Vs(f,r)];case 1:return p=c.sent(),h={},d=0,l.forEach(function(t){for(var n=e[t].paths.length,r=0,a=0;a0,"Class being registered has an empty-string as its className, which is disallowed."),eu.register(e)}var nu=Object.freeze({Serializable:Qs,SerializationMap:eu,registerClass:tu});function ru(e,t,n){if(null==n&&(n=me.get("TEST_EPSILON")),e instanceof Q||t instanceof Q){if(e instanceof Q&&t instanceof Q){if(e.dtype!==t.dtype)throw new Error("Arrays are of different type actual: "+e.dtype+" vs expected: "+t.dtype+".");if(!w(e.shape,t.shape))throw new Error("Arrays are of different shape actual: "+e.shape+" vs expected: "+t.shape+".")}}else{var r=e.constructor.name,a=t.constructor.name;if(r!==a)throw new Error("Arrays are of different type actual: "+r+" vs expected: "+a)}var i,o;if(i=e instanceof Q?e.dataSync():e,o=t instanceof Q?t.dataSync():t,i.length!==o.length)throw new Error("Arrays have different lengths actual: "+i.length+" vs expected: "+o.length+".\nActual: "+i+".\nExpected: "+o+".");for(var s=0;sn)}var iu=Object.freeze({WEBGL_ENVS:{HAS_WEBGL:!0},NODE_ENVS:{IS_NODE:!0},CHROME_ENVS:{IS_CHROME:!0},BROWSER_ENVS:{IS_BROWSER:!0},CPU_ENVS:{HAS_WEBGL:!1},ALL_ENVS:{},expectArraysClose:ru,expectPromiseToFail:function(e,t){e().then(function(){return t.fail()},function(){return t()})},expectArraysEqual:function(e,t){return ru(e,t,0)},expectNumbersClose:function(e,t,n){if(null==n&&(n=me.get("TEST_EPSILON")),!au(e,t,n))throw new Error("Numbers differ: actual === "+e+", expected === "+t)},expectValuesInRange:function(e,t,n){var r;r=e instanceof Q?e.dataSync():e;for(var a=0;an)throw new Error("Value out of range:"+r[a]+" low: "+t+", high: "+n)},expectArrayBuffersEqual:function(e,t){expect(new Float32Array(e)).toEqual(new Float32Array(t))}}),ou="0.13.0",su=Object.freeze({gpgpu_util:ar,webgl_util:Ln,MathBackendWebGL:ca,GPGPUContext:ir}),uu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return s(t,e),t.prototype.minimize=function(e,t,n){void 0===t&&(t=!1);var r=this.computeGradients(e,n),a=r.value,i=r.grads;return this.applyGradients(i),Object.keys(i).forEach(function(e){return i[e].dispose()}),t?a:(a.dispose(),null)},t.prototype.computeGradients=function(e,t){return xe(e,t)},t}(Qs),lu=function(e){function t(t,n,r){void 0===r&&(r=null);var a=e.call(this)||this;return a.learningRate=t,a.rho=n,a.epsilon=r,a.accumulatedGrads={},a.accumulatedUpdates={},a.c=Se(rt(-t)),a.rhoScalar=Se(rt(n)),a.oneMinusRho=Se(rt(1-n)),null===r&&(r=me.get("EPSILON")),a.epsilonScalar=Se(rt(r)),a}return s(t,e),t.prototype.applyGradients=function(e){var t=this,n=function(n){var a=me.engine.registeredVariables[n];null==r.accumulatedGrads[n]&&Ne(function(){t.accumulatedGrads[n]=_t(a).variable(!1)}),null==r.accumulatedUpdates[n]&&Ne(function(){t.accumulatedUpdates[n]=_t(a).variable(!1)});var i=e[n],o=r.accumulatedGrads[n],s=r.accumulatedUpdates[n];Ne(function(){var e=t.rhoScalar.mul(o).add(t.oneMinusRho.mul(i.square())),r=s.add(t.epsilonScalar).sqrt().div(o.add(t.epsilonScalar).sqrt()).mul(i),u=t.rhoScalar.mul(s).add(t.oneMinusRho.mul(r.square()));t.accumulatedGrads[n].assign(e),t.accumulatedUpdates[n].assign(u);var l=t.c.mul(r).add(a);a.assign(l)})},r=this;for(var a in e)n(a)},t.prototype.dispose=function(){var e=this;this.c.dispose(),this.epsilonScalar.dispose(),this.rhoScalar.dispose(),this.oneMinusRho.dispose(),null!=this.accumulatedUpdates&&(Object.keys(this.accumulatedUpdates).forEach(function(t){return e.accumulatedUpdates[t].dispose()}),Object.keys(this.accumulatedGrads).forEach(function(t){return e.accumulatedGrads[t].dispose()}))},t.prototype.getConfig=function(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}},t.fromConfig=function(e,t){return new e(t.learningRate,t.rho,t.epsilon)},t.className="AdadeltaOptimizer",t}(uu);tu(lu);var cu=function(e){function t(t,n){void 0===n&&(n=.1);var r=e.call(this)||this;return r.learningRate=t,r.initialAccumulatorValue=n,r.accumulatedGrads={},r.c=Se(rt(-t)),r.epsilon=Se(rt(me.get("EPSILON"))),r}return s(t,e),t.prototype.applyGradients=function(e){var t=this,n=function(n){var a=me.engine.registeredVariables[n];null==r.accumulatedGrads[n]&&Ne(function(){t.accumulatedGrads[n]=pt(a.shape,t.initialAccumulatorValue).variable(!1)});var i=e[n],o=r.accumulatedGrads[n];Ne(function(){var e=o.add(i.square());t.accumulatedGrads[n].assign(e);var r=t.c.mul(i.div(e.add(t.epsilon).sqrt())).add(a);a.assign(r)})},r=this;for(var a in e)n(a)},t.prototype.dispose=function(){var e=this;this.epsilon.dispose(),this.c.dispose(),null!=this.accumulatedGrads&&Object.keys(this.accumulatedGrads).forEach(function(t){return e.accumulatedGrads[t].dispose()})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}},t.fromConfig=function(e,t){return new e(t.learningRate,t.initialAccumulatorValue)},t.className="AdagradOptimizer",t}(uu);tu(cu);var fu=function(e){function t(t,n,r,a){void 0===a&&(a=null);var i=e.call(this)||this;return i.learningRate=t,i.beta1=n,i.beta2=r,i.epsilon=a,i.accumulatedFirstMoment={},i.accumulatedSecondMoment={},i.c=Se(rt(-t)),i.beta1Scalar=Se(rt(n)),i.beta2Scalar=Se(rt(r)),Ne(function(){i.accBeta1=rt(n).variable(),i.accBeta2=rt(r).variable()}),i.oneMinusBeta1=Se(rt(1-n)),i.oneMinusBeta2=Se(rt(1-r)),i.one=Se(rt(1)),null===a&&(a=me.get("EPSILON")),i.epsScalar=Se(rt(a)),i}return s(t,e),t.prototype.applyGradients=function(e){var t=this;Ne(function(){var n=t.one.sub(t.accBeta1),r=t.one.sub(t.accBeta2);for(var a in e){var i=me.engine.registeredVariables[a];if(null==t.accumulatedFirstMoment[a]){var o=!1;t.accumulatedFirstMoment[a]=_t(i).variable(o)}null==t.accumulatedSecondMoment[a]&&(o=!1,t.accumulatedSecondMoment[a]=_t(i).variable(o));var s=e[a],u=t.accumulatedFirstMoment[a],l=t.accumulatedSecondMoment[a],c=t.beta1Scalar.mul(u).add(t.oneMinusBeta1.mul(s)),f=t.beta2Scalar.mul(l).add(t.oneMinusBeta2.mul(s.square())),p=c.div(n),h=f.div(r);t.accumulatedFirstMoment[a].assign(c),t.accumulatedSecondMoment[a].assign(f);var d=t.c.mul(p.div(t.epsScalar.add(h.sqrt()))).add(i);i.assign(d)}t.accBeta1.assign(t.accBeta1.mul(t.beta1Scalar)),t.accBeta2.assign(t.accBeta2.mul(t.beta2Scalar))})},t.prototype.dispose=function(){var e=this;this.c.dispose(),this.epsScalar.dispose(),this.beta1Scalar.dispose(),this.beta2Scalar.dispose(),this.accBeta1.dispose(),this.accBeta2.dispose(),this.oneMinusBeta1.dispose(),this.oneMinusBeta2.dispose(),this.one.dispose(),null!=this.accumulatedFirstMoment&&Object.keys(this.accumulatedFirstMoment).forEach(function(t){return e.accumulatedFirstMoment[t].dispose()}),null!=this.accumulatedSecondMoment&&Object.keys(this.accumulatedSecondMoment).forEach(function(t){return e.accumulatedSecondMoment[t].dispose()})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}},t.fromConfig=function(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)},t.className="AdamOptimizer",t}(uu);tu(fu);var pu=function(e){function t(t,n,r,a,i){void 0===a&&(a=null),void 0===i&&(i=0);var o=e.call(this)||this;return o.learningRate=t,o.beta1=n,o.beta2=r,o.epsilon=a,o.decay=i,o.accumulatedFirstMoment={},o.accumulatedWeightedInfNorm={},o.c=Se(rt(-t)),o.beta1Scalar=Se(rt(n)),o.beta2Scalar=Se(rt(r)),o.decayScalar=Se(rt(i)),Ne(function(){o.iteration=rt(0).variable(),o.accBeta1=rt(n).variable()}),o.oneMinusBeta1=Se(rt(1-n)),o.one=Se(rt(1)),null===a&&(a=me.get("EPSILON")),o.epsScalar=Se(rt(a)),o}return s(t,e),t.prototype.applyGradients=function(e){var t=this;Ne(function(){var n=t.one.sub(t.accBeta1),r=t.c.div(t.one.add(t.decayScalar.mul(t.iteration)));for(var a in e){var i=me.engine.registeredVariables[a];if(null==t.accumulatedFirstMoment[a]){var o=!1;t.accumulatedFirstMoment[a]=_t(i).variable(o)}null==t.accumulatedWeightedInfNorm[a]&&(o=!1,t.accumulatedWeightedInfNorm[a]=_t(i).variable(o));var s=e[a],u=t.accumulatedFirstMoment[a],l=t.accumulatedWeightedInfNorm[a],c=t.beta1Scalar.mul(u).add(t.oneMinusBeta1.mul(s)),f=t.beta2Scalar.mul(l),p=s.abs(),h=f.maximum(p);t.accumulatedFirstMoment[a].assign(c),t.accumulatedWeightedInfNorm[a].assign(h);var d=r.div(n).mul(c.div(t.epsScalar.add(h))).add(i);i.assign(d)}t.iteration.assign(t.iteration.add(t.one)),t.accBeta1.assign(t.accBeta1.mul(t.beta1Scalar))})},t.prototype.dispose=function(){var e=this;this.c.dispose(),this.epsScalar.dispose(),this.accBeta1.dispose(),this.beta1Scalar.dispose(),this.beta2Scalar.dispose(),this.oneMinusBeta1.dispose(),this.decayScalar.dispose(),this.iteration.dispose(),this.one.dispose(),null!=this.accumulatedFirstMoment&&Object.keys(this.accumulatedFirstMoment).forEach(function(t){return e.accumulatedFirstMoment[t].dispose()}),null!=this.accumulatedWeightedInfNorm&&Object.keys(this.accumulatedWeightedInfNorm).forEach(function(t){return e.accumulatedWeightedInfNorm[t].dispose()})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}},t.fromConfig=function(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)},t.className="AdamaxOptimizer",t}(uu);tu(pu);var hu=function(e){function t(t){var n=e.call(this)||this;return n.learningRate=t,n.setLearningRate(t),n}return s(t,e),t.prototype.applyGradients=function(e){var t=this;Object.keys(e).forEach(function(n){var r=e[n],a=me.engine.registeredVariables[n];Ne(function(){var e=t.c.mul(r).add(a);a.assign(e)})})},t.prototype.setLearningRate=function(e){this.learningRate=e,null!=this.c&&this.c.dispose(),this.c=Se(rt(-e))},t.prototype.dispose=function(){this.c.dispose()},t.prototype.getConfig=function(){return{learningRate:this.learningRate}},t.fromConfig=function(e,t){return new e(t.learningRate)},t.className="SGDOptimizer",t}(uu);tu(hu);var du=function(e){function t(t,n,r){void 0===r&&(r=!1);var a=e.call(this,t)||this;return a.learningRate=t,a.momentum=n,a.useNesterov=r,a.m=rt(a.momentum),a.accumulations={},a}return s(t,e),t.prototype.applyGradients=function(e){var t=this,n=function(n){var a=me.engine.registeredVariables[n];null==r.accumulations[n]&&Ne(function(){t.accumulations[n]=_t(a).variable(!1)});var i=r.accumulations[n],o=e[n];Ne(function(){var e,r=t.m.mul(i).add(o);e=t.useNesterov?t.c.mul(o.add(r.mul(t.m))).add(a):t.c.mul(r).add(a),t.accumulations[n].assign(r),a.assign(e)})},r=this;for(var a in e)n(a)},t.prototype.dispose=function(){if(e.prototype.dispose.call(this),this.m.dispose(),null!=this.accumulations)for(var t in this.accumulations)this.accumulations[t].dispose()},t.prototype.setMomentum=function(e){this.momentum=e},t.prototype.getConfig=function(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}},t.fromConfig=function(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)},t.className="MomentumOptimizer",t}(hu);tu(du);var mu=function(e){function t(t,n,r,a,i){void 0===n&&(n=.9),void 0===r&&(r=0),void 0===a&&(a=null),void 0===i&&(i=!1);var o=e.call(this)||this;return o.learningRate=t,o.decay=n,o.momentum=r,o.epsilon=a,o.accumulatedMeanSquares={},o.accumulatedMeanGrads={},o.accumulatedMoments={},o.c=Se(rt(t)),o.decayScalar=Se(rt(n)),o.momentumScalar=Se(rt(r)),o.oneMinusDecay=Se(rt(1-n)),o.centered=i,null===a&&(a=me.get("EPSILON")),o.epsilonScalar=Se(rt(a)),o}return s(t,e),t.prototype.applyGradients=function(e){var t=this,n=function(n){var a=me.engine.registeredVariables[n];null==r.accumulatedMeanSquares[n]&&Ne(function(){t.accumulatedMeanSquares[n]=_t(a).variable(!1)}),null==r.accumulatedMeanGrads[n]&&r.centered&&Ne(function(){t.accumulatedMeanGrads[n]=_t(a).variable(!1)}),null==r.accumulatedMoments[n]&&Ne(function(){t.accumulatedMoments[n]=_t(a).variable(!1)});var i=r.accumulatedMeanSquares[n],o=r.accumulatedMeanGrads[n],s=r.accumulatedMoments[n],u=e[n];Ne(function(){var e=t.decayScalar.mul(i).add(t.oneMinusDecay.mul(u.square()));if(t.centered){var r=t.decayScalar.mul(o).add(t.oneMinusDecay.mul(u)),l=t.momentumScalar.mul(s).add(t.c.mul(u).div(e.sub(r.square().add(t.epsilonScalar)).sqrt()));t.accumulatedMeanSquares[n].assign(e),t.accumulatedMeanGrads[n].assign(r),t.accumulatedMoments[n].assign(l);var c=a.sub(l);a.assign(c)}else{var f=t.decayScalar.mul(i).add(t.oneMinusDecay.mul(u.square()));l=t.momentumScalar.mul(s).add(t.c.mul(u).div(f.add(t.epsilonScalar).sqrt())),t.accumulatedMeanSquares[n].assign(f),t.accumulatedMoments[n].assign(l),c=a.sub(l),a.assign(c)}})},r=this;for(var a in e)n(a)},t.prototype.dispose=function(){var e=this;this.c.dispose(),this.epsilonScalar.dispose(),this.decayScalar.dispose(),this.momentumScalar.dispose(),this.oneMinusDecay.dispose(),null!=this.accumulatedMeanSquares&&Object.keys(this.accumulatedMeanSquares).forEach(function(t){return e.accumulatedMeanSquares[t].dispose()}),null!=this.accumulatedMeanGrads&&this.centered&&Object.keys(this.accumulatedMeanGrads).forEach(function(t){return e.accumulatedMeanGrads[t].dispose()}),null!=this.accumulatedMoments&&Object.keys(this.accumulatedMoments).forEach(function(t){return e.accumulatedMoments[t].dispose()})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}},t.fromConfig=function(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)},t.className="RMSPropOptimizer",t}(uu);tu(mu);var gu=function(){function e(){}return e.sgd=function(e){return new hu(e)},e.momentum=function(e,t,n){return void 0===n&&(n=!1),new du(e,t,n)},e.rmsprop=function(e,t,n,r,a){return void 0===t&&(t=.9),void 0===n&&(n=0),void 0===r&&(r=null),void 0===a&&(a=!1),new mu(e,t,n,r,a)},e.adam=function(e,t,n,r){return void 0===e&&(e=.001),void 0===t&&(t=.9),void 0===n&&(n=.999),void 0===r&&(r=null),new fu(e,t,n,r)},e.adadelta=function(e,t,n){return void 0===e&&(e=.001),void 0===t&&(t=.95),void 0===n&&(n=null),new lu(e,t,n)},e.adamax=function(e,t,n,r,a){return void 0===e&&(e=.002),void 0===t&&(t=.9),void 0===n&&(n=.999),void 0===r&&(r=null),void 0===a&&(a=0),new pu(e,t,n,r,a)},e.adagrad=function(e,t){return void 0===t&&(t=.1),new cu(e,t)},e}(),yu={sgd:gu.sgd,momentum:gu.momentum,adadelta:gu.adadelta,adagrad:gu.adagrad,rmsprop:gu.rmsprop,adamax:gu.adamax,adam:gu.adam},vu=de.setBackend,bu=de.getBackend,wu=de.disposeVariables,xu=de.memory;J=ns}).call(this,n(46),n(26),n(160).setImmediate,n(16).Buffer)},function(e,t,n){var r=n(7),a=n(43),i=n(30),o=n(29),s=n(42),u=function(e,t,n){var l,c,f,p,h=e&u.F,d=e&u.G,m=e&u.S,g=e&u.P,y=e&u.B,v=d?r:m?r[t]||(r[t]={}):(r[t]||{}).prototype,b=d?a:a[t]||(a[t]={}),w=b.prototype||(b.prototype={});for(l in d&&(n=t),n)f=((c=!h&&v&&void 0!==v[l])?v:n)[l],p=y&&c?s(f,r):g&&"function"==typeof f?s(Function.call,f):f,v&&o(v,l,f,e&u.U),b[l]!=f&&i(b,l,p),g&&w[l]!=f&&(w[l]=f)};r.core=a,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,e.exports=u},function(e,t,n){"use strict";n.r(t);var r=n(1),a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])}; +var o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};function s(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var u=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&a[a.length-1])&&(6===i[0]||2===i[0])){o=0;continue}if(3===i[0]&&(!a||i[1]>a[0]&&i[1]0;)r=Math.random()*t|0,n=e[--t],e[t]=e[r],e[r]=n}function p(e,t,n){return Math.max(e,Math.min(t,n))}function h(e,t){var n=Math.random();return t*n+(1-n)*e}function d(e,t){if(!e)throw new Error("string"==typeof t?t:t())}function m(e,t,n){void 0===n&&(n=""),d(w(e,t),n+" Shapes "+e+" and "+t+" must match")}function g(e){d(null!=e,"The input to the tensor constructor must be a non-null value.")}function y(e,t){if(void 0===t&&(t=[]),Array.isArray(e))for(var n=0;n0,function(){return"Element arr["+r.join("][")+"] should be a primitive, but is an array of "+t.length+" elements"}),d(t.length===n[0],function(){return"Element arr["+r.join("][")+"] should have "+n[0]+" elements, but has "+t.length+" elements"});for(var a=n.slice(1),i=0;i1;--t)if(e%t==0)return[t,e/t];return[1,e]}function N(e,t){return t<=e.length?e:e+" ".repeat(t-e.length)}function S(e,t,n){return void 0===t&&(t=function(e){return 0}),new Promise(function(r,a){var i=0,o=function(){if(e())r();else{var s=t(++i);null!=n&&i>=n?a():setTimeout(o,s)}};o()})}function O(e,t){for(var n=1,r=-1,a=0;a=0)n*=e[a];else if(-1===e[a]){if(-1!==r)throw Error("Shapes can only have 1 implicit size. Found -1 at dim "+r+" and dim "+a);r=a}else if(e[a]<0)throw Error("Shapes can not be < 0. Found "+e[a]+" at dim "+a);if(-1===r){if(t>0&&t!==n)throw Error("Size("+t+") must match the product of shape "+e);return e}if(0===n)throw Error("Cannot infer the missing size in ["+e+"] when there are 0 elements");if(t%n!=0)throw Error("The implicit shape can't be a fractional number. Got "+t+" / "+n);var i=e.slice();return i[r]=t/n,i}function k(e,t){for(var n=[],r=[],a=0,i=0;ii)&&1===e[i]&&(n.push(e[i]),r.push(i)),t[a]<=i&&a++}1!==e[i]&&(n.push(e[i]),r.push(i))}return{newShape:n,keptDims:r}}function I(e,t){var n=null;if(null==e||"float32"===e)n=new Float32Array(t);else if("int32"===e)n=new Int32Array(t);else{if("bool"!==e)throw new Error("Unknown data type "+e);n=new Uint8Array(t)}return n}function C(e,t,n){if("float32"===t)for(var r=0;r=0;--r)n[r]=n[r+1]*e[r+1];return n}function L(e,t,n){return function(e,t){return e instanceof Float32Array&&"float32"===t||e instanceof Int32Array&&"int32"===t||e instanceof Uint8Array&&"bool"===t}(e,t)?e:(Array.isArray(e)&&(e=y(e)),function(e,t,n){if(null==t||"float32"===t||"complex64"===t)return new Float32Array(e);if("int32"===t)return n&&P(e,t),new Int32Array(e);if("bool"===t){for(var r=new Uint8Array(e.length),a=0;a1)for(var l=0;lq){var c=$*s,f=Array.from(t.subarray(0,c)),p=Array.from(t.subarray(u-$*s,u));return"complex64"===r&&(f=K(f),p=K(p)),["["+f.map(function(e,t){return H(e,i[t])}).join(", ")+", ..., "+p.map(function(e,t){return H(e,i[u-$+t])}).join(", ")+"]"]}return["["+("complex64"===r?K(t):Array.from(t)).map(function(e,t){return H(e,i[t])}).join(", ")+"]"]}var h=n.slice(1),d=a.slice(1),m=a[0]*s,g=[];if(u>q){for(var y=0;y<$;y++){var v=(b=y*m)+m;g.push.apply(g,e(t.subarray(b,v),h,r,d,i,!1))}for(g.push("..."),y=u-$;y {...}) to avoid memory leaks.");return this.keepTensors.add(e.id),e},e.prototype.startScope=function(e,t){void 0===t&&(t=!1),t&&0===this.gradientScopeCount&&(this.activeTape=[]),t&&this.gradientScopeCount++;var n={track:[],name:"unnamed scope"};e&&(n.name=e),this.scopeStack.push(n),this.activeScope=n},e.prototype.endScope=function(e,t){var n=this;void 0===t&&(t=!1),t&&(this.gradientScopeCount--,0===this.gradientScopeCount&&(this.activeTape=null));var r=new Set(this.keepTensors),a=re(e);a.forEach(function(e){return r.add(e.id)});for(var i=0;i0,"gradients() received an empty list of xs."),this.tidy("gradients",function(){var i=e();d(i instanceof Q,"The result y returned by f() must be a tensor.");var o=function(e,t,n){for(var r={},a={},i=0;i=0;i--)for(o=(d=e[i]).inputs,c=0;c0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");var s={};return s[i.id]=null==n?function(e){var t=B(b(e),"float32");return Q.make(e,{values:t})}(i.shape):n,function(e,t){for(var n=function(n){var r=t[n],a=[];if(r.outputs.forEach(function(t){var n=e[t.id];if(null!=n)a.push(n);else{var r=Q.make(t.shape,{values:z(t.size,t.dtype)},t.dtype);a.push(r)}}),null==r.gradient)throw new Error("Cannot compute gradient: gradient function not found for "+r.name+".");var i=r.gradient(1===r.outputs.length?a[0]:a);for(var o in r.inputs){if(!(o in i))throw new Error("Cannot backprop through input "+o+". Available gradients found: "+Object.keys(i)+".");var s=i[o](),u=r.inputs[o];if(!w(s.shape,u.shape))throw new Error("Error in gradient for op "+r.name+". The gradient of input '"+o+"' has shape '"+s.shape+"', which does not match the shape of the input '"+u.shape+"'");if(null==e[u.id])e[u.id]=s;else{var l=e[u.id];e[u.id]=l.add(s),l.dispose()}}},r=t.length-1;r>=0;r--)n(r)}(s,o),{value:i,grads:t.map(function(e){return s[e.id]})}},!0)},e.prototype.customGrad=function(e){var t=this;return d(R(e),"The f passed in customGrad(f) must be a function."),function(){for(var n,r,a=[],i=0;i {op();...}); to avoid memory leaks.");return this.activeScope.track.push(e),e},e}();!function(e){e[e.NUMBER=0]="NUMBER",e[e.BOOLEAN=1]="BOOLEAN",e[e.STRING=2]="STRING"}(ae||(ae={}));var oe=[{name:"DEBUG",type:ae.BOOLEAN},{name:"IS_BROWSER",type:ae.BOOLEAN},{name:"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",type:ae.NUMBER},{name:"WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",type:ae.BOOLEAN},{name:"WEBGL_VERSION",type:ae.NUMBER},{name:"WEBGL_RENDER_FLOAT32_ENABLED",type:ae.BOOLEAN},{name:"WEBGL_DOWNLOAD_FLOAT_ENABLED",type:ae.BOOLEAN},{name:"WEBGL_FENCE_API_ENABLED",type:ae.BOOLEAN},{name:"BACKEND",type:ae.STRING},{name:"EPSILON",type:ae.NUMBER}];function se(e,t){var n;try{n=fe(e,t)}catch(e){return!1}return null!=n&&(pe(n),!0)}var ue="tfjsflags";function le(){var e={};if("undefined"==typeof window||void 0===window.location)return e;var t=function(e){var t={};return window.location.search.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,function(e){for(var n=[],r=1;r0?0:function(e,t){if(0===e)return 0;var n,r=fe(e,t);return n=ce(r,"EXT_disjoint_timer_query_webgl2")&&2===e?2:ce(r,"EXT_disjoint_timer_query")?1:0,null!=r&&pe(r),n}(n,this.get("IS_BROWSER"))}if("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE"===t)return this.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!function(){var e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))}();if("HAS_WEBGL"===t)return this.get("WEBGL_VERSION")>0;if("WEBGL_VERSION"===t)return se(2,this.get("IS_BROWSER"))?2:se(1,this.get("IS_BROWSER"))?1:0;if("WEBGL_RENDER_FLOAT32_ENABLED"===t)return function(e,t){if(0===e)return!1;var n=fe(e,t);if(1===e){if(!ce(n,"OES_texture_float"))return!1}else if(!ce(n,"EXT_color_buffer_float"))return!1;var r=he(n,e);return pe(n),r}(this.get("WEBGL_VERSION"),this.get("IS_BROWSER"));if("WEBGL_DOWNLOAD_FLOAT_ENABLED"===t)return function(e,t){if(0===e)return!1;var n=fe(e,t);if(1===e){if(!ce(n,"OES_texture_float"))return!1;if(!ce(n,"WEBGL_color_buffer_float"))return!1}else if(!ce(n,"EXT_color_buffer_float"))return!1;var r=he(n,e);return pe(n),r}(this.get("WEBGL_VERSION"),this.get("IS_BROWSER"));if("WEBGL_FENCE_API_ENABLED"===t)return function(e,t){if(2!==e)return!1;var n=fe(e,t),r=null!=n.fenceSync;return pe(n),r}(this.get("WEBGL_VERSION"),this.get("IS_BROWSER"));if("TEST_EPSILON"===t)return 32===this.backend.floatPrecision()?.001:.1;if("EPSILON"===t)return 32===this.backend.floatPrecision()?1e-7:.001;throw new Error("Unknown feature "+t+".")},t.prototype.setFeatures=function(e){this.features=Object.assign({},e)},t.prototype.reset=function(){this.features=le(),null!=this.globalEngine&&(this.globalEngine=null)},t.prototype.initBackend=function(e,t){var n=this;if(void 0===t&&(t=!1),this.backendName=e,this.engines[e])this.globalEngine=this.engines[e];else{var r=this.findBackend(e);this.globalEngine=new ie(r,t,function(){return n.get("DEBUG")}),this.engines[e]=this.globalEngine}},Object.defineProperty(t.prototype,"backend",{get:function(){return this.engine.backend},enumerable:!0,configurable:!0}),t.prototype.findBackend=function(e){return e in this.registry?this.registry[e].backend:null},t.prototype.registerBackend=function(e,t,n,r){var a=this;if(void 0===n&&(n=1),e in this.registry)return console.warn(e+" backend was already registered. Reusing existing backend"),null!=r&&r(function(){return a.engine}),!1;try{var i=t();return this.registry[e]={backend:i,priority:n},!0}catch(t){return console.warn("Registration of backend "+e+" failed"),console.warn(t.stack||t.message),!1}},t.prototype.removeBackend=function(e){if(!(e in this.registry))throw new Error(e+" backend not found in registry");this.registry[e].backend.dispose(),delete this.registry[e],e in this.engines&&delete this.engines[e]},Object.defineProperty(t.prototype,"engine",{get:function(){return this.initDefaultBackend(),this.globalEngine},enumerable:!0,configurable:!0}),t.prototype.initDefaultBackend=function(){null==this.globalEngine&&this.initBackend(this.get("BACKEND"),!1)},t}(),me=function(){var t=function(){var t;if("undefined"!=typeof window)t=window;else{if(void 0===e)throw new Error("Could not find a global object");t=e}return t}();return null==t.ENV&&(t.ENV=new de(le()),Z(function(){return t.ENV.engine})),t.ENV}(),ge=Object.freeze({Environment:de,ENV:me});function ye(e){return d(R(e),"The f passed in grad(f) must be a function"),function(t,n){return d(t instanceof Q,"The x passed in grad(f)(x) must be a tensor"),d(null==n||n instanceof Q,"The dy passed in grad(f)(x, dy) must be a tensor"),me.engine.tidy(function(){var r=me.engine.gradients(function(){return e(t)},[t],n),a=r.value,i=r.grads;return null!=n&&m(a.shape,n.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),Ee(i),i[0]})}}function ve(e){return d(R(e),"The f passed in grads(f) must be a function"),function(t,n){return d(Array.isArray(t)&&t.every(function(e){return e instanceof Q}),"The args passed in grads(f)(args) must be an array of tensors"),d(null==n||n instanceof Q,"The dy passed in grads(f)(args, dy) must be a tensor"),me.engine.tidy(function(){var r=me.engine.gradients(function(){return e.apply(void 0,t)},t,n),a=r.value,i=r.grads;return null!=n&&m(a.shape,n.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Ee(i),i})}}function be(e){return d(R(e),"The f passed in valueAndGrad(f) must be a function"),function(t,n){d(t instanceof Q,"The x passed in valueAndGrad(f)(x) must be a tensor"),d(null==n||n instanceof Q,"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");var r=me.engine.gradients(function(){return e(t)},[t],n),a=r.grads,i=r.value;return Ee(a),{grad:a[0],value:i}}}function we(e){return d(R(e),"The f passed in valueAndGrads(f) must be a function"),function(t,n){d(Array.isArray(t)&&t.every(function(e){return e instanceof Q}),"The args passed in valueAndGrads(f)(args) must be array of tensors"),d(null==n||n instanceof Q,"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");var r=me.engine.gradients(function(){return e.apply(void 0,t)},t,n);return null!=n&&m(r.value.shape,n.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Ee(r.grads),r}}function xe(e,t){if(d(R(e),"The f passed in variableGrads(f) must be a function"),d(null==t||Array.isArray(t)&&t.every(function(e){return e instanceof ee}),"The varList passed in variableGrads(f, varList) must be an array of variables"),null==t)for(var n in t=[],me.engine.registeredVariables)t.push(me.engine.registeredVariables[n]);var r=t.length;d((t=t.filter(function(e){return e.trainable})).length>0,"variableGrads() expects at least one of the input variables to be trainable, but none of the "+r+" variables is trainable.");var a=me.engine.gradients(e,t,null,!0),i=a.value,o=a.grads;d(o.some(function(e){return null!=e}),"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),d(0===i.rank,"The f passed in variableGrads(f) must return a scalar, but it returned a rank-"+i.rank+" tensor");var s={};return t.forEach(function(e,t){null!=o[t]&&(s[e.name]=o[t])}),{value:i,grads:s}}function _e(e){return me.engine.customGrad(e)}function Ee(e){if(e.filter(function(e){return null==e}).length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that\n the f you passed encloses all operations that lead from x to y.")}var Ne=de.tidy,Se=de.keep,Oe=de.dispose,ke=de.time,Ie=de.profile;function Ce(){for(var e=[],t=0;t=2*t+1||a%2==1?o.push(a):i.push(a);r.push.apply(r,i),r.push(0),r.push.apply(r,o)}return r}function Te(e,t,n,r){void 0===r&&(r=!0);var a=[];r?a.push(e[0]/n):a.push(e[0]*n);for(var i=1;i=-n&&e0?a>=c[t]:a<=c[t]);a+=r[t])n+=1;return n}),[l,h,f]}function He(e,t,n,r,a){var i=t[a];e&1<0?Number.MIN_SAFE_INTEGER:Number.MAX_SAFE_INTEGER);var o=r[a];return i<0&&(i+=o),p(0,i,o-1)}function Ke(e,t,n,r,a){var i=t[a];e&1<0?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER);var o=r[a];return i<0&&(i+=o),n[a]>0?p(0,i,o):p(-1,i,o-1)}function Xe(e,t,n,r){if(void 0===r&&(r="float32"),r=r||"float32",e instanceof Q)return e;if(!T(e)&&!Array.isArray(e)&&"number"!=typeof e&&"boolean"!=typeof e)throw new Error("Argument '"+t+"' passed to '"+n+"' must be a Tensor or TensorLike, but got "+e.constructor.name);var a=v(e);return T(e)||Array.isArray(e)||(e=[e]),Q.make(a,{values:L(e,r,me.get("DEBUG"))},r)}function Ye(e,t,n){if(!Array.isArray(e))throw new Error("Argument "+t+" passed to "+n+" must be a `Tensor[]` or `TensorLike[]`");return e.map(function(e,r){return Xe(e,t+"["+r+"]",n)})}function Je(e){var t=Object.keys(e);if(1!==t.length)throw new Error("Please provide an object with a single key (operation name) mapping to a function. Got an object with "+t.length+" keys.");var n=t[0],r=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1));var a=function(){for(var e=[],t=0;t1)return ft([0],r);var a=z(Math.abs(Math.ceil((t-e)/n)),r);ta}).sort(function(e,t){return t.score-e.score}),o=[],s=0;s=0;--p)if(Pt(e,c,o[p])>=r){f=!0;break}if(!f&&(o.push(c),o.length>=n))break}return at(o,"int32")}function Pt(e,t,n){var r=e.subarray(4*t,4*t+4),a=e.subarray(4*n,4*n+4),i=Math.min(r[0],r[2]),o=Math.min(r[1],r[3]),s=Math.max(r[0],r[2]),u=Math.max(r[1],r[3]),l=Math.min(a[0],a[2]),c=Math.min(a[1],a[3]),f=Math.max(a[0],a[2]),p=Math.max(a[1],a[3]),h=(s-i)*(u-o),d=(f-l)*(p-c);if(h<=0||d<=0)return 0;var m=Math.max(i,l),g=Math.max(o,c),y=Math.min(s,f),v=Math.min(u,p),b=Math.max(y-m,0)*Math.max(v-g,0);return b/(h+d-b)}function At(e,t,n){var r=Array(e.rank).fill(0),a=e.shape.slice();return t.map(function(t){a[n]=t;var i=e.slice(r,a);return r[n]+=t,i})}function Tt(e,t,n,r,a){for(var i=t[t.length-1],o=[e.length/i,i],s=o[0],u=o[1],l=I(n,s*r),c=I("int32",s*r),f=0;f1&&1===o&&r.unshift(i)}return r}function Rt(e,t){for(var n=[],r=0;r1)&&n.unshift(i)}return n}function Dt(e,t){for(var n=[],r=Math.max(e.length,t.length),a=0;a1?"["+t+"]":"")+";":"uniform sampler2D "+e.name+";"});a=a.join("\n");var i,o=e.map(function(e){return function(e,t,n){var r=function(e){var t=e.name,n="get"+t.charAt(0).toUpperCase()+t.slice(1)+"Flat",r=b(e.shapeInfo.logicalShape);if(e.shapeInfo.isUniform)return 1===r?"float "+n+"(int index) {return "+t+";}":"\n float "+n+"(int index) {\n for (int i = 0; i < "+r+"; i++) {\n if (i == index) {\n return "+t+"[i];\n }\n }\n }\n ";var a=e.shapeInfo.texShape,i=a[0],o=a[1];return 1===o&&1===i?"\n float "+n+"(int index) {\n return sampleTexture("+t+", halfCR);\n }\n ":1===o?"\n float "+n+"(int index) {\n vec2 uv = vec2(0.5, (float(index) + 0.5) / "+i+".0);\n return sampleTexture("+t+", uv);\n }\n ":1===i?"\n float "+n+"(int index) {\n vec2 uv = vec2((float(index) + 0.5) / "+o+".0, 0.5);\n return sampleTexture("+t+", uv);\n }\n ":"\n float "+n+"(int index) {\n vec2 uv = UVfrom1D("+i+", "+o+", index);\n return sampleTexture("+t+", uv);\n }\n "}(e);return r+=function e(t){var n=t.shapeInfo.logicalShape;switch(n.length){case 0:return function(e){var t=e.name,n="get"+t.charAt(0).toUpperCase()+t.slice(1);return e.shapeInfo.isUniform?"float "+n+"() {return "+t+";}":"\n float "+n+"() {\n return sampleTexture("+t+", halfCR);\n }\n "}(t);case 1:return function(e){var t=e.name,n="get"+t.charAt(0).toUpperCase()+t.slice(1);return"\n float "+n+"(int index) {\n return "+n+"Flat(index);\n }\n "}(t);case 2:return function(t){var n=t.shapeInfo.logicalShape,r=t.name,a="get"+r.charAt(0).toUpperCase()+r.slice(1),i=t.shapeInfo.texShape;if(null!=i&&w(n,i)){var o=i[0];return"\n float "+a+"(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2("+i[1]+".0, "+o+".0);\n return sampleTexture("+r+", uv);\n }\n "}var s=k(n),u=s.newShape,l=s.keptDims,c=u;if(c.lengths||o.length>0),c=function(e){for(var t=0;t=1?"coords = 0;":s.map(function(e){return"coords["+(e+u)+"] = 0;"}).join("\n"))+"\n return get"+n+"("+(i<2&&a>0?"coords":e.shapeInfo.logicalShape.map(function(e,t){return"coords["+(t+u)+"]"}).join(", "))+");\n }\n "}(e,t,a,i);var p=b(e.shapeInfo.logicalShape),h="";l&&c&&(h="\n int mainPart = index / "+p+";\n index -= mainPart * "+p+";\n ");var d=t.texShape;if(f)return 1===p?"float "+i+"() {return "+r+";}":"\n float "+i+"() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+d[0]+", "+d[1]+"));\n int index = resTexRC.x * "+d[1]+" + resTexRC.y;\n "+h+"\n return get"+a+"Flat(index);\n }\n ";var m=e.shapeInfo.texShape;return w(m,d)?"\n float "+i+"() {\n return sampleTexture("+r+", resultUV);\n }\n ":"\n float "+i+"() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+d[0]+", "+d[1]+"));\n int index = resTexRC.x * "+d[1]+" + resTexRC.y;\n "+h+"\n int texR = index / "+m[1]+";\n int texC = index - texR * "+m[1]+";\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+m[1]+".0, "+m[0]+".0);\n\n return sampleTexture("+r+", uv);\n }\n "}(e,t,n)),r}(e,t,r)}).join("\n"),s=t.texShape;return i=t.isPacked?function(e,t){switch(e.length){case 0:return"\n int getOutputCoords() {\n return 0;\n }\n ";case 2:return function(e,t){return"\n ivec2 getOutputCoords() {\n return 2 * ivec2(resultUV.yx * vec2("+Math.ceil(t[0]/2)+", "+Math.ceil(t[1]/2)+"));\n }\n "}(0,t);default:throw new Error(e.length+"-D output packed sampling is not yet supported")}}(t.logicalShape,s):function(e,t){switch(e.length){case 0:return"\n int getOutputCoords() {\n return 0;\n }\n ";case 1:return function(e,t){return 1===t[0]?"\n int getOutputCoords() {\n return int(resultUV.x * "+t[1]+".0);\n }\n ":1===t[1]?"\n int getOutputCoords() {\n return int(resultUV.y * "+t[0]+".0);\n }\n ":"\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n return resTexRC.x * "+t[1]+" + resTexRC.y;\n }\n "}(0,t);case 2:return function(e,t){return w(e,t)?"\n ivec2 getOutputCoords() {\n return ivec2(resultUV.yx * vec2("+t[0]+", "+t[1]+"));\n }\n ":1===e[1]?"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n return ivec2(index, 0);\n }\n ":1===e[0]?"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n return ivec2(0, index);\n }\n ":"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n int r = index / "+e[1]+";\n int c = index - r * "+e[1]+";\n return ivec2(r, c);\n }\n "}(e,t);case 3:return function(e,t){var n=e[1]*e[2],r=e[2];return"\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n int r = index / "+n+";\n index -= r * "+n+";\n int c = index / "+r+";\n int d = index - c * "+r+";\n return ivec3(r, c, d);\n }\n "}(e,t);case 4:return function(e,t){var n=e[3],r=e[2]*n,a=e[1]*r;return"\n ivec4 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n\n int r = index / "+a+";\n index -= r * "+a+";\n\n int c = index / "+r+";\n index -= c * "+r+";\n\n int d = index / "+n+";\n int d2 = index - d * "+n+";\n\n return ivec4(r, c, d, d2);\n }\n "}(e,t);case 5:return function(e,t){var n=e[4],r=e[3]*n,a=e[2]*r,i=e[1]*a;return"\n ivec5 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx * vec2("+t[0]+",\n "+t[1]+"));\n\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n\n int r = index / "+i+";\n index -= r * "+i+";\n\n int c = index / "+a+";\n index -= c * "+a+";\n\n int d = index / "+r+";\n index -= d * "+r+";\n\n int d2 = index / "+n+";\n int d3 = index - d2 * "+n+";\n\n ivec5 outShape = ivec5(r, c, d, d2, d3);\n return outShape;\n }\n "}(e,t);case 6:return function(e,t){var n=e[5],r=e[4]*n,a=e[3]*r,i=e[2]*a,o=e[1]*i;return"\n ivec6 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+t[0]+", "+t[1]+"));\n int index = resTexRC.x * "+t[1]+" + resTexRC.y;\n\n int r = index / "+o+";\n index -= r * "+o+";\n\n int c = index / "+i+";\n index -= c * "+i+";\n\n int d = index / "+a+";\n index -= d * "+a+";\n\n int d2 = index / "+r+";\n index -= d2 * "+r+";\n\n int d3 = index / "+n+";\n int d4 = index - d3 * "+n+";\n\n ivec6 result = ivec6(r, c, d, d2, d3, d4);\n return result;\n }\n "}(e,t);default:throw new Error(e.length+"-D output sampling is not yet supported")}}(t.logicalShape,s),[Wt,Vt,Ut,a,i,o,n].join("\n")}var Vt="\n float sampleTexture(sampler2D textureSampler, vec2 uv) {\n return texture2D(textureSampler, uv).r;\n }\n",Ut="\n void setOutput(float val) {\n gl_FragColor = vec4(val, 0, 0, 0);\n }\n",Wt="\n precision highp float;\n precision highp int;\n varying vec2 resultUV;\n const vec2 halfCR = vec2(0.5, 0.5);\n\n struct ivec5\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n };\n\n struct ivec6\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n int v;\n };\n\n bool isNaN(float val) {\n return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\n }\n\n bool hasNaN(vec4 values) {\n vec4 v1 = values * values;\n vec4 v2 = values * values;\n return any(notEqual(v1, v2));\n }\n\n float getNaN(vec4 values) {\n return dot(vec4(1), values);\n }\n\n int round(float value) {\n return int(floor(value + 0.5));\n }\n\n int imod(int x, int y) {\n return x - y * (x / y);\n }\n\n //Based on the work of Dave Hoskins\n //https://www.shadertoy.com/view/4djSRW\n #define HASHSCALE1 443.8975\n float random(float seed){\n vec2 p = resultUV * seed;\n vec3 p3 = fract(vec3(p.xyx) * HASHSCALE1);\n p3 += dot(p3, p3.yzx + 19.19);\n return fract((p3.x + p3.y) * p3.z);\n }\n\n \nvec2 UVfrom1D(int texNumR, int texNumC, int index) {\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom2D(int texNumR, int texNumC, int numC, int row, int col) {\n int index = row * numC + col;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom3D(int texNumR, int texNumC, int stride0,\n int stride1, int row, int col, int depth) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * stride0 + col * stride1 + depth;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom4D(int texNumR, int texNumC, int stride0,\n int stride1, int stride2, int row, int col, int depth,\n int depth2) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * stride0 + col * stride1 + depth * stride2 + depth2;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom5D(int texNumR, int texNumC, int stride0,\n int stride1, int stride2, int stride3, int row, int col, int depth,\n int depth2, int depth3) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * stride0 + col * stride1 +\n depth * stride2 + depth2 * stride3 + depth3;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n \nvec2 UVfrom6D(int texNumR, int texNumC, int stride0,\n int stride1, int stride2, int stride3, int stride4,\n int row, int col, int depth, int depth2, int depth3, int depth4) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * stride0 + col * stride1 + depth * stride2 + depth2 *\n stride3 + depth3 * stride4 + depth4;\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n\n";function qt(e){if(e<=1)return"int";if(2===e)return"ivec2";if(3===e)return"ivec3";if(4===e)return"ivec4";if(5===e)return"ivec5";if(6===e)return"ivec6";throw Error("GPU for rank "+e+" is not yet supported")}function $t(e,t){var n=JSON.parse(JSON.stringify(e));return n.shapeInfo.logicalShape=t,n}function Gt(e,t){return t.map(function(t){return e[t]}).join(", ")}function Ht(e,t){if(1===e)return""+t;if(2===e)return t+".y";if(3===e)return t+".z";if(4===e)return t+".w";throw Error("Cumulative sum for rank "+e+" is not yet supported")}var Kt,Xt,Yt=function(){function e(e,t,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=e,this.blockSize=t,this.dataFormat=n,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int h = "+this.getHeightCoordString()+";\n int w = "+this.getWidthCoordString()+";\n int d = "+this.getDepthCoordString()+";\n\n int in_h = h / "+t+";\n int offset_h = imod(h, "+t+");\n int in_w = w / "+t+";\n int offset_w = imod(w, "+t+");\n int offset_d = (offset_h * "+t+" + offset_w) *\n "+this.getOutputDepthSize()+";\n int in_d = d + offset_d;\n\n float result = "+this.getInputSamplingString()+";\n setOutput(result);\n }\n "}return e.prototype.getHeightCoordString=function(){return"NHWC"===this.dataFormat?"coords[1]":"coords[2]"},e.prototype.getWidthCoordString=function(){return"NHWC"===this.dataFormat?"coords[2]":"coords[3]"},e.prototype.getDepthCoordString=function(){return"NHWC"===this.dataFormat?"coords[3]":"coords[1]"},e.prototype.getOutputDepthSize=function(){return"NHWC"===this.dataFormat?this.outputShape[3]:this.outputShape[1]},e.prototype.getInputSamplingString=function(){return"NHWC"===this.dataFormat?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"},e}();function Jt(e,t){return[t,e]}function Zt(e,t){return e*t}function Qt(e,t,n){var r=function(e,t){if(e%t!=0)throw new Error("unpackedSize ("+e+") must be a multiple of "+t);return e/t}(e.length,n);if(t.length= "+r);for(var a=0,i=0;ir||n>r)throw a="["+t+"x"+n+"]",new Error("Requested texture size "+a+" greater than WebGL maximum on this browser / GPU ["+r+"x"+r+"].")}function Nn(e){return Rn(e,function(){return e.createFramebuffer()},"Unable to create WebGLFramebuffer.")}function Sn(e,t,n,r,a,i,o){var s=e.getAttribLocation(t,n);return-1!==s&&(on(e,function(){return e.bindBuffer(e.ARRAY_BUFFER,r)}),on(e,function(){return e.vertexAttribPointer(s,a,e.FLOAT,!1,i,o)}),on(e,function(){return e.enableVertexAttribArray(s)}),!0)}function On(e,t,n){Dn(e,n),on(e,function(){return e.activeTexture(e.TEXTURE0+n)}),on(e,function(){return e.bindTexture(e.TEXTURE_2D,t)})}function kn(e,t,n){return Rn(e,function(){return e.getUniformLocation(t,n)},'uniform "'+n+'" not present in program.')}function In(e,t,n){return e.getUniformLocation(t,n)}function Cn(e,t,n,r,a){on(e,function(){return On(e,n,a)}),on(e,function(){return e.uniform1i(r,a)})}function Pn(e,t,n){on(e,function(){return e.bindFramebuffer(e.FRAMEBUFFER,n)}),on(e,function(){return e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0)})}function An(e,t){on(e,function(){return e.bindFramebuffer(e.FRAMEBUFFER,t)}),on(e,function(){return e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0)})}function Tn(e){var t=e.checkFramebufferStatus(e.FRAMEBUFFER);if(t!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+Mn(e,t))}function Mn(e,t){switch(t){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return"unknown error "+t}}function Rn(e,t,n){var r=on(e,function(){return t()});if(null==r)throw new Error(n);return r}function Dn(e,t){var n=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=t+e.TEXTURE0;if(rn)throw new Error("textureUnit must be in [gl.TEXTURE0, gl.TEXTURE"+n+"].")}function jn(e,t){2!==t.length&&(t=k(t).newShape);var n=wn(e),r=b(t);return t.length<=1&&r<=n?[r,1]:2===t.length&&t[0]<=n&&t[1]<=n?t:3===t.length&&t[0]<=n&&t[1]*t[2]<=n?[t[0],t[1]*t[2]]:4===t.length&&t[0]<=n&&t[1]*t[2]*t[3]<=n?[t[0],t[1]*t[2]*t[3]]:E(r)}var Ln=Object.freeze({createWebGLRenderingContext:rn,createWebGLRenderingContextFromCanvas:an,callAndCheck:on,enableDebugWebGLErrorChecking:un,checkWebGLError:ln,getWebGLErrorMessage:cn,getExtensionOrThrow:fn,createVertexShader:pn,createFragmentShader:hn,createProgram:mn,linkProgram:gn,validateProgram:yn,createStaticVertexBuffer:vn,createStaticIndexBuffer:bn,queryMaxTextureSize:wn,getNumChannels:xn,createTexture:_n,validateTextureSize:En,createFramebuffer:Nn,bindVertexBufferToProgramAttribute:Sn,bindTextureUnit:On,unbindTextureUnit:function(e,t){Dn(e,t),on(e,function(){return e.activeTexture(e.TEXTURE0+t)}),on(e,function(){return e.bindTexture(e.TEXTURE_2D,null)})},getProgramUniformLocationOrThrow:kn,getProgramUniformLocation:In,bindTextureToProgramUniformSampler:Cn,bindCanvasToFramebuffer:function(e){on(e,function(){return e.bindFramebuffer(e.FRAMEBUFFER,null)}),on(e,function(){return e.viewport(0,0,e.canvas.width,e.canvas.height)}),on(e,function(){return e.scissor(0,0,e.canvas.width,e.canvas.height)})},bindColorTextureToFramebuffer:Pn,unbindColorTextureFromFramebuffer:An,validateFramebuffer:Tn,getFramebufferErrorMessage:Mn,getTextureShapeFromLogicalShape:jn});function Bn(e){var t,n={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};return on(t=null!=e?an(e,n):rn(n),function(){return t.disable(t.DEPTH_TEST)}),on(t,function(){return t.disable(t.STENCIL_TEST)}),on(t,function(){return t.disable(t.BLEND)}),on(t,function(){return t.disable(t.DITHER)}),on(t,function(){return t.disable(t.POLYGON_OFFSET_FILL)}),on(t,function(){return t.disable(t.SAMPLE_COVERAGE)}),on(t,function(){return t.enable(t.SCISSOR_TEST)}),on(t,function(){return t.enable(t.CULL_FACE)}),on(t,function(){return t.cullFace(t.BACK)}),t}function zn(e){return pn(e,"\n precision highp float;\n attribute vec3 clipSpacePos;\n attribute vec2 uv;\n varying vec2 resultUV;\n\n void main() {\n gl_Position = vec4(clipSpacePos, 1);\n resultUV = uv;\n }")}function Fn(e){return vn(e,new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]))}function Vn(e){return bn(e,new Uint16Array([0,1,2,2,1,3]))}function Un(e,t){var n,r,a,i,o,s,u,l=e;return 2===me.get("WEBGL_VERSION")?(n=l.R32F,r=l.R16F,a=l.RGBA32F,i=l.RED,o=4,s=1,u=l.HALF_FLOAT):(n=e.RGBA,r=e.RGBA,a=l.RGBA,i=e.RGBA,o=4,s=4,u=null!=t?t.HALF_FLOAT_OES:null),{internalFormatFloat:n,internalFormatHalfFloat:r,internalFormatPackedFloat:a,textureFormatFloat:i,downloadTextureFormat:e.RGBA,downloadUnpackNumChannels:o,defaultNumChannels:s,textureTypeHalfFloat:u}}function Wn(e,t,n,r,a,i){En(e,t,n);var o=_n(e),s=e.TEXTURE_2D;return on(e,function(){return e.bindTexture(s,o)}),on(e,function(){return e.texParameteri(s,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE)}),on(e,function(){return e.texParameteri(s,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)}),on(e,function(){return e.texParameteri(s,e.TEXTURE_MIN_FILTER,e.NEAREST)}),on(e,function(){return e.texParameteri(s,e.TEXTURE_MAG_FILTER,e.NEAREST)}),on(e,function(){return e.texImage2D(s,0,r,t,n,0,a,i,null)}),on(e,function(){return e.bindTexture(e.TEXTURE_2D,null)}),o}function qn(e,t,n,r){var a=Jt(t,n);return Wn(e,a[0],a[1],r.internalFormatFloat,r.textureFormatFloat,e.FLOAT)}function $n(e,t,n,r){var a=Jt(t,n);return Wn(e,a[0],a[1],r.internalFormatFloat,r.textureFormatFloat,r.textureTypeHalfFloat)}function Gn(e,t,n,r){var a=Jt(t,n);return Wn(e,a[0],a[1],e.RGBA,e.RGBA,e.UNSIGNED_BYTE)}function Hn(e,t,n,r){var a=en(t,n);return Wn(e,a[0],a[1],r.internalFormatPackedFloat,e.RGBA,e.FLOAT)}function Kn(e,t,n){return on(e,function(){return e.bindBuffer(e.ARRAY_BUFFER,n)}),Sn(e,t,"clipSpacePos",n,3,20,0)&&Sn(e,t,"uv",n,2,20,12)}function Xn(e,t,n){on(e,function(){return e.bindTexture(e.TEXTURE_2D,t)}),on(e,function(){return e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n)}),on(e,function(){return e.bindTexture(e.TEXTURE_2D,null)})}function Yn(e,t,n,r,a,i){En(e,n,r),on(e,function(){return e.bindTexture(e.TEXTURE_2D,t)}),on(e,function(){return e.texSubImage2D(e.TEXTURE_2D,0,0,0,n,r,i,e.FLOAT,a)}),on(e,function(){return e.bindTexture(e.TEXTURE_2D,null)})}function Jn(e,t,n,r,a,i,o){var s,u=Jt(n,r),l=u[0],c=u[1];1===o.defaultNumChannels?s=a:function(e,t,n){var r=Zt(e.length,n);if(t.length= "+r);for(var a=0,i=0;i= "+a);for(var i=en(t,n),o=i[0],s=i[1],u=n%2==1,l=t%2==1,c=Math.floor(n/2),f=Math.floor(t/2),p=u?4:0,h=n,d=0,m=0;m= "+a);for(var i=n%2==1,o=t%2==1,s=Math.floor(n/2),u=Math.floor(t/2),l=en(t,n),c=l[0],f=l[1],p=i?4:0,h=n+(i?1:0),d=0,m=0,g=n,y=0;y0?(t=this.beginQuery(),this.endQuery(),n=function(){return r.isQueryAvailable(t,me.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}):n=function(){return!0};return{query:t,isFencePassed:n}},e.prototype.downloadMatrixFromPackedTexture=function(e,t,n){var r=this;return this.downloadMatrixDriver(e,function(){return rr(r.gl,t,n,r.textureConfig)})},e.prototype.createProgram=function(e){this.throwIfDisposed();var t=this.gl,n=hn(t,e),r=zn(t),a=mn(t);return on(t,function(){return t.attachShader(a,r)}),on(t,function(){return t.attachShader(a,n)}),gn(t,a),this.autoDebugValidate&&yn(t,a),this.vertexAttrsAreBound||(this.setProgram(a),this.vertexAttrsAreBound=Kn(t,this.program,this.vertexBuffer)),a},e.prototype.deleteProgram=function(e){var t=this;this.throwIfDisposed(),e===this.program&&(this.program=null),null!=e&&on(this.gl,function(){return t.gl.deleteProgram(e)})},e.prototype.setProgram=function(e){var t=this;this.throwIfDisposed(),this.program=e,null!=this.program&&this.autoDebugValidate&&yn(this.gl,this.program),on(this.gl,function(){return t.gl.useProgram(e)})},e.prototype.getUniformLocation=function(e,t,n){return void 0===n&&(n=!0),this.throwIfDisposed(),n?kn(this.gl,e,t):In(this.gl,e,t)},e.prototype.getAttributeLocation=function(e,t){var n=this;return this.throwIfDisposed(),on(this.gl,function(){return n.gl.getAttribLocation(e,t)})},e.prototype.getUniformLocationNoThrow=function(e,t){return this.throwIfDisposed(),this.gl.getUniformLocation(e,t)},e.prototype.setInputMatrixTexture=function(e,t,n){this.throwIfDisposed(),this.throwIfNoProgram(),Cn(this.gl,this.program,e,t,n)},e.prototype.setOutputMatrixTexture=function(e,t,n){this.setOutputMatrixTextureDriver(e,n,t)},e.prototype.setOutputPackedMatrixTexture=function(e,t,n){this.throwIfDisposed();var r=en(t,n),a=r[0],i=r[1];this.setOutputMatrixTextureDriver(e,a,i)},e.prototype.setOutputMatrixWriteRegion=function(e,t,n,r){this.setOutputMatrixWriteRegionDriver(n,e,r,t)},e.prototype.setOutputPackedMatrixWriteRegion=function(e,t,n,r){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")},e.prototype.debugValidate=function(){null!=this.program&&yn(this.gl,this.program),Tn(this.gl)},e.prototype.executeProgram=function(){this.throwIfDisposed(),this.throwIfNoProgram();var e=this.gl;this.autoDebugValidate&&this.debugValidate(),on(e,function(){return e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0)})},e.prototype.blockUntilAllProgramsCompleted=function(){var e=this;this.throwIfDisposed(),on(this.gl,function(){return e.gl.finish()})},e.prototype.getQueryTimerExtension=function(){return null==this.disjointQueryTimerExtension&&(this.disjointQueryTimerExtension=fn(this.gl,2===me.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension},e.prototype.getQueryTimerExtensionWebGL2=function(){return this.getQueryTimerExtension()},e.prototype.getQueryTimerExtensionWebGL1=function(){return this.getQueryTimerExtension()},e.prototype.beginQuery=function(){if(2===me.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var e=this.gl,t=this.getQueryTimerExtensionWebGL2(),n=e.createQuery();return e.beginQuery(t.TIME_ELAPSED_EXT,n),n}var r=this.getQueryTimerExtensionWebGL1(),a=r.createQueryEXT();return r.beginQueryEXT(r.TIME_ELAPSED_EXT,a),a},e.prototype.endQuery=function(){if(2!==me.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var e=this.getQueryTimerExtensionWebGL1();e.endQueryEXT(e.TIME_ELAPSED_EXT)}else{var t=this.gl,n=this.getQueryTimerExtensionWebGL2();t.endQuery(n.TIME_ELAPSED_EXT)}},e.prototype.waitForQueryAndGetTime=function(e){return l(this,void 0,void 0,function(){var t=this;return c(this,function(n){switch(n.label){case 0:return[4,S(function(){return t.isQueryAvailable(e,me.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))})];case 1:return n.sent(),[2,this.getQueryTime(e,me.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))]}})})},e.prototype.getQueryTime=function(e,t){if(0===t)return null;if(2===t){var n=this.gl;return n.getQueryParameter(e,n.QUERY_RESULT)/1e6}var r=this.getQueryTimerExtensionWebGL1();return r.getQueryObjectEXT(e,r.QUERY_RESULT_EXT)/1e6},e.prototype.isQueryAvailable=function(e,t){if(0===t)return!0;if(2===t){var n=this.gl,r=this.getQueryTimerExtensionWebGL2(),a=n.getQueryParameter(e,n.QUERY_RESULT_AVAILABLE);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),a&&!this.disjoint}return a=(r=this.getQueryTimerExtensionWebGL1()).getQueryObjectEXT(e,r.QUERY_RESULT_AVAILABLE_EXT),null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),a&&!this.disjoint},e.prototype.pollFence=function(e){var t=this;return new Promise(function(n){t.addItemToPoll(function(){return e.isFencePassed()},function(){return n()})})},e.prototype.pollItems=function(){for(var e=function(e){for(var t=0,n=e.length-1,r=-1;t<=n;){var a=t+n>>1;e[a]()?(r=a,t=a+1):n=a-1}return r}(this.itemsToPoll.map(function(e){return e.isDoneFn})),t=0;t<=e;++t)(0,this.itemsToPoll[t].resolveFn)();this.itemsToPoll=this.itemsToPoll.slice(e+1)},e.prototype.addItemToPoll=function(e,t){var n=this;this.itemsToPoll.push({isDoneFn:e,resolveFn:t}),this.itemsToPoll.length>1||S(function(){return n.pollItems(),0===n.itemsToPoll.length})},e.prototype.bindTextureToFrameBuffer=function(e){this.throwIfDisposed(),Pn(this.gl,e,this.framebuffer),this.autoDebugValidate&&Tn(this.gl)},e.prototype.unbindTextureToFrameBuffer=function(){null!=this.outputTexture?(Pn(this.gl,this.outputTexture,this.framebuffer),this.autoDebugValidate&&Tn(this.gl)):An(this.gl,this.framebuffer)},e.prototype.downloadMatrixDriver=function(e,t){this.bindTextureToFrameBuffer(e);var n=t();return this.unbindTextureToFrameBuffer(),n},e.prototype.setOutputMatrixTextureDriver=function(e,t,n){this.throwIfDisposed();var r=this.gl;Pn(r,e,this.framebuffer),this.autoDebugValidate&&Tn(r),this.outputTexture=e,on(r,function(){return r.viewport(0,0,t,n)}),on(r,function(){return r.scissor(0,0,t,n)})},e.prototype.setOutputMatrixWriteRegionDriver=function(e,t,n,r){var a=this;this.throwIfDisposed(),on(this.gl,function(){return a.gl.scissor(e,t,n,r)})},e.prototype.throwIfDisposed=function(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")},e.prototype.throwIfNoProgram=function(){if(null==this.program)throw new Error("No GPU program is currently set.")},e}();function or(e,t){if(e.length!==t.length)throw Error("Binary was compiled with "+e.length+" inputs, but was executed with "+t.length+" inputs");e.forEach(function(e,n){var r=e.logicalShape,a=t[n],i=a.shape;if(!w(r,i))throw Error("Binary was compiled with different shapes than the current args. Shapes "+r+" and "+i+" must match");if(!e.isUniform||!a.isUniform){var o=e.texShape,s=a.isUniform?null:a.texData.texShape;if(!w(o,s))throw Error("Binary was compiled with different texture shapes than the current args. Shape "+o+" and "+s+" must match")}})}var sr=function(){function e(e,t,n){this.variableNames=["probs"],this.outputShape=[e,n],this.userCode="\n uniform float seed;\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n\n float r = random(seed);\n float cdf = 0.0;\n\n for (int i = 0; i < "+(t-1)+"; i++) {\n cdf += getProbs(batch, i);\n\n if (r < cdf) {\n setOutput(float(i));\n return;\n }\n }\n\n // If no other event happened, last event happened.\n setOutput(float("+(t-1)+"));\n }\n "}return e.prototype.getCustomSetupFunc=function(e){var t=this;return function(n,r){null==t.seedLoc&&(t.seedLoc=n.getUniformLocation(r,"seed")),n.gl.uniform1f(t.seedLoc,e)}},e}(),ur=function(e){this.variableNames=["A"],this.outputShape=e,this.userCode="\n void main() {\n ivec2 rc = getOutputCoords();\n\n int r = rc.x;\n int c = rc.y;\n int rp1 = r + 1;\n int cp1 = c + 1;\n\n bool cEdge = cp1 >= "+e[1]+";\n bool rEdge = rp1 >= "+e[0]+";\n\n gl_FragColor = vec4(\n getA(r, c),\n cEdge ? 0. : getA(r, cp1),\n rEdge ? 0. : getA(rp1, c),\n rEdge || cEdge ? 0. : getA(rp1, cp1)\n );\n }\n "},lr=function(e,t,n){if(this.variableNames=["x"],"avg"===t&&n)throw new Error("Cannot compute positions for average pool.");var r=e.filterHeight,a=e.filterWidth,i=e.strideHeight,o=e.strideWidth,s=e.padInfo.top,u=e.padInfo.left;this.outputShape=e.outShape;var l="avg"===t,c="0.0";if(l||(c="-1.0 / 0.0"),n)this.userCode="\n const ivec2 strides = ivec2("+i+", "+o+");\n const ivec2 pads = ivec2("+s+", "+u+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n float avgValue = 0.0;\n\n for (int wR = 0; wR < "+r+"; wR++) {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+a+"; wC++) {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= "+e.inWidth+") {\n continue;\n }\n\n float value = getX(batch, xR, xC, d);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value >= currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition = wR * "+a+" + wC;\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n ";else{var f=t+"("+t+"("+t+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"avg"===t&&(f="avgValue / count");var p=4*Math.floor(a/4),h=a%4,d="\n if ("+l+") {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = max(values, minMaxValue);\n }\n ";this.userCode="\n const ivec2 strides = ivec2("+i+", "+o+");\n const ivec2 pads = ivec2("+s+", "+u+");\n const float initializationValue = "+c+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xR, int xC, int d) {\n if (xC < 0 || xC >= "+e.inWidth+") {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xR, xC, d);\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n vec4 minMaxValue = vec4("+c+");\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wR = 0; wR < "+r+"; wR++) {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+p+"; wC += 4) {\n int xC = xCCorner + wC;\n\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + 1, d),\n getValue(batch, xR, xC + 2, d),\n getValue(batch, xR, xC + 3, d)\n );\n\n "+d+"\n }\n\n int xC = xCCorner + "+p+";\n if ("+(1===h)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+d+"\n } else if ("+(2===h)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + 1, d),\n initializationValue,\n initializationValue\n );\n\n "+d+"\n } else if ("+(3===h)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + 1, d),\n getValue(batch, xR, xC + 2, d),\n initializationValue\n );\n\n "+d+"\n }\n }\n setOutput("+f+");\n }\n "}},cr=function(){function e(e){this.variableNames=["source"],this.outputShape=e,this.rank=e.length;var t=qt(this.rank),n=function(e){if(1===e)return"sourceLoc";if(2===e)return"sourceLoc.x, sourceLoc.y";if(3===e)return"sourceLoc.x, sourceLoc.y, sourceLoc.z";if(4===e)return"sourceLoc.x, sourceLoc.y, sourceLoc.z, sourceLoc.w";throw Error("Slicing for rank "+e+" is not yet supported")}(this.rank);this.userCode="\n uniform "+t+" start;\n\n void main() {\n "+t+" sourceLoc = start + getOutputCoords();\n setOutput(getSource("+n+"));\n }\n "}return e.prototype.getCustomSetupFunc=function(e){var t=this;if(e.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the length of start ("+e.length+")");return function(n,r){if(null!=t.startLoc||(t.startLoc=n.getUniformLocationNoThrow(r,"start"),null!=t.startLoc))if(1===t.rank)n.gl.uniform1i(t.startLoc,e[0]);else if(2===t.rank)n.gl.uniform2i(t.startLoc,e[0],e[1]);else if(3===t.rank)n.gl.uniform3i(t.startLoc,e[0],e[1],e[2]);else{if(4!==t.rank)throw Error("Slicing for rank "+t.rank+" is not yet supported");n.gl.uniform4i(t.startLoc,e[0],e[1],e[2],e[3])}}},e}(),fr=function(){function e(e){this.gpgpu=e,this.numUsedTextures=0,this.numFreeTextures=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}return e.prototype.acquireTexture=function(e,t){var n,r=pr(t),a=hr(e,r);if(a in this.freeTextures||(this.freeTextures[a]=[]),a in this.usedTextures||(this.usedTextures[a]=[]),this.freeTextures[a].length>0){this.numFreeTextures--,this.numUsedTextures++,this.log();var i=this.freeTextures[a].shift();return this.usedTextures[a].push(i),i}return this.numUsedTextures++,this.log(),r===Xt.PACKED_2X2_FLOAT32?n=this.gpgpu.createPackedMatrixTexture(e[0],e[1]):r===Xt.UNPACKED_FLOAT32?n=this.gpgpu.createFloat32MatrixTexture(e[0],e[1]):r===Xt.UNPACKED_FLOAT16?n=this.gpgpu.createFloat16MatrixTexture(e[0],e[1]):r===Xt.PACKED_4X1_UNSIGNED_BYTE&&(n=this.gpgpu.createUnsignedBytesMatrixTexture(e[0],e[1])),this.usedTextures[a].push(n),n},e.prototype.releaseTexture=function(e,t,n){var r=hr(t,pr(n));r in this.freeTextures||(this.freeTextures[r]=[]),this.freeTextures[r].push(e),this.numFreeTextures++,this.numUsedTextures--;var a=this.usedTextures[r],i=a.indexOf(e);if(i<0)throw new Error("Cannot release a texture that was never provided by this texture manager");a.splice(i,1),this.log()},e.prototype.log=function(){if(this.logEnabled){var e=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",this.numFreeTextures+" / "+this.numUsedTextures,"("+e+")")}},e.prototype.getNumUsedTextures=function(){return this.numUsedTextures},e.prototype.getNumFreeTextures=function(){return this.numFreeTextures},e.prototype.dispose=function(){var e=this;if(null!=this.freeTextures){for(var t in this.freeTextures)this.freeTextures[t].forEach(function(t){e.gpgpu.deleteMatrixTexture(t)});for(var t in this.usedTextures)this.usedTextures[t].forEach(function(t){e.gpgpu.deleteMatrixTexture(t)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0}},e}();function pr(e){if(e===Kt.DOWNLOAD||e===Kt.PIXELS)return Xt.PACKED_4X1_UNSIGNED_BYTE;if(e===Kt.UPLOAD)return Xt.UNPACKED_FLOAT32;if(e===Kt.RENDER)return me.get("WEBGL_RENDER_FLOAT32_ENABLED")?Xt.UNPACKED_FLOAT32:Xt.UNPACKED_FLOAT16;if(e===Kt.PACK)return Xt.PACKED_2X2_FLOAT32;throw new Error("Unknown logical texture type "+e)}function hr(e,t){return e[0]+"_"+e[1]+"_"+t}var dr=1.7580993408473768,mr=1.0507009873554805,gr=function(){function e(e,t){this.variableNames=["A"],this.outputShape=e,this.userCode="\n uniform float NAN;\n float unaryOperation(float x) {\n "+t+"\n }\n\n void main() {\n float x = getAAtOutCoords();\n float y = unaryOperation(x);\n\n setOutput(y);\n }\n "}return e.prototype.getCustomSetupFunc=function(){var e=this;return function(t,n){null==e.startLoc&&(e.startLoc=t.getUniformLocationNoThrow(n,"NAN"),null==e.startLoc)||t.gl.uniform1f(e.startLoc,NaN)}},e}(),yr="if (isNaN(x)) return x;",vr=Je({concat_:function(e,t){void 0===t&&(t=0),d(e.length>=1,"Pass at least one tensor to concat");var n=Ye(e,"tensors","concat");t=Be(t,n[0].shape)[0];var r=We(n.map(function(e){return e.shape}),t);if(0===b(r))return nt([],r);if(1===(n=n.filter(function(e){return e.size>0})).length)return n[0];var a=n.map(function(e){return e.shape});!function(e,t){var n=e[0].length;e.forEach(function(e,t){d(e.length===n,"Error in concat"+n+"D: rank of tensors["+t+"] must be the same as the rank of the rest ("+n+")")}),d(t>=0&&t>>0,t=(r*=t)>>>0,t+=4294967296*(r-=t)}return 2.3283064365386963e-10*(t>>>0)});n.next=function(){var e=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=e-(n.c=0|e)},n.c=1,n.s0=r(" "),n.s1=r(" "),n.s2=r(" "),n.s0-=r(e),n.s0<0&&(n.s0+=1),n.s1-=r(e),n.s1<0&&(n.s1+=1),n.s2-=r(e),n.s2<0&&(n.s2+=1),r=null}(e),a=t&&t.state,i=n.next;return i.int32=function(){return 4294967296*n.next()|0},i.double=function(){return i()+1.1102230246251565e-16*(2097152*i()|0)},i.quick=i,a&&("object"==typeof a&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.alea=a}(0,e)}),Or=Nr(function(e){!function(e,t,n){function r(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t}function a(e,t){var n=new function(e){var t=this,n="";t.x=0,t.y=0,t.z=0,t.w=0,t.next=function(){var e=t.x^t.x<<11;return t.x=t.y,t.y=t.z,t.z=t.w,t.w^=t.w>>>19^e^e>>>8},e===(0|e)?t.x=e:n+=e;for(var r=0;r>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.xor128=a}(0,e)}),kr=Nr(function(e){!function(e,t,n){function r(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t.v=e.v,t.d=e.d,t}function a(e,t){var n=new function(e){var t=this,n="";t.next=function(){var e=t.x^t.x>>>2;return t.x=t.y,t.y=t.z,t.z=t.w,t.w=t.v,(t.d=t.d+362437|0)+(t.v=t.v^t.v<<4^e^e<<1)|0},t.x=0,t.y=0,t.z=0,t.w=0,t.v=0,e===(0|e)?t.x=e:n+=e;for(var r=0;r>>4),t.next()}(e),a=t&&t.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.xorwow=a}(0,e)}),Ir=Nr(function(e){!function(e,t,n){function r(e,t){return t.x=e.x.slice(),t.i=e.i,t}function a(e,t){null==e&&(e=+new Date);var n=new function(e){var t=this;t.next=function(){var e,n,r=t.x,a=t.i;return e=r[a],n=(e^=e>>>7)^e<<24,n^=(e=r[a+1&7])^e>>>10,n^=(e=r[a+3&7])^e>>>3,n^=(e=r[a+4&7])^e<<7,e=r[a+7&7],n^=(e^=e<<13)^e<<9,r[a]=n,t.i=a+1&7,n},function(e,t){var n,r=[];if(t===(0|t))r[0]=t;else for(t=""+t,n=0;n0;--n)e.next()}(t,e)}(e),a=t&&t.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&(a.x&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.xorshift7=a}(0,e)}),Cr=Nr(function(e){!function(e,t,n){function r(e,t){return t.i=e.i,t.w=e.w,t.X=e.X.slice(),t}function a(e,t){null==e&&(e=+new Date);var n=new function(e){var t=this;t.next=function(){var e,n,r=t.w,a=t.X,i=t.i;return t.w=r=r+1640531527|0,n=a[i+34&127],e=a[i=i+1&127],n^=n<<13,e^=e<<17,n^=n>>>15,e^=e>>>12,n=a[i]=n^e,t.i=i,n+(r^r>>>16)|0},function(e,t){var n,r,a,i,o,s=[],u=128;for(t===(0|t)?(r=t,t=null):(t+="\0",r=0,u=Math.max(u,t.length)),a=0,i=-32;i>>15,r^=r<<4,r^=r>>>13,i>=0&&(o=o+1640531527|0,a=0==(n=s[127&i]^=r+o)?a+1:0);for(a>=128&&(s[127&(t&&t.length||0)]=-1),a=127,i=512;i>0;--i)r=s[a+34&127],n=s[a=a+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,s[a]=r^n;e.w=o,e.X=s,e.i=a}(t,e)}(e),a=t&&t.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&(a.X&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.xor4096=a}(0,e)}),Pr=Nr(function(e){!function(e,t,n){function r(e,t){return t.a=e.a,t.b=e.b,t.c=e.c,t.d=e.d,t}function a(e,t){var n=new function(e){var t=this,n="";t.next=function(){var e=t.b,n=t.c,r=t.d,a=t.a;return e=e<<25^e>>>7^n,n=n-r|0,r=r<<24^r>>>8^a,a=a-e|0,t.b=e=e<<20^e>>>12^n,t.c=n=n-r|0,t.d=r<<16^n>>>16^a,t.a=a-e|0},t.a=0,t.b=0,t.c=-1640531527,t.d=1367130551,e===Math.floor(e)?(t.a=e/4294967296|0,t.b=0|e):n+=e;for(var r=0;r>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&r(a,n),i.state=function(){return r(n,{})}),i}t&&t.exports?t.exports=a:this.tychei=a}(0,e)}),Ar=Nr(function(e){!function(t,r){var a,i=this,o=256,s=6,u="random",l=r.pow(o,s),c=r.pow(2,52),f=2*c,p=o-1;function h(e,n,h){var y=[],v=m(function e(t,n){var r,a=[],i=typeof t;if(n&&"object"==i)for(r in t)try{a.push(e(t[r],n-1))}catch(e){}return a.length?a:"string"==i?t:t+"\0"}((n=1==n?{entropy:!0}:n||{}).entropy?[e,g(t)]:null==e?function(){try{var e;return a&&(e=a.randomBytes)?e=e(o):(e=new Uint8Array(o),(i.crypto||i.msCrypto).getRandomValues(e)),g(e)}catch(e){var n=i.navigator,r=n&&n.plugins;return[+new Date,i,r,i.screen,g(t)]}}():e,3),y),b=new function(e){var t,n=e.length,r=this,a=0,i=r.i=r.j=0,s=r.S=[];for(n||(e=[n++]);a=f;)e/=2,t/=2,n>>>=1;return(e+n)/t};return w.int32=function(){return 0|b.g(4)},w.quick=function(){return b.g(4)/4294967296},w.double=w,m(g(b.S),t),(n.pass||h||function(e,t,n,a){return a&&(a.S&&d(a,b),e.state=function(){return d(b,{})}),n?(r[u]=e,t):e})(w,v,"global"in n?n.global:this==r,n.state)}function d(e,t){return t.i=e.i,t.j=e.j,t.S=e.S.slice(),t}function m(e,t){for(var n,r=e+"",a=0;a=1||0===o);var s=Math.sqrt(-2*Math.log(o)/o);t=this.mean+this.stdDev*a*s,n=this.mean+this.stdDev*i*s,this.truncated&&!this.isValidTruncated(t)||(r=!0)}return this.truncated&&!this.isValidTruncated(n)||(this.nextVal=this.convertValue(n)),this.convertValue(t)},e.prototype.convertValue=function(e){return null==this.dtype||"float32"===this.dtype?e:Math.round(e)},e.prototype.isValidTruncated=function(e){return e<=this.upper&&e>=this.lower},e}();function Rr(e,t){return l(this,void 0,void 0,function(){var n,r,a,i,o,s,u,l,f,p,h,d,m,g,y,v,b,w,x,_;return c(this,function(c){switch(c.label){case 0:if(2!==(n=Xe(e,"img","toPixels","int32")).rank&&3!==n.rank)throw new Error("toPixels only supports rank 2 or 3 tensors, got rank "+n.rank+".");if(r=n.shape.slice(0,2),a=r[0],i=r[1],(o=2===n.rank?1:n.shape[2])>4||2===o)throw new Error("toPixels only supports depth of size 1, 3 or 4 but got "+o);return s=n.min(),u=n.max(),[4,s.data()];case 1:return l=c.sent()[0],[4,u.data()];case 2:if(f=c.sent()[0],s.dispose(),u.dispose(),"float32"===n.dtype){if(l<0||f>1)throw new Error("Tensor values for a float32 Tensor must be in the range [0 - 1] but got range ["+l+" - "+f+"].")}else{if("int32"!==n.dtype)throw new Error("Unsupported type for toPixels: "+n.dtype+". Please use float32 or int32 tensors.");if(l<0||f>255)throw new Error("Tensor values for a int32 Tensor must be in the range [0 - 255] but got range ["+l+" - "+f+"].")}return[4,n.data()];case 3:for(p=c.sent(),h="float32"===n.dtype?255:1,d=new Uint8ClampedArray(i*a*4),m=0;m=1+t.length,"input rank should be > than [blockShape] but got "+r.rank),d(n.length===t.length,"crops.shape[0] must be equal to [blockShape] but got "+n.length),d(r.shape[0]%a==0,"input tensor batch must be divisible by prod( blockShape )"),me.engine.runKernel(function(e){return e.batchToSpaceND(r,t,n)},{$x:r},function(e){return{$x:function(){return e.spaceToBatchND(t,n)}}})}}),Br=Je({cast_:function(e,t){var n=Xe(e,"x","cast");return me.engine.runKernel(function(e){return e.cast(n,t)},{$x:n},function(e){return{$x:function(){return e.clone()}}})}}),zr=Je({clone_:function(e){var t=Xe(e,"x","clone");return me.engine.runKernel(function(e){return Q.make(t.shape,{dataId:t.dataId},t.dtype)},{$x:t},function(e){return{$x:function(){return e.toFloat()}}})}}),Fr=Je({cumsum_:function(e,t,n,r){void 0===t&&(t=0),void 0===n&&(n=!1),void 0===r&&(r=!1);var a=Xe(e,"x","cumsum"),i=Fe([t|=0],a.rank),o=a;null!=i&&(o=a.transpose(i));var s=Ue(1,a.rank)[0],u=me.engine.runKernel(function(e){return e.cumsum(o,s,n,r)},{permutedX:o},function(e){return{permutedX:function(){return e.cumsum(t,n,!r)}}});return null!=i&&(u=u.transpose(i)),u}}),Vr=Je({depthToSpace_:function(e,t,n){void 0===n&&(n="NHWC");var r=Xe(e,"x","depthToSpace"),a="NHWC"===n?r.shape[1]:r.shape[2],i="NHWC"===n?r.shape[2]:r.shape[3],o="NHWC"===n?r.shape[3]:r.shape[1];return d(a*t>=0,"Negative dimension size caused by overflow when multiplying\n "+a+" and "+t+" for depthToSpace with input shape\n "+r.shape),d(i*t>=0,"Negative dimension size caused by overflow when multiplying\n "+i+" and "+t+" for depthToSpace with input shape\n "+r.shape),d(o%(t*t)==0,"Dimension size must be evenly divisible by "+t*t+" but is "+o+" for depthToSpace with input shape "+r.shape),me.engine.runKernel(function(e){return e.depthToSpace(r,t,n)},{$x:r})}}),Ur=Je({expandDims_:function(e,t){void 0===t&&(t=0);var n=Xe(e,"x","expandDims");d(t<=n.rank,"Axis must be <= rank of the tensor");var r=n.shape.slice();return t<0&&(d(-(n.rank+1)<=t,"Axis must be in the interval ["+-(n.rank+1)+", "+n.rank+"]"),t=n.rank+t+1),r.splice(t,0,1),ta(n,r)}}),Wr=Je({eye_:function(e,t,n,r){void 0===r&&(r="float32"),null==t&&(t=e);for(var a=Dr([e,t],r),i=e<=t?e:t,o=0;o4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");return me.engine.fromPixels(e,t)}}),$r=Je({multinomial_:function(e,t,n,r){void 0===r&&(r=!1);var a=Xe(e,"logits","multinomial"),i=a.size,o=a.rank;if(i<2)throw new Error("Error in multinomial: you need at least 2 outcomes, but got "+i+".");if(o>2)throw new Error("Rank of probabilities must be 1 or 2, but is "+o);n=n||Math.random();var s=1===o?a.as2D(1,-1):a,u=me.engine.runKernel(function(e){return e.multinomial(s,r,t,n)},{logits2D:s});return 1===o?u.as1D():u}}),Gr=Je({oneHot_:function(e,t,n,r){void 0===n&&(n=1),void 0===r&&(r=0);var a=Xe(e,"indices","oneHot","int32");if(d("int32"===a.dtype,"Indices must be of dtype `int32`"),t<2)throw new Error("Error in oneHot: depth must be >=2, but it is "+t);return me.engine.runKernel(function(e){return e.oneHot(a,t,n,r)},{$indices:a},function(e){return{$indices:function(){return _t(a)}}})}}),Hr=Je({pad_:function(e,t,n){void 0===n&&(n=0);var r=Xe(e,"x","pad");if(0===r.rank)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");var a=t.map(function(e){return e[0]});return me.engine.runKernel(function(e){return e.pad(r,t,n)},{$x:r},function(e){return{$x:function(){return e.slice(a,r.shape)}}})}}),Kr=Je({pad1d_:function(e,t,n){return void 0===n&&(n=0),d(2===t.length,"Invalid number of paddings. Must be length of 2."),Hr(e,[t],n)}}),Xr=Je({pad2d_:function(e,t,n){return void 0===n&&(n=0),d(2===t.length&&2===t[0].length&&2===t[1].length,"Invalid number of paddings. Must be length of 2 each."),Hr(e,t,n)}}),Yr=Je({pad3d_:function(e,t,n){return void 0===n&&(n=0),d(3===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length,"Invalid number of paddings. Must be length of 2 each."),Hr(e,t,n)}}),Jr=Je({pad4d_:function(e,t,n){return void 0===n&&(n=0),d(4===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length&&2===t[3].length,"Invalid number of paddings. Must be length of 2 each."),Hr(e,t,n)}}),Zr=Je({rand_:function(e,t,n){var r=b(e),a=null;if(null==n||"float32"===n)a=new Float32Array(r);else if("int32"===n)a=new Int32Array(r);else{if("bool"!==n)throw new Error("Unknown data type "+n);a=new Uint8Array(r)}for(var i=0;i=1+t.length,"input rank "+r.rank+" should be > than [blockShape] "+t.length),d(n.length===t.length,"paddings.shape[0] "+n.length+" must be equal to [blockShape] "+t.length),d(r.shape.reduce(function(e,r,a){return a>0&&a<=t.length?e&&(r+n[a-1][0]+n[a-1][1])%t[a-1]==0:e},!0),"input spatial dimensions "+r.shape.slice(1)+" with paddings "+n.toString()+" must be divisible by blockShapes "+t.toString()),me.engine.runKernel(function(e){return e.spaceToBatchND(r,t,n)},{$x:r},function(e){return{$x:function(){return e.batchToSpaceND(t,n)}}})}}),ra=Je({squeeze_:function(e,t){var n=Xe(e,"x","squeeze");return ta(n,k(n.shape,t).newShape)}}),aa=Je({stack_:function(e,t){void 0===t&&(t=0);var n=Ye(e,"tensors","stack");if(d(n.length>=1,"Pass at least one tensor to tf.stack"),1===n.length)return n[0].expandDims(t);var r=n[0].rank,a=n[0].shape,i=n[0].dtype;d(t<=r,"Axis must be <= rank of the tensor"),n.forEach(function(e){m(a,e.shape,"All tensors passed to stack must have matching shapes")}),n.forEach(function(e){d(i===e.dtype,"All tensors passed to stack must have matching dtypes")});var o=n.map(function(e){return e.expandDims(t)});return vr(o,t)}}),ia=Je({tile_:function(e,t){var n=Xe(e,"x","tile");return d(n.rank===t.length,"Error in transpose: rank of input "+n.rank+" must match length of reps "+t+"."),me.engine.runKernel(function(e){return e.tile(n,t)},{$x:n},function(e){return{$x:function(){var r=_t(n);if(1===n.rank)for(var a=0;a FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;\n } else if(v < -FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 255.0) / 255.0;\n }\n\n highp vec4 c = vec4(0,0,0,0);\n\n highp float e = floor(log2(av));\n highp float m = exp2(fract(log2(av))) - 1.0;\n\n c[2] = floor(128.0 * m);\n m -= c[2] / 128.0;\n c[1] = floor(32768.0 * m);\n m -= c[1] / 32768.0;\n c[0] = floor(8388608.0 * m);\n\n highp float ebias = e + 127.0;\n c[3] = floor(ebias / 2.0);\n ebias -= c[3] * 2.0;\n c[2] += floor(ebias) * 128.0;\n\n c[3] += 128.0 * step(0.0, -v);\n\n return c / 255.0;\n }\n\n void main() {\n float x = getAAtOutCoords();\n gl_FragColor = encode_float(x);\n }\n "}(a);this.compileAndRun(s,[o],i,null,!1);var u=this.texData.get(i.dataId),l=this.gpgpu.downloadByteEncodedFloatMatrixFromOutputTexture(u.texture,u.texShape[0],u.texShape[1]);return o.dispose(),i.dispose(),l},e.prototype.time=function(e){return l(this,void 0,void 0,function(){var t,n,r,a,i,o;return c(this,function(s){switch(s.label){case 0:return t=this.activeTimers,n=[],r=!1,null==this.programTimersStack?(this.programTimersStack=n,r=!0):this.activeTimers.push(n),this.activeTimers=n,e(),a=y(this.activeTimers),this.activeTimers=t,r&&(this.programTimersStack=null),[4,Promise.all(a).then(function(e){var t=0;return e.forEach(function(e){return t+=e}),t})];case 1:return i=s.sent(),o={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:i,wallMs:null},this.uploadWaitMs=0,this.downloadWaitMs=0,[2,o]}})})},e.prototype.memory=function(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU}},e.prototype.startTimer=function(){return me.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?this.gpgpu.beginQuery():{startMs:performance.now(),endMs:null}},e.prototype.endTimer=function(e){return me.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(this.gpgpu.endQuery(),e):(e.endMs=performance.now(),e)},e.prototype.getQueryTime=function(e){return l(this,void 0,void 0,function(){var t;return c(this,function(n){return me.get("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?[2,this.gpgpu.waitForQueryAndGetTime(e)]:[2,(t=e).endMs-t.startMs]})})},e.prototype.disposeData=function(e){if(!this.pendingDisposal.has(e))if(this.pendingRead.has(e))this.pendingDisposal.add(e);else if(this.texData.has(e)){var t=this.texData.get(e),n=t.texture,r=t.texShape,a=t.usage,i=t.complexTensors;null!=n&&this.releaseTexture(e,n,r,a),null!=i&&(i.real.dispose(),i.imag.dispose()),this.texData.delete(e)}},e.prototype.getTexture=function(e){return this.uploadToGPU(e),this.texData.get(e).texture},e.prototype.getGPGPUContext=function(){return this.gpgpu},e.prototype.getCanvas=function(){return this.canvas},e.prototype.complex=function(e,t){var n=Q.make(e.shape,{},"complex64");return this.texData.get(n.dataId).complexTensors={real:me.engine.keep(e.clone()),imag:me.engine.keep(t.clone())},n},e.prototype.real=function(e){return this.texData.get(e.dataId).complexTensors.real.clone()},e.prototype.imag=function(e){return this.texData.get(e.dataId).complexTensors.imag.clone()},e.prototype.slice=function(e,t,n){var r=new cr(n),a=r.getCustomSetupFunc(t);return this.compileAndRun(r,[e],null,a)},e.prototype.stridedSlice=function(e,t,n,r,a,i,o,s,u){var l=Ge(e.shape,t,n,r,a,i,o,s,u),c=l[0],f=l[1],p=l[2],h=f.filter(function(e,t){return-1===p.indexOf(t)});if(h.some(function(e){return 0===e}))return nt([],h);var d=new function(e,t,n,r){this.variableNames=["x"];var a=n.filter(function(e,t){return-1===r.indexOf(t)});this.outputShape=a;var i=n.length,o=qt(n.length),s=qt(a.length),u="";if(1===i)u="coords * strides + begin";else{var l=0;u=n.map(function(e,t){return-1===r.indexOf(t)?(l++,1===a.length?"coords * strides["+t+"] + begin["+t+"]":"coords["+(l-1)+"] * strides["+t+"] + begin["+t+"]"):"begin["+t+"]"}).join(",")}this.userCode="\n "+o+" begin = "+o+"("+e+");\n "+o+" strides = "+o+"("+t+");\n\n void main() {\n "+s+" coords = getOutputCoords();\n setOutput(getX("+u+"));\n }\n "}(c,r,f,p);return this.compileAndRun(d,[e])},e.prototype.reverse=function(e,t){var n=new function(e,t){this.variableNames=["x"];var n=e.length;if(n>4)throw new Error("WebGL backend: Reverse of rank-"+n+" tensor is not yet supported");if(this.outputShape=e,1!==n){var r=e.map(function(n,r){return function(n){return-1!==t.indexOf(n)&&1!==e[n]?e[n]+" - coords["+n+"] - 1":"coords["+n+"]"}(r)}).join(","),a=qt(n);this.userCode="\n void main() {\n "+a+" coords = getOutputCoords();\n setOutput(getX("+r+"));\n }\n "}else this.userCode="\n void main() {\n int coord = getOutputCoords();\n setOutput(getX("+e[0]+" - coord - 1));\n }\n "}(e.shape,t);return this.compileAndRun(n,[e])},e.prototype.concat2Tensors=function(e,t,n){var r=We([e.shape,t.shape],n),a=e.as2D(-1,b(e.shape.slice(n))),i=t.as2D(-1,b(t.shape.slice(n))),o=new function(e,t){this.variableNames=["A","B"],this.outputShape=[],this.outputShape=We([e,t],1),this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int yR = coords.x;\n int yC = coords.y;\n\n float value = 0.0;\n if (yC < "+e[1]+") {\n value = getA(yR, yC);\n } else {\n yC -= "+e[1]+";\n value = getB(yR, yC);\n }\n\n setOutput(value);\n }\n "}(a.shape,i.shape);return this.compileAndRun(o,[a,i]).reshape(r)},e.prototype.concat=function(e,t){if(1===e.length)return e[0];for(var n=e[0],r=1;r= 0 && idx <= "+s+") {\n float z = getX(b, r, c, idx);\n sum += z * z;\n }\n }\n float val = x * "+i+";\n setOutput(val);\n }\n "}(e.shape,t,n,r,a);return this.compileAndRun(i,[e])},e.prototype.LRNGrad=function(e,t,n,r,a,i,o){var s=new function(e,t,n,r,a){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=e,this.depth=e[3],this.depthRadius=t,this.bias=n,this.alpha=r,this.beta=a,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n\n float result = 0.0;\n for (int d = 0; d < "+this.depth+"; ++d) {\n int depthBegin = int(max(0.0, float(d - "+t+")));\n int depthEnd = int(min(float("+this.depth+"),\n float(d + "+t+" + 1)));\n\n const int MIN_DEPTH_BEGIN = 0;\n const int MAX_DEPTH_END = "+this.depth+";\n\n float norm = 0.0;\n for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) {\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd) {\n norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k);\n }\n else {\n break;\n }\n }\n\n norm = float("+r+") * norm + float("+n+");\n\n for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd){\n float dyi = -2.0 * float("+r+")\n * float("+a+")\n * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d)\n / norm;\n if (k == d) {\n dyi += pow(norm, -1.0 * "+a+");\n }\n if (k == coords[3]) {\n dyi *= getDy(b, r, c, d);\n result += dyi;\n }\n }\n else {\n break;\n }\n }\n }\n setOutput(result);\n }\n "}(t.shape,r,a,i,o);return this.compileAndRun(s,[t,n,e])},e.prototype.tile=function(e,t){var n=new function(e,t){this.variableNames=["A"];for(var n=new Array(e.length),r=0;r5)throw Error("Tile for rank "+t+" is not yet supported");if(1===t)return"imod(resRC, "+e[0]+")";for(var n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],r=[],a=0;a= end) {\n setOutput(float("+n+"));\n } else {\n setOutput(getX(outC - start));\n }\n }\n "}(e.shape,t,n);return this.compileAndRun(r,[e])},e.prototype.transpose=function(e,t){var n=new function(e,t){this.variableNames=["A"];for(var n=new Array(e.length),r=0;r6)throw Error("Transpose for rank "+t+" is not yet supported");for(var n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],r=new Array(t),a=0;a4)throw Error("Gather for rank "+n+" is not yet supported");if(1===n)return"int(getIndices(resRC))";for(var r=["resRC.x","resRC.y","resRC.z","resRC.w"],a=[],i=0;i 4 with a WebGL backend not implemented yet");var r=t.reduce(function(e,t){return e*t}),a=Pe(e.shape,t,r),i=Ae(a.length,t.length),o=Te(e.shape,t,r),s=Me(n,t.length),u=Re(o,n,t.length);return e.reshape(a).transpose(i).reshape(o).slice(s,u)},e.prototype.spaceToBatchND=function(e,t,n){d(e.rank<=4,"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");var r=t.reduce(function(e,t){return e*t}),a=[[0,0]];a.push.apply(a,n);for(var i=1+t.length;i= 1.0 && floatedReducedAllValue >= 1.0);\n ",p="bvec4"):"any"===t&&(o="0.0",f="\n bool reducedAnyValue = any(values);\n float floatedReducedAnyValue = float(reducedAnyValue);\n anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);\n ",p="bvec4");var h="";a%n>0&&(h="\n if (inIdx < 0 || inIdx >= "+a+") {\n return initializationValue;\n }\n "),this.userCode="\n const float initializationValue = "+o+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float getValue(int batch, int inIdx) {\n "+h+"\n return getX(batch, inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * "+n+";\n\n vec4 minMaxValue = vec4("+o+");\n float sumValue = 0.0;\n float allValue = 1.0;\n float anyValue = 0.0;\n\n for (int i = 0; i < "+l+"; i += 4) {\n int inIdx = inOffset + i;\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n "+f+"\n }\n\n int inIdx = inOffset + "+l+";\n if ("+(1===c)+") {\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+f+"\n } else if ("+(2===c)+") {\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n "+f+"\n } else if ("+(3===c)+") {\n "+p+" values = "+p+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n "+f+"\n }\n setOutput("+u+");\n }\n "}({windowSize:$e(a),inSize:a,batchSize:r},t),o=i.outputShape,s=o[0],u=o[1],l=this.makeOutputArray([s,u],n);return this.compileAndRun(i,[e],l),1===l.shape[1]?l:this.reduce(l,t,n)},e.prototype.argReduce=function(e,t,n){void 0===n&&(n=null);var r=e.shape[0],a=e.shape[1];null!=n&&(r=n.shape[0],a=n.shape[1]);var i=new function(e,t,n){this.variableNames=["A"];var r=e.windowSize,a=e.batchSize,i=e.inSize,o=Math.ceil(i/r);n||this.variableNames.push("bestIndicesA"),this.outputShape=[a,o];var s="max"===t?">":"<",u=n?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * "+r+";\n\n int bestIndex = 0;\n float bestValue = getA(batch, inOffset);\n\n for (int i = 0; i < "+r+"; i++) {\n int inIdx = "+u+";\n float candidate = getA(batch, inIdx);\n if (candidate "+s+" bestValue) {\n bestValue = candidate;\n bestIndex = inIdx;\n }\n }\n setOutput(float(bestIndex));\n }\n "}({windowSize:$e(a),inSize:a,batchSize:r},t,null==n),o=i.outputShape,s=o[0],u=o[1],l=this.makeOutputArray([s,u],"int32"),c=[e];return null!=n&&c.push(n),this.compileAndRun(i,c,l),1===l.shape[1]?l:this.argReduce(e,t,l)},e.prototype.sum=function(e,t){ze("sum",t,e.rank);var n=je(e.shape,t),r=n[0],a=b(n[1]),i=e.as2D(-1,a),o=St(e.dtype);return this.reduce(i,"sum",o).reshape(r)},e.prototype.unsortedSegmentSum=function(e,t,n){var r=0,a=Fe([r],e.rank),i=e;null!=a&&(i=e.transpose(a),r=Ue(1,e.rank)[0]);var o=function(e,t,n){for(var r=[],a=e.length,i=0;it||n===e){r=!0;break}n=D(e,n+1)}return n}(o,a),u=new function(e,t){this.variableNames=["x","segmentIds"];var n=e.windowSize,r=e.batchSize,a=e.inSize,i=e.numSegments,o=i*Math.ceil(a/n);this.outputShape=[r,o];var s=4*Math.floor(n/4),u=n%4,l="\n sumValue += dot(values, filter);\n ",c="";a%n>0&&(c="\n if (inIdx < 0 || inIdx >= "+a+") {\n return initializationValue;\n }\n ");var f="";a%n>0&&(f="\n if (inIdx < 0 || inIdx >= "+a+") {\n return -1.0;\n }\n "),this.userCode="\n const float initializationValue = 0.0;\n\n float getValue(int batch, int inIdx) {\n "+c+"\n return getX(batch, inIdx);\n }\n\n float getSegmentIdAtIndex(int inIdx) {\n "+f+"\n return getSegmentIds(inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = int(floor(float(outIdx) / float(\n "+i+")) * float("+n+"));\n int currentSeg = int(mod(float(outIdx), float("+i+")));\n\n float sumValue = 0.0;\n\n for (int i = 0; i < "+s+"; i += 4) {\n int inIdx = inOffset + i;\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n vec4 filter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0\n );\n\n "+l+"\n }\n\n int inIdx = inOffset + "+s+";\n if ("+(1===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n int inIdxSeg = int(getSegmentIdAtIndex(inIdx));\n\n vec4 filter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n 0,\n 0,\n 0\n );\n\n "+l+"\n } else if ("+(2===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n vec4 filter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n 0,\n 0\n );\n\n "+l+"\n } else if ("+(3===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n vec4 filter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n 0\n );\n\n "+l+"\n }\n setOutput(sumValue);\n }\n "}({windowSize:s,inSize:o,batchSize:i,numSegments:a},t),l=u.outputShape,c=l[0],f=l[1],p=this.makeOutputArray([c,f],r);return this.compileAndRun(u,[e,n],p),p.shape[1]===a?p:(n=dt(0,a).tile([o/s]),this.segOpCompute(p,t,n,r,a))},e.prototype.argMin=function(e,t){var n=[t];ze("argMin",n,e.rank);var r=je(e.shape,n),a=r[0],i=b(r[1]),o=e.as2D(-1,i);return this.argReduce(o,"min").reshape(a)},e.prototype.argMax=function(e,t){var n=[t];ze("argMax",n,e.rank);var r=je(e.shape,n),a=r[0],i=b(r[1]),o=e.as2D(-1,i);return this.argReduce(o,"max").reshape(a)},e.prototype.cumsum=function(e,t,n,r){if(t!==e.rank-1)throw new Error("WebGL cumsum shader expects an inner-most axis="+(e.rank-1)+" but got axis="+t);var a=new function(e,t,n){this.variableNames=["x"],this.outputShape=e;var r=e.length,a=e[e.length-1],i=n?"<":">";this.userCode="\n int getIndex(int i) {\n "+(n?"return "+a+" -i - 1;":"return i;")+"\n }\n\n void main() {\n "+qt(r)+" coords = getOutputCoords();\n int end = "+Ht(r,"coords")+";\n float val = 0.0;\n for (int i = "+a+" - 1; i >= 0; i -= 1) {\n int idx = getIndex(i);\n if (idx "+i+" end) {\n continue;\n }\n if (idx == end && "+t+") {\n continue;\n }\n "+Ht(r,"coords")+" = idx;\n val += getX("+function(e,t){if(1===e)return""+t;if(2===e)return t+".x, "+t+".y";if(3===e)return t+".x, "+t+".y, "+t+".z";if(4===e)return t+".x, "+t+".y, "+t+".z, "+t+".w";throw Error("Cumulative sum for rank "+e+" is not yet supported")}(r,"coords")+");\n }\n setOutput(val);\n }\n "}(e.shape,n,r);return this.compileAndRun(a,[e])},e.prototype.equal=function(e,t){var n=new zt("return float(a == b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.notEqual=function(e,t){var n=new zt("return float(a != b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.less=function(e,t){var n=new zt("return float(a < b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.lessEqual=function(e,t){var n=new zt("return float(a <= b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.greater=function(e,t){var n=new zt("return float(a > b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.greaterEqual=function(e,t){var n=new zt("return float(a >= b);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.logicalNot=function(e){var t=new gr(e.shape,"return float(!(x >= 1.0));");return this.compileAndRun(t,[e])},e.prototype.logicalAnd=function(e,t){var n=new zt("return float(a >= 1.0 && b >= 1.0);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.logicalOr=function(e,t){var n=new zt("return float(a >= 1.0 || b >= 1.0);",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"bool");return this.compileAndRun(n,[e,t],r)},e.prototype.select=function(e,t,n){var r=new function(e,t,n){var r,a;if(this.variableNames=["c","a","b"],this.outputShape=t,n>4)throw Error("Where for rank "+n+" is not yet supported");if(1===n)a="resRC",r="resRC";else{for(var i=["resRC.x","resRC.y","resRC.z","resRC.w"],o=[],s=[],u=0;u= 1.0) {\n setOutput(getA("+a+"));\n } else {\n setOutput(getB("+a+"));\n }\n }\n "}(e.rank,t.shape,t.rank),a=this.makeOutputArray(r.outputShape,Nt(t.dtype,n.dtype));return this.compileAndRun(r,[e,t,n],a)},e.prototype.where=function(e){Ce("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");var t=e.dataSync();return ua(e.shape,t)},e.prototype.topk=function(e,t,n){return Tt(e.dataSync(),e.shape,e.dtype,t)},e.prototype.min=function(e,t){ze("min",t,e.rank);var n=je(e.shape,t),r=n[0],a=b(n[1]),i=e.as2D(-1,a);return this.reduce(i,"min",i.dtype).reshape(r)},e.prototype.minimum=function(e,t){var n=new zt("\n if (isNaN(a)) return a;\n if (isNaN(b)) return b;\n\n return min(a, b);\n",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.mod=function(e,t){var n=new zt("if (b == 0.0) return NAN;\n return mod(a, b);",e.shape,t.shape),r=n.getCustomSetupFunc();return this.compileAndRun(n,[e,t],null,r)},e.prototype.max=function(e,t){ze("max",t,e.rank);var n=je(e.shape,t),r=n[0],a=b(n[1]),i=e.as2D(-1,a);return this.reduce(i,"max",i.dtype).reshape(r)},e.prototype.maximum=function(e,t){var n=new zt("\n if (isNaN(a)) return a;\n if (isNaN(b)) return b;\n\n return max(a, b);\n",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.all=function(e,t){ze("all",t,e.rank);var n=je(e.shape,t),r=n[0],a=b(n[1]),i=e.as2D(-1,a);return this.reduce(i,"all",i.dtype).reshape(r)},e.prototype.any=function(e,t){ze("any",t,e.rank);var n=je(e.shape,t),r=n[0],a=b(n[1]),i=e.as2D(-1,a);return this.reduce(i,"any",i.dtype).reshape(r)},e.prototype.squaredDifference=function(e,t){var n=new zt("return (a - b) * (a - b);",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.realDivide=function(e,t){var n=new zt("if (a == b) return 1.0;\n return a / b;",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"float32");return this.compileAndRun(n,[e,t],r)},e.prototype.floorDiv=function(e,t){var n=new zt("\n float resultSign = sign(a) * sign(b);\n int ia = round(a);\n int ib = round(b);\n int result = ia / ib;\n int amodb = ia - ib * result;\n\n if (resultSign < 0.0 && amodb != 0) {\n result -= 1;\n }\n return float(result);\n",e.shape,t.shape),r=this.makeOutputArray(n.outputShape,"int32");return this.compileAndRun(n,[e,t],r)},e.prototype.add=function(e,t){if("complex64"===e.dtype&&"complex64"===t.dtype)return this.complexSeparableBinaryOp(e,t,Lt);var n=new zt(Lt,e.shape,t.shape),r=this.makeOutputArray(n.outputShape,Nt(e.dtype,t.dtype));return this.compileAndRun(n,[e,t],r)},e.prototype.complexSeparableBinaryOp=function(e,t,n){var r=this,a=this.texData.get(e.dataId),i=this.texData.get(t.dataId),o=[[a.complexTensors.real,i.complexTensors.real],[a.complexTensors.imag,i.complexTensors.imag]].map(function(a){var i=a[0],o=a[1],s=new zt(n,e.shape,t.shape),u=r.makeOutputArray(s.outputShape,Nt(i.dtype,o.dtype)),l=r.makeComplexComponentTensorHandle(e,i),c=r.makeComplexComponentTensorHandle(t,o);return r.compileAndRun(s,[l,c],u)}),s=o[0],u=o[1],l=this.complex(s,u);return s.dispose(),u.dispose(),l},e.prototype.makeComplexComponentTensorHandle=function(e,t){return{dataId:t.dataId,dtype:t.dtype,shape:e.shape}},e.prototype.addN=function(e){for(var t=e[0],n=1;n 0.5) {\n return ceil(x);\n } else {\n if (mod(base, 2.0) == 0.0) {\n return base;\n } else {\n return base + 1.0;\n }\n }\n");return this.compileAndRun(t,[e])},e.prototype.exp=function(e){var t=new gr(e.shape,"return exp(x);");return this.compileAndRun(t,[e])},e.prototype.expm1=function(e){var t=new gr(e.shape,"return exp(x) - 1.0;");return this.compileAndRun(t,[e])},e.prototype.log=function(e){var t=new gr(e.shape,"if (x < 0.0) return NAN;\n return log(x);"),n=t.getCustomSetupFunc();return this.compileAndRun(t,[e],null,n)},e.prototype.log1p=function(e){var t=new gr(e.shape,"return log(1.0 + x);");return this.compileAndRun(t,[e])},e.prototype.sqrt=function(e){var t=new gr(e.shape,"return sqrt(x);");return this.compileAndRun(t,[e])},e.prototype.rsqrt=function(e){var t=new gr(e.shape,"return inversesqrt(x);");return this.compileAndRun(t,[e])},e.prototype.square=function(e){var t=new gr(e.shape,"return x * x;");return this.compileAndRun(t,[e])},e.prototype.reciprocal=function(e){var t=new gr(e.shape,"return 1.0 / x;");return this.compileAndRun(t,[e])},e.prototype.relu=function(e){var t=new gr(e.shape,"if (isNaN(x)) return x;\n return (x < 0.0) ? 0.0 : x;\n");return this.compileAndRun(t,[e])},e.prototype.elu=function(e){var t=new gr(e.shape,"return (x >= 0.0) ? x : (exp(x) - 1.0);");return this.compileAndRun(t,[e])},e.prototype.eluDer=function(e,t){var n=new zt("return (b >= 1.0) ? a : a * (b + 1.0);",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.selu=function(e){var t=new gr(e.shape,"\n // Stable and Attracting Fixed Point (0, 1) for Normalized Weights.\n // see: https://arxiv.org/abs/1706.02515\n float scaleAlpha = 1.7580993408473768;\n float scale = 1.0507009873554805;\n return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);\n");return this.compileAndRun(t,[e])},e.prototype.int=function(e){var t=new gr(e.shape,"return float(int(x));"),n=this.makeOutputArray(t.outputShape,"int32");return this.compileAndRun(t,[e],n)},e.prototype.clip=function(e,t,n){var r=new function(e,t,n){this.variableNames=["A"],this.outputShape=e,this.userCode="\n void main() {\n float value = getAAtOutCoords();\n if (isNaN(value)) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, float("+t+"), float("+n+")));\n }\n "}(e.shape,t,n);return this.compileAndRun(r,[e])},e.prototype.abs=function(e){var t=new gr(e.shape,"return abs(x);");return this.compileAndRun(t,[e])},e.prototype.sigmoid=function(e){var t=new gr(e.shape,"return 1.0 / (1.0 + exp(-1.0 * x));");return this.compileAndRun(t,[e])},e.prototype.softplus=function(e){var t=new gr(e.shape,"\n float epsilon = 1.1920928955078125e-7;\n float threshold = log(epsilon) + 2.0;\n\n bool too_large = x > -threshold;\n bool too_small = x < threshold;\n\n float result;\n float exp_x = exp(x);\n\n if (too_large){\n result = x;\n }\n else if (too_small){\n result = exp_x;\n }\n else{\n result = log(exp_x + 1.0);\n }\n return result;\n");return this.compileAndRun(t,[e])},e.prototype.sin=function(e){var t=new gr(e.shape,"if (isNaN(x)) return x;\n return sin(x);\n");return this.compileAndRun(t,[e])},e.prototype.cos=function(e){var t=new gr(e.shape,"if (isNaN(x)) return x;\n return cos(x);\n");return this.compileAndRun(t,[e])},e.prototype.tan=function(e){var t=new gr(e.shape,"return tan(x);");return this.compileAndRun(t,[e])},e.prototype.asin=function(e){var t=new gr(e.shape,"return asin(x);");return this.compileAndRun(t,[e])},e.prototype.acos=function(e){var t=new gr(e.shape,"return acos(x);");return this.compileAndRun(t,[e])},e.prototype.atan=function(e){var t=new gr(e.shape,"if (isNaN(x)) return x;\n return atan(x);\n");return this.compileAndRun(t,[e])},e.prototype.atan2=function(e,t){var n=new zt("\n if (isNaN(a)) return a;\n if (isNaN(b)) return b;\n\n return atan(a, b);\n",e.shape,t.shape);return this.compileAndRun(n,[e,t])},e.prototype.sinh=function(e){var t=new gr(e.shape,"\n float e2x = exp(x);\n return (e2x - 1.0 / e2x) / 2.0;\n");return this.compileAndRun(t,[e])},e.prototype.cosh=function(e){var t=new gr(e.shape,"\n float e2x = exp(-x);\n return (e2x + 1.0 / e2x) / 2.0;\n");return this.compileAndRun(t,[e])},e.prototype.tanh=function(e){var t=new gr(e.shape,"\n float e2x = exp(-2.0 * abs(x));\n return sign(x) * (1.0 - e2x) / (1.0 + e2x);\n");return this.compileAndRun(t,[e])},e.prototype.asinh=function(e){var t=new gr(e.shape,"return log(x + sqrt(x * x + 1.0));");return this.compileAndRun(t,[e])},e.prototype.acosh=function(e){var t=new gr(e.shape,"if (isNaN(x)) return x;\n if (x < 1.0) return NAN;\n return log(x + sqrt(x * x - 1.0));"),n=t.getCustomSetupFunc();return this.compileAndRun(t,[e],null,n)},e.prototype.atanh=function(e){var t=new gr(e.shape,"if (isNaN(x)) return x;\n if ((x < -1.0) || (x > 1.0)) return NAN;\n return (log(1.0 + x) - log(1.0 - x)) / 2.0;"),n=t.getCustomSetupFunc();return this.compileAndRun(t,[e],null,n)},e.prototype.erf=function(e){var t=new gr(e.shape,'\n // Error function is calculated approximately with elementary function.\n // See "Handbook of Mathematical Functions with Formulas,\n // Graphs, and Mathematical Tables", Abramowitz and Stegun.\n float p = 0.3275911;\n float a1 = 0.254829592;\n float a2 = -0.284496736;\n float a3 = 1.421413741;\n float a4 = -1.453152027;\n float a5 = 1.061405429;\n\n float t = 1.0 / (1.0 + p * x);\n return 1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x);\n');return this.compileAndRun(t,[e])},e.prototype.step=function(e,t){var n=new gr(e.shape,function(e){return void 0===e&&(e=0),yr+"\n return x > 0.0 ? 1.0 : float("+e+");\n "}(t));return this.compileAndRun(n,[e])},e.prototype.conv2d=function(e,t,n){var r=new function(e){this.variableNames=["x","W"],this.outputShape=e.outShape;var t=e.padInfo.top,n=e.padInfo.left,r=e.strideHeight,a=e.strideWidth,i=e.dilationHeight,o=e.dilationWidth,s=e.filterHeight,u=e.filterWidth,l=4*Math.floor(e.inChannels/4),c=e.inChannels%4;this.userCode="\n const ivec2 strides = ivec2("+r+", "+a+");\n const ivec2 pads = ivec2("+t+", "+n+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d2 = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+s+"; wR++) {\n int xR = xRCorner + wR * "+i+";\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+u+"; wC++) {\n int xC = xCCorner + wC * "+o+";\n\n if (xC < 0 || xC >= "+e.inWidth+") {\n continue;\n }\n\n for (int d1 = 0; d1 < "+l+"; d1 += 4) {\n vec4 xValues = vec4(\n getX(batch, xR, xC, d1),\n getX(batch, xR, xC, d1 + 1),\n getX(batch, xR, xC, d1 + 2),\n getX(batch, xR, xC, d1 + 3)\n );\n vec4 wValues = vec4(\n getW(wR, wC, d1, d2),\n getW(wR, wC, d1 + 1, d2),\n getW(wR, wC, d1 + 2, d2),\n getW(wR, wC, d1 + 3, d2)\n );\n\n dotProd += dot(xValues, wValues);\n }\n\n if ("+(1===c)+") {\n dotProd +=\n getX(batch, xR, xC, "+l+") *\n getW(wR, wC, "+l+", d2);\n } else if ("+(2===c)+") {\n vec2 xValues = vec2(\n getX(batch, xR, xC, "+l+"),\n getX(batch, xR, xC, "+l+" + 1)\n );\n vec2 wValues = vec2(\n getW(wR, wC, "+l+", d2),\n getW(wR, wC, "+l+" + 1, d2)\n );\n dotProd += dot(xValues, wValues);\n } else if ("+(3===c)+") {\n vec3 xValues = vec3(\n getX(batch, xR, xC, "+l+"),\n getX(batch, xR, xC, "+l+" + 1),\n getX(batch, xR, xC, "+l+" + 2)\n );\n vec3 wValues = vec3(\n getW(wR, wC, "+l+", d2),\n getW(wR, wC, "+l+" + 1, d2),\n getW(wR, wC, "+l+" + 2, d2)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.conv2dDerInput=function(e,t,n){var r=new function(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;var t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,i=t-1-e.padInfo.top,o=n-1-e.padInfo.left;this.userCode="\n const ivec2 pads = ivec2("+i+", "+o+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n\n ivec2 dyCorner = coords.yz - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+t+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+e.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+t+" - 1 - wR;\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+a+".0;\n\n if (dyC < 0.0 || dyC >= "+e.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+n+" - 1 - wC;\n\n for (int d2 = 0; d2 < "+e.outChannels+"; d2++) {\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.conv2dDerFilter=function(e,t,n){var r=new function(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;var t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int d2 = coords.w;\n\n // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int b = 0; b < "+e.batchSize+"; b++) {\n for (int yR = 0; yR < "+e.outHeight+"; yR++) {\n int xR = wR + yR * "+t+" - "+r+";\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+e.outWidth+"; yC++) {\n int xC = wC + yC * "+n+" - "+a+";\n\n if (xC < 0 || xC >= "+e.inWidth+") {\n continue;\n }\n\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.depthwiseConv2D=function(e,t,n){var r=new function(e){this.variableNames=["x","W"],this.outputShape=e.outShape;var t=e.inHeight,n=e.inWidth,r=e.padInfo.top,a=e.padInfo.left,i=e.strideHeight,o=e.strideWidth,s=e.dilationHeight,u=e.dilationWidth,l=e.filterHeight,c=e.filterWidth,f=e.outChannels/e.inChannels;this.userCode="\n const ivec2 strides = ivec2("+i+", "+o+");\n const ivec2 pads = ivec2("+r+", "+a+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n ivec2 xRCCorner = coords.yz * strides - pads;\n int d2 = coords.w;\n int d1 = d2 / "+f+";\n int q = d2 - d1 * "+f+";\n\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n // TODO(dsmilkov): Flatten the two for loops and vec4 the operations.\n for (int wR = 0; wR < "+l+"; wR++) {\n int xR = xRCorner + wR * "+s+";\n\n if (xR < 0 || xR >= "+t+") {\n continue;\n }\n\n for (int wC = 0; wC < "+c+"; wC++) {\n int xC = xCCorner + wC * "+u+";\n\n if (xC < 0 || xC >= "+n+") {\n continue;\n }\n\n float xVal = getX(batch, xR, xC, d1);\n float wVal = getW(wR, wC, d1, q);\n dotProd += xVal * wVal;\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.depthwiseConv2DDerInput=function(e,t,n){var r=new function(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;var t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,i=t-1-e.padInfo.top,o=n-1-e.padInfo.left,s=e.outChannels/e.inChannels;this.userCode="\n const ivec2 pads = ivec2("+i+", "+o+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n ivec2 dyCorner = coords.yz - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n float dotProd = 0.0;\n\n for (int wR = 0; wR < "+t+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+e.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+t+" - 1 - wR;\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+a+".0;\n\n if (dyC < 0.0 || dyC >= "+e.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+n+" - 1 - wC;\n\n // TODO: Vec4 over the channelMul\n for (int dm = 0; dm < "+s+"; dm++) {\n int d2 = d1 * "+s+" + dm;\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, dm);\n dotProd += xValue * wValue;\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.depthwiseConv2DDerFilter=function(e,t,n){var r=new function(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;var t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left,i=e.outChannels/e.inChannels;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int dm = coords.w;\n int d2 = d1 * "+i+" + dm;\n\n float dotProd = 0.0;\n\n // TODO: Vec4 over the batch size\n for (int b = 0; b < "+e.batchSize+"; b++) {\n for (int yR = 0; yR < "+e.outHeight+"; yR++) {\n int xR = wR + yR * "+t+" - "+r+";\n\n if (xR < 0 || xR >= "+e.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+e.outWidth+"; yC++) {\n int xC = wC + yC * "+n+" - "+a+";\n\n if (xC < 0 || xC >= "+e.inWidth+") {\n continue;\n }\n\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n setOutput(dotProd);\n }\n "}(n);return this.compileAndRun(r,[e,t])},e.prototype.maxPool=function(e,t){var n=new lr(t,"max",!1),r=this.makeOutputArray(n.outputShape,e.dtype);return this.compileAndRun(n,[e],r)},e.prototype.avgPool=function(e,t){var n=new lr(t,"avg",!1),r=this.makeOutputArray(n.outputShape,"float32");return this.compileAndRun(n,[e],r)},e.prototype.maxPoolBackprop=function(e,t,n,r){var a=new lr(r,"max",!0),i=this.compileAndRun(a,[t]),o=new function(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;var t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,i=t-1-e.padInfo.top,o=n-1-e.padInfo.left,s=t*n-1;this.userCode="\n const ivec2 pads = ivec2("+i+", "+o+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+t+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+e.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+a+".0;\n\n if (dyC < 0.0 || dyC >= "+e.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n int maxPosValue = "+s+" - int(getMaxPos(b, idyR, idyC, d));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue = wR * "+n+" + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n setOutput(dotProd);\n }\n "}(r),s=this.makeOutputArray(o.outputShape,t.dtype),u=this.compileAndRun(o,[e,i],s);return i.dispose(),u},e.prototype.avgPoolBackprop=function(e,t,n){var r=new function(e){this.variableNames=["dy"],this.outputShape=e.inShape;var t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,i=t-1-e.padInfo.top,o=n-1-e.padInfo.left,s=1/(t*n);this.userCode="\n const ivec2 pads = ivec2("+i+", "+o+");\n const float avgMultiplier = float("+s+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+t+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+e.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+a+".0;\n\n if (dyC < 0.0 || dyC >= "+e.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n setOutput(dotProd);\n }\n "}(n),a=this.makeOutputArray(r.outputShape,t.dtype);return this.compileAndRun(r,[e],a)},e.prototype.cast=function(e,t){return Ot(e,t,this)},e.prototype.reshape=function(e,t){return kt(e,t)},e.prototype.resizeBilinear=function(e,t,n,r){var a=new function(e,t,n,r){this.variableNames=["A"],this.outputShape=[];var a=e[0],i=e[1],o=e[2],s=e[3];this.outputShape=[a,t,n,s];var u=[r&&t>1?i-1:i,r&&n>1?o-1:o],l=[r&&t>1?t-1:t,r&&n>1?n-1:n];this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n "+u[0]/l[0]+",\n "+u[1]/l[1]+");\n const vec2 inputShapeRC = vec2("+i+".0, "+o+".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the four integer indices.\n ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);\n ivec2 sourceCeilRC = ivec2(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d);\n float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d);\n float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d);\n float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n float top = topLeft + (topRight - topLeft) * fracRC.y;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n float newValue = top + (bottom - top) * fracRC.x;\n\n setOutput(newValue);\n }\n "}(e.shape,t,n,r);return this.compileAndRun(a,[e])},e.prototype.resizeBilinearBackprop=function(e,t,n){var r=new function(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t.shape;var r=t.shape,a=r[1],i=r[2],o=e.shape,s=o[1],u=o[2],l=[n&&s>1?a-1:a,n&&u>1?i-1:i],c=[n&&s>1?s-1:s,n&&u>1?u-1:u],f=l[0]/c[0],p=l[1]/c[1],h=1/f,d=1/p,m=2*Math.ceil(h)+2,g=2*Math.ceil(d)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float("+f+");\n const float widthScale = float("+p+");\n\n const float invHeightScale = float("+h+");\n const float invWidthScale = float("+d+");\n\n const int winHeight = int("+m+");\n const int winWidth = int("+g+");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(startRLerp - float(winHeight / 2));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(startCLerp - float(winWidth / 2));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= "+s+") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= "+u+") {\n continue;\n }\n\n float dxR = float(dyR) * heightScale;\n int topDxRIndex = int(floor(dxR));\n int bottomDxRIndex = int(min(ceil(dxR), "+(a-1)+".0));\n float dxRLerp = dxR - float(topDxRIndex);\n float inverseDxRLerp = 1.0 - dxRLerp;\n\n float dxC = float(dyC) * widthScale;\n int leftDxCIndex = int(floor(dxC));\n int rightDxCIndex = int(min(ceil(dxC), "+(i-1)+".0));\n float dxCLerp = dxC - float(leftDxCIndex);\n float inverseDxCLerp = 1.0 - dxCLerp;\n\n if (r == topDxRIndex && c == leftDxCIndex) {\n // topLeft\n accumulator +=\n getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp;\n }\n\n if (r == topDxRIndex && c == rightDxCIndex) {\n // topRight\n accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp;\n }\n\n if (r == bottomDxRIndex && c == leftDxCIndex) {\n // bottomLeft\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp;\n }\n\n if (r == bottomDxRIndex && c == rightDxCIndex) {\n // bottomRight\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp;\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n "}(e,t,n);return this.compileAndRun(r,[e])},e.prototype.resizeNearestNeighbor=function(e,t,n,r){var a=new function(e,t,n,r){this.variableNames=["A"],this.outputShape=[];var a=e[0],i=e[1],o=e[2],s=e[3];this.outputShape=[a,t,n,s];var u=[r&&t>1?i-1:i,r&&n>1?o-1:o],l=[r&&t>1?t-1:t,r&&n>1?n-1:n],c=r?"0.5":"0.0";this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n "+u[0]/l[0]+",\n "+u[1]/l[1]+");\n const vec2 inputShapeRC = vec2("+i+".0, "+o+".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestRC = ivec2(\n min(inputShapeRC - 1.0, floor(sourceFracIndexRC + "+c+")));\n\n float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);\n\n setOutput(newValue);\n }\n "}(e.shape,t,n,r);return this.compileAndRun(a,[e])},e.prototype.resizeNearestNeighborBackprop=function(e,t,n){var r=new function(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t.shape;var r=t.shape,a=r[1],i=r[2],o=e.shape,s=o[1],u=o[2],l=[n&&s>1?a-1:a,n&&u>1?i-1:i],c=[n&&s>1?s-1:s,n&&u>1?u-1:u],f=l[0]/c[0],p=l[1]/c[1],h=1/f,d=1/p,m=2*Math.ceil(h)+2,g=2*Math.ceil(d)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float("+f+");\n const float widthScale = float("+p+");\n\n const float invHeightScale = float("+h+");\n const float invWidthScale = float("+d+");\n\n const int winHeight = int("+m+");\n const int winWidth = int("+g+");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(floor(startRLerp - float(winHeight / 2)));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(floor(startCLerp - float(winWidth / 2)));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= "+s+") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= "+u+") {\n continue;\n }\n\n float sourceFracRow =\n float("+l[0]+") *\n (float(dyR) / float("+c[0]+"));\n\n float sourceFracCol =\n float("+l[1]+") *\n (float(dyC) / float("+c[1]+"));\n\n int sourceNearestRow = int(min(\n float(int("+a+") - 1),\n "+n+" ? float(round(sourceFracRow)) :\n float(floor(sourceFracRow))));\n\n int sourceNearestCol = int(min(\n float(int("+i+") - 1),\n "+n+" ? float(round(sourceFracCol)) :\n float(floor(sourceFracCol))));\n\n if (r == sourceNearestRow && c == sourceNearestCol) {\n accumulator += getDy(b, dyR, dyC, d);\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n "}(e,t,n);return this.compileAndRun(r,[e])},e.prototype.multinomial=function(e,t,n,r){var a=t?e:Ze(e),i=a.shape[0],o=a.shape[1],s=new sr(i,o,n),u=this.makeOutputArray(s.outputShape,"int32"),l=s.getCustomSetupFunc(r);return this.compileAndRun(s,[a],u,l)},e.prototype.oneHot=function(e,t,n,r){var a=new function(e,t,n,r){this.variableNames=["indices"],this.outputShape=[e,t],this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int index = round(getIndices(coords.x));\n setOutput(mix(float("+r+"), float("+n+"),\n float(index == coords.y)));\n }\n "}(e.size,t,n,r);return this.compileAndRun(a,[e])},e.prototype.nonMaxSuppression=function(e,t,n,r,a){return Ce("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead"),Ct(e.dataSync(),t.dataSync(),n,r,a)},e.prototype.cropAndResize=function(e,t,n,r,a,i){var o=new function(e,t,n,r,a){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];var i=e[0],o=e[1],s=e[2],u=e[3],l=t[0],c=n[0],f=n[1];this.outputShape=[l,c,f,u];var p="bilinear"===r?1:0,h=[o-1+".0",s-1+".0"],d=h[0],m=h[1],g=c>1?[""+(o-1)/(c-1),"(y2-y1) * height_ratio","y1*"+d+" + float(y)*(height_scale)"]:["0.0","0.0","0.5 * (y1+y2) * "+d],y=g[0],v=g[1],b=g[2],w=f>1?[""+(s-1)/(f-1),"(x2-x1) * width_ratio","x1*"+m+" + float(x)*(width_scale)"]:["0.0","0.0","0.5 * (x1+x2) * "+m],x=w[0],_=w[1],E=w[2];this.userCode="\n const float height_ratio = float("+y+");\n const float width_ratio = float("+x+");\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int y = coords[1];\n int x = coords[2];\n int d = coords[3];\n\n // get box vals\n float y1 = getBoxes(b,0);\n float x1 = getBoxes(b,1);\n float y2 = getBoxes(b,2);\n float x2 = getBoxes(b,3);\n\n // get image in batch index\n int bInd = round(getBoxInd(b));\n if(bInd < 0 || bInd >= "+i+") {\n return;\n }\n\n float height_scale = "+v+";\n float width_scale = "+_+";\n\n float in_y = "+b+";\n if( in_y < 0.0 || in_y > "+d+" ) {\n setOutput(float("+a+"));\n return;\n }\n float in_x = "+E+";\n if( in_x < 0.0 || in_x > "+m+" ) {\n setOutput(float("+a+"));\n return;\n }\n\n vec2 sourceFracIndexRC = vec2(in_y,in_x);\n if("+p+" == 1) {\n // Compute the four integer indices.\n ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);\n ivec2 sourceCeilRC = ivec2(ceil(sourceFracIndexRC));\n\n float topLeft = getImage(b, sourceFloorRC.x, sourceFloorRC.y, d);\n float bottomLeft = getImage(b, sourceCeilRC.x, sourceFloorRC.y, d);\n float topRight = getImage(b, sourceFloorRC.x, sourceCeilRC.y, d);\n float bottomRight = getImage(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n float top = topLeft + (topRight - topLeft) * fracRC.y;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n float newValue = top + (bottom - top) * fracRC.x;\n setOutput(newValue);\n } else {\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestRC = ivec2(floor(\n sourceFracIndexRC + vec2(0.5,0.5)));\n float newValue = getImage(b, sourceNearestRC.x, sourceNearestRC.y, d);\n setOutput(newValue);\n }\n }\n "}(e.shape,t.shape,r,a,i);return this.compileAndRun(o,[e,t,n])},e.prototype.depthToSpace=function(e,t,n){d(t>1,"blockSize should be > 1 for depthToSpace, but was: "+t);var r=e.shape[0],a=("NHWC"===n?e.shape[1]:e.shape[2])*t,i=("NHWC"===n?e.shape[2]:e.shape[3])*t,o=("NHWC"===n?e.shape[3]:e.shape[1])/(t*t),s=new Yt("NHWC"===n?[r,a,i,o]:[r,o,a,i],t,n);return this.compileAndRun(s,[e])},e.prototype.split=function(e,t,n){return At(e,t,n)},e.prototype.makeOutputArray=function(e,t){return Q.make(e,{},t)},e.prototype.compileAndRun=function(e,t,n,r,a){var i=this;if(void 0===a&&(a=!0),null==n&&(n=this.makeOutputArray(e.outputShape,t[0].dtype)),0===n.size)return this.texData.get(n.dataId).values=I(n.dtype,0),n;var o=t.map(function(e){if("complex64"===e.dtype)throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");var t=i.texData.get(e.dataId);return null==t.texture&&b(e.shape)<=32?{shape:e.shape,texData:null,isUniform:!0,uniformValues:i.readSync(e.dataId)}:(i.uploadToGPU(e.dataId),{shape:e.shape,texData:t,isUniform:!1})});this.uploadToGPU(n.dataId);var s,u={shape:n.shape,texData:this.texData.get(n.dataId),isUniform:!1},l=function(e,t,n){var r="";o.concat(n).forEach(function(e){r+=e.shape+"_"+(e.isUniform?"uniform":e.texData.texShape)});var a=e.userCode,i=(!0===e.supportsBroadcasting).toString();return e.constructor.name+"_"+i+"_"+r+"_"+a}(e,0,u),c=this.getAndSaveBinary(l,function(){return function(e,t,n,r){for(var a=t.userCode,i=n.map(function(e,n){var r={logicalShape:e.shape,texShape:e.isUniform?null:e.texData.texShape,isUniform:e.isUniform,isPacked:!e.isUniform&&e.texData.usage===Kt.PACK};return{name:t.variableNames[n],shapeInfo:r}}),o=i.map(function(e){return e.shapeInfo}),s={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.usage===Kt.PACK},u=Ft(i,s,a,!0===t.supportsBroadcasting),l=e.createProgram(u),c={},f=0;fthis.NUM_BYTES_BEFORE_PAGING)for(var p=this.numBytesInGPU-this.NUM_BYTES_BEFORE_PAGING;p>0&&this.lruDataGPU.length>0;){var h=this.lruDataGPU.shift(),d=this.texData.get(h),m=d.shape,g=d.dtype;p-=this.computeBytes(m,g),this.read(h)}return f&&(s=this.endTimer(s),this.activeTimers.push(this.getQueryTime(s))),n},e.prototype.getAndSaveBinary=function(e,t){return e in this.binaryCache||(this.binaryCache[e]=t()),this.binaryCache[e]},e.prototype.getTextureManager=function(){return this.textureManager},e.prototype.dispose=function(){if(!this.disposed){for(var e in this.binaryCache)this.gpgpu.deleteProgram(this.binaryCache[e].webGLProgram);this.textureManager.dispose(),this.canvas.remove(),null!=this.fromPixelsCanvas&&this.fromPixelsCanvas.remove(),this.gpgpuCreatedLocally&&this.gpgpu.dispose(),this.disposed=!0}},e.prototype.floatPrecision=function(){var e=this;return Ne(function(){return e.abs(rt(1e-8)).get()>0?32:16})},e.prototype.throwIfNoData=function(e){if(!this.texData.has(e))throw new Error("WebGL backend: No data found for this tensor. Did you change your backend in the middle of the program? New backends can't use Tensors created with previous backends")},e.prototype.uploadToGPU=function(e){this.throwIfNoData(e);var t=this.texData.get(e),n=t.shape,r=t.values,a=t.texture,i=(t.dtype,t.usage);if(null==a){var o,s=null!=this.activeTimers;s&&(o=performance.now());var u=jn(this.gpgpu.gl,n);t.texShape=u;var l=this.acquireTexture(e,u,i);t.texture=l,null!=r&&(this.gpgpu.uploadMatrixToTexture(l,u[0],u[1],r instanceof Float32Array?r:new Float32Array(r)),t.values=null,s&&(this.uploadWaitMs+=performance.now()-o))}else this.lruDataGPU.indexOf(e)>=0&&(this.lruDataGPU.splice(this.lruDataGPU.indexOf(e),1),this.lruDataGPU.push(e))},e.prototype.cacheOnCPU=function(e,t){var n=this.delayedStorage,r=this.texData.get(e),a=r.texture,i=r.texShape,o=r.dtype,s=r.usage;n&&null!=a&&(this.releaseTexture(e,a,i,s),r.texture=null,r.texShape=null),r.usage=Kt.UPLOAD,null!=t&&(r.values=function(e,t){if("float32"===t||"complex64"===t)return e;if("int32"===t||"bool"===t){for(var n="int32"===t?new Int32Array(e.length):new Uint8Array(e.length),r=0;r=0&&this.lruDataGPU.splice(s,1),this.numBytesInGPU-=this.computeBytes(i,o),this.textureManager.releaseTexture(t,n,r)},e.prototype.acquireTexture=function(e,t,n){var r=this.texData.get(e),a=r.shape,i=r.dtype;return this.lruDataGPU.push(e),this.numBytesInGPU+=this.computeBytes(a,i),this.textureManager.acquireTexture(t,n)},e.prototype.computeBytes=function(e,t){return b(e)*M(t)},e}();me.get("IS_BROWSER")&&me.registerBackend("webgl",function(){return new ca},2,Z);var fa=Je({abs_:function(e){var t=Xe(e,"x","abs");return me.engine.runKernel(function(e){return e.abs(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.toFloat().step(-1))}}})}}),pa=Je({acos_:function(e){var t=Xe(e,"x","acos");return me.engine.runKernel(function(e){return e.acos(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(rt(1).sub(t.toFloat().square()).sqrt()).neg()}}})}}),ha=Je({acosh_:function(e){var t=Xe(e,"x","acosh");return me.engine.runKernel(function(e){return e.acosh(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.toFloat().square().sub(rt(1)).sqrt())}}})}}),da=Je({asin_:function(e){var t=Xe(e,"x","asin");return me.engine.runKernel(function(e){return e.asin(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(rt(1).sub(t.toFloat().square()).sqrt())}}})}}),ma=Je({asinh_:function(e){var t=Xe(e,"x","asinh");return me.engine.runKernel(function(e){return e.asinh(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(rt(1).add(t.toFloat().square()).sqrt())}}})}}),ga=Je({atan_:function(e){var t=Xe(e,"x","atan");return me.engine.runKernel(function(e){return e.atan(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(rt(1).add(t.toFloat().square()))}}})}}),ya=Je({atanh_:function(e){var t=Xe(e,"x","atanh");return me.engine.runKernel(function(e){return e.atanh(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(rt(1).sub(t.toFloat().square()))}}})}}),va=Je({ceil_:function(e){var t=Xe(e,"x","ceil");return me.engine.runKernel(function(e){return e.ceil(t)},{$x:t},function(e){return{$x:function(){return _t(e)}}})}}),ba=Je({clipByValue_:function(e,t,n){var r=Xe(e,"x","clipByValue");return d(t<=n,"Error in clip: min ("+t+") must be less than or equal to max ("+n+")."),me.engine.runKernel(function(e){return e.clip(r,t,n)},{$x:r},function(e){return{$x:function(){return e.where(r.greaterEqual(rt(t)).logicalAnd(r.lessEqual(rt(n))),_t(e))}}})}}),wa=Je({cos_:function(e){var t=Xe(e,"x","cos");return me.engine.runKernel(function(e){return e.cos(t)},{$x:t},function(e){return{$x:function(){return t.toFloat().sin().neg().mulStrict(e)}}})}}),xa=Je({cosh_:function(e){var t=Xe(e,"x","cosh");return me.engine.runKernel(function(e){return e.cosh(t)},{$x:t},function(e){return{$x:function(){return t.toFloat().sinh().mulStrict(e)}}})}}),_a=Je({erf_:function(e){var t=Xe(e,"x","erf");return d("int32"===t.dtype||"float32"===t.dtype,"Input dtype must be `int32` or `float32`."),"int32"===t.dtype&&(t=t.toFloat()),me.engine.runKernel(function(e){return e.erf(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(rt(2/Math.sqrt(Math.PI)).mul(t.square().neg().exp()))}}})}}),Ea=Je({exp_:function(e){var t=Xe(e,"x","exp");return me.engine.runKernel(function(e,n){return n(e.exp(t))},{$x:t},function(e,t){var n=t[0];return{$x:function(){return e.mulStrict(n)}}})}}),Na=Je({expm1_:function(e){var t=Xe(e,"x","expm1");return me.engine.runKernel(function(e){return e.expm1(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.exp())}}})}}),Sa=Je({floor_:function(e){var t=Xe(e,"x","floor");return me.engine.runKernel(function(e){return e.floor(t)},{$x:t},function(e){return{$x:function(){return _t(e)}}})}}),Oa=Je({log_:function(e){var t=Xe(e,"x","log");return me.engine.runKernel(function(e){return e.log(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.toFloat())}}})}}),ka=Je({log1p_:function(e){var t=Xe(e,"x","log1p");return me.engine.runKernel(function(e){return e.log1p(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.add(rt(1)))}}})}}),Ia=Je({logSigmoid_:function(e){var t=Xe(e,"x","logSigmoid");return me.engine.runKernel(function(e){return e.softplus(t.neg()).neg()},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.neg().sigmoid())}}})}}),Ca=Je({neg_:function(e){var t=Xe(e,"x","neg");return me.engine.runKernel(function(e){return e.neg(t)},{$x:t},function(e){return{$x:function(){return e.neg()}}})}}),Pa=Je({reciprocal_:function(e){var t=Xe(e,"x","reciprocal");return me.engine.runKernel(function(e){return e.reciprocal(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.square().neg())}}})}}),Aa=Je({round_:function(e){var t=Xe(e,"x","round");return me.engine.runKernel(function(e){return e.round(t)},{$x:t},function(e){return{$x:function(){return _t(e)}}})}}),Ta=Je({rsqrt_:function(e){var t=Xe(e,"x","rsqrt");return me.engine.runKernel(function(e){return e.rsqrt(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.pow(rt(1.5)).mul(rt(2))).neg()}}})}}),Ma=Je({sigmoid_:function(e){var t=Xe(e,"x","sigmoid");return me.engine.runKernel(function(e,n){return n(e.sigmoid(t))},{$x:t},function(e,t){var n=t[0];return{$x:function(){return e.mulStrict(n.mul(rt(1).sub(n)))}}})}}),Ra=Je({sign_:function(e){var t=Xe(e,"x","sign");return me.engine.runKernel(function(e){return e.sign(t)},{$x:t},function(e){return{$x:function(){return _t(e)}}})}}),Da=Je({sin_:function(e){var t=Xe(e,"x","sin");return me.engine.runKernel(function(e){return e.sin(t)},{$x:t},function(e){return{$x:function(){return t.toFloat().cos().mulStrict(e)}}})}}),ja=Je({sinh_:function(e){var t=Xe(e,"x","sinh");return me.engine.runKernel(function(e){return e.sinh(t)},{$x:t},function(e){return{$x:function(){return t.toFloat().cosh().mulStrict(e)}}})}}),La=Je({softplus_:function(e){var t=Xe(e,"x","softplus");return me.engine.runKernel(function(e){return e.softplus(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.sigmoid())}}})}}),Ba=Je({sqrt_:function(e){var t=Xe(e,"x","sqrt");return me.engine.runKernel(function(e){return e.sqrt(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.toFloat().sqrt().mul(rt(2)))}}})}}),za=Je({square_:function(e){var t=Xe(e,"x","square");return me.engine.runKernel(function(e){return e.square(t)},{$x:t},function(e){return{$x:function(){return e.mulStrict(t.toFloat().mul(rt(2)))}}})}}),Fa=Je({step_:function(e,t){void 0===t&&(t=0);var n=Xe(e,"x","step");return me.engine.runKernel(function(e){return e.step(n,t)},{$x:n},function(e){return{$x:function(){return _t(e)}}})}}),Va=Je({tan_:function(e){var t=Xe(e,"x","tan");return me.engine.runKernel(function(e){return e.tan(t)},{$x:t},function(e){return{$x:function(){return e.divStrict(t.cos().square())}}})}}),Ua=Je({tanh_:function(e){var t=Xe(e,"x","tanh");return me.engine.runKernel(function(e,n){return n(e.tanh(t))},{$x:t},function(e,t){var n=t[0];return{$x:function(){return rt(1).sub(n.square()).mulStrict(e)}}})}});function Wa(e){return null==e?null:0===e.rank?e.as1D():1===e.rank?e:2===e.rank?e.as4D(1,1,e.shape[0],e.shape[1]):3===e.rank?e.as4D(1,e.shape[0],e.shape[1],e.shape[2]):e}var qa=Je({batchNormalization2d_:function(e,t,n,r,a,i){void 0===r&&(r=.001);var o,s,u=Xe(e,"x","batchNormalization"),l=Xe(t,"mean","batchNormalization"),c=Xe(n,"variance","batchNormalization");return null!=a&&(o=Xe(a,"scale","batchNormalization")),null!=i&&(s=Xe(i,"offset","batchNormalization")),d(2===u.rank,"Error in batchNormalization3D: x must be rank 3 but got rank "+u.rank+"."),d(2===l.rank||1===l.rank,"Error in batchNormalization2D: mean must be rank 2 or rank 1 but got rank "+l.rank+"."),d(2===c.rank||1===c.rank,"Error in batchNormalization2D: variance must be rank 2 or rank 1 but got rank "+c.rank+"."),null!=o&&d(2===o.rank||1===o.rank,"Error in batchNormalization2D: scale must be rank 2 or rank 1 but got rank "+o.rank+"."),null!=s&&d(2===s.rank||1===s.rank,"Error in batchNormalization2D: offset must be rank 2 or rank 1 but got rank "+s.rank+"."),Ha(u,l,c,r,o,s)}}),$a=Je({batchNormalization3d_:function(e,t,n,r,a,i){void 0===r&&(r=.001);var o,s,u=Xe(e,"x","batchNormalization"),l=Xe(t,"mean","batchNormalization"),c=Xe(n,"variance","batchNormalization");return null!=a&&(o=Xe(a,"scale","batchNormalization")),null!=i&&(s=Xe(i,"offset","batchNormalization")),d(3===u.rank,"Error in batchNormalization3D: x must be rank 3 but got rank "+u.rank+"."),d(3===l.rank||1===l.rank,"Error in batchNormalization3D: mean must be rank 3 or rank 1 but got rank "+l.rank+"."),d(3===c.rank||1===c.rank,"Error in batchNormalization3D: variance must be rank 3 or rank 1 but got rank "+c.rank+"."),null!=o&&d(3===o.rank||1===o.rank,"Error in batchNormalization3D: scale must be rank 3 or rank 1 but got rank "+o.rank+"."),null!=s&&d(3===s.rank||1===s.rank,"Error in batchNormalization3D: offset must be rank 3 or rank 1 but got rank "+s.rank+"."),Ha(u,l,c,r,o,s)}}),Ga=Je({batchNormalization4d_:function(e,t,n,r,a,i){void 0===r&&(r=.001);var o,s,u=Xe(e,"x","batchNormalization"),l=Xe(t,"mean","batchNormalization"),c=Xe(n,"variance","batchNormalization");return null!=a&&(o=Xe(a,"scale","batchNormalization")),null!=i&&(s=Xe(i,"offset","batchNormalization")),d(4===u.rank,"Error in batchNormalization4D: x must be rank 4 but got rank "+u.rank+"."),d(4===l.rank||1===l.rank,"Error in batchNormalization4D: mean must be rank 4 or rank 1 but got rank "+l.rank+"."),d(4===c.rank||1===c.rank,"Error in batchNormalization4D: variance must be rank 4 or rank 1 but got rank "+c.rank+"."),null!=o&&d(4===o.rank||1===o.rank,"Error in batchNormalization4D: scale must be rank 4 or rank 1 but got rank "+o.rank+"."),null!=s&&d(4===s.rank||1===s.rank,"Error in batchNormalization4D: offset must be rank 4 or rank 1 but got rank "+s.rank+"."),Ha(u,l,c,r,o,s)}}),Ha=Je({batchNormalization_:function(e,t,n,r,a,i){void 0===r&&(r=.001);var o,s,u,l=Xe(e,"x","batchNormalization"),c=Xe(t,"mean","batchNormalization"),f=Xe(n,"variance","batchNormalization");return null!=a&&(o=Xe(a,"scale","batchNormalization")),null!=i&&(s=Xe(i,"offset","batchNormalization")),d(c.rank===f.rank,"Batch normalization gradient requires mean and variance to have equal ranks."),d(null==s||c.rank===s.rank,"Batch normalization gradient requires mean and offset to have equal ranks."),d(null==o||c.rank===o.rank,"Batch normalization gradient requires mean and scale to have equal ranks."),u=0===l.rank||1===l.rank?l.as4D(1,1,1,l.size):2===l.rank?l.as4D(1,1,l.shape[0],l.shape[1]):3===l.rank?l.as4D(1,l.shape[0],l.shape[1],l.shape[2]):l,me.engine.runKernel(function(e){return e.batchNormalization(u,Wa(c),Wa(f),r,Wa(o),Wa(s))},{$x:l,$mean:c,$variance:f,$scale:o,$offset:s},function(e){var t=null==o?rt(1):o,n=Rt(c.shape,u.shape),a=[];if(1===c.rank){for(var i=0;i=2&&i.rank>=2&&a.rank===i.rank,"Error in matMul: inputs must have the same rank of at least 2, got ranks "+a.rank+" and "+i.rank+"."),d(w(c,f),"Error in matMul: outer dimensions ("+c+") and ("+f+") of Tensors with shapes "+a.shape+" and "+i.shape+" must match."),d(o===s,"Error in matMul: inner shapes ("+o+") and ("+s+") of Tensors with shapes "+a.shape+" and "+i.shape+" and transposeA="+n+" and transposeB="+r+" must match.");var m=a.shape.slice(0,-2).concat([u,l]),g=n?a.as3D(p,o,u):a.as3D(p,u,o),y=r?i.as3D(h,l,s):i.as3D(h,s,l);return me.engine.runKernel(function(e){return e.batchMatMul(g,y,n,r)},{$a:g,$b:y},function(e){return n||r?!n&&r?{$a:function(){return e.matMul(y.toFloat(),!1,!1)},$b:function(){return e.matMul(g.toFloat(),!0,!1)}}:n&&!r?{$a:function(){return y.toFloat().matMul(e,!1,!0)},$b:function(){return g.toFloat().matMul(e,!1,!1)}}:{$a:function(){return y.toFloat().matMul(e,!0,!0)},$b:function(){return e.matMul(g.toFloat(),!0,!0)}}:{$a:function(){return e.matMul(y.toFloat(),!1,!0)},$b:function(){return g.toFloat().matMul(e,!0,!1)}}}).reshape(m)}}),ei=Je({dot_:function(e,t){var n=Xe(e,"t1","dot"),r=Xe(t,"t2","dot");d(!(1!==n.rank&&2!==n.rank||1!==r.rank&&2!==r.rank),"Error in dot: inputs must all be rank 1 or 2, but got ranks "+n.rank+" and "+r.rank+".");var a=1===n.rank?n.size:n.shape[1],i=1===r.rank?r.size:r.shape[0];return d(a===i,"Error in dot: inner dimensions of inputs must match, but got "+a+" and "+i+"."),1===n.rank&&1===r.rank?n.as2D(1,-1).matMul(r.as2D(-1,1)).asScalar():1===n.rank&&2===r.rank?n.as2D(1,-1).matMul(r.as2D(r.shape[0],r.shape[1])).as1D():2===n.rank&&1===r.rank?n.matMul(r.as2D(-1,1)).as1D():n.matMul(r.as2D(r.shape[0],r.shape[1]))}}),ti=Je({outerProduct_:function(e,t){var n=Xe(e,"v1","outerProduct"),r=Xe(t,"v2","outerProduct");return d(1===n.rank&&1===r.rank,"Error in outerProduct: inputs must be rank 1, but got ranks "+n.rank+" and "+r.rank+"."),n.as2D(-1,1).matMul(r.as2D(1,-1))}});function ni(e,t,n,r,a,i){d(e.length===t.rank,"Length of inShape ("+e.length+") and rank of dy ("+t.rank+") must match");var o=e,s=t,u=!1;3===t.rank&&(u=!0,s=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]),o=[1,e[0],e[1],e[2]]);var l=o[3],c=s.shape[3];d(4===o.length,"Error in conv2dDerInput: inShape must be length 4, but got length "+o.length+"."),d(4===s.rank,"Error in conv2dDerInput: dy must be rank 4, but got rank "+s.rank),d(4===n.rank,"Error in conv2dDerInput: filter must be rank 4, but got rank "+n.rank),d(l===n.shape[2],"Error in conv2dDerInput: depth of input ("+l+") must match input depth for filter "+n.shape[2]+"."),d(c===n.shape[3],"Error in conv2dDerInput: depth of output ("+c+") must match output depth for filter "+n.shape[3]+"."),null!=i&&d(x(a),"Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+a+".");var f=Xa(o,n.shape,r,1,a,i),p=me.engine.runKernel(function(e){return e.conv2dDerInput(s,n,f)},{dy4D:s});return u?p.as3D(p.shape[1],p.shape[2],p.shape[3]):p}function ri(e){var t=function(e){return"number"==typeof e?[e,e]:e}(e),n=t[0],r=t[1];return 1===n&&1===r}function ai(e,t){return ri(e)||ri(t)}var ii=Je({conv1d_:function(e,t,n,r,a,i,o){void 0===a&&(a="NWC"),void 0===i&&(i=1);var s=Xe(e,"x","conv1d"),u=Xe(t,"filter","conv1d"),l=s,c=!1;2===s.rank&&(c=!0,l=s.as3D(1,s.shape[0],s.shape[1])),d(3===l.rank,"Error in conv1d: input must be rank 3, but got rank "+l.rank+"."),d(3===u.rank,"Error in conv1d: filter must be rank 3, but got rank "+u.rank+"."),null!=o&&d(x(r),"Error in conv1d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+"."),d(l.shape[2]===u.shape[1],"Error in conv1d: depth of input ("+l.shape[2]+") must match input depth for filter "+u.shape[1]+"."),d(ai(n,i),"Error in conv1D: Either stride or dilation must be 1. Got stride "+n+" and dilation '"+i+"'"),d("NWC"===a,"Error in conv1d: got dataFormat of "+a+" but only NWC is currently supported.");var f=u.as4D(1,u.shape[0],u.shape[1],u.shape[2]),p=l.as4D(l.shape[0],1,l.shape[1],l.shape[2]),h=oi(p,f,[1,n],r,"NHWC",[1,i],o);return c?h.as2D(h.shape[2],h.shape[3]):h.as3D(h.shape[0],h.shape[2],h.shape[3])}}),oi=Je({conv2d_:function(e,t,n,r,a,i,o){void 0===a&&(a="NHWC"),void 0===i&&(i=[1,1]);var s=Xe(e,"x","conv2d"),u=Xe(t,"filter","conv2d"),l=s,c=!1;3===s.rank&&(c=!0,l=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),d(4===l.rank,"Error in conv2d: input must be rank 4, but got rank "+l.rank+"."),d(4===u.rank,"Error in conv2d: filter must be rank 4, but got rank "+u.rank+"."),null!=o&&d(x(r),"Error in conv2d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+"."),d(l.shape[3]===u.shape[2],"Error in conv2d: depth of input ("+l.shape[3]+") must match input depth for filter "+u.shape[2]+"."),d(ai(n,i),"Error in conv2D: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+i+"'"),d("NHWC"===a,"Error in conv2d: got dataFormat of "+a+" but only NHWC is currently supported.");var f,p=Xa(l.shape,u.shape,n,i,r,o);if(1===p.filterHeight&&1===p.filterWidth&&1===p.dilationHeight&&1===p.dilationWidth&&1===p.strideHeight&&1===p.strideWidth&&"SAME"===p.padInfo.type){var h=l.reshape([-1,p.inChannels]),m=u.reshape([p.inChannels,p.outChannels]);f=Qa(h,m).reshape(p.outShape)}else f=me.engine.runKernel(function(e){return e.conv2d(l,u,p)},{x:l,$filter:u},function(e){return d(ri(i),"Error in gradient of conv2D: dilation rates greater than 1 are notyet supported in gradients. Got dilations '"+i+"'"),{x:function(){return ni(l.shape,e,u,n,r)},$filter:function(){return function(e,t,n,r,a,i){var o=e;3===e.rank&&(o=e.as4D(1,e.shape[0],e.shape[1],e.shape[2]));var s=t;3===s.rank&&(s=t.as4D(1,t.shape[0],t.shape[1],t.shape[2])),d(4===o.rank,"Error in conv2dDerFilter: input must be rank 4, but got shape "+o.shape+"."),d(4===s.rank,"Error in conv2dDerFilter: dy must be rank 4, but got shape "+s.shape+"."),d(4===n.length,"Error in conv2dDerFilter: filterShape must be length 4, but got "+n+"."),d(o.shape[3]===n[2],"Error in conv2dDerFilter: depth of input "+o.shape[3]+") must match input depth in filter ("+n[2]+"."),d(s.shape[3]===n[3],"Error in conv2dDerFilter: depth of dy ("+s.shape[3]+") must match output depth for filter ("+n[3]+").");var u=Xa(o.shape,n,r,1,a,i);return me.engine.runKernel(function(e){return e.conv2dDerFilter(o,s,u)},{x4D:o,dy4D:s})}(l,e,u.shape,n,r)}}});return c?f.as3D(f.shape[1],f.shape[2],f.shape[3]):f}}),si=Je({depthwiseConv2d_:function(e,t,n,r,a,i,o){void 0===a&&(a="NHWC"),void 0===i&&(i=[1,1]);var s=Xe(e,"x","depthwiseConv2d"),u=Xe(t,"filter","depthwiseConv2d"),l=s,c=!1;3===s.rank&&(c=!0,l=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),d(4===l.rank,"Error in depthwiseConv2d: input must be rank 4, but got rank "+l.rank+"."),d(4===u.rank,"Error in depthwiseConv2d: filter must be rank 4, but got rank "+u.rank+"."),d(l.shape[3]===u.shape[2],"Error in depthwiseConv2d: number of input channels ("+l.shape[3]+") must match the inChannels dimension in filter "+u.shape[2]+"."),null==i&&(i=[1,1]),d(ai(n,i),"Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+i+"'"),null!=o&&d(x(r),"Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+".");var f=Xa(l.shape,u.shape,n,i,r,o,!0),p=me.engine.runKernel(function(e){return e.depthwiseConv2D(l,u,f)},{x:l,$filter:u},function(e){return d(ri(i),"Error in gradient of depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '"+i+"'"),{x:function(){return function(e,t,n,r){var a=t,i=!1;3===t.rank&&(i=!0,a=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]));var o=me.engine.runKernel(function(e){return e.depthwiseConv2DDerInput(a,n,r)},{dy4D:a});return i?o.as3D(o.shape[1],o.shape[2],o.shape[3]):o}(l.shape,e,u,f)},$filter:function(){return function(e,t,n,r){var a=e;3===e.rank&&(a=e.as4D(1,e.shape[0],e.shape[1],e.shape[2]));var i=t;return 3===i.rank&&(i=t.as4D(1,t.shape[0],t.shape[1],t.shape[2])),me.engine.runKernel(function(e){return e.depthwiseConv2DDerFilter(a,i,r)},{x4D:a,dy4D:i})}(l,e,u.shape,f)}}});return c?p.as3D(p.shape[1],p.shape[2],p.shape[3]):p}}),ui=Je({separableConv2d_:function(e,t,n,r,a,i,o){void 0===i&&(i=[1,1]),void 0===o&&(o="NHWC");var s=Xe(e,"x","separableConv2d"),u=Xe(t,"depthwiseFilter","separableConv2d"),l=Xe(n,"pointwiseFilter","separableConv2d"),c=s,f=!1;if(3===s.rank&&(f=!0,c=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),"NCHW"===o)throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");d(4===c.rank,"Error in separableConv2d: input must be rank 4, but got rank "+c.rank+"."),d(4===u.rank,"Error in separableConv2d: depthwise filter must be rank 4, but got rank "+u.rank+"."),d(4===l.rank,"Error in separableConv2d: pointwise filter must be rank 4, but got rank "+u.rank+"."),d(1===l.shape[0],"Error in separableConv2d: the first dimension of pointwise filter must be 1, but got "+l.shape[0]+"."),d(1===l.shape[1],"Error in separableConv2d: the second dimension of pointwise filter must be 1, but got "+l.shape[1]+".");var p=u.shape[2],h=u.shape[3];d(l.shape[2]===p*h,"Error in separableConv2d: the third dimension of pointwise filter must be "+p*h+", but got "+l.shape[2]+".");var m=si(c,u,r,a,o,i),g=oi(m,l,1,"valid",o);return f?g.as3D(g.shape[1],g.shape[2],g.shape[3]):g}}),li=Je({conv2dTranspose_:function(e,t,n,r,a,i){return ni(n,Xe(e,"x","conv2dTranspose"),Xe(t,"filter","conv2dTranspose"),r,a,i)}}),ci=Je({reverse_:function(e,t){var n=Xe(e,"x","reverse");if(0===n.rank)return n.clone();var r=Be(t,n.shape);return me.engine.runKernel(function(e){return e.reverse(n,r)},{$x:n},function(e){return{$x:function(){return e.reverse(r)}}}).reshapeAs(n)}}),fi=Je({reverse1d_:function(e){var t=Xe(e,"x","reverse");return d(1===t.rank,"Error in reverse1D: x must be rank 1 but got\n rank "+t.rank+"."),ci(t,0)}}),pi=Je({reverse2d_:function(e,t){var n=Xe(e,"x","reverse");return d(2===n.rank,"Error in reverse2D: x must be rank 2 but got\n rank "+n.rank+"."),ci(n,t)}}),hi=Je({reverse3d_:function(e,t){var n=Xe(e,"x","reverse");return d(3===n.rank,"Error in reverse3D: x must be rank 3 but got\n rank "+n.rank+"."),ci(n,t)}}),di=Je({reverse4d_:function(e,t){var n=Xe(e,"x","reverse");return d(4===n.rank,"Error in reverse4D: x must be rank 4 but got\n rank "+n.rank+"."),ci(n,t)}}),mi=Je({maxPool_:function(e,t,n,r,a){var i=Xe(e,"x","maxPool"),o=i,s=!1;3===i.rank&&(s=!0,o=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),d(4===o.rank,"Error in maxPool: input must be rank 4 but got rank "+o.rank+"."),null!=a&&d(x(r),"Error in maxPool: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+r+".");var u=Ka(o.shape,t,n,r,a),l=me.engine.runKernel(function(e,t){return t(e.maxPool(o,u))},{x:o},function(e,a){var i=a[0];return{x:function(){return function(e,t,n,r,a,i,o){var s=Xe(e,"dy","maxPoolBackprop"),u=Xe(t,"input","maxPoolBackprop"),l=Xe(n,"output","maxPoolBackprop");d(u.rank===s.rank,"Rank of input ("+u.rank+") does not match rank of dy ("+s.rank+")"),d(4===s.rank,"Error in maxPoolBackprop: dy must be rank 4 but got rank "+s.rank+"."),d(4===u.rank,"Error in maxPoolBackprop: input must be rank 4 but got rank "+u.rank+".");var c=Ka(u.shape,r,a,i,o);return me.engine.runKernel(function(e){return e.maxPoolBackprop(s,u,l,c)},{$dy:s,$input:u})}(e,o,i,t,n,r)}}});return s?l.as3D(l.shape[1],l.shape[2],l.shape[3]):l}}),gi=Je({avgPool_:function(e,t,n,r,a){var i=Xe(e,"x","avgPool");d("float32"===i.dtype,"The input dtype to avgPool must be float32");var o=i,s=!1;3===i.rank&&(s=!0,o=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),d(4===o.rank,"Error in avgPool: x must be rank 4 but got rank "+o.rank+"."),null!=a&&d(x(r),"Error in avgPool: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+r+".");var u=Ka(o.shape,t,n,r),l=me.engine.runKernel(function(e){return e.avgPool(o,u)},{x:o},function(e){return{x:function(){return function(e,t,n,r,a){var i=Xe(e,"dy","avgPoolBackprop"),o=Xe(t,"input","avgPoolBackprop");d(o.rank===i.rank,"Rank of input ("+o.rank+") does not match rank of dy ("+i.rank+")");var s=o,u=i,l=!1;3===o.rank&&(l=!0,s=o.as4D(1,o.shape[0],o.shape[1],o.shape[2]),u=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),d(4===u.rank,"Error in avgPoolBackprop: dy must be rank 4 but got rank "+u.rank+"."),d(4===s.rank,"Error in avgPoolBackprop: input must be rank 4 but got rank "+s.rank+".");var c=Ka(s.shape,n,r,a),f=me.engine.runKernel(function(e){return e.avgPoolBackprop(u,s,c)},{dy4D:u,input4D:s});return l?f.as3D(f.shape[1],f.shape[2],f.shape[3]):f}(e,o,t,n,r)}}});return l=l.cast(i.dtype),s?l.as3D(l.shape[1],l.shape[2],l.shape[3]):l}}),yi=Je({slice_:function(e,t,n){var r,a,i=Xe(e,"x","slice");if(0===i.rank)throw new Error("Slicing scalar is not possible");r="number"==typeof t?[t].concat(new Array(i.rank-1).fill(0)):t.length=0?e:(d(-1===e,"Bad value in size"),i.shape[t]-r[t])}),function(e,t,n){d(e.rank===t.length,"Error in slice"+e.rank+"D: Length of begin "+t+" must match the rank of the array ("+e.rank+")."),d(e.rank===n.length,"Error in slice"+e.rank+"D: Length of size "+n+" must match the rank of the array ("+e.rank+").");for(var r=0;r0&&(t=t.sum(r)),t.reshape(n.shape)},$b:function(){var t=e,n=Rt(r.shape,a);return n.length>0&&(t=t.sum(n)),t.reshape(r.shape)}}})}}),Gi=Je({addN_:function(e){d(Array.isArray(e),function(){return"The argument passed to tf.addN() must be a list of tensors"}),d(e.length>=1,function(){return"Must pass at least one tensor to tf.addN(), but got "+e.length});var t=e.map(function(e,t){return Xe(e,"tensors"+t,"addN")}),n=t[0];t.forEach(function(e){if(e.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(function(e){if(!w(e.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});var r=t;return me.engine.runKernel(function(e){return e.addN(t)},r,function(e){var n={};return t.forEach(function(t,r){n[r]=function(){return e.clone()}}),n})}}),Hi=Je({addStrict_:function(e,t){return m(e.shape,t.shape,"Error in addStrict: "),e.add(t)}}),Ki=Je({atan2_:function(e,t){var n=Xe(e,"a","atan2"),r=Xe(t,"b","atan2");ne(n,r);var a=Dt(n.shape,r.shape);return me.engine.runKernel(function(e){return e.atan2(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=$i(n.square(),r.square()),i=e.mul(r.div(t)),o=Rt(n.shape,a);return o.length>0&&(i=i.sum(o)),i.reshape(n.shape)},$b:function(){var t=$i(n.square(),r.square()),i=Ca(e.mul(n.div(t))),o=Rt(r.shape,a);return o.length>0&&(i=i.sum(o)),i.reshape(r.shape)}}})}}),Xi=Je({div_:function(e,t){var n,r=Xe(e,"a","div"),a=Xe(t,"b","div");if(ne(r,a),"int32"===r.dtype&&"int32"===a.dtype)return Ji(r,a);n=function(e){return e.realDivide(r,a)};var i=Dt(r.shape,a.shape);return me.engine.runKernel(n,{$a:r,$b:a},function(e){return{$a:function(){var t=e.div(a.toFloat()),n=Rt(r.shape,i);return n.length>0?t.sum(n).reshape(r.shape):t},$b:function(){var t=e.mul(r.toFloat()),n=Rt(a.shape,i);n.length>0&&(t=t.sum(n).reshape(a.shape));var o=a.square();return t.div(o.toFloat()).neg()}}})}}),Yi=Je({divStrict_:function(e,t){return m(e.shape,t.shape,"Error in divideStrict: "),e.div(t)}}),Ji=Je({floorDiv_:function(e,t){var n=Xe(e,"a","floorDiv"),r=Xe(t,"b","floorDiv");ne(n,r);var a=Dt(n.shape,r.shape);return me.engine.runKernel(function(e){return e.floorDiv(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=e.div(r.toFloat()),i=Rt(n.shape,a);return i.length>0?t.sum(i).reshape(n.shape):t},$b:function(){var t=e.mul(n.toFloat()),i=Rt(r.shape,a);i.length>0&&(t=t.sum(i).reshape(r.shape));var o=r.square();return t.div(o.toFloat()).neg()}}})}}),Zi=Je({maximum_:function(e,t){var n=Xe(e,"a","maximum"),r=Xe(t,"b","maximum");return ne(n,r),"bool"===n.dtype&&(n=n.toInt()),"bool"===r.dtype&&(r=r.toInt()),Dt(n.shape,r.shape),me.engine.runKernel(function(e){return e.maximum(n,r)},{$a:n,$b:r},function(e){return{$a:function(){return e.mul(n.greaterEqual(r).toFloat())},$b:function(){return e.mul(n.less(r).toFloat())}}})}}),Qi=Je({maximumStrict_:function(e,t){return m(e.shape,t.shape,"Error in maximumStrict: "),e.maximum(t)}}),eo=Je({minimum_:function(e,t){var n=Xe(e,"a","minimum"),r=Xe(t,"b","minimum");return ne(n,r),"bool"===n.dtype&&(n=n.toInt()),"bool"===r.dtype&&(r=r.toInt()),Dt(n.shape,r.shape),me.engine.runKernel(function(e){return e.minimum(n,r)},{$a:n,$b:r},function(e){return{$a:function(){return e.mul(n.lessEqual(r).toFloat())},$b:function(){return e.mul(n.greater(r).toFloat())}}})}}),to=Je({minimumStrict_:function(e,t){return m(e.shape,t.shape,"Error in minimumStrict: "),e.minimum(t)}}),no=Je({mod_:function(e,t){var n=Xe(e,"a","mod"),r=Xe(t,"b","mod");ne(n,r);var a=Dt(n.shape,r.shape);return me.engine.runKernel(function(e){return e.mod(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=Rt(n.shape,a);return t.length>0?e.sum(t).reshape(n.shape):e},$b:function(){var t=e.mul(n.div(r).floor().neg()),i=Rt(r.shape,a);return i.length>0?t.sum(i).reshape(r.shape):t}}})}}),ro=Je({modStrict_:function(e,t){return m(e.shape,t.shape,"Error in modStrict: "),e.mod(t)}}),ao=Je({mul_:function(e,t){var n=Xe(e,"a","mul"),r=Xe(t,"b","mul");ne(n,r);var a=Dt(n.shape,r.shape);return me.engine.runKernel(function(e){return e.multiply(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=e.mul(r.toFloat()),i=Rt(n.shape,a);return i.length>0?t.sum(i).reshape(n.shape):t},$b:function(){var t=e.mul(n.toFloat()),i=Rt(r.shape,a);return i.length>0?t.sum(i).reshape(r.shape):t}}})}}),io=Je({mulStrict_:function(e,t){return m(e.shape,t.shape,"Error in multiplyStrict: "),e.mul(t)}}),oo=Je({pow_:function(e,t){var n=Xe(e,"base","pow"),r=Xe(t,"exp","pow"),a=Dt(n.shape,r.shape);return e=n.cast(Nt(n.dtype,r.dtype)),t=r.cast(Nt(n.dtype,r.dtype)),me.engine.runKernel(function(e,t){return t(e.pow(n,r))},{$base:n,$exp:r},function(e,t){var i=t[0];return{$base:function(){var t=e.mul(r.toFloat().mul(i.div(n))),o=Rt(n.shape,a);return o.length>0&&(t=t.sum(o)),t.reshape(n.shape)},$exp:function(){var t=e.mul(i.mul(n.log()).toFloat()),o=Rt(r.shape,a);return o.length>0&&(t=t.sum(o)),t.reshape(r.shape)}}})}}),so=Je({powStrict_:function(e,t){return m(e.shape,t.shape,"Error in powStrict: "),e.pow(t)}}),uo=Je({squaredDifference_:function(e,t){var n=Xe(e,"a","squaredDifference"),r=Xe(t,"b","squaredDifference");return ne(n,r),Dt(n.shape,r.shape),me.engine.runKernel(function(e){return e.squaredDifference(n,r)},{$a:n,$b:r},function(e){var t=rt(2);return{$a:function(){return e.mul(n.sub(r).mul(t))},$b:function(){return e.mul(r.sub(n).mul(t))}}})}}),lo=Je({squaredDifferenceStrict_:function(e,t){return m(e.shape,t.shape,"Error in squaredDifferenceStrict: "),e.squaredDifference(t)}}),co=Je({sub_:function(e,t){var n=Xe(e,"a","sub"),r=Xe(t,"b","sub");ne(n,r);var a=Dt(n.shape,r.shape);return me.engine.runKernel(function(e){return e.subtract(n,r)},{$a:n,$b:r},function(e){return{$a:function(){var t=e,r=Rt(n.shape,a);return r.length>0&&(t=t.sum(r)),t.reshape(n.shape)},$b:function(){var t=e,n=Rt(r.shape,a);return n.length>0&&(t=t.sum(n)),t.neg().reshape(r.shape)}}})}}),fo=Je({subStrict_:function(e,t){return m(e.shape,t.shape,"Error in subStrict: "),e.sub(t)}}),po=Je({logicalAnd_:function(e,t){var n=Xe(e,"a","logicalAnd","bool"),r=Xe(t,"b","logicalAnd","bool");return d("bool"===n.dtype&&"bool"===r.dtype,"Error Array must be of type bool."),Dt(n.shape,r.shape),me.engine.runKernel(function(e){return e.logicalAnd(n,r)},{$a:n,$b:r})}}),ho=Je({logicalNot_:function(e){var t=Xe(e,"x","logicalNot","bool");return d("bool"===t.dtype,"Error Array must be of type bool."),me.engine.runKernel(function(e){return e.logicalNot(t)},{$x:t})}}),mo=Je({logicalOr_:function(e,t){var n=Xe(e,"a","logicalOr","bool"),r=Xe(t,"b","logicalOr","bool");return d("bool"===n.dtype&&"bool"===r.dtype,"Error Array must be of type bool."),Dt(n.shape,r.shape),me.engine.runKernel(function(e){return e.logicalOr(n,r)},{$a:n,$b:r})}}),go=Je({logicalXor_:function(e,t){var n=Xe(e,"a","logicalXor","bool"),r=Xe(t,"b","logicalXor","bool");return d("bool"===n.dtype&&"bool"===r.dtype,"Error Array must be of type bool."),Dt(n.shape,r.shape),mo(e,t).logicalAnd(po(e,t).logicalNot())}}),yo=Je({where_:function(e,t,n){var r=Xe(t,"a","where"),a=Xe(n,"b","where"),i=Xe(e,"condition","where","bool");return d("bool"===i.dtype,"Error Condition must be of type bool."),m(r.shape,a.shape,"Error in where: "),1===i.rank?d(i.shape[0]===r.shape[0],"The first dimension of `a` must match the size of `condition`."):m(i.shape,a.shape,"Error in where: "),me.engine.runKernel(function(e){return e.select(i,r,a)},{$condition:i,$a:r,$b:a},function(e){return{$condition:function(){return _t(i)},$a:function(){return e.mul(i.cast(r.dtype))},$b:function(){return e.mul(i.logicalNot().cast(a.dtype))}}})}}),vo=function(e){return l(this,void 0,void 0,function(){var t,n,r;return c(this,function(a){switch(a.label){case 0:return d("bool"===(t=Xe(e,"condition","where","bool")).dtype,"Condition must be of type bool."),[4,t.data()];case 1:return n=a.sent(),r=ua(t.shape,n),e!==t&&t.dispose(),[2,r]}})})},bo=Je({elu_:function(e){var t=Xe(e,"x","elu");return me.engine.runKernel(function(e,n){return n(e.elu(t))},{$x:t},function(e,t){var n=t[0];return{$x:function(){return me.engine.runKernel(function(t){return t.eluDer(e,n)},{dy:e,y:n})}}})}}),wo=Je({leakyRelu_:function(e,t){void 0===t&&(t=.2);var n=Xe(e,"x","leakyRelu");return Zi(rt(t).mul(n),n)}}),xo=Je({prelu_:function(e,t){var n=Xe(e,"x","prelu"),r=Xe(t,"alpha","prelu"),a=rt(0);return Zi(a,n).add(r.mul(eo(a,n)))}}),_o=Je({relu_:function(e){var t=Xe(e,"x","relu");return"bool"===t.dtype?t.toInt():me.engine.runKernel(function(e){return e.relu(t)},{$x:t},function(e){var n=t.step();return{$x:function(){return e.mulStrict(n.toFloat())}}})}}),Eo=Je({selu_:function(e){var t=Xe(e,"x","selu");return me.engine.runKernel(function(e){return e.selu(t)},{$x:t},function(e){return{$x:function(){var n=t.greater(rt(0)),r=rt(dr),a=rt(mr),i=e.mul(a),o=e.mul(r).mul(t.toFloat().exp());return yo(n,i,o)}}})}}),No=Je({transpose_:function(e,t){var n=Xe(e,"x","transpose");return null==t&&(t=n.shape.map(function(e,t){return t}).reverse()),d(n.rank===t.length,"Error in transpose: rank of input "+n.rank+" must match length of perm "+t+"."),t.forEach(function(e){d(e>=0&&ea)throw new Error("'k' passed to topk() must be <= the last dimension ("+a+") but got "+t);var i=me.engine.runKernel(function(e){return e.topk(r,t,n)},{$x:r});return{values:i[0],indices:i[1]}}});!function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"}(Co||(Co={}));var Lo=Je({absoluteDifference_:function(e,t,n,r){void 0===r&&(r=Co.SUM_BY_NONZERO_WEIGHTS);var a=Xe(e,"labels","absoluteDifference"),i=Xe(t,"predictions","absoluteDifference"),o=null;null!=n&&(o=Xe(n,"weights","absoluteDifference")),m(a.shape,i.shape,"Error in absoluteDifference: ");var s=a.sub(i).abs();return Bo(s,o,r)}}),Bo=Je({computeWeightedLoss_:function(e,t,n){void 0===n&&(n=Co.SUM_BY_NONZERO_WEIGHTS);var r=Xe(e,"losses","computeWeightedLoss"),a=null;null!=t&&(a=Xe(t,"weights","computeWeightedLoss"));var i=null==a?r:r.mul(a);if(n===Co.NONE)return i;if(n===Co.SUM)return i.sum();if(n===Co.MEAN){if(null==a)return i.mean();var o=b(r.shape)/b(a.shape),s=i.sum().div(a.sum());return o>1?s.div(rt(o)):s}if(n===Co.SUM_BY_NONZERO_WEIGHTS){if(null==a)return i.sum().div(rt(r.size));var u=a.mul(ct(r.shape)).notEqual(rt(0)).sum().toFloat();return i.sum().div(u)}throw Error("Unknown reduction: "+n)}}),zo=Je({cosineDistance_:function(e,t,n,r,a){void 0===a&&(a=Co.SUM_BY_NONZERO_WEIGHTS);var i=Xe(e,"labels","cosineDistance"),o=Xe(t,"predictions","cosineDistance"),s=null;null!=r&&(s=Xe(r,"weights","cosineDistance")),m(i.shape,o.shape,"Error in cosineDistance: ");var u=rt(1).sub(i.mul(o).sum(n,!0));return Bo(u,s,a)}}),Fo=Je({hingeLoss_:function(e,t,n,r){void 0===r&&(r=Co.SUM_BY_NONZERO_WEIGHTS);var a=Xe(e,"labels","hingeLoss"),i=Xe(t,"predictions","hingeLoss"),o=null;null!=n&&(o=Xe(n,"weights","hingeLoss")),m(a.shape,i.shape,"Error in hingeLoss: ");var s=rt(1);a=rt(2).mul(a).sub(s);var u=s.sub(a.mul(i)).relu();return Bo(u,o,r)}}),Vo=Je({huberLoss_:function(e,t,n,r,a){void 0===r&&(r=1),void 0===a&&(a=Co.SUM_BY_NONZERO_WEIGHTS);var i=Xe(e,"labels","huberLoss"),o=Xe(t,"predictions","huberLoss"),s=null;null!=n&&(s=Xe(n,"weights","huberLoss")),m(i.shape,o.shape,"Error in huberLoss: ");var u=rt(r),l=o.sub(i).abs(),c=eo(l,u),f=l.sub(c),p=rt(.5).mul(c.square()).add(u.mul(f));return Bo(p,s,a)}}),Uo=Je({logLoss_:function(e,t,n,r,a){void 0===r&&(r=1e-7),void 0===a&&(a=Co.SUM_BY_NONZERO_WEIGHTS);var i=Xe(e,"labels","logLoss"),o=Xe(t,"predictions","logLoss"),s=null;null!=n&&(s=Xe(n,"weights","logLoss")),m(i.shape,o.shape,"Error in logLoss: ");var u=rt(1),l=rt(r),c=i.mul(o.add(l).log()).neg().sub(u.sub(i).mul(u.sub(o).add(l).log()));return Bo(c,s,a)}}),Wo=Je({meanSquaredError_:function(e,t,n,r){void 0===r&&(r=Co.SUM_BY_NONZERO_WEIGHTS);var a=Xe(e,"labels","meanSquaredError"),i=Xe(t,"predictions","meanSquaredError"),o=null;null!=n&&(o=Xe(n,"weights","meanSquaredError")),m(a.shape,i.shape,"Error in meanSquaredError: ");var s=a.squaredDifference(i);return Bo(s,o,r)}}),qo=Je({sigmoidCrossEntropy_:function(e,t,n,r,a){void 0===r&&(r=0),void 0===a&&(a=Co.SUM_BY_NONZERO_WEIGHTS);var i=Xe(e,"multiClassLabels","sigmoidCrossEntropy"),o=Xe(t,"logits","sigmoidCrossEntropy"),s=null;if(null!=n&&(s=Xe(n,"weights","sigmoidCrossEntropy")),m(i.shape,o.shape,"Error in sigmoidCrossEntropy: "),r>0){var u=rt(r),l=rt(1),c=rt(.5);i=i.mul(l.sub(u)).add(c.mul(u))}var f=function(e,t){var n=Xe(e,"labels","sigmoidCrossEntropyWithLogits"),r=Xe(t,"logits","sigmoidCrossEntropyWithLogits");m(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");var a=r.relu(),i=r.mul(n),o=r.abs().neg().exp().log1p();return a.sub(i).add(o)}(i,o);return Bo(f,s,a)}}),$o=Je({softmaxCrossEntropy_:function(e,t,n,r,a){void 0===r&&(r=0),void 0===a&&(a=Co.SUM_BY_NONZERO_WEIGHTS);var i=Xe(e,"onehotLabels","softmaxCrossEntropy"),o=Xe(t,"logits","softmaxCrossEntropy"),s=null;if(null!=n&&(s=Xe(n,"weights","softmaxCrossEntropy")),m(i.shape,o.shape,"Error in softmaxCrossEntropy: "),r>0){var u=rt(r),l=rt(1),c=rt(i.shape[1]);i=i.mul(l.sub(u)).add(u.div(c))}var f=function(e,t,n){if(void 0===n&&(n=-1),-1===n&&(n=t.rank-1),n!==t.rank-1)throw Error("Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank "+t.rank+" and dim was "+n);return _e(function(e,t){var r=t.logSumExp([n],!0),a=t.toFloat().sub(r);return{value:a.mul(e).neg().sum([n]),gradFunc:function(t){var r=Le(t.shape,[n]);return[t.reshape(r).mul(e.toFloat().sub(a.exp())),t.reshape(r).mul(a.exp().sub(e.toFloat()))]}}})(e,t)}(i,o);return Bo(f,s,a)}}),Go=Object.freeze({get Reduction(){return Co},absoluteDifference:Lo,computeWeightedLoss:Bo,cosineDistance:zo,hingeLoss:Fo,huberLoss:Vo,logLoss:Uo,meanSquaredError:Wo,sigmoidCrossEntropy:qo,softmaxCrossEntropy:$o});function Ho(e,t){return void 0===t&&(t=!1),me.engine.tidy(function(){if(2!==e.shape.length)throw new Error("qr2d() requires a 2D Tensor, but got a "+e.shape.length+"D Tensor.");for(var n=e.shape[0],r=e.shape[1],a=Wr(n),i=e.clone(),o=it([[1]],[1,1]),s=o.clone(),u=n>=r?r:n,l=function(e){var t,u=i,l=s,c=a;t=me.engine.tidy(function(){var t=i.slice([e,e],[n-e,1]),u=t.norm(),l=i.slice([e,e],[1,1]),c=l.sign().neg(),f=l.sub(c.mul(u)),p=t.div(f);s=1===p.shape[0]?o.clone():o.concat(p.slice([1,0],[p.shape[0]-1,p.shape[1]]),0);var h=c.matMul(f).div(u).neg(),d=i.slice([e,0],[n-e,r]),m=h.mul(s);i=0===e?d.sub(m.matMul(s.transpose().matMul(d))):i.slice([0,0],[e,r]).concat(d.sub(m.matMul(s.transpose().matMul(d))),0);var g=a.slice([0,e],[n,a.shape[1]-e]);return a=0===e?g.sub(g.matMul(s).matMul(m.transpose())):a.slice([0,0],[n,e]).concat(g.sub(g.matMul(s).matMul(m.transpose())),1),[s,i,a]}),s=t[0],i=t[1],a=t[2],Oe([u,l,c])},c=0;cr&&(a=a.slice([0,0],[n,r]),i=i.slice([0,0],[r,r])),[a,i]})}var Ko=Je({gramSchmidt_:function(e){var t;if(Array.isArray(e)){t=!1,d(null!=e&&e.length>0,"Gram-Schmidt process: input must not be null, undefined, or empty");for(var n=e[0].shape[0],r=1;r0)for(var n=0;n= 2, but got rank "+e.rank);if(2===e.rank)return Ho(e,t);var n=e.shape.slice(0,e.shape.length-2).reduce(function(e,t){return e*t}),r=[],a=[];return sa(e.reshape([n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0).forEach(function(e){var n=Ho(e,t),i=n[0],o=n[1];r.push(i),a.push(o)}),[aa(r,0).reshape(e.shape),aa(a,0).reshape(e.shape)]}}),Yo=Object.freeze({gramSchmidt:Ko,qr:Xo});function Jo(e,t,n,r,a){null==r&&(r=.5),null==a&&(a=Number.NEGATIVE_INFINITY);var i=e.shape[0];return n=Math.min(n,i),d(0<=r&&r<=1,"iouThreshold must be in [0, 1], but was '"+r+"'"),d(2===e.rank,"boxes must be a 2D tensor, but was of rank '"+e.rank+"'"),d(4===e.shape[1],"boxes must have 4 columns, but 2nd dimension was "+e.shape[1]),d(1===t.rank,"scores must be a 1D tensor"),d(t.shape[0]===i,"scores has incompatible shape with boxes. Expected "+i+", but was "+t.shape[0]),{maxOutputSize:n,iouThreshold:r,scoreThreshold:a}}var Zo=Je({resizeBilinear_:function(e,t,n){void 0===n&&(n=!1);var r=Xe(e,"images","resizeBilinear");d(3===r.rank||4===r.rank,"Error in resizeBilinear: x must be rank 3 or 4, but got rank "+r.rank+"."),d(2===t.length,"Error in resizeBilinear: new shape must 2D, but got shape "+t+".");var a=r,i=!1;3===r.rank&&(i=!0,a=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var o=t[0],s=t[1],u=me.engine.runKernel(function(e,t){return e.resizeBilinear(a,o,s,n)},{batchImages:a},function(e,t){return{batchImages:function(){return me.engine.runKernel(function(t){return t.resizeBilinearBackprop(e,a,n)},{})}}});return i?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),Qo=Je({resizeNearestNeighbor_:function(e,t,n){void 0===n&&(n=!1);var r=Xe(e,"images","resizeNearestNeighbor");d(3===r.rank||4===r.rank,"Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank "+r.rank+"."),d(2===t.length,"Error in resizeNearestNeighbor: new shape must 2D, but got shape "+t+"."),d("float32"===r.dtype||"int32"===r.dtype,"`images` must have `int32` or `float32` as dtype");var a=r,i=!1;3===r.rank&&(i=!0,a=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var o=t[0],s=t[1],u=me.engine.runKernel(function(e,t){return e.resizeNearestNeighbor(a,o,s,n)},{batchImages:a},function(e,t){return{batchImages:function(){return me.engine.runKernel(function(t){return t.resizeNearestNeighborBackprop(e,a,n)},{})}}});return i?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),es=Je({nonMaxSuppression_:function(e,t,n,r,a){void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY);var i=Xe(e,"boxes","nonMaxSuppression"),o=Xe(t,"scores","nonMaxSuppression"),s=Jo(i,o,n,r,a);return n=s.maxOutputSize,r=s.iouThreshold,a=s.scoreThreshold,me.engine.runKernel(function(e){return e.nonMaxSuppression(i,o,n,r,a)},{$boxes:i})}}),ts=Object.freeze({resizeBilinear:Zo,resizeNearestNeighbor:Qo,nonMaxSuppression:es,nonMaxSuppressionAsync:function(e,t,n,r,a){return void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY),l(this,void 0,void 0,function(){var i,o,s,u,l,f;return c(this,function(c){switch(c.label){case 0:return i=Xe(e,"boxes","nonMaxSuppressionAsync"),o=Xe(t,"scores","nonMaxSuppressionAsync"),s=Jo(i,o,n,r,a),n=s.maxOutputSize,r=s.iouThreshold,a=s.scoreThreshold,[4,i.data()];case 1:return u=c.sent(),[4,o.data()];case 2:return l=c.sent(),f=Ct(u,l,n,r,a),i!==e&&i.dispose(),o!==t&&o.dispose(),[2,f]}})})},cropAndResize:function(e,t,n,r,a,i){var o=Xe(e,"image","cropAndResize","float32"),s=Xe(t,"boxes","cropAndResize","float32"),u=Xe(n,"boxInd","cropAndResize","int32");a=a||"bilinear",i=i||0;var l=s.shape[0];return d(4===o.rank,"Error in cropAndResize: image must be rank 4,but got rank "+o.rank+"."),d(2===s.rank&&4===s.shape[1],"Error in cropAndResize: boxes must be have size ["+l+",4] but had shape "+s.shape+"."),d(1===u.rank&&u.shape[0]===l,"Error in cropAndResize: boxInd must be have size ["+l+"] but had shape "+s.shape+"."),d("int32"===u.dtype,"Error in cropAndResize: boxInd must be of dtype int32, but got dtype "+u.dtype+"."),d(2===r.length,"Error in cropAndResize: cropSize must be of length 2, but got length "+r.length+"."),d(r[0]>=1&&r[1]>=1,"cropSize must be atleast [1,1], but was "+r),d("bilinear"===a||"nearest"===a,"method must be bilinear or nearest, but was "+a),me.engine.runKernel(function(e,t){return e.cropAndResize(o,s,u,r,a,i)},{$image:o,$boxes:s})}}),ns=Object.freeze({image:ts,linalg:Yo,losses:Go,op:Je,batchNormalization2d:qa,batchNormalization3d:$a,batchNormalization4d:Ga,batchNormalization:Ha,complex:Qe,real:et,imag:tt,concat:vr,concat1d:br,concat2d:wr,concat3d:xr,concat4d:_r,split:Er,conv1d:ii,conv2d:oi,depthwiseConv2d:si,separableConv2d:ui,conv2dTranspose:li,matMul:Qa,dot:ei,outerProduct:ti,reverse:ci,reverse1d:fi,reverse2d:pi,reverse3d:hi,reverse4d:di,maxPool:mi,avgPool:gi,slice:yi,slice1d:vi,slice2d:bi,slice3d:wi,slice4d:xi,abs:fa,acos:pa,acosh:ha,asin:da,asinh:ma,atan:ga,atanh:ya,ceil:va,clipByValue:ba,cos:wa,cosh:xa,erf:_a,exp:Ea,expm1:Na,floor:Sa,log:Oa,log1p:ka,logSigmoid:Ia,neg:Ca,reciprocal:Pa,round:Aa,rsqrt:Ta,sigmoid:Ma,sign:Ra,sin:Da,sinh:ja,softplus:La,sqrt:Ba,square:za,step:Fa,tan:Va,tanh:Ua,all:Ei,any:Ni,argMax:Si,argMin:Oi,logSumExp:ki,max:Ii,mean:Ci,min:Pi,moments:Ai,sum:Ti,equal:Mi,equalStrict:Ri,greater:Di,greaterEqual:ji,greaterEqualStrict:Li,greaterStrict:Bi,less:zi,lessEqual:Fi,lessEqualStrict:Vi,lessStrict:Ui,notEqual:Wi,notEqualStrict:qi,add:$i,addN:Gi,addStrict:Hi,atan2:Ki,div:Xi,divStrict:Yi,floorDiv:Ji,maximum:Zi,maximumStrict:Qi,minimum:eo,minimumStrict:to,mod:no,modStrict:ro,mul:ao,mulStrict:io,pow:oo,powStrict:so,squaredDifference:uo,squaredDifferenceStrict:lo,sub:co,subStrict:fo,elu:bo,leakyRelu:wo,prelu:xo,relu:_o,selu:Eo,logicalAnd:po,logicalNot:ho,logicalOr:mo,logicalXor:go,where:yo,whereAsync:vo,buffer:Dr,toPixels:Rr,print:jr,batchToSpaceND:Lr,cast:Br,clone:zr,cumsum:Fr,depthToSpace:Vr,expandDims:Ur,eye:Wr,fromPixels:qr,multinomial:$r,oneHot:Gr,pad:Hr,pad1d:Kr,pad2d:Xr,pad3d:Yr,pad4d:Jr,rand:Zr,randomNormal:Qr,randomUniform:ea,reshape:ta,spaceToBatchND:na,squeeze:ra,stack:aa,tile:ia,truncatedNormal:oa,unstack:sa,fill:pt,linspace:ht,ones:ct,range:dt,scalar:rt,tensor:nt,tensor1d:at,tensor2d:it,tensor3d:ot,tensor4d:st,tensor5d:ut,tensor6d:lt,zeros:ft,onesLike:xt,zerosLike:_t,transpose:No,softmax:Ze,localResponseNormalization:So,norm:Oo,gather:Po,unsortedSegmentSum:Ao,basicLSTMCell:To,multiRNNCell:Mo,movingAverage:Ro,stridedSlice:Do,topk:jo}),rs=function(){function e(){this.blockSize=48,this.data=new WeakMap,this.firstUse=!0,me.get("IS_BROWSER")&&(this.canvas=document.createElement("canvas"))}return e.prototype.register=function(e,t,n){if(this.firstUse&&(this.firstUse=!1,me.get("IS_NODE")&&Ce("\n============================\nHi there πŸ‘‹. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details.\n============================\n")),this.data.has(e))throw new Error("Data buffer is already registered");this.data.set(e,{dtype:n})},e.prototype.write=function(e,t){if(null==t)throw new Error("MathBackendCPU.write(): values can not be null");this.throwIfNoData(e),this.data.get(e).values=t},e.prototype.fromPixels=function(e,t){if(null==e)throw new Error("pixels passed to tf.fromPixels() can not be null");var n,r;if(me.get("IS_NODE")&&null==e.getContext)throw new Error("When running in node, pixels must be an HTMLCanvasElement like the one returned by the `canvas` npm package");if(null!=e.getContext)n=e.getContext("2d").getImageData(0,0,e.width,e.height).data;else if(e instanceof ImageData)n=e.data;else{if(!(e instanceof HTMLImageElement||e instanceof HTMLVideoElement))throw new Error("pixels passed to tf.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement or ImageData, but was "+e.constructor.name);if(null==this.canvas)throw new Error("Can't read pixels from HTMLImageElement outside the browser.");this.canvas.width=e.width,this.canvas.height=e.height,this.canvas.getContext("2d").drawImage(e,0,0,e.width,e.height),n=this.canvas.getContext("2d").getImageData(0,0,e.width,e.height).data}if(4===t)r=new Int32Array(n);else{var a=e.width*e.height;r=new Int32Array(a*t);for(var i=0;ip&&(p=m,h=d)}u[c]=h}return o},e.prototype.cumsum=function(e,t,n,r){if(this.assertNotComplex(e,"cumsum"),t!==e.rank-1)throw new Error("backend.cumsum in CPU expects an inner-most axis="+(e.rank-1)+" but got axis="+t);for(var a=Nt(e.dtype,"int32"),i=ft(e.shape,a),o=i.dataSync(),s=e.dataSync(),u=e.shape[e.rank-1],l=r?function(e,t){return e+u-t-1}:function(e,t){return e+t},c=0;ct?1:0})},e.prototype.greaterEqual=function(e,t){return this.assertNotComplex([e,t],"greaterEqual"),this.broadcastedBinaryOp(e,t,"bool",function(e,t){return e>=t?1:0})},e.prototype.logicalNot=function(e){this.assertNotComplex(e,"logicalNot");for(var t=e.dataSync(),n=new Int32Array(t.length),r=0;r1||1===t.rank?1:t.shape[1],c=0;c=0&&t>=0?n:(n+t)%t})},e.prototype.max=function(e,t){this.assertNotComplex(e,"max"),ze("max",t,e.rank);for(var n=je(e.shape,t),r=n[0],a=n[1],i=ft(r,e.dtype),o=b(a),s=i.dataSync(),u=e.dataSync(),l=0;lf&&(f=h)}s[l]=f}return i},e.prototype.maximum=function(e,t){return this.assertNotComplex([e,t],"maximum"),this.broadcastedBinaryOp(e,t,e.dtype,function(e,t){return Math.max(e,t)})},e.prototype.all=function(e,t){this.assertNotComplex(e,"all"),ze("all",t,e.rank);for(var n=je(e.shape,t),r=n[0],a=n[1],i=ft(r,e.dtype),o=b(a),s=i.dataSync(),u=e.dataSync(),l=0;l0?n[r]=1:n[r]=0;return Q.make(e.shape,{values:n})},e.prototype.round=function(e){this.assertNotComplex(e,"round");for(var t=e.dataSync(),n=new Float32Array(t.length),r=0;r.5?n[r]=Math.ceil(t[r]):n[r]=a%2==0?a:a+1}return Q.make(e.shape,{values:n})},e.prototype.exp=function(e){this.assertNotComplex(e,"exp");for(var t=e.dataSync(),n=new Float32Array(t.length),r=0;r=0?a:Math.exp(a)-1}return Q.make(e.shape,{values:t})},e.prototype.eluDer=function(e,t){this.assertNotComplex([e,t],"eluDer");for(var n=new Float32Array(t.size),r=t.dataSync(),a=e.dataSync(),i=0;i=1?a[i]:a[i]*(o+1)}return Q.make(t.shape,{values:n})},e.prototype.selu=function(e){this.assertNotComplex(e,"selu");for(var t=new Float32Array(e.size),n=e.dataSync(),r=0;r=0?1.0507009873554805*a:1.7580993408473768*(Math.exp(a)-1)}return Q.make(e.shape,{values:t})},e.prototype.clip=function(e,t,n){this.assertNotComplex(e,"clip");for(var r=new Float32Array(e.size),a=e.dataSync(),i=0;in?n:o-t,s=r[a]0?1:t}return Q.make(e.shape,{values:n})},e.prototype.conv2d=function(e,t,n){this.assertNotComplex([e,t],"conv2d");for(var r=n.filterHeight,a=n.filterWidth,i=n.dilationHeight,o=n.dilationWidth,s=n.padInfo.left,u=n.padInfo.top,l=Dr(n.outShape,e.dtype),c=e.dataSync(),f=t.dataSync(),p=l.values,h=0;h=n.inHeight))for(var x=b*t.strides[0],_=d+w*e.strides[1],E=0;E=n.inWidth))for(var I=x+O*t.strides[1],C=_+k*n.inChannels,P=I,A=0;A=n.inHeight))for(var _=w*t.strides[0],E=m+x*e.strides[1],N=0;N=n.inWidth))for(var C=_+k*t.strides[1],P=E+I*n.inChannels,A=S,T=C,M=0;Mx?x=O:"avg"===n&&(_+=O,E++)}if(isNaN(x))break}s.set("avg"===n?_/E:x,f,h,y,p)}return s.toTensor()},e.prototype.maxPool=function(e,t){return this.pool(e,t,"max")},e.prototype.maxPoolPositions=function(e,t){for(var n=Dr(t.outShape,"int32"),r=t.strideHeight,a=t.strideWidth,i=t.filterHeight,o=t.filterWidth,s=t.padInfo.top,u=t.padInfo.left,l=0;lb&&(b=S,w=_*o+N)}n.set(w,l,f,m,c)}return n.toTensor()},e.prototype.maxPoolBackprop=function(e,t,n,r){this.assertNotComplex([t,n],"maxPoolBackprop");for(var a=this.maxPoolPositions(t,r),i=r.strideHeight,o=r.strideWidth,s=r.filterHeight,u=r.filterWidth,l=u-1-r.padInfo.left,c=s-1-r.padInfo.top,f=Dr(t.shape,"float32"),p=0;p=r.outHeight||Math.floor(w)!==w))for(var x=0;x=r.outWidth||Math.floor(_)!==_)){var E=s*u-1-a.get(p,w,_,h)===b*u+x?1:0;0!==E&&(v+=e.get(p,w,_,h)*E)}}}f.set(v,p,d,m,h)}return f.toTensor()},e.prototype.avgPoolBackprop=function(e,t,n){this.assertNotComplex([e,t],"avgPoolBackprop");for(var r=n.strideHeight,a=n.strideWidth,i=n.filterHeight,o=n.filterWidth,s=o-1-n.padInfo.left,u=i-1-n.padInfo.top,l=Dr(t.shape,"float32"),c=1/(i*o),f=0;f=n.outHeight||Math.floor(b)!==b))for(var w=0;w=n.outWidth||Math.floor(x)!==x||(y+=e.get(f,b,x,p))}}l.set(y*c,f,h,d,p)}return l.toTensor()},e.prototype.cast=function(e,t){return Ot(e,t,this)},e.prototype.reshape=function(e,t){return kt(e,t)},e.prototype.avgPool=function(e,t){return this.assertNotComplex(e,"avgPool"),this.pool(e,t,"avg").toFloat()},e.prototype.resizeBilinear=function(e,t,n,r){this.assertNotComplex(e,"resizeBilinear");for(var a=e.shape,i=a[0],o=a[1],s=a[2],u=a[3],l=Dr([i,t,n,u],e.dtype),c=[r&&t>1?o-1:o,r&&n>1?s-1:s],f=[r&&t>1?t-1:t,r&&n>1?n-1:n],p=0;p1?i-1:i,n&&c>1?o-1:o],h=[n&&l>1?l-1:l,n&&c>1?c-1:c],d=p[0]/h[0],m=p[1]/h[1],g=0;g1?o-1:o,r&&n>1?s-1:s],f=[r&&t>1?t-1:t,r&&n>1?n-1:n],p=0;p1?i-1:i,n&&c>1?o-1:o],h=[n&&l>1?l-1:l,n&&c>1?c-1:c],d=1/(p[0]/h[0]),m=1/(p[1]/h[1]),g=2*Math.ceil(d)+2,y=2*Math.ceil(m)+2,v=0;v=l))for(var C=0;C=c)){var A=p[0]*(I/h[0]),T=p[1]*(P/h[1]),M=Math.min(i-1,n?Math.round(A):Math.floor(A)),R=Math.min(o-1,n?Math.round(T):Math.floor(T));b===M&&w===R&&(O+=e.get(v,I,P,S))}}}f.set(O,v,b,w,S)}return f.toTensor()},e.prototype.batchNormalization=function(e,t,n,r,a,i){this.assertNotComplex([e,t,n,a,i],"batchNormalization");for(var o=e.dataSync(),s=t.dataSync(),u=n.dataSync(),l=a?a.dataSync():new Float32Array([1]),c=i?i.dataSync():new Float32Array([0]),f=new Float32Array(o.length),p=c.length,h=l.length,d=u.length,m=s.length,g=0,y=0,v=0,b=0,w=0;w=p&&(g=0),y>=m&&(y=0),v>=h&&(v=0),b>=d&&(b=0);return st(f,e.shape)},e.prototype.localResponseNormalization4D=function(e,t,n,r,a){this.assertNotComplex(e,"localResponseNormalization4D");var i=e.shape[3],o=i-1,s=e.dataSync(),u=b(e.shape),l=new Float32Array(u);function c(e){for(var n=e%i,r=e-n+Math.max(0,n-t),a=e-n+Math.min(n+t,o),u=0;r<=a;r++){var l=s[r];u+=l*l}return u}for(var f=0;f=0&&e.get(i)1,"blockSize should be > 1 for depthToSpace, but was: "+t);for(var r=e.shape[0],a=e.shape[1],i=e.shape[2],o=e.shape[3],s=a*t,u=i*t,l=o/(t*t),c=e.dataSync(),f=new Float32Array(r*s*u*l),p=0,h=0;h=s))for(var k=p>1?(N-_)*(u-1)/(p-1):0,I=h>1?(S-E)*(l-1)/(h-1):0,C=0;C1?_*(u-1)+C*k:.5*(_+N)*(u-1);if(P<0||P>u-1)for(var A=0;A1?E*(l-1)+A*I:.5*(E+S)*(l-1))<0||$>l-1)for(T=0;T1?E*(l-1)+A*I:.5*(E+S)*(l-1))<0||$>l-1)for(T=0;T0,"scheme must not be an empty string.");var r=e.getInstance();d(null==r.managers[t],"A model store manager is already registered for scheme '"+t+"'."),r.managers[t]=n},e.getManager=function(e){var t=this.getInstance().managers[e];if(null==t)throw new Error("Cannot find model manager for scheme '"+e+"'");return t},e.getSchemes=function(){return Object.keys(this.getInstance().managers)},e}();function gs(e){if(-1===e.indexOf(ds))throw new Error("The url string provided does not contain a scheme. Supported schemes are: "+ms.getSchemes().join(","));return{scheme:e.split(ds)[0],path:e.split(ds)[1]}}function ys(e,t,n){return void 0===n&&(n=!1),l(this,void 0,void 0,function(){var r,a,i,o,s,u,l,f,p;return c(this,function(c){switch(c.label){case 0:return d(e!==t,"Old path and new path are the same: '"+e+"'"),d((r=hs.getLoadHandlers(e)).length>0,"Copying failed because no load handler is found for source URL "+e+"."),d(r.length<2,"Copying failed because more than one ("+r.length+") load handlers for source URL "+e+"."),a=r[0],d((i=hs.getSaveHandlers(t)).length>0,"Copying failed because no save handler is found for destination URL "+t+"."),d(i.length<2,"Copying failed because more than one ("+r.length+") save handlers for destination URL "+t+"."),o=i[0],s=gs(e).scheme,u=gs(e).path,l=s===gs(e).scheme,[4,a.load()];case 1:return f=c.sent(),n&&l?[4,ms.getManager(s).removeModel(u)]:[3,3];case 2:c.sent(),c.label=3;case 3:return[4,o.save(f)];case 4:return p=c.sent(),!n||l?[3,6]:[4,ms.getManager(s).removeModel(u)];case 5:c.sent(),c.label=6;case 6:return[2,p.modelArtifactsInfo]}})})}var vs="models_store",bs="model_info_store";function ws(){if(!me.get("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");var e=window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(null==t)throw new Error("The current browser does not appear to support IndexedDB.");return t}function xs(e){var t=e.result;t.createObjectStore(vs,{keyPath:"modelPath"}),t.createObjectStore(bs,{keyPath:"modelPath"})}var _s=function(){function e(e){if(this.indexedDB=ws(),null==e||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}return e.prototype.save=function(e){return l(this,void 0,void 0,function(){return c(this,function(t){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return[2,this.databaseAction(this.modelPath,e)]})})},e.prototype.load=function(){return l(this,void 0,void 0,function(){return c(this,function(e){return[2,this.databaseAction(this.modelPath)]})})},e.prototype.databaseAction=function(e,t){var n=this;return new Promise(function(e,r){var a=n.indexedDB.open("tensorflowjs",1);a.onupgradeneeded=function(){return xs(a)},a.onsuccess=function(){var i=a.result;if(null==t){var o=i.transaction(vs,"readonly"),s=o.objectStore(vs).get(n.modelPath);s.onsuccess=function(){if(null==s.result)return i.close(),r(new Error("Cannot find model with path '"+n.modelPath+"' in IndexedDB."));e(s.result.modelArtifacts)},s.onerror=function(e){return i.close(),r(s.error)},o.oncomplete=function(){return i.close()}}else{var u,l=ps(t),c=i.transaction(bs,"readwrite"),f=c.objectStore(bs),p=f.put({modelPath:n.modelPath,modelArtifactsInfo:l});p.onsuccess=function(){var a=(u=i.transaction(vs,"readwrite")).objectStore(vs).put({modelPath:n.modelPath,modelArtifacts:t,modelArtifactsInfo:l});a.onsuccess=function(){return e({modelArtifactsInfo:l})},a.onerror=function(e){var t=(f=c.objectStore(bs)).delete(n.modelPath);t.onsuccess=function(){return i.close(),r(a.error)},t.onerror=function(e){return i.close(),r(a.error)}}},p.onerror=function(e){return i.close(),r(p.error)},c.oncomplete=function(){null==u?i.close():u.oncomplete=function(){return i.close()}}}},a.onerror=function(e){return r(a.error)}})},e.URL_SCHEME="indexeddb://",e}(),Es=function(e){return me.get("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(_s.URL_SCHEME)?function(e){return new _s(e)}(e.slice(_s.URL_SCHEME.length)):null};hs.registerSaveRouter(Es),hs.registerLoadRouter(Es);var Ns=function(){function e(){this.indexedDB=ws()}return e.prototype.listModels=function(){return l(this,void 0,void 0,function(){var e=this;return c(this,function(t){return[2,new Promise(function(t,n){var r=e.indexedDB.open("tensorflowjs",1);r.onupgradeneeded=function(){return xs(r)},r.onsuccess=function(){var e=r.result,a=e.transaction(bs,"readonly"),i=a.objectStore(bs).getAll();i.onsuccess=function(){for(var e={},n=0,r=i.result;n0,"URL path for browserHTTPRequest must not be null, undefined or empty."),Array.isArray(e)&&d(2===e.length,"URL paths for browserHTTPRequest must have a length of 2, (actual length is "+e.length+")."),this.path=e,null!=t&&null!=t.body)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t||{}}return e.prototype.save=function(e){return l(this,void 0,void 0,function(){var t,n,r,a;return c(this,function(i){switch(i.label){case 0:if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");return(t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit)).body=new FormData,n=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,weightsManifest:n},t.body.append("model.json",new Blob([JSON.stringify(r)],{type:"application/json"}),"model.json"),null!=e.weightData&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:"application/octet-stream"}),"model.weights.bin"),[4,fetch(this.path,t)];case 1:if(200===(a=i.sent()).status)return[2,{modelArtifactsInfo:ps(e),responses:[a]}];throw new Error("BrowserHTTPRequest.save() failed due to HTTP response status "+a.status+".")}})})},e.prototype.load=function(){return l(this,void 0,void 0,function(){return c(this,function(e){return[2,Array.isArray(this.path)?this.loadBinaryModel():this.loadJSONModel()]})})},e.prototype.loadBinaryTopology=function(){return l(this,void 0,void 0,function(){var e;return c(this,function(t){switch(t.label){case 0:return t.trys.push([0,3,,4]),[4,fetch(this.path[0],this.requestInit)];case 1:return[4,t.sent().arrayBuffer()];case 2:return[2,t.sent()];case 3:throw e=t.sent(),new Error(this.path[0]+" not found. "+e);case 4:return[2]}})})},e.prototype.loadBinaryModel=function(){return l(this,void 0,void 0,function(){var e,t,n,r,a,i,o,s;return c(this,function(u){switch(u.label){case 0:return e=this.loadBinaryTopology(),[4,fetch(this.path[1],this.requestInit)];case 1:return t=u.sent(),[4,Promise.all([e,t])];case 2:return n=u.sent(),r=n[0],[4,n[1].json()];case 3:return null==(a=u.sent())?[3,5]:[4,this.loadWeights(a)];case 4:s=u.sent(),i=s[0],o=s[1],u.label=5;case 5:return[2,{modelTopology:r,weightSpecs:i,weightData:o}]}})})},e.prototype.loadJSONModel=function(){return l(this,void 0,void 0,function(){var e,t,n,r,a,i,o;return c(this,function(s){switch(s.label){case 0:return[4,fetch(this.path,this.requestInit)];case 1:return[4,s.sent().json()];case 2:if(e=s.sent(),t=e.modelTopology,n=e.weightsManifest,null==t&&null==n)throw new Error("The JSON from HTTP path "+this.path+" contains neither model topology or manifest for weights.");return null==n?[3,4]:(i=e.weightsManifest,[4,this.loadWeights(i)]);case 3:o=s.sent(),r=o[0],a=o[1],s.label=4;case 4:return[2,{modelTopology:t,weightSpecs:r,weightData:a}]}})})},e.prototype.loadWeights=function(e){return l(this,void 0,void 0,function(){var t,n,r,a,i,o,s,u,l;return c(this,function(c){switch(c.label){case 0:for(t=Array.isArray(this.path)?this.path[1]:this.path,n=[],r=0,a=e;r0&&(e=u({weightSpecs:this.weightSpecs},e)),null!=this.weightData&&this.weightData.byteLength>0&&(e=u({weightData:this.weightData},e)),[2,e]})})},e}(),Hs=function(){function e(e){this.saveHandler=e}return e.prototype.save=function(e){return l(this,void 0,void 0,function(){return c(this,function(t){return[2,this.saveHandler(e)]})})},e}(),Ks=hs.registerSaveRouter,Xs=hs.registerLoadRouter,Ys=hs.getSaveHandlers,Js=hs.getLoadHandlers,Zs=Object.freeze({browserFiles:function(e){return new Fs(e)},browserHTTPRequest:$s,concatenateArrayBuffers:cs,decodeWeights:ss,encodeWeights:function(e){return l(this,void 0,void 0,function(){var t,n,r,a;return c(this,function(i){switch(i.label){case 0:for(r in t=[],n=[],e){if("float32"!==(a=e[r]).dtype&&"int32"!==a.dtype&&"bool"!==a.dtype)throw new Error("Unsupported dtype in weight '"+r+"': "+a.dtype);t.push({name:r,shape:a.shape,dtype:a.dtype}),n.push(a.data())}return[4,Promise.all(n)];case 1:return[2,{data:function(e){if(null===e)throw new Error("Invalid input value: "+JSON.stringify(e));var t=0,n=[];e.forEach(function(e){if(t+=e.byteLength,n.push(e.byteLength===e.buffer.byteLength?e:new e.constructor(e)),!(e instanceof Float32Array||e instanceof Int32Array||e instanceof Uint8Array))throw new Error("Unsupported TypedArray subtype: "+e.constructor.name)});var r=new Uint8Array(t),a=0;return n.forEach(function(e){r.set(new Uint8Array(e.buffer),a),a+=e.byteLength}),r.buffer}(i.sent()),specs:t}]}})})},fromMemory:function(e,t,n){return new Gs(e,t,n)},getLoadHandlers:Js,getModelArtifactsInfoForJSON:ps,getSaveHandlers:Ys,loadWeights:function(e,t,n,r){return void 0===t&&(t=""),l(this,void 0,void 0,function(){var a,i,o,s,u,l,f,p,h,d;return c(this,function(c){switch(c.label){case 0:if(a=e.map(function(){return!1}),i={},o=null!=n?n.map(function(){return!1}):[],s=[],e.forEach(function(e,t){var r=0;e.weights.forEach(function(e){var u="quantization"in e?e.quantization.dtype:e.dtype,l=os[u]*b(e.shape),c=function(){a[t]=!0,null==i[t]&&(i[t]=[]),i[t].push({manifestEntry:e,groupOffset:r,sizeBytes:l})};null!=n?n.forEach(function(t,n){t===e.name&&(c(),o[n]=!0)}):c(),s.push(e.name),r+=l})}),!o.every(function(e){return e}))throw u=n.filter(function(e,t){return!o[t]}),new Error("Could not find weights in manifest with names: "+u.join(", ")+". \nManifest JSON has weights with names: "+s.join(", ")+".");return l=a.reduce(function(e,t,n){return t&&e.push(n),e},[]),f=[],l.forEach(function(n){e[n].paths.forEach(function(e){var n=t+(t.endsWith("/")?"":"/")+e;f.push(n)})}),[4,Vs(f,r)];case 1:return p=c.sent(),h={},d=0,l.forEach(function(t){for(var n=e[t].paths.length,r=0,a=0;a0,"Class being registered has an empty-string as its className, which is disallowed."),eu.register(e)}var nu=Object.freeze({Serializable:Qs,SerializationMap:eu,registerClass:tu});function ru(e,t,n){if(null==n&&(n=me.get("TEST_EPSILON")),e instanceof Q||t instanceof Q){if(e instanceof Q&&t instanceof Q){if(e.dtype!==t.dtype)throw new Error("Arrays are of different type actual: "+e.dtype+" vs expected: "+t.dtype+".");if(!w(e.shape,t.shape))throw new Error("Arrays are of different shape actual: "+e.shape+" vs expected: "+t.shape+".")}}else{var r=e.constructor.name,a=t.constructor.name;if(r!==a)throw new Error("Arrays are of different type actual: "+r+" vs expected: "+a)}var i,o;if(i=e instanceof Q?e.dataSync():e,o=t instanceof Q?t.dataSync():t,i.length!==o.length)throw new Error("Arrays have different lengths actual: "+i.length+" vs expected: "+o.length+".\nActual: "+i+".\nExpected: "+o+".");for(var s=0;sn)}var iu=Object.freeze({WEBGL_ENVS:{HAS_WEBGL:!0},NODE_ENVS:{IS_NODE:!0},CHROME_ENVS:{IS_CHROME:!0},BROWSER_ENVS:{IS_BROWSER:!0},CPU_ENVS:{HAS_WEBGL:!1},ALL_ENVS:{},expectArraysClose:ru,expectPromiseToFail:function(e,t){e().then(function(){return t.fail()},function(){return t()})},expectArraysEqual:function(e,t){return ru(e,t,0)},expectNumbersClose:function(e,t,n){if(null==n&&(n=me.get("TEST_EPSILON")),!au(e,t,n))throw new Error("Numbers differ: actual === "+e+", expected === "+t)},expectValuesInRange:function(e,t,n){var r;r=e instanceof Q?e.dataSync():e;for(var a=0;an)throw new Error("Value out of range:"+r[a]+" low: "+t+", high: "+n)},expectArrayBuffersEqual:function(e,t){expect(new Float32Array(e)).toEqual(new Float32Array(t))}}),ou="0.13.0",su=Object.freeze({gpgpu_util:ar,webgl_util:Ln,MathBackendWebGL:ca,GPGPUContext:ir}),uu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return s(t,e),t.prototype.minimize=function(e,t,n){void 0===t&&(t=!1);var r=this.computeGradients(e,n),a=r.value,i=r.grads;return this.applyGradients(i),Object.keys(i).forEach(function(e){return i[e].dispose()}),t?a:(a.dispose(),null)},t.prototype.computeGradients=function(e,t){return xe(e,t)},t}(Qs),lu=function(e){function t(t,n,r){void 0===r&&(r=null);var a=e.call(this)||this;return a.learningRate=t,a.rho=n,a.epsilon=r,a.accumulatedGrads={},a.accumulatedUpdates={},a.c=Se(rt(-t)),a.rhoScalar=Se(rt(n)),a.oneMinusRho=Se(rt(1-n)),null===r&&(r=me.get("EPSILON")),a.epsilonScalar=Se(rt(r)),a}return s(t,e),t.prototype.applyGradients=function(e){var t=this,n=function(n){var a=me.engine.registeredVariables[n];null==r.accumulatedGrads[n]&&Ne(function(){t.accumulatedGrads[n]=_t(a).variable(!1)}),null==r.accumulatedUpdates[n]&&Ne(function(){t.accumulatedUpdates[n]=_t(a).variable(!1)});var i=e[n],o=r.accumulatedGrads[n],s=r.accumulatedUpdates[n];Ne(function(){var e=t.rhoScalar.mul(o).add(t.oneMinusRho.mul(i.square())),r=s.add(t.epsilonScalar).sqrt().div(o.add(t.epsilonScalar).sqrt()).mul(i),u=t.rhoScalar.mul(s).add(t.oneMinusRho.mul(r.square()));t.accumulatedGrads[n].assign(e),t.accumulatedUpdates[n].assign(u);var l=t.c.mul(r).add(a);a.assign(l)})},r=this;for(var a in e)n(a)},t.prototype.dispose=function(){var e=this;this.c.dispose(),this.epsilonScalar.dispose(),this.rhoScalar.dispose(),this.oneMinusRho.dispose(),null!=this.accumulatedUpdates&&(Object.keys(this.accumulatedUpdates).forEach(function(t){return e.accumulatedUpdates[t].dispose()}),Object.keys(this.accumulatedGrads).forEach(function(t){return e.accumulatedGrads[t].dispose()}))},t.prototype.getConfig=function(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}},t.fromConfig=function(e,t){return new e(t.learningRate,t.rho,t.epsilon)},t.className="AdadeltaOptimizer",t}(uu);tu(lu);var cu=function(e){function t(t,n){void 0===n&&(n=.1);var r=e.call(this)||this;return r.learningRate=t,r.initialAccumulatorValue=n,r.accumulatedGrads={},r.c=Se(rt(-t)),r.epsilon=Se(rt(me.get("EPSILON"))),r}return s(t,e),t.prototype.applyGradients=function(e){var t=this,n=function(n){var a=me.engine.registeredVariables[n];null==r.accumulatedGrads[n]&&Ne(function(){t.accumulatedGrads[n]=pt(a.shape,t.initialAccumulatorValue).variable(!1)});var i=e[n],o=r.accumulatedGrads[n];Ne(function(){var e=o.add(i.square());t.accumulatedGrads[n].assign(e);var r=t.c.mul(i.div(e.add(t.epsilon).sqrt())).add(a);a.assign(r)})},r=this;for(var a in e)n(a)},t.prototype.dispose=function(){var e=this;this.epsilon.dispose(),this.c.dispose(),null!=this.accumulatedGrads&&Object.keys(this.accumulatedGrads).forEach(function(t){return e.accumulatedGrads[t].dispose()})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}},t.fromConfig=function(e,t){return new e(t.learningRate,t.initialAccumulatorValue)},t.className="AdagradOptimizer",t}(uu);tu(cu);var fu=function(e){function t(t,n,r,a){void 0===a&&(a=null);var i=e.call(this)||this;return i.learningRate=t,i.beta1=n,i.beta2=r,i.epsilon=a,i.accumulatedFirstMoment={},i.accumulatedSecondMoment={},i.c=Se(rt(-t)),i.beta1Scalar=Se(rt(n)),i.beta2Scalar=Se(rt(r)),Ne(function(){i.accBeta1=rt(n).variable(),i.accBeta2=rt(r).variable()}),i.oneMinusBeta1=Se(rt(1-n)),i.oneMinusBeta2=Se(rt(1-r)),i.one=Se(rt(1)),null===a&&(a=me.get("EPSILON")),i.epsScalar=Se(rt(a)),i}return s(t,e),t.prototype.applyGradients=function(e){var t=this;Ne(function(){var n=t.one.sub(t.accBeta1),r=t.one.sub(t.accBeta2);for(var a in e){var i=me.engine.registeredVariables[a];if(null==t.accumulatedFirstMoment[a]){var o=!1;t.accumulatedFirstMoment[a]=_t(i).variable(o)}null==t.accumulatedSecondMoment[a]&&(o=!1,t.accumulatedSecondMoment[a]=_t(i).variable(o));var s=e[a],u=t.accumulatedFirstMoment[a],l=t.accumulatedSecondMoment[a],c=t.beta1Scalar.mul(u).add(t.oneMinusBeta1.mul(s)),f=t.beta2Scalar.mul(l).add(t.oneMinusBeta2.mul(s.square())),p=c.div(n),h=f.div(r);t.accumulatedFirstMoment[a].assign(c),t.accumulatedSecondMoment[a].assign(f);var d=t.c.mul(p.div(t.epsScalar.add(h.sqrt()))).add(i);i.assign(d)}t.accBeta1.assign(t.accBeta1.mul(t.beta1Scalar)),t.accBeta2.assign(t.accBeta2.mul(t.beta2Scalar))})},t.prototype.dispose=function(){var e=this;this.c.dispose(),this.epsScalar.dispose(),this.beta1Scalar.dispose(),this.beta2Scalar.dispose(),this.accBeta1.dispose(),this.accBeta2.dispose(),this.oneMinusBeta1.dispose(),this.oneMinusBeta2.dispose(),this.one.dispose(),null!=this.accumulatedFirstMoment&&Object.keys(this.accumulatedFirstMoment).forEach(function(t){return e.accumulatedFirstMoment[t].dispose()}),null!=this.accumulatedSecondMoment&&Object.keys(this.accumulatedSecondMoment).forEach(function(t){return e.accumulatedSecondMoment[t].dispose()})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}},t.fromConfig=function(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)},t.className="AdamOptimizer",t}(uu);tu(fu);var pu=function(e){function t(t,n,r,a,i){void 0===a&&(a=null),void 0===i&&(i=0);var o=e.call(this)||this;return o.learningRate=t,o.beta1=n,o.beta2=r,o.epsilon=a,o.decay=i,o.accumulatedFirstMoment={},o.accumulatedWeightedInfNorm={},o.c=Se(rt(-t)),o.beta1Scalar=Se(rt(n)),o.beta2Scalar=Se(rt(r)),o.decayScalar=Se(rt(i)),Ne(function(){o.iteration=rt(0).variable(),o.accBeta1=rt(n).variable()}),o.oneMinusBeta1=Se(rt(1-n)),o.one=Se(rt(1)),null===a&&(a=me.get("EPSILON")),o.epsScalar=Se(rt(a)),o}return s(t,e),t.prototype.applyGradients=function(e){var t=this;Ne(function(){var n=t.one.sub(t.accBeta1),r=t.c.div(t.one.add(t.decayScalar.mul(t.iteration)));for(var a in e){var i=me.engine.registeredVariables[a];if(null==t.accumulatedFirstMoment[a]){var o=!1;t.accumulatedFirstMoment[a]=_t(i).variable(o)}null==t.accumulatedWeightedInfNorm[a]&&(o=!1,t.accumulatedWeightedInfNorm[a]=_t(i).variable(o));var s=e[a],u=t.accumulatedFirstMoment[a],l=t.accumulatedWeightedInfNorm[a],c=t.beta1Scalar.mul(u).add(t.oneMinusBeta1.mul(s)),f=t.beta2Scalar.mul(l),p=s.abs(),h=f.maximum(p);t.accumulatedFirstMoment[a].assign(c),t.accumulatedWeightedInfNorm[a].assign(h);var d=r.div(n).mul(c.div(t.epsScalar.add(h))).add(i);i.assign(d)}t.iteration.assign(t.iteration.add(t.one)),t.accBeta1.assign(t.accBeta1.mul(t.beta1Scalar))})},t.prototype.dispose=function(){var e=this;this.c.dispose(),this.epsScalar.dispose(),this.accBeta1.dispose(),this.beta1Scalar.dispose(),this.beta2Scalar.dispose(),this.oneMinusBeta1.dispose(),this.decayScalar.dispose(),this.iteration.dispose(),this.one.dispose(),null!=this.accumulatedFirstMoment&&Object.keys(this.accumulatedFirstMoment).forEach(function(t){return e.accumulatedFirstMoment[t].dispose()}),null!=this.accumulatedWeightedInfNorm&&Object.keys(this.accumulatedWeightedInfNorm).forEach(function(t){return e.accumulatedWeightedInfNorm[t].dispose()})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}},t.fromConfig=function(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)},t.className="AdamaxOptimizer",t}(uu);tu(pu);var hu=function(e){function t(t){var n=e.call(this)||this;return n.learningRate=t,n.setLearningRate(t),n}return s(t,e),t.prototype.applyGradients=function(e){var t=this;Object.keys(e).forEach(function(n){var r=e[n],a=me.engine.registeredVariables[n];Ne(function(){var e=t.c.mul(r).add(a);a.assign(e)})})},t.prototype.setLearningRate=function(e){this.learningRate=e,null!=this.c&&this.c.dispose(),this.c=Se(rt(-e))},t.prototype.dispose=function(){this.c.dispose()},t.prototype.getConfig=function(){return{learningRate:this.learningRate}},t.fromConfig=function(e,t){return new e(t.learningRate)},t.className="SGDOptimizer",t}(uu);tu(hu);var du=function(e){function t(t,n,r){void 0===r&&(r=!1);var a=e.call(this,t)||this;return a.learningRate=t,a.momentum=n,a.useNesterov=r,a.m=rt(a.momentum),a.accumulations={},a}return s(t,e),t.prototype.applyGradients=function(e){var t=this,n=function(n){var a=me.engine.registeredVariables[n];null==r.accumulations[n]&&Ne(function(){t.accumulations[n]=_t(a).variable(!1)});var i=r.accumulations[n],o=e[n];Ne(function(){var e,r=t.m.mul(i).add(o);e=t.useNesterov?t.c.mul(o.add(r.mul(t.m))).add(a):t.c.mul(r).add(a),t.accumulations[n].assign(r),a.assign(e)})},r=this;for(var a in e)n(a)},t.prototype.dispose=function(){if(e.prototype.dispose.call(this),this.m.dispose(),null!=this.accumulations)for(var t in this.accumulations)this.accumulations[t].dispose()},t.prototype.setMomentum=function(e){this.momentum=e},t.prototype.getConfig=function(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}},t.fromConfig=function(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)},t.className="MomentumOptimizer",t}(hu);tu(du);var mu=function(e){function t(t,n,r,a,i){void 0===n&&(n=.9),void 0===r&&(r=0),void 0===a&&(a=null),void 0===i&&(i=!1);var o=e.call(this)||this;return o.learningRate=t,o.decay=n,o.momentum=r,o.epsilon=a,o.accumulatedMeanSquares={},o.accumulatedMeanGrads={},o.accumulatedMoments={},o.c=Se(rt(t)),o.decayScalar=Se(rt(n)),o.momentumScalar=Se(rt(r)),o.oneMinusDecay=Se(rt(1-n)),o.centered=i,null===a&&(a=me.get("EPSILON")),o.epsilonScalar=Se(rt(a)),o}return s(t,e),t.prototype.applyGradients=function(e){var t=this,n=function(n){var a=me.engine.registeredVariables[n];null==r.accumulatedMeanSquares[n]&&Ne(function(){t.accumulatedMeanSquares[n]=_t(a).variable(!1)}),null==r.accumulatedMeanGrads[n]&&r.centered&&Ne(function(){t.accumulatedMeanGrads[n]=_t(a).variable(!1)}),null==r.accumulatedMoments[n]&&Ne(function(){t.accumulatedMoments[n]=_t(a).variable(!1)});var i=r.accumulatedMeanSquares[n],o=r.accumulatedMeanGrads[n],s=r.accumulatedMoments[n],u=e[n];Ne(function(){var e=t.decayScalar.mul(i).add(t.oneMinusDecay.mul(u.square()));if(t.centered){var r=t.decayScalar.mul(o).add(t.oneMinusDecay.mul(u)),l=t.momentumScalar.mul(s).add(t.c.mul(u).div(e.sub(r.square().add(t.epsilonScalar)).sqrt()));t.accumulatedMeanSquares[n].assign(e),t.accumulatedMeanGrads[n].assign(r),t.accumulatedMoments[n].assign(l);var c=a.sub(l);a.assign(c)}else{var f=t.decayScalar.mul(i).add(t.oneMinusDecay.mul(u.square()));l=t.momentumScalar.mul(s).add(t.c.mul(u).div(f.add(t.epsilonScalar).sqrt())),t.accumulatedMeanSquares[n].assign(f),t.accumulatedMoments[n].assign(l),c=a.sub(l),a.assign(c)}})},r=this;for(var a in e)n(a)},t.prototype.dispose=function(){var e=this;this.c.dispose(),this.epsilonScalar.dispose(),this.decayScalar.dispose(),this.momentumScalar.dispose(),this.oneMinusDecay.dispose(),null!=this.accumulatedMeanSquares&&Object.keys(this.accumulatedMeanSquares).forEach(function(t){return e.accumulatedMeanSquares[t].dispose()}),null!=this.accumulatedMeanGrads&&this.centered&&Object.keys(this.accumulatedMeanGrads).forEach(function(t){return e.accumulatedMeanGrads[t].dispose()}),null!=this.accumulatedMoments&&Object.keys(this.accumulatedMoments).forEach(function(t){return e.accumulatedMoments[t].dispose()})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}},t.fromConfig=function(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)},t.className="RMSPropOptimizer",t}(uu);tu(mu);var gu=function(){function e(){}return e.sgd=function(e){return new hu(e)},e.momentum=function(e,t,n){return void 0===n&&(n=!1),new du(e,t,n)},e.rmsprop=function(e,t,n,r,a){return void 0===t&&(t=.9),void 0===n&&(n=0),void 0===r&&(r=null),void 0===a&&(a=!1),new mu(e,t,n,r,a)},e.adam=function(e,t,n,r){return void 0===e&&(e=.001),void 0===t&&(t=.9),void 0===n&&(n=.999),void 0===r&&(r=null),new fu(e,t,n,r)},e.adadelta=function(e,t,n){return void 0===e&&(e=.001),void 0===t&&(t=.95),void 0===n&&(n=null),new lu(e,t,n)},e.adamax=function(e,t,n,r,a){return void 0===e&&(e=.002),void 0===t&&(t=.9),void 0===n&&(n=.999),void 0===r&&(r=null),void 0===a&&(a=0),new pu(e,t,n,r,a)},e.adagrad=function(e,t){return void 0===t&&(t=.1),new cu(e,t)},e}(),yu={sgd:gu.sgd,momentum:gu.momentum,adadelta:gu.adadelta,adagrad:gu.adagrad,rmsprop:gu.rmsprop,adamax:gu.adamax,adam:gu.adam},vu=de.setBackend,bu=de.getBackend,wu=de.disposeVariables,xu=de.memory;J=ns}).call(this,n(46),n(26),n(162).setImmediate,n(16).Buffer)},function(e,t,n){var r=n(7),a=n(44),i=n(30),o=n(29),s=n(43),u=function(e,t,n){var l,c,f,p,h=e&u.F,d=e&u.G,m=e&u.S,g=e&u.P,y=e&u.B,v=d?r:m?r[t]||(r[t]={}):(r[t]||{}).prototype,b=d?a:a[t]||(a[t]={}),w=b.prototype||(b.prototype={});for(l in d&&(n=t),n)f=((c=!h&&v&&void 0!==v[l])?v:n)[l],p=y&&c?s(f,r):g&&"function"==typeof f?s(Function.call,f):f,v&&o(v,l,f,e&u.U),b[l]!=f&&i(b,l,p),g&&w[l]!=f&&(w[l]=f)};r.core=a,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,e.exports=u},function(e,t,n){"use strict";n.r(t);var r=n(1),a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])}; /** * @license * Copyright 2018 Google LLC. All Rights Reserved. @@ -48,14 +48,14 @@ var o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__p * See the License for the specific language governing permissions and * limitations under the License. * ============================================================================= - */function i(e,t){function n(){this.constructor=e}a(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&a[a.length-1])&&(6===i[0]||2===i[0])){o=0;continue}if(3===i[0]&&(!a||i[1]>a[0]&&i[1]t?1:0}(e,t)}function R(e){if(null==e)return e;for(var t=[],n=0,r=e;n=0),N(r>=n),Array.isArray(e)&&e.length>=n&&e.length<=r&&e.every(function(e){return typeof e===t})}function B(e,t){return Object(r.od)(function(){return Object(r.Tc)(Object(r.dd)(Object(r.Pb)(e,e),t,!0))})}var z=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.getConfig=function(){return{}},t}(r.Ec.Serializable),F=function(e){function t(t){var n=e.call(this)||this;return n.defaultMaxValue=2,n.defaultAxis=0,n.maxValue=null!=t.maxValue?t.maxValue:n.defaultMaxValue,n.axis=null!=t.axis?t.axis:n.defaultAxis,n}return i(t,e),t.prototype.apply=function(e){var t=this;return Object(r.od)(function(){var n=B(e,t.axis),a=Object(r.O)(n,0,t.maxValue);return Object(r.Ob)(e,Object(r.Ha)(a,Object(r.s)(y(c()),n)))})},t.prototype.getConfig=function(){return{maxValue:this.maxValue,axis:this.axis}},t.className="MaxNorm",t}(z);r.Ec.registerClass(F);var V=function(e){function t(t){var n=e.call(this)||this;return n.defaultAxis=0,n.axis=null!=t.axis?t.axis:n.defaultAxis,n}return i(t,e),t.prototype.apply=function(e){var t=this;return Object(r.od)(function(){return Object(r.Ha)(e,Object(r.s)(y(c()),B(e,t.axis)))})},t.prototype.getConfig=function(){return{axis:this.axis}},t.className="UnitNorm",t}(z);r.Ec.registerClass(V);var U=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.apply=function(e){return Object(r.sc)(e)},t.className="NonNeg",t}(z);r.Ec.registerClass(U);var W=function(e){function t(t){var n=e.call(this)||this;return n.defaultMinValue=0,n.defaultMaxValue=1,n.defaultRate=1,n.defaultAxis=0,n.minValue=null!=t.minValue?t.minValue:n.defaultMinValue,n.maxValue=null!=t.maxValue?t.maxValue:n.defaultMaxValue,n.rate=null!=t.rate?t.rate:n.defaultRate,n.axis=null!=t.axis?t.axis:n.defaultAxis,n}return i(t,e),t.prototype.apply=function(e){var t=this;return Object(r.od)(function(){var n=B(e,t.axis),a=Object(r.s)(Object(r.Ob)(y(t.rate),Object(r.O)(n,t.minValue,t.maxValue)),Object(r.Ob)(y(1-t.rate),n));return Object(r.Ob)(e,Object(r.Ha)(a,Object(r.s)(y(c()),n)))})},t.prototype.getConfig=function(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}},t.className="MinMaxNorm",t}(z);r.Ec.registerClass(W);var q={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function $(e){return A(e)}function G(e,t){return void 0===t&&(t={}),T(e,r.Ec.SerializationMap.getMap().classNameMap,t,"constraint")}function H(e){return null==e?null:"string"==typeof e?G({className:e in q?q[e]:e,config:{}}):e instanceof z?e:G(e)}var K=Object.freeze({maxNorm:function(e){return new F(e)},unitNorm:function(e){return new V(e)},nonNeg:function(){return new U},minMaxNorm:function(e){return new W(e)}}),X=new Map,Y=["channelsFirst","channelsLast"];function J(e){j(Y,"DataFormat",e)}var Z=["valid","same","causal"];function Q(e){j(Z,"PaddingMode",e)}var ee=["max","avg"],te=[],ne="/";function re(e,t){te.push(e);try{var n=t();return te.pop(),n}catch(e){throw te.pop(),e}}function ae(e){if(!se(e))throw new Error("Not a valid tensor name: '"+e+"'");return(0===te.length?"":te.join(ne)+ne)+e}function ie(e){if(!se(e))throw new Error("Not a valid tensor name: '"+e+"'");X.has(e)||X.set(e,0);var t=X.get(e);if(X.set(e,X.get(e)+1),t>0){var n=e+"_"+t;return X.set(n,1),n}return e}var oe=new RegExp(/^[A-Za-z][A-Za-z0-9\._\/]*$/);function se(e){return!!e.match(oe)}function ue(e){return e===parseInt(e.toString(),10)}function le(e,t,n){null==t&&(t=0),null==n&&(n=e.length);for(var r=1,a=t;a= 2 but got x shape = "+e.shape+" and y shape = "+t.shape);if(t.rank>=3&&(a=e.shape.slice(-1)[0])!==(s=t.shape.slice(-2)[0]))throw new x("If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = "+e.shape+" and y shape = "+t.shape);if(2===e.rank&&2===t.rank)return Object(r.Ab)(e,t);var n=e.shape.slice(),a=n.pop();e=e.reshape([-1,a]);var i=t.shape.slice(),o=i.pop(),s=i.pop(),u=i.concat([o]),l=Array.from({length:t.rank},function(e,n){return 0===n?t.rank-2:n<=t.rank-2?n-1:n});t=t.transpose(l).reshape([s,-1]);var c=n.concat(u);return Object(r.Ab)(e,t).reshape(c)}function Ne(e,t,n){return Object(r.od)(function(){return t=Array.isArray(t)?Object(r.hd)(t,"int32"):t.toInt(),Object(r.Xa)(e,t,n)})}function Se(e){return Object(r.Pb)(e,e)}function Oe(e,t,n){return Object(r.od)(function(){if(null==n&&(n="channelsLast"),J(n),1!==t.rank&&t.rank!==e.rank)throw new w("Unexpected bias dimensions: "+t.rank+"; expected it to be 1 or "+e.rank);var r,a=t.shape;if(5===e.rank)"channelsFirst"===n?r=1===a.length?e.add(t.reshape([1,a[0],1,1,1])):e.add(t.reshape([1,a[3],a[0],a[1],a[2]])):"channelsLast"===n&&(r=1===a.length?e.add(t.reshape([1,1,1,1,a[0]])):e.add(t.reshape([1].concat(a))));else if(4===e.rank)"channelsFirst"===n?r=1===a.length?e.add(t.reshape([1,a[0],1,1])):e.add(t.reshape([1,a[2],a[0],a[1]])):"channelsLast"===n&&(r=1===a.length?e.add(t.reshape([1,1,1,a[0]])):e.add(t.reshape([1].concat(a))));else if(3===e.rank)"channelsFirst"===n?r=1===a.length?e.add(t.reshape([1,a[0],1])):e.add(t.reshape([1,a[1],a[0]])):"channelsLast"===n&&(r=1===a.length?e.add(t.reshape([1,1,a[0]])):e.add(t.reshape([1].concat(a))));else{if(!(e.rank<3))throw new w("Unsupported input rank by biasAdd: "+e.rank);r=e.add(t)}return r})}function ke(e,t,n,a){return Object(r.od)(function(){if(null!=n&&!r.yd.arraysEqual(e.shape,n))throw new x("Non-default noise shape is not implemented yet: "+JSON.stringify(n));if(null!=a)throw new x("seed is not implemented for dropout yet.");var i=Object(r.Zc)(Object(r.s)(Object(r.Sb)(t),Object(r.oc)(e.shape,0,1,"float32")));return i=Object(r.Ob)(Object(r.Ha)(y(1),Object(r.bd)(y(1),t)),i),Object(r.Ob)(e,i)})}function Ie(e,t,n){return void 0===n&&(n=!1),n?e():t()}var Ce=["fanIn","fanOut","fanAvg"],Pe=["normal","uniform"],Ae=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.fromConfigUsesCustomObjects=function(){return!1},t.prototype.getConfig=function(){return{}},t}(r.Ec.Serializable),Te=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.apply=function(e,t){return Object(r.Hd)(e,t)},t.className="Zeros",t}(Ae);r.Ec.registerClass(Te);var Me=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.apply=function(e,t){return Object(r.Yb)(e,t)},t.className="Ones",t}(Ae);r.Ec.registerClass(Me);var Re=function(e){function t(t){var n=e.call(this)||this;if("object"!=typeof t)throw new w("Expected argument of type ConstantConfig but got "+t);if(void 0===t.value)throw new w("config must have value set but got "+t);return n.value=t.value,n}return i(t,e),t.prototype.apply=function(e,t){var n=this;return Object(r.od)(function(){return Object(r.Ob)(Object(r.Bc)(n.value),Object(r.Yb)(e,t))})},t.prototype.getConfig=function(){return{value:this.value}},t.className="Constant",t}(Ae);r.Ec.registerClass(Re);var De=function(e){function t(t){var n=e.call(this)||this;return n.DEFAULT_MINVAL=-.05,n.DEFAULT_MAXVAL=.05,n.minval=t.minval||n.DEFAULT_MINVAL,n.maxval=t.maxval||n.DEFAULT_MAXVAL,n.seed=t.seed,n}return i(t,e),t.prototype.apply=function(e,t){return Object(r.oc)(e,this.minval,this.maxval,t)},t.prototype.getConfig=function(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}},t.className="RandomUniform",t}(Ae);r.Ec.registerClass(De);var je=function(e){function t(t){var n=e.call(this)||this;return n.DEFAULT_MEAN=0,n.DEFAULT_STDDEV=.05,n.mean=t.mean||n.DEFAULT_MEAN,n.stddev=t.stddev||n.DEFAULT_STDDEV,n.seed=t.seed,n}return i(t,e),t.prototype.apply=function(e,t){if("float32"!==(t=t||"float32")&&"int32"!==t)throw new x("randomNormal does not support dType "+t+".");return _e(e,this.mean,this.stddev,t,this.seed)},t.prototype.getConfig=function(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}},t.className="RandomNormal",t}(Ae);r.Ec.registerClass(je);var Le=function(e){function t(t){var n=e.call(this)||this;return n.DEFAULT_MEAN=0,n.DEFAULT_STDDEV=.05,n.mean=t.mean||n.DEFAULT_MEAN,n.stddev=t.stddev||n.DEFAULT_STDDEV,n.seed=t.seed,n}return i(t,e),t.prototype.apply=function(e,t){if("float32"!==(t=t||"float32")&&"int32"!==t)throw new x("truncatedNormal does not support dType "+t+".");return Object(r.vd)(e,this.mean,this.stddev,t,this.seed)},t.prototype.getConfig=function(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}},t.className="TruncatedNormal",t}(Ae);r.Ec.registerClass(Le);var Be=function(e){function t(t){var n=e.call(this)||this;return n.gain=null!=t.gain?Object(r.Bc)(t.gain):y(1),n}return i(t,e),t.prototype.apply=function(e,t){var n=this;return Object(r.od)(function(){if(2!==e.length||e[0]!==e[1])throw new w("Identity matrix initializer can only be used for 2D square matrices.");return Object(r.Ob)(n.gain,Object(r.Sa)(e[0]))})},t.prototype.getConfig=function(){return{gain:this.gain.get()}},t.className="Identity",t}(Ae);r.Ec.registerClass(Be);var ze=function(e){function t(t){var n=e.call(this)||this;if(t.scale<0)throw new w("scale must be a positive float. Got: "+t.scale);return n.scale=null==t.scale?1:t.scale,n.mode=t.mode,function(e){j(Ce,"FanMode",e)}(n.mode),n.distribution=t.distribution,function(e){j(Pe,"Distribution",e)}(n.distribution),n.seed=t.seed,n}return i(t,e),t.prototype.apply=function(e,t){var n=function(e,t){var n,r;if(void 0===t&&(t="channelsLast"),J(t),2===e.length)n=e[0],r=e[1];else if(-1!==[3,4,5].indexOf(e.length))if("channelsFirst"===t){var a=le(e,2);n=e[1]*a,r=e[0]*a}else"channelsLast"===t&&(a=le(e,0,e.length-2),n=e[e.length-2]*a,r=e[e.length-1]*a);else{var i=le(e);n=Math.sqrt(i),r=Math.sqrt(i)}return[n,r]}(e),a=n[0],i=n[1],o=this.scale;if("fanIn"===this.mode?o/=Math.max(1,a):"fanOut"===this.mode?o/=Math.max(1,i):o/=Math.max(1,(a+i)/2),"normal"===this.distribution){var s=Math.sqrt(o);if("float32"!==(t=t||"float32")&&"int32"!==t)throw new x(this.getClassName()+" does not support dType "+t+".");return Object(r.vd)(e,0,s,t,this.seed)}var u=Math.sqrt(3*o);return Object(r.oc)(e,-u,u,t)},t.prototype.getConfig=function(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}},t.className="VarianceScaling",t}(Ae);r.Ec.registerClass(ze);var Fe=function(e){function t(t){return e.call(this,{scale:1,mode:"fanAvg",distribution:"uniform",seed:null==t?null:t.seed})||this}return i(t,e),t.prototype.getClassName=function(){return ze.className},t}(ze),Ve=function(e){function t(t){return e.call(this,{scale:1,mode:"fanAvg",distribution:"normal",seed:null==t?null:t.seed})||this}return i(t,e),t.prototype.getClassName=function(){return ze.className},t}(ze),Ue=function(e){function t(t){return e.call(this,{scale:2,mode:"fanIn",distribution:"normal",seed:null==t?null:t.seed})||this}return i(t,e),t.prototype.getClassName=function(){return ze.className},t}(ze),We=function(e){function t(t){return e.call(this,{scale:1,mode:"fanIn",distribution:"normal",seed:null==t?null:t.seed})||this}return i(t,e),t.prototype.getClassName=function(){return ze.className},t}(ze),qe=function(e){function t(t){var n=e.call(this)||this;if(n.DEFAULT_GAIN=1,n.gain=null==t.gain?n.DEFAULT_GAIN:t.gain,n.seed=t.seed,null!=n.seed)throw new x("Random seed is not implemented for Orthogonal Initializer yet.");return n}return i(t,e),t.prototype.apply=function(e,t){var n=this;return Object(r.od)(function(){if(2!==e.length)throw new x("The Orthogonal Initializer does not support non-2D shapes yet.");e[0]*e[1]>2e3&&console.warn("Orthogonal initializer is being called on a matrix with more than 2000 ("+e[0]*e[1]+") elements: Slowness may result.");var t=_e(e[0]>e[1]?[e[1],e[0]]:e,0,1,"float32"),a=r.ob.gramSchmidt(t);return e[0]>e[1]&&(a=a.transpose()),Object(r.Ob)(y(n.gain),a)})},t.prototype.getConfig=function(){return{gain:this.gain,seed:this.seed}},t.className="Orthogonal",t}(Ae);r.Ec.registerClass(qe);var $e={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",identity:"Identity",leCunNormal:"LeCunNormal",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function Ge(e,t){return void 0===t&&(t={}),T(e,r.Ec.SerializationMap.getMap().classNameMap,t,"initializer")}function He(e){return A(e)}function Ke(e){if("string"==typeof e){var t=e in $e?$e[e]:e;return"GlorotUniform"===t?new Fe:"GlorotNormal"===t?new Ve:"HeNormal"===t?new Ue:"LeCunNormal"===t?new We:Ge({className:t,config:{}})}return e instanceof Ae?e:Ge(e)}var Xe=Object.freeze({zeros:function(){return new Te},ones:function(){return new Me},constant:function(e){return new Re(e)},randomUniform:function(e){return new De(e)},randomNormal:function(e){return new je(e)},truncatedNormal:function(e){return new Le(e)},identity:function(e){return new Be(e)},varianceScaling:function(e){return new ze(e)},glorotUniform:function(e){return new Fe(e)},glorotNormal:function(e){return new Ve(e)},heNormal:function(e){return new Ue(e)},leCunNormal:function(e){return new We(e)},orthogonal:function(e){return new qe(e)}});function Ye(e){return Array.isArray(e)&&Array.isArray(e[0])}function Je(e){return 0===e.length?[]:Array.isArray(e[0])?e:[e]}function Ze(e){var t;if(Array.isArray(e)){if(1!==e.length)throw new w("Expected Tensor length to be 1; got "+e.length);t=e[0]}else t=e;return t}function Qe(e){if(Array.isArray(e)&&Array.isArray(e[0])){if(1===e.length)return(e=e)[0];throw new w("Expected exactly 1 Shape; got "+e.length)}return e}function et(e){for(var t=0,n=0,r=e;n1)throw new v("Layer "+this.name+' has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use `getInputAt(nodeIndex)` instead.');if(0===this.inboundNodes.length)throw new v("Layer "+this.name+" is not connected, no input to return.");return O(this.getNodeAtIndex(0,"input").inputTensors)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"output",{get:function(){if(0===this.inboundNodes.length)throw new v("Layer "+this.name+" has no inbound nodes.");if(this.inboundNodes.length>1)throw new v("Layer "+this.name+' has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use `getOutputAt(nodeIndex)` instead.');return O(this.getNodeAtIndex(0,"output").outputTensors)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"losses",{get:function(){return this._losses},enumerable:!0,configurable:!0}),t.prototype.calculateLosses=function(){return this.losses.map(function(e){return e()})},Object.defineProperty(t.prototype,"updates",{get:function(){return this._updates},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"built",{get:function(){return this._built},set:function(e){this._built=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"trainableWeights",{get:function(){return this.trainable?this._trainableWeights:[]},set:function(e){this._trainableWeights=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"nonTrainableWeights",{get:function(){return this.trainable?this._nonTrainableWeights:this._trainableWeights.concat(this._nonTrainableWeights)},set:function(e){this._nonTrainableWeights=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"weights",{get:function(){return this.trainableWeights.concat(this.nonTrainableWeights)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"stateful",{get:function(){return this._stateful},enumerable:!0,configurable:!0}),t.prototype.resetStates=function(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")},t.prototype.assertInputCompatibility=function(e){if(e=k(e),null!=this.inputSpec&&0!==this.inputSpec.length){var t=k(this.inputSpec);if(e.length!==t.length)throw new w("Layer "+this.name+" expects "+t.length+" inputs, but it received "+e.length+" input tensors. Input received: "+e);for(var n=0;n=0?o[u]:o[o.length+u];if(null!=l&&-1===[l,null].indexOf(c))throw new w("Input "+n+" is incompatible with layer "+this.name+": expected axis "+u+" of input shape to have value "+l+" but got shape "+o+".")}}if(null!=a.shape)for(var f=0;f0&&Array.isArray(d[0])?d.map(function(r,a){return new ot(g,r,n,k(e),t,n.name,a)}):new ot(g,d,n,k(e),t,n.name),n.addInboundNode(e,m,null,null,h,d,t),n._refCount++,null!=n.activityRegularizer)throw new x("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return m})},t.prototype.warnOnIncompatibleInputShape=function(e){if(null!=this.batchInputShape)if(e.length!==this.batchInputShape.length)console.warn("The rank of the input tensor provided (shape: "+JSON.stringify(e)+") does not match that of the batchInputShape ("+JSON.stringify(this.batchInputShape)+") of the layer "+this.name);else{var t=!1;this.batchInputShape.forEach(function(n,r){null!=n&&null!=e[r]&&e[r]!==n&&(t=!0)}),t&&console.warn("The shape of the input tensor ("+JSON.stringify(e)+") does not match the expectation of layer "+this.name+": "+JSON.stringify(this.batchInputShape))}},Object.defineProperty(t.prototype,"outputShape",{get:function(){if(null==this.inboundNodes||0===this.inboundNodes.length)throw new v("The layer "+this.name+" has never been called and thus has no defined output shape.");for(var e=[],t=0,n=this.inboundNodes;te.SKIP_FIRST_BATCHES&&(this.batchDurationsMillis.push(n-this.batchStartMillis),this.batchDurationsMillis.length>=e.DECISION_BATCH_COUNT&&(a=this.batchDurationsMillis.reduce(function(e,t){return e+t})/this.batchDurationsMillis.length,this.autoYieldEveryBatches=Math.round(e.THRESHOLD_MILLIS/a),this.autoYieldEveryBatches<1&&(this.autoYieldEveryBatches=1))),this.batchStartMillis=r.yd.now(),this.lastYieldBatchCount=this.batchCount,[3,6];case 3:return this.batchCount-this.lastYieldBatchCount>=this.autoYieldEveryBatches?[4,Object(r.Tb)()]:[3,6];case 4:return i.sent(),[4,this.resolveOneTensorInLogs(t)];case 5:i.sent(),this.lastYieldBatchCount=this.batchCount,i.label=6;case 6:return[3,9];case 7:return"batch"!==this.yieldEvery?[3,9]:[4,Object(r.Tb)()];case 8:i.sent(),i.label=9;case 9:return[2]}})})},e.prototype.maybeYieldOnEpoch=function(){return s(this,void 0,void 0,function(){return u(this,function(e){switch(e.label){case 0:return"epoch"!==this.yieldEvery?[3,2]:[4,Object(r.Tb)()];case 1:e.sent(),e.label=2;case 2:return[2]}})})},e.SKIP_FIRST_BATCHES=1,e.DECISION_BATCH_COUNT=2,e.THRESHOLD_MILLIS=16,e}(),yt=function(e){function t(t){var n=e.call(this)||this;return n.yieldEvery=t||"auto",n}return i(t,e),t.prototype.onTrainBegin=function(e){return s(this,void 0,void 0,function(){return u(this,function(e){return this.autoYielder=new gt(this.yieldEvery),[2]})})},t.prototype.onEpochBegin=function(e){return s(this,void 0,void 0,function(){return u(this,function(e){return this.seen=0,this.totals={},[2]})})},t.prototype.onBatchEnd=function(e,t){return s(this,void 0,void 0,function(){var e,n,a,i,o=this;return u(this,function(s){switch(s.label){case 0:return[4,this.autoYielder.maybeYieldOnBatch(t)];case 1:for(i in s.sent(),null==t&&(t={}),e=null==t.size?0:t.size,this.seen+=e,n=function(n){var i=t[n];if("number"==typeof i)a.totals.hasOwnProperty(n)||(a.totals[n]=0),a.totals[n]=a.totals[n]+i*e;else{var s=void 0;n in a.totals?s=a.totals[n]:a.totals[n]=y(0),a.totals[n]=Object(r.od)(function(){return Object(r.s)(o.totals[n],Object(r.Ob)(i,y(e)))}),null!=s&&s.dispose()}},a=this,t)n(i);return[2]}})})},t.prototype.onEpochEnd=function(e,t){return s(this,void 0,void 0,function(){var e,n,a,i,o,s=this;return u(this,function(u){switch(u.label){case 0:return[4,this.autoYielder.maybeYieldOnEpoch()];case 1:if(u.sent(),null!=t)for(e=function(e){if(null==n.totals[e])return"continue";"number"==typeof n.totals[e]?t[e]=n.totals[e]/n.seen:Object(r.od)(function(){t[e]=Object(r.Ob)(Object(r.Ha)(y(1),y(s.seen)),s.totals[e]),s.totals[e].dispose(),Object(r.ib)(t[e])})},n=this,a=0,i=this.params.metrics;a=0&&Number.isInteger(t),"Verbosity level is expected to be an integer >= 0, but got "+t),e.checkForDuplicate(n),null==e.constructors[t]&&(e.constructors[t]=[]),e.constructors[t].push(n)},e.checkForDuplicate=function(t){for(var n in e.constructors)e.constructors[+n].forEach(function(e){if(e===t)throw new w("Duplicate callback constructor.")})},e.clear=function(){e.constructors={}},e.createCallbacks=function(t){var n=[];for(var r in e.constructors){var a=+r;t>=a&&n.push.apply(n,e.constructors[a])}return n.map(function(e){return new e})},e}();function xt(e,t){return Object(r.od)(function(){var n=Object(r.dd)(Se(e),t,!0),a=Object(r.Ob)(Object(r.Bc)(c()),Object(r.Zb)(e)),i=Object(r.Tc)(Object(r.Db)(n,a));return Object(r.Ha)(e,i)})}function _t(e,t){return Object(r.od)(function(){return Object(r.Fb)(Se(Object(r.bd)(t,e)),-1)})}function Et(e,t){return Object(r.od)(function(){return Object(r.Fb)(Object(r.p)(Object(r.bd)(t,e)),-1)})}function Nt(e,t){return Object(r.od)(function(){var n=Object(r.bd)(e,t),a=Object(r.O)(Object(r.p)(e),c(),Number.MAX_VALUE),i=Object(r.p)(Object(r.Ha)(n,a));return Object(r.Ob)(y(100),Object(r.Fb)(i,-1))})}function St(e,t){return Object(r.od)(function(){var n=y(1),a=Object(r.O)(t,c(),Number.MAX_VALUE),i=Object(r.rb)(Object(r.s)(n,a)),o=Object(r.O)(e,c(),Number.MAX_VALUE),s=Object(r.rb)(Object(r.s)(n,o));return Object(r.Fb)(Se(Object(r.bd)(i,s)),-1)})}function Ot(e,t){return Object(r.od)(function(){var n=y(0),a=y(1),i=Object(r.Db)(n,Object(r.bd)(a,Object(r.Ob)(e,t)));return Object(r.Fb)(Se(i),-1)})}function kt(e,t){return Object(r.od)(function(){var n=y(0),a=y(1),i=Object(r.Db)(n,Object(r.bd)(a,Object(r.Ob)(e,t)));return Object(r.Fb)(i,-1)})}function It(e,t){return Object(r.od)(function(){var n=y(0),a=y(1),i=Object(r.dd)(Object(r.Ob)(e,t),-1),o=Object(r.Bb)(Object(r.Ob)(Object(r.bd)(a,e),t),-1);return Object(r.Db)(n,Object(r.s)(a,Object(r.bd)(o,i)))})}function Ct(e,t){return Object(r.od)(function(){var n=y(Math.log(2)),a=Object(r.bd)(t,e),i=Object(r.bd)(Object(r.s)(a,Object(r.Qc)(Object(r.Ob)(y(-2),a))),n);return Object(r.Fb)(i,-1)})}function Pt(e,t,n){return void 0===n&&(n=!1),Object(r.od)(function(){if(n)t=Object(r.Pc)(t);else{var a=Object(r.dd)(t,t.shape.length-1,!0);t=Object(r.Ha)(t,a)}return t=Object(r.O)(t,c(),1-c()),Object(r.Sb)(Object(r.dd)(Object(r.Ob)(e.toFloat(),Object(r.rb)(t)),t.shape.length-1))})}function At(e,t,n){return void 0===n&&(n=!1),Object(r.od)(function(){var a=Object(r.Ua)(function(e){var t=[le(e.shape)];return e.reshape(t)}(e)).toInt(),i=t.shape;return Pt(Object(r.Xb)(a,i[i.length-1]).reshape(i),t,n)})}function Tt(e,t){return Object(r.od)(function(){var n;return n=Object(r.O)(t,c(),1-c()),n=Object(r.rb)(Object(r.Ha)(n,Object(r.bd)(Object(r.Zb)(n),n))),Object(r.Fb)(function(e,t){return Object(r.od)(function(){var n=Object(r.Db)(t,Object(r.Id)(t)),a=Object(r.Ob)(t,e),i=Object(r.rb)(Object(r.s)(y(1),Object(r.Pa)(Object(r.Sb)(Object(r.p)(t)))));return Object(r.s)(Object(r.bd)(n,a),i)})}(e,n),-1)})}function Mt(e,t){return Object(r.od)(function(){var n=Object(r.O)(e,c(),1),a=Object(r.O)(t,c(),1);return Object(r.dd)(Object(r.Ob)(e,Object(r.rb)(Object(r.Ha)(n,a))),-1)})}function Rt(e,t){return Object(r.od)(function(){var n=Object(r.rb)(Object(r.s)(y(c()),t));return Object(r.Fb)(Object(r.bd)(t,Object(r.Ob)(e,n)),-1)})}function Dt(e,t){return Object(r.od)(function(){var n=xt(e,-1),a=xt(t,-1),i=Object(r.Ob)(n,a);return Object(r.Sb)(Object(r.dd)(i,-1))})}function jt(e){var t={meanSquaredError:_t,meanAbsoluteError:Et,meanAbsolutePercentageError:Nt,meanSquaredLogarithmicError:St,squaredHinge:Ot,hinge:kt,categoricalHinge:It,logcosh:Ct,categoricalCrossentropy:Pt,sparseCategoricalCrossentropy:At,binaryCrossentropy:Tt,kullbackLeiblerDivergence:Mt,poisson:Rt,cosineProximity:Dt};if("string"==typeof e){if(e in t)return t[e];var n="Unknown loss "+e;throw e.toLowerCase().includes("softmaxcrossentropy")&&(n="Unknown loss "+e+'. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy'),new w(n)}return e}function Lt(e,t){return Object(r.od)(function(){var n=Object(r.Ob)(y(.5),Object(r.Zb)(t)),a=de(Object(r.bb)(t,n),e.dtype);return Object(r.Fb)(Object(r.Ma)(e,a),-1)})}function Bt(e,t){return Object(r.od)(function(){return de(Object(r.Ma)(Object(r.x)(e,-1),Object(r.x)(t,-1)),"float32")})}function zt(e,t){return Object(r.od)(function(){var n=y(1);return Object(r.vb)(e.equal(n),t.equal(n)).sum().cast("float32")})}function Ft(e,t){return Object(r.od)(function(){var n=y(0),a=zt(e,t),i=function(e,t){return Object(r.od)(function(){var n=y(1),a=y(0);return Object(r.vb)(e.equal(a),t.equal(n)).sum().cast("float32")})}(e,t),o=a.add(i);return Object(r.Fd)(Object(r.bb)(o,n),a.div(o),n).cast("float32")})}function Vt(e,t){return Tt(e,t)}function Ut(e,t){throw new x}var Wt=_t,qt=_t,$t=Et,Gt=Et,Ht=Nt,Kt=Nt,Xt=Pt,Yt=Dt,Jt=At;function Zt(e,t,n){void 0===n&&(n=console.log);for(var r="",a=0;a0&&(r=r.slice(0,r.length-1)+" "),r=(r+=e[a]).slice(0,t[a]),r+=" ".repeat(t[a]-r.length);n(r)}function Qt(e,t,n){var r;try{r=JSON.stringify(e.outputShape)}catch(e){r="multiple"}Zt([e.name+" ("+e.getClassName()+")",r,e.countParams().toString()],t,n)}function en(e,t,n,r){var a;try{a=JSON.stringify(e.outputShape)}catch(e){a="multiple"}for(var i=[],o=0,s=e.inboundNodes;o0&&-1===n.indexOf(u)))for(var l=0;l1 nodes"),N(0===l,"input layer has >1 tensors"),r.inputLayers.push(s),r.inputLayersNodeIndices.push(u),r.inputLayersTensorIndices.push(l);r.inputNames=[],r.outputNames=[],r.feedInputShapes=[],r.feedInputNames=[],r.feedOutputNames=[];for(var p=0;p=0;)a.splice(a.indexOf(u),1);E.push(u)}},O=[],k=[],I=0,C=r.outputs;Ir?1:0});for(var K=0,X=H;K0)throw new w("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];for(var e=[],t=0,n=this.layers;t0)throw new w(p.length+" of "+a+" weights are not set: "+p)}at(c)}(e,this.layers,a):function(e,t,n){void 0===n&&(n=!1);for(var a=e.keras_version,i=(e.backend,t.map(function(e){return e.name})),o={},s=0,u=t;s1)for(var s=0,u=o;s0){for(var h=[],d=0;d0&&e.apply(O(i),r)}function o(e){var r=e.name,i=tn(e,null!=t.customObjects?t.customObjects:{});n[r]=i;for(var o=0,s=e.inboundNodes;o0)i=!0;else if(pn(e)){for(var o in e)if(e.hasOwnProperty(o)){i=!0;break}}else i=!0;if(i)throw new w("Error when checking model "+a+" expected no data, but got "+e)}return[]}if(null==e)return t.map(function(e){return null});var s;if(pn(e)){e=e,s=[];for(var u=0,l=t;u1)throw new w("The model "+a+" expects "+t.length+" Tensor(s), but only received one Tensor. Found: Tensor with shape "+e.shape);s=[e]}for(var f=0;f=0&&d!==m)throw new w("Error when checking "+a+": expected "+t[f]+" to have shape ["+n[f]+"], but got array with shape ["+p.shape+"].")}}return s}function dn(e,t){for(var n=[],r=0,a=null;r=e&&(a=e),n.push([r,a]),r=a;return n}function mn(e,t,n){return null==e?[null]:Array.isArray(e)?e.map(function(e){return ge(e,t,n-t)}):ge(e,t,n-t)}function gn(e,t){return Object(r.od)(function(){return null==e?null:Array.isArray(e)?e.map(function(e){return gn(e,t)}):Ne(e,"int32"===t.dtype?t:t.toInt())})}function yn(e,t,n,r,a){var i;if(void 0===r&&(r=!0),void 0===a&&(a=""),Array.isArray(e)){if(e.length!==t.length)throw new w("Error when checking model "+a+": the Array of Tensors that you are passing to your model is not the size the the model expected. Expected to see "+t.length+" Tensor(s), but instead got "+e.length+" Tensors(s).");i=e}else{if(t.length>1)throw new w("The model expects "+t.length+" "+a+" Tensors, but only received one Tensor. Found: array with shape "+JSON.stringify(e.shape)+".");i=[e]}if(null!=n)for(var o=0;o0&&Number.isInteger(e),"batchSize is required to be a positive integer, but got "+e)}!function(e){e[e.SILENT=0]="SILENT",e[e.VERBOSE=1]="VERBOSE"}(on||(on={}));var bn=function(e){function t(t){var n=e.call(this,t)||this;return n.isTraining=!1,n}return i(t,e),t.prototype.summary=function(e,t,n){if(void 0===n&&(n=console.log),!this.built)throw new w("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");!function(e,t,n,r){void 0===r&&(r=console.log);var a,i=function(e){var t=!0,n=[],r=[];for(var a in e.nodesByDepth)n.push(e.nodesByDepth[a]);for(var i=0,o=n;i1||1===s.length&&s[0].inboundLayers.length>1){t=!1;break}r.push.apply(r,s)}if(t)for(var u=0,l=e.layers;u1&&(t.metricsTensors.push([n,e]),t.metricsNames.push(t.outputNames[e]+"_loss"))}});var h=function(e,t){if(null==e||Array.isArray(e)&&0===e.length)return t.map(function(e){return[]});if(Array.isArray(e))return t.map(function(t){return e});if(null!=e){for(var n=[],r=0,a=t;r1&&(n=t.outputNames[e]+"_"+n),t.metricsNames.push(n),t.metricsTensors.push([r,e])}(e,r,l)},s=0,u=h[e];s0){var c=[];throw t.forEach(function(t,n){null==t&&c.push(e[n])}),new w("Cannot find SymbolicTensors for output name(s): "+JSON.stringify(c))}return t},t.prototype.predictLoop=function(e,t,n){var a=this;return void 0===t&&(t=32),void 0===n&&(n=!1),Object(r.od)(function(){var i=a.checkNumSamples(e);if(n)throw new x("Verbose predictLoop() is not implemented yet.");for(var o=dn(i,t),s=[],u=function(t){var n=Object(r.od)(function(){var n=o[t][0],r=o[t][1],i=mn(e,n,r),s=[];if(Array.isArray(i))for(var u=0;u1)throw new w("All input Tensors (x) should have the same number of samples. Got array shapes: "+JSON.stringify(e.map(function(e){return e.shape})));if(i.length>1)throw new w("All target Tensors (y) should have the same number of samples. Got array shapes: "+JSON.stringify(t.map(function(e){return e.shape})));if(a.length>0&&i.length>0&&!r.yd.arraysEqual(a,i))throw new w("Input Tensors should have the same number of samples as target Tensors. Found "+a[0]+" input sample(s) and "+i[0]+" target sample(s).")}(e=hn(e,this.feedInputNames,this.feedInputShapes,!1,"input"),t=hn(t,this.feedOutputNames,i,!1,"target")),function(e,t,n){for(var r=[_t,Tt,Pt],a=0;a0&&e[0].shape[0]%a!=0)throw new w("In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size "+a+". Found: "+e[0].shape[0]+" sample(s).");return[e,t,null]},t.prototype.fitLoop=function(e,t,n,a,i,o,l,c,f,p,h,d,m,g,y){return s(this,void 0,void 0,function(){var s,v,b,_,E,N,S,O,k=this;return u(this,function(I){switch(I.label){case 0:if(null==a&&(a=32),null==i&&(i=1),null==p&&(p=!0),null==d&&(d=0),s=!1,null!=c&&null!=f&&(s=!0),null!=g&&(s=!0,null==m))throw new w("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");return null!=(v=this.checkNumSamples(t,a,m,"steps_per_epoch"))&&(b=he(0,v)),null==o&&(o=1),this.history=new vt,_=[new yt(y)].concat(wt.createCallbacks(o)),null!=l&&_.push.apply(_,l),_.push(this.history),(E=new mt(_)).setModel(this),E.setParams({epochs:i,initialEpoch:d,samples:v,steps:m,batchSize:a,verbose:o,doValidation:s,metrics:h}),[4,E.onTrainBegin()];case 1:I.sent(),this.stopTraining_=!1,N=function(i){var o,l,h,d,g;return u(this,function(y){switch(y.label){case 0:return[4,E.onEpochBegin(i)];case 1:if(y.sent(),o={},null==m)return[3,2];throw new x("stepsPerEpoch mode is not implemented yet.");case 2:if("batch"===p)throw new x("batch shuffling is not implemneted yet");p&&r.yd.shuffle(b),l=Object(r.hd)(b),h=dn(v,a),d=function(i){var p;return u(this,function(u){switch(u.label){case 0:return p={},[4,E.onBatchBegin(i,p)];case 1:return u.sent(),Object(r.od)(function(){var u=h[i][0],d=h[i][1],m=ge(l,u,d-u);p.batch=i,p.size=d-u;for(var g=gn(t,m),y=e(g),v=0;v1&&(a+="_"+S(e.slice(0,n),r)),t.push(a)}return t},t.prototype.makeTestFunction=function(){var e=this;this.testFunction=function(t){return Object(r.od)(function(){for(var n,a=[],i=t.slice(0,e.inputs.length),o=t.slice(e.inputs.length,e.inputs.length+e.outputs.length),s=[],u=0;u0){if(l=!0,2!==n.validationData.length)throw 3===n.validationData.length?new x("validationData including sample weights is not supported yet."):new w("When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; "+n.validationData+" is invalid.");c=n.validationData[0],f=n.validationData[1],d=this.standardizeUserData(c,f,!0,a),c=d[0],f=d[1],p=c.concat(f)}else null!=n.validationSplit&&n.validationSplit>0&&n.validationSplit<1?(l=!0,m=Math.floor(o[0].shape[0]*(1-n.validationSplit)),g=o[0].shape[0],c=mn(o,m,g),o=mn(o,0,m),f=mn(s,m,g),s=mn(s,0,m),h=!0,p=c.concat(f)):null!=n.validationSteps&&(l=!0);return y=o.concat(s),this.checkTrainableWeightsConsistency(),v=function(e){var t=e.slice(0,O.inputs.length),n=e.slice(O.inputs.length,O.inputs.length+O.outputs.length),a=[],i=O.collectedTrainableWeights.map(function(e){return e.read()});return[O.optimizer.minimize(function(){for(var e=[],i=0;i1)throw new w("Found more than one ("+n.length+") save handlers for URL '"+e+"'");e=n[0]}if(null==e.save)throw new w("Model.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return[4,r.hb.encodeWeights(this.getNamedWeights(t))];case 1:return a=u.sent(),i=!1,o=null,s=this.toJSON(o,i),[2,e.save({modelTopology:s,weightData:a.data,weightSpecs:a.specs})]}})})},t.className="Model",t}(sn);r.Ec.registerClass(bn);var wn=function(e){function t(t){var n=e.call(this,{inputs:[],outputs:[]})||this;if(t=t||{},n.trainable=!0,n._updatable=!0,n.built=!1,n.name=null!=t.name?t.name:d("sequential_"),null!=t.layers)for(var r=0,a=t.layers;r0)&&(n=t.sourceLayer,r=t.nodeIndex),0===n.inboundNodes.length)return[t];var a=n.inboundNodes[r];if(0===a.inboundLayers.length)return a.inputTensors;for(var i=[],o=0;o1)throw new w("Found more than one ("+n.length+") load handlers for URL '"+e+"'");e=n[0]}return[2,function(e,t,n){return void 0===n&&(n=!0),s(this,void 0,void 0,function(){var t,a,i,o,s;return u(this,function(u){switch(u.label){case 0:if(null==e.load)throw new w("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");return[4,e.load()];case 1:if(t=u.sent(),null!=(a=t.modelTopology).model_config&&(a=a.model_config),i=tn(function e(t,n){if(null===t)return null;if("string"==typeof t)return C(t);if("number"==typeof t||"boolean"==typeof t)return t;if(t instanceof Array){for(var r=[],a=t.length,i=0;i 0 but got "+JSON.stringify(e.filters))},t}(nr),ar=function(e){function t(n){var r=e.call(this,2,n)||this;return t.verifyConfig(n),r}return i(t,e),t.prototype.getConfig=function(){var t=e.prototype.getConfig.call(this);return delete t.rank,t},t.verifyConfig=function(e){if("number"!=typeof e.kernelSize&&!L(e.kernelSize,"number",1,2))throw new w("Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received "+JSON.stringify(e.kernelSize)+".")},t.className="Conv2D",t}(rr);r.Ec.registerClass(ar);var ir=function(e){function t(t){var n=e.call(this,t)||this;if(n.inputSpec=[new it({ndim:4})],"same"!==n.padding&&"valid"!==n.padding)throw new w("Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode "+n.padding);return n}return i(t,e),t.prototype.build=function(e){if(4!==(e=Qe(e)).length)throw new w("Input should have rank 4; Received input shape: "+JSON.stringify(e));var t="channelsFirst"===this.dataFormat?1:e.length-1;if(null==e[t])throw new w("The channel dimension of the inputs should be defined. Found `None`.");var n,r=e[t],a=this.kernelSize.concat([this.filters,r]);this.kernel=this.addWeight("kernel",a,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new it({ndim:4,axes:(n={},n[t]=r,n)})],this.built=!0},t.prototype.call=function(e,t){var n=this;return Object(r.od)(function(){var t=Ze(e);if(4!==t.shape.length)throw new w("Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-"+t.shape.length);var a,i,o=t.shape,s=o[0];"channelsFirst"===n.dataFormat?(a=2,i=3):(a=1,i=2);var u=o[a],l=o[i],c=n.kernelSize[0],f=n.kernelSize[1],p=n.strides[0],h=n.strides[1],d=[s,er(u,p,c,n.padding),er(l,h,f,n.padding),n.filters];"channelsLast"!==n.dataFormat&&(t=Object(r.ud)(t,[0,2,3,1]));var m=Object(r.Y)(t,n.kernel.read(),d,n.strides,n.padding);return"channelsLast"!==n.dataFormat&&(m=Object(r.ud)(m,[0,3,1,2])),null!=n.bias&&(m=Oe(m,n.bias.read(),n.dataFormat)),null!=n.activation&&(m=n.activation.apply(m)),m})},t.prototype.computeOutputShape=function(e){var t,n,r,a=(e=Qe(e)).slice();"channelsFirst"===this.dataFormat?(t=1,n=2,r=3):(t=3,n=1,r=2);var i=this.kernelSize[0],o=this.kernelSize[1],s=this.strides[0],u=this.strides[1];return a[t]=this.filters,a[n]=er(a[n],s,i,this.padding),a[r]=er(a[r],u,o,this.padding),a},t.prototype.getConfig=function(){var t=e.prototype.getConfig.call(this);return delete t.dilationRate,t},t.className="Conv2DTranspose",t}(ar);r.Ec.registerClass(ir);var or=function(e){function t(t){return e.call(this,2,t)||this}return i(t,e),t.className="SeparableConv2D",t}(function(e){function t(t,n){var r=e.call(this,t,n)||this;if(r.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",r.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",r.depthwiseKernel=null,r.pointwiseKernel=null,null==n.filters)throw new w("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(null!=n.kernelInitializer||null!=n.kernelRegularizer||null!=n.kernelConstraint)throw new w("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(null!=n.padding&&"same"!==n.padding&&"valid"!==n.padding)throw new w("SeparableConv"+r.rank+"D supports only padding modes: 'same' and 'valid', but received "+JSON.stringify(n.padding));return r.depthMultiplier=null==n.depthMultiplier?1:n.depthMultiplier,r.depthwiseInitializer=Ke(n.depthwiseInitializer||r.DEFAULT_DEPTHWISE_INITIALIZER),r.depthwiseRegularizer=Jn(n.depthwiseRegularizer),r.depthwiseConstraint=H(n.depthwiseConstraint),r.pointwiseInitializer=Ke(n.depthwiseInitializer||r.DEFAULT_POINTWISE_INITIALIZER),r.pointwiseRegularizer=Jn(n.pointwiseRegularizer),r.pointwiseConstraint=H(n.pointwiseConstraint),r}return i(t,e),t.prototype.build=function(e){if((e=Qe(e)).length1)throw new w("Can not merge tensors with different batch sizes. Got tensors with shapes: "+JSON.stringify(e)+".");for(var a=null==e[0]?null:e[0].slice(1),i=1;i1){var v=he(1,u).concat([0]);t.push(Object(r.ud)(h,v)),c=!0}else t.push(h)}var b=n.mergeFunction(t),w=b.rank;if(c)if(null==w){var x=b.shape;g=[m=x[x.length-1]].concat(x.slice(0,x.length-1)),b=Object(r.ud)(b.reshape([-1,m]),[1,0]).reshape(g)}else w>1&&(v=[w-1].concat(he(0,w-1)),b=Object(r.ud)(b,v));return b}return n.mergeFunction(e)})},t.prototype.computeOutputShape=function(e){var t;t=null==(e=e)[0]?null:e[0].slice(1);for(var n=1;n1)throw new w("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(e))}},t.prototype.mergeFunction=function(e){var t=this;return Object(r.od)(function(){return be(e,t.axis)})},t.prototype.computeOutputShape=function(e){if(!Array.isArray(e)||!Array.isArray(e[0]))throw new w("A `Concatenate` layer should be called on a list of inputs.");for(var t=e,n=t[0].slice(),r=this.axis<0?n.length+this.axis:this.axis,a=0,i=t.slice(1);a=0?this.axis:this.axis+e.length,n=e[t];if(null==n)throw new w("Axis "+t+" of input tensor should have a defined dimension but the layer received an input with shape "+JSON.stringify(e)+".");this.inputSpec=[new it({ndim:e.length,axes:(r={},r[t]=n,r)})];var r,a=[n];this.scale&&(this.gamma=this.addWeight("gamma",a,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",a,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",a,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",a,null,this.movingVarianceInitializer,null,!1),this.built=!0},t.prototype.call=function(e,t){var n=this;return Object(r.od)(function(){var a=null!=t.training&&t.training,i=Ze(e),o=i.shape,s=o.length,u=he(0,s),l=n.axis>=0?n.axis:n.axis+s;u.splice(l,1);var c=E(1,s);c[l]=o[l];var f=u.slice();f.sort();var p=!r.yd.arraysEqual(f,he(0,s).slice(0,s-1));if(!a)return function(){if(p){var e=n.movingMean.read().reshape(c),t=n.movingVariance.read().reshape(c),r=n.center?n.beta.read().reshape(c):null,a=n.scale?n.gamma.read().reshape(c):null;return Or(i,e,t,r,a,n.epsilon)}return Or(i,n.movingMean.read(),n.movingVariance.read(),null==n.beta?null:n.beta.read(),null==n.gamma?null:n.gamma.read(),n.epsilon)}();var h=function(e,t,n,a,i){return void 0===i&&(i=.001),r.yd.arraysEqual(a.slice().sort(),he(0,e.rank-1))?function(e,t,n,a,i){return void 0===i&&(i=.001),Object(r.od)(function(){var o=Object(r.Mb)(e,a),s=o.mean,u=o.variance;return[Or(e,s,u,n,t,i),s,u]})}(e,t,n,a,i):function(e,t,n,a,i){return void 0===i&&(i=.001),Object(r.od)(function(){for(var o=Object(r.Mb)(e,a),s=o.mean,u=o.variance,l=[],c=0,f=he(0,e.rank);c=0?e[2]+this.padding[0][0]+this.padding[0][1]:null,n=null!=e[3]&&e[3]>=0?e[3]+this.padding[1][0]+this.padding[1][1]:null,[e[0],e[1],t,n]):(t=null!=e[1]&&e[1]>=0?e[1]+this.padding[0][0]+this.padding[0][1]:null,n=null!=e[2]&&e[2]>=0?e[2]+this.padding[1][0]+this.padding[1][1]:null,[e[0],t,n,e[3]])},t.prototype.call=function(e,t){var n=this;return Object(r.od)(function(){return function(e,t,n){return Object(r.od)(function(){if(4!==e.rank)throw new w("temporalPadding expects input tensor to be 4-D, but received a "+e.rank+"-D tensor.");if(null==t&&(t=[[1,1],[1,1]]),2!==t.length||2!==t[0].length||2!==t[1].length)throw new w("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(null==n&&(n="channelsLast"),"channelsLast"!==n&&"channelsFirst"!==n)throw new w("Unknown data format: "+n+". Supported data formats are 'channelsLast' and 'channelsFirst.");var a;return a="channelsFirst"===n?[[0,0],[0,0],t[0],t[1]]:[[0,0],t[0],t[1],[0,0]],Object(r.cc)(e,a)})}(Ze(e),n.padding,n.dataFormat)})},t.prototype.getConfig=function(){var t={padding:this.padding,dataFormat:this.dataFormat},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className="ZeroPadding2D",t}(ct);function Cr(e,t,n,a,i,o){return Object(r.od)(function(){var s;J(i),j(ee,"PoolMode",o),Q(a),null==n&&(n=[1,1]),null==a&&(a="valid"),null==i&&(i="channelsLast"),null==o&&(o="max"),e=tr(e,i);var u="same"===a?"same":"valid";return s="max"===o?Object(r.Cb)(e,t,n,u):Object(r.E)(e,t,n,u),"channelsFirst"===i&&(s=Object(r.ud)(s,[0,3,1,2])),s})}r.Ec.registerClass(Ir);var Pr=function(e){function t(t){var n=this;if(null==t.poolSize&&(t.poolSize=2),n=e.call(this,t)||this,"number"==typeof t.poolSize)n.poolSize=[t.poolSize];else{if(!Array.isArray(t.poolSize)||1!==t.poolSize.length||"number"!=typeof t.poolSize[0])throw new w("poolSize for 1D convolutional layer must be a number or an Array of a single number, but received "+JSON.stringify(t.poolSize));n.poolSize=t.poolSize}if(null==t.strides)n.strides=n.poolSize;else if("number"==typeof t.strides)n.strides=[t.strides];else{if(!Array.isArray(t.strides)||1!==t.strides.length||"number"!=typeof t.strides[0])throw new w("strides for 1D convolutional layer must be a number or an Array of a single number, but received "+JSON.stringify(t.strides));n.strides=t.strides}return n.padding=null==t.padding?"valid":t.padding,Q(n.padding),n.inputSpec=[new it({ndim:3})],n}return i(t,e),t.prototype.computeOutputShape=function(e){var t=Qn((e=Qe(e))[1],this.poolSize[0],this.padding,this.strides[0]);return[e[0],t,e[2]]},t.prototype.call=function(e,t){var n=this;return Object(r.od)(function(){n.invokeCallHook(e,t),e=me(Ze(e),2);var a=n.poolingFunction(Ze(e),[n.poolSize[0],1],[n.strides[0],1],n.padding,"channelsLast");return Object(r.Xc)(a,[2])})},t.prototype.getConfig=function(){var t={poolSize:this.poolSize,padding:this.padding,strides:this.strides},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t}(ct),Ar=function(e){function t(t){return e.call(this,t)||this}return i(t,e),t.prototype.poolingFunction=function(e,t,n,r,a){return J(a),Q(r),Cr(e,t,n,r,a,"max")},t.className="MaxPooling1D",t}(Pr);r.Ec.registerClass(Ar);var Tr=function(e){function t(t){return e.call(this,t)||this}return i(t,e),t.prototype.poolingFunction=function(e,t,n,r,a){return J(a),Q(r),Cr(e,t,n,r,a,"avg")},t.className="AveragePooling1D",t}(Pr);r.Ec.registerClass(Tr);var Mr=function(e){function t(t){var n=this;if(null==t.poolSize&&(t.poolSize=[2,2]),(n=e.call(this,t)||this).poolSize=Array.isArray(t.poolSize)?t.poolSize:[t.poolSize,t.poolSize],null==t.strides)n.strides=n.poolSize;else if(Array.isArray(t.strides)){if(2!==t.strides.length)throw new w("If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length "+t.strides.length+".");n.strides=t.strides}else n.strides=[t.strides,t.strides];return n.padding=null==t.padding?"valid":t.padding,n.dataFormat=null==t.dataFormat?"channelsLast":t.dataFormat,J(n.dataFormat),Q(n.padding),n.inputSpec=[new it({ndim:4})],n}return i(t,e),t.prototype.computeOutputShape=function(e){e=Qe(e);var t="channelsFirst"===this.dataFormat?e[2]:e[1],n="channelsFirst"===this.dataFormat?e[3]:e[2];return t=Qn(t,this.poolSize[0],this.padding,this.strides[0]),n=Qn(n,this.poolSize[1],this.padding,this.strides[1]),"channelsFirst"===this.dataFormat?[e[0],e[1],t,n]:[e[0],t,n,e[3]]},t.prototype.call=function(e,t){var n=this;return Object(r.od)(function(){return n.invokeCallHook(e,t),n.poolingFunction(Ze(e),n.poolSize,n.strides,n.padding,n.dataFormat)})},t.prototype.getConfig=function(){var t={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t}(ct),Rr=function(e){function t(t){return e.call(this,t)||this}return i(t,e),t.prototype.poolingFunction=function(e,t,n,r,a){return J(a),Q(r),Cr(e,t,n,r,a,"max")},t.className="MaxPooling2D",t}(Mr);r.Ec.registerClass(Rr);var Dr=function(e){function t(t){return e.call(this,t)||this}return i(t,e),t.prototype.poolingFunction=function(e,t,n,r,a){return J(a),Q(r),Cr(e,t,n,r,a,"avg")},t.className="AveragePooling2D",t}(Mr);r.Ec.registerClass(Dr);var jr=function(e){function t(t){var n=e.call(this,t)||this;return n.inputSpec=[new it({ndim:3})],n}return i(t,e),t.prototype.computeOutputShape=function(e){return[e[0],e[2]]},t.prototype.call=function(e,t){throw new x},t}(ct),Lr=function(e){function t(t){return e.call(this,t)||this}return i(t,e),t.prototype.call=function(e,t){return Object(r.od)(function(){var t=Ze(e);return Object(r.Fb)(t,1)})},t.className="GlobalAveragePooling1D",t}(jr);r.Ec.registerClass(Lr);var Br=function(e){function t(t){return e.call(this,t)||this}return i(t,e),t.prototype.call=function(e,t){return Object(r.od)(function(){var t=Ze(e);return Object(r.Bb)(t,1)})},t.className="GlobalMaxPooling1D",t}(jr);r.Ec.registerClass(Br);var zr=function(e){function t(t){var n=e.call(this,t)||this;return n.dataFormat=null==t.dataFormat?"channelsLast":t.dataFormat,J(n.dataFormat),n.inputSpec=[new it({ndim:4})],n}return i(t,e),t.prototype.computeOutputShape=function(e){return e=e,"channelsLast"===this.dataFormat?[e[0],e[3]]:[e[0],e[1]]},t.prototype.call=function(e,t){throw new x},t.prototype.getConfig=function(){var t={dataFormat:this.dataFormat},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t}(ct),Fr=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.call=function(e,t){var n=this;return Object(r.od)(function(){var t=Ze(e);return"channelsLast"===n.dataFormat?Object(r.Fb)(t,[1,2]):Object(r.Fb)(t,[2,3])})},t.className="GlobalAveragePooling2D",t}(zr);r.Ec.registerClass(Fr);var Vr=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.call=function(e,t){var n=this;return Object(r.od)(function(){var t=Ze(e);return"channelsLast"===n.dataFormat?Object(r.Bb)(t,[1,2]):Object(r.Bb)(t,[2,3])})},t.className="GlobalMaxPooling2D",t}(zr);function Ur(e,t,n,r){if(Array.isArray(e)){if(null!=t||null!=n)throw new w("When inputs is an array, neither initialState or constants should be provided");null!=r&&(n=e.slice(e.length-r,e.length),e=e.slice(0,e.length-r)),e.length>1&&(t=e.slice(1,e.length)),e=e[0]}function a(e){return null==e||Array.isArray(e)?e:[e]}return{inputs:e,initialState:t=a(t),constants:n=a(n)}}function Wr(e,t,n,a,i,o,s,u){void 0===a&&(a=!1),void 0===s&&(s=!1),void 0===u&&(u=!1);var l=t.shape.length;if(l<3)throw new w("Input should be at least 3D, but is "+l+"D.");var c,f,p=[1,0].concat(he(2,l));if(t=Object(r.ud)(t,p),null!=i)throw new x("The rnn() function of the deeplearn.js backend does not support masking yet.");if(null!=o)throw new x("The rnn() functoin of the deeplearn.js backend does not support constants yet.");s&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),a&&(t=Object(r.uc)(t,0));for(var h=n,d=t.shape[0],m=function(n){var a=ge(t,n,1);a=a.reshape(a.shape.slice(1));var i=Object(r.od)(function(){return e(a,h)});if(f=i[0],u)if(0===n)c=f.expandDims(1);else{var o=Object(r.R)([c,f.expandDims(1)],1);c.dispose(),c=o}h=i[1]},g=0;g1?xe(n,[1,e]):n}):t.cell.stateSize>1?[xe(n,[1,t.cell.stateSize])]:[n]})},Object.defineProperty(t.prototype,"trainableWeights",{get:function(){return this.trainable?this.cell.trainableWeights:[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"nonTrainableWeights",{get:function(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights},enumerable:!0,configurable:!0}),t.prototype.getConfig=function(){var t={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};null!=this.numConstants&&(t.numConstants=this.numConstants);var n=this.cell.getConfig();t.cell={className:this.cell.getClassName(),config:n};var r=e.prototype.getConfig.call(this);return Object.assign(t,r),t},t.className="RNN",t}(ct);r.Ec.registerClass(qr);var $r=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t}(ct),Gr=function(e){function t(t){var n=e.call(this,t)||this;return n.DEFAULT_ACTIVATION="tanh",n.DEFAULT_KERNEL_INITIALIZER="glorotNormal",n.DEFAULT_RECURRENT_INITIALIZER="orthogonal",n.DEFAULT_BIAS_INITIALIZER="zeros",n.units=t.units,n.activation=Fn(null==t.activation?n.DEFAULT_ACTIVATION:t.activation),n.useBias=null==t.useBias||t.useBias,n.kernelInitializer=Ke(t.kernelInitializer||n.DEFAULT_KERNEL_INITIALIZER),n.recurrentInitializer=Ke(t.recurrentInitializer||n.DEFAULT_RECURRENT_INITIALIZER),n.biasInitializer=Ke(t.biasInitializer||n.DEFAULT_BIAS_INITIALIZER),n.kernelRegularizer=Jn(t.kernelRegularizer),n.recurrentRegularizer=Jn(t.recurrentRegularizer),n.biasRegularizer=Jn(t.biasRegularizer),n.kernelConstraint=H(t.kernelConstraint),n.recurrentConstraint=H(t.recurrentConstraint),n.biasConstraint=H(t.biasConstraint),n.dropout=fe([1,pe([0,null==t.dropout?0:t.dropout])]),n.recurrentDropout=fe([1,pe([0,null==t.recurrentDropout?0:t.recurrentDropout])]),n.stateSize=n.units,n.dropoutMask=null,n.recurrentDropoutMask=null,n}return i(t,e),t.prototype.build=function(e){e=Qe(e),this.kernel=this.addWeight("kernel",[e[e.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0},t.prototype.call=function(e,t){var n=this;return Object(r.od)(function(){if(2!==(e=e).length)throw new w("SimpleRNNCell expects 2 input Tensors, got "+e.length+".");var a=e[1];e=e[0];var i,o=null!=t.training&&t.training;01){for(var o=[],s=0;s= 3D, but received input shape "+JSON.stringify(t));this.inputSpec=[{shape:t}];var n=[t[0]].concat(t.slice(2));this.layer.built||(this.layer.build(n),this.layer.built=!0),e.prototype.build.call(this,t)},t.prototype.computeOutputShape=function(e){var t=[(e=Qe(e))[0]].concat(e.slice(2)),n=this.layer.computeOutputShape(t),r=e[1];return[n[0],r].concat(n.slice(1))},t.prototype.call=function(e,t){var n=this;return Object(r.od)(function(){return Wr(function(e,r){return[Ze(n.layer.call(e,t)),[]]},e=Ze(e),[],!1,null,null,!1,!0)[1]})},t.className="TimeDistributed",t}(ea);r.Ec.registerClass(ta);var na=["sum","mul","concat","ave"],ra=function(e){function t(t){var n=e.call(this,t)||this,r=t.layer.getConfig();if(n.forwardLayer=tn({className:t.layer.getClassName(),config:r}),r.goBackwards=!0!==r.goBackwards,n.backwardLayer=tn({className:t.layer.getClassName(),config:r}),n.forwardLayer.name="forward_"+n.forwardLayer.name,n.backwardLayer.name="backward_"+n.backwardLayer.name,function(e){j(na,"BidirectionalMergeMode",e)}(t.mergeMode),n.mergeMode=t.mergeMode,t.weights)throw new x("weights support is not implemented for Bidirectional layer yet.");return n._stateful=t.layer.stateful,n.returnSequences=t.layer.returnSequences,n.returnState=t.layer.returnState,n.supportsMasking=!0,n._trainable=!0,n.inputSpec=t.layer.inputSpec,n.numConstants=null,n}return i(t,e),Object.defineProperty(t.prototype,"trainable",{get:function(){return this._trainable},set:function(e){this._trainable=e,null!=this.forwardLayer&&(this.forwardLayer.trainable=e),null!=this.backwardLayer&&(this.backwardLayer.trainable=e)},enumerable:!0,configurable:!0}),t.prototype.getWeights=function(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())},t.prototype.setWeights=function(e){var t=e.length,n=Math.floor(t/2);this.forwardLayer.setWeights(e.slice(0,n)),this.backwardLayer.setWeights(e.slice(n))},t.prototype.computeOutputShape=function(e){var t,n,r,a=this.forwardLayer.computeOutputShape(e);return Array.isArray(a)&&Array.isArray(a[0])||(a=[a]),a=a,this.returnState?(r=a.slice(1),t=a[0]):t=a[0],t=t,"concat"===this.mergeMode?(t[t.length-1]*=2,n=[t]):n=null==this.mergeMode?[t,t.slice()]:[t],this.returnState?null==this.mergeMode?n.concat(r).concat(r.slice()):[t].concat(r).concat(r.slice()):O(n)},t.prototype.apply=function(t,n){var r=null==n?null:n.initialState,a=null==n?null:n.constants;null==n&&(n={});var i=Ur(t,r,a,this.numConstants);if(t=i.inputs,r=i.initialState,a=i.constants,Array.isArray(t)&&(r=t.slice(1),t=t[0]),(null==r||0===r.length)&&null==a)return e.prototype.apply.call(this,t,n);var o=[],s=[];if(null!=r){var u=r.length;if(u%2>0)throw new w("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");n.initialState=r,o.push.apply(o,r);var l=r.map(function(e){return new it({shape:e.shape})});this.forwardLayer.stateSpec=l.slice(0,u/2),this.backwardLayer.stateSpec=l.slice(u/2),s.push.apply(s,l)}if(null!=a)throw new x("Support for constants in Bidirectional layers is not implemented yet.");for(var c=o[0]instanceof ot,f=0,p=o;f0?a(r(e),9007199254740991):0}},function(e,t){var n=e.exports={version:"2.6.1"};"number"==typeof __e&&(__e=n)},function(e,t,n){var r=n(4),a=n(292),i=n(52),o=Object.defineProperty;t.f=n(14)?Object.defineProperty:function(e,t,n){if(r(e),t=i(t,!0),r(n),a)try{return o(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){e.exports=!n(8)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t,n){(function(e){!function(e,t){"use strict";function r(e,t){if(!e)throw new Error(t||"Assertion failed")}function a(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}function i(e,t,n){if(i.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(n=t,t=10),this._init(e||0,t||10,n||"be"))}var o;"object"==typeof e?e.exports=i:t.BN=i,i.BN=i,i.wordSize=26;try{o=n(432).Buffer}catch(e){}function s(e,t,n){for(var r=0,a=Math.min(e.length,n),i=t;i=49&&o<=54?o-49+10:o>=17&&o<=22?o-17+10:15&o}return r}function u(e,t,n,r){for(var a=0,i=Math.min(e.length,n),o=t;o=49?s-49+10:s>=17?s-17+10:s}return a}i.isBN=function(e){return e instanceof i||null!==e&&"object"==typeof e&&e.constructor.wordSize===i.wordSize&&Array.isArray(e.words)},i.max=function(e,t){return e.cmp(t)>0?e:t},i.min=function(e,t){return e.cmp(t)<0?e:t},i.prototype._init=function(e,t,n){if("number"==typeof e)return this._initNumber(e,t,n);if("object"==typeof e)return this._initArray(e,t,n);"hex"===t&&(t=16),r(t===(0|t)&&t>=2&&t<=36);var a=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&a++,16===t?this._parseHex(e,a):this._parseBase(e,t,a),"-"===e[0]&&(this.negative=1),this.strip(),"le"===n&&this._initArray(this.toArray(),t,n)},i.prototype._initNumber=function(e,t,n){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[67108863&e],this.length=1):e<4503599627370496?(this.words=[67108863&e,e/67108864&67108863],this.length=2):(r(e<9007199254740992),this.words=[67108863&e,e/67108864&67108863,1],this.length=3),"le"===n&&this._initArray(this.toArray(),t,n)},i.prototype._initArray=function(e,t,n){if(r("number"==typeof e.length),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var a=0;a=0;a-=3)o=e[a]|e[a-1]<<8|e[a-2]<<16,this.words[i]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,i++);else if("le"===n)for(a=0,i=0;a>>26-s&67108863,(s+=24)>=26&&(s-=26,i++);return this.strip()},i.prototype._parseHex=function(e,t){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var n=0;n=t;n-=6)a=s(e,n,n+6),this.words[r]|=a<>>26-i&4194303,(i+=24)>=26&&(i-=26,r++);n+6!==t&&(a=s(e,t,n+6),this.words[r]|=a<>>26-i&4194303),this.strip()},i.prototype._parseBase=function(e,t,n){this.words=[0],this.length=1;for(var r=0,a=1;a<=67108863;a*=t)r++;r--,a=a/t|0;for(var i=e.length-n,o=i%r,s=Math.min(i,i-o)+n,l=0,c=n;c1&&0===this.words[this.length-1];)this.length--;return this._normSign()},i.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},i.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],c=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function p(e,t,n){n.negative=t.negative^e.negative;var r=e.length+t.length|0;n.length=r,r=r-1|0;var a=0|e.words[0],i=0|t.words[0],o=a*i,s=67108863&o,u=o/67108864|0;n.words[0]=s;for(var l=1;l>>26,f=67108863&u,p=Math.min(l,t.length-1),h=Math.max(0,l-e.length+1);h<=p;h++){var d=l-h|0;c+=(o=(a=0|e.words[d])*(i=0|t.words[h])+f)/67108864|0,f=67108863&o}n.words[l]=0|f,u=0|c}return 0!==u?n.words[l]=0|u:n.length--,n.strip()}i.prototype.toString=function(e,t){var n;if(e=e||10,t=0|t||1,16===e||"hex"===e){n="";for(var a=0,i=0,o=0;o>>24-a&16777215)||o!==this.length-1?l[6-u.length]+u+n:u+n,(a+=2)>=26&&(a-=26,o--)}for(0!==i&&(n=i.toString(16)+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(e===(0|e)&&e>=2&&e<=36){var p=c[e],h=f[e];n="";var d=this.clone();for(d.negative=0;!d.isZero();){var m=d.modn(h).toString(e);n=(d=d.idivn(h)).isZero()?m+n:l[p-m.length]+m+n}for(this.isZero()&&(n="0"+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},i.prototype.toJSON=function(){return this.toString(16)},i.prototype.toBuffer=function(e,t){return r(void 0!==o),this.toArrayLike(o,e,t)},i.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},i.prototype.toArrayLike=function(e,t,n){var a=this.byteLength(),i=n||Math.max(1,a);r(a<=i,"byte array longer than desired length"),r(i>0,"Requested array length <= 0"),this.strip();var o,s,u="le"===t,l=new e(i),c=this.clone();if(u){for(s=0;!c.isZero();s++)o=c.andln(255),c.iushrn(8),l[s]=o;for(;s=4096&&(n+=13,t>>>=13),t>=64&&(n+=7,t>>>=7),t>=8&&(n+=4,t>>>=4),t>=2&&(n+=2,t>>>=2),n+t},i.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,n=0;return 0==(8191&t)&&(n+=13,t>>>=13),0==(127&t)&&(n+=7,t>>>=7),0==(15&t)&&(n+=4,t>>>=4),0==(3&t)&&(n+=2,t>>>=2),0==(1&t)&&n++,n},i.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},i.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},i.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var n=0;ne.length?this.clone().iand(e):e.clone().iand(this)},i.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},i.prototype.iuxor=function(e){var t,n;this.length>e.length?(t=this,n=e):(t=e,n=this);for(var r=0;re.length?this.clone().ixor(e):e.clone().ixor(this)},i.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},i.prototype.inotn=function(e){r("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),n=e%26;this._expand(t),n>0&&t--;for(var a=0;a0&&(this.words[a]=~this.words[a]&67108863>>26-n),this.strip()},i.prototype.notn=function(e){return this.clone().inotn(e)},i.prototype.setn=function(e,t){r("number"==typeof e&&e>=0);var n=e/26|0,a=e%26;return this._expand(n+1),this.words[n]=t?this.words[n]|1<e.length?(n=this,r=e):(n=e,r=this);for(var a=0,i=0;i>>26;for(;0!==a&&i>>26;if(this.length=n.length,0!==a)this.words[this.length]=a,this.length++;else if(n!==this)for(;ie.length?this.clone().iadd(e):e.clone().iadd(this)},i.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var n,r,a=this.cmp(e);if(0===a)return this.negative=0,this.length=1,this.words[0]=0,this;a>0?(n=this,r=e):(n=e,r=this);for(var i=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==i&&o>26,this.words[o]=67108863&t;if(0===i&&o>>13,h=0|o[1],d=8191&h,m=h>>>13,g=0|o[2],y=8191&g,v=g>>>13,b=0|o[3],w=8191&b,x=b>>>13,_=0|o[4],E=8191&_,N=_>>>13,S=0|o[5],O=8191&S,k=S>>>13,I=0|o[6],C=8191&I,P=I>>>13,A=0|o[7],T=8191&A,M=A>>>13,R=0|o[8],D=8191&R,j=R>>>13,L=0|o[9],B=8191&L,z=L>>>13,F=0|s[0],V=8191&F,U=F>>>13,W=0|s[1],q=8191&W,$=W>>>13,G=0|s[2],H=8191&G,K=G>>>13,X=0|s[3],Y=8191&X,J=X>>>13,Z=0|s[4],Q=8191&Z,ee=Z>>>13,te=0|s[5],ne=8191&te,re=te>>>13,ae=0|s[6],ie=8191&ae,oe=ae>>>13,se=0|s[7],ue=8191&se,le=se>>>13,ce=0|s[8],fe=8191&ce,pe=ce>>>13,he=0|s[9],de=8191&he,me=he>>>13;n.negative=e.negative^t.negative,n.length=19;var ge=(l+(r=Math.imul(f,V))|0)+((8191&(a=(a=Math.imul(f,U))+Math.imul(p,V)|0))<<13)|0;l=((i=Math.imul(p,U))+(a>>>13)|0)+(ge>>>26)|0,ge&=67108863,r=Math.imul(d,V),a=(a=Math.imul(d,U))+Math.imul(m,V)|0,i=Math.imul(m,U);var ye=(l+(r=r+Math.imul(f,q)|0)|0)+((8191&(a=(a=a+Math.imul(f,$)|0)+Math.imul(p,q)|0))<<13)|0;l=((i=i+Math.imul(p,$)|0)+(a>>>13)|0)+(ye>>>26)|0,ye&=67108863,r=Math.imul(y,V),a=(a=Math.imul(y,U))+Math.imul(v,V)|0,i=Math.imul(v,U),r=r+Math.imul(d,q)|0,a=(a=a+Math.imul(d,$)|0)+Math.imul(m,q)|0,i=i+Math.imul(m,$)|0;var ve=(l+(r=r+Math.imul(f,H)|0)|0)+((8191&(a=(a=a+Math.imul(f,K)|0)+Math.imul(p,H)|0))<<13)|0;l=((i=i+Math.imul(p,K)|0)+(a>>>13)|0)+(ve>>>26)|0,ve&=67108863,r=Math.imul(w,V),a=(a=Math.imul(w,U))+Math.imul(x,V)|0,i=Math.imul(x,U),r=r+Math.imul(y,q)|0,a=(a=a+Math.imul(y,$)|0)+Math.imul(v,q)|0,i=i+Math.imul(v,$)|0,r=r+Math.imul(d,H)|0,a=(a=a+Math.imul(d,K)|0)+Math.imul(m,H)|0,i=i+Math.imul(m,K)|0;var be=(l+(r=r+Math.imul(f,Y)|0)|0)+((8191&(a=(a=a+Math.imul(f,J)|0)+Math.imul(p,Y)|0))<<13)|0;l=((i=i+Math.imul(p,J)|0)+(a>>>13)|0)+(be>>>26)|0,be&=67108863,r=Math.imul(E,V),a=(a=Math.imul(E,U))+Math.imul(N,V)|0,i=Math.imul(N,U),r=r+Math.imul(w,q)|0,a=(a=a+Math.imul(w,$)|0)+Math.imul(x,q)|0,i=i+Math.imul(x,$)|0,r=r+Math.imul(y,H)|0,a=(a=a+Math.imul(y,K)|0)+Math.imul(v,H)|0,i=i+Math.imul(v,K)|0,r=r+Math.imul(d,Y)|0,a=(a=a+Math.imul(d,J)|0)+Math.imul(m,Y)|0,i=i+Math.imul(m,J)|0;var we=(l+(r=r+Math.imul(f,Q)|0)|0)+((8191&(a=(a=a+Math.imul(f,ee)|0)+Math.imul(p,Q)|0))<<13)|0;l=((i=i+Math.imul(p,ee)|0)+(a>>>13)|0)+(we>>>26)|0,we&=67108863,r=Math.imul(O,V),a=(a=Math.imul(O,U))+Math.imul(k,V)|0,i=Math.imul(k,U),r=r+Math.imul(E,q)|0,a=(a=a+Math.imul(E,$)|0)+Math.imul(N,q)|0,i=i+Math.imul(N,$)|0,r=r+Math.imul(w,H)|0,a=(a=a+Math.imul(w,K)|0)+Math.imul(x,H)|0,i=i+Math.imul(x,K)|0,r=r+Math.imul(y,Y)|0,a=(a=a+Math.imul(y,J)|0)+Math.imul(v,Y)|0,i=i+Math.imul(v,J)|0,r=r+Math.imul(d,Q)|0,a=(a=a+Math.imul(d,ee)|0)+Math.imul(m,Q)|0,i=i+Math.imul(m,ee)|0;var xe=(l+(r=r+Math.imul(f,ne)|0)|0)+((8191&(a=(a=a+Math.imul(f,re)|0)+Math.imul(p,ne)|0))<<13)|0;l=((i=i+Math.imul(p,re)|0)+(a>>>13)|0)+(xe>>>26)|0,xe&=67108863,r=Math.imul(C,V),a=(a=Math.imul(C,U))+Math.imul(P,V)|0,i=Math.imul(P,U),r=r+Math.imul(O,q)|0,a=(a=a+Math.imul(O,$)|0)+Math.imul(k,q)|0,i=i+Math.imul(k,$)|0,r=r+Math.imul(E,H)|0,a=(a=a+Math.imul(E,K)|0)+Math.imul(N,H)|0,i=i+Math.imul(N,K)|0,r=r+Math.imul(w,Y)|0,a=(a=a+Math.imul(w,J)|0)+Math.imul(x,Y)|0,i=i+Math.imul(x,J)|0,r=r+Math.imul(y,Q)|0,a=(a=a+Math.imul(y,ee)|0)+Math.imul(v,Q)|0,i=i+Math.imul(v,ee)|0,r=r+Math.imul(d,ne)|0,a=(a=a+Math.imul(d,re)|0)+Math.imul(m,ne)|0,i=i+Math.imul(m,re)|0;var _e=(l+(r=r+Math.imul(f,ie)|0)|0)+((8191&(a=(a=a+Math.imul(f,oe)|0)+Math.imul(p,ie)|0))<<13)|0;l=((i=i+Math.imul(p,oe)|0)+(a>>>13)|0)+(_e>>>26)|0,_e&=67108863,r=Math.imul(T,V),a=(a=Math.imul(T,U))+Math.imul(M,V)|0,i=Math.imul(M,U),r=r+Math.imul(C,q)|0,a=(a=a+Math.imul(C,$)|0)+Math.imul(P,q)|0,i=i+Math.imul(P,$)|0,r=r+Math.imul(O,H)|0,a=(a=a+Math.imul(O,K)|0)+Math.imul(k,H)|0,i=i+Math.imul(k,K)|0,r=r+Math.imul(E,Y)|0,a=(a=a+Math.imul(E,J)|0)+Math.imul(N,Y)|0,i=i+Math.imul(N,J)|0,r=r+Math.imul(w,Q)|0,a=(a=a+Math.imul(w,ee)|0)+Math.imul(x,Q)|0,i=i+Math.imul(x,ee)|0,r=r+Math.imul(y,ne)|0,a=(a=a+Math.imul(y,re)|0)+Math.imul(v,ne)|0,i=i+Math.imul(v,re)|0,r=r+Math.imul(d,ie)|0,a=(a=a+Math.imul(d,oe)|0)+Math.imul(m,ie)|0,i=i+Math.imul(m,oe)|0;var Ee=(l+(r=r+Math.imul(f,ue)|0)|0)+((8191&(a=(a=a+Math.imul(f,le)|0)+Math.imul(p,ue)|0))<<13)|0;l=((i=i+Math.imul(p,le)|0)+(a>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,r=Math.imul(D,V),a=(a=Math.imul(D,U))+Math.imul(j,V)|0,i=Math.imul(j,U),r=r+Math.imul(T,q)|0,a=(a=a+Math.imul(T,$)|0)+Math.imul(M,q)|0,i=i+Math.imul(M,$)|0,r=r+Math.imul(C,H)|0,a=(a=a+Math.imul(C,K)|0)+Math.imul(P,H)|0,i=i+Math.imul(P,K)|0,r=r+Math.imul(O,Y)|0,a=(a=a+Math.imul(O,J)|0)+Math.imul(k,Y)|0,i=i+Math.imul(k,J)|0,r=r+Math.imul(E,Q)|0,a=(a=a+Math.imul(E,ee)|0)+Math.imul(N,Q)|0,i=i+Math.imul(N,ee)|0,r=r+Math.imul(w,ne)|0,a=(a=a+Math.imul(w,re)|0)+Math.imul(x,ne)|0,i=i+Math.imul(x,re)|0,r=r+Math.imul(y,ie)|0,a=(a=a+Math.imul(y,oe)|0)+Math.imul(v,ie)|0,i=i+Math.imul(v,oe)|0,r=r+Math.imul(d,ue)|0,a=(a=a+Math.imul(d,le)|0)+Math.imul(m,ue)|0,i=i+Math.imul(m,le)|0;var Ne=(l+(r=r+Math.imul(f,fe)|0)|0)+((8191&(a=(a=a+Math.imul(f,pe)|0)+Math.imul(p,fe)|0))<<13)|0;l=((i=i+Math.imul(p,pe)|0)+(a>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,r=Math.imul(B,V),a=(a=Math.imul(B,U))+Math.imul(z,V)|0,i=Math.imul(z,U),r=r+Math.imul(D,q)|0,a=(a=a+Math.imul(D,$)|0)+Math.imul(j,q)|0,i=i+Math.imul(j,$)|0,r=r+Math.imul(T,H)|0,a=(a=a+Math.imul(T,K)|0)+Math.imul(M,H)|0,i=i+Math.imul(M,K)|0,r=r+Math.imul(C,Y)|0,a=(a=a+Math.imul(C,J)|0)+Math.imul(P,Y)|0,i=i+Math.imul(P,J)|0,r=r+Math.imul(O,Q)|0,a=(a=a+Math.imul(O,ee)|0)+Math.imul(k,Q)|0,i=i+Math.imul(k,ee)|0,r=r+Math.imul(E,ne)|0,a=(a=a+Math.imul(E,re)|0)+Math.imul(N,ne)|0,i=i+Math.imul(N,re)|0,r=r+Math.imul(w,ie)|0,a=(a=a+Math.imul(w,oe)|0)+Math.imul(x,ie)|0,i=i+Math.imul(x,oe)|0,r=r+Math.imul(y,ue)|0,a=(a=a+Math.imul(y,le)|0)+Math.imul(v,ue)|0,i=i+Math.imul(v,le)|0,r=r+Math.imul(d,fe)|0,a=(a=a+Math.imul(d,pe)|0)+Math.imul(m,fe)|0,i=i+Math.imul(m,pe)|0;var Se=(l+(r=r+Math.imul(f,de)|0)|0)+((8191&(a=(a=a+Math.imul(f,me)|0)+Math.imul(p,de)|0))<<13)|0;l=((i=i+Math.imul(p,me)|0)+(a>>>13)|0)+(Se>>>26)|0,Se&=67108863,r=Math.imul(B,q),a=(a=Math.imul(B,$))+Math.imul(z,q)|0,i=Math.imul(z,$),r=r+Math.imul(D,H)|0,a=(a=a+Math.imul(D,K)|0)+Math.imul(j,H)|0,i=i+Math.imul(j,K)|0,r=r+Math.imul(T,Y)|0,a=(a=a+Math.imul(T,J)|0)+Math.imul(M,Y)|0,i=i+Math.imul(M,J)|0,r=r+Math.imul(C,Q)|0,a=(a=a+Math.imul(C,ee)|0)+Math.imul(P,Q)|0,i=i+Math.imul(P,ee)|0,r=r+Math.imul(O,ne)|0,a=(a=a+Math.imul(O,re)|0)+Math.imul(k,ne)|0,i=i+Math.imul(k,re)|0,r=r+Math.imul(E,ie)|0,a=(a=a+Math.imul(E,oe)|0)+Math.imul(N,ie)|0,i=i+Math.imul(N,oe)|0,r=r+Math.imul(w,ue)|0,a=(a=a+Math.imul(w,le)|0)+Math.imul(x,ue)|0,i=i+Math.imul(x,le)|0,r=r+Math.imul(y,fe)|0,a=(a=a+Math.imul(y,pe)|0)+Math.imul(v,fe)|0,i=i+Math.imul(v,pe)|0;var Oe=(l+(r=r+Math.imul(d,de)|0)|0)+((8191&(a=(a=a+Math.imul(d,me)|0)+Math.imul(m,de)|0))<<13)|0;l=((i=i+Math.imul(m,me)|0)+(a>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,r=Math.imul(B,H),a=(a=Math.imul(B,K))+Math.imul(z,H)|0,i=Math.imul(z,K),r=r+Math.imul(D,Y)|0,a=(a=a+Math.imul(D,J)|0)+Math.imul(j,Y)|0,i=i+Math.imul(j,J)|0,r=r+Math.imul(T,Q)|0,a=(a=a+Math.imul(T,ee)|0)+Math.imul(M,Q)|0,i=i+Math.imul(M,ee)|0,r=r+Math.imul(C,ne)|0,a=(a=a+Math.imul(C,re)|0)+Math.imul(P,ne)|0,i=i+Math.imul(P,re)|0,r=r+Math.imul(O,ie)|0,a=(a=a+Math.imul(O,oe)|0)+Math.imul(k,ie)|0,i=i+Math.imul(k,oe)|0,r=r+Math.imul(E,ue)|0,a=(a=a+Math.imul(E,le)|0)+Math.imul(N,ue)|0,i=i+Math.imul(N,le)|0,r=r+Math.imul(w,fe)|0,a=(a=a+Math.imul(w,pe)|0)+Math.imul(x,fe)|0,i=i+Math.imul(x,pe)|0;var ke=(l+(r=r+Math.imul(y,de)|0)|0)+((8191&(a=(a=a+Math.imul(y,me)|0)+Math.imul(v,de)|0))<<13)|0;l=((i=i+Math.imul(v,me)|0)+(a>>>13)|0)+(ke>>>26)|0,ke&=67108863,r=Math.imul(B,Y),a=(a=Math.imul(B,J))+Math.imul(z,Y)|0,i=Math.imul(z,J),r=r+Math.imul(D,Q)|0,a=(a=a+Math.imul(D,ee)|0)+Math.imul(j,Q)|0,i=i+Math.imul(j,ee)|0,r=r+Math.imul(T,ne)|0,a=(a=a+Math.imul(T,re)|0)+Math.imul(M,ne)|0,i=i+Math.imul(M,re)|0,r=r+Math.imul(C,ie)|0,a=(a=a+Math.imul(C,oe)|0)+Math.imul(P,ie)|0,i=i+Math.imul(P,oe)|0,r=r+Math.imul(O,ue)|0,a=(a=a+Math.imul(O,le)|0)+Math.imul(k,ue)|0,i=i+Math.imul(k,le)|0,r=r+Math.imul(E,fe)|0,a=(a=a+Math.imul(E,pe)|0)+Math.imul(N,fe)|0,i=i+Math.imul(N,pe)|0;var Ie=(l+(r=r+Math.imul(w,de)|0)|0)+((8191&(a=(a=a+Math.imul(w,me)|0)+Math.imul(x,de)|0))<<13)|0;l=((i=i+Math.imul(x,me)|0)+(a>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,r=Math.imul(B,Q),a=(a=Math.imul(B,ee))+Math.imul(z,Q)|0,i=Math.imul(z,ee),r=r+Math.imul(D,ne)|0,a=(a=a+Math.imul(D,re)|0)+Math.imul(j,ne)|0,i=i+Math.imul(j,re)|0,r=r+Math.imul(T,ie)|0,a=(a=a+Math.imul(T,oe)|0)+Math.imul(M,ie)|0,i=i+Math.imul(M,oe)|0,r=r+Math.imul(C,ue)|0,a=(a=a+Math.imul(C,le)|0)+Math.imul(P,ue)|0,i=i+Math.imul(P,le)|0,r=r+Math.imul(O,fe)|0,a=(a=a+Math.imul(O,pe)|0)+Math.imul(k,fe)|0,i=i+Math.imul(k,pe)|0;var Ce=(l+(r=r+Math.imul(E,de)|0)|0)+((8191&(a=(a=a+Math.imul(E,me)|0)+Math.imul(N,de)|0))<<13)|0;l=((i=i+Math.imul(N,me)|0)+(a>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,r=Math.imul(B,ne),a=(a=Math.imul(B,re))+Math.imul(z,ne)|0,i=Math.imul(z,re),r=r+Math.imul(D,ie)|0,a=(a=a+Math.imul(D,oe)|0)+Math.imul(j,ie)|0,i=i+Math.imul(j,oe)|0,r=r+Math.imul(T,ue)|0,a=(a=a+Math.imul(T,le)|0)+Math.imul(M,ue)|0,i=i+Math.imul(M,le)|0,r=r+Math.imul(C,fe)|0,a=(a=a+Math.imul(C,pe)|0)+Math.imul(P,fe)|0,i=i+Math.imul(P,pe)|0;var Pe=(l+(r=r+Math.imul(O,de)|0)|0)+((8191&(a=(a=a+Math.imul(O,me)|0)+Math.imul(k,de)|0))<<13)|0;l=((i=i+Math.imul(k,me)|0)+(a>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,r=Math.imul(B,ie),a=(a=Math.imul(B,oe))+Math.imul(z,ie)|0,i=Math.imul(z,oe),r=r+Math.imul(D,ue)|0,a=(a=a+Math.imul(D,le)|0)+Math.imul(j,ue)|0,i=i+Math.imul(j,le)|0,r=r+Math.imul(T,fe)|0,a=(a=a+Math.imul(T,pe)|0)+Math.imul(M,fe)|0,i=i+Math.imul(M,pe)|0;var Ae=(l+(r=r+Math.imul(C,de)|0)|0)+((8191&(a=(a=a+Math.imul(C,me)|0)+Math.imul(P,de)|0))<<13)|0;l=((i=i+Math.imul(P,me)|0)+(a>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,r=Math.imul(B,ue),a=(a=Math.imul(B,le))+Math.imul(z,ue)|0,i=Math.imul(z,le),r=r+Math.imul(D,fe)|0,a=(a=a+Math.imul(D,pe)|0)+Math.imul(j,fe)|0,i=i+Math.imul(j,pe)|0;var Te=(l+(r=r+Math.imul(T,de)|0)|0)+((8191&(a=(a=a+Math.imul(T,me)|0)+Math.imul(M,de)|0))<<13)|0;l=((i=i+Math.imul(M,me)|0)+(a>>>13)|0)+(Te>>>26)|0,Te&=67108863,r=Math.imul(B,fe),a=(a=Math.imul(B,pe))+Math.imul(z,fe)|0,i=Math.imul(z,pe);var Me=(l+(r=r+Math.imul(D,de)|0)|0)+((8191&(a=(a=a+Math.imul(D,me)|0)+Math.imul(j,de)|0))<<13)|0;l=((i=i+Math.imul(j,me)|0)+(a>>>13)|0)+(Me>>>26)|0,Me&=67108863;var Re=(l+(r=Math.imul(B,de))|0)+((8191&(a=(a=Math.imul(B,me))+Math.imul(z,de)|0))<<13)|0;return l=((i=Math.imul(z,me))+(a>>>13)|0)+(Re>>>26)|0,Re&=67108863,u[0]=ge,u[1]=ye,u[2]=ve,u[3]=be,u[4]=we,u[5]=xe,u[6]=_e,u[7]=Ee,u[8]=Ne,u[9]=Se,u[10]=Oe,u[11]=ke,u[12]=Ie,u[13]=Ce,u[14]=Pe,u[15]=Ae,u[16]=Te,u[17]=Me,u[18]=Re,0!==l&&(u[19]=l,n.length++),n};function d(e,t,n){return(new m).mulp(e,t,n)}function m(e,t){this.x=e,this.y=t}Math.imul||(h=p),i.prototype.mulTo=function(e,t){var n=this.length+e.length;return 10===this.length&&10===e.length?h(this,e,t):n<63?p(this,e,t):n<1024?function(e,t,n){n.negative=t.negative^e.negative,n.length=e.length+t.length;for(var r=0,a=0,i=0;i>>26)|0)>>>26,o&=67108863}n.words[i]=s,r=o,o=a}return 0!==r?n.words[i]=r:n.length--,n.strip()}(this,e,t):d(this,e,t)},m.prototype.makeRBT=function(e){for(var t=new Array(e),n=i.prototype._countBits(e)-1,r=0;r>=1;return r},m.prototype.permute=function(e,t,n,r,a,i){for(var o=0;o>>=1)a++;return 1<>>=13,n[2*o+1]=8191&i,i>>>=13;for(o=2*t;o>=26,t+=a/67108864|0,t+=i>>>26,this.words[n]=67108863&i}return 0!==t&&(this.words[n]=t,this.length++),this},i.prototype.muln=function(e){return this.clone().imuln(e)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),n=0;n>>a}return t}(e);if(0===t.length)return new i(1);for(var n=this,r=0;r=0);var t,n=e%26,a=(e-n)/26,i=67108863>>>26-n<<26-n;if(0!==n){var o=0;for(t=0;t>>26-n}o&&(this.words[t]=o,this.length++)}if(0!==a){for(t=this.length-1;t>=0;t--)this.words[t+a]=this.words[t];for(t=0;t=0),a=t?(t-t%26)/26:0;var i=e%26,o=Math.min((e-i)/26,this.length),s=67108863^67108863>>>i<o)for(this.length-=o,l=0;l=0&&(0!==c||l>=a);l--){var f=0|this.words[l];this.words[l]=c<<26-i|f>>>i,c=f&s}return u&&0!==c&&(u.words[u.length++]=c),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},i.prototype.ishrn=function(e,t,n){return r(0===this.negative),this.iushrn(e,t,n)},i.prototype.shln=function(e){return this.clone().ishln(e)},i.prototype.ushln=function(e){return this.clone().iushln(e)},i.prototype.shrn=function(e){return this.clone().ishrn(e)},i.prototype.ushrn=function(e){return this.clone().iushrn(e)},i.prototype.testn=function(e){r("number"==typeof e&&e>=0);var t=e%26,n=(e-t)/26,a=1<=0);var t=e%26,n=(e-t)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==t&&n++,this.length=Math.min(n,this.length),0!==t){var a=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},i.prototype.isubn=function(e){if(r("number"==typeof e),r(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[a+n]=67108863&i}for(;a>26,this.words[a+n]=67108863&i;if(0===s)return this.strip();for(r(-1===s),s=0,a=0;a>26,this.words[a]=67108863&i;return this.negative=1,this.strip()},i.prototype._wordDiv=function(e,t){var n=(this.length,e.length),r=this.clone(),a=e,o=0|a.words[a.length-1];0!=(n=26-this._countBits(o))&&(a=a.ushln(n),r.iushln(n),o=0|a.words[a.length-1]);var s,u=r.length-a.length;if("mod"!==t){(s=new i(null)).length=u+1,s.words=new Array(s.length);for(var l=0;l=0;f--){var p=67108864*(0|r.words[a.length+f])+(0|r.words[a.length+f-1]);for(p=Math.min(p/o|0,67108863),r._ishlnsubmul(a,p,f);0!==r.negative;)p--,r.negative=0,r._ishlnsubmul(a,1,f),r.isZero()||(r.negative^=1);s&&(s.words[f]=p)}return s&&s.strip(),r.strip(),"div"!==t&&0!==n&&r.iushrn(n),{div:s||null,mod:r}},i.prototype.divmod=function(e,t,n){return r(!e.isZero()),this.isZero()?{div:new i(0),mod:new i(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(a=s.div.neg()),"div"!==t&&(o=s.mod.neg(),n&&0!==o.negative&&o.iadd(e)),{div:a,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(a=s.div.neg()),{div:a,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(o=s.mod.neg(),n&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new i(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new i(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new i(this.modn(e.words[0]))}:this._wordDiv(e,t);var a,o,s},i.prototype.div=function(e){return this.divmod(e,"div",!1).div},i.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},i.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},i.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var n=0!==t.div.negative?t.mod.isub(e):t.mod,r=e.ushrn(1),a=e.andln(1),i=n.cmp(r);return i<0||1===a&&0===i?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},i.prototype.modn=function(e){r(e<=67108863);for(var t=(1<<26)%e,n=0,a=this.length-1;a>=0;a--)n=(t*n+(0|this.words[a]))%e;return n},i.prototype.idivn=function(e){r(e<=67108863);for(var t=0,n=this.length-1;n>=0;n--){var a=(0|this.words[n])+67108864*t;this.words[n]=a/e|0,t=a%e}return this.strip()},i.prototype.divn=function(e){return this.clone().idivn(e)},i.prototype.egcd=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var a=new i(1),o=new i(0),s=new i(0),u=new i(1),l=0;t.isEven()&&n.isEven();)t.iushrn(1),n.iushrn(1),++l;for(var c=n.clone(),f=t.clone();!t.isZero();){for(var p=0,h=1;0==(t.words[0]&h)&&p<26;++p,h<<=1);if(p>0)for(t.iushrn(p);p-- >0;)(a.isOdd()||o.isOdd())&&(a.iadd(c),o.isub(f)),a.iushrn(1),o.iushrn(1);for(var d=0,m=1;0==(n.words[0]&m)&&d<26;++d,m<<=1);if(d>0)for(n.iushrn(d);d-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(c),u.isub(f)),s.iushrn(1),u.iushrn(1);t.cmp(n)>=0?(t.isub(n),a.isub(s),o.isub(u)):(n.isub(t),s.isub(a),u.isub(o))}return{a:s,b:u,gcd:n.iushln(l)}},i.prototype._invmp=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var a,o=new i(1),s=new i(0),u=n.clone();t.cmpn(1)>0&&n.cmpn(1)>0;){for(var l=0,c=1;0==(t.words[0]&c)&&l<26;++l,c<<=1);if(l>0)for(t.iushrn(l);l-- >0;)o.isOdd()&&o.iadd(u),o.iushrn(1);for(var f=0,p=1;0==(n.words[0]&p)&&f<26;++f,p<<=1);if(f>0)for(n.iushrn(f);f-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);t.cmp(n)>=0?(t.isub(n),o.isub(s)):(n.isub(t),s.isub(o))}return(a=0===t.cmpn(1)?o:s).cmpn(0)<0&&a.iadd(e),a},i.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),n=e.clone();t.negative=0,n.negative=0;for(var r=0;t.isEven()&&n.isEven();r++)t.iushrn(1),n.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;n.isEven();)n.iushrn(1);var a=t.cmp(n);if(a<0){var i=t;t=n,n=i}else if(0===a||0===n.cmpn(1))break;t.isub(n)}return n.iushln(r)},i.prototype.invm=function(e){return this.egcd(e).a.umod(e)},i.prototype.isEven=function(){return 0==(1&this.words[0])},i.prototype.isOdd=function(){return 1==(1&this.words[0])},i.prototype.andln=function(e){return this.words[0]&e},i.prototype.bincn=function(e){r("number"==typeof e);var t=e%26,n=(e-t)/26,a=1<>>26,s&=67108863,this.words[o]=s}return 0!==i&&(this.words[o]=i,this.length++),this},i.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},i.prototype.cmpn=function(e){var t,n=e<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this.strip(),this.length>1)t=1;else{n&&(e=-e),r(e<=67108863,"Number is too big");var a=0|this.words[0];t=a===e?0:ae.length)return 1;if(this.length=0;n--){var r=0|this.words[n],a=0|e.words[n];if(r!==a){ra&&(t=1);break}}return t},i.prototype.gtn=function(e){return 1===this.cmpn(e)},i.prototype.gt=function(e){return 1===this.cmp(e)},i.prototype.gten=function(e){return this.cmpn(e)>=0},i.prototype.gte=function(e){return this.cmp(e)>=0},i.prototype.ltn=function(e){return-1===this.cmpn(e)},i.prototype.lt=function(e){return-1===this.cmp(e)},i.prototype.lten=function(e){return this.cmpn(e)<=0},i.prototype.lte=function(e){return this.cmp(e)<=0},i.prototype.eqn=function(e){return 0===this.cmpn(e)},i.prototype.eq=function(e){return 0===this.cmp(e)},i.red=function(e){return new _(e)},i.prototype.toRed=function(e){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},i.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(e){return this.red=e,this},i.prototype.forceRed=function(e){return r(!this.red,"Already a number in reduction context"),this._forceRed(e)},i.prototype.redAdd=function(e){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},i.prototype.redIAdd=function(e){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},i.prototype.redSub=function(e){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},i.prototype.redISub=function(e){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},i.prototype.redShl=function(e){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},i.prototype.redMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},i.prototype.redIMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},i.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(e){return r(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var g={k256:null,p224:null,p192:null,p25519:null};function y(e,t){this.name=e,this.p=new i(t,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function v(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function x(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function _(e){if("string"==typeof e){var t=i._prime(e);this.m=t.p,this.prime=t}else r(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function E(e){_.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var e=new i(null);return e.words=new Array(Math.ceil(this.n/13)),e},y.prototype.ireduce=function(e){var t,n=e;do{this.split(n,this.tmp),t=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(t>this.n);var r=t0?n.isub(this.p):n.strip(),n},y.prototype.split=function(e,t){e.iushrn(this.n,0,t)},y.prototype.imulK=function(e){return e.imul(this.k)},a(v,y),v.prototype.split=function(e,t){for(var n=Math.min(e.length,9),r=0;r>>22,a=i}a>>>=22,e.words[r-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},v.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,n=0;n>>=26,e.words[n]=a,t=r}return 0!==t&&(e.words[e.length++]=t),e},i._prime=function(e){if(g[e])return g[e];var t;if("k256"===e)t=new v;else if("p224"===e)t=new b;else if("p192"===e)t=new w;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new x}return g[e]=t,t},_.prototype._verify1=function(e){r(0===e.negative,"red works only with positives"),r(e.red,"red works only with red numbers")},_.prototype._verify2=function(e,t){r(0==(e.negative|t.negative),"red works only with positives"),r(e.red&&e.red===t.red,"red works only with red numbers")},_.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},_.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},_.prototype.add=function(e,t){this._verify2(e,t);var n=e.add(t);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},_.prototype.iadd=function(e,t){this._verify2(e,t);var n=e.iadd(t);return n.cmp(this.m)>=0&&n.isub(this.m),n},_.prototype.sub=function(e,t){this._verify2(e,t);var n=e.sub(t);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},_.prototype.isub=function(e,t){this._verify2(e,t);var n=e.isub(t);return n.cmpn(0)<0&&n.iadd(this.m),n},_.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},_.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},_.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},_.prototype.isqr=function(e){return this.imul(e,e.clone())},_.prototype.sqr=function(e){return this.mul(e,e)},_.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(r(t%2==1),3===t){var n=this.m.add(new i(1)).iushrn(2);return this.pow(e,n)}for(var a=this.m.subn(1),o=0;!a.isZero()&&0===a.andln(1);)o++,a.iushrn(1);r(!a.isZero());var s=new i(1).toRed(this),u=s.redNeg(),l=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new i(2*c*c).toRed(this);0!==this.pow(c,l).cmp(u);)c.redIAdd(u);for(var f=this.pow(c,a),p=this.pow(e,a.addn(1).iushrn(1)),h=this.pow(e,a),d=o;0!==h.cmp(s);){for(var m=h,g=0;0!==m.cmp(s);g++)m=m.redSqr();r(g=0;r--){for(var l=t.words[r],c=u-1;c>=0;c--){var f=l>>c&1;a!==n[0]&&(a=this.sqr(a)),0!==f||0!==o?(o<<=1,o|=f,(4==++s||0===r&&0===c)&&(a=this.mul(a,n[o]),s=0,o=0)):s=0}u=26}return a},_.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},_.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},i.mont=function(e){return new E(e)},a(E,_),E.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},E.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},E.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var n=e.imul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),a=n.isub(r).iushrn(this.shift),i=a;return a.cmp(this.m)>=0?i=a.isub(this.m):a.cmpn(0)<0&&(i=a.iadd(this.m)),i._forceRed(this)},E.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new i(0)._forceRed(this);var n=e.mul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),a=n.isub(r).iushrn(this.shift),o=a;return a.cmp(this.m)>=0?o=a.isub(this.m):a.cmpn(0)<0&&(o=a.iadd(this.m)),o._forceRed(this)},E.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(void 0===e||e,this)}).call(this,n(433)(e))},function(e,t,n){"use strict";(function(e){ + */function i(e,t){function n(){this.constructor=e}a(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&a[a.length-1])&&(6===i[0]||2===i[0])){o=0;continue}if(3===i[0]&&(!a||i[1]>a[0]&&i[1]t?1:0}(e,t)}function R(e){if(null==e)return e;for(var t=[],n=0,r=e;n=0),N(r>=n),Array.isArray(e)&&e.length>=n&&e.length<=r&&e.every(function(e){return typeof e===t})}function B(e,t){return Object(r.od)(function(){return Object(r.Tc)(Object(r.dd)(Object(r.Pb)(e,e),t,!0))})}var z=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.getConfig=function(){return{}},t}(r.Ec.Serializable),F=function(e){function t(t){var n=e.call(this)||this;return n.defaultMaxValue=2,n.defaultAxis=0,n.maxValue=null!=t.maxValue?t.maxValue:n.defaultMaxValue,n.axis=null!=t.axis?t.axis:n.defaultAxis,n}return i(t,e),t.prototype.apply=function(e){var t=this;return Object(r.od)(function(){var n=B(e,t.axis),a=Object(r.O)(n,0,t.maxValue);return Object(r.Ob)(e,Object(r.Ha)(a,Object(r.s)(y(c()),n)))})},t.prototype.getConfig=function(){return{maxValue:this.maxValue,axis:this.axis}},t.className="MaxNorm",t}(z);r.Ec.registerClass(F);var V=function(e){function t(t){var n=e.call(this)||this;return n.defaultAxis=0,n.axis=null!=t.axis?t.axis:n.defaultAxis,n}return i(t,e),t.prototype.apply=function(e){var t=this;return Object(r.od)(function(){return Object(r.Ha)(e,Object(r.s)(y(c()),B(e,t.axis)))})},t.prototype.getConfig=function(){return{axis:this.axis}},t.className="UnitNorm",t}(z);r.Ec.registerClass(V);var U=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.apply=function(e){return Object(r.sc)(e)},t.className="NonNeg",t}(z);r.Ec.registerClass(U);var W=function(e){function t(t){var n=e.call(this)||this;return n.defaultMinValue=0,n.defaultMaxValue=1,n.defaultRate=1,n.defaultAxis=0,n.minValue=null!=t.minValue?t.minValue:n.defaultMinValue,n.maxValue=null!=t.maxValue?t.maxValue:n.defaultMaxValue,n.rate=null!=t.rate?t.rate:n.defaultRate,n.axis=null!=t.axis?t.axis:n.defaultAxis,n}return i(t,e),t.prototype.apply=function(e){var t=this;return Object(r.od)(function(){var n=B(e,t.axis),a=Object(r.s)(Object(r.Ob)(y(t.rate),Object(r.O)(n,t.minValue,t.maxValue)),Object(r.Ob)(y(1-t.rate),n));return Object(r.Ob)(e,Object(r.Ha)(a,Object(r.s)(y(c()),n)))})},t.prototype.getConfig=function(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}},t.className="MinMaxNorm",t}(z);r.Ec.registerClass(W);var q={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function $(e){return A(e)}function G(e,t){return void 0===t&&(t={}),T(e,r.Ec.SerializationMap.getMap().classNameMap,t,"constraint")}function H(e){return null==e?null:"string"==typeof e?G({className:e in q?q[e]:e,config:{}}):e instanceof z?e:G(e)}var K=Object.freeze({maxNorm:function(e){return new F(e)},unitNorm:function(e){return new V(e)},nonNeg:function(){return new U},minMaxNorm:function(e){return new W(e)}}),X=new Map,Y=["channelsFirst","channelsLast"];function J(e){j(Y,"DataFormat",e)}var Z=["valid","same","causal"];function Q(e){j(Z,"PaddingMode",e)}var ee=["max","avg"],te=[],ne="/";function re(e,t){te.push(e);try{var n=t();return te.pop(),n}catch(e){throw te.pop(),e}}function ae(e){if(!se(e))throw new Error("Not a valid tensor name: '"+e+"'");return(0===te.length?"":te.join(ne)+ne)+e}function ie(e){if(!se(e))throw new Error("Not a valid tensor name: '"+e+"'");X.has(e)||X.set(e,0);var t=X.get(e);if(X.set(e,X.get(e)+1),t>0){var n=e+"_"+t;return X.set(n,1),n}return e}var oe=new RegExp(/^[A-Za-z][A-Za-z0-9\._\/]*$/);function se(e){return!!e.match(oe)}function ue(e){return e===parseInt(e.toString(),10)}function le(e,t,n){null==t&&(t=0),null==n&&(n=e.length);for(var r=1,a=t;a= 2 but got x shape = "+e.shape+" and y shape = "+t.shape);if(t.rank>=3&&(a=e.shape.slice(-1)[0])!==(s=t.shape.slice(-2)[0]))throw new x("If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = "+e.shape+" and y shape = "+t.shape);if(2===e.rank&&2===t.rank)return Object(r.Ab)(e,t);var n=e.shape.slice(),a=n.pop();e=e.reshape([-1,a]);var i=t.shape.slice(),o=i.pop(),s=i.pop(),u=i.concat([o]),l=Array.from({length:t.rank},function(e,n){return 0===n?t.rank-2:n<=t.rank-2?n-1:n});t=t.transpose(l).reshape([s,-1]);var c=n.concat(u);return Object(r.Ab)(e,t).reshape(c)}function Ne(e,t,n){return Object(r.od)(function(){return t=Array.isArray(t)?Object(r.hd)(t,"int32"):t.toInt(),Object(r.Xa)(e,t,n)})}function Se(e){return Object(r.Pb)(e,e)}function Oe(e,t,n){return Object(r.od)(function(){if(null==n&&(n="channelsLast"),J(n),1!==t.rank&&t.rank!==e.rank)throw new w("Unexpected bias dimensions: "+t.rank+"; expected it to be 1 or "+e.rank);var r,a=t.shape;if(5===e.rank)"channelsFirst"===n?r=1===a.length?e.add(t.reshape([1,a[0],1,1,1])):e.add(t.reshape([1,a[3],a[0],a[1],a[2]])):"channelsLast"===n&&(r=1===a.length?e.add(t.reshape([1,1,1,1,a[0]])):e.add(t.reshape([1].concat(a))));else if(4===e.rank)"channelsFirst"===n?r=1===a.length?e.add(t.reshape([1,a[0],1,1])):e.add(t.reshape([1,a[2],a[0],a[1]])):"channelsLast"===n&&(r=1===a.length?e.add(t.reshape([1,1,1,a[0]])):e.add(t.reshape([1].concat(a))));else if(3===e.rank)"channelsFirst"===n?r=1===a.length?e.add(t.reshape([1,a[0],1])):e.add(t.reshape([1,a[1],a[0]])):"channelsLast"===n&&(r=1===a.length?e.add(t.reshape([1,1,a[0]])):e.add(t.reshape([1].concat(a))));else{if(!(e.rank<3))throw new w("Unsupported input rank by biasAdd: "+e.rank);r=e.add(t)}return r})}function ke(e,t,n,a){return Object(r.od)(function(){if(null!=n&&!r.yd.arraysEqual(e.shape,n))throw new x("Non-default noise shape is not implemented yet: "+JSON.stringify(n));if(null!=a)throw new x("seed is not implemented for dropout yet.");var i=Object(r.Zc)(Object(r.s)(Object(r.Sb)(t),Object(r.oc)(e.shape,0,1,"float32")));return i=Object(r.Ob)(Object(r.Ha)(y(1),Object(r.bd)(y(1),t)),i),Object(r.Ob)(e,i)})}function Ie(e,t,n){return void 0===n&&(n=!1),n?e():t()}var Ce=["fanIn","fanOut","fanAvg"],Pe=["normal","uniform"],Ae=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.fromConfigUsesCustomObjects=function(){return!1},t.prototype.getConfig=function(){return{}},t}(r.Ec.Serializable),Te=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.apply=function(e,t){return Object(r.Hd)(e,t)},t.className="Zeros",t}(Ae);r.Ec.registerClass(Te);var Me=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.apply=function(e,t){return Object(r.Yb)(e,t)},t.className="Ones",t}(Ae);r.Ec.registerClass(Me);var Re=function(e){function t(t){var n=e.call(this)||this;if("object"!=typeof t)throw new w("Expected argument of type ConstantConfig but got "+t);if(void 0===t.value)throw new w("config must have value set but got "+t);return n.value=t.value,n}return i(t,e),t.prototype.apply=function(e,t){var n=this;return Object(r.od)(function(){return Object(r.Ob)(Object(r.Bc)(n.value),Object(r.Yb)(e,t))})},t.prototype.getConfig=function(){return{value:this.value}},t.className="Constant",t}(Ae);r.Ec.registerClass(Re);var De=function(e){function t(t){var n=e.call(this)||this;return n.DEFAULT_MINVAL=-.05,n.DEFAULT_MAXVAL=.05,n.minval=t.minval||n.DEFAULT_MINVAL,n.maxval=t.maxval||n.DEFAULT_MAXVAL,n.seed=t.seed,n}return i(t,e),t.prototype.apply=function(e,t){return Object(r.oc)(e,this.minval,this.maxval,t)},t.prototype.getConfig=function(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}},t.className="RandomUniform",t}(Ae);r.Ec.registerClass(De);var je=function(e){function t(t){var n=e.call(this)||this;return n.DEFAULT_MEAN=0,n.DEFAULT_STDDEV=.05,n.mean=t.mean||n.DEFAULT_MEAN,n.stddev=t.stddev||n.DEFAULT_STDDEV,n.seed=t.seed,n}return i(t,e),t.prototype.apply=function(e,t){if("float32"!==(t=t||"float32")&&"int32"!==t)throw new x("randomNormal does not support dType "+t+".");return _e(e,this.mean,this.stddev,t,this.seed)},t.prototype.getConfig=function(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}},t.className="RandomNormal",t}(Ae);r.Ec.registerClass(je);var Le=function(e){function t(t){var n=e.call(this)||this;return n.DEFAULT_MEAN=0,n.DEFAULT_STDDEV=.05,n.mean=t.mean||n.DEFAULT_MEAN,n.stddev=t.stddev||n.DEFAULT_STDDEV,n.seed=t.seed,n}return i(t,e),t.prototype.apply=function(e,t){if("float32"!==(t=t||"float32")&&"int32"!==t)throw new x("truncatedNormal does not support dType "+t+".");return Object(r.vd)(e,this.mean,this.stddev,t,this.seed)},t.prototype.getConfig=function(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}},t.className="TruncatedNormal",t}(Ae);r.Ec.registerClass(Le);var Be=function(e){function t(t){var n=e.call(this)||this;return n.gain=null!=t.gain?Object(r.Bc)(t.gain):y(1),n}return i(t,e),t.prototype.apply=function(e,t){var n=this;return Object(r.od)(function(){if(2!==e.length||e[0]!==e[1])throw new w("Identity matrix initializer can only be used for 2D square matrices.");return Object(r.Ob)(n.gain,Object(r.Sa)(e[0]))})},t.prototype.getConfig=function(){return{gain:this.gain.get()}},t.className="Identity",t}(Ae);r.Ec.registerClass(Be);var ze=function(e){function t(t){var n=e.call(this)||this;if(t.scale<0)throw new w("scale must be a positive float. Got: "+t.scale);return n.scale=null==t.scale?1:t.scale,n.mode=t.mode,function(e){j(Ce,"FanMode",e)}(n.mode),n.distribution=t.distribution,function(e){j(Pe,"Distribution",e)}(n.distribution),n.seed=t.seed,n}return i(t,e),t.prototype.apply=function(e,t){var n=function(e,t){var n,r;if(void 0===t&&(t="channelsLast"),J(t),2===e.length)n=e[0],r=e[1];else if(-1!==[3,4,5].indexOf(e.length))if("channelsFirst"===t){var a=le(e,2);n=e[1]*a,r=e[0]*a}else"channelsLast"===t&&(a=le(e,0,e.length-2),n=e[e.length-2]*a,r=e[e.length-1]*a);else{var i=le(e);n=Math.sqrt(i),r=Math.sqrt(i)}return[n,r]}(e),a=n[0],i=n[1],o=this.scale;if("fanIn"===this.mode?o/=Math.max(1,a):"fanOut"===this.mode?o/=Math.max(1,i):o/=Math.max(1,(a+i)/2),"normal"===this.distribution){var s=Math.sqrt(o);if("float32"!==(t=t||"float32")&&"int32"!==t)throw new x(this.getClassName()+" does not support dType "+t+".");return Object(r.vd)(e,0,s,t,this.seed)}var u=Math.sqrt(3*o);return Object(r.oc)(e,-u,u,t)},t.prototype.getConfig=function(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}},t.className="VarianceScaling",t}(Ae);r.Ec.registerClass(ze);var Fe=function(e){function t(t){return e.call(this,{scale:1,mode:"fanAvg",distribution:"uniform",seed:null==t?null:t.seed})||this}return i(t,e),t.prototype.getClassName=function(){return ze.className},t}(ze),Ve=function(e){function t(t){return e.call(this,{scale:1,mode:"fanAvg",distribution:"normal",seed:null==t?null:t.seed})||this}return i(t,e),t.prototype.getClassName=function(){return ze.className},t}(ze),Ue=function(e){function t(t){return e.call(this,{scale:2,mode:"fanIn",distribution:"normal",seed:null==t?null:t.seed})||this}return i(t,e),t.prototype.getClassName=function(){return ze.className},t}(ze),We=function(e){function t(t){return e.call(this,{scale:1,mode:"fanIn",distribution:"normal",seed:null==t?null:t.seed})||this}return i(t,e),t.prototype.getClassName=function(){return ze.className},t}(ze),qe=function(e){function t(t){var n=e.call(this)||this;if(n.DEFAULT_GAIN=1,n.gain=null==t.gain?n.DEFAULT_GAIN:t.gain,n.seed=t.seed,null!=n.seed)throw new x("Random seed is not implemented for Orthogonal Initializer yet.");return n}return i(t,e),t.prototype.apply=function(e,t){var n=this;return Object(r.od)(function(){if(2!==e.length)throw new x("The Orthogonal Initializer does not support non-2D shapes yet.");e[0]*e[1]>2e3&&console.warn("Orthogonal initializer is being called on a matrix with more than 2000 ("+e[0]*e[1]+") elements: Slowness may result.");var t=_e(e[0]>e[1]?[e[1],e[0]]:e,0,1,"float32"),a=r.ob.gramSchmidt(t);return e[0]>e[1]&&(a=a.transpose()),Object(r.Ob)(y(n.gain),a)})},t.prototype.getConfig=function(){return{gain:this.gain,seed:this.seed}},t.className="Orthogonal",t}(Ae);r.Ec.registerClass(qe);var $e={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",identity:"Identity",leCunNormal:"LeCunNormal",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function Ge(e,t){return void 0===t&&(t={}),T(e,r.Ec.SerializationMap.getMap().classNameMap,t,"initializer")}function He(e){return A(e)}function Ke(e){if("string"==typeof e){var t=e in $e?$e[e]:e;return"GlorotUniform"===t?new Fe:"GlorotNormal"===t?new Ve:"HeNormal"===t?new Ue:"LeCunNormal"===t?new We:Ge({className:t,config:{}})}return e instanceof Ae?e:Ge(e)}var Xe=Object.freeze({zeros:function(){return new Te},ones:function(){return new Me},constant:function(e){return new Re(e)},randomUniform:function(e){return new De(e)},randomNormal:function(e){return new je(e)},truncatedNormal:function(e){return new Le(e)},identity:function(e){return new Be(e)},varianceScaling:function(e){return new ze(e)},glorotUniform:function(e){return new Fe(e)},glorotNormal:function(e){return new Ve(e)},heNormal:function(e){return new Ue(e)},leCunNormal:function(e){return new We(e)},orthogonal:function(e){return new qe(e)}});function Ye(e){return Array.isArray(e)&&Array.isArray(e[0])}function Je(e){return 0===e.length?[]:Array.isArray(e[0])?e:[e]}function Ze(e){var t;if(Array.isArray(e)){if(1!==e.length)throw new w("Expected Tensor length to be 1; got "+e.length);t=e[0]}else t=e;return t}function Qe(e){if(Array.isArray(e)&&Array.isArray(e[0])){if(1===e.length)return(e=e)[0];throw new w("Expected exactly 1 Shape; got "+e.length)}return e}function et(e){for(var t=0,n=0,r=e;n1)throw new v("Layer "+this.name+' has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use `getInputAt(nodeIndex)` instead.');if(0===this.inboundNodes.length)throw new v("Layer "+this.name+" is not connected, no input to return.");return O(this.getNodeAtIndex(0,"input").inputTensors)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"output",{get:function(){if(0===this.inboundNodes.length)throw new v("Layer "+this.name+" has no inbound nodes.");if(this.inboundNodes.length>1)throw new v("Layer "+this.name+' has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use `getOutputAt(nodeIndex)` instead.');return O(this.getNodeAtIndex(0,"output").outputTensors)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"losses",{get:function(){return this._losses},enumerable:!0,configurable:!0}),t.prototype.calculateLosses=function(){return this.losses.map(function(e){return e()})},Object.defineProperty(t.prototype,"updates",{get:function(){return this._updates},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"built",{get:function(){return this._built},set:function(e){this._built=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"trainableWeights",{get:function(){return this.trainable?this._trainableWeights:[]},set:function(e){this._trainableWeights=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"nonTrainableWeights",{get:function(){return this.trainable?this._nonTrainableWeights:this._trainableWeights.concat(this._nonTrainableWeights)},set:function(e){this._nonTrainableWeights=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"weights",{get:function(){return this.trainableWeights.concat(this.nonTrainableWeights)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"stateful",{get:function(){return this._stateful},enumerable:!0,configurable:!0}),t.prototype.resetStates=function(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")},t.prototype.assertInputCompatibility=function(e){if(e=k(e),null!=this.inputSpec&&0!==this.inputSpec.length){var t=k(this.inputSpec);if(e.length!==t.length)throw new w("Layer "+this.name+" expects "+t.length+" inputs, but it received "+e.length+" input tensors. Input received: "+e);for(var n=0;n=0?o[u]:o[o.length+u];if(null!=l&&-1===[l,null].indexOf(c))throw new w("Input "+n+" is incompatible with layer "+this.name+": expected axis "+u+" of input shape to have value "+l+" but got shape "+o+".")}}if(null!=a.shape)for(var f=0;f0&&Array.isArray(d[0])?d.map(function(r,a){return new ot(g,r,n,k(e),t,n.name,a)}):new ot(g,d,n,k(e),t,n.name),n.addInboundNode(e,m,null,null,h,d,t),n._refCount++,null!=n.activityRegularizer)throw new x("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return m})},t.prototype.warnOnIncompatibleInputShape=function(e){if(null!=this.batchInputShape)if(e.length!==this.batchInputShape.length)console.warn("The rank of the input tensor provided (shape: "+JSON.stringify(e)+") does not match that of the batchInputShape ("+JSON.stringify(this.batchInputShape)+") of the layer "+this.name);else{var t=!1;this.batchInputShape.forEach(function(n,r){null!=n&&null!=e[r]&&e[r]!==n&&(t=!0)}),t&&console.warn("The shape of the input tensor ("+JSON.stringify(e)+") does not match the expectation of layer "+this.name+": "+JSON.stringify(this.batchInputShape))}},Object.defineProperty(t.prototype,"outputShape",{get:function(){if(null==this.inboundNodes||0===this.inboundNodes.length)throw new v("The layer "+this.name+" has never been called and thus has no defined output shape.");for(var e=[],t=0,n=this.inboundNodes;te.SKIP_FIRST_BATCHES&&(this.batchDurationsMillis.push(n-this.batchStartMillis),this.batchDurationsMillis.length>=e.DECISION_BATCH_COUNT&&(a=this.batchDurationsMillis.reduce(function(e,t){return e+t})/this.batchDurationsMillis.length,this.autoYieldEveryBatches=Math.round(e.THRESHOLD_MILLIS/a),this.autoYieldEveryBatches<1&&(this.autoYieldEveryBatches=1))),this.batchStartMillis=r.yd.now(),this.lastYieldBatchCount=this.batchCount,[3,6];case 3:return this.batchCount-this.lastYieldBatchCount>=this.autoYieldEveryBatches?[4,Object(r.Tb)()]:[3,6];case 4:return i.sent(),[4,this.resolveOneTensorInLogs(t)];case 5:i.sent(),this.lastYieldBatchCount=this.batchCount,i.label=6;case 6:return[3,9];case 7:return"batch"!==this.yieldEvery?[3,9]:[4,Object(r.Tb)()];case 8:i.sent(),i.label=9;case 9:return[2]}})})},e.prototype.maybeYieldOnEpoch=function(){return s(this,void 0,void 0,function(){return u(this,function(e){switch(e.label){case 0:return"epoch"!==this.yieldEvery?[3,2]:[4,Object(r.Tb)()];case 1:e.sent(),e.label=2;case 2:return[2]}})})},e.SKIP_FIRST_BATCHES=1,e.DECISION_BATCH_COUNT=2,e.THRESHOLD_MILLIS=16,e}(),yt=function(e){function t(t){var n=e.call(this)||this;return n.yieldEvery=t||"auto",n}return i(t,e),t.prototype.onTrainBegin=function(e){return s(this,void 0,void 0,function(){return u(this,function(e){return this.autoYielder=new gt(this.yieldEvery),[2]})})},t.prototype.onEpochBegin=function(e){return s(this,void 0,void 0,function(){return u(this,function(e){return this.seen=0,this.totals={},[2]})})},t.prototype.onBatchEnd=function(e,t){return s(this,void 0,void 0,function(){var e,n,a,i,o=this;return u(this,function(s){switch(s.label){case 0:return[4,this.autoYielder.maybeYieldOnBatch(t)];case 1:for(i in s.sent(),null==t&&(t={}),e=null==t.size?0:t.size,this.seen+=e,n=function(n){var i=t[n];if("number"==typeof i)a.totals.hasOwnProperty(n)||(a.totals[n]=0),a.totals[n]=a.totals[n]+i*e;else{var s=void 0;n in a.totals?s=a.totals[n]:a.totals[n]=y(0),a.totals[n]=Object(r.od)(function(){return Object(r.s)(o.totals[n],Object(r.Ob)(i,y(e)))}),null!=s&&s.dispose()}},a=this,t)n(i);return[2]}})})},t.prototype.onEpochEnd=function(e,t){return s(this,void 0,void 0,function(){var e,n,a,i,o,s=this;return u(this,function(u){switch(u.label){case 0:return[4,this.autoYielder.maybeYieldOnEpoch()];case 1:if(u.sent(),null!=t)for(e=function(e){if(null==n.totals[e])return"continue";"number"==typeof n.totals[e]?t[e]=n.totals[e]/n.seen:Object(r.od)(function(){t[e]=Object(r.Ob)(Object(r.Ha)(y(1),y(s.seen)),s.totals[e]),s.totals[e].dispose(),Object(r.ib)(t[e])})},n=this,a=0,i=this.params.metrics;a=0&&Number.isInteger(t),"Verbosity level is expected to be an integer >= 0, but got "+t),e.checkForDuplicate(n),null==e.constructors[t]&&(e.constructors[t]=[]),e.constructors[t].push(n)},e.checkForDuplicate=function(t){for(var n in e.constructors)e.constructors[+n].forEach(function(e){if(e===t)throw new w("Duplicate callback constructor.")})},e.clear=function(){e.constructors={}},e.createCallbacks=function(t){var n=[];for(var r in e.constructors){var a=+r;t>=a&&n.push.apply(n,e.constructors[a])}return n.map(function(e){return new e})},e}();function xt(e,t){return Object(r.od)(function(){var n=Object(r.dd)(Se(e),t,!0),a=Object(r.Ob)(Object(r.Bc)(c()),Object(r.Zb)(e)),i=Object(r.Tc)(Object(r.Db)(n,a));return Object(r.Ha)(e,i)})}function _t(e,t){return Object(r.od)(function(){return Object(r.Fb)(Se(Object(r.bd)(t,e)),-1)})}function Et(e,t){return Object(r.od)(function(){return Object(r.Fb)(Object(r.p)(Object(r.bd)(t,e)),-1)})}function Nt(e,t){return Object(r.od)(function(){var n=Object(r.bd)(e,t),a=Object(r.O)(Object(r.p)(e),c(),Number.MAX_VALUE),i=Object(r.p)(Object(r.Ha)(n,a));return Object(r.Ob)(y(100),Object(r.Fb)(i,-1))})}function St(e,t){return Object(r.od)(function(){var n=y(1),a=Object(r.O)(t,c(),Number.MAX_VALUE),i=Object(r.rb)(Object(r.s)(n,a)),o=Object(r.O)(e,c(),Number.MAX_VALUE),s=Object(r.rb)(Object(r.s)(n,o));return Object(r.Fb)(Se(Object(r.bd)(i,s)),-1)})}function Ot(e,t){return Object(r.od)(function(){var n=y(0),a=y(1),i=Object(r.Db)(n,Object(r.bd)(a,Object(r.Ob)(e,t)));return Object(r.Fb)(Se(i),-1)})}function kt(e,t){return Object(r.od)(function(){var n=y(0),a=y(1),i=Object(r.Db)(n,Object(r.bd)(a,Object(r.Ob)(e,t)));return Object(r.Fb)(i,-1)})}function It(e,t){return Object(r.od)(function(){var n=y(0),a=y(1),i=Object(r.dd)(Object(r.Ob)(e,t),-1),o=Object(r.Bb)(Object(r.Ob)(Object(r.bd)(a,e),t),-1);return Object(r.Db)(n,Object(r.s)(a,Object(r.bd)(o,i)))})}function Ct(e,t){return Object(r.od)(function(){var n=y(Math.log(2)),a=Object(r.bd)(t,e),i=Object(r.bd)(Object(r.s)(a,Object(r.Qc)(Object(r.Ob)(y(-2),a))),n);return Object(r.Fb)(i,-1)})}function Pt(e,t,n){return void 0===n&&(n=!1),Object(r.od)(function(){if(n)t=Object(r.Pc)(t);else{var a=Object(r.dd)(t,t.shape.length-1,!0);t=Object(r.Ha)(t,a)}return t=Object(r.O)(t,c(),1-c()),Object(r.Sb)(Object(r.dd)(Object(r.Ob)(e.toFloat(),Object(r.rb)(t)),t.shape.length-1))})}function At(e,t,n){return void 0===n&&(n=!1),Object(r.od)(function(){var a=Object(r.Ua)(function(e){var t=[le(e.shape)];return e.reshape(t)}(e)).toInt(),i=t.shape;return Pt(Object(r.Xb)(a,i[i.length-1]).reshape(i),t,n)})}function Tt(e,t){return Object(r.od)(function(){var n;return n=Object(r.O)(t,c(),1-c()),n=Object(r.rb)(Object(r.Ha)(n,Object(r.bd)(Object(r.Zb)(n),n))),Object(r.Fb)(function(e,t){return Object(r.od)(function(){var n=Object(r.Db)(t,Object(r.Id)(t)),a=Object(r.Ob)(t,e),i=Object(r.rb)(Object(r.s)(y(1),Object(r.Pa)(Object(r.Sb)(Object(r.p)(t)))));return Object(r.s)(Object(r.bd)(n,a),i)})}(e,n),-1)})}function Mt(e,t){return Object(r.od)(function(){var n=Object(r.O)(e,c(),1),a=Object(r.O)(t,c(),1);return Object(r.dd)(Object(r.Ob)(e,Object(r.rb)(Object(r.Ha)(n,a))),-1)})}function Rt(e,t){return Object(r.od)(function(){var n=Object(r.rb)(Object(r.s)(y(c()),t));return Object(r.Fb)(Object(r.bd)(t,Object(r.Ob)(e,n)),-1)})}function Dt(e,t){return Object(r.od)(function(){var n=xt(e,-1),a=xt(t,-1),i=Object(r.Ob)(n,a);return Object(r.Sb)(Object(r.dd)(i,-1))})}function jt(e){var t={meanSquaredError:_t,meanAbsoluteError:Et,meanAbsolutePercentageError:Nt,meanSquaredLogarithmicError:St,squaredHinge:Ot,hinge:kt,categoricalHinge:It,logcosh:Ct,categoricalCrossentropy:Pt,sparseCategoricalCrossentropy:At,binaryCrossentropy:Tt,kullbackLeiblerDivergence:Mt,poisson:Rt,cosineProximity:Dt};if("string"==typeof e){if(e in t)return t[e];var n="Unknown loss "+e;throw e.toLowerCase().includes("softmaxcrossentropy")&&(n="Unknown loss "+e+'. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy'),new w(n)}return e}function Lt(e,t){return Object(r.od)(function(){var n=Object(r.Ob)(y(.5),Object(r.Zb)(t)),a=de(Object(r.bb)(t,n),e.dtype);return Object(r.Fb)(Object(r.Ma)(e,a),-1)})}function Bt(e,t){return Object(r.od)(function(){return de(Object(r.Ma)(Object(r.x)(e,-1),Object(r.x)(t,-1)),"float32")})}function zt(e,t){return Object(r.od)(function(){var n=y(1);return Object(r.vb)(e.equal(n),t.equal(n)).sum().cast("float32")})}function Ft(e,t){return Object(r.od)(function(){var n=y(0),a=zt(e,t),i=function(e,t){return Object(r.od)(function(){var n=y(1),a=y(0);return Object(r.vb)(e.equal(a),t.equal(n)).sum().cast("float32")})}(e,t),o=a.add(i);return Object(r.Fd)(Object(r.bb)(o,n),a.div(o),n).cast("float32")})}function Vt(e,t){return Tt(e,t)}function Ut(e,t){throw new x}var Wt=_t,qt=_t,$t=Et,Gt=Et,Ht=Nt,Kt=Nt,Xt=Pt,Yt=Dt,Jt=At;function Zt(e,t,n){void 0===n&&(n=console.log);for(var r="",a=0;a0&&(r=r.slice(0,r.length-1)+" "),r=(r+=e[a]).slice(0,t[a]),r+=" ".repeat(t[a]-r.length);n(r)}function Qt(e,t,n){var r;try{r=JSON.stringify(e.outputShape)}catch(e){r="multiple"}Zt([e.name+" ("+e.getClassName()+")",r,e.countParams().toString()],t,n)}function en(e,t,n,r){var a;try{a=JSON.stringify(e.outputShape)}catch(e){a="multiple"}for(var i=[],o=0,s=e.inboundNodes;o0&&-1===n.indexOf(u)))for(var l=0;l1 nodes"),N(0===l,"input layer has >1 tensors"),r.inputLayers.push(s),r.inputLayersNodeIndices.push(u),r.inputLayersTensorIndices.push(l);r.inputNames=[],r.outputNames=[],r.feedInputShapes=[],r.feedInputNames=[],r.feedOutputNames=[];for(var p=0;p=0;)a.splice(a.indexOf(u),1);E.push(u)}},O=[],k=[],I=0,C=r.outputs;Ir?1:0});for(var K=0,X=H;K0)throw new w("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];for(var e=[],t=0,n=this.layers;t0)throw new w(p.length+" of "+a+" weights are not set: "+p)}at(c)}(e,this.layers,a):function(e,t,n){void 0===n&&(n=!1);for(var a=e.keras_version,i=(e.backend,t.map(function(e){return e.name})),o={},s=0,u=t;s1)for(var s=0,u=o;s0){for(var h=[],d=0;d0&&e.apply(O(i),r)}function o(e){var r=e.name,i=tn(e,null!=t.customObjects?t.customObjects:{});n[r]=i;for(var o=0,s=e.inboundNodes;o0)i=!0;else if(pn(e)){for(var o in e)if(e.hasOwnProperty(o)){i=!0;break}}else i=!0;if(i)throw new w("Error when checking model "+a+" expected no data, but got "+e)}return[]}if(null==e)return t.map(function(e){return null});var s;if(pn(e)){e=e,s=[];for(var u=0,l=t;u1)throw new w("The model "+a+" expects "+t.length+" Tensor(s), but only received one Tensor. Found: Tensor with shape "+e.shape);s=[e]}for(var f=0;f=0&&d!==m)throw new w("Error when checking "+a+": expected "+t[f]+" to have shape ["+n[f]+"], but got array with shape ["+p.shape+"].")}}return s}function dn(e,t){for(var n=[],r=0,a=null;r=e&&(a=e),n.push([r,a]),r=a;return n}function mn(e,t,n){return null==e?[null]:Array.isArray(e)?e.map(function(e){return ge(e,t,n-t)}):ge(e,t,n-t)}function gn(e,t){return Object(r.od)(function(){return null==e?null:Array.isArray(e)?e.map(function(e){return gn(e,t)}):Ne(e,"int32"===t.dtype?t:t.toInt())})}function yn(e,t,n,r,a){var i;if(void 0===r&&(r=!0),void 0===a&&(a=""),Array.isArray(e)){if(e.length!==t.length)throw new w("Error when checking model "+a+": the Array of Tensors that you are passing to your model is not the size the the model expected. Expected to see "+t.length+" Tensor(s), but instead got "+e.length+" Tensors(s).");i=e}else{if(t.length>1)throw new w("The model expects "+t.length+" "+a+" Tensors, but only received one Tensor. Found: array with shape "+JSON.stringify(e.shape)+".");i=[e]}if(null!=n)for(var o=0;o0&&Number.isInteger(e),"batchSize is required to be a positive integer, but got "+e)}!function(e){e[e.SILENT=0]="SILENT",e[e.VERBOSE=1]="VERBOSE"}(on||(on={}));var bn=function(e){function t(t){var n=e.call(this,t)||this;return n.isTraining=!1,n}return i(t,e),t.prototype.summary=function(e,t,n){if(void 0===n&&(n=console.log),!this.built)throw new w("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");!function(e,t,n,r){void 0===r&&(r=console.log);var a,i=function(e){var t=!0,n=[],r=[];for(var a in e.nodesByDepth)n.push(e.nodesByDepth[a]);for(var i=0,o=n;i1||1===s.length&&s[0].inboundLayers.length>1){t=!1;break}r.push.apply(r,s)}if(t)for(var u=0,l=e.layers;u1&&(t.metricsTensors.push([n,e]),t.metricsNames.push(t.outputNames[e]+"_loss"))}});var h=function(e,t){if(null==e||Array.isArray(e)&&0===e.length)return t.map(function(e){return[]});if(Array.isArray(e))return t.map(function(t){return e});if(null!=e){for(var n=[],r=0,a=t;r1&&(n=t.outputNames[e]+"_"+n),t.metricsNames.push(n),t.metricsTensors.push([r,e])}(e,r,l)},s=0,u=h[e];s0){var c=[];throw t.forEach(function(t,n){null==t&&c.push(e[n])}),new w("Cannot find SymbolicTensors for output name(s): "+JSON.stringify(c))}return t},t.prototype.predictLoop=function(e,t,n){var a=this;return void 0===t&&(t=32),void 0===n&&(n=!1),Object(r.od)(function(){var i=a.checkNumSamples(e);if(n)throw new x("Verbose predictLoop() is not implemented yet.");for(var o=dn(i,t),s=[],u=function(t){var n=Object(r.od)(function(){var n=o[t][0],r=o[t][1],i=mn(e,n,r),s=[];if(Array.isArray(i))for(var u=0;u1)throw new w("All input Tensors (x) should have the same number of samples. Got array shapes: "+JSON.stringify(e.map(function(e){return e.shape})));if(i.length>1)throw new w("All target Tensors (y) should have the same number of samples. Got array shapes: "+JSON.stringify(t.map(function(e){return e.shape})));if(a.length>0&&i.length>0&&!r.yd.arraysEqual(a,i))throw new w("Input Tensors should have the same number of samples as target Tensors. Found "+a[0]+" input sample(s) and "+i[0]+" target sample(s).")}(e=hn(e,this.feedInputNames,this.feedInputShapes,!1,"input"),t=hn(t,this.feedOutputNames,i,!1,"target")),function(e,t,n){for(var r=[_t,Tt,Pt],a=0;a0&&e[0].shape[0]%a!=0)throw new w("In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size "+a+". Found: "+e[0].shape[0]+" sample(s).");return[e,t,null]},t.prototype.fitLoop=function(e,t,n,a,i,o,l,c,f,p,h,d,m,g,y){return s(this,void 0,void 0,function(){var s,v,b,_,E,N,S,O,k=this;return u(this,function(I){switch(I.label){case 0:if(null==a&&(a=32),null==i&&(i=1),null==p&&(p=!0),null==d&&(d=0),s=!1,null!=c&&null!=f&&(s=!0),null!=g&&(s=!0,null==m))throw new w("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");return null!=(v=this.checkNumSamples(t,a,m,"steps_per_epoch"))&&(b=he(0,v)),null==o&&(o=1),this.history=new vt,_=[new yt(y)].concat(wt.createCallbacks(o)),null!=l&&_.push.apply(_,l),_.push(this.history),(E=new mt(_)).setModel(this),E.setParams({epochs:i,initialEpoch:d,samples:v,steps:m,batchSize:a,verbose:o,doValidation:s,metrics:h}),[4,E.onTrainBegin()];case 1:I.sent(),this.stopTraining_=!1,N=function(i){var o,l,h,d,g;return u(this,function(y){switch(y.label){case 0:return[4,E.onEpochBegin(i)];case 1:if(y.sent(),o={},null==m)return[3,2];throw new x("stepsPerEpoch mode is not implemented yet.");case 2:if("batch"===p)throw new x("batch shuffling is not implemneted yet");p&&r.yd.shuffle(b),l=Object(r.hd)(b),h=dn(v,a),d=function(i){var p;return u(this,function(u){switch(u.label){case 0:return p={},[4,E.onBatchBegin(i,p)];case 1:return u.sent(),Object(r.od)(function(){var u=h[i][0],d=h[i][1],m=ge(l,u,d-u);p.batch=i,p.size=d-u;for(var g=gn(t,m),y=e(g),v=0;v1&&(a+="_"+S(e.slice(0,n),r)),t.push(a)}return t},t.prototype.makeTestFunction=function(){var e=this;this.testFunction=function(t){return Object(r.od)(function(){for(var n,a=[],i=t.slice(0,e.inputs.length),o=t.slice(e.inputs.length,e.inputs.length+e.outputs.length),s=[],u=0;u0){if(l=!0,2!==n.validationData.length)throw 3===n.validationData.length?new x("validationData including sample weights is not supported yet."):new w("When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; "+n.validationData+" is invalid.");c=n.validationData[0],f=n.validationData[1],d=this.standardizeUserData(c,f,!0,a),c=d[0],f=d[1],p=c.concat(f)}else null!=n.validationSplit&&n.validationSplit>0&&n.validationSplit<1?(l=!0,m=Math.floor(o[0].shape[0]*(1-n.validationSplit)),g=o[0].shape[0],c=mn(o,m,g),o=mn(o,0,m),f=mn(s,m,g),s=mn(s,0,m),h=!0,p=c.concat(f)):null!=n.validationSteps&&(l=!0);return y=o.concat(s),this.checkTrainableWeightsConsistency(),v=function(e){var t=e.slice(0,O.inputs.length),n=e.slice(O.inputs.length,O.inputs.length+O.outputs.length),a=[],i=O.collectedTrainableWeights.map(function(e){return e.read()});return[O.optimizer.minimize(function(){for(var e=[],i=0;i1)throw new w("Found more than one ("+n.length+") save handlers for URL '"+e+"'");e=n[0]}if(null==e.save)throw new w("Model.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return[4,r.hb.encodeWeights(this.getNamedWeights(t))];case 1:return a=u.sent(),i=!1,o=null,s=this.toJSON(o,i),[2,e.save({modelTopology:s,weightData:a.data,weightSpecs:a.specs})]}})})},t.className="Model",t}(sn);r.Ec.registerClass(bn);var wn=function(e){function t(t){var n=e.call(this,{inputs:[],outputs:[]})||this;if(t=t||{},n.trainable=!0,n._updatable=!0,n.built=!1,n.name=null!=t.name?t.name:d("sequential_"),null!=t.layers)for(var r=0,a=t.layers;r0)&&(n=t.sourceLayer,r=t.nodeIndex),0===n.inboundNodes.length)return[t];var a=n.inboundNodes[r];if(0===a.inboundLayers.length)return a.inputTensors;for(var i=[],o=0;o1)throw new w("Found more than one ("+n.length+") load handlers for URL '"+e+"'");e=n[0]}return[2,function(e,t,n){return void 0===n&&(n=!0),s(this,void 0,void 0,function(){var t,a,i,o,s;return u(this,function(u){switch(u.label){case 0:if(null==e.load)throw new w("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");return[4,e.load()];case 1:if(t=u.sent(),null!=(a=t.modelTopology).model_config&&(a=a.model_config),i=tn(function e(t,n){if(null===t)return null;if("string"==typeof t)return C(t);if("number"==typeof t||"boolean"==typeof t)return t;if(t instanceof Array){for(var r=[],a=t.length,i=0;i 0 but got "+JSON.stringify(e.filters))},t}(nr),ar=function(e){function t(n){var r=e.call(this,2,n)||this;return t.verifyConfig(n),r}return i(t,e),t.prototype.getConfig=function(){var t=e.prototype.getConfig.call(this);return delete t.rank,t},t.verifyConfig=function(e){if("number"!=typeof e.kernelSize&&!L(e.kernelSize,"number",1,2))throw new w("Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received "+JSON.stringify(e.kernelSize)+".")},t.className="Conv2D",t}(rr);r.Ec.registerClass(ar);var ir=function(e){function t(t){var n=e.call(this,t)||this;if(n.inputSpec=[new it({ndim:4})],"same"!==n.padding&&"valid"!==n.padding)throw new w("Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode "+n.padding);return n}return i(t,e),t.prototype.build=function(e){if(4!==(e=Qe(e)).length)throw new w("Input should have rank 4; Received input shape: "+JSON.stringify(e));var t="channelsFirst"===this.dataFormat?1:e.length-1;if(null==e[t])throw new w("The channel dimension of the inputs should be defined. Found `None`.");var n,r=e[t],a=this.kernelSize.concat([this.filters,r]);this.kernel=this.addWeight("kernel",a,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new it({ndim:4,axes:(n={},n[t]=r,n)})],this.built=!0},t.prototype.call=function(e,t){var n=this;return Object(r.od)(function(){var t=Ze(e);if(4!==t.shape.length)throw new w("Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-"+t.shape.length);var a,i,o=t.shape,s=o[0];"channelsFirst"===n.dataFormat?(a=2,i=3):(a=1,i=2);var u=o[a],l=o[i],c=n.kernelSize[0],f=n.kernelSize[1],p=n.strides[0],h=n.strides[1],d=[s,er(u,p,c,n.padding),er(l,h,f,n.padding),n.filters];"channelsLast"!==n.dataFormat&&(t=Object(r.ud)(t,[0,2,3,1]));var m=Object(r.Y)(t,n.kernel.read(),d,n.strides,n.padding);return"channelsLast"!==n.dataFormat&&(m=Object(r.ud)(m,[0,3,1,2])),null!=n.bias&&(m=Oe(m,n.bias.read(),n.dataFormat)),null!=n.activation&&(m=n.activation.apply(m)),m})},t.prototype.computeOutputShape=function(e){var t,n,r,a=(e=Qe(e)).slice();"channelsFirst"===this.dataFormat?(t=1,n=2,r=3):(t=3,n=1,r=2);var i=this.kernelSize[0],o=this.kernelSize[1],s=this.strides[0],u=this.strides[1];return a[t]=this.filters,a[n]=er(a[n],s,i,this.padding),a[r]=er(a[r],u,o,this.padding),a},t.prototype.getConfig=function(){var t=e.prototype.getConfig.call(this);return delete t.dilationRate,t},t.className="Conv2DTranspose",t}(ar);r.Ec.registerClass(ir);var or=function(e){function t(t){return e.call(this,2,t)||this}return i(t,e),t.className="SeparableConv2D",t}(function(e){function t(t,n){var r=e.call(this,t,n)||this;if(r.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",r.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",r.depthwiseKernel=null,r.pointwiseKernel=null,null==n.filters)throw new w("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(null!=n.kernelInitializer||null!=n.kernelRegularizer||null!=n.kernelConstraint)throw new w("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(null!=n.padding&&"same"!==n.padding&&"valid"!==n.padding)throw new w("SeparableConv"+r.rank+"D supports only padding modes: 'same' and 'valid', but received "+JSON.stringify(n.padding));return r.depthMultiplier=null==n.depthMultiplier?1:n.depthMultiplier,r.depthwiseInitializer=Ke(n.depthwiseInitializer||r.DEFAULT_DEPTHWISE_INITIALIZER),r.depthwiseRegularizer=Jn(n.depthwiseRegularizer),r.depthwiseConstraint=H(n.depthwiseConstraint),r.pointwiseInitializer=Ke(n.depthwiseInitializer||r.DEFAULT_POINTWISE_INITIALIZER),r.pointwiseRegularizer=Jn(n.pointwiseRegularizer),r.pointwiseConstraint=H(n.pointwiseConstraint),r}return i(t,e),t.prototype.build=function(e){if((e=Qe(e)).length1)throw new w("Can not merge tensors with different batch sizes. Got tensors with shapes: "+JSON.stringify(e)+".");for(var a=null==e[0]?null:e[0].slice(1),i=1;i1){var v=he(1,u).concat([0]);t.push(Object(r.ud)(h,v)),c=!0}else t.push(h)}var b=n.mergeFunction(t),w=b.rank;if(c)if(null==w){var x=b.shape;g=[m=x[x.length-1]].concat(x.slice(0,x.length-1)),b=Object(r.ud)(b.reshape([-1,m]),[1,0]).reshape(g)}else w>1&&(v=[w-1].concat(he(0,w-1)),b=Object(r.ud)(b,v));return b}return n.mergeFunction(e)})},t.prototype.computeOutputShape=function(e){var t;t=null==(e=e)[0]?null:e[0].slice(1);for(var n=1;n1)throw new w("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(e))}},t.prototype.mergeFunction=function(e){var t=this;return Object(r.od)(function(){return be(e,t.axis)})},t.prototype.computeOutputShape=function(e){if(!Array.isArray(e)||!Array.isArray(e[0]))throw new w("A `Concatenate` layer should be called on a list of inputs.");for(var t=e,n=t[0].slice(),r=this.axis<0?n.length+this.axis:this.axis,a=0,i=t.slice(1);a=0?this.axis:this.axis+e.length,n=e[t];if(null==n)throw new w("Axis "+t+" of input tensor should have a defined dimension but the layer received an input with shape "+JSON.stringify(e)+".");this.inputSpec=[new it({ndim:e.length,axes:(r={},r[t]=n,r)})];var r,a=[n];this.scale&&(this.gamma=this.addWeight("gamma",a,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",a,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",a,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",a,null,this.movingVarianceInitializer,null,!1),this.built=!0},t.prototype.call=function(e,t){var n=this;return Object(r.od)(function(){var a=null!=t.training&&t.training,i=Ze(e),o=i.shape,s=o.length,u=he(0,s),l=n.axis>=0?n.axis:n.axis+s;u.splice(l,1);var c=E(1,s);c[l]=o[l];var f=u.slice();f.sort();var p=!r.yd.arraysEqual(f,he(0,s).slice(0,s-1));if(!a)return function(){if(p){var e=n.movingMean.read().reshape(c),t=n.movingVariance.read().reshape(c),r=n.center?n.beta.read().reshape(c):null,a=n.scale?n.gamma.read().reshape(c):null;return Or(i,e,t,r,a,n.epsilon)}return Or(i,n.movingMean.read(),n.movingVariance.read(),null==n.beta?null:n.beta.read(),null==n.gamma?null:n.gamma.read(),n.epsilon)}();var h=function(e,t,n,a,i){return void 0===i&&(i=.001),r.yd.arraysEqual(a.slice().sort(),he(0,e.rank-1))?function(e,t,n,a,i){return void 0===i&&(i=.001),Object(r.od)(function(){var o=Object(r.Mb)(e,a),s=o.mean,u=o.variance;return[Or(e,s,u,n,t,i),s,u]})}(e,t,n,a,i):function(e,t,n,a,i){return void 0===i&&(i=.001),Object(r.od)(function(){for(var o=Object(r.Mb)(e,a),s=o.mean,u=o.variance,l=[],c=0,f=he(0,e.rank);c=0?e[2]+this.padding[0][0]+this.padding[0][1]:null,n=null!=e[3]&&e[3]>=0?e[3]+this.padding[1][0]+this.padding[1][1]:null,[e[0],e[1],t,n]):(t=null!=e[1]&&e[1]>=0?e[1]+this.padding[0][0]+this.padding[0][1]:null,n=null!=e[2]&&e[2]>=0?e[2]+this.padding[1][0]+this.padding[1][1]:null,[e[0],t,n,e[3]])},t.prototype.call=function(e,t){var n=this;return Object(r.od)(function(){return function(e,t,n){return Object(r.od)(function(){if(4!==e.rank)throw new w("temporalPadding expects input tensor to be 4-D, but received a "+e.rank+"-D tensor.");if(null==t&&(t=[[1,1],[1,1]]),2!==t.length||2!==t[0].length||2!==t[1].length)throw new w("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(null==n&&(n="channelsLast"),"channelsLast"!==n&&"channelsFirst"!==n)throw new w("Unknown data format: "+n+". Supported data formats are 'channelsLast' and 'channelsFirst.");var a;return a="channelsFirst"===n?[[0,0],[0,0],t[0],t[1]]:[[0,0],t[0],t[1],[0,0]],Object(r.cc)(e,a)})}(Ze(e),n.padding,n.dataFormat)})},t.prototype.getConfig=function(){var t={padding:this.padding,dataFormat:this.dataFormat},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t.className="ZeroPadding2D",t}(ct);function Cr(e,t,n,a,i,o){return Object(r.od)(function(){var s;J(i),j(ee,"PoolMode",o),Q(a),null==n&&(n=[1,1]),null==a&&(a="valid"),null==i&&(i="channelsLast"),null==o&&(o="max"),e=tr(e,i);var u="same"===a?"same":"valid";return s="max"===o?Object(r.Cb)(e,t,n,u):Object(r.E)(e,t,n,u),"channelsFirst"===i&&(s=Object(r.ud)(s,[0,3,1,2])),s})}r.Ec.registerClass(Ir);var Pr=function(e){function t(t){var n=this;if(null==t.poolSize&&(t.poolSize=2),n=e.call(this,t)||this,"number"==typeof t.poolSize)n.poolSize=[t.poolSize];else{if(!Array.isArray(t.poolSize)||1!==t.poolSize.length||"number"!=typeof t.poolSize[0])throw new w("poolSize for 1D convolutional layer must be a number or an Array of a single number, but received "+JSON.stringify(t.poolSize));n.poolSize=t.poolSize}if(null==t.strides)n.strides=n.poolSize;else if("number"==typeof t.strides)n.strides=[t.strides];else{if(!Array.isArray(t.strides)||1!==t.strides.length||"number"!=typeof t.strides[0])throw new w("strides for 1D convolutional layer must be a number or an Array of a single number, but received "+JSON.stringify(t.strides));n.strides=t.strides}return n.padding=null==t.padding?"valid":t.padding,Q(n.padding),n.inputSpec=[new it({ndim:3})],n}return i(t,e),t.prototype.computeOutputShape=function(e){var t=Qn((e=Qe(e))[1],this.poolSize[0],this.padding,this.strides[0]);return[e[0],t,e[2]]},t.prototype.call=function(e,t){var n=this;return Object(r.od)(function(){n.invokeCallHook(e,t),e=me(Ze(e),2);var a=n.poolingFunction(Ze(e),[n.poolSize[0],1],[n.strides[0],1],n.padding,"channelsLast");return Object(r.Xc)(a,[2])})},t.prototype.getConfig=function(){var t={poolSize:this.poolSize,padding:this.padding,strides:this.strides},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t}(ct),Ar=function(e){function t(t){return e.call(this,t)||this}return i(t,e),t.prototype.poolingFunction=function(e,t,n,r,a){return J(a),Q(r),Cr(e,t,n,r,a,"max")},t.className="MaxPooling1D",t}(Pr);r.Ec.registerClass(Ar);var Tr=function(e){function t(t){return e.call(this,t)||this}return i(t,e),t.prototype.poolingFunction=function(e,t,n,r,a){return J(a),Q(r),Cr(e,t,n,r,a,"avg")},t.className="AveragePooling1D",t}(Pr);r.Ec.registerClass(Tr);var Mr=function(e){function t(t){var n=this;if(null==t.poolSize&&(t.poolSize=[2,2]),(n=e.call(this,t)||this).poolSize=Array.isArray(t.poolSize)?t.poolSize:[t.poolSize,t.poolSize],null==t.strides)n.strides=n.poolSize;else if(Array.isArray(t.strides)){if(2!==t.strides.length)throw new w("If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length "+t.strides.length+".");n.strides=t.strides}else n.strides=[t.strides,t.strides];return n.padding=null==t.padding?"valid":t.padding,n.dataFormat=null==t.dataFormat?"channelsLast":t.dataFormat,J(n.dataFormat),Q(n.padding),n.inputSpec=[new it({ndim:4})],n}return i(t,e),t.prototype.computeOutputShape=function(e){e=Qe(e);var t="channelsFirst"===this.dataFormat?e[2]:e[1],n="channelsFirst"===this.dataFormat?e[3]:e[2];return t=Qn(t,this.poolSize[0],this.padding,this.strides[0]),n=Qn(n,this.poolSize[1],this.padding,this.strides[1]),"channelsFirst"===this.dataFormat?[e[0],e[1],t,n]:[e[0],t,n,e[3]]},t.prototype.call=function(e,t){var n=this;return Object(r.od)(function(){return n.invokeCallHook(e,t),n.poolingFunction(Ze(e),n.poolSize,n.strides,n.padding,n.dataFormat)})},t.prototype.getConfig=function(){var t={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t}(ct),Rr=function(e){function t(t){return e.call(this,t)||this}return i(t,e),t.prototype.poolingFunction=function(e,t,n,r,a){return J(a),Q(r),Cr(e,t,n,r,a,"max")},t.className="MaxPooling2D",t}(Mr);r.Ec.registerClass(Rr);var Dr=function(e){function t(t){return e.call(this,t)||this}return i(t,e),t.prototype.poolingFunction=function(e,t,n,r,a){return J(a),Q(r),Cr(e,t,n,r,a,"avg")},t.className="AveragePooling2D",t}(Mr);r.Ec.registerClass(Dr);var jr=function(e){function t(t){var n=e.call(this,t)||this;return n.inputSpec=[new it({ndim:3})],n}return i(t,e),t.prototype.computeOutputShape=function(e){return[e[0],e[2]]},t.prototype.call=function(e,t){throw new x},t}(ct),Lr=function(e){function t(t){return e.call(this,t)||this}return i(t,e),t.prototype.call=function(e,t){return Object(r.od)(function(){var t=Ze(e);return Object(r.Fb)(t,1)})},t.className="GlobalAveragePooling1D",t}(jr);r.Ec.registerClass(Lr);var Br=function(e){function t(t){return e.call(this,t)||this}return i(t,e),t.prototype.call=function(e,t){return Object(r.od)(function(){var t=Ze(e);return Object(r.Bb)(t,1)})},t.className="GlobalMaxPooling1D",t}(jr);r.Ec.registerClass(Br);var zr=function(e){function t(t){var n=e.call(this,t)||this;return n.dataFormat=null==t.dataFormat?"channelsLast":t.dataFormat,J(n.dataFormat),n.inputSpec=[new it({ndim:4})],n}return i(t,e),t.prototype.computeOutputShape=function(e){return e=e,"channelsLast"===this.dataFormat?[e[0],e[3]]:[e[0],e[1]]},t.prototype.call=function(e,t){throw new x},t.prototype.getConfig=function(){var t={dataFormat:this.dataFormat},n=e.prototype.getConfig.call(this);return Object.assign(t,n),t},t}(ct),Fr=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.call=function(e,t){var n=this;return Object(r.od)(function(){var t=Ze(e);return"channelsLast"===n.dataFormat?Object(r.Fb)(t,[1,2]):Object(r.Fb)(t,[2,3])})},t.className="GlobalAveragePooling2D",t}(zr);r.Ec.registerClass(Fr);var Vr=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t.prototype.call=function(e,t){var n=this;return Object(r.od)(function(){var t=Ze(e);return"channelsLast"===n.dataFormat?Object(r.Bb)(t,[1,2]):Object(r.Bb)(t,[2,3])})},t.className="GlobalMaxPooling2D",t}(zr);function Ur(e,t,n,r){if(Array.isArray(e)){if(null!=t||null!=n)throw new w("When inputs is an array, neither initialState or constants should be provided");null!=r&&(n=e.slice(e.length-r,e.length),e=e.slice(0,e.length-r)),e.length>1&&(t=e.slice(1,e.length)),e=e[0]}function a(e){return null==e||Array.isArray(e)?e:[e]}return{inputs:e,initialState:t=a(t),constants:n=a(n)}}function Wr(e,t,n,a,i,o,s,u){void 0===a&&(a=!1),void 0===s&&(s=!1),void 0===u&&(u=!1);var l=t.shape.length;if(l<3)throw new w("Input should be at least 3D, but is "+l+"D.");var c,f,p=[1,0].concat(he(2,l));if(t=Object(r.ud)(t,p),null!=i)throw new x("The rnn() function of the deeplearn.js backend does not support masking yet.");if(null!=o)throw new x("The rnn() functoin of the deeplearn.js backend does not support constants yet.");s&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),a&&(t=Object(r.uc)(t,0));for(var h=n,d=t.shape[0],m=function(n){var a=ge(t,n,1);a=a.reshape(a.shape.slice(1));var i=Object(r.od)(function(){return e(a,h)});if(f=i[0],u)if(0===n)c=f.expandDims(1);else{var o=Object(r.R)([c,f.expandDims(1)],1);c.dispose(),c=o}h=i[1]},g=0;g1?xe(n,[1,e]):n}):t.cell.stateSize>1?[xe(n,[1,t.cell.stateSize])]:[n]})},Object.defineProperty(t.prototype,"trainableWeights",{get:function(){return this.trainable?this.cell.trainableWeights:[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"nonTrainableWeights",{get:function(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights},enumerable:!0,configurable:!0}),t.prototype.getConfig=function(){var t={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};null!=this.numConstants&&(t.numConstants=this.numConstants);var n=this.cell.getConfig();t.cell={className:this.cell.getClassName(),config:n};var r=e.prototype.getConfig.call(this);return Object.assign(t,r),t},t.className="RNN",t}(ct);r.Ec.registerClass(qr);var $r=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return i(t,e),t}(ct),Gr=function(e){function t(t){var n=e.call(this,t)||this;return n.DEFAULT_ACTIVATION="tanh",n.DEFAULT_KERNEL_INITIALIZER="glorotNormal",n.DEFAULT_RECURRENT_INITIALIZER="orthogonal",n.DEFAULT_BIAS_INITIALIZER="zeros",n.units=t.units,n.activation=Fn(null==t.activation?n.DEFAULT_ACTIVATION:t.activation),n.useBias=null==t.useBias||t.useBias,n.kernelInitializer=Ke(t.kernelInitializer||n.DEFAULT_KERNEL_INITIALIZER),n.recurrentInitializer=Ke(t.recurrentInitializer||n.DEFAULT_RECURRENT_INITIALIZER),n.biasInitializer=Ke(t.biasInitializer||n.DEFAULT_BIAS_INITIALIZER),n.kernelRegularizer=Jn(t.kernelRegularizer),n.recurrentRegularizer=Jn(t.recurrentRegularizer),n.biasRegularizer=Jn(t.biasRegularizer),n.kernelConstraint=H(t.kernelConstraint),n.recurrentConstraint=H(t.recurrentConstraint),n.biasConstraint=H(t.biasConstraint),n.dropout=fe([1,pe([0,null==t.dropout?0:t.dropout])]),n.recurrentDropout=fe([1,pe([0,null==t.recurrentDropout?0:t.recurrentDropout])]),n.stateSize=n.units,n.dropoutMask=null,n.recurrentDropoutMask=null,n}return i(t,e),t.prototype.build=function(e){e=Qe(e),this.kernel=this.addWeight("kernel",[e[e.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0},t.prototype.call=function(e,t){var n=this;return Object(r.od)(function(){if(2!==(e=e).length)throw new w("SimpleRNNCell expects 2 input Tensors, got "+e.length+".");var a=e[1];e=e[0];var i,o=null!=t.training&&t.training;01){for(var o=[],s=0;s= 3D, but received input shape "+JSON.stringify(t));this.inputSpec=[{shape:t}];var n=[t[0]].concat(t.slice(2));this.layer.built||(this.layer.build(n),this.layer.built=!0),e.prototype.build.call(this,t)},t.prototype.computeOutputShape=function(e){var t=[(e=Qe(e))[0]].concat(e.slice(2)),n=this.layer.computeOutputShape(t),r=e[1];return[n[0],r].concat(n.slice(1))},t.prototype.call=function(e,t){var n=this;return Object(r.od)(function(){return Wr(function(e,r){return[Ze(n.layer.call(e,t)),[]]},e=Ze(e),[],!1,null,null,!1,!0)[1]})},t.className="TimeDistributed",t}(ea);r.Ec.registerClass(ta);var na=["sum","mul","concat","ave"],ra=function(e){function t(t){var n=e.call(this,t)||this,r=t.layer.getConfig();if(n.forwardLayer=tn({className:t.layer.getClassName(),config:r}),r.goBackwards=!0!==r.goBackwards,n.backwardLayer=tn({className:t.layer.getClassName(),config:r}),n.forwardLayer.name="forward_"+n.forwardLayer.name,n.backwardLayer.name="backward_"+n.backwardLayer.name,function(e){j(na,"BidirectionalMergeMode",e)}(t.mergeMode),n.mergeMode=t.mergeMode,t.weights)throw new x("weights support is not implemented for Bidirectional layer yet.");return n._stateful=t.layer.stateful,n.returnSequences=t.layer.returnSequences,n.returnState=t.layer.returnState,n.supportsMasking=!0,n._trainable=!0,n.inputSpec=t.layer.inputSpec,n.numConstants=null,n}return i(t,e),Object.defineProperty(t.prototype,"trainable",{get:function(){return this._trainable},set:function(e){this._trainable=e,null!=this.forwardLayer&&(this.forwardLayer.trainable=e),null!=this.backwardLayer&&(this.backwardLayer.trainable=e)},enumerable:!0,configurable:!0}),t.prototype.getWeights=function(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())},t.prototype.setWeights=function(e){var t=e.length,n=Math.floor(t/2);this.forwardLayer.setWeights(e.slice(0,n)),this.backwardLayer.setWeights(e.slice(n))},t.prototype.computeOutputShape=function(e){var t,n,r,a=this.forwardLayer.computeOutputShape(e);return Array.isArray(a)&&Array.isArray(a[0])||(a=[a]),a=a,this.returnState?(r=a.slice(1),t=a[0]):t=a[0],t=t,"concat"===this.mergeMode?(t[t.length-1]*=2,n=[t]):n=null==this.mergeMode?[t,t.slice()]:[t],this.returnState?null==this.mergeMode?n.concat(r).concat(r.slice()):[t].concat(r).concat(r.slice()):O(n)},t.prototype.apply=function(t,n){var r=null==n?null:n.initialState,a=null==n?null:n.constants;null==n&&(n={});var i=Ur(t,r,a,this.numConstants);if(t=i.inputs,r=i.initialState,a=i.constants,Array.isArray(t)&&(r=t.slice(1),t=t[0]),(null==r||0===r.length)&&null==a)return e.prototype.apply.call(this,t,n);var o=[],s=[];if(null!=r){var u=r.length;if(u%2>0)throw new w("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");n.initialState=r,o.push.apply(o,r);var l=r.map(function(e){return new it({shape:e.shape})});this.forwardLayer.stateSpec=l.slice(0,u/2),this.backwardLayer.stateSpec=l.slice(u/2),s.push.apply(s,l)}if(null!=a)throw new x("Support for constants in Bidirectional layers is not implemented yet.");for(var c=o[0]instanceof ot,f=0,p=o;f0?a(r(e),9007199254740991):0}},function(e,t){var n=e.exports={version:"2.6.1"};"number"==typeof __e&&(__e=n)},function(e,t,n){var r=n(4),a=n(293),i=n(52),o=Object.defineProperty;t.f=n(14)?Object.defineProperty:function(e,t,n){if(r(e),t=i(t,!0),r(n),a)try{return o(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){e.exports=!n(8)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t,n){(function(e){!function(e,t){"use strict";function r(e,t){if(!e)throw new Error(t||"Assertion failed")}function a(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}function i(e,t,n){if(i.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(n=t,t=10),this._init(e||0,t||10,n||"be"))}var o;"object"==typeof e?e.exports=i:t.BN=i,i.BN=i,i.wordSize=26;try{o=n(435).Buffer}catch(e){}function s(e,t,n){for(var r=0,a=Math.min(e.length,n),i=t;i=49&&o<=54?o-49+10:o>=17&&o<=22?o-17+10:15&o}return r}function u(e,t,n,r){for(var a=0,i=Math.min(e.length,n),o=t;o=49?s-49+10:s>=17?s-17+10:s}return a}i.isBN=function(e){return e instanceof i||null!==e&&"object"==typeof e&&e.constructor.wordSize===i.wordSize&&Array.isArray(e.words)},i.max=function(e,t){return e.cmp(t)>0?e:t},i.min=function(e,t){return e.cmp(t)<0?e:t},i.prototype._init=function(e,t,n){if("number"==typeof e)return this._initNumber(e,t,n);if("object"==typeof e)return this._initArray(e,t,n);"hex"===t&&(t=16),r(t===(0|t)&&t>=2&&t<=36);var a=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&a++,16===t?this._parseHex(e,a):this._parseBase(e,t,a),"-"===e[0]&&(this.negative=1),this.strip(),"le"===n&&this._initArray(this.toArray(),t,n)},i.prototype._initNumber=function(e,t,n){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[67108863&e],this.length=1):e<4503599627370496?(this.words=[67108863&e,e/67108864&67108863],this.length=2):(r(e<9007199254740992),this.words=[67108863&e,e/67108864&67108863,1],this.length=3),"le"===n&&this._initArray(this.toArray(),t,n)},i.prototype._initArray=function(e,t,n){if(r("number"==typeof e.length),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var a=0;a=0;a-=3)o=e[a]|e[a-1]<<8|e[a-2]<<16,this.words[i]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,i++);else if("le"===n)for(a=0,i=0;a>>26-s&67108863,(s+=24)>=26&&(s-=26,i++);return this.strip()},i.prototype._parseHex=function(e,t){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var n=0;n=t;n-=6)a=s(e,n,n+6),this.words[r]|=a<>>26-i&4194303,(i+=24)>=26&&(i-=26,r++);n+6!==t&&(a=s(e,t,n+6),this.words[r]|=a<>>26-i&4194303),this.strip()},i.prototype._parseBase=function(e,t,n){this.words=[0],this.length=1;for(var r=0,a=1;a<=67108863;a*=t)r++;r--,a=a/t|0;for(var i=e.length-n,o=i%r,s=Math.min(i,i-o)+n,l=0,c=n;c1&&0===this.words[this.length-1];)this.length--;return this._normSign()},i.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},i.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],c=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function p(e,t,n){n.negative=t.negative^e.negative;var r=e.length+t.length|0;n.length=r,r=r-1|0;var a=0|e.words[0],i=0|t.words[0],o=a*i,s=67108863&o,u=o/67108864|0;n.words[0]=s;for(var l=1;l>>26,f=67108863&u,p=Math.min(l,t.length-1),h=Math.max(0,l-e.length+1);h<=p;h++){var d=l-h|0;c+=(o=(a=0|e.words[d])*(i=0|t.words[h])+f)/67108864|0,f=67108863&o}n.words[l]=0|f,u=0|c}return 0!==u?n.words[l]=0|u:n.length--,n.strip()}i.prototype.toString=function(e,t){var n;if(e=e||10,t=0|t||1,16===e||"hex"===e){n="";for(var a=0,i=0,o=0;o>>24-a&16777215)||o!==this.length-1?l[6-u.length]+u+n:u+n,(a+=2)>=26&&(a-=26,o--)}for(0!==i&&(n=i.toString(16)+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(e===(0|e)&&e>=2&&e<=36){var p=c[e],h=f[e];n="";var d=this.clone();for(d.negative=0;!d.isZero();){var m=d.modn(h).toString(e);n=(d=d.idivn(h)).isZero()?m+n:l[p-m.length]+m+n}for(this.isZero()&&(n="0"+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},i.prototype.toJSON=function(){return this.toString(16)},i.prototype.toBuffer=function(e,t){return r(void 0!==o),this.toArrayLike(o,e,t)},i.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},i.prototype.toArrayLike=function(e,t,n){var a=this.byteLength(),i=n||Math.max(1,a);r(a<=i,"byte array longer than desired length"),r(i>0,"Requested array length <= 0"),this.strip();var o,s,u="le"===t,l=new e(i),c=this.clone();if(u){for(s=0;!c.isZero();s++)o=c.andln(255),c.iushrn(8),l[s]=o;for(;s=4096&&(n+=13,t>>>=13),t>=64&&(n+=7,t>>>=7),t>=8&&(n+=4,t>>>=4),t>=2&&(n+=2,t>>>=2),n+t},i.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,n=0;return 0==(8191&t)&&(n+=13,t>>>=13),0==(127&t)&&(n+=7,t>>>=7),0==(15&t)&&(n+=4,t>>>=4),0==(3&t)&&(n+=2,t>>>=2),0==(1&t)&&n++,n},i.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},i.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},i.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var n=0;ne.length?this.clone().iand(e):e.clone().iand(this)},i.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},i.prototype.iuxor=function(e){var t,n;this.length>e.length?(t=this,n=e):(t=e,n=this);for(var r=0;re.length?this.clone().ixor(e):e.clone().ixor(this)},i.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},i.prototype.inotn=function(e){r("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),n=e%26;this._expand(t),n>0&&t--;for(var a=0;a0&&(this.words[a]=~this.words[a]&67108863>>26-n),this.strip()},i.prototype.notn=function(e){return this.clone().inotn(e)},i.prototype.setn=function(e,t){r("number"==typeof e&&e>=0);var n=e/26|0,a=e%26;return this._expand(n+1),this.words[n]=t?this.words[n]|1<e.length?(n=this,r=e):(n=e,r=this);for(var a=0,i=0;i>>26;for(;0!==a&&i>>26;if(this.length=n.length,0!==a)this.words[this.length]=a,this.length++;else if(n!==this)for(;ie.length?this.clone().iadd(e):e.clone().iadd(this)},i.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var n,r,a=this.cmp(e);if(0===a)return this.negative=0,this.length=1,this.words[0]=0,this;a>0?(n=this,r=e):(n=e,r=this);for(var i=0,o=0;o>26,this.words[o]=67108863&t;for(;0!==i&&o>26,this.words[o]=67108863&t;if(0===i&&o>>13,h=0|o[1],d=8191&h,m=h>>>13,g=0|o[2],y=8191&g,v=g>>>13,b=0|o[3],w=8191&b,x=b>>>13,_=0|o[4],E=8191&_,N=_>>>13,S=0|o[5],O=8191&S,k=S>>>13,I=0|o[6],C=8191&I,P=I>>>13,A=0|o[7],T=8191&A,M=A>>>13,R=0|o[8],D=8191&R,j=R>>>13,L=0|o[9],B=8191&L,z=L>>>13,F=0|s[0],V=8191&F,U=F>>>13,W=0|s[1],q=8191&W,$=W>>>13,G=0|s[2],H=8191&G,K=G>>>13,X=0|s[3],Y=8191&X,J=X>>>13,Z=0|s[4],Q=8191&Z,ee=Z>>>13,te=0|s[5],ne=8191&te,re=te>>>13,ae=0|s[6],ie=8191&ae,oe=ae>>>13,se=0|s[7],ue=8191&se,le=se>>>13,ce=0|s[8],fe=8191&ce,pe=ce>>>13,he=0|s[9],de=8191&he,me=he>>>13;n.negative=e.negative^t.negative,n.length=19;var ge=(l+(r=Math.imul(f,V))|0)+((8191&(a=(a=Math.imul(f,U))+Math.imul(p,V)|0))<<13)|0;l=((i=Math.imul(p,U))+(a>>>13)|0)+(ge>>>26)|0,ge&=67108863,r=Math.imul(d,V),a=(a=Math.imul(d,U))+Math.imul(m,V)|0,i=Math.imul(m,U);var ye=(l+(r=r+Math.imul(f,q)|0)|0)+((8191&(a=(a=a+Math.imul(f,$)|0)+Math.imul(p,q)|0))<<13)|0;l=((i=i+Math.imul(p,$)|0)+(a>>>13)|0)+(ye>>>26)|0,ye&=67108863,r=Math.imul(y,V),a=(a=Math.imul(y,U))+Math.imul(v,V)|0,i=Math.imul(v,U),r=r+Math.imul(d,q)|0,a=(a=a+Math.imul(d,$)|0)+Math.imul(m,q)|0,i=i+Math.imul(m,$)|0;var ve=(l+(r=r+Math.imul(f,H)|0)|0)+((8191&(a=(a=a+Math.imul(f,K)|0)+Math.imul(p,H)|0))<<13)|0;l=((i=i+Math.imul(p,K)|0)+(a>>>13)|0)+(ve>>>26)|0,ve&=67108863,r=Math.imul(w,V),a=(a=Math.imul(w,U))+Math.imul(x,V)|0,i=Math.imul(x,U),r=r+Math.imul(y,q)|0,a=(a=a+Math.imul(y,$)|0)+Math.imul(v,q)|0,i=i+Math.imul(v,$)|0,r=r+Math.imul(d,H)|0,a=(a=a+Math.imul(d,K)|0)+Math.imul(m,H)|0,i=i+Math.imul(m,K)|0;var be=(l+(r=r+Math.imul(f,Y)|0)|0)+((8191&(a=(a=a+Math.imul(f,J)|0)+Math.imul(p,Y)|0))<<13)|0;l=((i=i+Math.imul(p,J)|0)+(a>>>13)|0)+(be>>>26)|0,be&=67108863,r=Math.imul(E,V),a=(a=Math.imul(E,U))+Math.imul(N,V)|0,i=Math.imul(N,U),r=r+Math.imul(w,q)|0,a=(a=a+Math.imul(w,$)|0)+Math.imul(x,q)|0,i=i+Math.imul(x,$)|0,r=r+Math.imul(y,H)|0,a=(a=a+Math.imul(y,K)|0)+Math.imul(v,H)|0,i=i+Math.imul(v,K)|0,r=r+Math.imul(d,Y)|0,a=(a=a+Math.imul(d,J)|0)+Math.imul(m,Y)|0,i=i+Math.imul(m,J)|0;var we=(l+(r=r+Math.imul(f,Q)|0)|0)+((8191&(a=(a=a+Math.imul(f,ee)|0)+Math.imul(p,Q)|0))<<13)|0;l=((i=i+Math.imul(p,ee)|0)+(a>>>13)|0)+(we>>>26)|0,we&=67108863,r=Math.imul(O,V),a=(a=Math.imul(O,U))+Math.imul(k,V)|0,i=Math.imul(k,U),r=r+Math.imul(E,q)|0,a=(a=a+Math.imul(E,$)|0)+Math.imul(N,q)|0,i=i+Math.imul(N,$)|0,r=r+Math.imul(w,H)|0,a=(a=a+Math.imul(w,K)|0)+Math.imul(x,H)|0,i=i+Math.imul(x,K)|0,r=r+Math.imul(y,Y)|0,a=(a=a+Math.imul(y,J)|0)+Math.imul(v,Y)|0,i=i+Math.imul(v,J)|0,r=r+Math.imul(d,Q)|0,a=(a=a+Math.imul(d,ee)|0)+Math.imul(m,Q)|0,i=i+Math.imul(m,ee)|0;var xe=(l+(r=r+Math.imul(f,ne)|0)|0)+((8191&(a=(a=a+Math.imul(f,re)|0)+Math.imul(p,ne)|0))<<13)|0;l=((i=i+Math.imul(p,re)|0)+(a>>>13)|0)+(xe>>>26)|0,xe&=67108863,r=Math.imul(C,V),a=(a=Math.imul(C,U))+Math.imul(P,V)|0,i=Math.imul(P,U),r=r+Math.imul(O,q)|0,a=(a=a+Math.imul(O,$)|0)+Math.imul(k,q)|0,i=i+Math.imul(k,$)|0,r=r+Math.imul(E,H)|0,a=(a=a+Math.imul(E,K)|0)+Math.imul(N,H)|0,i=i+Math.imul(N,K)|0,r=r+Math.imul(w,Y)|0,a=(a=a+Math.imul(w,J)|0)+Math.imul(x,Y)|0,i=i+Math.imul(x,J)|0,r=r+Math.imul(y,Q)|0,a=(a=a+Math.imul(y,ee)|0)+Math.imul(v,Q)|0,i=i+Math.imul(v,ee)|0,r=r+Math.imul(d,ne)|0,a=(a=a+Math.imul(d,re)|0)+Math.imul(m,ne)|0,i=i+Math.imul(m,re)|0;var _e=(l+(r=r+Math.imul(f,ie)|0)|0)+((8191&(a=(a=a+Math.imul(f,oe)|0)+Math.imul(p,ie)|0))<<13)|0;l=((i=i+Math.imul(p,oe)|0)+(a>>>13)|0)+(_e>>>26)|0,_e&=67108863,r=Math.imul(T,V),a=(a=Math.imul(T,U))+Math.imul(M,V)|0,i=Math.imul(M,U),r=r+Math.imul(C,q)|0,a=(a=a+Math.imul(C,$)|0)+Math.imul(P,q)|0,i=i+Math.imul(P,$)|0,r=r+Math.imul(O,H)|0,a=(a=a+Math.imul(O,K)|0)+Math.imul(k,H)|0,i=i+Math.imul(k,K)|0,r=r+Math.imul(E,Y)|0,a=(a=a+Math.imul(E,J)|0)+Math.imul(N,Y)|0,i=i+Math.imul(N,J)|0,r=r+Math.imul(w,Q)|0,a=(a=a+Math.imul(w,ee)|0)+Math.imul(x,Q)|0,i=i+Math.imul(x,ee)|0,r=r+Math.imul(y,ne)|0,a=(a=a+Math.imul(y,re)|0)+Math.imul(v,ne)|0,i=i+Math.imul(v,re)|0,r=r+Math.imul(d,ie)|0,a=(a=a+Math.imul(d,oe)|0)+Math.imul(m,ie)|0,i=i+Math.imul(m,oe)|0;var Ee=(l+(r=r+Math.imul(f,ue)|0)|0)+((8191&(a=(a=a+Math.imul(f,le)|0)+Math.imul(p,ue)|0))<<13)|0;l=((i=i+Math.imul(p,le)|0)+(a>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,r=Math.imul(D,V),a=(a=Math.imul(D,U))+Math.imul(j,V)|0,i=Math.imul(j,U),r=r+Math.imul(T,q)|0,a=(a=a+Math.imul(T,$)|0)+Math.imul(M,q)|0,i=i+Math.imul(M,$)|0,r=r+Math.imul(C,H)|0,a=(a=a+Math.imul(C,K)|0)+Math.imul(P,H)|0,i=i+Math.imul(P,K)|0,r=r+Math.imul(O,Y)|0,a=(a=a+Math.imul(O,J)|0)+Math.imul(k,Y)|0,i=i+Math.imul(k,J)|0,r=r+Math.imul(E,Q)|0,a=(a=a+Math.imul(E,ee)|0)+Math.imul(N,Q)|0,i=i+Math.imul(N,ee)|0,r=r+Math.imul(w,ne)|0,a=(a=a+Math.imul(w,re)|0)+Math.imul(x,ne)|0,i=i+Math.imul(x,re)|0,r=r+Math.imul(y,ie)|0,a=(a=a+Math.imul(y,oe)|0)+Math.imul(v,ie)|0,i=i+Math.imul(v,oe)|0,r=r+Math.imul(d,ue)|0,a=(a=a+Math.imul(d,le)|0)+Math.imul(m,ue)|0,i=i+Math.imul(m,le)|0;var Ne=(l+(r=r+Math.imul(f,fe)|0)|0)+((8191&(a=(a=a+Math.imul(f,pe)|0)+Math.imul(p,fe)|0))<<13)|0;l=((i=i+Math.imul(p,pe)|0)+(a>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,r=Math.imul(B,V),a=(a=Math.imul(B,U))+Math.imul(z,V)|0,i=Math.imul(z,U),r=r+Math.imul(D,q)|0,a=(a=a+Math.imul(D,$)|0)+Math.imul(j,q)|0,i=i+Math.imul(j,$)|0,r=r+Math.imul(T,H)|0,a=(a=a+Math.imul(T,K)|0)+Math.imul(M,H)|0,i=i+Math.imul(M,K)|0,r=r+Math.imul(C,Y)|0,a=(a=a+Math.imul(C,J)|0)+Math.imul(P,Y)|0,i=i+Math.imul(P,J)|0,r=r+Math.imul(O,Q)|0,a=(a=a+Math.imul(O,ee)|0)+Math.imul(k,Q)|0,i=i+Math.imul(k,ee)|0,r=r+Math.imul(E,ne)|0,a=(a=a+Math.imul(E,re)|0)+Math.imul(N,ne)|0,i=i+Math.imul(N,re)|0,r=r+Math.imul(w,ie)|0,a=(a=a+Math.imul(w,oe)|0)+Math.imul(x,ie)|0,i=i+Math.imul(x,oe)|0,r=r+Math.imul(y,ue)|0,a=(a=a+Math.imul(y,le)|0)+Math.imul(v,ue)|0,i=i+Math.imul(v,le)|0,r=r+Math.imul(d,fe)|0,a=(a=a+Math.imul(d,pe)|0)+Math.imul(m,fe)|0,i=i+Math.imul(m,pe)|0;var Se=(l+(r=r+Math.imul(f,de)|0)|0)+((8191&(a=(a=a+Math.imul(f,me)|0)+Math.imul(p,de)|0))<<13)|0;l=((i=i+Math.imul(p,me)|0)+(a>>>13)|0)+(Se>>>26)|0,Se&=67108863,r=Math.imul(B,q),a=(a=Math.imul(B,$))+Math.imul(z,q)|0,i=Math.imul(z,$),r=r+Math.imul(D,H)|0,a=(a=a+Math.imul(D,K)|0)+Math.imul(j,H)|0,i=i+Math.imul(j,K)|0,r=r+Math.imul(T,Y)|0,a=(a=a+Math.imul(T,J)|0)+Math.imul(M,Y)|0,i=i+Math.imul(M,J)|0,r=r+Math.imul(C,Q)|0,a=(a=a+Math.imul(C,ee)|0)+Math.imul(P,Q)|0,i=i+Math.imul(P,ee)|0,r=r+Math.imul(O,ne)|0,a=(a=a+Math.imul(O,re)|0)+Math.imul(k,ne)|0,i=i+Math.imul(k,re)|0,r=r+Math.imul(E,ie)|0,a=(a=a+Math.imul(E,oe)|0)+Math.imul(N,ie)|0,i=i+Math.imul(N,oe)|0,r=r+Math.imul(w,ue)|0,a=(a=a+Math.imul(w,le)|0)+Math.imul(x,ue)|0,i=i+Math.imul(x,le)|0,r=r+Math.imul(y,fe)|0,a=(a=a+Math.imul(y,pe)|0)+Math.imul(v,fe)|0,i=i+Math.imul(v,pe)|0;var Oe=(l+(r=r+Math.imul(d,de)|0)|0)+((8191&(a=(a=a+Math.imul(d,me)|0)+Math.imul(m,de)|0))<<13)|0;l=((i=i+Math.imul(m,me)|0)+(a>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,r=Math.imul(B,H),a=(a=Math.imul(B,K))+Math.imul(z,H)|0,i=Math.imul(z,K),r=r+Math.imul(D,Y)|0,a=(a=a+Math.imul(D,J)|0)+Math.imul(j,Y)|0,i=i+Math.imul(j,J)|0,r=r+Math.imul(T,Q)|0,a=(a=a+Math.imul(T,ee)|0)+Math.imul(M,Q)|0,i=i+Math.imul(M,ee)|0,r=r+Math.imul(C,ne)|0,a=(a=a+Math.imul(C,re)|0)+Math.imul(P,ne)|0,i=i+Math.imul(P,re)|0,r=r+Math.imul(O,ie)|0,a=(a=a+Math.imul(O,oe)|0)+Math.imul(k,ie)|0,i=i+Math.imul(k,oe)|0,r=r+Math.imul(E,ue)|0,a=(a=a+Math.imul(E,le)|0)+Math.imul(N,ue)|0,i=i+Math.imul(N,le)|0,r=r+Math.imul(w,fe)|0,a=(a=a+Math.imul(w,pe)|0)+Math.imul(x,fe)|0,i=i+Math.imul(x,pe)|0;var ke=(l+(r=r+Math.imul(y,de)|0)|0)+((8191&(a=(a=a+Math.imul(y,me)|0)+Math.imul(v,de)|0))<<13)|0;l=((i=i+Math.imul(v,me)|0)+(a>>>13)|0)+(ke>>>26)|0,ke&=67108863,r=Math.imul(B,Y),a=(a=Math.imul(B,J))+Math.imul(z,Y)|0,i=Math.imul(z,J),r=r+Math.imul(D,Q)|0,a=(a=a+Math.imul(D,ee)|0)+Math.imul(j,Q)|0,i=i+Math.imul(j,ee)|0,r=r+Math.imul(T,ne)|0,a=(a=a+Math.imul(T,re)|0)+Math.imul(M,ne)|0,i=i+Math.imul(M,re)|0,r=r+Math.imul(C,ie)|0,a=(a=a+Math.imul(C,oe)|0)+Math.imul(P,ie)|0,i=i+Math.imul(P,oe)|0,r=r+Math.imul(O,ue)|0,a=(a=a+Math.imul(O,le)|0)+Math.imul(k,ue)|0,i=i+Math.imul(k,le)|0,r=r+Math.imul(E,fe)|0,a=(a=a+Math.imul(E,pe)|0)+Math.imul(N,fe)|0,i=i+Math.imul(N,pe)|0;var Ie=(l+(r=r+Math.imul(w,de)|0)|0)+((8191&(a=(a=a+Math.imul(w,me)|0)+Math.imul(x,de)|0))<<13)|0;l=((i=i+Math.imul(x,me)|0)+(a>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,r=Math.imul(B,Q),a=(a=Math.imul(B,ee))+Math.imul(z,Q)|0,i=Math.imul(z,ee),r=r+Math.imul(D,ne)|0,a=(a=a+Math.imul(D,re)|0)+Math.imul(j,ne)|0,i=i+Math.imul(j,re)|0,r=r+Math.imul(T,ie)|0,a=(a=a+Math.imul(T,oe)|0)+Math.imul(M,ie)|0,i=i+Math.imul(M,oe)|0,r=r+Math.imul(C,ue)|0,a=(a=a+Math.imul(C,le)|0)+Math.imul(P,ue)|0,i=i+Math.imul(P,le)|0,r=r+Math.imul(O,fe)|0,a=(a=a+Math.imul(O,pe)|0)+Math.imul(k,fe)|0,i=i+Math.imul(k,pe)|0;var Ce=(l+(r=r+Math.imul(E,de)|0)|0)+((8191&(a=(a=a+Math.imul(E,me)|0)+Math.imul(N,de)|0))<<13)|0;l=((i=i+Math.imul(N,me)|0)+(a>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,r=Math.imul(B,ne),a=(a=Math.imul(B,re))+Math.imul(z,ne)|0,i=Math.imul(z,re),r=r+Math.imul(D,ie)|0,a=(a=a+Math.imul(D,oe)|0)+Math.imul(j,ie)|0,i=i+Math.imul(j,oe)|0,r=r+Math.imul(T,ue)|0,a=(a=a+Math.imul(T,le)|0)+Math.imul(M,ue)|0,i=i+Math.imul(M,le)|0,r=r+Math.imul(C,fe)|0,a=(a=a+Math.imul(C,pe)|0)+Math.imul(P,fe)|0,i=i+Math.imul(P,pe)|0;var Pe=(l+(r=r+Math.imul(O,de)|0)|0)+((8191&(a=(a=a+Math.imul(O,me)|0)+Math.imul(k,de)|0))<<13)|0;l=((i=i+Math.imul(k,me)|0)+(a>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,r=Math.imul(B,ie),a=(a=Math.imul(B,oe))+Math.imul(z,ie)|0,i=Math.imul(z,oe),r=r+Math.imul(D,ue)|0,a=(a=a+Math.imul(D,le)|0)+Math.imul(j,ue)|0,i=i+Math.imul(j,le)|0,r=r+Math.imul(T,fe)|0,a=(a=a+Math.imul(T,pe)|0)+Math.imul(M,fe)|0,i=i+Math.imul(M,pe)|0;var Ae=(l+(r=r+Math.imul(C,de)|0)|0)+((8191&(a=(a=a+Math.imul(C,me)|0)+Math.imul(P,de)|0))<<13)|0;l=((i=i+Math.imul(P,me)|0)+(a>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,r=Math.imul(B,ue),a=(a=Math.imul(B,le))+Math.imul(z,ue)|0,i=Math.imul(z,le),r=r+Math.imul(D,fe)|0,a=(a=a+Math.imul(D,pe)|0)+Math.imul(j,fe)|0,i=i+Math.imul(j,pe)|0;var Te=(l+(r=r+Math.imul(T,de)|0)|0)+((8191&(a=(a=a+Math.imul(T,me)|0)+Math.imul(M,de)|0))<<13)|0;l=((i=i+Math.imul(M,me)|0)+(a>>>13)|0)+(Te>>>26)|0,Te&=67108863,r=Math.imul(B,fe),a=(a=Math.imul(B,pe))+Math.imul(z,fe)|0,i=Math.imul(z,pe);var Me=(l+(r=r+Math.imul(D,de)|0)|0)+((8191&(a=(a=a+Math.imul(D,me)|0)+Math.imul(j,de)|0))<<13)|0;l=((i=i+Math.imul(j,me)|0)+(a>>>13)|0)+(Me>>>26)|0,Me&=67108863;var Re=(l+(r=Math.imul(B,de))|0)+((8191&(a=(a=Math.imul(B,me))+Math.imul(z,de)|0))<<13)|0;return l=((i=Math.imul(z,me))+(a>>>13)|0)+(Re>>>26)|0,Re&=67108863,u[0]=ge,u[1]=ye,u[2]=ve,u[3]=be,u[4]=we,u[5]=xe,u[6]=_e,u[7]=Ee,u[8]=Ne,u[9]=Se,u[10]=Oe,u[11]=ke,u[12]=Ie,u[13]=Ce,u[14]=Pe,u[15]=Ae,u[16]=Te,u[17]=Me,u[18]=Re,0!==l&&(u[19]=l,n.length++),n};function d(e,t,n){return(new m).mulp(e,t,n)}function m(e,t){this.x=e,this.y=t}Math.imul||(h=p),i.prototype.mulTo=function(e,t){var n=this.length+e.length;return 10===this.length&&10===e.length?h(this,e,t):n<63?p(this,e,t):n<1024?function(e,t,n){n.negative=t.negative^e.negative,n.length=e.length+t.length;for(var r=0,a=0,i=0;i>>26)|0)>>>26,o&=67108863}n.words[i]=s,r=o,o=a}return 0!==r?n.words[i]=r:n.length--,n.strip()}(this,e,t):d(this,e,t)},m.prototype.makeRBT=function(e){for(var t=new Array(e),n=i.prototype._countBits(e)-1,r=0;r>=1;return r},m.prototype.permute=function(e,t,n,r,a,i){for(var o=0;o>>=1)a++;return 1<>>=13,n[2*o+1]=8191&i,i>>>=13;for(o=2*t;o>=26,t+=a/67108864|0,t+=i>>>26,this.words[n]=67108863&i}return 0!==t&&(this.words[n]=t,this.length++),this},i.prototype.muln=function(e){return this.clone().imuln(e)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),n=0;n>>a}return t}(e);if(0===t.length)return new i(1);for(var n=this,r=0;r=0);var t,n=e%26,a=(e-n)/26,i=67108863>>>26-n<<26-n;if(0!==n){var o=0;for(t=0;t>>26-n}o&&(this.words[t]=o,this.length++)}if(0!==a){for(t=this.length-1;t>=0;t--)this.words[t+a]=this.words[t];for(t=0;t=0),a=t?(t-t%26)/26:0;var i=e%26,o=Math.min((e-i)/26,this.length),s=67108863^67108863>>>i<o)for(this.length-=o,l=0;l=0&&(0!==c||l>=a);l--){var f=0|this.words[l];this.words[l]=c<<26-i|f>>>i,c=f&s}return u&&0!==c&&(u.words[u.length++]=c),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},i.prototype.ishrn=function(e,t,n){return r(0===this.negative),this.iushrn(e,t,n)},i.prototype.shln=function(e){return this.clone().ishln(e)},i.prototype.ushln=function(e){return this.clone().iushln(e)},i.prototype.shrn=function(e){return this.clone().ishrn(e)},i.prototype.ushrn=function(e){return this.clone().iushrn(e)},i.prototype.testn=function(e){r("number"==typeof e&&e>=0);var t=e%26,n=(e-t)/26,a=1<=0);var t=e%26,n=(e-t)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==t&&n++,this.length=Math.min(n,this.length),0!==t){var a=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},i.prototype.isubn=function(e){if(r("number"==typeof e),r(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[a+n]=67108863&i}for(;a>26,this.words[a+n]=67108863&i;if(0===s)return this.strip();for(r(-1===s),s=0,a=0;a>26,this.words[a]=67108863&i;return this.negative=1,this.strip()},i.prototype._wordDiv=function(e,t){var n=(this.length,e.length),r=this.clone(),a=e,o=0|a.words[a.length-1];0!=(n=26-this._countBits(o))&&(a=a.ushln(n),r.iushln(n),o=0|a.words[a.length-1]);var s,u=r.length-a.length;if("mod"!==t){(s=new i(null)).length=u+1,s.words=new Array(s.length);for(var l=0;l=0;f--){var p=67108864*(0|r.words[a.length+f])+(0|r.words[a.length+f-1]);for(p=Math.min(p/o|0,67108863),r._ishlnsubmul(a,p,f);0!==r.negative;)p--,r.negative=0,r._ishlnsubmul(a,1,f),r.isZero()||(r.negative^=1);s&&(s.words[f]=p)}return s&&s.strip(),r.strip(),"div"!==t&&0!==n&&r.iushrn(n),{div:s||null,mod:r}},i.prototype.divmod=function(e,t,n){return r(!e.isZero()),this.isZero()?{div:new i(0),mod:new i(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(a=s.div.neg()),"div"!==t&&(o=s.mod.neg(),n&&0!==o.negative&&o.iadd(e)),{div:a,mod:o}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(a=s.div.neg()),{div:a,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(o=s.mod.neg(),n&&0!==o.negative&&o.isub(e)),{div:s.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new i(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new i(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new i(this.modn(e.words[0]))}:this._wordDiv(e,t);var a,o,s},i.prototype.div=function(e){return this.divmod(e,"div",!1).div},i.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},i.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},i.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var n=0!==t.div.negative?t.mod.isub(e):t.mod,r=e.ushrn(1),a=e.andln(1),i=n.cmp(r);return i<0||1===a&&0===i?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},i.prototype.modn=function(e){r(e<=67108863);for(var t=(1<<26)%e,n=0,a=this.length-1;a>=0;a--)n=(t*n+(0|this.words[a]))%e;return n},i.prototype.idivn=function(e){r(e<=67108863);for(var t=0,n=this.length-1;n>=0;n--){var a=(0|this.words[n])+67108864*t;this.words[n]=a/e|0,t=a%e}return this.strip()},i.prototype.divn=function(e){return this.clone().idivn(e)},i.prototype.egcd=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var a=new i(1),o=new i(0),s=new i(0),u=new i(1),l=0;t.isEven()&&n.isEven();)t.iushrn(1),n.iushrn(1),++l;for(var c=n.clone(),f=t.clone();!t.isZero();){for(var p=0,h=1;0==(t.words[0]&h)&&p<26;++p,h<<=1);if(p>0)for(t.iushrn(p);p-- >0;)(a.isOdd()||o.isOdd())&&(a.iadd(c),o.isub(f)),a.iushrn(1),o.iushrn(1);for(var d=0,m=1;0==(n.words[0]&m)&&d<26;++d,m<<=1);if(d>0)for(n.iushrn(d);d-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(c),u.isub(f)),s.iushrn(1),u.iushrn(1);t.cmp(n)>=0?(t.isub(n),a.isub(s),o.isub(u)):(n.isub(t),s.isub(a),u.isub(o))}return{a:s,b:u,gcd:n.iushln(l)}},i.prototype._invmp=function(e){r(0===e.negative),r(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var a,o=new i(1),s=new i(0),u=n.clone();t.cmpn(1)>0&&n.cmpn(1)>0;){for(var l=0,c=1;0==(t.words[0]&c)&&l<26;++l,c<<=1);if(l>0)for(t.iushrn(l);l-- >0;)o.isOdd()&&o.iadd(u),o.iushrn(1);for(var f=0,p=1;0==(n.words[0]&p)&&f<26;++f,p<<=1);if(f>0)for(n.iushrn(f);f-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);t.cmp(n)>=0?(t.isub(n),o.isub(s)):(n.isub(t),s.isub(o))}return(a=0===t.cmpn(1)?o:s).cmpn(0)<0&&a.iadd(e),a},i.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),n=e.clone();t.negative=0,n.negative=0;for(var r=0;t.isEven()&&n.isEven();r++)t.iushrn(1),n.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;n.isEven();)n.iushrn(1);var a=t.cmp(n);if(a<0){var i=t;t=n,n=i}else if(0===a||0===n.cmpn(1))break;t.isub(n)}return n.iushln(r)},i.prototype.invm=function(e){return this.egcd(e).a.umod(e)},i.prototype.isEven=function(){return 0==(1&this.words[0])},i.prototype.isOdd=function(){return 1==(1&this.words[0])},i.prototype.andln=function(e){return this.words[0]&e},i.prototype.bincn=function(e){r("number"==typeof e);var t=e%26,n=(e-t)/26,a=1<>>26,s&=67108863,this.words[o]=s}return 0!==i&&(this.words[o]=i,this.length++),this},i.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},i.prototype.cmpn=function(e){var t,n=e<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this.strip(),this.length>1)t=1;else{n&&(e=-e),r(e<=67108863,"Number is too big");var a=0|this.words[0];t=a===e?0:ae.length)return 1;if(this.length=0;n--){var r=0|this.words[n],a=0|e.words[n];if(r!==a){ra&&(t=1);break}}return t},i.prototype.gtn=function(e){return 1===this.cmpn(e)},i.prototype.gt=function(e){return 1===this.cmp(e)},i.prototype.gten=function(e){return this.cmpn(e)>=0},i.prototype.gte=function(e){return this.cmp(e)>=0},i.prototype.ltn=function(e){return-1===this.cmpn(e)},i.prototype.lt=function(e){return-1===this.cmp(e)},i.prototype.lten=function(e){return this.cmpn(e)<=0},i.prototype.lte=function(e){return this.cmp(e)<=0},i.prototype.eqn=function(e){return 0===this.cmpn(e)},i.prototype.eq=function(e){return 0===this.cmp(e)},i.red=function(e){return new _(e)},i.prototype.toRed=function(e){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},i.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(e){return this.red=e,this},i.prototype.forceRed=function(e){return r(!this.red,"Already a number in reduction context"),this._forceRed(e)},i.prototype.redAdd=function(e){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},i.prototype.redIAdd=function(e){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},i.prototype.redSub=function(e){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},i.prototype.redISub=function(e){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},i.prototype.redShl=function(e){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},i.prototype.redMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},i.prototype.redIMul=function(e){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},i.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(e){return r(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var g={k256:null,p224:null,p192:null,p25519:null};function y(e,t){this.name=e,this.p=new i(t,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function v(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){y.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){y.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function x(){y.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function _(e){if("string"==typeof e){var t=i._prime(e);this.m=t.p,this.prime=t}else r(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function E(e){_.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}y.prototype._tmp=function(){var e=new i(null);return e.words=new Array(Math.ceil(this.n/13)),e},y.prototype.ireduce=function(e){var t,n=e;do{this.split(n,this.tmp),t=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(t>this.n);var r=t0?n.isub(this.p):n.strip(),n},y.prototype.split=function(e,t){e.iushrn(this.n,0,t)},y.prototype.imulK=function(e){return e.imul(this.k)},a(v,y),v.prototype.split=function(e,t){for(var n=Math.min(e.length,9),r=0;r>>22,a=i}a>>>=22,e.words[r-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},v.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,n=0;n>>=26,e.words[n]=a,t=r}return 0!==t&&(e.words[e.length++]=t),e},i._prime=function(e){if(g[e])return g[e];var t;if("k256"===e)t=new v;else if("p224"===e)t=new b;else if("p192"===e)t=new w;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new x}return g[e]=t,t},_.prototype._verify1=function(e){r(0===e.negative,"red works only with positives"),r(e.red,"red works only with red numbers")},_.prototype._verify2=function(e,t){r(0==(e.negative|t.negative),"red works only with positives"),r(e.red&&e.red===t.red,"red works only with red numbers")},_.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},_.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},_.prototype.add=function(e,t){this._verify2(e,t);var n=e.add(t);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},_.prototype.iadd=function(e,t){this._verify2(e,t);var n=e.iadd(t);return n.cmp(this.m)>=0&&n.isub(this.m),n},_.prototype.sub=function(e,t){this._verify2(e,t);var n=e.sub(t);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},_.prototype.isub=function(e,t){this._verify2(e,t);var n=e.isub(t);return n.cmpn(0)<0&&n.iadd(this.m),n},_.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},_.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},_.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},_.prototype.isqr=function(e){return this.imul(e,e.clone())},_.prototype.sqr=function(e){return this.mul(e,e)},_.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(r(t%2==1),3===t){var n=this.m.add(new i(1)).iushrn(2);return this.pow(e,n)}for(var a=this.m.subn(1),o=0;!a.isZero()&&0===a.andln(1);)o++,a.iushrn(1);r(!a.isZero());var s=new i(1).toRed(this),u=s.redNeg(),l=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new i(2*c*c).toRed(this);0!==this.pow(c,l).cmp(u);)c.redIAdd(u);for(var f=this.pow(c,a),p=this.pow(e,a.addn(1).iushrn(1)),h=this.pow(e,a),d=o;0!==h.cmp(s);){for(var m=h,g=0;0!==m.cmp(s);g++)m=m.redSqr();r(g=0;r--){for(var l=t.words[r],c=u-1;c>=0;c--){var f=l>>c&1;a!==n[0]&&(a=this.sqr(a)),0!==f||0!==o?(o<<=1,o|=f,(4==++s||0===r&&0===c)&&(a=this.mul(a,n[o]),s=0,o=0)):s=0}u=26}return a},_.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},_.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},i.mont=function(e){return new E(e)},a(E,_),E.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},E.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},E.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var n=e.imul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),a=n.isub(r).iushrn(this.shift),i=a;return a.cmp(this.m)>=0?i=a.isub(this.m):a.cmpn(0)<0&&(i=a.iadd(this.m)),i._forceRed(this)},E.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new i(0)._forceRed(this);var n=e.mul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),a=n.isub(r).iushrn(this.shift),o=a;return a.cmp(this.m)>=0?o=a.isub(this.m):a.cmpn(0)<0&&(o=a.iadd(this.m)),o._forceRed(this)},E.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(void 0===e||e,this)}).call(this,n(436)(e))},function(e,t,n){"use strict";(function(e){ /*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT */ -var r=n(469),a=n(468),i=n(254);function o(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(o()=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|e}function d(e,t){if(u.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return F(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return V(e).length;default:if(r)return F(e).length;t=(""+t).toLowerCase(),r=!0}}function m(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function g(e,t,n,r,a){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=a?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(a)return-1;n=e.length-1}else if(n<0){if(!a)return-1;n=0}if("string"==typeof t&&(t=u.from(t,r)),u.isBuffer(t))return 0===t.length?-1:y(e,t,n,r,a);if("number"==typeof t)return t&=255,u.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?a?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,r,a);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,r,a){var i,o=1,s=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,s/=2,u/=2,n/=2}function l(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(a){var c=-1;for(i=n;is&&(n=s-u),i=n;i>=0;i--){for(var f=!0,p=0;pa&&(r=a):r=a;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var o=0;o>8,a=n%256,i.push(a),i.push(r);return i}(t,e.length-n),e,n,r)}function N(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function S(e,t,n){n=Math.min(e.length,n);for(var r=[],a=t;a239?4:l>223?3:l>191?2:1;if(a+f<=n)switch(f){case 1:l<128&&(c=l);break;case 2:128==(192&(i=e[a+1]))&&(u=(31&l)<<6|63&i)>127&&(c=u);break;case 3:i=e[a+1],o=e[a+2],128==(192&i)&&128==(192&o)&&(u=(15&l)<<12|(63&i)<<6|63&o)>2047&&(u<55296||u>57343)&&(c=u);break;case 4:i=e[a+1],o=e[a+2],s=e[a+3],128==(192&i)&&128==(192&o)&&128==(192&s)&&(u=(15&l)<<18|(63&i)<<12|(63&o)<<6|63&s)>65535&&u<1114112&&(c=u)}null===c?(c=65533,f=1):c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|1023&c),r.push(c),a+=f}return function(e){var t=e.length;if(t<=O)return String.fromCharCode.apply(String,e);for(var n="",r=0;rthis.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return C(this,t,n);case"utf8":case"utf-8":return S(this,t,n);case"ascii":return k(this,t,n);case"latin1":case"binary":return I(this,t,n);case"base64":return N(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}.apply(this,arguments)},u.prototype.equals=function(e){if(!u.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===u.compare(this,e)},u.prototype.inspect=function(){var e="",n=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},u.prototype.compare=function(e,t,n,r,a){if(!u.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===a&&(a=this.length),t<0||n>e.length||r<0||a>this.length)throw new RangeError("out of range index");if(r>=a&&t>=n)return 0;if(r>=a)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,r>>>=0,a>>>=0,this===e)return 0;for(var i=a-r,o=n-t,s=Math.min(i,o),l=this.slice(r,a),c=e.slice(t,n),f=0;fa)&&(n=a),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return v(this,e,t,n);case"utf8":case"utf-8":return b(this,e,t,n);case"ascii":return w(this,e,t,n);case"latin1":case"binary":return x(this,e,t,n);case"base64":return _(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var O=4096;function k(e,t,n){var r="";n=Math.min(e.length,n);for(var a=t;ar)&&(n=r);for(var a="",i=t;in)throw new RangeError("Trying to access beyond buffer length")}function T(e,t,n,r,a,i){if(!u.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>a||te.length)throw new RangeError("Index out of range")}function M(e,t,n,r){t<0&&(t=65535+t+1);for(var a=0,i=Math.min(e.length-n,2);a>>8*(r?a:1-a)}function R(e,t,n,r){t<0&&(t=4294967295+t+1);for(var a=0,i=Math.min(e.length-n,4);a>>8*(r?a:3-a)&255}function D(e,t,n,r,a,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function j(e,t,n,r,i){return i||D(e,0,n,4),a.write(e,t,n,r,23,4),n+4}function L(e,t,n,r,i){return i||D(e,0,n,8),a.write(e,t,n,r,52,8),n+8}u.prototype.slice=function(e,t){var n,r=this.length;if(e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(a*=256);)r+=this[e+--t]*a;return r},u.prototype.readUInt8=function(e,t){return t||A(e,1,this.length),this[e]},u.prototype.readUInt16LE=function(e,t){return t||A(e,2,this.length),this[e]|this[e+1]<<8},u.prototype.readUInt16BE=function(e,t){return t||A(e,2,this.length),this[e]<<8|this[e+1]},u.prototype.readUInt32LE=function(e,t){return t||A(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},u.prototype.readUInt32BE=function(e,t){return t||A(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},u.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||A(e,t,this.length);for(var r=this[e],a=1,i=0;++i=(a*=128)&&(r-=Math.pow(2,8*t)),r},u.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||A(e,t,this.length);for(var r=t,a=1,i=this[e+--r];r>0&&(a*=256);)i+=this[e+--r]*a;return i>=(a*=128)&&(i-=Math.pow(2,8*t)),i},u.prototype.readInt8=function(e,t){return t||A(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},u.prototype.readInt16LE=function(e,t){t||A(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt16BE=function(e,t){t||A(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt32LE=function(e,t){return t||A(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},u.prototype.readInt32BE=function(e,t){return t||A(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},u.prototype.readFloatLE=function(e,t){return t||A(e,4,this.length),a.read(this,e,!0,23,4)},u.prototype.readFloatBE=function(e,t){return t||A(e,4,this.length),a.read(this,e,!1,23,4)},u.prototype.readDoubleLE=function(e,t){return t||A(e,8,this.length),a.read(this,e,!0,52,8)},u.prototype.readDoubleBE=function(e,t){return t||A(e,8,this.length),a.read(this,e,!1,52,8)},u.prototype.writeUIntLE=function(e,t,n,r){e=+e,t|=0,n|=0,r||T(this,e,t,n,Math.pow(2,8*n)-1,0);var a=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+a]=e/i&255;return t+n},u.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||T(this,e,t,1,255,0),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},u.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||T(this,e,t,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):M(this,e,t,!0),t+2},u.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||T(this,e,t,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):M(this,e,t,!1),t+2},u.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||T(this,e,t,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):R(this,e,t,!0),t+4},u.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||T(this,e,t,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},u.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var a=Math.pow(2,8*n-1);T(this,e,t,n,a-1,-a)}var i=0,o=1,s=0;for(this[t]=255&e;++i>0)-s&255;return t+n},u.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var a=Math.pow(2,8*n-1);T(this,e,t,n,a-1,-a)}var i=n-1,o=1,s=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/o>>0)-s&255;return t+n},u.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||T(this,e,t,1,127,-128),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},u.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||T(this,e,t,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):M(this,e,t,!0),t+2},u.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||T(this,e,t,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):M(this,e,t,!1),t+2},u.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||T(this,e,t,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):R(this,e,t,!0),t+4},u.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||T(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},u.prototype.writeFloatLE=function(e,t,n){return j(this,e,t,!0,n)},u.prototype.writeFloatBE=function(e,t,n){return j(this,e,t,!1,n)},u.prototype.writeDoubleLE=function(e,t,n){return L(this,e,t,!0,n)},u.prototype.writeDoubleBE=function(e,t,n){return L(this,e,t,!1,n)},u.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--a)e[a+t]=this[a+n];else if(i<1e3||!u.TYPED_ARRAY_SUPPORT)for(a=0;a>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&n<57344){if(!a){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(o+1===r){(t-=3)>-1&&i.push(239,191,189);continue}a=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),a=n;continue}n=65536+(a-55296<<10|n-56320)}else a&&(t-=3)>-1&&i.push(239,191,189);if(a=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function V(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(B,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function U(e,t,n,r){for(var a=0;a=t.length||a>=e.length);++a)t[a+n]=e[a];return a}}).call(this,n(26))},function(e,t,n){var r=n(51);e.exports=function(e){return Object(r(e))}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(61));t.default=function(e){return function(){var t=e.apply(this,arguments);return new r.default(function(e,n){return function a(i,o){try{var s=t[i](o),u=s.value}catch(e){return void n(e)}if(!s.done)return r.default.resolve(u).then(function(e){a("next",e)},function(e){a("throw",e)});e(u)}("next")})}}},function(e,t,n){e.exports=n(384)},function(e,t,n){var r=n(24),a=n(12),i=n(53),o=n(57),s=n(64),u=function(e,t,n){var l,c,f,p=e&u.F,h=e&u.G,d=e&u.S,m=e&u.P,g=e&u.B,y=e&u.W,v=h?a:a[t]||(a[t]={}),b=v.prototype,w=h?r:d?r[t]:(r[t]||{}).prototype;for(l in h&&(n=t),n)(c=!p&&w&&void 0!==w[l])&&s(v,l)||(f=c?w[l]:n[l],v[l]=h&&"function"!=typeof w[l]?n[l]:g&&c?i(f,r):y&&w[l]==f?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(f):m&&"function"==typeof f?i(Function.call,f):f,m&&((v.virtual||(v.virtual={}))[l]=f,e&u.R&&b&&!b[l]&&o(b,l,f)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,e.exports=u},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(370));t.default=function(){function e(e,t){for(var n=0;n"+a+""};e.exports=function(e,t){var n={};n[e]=t(s),r(r.P+r.F*a(function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}),"String",n)}},function(e,t,n){var r=n(7),a=n(30),i=n(35),o=n(74)("src"),s=Function.toString,u=(""+s).split("toString");n(43).inspectSource=function(e){return s.call(e)},(e.exports=function(e,t,n,s){var l="function"==typeof n;l&&(i(n,"name")||a(n,"name",t)),e[t]!==n&&(l&&(i(n,o)||a(n,o,e[t]?""+e[t]:u.join(String(t)))),e===r?e[t]=n:s?e[t]?e[t]=n:a(e,t,n):(delete e[t],a(e,t,n)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[o]||s.call(this)})},function(e,t,n){var r=n(13),a=n(75);e.exports=n(14)?function(e,t,n){return r.f(e,t,a(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t){function n(e,t){if(!e)throw new Error(t||"Assertion failed")}e.exports=n,n.equal=function(e,t,n){if(e!=t)throw new Error(n||"Assertion failed: "+e+" != "+t)}},function(e,t,n){var r=n(35),a=n(17),i=n(194)("IE_PROTO"),o=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=a(e),r(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?o:null}},function(e,t,n){var r=n(104),a=n(75),i=n(34),o=n(52),s=n(35),u=n(292),l=Object.getOwnPropertyDescriptor;t.f=n(14)?l:function(e,t){if(e=i(e),t=o(t,!0),u)try{return l(e,t)}catch(e){}if(s(e,t))return a(!r.f.call(e,t),e[t])}},function(e,t,n){var r=n(105),a=n(51);e.exports=function(e){return r(a(e))}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return t&&e.then(function(e){return t(void 0,e),e}).catch(function(e){return t(e),e}),e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){var r=n(48),a=n(256),i=n(168),o=Object.defineProperty;t.f=n(47)?Object.defineProperty:function(e,t,n){if(r(e),t=i(t,!0),r(n),a)try{return o(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){"use strict";var r=n(8);e.exports=function(e,t){return!!e&&r(function(){t?e.call(null,function(){},1):e.call(null)})}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var r=n(25);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,a){return e.call(t,n,r,a)}}return function(){return e.apply(t,arguments)}}},function(e,t){var n=e.exports={version:"2.6.1"};"number"==typeof __e&&(__e=n)},function(e,t,n){"use strict";t.__esModule=!0;var r=o(n(366)),a=o(n(364)),i="function"==typeof a.default&&"symbol"==typeof r.default?function(e){return typeof e}:function(e){return e&&"function"==typeof a.default&&e.constructor===a.default&&e!==a.default.prototype?"symbol":typeof e};function o(e){return e&&e.__esModule?e:{default:e}}t.default="function"==typeof a.default&&"symbol"===i(r.default)?function(e){return void 0===e?"undefined":i(e)}:function(e){return e&&"function"==typeof a.default&&e.constructor===a.default&&e!==a.default.prototype?"symbol":void 0===e?"undefined":i(e)}},function(e,t,n){"use strict";var r=n(31),a=n(5);function i(e,t){return 55296==(64512&e.charCodeAt(t))&&!(t<0||t+1>=e.length)&&56320==(64512&e.charCodeAt(t+1))}function o(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function s(e){return 1===e.length?"0"+e:e}function u(e){return 7===e.length?"0"+e:6===e.length?"00"+e:5===e.length?"000"+e:4===e.length?"0000"+e:3===e.length?"00000"+e:2===e.length?"000000"+e:1===e.length?"0000000"+e:e}t.inherits=a,t.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var n=[];if("string"==typeof e)if(t){if("hex"===t)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),a=0;a>6|192,n[r++]=63&o|128):i(e,a)?(o=65536+((1023&o)<<10)+(1023&e.charCodeAt(++a)),n[r++]=o>>18|240,n[r++]=o>>12&63|128,n[r++]=o>>6&63|128,n[r++]=63&o|128):(n[r++]=o>>12|224,n[r++]=o>>6&63|128,n[r++]=63&o|128)}else for(a=0;a>>0}return o},t.split32=function(e,t){for(var n=new Array(4*e.length),r=0,a=0;r>>24,n[a+1]=i>>>16&255,n[a+2]=i>>>8&255,n[a+3]=255&i):(n[a+3]=i>>>24,n[a+2]=i>>>16&255,n[a+1]=i>>>8&255,n[a]=255&i)}return n},t.rotr32=function(e,t){return e>>>t|e<<32-t},t.rotl32=function(e,t){return e<>>32-t},t.sum32=function(e,t){return e+t>>>0},t.sum32_3=function(e,t,n){return e+t+n>>>0},t.sum32_4=function(e,t,n,r){return e+t+n+r>>>0},t.sum32_5=function(e,t,n,r,a){return e+t+n+r+a>>>0},t.sum64=function(e,t,n,r){var a=e[t],i=r+e[t+1]>>>0,o=(i>>0,e[t+1]=i},t.sum64_hi=function(e,t,n,r){return(t+r>>>0>>0},t.sum64_lo=function(e,t,n,r){return t+r>>>0},t.sum64_4_hi=function(e,t,n,r,a,i,o,s){var u=0,l=t;return u+=(l=l+r>>>0)>>0)>>0)>>0},t.sum64_4_lo=function(e,t,n,r,a,i,o,s){return t+r+i+s>>>0},t.sum64_5_hi=function(e,t,n,r,a,i,o,s,u,l){var c=0,f=t;return c+=(f=f+r>>>0)>>0)>>0)>>0)>>0},t.sum64_5_lo=function(e,t,n,r,a,i,o,s,u,l){return t+r+i+s+l>>>0},t.rotr64_hi=function(e,t,n){return(t<<32-n|e>>>n)>>>0},t.rotr64_lo=function(e,t,n){return(e<<32-n|t>>>n)>>>0},t.shr64_hi=function(e,t,n){return e>>>n},t.shr64_lo=function(e,t,n){return(e<<32-n|t>>>n)>>>0}},function(e,t){var n,r,a=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(e){r=o}}();var u,l=[],c=!1,f=-1;function p(){c&&u&&(c=!1,u.length?l=u.concat(l):f=-1,l.length&&h())}function h(){if(!c){var e=s(p);c=!0;for(var t=l.length;t;){for(u=l,l=[];++f1)for(var n=1;nx;x++)if((p||x in v)&&(g=b(m=v[x],x,y),e))if(n)_[x]=g;else if(g)switch(e){case 3:return!0;case 5:return m;case 6:return x;case 2:_.push(m)}else if(c)return!1;return f?-1:l||c?c:_}}},function(e,t,n){var r=n(2),a=n(43),i=n(8);e.exports=function(e,t){var n=(a.Object||{})[e]||Object[e],o={};o[e]=t(n),r(r.S+r.F*i(function(){n(1)}),"Object",o)}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var r=n(9);e.exports=function(e,t){if(!r(e))return e;var n,a;if(t&&"function"==typeof(n=e.toString)&&!r(a=n.call(e)))return a;if("function"==typeof(n=e.valueOf)&&!r(a=n.call(e)))return a;if(!t&&"function"==typeof(n=e.toString)&&!r(a=n.call(e)))return a;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){var r=n(101);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,a){return e.call(t,n,r,a)}}return function(){return e.apply(t,arguments)}}},function(e,t,n){var r=n(269),a=n(2),i=n(131)("metadata"),o=i.store||(i.store=new(n(266))),s=function(e,t,n){var a=o.get(e);if(!a){if(!n)return;o.set(e,a=new r)}var i=a.get(t);if(!i){if(!n)return;a.set(t,i=new r)}return i};e.exports={store:o,map:s,has:function(e,t,n){var r=s(t,n,!1);return void 0!==r&&r.has(e)},get:function(e,t,n){var r=s(t,n,!1);return void 0===r?void 0:r.get(e)},set:function(e,t,n,r){s(n,r,!0).set(e,t)},keys:function(e,t){var n=s(e,t,!1),r=[];return n&&n.forEach(function(e,t){r.push(t)}),r},key:function(e){return void 0===e||"symbol"==typeof e?e:String(e)},exp:function(e){a(a.S,"Reflect",e)}}},function(e,t,n){"use strict";if(n(14)){var r=n(59),a=n(7),i=n(8),o=n(2),s=n(120),u=n(170),l=n(42),c=n(68),f=n(75),p=n(30),h=n(66),d=n(40),m=n(11),g=n(264),y=n(72),v=n(52),b=n(35),w=n(85),x=n(9),_=n(17),E=n(181),N=n(71),S=n(32),O=n(70).f,k=n(179),I=n(74),C=n(10),P=n(49),A=n(130),T=n(102),M=n(176),R=n(83),D=n(125),j=n(69),L=n(177),B=n(275),z=n(13),F=n(33),V=z.f,U=F.f,W=a.RangeError,q=a.TypeError,$=a.Uint8Array,G=Array.prototype,H=u.ArrayBuffer,K=u.DataView,X=P(0),Y=P(2),J=P(3),Z=P(4),Q=P(5),ee=P(6),te=A(!0),ne=A(!1),re=M.values,ae=M.keys,ie=M.entries,oe=G.lastIndexOf,se=G.reduce,ue=G.reduceRight,le=G.join,ce=G.sort,fe=G.slice,pe=G.toString,he=G.toLocaleString,de=C("iterator"),me=C("toStringTag"),ge=I("typed_constructor"),ye=I("def_constructor"),ve=s.CONSTR,be=s.TYPED,we=s.VIEW,xe=P(1,function(e,t){return Oe(T(e,e[ye]),t)}),_e=i(function(){return 1===new $(new Uint16Array([1]).buffer)[0]}),Ee=!!$&&!!$.prototype.set&&i(function(){new $(1).set({})}),Ne=function(e,t){var n=d(e);if(n<0||n%t)throw W("Wrong offset!");return n},Se=function(e){if(x(e)&&be in e)return e;throw q(e+" is not a typed array!")},Oe=function(e,t){if(!(x(e)&&ge in e))throw q("It is not a typed array constructor!");return new e(t)},ke=function(e,t){return Ie(T(e,e[ye]),t)},Ie=function(e,t){for(var n=0,r=t.length,a=Oe(e,r);r>n;)a[n]=t[n++];return a},Ce=function(e,t,n){V(e,t,{get:function(){return this._d[n]}})},Pe=function(e){var t,n,r,a,i,o,s=_(e),u=arguments.length,c=u>1?arguments[1]:void 0,f=void 0!==c,p=k(s);if(void 0!=p&&!E(p)){for(o=p.call(s),r=[],t=0;!(i=o.next()).done;t++)r.push(i.value);s=r}for(f&&u>2&&(c=l(c,arguments[2],2)),t=0,n=m(s.length),a=Oe(this,n);n>t;t++)a[t]=f?c(s[t],t):s[t];return a},Ae=function(){for(var e=0,t=arguments.length,n=Oe(this,t);t>e;)n[e]=arguments[e++];return n},Te=!!$&&i(function(){he.call(new $(1))}),Me=function(){return he.apply(Te?fe.call(Se(this)):Se(this),arguments)},Re={copyWithin:function(e,t){return B.call(Se(this),e,t,arguments.length>2?arguments[2]:void 0)},every:function(e){return Z(Se(this),e,arguments.length>1?arguments[1]:void 0)},fill:function(e){return L.apply(Se(this),arguments)},filter:function(e){return ke(this,Y(Se(this),e,arguments.length>1?arguments[1]:void 0))},find:function(e){return Q(Se(this),e,arguments.length>1?arguments[1]:void 0)},findIndex:function(e){return ee(Se(this),e,arguments.length>1?arguments[1]:void 0)},forEach:function(e){X(Se(this),e,arguments.length>1?arguments[1]:void 0)},indexOf:function(e){return ne(Se(this),e,arguments.length>1?arguments[1]:void 0)},includes:function(e){return te(Se(this),e,arguments.length>1?arguments[1]:void 0)},join:function(e){return le.apply(Se(this),arguments)},lastIndexOf:function(e){return oe.apply(Se(this),arguments)},map:function(e){return xe(Se(this),e,arguments.length>1?arguments[1]:void 0)},reduce:function(e){return se.apply(Se(this),arguments)},reduceRight:function(e){return ue.apply(Se(this),arguments)},reverse:function(){for(var e,t=Se(this).length,n=Math.floor(t/2),r=0;r1?arguments[1]:void 0)},sort:function(e){return ce.call(Se(this),e)},subarray:function(e,t){var n=Se(this),r=n.length,a=y(e,r);return new(T(n,n[ye]))(n.buffer,n.byteOffset+a*n.BYTES_PER_ELEMENT,m((void 0===t?r:y(t,r))-a))}},De=function(e,t){return ke(this,fe.call(Se(this),e,t))},je=function(e){Se(this);var t=Ne(arguments[1],1),n=this.length,r=_(e),a=m(r.length),i=0;if(a+t>n)throw W("Wrong length!");for(;i255?255:255&r),a.v[h](n*t+a.o,r,_e)}(this,n,e)},enumerable:!0})};b?(d=n(function(e,n,r,a){c(e,d,l,"_d");var i,o,s,u,f=0,h=0;if(x(n)){if(!(n instanceof H||"ArrayBuffer"==(u=w(n))||"SharedArrayBuffer"==u))return be in n?Ie(d,n):Pe.call(d,n);i=n,h=Ne(r,t);var y=n.byteLength;if(void 0===a){if(y%t)throw W("Wrong length!");if((o=y-h)<0)throw W("Wrong length!")}else if((o=m(a)*t)+h>y)throw W("Wrong length!");s=o/t}else s=g(n),i=new H(o=s*t);for(p(e,"_d",{b:i,o:h,l:o,e:s,v:new K(i)});fb;b++)if((g=t?v(o(d=e[b])[0],d[1]):v(e[b]))===l||g===c)return g}else for(m=y.call(e);!(d=m.next()).done;)if((g=a(m,v,d.value,t))===l||g===c)return g}).BREAK=l,t.RETURN=c},function(e,t){e.exports=function(e,t,n,r){if(!(e instanceof t)||void 0!==r&&r in e)throw TypeError(n+": incorrect invocation!");return e}},function(e,t,n){"use strict";var r=n(7),a=n(13),i=n(14),o=n(10)("species");e.exports=function(e){var t=r[e];i&&t&&!t[o]&&a.f(t,o,{configurable:!0,get:function(){return this}})}},function(e,t,n){var r=n(290),a=n(193).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,a)}},function(e,t,n){var r=n(4),a=n(289),i=n(193),o=n(194)("IE_PROTO"),s=function(){},u=function(){var e,t=n(196)("iframe"),r=i.length;for(t.style.display="none",n(192).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("

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 z 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 literal 0 HcmV?d00001 diff --git a/assets/ml5-webpack-build.png b/assets/ml5-webpack-build.png new file mode 100644 index 0000000000000000000000000000000000000000..a07e51a7fe1978a6ed6e4ddb91f48d43e0e36aab GIT binary patch literal 392523 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⪙|M8}?#N8O((%lb!*3FM{?~H+_ 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 z z%XwaKf!54kD3bH;f=|1S*%17z-Y64PC_e|Dl5xj{8v}r*9}qKDejG`1wp*%t z$zlk9>xF|*Di4G`yX#24wGEDF^5k(XXglh%g;14$#?dQ(WQE;%<{oMVBa@Js;>4?50}nFtL1|ciQfEI=ku^^^rJNsX85%Aak%JNQIWl7i-~AISzN) zYWjzWEv(C{o3rDG6HOsck{@4>j|oSX?48}rjG=)c#TbJYVe>|EZ1Z(&d+?|DOHn; zfyZaxYx{3YcsmDNFnPd2Q=^nc=6-+>Y3?Kg^@GEuuD~jw z-En!=u#4H9{9gK~{Smf7`_FKNPlG#gXXUej@KS8q@A z`T8DCpUJc*+k=Q+N+(v~HdG!ZM-7%gYyzdr6pI!YHsw}U`4%S zD_OsdKeeb9D;&Z{Q7tz}BSiYmgfoH^C*U(38db8Fnf|1UbkKY=N@+>8`Zb3TU|gP1 zoUxco*zbbB34}^vf(mP@FV0cdyHHX&8W~u69!dI|wNHcX>J6YSAHF}MZ33=>4oA_4 z91=~wN8h^d+~60w)!wCdG_*gkyH~lwr8_IV5C{mTW`LQ`x9Pl%_UIYMt6T=6e|2%4?e1BiHQAPiD=Q5!3D7(AzFAQ%cMX2CX29z{&=dhH;CCCp~yJMs^ zKQ|wEKDRF%1}1F5o2EXu3c1*;rhDYVv^R`ZBsHk;iwp;ENh6O=bTc#!wT?k@k+TPjK$dY0e0_IcVH&=bcMS14N!N|pU8}~ z>YaQ8Iz`FzuwWd{AJZA8`d}e8+ERf8B!b*bL;bjVy)vN`J|A_G` zQ>nWFFG`DjP@bd^K6Q)pBx}lE^!v$@X9)WV8#aL=z(q<7HuMA2aGCCWGgG22Lm?4P zHDjqrM^1_V>GgIPdDg)hUjMWYJLzon22eI6o(m-4xdsT0?&j|q(0S?H-(X2V73+ny z6N~5Z`EA{xueR}n*~h#3?6c`MUU~<@g9A!t%qeMKW#UR**~l-^vg(>Pr4f=uWEuy! zfNYJ03%HeqKXPs?}@-ZuBpl$4-67m!d!NGkLyVcDsfw<6+w2~-$g{QvXuOJ z#b5UigUDNJfh0H}@`<+LMnT2dQZf&`XWzc9wL+a!2|Q>qk^J4bx*K zV#U%Mym;(%y3ir0Lae0-&H5m>p>SunO&)ETz*4b_ud{!{vxAIekEa%w znvMt_**lj!yh?K;92BvStHg|c8yA++eLQ3}CDYo@>cF}#kmY;s`01@`W58_Y`OhE3 zEF?$R9af4?%q!G7pUNTUrVKa~t%nW(e>*X7t3Xo{4vohG-bayfLT`)Pyafv3`F))y zvkM0<9&QrDIHgnUG6&TtrDS9?<%nJ-G|jE*j4IBCNMpqs-UR*7f%dGS!IE<;XqhR@ zX=?d!9>U+%5{v4=5g!@gIu9=m=50Y3wm-MsmyAMhVz;A=ybd4Dw%Y8BXu!pb8P1nl zCz}Ta$PZbpBljiJj|=Fv>eE^X_opfO6Y!dHF($$dH!#YsG7`~`)P3plJLo2N_ub@* zB)W=V*4U^(z{T0pPq`hB=B`y2yvUg{_T?Tz(8J=+!+BVpjc7h&-r~Zi$o>KU{dw>m zSTtZm{DeJ%oBJz;5Z?|EV9^_FDqS{sJ6$d~F-f(5@?xBNy4s$JR6mkVxl%zOI@}SL zF|&CuyC6IZkzr4Junp#-M{&`y?`qHC!+|v z;!@KVM;1*E-$+jzw2{G3Ly!d+r4Xx1EV%L1d5)urP2agq;JkF>hNZ0N^VeY%U?=N2 z)#*d-pjAC3_0^@Y8^(F(7<#bSzQ;TvqNS5`N^q_Jt1pi3)y1X7$<0^G{S~Gn?!~!i z`#=QCPlO0X^lpP@!_6$5SH9~hK!(X{WJcHaTa^13i&eaDTKkEohYf0Dva^C!!`8Yk z{oDA5H^Or)NzpE{*q{Id`Rt10n=oMeSYqn#<=X{W*}(-!Dz#39{%+V>m0e_fP6 zkGNj~BER|Vav@*MG`i^PUl85s-E-0N>Sy}(^Vj+;gLdKEpG^`y8`0i=eR_r3yZ);4 zs<$ypC%VjRILhK-uKJ_;tWFN$WAdkBf}+MU>kx+CriT1#eJ95(1jxW1p1$RUvHP07VAb?5DFwb zAH{1oP3gX-2R#a=x~ee*0QtUfb(lA9zFCvc1BPl>;@Ir4lnP5fqT{5_T}~%vDce)! zO%NW$j=FlElU#~;=}~$p+-0P46T2&ZMyNy%thO|Dla?&yYLIq-{xI5*jB$O&5eFRV z#A_CIi|=oHXik0v-p3~HS#UPCd$F&8jWk}p`t!zvz1sn08b0_7$Bs&C=sQu6#1C!$ z;JBxW+*V_D!@y>wMZC~gdqfC0-S<13B?glffN}DcA+lTu3wht}l}zS~dz(|=0ZG2s zpkZj+@}co9?^ji$Li3`HC4|o#Uf?>48ks99AL1=D)wo{=T_f7UmBjhI1tWS6YtLSA zwc@^p?}qE$q^~tx8Z!!*PZeJ&dt&GxC(&jcngTVM@q}2-_8Qbl>Q)JLM~5cptY=Jy zh*3qo^YZMaE=;7)8m-frLn)mNbZkBQl6Rrg2leB%JKX7LnyY1*#4{J)nd+cW&gdt! z+;vDy{zT`IypL6W=Iq^QaEm39bTl}NK6QM`yCWyiyIQUeba5QoLn4D~j)kZkjhBqw zXI79W*e6v^Qy$G-+26Y8n{)Mk^Uu+a^NSawO+@#1@1|Oj|6fcD{-RC}p7yPvNju*V zl#;;d>3e!@FpNmE0g=>pxMlX-i0K}92zNs0R~I-I8MQ#t0jI)A>kvVg9vUq`89e11 zXb)pk6d$zFy`(1ulohYwt$pFHZ#RfPnKP&^gmAec?ywYQ6uQ+}s4xHwM#FC)Vj=D6 zg5enQVi2rUS!i;!!Z+SHMp@b-IVE`mAZZ7)72_)01BUu%Mn6!otCOub-HuMt=|Oid}=DR};+*_kskSLzR(q@43-_IkaXlF+6CG9z2v>-hPp=QtWj^u*c5cSX4qY{l*J4dw2HM@~-y^p403ZKy(M~ z7H}uRsd8@}hhV$;NI4#&lnURlu+dP_TRAvy!F(At&4N``Z{NQ6Q+FguWfdjGvz-?^ zUKQ2E0o8|Nm6g-!^)=mTrX7csAHTr6PAxvF=9z}K{-U^`xIvJ|7#SId`=Ar}vB4~p zBCBu$3XoMi5(OB3A%pfW-NGkqlxO$K0_&dNs$3>Rf=BMd!2g|0>0&z;8xOoTZSGwc zh=o4KO74XtB2*#W&&dXY3=WK5@q*qA(uTJ)S4j<0J&lfh(J}oL2ZlBQF&`XAKzMV% zP1+onCMdeV=9*QQA&GpJM=1kqC1sDiWIo3i8bKzpxVU$ug3gG;u9LrHTosx7= zHZuxv7@fC)2o<)dh$sShEmg<)koqO@Tlg8;f2t)*(FYi*T0QiAH^&YH)KG|b3Jy{e z%^37KRvOXLBzF|OpS@j6%l{hU10;=_66M_Asfs^`XT}+t47h-?R~k-K70Kl&kJ}3t zZEv*UAKDkW@lxnVwWOGd!Kf^@iXIf#X(siSlQsJ09c4l7akC=dlF{e*rsCq|kE-8U zoL}m`8DFAS@R1J+hL4KByQZNwWoZ$?O#q@eR8Oaq!mMJdLo8y5j4D(zt6tL9O~C`g z_aAl7zZpwICb!}JLUVo*BVkNO)A;qc+z2LoCV{y{CRyI|$Z}yl2wsn;QPKZog>N2J zF)gz__I8pl$Sz-9X~thG?z;)17WT-Lpp+)PzB+SdZ1Y@=u(1_d0PUYRguuR0LeEVW zr7G8!FfX*o1yM_>6_UVAI&d~Tq?{ZFgzo8zHg85Sap|i2jM=F%9i{YMtWF_9$c&-9 z4tK0Y)=LR^aaYvaH9;4z{(F3a2&+oT2h|IrT(+V)*{S`^+_GfIn6xP+d2{oQXr}ivV ztRF>>t0+HbHM0Zyxf|D3EVW*AgHz?raX}fthA9`mhG`c*^M}*nrorzaN~GZ@CaYzv z=G&rx8>66uAwmO~C&VqSKFEmFZG~PpjFqTq{!*;Rg0a2k1Lrpy9wYg&*@{x5%qHib zumRAamXtb5igb`1O!#keTZ#dQwjW~9j712Ua`=`1&u}xXDgy6o4{%cyFFA-XJ5jgP=ZYyx2(psO)GDB zS3>jF_f=5v;NxBL0^+qf$5?o9xS?$QB!%+kU|^h6#`bLq(0@_ z2mhLwT^{N43Io5iX)an6AURcR>6IFOgGaV%ikf)A5Zcb=_QNsOzNW~Hh6*20A^m9!`-tGa zqvALEkA&Os`0#l3^wSMt;_#X-YOl-2i)Z9!8uGI*w|_0zGgYA3Q4fSQWvONSbP~$^ zyXDOF%c!*C-{COyaDL{@UFj`W3;(P?JArAjHRISRnj+=SwRY?n*O_4kh@Mfgw_+2saL|iU2V7`3BfjV!YARH|KWw;<{jPIGbLJnlGX>bMKed z3RYXnNGYu<_vLx|vBK;}yPNV{{G|t8MPmFj_{GP^vr{o;t}M7R?s?rv7czZxF4~nd z$4CG5g(BGE4iVY!uYhH30ZIy*mXq1NJRhZ#DP>5yAGN<_>=e!Z14;E>ET%GN>o~44 zb;in@f!#wiZ6?0LX#$7q7D+O{CIyMupn^6UF?|z2EIV|dP8(dk*Vcg9V&c|Mj>oYb zEN#9od0La=i3h?dFIk@4Gu5k!m|#%xQ$O^Et(;70Eq&4NlPhO_6@>X-@}LcZa&|!s zBk+)kKn2PO2s_uKXUZQH`|iwNHBoRhof<=b4YaTA+S$@tW^!vRBaQs)s#<9%#zz;B z>&b9HWJtAtS`mN3KES*`J@voUk#aH^AvEm#Ta~3(KQ>6eUuZefmN>p)=s2$92s+{w z+7DRm;PZmACd!{3s{m$ei3xH00U{0K?9{sFl|HjyPukO`#oU-Pr_n#Ui!iXsEUKT$ zTUYuoy>|?YpAvmtL8MiF#i;OfN*kP~oKi!}-j{l73C|5r2AP?cjUHbN(>fC3+_b!H za>Bi!g?aZrYZc#o=SL*Q{6Y1I1B!1Ho}#a;?w@TM&i>h}LzY63`(vDaYHZV*vq(!k zyXvlx(DwBsu>tL4Viq8AQsLHAO2z-j!k71CvIA(vY)_H_hKMHoTe*9Ck0ObBf=R!K~{6(&Lf zTGnUnKdPUM!jajjjW2s#h_^UoI8O2FG{L`5o>;17D0<`x?mj7YQ*t%~8F?Oh_LuR~ zH4ust#%+O`Y0LH-2IxY+mMz03uZ*u>mUTo5+ITUzMoqSpZ`giP%`CtZhvhsBYuGD*r>#? zA5Oo{s4y$AA=wjYR-{Nhyv zyf(lSjVChuRdBG}>(E}x6-W)*C#g(XAl2Od4OO1Wa-Cv=)mZU>y|SQZM!>fwIOWju zWx&K&>1LpKIWGhEG~k<6mAgU>E2C58jqb=t)w@z^D1r<7H%&XZ{(=tbti>jtXmKTA z$MN{pRYxJZk9(i!rNHdV6CS>#uJe!_uw*4+O7EgC`@9{ZD7i@g%CYYvj7eUv&0>c5 z(@&?c&7ApnaH3X}bk%gkw>wJRFX>YIkD;kxiPJFU30c#t{g0SuEDa|kE4feGE8C6s z$5h(Lp-H-3x(y{*KJkObT8fXwgSs~y4%xB`W`jwv%$r3J_gf08wzD#&0}kydFD41k z*rrS4Qk2&(YE}SL#>;KJ$Y#Bghvr>Sp<=PkxHd0w2%Z-6G%<+bNXVhHbABj2in8rf zld1<;N~dw8K;P!o!TF5P_d&kj1Lr+k|1SdPDD?LYh3W4bid(VO=j{I;s?x*ri$C|T zutP{-_pBu2#ItH&{CVucd5w{SNi%DPE}XEnanKoQaK3WFl&mx;KKv%;HLOxIXygg8 zpf46K#eEa&!RDrQGWL`}+!<_AaOUU z9@*j?oWn(;o6Y-Eab;LC;n%@^LCd+SLV#EM1=%TX*)xsudXSjPJUj`Pg9-uXQXNcI zx4$i({p944UtM6Jp2~l;o#|dI-Pn+*hQ_A6jL8q`Az-G=Gi5vqD{7xdZJX~ogj81N zr&UCSEqcy*FDe>mN`5P=&USnyNhpxHLXCD60`I7O6oL+KtJlrxh4{YuI$A;qV(TI9 zfJFD(#HO|D6!v=dBf1$GMZtk=felYnNyala;$ZKnrZJtH_9!(<6g;+#lJ@B_h&W^0 zx>yrGs>rpomit(FDqMoF3tuZ-%yFz##@34}N*01lS`H_;o_G#a#=gblFLLXXPiTs( z9^b)zzmu4R%$_)HrIMYHt&i%z`o&V~oCcbiH(c2?O z_8ay~$Qfrv((}3Qp>*g!KUm0_FpfF6Ez+`zd-0WZ^DodDJWM{d%s&kaEU>6%S za*hI{N?w(P^)kuJ zP}-b))Y)ZEtw*@U_#3;PF?qjbD|6<2tfad#qxrfPi%q6^PuT9i0QMRZoiI{p<{P|Z zs7o$U=RG-=mo^rGOb)N`JlaPG>=>)4WLkS%sW!f(wSM(q5utYQpPz)kMlA5x z=mJGLes27GxeS+Mn%LwGfgXjn%32A9L^8kagF7uA#1%r%ZO%t;mrVqUj7Thtzk=fX7p1ECgBWha)9scNaqR#trn3-o#?gA5Pmo}uG5~R384nyY`*cp=L{(dGHD|+{;%j#|8`xerN$g5( z^vf|tt}8QWv?T*cy4XA$~?HJHSfWS`b;Rm6KG%#f($&?apnxm?KtR ztiC*0gYdA^8{fUkJOw$yNL2~b(NkNy;Ugn?i}l3{(QTD=&1Bia0k_%qekN9jdku*? zv_mYw7?^Fdbif|JzE=M{{1%CSQ26KZ*OEisBh~gc8bX8T+ERukD1FtEO062vSRHQN zQt|j0RP>i5q>H4xNnC?sD~*cagUyS@wwdp=gtFA!&9>TD6lLu4@>oaL+&iUicGpNF}SKw4vkUM%}?m z-W1)Ev_a#Wl57*nr9d-=rApb;Y0Ju=B`d2DsHFRT@!Ce;TnS#+Du0O1RmTtOljpD6 z#`;nq%v8s?7XL8xb%qPEW2z}Y(Mr^B7jIlyr>9j-j(8r9JT0oB(lO(U@3r^J&O4GJ z)9-zz{-Gea{=Zvj{YA^M7YtB{Nzx-hrd;7)vyMq-gktu&pets=)-8+CA#W)#!Dc&P z-J~E5Iv~TWE?)4w^LdP3Ig059zb6m_Xns|b)xA%tKgBR>HPhmCseq0mMf1p z_r|)*57QcS^s&JCb~2s!FubTw`ALeB!;3B1+tYZIQm+&3^p=0!(y2YT?~o(@v-!$D zg7FXR{sD{^A^8K0zn;gjPB8-17mkU4{NBPWvVxtuR>MOjgoE=37r&68<>hq!!M#Q1 zeOG}YbaIuHdY$sLN@VJE7FGJGU-^YIHkY)*G08OPHM!0O$^Lef-@1xMAHLh8Hu-3Y zhFL44L9)AN4v+2dgjR0w2T@?@CnIoKxe?h7-UpMiQ}%dG(u^moUvmsT9B04yaI~)~ zC)+?`di&8LI!~7@j0|>nyh`&yZSAJ8Ay9=Yv|1wYTHoG4toCs0hZS?)w zM1b>-!tgKoBHZUcbEAztepSqsS4qtK4j5 z{ztYvr0L2x&&>0Il@cF&NWLq&(=Zx@1i2w4Nms(&s6A1|tiiIfZ2Zw4-sktp3gv*Y zG&l|8Ojw3(pFewF=`Rd^+c|m4=_hbrZU7+NMnh@ z^}W#4=Ht>K8tXS|L1;$jve)zjYCWF)gAF&x4BM>tH-IivUAH`Q0zs%Tg z{#gC6=G<~w(Y&wsRJEDG&3v{f*UnDA5aSMm|8|?)eBm}<$>DsPjEfS$H^CZwV0}n1 zUH)~>juYoLUH&P43 z71cue)iXqr78zH%&DSQH8LxjTephlA2;$KrRnZ6wXI(v|xMbWbXan?3<=HAq^Rj94 z2aa}P>34qRiMJy_?S3&TCLx}J+tn8h7?7Z`K8#ZuE*hLl_aTJ~2&$_tLq#WC9(SwZ zP*4bwzH_?8z`C=h-23+S;dM5p-rw8caUMD?QLKU-E0(z+H|Fv{s$D`1%UMz_pZZVc z$dJF2@%vA1wW~%wUtC}$q(Yp}6lhkQ>gSJuEQ3+07Gfl!f3Ffa@$v(%Nqemh8z3|1u`GLxLt=)WS*5= zpP~;>Z6xAPVX_PBW34MV$BHK0UbUHLNJ6k3rULf52Z6pbRNFl>*XQ_oWA+1|g(p1A z+@9%9wXe=Rv zvO)gRlAn~C!AuZqISjU?5!)`ZdICKO0oAugXZzLp(==b#oASM*^xvw6wpu7(t9zi1m-cKKm(P#WxncR*-N>)3n}O^NeZ6ocAwNCBcy zUGaRq7Hb}*h`G&^#ch&Te_xaGsr+SCXZ-Hg!wMYSQG%?;74PcX$|7P^9#wJY`sTi# zn22~nRDJ<^ZjnIHn03Wb4=iELtVVQWz_3U)1*05RC2NQYpJ41yijo96@)QQ$lDYHk z^I#-jXUo{=5#X@uHeXf=ae=!2i-NxqXiqJC6mHTRw-J6dFvEcc#BmpO(ftP)UdbSW zTS-APlpIt3Lq&EDc}Fp_5*64Z4z+-pt_ple+NRld93+lVQ)J^6%~WL^u7W7NmTK?5=r7leC8d?kRZc z)xT5l1on1n^`7O2@C`D88FJN#=Xh#DErq<;1(B9x+T#!ciFR9H?qoF(B<>}?+#K8^ z+Qe-|BdE&mXD*${!$s8}jfD7GRE(Ke=VL4*_UClvJ5(0x95yX>`*3w865?->)&g4} zWDV%mxbdS#yj~=o-#&zFUb0*sOwkbyePLN?Rn-3_#5~(JiR{~PiP)Dk&mlZC+z{li z`M`T`lAKf&e_aKqW?g|W5&swA3!%reaqkbR>5#w-;Dv-zPu#1e_G}+2==aU^I2;PC z7M`#ZxOYTtj>Ef*rZw%tsn2Bk7A4lb*6&`5`BHdIh3(dPwJafaM)p)kxE3xCSG4Is zSXNbZnlo>oa(KGEAEwZEs{b^&u-(@s_YVxbE`6nfGp;Y;Z6;aZ{Du4veD}dh3MO&g>KKyk>UrQo78x=43!EJIW1fXAcZmymBW98%42F_0!bq++x zNg8vW*Wo*Ma;abF@`X|=Y8*Yo?Q~b>*cE{9aPgwl4BC&I5-S~4P=OQq|4PAk=#Dn_ z1pMOQeL;ymY*dbeup4W69l%;&(T>Lzu>95}ac7jGG6l5pR_6#+h8pVL8kYPoh>17C z^LwAEcmJ8s6ny0IH{BPnm5cQ}84lJ`6y{)t_9jy0dlJ3(IFDL(D{f{KIy5W<=JkF4XM~j*Un+(}yZF|i9)aqY(yqNdSe>In=Z<~F3L~ZZQ<_KtRR!9p(Fl8Qk zc30%5o?dFzCvPX-2Y>h=S}>#i zi}NC$lD<_I=EnKeXO;7`;n+_);Gu+60KhC(FTLnj3oGYelE(hYx~<|LwN0t}CNj>* z3K~b$mSAJ8i&6?U;rYC{!8DtN%WNDF%ZNyTRPDY_vR~@Tt?}^M!UK--J2AJ(hZHKM z4NY`ZWA7Pz@R&w$UQl2!F|jhfR2FA+`9wnJl_-nz+J^+`L|Kw0JzbXTT??`-9ttIO zZZ1mZr#G1+Qi6Vua6j+d_09LqPuJP)FU*^pTJ44R_a)nXowG9DV>_Pbl2}ZlC`|Bk zYkm5HSj~96c}Wg#k1{^}0&(X$X0I2v&A`jL1L(&x^6;wLzIQb8_DS&#lTufaS2 zK7!u9SxUTzWdI`ebdV)#df0{(pcz9oBewz%x_)MXwi~Nt*11e#Gx-o8PV(gMU~ z_Z!YFD0a!QW)&(}MjxKMy65T3(83qBa2cu;B)Bb<9m{o$VT2I>`g}!2n%ibFi~|u{h6qwPZciRaY=>%`NXTiPYGz1%$@Ffg5v^CQbZ#wpJGn9 zI7s7b+`LsCohXHzYsj&mK^l44&xmFn3P;1lZPZWN%TF?u>3Jbw>E)4Qc&v5cKgU{! zFh0UZ_^02=lH@*O$tfEivDBVWn!A!<#3>|b*(RRPDJk?J8Bh34_N$C}&Vn67!7K%Z zs}Q>eu?*AR<+ASykl9&Ofp13NW4c2*QyV{^l!_P1yx$F)KnOxw zQ+GbUMamnOY0#RAIEJ2VY0Wc(oV7^GZRYVOXXA;^`FqNkc(VSA5RF`-VJ5$2GFb z;#7#yY{6jTk&||LK#A18;S8WKx4Y6*T0wZk^UQaL{3b=F-ZTHA+5EhER!S>PI-dIjAieZ*lm*d)X4_Hi6G;!-L{p2!n6a$o;h&hO6zygzJF0Zc^? zzxohieH$iZHWA6Tu&8qAp~Of&^+^u^!>IL=y| zdC|X6)nq!8vFI-O%Q6OU8JhM*YlP!6HJqdu=W;1Ap-r{)V%V!?#be0rA! zl6A1Pz*!7BAx;y5L+=j?f>vd}fiVR!dwj25+Z#pZ`Fc2_sOqN(B`EsdOU~;fO@iq+ zhejK&wg&%}tWmA|hvWX~o)mE+z{BAm5~4Dd^K$_lgv%9-WjZa?O;rL+8A8hmj_Uu2 zBHMy+0(Y4QPH+7(S;4&{#+;T`46E>X1yy>!9_Pz-N~r0fQ|l2ecjj)iWB*f#Zd6lL zSUa!pBD5U%N||0EuftylJe)VFMcz}g&i?)sj(@*jD>)-N-bExz<3xf&hi`_3L8#`an5u2Oo{H?dL$saggs z6GsS90|dG%&=Zj0~Nl!H!3(PQ5DlT7X%}iPv%akpd zPAO$Z+HPY`*P(-P-6C{9HfIXbXn2O2ZPJRvD<_Kxq#;twyd`*0=irk31@D zLMRwGerKYORmj|8LHmrA!i;%VeAMNF3`BAlL?~(&@|9qIckRMcFqTq_whm zurnWPgMCla|4C%Y;i81O#T>b$Vl7s74@uf}!ns}F9m@ zzy5GOKjbb?A-ItrWZX7*0lGOD%Qgpct>b?uO8;jQZ47B0NLH6pHrn{ zzef3oD`6dT9|ZrT`nQjUcH>KW9v*^Uk-cBJdZ6En`6sXNLMmC<oG^Mo? z<``GDl6JZ2*A&`j$&Tdyi~!zbBmb- zRk$f1Py-tIi5>9pUME$)>ruQRW%43>+%xvPUue}Tn(*Td0w8?zOUnPl-djdhxwd=X z3eqhdf;7_IIcaH??#>C)4I(vZk&a1+2na~G(%oH?k`7_g`Aodmy`O!r<=*$&&;Ig$ zct0=(Fa`s-&ht9@cl;{>#2=2whi5LkIkL2f-_%t;{jC1wJ%}olBgc`i#C1b%elW=G zfGwPWvD*eMAwEE^A|X!3^yEE-Vm}@sg;La$;JVJ`2N|Nw8UoMy>&EHzPmmshipzKb&IzsBC#8?G5fEloPAlJ@F?e*4?xf4U#z%9|IBL z4Hwj2^?uJ8DK*E&ky(PHGs9yubTEB%`>hW|0&r$ej74xUFI+R~^GjDmXj72M+S~tu zBk_#QHW1=5wvbwGmvaX9h=tS?(Gv)IaxoN32?(rLg3 zXr&;aeTdqnr>S-P@$;sC&g(r)N4wLpAfr7~+Fl|-RkNi;LGzO)T9#DoLf?l#mFq#- zBz`IA%0&^$zBHhe@`%v=93K}MQdiubS`URBSUnKzlM$~3e zOu1*iNy3doU!KAEx&R&RrlEx3>kT8rBU9O#)(We3BSA>pTzftijGG4!5t>GHI9ACq zLus7eFg>zFE#*f^@>XNVEmRgj$pm1FxZ0d%eg^ZH>S0ecaZkl1A$qGQJcw+(SDxJ4pp>jt)Wk>ldm%@*giu@jq*-Msnhy?GGN zZ(?L2m{~0KGM43?UsZfYD(ZBIqs~Wy>#+)|Y*ISA#`UKo5b z%^Q&$9qyH_-M1pOBQX&#XMBVam0mW;Rd7M}WVQ)<0ZLy!U3+`+G_#*HB#BzV$u0*G zxgu}`m(Xgy{kdQEA-xVw+Pg|Bsn^v?*L>R5{7}@#=a3N#fS#mcs?D5=;Wc9R znr*^<>-fnK7NF#INrU0_7i_XQHXo$eVrGD*GA0p4p&^Z%h5q-WbG}um6dKjSFHiSO z3}5X(d$|Xvr$_ye9>KHSVRio|hpfMU9k;Xhcalg970}Us`;a|2xCXv3IhyA#(Ru2q ztS4em`n6DQTQkGf7!f3La~_VQ7Tx=%6jmNeW(o21eoM4l{&K!q%s?jX`=Qa#*2C!< zd8gj73TjW*tLU3#XxDz+KX(D7$w~T-j&0~Jm$A*r888HYa6Q&_iShd$cw&tIQ<}Tj zZ-rNeb96?W4+TI&fdc@-7AMYQ(w8OkuH!o!6XM7;F9hLCSB}_ySFc(*62Dr+xkCQ< zQ8ouLHj?m+S+e+o&%@D+q0w@<;cJEK29$_@5PCyVSqX%DHr*sa$&=Z>llO(&V61}u zKuuAuen8#8*x>3rl)PC)abP310_ScBDbX;bzCthY%r2MWR$Q0AB8TL&c_7z0mm_`=Vvo4JFTIl|R+n@pN2#M~701Lcgik*y-SDO#n1 z`TRybh^V{smh%zLPcgsuTaS+|DQeH@U4}y=E^du5KWmsQ)k{U6#+*Ix^-ZvLhxwSK zd*Ned0b0+et1^h8dr;cmua&(`!nYfRz6^_2`2?H(OV?lc5GUL{!AD=~qeI>7 zl1nQ}BfnjnoRC!c0I}Fm4{;vzeM5SzSxMTw&hf$E`1vptE6ufSkL-}p?gS3{)DaXE zSy4?a|viAUr1 z0}cLQX$(5XP*53Fhob5$lRpc2e^Zwfhm}w#s3^?|EW2`|Efah9w(2m@O8c<)^BgZx zLnbEPSk=OWiBpCcaK~F#^$t}S=DyZ31L@Yz+yKfp#6WYW+{i))D}dtpo4y>b*Qwf> zDLI*9fM*}QP6(O7LeD6e7i|QI>R}gH&N4)fp!Z-`^y#pO22zo?m@H%g3Z7{*7}F7S z2*sf$c!E*Z&U~_Y*TJcETc$_^s)_yK>UdV~>)|i1!mL=I)87GFlvc$tVA=Xbv;d#zspHVHh;Z-6b`40Q4pqU@@Pr`#x+c`!Y2e03G@|Na7 zYltW}cF`-EP69n*+%|C>sIgA3fCKIsp~0L3(jqYtz>`7>q8Am3!g%d7Zmw%{)W+Ka z26^OtAnIGcWA-l;g^ptHx*AW_`mtH(hw$bt2rw+94DYhIyPd;H##ZK)z*jFudzi_Ky(7#<|6x~O; zo}pLuspfIEM$^FVREdGm@rHh;bng7Kx>x07B-}u$rTX=wxCSg-oztIltg#83@|@&Jtn4&otP6(oJ7P1c1(%AV(!^i)5;;Zgca9~EHhxI#8t}*pJV2-B;#aX@gzwa zI~Xmg%r+C$xmfG{M*nhOOL&3p{Fl17&B_Zt8cG7>u#Lx06!@il@F}~Vt0nyR7bMP}si$Ni;(ZHB;DSjt5R(w5?2Qjo_Rbu;)IPkjA{}N3xm(Ii z=HoLczkHp{eeq)9^;C5!)|Oo!4vV*!-H)!yS^cW@GiI_zE9#ts=WHD9v%qJD^iDe~ zs6B#!C69`YB@egVbu;W@E^y6huIsDzP7URDoFUB3z6*G2oeud!HNCghDxldz_XG1J z$Dk%O6GNV=(S-QLO3^OGnr#ySrLfRP-8>HI27EXsU!iSv&(NS_SSBJZAifG^k&MvG z=k0oInxHMDE>jHgymOJIS9liSSBa8+DnV z|4{QI?=I9ze2C7OPg*w1d-z!a0D&w&vGs zQ5Fvdb2>l-E%dn`9B@}wGr;Eb=uJ2Mkq1)Jrn3%g5l8uH<=O*p1O75**I&}06~es{v=GdUrs-D*tbzW<@NhTiT@*w z^^XkYBLWt}v`@^WLDuBq;nU$*D1*sy#xy5zU{>OynQbM^VBet1FNUXRY$O5wg^apq)ZBKsj^5+0UL5WSq_za?7JvJtqO+~PGShwMM+5p5h@!Ur8-&q0Twl@tR5pS5x3V*2`9rjzEhtu(- z=Y;_(xTc5iw^ot}g+0@>w?z3OEs#CsS|-kjw=W2xPnd=dC7Rf@X9ND>b#Ebb9Wxqf zXj2#fX~E3no(*e|Qu2#7ysA1;iYJGo#`3+OqV21L1)d}Wsa_GyvCpp>p~H)<8J3`< zuPK_xFOOeZK#GMdFl8Xt5J&ZI#=CxD9$V4u$JmV+)v#G$ZLcD#wL>70B!toyEMV}% z2@qLL8C4_PMC;x!Nl2*?lqZlp=81X5Dz+=ZTfu_6d4J5@Fv(bw;3?6=r18-(D4FXN z-K1~eyHnxjE)A8nr8LOZ$DAZYSSPf`a)&jHY{^g_(G)>fAdvzQBbLXz(Tj~u4dO4Nh5$}1j^kSRONw#y7lTyAyH3J zf`-k*dsa%A!uD4uvV*X<$r*(VCW%R~3ln4+IE7T)o$bbdJ!{-d%UY(JN%7(&M?C#T z`mx3CfuR5;;xX@y)gaA+q^mAisdpEH#wP)}wMOb9Wsp)C#DP^2sei3jb%$C?k{P6x z{bR=Sj$`7*fS*_WF!}h?Hi{!=POkTTnATn4c(v{WXp|dEa|ty=WYfgdNnZ9)25vD2 zHCTr6fOnq{c#+-jIHgUoZqDK+yIuR}2F(PDi3ZxZ>aCk^d=Zfg*IRRS2(ULLl4}t^ z_TZU;|9`6#PsaYON^uBH2cn{OaQ7h#aXNwom8(~bAA(BtCus+Pk;YEl%3joN`}sXd%qd5Zq43T8bm)|AYcyRMh=9ms>H(N{#%!hr_0YP%PJyW zUjO%=v_s{0N9*ZWV$(hh+IctPS2aHq+LhlsZ(8nUe<~6@;z?Jl%e!8yOVg{jT2LiFD+-8VebF05Irce||+acG^F@@QVY@?jSy z?Km1R@F9{gDD67LtziFUbLfJI@cU}F2l>kp)fNqKi&0+c-HUPw6tWuun3+-f&)p@3 zuI$Z{1|&-^zVY&3PU*iLW#7n~ouuoy(D=4m$;4npistwv1=~4ZvfC7_RzP!IuQ0q+ zR%>d|uk?xI1%aA~^Dus+4~Z?+hKENY{=pe`#zh_L?b2KQaO{2r0K&gC+J5!jVA56( zh10^{I->MgPS57Of8UUFl>`Oz+Q!iLnHx>P9r8JL2IRMvDxzuNri!er4ARbBl5S=Q zbp`WQN=q32aE`&Q8H6OhXy!1RDr@;_b#>FwdU2kV?M~DDLP-~uZbZN&4P#zHL`;Mj zd|1G@hLF>x5lDP_E)eU#Uh%I9*FhuVp+_ zwVE+E0zFTOfRje$NI5y#4W5hbfeePE#y+~$lIb7xIPLQ`_^DC08M0;bu*-33!mzsO z0J9@8T9)h^fs2j>4~}RHdgtU4W2XCYtj=NK@woGst=ezGNQGr2DZ6TG@}M6GDjJXJ zk}3M*~F4 zO-xnx7pm4s>9QqPg~tWq)wj+SHkT+J z^s%Y(J-u#m2>+aYQ@C;}2|5x;wODz)`}kEBitG|{g)5G;$Pjk1NGVfl$1Qa&Ps$9j z5U#Fw}H7eTsJJAgwSM_ zrucwAyQJrtzphpJZ?09NPXuY$vr2Ai=K)c>`q_(Y-__@SsIOA}lPeML%Qf9ELz`jC zYxh)<&x~bd%CW8~UR>i1-v+(zfqf6-tUg$D0Oy_W%dtW{-kaJKHnn^mAzo=Z#`;t;4f~YWNTNO6fo|z7(7_}j@1XG*~hZId+$6t zMm&^JdJwnah!^QLblo?3ry}EaT%L`rlN>>^Urq^X2HDolp}W?shbx zWb?iy33|pA{QYSCh4l_w-w%2V zZkC!4CzPejkKY$ZVN~2}UBh)&t|edAn*#Hpvo^seg0s${ViC1=>6>v_2!N^%iQzka80Mrvz?sja(YL$SWytI;(ks&Wv3_)^w28 zu~X8G?*UkXSov5()#m1P$LaS5cOtUnCZa$s-;z>Gr~W>H#YJKkPXZ87kZmCbgwni_ zdkU>Brn}}L?BKNPeC94F1SZ?s^Y#327M9`?6J5qE2F5CwKNGyni}O?5Jv;XuQ=hIl zZeaEjpAMGcaXafN%{~7SFvQzlY}4>nBvpt)>|W1a)Lp3Ienw}QsV1<7V`A6CtH1pf z>1akbe6RcFma>(sl%#{uOg!7UDg+VCy$+y}}P2w?OxPq65mp`9c;|>5sbG{2w?=UA@Fubk1vp|w1{&!-S)(E1`_7L# zq{)8p-jOJ>f4K>9jh|@xyC+sxz+2HED0Mp9$_>iq>+laO*Kb>bp=`|SP3UL>hV6jZ zeq%>!Nc)(@4R)N6onH_0&j|I8)BX0u8g86mHM#=d&ibWH)hcsG?K#D+{rw;d@UPHz z5D|+skH?Bi+31;80XpgKoqpAa;BDJ&z1W;%zDD1KE{M3>>}ZWgdk%-+>r~Aef_4iN z#R2_48f|tI8_H;5Gwd~BUYP9B@Jd;`?9p^DZrukz1eh4R6xiE_^1YJK@z0A7!f6(0 z8A??QAoW96s;TiNeFKa^d_225GEwi`;ZaL;h*DAFraI-~A>1&7C{l z%lL+8lQz>*DO91SZeELJZ)?!z1s&V#tZ3%=ErYxi?d<#s1T` z%qC<+Bc-BBov!iK{T+OxzX(X-q=Z@h3ml_5LkuW~@-4Y`Ad-n8w6FikLucX&oFEp= zZf3bq&UCu~k;{*L&HG;DzOuqqhQdenLcr(diLd48nHNfF=BV)LNyE*FVqbsV6p5Vw zNy9A>B;Z8y`RNluii_qWRl%V)K)GeF7HsO2me1LA#Zs&suCA6K!m==A&Y`b+<)-D=eVJZ3_nd!28$!3w7rMB%}_`W4{DO5^+7Ybr1@d*^E+)B@d-?g@_ z*R1cOuDV`0?J<+X4tQ5lrIfpM)T8vCL)257*<~2A>;4fS3j~(|KxT zi7rv(oKNLf^AO6|`>SIS*z)vM>}PiwHK`z5!x5d?M$v05ujcx`;tV5XM8(4W|@ zs7wp3sey3E@~5D|Zqt!G8dA+KOiWBj+1Y!WM2$}6#+Qa3?5Vf@LCK&>dbO-QG8Wc5 zoLWUGWz0{=`XO)2V z5gy7%2pum|%G^^7_x8xR$zYO6OCl&*n;pFT{)4SxtpC=BI}AS#<&f6kWwpP= zN1Ll_jZ4;QBy%4-iy6H-i`lD>zuWXQ6O>eI^5F+;@4Z?UE+Dv@F=xA0Fn1Bei5gq6 zYkGmjK`iyM;9nc|S=e={$RmPH8qZ4Gv2uDuugZhp*4!-T!TdcU+GTfg;;h!J6BzvA z^W^T2Gg#WXaU>4lh*4koWNPhJah9U5A;=MZb0zm<~;e*B9a11(%2?DfD`5c9#MpgF|v zJdk$Mqsd{Fc{$-}#!iF!#vz6ew{gvo=RO<936Y1D>;{p|^;vkP?F~iZpvk<%rN2LV z+9idXth5d?XQT4LEn?g%F7vP#N)b+Ik%L&&oH>y!qd^M)G1R8%Vu1hk)31ZYP>v>` zxlYG?H2+-7zI(sr$6`C*>^CLht6w`^?ZLX4(FW3Z3r{ejMnv23(%eS2}ccPD$BI3PcEB<5UUvzs>C?AyZOA|YB@Zb6K?xNNn!NH zPGmpD`CU!YF5Rrb&=72PK~+A762}Br3AqC1$}3);-(ZMRCQ7lnOk@!X`WS9&36zM) zI5d1Z^?ZIA={mEIBpMQVX>MKVNLR@dw+;QiI{Q3Y7Teg#KTg@8bM_%LK0OGv^O{|| zSP?rq?ITVWA0G9o58C%94qF7So0Qq`_jXu#&Z%6#Rme?9jf%)KdGZpoz$GKFrGNN+ zQ`y!)e|YK=&RI0Udl-X%5W~RDxOpkG-WU94z}J_0BcUXUCrrJ1dYLFpJ!4wh))4(!QcY4W~EC)UE1o`uZvg8LYQosmy+E;s9jAcpPBv|f3sy*s`Z z8uyk^)yj-rchxSHR^zGLUITLvY+b}s_4(4{lvsz73pm$ZN{h=|2It1j8Ao++l(XSs zXCccpi4GObGpd$wY}^lOYJX|H@JKwgUiN<9dO5^LFG|TD`7a%5`UK}(-?|L3iXmYT z(UuZ)Da=>3)sDACkt7T@@YjU+@=aN+$5%B^J^r542KHBnj(VX;S-?xSa*3-<|;x@H;{i#+qyfl)|>vo&YU=1`;2f}vS45qCo^ z<^iY7b1M6gha@@BpCWa;}={t^_{omQ0M zk0T6Jc#Ru$In(PHZl6&WLUtlNcO>4hDk%7Bj{Tg@d@(793FX%A7ZM4X&0n1cpvby1l_0h0IP{Z#NXe4y(seu*4s6OC!UPc$+NJsatjIv zhj&rK548qk7<8}t59l7smREA2%N^Tgi*5xv9_;&AyN{o~;DSBBl;rIy&t*t$oZ?ok zR_!Vs&uoY+V4dV>)6a2pd8hmxekjlQ*I;r=R$j-S>i_}8ArFJepMF1>92wucYyR)M zaxfXTeQo|HN4PcXuFRiq_^{zz?uh6%?BQq1)G5I0jRE!&JnFE)E#yZ5D`>nqO8Ef( zdUKMTUR`EGHl5_m3j3$PLGL&mlS|Z8#syZ`50igvAqpd@x?PA}uf-8^id`(>s|M$) zVwKGFG))H-%Y&X}-UuX$wcZzWoqb+P&n1J2(`y4$Jk%vL6JGpzta#udA&rjuO+xxV zm@38;q;zvSJil03_T0x4j`5>+C}EQ2GsOc^6nsfTdhBK}$|+dJ@V@5t9A`dX$iUU< zM!kS5{ln9K0e4V2@V+)dCtxRL`NstVUXxR2v4P+bPE<~6mSXb#rhpfI0c>C#1+M+$ zN1WGjKu~hj>(;}rAxKQzp{fK)3=+HPMAdE|n)cXD7D(s(C2V==I+yh8a-%S(PrCQ4 zsm^eJ4wIA)OMfh-jl;4^`Z`snVs&D_P%X<5ScfgM@tde)bu>YBRj)IN%!c&`1y06wI+Hh%J(V|8~1I|_M zt>Hmrd(q$!2MxWi#>I+%8e@lj8E_;1U~)hI-sD2=0~0Ku*ngwTlZ9=v$DC?EERzez zLA`W%x_QRo2{OOCg{Rxxd>`KZ_Ep%8_;M!#B+HkU*XJT3EWV78(thh&FAD&BR?BpN zcQ_^%Y{KbEm#AeO&3IM7SF_p?zCsHz>|voqp;boT75B7`ai$8)9Ai=O;UuK9yaHuM zvixWl44U{86v$0dLMuFu-`}HPRs8Dqh6iu8L{LT!;fSOki&(H+Fn+q|Lt_f|mYwbt z+ldE!SB<-m4Z?dDC)}ao`bG$&hn-oqmXqYHIQo@)NL;8^^uUv7YTea)mTxNHFKjx|?UdCb82J>DK8G+qffLX29C-c7FqevoD%@s% zr65x%1Z+rSI$Lx5IKJTPf0{G>)7WVi_60;5cE(wE_ORdnmjd6Z)#vd3{YAEx2F;SC_bLAMwEtz6_n*($^H;#) z_4~I+`KMe0Z}7j5`e6&cd65b^U;n*FD{kbB%z#Y*d1rk?P)0FiazXmzfMsa6|eCS$)G=$Rqt@A#|kB2?l@}_ z8HO*uryHL9Y^#}fe*t5HdWWvT1fOEQIJz3&_6&R*(*Dc_#XM7Ige?&D=f*U>(Qos}yrJBMPjynTVFc3AP(w`#UA;APIAvvXDC8!T#ASGgJb`52&KORhVzy(nLn(z;o?_`dh55qv-c@B#N0Seu+^cNH)m@lswUN*H- z;ESBP_+-+l3v$Ba>?bE@-! zQmKJaDoRYM%`aBTF9~-hK8MdcM2WAoRVBlS1zTaDKH2{VvsmKg0(t_CkfXC83sXN@5bfM*35&&Va4nhI0~iYMHc<>#QCHdjx}6PlG!cs z>(v*F>$R#}UTy?0UOh>|^glQ%`O$g7bwA@=$32`(YS7?x6@%t z&-Vz0ZDF%+Qbt-WVAz&@uavY3CIH{}S8i$aOKS-XX8;DoHjF*VH^Exn5oo-*zWJ(Z zL3<~-TDN!Xkp>OjlH?OXYsxP2z!+UXsXtqVU?D-qI}!(XK&2mk6~#vZOBJKVeW)YD zCycMGd$F0BonRjQ+z$Cu`m_m%-D|7~8!bI1MKV$4tFq2~U?WG_tk-V%%}9u}Z1#2G zeN`+qX`^Z3S{i~`nMK!;rxCte^xl?-<$D=nDL}~O||h8e37hw z=Ths~_Tc7waxhvD)ol+VIx!FAIhNB$0zP`?%s?4)vKbyeoaP6-A7Q$Vzy0=h$%UU~ z2ez-H&q=B?YLbNTRW6do&`ucg%Y0@}1jn`3k@d(r#W{9Np0=UoyK9QZEc5~^YI>^JShvW-AWlt&Uhi!Y9xQ}M%2n8qT;TeB|{iVItI65kgxYWfk|4m zbZHTUoDI{4HoYm}W-B&AKG@}bT83qpFGBy}6iJ3VqEb5ON$RkD8nJd=bPoV4r;7?2 zFf5xr|7n? z->j@$a?_kHF^zntd}gk9;42;L?LtiB`vBZJ0Av<{?KZ3^5Ylu;UJ(8A;_eL+H@c;m z`byYBnS7+wDGlyceEAjGE2x(%R}nrWfV%gabppCPmAJ(L$r! zQrs^$mvpD}LH^oVS^5!CimvLA_<10)34=+~Yt7PEp^8a3t1fT*8yNPqk;!4C)RTGq6!ChZXT z*0i<1JaUg6Z`h@Q)Zd>6Eey7mI%U04amxSFU|aoDmdvgt$9gZ)TjTksG);{({Us;9-P*HlPS$=rgG@SfVd&?kv7?AmPF+`Hjb3K^Q>BYsR)!fZxuTpe zDRgKd;+U`uz!uU&e`v~D5tY)Ft-sws5l$8kXho}IgykOGU)d5{?&E8kS7I^Zu+#Y2 zmc2Y=-0uaAd;)@+tJuwZRTo}|Jm}41+>-C$xHzyxVN=H(kgSh3Z;nfKw0g&RsyS!f zVuby?{WTY5%4pasOO_Ed6ShrSUUkn_P})2dlx*GZ!vIIw0oS`WiT-Ooyy>SJ++RJ$ za>GN;?8OKAUu7EGY2nzU?B@97t+h1D_9-D&b6$rQjb`VXmGk@qL^J4=??YuN+OmaK zvOHDIp0$wenixbfgUwzul~yxMzX? zM|JPKiiTh1AGQ6rpCEWXH&Xfv0Ok>&%UN5WbaU`cBJw@qvCBas?6wXk$Y-hm0+Eq8 zd)D|F<;c4qz)d!c?M7QFASr1HbSLum+fF9HEJx<1gyyheG{AeBxW6U#Kk#{g(tqId z&O)$~a<&pbY!q;<1UB-A`a3IU@AQyRxc_eU;(t);`U9ZHo*gGKCiY*BB2ck@@?o~l z_P++`E8p0TJgQxWs{uMY*uH7j_7*-aYp5&LlE?!K1^CWS85ha>X;__F=>OEJoU2Q~ zd?Bx*(mvZB`m>+!zHdk)g38R=ULb_j7>MczNjI5QPC@DlZeT14x{47OY(4#G4}TB} zOU5@q;d!O1poUK*4s0(23Ws~6K}*!~(At0;KLY<-XM1Y;tCx7uzeBSSWfX~BX0fdKG zpz-&yzz_;~(OALXXox__f{0kcRkSjKWU2<^C(pEjh^=9krl~oK$v#ryn?OgjmO&#m zDgaRh_r^RDyQnobi6%?0QWg8|Hxlmsv((T?+J}~+``tKF6r<;ybNk7fn2}Ye#MHcr z_Clt&BY&+gWI}Q*#PO5g3ZI=yaS&ocxbbwG)JbajV_?W&*U#h~IqhTA)h_?=Fj&To$IMM6@|^(-TQI(cqYm{Sp^21yo_ z0rnPy*jV&hN85g2boYuOOJ&QuJtN$l-S@}>ieXj$LEsaG4)luba`5}r6dlb{e_dCm!yz;AB%5yH-T&#qkhu`_wbUEE9;|lOu6MF&^9GAt9b+>q(Dj?ECTs_DYA-7`RI_P&|i|T7t zvmOS%od6|&bXu3&luv9YyRRC*dvNiNUqNGQ%oVL>$9MPY%C{`|s~Mi|g?;!BT7G&~ zxg;EohO|8Yxy9*cnu%l-*%=y2jE+c;Cx_@I!F>i07W+zt#sf`Hq?Lz=LUn-2YASX{(= z=M5^2nh)%eKhJ)ny%r~i>mNP)&b8jsXEGTt;!}ou-NDhZc1c8Xlo&=UG|gdK@afAxEQw}|F(@Hf|hhf=;h_HWlm^lM_}7Zm)R zq4C$)CO(dA{i}A&i|yfpG;vLtHTOSpF~JIw6(%?g`YlfxHH*Sm{mTITbrt0B6U|y) zIB16Hkqu!eFroR`B7f>1G40|hB%eG(ZDallnj%Mal2_)Nd9A+hMkoqbtt z-~`oDCwwV9fk>RFM&nYh?py;7V^{x!&Pk>@UX^x#U$Wv}-Ot|+Ixh}83$~WFc+(eN zk{iPp8flGrbxbgalydb(*vy^l;Gervgw|ehkIN)Ie(P8pk#?Q znvnQ48m$%-SkuC^)3u+k2Uqbe8v47u%LNIF9_Yz8OR1d1h_J zPZE-%VA|B}SdB4MC3?Urt5>1I$5z=hW~9}{qlbHRlGNVMt)! z&?xYddlk`A>wc1l_B>tWU_@)h{j#Ifo6o^QR5K=D)6tQu?r*x{dSX!e>1?F1rrQ%Te)a9g4_t*VLQtPEX{N?0oi^7@me)u#*yU+jwFRiiG zXG<(2XiQ7HpFPucV(kNl#N6+_a7_+?*WzsM9-=WpbejS&{cb&_O;&Q|G?s_;^*T)~}Ij$<^Pq@E+ zeY@j==+p*K`zl3=XVxmZ)gT@;!y*OS%qMMfT_X2}MIV{6WZ*qQPuJ<|u=zSCk2`aq zhy>8QES>-L@X9b%ZPv?AOomhWOcTWjsyTA@<~`pFZ#Q!Lxg8ve2sgjTUVrZVP-DrV z)7APzTb}*(!vc#KY}4~3VsZ)c$uCUwfg%@@2**39XI=Cw#VTXZGerKNG)RPd9uYt8 zyvmk*1s{}z8b}>_XDI#*|KmKC1bqj(*7{PS`Lb<xZ!Bu^wGC8!&!5SYCq&QWy?;+szZd&)E1YFwC_1yeBr?q$T z(&p_b+?}i~UHwp?Hs=!&cad#6(;_NMmD*4m zq=jN)Z%+=2dx_jlJw>Kw*9h3G~wk180! zlFk4F>b*^S;A%I=)OX#fiQ>t{=d(l(Oi8&Dl@1$EOfN)kdEd}Fr0Hk+zca|)u+9I9 z;O*Bn@}CHLt9yiSdgwbn!2DW;xohmjj@%NNWC|aW=cA!tEmb|;M_+k2x_{W}Azt~! zR!=G=!;Y&%_I!?$(oss+A2#rx#X>}gNfc~j+La?w2X8IaP<;~UQu#nn?#hFB`~`6W zdu?i<$ogt;fUi-lLHes|9MhF>^P|xegLiTY+DdGuO$Yf{sSf~>jJ|{-rEM=h zna?#74gCRNl$>SM-02yx*i@;~okFz5JpqX_q`$C&&Lo-z5Sc(}0ONxJ`ys4{D>u(O z<_>|uoDU-Jw;x@x>-(r&eyqPca=el@v7Evu^Y^C~RdH#)$l2`xNp@)Bm{4&ue)((t zSx@ZYl{iE@^7s2q3vl?BqU4RG=HF;^Id}jf9g5u&o3iFU62{MVLhgnH@9<%1_UOQX z!hr#^Yf&UQJc|`+8%GsJwj&b{I5O6w#zWnNvfSCzi@H;v5@(2%ZLatJr$%wW0}c$q+Q_n@-N1jju61vvIOEpq77Hu!H2Pl- zKN@Cy1yfnKUl&#}{_wi&Bi|d{;}A}074&(^C;Nl!Q-2gEqkrxK7_G4!X=H`Qm{0#_ zfSo5y1|;y=_`0ZDl`Z{t;L*@c6;?iJ>BQ>Ius7ti>)jP=8J7X?^wCH(MkP;80*;4a zq(NX}+5U?3iU`#*;>Gi28#ixKd3cJfLrFo&5^ef{AxE%n0pZgU&;t$(#dhYQB)tx0 z{hoA4F{wLY_8N<-RPPBjb!)-XOIk0`k6`RL&)98zT`9O;`i~C8V*6bs*VEb)MmbKP z3)teAC$zL0e{CCn;dsazgv5VqssDBb@dQH&v^^hhK02#5sAnmg62*F}N5Cm3a)p*S z1dhf^wCCZP{&CRx%8BZu-MFjad924lg`nKxwZPRzMr{XyaNHJp7KuwuY%KdIS`AKx zxBu|wN5VbyDtuy=pHhKssf07S5Ruef5qBKt3@?;(Wlya0puIxp+|`QNBbCKUW*`<& zh3K$eoyH+!32{!8&2!z9C`HkmbPOMvHL^oTAw%8R&b!@lKeqgYtV{;W7YA$L15my$ zz9uI!>*9!|a>N)UfYV1<1eW^NNsP>Y-V83-zYyG+KdS%XGTctyDHk?PNskNObj$H4 zofZ(&Y=pRuI8omi+`^Oy+)}%~UhslVv;)ozvpm9qUgNmZM#T<2;{!Io%?8Wm*O`g-1qg!rBU+|bi5tT?|H5oi_@($XAG(?(e6wJ&$ zKPqY`&w8?YF^j>+<_SXKJ#~2GWkTHry|GPBWnI42boA9L^>uW}ZWxVpLCKZy`cZf( z-CWj&8SZ-s$xmIA$s%Z*^@g!3ue3sz*6t%N=VT0kf6WOCMvC zdI1|amG5dCOXRi=F1c}zV5E9la!U7Yomh*Oe*l46EulY=nmbt=$ih)eA#XZwm_A!V z3bV%V4B@kj$CG@vJt@Ghw`w;nKuUX`^+iv!!ncygTp-P z&+E4G5Isw*^U~KBxc%6uVB}U?+sJiB`zt|6A$Mnt4>)Khn+ zyXD;=s6(T9!LsWuCkQ_=Bb70owll(#X=VkvuyUwlpQy~O6*~3v10;snZ9(}^2yIwg zTkOf4f52+*e1H2tfc48XiA{vFt)CCl=$^E6+2~kUJ%WM zI4o--HChQPn`MeHULC!nPWH&OwuorFra>bz<-Di_^B3}mx%X=(&PrFT0rgFBOrfA? zShvtZ8IIH5UYDq2dmv|5DBBeQ@W4n6Ur%$Y$k2)u(lQ40NkO3Qm?1W?%Wc||48_&} z#wH#$A6|X1B!pSD9ZN@;*sWu6yMjNN_^6ITRnuyw4|T`aR~(-%m=yg;ir$$VEDQd4O zO{~uk+|#=S3d53NQFr9-cE&8dE{zihA>?^$WvKLAd|9hZ3Z0TF`!uPdUVODpZrvi- ziV&IAM^|99_+^tNfdju89bMOw^k&_MX`S@K=~Nm1QqrJsV@$GHVT=kCuBh4OaVh3w zAW0|Z;`|FQTrio64k{ghSsws8va!0#yAQc{A^OC^Y`E{YS-MPlXnQ1DuZ#{Wd%UL% zKn@w?4eJ%ZW>XdJ#83sEcLqN4agN#G=tychnz>;FSW70h5=Lf?~^P?OErv3{||d# z9TsJ~y{iaF$`H~Gf=YvQjM60_lF~V-gmiY;=Q@mq?m(10$at zg6?nRz_z_g-DY5f5vlhP?R2c`t=LOat~$1&~z7KS!86OPTd5je<{pv9Lz~1YXv8v9DZmDw9)wwsi9*@rq z8vwjGB!fL(1Z7y|e?1PGBd*QZAnYW!I)gZw z+0*r;qOarTXkVjSSDMXoUofm1jIK43 zju^E&IcwkQ{BqrF6eE!R!;g(hph#3BWy9gHTPKVQ!YD3qLU4`Y6f2Ax?DR%`M`q||0%-z z8@fxdb|W8?tfcR5sh`TP9`roM%%7H;C1*PR8I8z(K}Ui1A%9I2$2{sWZIV4ni5G?mU>TAM$%yij{Pri8{a(EQVad~lMNOYo?fj{zm zu%`mk>vPR#;<8c8!5YM_%1(7%048Gz3Z$AO zyV@o>yd2%?5v!&{RBx1dwuE_>%%exVF$ofy;v-v&Nxe3ZHyHRr&G~jO>s*zI&l z6x`ep8(<$?GyFx=q}c_`g{bM}{KJz5D4iR{;!*QKIsm`;3ZqNl1X~XASO^G|_=?%l z8y;iy0MZg%`z+j<>wsrB88Binzi^f_iAyYOw%_s;EQ;4@HcWxYp_NSeW7FY50p#e6 z5$!K74qqX*wH>wjwP7U)kXzr)J)vkYOP=G*G0Ipt`MP}-N3F{GBusIAB<7BCJfww+ zmx(+nXbIWy!RVv(3mGeV^Um9_w%(fUfbbAL_Q6siCZV@O^F9~$%(%XQG|%mue;AIt zNc^C(Qm%lw9!{SfxedIo!xd!fWG)14*O~vZER6_J(LPPzPRcO)-S4E_=RLsU{wJ0H z1WV9M(CDs5TnqmrcBt<(!2HAD#6lR_bG*70NoeJ0y5`_GB0Upit?uFB9Oib}b>{Y_ z3rn%GQxmOPS7(Q9&0MS2;g9Q6mWUQFX|Zzo+)?45qz!PXH%Ob3^fKpDt^c-;HU1D& z%61C3(zy}wY#}_z_H}DelH?KBI!0TtxA%<#zFf!Ks))Mwv^=ATs`ZJk z9Z^)0!|vzyS%Yq4dq?VghjVyUopVwHM(JVf7V9@YyQr5;oxt%)DT>w6d)rpuJ+JKp zc?cq>$0!@{_q}G%l)zXM{+?~|(=5Nl=_5MX-2C5~J{pO|^{Tk!5%D~0Kv1ycOVIH$ zB^kUOKL}3d39)Z1&(e}(v59tNhbp0F;+6$cQHt^~dVSXj-DdNX?_ zlQ_!izUX^3(RJj?#f`MMjuu@tbXXm=zK`T4TKJnZUEkF+ZtV|g`pnlZkpIu1G4VH^ zv3#@q=h~iU1oQT(;ht)v?kexpKB3X&1#o!cKmzi0ip`*i*?b}~;D&Flz6Gdpspc8@(at&UM@DATD|(8qKxk_P}~GPjeCqsL&u z$#3}8)b(9a`rb|s-z46k`#2&#=j;Ue{|utqr0ar4!Q{7n-1enOwU(XAUqBbi@TED? zB5=whS;?)ZO9cC$)`^jE7mauJVJYPjxRHH9UI6iCc?tu)OyDVZ@!1=^e0GN;ehS=s zx$FVWZ|>`J9z9e9fQ^-G`%4G~x)~iOk^`_bvb~-kdgS53o@Q^t~z9RLOWr3@GF_bU5>E^B<8CbqnQORUtbl)bc5uV!PJ+$4)GspAf0vr z5>`w1;gN2hUvbU3CStl4WvSyMOsDqNC=Y$z6NfR;!Y|ns>H=QIJr*N(L8MXHBjFsL z9;Duv@5mu_^bGvcVi2DU5oNJ#VH4h`)&4h80)JJ*cO0$#^CF`JdjG2LYcyP0?fe~e zPturBP?XOc6)O|_Tgw?1PtRt>!T|4~WgwGI(UsQqTz!kP(U0h8H|44V=BUqjcCmGP z`9n3@v9yB_!8H?N8jN1H@j2AHpyK=vt2(o~py(5;Uy1CGRZ;EaD4oKQ%H2*1i2N2< zBhDy~>zz1u)xC1#Y^9)R&~d=qP1?3bfcdxlwRy+>wOjZlf1qMx<$j=_sBC+Pu|nz}W&kfDJ)|gEU^-J` z6y44xJIFkab=RMkly-QH`?onaFG}(WBVR=nj7}AxO3gvdbo2+JIxUyteaALYp)+Uf z?>uPi6yoZkGg8o_2E?eR)oVP zTyEyWFBom+#)Gimuv#RqH?uaOed2%TIk4&fXhYVc^jDbYu6~h3h^hcb>_UVa>bGRT@iwyT!?uuO{gV=)P?JyMy@s=WMi0Lo$@ZwKPA(oB^vSXhj_bA^3yjzvD-y-xj)OEIP1Gkg2Tj-gXV@iapu?nuo77M9yno& zN|QKU6&*!!zs!T1X zwbXvxbsEYmeJZ!*%e&sKb2}ag2~WCvCiGT+OzP-Cgx+zHfojnX#M#eoQ~Rl0p%B#v z93tnexSE}VQNA}h;?EX;I5LsRESKAb?r?%?@8$9YQQ8WYqg*&&BrYHl7y5d8Wi$X+ z)qy6SV~ywPQw$4ZLp)dQqL^BSi@ZueD`^5xPgADNmZwXWRu z!cj(zyL9sctDpXjAG>2Us^YulB(Te761b1}c*v3*lgJRnuiXK#LE8oBw8_4& z7eNoQ&|r!HI>>?_0GRLo@~i#dUD&2>T>D!-4Nz62>YdVug>^m5yqmr|_felXKw zX4h!{D*^#v;?uJDjVw#Ell%nVy5d5bwV;+n&6pQnCW*#nq(?LXfcPtnSsQ%r6_}^K zZFtpfN&8qfV1&<2C-|a&?subVV&ZkfHwnI)h>L(k230sR?6y^P0`8I;Tb&5C7RI`3 z2Rz8{)H`qz|59`E``$j3&g1jRn+vV0S-tAF4)IGU)E*d7d7$o9aiGqx?jLw_+T=}d zxwj2xf5n*s7p$~+2>U11i%Js@GD2qBm1YrzlqkuKW%Dn!AJw$qEgH%m-=UDAh)-$^ zND}N5v#`$WK2`^r!Xu8%SQAyFh(AZ)Qk(!{-E^LfuND)p`V^V2eFpD zB=80N_umxHuQ}O|WknMUtV)VTu=VRlD4^ZMeaR;K_0N2UF{p94#_9r|kJnjw1;jKU z_s??Hqq@^89Wna-4uDL{1FYIdoEsUFWczz$`I)ql{WC*>9@ty@Wh@qaFAdV9@=Vqz zkfw3(9s;9HgL<1vylRi^j!@3%s9kq!a;nsHJckosIBXfJ>cjfKua;2*H{Q^RFYr%U zdkCd7rk)nKOhkw3VUND>-nkR^p7g$F%D6Kzc1iOMQI-Mn{V0nBTa{)9|L88sM57jm zN}dAqy)iC5%~E0^)^9fptoNT^Nk0xgi*oy_P9d%O)p>7a++cVym9;@9BJpYsBl<24 z6sO2_JZGO$dnIk}@r8TD-A(aRA^CP&h?s_w*M#`tQRq`P+s1qFDRD$YT1b4jKRl!j zSW6X{le_z++h4&$lpVJ#bDxUX`?RDicD6~9`jM;cvy`)iGEOANFjojZ^kZe3RZVKO z0Q0QJ>D!)su#qnh^TRqR@u*T~$36esdoM#H>thwQ(<69@%}MxK(e{cr{w4fd34?AB zn@?Ew1SP}{WLl-$6o1u+;xZVgb;h6)Dv*6qUk9~b3WlUY`tnD6UDYefy`T3r8|r+I zbZMVeexS(JRHj@u8g@?j1pE$#bxDe=o}=Gs=p*U>NJ`1cHk=K}HGE59Vc5HHet(#b zQfQlHd@<3m%=7iscr8<50#D%AwoRUbN}hR*ujIv3ZaqaJGhzo@#8-EHDIO+TgiE~C zKi!C)EqAxdfyt$|Y$GNedoQ0seTVBWw{Waw2Be%Z3_v_1UF^s+8Mj02o4Qd~@5kwf zA`cY&r8-R!Alq5wvm#~#r$Mz2h(g>RsxOi|FZbC+y4g%*mwo=p%S)fu5nI&|A$$l= zh#fuwQS=p=OimG#fTv*20-bD0VI)w>BqJycy^`#^N7?5gqJuY2yA4#u<8g;>agcoR z|GLcFFrpAT6R2kAprEJ5);tYIdwf5ynyr+Y#$mw&PVv&Y2Y*Jm9Xx} znu@!451x-7iq&l^k-Ir4k0T#r_b~xjf@j zM{E#wQ?D`@^s)i;{hVa9qy!!CZ$|`vm>nI2PERR5Q^d4Q98U_9eAy3|ZdVxmw+Fc? z{d0m5?e-f|`PQfbU$AG%k$i`wlyZ%_y11l5mqIG$(IfsvAc}X+6A4fN2 zr+0$J>H=rYMxiRlfe54JOe+hkD=6K<7|g?k`1(k^sbu^q(LdmC@EPmd1~?h1z#@`P zH&)Ov)*DjGUVoQa8qa+um77)@_ogtW{E)h=?X6}eb8bz)$>^q*OzS$CwoOlo_jL=_ z27P|6_+If3#E4WMr@!C?y>AL=v*KW>7^mCJTxcQ5?9Mr*_W+JdKA+~Pv2nf!=U2ZB z{&pZb!SnuD3d62PMZJ5)PU=J@xsyxrv87~{=SSkc(FeB-N;j^I_KDwCL_TC>O}Tod zN@d<@x4q`~Z!hcJe8BZrSM9s{ED%>$X-gWZEyf`<*P&8LSpm^pzB)KOs`&F)h3*UI zOVCamT=OYLXY9g1n``;3xh+|)L+ocgV{1*Ew|lQYz;7ETPCY}0+TecKRQ3b3{Y5W~ z+Cn^&txO^G6zWGs14P(!h$DtB`Z_0KGxxe+9Lx5W_b?k}--5!PB5g6#bX_tSJ_;g$ z!OyrB%K3om&+qEaRU?|)ZfU!;ROUfCmxFhh&DxT38te?79x88z7zDWZa(HEEJH3}y zDU3<6IYb^hkiYHexU3x?gR*r5@YMao9{Qgd?#&i}QChX*1zTQ(P}tVQC``=_V7 zUpYfI3lb!+5XR#Ja(|xO>P>L?{IK;P1r{2S5XmL}kD9?&V5`jWU@Ez~FRZQ#%)b)q z3?mw?Wih{!-q&d)xr&<|`nCY-CtUaAktU-uHy>zg(;usxm$6kHB7XP~_ht*TMwzF= zBL|&ZiG2xXj`|^bKX5rA(9J8k5WUG6^@XhUdt<)I@`{S&YOMaDSpBf`yC$yX`!@UX zto9Cu^leYDTRd-LGeWGuzIya)u%HP7zeSAhdi{Y&|57# zgWADNbpMj}|F{H3uZ`dzty)RaC2cso1{__uidhe7jO03)Wo8zvYqVy*GpZ*}c4{zB_Tq}g&o#hRD9*U39c3h32)*~D^y zVQ(J>Kf<)Ff-pFwwS};MA?!o7BmVv_s!DP!4ze=3`z+IIZfH_v!ou3xxczen63Vq! zZi3{+)A3g%v$r$6)7CbxOW}@a41YN$WELcJSsr?WAn=iw>1L zVc9z;!j38voav_h7`LAiYN{7|U6hr`8%i=bzqw+5vR|jIw+XlpSW?CNg@*M$R+^Ja zH9iVwLO!rs&?foVp!wHs7z5MSoHJrKt8aDMJy@am+r|4Tm!bNeSj*dcS1+SU9(aEd zyu1gLZ|0NkJsGvzqyX0mkWo>!*1;q5W!0OOOP-16U?|VA>a2r%-+E2+Zl7g=i%FuU zrc@1;&Pai_CZP}Tzl9IpbWNXQaJ9F3o1u`yopd*$aSNfWN=5O#G1>@*b@i$3e$qD+ zzMPSTvF#PC*BllR^g{Rx^URK(vraBlBIC;O>FuD!3|aV$eiAWR%R-5pFZAK8uqG$# zxs@&5?Dvi)kl9v`|9qsKuEgoxnax3GdW|x{dGSlSNSYr{J{oj9t6*i}DK&*i5*ZZ6EUm*~ANXVV`hgZ^g z<_;zS-=&&wJ2CKZPe$1b23X#88bO$&s$xAXmTposnQ*|;Rud-(YcNy&TMnc^i5UUs z4kwS(L51V~d%X>B$kQKkbvm}(>5#2I1S{KgxMr>VKPB-g9Bdf?q!8Ak~!TcTcj* zfhvPK*?c@+lFJ-F@5|CvP8c*y_zM?tB;dMhrVgHnIq&8XIR%L!RrXDjd$9sy{G0?r zA`J>hkad0J;RVIULEg-^V>Kc-Z-H!&oo|ndW^7+(O?L00%)K_=NirU6idDPN?eA;TD4tw$`-w|((y`^opmSPGFb7P^H9~|>~JhVgk zoo%KFYpwlog*NtGUWXiTC!^{v;{F?4=LHL1_HlL0;IXJ4yZ+(TDztL4yRz6vi!dO3P4>H>VER)}(86W?sQL~nbLuBb28PS$! z_tM_@Qe$cw^r-93mZg7PD9 z6Fjf=k#|h}63(Na&Q}3iYQ6TP>9-t|?TfM)JK5tKFYdh=8@qaFY>`l={bEB# zfd9VC!zB3_6w&(%sIWb^TWMWks?u+-y!(FFnAqUw-}YTax_t?yA<9L30~cCCO=_jy zalzB+n#W5Oh4y)*mpaN%Uak3Rdo`(jL#cu3PAw_V)yH3o^vc=U2s_cUyxM*|)LUXh zcVhm`-FmkIuTOhEl0u|Be3zG=W}Qn@xbeBMG|Rlt#j>y1Ry-V2Y)iB7Yl^kBXOg$0mq^@jMEsvTWgpcCGM2>dWx zhHzuP6aM|En%V$$>~2%#IEQhDC+;n8d1f}+dZY!JJWfcT?-^f_7q@WQLe9zLIg#4* zrECVi43_&5@z4B?&Bv`pMRD-Tz=d}^wjjh3tMtdWaRT4}Bm!7UZyz3yuS%I`xe*D+ zy}4Q#PT56!K2m3d8>#rWwsdXse4WFZMw4|t%W5*qpBnGs&9nPzKSGTg;zIxEw7U!h zjdjsatKs_CpvnVAu8h6%^HF-}paptcaP_n(fG{lyW?_>EXt)Y}@@aAm3Vl7)CX+I{ zh`+P))~;Y|!4`qh9*e`bb2E?ppWW5tzu$*bKEFaG^|zt&|IniA?XN5VfR34+4^GO` zxfV@MZ4aD3(Ru`PC3KVPFN6IR>?G5MQF~ZtohFg;c1dlq{$|41?o^v`d~E{CKPn_neU={a`1<8t2^VywWP)dQpo`9p7A{gqIUzQ%V zJSSvXK`?FuwCWMt(;?;I8Ut-E)&o{fnV3P|(&cN=V-n``@(&RLAsoh*RsbA_bG`9R}qYqcJ8tbXH2 zLXsLfP1xtjMp64VE7p6WHDQIL`7~mek|Z^WcjPBJD@78ja5)Gk4ziCX4%-9msONOt zG<3bZsJSylq9E?qrFCTY1EQ`4lv4QIe!Ghe1b0lNig5DBfbX!&;sp=!WOkLLc(Lor z%F_0uaiywE5QtbZFH?>cOy>Z`FgYK=&LfqWn@S-k1~Jwu`MxD)ksBirRz zZqpcet0+za@lEJ|^oR29 zWpA^+UA9ZBL~*80Z2IXPYaUo%1c{cf2=^MFpUZ@O#(5=_gu&o23nYG#@JBFEZnJc` zc0iXL=Hv5Jz1@R7hdM>%sPz0}+=gaP1R$MXux4?ee^6$TRt0qQNJKr@qHkkA+g@RN zurkzXP^CA8)-`f!XAH1y}X$(o4Q zJc(Lf`3XuHTWxYdyuA8EpO4I{s?3vIZ6$ZTb(kCTC8+G@1{Y|H`vgcI++F`2PFI69 zH}!$6I0H#&?VzM9ShJz*3VHjKl7Xcsve%e7#I4 zFtBC=?RXvCXV;(e&F*H8X>G>DdaE2ZBO^aXjV`{-1DNES^F841id6RrC>Zu#V;QEo znWwp?+^{~+qMu-H)>DGc6B|=#;F!wX{xl}wKg0Z;Irthx%-eWK$6>L%~H7WY|uC5(UpExamUa?Txmuw&6j!vrP2c67J5h~UIq;FepP#p-+egJz}twd zT%L^3Zv?WRVP(un(M>D(g|C@#I$1`P@5!kw#8cD_!gS&(4v30PCljAK+3GGEV%ET{ za>`J+jfToZwYznb@MSgNbZT!AF&%K`UV`E9az<HOmTsZ`sjh7TgXdoOF_DlKWcd%*@12gvbi znK44|rJ3;rk0>qc4&oy!2`(5Jm#+TKlSa^Pyp3#op9U7z7}n8R>$`A#6I zgCNs!Ymv&{i{uxrOHCg6Bk{`+D|24sr1^-)&0GuMJJGK}jPH4w`0Qf#^~p{rlj?Y= zOhU9}MyaDJGiwo6`7{**l=#>`08jN&J7ETy+~41gJ)_$j`V#W#?y_`A?WyIac*Ga$ z*R9A#_&MjAxvN%Cbi1WPcQ%mMlcq3gU4!_1)|37i;<*K#z z>Mslqn)CqX=FkL4pjEbf$_;I5bcp22x0>MyL z$bKFZcQY~hjK;pUAfcTC%w-P+hx96P>KR$tu_;vB6qtl9iXqT7;rvM;cUGSv<~7l zSRHi;?B-9)FHU>K9x%=?*#9$pg#XlI)FRn8%>Uc{5((X?NqkqR6g!X4UBbR{_s94# zfvqIOVAB*zGlQ`c^$lr~48&q2T4#xvv&dWeR={gMUiLMUOzm5iy8PEN%Bj0M*aY8Z zmU6@5he3xWF|C)BA8dwB=2yx~Kr7|J%USISKbod0W&?62 zf0ji)J4O@lPVXjsHkJ>4LSD+BHm=rN9zAj6lCX!{phx`9JCu)SXRgOW+hmoPlT(b7 z6safEll!_b%z(3+dkx$I(wpS+U@SQWvy*`P-#%+#ypyngbK}6#ry8F@0e=+YQw$o{ zJA)`L78t{0HEXinVseetxn{zA3CyC$GA{2JyB`xYMFB3mQ&G1kpgRP4|l zC39z#-nV$%vb{@OI%3vDM^B_b#?{a>^&(J2k-4nGvHZ%%79~QsKW=gM`GI1iE0jBs z0BtPfLtl?@h$`P_Dqn)mT8ztLkq-pU;_}gvW7Sx_@R%?s;pPhi2w=rW{HAaxBfTzY z*ff8OfzuUg_=-UlF1tXj6!Pif>vCiGq&vrJ?-hcz1^E?l5G<2yeEqP;K3OfeE+7Xz$Yg0hHwa99y`Y7xTs0RCT)^Ze0&8BPd9;M z|Er%Uw{^PkMXREOg*msPlWyO$k5g~t%IJ?-Pi4l4s zN>_l3NLBG;LbhY7ZD}`ZNglO%R=V_pJMsat840Tw{68Yr`}mcepw8>0l(2zRTyj1C z8#?3_IOA_aJ}4F=gT*sL`ICF+4>ytQ6a60#QX8ST zP;3;N>5q83P1b?o!I5EhvoIf;;H2u6cnC_^l6JjWlzxy(3F3CB;<9>BxKyh%dz*cx zG)Ql5R zEIxhXo(hn;gKX;0ib#rfpzsUzW|-}jGJR!=T+^$1xWd?ZIRRz3J8@50QWU;I^=>Af zc=cuP22~sI$KbYbaLH~EWjbCL*?z3$!q}uiY)U!Nhg)LVqY+)U;(FbQzPkXaSNp;E zOd&-pP$r+)d(y>>5js^9LV(B@BK*$b0e}s+a#H4p$!`ZQ(~~1(iwsS5jp;=g3XD`U zA@PwTBQR5=09<1G_`Q4Rxn4BpZ}9r}eAj4NJja###D5O8>P+PxzpO0$^MNrcpB)Z| zIZ`x(@(>!jUlsgz;U*(188dwqJ;n)7^DCV9#^>1Lr42{y7o{7i42aH4=IOHv$4F^)z~{YS=mXsGB*@(I+K%5>Wq}1REFxBNtvVSOGbV%m_z?BPnHa*Uk6q)u zTe0NJU1M>C_%28FV57GJ*{G!tYJ^$ZJw4Di zzH1(uXx{gewy>Jh38yV)QAe?P1!U-^bL3`mQ(wi0`f}S(s`BS@9Ew1SxG+Idsuv7w zlELiEo__aQ_<8fsq%Xc*-AvNgoi2rvn#1bHGWQwNLiWn!ewHy1eQ1|_y;X6#H&df- zswklFBNfbLn^QI4;d^AUggK+@VEZ_f@3!py#%`QiCVHIOYns``hZAU!<}uZ57fQew zf4Ru?y0GAf(;BVJ@9y3`^_pOqP<&xW)2hgEyRE0UOh4ixP5|!11lQ8He9_G&Z8p)n zXs{fOg#Mg)$|gyfV$0tw3#Q7Jef7Iox_cc1luwm|4FW z=%9)Zn64nc67p1WodIaEG%xDmzjP8pl*@ZvHzc{f??iKkBfI?RZ6m$~Zt#BkDe<8B zt%N^|I4CT0I**xG)>i$a@Ckc&TxCea&~4`#ib*#+O9D1Km3SGO3Um&P7YVrWB)=N{ zv|H*l08+g0aBYlMQ5|_}-W);sCspsasI62*a4TZ1oPu`+n%G=Az=;$~W|LO$(qA_` zE2d*FuZR)ZhftREIQiII6j0I|5uQ<;nD5@&UU?)ruql(0Y2p*w^Z3}BCUSavafP7} z8P{+ho!Gho73jpqhs)Qjy{-(?emEO-csPW$Dm9SuiQ;7O>6(vJ8KYw__tZ%b>iFPO zgrZ*V*sr8!n?7);l{X0~Bf%l8c6e+<n&X8)* zV78;;k$#u@I+NZKZ*id8)RX%leQejqzI4vecbU>^0r;l!;W{-G<>Yy=AO~B!(69i73Xhh6wI8NOy z4!x`RDP(fZu>egjEyvk`BN$RUG!xJGxR}Je`M6*@i>Oxb-i<0z;jyg9Xt}8tRoj<& z3Ajq1Ua|KG(hExpYKx_Zzdr4x0`mqzE4yRP#O15Q-N!?Q=Q@T63^Ks}WD>Kfn-WcE z_TuhrPVFi@8=a5BUo*`DlPR(8t_XN85Sw2VHzsb{HsjeAvtJ1_ICcQFrUTT)w$2to z;La;j;9+X8aKpFC?n5@3!FA+Mc)D+v4?h8_pxh2Mc2}c@>RjsZKK-^|S!Rri$|Z?< zSIcrTX!{Rt$*FGoLZ8xEs-3vFV%-+!$7fU5AD*Pu< z*E;x%yS3T-+XmcuN%3EH2h0+~45mpQyhvkaf}b5$es0gY3qvCPV#vba$=vQf1?OC3=IKfb_b?twQS% zP;7}gNPRCD`TEKA?bX^(VOUIZVzYzD+`B=gx=Da?ccM_t5@S zXJ&Ht=C993?gpjQdLP&4U%ek~AkvQN^|Yr9hx7LuukR;(RhK;gJ=lK2hNHdLBPDn#QhOU2ZDb8{&TOB0CU7CG zIuUBgA;FXcNeh4*P&A-jho!+whF!({2Vejiy7IcE$oik$gKQ6$>%`IW+r+_%L;rC& z=dWBraRBG6IyiZdLicybJSj;pY>Q%N6&M8&7Rv z)!8g>7YbA_S$}nxhBX~=zSI|1M67z0Ck*&nImBn~h#&!87|2gP25mMWcVutmW|U6P<$vdejJYp06hpQs^0po14K99~UP@7=oz;^*n23HjrRckex6Y6mOsdb`BnR)E9 zPXNV;n~Cc6O1j%O18Vl2c^?Z6naqAKRlOoOexWMKKJ!XCqGghy0uk4sH#?KD#@=Q2 z(I=7E&xmpkbf}6i9RUJcZT~_wHq9hS%3LiqDj9N7uhB?kKGuVZ2s9nES|QR@Pt+moK-nb^FCG@8!&f5VCfkC!=#yS%r(( z{N!qvY+cALCi&Nl?i+TEH^-(>NbpPD6e0UtZf(i@@TpxUtlyBbIss@>R+UoXZ&BuE zyp;{BKd0k9RRR;Ho?+43YYqYN5w`fv>@yx%zLSEM{#FS7PM5`)S9{|NfkWirf=aCU zW!rZmD~mc+QQpHAq~mR)$b;IqMqkEbLljXhKrcqY4cG z<4lZ5^I>=BCI`0;?hU)4CN_ApECSnB>2lv#Vx$+9!GmV$n=LW}4V2lUL{h86V)fr; z{6u%|@o``At$SWDf!Ov|P6FdgcB%WN7j*aQd%+AfQ!f}98h?HKk8kK_{_*iqvqtaO zFO6|UA2jSiN&}&jH9OD0+r36#2njfR_6ZQ4a*#V&zrB{#^RUOiQUG=kCBDdIB^S6< zGa$3F_U5o}7nu7(M`%^}?g7O1CS?YNzKt}erIZfCc3`QX@>q9aAAm#P@McE3&u!XA z5qvM*N^qe}&Lrb2!YsIwfHW!ffI&o1N(n!`*mqLmrPDH|&B|T>254S~(6?W}75>oO z1}}P=c8WU7q{Ph;`e+}rmseTKTVTM#{V#I=nc~rWQ-NRg!0X>0>%UqLP)c)tdMYfT zDN2f;RCm=`b7A_@|1N@DzM#remc_;r(%xgv<28sl9HK!_=XqBm5_Hp~ zNuTNulnSN=#7B2-B~3T*B8~>S+eyuLT4Uw9ocqTdp6FglUvPy(S!aoXjQn_^&95WH zp3HL~yO`i`@p$XF*mcs?9O$61wC(d#^JD=y_271-&Rz|LETVm;)^n_G`QgKsAB05B zhW(}Pldt%)`Mj>a(_5*Ct<1@zH!|7MfJ3-w5mCb)m=Pf#(Ze`?IDsSct=}DToa;m0 z`+M5Z%EREVwn~3a8@guQ%Mtl8EYQDvb=AM4n)FPNar>SXjD$6yYjcVNHA4RN7>m<) z`;P6YDcdruUzu&#DA+?YYEoA+<9oXgr9LRnfo+7bA$&TweCwk7xkiBn0wi80Q8Ne$PaPw-Q)XplK}U z?A_7oH~(VPP~fCg)EVxT{8qUw?UX+`;db$Q()Zzjrd!X)#anT|NkW>#p6vKBX^iy2 zqVHvcP-Fy3ry3)Yhs&A-4!Ysr5f;yUh#DaoFKhNz9PW5uQtz!q+hLvSG&FNN7h#zO zES;#^=f!s(WHZBkJg;1)$BKql8dhtk>-&_8JeoyP{>JmKdlf_6i zZz)2lcv%>AwC5v7F{H$EQmtS4MTqtfO2cQu8hUS-iO(M2BRnGWdJbFs$xyuN;1cpL zj{yjZs|?M|jTL+*HppmagZfPE?IZfB2xRC?^qGU;6G3sRE(F(tN&4pW<=zeP+yNBI zr57NuJGX_Zw#qrp#ZSdq*+coE(Lihwagcz{oy+lZnlm3>HQN$15IB>2w;8!GV>4kC zW7hhyx?xud;jsB5do{_!wqyEdOTwPVZuA(vZzX{Wgwb;&|hCd}}uo6Lm2 z3u2<{AQt^U+*F!#f90k^hj3Vni@U_*A!o-!BCUqlgI()Qx*lK+{vIEqP)Wd-MP~*7 zM|!t=HBXh*M-w=N{jwFZGBoexB_!RitFX{O%{=9I`qk41a0MV|1HF7E!6o%N3XiFF z%YXOGpy}C%)}%Bif`TDKxn6!NjS3fiS=k^a-YXIL>P?H;iQ@8;f}Iz}t!kG(wDatx zBMmmL&4UxlutbvdBlrxz;rKD{5^7%^f9wRIC8O~^Jl^U z$)}#>RFe!_I_E-Csda`md9Wjr7k1Z%b`meax`_d$eDUhomsmzd2uuxmh!-jER z-M-b=(PC3-zs}5?92ojUpt*XZlSoar#5a8U_H#>mRGgjFNg;1t0=jBSmal(LOg}Z4 ze4;)Y*|hG{j8Xyb)$VZnW5s^(?CEnoq@^SY;SCXIfB2jyzXEcBC#z`s@JHj}{d`s{ z8$`hL;#}x3l^%UsU5cb1+xWWa{)+Q(1@kO6FaBhKR4{SBpKDkf#~&x*cs-9<`xZOd zoY~OxjbqEy#_V-g_+(FW|HH8SRyC2ZVi)qojtpbbT!i>Q8b9~ND`v5X{3)@*@ z=wQ(m9K{#4b%Cy$WFB|Q-HAVZ&IXT3zD?eKxdn+&jHDBQedy@--kP~&hI@2v879rq z^i(Y8SGn1PI0$=zIoH}L7WnB-B6cefL8`AX=7 z7Z>OIhD^#gZ?3pw>Q3?)JcXewB48+%s|-b;6R!T*ll#vF37%|5+fr_YqIHH&r$v4h zl#)YT+0vB$Gho2;C$eI{LzHN)5ha0#zeSWT{84{}az6_QO34^DO>kVCO5zN+yLpn` z&GmCJG?r&ID&@kVs=i2wSvnKHwnBY9)uensFw6tEmtAbVvQHMn!ihBN?9o%5NLn^O z(Zc;SN=Qn2KDR??&vV-EK1!Y(z16DH6uMAw&ME%-CfczPiFA(ap%-y$aTZc52i>MK z4bt-`m5!((v=_(e@9N5}@ZB2{oakkcl9`IBF-k0E!vP2fs(oNyY+OSmdyW!zD&1Hm zIOluiY#$5|FQ=wEj~-=q+GOYQ#Nv9L@ZF_HEP4wv)C#8B5S)qt$Np1in9c)^4^FVS zz5BgFG^JwSyEcOcwqgM%@Is73SmlT;#*-bRHv4mJ#T%sFZ*3Mg`fDnF95Wx2P_2j{KW|SoLiIyA6uctZVeWyi@sZyQ% zSd7N)jI>^L6#mV-%i;x=FK>8SZ0=s}6Y%U|>jEUEpH4mvVi zj@JhGf~L9@Q?{PpeyF6ry>eiM#yuTy`A%jIO7rIy=NX`8yF~U~*{k;@4)jfa#1 z91DEp;q-nRuNU1NqOqUS8IW0Do^teGD!YWwN!zX!TaVjWZ$#)aRR$;A=%k7Xzq@s}Lz0ub*)b2v|;D<~7*)F_D zmBY<&Gyw*SqlRw(VN}hKk2l<3ZZ=qXX)H(o1^MOqg7BtM>LYpo!@R3wBrn87|Js-gWGsNsyvz}^=9Wzqe{ zRF#jVwwBGan^r}^?MaF6!o9C#_tOL_!Zk~Qd02(8&tO0jpR4^OAM4ZSAlC;pChS(S zqw=3d>cslAx!yHa6)BE;;wj{BCG!6yz_z{~nGD>xr}<0E_YdmcFMgOt@wF5tT`e_+ z|2ML+yoj>oKPQIyvBM8R1E=R28s6x%SG)Ijtsv&mRz@Uc5|>UM1q;TqecBK|V;F!# zGs7X~=kWn$i}?y)1;LNM=>>&*dP;YAZSP^54w7eS4-82jlna)svsCv65x(*25-aw* zELUgx3=Mi)!avCmWw%Sc|3vx^@zuWuXD8itT|$-g+Yb7#^0bhd0CD$S@l7$eUcZ>e z{>Dn%;!PmTf_73UiW~ie_oZ+|5c~(TKkRNEiOnxv4&w|Bx!ro7c@gTJW5C1=KW%(c zBcE6MnHW7NCx#N9hJfo7&+LH5mu_iGcd#l~7Va-cr5m}7#|r~qW!`4Xe#(_3&}kg@ zvm%jreDluno!zqC13j|YTRZFxARVODsgSNT=fR?hq9i02Wp1&<@+GA4(8XtF*}26< ze<}b|_J>TmF7*eWO#bqv`peSH=o<-kS~r>6E_6lFy{)~o`pIw93vcnz@9B}&;uR~+ zf6Cquu6mJP`hTjpLMuLO_kQ4h8YJ%=DE-?u1p$f*w5YO`@coV1`t9j^S5HpsSQMok z@4U1%Yjz6Ew;9f3o1BQ)!c1$Vro4R=CRl~Eu}YKs&H-;n?&sG|5RK~r@fhV zPiU)>*v5F+(J#SG{H%bt(27=QdF5r{{KLlMabb___uJw^C{7_B9|~N27}>Plyc^d}93&nBI$zEs%!)0@43;Zi@$kHEo4|YWfQjz=g2LC7T39W9lmb+$1E?fRi z4mWt|^HH9_VQhR3qg6v&%`0TP{ zWB>%1n|W9rIyv@uUV`S&CU}6(4jL!k#5p|xQfOdcWjUxbbSx!ZZrZ@KWL&hkGo?+L%lEz?u{h?FfNTb=B zvLEm~z6RFnV@Zp`SFqk}-SKwTHdFi!E`5VZL-kjlQ2d|diAyH9Pp0Q9bu=g`K!37D>Ix^Dq~UpcL>eDrpU)Qr`OtA zYOnwP-v4C@#(&@EKfC1r#>-#HmBi+m-oTLe_Xa>>2Zw%~Di>{2Va3fXrbU5c#_kKJ z73$@aH764%P_ho3Os^C9bE2!x<3+>S9qw!@uWp6*i|@Vvi?pwbibGqrO&}p?aCZ+9 zJh&t{!QCOayL*B+5`sGfcXzj@32wpN-CeqQoqf)|@9lkZ$JzItF9tu1rdO?6v*xUt z1zdi~k=P#K6G^ccaYE|#+UN-zKyN_a7!&`}IHSwogs>d_Q${mg6m9S{= z(!Lo5aC&n&yjR`n4T-f4{X?yR${{yK+7kv9hFH^0kZ*4m=NpOq19~f797mrs1^*O=cXS9I?%A_i?#LF=Hd%bv3ODc$dD3^>@n%3|{>ue7>scS6(a)H1hnkI#Y0H@U9k|Q$nViVz%Re1!yVN%S%(aMkCw}5wlR;l zEwjX0(Q9B|tdX`m*e4v5#U5lT(8+n`R0Wf>IKAjUX+;iK= z_bs870E*ST#?RqgO=jgyN7baSt)K5{ur@N#Q0F~xtbV?4V=>U+3v3eW7k71~`)T7z z+YPI!Pie#gb?He}&%!zs)C2G8I$PM6NL}c7cigHXr=QgUqTXTBf;m|yMuY5GEj*o< zxG(V=MtUjl0SN9*euOXO7T+eK2dDecAdAemf0nho`n178LzbCVPXNy5wl$k;!QQ#H z^|*jItlXv2e)om<%UG-^{mFi7I~9V*YSh*;E}ueMP$AN>y>&D`q5O5@biC$=Y35QF zz68rb6QDgdqW$Zn8th7*vqU%xB)+#oCc;9HH0S1iPxll0zYg)C4YUjh1)*wPb$7QC z>0LaTlmLDiOJ%JtJ2K@{GNhYy0JQ6F%td@X;SxBshTyBXMTL}mS-<|#>o#6T33N6x z8RBX0@OtgLcJ7YWAMYWDmFCPp z4e&V`CU{g(yejBR#2AZe;&Z466!TTDH&17WGwb*4&Hx(z$C~o@1E$`3(2{ z;A2b(#A~UzPtOEZN}Tj;;q{@-3F5RF9-B}Rb<{E38rvi1Q{5$~qC4Lp-LAKhz!@iC3TIgLwaETK z-0~t+z0yk$nQ2}$aN}?AL)w0;^VO%|T%k$Mg~QsB>)3ATnN%#vMKX)?S7q7v%YVp8 z9WMzbaO&lK5GfPDmZY%|sGuZIGs=yBwL_g?lMoy5{WPpli*@nq%c!;x^oM}3&$EdL zO_K{|IS-*8_u5V5`_NgANQBX8P+3>gY~AInN2?(S1+n@+8?!0Xu3}o(v4QgU#pd@l zO&Ep+W~Dv*JCO~Rt>uAuBH#Bv*PEYNzl}p4>9XKNP3_Yf%&=;4A|v3~;z>Uou96I0 zdg>wjX>&L$$+@#iK4f(s)YhghH0v5BFmlaEMg%~+K;(1$7u%m-fccHmuR~w`Jt_ac zD1IlIO|{d!IvVGMAwi>@LLmcR)bYNc9bCXP>BDXHk#S9evDJl#q9*rP<6>FPn91Q1 z$Z-}*NYn_@(0kdNq0@Lw8Fj8@%VrO4N;XtO7vJm z4*Flr%0cznrC+5^fZlH(>A&knq6fA3CTH*H?2#Qiz|S17&ssOr9^k-+dSfG_1Raii*$i;x7rTj}#}~yvyPvYj$)QW=+HHAL zLKeRDv&rXx<2?4$^xvIL`1=IQnk;<1KWOC@Fl>EFjtH#96tdD(TP7SS6U^TE3rc#9W1K(+BeWTn);sy-Z%^Y@4#ElzaMzxmi^a(w@EM$=uN|? z^E?5`b2NPyJE&`zgWn|Yn{*%amYLDcVyaQIZ&Oyw=);8S)tPsWdy;H0^RIhPnXZOL z(TqfU{(EX|WRv$#Q){r+d_t2C2AcB2sb{hyo!fN(J+$^*+b)y+*T`D;<~($}#MLW< zBmeg6w;S!5cZ|VIw{pluk^`Ohu$7iw8;lPF?`kHc6tG!Y746kWAUX{)SfU(kQAQtI zBu=H;ADW~F%zAs+*P$m&P9rHS7aD1a8x?uy;oJ9g#{<~)Fw>m8xh$_&Rcv#9R-VQk z^ww)|J515Zs``WZXEs`@ z!dItgI$#E333;7v0M_-LBQ1%LZv1w^$GFkDRoUM5(*_~AuD{A{oZbw=;2!?eaAF&DU;VWB{csprFr z9aboDk?^AP8I#=H?k&gGRp*6^^^6~va6Tgk4;GcZ)-isBp`f()s$+>W+&Rl5eS-Bn zcJgLcHP=Qlv1RC$dlp|_Tf!t5BSwc4yhtxY*f3(l)*eT`9gIr%7e?S8Y(e=S0?XLo zZ=2`-H`8lBzR{KJY>?EqCABW4K$^T(n*i>-_3tQzFL5Nm=j~g&9QM`Wthq->8c%Ad zfo$ETM?Y-cFH#>^EFd-Jngwa$`Xl2g=1XP~;a}B%nLGYwZY>LnxCBA6))Ds$12TG% zySHcA3=K*xT=lDh{%;#k3UNbFX34k4r;189#3A4lXcfc z+J7`M+Wn5#vnmyiHd9=_kTgnsi!plTCp(C??!Y1JpSi^0geJ~-D;C(0=2S(&dUg|7|oAC-*K=8>|LUF6P zW53xA7It$}<)bJGhQs)^u-{N`3|3n1YV|nOW1eiYO`^= zmA-*}aCK{|()4j^GZ3hxW9ZA6xc|D3* zmMA}qbzhl`c&~{sbK~|`tj6M+k+B&Bg41#qf3izLz%S4gNl}Um*%?1N`#v9(xT?(L z3tUv8db-8DhWH}BA^u|d&g#2u**rY63rvpIHR~|s)YAcK^zvcoEPus+p2m`yL8(@gV#3Q+=6EIx3d<3Gv=Z6Yu>DyvT&lPUZfiv+?t)` zi_S#Sf)P$d?=_n2RZ3N`*Ru9mBhoTMXW>jdC?Bhyv=8T>UJ2843Ad<4;-CG%S-x7B zV4W}?C@ymCj(tmL#56dcL}_9Zp?ggYQOw~uXFfE&VVxBMK0k0e?^YlG9uXO-q{9Qx zhz?yO0zj`1@);3Db=;$pDc23wxUAH)mZO|w!Mo%BhlwsfRmWgJK^cfrv4Orp)Z5`K zaaXON7HRtVl@_JoJyRSr?BmsroyI5o*IEW}#cik&k9yEbXc+}B^xer-z1hHCKQE8( zACcaSX*go@&?yOd;hL{Co_5kZ8m>J$5{@)15JXqz)nwA~Qmmm%pD^d}!~}H4@J2cP z`H7>+8huXPQ5>@LC#2OC#>48M)(y1T(L{CrFfNi-*%GMnJlzg^G%iMkzou8(`8YAV5 z!eCR(> zYu|{MgRy;E)lt~_7q6If=IN+(W{^~@yLifDzWcI`3+%Vd!{)ciPSO1TJ&2pVJ+iNj|~_w1wan4{lvKXhPR&h(xXndLM`^_qo? ze6YGn@I~y%TM6c6lr~#wzG1arRPy3(|HM3k*W9{eJ^xkwn^e4~bg$uJZGmonqWU`OzF{KCg*O3DWE>k~i%GX!L5=wB%OJoL8pW8n& zSIFiAS?~(16J>(oEz(+qt}v9{1U;?Oys8q?YAF^Jzn& zUf_Ed(T_kpJOFT|Jl)P3Y6p=sUQ6{v&@W-DCRi<(0nB+q0-d)r=0xfGqgnBue>n7Q zYuD}bd#pNOAu+F;ZXc$oke?SsV_xiWYEBDGYNG&GuJz1X@1-+Bl3|BG5^^e zji7@SsL>FRj;7f3!uoo}+&V&M3#R4#yz`Fx$Z-EL%{nck{^bFN47}GLqsRolzemzK zZolF>|2>4X<6m8N9lHjCCQMcTUSI=`E}6VXafU-iIJ~EU`rv=gq;XtM5~hW3z77{u z&RzNuYMeIkzT^|Mgzk+hx#&ASb_<$0B9rqW#Aee1(~PP9 zIcA3K#Y*EB|Cm;-dYD#?nD&^~|3iL>GwBn)Cuw;qR0hYFYH=q}niu%8OHZwly+!B! z)FY@f@>(q2R2Cm_pz(d>X72!Rmy&MVo3wnj!N{XfIlzpS&C&W7NnoPU?(&BLdhg5^ zE8Kp-B)U+uxm3TpCXOC%LQrDAWQY07y&Yk;sx<&|8ER}sH)b?{W~@Fw-lR9V@BY)X z!O{}jnOOu@ZQVnN&~-ViV6mZ>9}+nhLU6WZG==I5u=0y|oH*M3Sei`)%Q*h9?9X8^ z^z?;qC~(j!6?2Pzh={%?Ba>9DGJwTmrI(CehWQdm^&sTL<>YpKyx8I<{l@V)YB-H& zN9Muwc*&%lkNv?`yywN4iwMJg`$|OhFb+ZWt(5Puto_}QUnkmNTh#)M6U22Q4_aeQp%4ji>j`)owrSucEju)xv8yuqKFxBoulBv z5B{hSUMizL`6MnU487Ew$fHkja8Fb`Hd_VB9PQP8_KSW_KE{vttoPfQHPkfC1ru}f zb$c=l#8s3Rud#zC1>Z3@V4hnpTw`R-eh_&xa73VLDE*CA+JaiWbym$zMFKg)P4eyX zHy2>^9LdK-&dn9Pa?N44!5?#Yan7u*A=5c4kzG49OXAlMW8B19@@kgIPc6-aa;%UX zt3)l)+zpvwkpbWC+)oIsRdqZ3^YiS{h|6`Z1iYxVva0w_-2$I!h}ZXOXGy?gaNM&(s|e!SY-iLtw_^5=mXIR@!fw&qul^rl9KSL~;q z13k}G)h+<<$m@-^q6)pi=bz7cSH&eyrA#cLpXQw0)GE>+jaA>j(0t6Q*9GXDO2uXR6`k%G4$< z@TWaGbC$?OhQ#Cvq$ylsS2Nib#6oO^r7SglTs%wUK%;uXGRZ0{r-JEK?505%w>j9f zlm$_uN+?zPJ#HqGJfDPoS_qKxTf_49?p2>bq#SqN;+tepU@>Hwj&puhg1oDkK_^TZa#TdZ(k3 zwveC@G9VD@P)w|MtnWwOzD-2AR-(Tw%g_QuWQAJTB*vpDH}LX9`f%b3`DP?bAapFk zjI^+*acRL-9&?rs&vVl;$!Rc_&VkOz11Elzm?v_)C#-X>t#DYIH0z28sVoRpn6IiB z9e5$NkG4n}DB=rr?W)!=n1&!kF&f|^vedP~zsAUCbnbWXEaax^r5H-C)%I#OY*lhQ zAQ~Uh-MEnbf_N~ywN?#7-rtB5En%4$1|HGSOZWgZ3!fRXTvyw0-YqaN2`}BtPZw}j zBoaWw2TRi*;@r7A)hGOV`!=_)(%slAbZ`9^601#ZZI{3OUVSzCrRGQpO(tdu`gM zCWAQ4GAggje6Lzxwg!#hYLxvj9$m=VS9V>JUx@{tHK0-V`dRT9kK4kGjOh6)U9%-n zg|_~qj-)mx3T$>6N}2zl3knIoZA3qf!dRYr96fH{~T* z@(e&G(Kc}ug^V9NrAr5=L`zoE?`}G%fWVqVJR1*pUr0iTpl~U-#l@-k4E`?P)2C;1 zRP{36Hw9kfZMLjAx6PvA?8_ zKN86o_UF%OfJ1r;zkPvXR>ui+>6fg=Q;AO`-X^r#mfwYQmah=-rZKT{E^D)k;JO;k2m#`wu#`^cFIyEim=3m1+BT znyG+@GsjXpl+bONOQO}5)brO(zj6i+4Y}!d#~y60tj~Bz`c}o_y#n>iO%E%34NcR2 znm6>4{?wuvw_Nc#fO}bIHLd+0WGns(jnqKnIorPEOLY+;0}L-=nN2XLTM>k>>$-qb z>;j1QzG=MM9p8j;-#cu=8lH2q_9f{gf5&kDD#Xj5+jG{_VD zDhPcl-LdwmL;DUDC)^OF!cuP}nlJEuA&@EPP2;hY-X(fR&-W7_;A(@I=jRXKks5kh z(-J~OPNNoTVsnc^P4Jeb8d)k7J3ZO0q}iHMbdY z1Sa`esn7E|si-4o;x-QFD1moH%I-Lm;O&k~yKE15NzLPy{wB{AkUfmuq7c0^${e zKi{pW6_lG}fG_W_aol6nvH%R=4cut9b=Za4Dz-rB(B!RPJhS{vid%%(Sxm#CiXpMg z5_&ST6}QF?A0cntr3?L{y0%@q6n~z<6EU&o@%r4h(Bq!;hZ6T4MGieJ{F}U^>72lW zq&wyDQXL`+^319El$!wIP=prV40OX(iM5koAff_=T-+lvtp-CXK5XJHNc!7PFkQ5d zOa-q1$Z&s2_Iauk9wiNMy}%G+w=~{vshHE=jBQB$YB98pSr3sE#YjFS-BP$z2)(oc zy{lNT#SpQ1Xb96tct{z&;qWlbF|T)qPrys);q^(aZshz%Z1hitC!H$Hhbk%u@y>y2 z!=;LzBRejZWA^B;2&`XV^nZgNp~w5a>lXq5l>J8t06P3ut}3yp$BHy*`m!Ur{59jn zkxxn|@#OyX=P8|H{l@A=xG~-{Yc44gdcP*&kJhMomR8*FDl}?Gj{;lg>RF)6I0jzL zM)eQ#87VDG)gY|P6i9^!?^F~bPytn7KAmt)ju~_kn(}h_Q@v_^)gjW6>P_|4Pr5}W zciggTja&_>nb^$r3Xp_0I67vVwl{FGfvqhpquX`cv#GbsXOUCxuHI~a8es=!!4X;s zs(*HAC$*~*>M1xIjZ%AG;&y5&DnFi))KHDfB+5A*(e^6947?tfmowZ-${3g=>1>i& z<^C=n>V)+*k6C;nt^h^zrtb*6bD}RmPBUNsd7fs(ZK2MPpBFXKn@>_#AZWyzJ)QEF zw=5++1J^yla5Hdr@U)Bq(`s;crWXJ!$>T?}e0G1%{PQ~kr{5IDyY)@=wPcadey_`< z9z=~C#c{})s6^;n=`?)%V2w7w(ip{7_M?`GkjqYCNL zYn>3K-bb)K4Vqz@+Ku>9etVUXdgiy&SF3{zK;iY?*S|ga0%U0BmMK&f9+1NsDVC*~ z-dmi_je<`3IvPxl@!E z4rpX<%EkbdKF^btfN9@QS+lI_-^vINbxefQRB^q{x7p9&ELO;MVU{7j*Vl=$$LO$K z4B$;veXV6O9(V7_cvVM+=$8a0x^J)kq2*KCZuO>ldN~9lvch50z<N6w%D`) zqoB@}g@h|#HDQTfMkE8jp?8isIH$p9!U8AvNdKKThN>DdxA?!j0EXuv2xUNTicTC` zU@NKhKCSu`z`G$gvH;uG(|_QPkV55b6GAI8nodzI7rU9Dj9Lux1UTgKebnw*#u%Tj zG!5qTCmJ=}NAzi{5KM`?UMgKDLHG8u@xq&;nmn)qNg8TZq>$Vpur{4o;`Wha=LveYbpa zA7l_IZTYn&K_|Hbh7olk;{h)`6GFV@RS$Auej@#dgT0~%@vWr%{?i7z<{#ziAoCJW zD3xxVSuto(6*%sz^(q*?QGq4v`@m6stT*!na;|L2A%|5C|9Gg0TB@Mi>8 zOpo|))v-Y}mazaAUM|i(O5p;26`?XlQP_dS?qlL^T+hZNTPp%Y0uIL#=q&s`N&k>3L9_pMl23vBv(eNbXS$ z&Rg2e=v06RetSLESLO&=CkeyOKzUiW8XL~owQfbZB<%*&Skb`K{=EJ6T+gPW1-5koic8@$y5`1y@+C5b#X&L_o=PEzg0{o zoA*zr9^a%pC~&-;7#kGw57m-nh!Wk?)E3Mt+qwjXE;!I!Oa-~R!>^cwlFJ#Ppaz-? z>p!UHtD3ph$DJbKj^=}xDcEYC=hb%fm2HJP)q=b^GU`RKqMCH9@7PeJ+wW1%u=lgC zuA~a1CAH7Dj=MHV`jc`O8$R4MDkR+m=z>Eleb0LO&Gq!GVa+=zhW`<`OU3vD9SfA{47P=bJGjCS)u;_()%# zHPVln4bDGXDI}>4M_PDT4XKec$esg8;wztD%V>S^0Q(|3#)i!^k57l(Y}xrpcFdet zJ3`I4UdaQvUn*B^8Sn~PR-?T#5svHX;Bu45qxToaP$zMe-^{XS{ZM~j4klz*yspL& z2SN*o`!5iD@M@m#?A`oFMv`Lv^dbyHQ(i?SIi|1WVEh`}OFvqCY&1W9=!ffjy?q_E zzC8MP!BXAk@J5s8xx?i-;<&GS$?O8wyv`qYz*@oZ-EZ%J#rt1(!1;f;1GInl4(tyg z8QXv=Ig8*vGNyupVfO)m9 zR$sNwPnuOLkJU|*HbT#bv6F;esZdR#m8JGod9jlsgz)|g-B)WcQIsoTAgR?8E~zZ$ zLQc?1dnXZ?0a$wf&niu}PU=}BIgoQ$V&P}Bsn(ahT{jYmi{d;P;_4ft;X?#GeuJt^ z$(r2Q5rK@9(1r4ns25K<9_@655B0X)=bEuBrpsLL++2qtH)B~RC2ZlJSuDuP*krED z*cOEs23=;XnRiUnUK$qzIPxyGKod8s!uN#Aew6>B|3I-;rEA+Ezx#Hpzo#vGU6P73os0E z)HhAdKF!n%oy~RkiQl&4A=TwWf`1DtN6d~ z?;+GR`+o8mpr9V;v95n@@>o?&eg{BJxl}DURv^w9uC^rfRp^o~XGMrZAX} zI3k|nOcU=tg#03bbc7kXCtET5Dt)$ZG$u|K$c%K9Fc;64RV5jZXuASq6GLZLGM=!O zM`p6*L{`A@S77Gadxp1fqMjKJ8oE$iq)p64+fh6SqYz|IK9(q!3$MVmc9+am z1aULvh`-*<+|~Ce_sJ@qtTpCnnh?#M^T2&|*M1j7J!83ukvLTm{?X*)dMm{x=&@g9 zw$+w;yKI?AO>m7j9J;SA)|rPsF2BFcXpXyb!>u$kaeIM2nk`)Qp}S1I79z{L1W2eG zT;J92_+%J*vEo0F?R(<9Q&*^$kzXlK(zD{1zme)8eYIc$NB#BvnqgYdz*T*8&A8B> zp>f`*gi=^0S#5rJFZTr$0_c*PmRSMM@K*8V=45%VgdesOv%G~J2$=iM9vY-sJ?Gc$ zt3T<#e9qdQ&qQoueb8)itdRRvFH6ISVVU(i{(N0KJOYpAts}mT4R6t>%m&4&jL>eb z#E8Bvg!`JM>;Y}rLnvu87MPS$D-$sAW}%kxqpl82#^DBcEyOODdA6+Cd}|(@n(bI} z9@-~$sN05p0NPV`vB1ovF=@KKQrHNlf1}&<=KO1VXL}vr*-qot03vs4n1_mYGFr_C zz|`+?;jfBbX6*O4kj&)oWFQhJ;UP~Px!M5#Np=`B3>f(lEdXH&PVaIZ=J*%2aO_<% z%!}B>$byUU5e4DW_k^R#xEwGbo{+)4G?95*V9Iz<&f^Rv)J5=Gp7)QDko1y`wjfR(wtBVs|W2@ zq@w+2k;+O7yoTIkw=a9na-Rx*U$J;M-A`=A;$J_x5suDHh<=)Bg40s=6LG4UBr1<4 z>qr0U+o#5~tx;wv$8e%r21 zbW9}Mx@`+92m3CrOOi0PDT`sOC4aGxs-gkni4y{}?F2VQ;vaEa6G&POdAJkdIWpc0 zGg>`7H$EI?^<%-~!MP@5X2&G0zi07>f!s+UzAFq;i<%KhCZJyHM|ng!5F?K(R>wIL z1Ikm;03mldU$lR7u{-Aio?#lA>K8pFH~bEY5&f+oU>CODE>>&|q&Z1rI=QB9q`9M` z#jR(BDIk7c6~D-EvKR$y^P})t&?CwLoQJs(Wba{5nU}E6pRxI{&O?{B$9jTj1%g#6 z7ean8;39=Ael}AlMOo`J6({3=0i>^TaDsc4Il8?BFc^*v7;!{qzNzVX_y?()a8f=b zpuq~pMozDyO;hb14`r^qk^3CaT^cRF_F$KPKqbI?yKI*1HR8FL~Jg zyByaEkHrWh6PkQm92l3*n5LR4Q##pHB}IzPyOnisu{FldJ8%5_V}l3x-JZ2tIsq!R zv=?{QK7+CDq8u%FDKO?|_5J>(T6#oZAR4CGXP1r!SSFf!GWT?8U(!j$s>3CHBjFEn zEO5xQUs+(H$;seZ`TTD_-P7}DoELgrYa3JFDg$b^?p@mn&Qh=qCrTuvtshx#WEo{g zqv>Dce@UWHC^@?_Uo51jk7Ja&n}GgBo7+#_rA~%H8h_{%@!3C*FVILcBW?Ed4dzQ# zS$owpHSu-MtYLLjI*`MFbB{0#I`Dd0nNG2; z*KZSGZ=Je#ZjF4(r$gd@n>Hdki$s4x7n|STFv(%6Y6?_-TisH**NP|pjU!_x z-*&XGCj1>x`>Pg*hVm;$c8h)&BPLR(=8;VCwiov2lXIoK??^r-T-yszssCthOqaWF zL7*-&xtiK5iOWrxQZH!OH%>!fO$>-# z`Zs6y4`SK;SH2dNr_MbzUMrn9HcTIhl)VofqeGpNXOQ-nuyQW?_v{2WrXkZS+7{M7 zX{LVwm%j?BEHL9_zi6Eii~N&>_~(oF-@k>z{elsf z|JeoXi$H71TF`x?|Ffx}#?=N`T5Fe{KI?f+zFPD}u0apbVcHgTlI`_1&Btbk0IHC8 z(usZ7ZLt0EcoPDngSA@} zI`~ReY_Az%+t1m*?cCma(%0H+?SVaKqzl{luY8ET*01Of)ctMrFFe^P9h9s7`|HL} z1KrSKFFmC54lxlcVR+)2xpg6NHD$Bl5`hi_8 zjK>VE2q7em%@pu`^?87Rnw2?t@QUZnET4jk8%8oXPTxjI+J2@ad^D<1+cfM5D1Ww9$die?P{@(2IcI#5I953>>Lz~z)s#d9pN20I4LWS8gipJn2;ca<1Bp=sKL6nPqPxJkF^QVl^H3tsP0en- z?&W*R-jHR`hR7Yop&19+&1##ib|BvFV0(L?NFMsb(#=OUr}VNm?{;aM%YwlZgu|>y z)Ysr61MKhr?%4ts#6WNvUE1ioG3eVru^vRFXCZirZXg1B-7PCyj6R;Fv)sW_>fy#% zcgLj4kEHVtC9XWG@|a%zJ6 zmse$V@fXujllfbm@3{M(Ku(_dE&rsH`fPq*968G>Nw!#BYdmg1EP8g)W5>gi?FB3D+ z{_3@n?%}mC<2Tqx zIpzcG3l{m|+>|_<-cE8d{$lOnp!$&g?WaNfIY0Dz9*b412$^<{Plp0*PSm{9WQJTj z(1wBd?DPm*c4OX*1C_z?KAU)mlzX#{lZvl%MZ4ta^){SEGN1`OZ*ZM1ou!9M7=F0OuA63{85lBzP1pSQ7@gAOP z>P^`&jerfmQgBC39fFBcrlLDzT|6AE!7z3AX>cJz&+RnSLFYm@6t9|=?1Y4iR3HUj z*b~)fhU%5iOyGqN)_zlJdKIC*&m|3Ra{PYZ|f~f%1ER%tm@#O8Z(i96*p|BJ(4A3Y&NmaHK&pzirSjocP7`CEE-Bp zx!3-&-7{@AiWf5x%O$tCR|?Fw`$n3%Ys80JD$3KqYUP+L7oiy9>MHKvL1oEC1>b!Zd|I1mg3Ge zS@YKy`myH^s^QabA50=oIE_@s_y7KdK1;$hOkE}o{mE(t%X_UNK98I%j5(c1VfH{@ zE91MVg5&dXfWGirijB-{5To`GqM~7AG2wxByyuATT9Fc*g(>8cew|fhv8z>}@{Dec z*CB$)2w>J}Y;DW=Gsxc31*s1g#C#$IST^!DE=!S<34{3DQaL(0qN%f?V>8i5VXQN~ zV**oE)@JOV%ItPXE|gLNjlI4#;Rh__TdMO8ILiq}PfI2EX(6mjGWdl}Otr7+A-8T2 z5NUGZ2IwbiSLR^=I6UUuJ;yiPyU+|l``;zTi=<5a_=rFmD|9kaXaG_X7G`8ToK5}{ZdpzHBLSxVHUU=uZK8t_+=DLZv9@8}CoH-raQ4)dhK-tSxR%55 zWsYtip*fUZ@iPFi8tPcb262una+NPVQ=!%18YT(*sqP(^sFg4GTC#vVj!)>8?H;mY zY2*@ov+B0%rra^v;rN-rvH3whBu_h?s$S(>s{WOxXlNb6hfto|#p~o<5$g3BL25S(NL&o(~BKz`(5bCvn4FGl>KMgs?a zbewvZEWp%fF)n+&NI+>HAq%PZ<3;a}!X~oV5Do2pw-@fQam-Plv(#?L9}_ZPVd}&u z{0KhyawSG0AN|_h=$K4L@2ezmNZ)?NMZgF$guNx77k^b}VdBHRf@{0rHhqt-__!T& z*2v!#00S1-gX*~dt^o&L4|c2Y5)m&P!%fVYcaL^LDSc{`Ug z^zdkgb-!#~g@__v-t9?D%MPlZSDBCTaZTKx49;R0W;7nKS`8}~3bP!8ubd*F&Eg%$ zUa)p6%VgJqNgtVJOY7-8dsrBWT>~6~6Xc=tKLF;)U0XO}o&~aT zW}deD0jKOyE^K_j&hKd-keGi-Xvk<&LQrzCU%Co7U(w(nka%Rw#RX&t2ry%49=J4b zWMtDN)jaBXR?!hMh`V%-d4wS4e}w8CS+d;8XzUKAP|WE6@=xF5bMfz;e_%}M%Jd?!=B&l~*NC55ern#((>kouc- zY(wv0M6h^?Tt@2A=a3me_TUK(O0PTVu1F34Qo+hX~)<-6B^d zhrlf(mTp$0cAZGsK5mw|8qRCdN5X|`;;W`0Jg+(e{V32C1D;tn5rmyMNDH;|d#dG2 z>lwO*joObA7#4DZZ_N2^j&Bq;*x^T64)CwIk%~Xp2tPzbO9@{#*oR;9taUIONrwW? zSlvY>tih{17c%eFH$K)2M2tNxR?<$q{J{0jrm;#%in{&rh3a!m%)6trMBGM`Y;T9> zntlc{sS9WAT(_E8#0=!1&3J`5@zy! zh-)nspQ~bQIIO>?ski2n8CBrDxY%_#WIMkxu!_@cfAKLzNS}@`JgWSeezQB#f)iF| z`Jz#y&O!;o@xBI1q8?sITk4I$@+LEjLmqg}ua_?>TNO}duDVXrDz^iaZQzMjQTNs0 zm4}Y04hRtDxIPrWQ7vcr3a&)zxYjn}(Jn=%uV)Hc$HnP(=r-A*CuOqKMSAxpB%Dd^ zy#sF)^F;;mtyjQ_o59>PZq8;<@7@c&EnZiOPKhe>UdbP2k`phmj}_0hu>Z9kb~Q}` ziiVxw3;!ej=E)4rkmCctDMW=M=O~hMjOR_;yPfZ$tnQS=N`7_)32$&KNTVe^JEInJLmm*%vCEM0(uql=NIs<2>_^&wq- zBZZw;X$?k*G2KvQ!GR+Oyr`Oc7twKSN;r1GG065cx~ZMU_y&eS<4krn zXyIsb$rKh;U^BW2Tol;RE)Mj2laePx=p2VaLD~t?YkeAtD$@ZcywbGfe7Q=khSiB_ zO8uhz8g0$(%-NA%E@hJL&j5Y=q8#E(u=wbE$MBR7K22_uwC*fdQjf={ZD_VnQ~5R9 z83zl`<1t|JZwiU$B%iEbE5Sw91kn}U*k4M^W!JVl$(DX~HLBoT(vAY(m`bnQDVJ>M z*7pGp&*ftd8dUkQ-HUI$xHl$OEXfu<#rZ~lRxkZn&q!+aua6DK)wkC8Cj5gnf4MJZLfH)G_0MrT-=OR@`>OKik?3;@$S^5o-+}RTHmIP8s zt)+H0qu%_)aigs>Zc`Tl7sw?5X3Dr#?^?IT+J%Zgr|O|^W#ge^ZsMqu2f^O+sJdNJ*M&Lh5TY_KjYrcvRRBK}*L1@C3 zO8H*>hn)And~2_2)U?#K{{}tugbp=BRT-GOda32=E6LY6g#E#IIA4`+#Rn_^;dMsd zNly%|jxWi+r+%m4ctcTJ_e~5U)tux06pdic;>@x?K8MqU-x3Y!}4=jwkekr&)wF_1C!SC1EL3%pVNTZ1ARA`4T)YYOinx6pq+w_t-6B z+RGq^lst3H2+v&D#_B)yewV`oz1ss6_3&mHGqv@~FvsDxeJ8@$*gG<(SSY=v(|iG# z=6%WYCQR}{zP}qwcf-S4Aeg@yJ!)cru?oWUFlKALfU2XD<1P3l4p6(6&cgq;=ZAJL zhtrLkHJ`KpDbJTSZO)C0DI^WjbNUXGah40 z0^TV)vAa#fJ`nTS6^J;rLIc%C>t_LibINCwDgjMyu$xJgqWjsg8k}uY2&8*oz61Ex z=zU%A%=ccC_{e%9>8C)@C}waeM2c8|&__$>P}zjE`=rCBw=0dCii&1^eIQ=JKf|!O zDv{&#U4#ry?4I+MsiD=q-K?~3yaF%!7K4g71+~g#|8?h@;JIB6j!bAeJ^%27z|h$q zEKF!_2DHCP(^iALEZfuJ9-82!INW8b1r2$^D8iGEhbyLGcqp3m zcU<1>YpV)qyRLouLzR8;3BJT(;@Nr#*$7GU9Rlw(H}kUt;W{k}>OIFeIs~HI2RE72 zI?*5@`Z*zxw~J4nf*s=zziV45FZ87lzwg6B6DO2@PjD4z7j_G;Jo`=Gv>De3YrEDC z{IeB2?)$|OsJ8W;`IWYg5(AOOJkXtl^y%QuM>XVZwc78bL>l+HqDvDU>9WZ;m!hy4QP`FF|uFGvQ<-7P?_8Z1? zMx{`1Zz0XRC}y!$eZ?6874@_ID6S1O2&1nc6W}6mkjFPhT#Y=AK0_bxoaLe2&EWvJ zI;FJTxN!M=J|C|AJC=rF9Bb6a*+7X6^?pZTHm>x;W$VG|+$_#Pj_SwQ`wdY6MfwgreFxWBtJv z3k3_p)(=z%S;5o1MVuu>7EhWN4(xg|`~dH{L?^+4clw3ZTr$`$VU!D0-{QCUfm&zuJFOCq;FlJKD0jy21>;8o+)idB_f9|a=ur@7 zO2MvBR2M#<;=^PBUH6P>cHr5d`GqZ?;^81$$sY~&&R6-c*iVn<%VIBHXR#Np8uQxOaDB?N<3EA6R>~D@cic`xEENScPIkVV>|Pq4^g6r?)K?!Q>!q-|k~|y+NA3 z>5WXK+Q3T3mq3k!mf-adTB`Ioki+|JU1yR{9gb5eW{qbUOA-cq&*n+S{ttU^6%^;z zuI(l>37X(efZz!l+#z^y2<{2)?iwJtySux)1{#NM+})wE#-WkFnR9*r+H=)hdwsR{ z$=+4}VV`up_0|~A`;7a!uY0^9g(HiuDf(Ftst`#Ij2Wv+y20NSwQ9hfUu@ir0EMji z@pwLbgr)uqTlG1Err1mCH^Hkm`l0@P?4d$jZZg)qOVS>(w}?#SIrp}k0lKF3&di95Ta8oTNTOfFdI&{KFp8t|ueI)D}i0A%aX!;G}; z1+Yuh-UtRc-q#ZiDbpcELIjXdqf3RdXchyv(m&>21#yvU`B{JT^RQSg0ilW z9}x{4_1H~HMHg0V*T9t@ZbOhi8lE=%hz^qz_=NEOew{Dn&`Vim^lfI^C8AZC8*w>- zOJoE3y9Q+O#)rQEKoQzD3o1`hotS~2c5qp44dc-=B-z>r=iO|uzSQTlJEW)BM28=R zOXS0qJc3BF+6qg|2OPKL#0%TE@m>PcE<-KQgIzBVF-6eVzGQMQbOOW0X)ndvkZF6N zt^H2MXH=~&_lfY_HWhL|7wMl%+*fC-^(%%KZuU18%SgGgS{*e>`rvgu9@25bk!w-w zA3*oic4tU(VZEj4NOhjTj^6@7@0e*p`osFRR%-0()02yPJVMhWDMAzX@;+tI%L@z< zhIG=I66Av2TOeEPWw8369i~dq?Lk!ND%@yq;iglPvRQQtb+pRu>a~bhyXaP8ix3@w zkaT0n2;H1u5JkFVhoNUD`ecR9j=XR9VD857ucUX9Wk!FScyb2*Db;%Xqf}d#sW8^E z@NYpun0h-`YFrM-611z$)K0m>yr{q4Gdtb?a%G`juXkOYYfg20qDWVJCsOJ_XI-K@ zug`hh+04)E^?>Jjt{NU3+)ymFe^034xh?WB$$t*PYLS{c_|*WuR7N%xqVPQZ{2LK+ z8A90>SkqT-GUxJ5kMzn?ndA|D7(^df-44My7A?;=0cRWe$$Q? zsf3;@YPonP;pOgb(}4gP;;NPqCRi`OpNdRhQ5$pF0cy`?-n#^ZkHbW%12yNipVq`VSAn-tk12l zs0DSpk5~@0i&85lpc%i4-B_yP$j}Y7>aof%|Ka&-E;N&axwEH+r50V6jM&{f%@5_e zjbfdt+iQ~_aHQ8u!3V#3GCRLC#MU)v2oUJ|PpG!k=IEH(w&qn#WCHxx0`(-R5o4(RO6^~^J1%Iy1K)6`M$mW)2#Fskb<^YeI~Bd z;pO_pHJzG5-^$vJ%a@_`>{mHx?}@bDe@^oHBfD2K4&fwfj0f5|wKTFCDV+y-2QSSJ zOn%Y^?-?_XvCY<>8>O9bVcyG$-a2@eMzGNw2T)Ro4g-V!1p+#x=!Th;>ce{I-z4Rq z=uyNg!dsBY|X%`}ndHxqw3z=y?87i>v z^15?k!;yBymYTe@CWTV(r!^YHxrWG>0g^;v7fX^l{G~AqP07g6ZGT>XE&XW;x8(4* z!ZH{EHNzebKk`g_ByoQ{C0~XkfCN65$w+poxHAi2+6!8}+efh7ku8$4c;ZNIc*5k+ z#z}8Xi1XG-=Vl^I6K6mP&`coJEp;7a=onN9l;PZ{ErH?A(OH|obLE>oc~vLGwsaE3X-_F-yzon0e(Mz`#% z;@8rjB3RK6g|aEbZBe(#$E_9A9g`l^L-f$8HaW_S9HN?ISx^1DkDDwhZeq;9vZQ`8 zhQ<6V%`Y9}{M2zH_t)F=GC}wx7FI)@5XY>9f2qhm$b^| z_(RY+r?4&R)9Xt3gP|oMHo|qF=5d#0dL=somuAMQSuSZKbjziF3CMNFd#}vyy@ zQ&9wy#L&AxouD48(}YG7p^WUiYANxgf-}@pc#v!BHGDnh%8hjK@9S&euoDPL0WWNJ z*BMt3)I)eo7y_p0h4}}O6)F{8#T6!^)Hqf4*k6QcA7H~PzR`(6!^PrNXB54og9{V!iKKpQ^%*t6^W8qTY==ouF_vf7pa!S3gM{28tpIX17w z!{j>m+J2OLVncAy%&4?aQENdnH zQd?i(gN)bde3Vk>E)S_LwQf3!jRnYJ-o{W=rBXQX1Q(Us=b4hrP#>%{JpHm3Tyq_s zJkcBLESY>vtxMT+doUwYXt<2AY#;}8Yb)Rl-o)*$aE0TVw>#R-or-al^la&{kr*@_QQ`9&rM%}p50;wB+DV-&3;rCQjy`J>{o(wd=<#u*Q!yjbbr8cc9?RW#$j7N%dez=5SNlK*q}y*HZIQy^ z=&;!mBGXt2ck{A&5sM_b*=I_(|3HoxWntVk%qKb%uqvN3{zq<6)GxL1TQ%<+qbWuz zuY-AOxuOhFBXRj=(oqrogR6*fG(9RVsfTp-650R|^3sk%9Cqw5CKsuZGtS)hq*ae{ zYgWes3J_yKdDJs>(SlpXd zVsi__M&~0D2RzPRhgq44WHBBes)@eIW{Gf94935V005w3DQcsq-DT{uNJr9l4c0@r zO&RA_38BW=pcW+Y6!r;+myQVI-rXEpyxV!LL>YQH4$PO8NqKxXJ*)(N)~}TYKQS8| zP}gnv6mXdOkHbKmzLK9&n6)VQV$A%#LxF~MXW3Ppj77TcVLFNX^1khZ%1@tShn)1~ z;yxVI{W`#6Y_!l+BxdyD#2+1AtVE+7_r$_MH4!y6x%?%R!Y6{~jE%QwagO7>{h;<` zv4;{aKR4L3nm|BD60eBTE>{-u=Aq#^C)9oIX&k1H+Zzwq%korHcKzG z@3*Bpz9wr5AVG+D=&YA!WM0uNJIBR$JU?QwwSQDRk_tDGJk6EW zbo}%lo7!jJz`dIiAj_5!9RV^qz#rs<1rEJ#1i4a5{QS6Bapn9|I4Ee@UMO)Sa<-Tf zK%r1k8mo*;pFt*Y?vM1oFDx#?g`RKtqZl8Fw5Lw7<0%a2aHVx$7c$Tvopb-}GQ(KH zMK^C6rY*5*TN!e~`HWZ>VCTv$?$DoX%IgDGJMXadax9UHEcNoQ8OV@$b}{`M-iUwy zyjW(TTx^}7ioe-9A9M^*5U-0{Zv zh(%&M;D3`QM^b(I#Y1wk@U17nBjhG7H!>-|J&J$(Twuc+guSO2&A)*?F?7+K#IL-k z7|%bwrkw6j&Xt<+sk_zbNaG~z_Y(?_=eN$;woC<$ zXs_+3jO&@7;+cVk0nQ`7Yyqo_s5+(B<5L11mpv<7=Tz?Q^{wAh`xNv1uG5t}?m9Wz zq<*5xsJSK*IBFgfO&zqoNX1lPP2NjSh#Xv~A8rF(Sz*RC$d@OqtXwZ|TT(0%{($bi zb33uijmUJ>Jz5^2D|FfwTtN+UqCW?!S1olN#o|Y%IMqMGCVPf+qS}r}hYqS7-hA|U zldtm_PZ~*PcFGfShpZ+=m%Pz8Bw~;G=@R6S&Fmw0jkY%HW}xfHPwz~uwPH2fBTO93 zKoU*FQ4Oi4VkEL5(b*6^9D%APk|U@=ch@QRqs3~t!dKv=_n!1HIHv&_m_<8Bb2$#xU)=-^N05By*5AP-ec8p|K&AReWj7igGcLrXwD`l^uwRNnoUR~g?dA19i3d`-jPHnUsYT_#@~ML zs2u1?+&NXfJ9()=iZdY&OLKGkAW+%%z}H5^>pyxYNjJq!q_RMML>8xi94d;bwTf)! zHd|Ae(m1^Ga)qCo_%nZcpDwYIE*m2^$;ib~`!x#VgA2z)rAK9|Ddz1m_b$OCPU6(k zB1>l&KQ)|-wMR|B58Bn*`s;?C>)pch+1&m{jwI9RGgCt0+OXD{M=5abofKD$!*s@x zUc&S)pnauu5f}Mm<;q&X3hf^G@L0ghn-$!+K=yFoPm2$mq1E5%T;87Itub}!|LlJe z`I7k6(+E@6NYARAC*96Y@B8+oQe68hyV?I@f^qF1 z^^SFIUic!TrTtukdoBK<>5t#|2*+P+5PYT3(tOu&O2!LmJYVmAXoCMOh`=CZgW;Qs z_TGPs_O&x9=iA?gUv-3S-ur^1+5*?UP>_(_q7Np1eH1zS)H|r^L9t49i;FI)Blat% z5ZV6z4^aGH|oGze}WB6E`Sf^G8`Lt<38I%!PUeo zqL@-ib#cJkkJ+#wZzZd<@b8%qVc=>*L?iBe5S93Xl$Tb#Q|>8gj8ID+`x=_xI%~ zoWy)(*$Z5zmM=4qz~ZUI`jP&#`!CzIK6265MR>V)3p!RbmWxiDt!T=_ zp}Xj(qjCLJ)ey9crj7fb@vH$%Pm$w+JL>ewHxKQU7LBNc!i2zO@;s(e>ofHq1c!D@>BNs;k7qQ7Kba3)D4!4!LO15 zA*v-2Zi&h)c#hFdJy79s_Yovg0#(*)Io3`4HNwy+5C0p6-0Eg1s>Qu4ZN#LrTyh9* z?m=&S^jFKvf8_v_dBX-xUsYSrKZlWc_(85-Fki1NR(f?E$6g$1=8{$vk#^|&_|=&m z7u+k`lQG!1`t@yX_uUHCy*L}QGLT2v#_YW|W#~xu;LxFU5?JX-_j)yU7362#)UT#a zH8E5U{FNqUy?ruF6LRLz8Eh`K5b9!P%%h<^|6$GR^CIR>La@1X zsQv)p0=s<0Pr8yE`#mFubQ@hl;&l`!GrIiUIX0p12qDybiOhRmMbr0ib>`njZ*+K@ z_Q{vx?%HD9JHBdWMBJM2ro>|kNZ3_x53|zU9&i9ui$Z5+sk6n%9-Ky({Ra7Bm?Umj z-U2_?QElO|bnJR87EScoHPB9sKsf=|(XhZa*p0Pc0_O24qmsVgfA~z(zTRUz2K5)s zCPecQf078bSv1VIY%~Zn^2g&>NEMKq?`7g)+_4~k@;c3bxJEerl`P}KrTt!6e^FdW^k{tH`9dX zQ_-$Z^8PQyf8`cT-HV+oPzB7ubJ{yNhS2YaM>O1^oHdK!iuZB%qE4VB^d*Qfq1n$*nR6Xe%V-q}?mv z86-~SY7jO^E$?da_>atE>$n?C`4{jxF;m4ih0u=A2yR~E?YBS}c7hWIc zw-tHI93zyc&1U{KK=z)st4wyp>dxl%H{Bb~u4AlVCyy%^Gcv2z3Vw`x`-0nEL;ckm z88v=$jJ^@5nC2T;D}p(RL@(`egEIArTIYpArS$zN#NdJmJ*;@{%zgs?dLrqfaBy@k zxK~kZeO_Hx*dqT5$ueJM&aNS<%i)42GS^iZQX}~o-%es~B-gcu7&>a-GzI-_5orWg zNcQJqxA2gClVL<;kRLZ@>Oo_L(3mkE!J^QRy4$89p1u?}a8NCxqM3=_%@MQvtKx0( z`D$V{HK1SunWBFGP0W}o6%NXN&@;tr=NMXO(m#c*r1RL&?1OKpKUsJ}c3I8wYFaW( z#YJ!F2`>5SS{kYDTzmjrrH{>u?*F&H)_!{b}kPv^^?ASCiTJVtsvdow01=jxhgsR2T;Hq3G_yHX`sm@z%6zprtqiWi2FO5>uxb+m%(IM0Gc7IgV06G&L zuwE?ds;@rznyMDQ*+&0jpO+C7@o{QKZOSc!UN!9BG-X>pyHFALksQ zLo)M*6|z}n7~T)}`4DyLKeVxWBzmv*mUwbFfc>RPDc1fYsbTI=Lo*a;FJ)$fDA}jT z_q5^zGV;u$>^_{p&0Dd267?&T;6&qs-q(ZH);i6yq#+xeUTemA&3M!@3ywmyZkGz> zlIj#e4*0E*^A_wWl2Rm$l!5aCXys)3Y>u02$`G&XTkogj2*MCMwr479u#(~Rtb`6_XwEW>%qAVgL zWQ$ekdh5r-u0J29TFtubT%lA{lj?Bbe>KV|>?#=<`@d5q|wKKjF+C^jlDh6(Ear*jn1R_5S3S;_`COsh_XHz(yA8oiW zA-f}RcHcW?`4&5cEg~KtPjlxDkS#bK+lC$c{COZ|8@_-hj~Mvd^4qB8jjX1B(|55if@@mDng3nNMEOt9|0QKYC1E&_ zkoLNvu>IH8x;;|MKrNZK+<1ms)we^q7ip407PG%1nVzy&fk>YpX1e-|m$az&|#z+J1T!PODKnm;FXqs0d>eTay-B z)1rD0-11s)xkckt?Kg%1$*T-b9qU@ioHUEEOC0%#rDTMnV}ENtjw8mJBuxFWz0o5e z5YtaXz6R$*>hNe($gL*~&^m;AlFvMKgwCK~XG5Ca#EMJPRVlYv9XOSESncs)m6uGW zd}?_U8dnko7tWCH4*T>hN8*3dKGkqLjd;maoGPyUTV&DOO5kVM1J@3!Q*Kx{@s^>{ zMvn?fU*3SX29-a-lu&6uI9obA=5!10kz_*3STpgjoC$9Q7ymhd@{?x1zrVflXO%ZN z`z{mlAEK)_ym`lU{%2l35}%aae)^-9P%OM`qB9gjEA~Dv7I_iRXENfa1m|2DrsD$b z05)eK`b}Y^+<%)n5%e~f$aoSr*K%l*3IEmeiDi1=iu7zK-@eUiEMpU!j5HPhrTBl1 zoT#3n1&gLd|KL!mxp&GtXIGW>ej{91PS@1uUa~$D7Qrb1{MJwaXbcG-H&Mr4 zB}L>jddfupa8||SO2)5iv*gd%`gchC^B=o#&-MA?pQCn#pCZ5go0!}4w6W^=+NrB| zLptjxgECp25S{z=Y?6Ew=6gw7I_5v3$;ONZuy|+pzquLSKj$ag$x2I#g0jgrpEHpr&!%53v>)jICGRx*Tex9P+IdB+Q$x*+Tz7E6qc>YnkvH8^qov zdO4hhkX~H)Kq9{`bP7wa5N$jK!nIUu6$v`BwpZc|DM@8v>$#oHD9(j$YND)x5HmL; zFPmE|)c!us>_SM3eGVvaYQ0-!`iBMe?H)ak77U~;#Ez=5oR>bjRSO{i1s;xH^OF)3tf!cgY1CDV??@z?3smim58IRk@>TbA;ivWF~Xbg+E=>&tbS&Y=9!-U_1 z*V_L9OltbOyk!cq#t&b7w>aX?kmJ7=XBK& z!Cinlx!q}zmg^;|KY_oGuMIv5s8F@?<*UE+3Ro932Ru2y6F$<4)-D~YD87f(}91GfjF|+e$+~PXBLttLlbjHesvle-s z&cs=gtxIuNZHh|nvl8mc&~0U1op)Q)@;ZqF;BT(lRFwjQV9;5MkWTpaC9W&q2Wt_Z z#5$5{RWbikKx-&YXj)oY)9eOnM#%3E=l3%?ptW(mp}0?a6M2YwBd0z&n*CtCEgCjY zUaN)mwp!83zG?jpVum?Xt+QIR914f{xVWHGN)g*?v_(4|#&frD=+(~=p0mYUfpMB# zq2%4-g@RE(>yT|irx3FEPFAVea9PdAlJ_PJL{*$h5#Q7Ua#%ON3@apD`AB)$MKw&9 zmvFRgn`P#_S_Gsqfr7cC6c~;~7LiT}7Tw|~E7GpA1%S%n(*m_8^9oKE8{KbisU?ps zywK&Eso9WGE9_T&KpZf;6=t*hb#Pl7ukCl;in)$`Ldg1>4%36!cBwA*;`WOVf&2KjoNb$$o+#Ei;r=@o9!QEHP1HG!kMD|p@a3Z!I6xlL%IA!jk%Prxn+G;B$JClcwiDbm1i z+I`swxc>S6 zwH^9^#0L(a_x>BSQLSH4UNyh%HUH4>qZPQp7xhZPBWOb$OE>2Rv$s$wy2j;GhbV;6 zghmHWrgt_=qWOIt*aNkt{f6`cRMnQJc1mIta|mJ&cd;w@yd2qrIj`JA5<8T$ymfV^ zc*b6!x|wqCD6lQIEl62TZw+{y`^jdWQ$dm}AQANYG?}rRq{OJJgMPJZA@e*-PqeLn zj}iHd9prxu3U}mXY~B>zTg@k&#eW7X7MQ@kXv=s`s^ z6*$hT1+dCY?{&|}IO=ah+zdG7+N#pf`z=*blD0YQN61v*5Va+hCGDa+g{A*y7z*F( zt=XzcZ;hAqa__F~@$pMK&vmDiE@rolbr8jR0tg=(A6LeZiP@fs=WX?s@jCl};pA?;_P6gSNl!d=sc{?zXO%n0A>-gLf_`FZ zBP9v8;P}nS@qjqmp!C9c@yfGP~Qglo~(@-z4Eu z%R|I~Jll==%g+v*a`E(sc2AMGVw9HKCTVdC)z`Jn^5<;~n3_c_AvXpE3`0WSoW3z7 zg#1NX(@k;dWjvog0~ zd*Cc0OWy@HJz)kT(Ap(_?;h}hiTZ51`*8fJS`v9{7G?c@H%Od7wKh}{m?ZHaqb4h% z!KsV8U4fS%Pdxd)g}G&@^fcAEY@?_~Yk6A+(!20ZZxfZa7us%pfvuXq-e2Z%iL6Ji zjX{M3NF;fSB{O`BjD2f!yvA_WA$>56CE${$$R1=hezp!H4z97pY-1X%SG=1>90L+w z9@UjwoS^f)bD};Djlc?9KnY%1^at}x7I(n47fvjnz?n*QZVt(7S%yiahT8XXAXA0D zl;fv)obG6Maa)7eQzYKMK%V8+9hK}BJp9HdX;tMlYt4m?Be+?7vuz1CZJz2Pc-hj% zR6V-d;8i>(x5%6?$)N2<-{^p8-?*7_cgpxwNSPzIs|k4JDS)PlLZfSHraMUTwB}Bh z`TFG1EoN`&k$v3RA|i-?5GlH~`++X?_};e;-jiLT-`=3*e3GfUJ@UdOFqCKc(%s|? zb(|;HBzJG|P_1+~J`02?2*zby$sRjq-(1a>2WA;o73<1-B5F`6@-8?NNu1c?I=cvZ zG>8FheJHy{VRU43#@~oY}B-Js#vBn+p*e4~36ON?fk~NwrcW+eTQr zeg(kYBu)}WFN6n6&H{jRn{-i`cf*@-Rdq~G?w?p%NZgou;=dDuL(m8x_H;3wv^cv; zP+ZpmiM`DW3Fe6_(1KdNjVxJj$+QgN0VYzXrnWQ#r8|LY4{L`%M7PS(+f%2%&dt=+ z(%IwR*-xCPv?i5G2>VVUhx7R0isxk{ge#rmZkl&Os!^e ze(Do(TDW@q#;l7D^t0wl9_e7ua!BGkL5`_5Qj2&MM{lABPt@}&BbgNJT+#+d2E-59&%J3f64f()%?Xnm|Joroj`S)UfofLXCDwZfp(!Hc z-R}t!?5qrx96#G;sT^r9^o7DeXta~Sbd);wR~wY+*z0V=O*vpjJ~G{)0YRsAKnLP5 z@n|Mub^D&dq(d)P#L<3T0fsebU!#G&s+rMZd6B%UlBO6Lzd>@=76A z&Y@y)$4s})nd4doRqV+)dkLOqgQ)ghBBY(YxT*Fh*!Wf*nkUr-cq_-$>FKZX?>C7s zjh=T}M)BMIi&~~AI}v{HR;v*@YF*z{XbimSc?&)K)yQ4vzYa#0 zk?_AafG6SVp%chA4w^Qfc`KWk>Uz9dhqmMW;O=ri9k_nL-RVcPy8R{7`w3oU&~El* ziO{Xi{157Qi$Hb#tz;AZgyC>;@RwRDW1(^l{3=fxM>a*Yiw5+RZMN$fXQKWOIq_xRz&@ zT;+almUOj3yUtENakjqX5}w|X++HD=s*P)0Hnh&D{-F_w&Yi6Z?TDSGQ_8qf!L2&An(Hm* z4E_s+%6`5?scT*MM{Da&xc(DY3+^ig%gWlN)Lp8|LWADSUTtTR3x{Ln9CghdTxs@0 z!SdO8XefvCFTsYoEcyo&c;^t+jQz!_NHLVe_LR2#oNL+kne;6E*3RzydbvPJO4lmW zBjzL~TZ((@6GR*CE7VV2`E zzS`!(xV8zBCGv$^b-l8!hc#0(`$F9kWo$2P=o{(xGnfIR!-|8g(gKe5qO6?U5!&y_ zt$*7GLmJ_AEWD^L(i(9o)?Ww=vjA-5EaqrIR=oTkPWs$K`=wr=4tIHYSrDu&JzmCH z+!6#VU1hoR3ckm+;7Pnk7J<8^m*G-Cop|v5bT3rZ28eFEui_}Aiz={uvnt~_9Wz#r95pZFw@u> zd3E;8%e(wmeM}}Jm)T*ScyH>3b5A16Cru-v_Q?wSj1!s}@0aWhC-~f+yc!jmq~xza z6!2f2y~dg67MBdeGDN`_#yX(r06L2cZsprsd{q;L*lD(ugz=0VFOIzjW5rISGtYbo zetnk8B`?TXK!fA*eU^Z@p6+H^;U^F=!P3s#Cg|oeYsqlMgv5?(cY#-hGB&Oc^0bl)rY zck5TO`rwfFO|33pP5xP*;po{sIFKLn*EFJNV#dyaKt+6 z2u0<6oN0{ekEy!&T-$GEjif&Ea4_*Dv{5?F-T))>f09AIB$+DxB0oDj-$sm2zmYtA ztOtdmo~-lyxUn(DzX}rHU_6N^NQT{YrEKNGQa36Ue9z2g-HX6<+s}Ldb^3Na8ICBB z&S~k#@Uc8}qEZzy^18({Y{JK9_=?l^oEHcm%SaFrcBHE4weg*3|Ms1%(Zq%_mGYy( zh%Go*4aX{DeSu0`E-}L=yW!pMawnDOa;JotBa!YV99R)!^t_Mf%^ta5Y;#B}eQT#j zO7jtfX1=^*T7AF!pdirSATCX2T)ux~MHo4A8(=IJ`p&&wk^ne2#g5I;AtkMgIgMKw z1c+(<5#T4q%NLDFrq|s#E)((VUMN0c+@N!Z(v1<|bz~W`*q z*mYrsQT^d_?i>oQxS$~7oZ>GggS)E*-KMHwBKNH-Wrdr zm~6$%5n(($nD&dHwaC=Xx}Vi=Pra?i#b0!H&<+q}mDpb%sY*cgblg)Y2E2EZs{Cr2C_2I6O^iHsf<3tQ-*zW0c^Ll=qgx)_Qz)3@f;J7GUi`{U$#Wo9f2oYqs$ z8z5;7lH~-U?f%Q6!EI*=jTo`Bj`30#tvsp~7p)KBghbAqhbu{E4Xy_okRBkEt=WVd zkJ0*eRT%OaBy*eK3hpSUm8ZC6iC{`|8dhwefK7#K#BH;iXJHO)HGd<|YT zuEAB&aLf4Jl@rr)p~{-x*zib5fZz9iIaQn*=$Oq}o5X-{O`pRL{<*tC zNfTf;KDVlionlbnP(&*aVm^Wb15ln!FMD5 zz=&VG6jO2ZqNP5j%-GgvuHLhB?s1qQS{Lh$SbwivYalGA0eLjwdK5J`8)~U~v4lwk z-)W_t7fAjdPdbohu zUi%rOv=$R#S8|su%^e-EJC$TG#yH?9GI`cgSoC%w_Q?5RW8dt&eKm;WE4)fvqw3ZU zI_f-a$Lg&?^hi_AtZFkvI+SgTco@1PJR69xPiM@0DbM|C|*WKROSzc{%sj*!s z-3hU{B$%{@+=$FJX{5D^(j~J=c~s9lyp3-qlMX9l&c?rZMCP_CX|n|5iU=qZ3)(_> z_$hK{OUi~WN;8SX#RRYfJ%OvAb=w*ZG}Y=MoxIdnJ|mLZkE-4%N+di#Rw`^jj_ zqxgm6-;Fx#ik~-BQ!mQhOoI*1&v`2L@a9&;-FP*fnJ95xe85>H+V_vBtNSn`|Or|0-X;PC4Q~%Fa>l=T})t2 zkO_f_oKk1j-9}03wmk*CCilwb=gw2!pKkl{jgd=znO)2WBi?Ww|X$;BhE$OBPv9y0bA7Fa8e zZguhsg_mVoQNz)c=Qr}NI#J``WKfS#NU3&T62{(kADYGjl9*xNa~<#WeI&v zN&sTDo`n37=IZjuS{9BpT$aF-eK&;#)*!|KD{QZDiz-EwzE7iQkHnf)B zq-`jrYy4&2+PAS}H0b4Q+*_<~;V6R+ds%t}pG}%+*<9!FKf*cQ#VTfoNj{;S(05l- z-~=aH@&9I%4|l&46OSm!KODaw4nU(#pcr~7;Wy${Kz@r=uKg{<8DfB!%@=FRMvSM?qGK*%4jf0@WWIHXvChy}Ht z&|;kINsW=}bCA)Cdt8%_a>;jnM_QL3!fjXc`W+0H^}&Vp1OzaxH{y4+~xGLAE^nJcw)=+3b@ z=gsYK+?!E%NJ#9S&(kE;CZjd|mB#?Td__nd5dt>k7YCY1PKO47OGSdmR;&w}RJ7R1 zXeZ;mzTf)RL4{+zgBpDLhkyYfpxvO$k00PleHD0Sy;ESBqTrh7>=6t-t4>LE!Zy; z5^DM2yJw7WPGR#`alpc?gC7U!V0KLK;~~+CtY2;C7%!JZ@b7K5+CNdO=y)q z%QRbhT<}MqFz%_|9^e8Zp=TlrTb|(#`De-z9mCkc_w9tDPe%P**O>H$nY)Mtpaw5i zlm)-O$w`U8MW_4o#gmen);@&cUGp$PhkM0ann_qWA(qkfw4EM37$2;ie<{CxGPfR~|Z zQ#5c2|N6ds26jGE5C}vY&Y&t75j-=CaLET>%HH)aoyOI=Pu<(faXl);m`1zw>c^|a z6J}tBp8DM*!2F|a{H6g(EcOLSpDMYsxxT*5#I(!JY}qjYVfnSRIG2WC_}T-`2}pxV zXN&^)9}~AtPyQEsZvhn7wsi}~aCf&5971rXgD1GV1ef5hO>np1p5X4T3GN!)-KBA8 z8eS*o$|pJZ+*h~iullQA)vf}%yXd{v8gq;}=U!`0-P&nmTUV8(^+Frh&n^TzbFE17 zhn7bwHg4kqexy;D2HgQmn-Wt?U5ELvaR;xR!=jbZLf0Wnn_RM7A$6TLcEJqsvJg^l zhkM)HnQbv|m)4U@t=WEr>zB=zM#{htY3i;d^jKcZI~Ix_hORUr5ew0QBL!i4kbb&G zB0n*~E0YijLUFz5t&F;_%rZY%^;5R*$D_KL9F#e0{ng_bF-8zk?k+QfElb7qexU2^ zU-3#W{Ip?l8@ZXzqY19{^}Jq`&zTwGFYEcaI^0GFweZ044W#Y+C`L%17as%qGVBhv z9_$-f3;L3I5LzAA)p{*d$nrLTJm>~mSKfxF_+oYEbIIrSw2M=~uM-0*SpM%iYrssm zbA@nqEYM6P-pjMToY9foPJ@BHDbCkb!eC6<-p@^!7Zu1z^|9sqIo8)UUY^oCW`s@Y zpA&@-uRQfGx7zRQMIvHB)nypEOfQ4_Sr_{GLw!vvNqL58n&Eqdy|$8%f4Tw!RE&(B4}o{$-H=`Fxa#>(?#y)H7~WepyK#>KGxfY^cqAo z`$sA^>mtwbno>P^h%{^>`Ns3oRI=7QP~1{Ea5{Ry*g8Tmf#9~_WU}Fe-MB}^fGuONDDwXqpD|cU~)^GynW5BQV)wJ8~%BuimuKpLq@f{H$kUcD)&8@ zaZ&(BdGs0dEK%e>XrG+L_4F-hzqmZqr&A&nLCHj1)m5zikm$-R&hu=5M)GPixc~Wy zOU6daCgg_CUp-iQAd({GO({6dicq4l?p{fvj4|!LD#lDv>!mEosf}Us3G~d;2&w)u zMd0*v!207G;V&{IMm?*5jZUb=Av**WPgx?-^pufiyT!#r`ui-JZZ|SG)<5~rzOM56 z`m!{T5nL}~6w=Y$J?T^wLZsW+4?>FP+TgGB%zru36qcU($V46WR4S`@M0ws_$I9q} zTi5!ReKleHv@d^k>7Z8}l*T})ec@A>+-dscC7bQpD%X|3SMClxyE`>|DUYsphaP7w z9G)JywpMyhGwov0R0Y;glmAWfukvTt?p1z zSm22vevgxPVKTFLeWcEjs9u6pJriQLLv5yXSld{^Sz~`D$@}h)H;hY|W74mZ=V58W z5|myt3GWuN_OR*fF?r3@x{F|2VSA;L95j2|dc)winpP0wq%P5u9-ODR?xef4l&?MS zGF;;2zFkLb+l2+*8W`+o$|e;NSuy0E2rZCI<}~asEHz9zWwPPs0F(42s+zE;_+2(I z$Lk%!lH7~#vi4pFwdxvbLvmHq_p&CSUa48-T|SAyPB|dN(mq2OU3(xqt%#I`8>b8> zot1&mPG(y$>sBE=?)8K%bF)>;7uS8Owz;>+6IRaB#`R3ug^{Df5Cj#z`&cdb)R7-u zu3H+ifXi$zRMi1z&o}y5U8A{hb{Cp*d}jPameChE#mKEa&T0fkCy~a;?vF4eTu$1S z`$2Y4ZDVctkO9pVY62FT#<_)#m@*(gIG$>d*GFZwYd4A&z3f<0hx%L_doN7<|5NZDYOgb<}1eQ{1P9;q_rDl{>Kn-rHS~-E`{QjfZHIOoGN|(o8 zOtm~=`GqGmCU=e$NWKY8R+r54j6*-4C)uAkwvh;K*;~&D?B#~gls!Sp+`?(5FBU%X z4v`anm3oigUU?gCE0#o+;?Q*`rj}zImQSSSGVu0b`6}RAWJ{Z0hV;3Jv-j;_tRcxu z`)z-U^$gDO^f0q~<+;?Fb_wgPSrz`9-E)I*-YBbW+70KBr2JI$X1$gvde1;AszT@2 zh~CPDSOzE=P2VZ{MAurgyeDVlhuBG|yM%iMKm-Pgpa~H4$q)jIp(#^5Gt~psV4zi2 zmRRj#zI8IQ92bmL?Gm$;XgTs!WwK{iK~Lb@)?!${5mU29MlQ7#UOClZ2&VAb9bb|T z7IQ*w_tX&^@p~gczR$atfgS_i2Hdrst2bK@(2OJCH@Y9HR<#-wkOX?J^<`1jSmo4R zzGGQ3WIgNVwUWCJU1Ik+_#6|Y+gsP{#eauWKU2grDTM@_YYy~`Xsz+)I{+u=slBRy za0H$mvNhGlER%v3kMZ($3ECJZfUUBXW_(@VkT-&|v(oB~Y_K6&&-uF6qhLd|4gyED?RIda%UMubBi2c# zWzUg)rC5*9Ytm$sx6}%uHElDYPq6H36Des}-b0OLPaY!Q^sck@m-_5=Oc-uO?g?gX z)iO~=_+1SVZu-H_Y00^-Vvjo0jzW`RWZeU!H(v~~`i?}(b@t#QXcop`iM$k}G7!WD zeXPPqRrZ7Qg-+VPY)~_y&0FmU*$Z8;5oo^|{i!sWR!e4SLv z65i4)5K#EN<|9iZ3D0eV#O2KKPW$d$#oh=rJhc!w5BRhgx*Hv(0NH&Fy49IGDiBOa_jY0S(=~$sEIfhceZd?ML6jTBg@99&xC5zNX0_yZ3^=Oe?CDq zIgHCW%k2V4zN4b<%F;96493uTd^LXsrsa1v_fx)*uIw@wKbI4r2vmLwndgxX{%UhU z6(D#)p7&$eKS`^1*QYKIPBd0_Ld95*@lL@Y>Sia5g`_E%1ND2IoU~r}0x)2KI*;U4 zErC>cwAXDIVpkc;x$w1LF=R6oc9OvMHNmYtdTeHttD^@_(MN2gNvW`peD5{Ras0AO ztHv6r`DDszn^KecbEGg0aOmOo@wAzx&mO)o`(2WGDtXpfl+HF;70)(JZQPlceq%2D zp|e{b%!D=CmGS5^laKmO{t6-Kp`r;xk1%sHmR6^@q!tRdy%=X_Ukmn@4j z2pe%<_Zl)rfxsfmdO5k!=blCN;H9u~7>~BKS zG{2ao#~Qy>7w%4?W4h+*sr_X=&Xfo8V{{4?*L9sBu_&@X1$dFNjl)iwr|%abtL+*g z#(jG&a2x!56783G(7mp^6lo;COGbWOlLqX8BOJ{;D)1z4=H$d4s7w)LL(zV#8a%*a z)tN(6tHLT=@?elnc>ID2;i7+C{uY`Hwgi*^LqoJd_kzqAmiN1w(K}RXJWSvvnIz3RzFG;5(|uCe7o&-%qBCP`)WFy|CYIsDIg2 zBjR8m!`3J0x|iwGBbv&}Yn1pEnZAvZa`aiVz@!X051;H7BPR0_v91?UI^__?b6%Zo z4QGIVk`iokR5H5KPE`MSA9btst1l^zo}%G#rb%>JlF6|WZL9BL>5=b~W}J?w?k@LQ zZ}KmnJYmgvFDj(Wbaz4YidyVl(`}Wsu7CE+u23q91gScHWGsUQl68oIeDRw)UJ6d< zEdkaRkKHUgbGKx4XyKcEk;eNZ=r2PKPofEv9q~yl#Q}FSH+%iel*=gu51RVhIS4W5 zU3p>FD8&uyVu^yyYLUqUM8kkffBZ5SCDXkR%Y`qyc15yg{5~J~(RaUkM~nkVZlI44 zHNkH`U6fenI%$|+gqH5H|2R24(O1=aipUtckq}`Y``LhJLG{LoR>z(6GaifiK&)Vw zd$)st(aF6YH=s&*m^0(3h(}W{m-)C^ntiEwEJwhG}iQ8dbFk)wh{#j#iaE@8piAZiu_uSbtA6`y5D&}sOpyhDBl*CvkA(({dAUqM<`^O zV&X+vv!xMKK4NMI>*p{)g2&s}w~TnVVnNL$Wz`Z(TB8AKznmsl+FSC`nEqX-==+Ki zpvsCnBU-FYYfB#GRfj7DmI zq_?`@0+8!nGYr8atx5m%Xx);I)A^W=dsNXiG^K9t86^^a0TPMe(k07K)K=2xTEk%0 z(Gmzt6lc{BMV~-mNi!s3W#YHlane;~y`5-49cKq5#3|WZWrkStaGzVvsQQ0B4R`4F z&S!M=GK(r+5jIjH{*1CwbhlucJX_Msx5mB^rxec>;|APF6+7|C?jGt(Hu_pMpkmBr z+R)!7x;GmL;9-^S7$yZJftH}1*&Bozp${cUlKuUY_yLwv%e%Mwx(gH&)qO2SmhadW z?#>7dJOh({#E(TGuuylUq00O{1h;rSw8DeVR+Cw-?GEvDd|yVNIq$(`3JOAi3ov^K zf~OF#-)FPD3|xpBe@}6_TCiUxJ>!?N_2OeRcmHPo`h3dkm+y}^%BXKQy7STEVeC1S zg3m*v&Ex#(XrrT=Kcg`$;p*-MpmmN%jbHP?)%Ok}b(#UG4Wu%MzMl_1>y2d|j`a?= zE;VqM?`4+B-ofa@3B%C&Wl9K5W{YFK zn^>X@uVmoo{Je_`t61#U(CB(AELPFc-sQX|QAbN@K!o4 zf7vhJ*8gMlQt`kctDE`tmWu4m_w~6)nOW8TMG0At_mG(rIzrr0Ya(Xaj55w^mKdQy zOD%E2-tt!d!M%K-P%m7&>+Ts8#NBAn-Bb17VNWP#2n?!=Mdp67c9Ewz+sMt^Evp0ZjhouZDTD^Xi3@27HTw?8?*6`xpIiS{*6P0d>d z;EIt8@b7@KwjO_+=NI5hgjUqJOv@msCsUNqI;c70`-3_DS}*#pv46o61T!bDFyj%A_5Yc6zHT&>K{*z&^||QFTMnb(#$k`^qED zb23|DVd41xvs*ei+_tVP?Ot-Oq|4z{<0iu_U4bI+&<40TEtr+x(m++yl)=RyQecz3~ntzIaz8u|0Uj+@H zCDliuScRpSKGituF1cDQ0OYL2CjY^`R)aoLwhP}*M;UaW$w;BIY>?GqS&#+K5@5<# z+cr}VyKDiPhg^8RuQxM}<8^oSst#^%B1rvJ*NTtFj1*BI%lwEJzrloQbxA`774J>NMcKMCAndV@dYR&4(iI zt?BeG!%+bm(t~M=V+UFJR#d{Mgeg^k4qR8FHM@1I)TjjJ*`i#$Tr`+D*-mLIEDxG= z-G>IIWA-VBc_5#G+wqTta&uM}leHav*-JXFRQ=IEjzN@&>(cesw%y9CVlGV)IUb;q zX+VG;n;8H@x!i9X&ry3ERPm2o>l6g)JQZ|0)W^n0-}qwQS>d!Es5;yMNS>?db^5C# z%W^_64N^iuayCSc9+%BR3ru}CiA8sF`?Y@uXk^A(5Ly3v0$3z5#)ZdCFG9A$!@m?- zt@H)NEYsM%>?$<>zV$*nAb(=0U{T1ESmP_Z;cVxKfJ77zf#VDr$)obN%w(27KGjy- zkX}Z3$WlbIkpf0eyOjoTJ>e8dRf zHZEmj)(a|~TE+-25E#}ksW+v*|S zh^{++em_Ry5r1`P)F>z-O|R4R%X?PM^TQ{>$FxqS<z@+*b|Fl@XheY%>SA}9FGlJ&{KzU-ab2+iI$W2x@;qh0QzlSs zbyvhL(m0IQR3y4b7r52NajH_dRdqc%@sZ&HyuK0HUR>HgbKlTS0NE<5SeRCP#N-?g z3+!Ob*n6Gk*2A?m?GW57 zp%cm}RkNmJI{PR^g4iXw7IIgpx7{lW%k*)~ZfhO2JhXgk&J_-AJ1l)=6btP~#OHZ- zubRZ4&Ns6epnL`oteNkT2!ZY^>Zv~dnVEF0VlvaPy2Jt(bL0rS9pp9ijMP0}yv)5e zjRr&AbxZ(Y!zB6+W@_|H!z(tyf;*_C;7BCb-R-3~CLC2Tft?Z`RwX_-5-TyxIaR%- z>00cvk8y2xxIw>$CO}V5KQ>*k?Kip?LeMXc6y&&v!hgnzNDP$V^>H&_0x!&Yxp;CthjX@yoHgi=S82nsPL0 z@Po`u?Oq!-^q7Wc#yFMYW6qhpk)TY0o|@7gLMZhQ6?xnJ{ac-<(aD(s8z{zDt@htd9M25Yq>x_r@JsQwpQDtYKca>#-WNB ztV;dVAJ;XA)G9K*J z!d+xOz(xdJW-rL-lg>^S^)0ZbJWjMB#SlaA1H3z);ZJX0uz72cOE^uL(c&~*$`D_A;(m!qyZ*SEvU7n4X zz7tM%wS>#2bBY(`o;kO_rttqZT3=Hl~Y(XgpJk zj*QLc2Xr&GE|l88Kw6-#&E8DAzT*%Br{7OIEb<&+-_P%Lcn5i%t)q1k>et*gAFmgB zspZTEVb`qNYIu(|G9_%8W;jUY762}Mfi)ZSDIzN&Nl7P#Sz*{ELJ-2(s;K}sNj;<(znoRhj8KH9} zr!&5?0@s0yNx1@U;E>Ti-X_#Mach8gk`lMD>(R~bqytC$A3X*02?hyv+=REx!*|9< zi@D8UBP1qI4eO5*eIvd5FPi&nQdgj7!XS<%5l5zDc+i}YphVuez(^~T!=dLBOoj0| zy#5d`w&hE~($mT*HYyud^UU0KQ<`kkycWz`ipuy12kWq^?i>(h_cx%I=*hBI*SEEe zm;Q;!v1^@80SL(P86p{?+XuosT5hve?`Yzo*}q|%m?Soz1> z$3?Zc!Du}7oH@OOb-EeE&dbQ9C@qc0U}*I*@Qu6EDtvM~zlascLs+kN+Ury~Uz?4l zl|lDtQsQE7QVyAvM^`#5&J6@No?cc#(xJt)9el_$*>w}s*t@x6mJUz7Ed!_M1SBg9?(^EWp@+DYgb`brAf2QU~Wsd5!<~Pa2kt0 zc}_SZ^+HCkTVnF^3t=cRBp;wX?y7-zjh<;UM~34(huC#@_*L9;W2@dk-Ze}(MUM4K zf#F(I%DA$2uE55D#Epd6vm(5#Z^4S6p=72xOswpqLC^N zW9E@Z4QY}^0ocwjAasfQ(7SV{@kteBU9m=@u7#yC45m%aG+EHrU~r^YK-dXpY@!Y7 zUU6t~Dqnl@dRMkp=|+e-fD6K><|qKzceV+s?BrMz+wz^Yvo|}dzqq7QEb+B6P+W;T zW}-_#b=c28JDWVFk7QLSHyhbUX2!`V32`D~wF;P3S*b!?c zLn9xlI`D;3B6&lc6VH-X{x;1bVs~*H@Psl2wKZRPfsRern}j(-t^EKFx(i@I+6e!c zvcxpnuDceJ_@eV}F^)ZPQV#NYZ>O;BBIUtPF{;9RHiN4`7cN3#F#iyAF_|;d;OlZb zT4|`!@EI(2wXi(u3_NK!>Xj+Uwt{?aje_cUDCp?{-ez03E9YII;|stuB39FMtxOKJ z@r>H6c75XFiES8=fCfUT7}kMF@8^8;QMvWCA5#+<(f|z6^4Na4so~LvtaaMSD?!CG z;IPrb&Nb9P6Qv=$brB6-sdiLv#u?P~HqLpNba`4cXe!D;>&bU+0dixm^lf^Rd3us2 z_fmN)GI>kra0^gPz1wr`{RsHEk@413P-@15_$u{cv0|9i6#k%i%1L_63Tlw9KcX_y z3s*$?cL|0&r!%H@txcswz1mQg!nQpbGfsXmnxutcDu)(;IF+P=ySM#}J-5am!|1Z{ zV7=Y!ErUxm`7a~7UTEe#mdZE#xqg(~WaPjDB{B)(FHRImCwtjc z8&U?_c{@N_{_=am5xTj%$50$Y-?6!ykCQ;_zRd*`PcGS16bGXtn> z3{Au*rvEreuNG~t9IIyKMtPM;{i8$!D}wTjhR+pW@LcRhWC~dw0OHv_oyfns9OA~~ zz21M8nBnvi8*itx?TF~Z_~y*ohH=2Ox#;<5P?UR(FAxb;y_f0Zchn{K&RQ9wZ=ede zgwad{xl1ygX${`JnU6~d^Li`DuX#6K(9S&~dEU;Mo+>(#o2XR&Nk3Q2SS@3ScPzJ;Y3w5OPQKa#_i(O`AYmjENhv52)RkkslqY{J z=d^anCL1^a)BY_be(ufoMtQh#9P{DnnpZ@J{w>35|A>unPk`yGa0x7>JH>41Nm%Fx zf;-f7Q9rEtt*c;LZ}7p|C|)K)uaqU)eG7^za|%**U@OwOn0dzy5XN0b9c6Us299Qa z0OQf${gHUBLCM&Bxshhk{>a!?avJz}t?@hxccp_ScqwWrnivWcgr*nT zO;`4xTRnJ^V%un;P-Y&(mk&DtnqN#Ed;!s-_Rn{EUE$as7xq5gJo0r4tJYssD%Xe* z`DN2k+uNrBLiLxB>}7yd&J2rF#h9FcZ1;Bh>XwJK&-UeL09KK50ud?B_coH1&PBS7 zwc|(R>F(^~ce-30jrg+Bqb4wL&K=i!BLQ|c7ykO^XIb_sOiQ=sb6R{5eu)XupANyj zuv_9}gYbb>ResS5iv45qfZ-7hC=GPZ+HkcQ`ju8n*Ag!AI_(2VIt<4P#=BhQ2=BsO zm)Z#}9xUi@MVTu4inNaEt-Tt%8ZXV7JI~J^0m4&hH;Mj8rca}t5pE) z7pCbTq5_3n#Lbfh)D^~5q|P2wqCwS+jGgqEC$a+9uedP=8xM$*Dp&cy>wS&g4@wdp z#`Z5a4_I2iOcFU9ZAkW?6V(UiIgR-2$0O>`jB0%tzlmA{yE>S%wsY2V1yz4ce1fwl}&v(Kjoi4Gsj4#^E z;`@+7IMVR5U!)#$_S3q>mLOKM7*ChAu%JGeY459EkyA%tjg|#{CGsw^)K3I^x4fY@ zXOP(7c7A3288VlLAvc1Z2Uc)-*^GE?sHjnsx~L13T<%fMNqGJ7Yz7hsE}-g~ZkZuD zKFo|Q8MzC~oO`mIa@q816IDQXNKY*C_1=DcJ4~uL1Z#6cWV0SE557V~IYZU?Yz8`E}G+nF4611B~4OVTV^pFvB1*mhCavR|G{Xm8jB zK0}C>r$m$rB62elg&++>OKhM%%We~RQm?1ZvAN88 z1hAdI9Oc!wq|Gt7tzSQZ-Rhe%YQ}eg8hVxrvtppJ|CpTT<@U(OGA7yb*Q%zft zk1_<$03*o<`((Nq=N z0;uD~n){Eo@;9xd#Vq!!sJ)lu8lyCY4-;!MJ0Cf>g>SUDv%a1k1Z6QHtu=B%r`O}- z_U%l^h6`svs8}UKaOf9$?dc220u8#8Xe|m8z0PbUMQg)nVL_Ll?l_`Co{_5|T7%b! zlGyCX7pEPRe>|eslaw(Z)>RA~@qf6GdJNq5Zi2U%Dv-`1`2<6m;Y_4Ov-R#?}TxJDtD# z^of5E8F~y3&fk# zi~mL=Q0BLTcPK~R`#p&8nU1a}nfv0U3pconmW6sc%4g`DkJv)&k}>Kaz^h!F!udX? zR#-ZN1O`s<&a~!%3g#5@IplO*z~x&-JdA>O9m_8q`oFZzxjvULtG28CiNiPItG2r? zWW@J^_oc@g@}))qbKnuO|#yfW;JlC+DhPhmua5ojAO5SCb>J=&m z!$NmVVBnFdg`lLJ(z2J}EUnQfzpuo}Xv!iPV)WbK7{C&x?jpXRqu4T*&?n4$nR;*8 z5r>=tn)qTb?%^5u9iOUa@=uR%zN~fB_~ZO04h5|J$)eV=IZXZ_2CXwhRg`QCv9jan z(T_`fI7&gDC~D}u+_%}Lfta2^HMsBwhXJ<(T6feZ`5-JFFExnZ8P1l5Dd~4!iz&bP(`880>v3}CDcK!oU+xb4O`Q(+uVJ5{PEEY++*9cxB;zy9`<1u-+L#O zgcGG7#`tH~yKm2bLiW0V(}V5j?8{rj6Qe?o$2h3Q_MWA|erXq0zXd%hnAyhI?{|jc zmHQd`TVYG%EFUbmD{mgF8Q)X*6` z&|`Z-OlLaBA^?o}Gt9d95r)4g(*f<^g_g#j`c3qTQi&Y52fzU@M+^g1i$3A-Zy1rE z`2FiOV%ff`mLku#d0`Eu)~~~tzfp_&WwF`FPmgz^s$h5ap(OaWk^ z-nk=qvf95wPQ6yK4{ zT4QeelPCfmGausQ8=SdKQ>;9rvG7FLc(!?*?}o@V7d0}J8EJIV*V)IS&N#=tIaOv{ zjji`_EfIz9m~^H$%fWP9SOy6L{RaQ)YySS;Th^c7_eJ9Wec%6^&%a~hcd-2Xd;h=0 zi%TQAL4@WqvN!)$QnV&E_GZVlQ?dT{DyIaC&uQvMV8ZY3@zS5*FceV-%al8gK2;xs zRL_2@0jI&Yx1U%Ryr8P^T2-rHI=Urd9pc8>7qq8Nv(-nDs5H!#T>F-iemW_oM@ncM z$wUtRhZ+BUzW(Q2Mms~R)jE*p`^P1c1ehmFGjsL9=EplxTSL=Qi{=RD(Tm|Ryww)fY$ENgD)K&vZoVzzl@s1Spmln zFpn4n9uWoylt~D^iw7cw!MD3x~>a}4Ix(EpT_>|l1@~vbgGC*coL6Ow{DAZ%M z1c^Ri0*CdHfb^D2_msKebYfq>al(wnza{rPu{6+yXf)ED+PwHj5#1u_p&Pd_?%Td| z=UO%0Ep8R#e{V?h8(#Ys69p|)CrhOCJLbtcuP2V>1=ck}ZvlG0PaI$MFeT9(9&XZ0mF=+HuzH1dmom13zyw8~SJ zDtOge4lXoH=I7Ji7cU%l zxg_x3NAPvZuv&R+C?(xTU#muJNe1^5W?q$3+nU!`uO)?cS6Ce?CV|73_8X~r(pP=& zri7E`Fb#$imr-_flzFi8U5{K&om&ejn#;ZI`MQZ*7O^RalhMxuNRa+Q$G&0wT6V18 zk4x+n|2dO@)t{wR{^=gPLpO+?dlD$^O|n1T_vsQV(+`!|%c2n4+l+P5e>QT>L4Tr^ zK>&-+MtG?D1Hv<3bOWLFE^JCaXun`}WWmG#-tp~!qf>$dS_PM9SnfX(zH17hU}NRu zCs^By&+}Dj{TrFw~FHz@zC#a?W?n46BU%n^#nr97EquianW4wX%Yn%?cw0Gpx<91fux@B0%Zw2D% zPiIGbeRlXsh-Cgd-vN?nVesy&2Op~ z*xOTYN@>@b1lfHx9xYMAlI3ZIRrbN`Td08nJ~X|;zE7pj7rBfrev6AEXgfwF;wODY zzNs3`&EjS%@97rs|JnMuDEh1Csz$8MAVho#EXm<+fScE@#3s#f#nE;WzhR`GKV|@E zB3{ljf6E(By~7HnAiiOU~ZtQE*mw5}IAyQQ2m_da~3m zJUeFkdMGpvqyoNl9=j-82@pd)4%Fyve@;}x%hA90a`d(c^RvQ^Cq+hm`^u9FyNk@v z;}DtSe@;R&df4|Mf&ba$0_wd(9oMIS|FK#i4s9`)fBV}|hVL`$zerF1!;aFiDH5h? zSPqls;ANxZvB6j00_l6d^JuIU;q2fEW#l+VmilU}mSZoU@ZwsN;x=m*?Ig{O-7Q+! zei#lKTOWB0>>gbAhJyJX!$7^ggRs{x>rN6W^eMe5##s^k^fC`-RWHdC_p7AYYlb0i z^YA)f57(|qXX%k128+3HKl zL_n&q^)xhv*SmU=Q)S8>+HQ3Qn4!{X5Y`pJvKIdzbx+}cPP^^VALpS-{RKWcv zF!(1`e1j*R`suZ^1JZr2{&xvj0oGV+DRe`Au}E7Lw@eyq)d^MT16D?o|v=jX*UCkazhxj4~kh zd<}UYH(TCt!;3@_c&cL>2)$#+L*MQDIi|qq(_eAxKdks4Q2sBb9RM8@BEn1#fGWR$ zB*3XYF;jB(Re49jA6ZASQ*P3yjCJN+v1|c*z#r*-WgU zDN913+Je@kLIzVFkK2^;5U6JD8+9x|xrrBrF5*)s*Y-S0+Z)K}Vy8jm? zi1WkIvB1tksVUj|RkU^-^-L7gS0Vaika9dB7+N2ukL|uwMArk=jddMba;R-^vhZpG3>gdD*Uw-R&hpw`~YP$b5jew)c zyXf_#W_>Ta*@#;i8{$azFi@7wy@oaYQf#Bouq#?_sT!p z8cg2*XLC=6=|Ah$Y5MIE0{TgHtWc`+&24&tKKR8yVuc9{#b3RraLoBYM*jSTKi2BE ztgTb)Fc|qi)UL150M2lO#9?sC_8^$oof^kC=lrK|{SNZb1>*Mo*}L9c`?p;F zZ)cLx5QIzqhel}@Nj<3y--NH!=#8>Vr??8zKUy0=%@;*fgfE_NMd49G?I?USNAdQ! zKaBPsQVmPSgC1s4>#XekP#xeM^o(NKRfq-}`&fK^<`ypzKQlS>Bp&0!qjhXjo%gyF?wCu%uIAeBq zR53Uoa!-{q<@D#-Rzym@Ied!s8u5$NdZ-!V@i?DQ3DX({ul<8yV;MB)I$G;|7BDR7a{|0<;Y_OGLuwSOy$5%EQD zUQI|`D+NCy<4D#CKNedDUW?jQH5o-_3Ly}A`{OT@<-$&*l6d4cO}hF!wqLuGt5gz_!Ird3~na16|p zT=7$lc==&_{aqGHgAIDJU2Cr=(9;bqbd{@%6nFdeByR^_fYbHi3zl-@WG31=@F=M`IliKCK2VS$3;wj4ded&Pc7i~vd(8Tvxymn1li+sC$!BX)<6nqYxZ z;Ee9cJXiG#uq(8p@)n+vQo^ql{9#+iz)p+#k#-*E?D9-sKF`*j$&_xUKQtfs)J3 zwW^*E%HQIS&yeWl1SkPzI1%m8pFI83i<=QX7<_u{779LfK{O1Qbq*_4w~U;3k;Fm1kmR$IOc4pTmGnkc-@$u|H@R$tSS6zIoeKM|bX;=N}M{h&}q708r z>J^9=Vs0pf_%i|;`0t>7%78P^$`~8$%|=}Gc4|~Gp^Co$vp>1BtMZEx%olH; z{K@q#;mHe@s5o~Ap1y>Bi*UG9PfnJR7^_)gi;VFEmv57h*%6Ec)6hM^+RUMC*ErST z__{)}%?;1g1TiLonavrmMF6?)Y^M!SR4uI!UUGo?5ido+8vfGD&AQ16n_qAPyNSA- zghWMQp2#lnq3stMoo3WvdMhi4Hx}td?GS?w_WK?_3s7_kdkbicwI>av0vU6MhJlxqn;5+xwPE9%`<0v*1CV=E&5N&A+gOw7XulJUd zDNNJ7tiK%G;QjVRWf&jC52)8%^;RjqstR#$XHjl<3*p?eTb?uBuwdK}Ww(BZR3x4r zR@u`8#=Z-&vQSNyAytHSr&`s_mR{#(baF3AsR-KA=Paf!Br{w(=<2>E9_V@8e$hE| z2CBdL^aTE2TyN3OE#Bhf_*y2H^te{^n__Jc&jk*D-6pW28^{4y{yX>Yhy=4C^k=L2 z$Ln8OFg}rQ>#(RqBUTw#5pH~^&XfsvFe2g%N-?d`fO?Wl>2(hNTge7Zaz`}PJfyiQ z4!KtQaJSqmdBzG-qa3$RWY-kI8n`qQe+rvFzKEOzx+eVYMdUa}gGL-Zelmio_&a@^ zmZ%(~X4T&eku`a({>man(5o3`bA0~gtbKaR`+_{!?Lt|I{(pni#HSa(#&Q0yP#Q#T zqLKFQ`JeO9Pm1z!gom!sZlSMoG*j#pJ{sq(r9m3yLIuwc{_NprQ7mSAe+e-(p`j}7 z7}!50jz0)x4;{Kd<4XSldyx4i8QZ-?`BxSLUAzg3CqhHn`Mk-wJ~ zMvJ{h>h|Le!51up>!O7J3e-@%=ZHM=3aO}!zDOmVU2$y4|XIiYxqLP~*-Sr%?96A-JW$!DgSNAh~h*;v~X zxlZ(0TTI!@i7rxZq&()%64r~3$1AkZncJLNPBBh?&M#fW*>SpIF_Bs?P z>Fe7Oo15Ss>Ea#{_QG{O`?E>$`32*Rg8vl8i!0`H09=9fwbw->o$4kMKv$we&#d8VSjwgTkax6{qVL$g%Y4@Gg9 z8-nZub;MK*6YWNuRoXc6*D>gK0_*__P z_xZ;x!lfmh(k@X^tGgyP3y}G=5d_z`Ue(rQ>GJiQ>2tf!nsVj{YHkW&U;MaVs%#CD zfJX(IGU_N7zf@RbX7^ZsF>vb&Gj12Lcc;ax(5Y$fMKGSYagwE#3FhV$hbRS`du6m` z&T|RS9S`GWsTBVZExvgLltMI63LsZy8g5K=Zb-Cl+$WyrJ~7_svxxMj!SExmwVSI~ z==B`l00A2kS%qzT@4?IOZrqRMJG-VJ!Y%cC#->I4sn}}o|5HV11WdHxC@a6KhO5nO zi*E^PUDE;2(iE%S{yqMo6{ost)5nJIIOx~pdS`TTfMJ!w7{ zE?&cideUqrLsv>&d(3Nd?ZhHntNhV?0g02>vYs^Rt<*BRw2&cZ&-Y;t8^uc(6@}jJ zv4aKujqTY3%5V9AL%E1}E3(&hJOX5H_nZRDvh3s{v*M||(SF#hM3l9k8fo&J)P6Ix zUfLqN2x61P+!0r<@gjj-A7QXl&b0Hg>{gVxh8ljfZ}ZGf&kW-=6>oKSd{D?@z483< zAtb$u9Cz)mu-R&q&t%+BPuM*{<%h51ubRHwOj_YVB5A#oUA@(~G*=I$c+0WJ?Ylf0i{QU+ zwF(~XLfICx#|SD*<7}|wbHeD^&p@+XxDUP5MbEFo$W_m{dmb~EV=}y}ny(|-1S1#c zC<`4{5*ws6@K!{~`0e7GJBA$)v&mgpja^6!nw}lqksRm1JzU}OW}6&(S-7uTv#2q2 zY8OTx(Cz1JWbRWDpXY6{?Uj|Gd340`qq+enyKYtJZhYM9cctsJFB~fN&f8e2nu%ya zT}E4Jm!W5I^XUYe9r6)iqb6{?#3wqBy6J_kDgCDfk2X$R_^|*uH9hYt$xe35L zS9Xd$UEW&td20Rc*|8rAM#JyP;K>VAyr1z7L+S5CuMXRI;;#d{NWG%AmsCO5ikN{jQhzeT@@D(%r4YaV6=dsLHca_^`YO#~|5s zQRpP%NYuVGLVn>{02{#)vu_gmy?b4<2-?scTsk>@g)Lb84mbr{q_88+TN#LLde5*) z&k5m+IGV|bWW+80-t{bJpm!>VP$OAT_H5QqaIQ6Q@>^tt;o7>VW;|HHYJjrH*%77a zvN^Uu9OwM!vaxXn&1Wj;9F`|dzlJ0U>NF)($#SP^-tTEsXd_bC4D$~hyJosHEOUhS zb*Ga1et%YUK77D#0?FL1lak9jS~xEhM{zUKGFz_*xJX=h6plZyQxb|Nd^I*EcY^li zBV5bL@s@8Y?D%SGYO}B&=xU1Hd!)C?TZTowu5ZHzii(s7 zNP{RHBGM&DcXtQ~NK5B{fGCZCbSm8r-6)-dbk9f*J;DG3GcfZEYwf-Nv2^dXkM$n! zhv(VffDa!2?)$3yy3Xr7OZYZs61Kh-7f$9g3aIi$RBW}Ghy3D6Lp^ulgVTC{-3NIj zIi8iJ*=`&0b?&>*HOoQ2O+vK`9nIR59i3<-0a-qo=()qY@#OueyG|cN6W(f7GH973 z`%^EU7@Tj`aO@KR5!cnBy%rsz$=p#D&%gz=7)IT!MmmO!Q0iu8sSjn#RR;OGk6p%? zxX#LQ6Hj}!7SkvWhf$rysMpgAK-Y)!VYVR)h>wm&5AH39cL+iqgU3CBwZ4^bc@R~G z#k-E|>ClZPOoO+LY~8I#;`T(w4;!(`aM3=G2(r3W;-7ZzuC^s&p6Vr-Xe9Ae3wf?1 z3a&~a6JHGRRXLf8mRYKT4^D3$7`^jxljYMV%B^KD{?Vnifg*P<5HS^g+XJGNKB_+c z*0XD%Z8;ri^0lJ-S>@=8qbiowTYFF08AN)&U}jU5!PlfB+_Xf$VA_IB)X{EKcBiV} zJf_%KLg;v%SZlLDRxY7>*KKQ|pwRgm{Ya)p~VwW*J(|7 zI4Ru(7R9$nVEXxAKjm<#7b{F%dFPEg`Q580Lhg!gUTeB|e)=3Zm0tVv#`3&b#LD9; zbTT*tkleiGm`+qNckfN-GMxT7&^Hu%zdaq7VyD5e?q*~99U%!x;E=fiyoZztPWN133mLWp?MS-l@ zmUi~(g)#dMWZt53x8DAV$0jk}BuUp5TD5yF!rUemF_i3JxQK)`qXiG0 zHRp}cyKC~fP+r)#Bb7k*GMYo#5rQY~`?T?v*{O$ue8m)gh2z#hq|M54tM;?9ORjX1 zEMO}BC(A`4m;c#W^@O076-dgQ%z}*MY2Hm=L~Cy7`&sAev()cn;{j!3D?3P-y(Y*a!+mk#QC%V92cdbZX)Au~^mr7<+#Zr?^p(Mq# zWgnVXp8Yy1n$}arS#NA-Uch4`|0%S4w+5NH@ zq?LQv$(KrnW=cV{Vubrmk(<)I?3-`BGsj{)OfN!-VP>R7ho=TDHwWV^D@fSWoD$g6 zq-ZfO=gdl0^oJ5qppiimLfHw4js%0~l74cxa8m7aLw8R)h`yomVQVVV)l8_f;uDAC zLy~qX=i{8Z39m5%ucCqVv2^i6oO$Egy_(D)X9vWIjj%8|Z}HQBf$1Owo#(lO-B%{L zEZLIj5gGcnz^lFZc{@!9i!MMlbFeIOtNQeb)zG7~xb%j!82Go~U*!t%-*ScFU&|Gj zyHgX-FAYd+5b;*IhEVv7m*aOFoA)R4f2qjcCC8be{xCFa0uM^2N8$}r}Y^LODU{%CWdgZKK+ zwe>7F-}#zX@*KMNR<|Ht_IFPDFxQ+D_)yxN`$N8Wye84UJnipWP-a zqjpS8u0PQ5X{XMPUFEn29JRQ%GHY?oQs1#8mS(j@yYeb5Fz}`Y7=7PVf)vqhvX@^$ zV>n7tyWEiy<&1RV5}U8Bgq?eA3C{egqw@~;qEqjo`?Fq~QN-iTfPXnOct(U*Gr`qpWyg3 z7^y%acK*_SGlNs&(kt)kHZ1%Rh8&jze`$>M`D3)B=0t#R%|iW=RsNrdNZt;qW(eeR;b)2_1#pAO$&NRKJ#zee?^W&@@EVn| zZKpSsM8O@UZ-Aobl9GN{vcKw*&MJ|<9GhL{{gvj4jHqnYTR~zSbp?+FVw&q=+tZrH z68l+oH()93oLv0VA=gTag7w*tXe<~y;$J*6dDN##JDkd<1|xoZdAZE^NKmJxS|!4H z>u6kPW=aWrW{~Vk?zT!XTEF*B4lV_#R&dR$yS1dHclLjkr36KPYvMKk)h1rTxH7w~ zV3Jd58=V7Gz~V>`(KTsCk%&=ESoh3bDSl5T3cx$c`pmKEBxWAu`Hekue)Pve@E4vE z`l(8pX-z1x+}fIBgzHoX|&8B54=`y4P46B%03b2e&53hw7X~RjGhLmwkA#C zt=M$3R%J(Lx}{z2Ar?+9bJTbJf#4K<1CNWss?$-GRO?)7#LPW$ADGVbRbP}#UGz?s zSEOl;8KW4v8V3x(TdyJRGq12Yd}l(=On!<(z7R- zRh57T9HczItglio>Z|3S)>kym?6$WJME=ZJfonwH!r+#LE8*D&WWd+}x(ZD@|$3I1yYFeo@k_b`%@ge3)Ol?OZUAZ2R7%6dBnROD{qr z$&ssRl=cW3P{J9&cWcUDx)rNt;df~5S-FJmr&@YF{Ls|Fqm$)&%`8U$tDekf<0tD* zO|7fV>g}DaPkw+1+@+?R44WITWa?K(z>u3zCnIiGW43AT?Pb4>+GfzF&5_ugQK87g z#e`M^GGDEbcV4%E6?!kg4J~liA_u;Y%jjg-WM?Zbn+VPo;cN-@v>>H8JNn^1RmANg! z1MWzf^38*S!iFo|b!#xq^a`~fwp~5pa;yYC+md$bR&=Cfy;7+LlSPK424vkI>c!N~ zSS3Ov>&(eNmpU>Rw^8H@R_dyw}$?$FrcMfaZu}^@qaiZxV_@ z{mdHpU#AUtGto2q#Hp(J-QAfS{dAi*EL^vcG|18FR-;~Uc`^nMaNM6$4f!#KyJD^NG8D^SqIi;aB0cV0iG)TZ!PAj1RBhxfG$b$5`Ql<-TOj$`kf?A*0G zj@$_IRtYUzUs#XsttAw7?v4}{SI`_Gt*j)TR^y^4&$CF^oePg7D)W!h13qS+%4n~p z%(**t@)pY`W%%NWK~5DZ^$uE9W_YN7nLR}>vggB}XHRge8p85ljk)Q9^}9-<7mX|B zoe{Q5YQqp3ml~5MV~vBMK&L{c+AdUOjoR0B=gre*r;h@ziM^Pc=Jq=~lG^R7`z~mP z&>DY`{lrnwjNJo1COTpP&$svVLI*XXw>-sLrweJs_ydz^Kkv!i2}n{a&^5uOgdXD% zaHgR^m$uGUQR0=Ny@jTL_gp26v@5;Y9h^1Km)#~%jkaB}VGHHE+>#{TFrC7*fIQE{O#Xfa5CX#(A& zv@u~Q7r9-ZK7~n9iewtjN!&c2GNkh}VD6bYOJci;U-WWi96zLZ^}UlKb#~&sZrwc~L|A*2HK)A& zOxg@^KoK42bsQwoa1Ov(`+?kbmY$*e85HH|Z*S9`p8|xEJ}EcR{YzL#K3AB@!Y18> zI7&+Rw4Sf%{%*cWy1@7VY4-R~y;$v+1-4i{h1aky|_?5_DYXq zWYyxt<`5fjka4SUQPNm~A`z`v$#qYWCNMDVq*e9o#fu+iI^n>ON%(pdr~Bk4U*Gwa zaWcwL^zAu6O#MW4@yT#}Ae07QaD{HGpgrZlZrJatevR%Mkk>=@p zlr#GrY|)Ku^^~gV;th!<{a0t;4{J;3o>b9$_Tzi0r%Uh^taL|z@1|4DFYFzOa23{V zyeTCUdTS40E#wW=%iS!JT`XT0(od+Mt_uSV-EQ1>5v%s*Jrc#}*ZX}o ztv=AV(R_~d9&C0u=R0kFAd$W?DqE=8Ug_D}ggcsjpbxF|Nk+Si(%JLug6pC^N%eB< zCSyNw>_c!8+4O|NVrKT#C*}%1kxr}#Ks7T{CDb8gJeN~mCKL7BQC$OutRairC2_YA zyc>4ZT!FFqS~ik9-*Nwdrx6srz_(RY|D-L!&TB;O8I05%x;dBkCD-|YuB|k^rL)&4 z>9bFQB7t)|aos`;%j~KIBH3s%eph~UK*f&SwbZnV=Aq%f+W6w`%TZcJexGRrC%$ga zjG5K3G{cAU&N3(wU?zPXNjDR0CX=IX&Z3mDPOHnaWJZ<5$OJe^GQVk2%3a6X?U^(K zBAXYo5YcnM@0yZ#fQFX?XF%jeBtR4TI=t>CED|Wewa;TCg{lfn2`?B zSLq4At-4gdaz9oe)ADh41JA~;TW`Du$|}1*hBdRHfnql^HX(b?L*531vUKoiv0htC zF#?M&7#uFff=cMxT$#jOCnZsU2EPNsePM3HHPO*eNJ+mkjW&|2>y@$Ddi@B*m^t04 z|Fn(vZPDov?1;Zza&1@O=+&to$D(kg=6GK;8j}C~x^>aziA#2u_+C>!#m~8}eii%c zm#@ZG2LLA`T`mKD@B`Y`7Cmm*?4TdwfVQnAnH#n_=!ZI>ZEu<8hMf-jVKlG4H+(&T zlgCfbccqwAe)y>!uI97%hQSke^Xgtj%xs0J*b!*@y{CLLaX*iVq4s96#%EK8TD)R& zdCm|I{9+gR@(>Tg;-Js89mpHo56iMYXSu%VOQhQ7ENkye@}QWlGG#Q<8H}r|K=cK? z7k_Y0k(4ek@|kY_D!zyT2{ld5ExphR)7x!N{lA`EIk>ilH$3orE*OI05luHL^7eFQMUeztp^dqpa-K7HuSS4J+ z0x#+H6TD@CyWC9ck^N38Q>Iv9l~y#6eA)23;olDSzs`9e5FhI}WDkqyqDp2rd}9>g zH^;*qJec-9g#YKK5lC``l3M7A3j<$R&AbC8OjA30Xpsh|oW5&*g0=!or28(jJ9`Xw z91wJgcg8R;rugzw2J0h_;`WZd@4qw5-1ngg(`|vWwoy*@yJb1sAm#z|F??I%-Kcue zkIua|BaQ9Oa_;x`cJ6{LfTRH!>=v|-Ml7pc89EG)bes!VwG= z*D9|4Piwhkm*YQu2?zM>8Bv0T?yocBbxsWL1rRv@HH%*BB)M7F$Ac?VWvqJ7<^Ye` zOl2)?jtY?m6xyGyX|23kMzH_ryBTflNZIamnZ}}g8AfD3hn8*1b1^9~tjQG5KBjJM zZg^zg=BtwS-uNvPwQ~|r1|>roo6`WLqAJ95eHCHn!q|uB#OeYh+}ZK+?g>vao3X#h z;{5vIhxM^ojW$24R_}Ky#)k4D-6CCfU0?=Jg;>-^!Ey3fYHi84br{*GNbX*)hTFl> zl9SoOM0J3Gb}kv`#tWAtuX59;ZtX&mwD(*IYaL$QKd-W25DOUWJghxw&UcBGD^lx? z+-z8mKKyzjdDwL_LUK%Hm3=cLL6DMvs9>(PyJT^Z%62lNagV2;fd>;;$ui}E)tYL0eODxbDMKSvyAbzTLWQx1@if*Okyvv^ z=zG-0%FK~$$zML>5j<0bnh>8auGva?WE9)qcGd^KiG0&N!GjeXPtmM(l%`K*?9Rx+ zXYV>*5$THAc=RO|+9t5`42luXbcE--y0ws6xLLx8O4Tux&`(Xf1bIZSgY4yy;RKzLJ^MGJpZ&doA;s z*GdmsCJ9P_FP1~Z`IkkOjzeF5&krrcSQ5mgu({K%>s zf;S0`Cu5~JmY!$QNUVE9@98ox%QnN;A2(*bmGA)z9_c&oj(xw6AoU#D0&bvq#b~*8 znSpTLeFuLy5i}AX4Z|7#p48h98>98K-x z;2TX9>6Kf)U|N*P;Dwj*Fd<7Zh0$DMS41SCeXc9S-_f=e{%AX19K_77Cn8aKK8gy^ z{os&X>B{eLHfvCH?n&FXZKGvV0NH10w^1vGX_F)hZ?@q9rdd}67Beandu^Oj5M|u7 zwRHqoyZSVh3fdo#GmFFssDb)wz=b6v(E%NpmVBM@?>Dpln46#4PG8auqoHK)k~YaZ z527dY`ypVyDYur&q*J?~9*GiJw}uNkpi$6;(FQR1nS643Li^d%ltadJ-4DrLHZ^ zx0DP;>@dVj}YZO2m#EcmNg~ObwURiK`RBnq8JO6nzZ@|D^o3T6v zP@Vv@(D*uFV_k+c_tPy4ELf}8*%%-=nEJ@`4Sa}~F$1{5EI4kR?|D18(aY2U<@8|h zZ0htQOF(-AOJHF&qnS$>RXT|uHEaWRB_j4lU6LqdG7c3V-)joo#madx_%!<^n2B4I z>7z9cmMnFQj6O=ySlS~p(N|$}2E0c+$+K|+ZObI|2kkUaWd3_zKsnJsmqIZ-R$E$% zV&TU*6eJg^cLG(X&0Qzy^5pWGm`BL8qqmCmz7kt>unSDMBa*iS#i!a5^t_>4lrpEF z0(`2BXd^Gd&;zMN|3j)(9T7sWDHruRKX~ROgu`=v1T$f9+$n4$V1EzQ25-PI;Z6Ri zM!mQmwHc5h5EIL%n9fBG*89femSF@zd-^Zc4EHGuqCYoQQ1k2MvwD*W8VOXm@jK0J z?XX6e-Do2);6#a-RnG71aIw4!ScI20=m@K0l)mU*mO9_> zG!TRpET$IJOXvTc0|~;+11_ncFGQqjTv00h1#NYTfXqZ>8v8k^eu0d-Bwj(DM5il>E$*?UUyeDmeQ@qo z?WK}$laXJ^!?^F6J#EYJ4>}EYyWD5-z2m*i{m4)}IkGqoCIfBb=T$Q=M*Ei&WLP4B z3pXq{I5;ymm(J@Na8|<6<5pKRvemDfteu?uL)o3|!)9Qss^nLG8!(9;3WtZ- z!!z=H$iF5M-dKN7qQ7y;FVmmlt_h!Ku~+AW`-1s$FsnoaY|MOLN6)|WY-)PBcZF7e zNf8=z%OJ*BXq~qGepoTgCvJJNON9GJ1qAC)_srs$L4kG(L(E0qqVSAjHFuX@-S$&b ztBjS;^jLrCUpd1CBkn0#4tFF2N~f}rf^Eo1p+1+rEdp3tID)Y})$;CZVaROfCIi2< zbCY#dn{}m*Q-(;p;0WYZnZVm#S;z6EPkV#zLv|UC5OmkAc9!6jK$(PB>kShEpUAvf?+yF@Z5X#GN`jhKm5J=7ER8^xN7G(IU`;2O-P6m{fS(@>Y z(*kqvqtv80Nb#Z1VEix#Sl7D|j{a3Y5&_nr}{w=A+C$2?89N+<4*l>gxQr)=wOS**J5J{IJZM|R_3P#ei z=*Zv+q}Q{??v$F?{CL1R!|6_@957dG-(a4&Xs_j1P#_|f9f z`Hm1o9~4&(E6ATAhb+*YCi<_^2TnDz-_#D0%nWff`WOt)t0-c!#r ziPn=uZvV|;nqzN;Ea$))tAKOOvTE(Xk(Aj}uU1Aj4)pAgeo?DQGmG8*h9bvhKD7+g zE0iBcnEANsVg}f25r;?l3`>(AOy}_11Ngsg4*P4+GvIalFi9d3kKF+JFq*f)Gpnyj zpK~G~kf#k85|u6>gW|oChTXCpoXKzpG>MEDbzg@&zjfAv#J*@^$etTsz$!;i>@x+) zOVG~h^`^uq&}bERAA!zeC3d5z1h~AZ#D*F%Agp59U?M(v<lNr_iOsm^N1c7O?a zV9L^4pI8z9PQ9L0@$*>Sg_V{uE|=N_-|9ffTf#+`k_`rDx>A83r^XYB_A&Yj56_EZ z><_q)hyn90i9#*hvuXDRNlmg#r3}M!3S;o90C2!@2|T>&;2Z02ErTXMRpd$0v|5Z> zVq}{$gog^8+jH7>E<@C{8u9hy>e;a%?64^D%hODeqAAB%Eph_Q(>Az}oa5T9{PL=X zMYS_jl?dgRlUOpHTpwt?=3#hMBcyFvFuy3`^GMRnuRH|hO5aNRJ#Ns^n2tc+z=^f&FP;2Dpr%uS{3 zWFUOg%QkKq{@{K?NOafh#C!cteR7Sd><|W~>>K(gEAwDJZ)>1215+!|>qEb#F2YtA zcOKB>)|w->r@qsFLJVt;k1c_>Gpe*q7a^p%&rz(fZavYkNy};WSiPuSc65V`P#?e{ z@Azdy>lQDQl5SlQbo)j&vQJbz&@9ILZf>)L6-J|{xD|uZ>jxWA5MssnL$}#Odg7m3*J`*1pHukw{q{y&U5}QKL)ViO(x+Q*O&x)!; zeQ1n^QSO}~wqY3_R8vCRQ`a0M0-^HjvkzhReg-~KE1w7h*@U*lKqnvpk-=7k&6?1- zL_BOZf~I*P*>^#6RjDPYti`gt=*ui}g}Po9u)wzX(>>D zdN>f~5^r%54_$#dExSmT3!7=2u?8*Y8%PlimhJ57(Pa-DDJ2%RIbWPUi%?H}`z707>%RH4VswH8M!P4Ex(6cZ*Kay;FRq9L9Qjvp z7|4(@Efk-c9|twWu}lXS!}eJ1B{_D^LM*OYV~p>U3xT#gP>M;l-MUW20?E@AcL-bN z*^`t>d%)&-ZQ1f|(81$^N?4EE7eR>18fSLXQQUyw>0U*pm{WKaR$|+33kw{h zoCfelW!t7%(5kHcpAU7T^SWeE!|!{`>3Fjv!AM$88=@y`%_-XZZ+&{YzR%>()IW3y z)n7|`)-}JpOh;P?gB%MgJrn$faGXc%iYOC}Lm0^Df1HLU%`i%@0cZAlj~ftjrUqv1 z+S?qH5MJwbaSI({$Ta6Em+4T4;p25W-S${fGxhD}b)qiCP+KDVlXHyYP1^54|J5=6 zyH$Qj{@o-eN>D-cx*!}Lmr3e?nk6ZQ+tE$%JEiFoYcfR5r>XrwuP{#kkLc9?Qsi4sn-wQY?NHAlPYUaGS~5P*EdC^lZ?V^?4YU&~+r92iSXct2A!{K1zqE zv$j@lh=Z^N>#D7= zj&E)&aQ?+Z2{RI~;`X9cvFnoM+LZecwbncn21y?PsG&M&VxcEVEo{0o>M|vC&KtM_ z{J?&yO{`5*xMwt1*K0u85!B{9kIj?}!6_M)gZgW&fhb)Hy5izC+!10Jd}Sr9ijLMT zXTGW}pm@rlq}^r+UcS)qg9|hI+W)~uU-y1H_o}6wk7uU+qqIbEme#m2xdm!N17 z5#06DipJyfmBtAO4jS#ETsJ};92i>+?e*+l-_794G{mi16|Gqcv1%oW&bYB$=HyrW2PKNY=%N~<1$P?#0hD(x$?04(~P31 zb)sTA8#%zN%~JQ?hL7t*J^yR^alBZ?h()-QKm3)=TIF(F`kvg9LDg1&`;}goI)5?| z1f&KA^Ka$!&S(qVUbzdAbk;GA`2DukYUJ;SS)CQ6S1*)4+Yg(B6`r(_=nZm(gjvh8R4FrM{JN6(QZaG=@H`3Q-s$yFtgO!^7L<@pt+pLBwJ zDzH#GqAuz4ri)TYgNQ_6{_(b#Cpd-N&waTgluj5!!Sn6ZCRtUrkZUm$94opRmCZk$ zdg^Pe&gLlTu=K7v!*;x&aX!j`H^Us`5ceuURXYW0DLEwI)WZSIG_Us&%8|EVJhX1G7hW?U@PY10dN*Ul5W{WE~MleHXM|-w#I={LK zw>Gn;p;MP(Cg%1>Tv0nHG$}$Ka3x0nncm?xtxa!CrfQoY^HDXnvjM?h((dht8+~uK zwkS`2eh+h3sG1qD?6J0TcCzpSYt#(OWc3)W&wlT!Em5jABbA|hY)=K)Dnw%8i-*&+ zAzqQr*D_Wdu$?%8m|i(st+h|EXJYH$gq4UC5W;@Pul9Qd0sFPgGCu5GtLO=xCy%RV zylALxW-}fFZ+2xDByzeEthhu#{rCDI>qGv_cCl8rH*kd+FG7O?4v&z{O1fEiq*wfx zN~26z8?vL{qh1td{8S$>{wMJaO5nuTKNnh`YGi8P=tL7W*4VY zRtL1@hp-?Q8!@6O#fAl+h~SxzCy0~*`8h;1x6gxWRIHP=5Q4wbZnYxznFJc*`usB4 z&n%?;cMIA5%|f(^Nc2YHVu`2)ku)$f(ZSvuCG*NwqS3aO>X75Af&m2CufFqzsF5(8w z?4Bc!mqxBIdx7O)i{hHg8W1DWW(p2$IhR?IV=hbx!GGZxDETSKHtP{&aM076x3rhN zS9|lvr>gre)Avox0cPiYvmfo0!46|Au61Q+GZb^ViGx~VW@d&8Hn6NC&;)VootZ*m z)vOTz4-jViBiv^ZjPv`syz3yPOx+Or#aBG2jW$%R--v$1`f+^ z;o!nv66?%&W#3PcFfkXT_^Ezpj9Wh(CjCR+329`pHgFA~8Zl0Vil>a_Nku*Sg< zroh9#82hU|HTDlf<-fC)q*}z3U}xlQVb5fg`0S@Xs0?HeF(r?3a$@9T2QHaNGmo!+u~V%KpPvh+Tl_F1myVzE{_nY+_&Zn5_? z6LPs7lVATXCa-d_ojrj-;_wdJlbm#vvC=F#UqPA<+t@L_{YG_Twe42levtCTAnYw> z{Jm;9KvaioMtZP4O>PBpKGr9DL*j7CQNqwv%;bXilNGIKiV0PTa(S@-M0L z!UKp}-Vx(*ji*$#i|l0_+s&N&MmJLWjF0Wku4y|KJ1v+le(#9w0tG~4Ms_p*>%++v zi!8pEA^>r(>qk_`h)M0_!-m+3)*Zy*d_=SVN>_8$Mizu_8w7-xj=F2-?&-p56cu>* z$u$;9V(t$>6d{36VohO)!^@?W2SfZtpfV6^D1^7vCnUZLjXqjlnLx)Ly@b8Ze^M7n z?&}NM%h}O{(^Un=T218B0-Our_N3z(!1K-M?rZryw@LoUOhmna(*^KGTq5K)7kwPVk+Fi%>|l9@>ln+&r09zh3?&JCfuDhWEu! zVO;+n&r{F~9RH3HRiISab=@!pYwZ86&+6L5`B2%66&S@{jyjbyY}Ms3uXLrJ6w9Th z(bEwPsamb}?t&C;mUFw1bN&ou_S=%4{spy`x#rKd$^Ino+uxa+;)xp$u3;zUv}Xjs zeD`OQ@C_Xs=PL7e{w*!9Y<;F*A=~|&bKbU>l6k8{9O#aBF%XX9pPLd4{SjsL4}4lP7rx=t>Nkwb>lq zabjL^WqK=n3~(S5`Tg79fCHVch=~PEEde-Pj(@dHV0&?ROaGz0`oEs`>K_*Q^B?{L zIsbnHa;_{;{&x~F+d6eskj|7W|hf_{J5Qzt5o$H+GY?@P+!p zbVX)x(38&DWYC9qyE6sJX3wJS^$J@i&A#E>h*e`8%qBMB_xQ&mV%T!_a+|g$2p5{1u(SIi07_K zDMl#Rw5jbf4v>W&zmcfxw)*#9lEz&oVj;h%CX)X$2NeaYiYOZp@!GRytGxH3F5LUJ zV`};Gd2jV`I{j4M>6$whteHP>?OKiHyf4xRUNOV^JG_lbtb(%xp>B7=26=u;?Z+6)wM!z$rr{zm27qj~j(VUeRSmP|qR~_~2 zB~-w9bZrrr8ApqTnR)AUf_-9N?MNQ7_BVc|@qyP6Ml3~G^5tJGkz&6k$W;nU6Y2Hw zr}f>RgXt4>jg=b??xUU&Z6hb7xAqGYEakKtGIaymBkFd`p<4VFx%iH}* zUAF_C^O6K@b6`NFES#&r9%pO2Tt zo-eQ2)p&099&V1+e(>m+omf_bYLYH->hs1{iGZ24SQ)D+qO*9yKouQk6w@>(a)0Ai z#_b{g$L;*&hoGx67ZjPMKV462Zl3J zlheGVmv;*NG$A(!v0$M3fY$|wD0UqZso9P~KlRF+kfz`nUS~0Ro12o#;u}2GihO!A zxy$|og9r&Ej}}LS5zqe3rlZDLaK@wmUt)s$ICfw=h^45D9^OIm)jCd{AGcGu_oI$fSG&_m|~AHuzFM_|5gCetMJt#-3EFlOc9J z-RAh7Dz}Ft2Z0ND>u5D6zDW!7(yI_0AUmyZG_8|cNqTnuF?-sRfG7CbH7w>Wd-7Js zXFQRiAI7006M<+hfMJvCcj+bp)C4wuvt(XtSi?#XE!J_tNR2BcV1}QDXrLmq2e+7 zg&AMn9WnJ|l+3thGj4)n0Dz@A>3A{;U7^uCWe=z}rlCQ}tf>iY-Bb?4E19q5zDu2* zL~Tpnx>zVC#ur%6T?j~4twF8{C?-}q<8J(#pz6l!rx6!1`TI{#h5A_i>A z!!Oy%?O2}a8!EHYE|2IkQTCaKcV!W&rJXu3iz1&z9t6)x)SVhY!Q%U2Ob`P)x zqGShh?X*i}NqMlWYrgx|l<0I3i{J%NWwF<`(SldX-)I?hsIO_5qdg5Va6`lPP4c-^ zGijZeVihRAXo6iIlw*v{w+){7gsWcNlV#Fn@AHsuTrC-NB-XvOVLQA<>%0iW(VVkzdXPLao6S4Q_2B9Jw? zz3VW=EXw$}xTE$b$nwB%vwZA+2Hif}FXvJu4`<$}Z3fe-jlZuT*R)38+L~rN?vwS& zXvM`uqbGhmDKY5QX=?#GtU8`0F^ORw;E$Zfn0(k0biQJ~aM;JvRI%2mt)iRrKS&(H zOQ&AgS)YTR96(IE8Y6n8k>a5>*8NYKU`diSk6R(Ukg|VnSGE^K?HbxYYxm8sgW6qk zmj47JyfW*TXI~w#gsqu6&6JKN`$DavwpmB4nczH%Ot-yM_hlYA%}K??u!y?xh;BFA zu`|+-Zh69>%qO{Awe998*P=AuDH1IyQA=zu9>cW*Cbv z#)|X59p;<$&MXp-_~ zfYcmrA^hUqMbnukopX!tSO-&0At8SD)U;O4ndQ^`cr4|3C z!&u+-XO)k&MRJvKVtGb2ZH?Y0XR@kH7w_vo&PUzUG5Vn5B0w`c|3=zwvyQ2?B3BSA zMGfk={uc@{zsbKn6~&6$F^y{7WEG%@o_sRkFgBYPhyT{ps>o9|^#-lwr~I+H+uR~r zX%$*4z!!=Ll9D=>^kpaEs`{JZ6Jw4lz9w=mOkEtA3B&(VhzhIU6y%N76;%FIct_Le zF=eUkhuOSp1xBjdtpn=2QICm5d!&`}9Vtvb3!a!1_E`3R*kjgq)Zp)4bbsMYa;G?d zKJBn6W?4DRK$tn5=b!3%|Lx27>9G#V$IQ^(vhDPtdMHD#;U%FN#N8jovLk5Lx`q^N6tB`Y?qQR(rYA^-&ro1e!;p`j)eJI$T@a9MzJAYHcIZ)7$9<$>pb-&i#D8Y1E zBjYBI67&V{zZ9s$S}i^8g~M(9$Kn2;bvWH%BKcz6MK0%?RMzb{bUgyji8-q0V(Iak z!X(JW39>Z4imSyR0Y9KgbW7tHz@=(34))vf#XYYUhciF2?Svrc04sNT z?;1e>lrhd?kBGYm9%~L5Um2;SB@`Pe!z*E z)+t3aT>Dz8G%Si+;oo{KFFbPl8=cY8uAxk9w#xQ=MbmXvTOC%15>+4rP9bvS4;dzI0~y%VO_k=#7%oOnk{D@b4{zN>C5WExxzLa;z7*? zSO%o{X+=J&5E0M3t&@JJbgxJLZTVcoC6E|FFHx-jOsgZ+&H(qd#8Pcikyt790*6$2 z&BMSU_#Pczj*itpHR+zS>*J^s_xjF?JlXhgo48}4wFeu(d^~C`3TFoI9jy49>f2ax zk$d4}qZo=6U#azIzK+^mjK7$&^S&e zql>WjtUI5!;8k} zFmk86GK~<#=daAT+{w(TW*3X8Sb48}1zHyh>10gKpr)t~p?W?P8od;=CSnn@a(bQ} z^zOPDPH*DuO-#BEoiV?K(~#)HZu(SjG7ma?({Tbrd|`@#M4=n$rYDz@7Tep3(&;_J zXuxmuljytNAK>qv(Nx7|uB8)+z(OvoV-EWW`3M5e@s%A9tjBtDOjIRa&eT{m&@y$! z6A0-2R5kY%&V@cGweer{W2HAUdq-{`pF!j-^qIK~rqY{Dab862X7avXO?*V{!Hbg5UhT_#d*m@Pg2c{LUk{}x*{xJv)E z%nG~*GBAE4?=nesHKyI<0P6wqGT%RlVR%j)`{@PQb`+YQOV!Ukdj7SJ5nLG`3MD4Y zP{K_mVn;3-Du*=+GM4_L49>pr>&t(!6txhvQJ2aKfUm2QdVXp0fDBL?x;Nhf*&7nF z(asS3ANJldF3zpn6HFikcMVPmZXvjP2tgCv3J>n?!QI{6JvbB;Qb=$JP&gC>cXyb| zJNKQwJ$=sf>ACZ5`U~}gFFf_^wf9ZCzh|GrK?Fn?3=!DtKq&i3D_CuhfZGRy4PC-oee!5t}p_qZqX_+ z$fiEqe-zO5hHtRZ;CR@pg8t3VbXm)c;K*a+b7-nS}-!En> zG2&L%Khdd6RtgY8;I>_PF`VN2m0q@tW9++2qosuNV1PV{T6ef2H7}R>D!GMf4N^PL zGxK?t>oVCy$s&T?=S!56d&qHbMZ(c{nc;Jkq%y|z1`rOv?gYvQ3$;LRZSJn41tI8F zc1ei*QYTe1EQ1|+)naD)Dj4xL88XZ@ouX=7Ock6=RASELlR3;|jCaj8BZ_X;a&uD= z?CLp}7AF6&jDUyd3i~a&hEoWeihMtiaFz@{Np)$=owDD|vW;BsAUxxKfCG6S`JjJ1 zOY(!)cImERY7T5yJ5S$=wU;3){VIfi63n^X-Z zG19)#!MKa6erE$k-Q)(>`$IWoCO2VgJYcyRxr=}Z3I~*d+vJRq@oqGDZaX-b?%|Z%m0r({2HDj~hv37f{+XnrW>(!fvBR8@J3T{=fB0}iZ@p991uuSu{fAFrwvrG408D@`C zFHh$OFi#gb=>&p>io(p^0%oh_mgsCO9ht|$;v(EQXNZ~#8-Olt_mp2IOa?nTU{?eKlA=1lEqwj!NG5ba~G*R`qsIgq~f-I=q1 z=i8;uwU@ljO##9v+qV}59?5%Ne(DFO-0ly6{M}!$AEJ_!BvB>R(1ldB&>iAUnCvjtEdPTJ}IN`My_k; zH3pVRZAt|$FO%;@o?ky*+qj!KTC)^w-WwRUnkKqQHdNIseN_9qvhX|npUg}8mzh^O z8}Cg*6sQ92LNO<;|_{`RIFWQt@>((mHwFax@n!!6dxUm_Z1 zVG^|IqrqK_ik9_mi?~D=;EfUBM?(Yo|r#^kb ziFhgXC2T;MaOFRXa48`2Hhms@4QuD_1r+`nq;!2gnV3iy0$NEf~q zHbkC*F*Eg9;O=b{zL??Hz>QoLTbA;gUjbwk5)ca(eS^W){jHzQAXM>#RJ$}uC8$ls zD%hst{buVq(@ow(nVmzTkzk8yN$$sCiKH`0{-YrEJBZ&f?MIhgeX$hbI=HQs>FV69 z+k1mW3g0fjuba7_8yS^Y@k*L!){T{LU z^krG>wD5t3OK#Na<#Gv6$dGi2SU3?PJCahHlX3QkxG&R~NjJ!cORw99)dN14#d(EX zkz!>lqYNd++z{POHuETiY$~H{g-6;iQ=Rwot7N|a8RG4GH}HA_ND_r7C! z_lzwUDx3Hj&w>Akpuw|8I4bsPja;I|#IJFuX&N?Od5o!8Os|lc{-%Tx{Zl0v{AHEE zcZS!OYFza{B?m}zKCU-qquEmh=X@_JDbdE9TkVcTs`D194xEeuGK3cO2$-LBYQt3| zsbAw`v4eVC-3P=vF7R$1qD*sFO9^{oscyLpCW&|@u+#*EeX#j4+}_HC3h`ar@Ty`N zehNygR(iv@w)1oPKs6kk(KM9O9qpA{V^0VjPN-OF%M^zPi&k@ zKYuJi5TMthFQJ62ly|H03H4Bv(;>E`CFNf-$*I5bmwAhX3MUmg^8`N)T{w7w#kE(Uv=eFkOvtpEE6PW2{gWN@wwzjj_nX8^sRo3r~^pyr-x?mA3dvH4un464K zpzDo;5G)d71l`zl(?4OIq5)z_5nQveNU@AASF26CayNa0hE<+DZQ~7y_o2R zuigELANzP!7mw8|TrgjQ$r|)IK%nc(W^FDO>4GoP8P5}%Tv-FhEZr=9yy>KcaiO5C-91L@rB!PconfM+S_+sV^B)0#iO33P3?aiV1S zFvunB%X4#w2t5C)AeBz`J8%zs-SFY*zQN5wjj=BM66dYFm{wSa?0qM8P1FI&Q}$d@ zfnG3G+PXobcs1XLuusp(w&FRosmGpfrH`t$qKgbcSJSkX;>%)&xZCO9HZ7)>8T=fZyl_m@sCzv8mL`A4X3O zqX+VAoTx{)R5#Y#PWfdoQ%`5~>}D8Ld&)&t@n7leBfXU7Hc1zHodH1)kN?)L@0EZH zomE72L5Ry@;5>}ynCC;PtMwye^}8p;QdC|v+5<AI>vY&SrdWK{kQz&fA0P zq=s9O_Cg4!s?<8s@4%n4Fw_rt^^U|BS&*8x3to|^&WRmdm6I$VHg0z)8hl&yr@$xm z{Uv30+Kax)`eXU{8E#X1HnbnLIcw;Gfo7yvIq8cvQ}3qAM|!3E%m!2EulnpxMnN0HYX>H zr#2GyrGcpmz%N^B>y6iR?bbbS;(pT(s`rZ^*aTtiI7TpQ%S6K+;?nE%X z1}gS%;QQkkwu2Q)2wAl@ONBQW#H@7p-!<9MK|o*yR-g>D0uMx3^HnDw_!+yAR=iT@ z_*|;9|HJBCc7nl-rRRhWxjf*3FmoK5Y4z_}0P{jWQ2862aplUnw2Sj5n_OR_BS!Z{3m7v|1xGiex+UM z{Re`RpU(>Y|R!gvxW&Aw{q?dFV%X334i^nPz!4}67-dz!%1$8pV< zXy; z6+8>L+Twe$jTrpKL6!`??V>Sz_Fvzfl2>#tiySr>S-XNl;yj3lz$$}_EoiT$^&pHh z_DGCr;sVifeSD!g0RsBYMdl|-O=C(jM2y2?pAR45SIW6@xy|rX&&uB6q*DyB39>;C zTU0LYO>13AGT`4~5CoS{AghwRbQ)5DF_z(Zuyb5{>xGB>DN4sc*LudHxOp9k(dCV- z{*LTo&njmIGg9S8|1J;TJ<0(lin2rfNf9rh^?GZzkTixWzadBJwpwcj^OWvPljfeV z9**S$tARq^{_a3q=B&@ct=KBG9|px(53yFsE7WcljbIBID*xalaAB##wZy#C=e&Y! zZ4mU)0stcrS!P{A%S@mF7Y|-Bp22Q2o6%90(4B-ufwp6_`Z+4@JZ)>DTK$aPeip-? zF5~^uUPM;0dqO-|Ucf}mqWC~78_RxUI5si1N_9V{sRmBI;}==#yG)7~&Y^sM;0-Nu9v7V<;32T6zT1;1Kc0H_L36CJ#Hn*O zH_h|s3@R9nmEqt z5%HDcoM-R;M5BV{T#FUy1*x#~VfNDUYnwogvTyIDyx1zgY~syboucgs>ifGT0P6j1 zL*0R|f2?JEJF4+%Aj1ulk)Z=WF?B+mb$@&67Lyq!Ri`6^!fjnuqod)lRWKZW4k(n; zL99dkM)L*0Pj~|0sVo8TQ1&y?1JD?Yv|>iR=vnq;AaI!S48KG7e+R!7(y0`8;47%7VL!)f={Wh4e_@Ni};ftbLy9!e}66oXDW8v`!~Jn}|vH zW})c~KmaN=fKfL+;-n?Wrf54!VRE5mNIypYT4~3l_>-Xy{xU;F z3yOW9)nxhy;yQD%=fBnnnaYsXwD&nn4PnWJwd^vFc^~alD3!tGG>M|vxdlV)_5HU& zk#c?&)<;CSpKW-w+x!%a6$0Ro4aeF$B!+~`=cG%Et$t=RtaaK|8D8ESQrAGr3p&(C z0=KJ7@{^^!fH|iD`-Giq{QT9}>m;}3-;K3eo=FtMi_u}=cjV$D+q}H|MsLiYa+;w5 z?E;dOT!s}Yw;9l3kpYR`9SIN4@DwbP#sgELmCkPs&Y*7ZGG_zhrxiOvnnM&f*I&$L z&Ugw;aRGa>435aa`vEvJnotEnA5DH@3zrrqL*rXt8CtOa6&rnaaxC8njE6x`TwZy@ zNXG1S$cx4hpN`_$IUMZMTM|cmG=cdB*EmFDzxhslV+6^7i5AYSX6fBc>MR|@C3H$p zK;rI;8)^ipWT@DX%!H9FA#bt6J8K9GH3dbeNmUsl5_-GCPnTy9aHCm2$^*+!X?VG| z`OPL0JLz0rbRG$isdct2Hr6)C5_j*8R*3J!9G*-j=)F0_5ese9oxy}jjO;p{2cSIe z$_Qk3`1h5Df1`V0|6$*5{*rwo6cpm3)n@odi*Na_#Sf!2)I!fhiqV_bz}tV9RGMw0 ze(jIW0r1BxfK*j-&{NT(*tjoqoJg(~s~{WzKv?`2WGox+K8ed=$@65dN;kdybuY+^ zd)FKToU;D4Co|!_qcZfG!KAJ0VAECH8tQxxzAk!w4P1`naXjI8UvB#A5AwF`)fWhkv?j5sHz;qlxzVIaxPdH9Sr z;{M=Ks!hOl>Sh1&3ISVelQM<#ZPcEs-oU5ZOo6-?PdYrf(b$r*tv1xqNAv5RU4J~T znGh4edlv*|@+nrW2QiIHHxV-)GY?L38Pmk&s=bR4 zDtkkXS_!nx1o9mW!WA_{DSJ|Xy=(x6?b4OzJK{&s%Eb9v18RAgZGg2OPqhZ_EVuh9 z3UB?r{g((q4Tu9{<-J^NwEy@0x}y4b^ZLi!8h}H-o7q}`1?8R%-ClIVXJG!xJ%xc! z!ELTD6&pRP1)YLNZpe;lRjCE&24ime#Iu@y_=n2;OMoWE^*N+GioZEZh*@hNz0Vt( zq!WGoh)&h%XeMVe2bqG2>L~v-Cx&Qx1$M-ddll62NR8;$JXo zk7Z~_Pk}*>bIr_tPqqX?U2)H+aB87Gvrv>K6GmpYGKzib3!s~I=OtsLdL4oR1)cB) zUQvA4%h7xp5iITUu}|Wmw7n54W1?FkHa@($YVdS>Xw=TBeGeMiDN%kHZ@HG}xQkHG zBhqvjyqs|*zRS3oyJWvf$+edg()mn4%i{s>1b38TU(-v{>sZG4X@82K+N)JFRbPD5 zuLcxgE)Pi9eV6$!bbaA~CnYPUB5#kSno5Mp`r{-q0j$u36DJu>kktO7$QXCAT_TD=oZm{b+#qMDuQ z72mOx8?pKHVs(y9K(7J@I+b|Y%Nc$hX{9>dgJ5$wyb(g>&et}0io3plIdY$zvX*nu zBSX+MTFvc20Z^MugwmLi8gIf(t>@A`ZR$tPPE6Pp|(#aJM7=>z<{Ix2s$QcZE?{ z!6G1nV8ASKIi8)_=QFVzWh^g_fhF_+TGlTY{8UY3v`!VM@B}-aW~7?NzhU}-EL!0Q zMlXKo>V$DugWU)ZRq>km=G~zl(CuqSh{O&hxZ$;J8W3#@^MSMSQug8CeupV_l3(Df z;gHP9cnn)0G5W4^&}8`4b~mPCbx_Vw7D^h=ED{shZT>eF(+7&om4eraGDX_foK&Qw z{@x;1ewQ&o)aMMfpQp>Ux|YIzg#66vQN0fREk_eq{r<~(xWiFw#=k6}Gbb^qN&Dt7 zqlZhQ=1D+PQ#dMN(d^f#4DsfmDyqjoxOE^UA4OBmE%8>=0_x4eXW%4-(n(Y#70&u? ze8VsiMA^_{F9$a5tI$|XK;v%`A<;{+Kbi3DUuMFLZ2mXsLW%zX%56boX=uvC7OP|D zTUb>-FJk&WU7=Q{b##4F>04e&^mzX?x@-5XQRT*K)^6vz;WjAMtT( zuI-#{8jR=YiC>l5R%T4*FRD(^Zn)7?XK$0wJ#bWJaxR{tNbUQF57yH6Q&~=U+ZlZ0 zD1E&M?ZuBU0N*}kXYgc036_o2Z-s3mfE+A1vm2@GS zlA&&b$7Z~>U3zAdM0$f6_E9_fCo)%SuFQBHr}&iiD+|^pimgvBORa7Ui_Y&Od}JHy z6bV;ZDj;Rtq^kAIqzfH{KI6BlvB5bsWii|=h9rOIS3D8_1I(iT%idC7M2_2zO0t~p zD6;$Zcx6T^?gno?4YD5B;?wTGu7&@zNVyjD$8$>dmnN7070+pmQ+*siB)kAg)?Wq?<_*g$y1A(17?Q7UoiTsM{Tt89e_OB{lDB^>Ku-T(JeI&W5WMbw zF3Ch4g#%>7uaZhJzK6?7#EMaH?oj2s_iFDSvMN42@#a^yv_TASr&7x%gFzspen#>9RgzCR!fQRy!WB$+ff%zxm`j(}M5iTpb( z{xVkn_Kw;A2QZrsPezhMn4cL9K&Vq z;wFnh??K91@6Bu)4Q?HEhc6B8C3UeXndhZH5EI}x(|Ri{m(xQ1Z~C~)AmT;Mz9FV= z*|&+qA84goe>AddLaTdcYU7%9Q~f$WW#+kYy!W4@HAwdzV4kd-zw~7N^X3?Wv9zyk z=p$NuulJIR4LD3uti4cS)30;**!>oMWZ8sl+wxHiJw37O#5D z7}$2qa|B7_sGk@BzP`18BX}#nq-CI%gNcN*K7)0j%&&$;^rf13-jbXxF;vK@Wp3FVz@qg z<)>Nh!_ktvQWrOM^*~9k;hm5h|A=33UjkZ^GV(6G(**9&;G{^7wx3=xe7SW7Z8=-! z$41qVo@oM_`$LR?t(cJgWfxsSHsQLn{c~AnPdU0(#aR#JoUrBV)eI=`mj#@#q)N>4 zKB0I>XMw6}+~9#}w}C2Kz6=hiY)*paUCm+sQ5Zzz$PDF1{ysf;BdP+J@I zJzHm=C>2LJc-WM^xoZ}rS1ykHmWtv|lG45Qh0W~lm2_W?Og~#DvT1Qi*LHod1gIp1 zro|tOm%``979ubus_#~R=z3TOFJzE})n@wh6#=5JT@ zPL5A|(sk**r>Q`d8(Y@9FtSb6!|^N0d7`=G|NQki+$VR03&$m7vtx9L<}^i2$W5|x za}3*(@4H|s&k2s3n{IZ7v%dGe!FYGTGI8KJ#ltC!*{}P~E)#??vy<^I6B_mn>|Imj zE~dDacZMtSqA57af!#Ik%jraB8!SOy$&jkkw{P^GdQUyB>#HL$vxr*J&t)S?p~h#A z#+4~p8OSv;ejMe{HW~__X9hx_`A)*G!>ay!bhCbE8LQ06rov$-_4#gq+-N2PEFGX!sQz_ zF^+v(w_+VjUbmtdRh+}%V%!dPCyNGrc~ENotzU&V%3r*`)x%tfALKPMVNvjE$e#TlR-r5&zin~pb10! z(M{$oY>R}ijIk8U?3Pl$J>2ajb05U|pY6yIm3@DjI;y>*KvZs}k#XgXo`+6t5iExU z(vGK-d*tffziof*y!v63txaA@(E2`QWS>6m@s~YgG_QecVHMp6{$;H6_m*mA2URJw zhYOSkc8_;M@anWx#@)!z`H4a=KxtU*)v zWvvhW0oBdDn;y-&kT0Nk?DQ?d43EL<1bd41^*DDZsLXMe8EJU}s8d%-XZ0Rw-L&r% znEUQV^TT7`x604y@?R>4<-OIidsp91oz4pi7YvwQ-i(mvEN^glc_qh;U!2Yh3vUdV zKHiK_705^zEDg9mNrNiq%GRlzeI&cmsgDjcv#`xDI$6mG~{-%tL5LJL{ zMgC16S|fS{$A|X&LnuTv8om`{T__fwN;vQadtEkEgi5#wSlgFyL$I#*{vF`8#Jc5s zl~&S3=T5{8n+L2tWoAVKHDHLfLOM80hBOb#n{QApD|J^x1=b*n1p= zi|w!AmEZv>fCGZoy9#;tM;1+8B@DKNB(G!2o*?Qeb}BCgTl8SEDNe86fB$l_klA5(hXK0< z2wwJm3SH)ej-E(F1;soq&MDa6CKCy*>W>=5$?0G~`Z6>0&I1tYG4U^*6@-T|2|o9` zP25maLj)Q@rQ*%EQZ*v;ZnXRSj0}&zPUVa*kw*i^UiVX0~6U9nOkO~sSW`bkW}obu;r+Op(NoAXTaF1$@s*V~YB z%+RwMdbg^0;UVKi!G1QIoLNNkBt0+o!2F3kuEblEP68kNB-IBVr*z6q7^zXNE!!E=xBcz@D zIa6Y4Ahs(yz#2!yO6}_^E5!&K^=^0heX%}x7*8Oj*z50nZ;~#v<8+BW(Pl7u@-+S5 zjQoi5#X(N!>3T?`iXvho-|p9HC>-)s+A|D3ZNFYw{mn3gR!wdvJS}uY|HYKNQtuu` zFy+xX??(V*PwK-Zd*v`bMLFRy!VyO)VW!SECP5w-952Er5;0z%W=rUhTH{)K5?jk` zmXnU;VmeQ6RMFU}@_p7+~g*}~8$8ma%x?qcX~S7+|nBF1`I7DXd+nyxpo!ai=hK-&+! z{=~k(i=}2kRyXu<@ssejApK+CnQ-y!E*GfOg+2;_jqjNlo@1}#ilv!$v>Idk_|!Ot$1lPv@d8t}A+ z9f46!I+(~;DO=Wk84nXIz&q*zA}|MPZ#^>X4&`8B2tt2du3^U=R-+8q!@nGN9NL@j zh9U9^>4p+L4jh8tG7nYaER4eRSTf!)ku~SeD{Y&=WP)`Q)A4;O-8zlG_cBJZkjN1EbcaX=U4-rjOq^s-K26efye*`NsDM=PZ9!acqztqkBXtE?%Mt)D_I!Zc7 zd{$WQH27v2v0L}KlZd!jVE-+3b4(kCmmBScV6)GSRGo1IboNqqZMO58pZuy~x9Nky zSAJJ2W5DGH!LvO)-V%NrIDFUCC8_m-n(JPvUfQ0HWn$@wB^m;^Wl~gNevcH8PRHv4 z0NhiLTt#B{iI8y1aU^e+*Lyoy9bSuhpTM<{MihmhIfC#eB*KOamB+~vezyfQYj<$t z#p-l$9ZDso+;?Jmt8b7)30}CqJcMXuu+WB`5bkAJXBi*U;T`jaR9_B>9|7B`_Mt`4 zN`^ARp2{NXJR2>P${ZfjJ7J(4!JE?zJhSCHuQG}5@s@qevsLSR+f*k{w!`#Qgo+Yj zBndi}l*>||sPlMhVa@MYAMT?9{e(FBmhf6#W;hdgt##XoG z?o4{3<)OV4bFnMd_$8fAs_k{a%7C%hJ8-JrV5GRVV89jIj3=#7=BJkF;_`hOOr!v62GyEjo@p|Ny z_7KDd?fb9mq-5Ovgc)F^{?cS|uIK(yS^b}k8fa}Z5)-$_HEa;&Z82wQ*!9sC>&=gU zfM-5tBARpOTWY*`&HE+t;J_hroXD-vck!fm_~DR5f9A{; zN_d(Pn2?^0zMUPssxAp<9!41pYhm~_Ncs>t$2Y}^GddoS;{Xb(5_ri-p^9Ffql83|@;YS&UiY!Zx)@TM`5x_lr`TU?wx=<^0tS>LgeBKy4b_y(>09JS><3;@M6S${Z#)%&uQm*vtwV+04u z=g~iYi;xi|6+8bTaWDMvLC4jm>XXy6%gxbZj{ah|N~um2@pQQ+wby7md2Gs|lfVes zB=y6L`rs;ZD}^^)j`wrL+(HsYqe40SrD8Se%+NC$_1G@UPg4lH1lqO`ifQoA3*D2u zRPvLq2eN6fr~$A=si@kTHo%O2AC(t$leMk|ybW#6Z2 zVf?JyBK%P>K`@^Cn6R;S&Yyp^Yw+VPb4tQl6QKN zH&N;kp32HCada&bp-y8g+Doh&xldRQQK#RElg@5OBv!+59*jiHbDDShL}71r_x3>+-eOe%?3K;g?SVEk}+$-mln~5X@I@2aL6=NXNe4S;cf9 zg{w@d&63(=YjN~^@E_xlGqnS0wM0ZOB0n4wFsALWcjvx6!VC~=i~KH z_w_j)t)hC|Oq@J-b(aTe&v71SFHe=28$P59JKl(p?XIh{o=F_aev3iXP5n9)=L2iT zFaTb-YM5d~?>K@5N-1`n%c<6W zk+nD43X_#1GW4^5E<3(JC|5?uJ%rc_+k3aL@b)W?j$^Rs0(l!WGG!sZC2Mu-IZ36- zvSig+F@!uf+@W5lHxUbLiI0&1**t1M)oJzV{k^Gs>ZgnV$Xp4eboX4 zu}w9}JF;ZC?rh%`e^c;SdR)X}0~7BsV*>Hdece zdivST;l-wRoXri6$E|fMT7{*g6HI$a={|R0a z{v-S+_|Nci@Cq2;$3&z36#U1;qXQHI#{w0kFoMT|6+*^B6hg;B6~e~C6g=X26$$A0 z+4$M{IryD}c_)8P&QI=6-k!egig?L}0^~h;+Z}hoOzLF`;75 z&s}BEg5IRbCW-(8ws32{qm70>y`b`3AnUhx?7az>-jZ5~s}}{Va?kB;8jw6OeL8>t zlYT2)%$kX4(LlM$1{aU8gS2DRgTK$jduUFHIH>;z+}ODaE$kEh+VGMXOyNAYGEhp+ z)sUvA;+bf@_=Yow6fp-92cYOrmTv}pbCi|_Rn#8c@RucmFo+42HW zK1^dg;rOg==GN6j2~=!}C;@0bYg4^MN5ihsh$&ARfg|gPeT2{)KGw#1l zJoVKB@~@I?++;5XVq_%(_EOGuWMAoG5?p!*-38|z0xPz{)D_xt5P;SE*TTef? z0nijr$vpy=)&W^ueg*KQ{uTaXfkekx94l)P5m>l2x1md-Y9JNSk6{^2EplWfZIs$X z%M1mJp%AY?ijzU)P8E(;ORJxp*CE0`(AQI@sRh(9AQ7^%eFk; zA&2?HkC+0ptm*W=s^TVh$f)n_k17lLLO!?fEoh;&C_PGD>QiOgx6rp`V1)ViIX;oJ zB!(UI%Gz|o%YoDjAnoBTbErr9FW8_Y zlE8bDIgX_`15pE-Es%+P;ItgeoTwkFX7?t=!KTZxYZswe_tCEPVIdZmiaz{`Fp#2ds_{{T`(%FzcGCaIGJ!J>8axZ!?wy z*#J6SQ249CKl=r@0eeFvo4Il26fhGfo zQBuYvPC`UZOJx8Q>w%a9cC>iuQ3}bXDvr_|{1T9km`EF;a6Ro^6M1tZ0PEnr;@bzU znhdY^Y5NWx3XvRCF0d|xPk_F^cj(~+&!{#~QC z=Xak`ZrlyhJ8#EN@`~Y=J}tLJ&Tr4HGgG9kBOeeChr(tOgS|WA z*gK06r0VCL&U%*!`{~MKECf^;#tt)_zmbPudMo2i$ivsdploFv>BH&ayrYx{^zb$l zJzkOKv)xwM)Fv+Nrq%JoYz{7!Qe>ckKl|LCBL=JcSbpj)_3050;e9CwOi;I_G@2)qdUUy-i{R z9bF>JH8SP}URIiWg4HJG1;24YQvpm06>mFfS|q(>Psr&ACR34(#4vgeOq#{5*}W@$ z-FYv(N4&?TQH##bd~R`kDpFrwmWQoQ{E$zkc|I(B50!&lj3F%sTz;Ph83P_GBHN z*EI=Wb=U;lX-?dtohEh`j|gC7M$n53Lp{(3JVE%6c1s+=&VC{4hYEmWubUE5ctG>e zDN-8-)R{?q=k!_v2>BBKsKqa;Qrkg@a7hSg{`kH4R-O53?b1LO>ZjTcS2OOv^6a); z?g`@NCLezz2a%b$3|v7`o^M0%4_F#NN!l>-L0$m4&B{&#=GE;xMk4BxkvxP3EvL3y zlt~yG$V7e&y#GYb<%>1nq!88-bBWVb!uyD@5As#x*1_@yG}!*qYAL=yJkd>sADF(0 zk-TYKK{@L-t{%SRXJ^gs4VhWzd!VH9qE^tUj0ln^dha#C=u66CEEH`{o0S4!8J8uH z64?8wEjTS`k@=f4FMU9E_SgGp#6}hz$EV|@Vy%URGWWtrupEq{{s%Ms+^oCdgYv1t zX7M8QHk96mOQOG{rZzU}?_Sw1(&MQ zi;g?#b-N4}x9++XvNZ*`CG+&MG2&ugKL2|Bw$ZEYNM1s~j_jN1^(ekG;o2YQ*FhS&qm3L+}HC%T`uz%=~HI`;L$3tU?=rkZ+B@Fhf3$CpB}l>kt2P0>PkPBcjF z&c4)KDKr9bK%7>J&r?kJFa-&SZXYpa2YuJ56j{7-a66jl_D4h&K8FFR zpqm{V&ABSw_Px3EepR3X4nb5WSZt-j9cavmiCkBusu0AV)Mt&4T!&hXcHPHf8+(cx zUb6DqqMm^wUmweRn;YVdKxqEbn45hNzY zB==Kq&f3M>I#SojYUIGeldc{+NfsXDkw)`3WN*EsRvM_bgV^zSPCjXpubSkmQQjdC7zJW)oLu z6W)qrXe`k-A(+07GG4YvXNl9|5bZBFjnNS-v|^7^HJBSs&go|hJ9i?j?;V6zJfwD> z_$(#(DsnJk@RTu<=k{lWtKJ)8ZtqrVmYtTxo012OqxG^g)e^BY=swEs#`@k;-iG+2 ziuG?xcd!nZ0ltnZkBw59T#A@LaZ<1l8bIg62 zc9OVxpSfM;jW^_A*uXL99l6&var}_KB{koaC3Zd^8L-Qre;1zbD|YOAs?&_)n&U&@ zBrG9VR1>EDTx$8Ur>#`{4B46dynJ!|F?pz)-P^*)#cXp5p}HoQX3FJg)GVw0m8#WnbbLyuBwjTE-jy6KAmFFp;;9 z=>L8o#uq5|t+8#k$AtR;XwJ~Eb1>b#^J$QL!cHtZ0RKJ-$7e`T#?-c{oM|HJ>mxzH zfPdavu-eJk4pP}W8@u_fW3QqnAWg$3ef-W_1`{LAxEQPO5T#KjjmuFs7vq@JS9cP1 zM0VJqatx!*EB%+NadL%)5cCBXgQP@zEDD>Bqi*vv>T*wV!|+E_m9pWnX$M|5gj%GSb#L4G(?w^)hqEQT97J8b$1grNe0$46UXR{KLH4jh zkuB#)RjPy4R6G)y9U1|ZpzB;(mkSNE^+5(JU~iYLTfH0m1$J-aC5fmH<9((YD~197 zF&OG+7*kspRL(RFJGZjWrXFir2Y$+IrYAJ)p=JDXg#86}t8?9SldgpN^&TEB=B?kS zQ|Px}tR%R_Vz!A06zKr0wsI9HnUF?`8>UlWr6#|sFkZ3V-R5r~d0Ugp8|j>r6tN3C z9leWkUfTbIy|)aCb4%Ms6C_x04IVVO1(yyU!3pk7kl^mFjYC3$(@1c4clY4#PUG%; z&E7Mo-Z_)Z-e1l6b?W^|QSi{L+b+4+bKMrt#|(N$E+TbWlWonrUfY#UfWNSu#Y}G} za3(a%od1Ov?G&XO7x|s<9^?BaW$PNIou(2zE-0s@PS#twnzC6I_JMISAL(YGe;J;t z;kIHs{+s_TV5@p`1p|p~CMdJ=EX_4JpB$* zIO{QO?Q-WZ=J(wQF`5f0eT*OBqS=(kYSVV~wGj`}5?(ysr4cq;2pJQ|l@h{)-2d2+ zH>kQPFu{&6n{6V87MkWw*yNOZHDZqq{2QlQyJRIg`iAolK-Il5H?IGIk0FhZ|x-IwT5G3{{oK1JB^Ksxjj-8RW@;#BOwrak6!^kVY+f$;+X)2~|330^F!Bo`;0owT?JvwVKXo zo*~9$LJ3_)r`c`1mqK;<{2kz<%s02phH#b%#f4VE$4E? z2rQ$DEj1;-OA=fG2FaoK6zyfe(|mFffj-G08|WALHkn9qgX|)iii=C1X5iNU0i8dp z{ZH-(tC#>v{^a@!|C9RxD-$sP^Dcn@dmhLZ*4hw+okW~Ol9Y^80^N6kld$pLQ&Fa! zBj;~tM-ZZP9L&ey$JZpw57rqE^)$D?Ts|(>pe&*-|D31!oG|zH&Xg z%sy2r9|r<{xrVuH3k$oA$n@y`x9abo9nH6{4$;ECrEY)KLAnraN-f7yB`@(s&j&YD zl=XkG2TtwpET__vZCOew?$xh3kuu_NGFPWFm%^G!Zv}Z6^?DfDkzvIX-TM#Brt%gs zajxV5$?=s*HCB6sx_N$7)Cs;ex{v-@L88&irQl3JVR2ephc8Lr^n@PRq&zFepK0^D zG{CG@Yo1~E;^-3Pn|LbNIz_;vb>s!?8k&@*Dw?H6j;=s!Q-4VROQ)m;C&#C10rqe& z9My?eAg~Faf5?Fmj3kOS6MyFEC)L5M4${s%^rlbtHCF5j3Y3!z=roYT3wGVkDBt?V zXv2r--@j=(X9wtM<_agsH4zm#oQj9X)vih{`P({vYHZax!|S*Is2s`qirGc0bbzh! zBIV?Rz)Ag#@{Pl_=b2@7ve!w-jKm*|klGZS$adrMgIt44QSNvSP7j00uPAn$s5iG*9j( z(%MuHwVH5b?2+Lr^L3D{sgrwn^UyV)cGE;xlpFUy!90yK!M6l?UZSKSHftem;wYk` zACL|!I6!gn?_DPC!raqwk9Uo4NxeNb0HIjdBfb?5OifX^ zPkxDIb`P7u5kz!L9bK=J5`6;|0)t*OLlQ*)5K^#ms9UA@viwZ2dxssd5vAw>2NqwR zQDN!vIyM6^*=+j?du@bQR)7Pt;#Fi7ywD|dYumCEE>V^}%E~Yk{Rct9!J~p&xgu5%yZhQwNKC z(#FeU+9^tpCswCH6)7?W@p1(spArAGy6Q~PbbEr{RW|>y+ZXBXr@xe|x*W&4)oH`& zA^;_jLG6>d=>_7!AKnW(t&MM6$=D}CPV`P>0j&!*UBXE_m;#Gn7ksy2H-gj83gg2P zB={x8Snk+!ZXTp&i#32m&00IcU2Ona?c(hZ3p9_emrN(js$AD!4qZQAY?=oydfdZ% z%+|s?tdV#jOHKxi4)MU}E}K8U_cAJD_TRLjG=GKGlsOnsG%vm~QxK|XKp6In&#E6dbwO&p+43MzFWL!L7uT4X3g&qLF-2 z8;_Xs5P&EX9G=#(qrx|>%1k0$8!nui7oSBm=@vO*AFxYSTP!~3?|81%KzPqgO|}3YAxoxnM3Jg1Wor%}(lw^tlyvDUuY=ci z&sMpNc{Np;)bs$?WU+vdJI zX)J)Qi4C0U3FS+8uJPCI@rUe*BEVNkLsoM?ik$PijNRr%X6=(SJjTAt#%?5~Txc{1 z9fiS{6o&TeL|))N-?J(hmmDy^!5@Q8Tu>?w?M0D>^L+4N^P@(1T+4a6*m0CkYs_A$ zH3{Dk0pDN=yjj`SiTq>4hGr&mJ!$Cb0j>#cK<80NNpe+^MPo{7Nm4))8P)mI zi4Wr2EIwYoRRPIl3+6zVdvcEym?8jGvI=tZ`CT;}yX&I9-=M?YySUXOQ+nUlG}RbI zEt6MJ1|t2R41}9pB8v>S#sYd)@L zGm(ReVM@wSXy)%(jAKb(RwL67_(m+o!oW&2$fX3o2lccKEuwCYwG2cJ>pzecU$1BB zZH6m#fJ59Ora2a}(#ZZ;Kd-39r*qbs=YUZEV9 z0)4I&5BgvdVyfHe>z-m^K-G~JNdBq}?D|Av&`Fkg-@(+JO7Z!6>w6{S>C@scsoPN4 z@T;Ga_fT7byb8uky^WCIsO7-{oz`2Uu2zm|ok07J?a8t1kr!&L)^p=OUnRZ${C*nx zawRo5M@_&p4-;pN*pJ~|I@x37t8bjm+gy!UyhC}&eqsnZ4HnD26p3PSJ8jsF(LJ1MwH5p6rW)a-^hzq()t8{mhnLQCv#8j3hrmhq z-1X;iZP#*1V?jze^hJ!f8H9HJC2cp&YN!$D*wxvJ5hQ>HSjTfh7&3`Tnb(Fi0&F@D zUE1D4M$6AEyu$Kmg@;lV+iW5qR$9ahB4+Y;~>zWWuj-(|1ATBfvHR(6FHem~@SVWb@p`7egt)B8?vW zS8MipZ(3IlfRM9xy;_TkeeiN)P~)1>J=J2H+(H@Cq_pruI78tL^7*jgLd9JP-*j?-Gr>D1ol#LR6iW zAJdjKadBrbF%~LG2(&8rbscEC0gE2p{ui4p4g&d6Ax~_PBnl?UMmnFfMMLu-OM9|4 zr-A{YjY9&U`IV_tcxX1onTTiaR57J<_*)7vjvaVg*~Se~ZoXBzO#kkaPIbvyk@<_Q z(`D077gb2Gp{{q=1508hwx|ExFRkQSpm+H41OosARTdwbD^YgT))o6wAj?CRLVhn! zRC3=bmpTnR*Zl7MEYT`DcFZBf`eB{_(#*r5-+3VS&`TnynOb-Jjnj2f(fo$mS#3#bXxZNPTr=`0(%=S^wQ@DP87dVfL}jx~)DAK+Y!?yS zvCl=Tp`3r_pQcL^nZ03}hUgun>ZfWIxT&6AHWZVq)WbAy6mKmq?|^&GIkc;0cvKU) zo)$XJLb9QsIJFI;EJ8u}jKC54qZ5&!Gqs;LWM|Qn1%6^wR07WPJMGld7i>o6E&8uL zJSKgkhYqR{EI$j&6ggK>%`Kv+o3M~D-(&4ZbzF~5ojkcfXh=*`kAa-AzofzZ^+g7M zb5HNa^L!9aD461Awdv){H&ldZ1~qVNLU)vbc{XsuZ^oVg;p}{iy+FiyuUa@MwtTvm zk!^aZh1;89V0tm%tf_XOh&_c5>t))+LPA=*R~h)>V&anPYGU{W@$x!-Ebl^F$%Z!AC^do^PK3zX5|FtlL$|*7hK#mCHX=CWZsaC8?~o8wU7W5cT1)v{?(yL z68A=(#mU=0m+g{8AB$Q+z=W2b2+ z-KQz`W$89;G?c22gWQr7KjZH(WVNlmog00d+*Kz^){;N3f*gxu zF9}zu1G8U&XH#rD^QN8p-s&!yG3f;+IgHp6A-Pq78-T$idJ-A`dO>~6@!4Jkq9y?D zzWZRE3iRS4it(-5w18T8P$xZDMr!SFq!67~_A`pNfj{!B+iYB}@?%oS|(lC=|# z{Ff~}rwL-|ZJ{Vq&oCnq4-Xp4I}u;zt9NHriMvCmv-zL)mc{{2gnI9nx;GTE_r z7$>!;xM*DMjTfWC*}an!3Vun z*Kl;ups8np)#qVTs({lSuUcG-j|*jSIkZPTo*VkR0))5)aAGnP&4^QXDLW#^4)r)U zLjXHz(b~6pYLsm+g~X!k|v5`pH}yl-8@UW;&yzwkrOp*wZt6kJPPG(3=(v z<#P-IBuf+ii_$bd<&qUxJ6BQ9=a_XYYhsU5msE`eMI!cgS z1uV?VQLO5j#+a|r{en6nkstl*bF)D0H%L(!TSmtaIOpCBd-`Bzzr#J_#E7fBe(lJU;f{zkn0RdWaGzcXpsN%5zrI+$9GyV$c6h;Xi*fDxn#fVrAt>>i+dyIqs_`El)aBndQzU_A$>}e5LxN;s>KS6ciagI z@TA+$H~e%P{uMyd96k>SvP%7KAHdl)5Z0UGWPLQT(oi=S{d$++D916SThKt>Qx(arlWvGs}!3#v+?VRDp_QAVPlj!fLj_rK2b8%^uwD@Z}gtaq@#b6Ow2*kxNtfWsO*_Vn=2 zzH9OJbKg6FFY2hI-tCU>mntu5N&8c&z2F3qj@e-Q2ip%a;z`^tDFczYgWQ>OC`QFK zD+~_vTGP^h zI$k||K8^8(Wji_A4vgWnq4WO_h06&GS{|2P{<1tag4^j6oO$eTiu)8h`h{xt`|zwi z-}A=I=GK0bU4ul6jInR#-Wr0l5g0+Zd863alI5a)UDRve7(W?&6Di0<#eDH4Tq!+` z%~>*DMVTCp`R%~sYfRKuc%cLBL65p;!?F$gm`f}3hBOP#h~%U%lE1Y4n=Z{eEX8()EhA%3E4pfQ zWWNb>Or%$cL?{rIZ!Xgu0%g)9H%(omH6enY<`{-L1-?zW!RBI4y`*AmUrk^kr^`n_JmX zLRbvBa=%`EoZ&tIBtGCCv6VM+pwHa_Sr z>$%=1)@VIki#NuIo{K%Ljj`}kXUn*h(5a04w+;3u^&6j9;rDny^39SNyTtUr$~@7914#!ou@~d;_2VJ+eJf50Y*t?m3Ib}7-!LePuE%d={ zcbnH$RJLpr#GPt8cp{<78{rH~;C+6y^a6~rf0>lNz;unbH z=yYu|+)E+@hnU{CQrcUJsUNG`fs&RWaz#DWiWvHo&mqN_0SGZ&>5B;(i9l}3rnmg9H9hhd-Cb?+-gI0_K_NGF7qm|X{}z5X)N_qV0#O~Ml-;4}JP z!i9}Asp5pc1bSzX_ZX(UcFdWAgA+?YpD6;a^%Q5pS9L@mLGsf^0MW&*%_G};h+gYX z5-1lVIJ8XzW8Ae|3tzaaoehp+3%>3I5JJus7?dpIy+g@`Y*p`ylhR*w7rQ@&r9-*+ zEr>UwKCs1&+6{K?2Pp(e@cYigvXA-H+=2=NQ;mfjYMxs0!J(Pi`X&s$cPp_|$_ZaE8V;KItgj4g* z8|vU@`t*Ft#Y%Z{OdeGy5fc6#^OhQhc%dADlXPyQ{0i`)$(67HQlpFqz3e%2otIm3 zs_BHuao8WJJiX>kpA-7_YeZKc*9dz@vr6Jp-PH%g66q3zVK)hs=mOnF^0>>hih`-c zrcRZl7i=Ixx#@}v2K-`P8#WKlB*j@R-zh$wj6_~wQc>|1*H+mrS~bXpw7&c3G}rVW zhgSzZJfB#6GMnGyHDhe(*z<<^mt&7+G?K&UUK_J4F2~JUEsI9`9o@R7Mc$6GP*jm3 zvV31+-f@C^nuiu5FzKdK|IIFJcK<{`uTT{Niv;>8UQvLIPDoe6Vtyjlkw3M@&x#FH zQius|-aKK6ytG{9>%*o+kH@K8_rNv1;Uy?zuPxh?v>EV6YZ{Q^4b$KB&gEoSLy_Hn zOE`1(yTm7@z!BRwGv*}SLvnPoW>&4e8j zB#_Pt5?CTsyOrk6%j0GwKP3|{hXO)g_}b9bSxnp$AIS@9zKE7gwxp!Zs5l!e*T&mt zl8Pf%ZKzSNR5A!n=9IBBWQ$nJ?fYBPwA%xaq~7%N2IUmE0@buDyN>)N=6$gf)K|XW z#_TzsRIZ%AbWP$tp3!s8*|aKlQX3o6F_NMN1wpn3YZ7XU=bH%y_;C*Mmi%R-Jxk7INFbD% z7ur4k$W|s>cvC7q2UZwdugtYr$G+mrz^Lf2p>LX|-I@GBj>l<-*D1IF#~WwHR~gCb zcT}c3do&b7u`#_}7~I*!qy`uzwd_45uHd1_oUAM6eya6ss3m**U^R7Pd>Y4TL;qB3)uVUVOo zJd=1g{)9^6l|<0D9iedP#YxhaSDUrIA7 z-UzmewXXFd{lor(R{v~FTeg>(Y}?C^NZypJRNfRbe^YC8>WHdVvH&%{ zjMUwd#kU^C6=T*QTcO@|j6R@#O*6g8=XI;AY7XP>lE&~{Pwau?%_S>x^rS0VjwXl?K>X+XR z6V0A5P`b5$jn@7bEYOuK@i#WDzb1~)OraAJu)jL?nT#-_9}@886|$0yA-%`-v1lj} zuP9x4H#hKYQj6Jqv5?t3D+*>%Shh<-Shh*4#K%1yc9P8*!JzD3>d3DySUTQlR<@@!A)@E{XHc<>)(pMT)W;2SUBG``T2~DICoQ!QaY?U(V{1<$mi)bv` z+{fRO-|QM~5#7~KUZGfTw5mwW5eZ33ESCqCR8)|znwowNHC!20ES$P#q-Wd5pE`}! z!WmU;Oss~#P^o*0e^Iv0fKZ!Ngp;0GDr+tY*-uXIsz=MkAWomoZelhY)9GAhl9D6d zs|fs=&Bare!%Lu7X#jNSay&Y%Ts)c>^d@kijiH$CZf5a(Q!}yXDpin;)xLA?0UHvq zI3Olb8K4T?Mo)zB5)MqO3E!?p!V^76fNC7TzF>*MR@zZn0?APmNlzN}n!%V59ox7| z>Ie)J2@J(B3JwP|eYg=ByhZj#UN65ouG!rdinYkAFXV>8L33iir4tDs88`A@a|?e{ z5I8ecz~ESvHLpW`Q)Pj^RAm3K^4tInOp|l8lTwE+MGj^1kcb}%*mlelr?}x+%d8mi0 zf#k3v$D?2nfN(}wy|x8 z`h?B&OeIatJI35qFpQspFH)%fFq|Y<@X8gLL@ffWj}*H3V4Rh(ZYISDI7Zbx0w!m z!!EyTU7D!-5LliZZgmh$XK-aeyTxfQ)NJ19?zkL3y+2?h z43*B}sali5YEQg?VhWG>glMVX66Q<7P@WDp@RziF9hirqP5tk*%x~nK2c#9zj!EM)eZQhdEdPpdz(|y7aeK^SL5aD}`(5oi80m_~>@H#21c|I54m;lKGdi z3_w~^*&+HO^D_Q&Mr*~K#fDYe+ia-d5+OYPsw71+k-1WoCCd4YvM3AGskc={ctXC* zCyjEX-*^y`FoB(H#dkllG8y35N>ChJGakG=?aB7-na#ljK_2tadoJLsSUWY61j|u5 zt~>B!RmYs)3e2dW=~K2_2>bFAro&)wv&$TGn(oGa6frL89I!TXH2v7?IZZm1^$lSEO7^o8;h>89hNMVj9Lp&1#E6H41Q6mFviH*~~ z$jr&{7{{z8{~qIl1|4yZ)KU7OLqH>_CIkNqxr9&bz2LjJ-&eQyk13-1%M{T-6zEOK zRIEa;6Hw~k{R(L`!@S6fwyi11)wmLCl%W%2vMubjJP*3Irv?4l=QmBwawOGI;~VkZ z6BfsczNk%4A+1(H+O8u-)K8cEmEQFVuXTz)j8*Sa>e=uNfJVduF| zf82Y$B)QR#xUDr%6qeCb6kce{^ubAQ**Q0WsGwCT5kDv(MT@#hr zTN-#39vJ-g{0SJ-FNXy8GbebPY#UlUzRtKYCP+}u<_^b%(?-5$&J!af-tv@h=uH;e z^B+*Lw;pZEmn972WJMJ1w|M-i`Qs^M|MC?6ZlU5AHY32!BGq5PA&bMA)br}vUDPxR?-SwGsk*igo_iIMWdf<)oYMF*Mrsq%LqvT@BX z`Gj%&ByVk*5c=>Yrp0!yE6Q?wk3S4amq~4)qH*$D7C=OW3%Gwd!Ht0p2GsWCee?7o z&?z$G&?sW`lb)?M*%FPd=hqre2Qzmb^&GLJ%GSBaEEqWsh`!cfDM;b=l|7fQU)W&F z?^*p4v&rRbEA5#`9vS0gYeINaA_gv$Y}yhjjriiAD%pY5u2!bEn&+&Ou1m zY!rDX-A{?%7Ns|EbB`Tfwfn!3{LdgCF!X(fL+wX@GO|a9JyGwGc;XyBfoyssz*WBh zyBvI0_3R`3q6>z!OyZUnU4^ZRMdr>{iXIT=vr=28+z+apxkNMvZ%_6odvu@aFTJ_08SSQ1^bV`%i-0dd*Y~i=bo6N4thtr9 z;9Ch3KwX_K!om=o(}*pbi;D14tzv@C{9v~%g}pI^zSqTF;Zh~6iz4XE@7uQ zG77UPAZv7X`B5NqAo2&UU^7}G@d9VA*Bw%isr|Qv~Ie{5zIvLN?x0w zEuADfjm^OUc4L6O8tm zT>_8`lcg1De=X|V#bdRr zpSnDgr#=VTv~sPZazbY)r+Qw`NN{*Wr$gK2kB<@cKk*)Pfp1yF4x^;g)5d+iNTMt) zBlWSd=hB}T0w-H}LRkx1IQ2TX#FUs@GGER4Ot7U(7u@9$`Vb^6SiQYzBprQu?!Kq> z+(e~sdO0WQGuEX2~PhQx|} zsb#7{i;`&P%$}&ei<&HF8|@RdIG_Wj1r~p1|P$2A*HJ(>9*b0_im$ zkhupLM7V8)20$@6EmvhX+0*YK`b7n80V{W1g6lAY$qytd7{O3Caf(~@hs1Xu7JP(DSXPbdCK>oQs;0++rKiS% zHQ}cC*a(k=CW>sruV+|?c}XboaiH&7Ai8zq!{+{808&TYNps85C$N>ZjF2~_oFX)3 zyE4tsNWOn{BaJA`Q;pXk`?^7fB~IwzW5?HtHIBCD-)XFIwsmPDlW!E&{2>MeVUhsl|qD% z0@n(DWSD0BJ$TtzxrOsAJ~766-?iW4oR0Cs;FtNQ)BCF@7Rg^dp6SpqwSnG!Xz)cI zf+DTbZCq2Y2$^7m^si>{<+tZA?SX6;VYEL}>aUG7+}7Z1VR>=u}zwCfpJD_N5OVeO0a?AbBN1-F?+ckiAt^t+*$t8yI^uBM2sH@Ve0BmksV>B{oMrxFQhRT!t zR#r*^*U}Tq3V20>mj1C5RVmMjjvT1(kUgedu?~jraZV~TW)D6R=EU5#@U+XQ8-dA; z$6lg9UqZ{~%xyrVB3$!*-AaGliie$r(qPf@?fqeSVp=)mxoHr+IX$a2ABvG9am)Vp zj=WZHr)Ol@tthHo*-61G#SA!`(ZZ#j>W z*7L|8&v5=K7cb~tTsfpa01?FK$=sgh+y&U9&1F2mpks^CRcq_BhRA#K=OY6sGT&hzH{wdXoo zaCna0l(Al+s}G_(S7xhWUDKaIur=G;mnj1X-g~QjmP+~7=H<>gPkSdAQ6I>TQHJvllMT?TB#Z@qS=e6ct zl0nisn41lxntu=$&k~MpV1+JXRNMk?7(!wkJh;vFstQ6D#oSsey>8B?f69{xD%P!J z%8fSSqHcaq%su?Vz{rQ}9`gWx2GS%3#RbX&>hq&M(ET1di#30J6p+z>DIlNUQ7KRN zxBc~m3bh^OtL{w@%-u2j(Mf=U^3>~{XwC~=h!Vb(`G@qv&_JC%SzGF1Ix-~&6jx0Q z82mQ1R&qJya&>Bwuj|qY>Ay1%q(Q+O6i_9`5sV?0R5m1cCRKgcy_@%9t-PNpS!0Qe ztkx>I@NxLovA0UJ$`aO_=9JyR@BEf+tppPYA!APDJV3q<4X$khhMA_UN6x&`5cCPd zPz-@Om;^M1ZUMJ^CyKYFELqv;QRkAs#Zguyk3Pt1&@c0RKs-*D`>*8?Xoj?Co0;ga z!o@ohc@0Wiwn;BHAJC%f-vpu*bHtHO;6K;e`A=peXwR3k`UB4O{tC`<;T!n;4b}83 zIo__;hrOVGuLJ)tme~05BYRQ(Qsnzz>*xQvb^q6``=6H!PBwPuAV?oy>46iicb;H< zZLE|{d-ab&!W)L>XO0TX56?TYU8zB&#!aAOii(;3l;@g(u1+iaF4BIT{$ba(5u`;P zd)}q8dAQvaBv=Qo6`UdXM%ijb$AR6=6Xw?*CahJnk>rxLtn;4lrn~!+gw~VKi=@sI zIahYR^M9CAl@{s@EZ!43gkFyE%dI7sW&`q{wMP1mj$W*Mj5^RM5tXEV{Xz}ZU`L$5 zlib;8onmjvnKtq-fF24%^ECk8JSH?GI;C!}P~)sqFL*;JYv3i>e^L zoX#VzKGOVoa;jq?Q$oux^Q;;H*koZYPgWf@kE624EEaOGdq4lkdZ_RCaLJ%t#|h-W z#|_&V7wbr%lrN>i{!sX1X^I7)JKM`$V#tjRTnj_`ki<9fMX<8c1YC*QFZ|iF=Uu{K zS%>33SEz7~LWb4V6d%pur#RP^yr5Yt9Znjh%zLkD8CWx&2m0g~7I0e-i7Vs9K}DM` zu@oW^r#V&a>!Lxp7oYq1gV`=lJ84E;RZ2R~O3Wls<|e7IGGeEqlj6e4x|ns(M%Q3R@D^U(`lIB~SYb8Y*!>Op;^y2JMfuGzQe%!E zxhLq}|1{Jx{e&$&$X~6JO?T14zZ0l@pbELGnjR)QQ~&PZK%?_r;5=)2eIDUZJAvt( z|Co{xkHo*R??E z2;2Lk08hB3#eA(06lC2ZM4K|obe`dJQwLJqT`GqXRE@2%EYZ7WbJ_3JRhQMn{sYUv z*ZcZxGymz4jezQgTNwPQx_k|2E_8314O?DOF+RVAcb8^YnVVEuy~15PLpgOoGd~je zvasWQ82ad_1@FOHH(dx%3KOZNY9s8W>jv${OY4D=E{ccX$Vu`7g#3EyM(?&;7^+m0 zl4E(&NGR$l)Vh1={ne$3DA@h>Oh3MUq(OU;+gkue_~uC?$Z~Y zv9)#<%tl`!=rFwqTjl_;*;H>;LDf-Gkuc0NE`jrHlJjk(M^d(F!FO*+{VnlpccyEu z%}wiPC_sHyz_eof*QSssO=XG3Ma0(RjZTJ8ISt=*L1L~SHSL{ujIUw7=%S%P(p@H) zKNyS#7RI~T|M(C0Z^W?wo}_)tj_0`Vhc8D$(IHL5qLbGQB}_U6+a%mbdzN*WF=eH4 zxl-a|*=jGA>(v(C^;?W%huD@i@Y5kir1QBX21(Q)-gExL{(B?ulecqvRCMRO9do4Z zOD%;FB0Lt^%lz=|WQyR*Vi*aCHl%NW%+_eaMz*+nVz^2T!nGyvtpD_H{@>Eqf9e0t zK0z>6o5C-9QYTao^y?x2S6X%w1zOHR8R&jF=QM(KU;Ql)_gC@_Ym{7uW6^BiK8cjY zF|D0;io;5x3XCHAyolY^*gA|fZtbr=v4igJ zoQXPm+JJff2oyF*964UpAY2I=JOgOh{$~U78$E4=yL2mqiS66h61RI6nsW`v)|Q3G zRZtJR+1L;iI!>XBG2>U0(|9=fBuaI|>a4>)M?z^q@6+yV&M74G}KLD$br^ zM84^6P$I#=i1KwQOzuaJT{8C2Y@dfJM>U3rDkX|dmcyXvMYX@1V{gIfp$rdy#!F3X zau_-QaYyzMg4L{O7;CAatf++hJ-x;hBDwrFC#&tAbL`~FIVT?c>V`-GHedFW= z@GvqLjg5qZMXW_&X8zR{7buFbBe5&;Vkjyu^!1dKKb_tmYHP)AM`MnVY~t4Pi5cSf zMA=?@mLE2bXR2@%rAt;4rR!Fn&;(u_w4HC32$Vd;oE|F0oCeM^Y z63{z$w%rp)#Yq?WVA+li)a=vu9Cc_B`T=X!I1!zRN|eJt1QKjm?+~7UUR=~K|9&oG zhIMt1UlMg@Kh^Cr3)%jE+|H8<!FVGAp;l79=Yjn(aBM6>YyXnA z)fSJGh35NT!qdO!Z+={4-B-VAQAiasKC)(P+sN8W<~a^+5cyTYB_ZJp26U?Z}DwuKULAz(?WO%PunV+2M7Aof^fGs%`ilQoEnV4 zchB9^!RRLQOsgJjD8SuI!~6tq!zi>*#Zim$@UM?&-IK;(jZ z-Q*`6Q+{H~y0J=dV}u~08_>#i&f&w0${{=A+g*TaqTSnZ_cubcUl%Wcj_mp!5}2p% znfN9+fRK)_8!yngAa+DvT^h5Mt0Lkhbbt<;NYQJ@F=nIsdY>{4#s7KpRFRs)) zIK#6}xcN~2QxFhk$qWsh$pCUZ1tV6W_gkxp?+@~Lhjg7<@i!C|CPa5myW;(xnvE&9 zgm!ajSJ4PdAr5!*1n2CLc9jYo3~8=&URW2*PrhRUA(ccx8~scNQ1O07^F6^+K5)WN z=8?HEAnf2jTg8ipZ{IMtVRFqvK=1#Q(J@*lbP@(8bTrJ=JqPlHQ_v(^5P?e9+@eW= zxyzl$FW=6(A_oTSzb;@>#``w208*&JX3fK~v zFIsKP^U_Y4GMYOdYO2Z^NO||YW{}0^kbi_tF8raEZgd0^{|g&6iTc=-;M#o!9MlP&i8u`Lq ztnY$*5fL8}Q^z@YFnW_}ByWug;hGkVb+Z`8s}!0-?OxhUU+R&iz-W0D39))8`+8_s zHSx-_(dmkc1&VxRV6)aH&5+41Drz#CHdQ`O$_fo;d+W2krU`ENu6Yqpyjr<)ef1cI z$t@EYrjtVllXX|I)v9I}_rSp{$P$IZ(qzkXb@@%Oct~aG=dISuuEvYZ+9t8@O&4*- zMvsvREoyODmmFlifHTaKNy<#U7w0Sdy&h7>v6B(+qTP?=HB6_n3y#rBne8ooBdZUbq@b3Naha;O9!d*v#8`dAA zDKKF6C^Fxp>CQ}pPzdW2{(-cFbiziSNfIW?OBIEs!%V^Kqb07afd{qg`Oz({p^8!h zji&=w`Xu{~es>A@q#7|QF~C!Ie^;SF624C@oe!A61R#3aRVdyojTSd?jw6VvMhUNH zSP>rw5Q8(N6hd6|Pp6lo`Y&zqwecaI;^En|-~RN)^F8~&??lRgB>7BrzQ0}pgszV} z^Vh;Qk}}qCpmbrOe=C)B515z-pUeaurGyFE5zee**KZ|qfdqjcc*DTqi6WmWT(XIK z$bPy4>`aFpDKej%th!Bo|7wH7FLXsrJL0t?eISt+ppc@Hn=nE)6l~yS zn?U9IkJY!wvOEdMV$nfj{=rHZF9toX@-f;anBI$2)p8$8@K`U|x;ZbwwbFCGsZ$PX z_N3Lu7?rT5d1ra{X5s##|YL+1->^`prE69Vo)n6Mq-j8Ib`$H zTM)ZM*h)h_Mr(%Z>?BCs7Q=FKkzk6@c5Owz@YY1or@}M^_efywUmX(>OTTMFAxji#9p0YAP(tjAFQaZe<_5u;?zXAidUVH%8n~_dcE`Aq1aKj#DMaLm~*tz!O_Oe zhfi=e9%%(NcAlho$>iTXt`WmCG@q6hE$uFo9c_n46wgFNWv#@fOY|Fnd?BNuYZi?LmcPujwp zsR!VNZ3m3-?gp2&=u=xTM|88E8RfaL?nBld4OsYaH&N088bs2z4P4F$gj_mJ=CB$~ zOahx!P#t=k^P1`P4r$`l7*^Gqr}VwWg7Tcur=l_==e^?kFNL8E04|eqWvFh1J_^Ep%!%PklWExCO2s|qzIvR z7-jzNg#Rac_co1xT(?^P`b+g_Qb(gVvhuHOc8|kxRo1*Ob=Zb*22U$#M{vPVsXg1s z(W8&FiPCe2Ge>1rSmXNLZK4Ot|6%PdqvBkbZqWpH2<{r(T^e@@l3>9dg1bZG?(PsE z!QC}za0~A4?u~OhYs=Z|+w0!5&ba4i|LJ#(_pN8vtg1Qdv8d6jKhxtzgzRT@Hoe%w zv2@p7eiYF(?vxVu_6vbL;LW)OrZeD&`j2mYu21&=zrW_(? zMYs~%9^d%RKKrr}X%!+%v|anwi0|QCY@~*ubrIj3rr*Aod=EV19}|9g=Z~xK6ge_9 zb1~&Fa@P+qxsp=X?mI|i5!Zc~Zq}6p+{)e0%`@-(>@nW!=_cPcgfqOS0JZ@o#^3CR zitzFJn|z%!K-224VAkqqI_oCxb-^nk9Na5XMRFf(HdG(_wD*IHds?6)?+5US=jhfO zG6H7hgnzphmTP_C?dzpJd!#(kZK~m66?nJLl}E?9DntuXj*+DK^Z{R!($lZGt|rpA z_-bd3d9A`@iglbR;CjFxr}tR011zl|E;Uo^W*9YhKB^({92tGB?%yb9p8&iFTouzC z^%XH9zLQ#z?g7W|0%qiJaFkg29MxBiKuGfsPDkq@`=&R#hJsKa=S$4qMX++mY@x_T zQ21b4UGA56(+!-RW6sNL&%b;Qh{;|YQ_WbT3uZqom;SId8swS$+vlKX>sW2NO{L=1 zoX;8$Hn}tlk!VwNJ`1RwcuB4M;{vc;Y`hfzk6jMuIREK#&?85|r0+v+*xB_zvhV9# zc3;ro;q)e${ka4;g_6b$o@NQL{b}1p1>m(pUayyVnZ<=zK!7u1Fo)Wy3~hx3{4Jr=L*JwDo!dVb>UDng3<`B3bL5Y;yB3(_RT zJ+m^MzJkvgmtEvs&;~R$VzsBA8pY~1y2Pnj;P9253V3}A9D&&5!^cxv^^4cSw zR=Pkk)x_y!!L$Sd!0Ut)(+2uUff8dZGP08_nc?wOCIH(mOg}}-PF;>}9Bh;)cnSEVk1A zkr_1+%2xC_7o9Ez$06*9=GNz&87Z?)SMWXa((@L=`tjTug-7bD8N8mY6|$CX8R6^4 zKEm7l$iPmYL<2z@(9tbAP%u6seddnFoGSW{MnuZ!L9%lx2;C79ZAjD^}dH3 zs()EEvXDq3Rcqva{Mc=Gn;%H{FSkWIcE(HGlJRfW(DBZ&Lf7$pYC!eQ_yOLCy4>a3 zEKl{td#tyz`NLDZR46n>Xt87*9-x60!kjw77H^GExLYT~`d0s)!+;kU9lwg({0SY8 ze1D^(MB-nfTELDO1TOHs}lcc#yH5A?v2q94yW$YWt4kQ_IaFOfC9K~ z&tszC!qg(+-c9A2Ks76UKN!yb1WAzt1h=jt)qCS5hvD2ILbiiIc=r2U6 z2R2zdAN!p@i38Z$>lr#@NfCQh%LfPAGXOU_umKEetrXer zHQX%?B`F=z*q(|cOJEJCS)2v^uY310;;9~9tc_wF_74<>(`JFQ029(Ye2P*xy>!YVR&)kJBn>NeW+#Sms!LY4^ zn)(&?S@WVen|Y&iuhow99-@|6|6~NJlH}z4$(QT5#)vsIOL5sR$s6Q$+|ozD+5{G+ zco;PKH&gCuC-{FRB~OQi)3yH{L|f8d{-i```a>+Lt^SwI4s3`RwxYi`aOoSR75Yra zCi209r_l#bYs;wQ2A`xafGZ90nx9_2QwEgF<6#|P zb4VzBiSW_q)JiEObR>K|Bkzs$(hBrS?%TuH8n*us0(|Rp`}t(RZRL`)*N~)hu6?hj z*uxSq^^Et^^j_C+vHFpZ*UoMM?mDAoIPGKEEYbee`P%tsP-~_?p&o^k((y1fIc|H~ zCi}8pnh&M3^}^ndo`_!ox#=*eW^M{;sSzn zp%+}JF}jg)_uB46;7uC4*{S}m*}uJ@%4n?)Z!;)xw$!KAw21S&z^fA+<;K80OLx>* z(%rU@1Cl?(PyBEAG5Kq04@j?bs4DqylCy#*eVI^E{84||cX<-G#p4r=k5>(-rIE1K z$0E9fp0R}JK8Ymd$4pVwM0`Az?@ZQVpUH}fFbBWd5sD$1+F8A9N-GEVt) zcC?_XXGaXw&*c1mTwOvwLJGv z)8Bk_-L>=a%Q@2a4U^+Gmk#VrU511=(a0R-M2nle7J}hD(W4_!t$!03g;h@47bEqd z3-+fOk&mLn@)ME`vg7*Qn0siL))!|4U7(=qrj%7luk>xP%7ijycouklEmdgPjj+@o z)l&s%;#qDURnJuO^<3h5>!@9PySXyqp|(r~WPe9f(SFs>w(@s!XJ$@&y!`XlE>A-%r&j;;P10TGDJF*%_Q8jt zhaH;k!*V;$^UunW-o+@7jb>8!_5U)`vV-)S>MSI zRec|J=DUvzh@6@#g_MQ(ORo{LE>CxI$ z{{&jl{3^cqDt{5Hw4F+ldg;g}8M^QRk~WZ1Q1p1c#O*qxZKgeWsw>H=7$) zVI4pDLtE2lMWKASHwXw;xa(Iibd`xY(*g&Rymt_Z}|T zXEyK#j#lL3ggyW<=^F$iWXU|vm>slirkw4f{E=??Qk!9van8tGKwp)}w{X($XI z>noFGdtfpSHwp63C|sf1K1%Ml|fhtco<6?3H5S z@_}*#CisJW#c|FC@wC#T_1jLRD9 zHLG!%`^=L4h(1sVjqm}D>P!Iy8==>n37>QLOHZUMpe+~|V~UTaU}qEdQ>=FH7b1F* zNTGc#p@Q10lqYbopn-!W$bpEE^J4ohWuj0=U=MP%wsn^*JqkUM+vm)(nX$2cEJhyL ztSm|$b1o(e^pCFHEJg2cXLs<1b>V|-xW5<~CNdV6iB zzzc$5U$)iQ_y8*&xFE~J>6NUewQZd-$q_h~!ZKQHF62B0?b7kz&xH?wcOSgEeWAI% zyYQash9bnvNm`W?j*;Zg<-hGdd+lOQvK~f z84IA)TM2A92=AviAtn3uh|}hvwWU6G{C0AhE5mYUq^%h{1QIAp|@bV$<7RReW(rz4nLw+gzUpx5I9EM7BLsmgJne@dh+Fr zeO&ZX+|Sngs3#;w$|dk^ub%{LMNVcWT=$wEJ93$e=^xDqH~U)Yy2`Bsi?bp0z?WKC zd%73Uob`L>*N*GgmT~d5-N|P`-8z3q<8ZcZeFHebO(9cOk`)olUuC82{O5NED2XjYIaB8l z%MD-SeWcUCGj=rajNM41wHbPx8u#oK9^rR3On~EK+VGR59i^UfmD{d`0^fjskl6J>L0n4 zV<0|qMch#qgWnYm=yP7ayl9fbt%gm2<^HPNp`O)ByXx`=`{yfBqlEFsgdcm+QdM}$ zn~C`9)V|N>H>Lk_LZSSk`41-)a!v<~8TteqD^(~KCyt;fDR}b%qS=QZns!bvYSX`Us{j4yxLtmIVF~K4Wk8S#SZjOn+}PYopd}0#UUInP<=K zQM~5<%tV#Uhkvxg=ByX~{wz395QlkWK&;IL@m$a%r9ESsGsE0=4uvn?;s)fnHHcJ{Mc%zm zwEpQ`3_gs%eBpJqVg$lnv=59kG|-ONJE+kgwqp`SnUYa8!n3c&a7Tm43e3k^t6;@i z@3>`^u5(qvrG4;o=9d?>GUA6U6Xn0>39|#*LIKYH!W5?N^Mi@tmCu$@cyJ2W)XVV= zysNd#?&AY>tjkP4NVtEmWY_fs8`S#)zn9a*vgPfX!h>W}o7^Ac16$#3vOm!*-9KoS z%wN*1U7s}Qzp<_Ak3p=n&>NN4$whUX&6ME^e$WHiu8ZLzzt0>iD{bw$|Z+p56K*MbijzLSnfJ)=Y_-h_M^oWwdSY z3Tq{gBg8#5u1MrrrF1h(uHg`D#C)CS(}ppM0ts&m6~>i4@7oN3BYaiu&Km+W_mbbX^Rw{h5nviqnBy6Re1s6gBh zp$&z;Ye{-cu?82DT?mFxH&tov9f3Q>o7We5_Q&%wPs~I#TFo%{9A&4OY{?}3FD4hb zJTuQm@9a-6Sv40*>dQ1yvW9`*x^y$JMUzzZULL>)VFs9)16gsPz5rlwQSd~t4-;}b zk-Qhg#qOTH%k=#%@VZ=?8|)H9{}h)#sJ?HgCCx)lk!d?UcKCw&66BZA=99XK1am)L zb#L{s7i{9CFgWlthay8W@6*fNPFZ5ae4-Qj_e0g*_G3pyE9wUC2s$DmY}J^WKRe!v zIa^lqAy>kGuRp-(y<5|0#^W6r90;P|$IQ)rDs8eH28(YvM}@kfH-t6#&y8$Vek93B zdkssBC20pHZm(fzFWo~P(9Fg9jP1i44vg-+^1jjy4v%yXYAjWetv(WOJrDY){)&dJ zakMj^14*~7c~{yuIy$PDO$kX7ObK0%cUH3<6WNE{W8C9O}(V z#jyXP!RcCvB`pvY7yMIpI12ck9i0C4+FrHe{fFMs{e+g!7CF=k$lz7~~E01a!yD z0dzu2xA@MF%vPNQNk*(kZj!Cqf0(o0BvsykGsBgjcot|6-(983|MTyC_q_EnjYAmyvI{#+6_p&R&F3}#%aOc@SFdEMJ_ZFAK&W5nu?Tsf`WohjD`@ArNKum@}&`tUDbMnAuT$8 z=I&y9YYH+2-QF_6Z!R-un2*=JjvSAT_=HwTg|+?cU8XqnVe5*Muau;lCj`}6Za`KrKFAMv@0Z=G??9i4}|TF-=z zKc|DZu1*8?$+bJ)e8+sx1BzaJBYQ-p)ST=hZm`Jgvwq6#E^n!tJ}+81?{{7TdO?c$as8uPn=xAJVUmZb-=Xi5|RHUK;8>1p3=BUvXh_y8tp$ zc-D4dchMnP#qKtOD~1}!%|2u4dc=SfjKgQCWl>fwxk7{a!La2Kmp0zm>}J^f%bIUE zY30YMZ5T;$nx-0Y?F-Rqlw_t_l$=sP!$JOo?M}d~@8yKGookT}IR@7VJ_2IH_j~t< z13t{`QauDF;ydgI5pl2srCsA^Nd&^R94H}19U~s5VeYW~y`{O&<X zHXQl}W_IC)I=C)2HH60#7tJQlymyA1PAET6GwYNdM+TVJzo!C78O?cn*Q+blI_$Q` zK>|q3WPOv`jT#Kom72&y$xJXompcK&DGJ?ZOS4;`pYEQ91~Qy`XkR_pEJwc-C9Vau z&Yi>USO3uQo-L+BuvPRyTNHFc#O%u2RR2`jsnk}8jjaBZm2Q3R8Wz$NHdYRH3gU^2c`yS9%a1g4I`S;Aw+4Di$g>Esso8AB?N!Z z-rg?&jX=+a{^^z>U{;_HHa_w6kDy!+7G5vEhd=+E#&5@Gk6+ijVyN*TwrSAEjgf2d zQbyKW!*RlPZYAb>>YY(Ov*8EeZ1R;~I+;?W$Hc-=*h zuXBVtV_=z!Z~_S0Hkr~Q^D_*1h;e9q{(0y~-wmKZUDgw$l)`d!tx#+L=$P_0^Upo@ za0jydaAebgZbqcjG45#LQW|R^=9lDAub-e`#==A9hn&hBs4^EC5nWCJex8{QM(uoW z*n<_>k6}=;^LBM$#d;i?%n(YyoOV;@dYrUYDSS$~Wf%$bgrK6nKkG&1Ldk6lS?hv| zb=fA==JQlN+b;!@3)nGoVkL8ElOt`e+2DO_C+G0Wr^95_L*q~Dt1g6ir_^M@8agB| zM$jyFyr!#e{PL$jSss9s7X84i160!gPHnIn<&M3;Yj4E%Z84~882*OC0sdx>0|~$z zm$4Ad4LivW(pS+ym!}z5ZQI}eaMO;Zw>yb zEnq}JyhY|;SVj5;Y9DajW#&!#a1E5^^TPiW3rC~Tj6Gedfj!95LT`t~5#=Y@A22z8T{Lj!z`tHu`4{&XB`%7?zj6n)oMM_rasY<|TPCIdPBo%N( zmE19rVP?}>V0EXaqo^OLA@{5$VwV#gQG#Yfa_g6S#L?;|a%xNtf?G$azD^M8{#KS5 zS{<&nDEE)o)QKGByV4zbB}1?g)iejOdcTkPH8dPmBxV+wRJKYiGAIt<%J>{m7G-kt6`Q@uEGhMomQ9sel(zW6168!=1OdlY_@16LaD=v7^(7&xWxCKjc+9S zE)C1<>X;VMMJSDG^a#z48j+dg6vACZhV)AV7?9#v}n2cI*uAyNv9~Hkr zq@ZR7JSY4J>Tu!XXVbz=t4sLL{PP=Zv8cPn#lx~vp)WapOuS zlIL(lM4EiaJqiljrVU%8e%B)cxJfCL?E_XO{o7eZk<)C$;m4ycBMk7YAxX;N|0`gq z-+jScdTXIhhy3f;{fv>PazaeknDa%I)zWI_hvY~t@_!)RzjNWgfBKQ4#RjILVE;At zQMd(0qcCRuE%fUdqW$^b|NoEF`|rp7<0l#dL_FHmudV<85cHY%dn!1!|BwIw%b%hm z!sv#49{gk`e{p&v*WdB+)j8n@XJrnITJ>i@9;A7)&@sz-#4QX(4+1{o6`LeuEo7Xe zYM>jU&=+F<*N6QNp79?~7pD3Bxus&Lzm;9TA8BPBCkIg5dHn3$9u=+3>XVZ7HHH5hAw1H()`&F(L? zzdtc)j_cw;&Rt7ni}KCvw5zC%;XuNa9zb;_Zt^WzL(SN>!N^o5l(#JN(}%zHZr?-X zl7hJvk--1uxc>kCvZR>5^LBne#wRro^xc(Iv$!k_ZYr@79o)7|rExgo+<(D?g>*hcue_ z|HdI*Xw#9RiR;(pIq79eCFz*am2Q#!2cQbiQmoUWRx7R{hU_x?=7=4w8Cz?<(jJUx zVjAx=z56m-LG;b$8J&yTqy@?E3i~6$;!joB#|j1fYLIO} zvE!U$Sn^_~cqaxPq_=Jhjty-hijb9zuL(iJp0PuXpiNoCibtbw1}QS|!H)ku&0LM3 z0ypcE^5g-P?WAHd1=?IA^Kv+ezmU4T{|l4UFVDZvGUBut?0*dR}Vhn zMVV9qA7|-bv(~p9%ifl{oRM{Ph;~+IO!IZtw$cWCH`)i^TkIU`$zuWB@{r*^bMeah z${n^pqZcf+Fi$;-3B^UIGBeNVGY4jy7|E{^1M#1Sh2!XguER8a1}$T29vKLUuZC~p zOkbg7GYFu5pDgIXzYI9rXD;k;#J>raRdo1_0&%Ea%Tf6oW729?lCGwoqRWCGmr#uQ z7?iI#e6R$Mrl2k}@3DwuJQ;^K;VIWsfyxGMONVwBjS>@iN3FR~&SLk-)J)F>m4OYe zIKkIWHsl;^2%lc=%nY-qZqk#GwI7IdEoZT~^eQoQ$m&9YQz=GS&3I#GBCQ-LdJ0?j zw@*-R-;l=kwI3j1IF1Z8vNaZ>abaA}L<$d(a_5QMIa6{d6d`iUdX>?LSR!jnS4>@B z#NAC@APf7&7=VzZC(O7rO^^)AO}1|_5JaQG-HEuOz4(1&obD{vU%Nu(ePCk|S9ouC z2G7;b3UfUc@?wVxGUGXL$m#lmh}~kz>hNBP7~G2ADi!ixEi0ajU%*uHi?;=Q5KWFy zynA7}F42>X+S>*ttk1%p+9!Bh}9TCmmd; zz;LP0LRqV5Iu=$7mxfyYP5+3v{}TTnI&F<}xdZ-QRl%+zQtbyX_wZBTd}+CB!g=zh`4eBk8Z}GJiB4>M z9btN36cRh!>+*VcScJPF7aN^yR@tMJA&_X=QjIIN0Tzbi)Jo>-lcOa`Cw=Ya#^6v; z&l(f-PD+B?<(ZW)A`3+Y*=2KpV($S$+v~LtHcU z*3r|au*7<~Okj5uO4lMvdP!!vXf8Mb{jWr*pUn_wZ)Il9GZ&N=G)K z(Y;MD4T04epPs&Tn`{g&L90EpVW+Ex?fSPN_~Zy62r=ZmkC`XuXzksW@Hv6h>ZGCvZ8GT@Ob?Oeu?_xAcd$L_`_(hPo0S?eAWW*^1PqmFn#!HBj7Z9u* zUoRSXeLD<>dcLp!M8;ugH~tO@hRbpi>L>93JbPCUJd%!aXM!Qbw}(73PJO_5|qPhSvoJ}<7QlsXwSIqjzq zJUC^XVsr#6IER;LC<-{j-4gRaiA(CGz5xyiM#UvMW+|3z$ zah@ahHnV$tYxH$6D`>+(5@ws;fgq9Ir&Vn((THWIt8in=QvDecJ|wD;f#1G_5|jR$ zw`v7dp{NI4MVmee9w!PaO>xRbZHZ$Xnk6EufbE>&4+m^DsqsNU(UC+oU;6W@_Nk4O zte5$_cZTnXz0oreNDEVdJR3C$z8a! zP^!~@D}bT{l^aR-@r^?<;s(3E*%DrC6SR5^JSA5kZE!zX2KjH7LkIg@vZU4;ySJLk<9 zIhS`TorUCrN$17><2rXLKlg0BN;Z^cl^GJ zVqU~Og{WNOLB!L;{ef>?29ofOekh}3U?in^6KvB6M!^E}3XHB&@*Oyc{0`w=E@zx7 zvaS}Lv&Mw);Tk>FHvNtJg|M%Va&>EKWIm*p^KXYWksVp9&Aj_~zr&I3tOZgp7|;41 zxxdI$RD(nfMB$Hfx~I}QdI&zJBgb@{J|FMDoNAkl3|sq` zY>oIRS%_QP3Vq3%>@e_Sh+tMsh#Trc3VQrb+u_A45;nNu%BB$eIGOkmF*%8mW`YZ) z%2e=TK?9_=0_5*qbl;kb?4i0|(>}&e-LObsJ>pct5TOilLTTo@Z%(#2HAL!Jnf zUiI(Ilyy+se7iicDcgd5RY{IM+GvW-=z$MOBk`fOStznvrU5p*xA|Cb<2@fc`*adQ zPhh{SUzdO_V76; z29LJVkTC0%F66J#3Y@V&INlSF4ZaM2ZHBi1a*Y$9gZJO&xAhRg%;YQ()Zb@N8f7<* znsu#?CJrAwWBz>1TzmO8c~ab(_|b8ZjyCf-C`U^(IN@kjaEQ)!C4H(R?7Q~B{dJ;h zHqVOIfy?*GhdQsyJZo*~(1V(l_$|y#v<+lgoXj`ko5A>jQ@;`aGTF^3y}Wvkr>p1YqEE0h(he4V2`pe_$l z$14sgMaLTsGet)bM~I^1Jx8IU<0D7EqT@5io}%Mx?^`q+;mkMokiGBF)P*zO+Qase zp`{3CLf9jkT+jxf+N1Oepuvi0L)oME%A-kj-63o;h4zp#1zh0w+M~^NxuI?fxD1Yv z-Iu?Kf8WcX3c?V&4}ABKs_M9PiwR_xAEuT;MyyqG;Bm zZH<#C!jav8yK$CRYuLJ7@0B7V1-<>?VAz7v(1u6xT$z=Fg`of@Qr5$0IG>>^@KuGs zC+uC%x(5(dGbv|^4@;UU(=B|{5cgkaAQQvo2T*DDondy7Sz->e?$tZG;?^XCD8!&; z5_ni$UI7u}XnrUJ3hjh*3@)PEB(g)UXbWs7Jjv~&^5dznUspqkY7)~dFU31(OjgB6 z?nq^D)xsuOGpA}hI2CR^zsVDS-z%5shd?QXh5H|XCej-diVc$#D#Z#ZXL94Kcu?Zy zI%`|N;Z6E6MPtju0Am9Wjr}nBcQJ9M0FrRqZP6%k+2uB2bF5&Acf1Qe_uSVyDx#5$ zUm8kAn1T zrlYp%>-I7(6gb+}8^`Ec2!oBFr?EHm zNB06>RDl~MAsfBQiB!S%3iV56zq2Z@!QK(92@x6Bt>+pFr37z5WZ6fS{zo>Xqs(kl zvx5Oy&dm2cDmIO24kusPXxJ2$On6L|T{p6!8cBLhhqgQy znBT+tKcgG+au-~CyP_xQ_pO0ki~>{K-X0jOPN{tX&F@mKVyL^Z^%%M;X77q!>zH++ zIpy(5y8QFy7rpF5&FCLNkIDz12dXoh$jVv2g`samNm#^(tG@n5ePfFb?j9#lkG0yl z=d+RDQsp8spJ|@O1*T%T#G?&2gX&e&q#rv?$l;9Rm&kiFn#;DavCaftk^rBc^X3O8@N2%k{!#%2Sn+G z|5`}nrtU&Vg#!$-mPwmO7#1u1aq?CBbn5&d)x1janakj3%n8K!Y%Aog_0uxjDMLT> zlv*K|H3MfdNshT<5Q5Sp)w1upPhNsEiRVZ=T;mc|T;&l6w!a$5165A(bviqlZ zciwxhXdUJ;q|S!)r5-xDqSj3ZRH*N5A2pci5kzV`jEnY+$IllUtO@X}X+ukSXK^=i>GFeGPg`;V|@;DHpXzV!pRsu`UqzRV#@^CWt^$&{S=8 z_qKC#Y&hKn$p#_-BNA#=g}(4ir14<-32zOJo}M88 z>=aQr1*$mm=wtg?Y_piN^kn~wZxZ1M>B>An2m}7c`{W2#XDlAji{PsFhFZu&RzN6V z^65FmI#*;Zh~XZlUNQ=oMh9Q+l+XoZdby9Bmixp_M0=jN@X^RwW$-@RXv0}0*}1q zOxml^D+sgx=5uvU!L5XMP*onEARhDivl+&nI6_|#eVdu~W_Y@0k3-Tdxq#T|LZ49S zlIY%;7ov#B9yFX=ELoJW`-G$}Ia$0Q=sRB46SM=92T;vkp5T)|5I{|FeXDuDP~x&f zefecT?~-@EV=wmBy1HwgG26Z}%D*tZUpQ^kt#dd@&Tc(LzDoaz;CumP>u$hV0K<4f zzSTKHNaVUft(&jMYkqxPeDeV%U>+N_C#w-VXkf%iT1F6B#uJ?kxbrEs^;n&1SM$c( zl^<>7&U3x29!;zH4Naj>U{kU;@>b}8tbqQ)G0I`HqGtElra-N=zFHh{m4g?c4R*`6 zEul8)TtQ*k9j10OM3k~kng66yGt~UG;HWK5iu*YQj*w)g`yy^7HBJ%p2$0$@MRub@ z7+rej6e~Cl1YeR#y{lfZHGgOG*qR{p^3pL;&P4Xs*4ct zs?IhId(Y%tT>e+x@~c<5R1Y^K{-%a*p}wrP*4^~xso_`zpuFELWWM;|$iTdkDA_<` zg-q=*h)?O@f=#K(?fthW4~UoJ`UR)P&mUHB~0aZ;2HGGEgqoW5%)2;bRE4T~s>{Ml(C9L<(h|lZo8B^L@)WomyU+;osG=t1N z2#5)IuvWv%Pm$4Kg&~a$j;S7AzH}USL&xm-=`nPWeFj=$K8)e{RIaa|$`CGp z{|JO~i?7S*ipp?s1CP0ZthZ#H_d*+Io3;^OHRfD{Y+&RvJfh5ZySNzE?^(70W) z4x?c59OsaO02dA?D-p0_d(}rb>l|ME6JJFzR-!q&w#WHdo_}myv7F4f6tp~ZTfJ-( z;j&l<5Toh=r(ZH3rXYpoKg{J$lv*P-h?GZP+I(xI1A&`J>(8&wArB_|fx54HhhZeS zLJhxi+P$Hc`1~Q4<8osBQrV`Hl?|SyDtp!!gzjL6tgMD&#Jl~>SWf&FpSbUcIn?Fo zk3VyblrTz~8dUP8{;q~fc_w^9aB8A5`( zg&v0iBbq|^bQ`UT*R?%D+Gmz}LNu0e)$TII6BYbfpP~^NqAUFPzNa5yeA?w#T#19w zDYZ;c2gHh(E^NtVW_rN5Xs4E9uq;jdU|O8A?QSrB?}6aoZ*;sB*#*BO$Y}Y{&OR{y z%lc}gx@COdoJBFVU$7P__=7u^#fru0qqeV!ZO5BxG3<{lz95>eJR4_K0n%oS#}QGf z7Y@|L*IC4KMYYA{RrTECUCP(*vOv;25O%LD7k{|-th_N}Lb2X83G<*B<_;j91*`!i>L$?6lr_v7J2#1d;TI#!jN6xq8J>M-`bhQZGJO^tIG%elEfB$w{zty zv+M$IrkkuAF(s?+x3-*1K-)mV1|4mf`nGTN136ePM1tB7`L6_sjhY?t>&u{oub%^S z^Yn?9zzlr;Om6~}56mj|Q$UX7V3k4NPn)N+6R_++8Z0|-nq#8z0&)8keTwvt9&jf5bZhuHZYvI7xScrSc4!D!1rsuz+ZMy$@<@OqGs^A&Ww z#<*q9f38fZrzU=CMa}VLc9e9l;S7DGDO>`#0tko5jH^nL|NZ4HWV*{c1`7sAp-gk+ z8-!oexSf8SLSoIY?~6PhK=;u&x!zbUGSH7ycU9b>)Q8?P(XVrxC*vEVQbWaVAgfs& z63+`ZgI}I*-7ut|MXltQZHfRFx-^>I%f3?vuYjYCj7Hbe!7`3&#$Kmp9l6V-t8@A5 z!m2fny=9teK)l)_cX*uIM@9nC5N3;j;3C%k4}D+gxthrum+vkjR(iJR;aP>ezDdl# z`#ln+{mW@fyIUd?X8qrs6eiF7+Us=n4baHlMI_@OIvUXtxFF)6e!%MJbXa+$tFZ8d zKrk??RF6PDe`vwUeV=UQaVazJc@8C>QVh{3H6`xJS4Oge4#V93HN@Vw@YlHwDEKf? z$@G$JzHY;lCp=SWK@-#y;5zjjE>2o50Ws)PO}fozBU12+fm_28Lgz>yYj@=^+t3Jb+cfN&A@RWphe zVE+qNyx6mpMz_1 zh(EPDf{c=&&E(R|(HIFsunlMhrVztSY#2yVtb5-yg;Lg+l-5&68aIH~XhlBFT!(|- z>ok3Q?o)L?HB4qgjpSvG(-urGVZKIOpWkD4(f8|;vJIoK7)^)+JGjrtq(4W?r^M`O z&ixo?;-m|}VdTMfyyS^CrZ);5l$XB|{i(6kS$R785}t%l8Ze_{yuK~X!H^=NOFZy7k+ZJqPP|~1TAprATs)@8akp(7{1l0 za}6ZLd&$B(d|aGEMGzuOE*yllbF(K5y+{f_7c38lYlAF!s-b^65esOpB=&JF!5eJ;8=b{K_+c2I)xjQlxDN=3C zQvhl!XhPi6H+&Spr5a#Mw1|$GP0zP!oMccH9~gSzcyepUp{@_3au4 zb)NUzizYl*=mxW!F?ZJ&c`1FfGZ>I>cY9(r6ldQsBeh{Wey$7gU~jNUamPbBdx1pB z91hHoOY)!mZlmn#8c+kv|1L@OU8#&4R*yG*t_Ggu$orlVo22!7^Fj?LQPnIvp$LrA zAdcmj3J=8LLmyEM(?N_-JlG$>MGmh93MGfwiUA!F9ipZCEqz&DxGglVALWC)8+hB- z#|(o=FVi93H9J!5as*!XYuDG^Q6nsgs?^)C3%+%I&vhBLewuM*HZCeDu1iCxgL}C< ziIAPty5zKL&W9K6GbPrJN5u5}_VH>3dZ(@JVrDoc7JmRX=!%v69>Hs&9f_ZF#wX>C z+?TJHQ#<}6|M;+04-e>{S;^IG=hARux@JjyLIx&P?dObTu-`Z2LW4W`E+q>}dj4O| z7+4xllJ8Ned`1+j=<1J5I!1ye=Nm^OW@Iv;Kb?EW66CcpW2<%CRgIo4mZm6loweR} z21RNsm2IEcc^1bjy{SBwT@gUMI3Dsu);xPWbtApm7U9YCg4SzNU%&PfI6o<<)GuBa z57!3W`eCiU06L1I$@^P-)_ctCm&2cfvPXA2>6<13u@~aB_X0H+KjT|IZ|cS%x`s-q zokHr3PWHjn*^PwrIHrGWd`=N@oZHM3xj^9&usP=b@Z>>09X5;oPVf~N3|x$2GRl89 z>Iwy@$XoAOK&_Uk_^zxna#UsU9z8UzUw>Ilu?J#GG*p`vweuI}%{um((@M1YQLd?? zwJXIc5zJbfrUJ57vlEQV9utD=&dlm7xoBjP+|a4SL|tt_P;PQD$~yRxo{V)kR_Hx} zNkoaQFu}z$O?>232m5VRn5PAIY^%%^h^H~OA)lvFM|r@&8*wO=iqw_~4>ckh6%GXc zyOnRzvc}(LQQ-h&rrq5cj9QdvesIAoV1*}QffEwqZH~|Y$A#*e0tD(f`~|M9^-&q2b3-J3t|u7y1nMvoi8cA8P#H_|Lrg&j zx!;30LS#`H7ns9QqnZwAqsK?@mi-ms&m8GX8aKoQ95nq!kf25*lluyh1i>xIknya$ z#Qs7EK@PTxKt(LC)9yk#LDwy1E1nJuh8P6C`BT#)1QUJf;ShDk*-YG53L-Fd36#RYZ*Vmz|gnsV<1kuzyjXV-c6!;Y|N z9o4P+Jo_4GrdHh~nWbcf0Ac{3tZj}!mb3iJd05Vs&`S1q0&41;+R44tvDLm6gdx7l zwfd_yW#Sug+$Z$|PF3VNFIR;RLZgDL_E~IsSr?x)wQmY`Ag5k|ttG+dpVKo-0^z^g zu5>pK(IMG-rLA;PjZiw`J%-y(3k# zF_5Fozw*QN<^kQf_4`w^wGWcir>xx=5C&8GjB9cbNd<^ANa_r}oCNa)(91XWpxVJK z+kBfcNlh;6(^1oQen_$9Gr6-sBr71e_I;^1{o31tr^)fd{rx4UM03f$K?8WaPVFgk zpLf>YqSb}Mp6J+O8C)}Y6pXRmQXW58my(#2&sPFObj|6xS5BN>6H+}{dB}g71wLD1 z$CVJvWR|PIW|~WKd)xu$a8Zn7`myK$wBxIK4{^w{a*E$hWA0;)mgEnDQQ5cN^Izpv zoySgpnkA8+JHgsXWZP*rY$4g5lO-Bkfp$6Rg`w=*)RK6ixV%xjHK{6MqRpwJJH(06 z;zxe@29B?f`Oz*)d~xO@;ya-3$emN9scP zAwi?Lk!t?ZPcv)HS~JuC z?yjn?s^{0l<(6ChU(I#B&04Fi$MB6&1WuF~O!?~MIOB-i=dHBzWR4yxNo}nAl>@}M zpGdp(MvQJ609Kv8OYEOO?6f#DPe-5tO603?Sy83$&PDB~br&TJXWx|{wk&nEBOeZw zb-gbcp`BZ0)NV7;&(Xi0l{mHt%gYxmg_xW3-gHbV9hEMdS!Xm@80u2=wpN>F5f*Lk z=Igdcqt6)gT3MYR$US)4e%HgpV3O;G>&>0ZJRe5#zEf$=-;7(9ke6>zsvue_v2IJi zVfv%+Y7=1hI>c-Z-Oir?7j^Jye`F%-9e{R6*Mx%VHQ5%Dra%XzrWNtHrIr-&xTm%h z@pz<;6!Cbbt`zZjrJfY=c&9#5qxv+y+lC1tAc^#8e7}tx0wh88ZG_qW7@|oNCXeS4 z;y`ll%Z;#277|Bd?Z^G0UlkoBLEDRj?~V@NeUIKB#nK*dMIA0b6kL7F z(jIuloX@5cq}0Ct-cgYE5% zVUQCK-6P)-uxw0(rc_}kmL=X;{v=8*wyqQ6WWDy@xL>#od5HvF)&F<3g-QGGdG`iL zbSz{g;X+y+T3OJ1H+`F+@v=3D-|(tLHu1G~V1jUW;Rmh2#^y1n{}cN~wa^1w8!^y~ zVE>W^1whVID$C|kaBG#kfgYut>^mIw+|(y_H=u7R7t90r0b&EjAP!}X+-38~6&>wv zm~rIn-16H*Mvcl1qg`k_f-|`W4miB6H(K005v$jNreE**c*g)2)LL$dpjU!{V4}a) z?dSwPPylhTDCYKi1Lev0>0j;#@E-7cHvByjxLWt$D7p423%2+Ks&(*q^KwfGmE^nD zOnx&o7jNNHLySysKj>vU?PUO#pWg(F^L;0aPzEk+BO$4J7;cwQ}q6RGj3Q4yII;6JZ=5p z$ipbOF5h_Tu`UL-I7Z!g;`Mwp5Ya|d#lN*BGpC0ZOwRSVor2l(M-xz>lF2Gy(5mWR zF#*RI&A{DbS3EpQZ_vD)+&|V@5)ulI0aYe(TsO%Ycr*Y{1yPA7FI!zz5Pq7)O+QD3 z+ESz3_a3Pb*d=dLkIO>|&a$+m4r;>Sn)cASXWw?*5uo!l>p%TT+FXxJ~Y* zpSpvdigGV4EE5uw-I|~7P2~JD6rxg)mEz;-arpd0K%)0y(N0v(m5QPI|Jb=n0m-YR zRL{1LRDRV-=rgK5Ryv#Hc`yJH-2(t9MGf7=g)ed0Zk~GFHoD6>qAbHK-Ev^TC(=JN zs5fGG@<*VO`|?oT)QT$ri$0SOLv|LgyL$1gpGvGllT-QESXsdS%&zD~Pj6#QBnrAq z_gM5iVP{}pmUe&|&E91)h%2L+&0%X`IIOBY0W3EhXmopTb?jtRfD>O)9O*iw;lvWO z4^vu_(PlI`Op7n2wbb$$b+$g+Q^ZRk%0Dv#wUaZKoBLduVNn}*+{f#xjMwn`+cE8w z$i+MFwk%E_7f@2+)*|+N=*f|WVJ3t*;O4^pj!IasAAgxuiko@nhJ2XIrfA3FyBEa; zHqP3HlUzuXC)%}ItPV5QML_scMvCV}Ey?-~uE5QNQqf*g*#pv6TggHa$x7MEp8;E= z-!s>S*IP>J>koI(059(K1qMDy((gH7(bC!v?B{c@Z>DEnt|5|OXqlQu)r55W4djb{ z@I#=dN1ww4$)HkPA*Ta$aHc&x+HRPuhNU=_Q3TFvyb z8j*ZW|1hMR@kV+0P)Qam8n<7YcVLn!d4uVO3NC-dt2Hi#}$~4yy>*b?U8mqeC5#^2*5p4xII&AE@e1U=|+PmhQ`nra={9RoITtVr^s}b&7n|H&-*0L|hX52GIsPqt}igZU6JNUZ{W=uN%DN)|zqqKmqOzqdf zJK3*Fi(K)i9@JD6bo7_;F-M}^Wz&O2y#cV&1N)v=yBK6U!f)8sHr(JIe>@O6aV@kA zLD*B)@7$;yObqBSZOg7($no7UdWTNh1mfZM-ALHD%V?aCDFl!`(LV6SQqfcHjVjSKr*dg3gyCYM zl1S+@*8KiG%~*JRUZfzf+Lve|`&UUk=SjUOk<@C;4}qYmbQ>W1*9KSW8Ty)Hhwv6} z1J9E9hgwB-6D}r(*Hf}yVLJHqMq(b-6{})QTD3%i1qNlR)){%%T0j3eThx=fim@#p zNOgL;Giv+E-V}>+!f@U2i|rk5OksGw0kD5{e?k>?-bp?wr>h~!a^}qPxRj~q!LWoK ztNmkzM*brsekCSPG0{_O@u