[
  {
    "path": ".devcontainer/Dockerfile",
    "content": "# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.183.0/containers/typescript-node/.devcontainer/base.Dockerfile\n\n# [Choice] Node.js version: 16, 14, 12\nARG VARIANT=\"16-buster\"\nFROM mcr.microsoft.com/vscode/devcontainers/typescript-node:0-${VARIANT}\n\n# [Optional] Uncomment this section to install additional OS packages.\n# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \\\n#     && apt-get -y install --no-install-recommends <your-package-list-here>\n\n# [Optional] Uncomment if you want to install an additional version of node using nvm\n# ARG EXTRA_NODE_VERSION=10\n# RUN su node -c \"source /usr/local/share/nvm/nvm.sh && nvm install ${EXTRA_NODE_VERSION}\"\n\n# [Optional] Uncomment if you want to install more global node packages\n# RUN su node -c \"npm install -g <your-package-list -here>\"\n"
  },
  {
    "path": ".devcontainer/devcontainer.json",
    "content": "// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:\n// https://github.com/microsoft/vscode-dev-containers/tree/v0.183.0/containers/typescript-node\n{\n\t\"name\": \"Node.js & TypeScript\",\n\t\"build\": {\n\t\t\"dockerfile\": \"Dockerfile\",\n\t\t// Update 'VARIANT' to pick a Node version: 12, 14, 16\n\t\t\"args\": {\n\t\t\t\"VARIANT\": \"16\"\n\t\t}\n\t},\n\t// Set *default* container specific settings.json values on container create.\n\t\"settings\": {},\n\t// Add the IDs of extensions you want installed when the container is created.\n\t\"extensions\": [\n\t\t\"dbaeumer.vscode-eslint\"\n\t],\n\t// Use 'forwardPorts' to make a list of ports inside the container available locally.\n\t// \"forwardPorts\": [],\n\t// Use 'postCreateCommand' to run commands after the container is created.\n\t// \"postCreateCommand\": \"yarn install\",\n\t// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.\n\t// \"remoteUser\": \"node\"\n}"
  },
  {
    "path": ".editorconfig",
    "content": "[*.js]\nindent_style = space\nindent_size = 2\n"
  },
  {
    "path": ".eslintrc.js",
    "content": "module.exports = {\n  env: {\n    browser: true,\n    node: true\n  },\n  extends: 'eslint:recommended',\n  globals: {\n    Promise: false,\n    define: false,\n    Uint8ClampedArray: false\n  },\n  rules: {\n    indent: ['error', 2],\n    'linebreak-style': ['error', 'unix'],\n    quotes: ['error', 'single'],\n    semi: ['error', 'always']\n  },\n  overrides: [\n    {\n      files: ['test/*.js', 'examples/*.js'],\n      rules: { 'no-console': 'off' },\n      env: {\n        browser: true,\n        node: true,\n        mocha: true\n      },\n      globals: {\n        smartcrop: false,\n        Benchmark: false,\n        $: false,\n        chai: false,\n        debugDraw: false,\n        Uint8Array: false,\n        _: false,\n        cv: false,\n        tracking: false,\n        faceapi: false\n      }\n    }\n  ]\n};\n"
  },
  {
    "path": ".gitattributes",
    "content": ".gitattributes export-ignore  \n.gitignore export-ignore\nkarma.conf.js export-ignore\nGruntfile.js export-ignore\nCONTRIBUTING.md export-ignore\nexamples/images/*.jpg export-ignore\nscripts/ export-ignore\n.npmignore export-ignore\n.travis.yml export-ignore\n.vimrc export-ignore\n\n"
  },
  {
    "path": ".github/workflows/publish.yml",
    "content": "name: Publish\n\non:\n  release:\n    types: [published]\n\njobs:\n  publish:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n      - uses: actions/setup-node@v2\n        with:\n          node-version: 14\n          registry-url: 'https://registry.npmjs.org'  \n      - run: npm ci\n      - run: npm publish\n        env:\n          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}\n          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}"
  },
  {
    "path": ".github/workflows/tests.yml",
    "content": "name: Tests\n\non:\n  push:\n    branches: [ main ]\n  pull_request:\n    branches: [ '*' ]\n\njobs:\n  tests:\n\n    runs-on: ubuntu-latest\n\n    strategy:\n      matrix:\n        node-version: [16.x]\n\n    steps:\n      - uses: actions/checkout@v2\n      - name: Use Node.js ${{ matrix.node-version }}\n        uses: actions/setup-node@v2\n        with:\n          node-version: ${{ matrix.node-version }}\n      - run: npm ci\n      - run: npm run lint\n      - run: npm test\n        env:\n          SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }}\n          SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }}"
  },
  {
    "path": ".gitignore",
    "content": "node_modules\n.500px-consumer-key\ndist\nrelease\n"
  },
  {
    "path": ".prettierrc",
    "content": "{\n  \"singleQuote\": true\n}\n"
  },
  {
    "path": ".vimrc",
    "content": "set shiftwidth=2\nautocmd FileType javascript setlocal expandtab shiftwidth=4 softtabstop=4\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# How to contribute\n\n## Reporting Bugs\n\nWhen reporting a bug please provide **all** the information needed to quickly reproduce the problem.\n\nThis includes:\n\n* The browser & version used\n* A URL to reproduce the error\n* Other steps other necessary to reproduce the error\n\nIf I can't reproduce your problem it will likely not get fixed.\n\n## Contributing Code\n\n### Before Hacking\n\nTo avoid wasting your time please communicate before starting to hack\non a new feature / change.\nCreating an issue describing your plans is a good start.\n\n### Before submitting a pull request\n\n* Try to make your code look like the code around it.\n* Provide tests where appropriate.\n* Run eslint & prettier on the files you changed, fix any issues related to your changes.\n* Run the tests, make sure they are green\n\n### Please Avoid\n\n* Reformat my code to fit your personal preferences.\n\n### License\n\nBy contributing your code, you agree to license your contribution under the MIT License.\n\n## Setting up the development environment\n\nBefore you can start working you'll need to have node.js and git installed.\n\n```\n$ git clone\n$ cd normalmap.js\n$ npm install -g grunt jshint jscs\n$ npm install\n$ grunt\n```\n\nI work on GNU/Linux. Things might not work on windows.\n\n## Running the tests\n\nThe tests for smartcrop are fairly simplistic at the moment.\n\nYou can run them by opening the [/test/](http://localhost:8000/test/)\nfolder after running `grunt`.\n\nThe tests show the actual output next to the expected output and a diff.\n\n## Code of Conduct\n\nNone. Just be who you are.\n"
  },
  {
    "path": "Gruntfile.js",
    "content": "module.exports = function(grunt) {\n  grunt.initConfig({\n    connect: {\n      options: {\n        // useAvailablePort: true,\n        port: 8000,\n        hostname: '*',\n        base: '.',\n        // keepalive: true,\n        livereload: true\n        // debug: true,\n      },\n      server: {\n        options: {\n          open: 'http://localhost:8000/examples/testsuite.html'\n        }\n      },\n      test: {\n        options: {\n          open: 'http://localhost:8000/test/'\n        }\n      }\n    },\n    watch: {\n      options: {\n        livereload: true\n      },\n      static: {\n        files: ['smartcrop.js', 'examples/*', 'test/*'],\n        options: {\n          livereload: true\n        }\n      }\n    },\n    rsync: {\n      options: {\n        recursive: true\n      },\n      release: {\n        options: {\n          src: 'examples smartcrop.js doc/example.jpg',\n          dest: '/var/www/static/sandbox/2014/smartcrop/',\n          host: '29a.ch',\n          port: '22',\n          dryRun: false\n        }\n      }\n    },\n    karma: {\n      unit: {\n        configFile: 'karma.conf.js'\n      }\n    }\n  });\n  grunt.registerTask('default', ['connect:server', 'watch']);\n  grunt.registerTask('test', ['connect:test', 'watch']);\n  grunt.registerTask(\n    'fetchSamples',\n    'fetch sample images from 500px api',\n    function() {\n      var done = this.async();\n      var API500px = require('500px').API500px;\n      var http = require('http');\n      var fs = require('fs');\n      var consumerKey = grunt.file\n        .read('.500px-consumer-key')\n        .replace(/\\n$/, '');\n      var api500px = new API500px(consumerKey);\n      // jscs:disable requireCamelCaseOrUpperCaseIdentifiers\n      var options = {\n        rpp: 100,\n        image_size: 4,\n        license_type: 4,\n        sort: 'rating'\n      };\n\n      api500px.photos.searchByTerm('', options, function(error, results) {\n        var downloaded = 0;\n        var samples = results.photos.map(function(photo) {\n          var name = 'images/' + photo.id * 1 + '.jpg';\n          var f = fs.createWriteStream('examples/' + name);\n          http.get(photo.image_url, function(response) {\n            response.pipe(f);\n          });\n          f.on('finish', function() {\n            f.close();\n            if (++downloaded == samples.length) {\n              done();\n            }\n          });\n          return {\n            id: photo.id,\n            name: photo.name,\n            url: name,\n            attribution: photo.user.fullname,\n            thumb: photo.image_url.replace('4.jpg', '2.jpg'),\n            href: 'http://500px.com/photo/' + photo.id\n          };\n        });\n        grunt.file.write(\n          'examples/images/images.json',\n          JSON.stringify(samples)\n        );\n        // jscs:enable\n      });\n    }\n  );\n  grunt.loadNpmTasks('grunt-contrib-watch');\n  grunt.loadNpmTasks('grunt-contrib-connect');\n  grunt.loadNpmTasks('grunt-rsync');\n};\n"
  },
  {
    "path": "LICENSE",
    "content": "Copyright (c) 2016 Jonas Wagner\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# smartcrop.js\n\n![example workflow](https://github.com/jwagner/smartcrop.js/actions/workflows/tests.yml/badge.svg)\n\nSmartcrop.js implements an algorithm to find good crops for images.\nIt can be used in the browser, in node or via a CLI.\n\n![Example](https://29a.ch/sandbox/2014/smartcrop/example.jpg)\nImage: [https://www.flickr.com/photos/endogamia/5682480447/](https://www.flickr.com/photos/endogamia/5682480447) by Leon F. Cabeiro (N. Feans), licensed under CC-BY-2.0\n\n> **Note**\n> I'm currently working on a more advanced version of smartcrop.js based on machine learning. As part of that I'm looking for a large dataset of manually cropped images. If you know of such a dataset, please [let me know](https://29a.ch/about).\n\n## Demos\n\n- [Smartcrop.js Test Suite](https://29a.ch/sandbox/2014/smartcrop/examples/testsuite.html), contains over 100 images, **heavy**.\n- [Smartcrop.js Test Bed](https://29a.ch/sandbox/2014/smartcrop/examples/testbed.html), allows you to test smartcrop with your own images and different face detection libraries.\n- [Automatic Photo transitions](https://29a.ch/sandbox/2014/smartcrop/examples/slideshow.html), automatically creates Ken Burns transitions for a slide show.\n\n## Simple Example\n\n```javascript\n// you pass in an image as well as the width & height of the crop you\n// want to optimize.\nsmartcrop.crop(image, { width: 100, height: 100 }).then(function(result) {\n  console.log(result);\n});\n```\n\nOutput:\n\n```javascript\n// smartcrop will output you its best guess for a crop\n// you can now use this data to crop the image.\n{topCrop: {x: 300, y: 200, height: 200, width: 200}}\n```\n\n## Download/ Installation\n\n`npm install smartcrop`\nor just download [smartcrop.js](https://raw.githubusercontent.com/jwagner/smartcrop.js/master/smartcrop.js) from the git repository.\n\nSmarcrop requires support for [Promises](http://caniuse.com/#feat=promises),\nuse a [polyfill](https://github.com/taylorhakes/promise-polyfill) for unsupported browsers or set `smartcrop.Promise` to your favorite promise implementation\n(I recommend [bluebird](http://bluebirdjs.com/)).\n\n\n## Consider avoiding crops using dont-crop\n\nIf you are interested in using smartcrop.js to crop your images you should also consider to avoid cropping them by using [dont-crop](https://github.com/jwagner/dont-crop/).\nDont-crop gives you matching gradients and colors to pad and complement your images.\n\n![Example](https://29a.ch/images/dont-crop.cache-399897619c3de2e0.jpg)\n\n## Command Line Interface\n\nThe [smartcrop-cli](https://github.com/jwagner/smartcrop-cli) offers command line interface to smartcrop.js.\n\n## Node\n\nYou can use smartcrop from nodejs via either [smartcrop-gm](https://github.com/jwagner/smartcrop-gm) (which is using image magick via gm) or [smartcrop-sharp](https://github.com/jwagner/smartcrop-sharp) (which is using libvips via sharp).\nThe [smartcrop-cli](https://github.com/jwagner/smartcrop-cli) can be used as an example of using smartcrop from node.\n\n## Stability\n\nWhile _smartcrop.js_ is a small personal project it is currently being used on high traffic production sites.\nIt has a basic set of automated tests and a test coverage of close to 100%.\nThe tests run in all modern browsers thanks to [saucelabs](https://saucelabs.com/).\nIf in any doubt the code is short enough to perform a quick review yourself.\n\n## Algorithm Overview\n\nSmartcrop.js works using fairly dumb image processing. In short:\n\n1. Find edges using laplace\n1. Find regions with a color like skin\n1. Find regions high in saturation\n1. Boost regions as specified by options (for example detected faces)\n1. Generate a set of candidate crops using a sliding window\n1. Rank them using an importance function to focus the detail in the center\n   and avoid it in the edges.\n1. Output the candidate crop with the highest rank\n\n## Face detection\n\nThe smartcrop algorithm itself is designed to be simple, relatively fast, small and generic.\n\nIn many cases it does make sense to add face detection to it to ensure faces get the priority they deserve.\n\nThere are multiple javascript libraries which can be easily integrated into smartcrop.js.\n\n- [ccv js](https://github.com/liuliu/ccv) / [jquery.facedetection](http://facedetection.jaysalvat.com/)\n- [tracking.js](https://trackingjs.com/examples/face_hello_world.html)\n- [opencv.js](https://docs.opencv.org/3.3.1/d5/d10/tutorial_js_root.html)\n- [node-opencv](https://github.com/peterbraden/node-opencv)\n\nYou can experiment with all of these in the [smartcrop.js testbed](https://29a.ch/sandbox/2014/smartcrop/examples/testbed.html)\n\nOn the client side I would recommend using tracking.js because it's small and simple. Opencv.js is compiled from c++ and very heavy (~7.6MB of javascript + 900kb of data).\njquery.facedetection has dependency on jquery and from my limited experience seems to perform worse than the others.\n\nOn the server side node-opencv can be quicker but comes with some [annoying issues](https://github.com/peterbraden/node-opencv/issues/415) as well.\n\nIt's also worth noting that all of these libraries are based on the now dated [viola-jones](https://en.wikipedia.org/wiki/Viola%E2%80%93Jones_object_detection_framework) object detection framework.\nIt would be interesting to see how more [state of the art](http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/WiderFace_Results.html) techniques could be implemented in browser friendly javascript.\n\n## Supported Module Formats\n\n- CommonJS\n- AMD\n- global export / window\n\n## Supported Browsers\n\nSee [caniuse.com/canvas](http://caniuse.com/canvas).\nA [polyfill](https://github.com/taylorhakes/promise-polyfill) for\n[Promises](http://caniuse.com/#feat=promises) is recommended if you need to support old browsers.\n\n## API\n\n### smartcrop.crop(image, options)\n\nFind the best crop for _image_ using _options_.\n\n**image:** anything ctx.drawImage() accepts, usually HTMLImageElement, HTMLCanvasElement or HTMLVideoElement.\n\nKeep in mind that [origin policies](https://en.wikipedia.org/wiki/Same-origin_policy) apply to the image source.\nYou may not use cross-domain images without [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing) clearance.\n\n**options:** [cropOptions](#cropOptions)\n\n**returns:** A promise for a [cropResult](#cropResult).\n\n### cropOptions\n\n**minScale:** minimal scale of the crop rect, set to 1.0 to prevent smaller than necessary crops (lowers the risk of chopping things off).\n\n**width:** width of the crop you want to use.\n\n**height:** height of the crop you want to use.\n\n**boost:** optional array of regions whose 'interestingness' you want to boost (for example faces). See [boost](#boost);\n\n**ruleOfThirds:** optional boolean if set to false it will turn off the rule of thirds composition weight.\n\n**debug _(internal)_:** if true, cropResults will contain a debugCanvas and the complete results array.\n\nThere are many more (for now undocumented) options available.\nCheck the [source](smartcrop.js#L32) and be advised that they might change in the future.\n\n### cropResult\n\nResult of the promise returned by smartcrop.crop.\n\n```javascript\n{\n  topCrop: crop;\n}\n```\n\n### crop\n\nAn individual crop.\n\n```javascript\n{\n  x: 11, // pixels from the left side\n  y: 20, // pixels from the top\n  width: 1, // pixels\n  height: 1 // pixels\n}\n```\n\n### boost\n\nDescribes a region to boost. A usage example of this is to take\ninto account faces in the image. See [smartcrop-cli](https://github.com/jwagner/smartcrop-cli) for an example on how to integrate face detection.\n\n```javascript\n{\n  x: 11, // pixels from the left side\n  y: 20, // pixels from the top\n  width: 32, // pixels\n  height: 32, // pixels\n  weight: 1 // in the range [0, 1]\n}\n```\n\nNote that the impact the boost has is proportional to it's weight and area.\n\n## Tests\n\nYou can run the tests using `grunt test`. Alternatively you can also just run grunt (the default task) and open <http://localhost:8000/test/.>\n\n## Benchmark\n\nThere are benchmarks for both the browser (test/benchmark.html) and node (node test/benchmark-node.js [requires node-canvas])\nboth powered by [benchmark.js](http://benchmarkjs.com).\n\nIf you just want some rough numbers: It takes **< 20 ms** to find a **square crop** of a **640x427px** picture on an i7.\nIn other words, it's fine to run it on one image, it's suboptimal to run it on an entire gallery on page load.\n\n## Contributors\n\n- [Christian Muehlhaeuser](https://github.com/muesli)\n\n## Ports, Alternatives\n\n- [connect-thumbs](https://github.com/inadarei/connect-thumbs) Middleware for connect.js that supports smartcrop.js by [Irakli Nadareishvili](https://github.com/inadarei/connect-thumbs)\n- [smartcrop-java](https://github.com/QuadFlask/smartcrop-java) by [QuadFlask](https://github.com/QuadFlask/)\n- [smartcrop-android](https://github.com/QuadFlask/smartcrop-android) by [QuadFlask](https://github.com/QuadFlask/)\n- [smartcrop.go](https://github.com/muesli/smartcrop) by [Christian Muehlhaeuser](https://github.com/muesli)\n- [smartcrop.py](https://github.com/hhatto/smartcrop.py) by [Hideo Hattori](http://www.hexacosa.net/about/)\n- [smartcrop-rails](https://github.com/sadiqmmm/smartcrop-rails) smartcrop wrapped in a ruby gem by [Mohammed Sadiq](https://github.com/sadiqmmm/)\n- [smartcrop.net](https://github.com/softawaregmbh/smartcrop.net) c# .net port by [softaware gmbh](https://www.softaware.at/)\n- [dont-crop](https://github.com/jwagner/dont-crop/) a library to avoid cropping by padding images with matching colors or gradients\n\n## Version history\n\n### 2.0.5\nFix `TS1046: Top-level declarations in .d.ts files must start with either a 'declare' or 'export' modifier.`.\n\n### 2.0.4\nTypescript type definitions.\n\n### 2.0.2\n\nIn short: It's a lot faster when calculating bigger crops.\nThe quality of the crops should be comparable but the results\nare going to be different so this will be a major release.\n\n### 1.1.1\n\nRemoved useless files from npm package.\n\n### 1.1\n\nCreating github releases. Added options.input which is getting passed along to iop.open.\n\n### 1.0\n\nRefactoring/cleanup to make it easier to use with node.js (dropping the node-canvas dependency) and enable support for boosts which can be used to do face detection.\nThis is a 1.0 in the semantic meaning (denoting backwards incompatible API changes).\nIt does not denote a finished product.\n\n## License\n\nCopyright (c) 2018 Jonas Wagner, licensed under the MIT License (enclosed)\n"
  },
  {
    "path": "bower.json",
    "content": "{\n  \"name\": \"smartcrop\",\n  \"main\": \"smartcrop.js\",\n  \"authors\": [\n    \"Jonas Wagner <jonas@29a.ch>\"\n  ],\n  \"description\": \"Content aware image cropping\",\n  \"moduleType\": [\n    \"amd\",\n    \"globals\",\n    \"node\"\n  ],\n  \"license\": \"MIT\",\n  \"homepage\": \"https://github.com/jwagner/smartcrop.js\",\n  \"ignore\": [\n    \"**/.*\",\n    \"node_modules\",\n    \"bower_components\",\n    \"test\",\n    \"doc\",\n    \"tests\",\n    \"karma.conf.js\",\n    \"Gruntfile.js\",\n    \"examples\"\n  ],\n  \"devDependencies\": {\n    \"underscore\": \"~1.6.0\",\n    \"jquery\": \"~2.1.0\",\n    \"jasmine\": \"~2.0.0\",\n    \"mocha\": \"~1.18.2\",\n    \"chai\": \"~1.9.1\"\n  }\n}\n"
  },
  {
    "path": "examples/face-api/tiny_face_detector_model-weights_manifest.json",
    "content": "[{\"weights\":[{\"name\":\"conv0/filters\",\"shape\":[3,3,3,16],\"dtype\":\"float32\",\"quantization\":{\"dtype\":\"uint8\",\"scale\":0.009007044399485869,\"min\":-1.2069439495311063}},{\"name\":\"conv0/bias\",\"shape\":[16],\"dtype\":\"float32\",\"quantization\":{\"dtype\":\"uint8\",\"scale\":0.005263455241334205,\"min\":-0.9211046672334858}},{\"name\":\"conv1/depthwise_filter\",\"shape\":[3,3,16,1],\"dtype\":\"float32\",\"quantization\":{\"dtype\":\"uint8\",\"scale\":0.004001977630690033,\"min\":-0.5042491814669441}},{\"name\":\"conv1/pointwise_filter\",\"shape\":[1,1,16,32],\"dtype\":\"float32\",\"quantization\":{\"dtype\":\"uint8\",\"scale\":0.013836609615999109,\"min\":-1.411334180831909}},{\"name\":\"conv1/bias\",\"shape\":[32],\"dtype\":\"float32\",\"quantization\":{\"dtype\":\"uint8\",\"scale\":0.0015159862590771096,\"min\":-0.30926119685173037}},{\"name\":\"conv2/depthwise_filter\",\"shape\":[3,3,32,1],\"dtype\":\"float32\",\"quantization\":{\"dtype\":\"uint8\",\"scale\":0.002666276225856706,\"min\":-0.317286870876948}},{\"name\":\"conv2/pointwise_filter\",\"shape\":[1,1,32,64],\"dtype\":\"float32\",\"quantization\":{\"dtype\":\"uint8\",\"scale\":0.015265831292844286,\"min\":-1.6792414422128714}},{\"name\":\"conv2/bias\",\"shape\":[64],\"dtype\":\"float32\",\"quantization\":{\"dtype\":\"uint8\",\"scale\":0.0020280554598453,\"min\":-0.37113414915168985}},{\"name\":\"conv3/depthwise_filter\",\"shape\":[3,3,64,1],\"dtype\":\"float32\",\"quantization\":{\"dtype\":\"uint8\",\"scale\":0.006100742489683862,\"min\":-0.8907084034938438}},{\"name\":\"conv3/pointwise_filter\",\"shape\":[1,1,64,128],\"dtype\":\"float32\",\"quantization\":{\"dtype\":\"uint8\",\"scale\":0.016276211832083907,\"min\":-2.0508026908425725}},{\"name\":\"conv3/bias\",\"shape\":[128],\"dtype\":\"float32\",\"quantization\":{\"dtype\":\"uint8\",\"scale\":0.003394414279975143,\"min\":-0.7637432129944072}},{\"name\":\"conv4/depthwise_filter\",\"shape\":[3,3,128,1],\"dtype\":\"float32\",\"quantization\":{\"dtype\":\"uint8\",\"scale\":0.006716050119961009,\"min\":-0.8059260143953211}},{\"name\":\"conv4/pointwise_filter\",\"shape\":[1,1,128,256],\"dtype\":\"float32\",\"quantization\":{\"dtype\":\"uint8\",\"scale\":0.021875603993733724,\"min\":-2.8875797271728514}},{\"name\":\"conv4/bias\",\"shape\":[256],\"dtype\":\"float32\",\"quantization\":{\"dtype\":\"uint8\",\"scale\":0.0041141652009066415,\"min\":-0.8187188749804216}},{\"name\":\"conv5/depthwise_filter\",\"shape\":[3,3,256,1],\"dtype\":\"float32\",\"quantization\":{\"dtype\":\"uint8\",\"scale\":0.008423839597141042,\"min\":-0.9013508368940915}},{\"name\":\"conv5/pointwise_filter\",\"shape\":[1,1,256,512],\"dtype\":\"float32\",\"quantization\":{\"dtype\":\"uint8\",\"scale\":0.030007277283014035,\"min\":-3.8709387695088107}},{\"name\":\"conv5/bias\",\"shape\":[512],\"dtype\":\"float32\",\"quantization\":{\"dtype\":\"uint8\",\"scale\":0.008402082966823203,\"min\":-1.4871686851277068}},{\"name\":\"conv8/filters\",\"shape\":[1,1,512,25],\"dtype\":\"float32\",\"quantization\":{\"dtype\":\"uint8\",\"scale\":0.028336129469030042,\"min\":-4.675461362389957}},{\"name\":\"conv8/bias\",\"shape\":[25],\"dtype\":\"float32\",\"quantization\":{\"dtype\":\"uint8\",\"scale\":0.002268134028303857,\"min\":-0.41053225912299807}}],\"paths\":[\"tiny_face_detector_model-shard1\"]}]"
  },
  {
    "path": "examples/images/images.json",
    "content": "[{\"id\":65438769,\"name\":\"Untitled\",\"url\":\"images/65438769.jpg\",\"attribution\":\"goes sena\",\"thumb\":\"http://ppcdn.500px.org/65438769/47bee1104d6ebcd2b85cca60b9dbf054aa7a8e01/2.jpg\",\"href\":\"http://500px.com/photo/65438769\"},{\"id\":65408685,\"name\":\"Herastrau Lake\",\"url\":\"images/65408685.jpg\",\"attribution\":\"Stefanescu Cristian\",\"thumb\":\"http://ppcdn.500px.org/65408685/b9ff117130ba84a5eb4d557b353fb156fe8640f6/2.jpg\",\"href\":\"http://500px.com/photo/65408685\"},{\"id\":65435387,\"name\":\"Sunset at Hamburg Harbor\",\"url\":\"images/65435387.jpg\",\"attribution\":\"Oliver Bock\",\"thumb\":\"http://ppcdn.500px.org/65435387/8deb478883ed26d0a458f9a451187d8cec59c890/2.jpg\",\"href\":\"http://500px.com/photo/65435387\"},{\"id\":65439701,\"name\":\"Untitled #2\",\"url\":\"images/65439701.jpg\",\"attribution\":\"Nicolas DECOOPMAN\",\"thumb\":\"http://ppcdn.500px.org/65439701/1dfcc5a0946d94ade40c7f31715e73e416e934fb/2.jpg\",\"href\":\"http://500px.com/photo/65439701\"},{\"id\":65131509,\"name\":\"*\",\"url\":\"images/65131509.jpg\",\"attribution\":\" Evgeny Kuznetsov\",\"thumb\":\"http://ppcdn.500px.org/65131509/3cd4bf95b8f02010d659de1242889183f79a50ed/2.jpg\",\"href\":\"http://500px.com/photo/65131509\"},{\"id\":65380541,\"name\":\"Festival of Colors\",\"url\":\"images/65380541.jpg\",\"attribution\":\"angeldemirev\",\"thumb\":\"http://ppcdn.500px.org/65380541/0c719094a3e20a675de3eb2e5f99775bf548da76/2.jpg\",\"href\":\"http://500px.com/photo/65380541\"},{\"id\":65394327,\"name\":\"Deserted Akihabara\",\"url\":\"images/65394327.jpg\",\"attribution\":\"Guillaume Buret\",\"thumb\":\"http://ppcdn.500px.org/65394327/b503b7f365c4cb6c17bc10fa2e7698f4330bcfb3/2.jpg\",\"href\":\"http://500px.com/photo/65394327\"},{\"id\":65344435,\"name\":\"Alfa 4C\",\"url\":\"images/65344435.jpg\",\"attribution\":\"Mikołaj Wośko\",\"thumb\":\"http://ppcdn.500px.org/65344435/5dd650b237f65241b00c0602e0a6cf8dc32f3152/2.jpg\",\"href\":\"http://500px.com/photo/65344435\"},{\"id\":65379385,\"name\":\"Spring in the willow\",\"url\":\"images/65379385.jpg\",\"attribution\":\"OliBac\",\"thumb\":\"http://ppcdn.500px.org/65379385/aaf1e64efae60942c39a3e35b2996108f154e69b/2.jpg\",\"href\":\"http://500px.com/photo/65379385\"},{\"id\":65353233,\"name\":\"Green\",\"url\":\"images/65353233.jpg\",\"attribution\":\"Eko Priyanto Lo\",\"thumb\":\"http://ppcdn.500px.org/65353233/c217369d0d4532409ce38bbfe6e7418715bb4aac/2.jpg\",\"href\":\"http://500px.com/photo/65353233\"},{\"id\":65452173,\"name\":\"W®W2 - SPECTATOR\",\"url\":\"images/65452173.jpg\",\"attribution\":\"Alessandro Galantucci\",\"thumb\":\"http://ppcdn.500px.org/65452173/6cbd829b1571f4b1a0f8d9a71d620b0d3da93feb/2.jpg\",\"href\":\"http://500px.com/photo/65452173\"},{\"id\":65454199,\"name\":\"Floor and Shadow\",\"url\":\"images/65454199.jpg\",\"attribution\":\"Marco Dias\",\"thumb\":\"http://ppcdn.500px.org/65454199/2a04f55d4494d1360dcd5551a220a8a6980e8f05/2.jpg\",\"href\":\"http://500px.com/photo/65454199\"},{\"id\":65191659,\"name\":\"reading in white\",\"url\":\"images/65191659.jpg\",\"attribution\":\"Magdalena Roeseler\",\"thumb\":\"http://ppcdn.500px.org/65191659/57a3977a50abd5c187696d710058f76ac9c23ce0/2.jpg\",\"href\":\"http://500px.com/photo/65191659\"},{\"id\":65252475,\"name\":\"Mengening\",\"url\":\"images/65252475.jpg\",\"attribution\":\"goes sena\",\"thumb\":\"http://ppcdn.500px.org/65252475/5082a00bd3a911e5fd674f06f90ad7656847afec/2.jpg\",\"href\":\"http://500px.com/photo/65252475\"},{\"id\":65309527,\"name\":\"Mile Run Race\",\"url\":\"images/65309527.jpg\",\"attribution\":\"Tim Barnhart\",\"thumb\":\"http://ppcdn.500px.org/65309527/452a6611b088c4c9982fba3633c3953fe0db890d/2.jpg\",\"href\":\"http://500px.com/photo/65309527\"},{\"id\":65356729,\"name\":\"Flower the glow worm\",\"url\":\"images/65356729.jpg\",\"attribution\":\"Aleksander Moisiuk\",\"thumb\":\"http://ppcdn.500px.org/65356729/8bb891d75ddffd8679ffc40e5398eb4993035c4e/2.jpg\",\"href\":\"http://500px.com/photo/65356729\"},{\"id\":65310323,\"name\":\"Yellow\",\"url\":\"images/65310323.jpg\",\"attribution\":\"Qasim Al-eid\",\"thumb\":\"http://ppcdn.500px.org/65310323/e3345b3db29be3ce88439b3efa6e0543821f0f0c/2.jpg\",\"href\":\"http://500px.com/photo/65310323\"},{\"id\":65073513,\"name\":\"Sad Gordo\",\"url\":\"images/65073513.jpg\",\"attribution\":\"Gerardo Mtyor\",\"thumb\":\"http://ppcdn.500px.org/65073513/e5fcc02592994e9813d13bd5f07ebdc85c3bd59e/2.jpg\",\"href\":\"http://500px.com/photo/65073513\"},{\"id\":65090807,\"name\":\"The journey is the reward\",\"url\":\"images/65090807.jpg\",\"attribution\":\"Magdalena Roeseler\",\"thumb\":\"http://ppcdn.500px.org/65090807/ed1cfd874fb203dc3de8e50bb7e36a42da03114e/2.jpg\",\"href\":\"http://500px.com/photo/65090807\"},{\"id\":65380549,\"name\":\"Festival of Colors\",\"url\":\"images/65380549.jpg\",\"attribution\":\"angeldemirev\",\"thumb\":\"http://ppcdn.500px.org/65380549/4fe0514bee86290249b8b0fa99b2ba39e2b64e5e/2.jpg\",\"href\":\"http://500px.com/photo/65380549\"},{\"id\":65212927,\"name\":\"Looking at the Heavens, Sagrada Familia, Barcelona, Spain\",\"url\":\"images/65212927.jpg\",\"attribution\":\"Martin Bureau\",\"thumb\":\"http://ppcdn.500px.org/65212927/746c443fa2aeb40318004e3244dbfcb84fa1b88f/2.jpg\",\"href\":\"http://500px.com/photo/65212927\"},{\"id\":65295239,\"name\":\"Old pier, calm water\",\"url\":\"images/65295239.jpg\",\"attribution\":\"Emi Delli Zuani\",\"thumb\":\"http://ppcdn.500px.org/65295239/424631893834555364d978d0096ccfb6df60f394/2.jpg\",\"href\":\"http://500px.com/photo/65295239\"},{\"id\":65443239,\"name\":\"20140330_TE4photo.com_Ronneburg_029\",\"url\":\"images/65443239.jpg\",\"attribution\":\"Thorsten Erker\",\"thumb\":\"http://ppcdn.500px.org/65443239/e47b46047c64735916a33a425baa9575fc11b566/2.jpg\",\"href\":\"http://500px.com/photo/65443239\"},{\"id\":65279041,\"name\":\"wilson square\",\"url\":\"images/65279041.jpg\",\"attribution\":\"Magdalena Roeseler\",\"thumb\":\"http://ppcdn.500px.org/65279041/ba971c19fd18a73f29b0a71c91c2f026ab687a69/2.jpg\",\"href\":\"http://500px.com/photo/65279041\"},{\"id\":65067619,\"name\":\"W®W\",\"url\":\"images/65067619.jpg\",\"attribution\":\"Alessandro Galantucci\",\"thumb\":\"http://ppcdn.500px.org/65067619/4e1aba31d6ab257ed320f1d385d200aa7eba4d2a/2.jpg\",\"href\":\"http://500px.com/photo/65067619\"},{\"id\":65441453,\"name\":\"Hüttlingen-Mettendorf.\",\"url\":\"images/65441453.jpg\",\"attribution\":\"Sascha Erni\",\"thumb\":\"http://ppcdn.500px.org/65441453/f4072b7bc61b9f7e7346fd37e7d2dd9475b09cf8/2.jpg\",\"href\":\"http://500px.com/photo/65441453\"},{\"id\":65335239,\"name\":\"Patch Selection\",\"url\":\"images/65335239.jpg\",\"attribution\":\"Qasim Al-eid\",\"thumb\":\"http://ppcdn.500px.org/65335239/c10649d28bf5ddc186c9892943e98d27df3c7f5a/2.jpg\",\"href\":\"http://500px.com/photo/65335239\"},{\"id\":32872321,\"name\":\"ムラサキサギゴケ\",\"url\":\"images/32872321.jpg\",\"attribution\":\"Kazuhiro Tsugita\",\"thumb\":\"http://ppcdn.500px.org/32872321/eeaf25fba9c5b651a2d1c5a986e2d517084ba639/2.jpg\",\"href\":\"http://500px.com/photo/32872321\"},{\"id\":28155975,\"name\":\"Fishing\",\"url\":\"images/28155975.jpg\",\"attribution\":\"John Nathaniel Calvara\",\"thumb\":\"http://ppcdn.500px.org/28155975/318b8c89f3a969d1d8205135a88445e912d43b9c/2.jpg\",\"href\":\"http://500px.com/photo/28155975\"},{\"id\":65156401,\"name\":\"Steel Bridge\",\"url\":\"images/65156401.jpg\",\"attribution\":\"nsm photography\",\"thumb\":\"http://ppcdn.500px.org/65156401/382ebd1a2551ee836d957b2e34881f6285d0d6ac/2.jpg\",\"href\":\"http://500px.com/photo/65156401\"},{\"id\":64843515,\"name\":\"Nothing special, but in my everyday ordinary\",\"url\":\"images/64843515.jpg\",\"attribution\":\"사월 아\",\"thumb\":\"http://ppcdn.500px.org/64843515/75da58508e780845b99b0dc6a2740075e78d4915/2.jpg\",\"href\":\"http://500px.com/photo/64843515\"},{\"id\":65264581,\"name\":\"The Tree\",\"url\":\"images/65264581.jpg\",\"attribution\":\"Any Sunday\",\"thumb\":\"http://ppcdn.500px.org/65264581/99e0810d1ee126c65e70618c26a4fa396b8f60a4/2.jpg\",\"href\":\"http://500px.com/photo/65264581\"},{\"id\":60964708,\"name\":\"***\",\"url\":\"images/60964708.jpg\",\"attribution\":\"Ranit sanyal\",\"thumb\":\"http://ppcdn.500px.org/60964708/bcb73514aa1e0ec89bfe742a08bdc83db4508f40/2.jpg\",\"href\":\"http://500px.com/photo/60964708\"},{\"id\":60970626,\"name\":\"St Pauls Ballysax\",\"url\":\"images/60970626.jpg\",\"attribution\":\"Kevin Corley\",\"thumb\":\"http://ppcdn.500px.org/60970626/42293673e924b855ea11afcccc9efa6442261e2e/2.jpg\",\"href\":\"http://500px.com/photo/60970626\"},{\"id\":65158073,\"name\":\"BUTTERFLY\",\"url\":\"images/65158073.jpg\",\"attribution\":\"Sandro \",\"thumb\":\"http://ppcdn.500px.org/65158073/b7f56654c9da0b636b8874deca300603f2163614/2.jpg\",\"href\":\"http://500px.com/photo/65158073\"},{\"id\":65170623,\"name\":\"Sunset in Warnemünde\",\"url\":\"images/65170623.jpg\",\"attribution\":\"Kathrin Merker\",\"thumb\":\"http://ppcdn.500px.org/65170623/f482ecfd3a7f5c3316b3764113a4be07c8dc21f6/2.jpg\",\"href\":\"http://500px.com/photo/65170623\"},{\"id\":29386679,\"name\":\"Little Egret: Forsythe NWR - New Jersey\",\"url\":\"images/29386679.jpg\",\"attribution\":\"Charles \\\"Skip\\\" Martin\",\"thumb\":\"http://ppcdn.500px.org/29386679/0b0df193b8fc4655fe0fe2144e5c9eeda9b82182/2.jpg\",\"href\":\"http://500px.com/photo/29386679\"},{\"id\":64765319,\"name\":\"jog the dog\",\"url\":\"images/64765319.jpg\",\"attribution\":\"Magdalena Roeseler\",\"thumb\":\"http://ppcdn.500px.org/64765319/e7f2ba24ce2ae5d58948b7091217c317118527a3/2.jpg\",\"href\":\"http://500px.com/photo/64765319\"},{\"id\":65139889,\"name\":\"Don't let the sun go down on me\",\"url\":\"images/65139889.jpg\",\"attribution\":\"Oliver Bock\",\"thumb\":\"http://ppcdn.500px.org/65139889/0163119a6defc6e156cd55d7d4bc5b962980fdcb/2.jpg\",\"href\":\"http://500px.com/photo/65139889\"},{\"id\":33603729,\"name\":\"Untitled\",\"url\":\"images/33603729.jpg\",\"attribution\":\"jinguo ren\",\"thumb\":\"http://ppcdn.500px.org/33603729/a98af1898288e43d3bb6ff111c08963bb3999e78/2.jpg\",\"href\":\"http://500px.com/photo/33603729\"},{\"id\":65144887,\"name\":\"The Shoe Seller\",\"url\":\"images/65144887.jpg\",\"attribution\":\"Tamal Mitra\",\"thumb\":\"http://ppcdn.500px.org/65144887/037f7e53a1504d90ce42b4420fd7aced4564cd88/2.jpg\",\"href\":\"http://500px.com/photo/65144887\"},{\"id\":65231965,\"name\":\"Conversation\",\"url\":\"images/65231965.jpg\",\"attribution\":\"Nicolas DECOOPMAN\",\"thumb\":\"http://ppcdn.500px.org/65231965/c20fb2282a4bc321b053c204fbd4993288d3d4c4/2.jpg\",\"href\":\"http://500px.com/photo/65231965\"},{\"id\":65334383,\"name\":\"Bird\",\"url\":\"images/65334383.jpg\",\"attribution\":\"Qasim Al-eid\",\"thumb\":\"http://ppcdn.500px.org/65334383/9a1b12dd9f7b2191b39bd4773459b209925436b8/2.jpg\",\"href\":\"http://500px.com/photo/65334383\"},{\"id\":65229417,\"name\":\"fofy\",\"url\":\"images/65229417.jpg\",\"attribution\":\"Mario Mancuso\",\"thumb\":\"http://ppcdn.500px.org/65229417/2656ea51a7ac3fc9f143af5d5b6677a255277453/2.jpg\",\"href\":\"http://500px.com/photo/65229417\"},{\"id\":64856363,\"name\":\"little big kiss to mom!!!!!!\",\"url\":\"images/64856363.jpg\",\"attribution\":\"ivi franco photo art\",\"thumb\":\"http://ppcdn.500px.org/64856363/5d74879e06bd6f57558107e609ab6641b7cbb2aa/2.jpg\",\"href\":\"http://500px.com/photo/64856363\"},{\"id\":65257641,\"name\":\"daisy\",\"url\":\"images/65257641.jpg\",\"attribution\":\"OliBac\",\"thumb\":\"http://ppcdn.500px.org/65257641/e956599b7bdf00a5c25f1f9459abfbec03340fde/2.jpg\",\"href\":\"http://500px.com/photo/65257641\"},{\"id\":29339717,\"name\":\"Wake-Up Moon ! \",\"url\":\"images/29339717.jpg\",\"attribution\":\"Mathieu Dupouy\",\"thumb\":\"http://ppcdn.500px.org/29339717/73a8d2986946555e7ab330459056499f541746ac/2.jpg\",\"href\":\"http://500px.com/photo/29339717\"},{\"id\":27794187,\"name\":\"ユキヤナギ\",\"url\":\"images/27794187.jpg\",\"attribution\":\"Kazuhiro Tsugita\",\"thumb\":\"http://ppcdn.500px.org/27794187/1a3e307567ad7eb2a8e051fe535fa8b1a160432e/2.jpg\",\"href\":\"http://500px.com/photo/27794187\"},{\"id\":64947023,\"name\":\"Back Home\",\"url\":\"images/64947023.jpg\",\"attribution\":\"Nicolas DECOOPMAN\",\"thumb\":\"http://ppcdn.500px.org/64947023/b031b3c9fe7efa9d0b7b00ff61610164301c2090/2.jpg\",\"href\":\"http://500px.com/photo/64947023\"},{\"id\":65243629,\"name\":\"sakura\",\"url\":\"images/65243629.jpg\",\"attribution\":\"Kaori Hozumi\",\"thumb\":\"http://ppcdn.500px.org/65243629/41c16cd2c83f4f8b229dde5439b8a8d9ea8315ce/2.jpg\",\"href\":\"http://500px.com/photo/65243629\"},{\"id\":27305709,\"name\":\"キュウリグサ\",\"url\":\"images/27305709.jpg\",\"attribution\":\"Kazuhiro Tsugita\",\"thumb\":\"http://ppcdn.500px.org/27305709/87884657c21bb79a53c034c262297c1a64f4f0f5/2.jpg\",\"href\":\"http://500px.com/photo/27305709\"},{\"id\":23018877,\"name\":\"Concentracion\",\"url\":\"images/23018877.jpg\",\"attribution\":\"Maria José Perras Barnada\",\"thumb\":\"http://ppcdn.500px.org/23018877/e7a952f732149a029b41dce74f863c04fb8b3524/2.jpg\",\"href\":\"http://500px.com/photo/23018877\"},{\"id\":64759953,\"name\":\"Storm\",\"url\":\"images/64759953.jpg\",\"attribution\":\"Etrick \",\"thumb\":\"http://ppcdn.500px.org/64759953/43af9b784b4c676d4fad4e33119f9e95349a9ce1/2.jpg\",\"href\":\"http://500px.com/photo/64759953\"},{\"id\":60569462,\"name\":\"A little angel\",\"url\":\"images/60569462.jpg\",\"attribution\":\"Jax Douner\",\"thumb\":\"http://ppcdn.500px.org/60569462/d2445dd722581f2fdf7e82bd7ecbb1d4f6dd3b52/2.jpg\",\"href\":\"http://500px.com/photo/60569462\"},{\"id\":65171835,\"name\":\"Kumpa  in the morning\",\"url\":\"images/65171835.jpg\",\"attribution\":\"The Doggie Nanny\",\"thumb\":\"http://ppcdn.500px.org/65171835/4563a6d107c3b468994d6f7c21abab310d5568f8/2.jpg\",\"href\":\"http://500px.com/photo/65171835\"},{\"id\":64786603,\"name\":\"GoldenGateBridge\",\"url\":\"images/64786603.jpg\",\"attribution\":\"Frank Röttgers\",\"thumb\":\"http://ppcdn.500px.org/64786603/315bec5add7506476bdcd24a6f26d1350a76cee5/2.jpg\",\"href\":\"http://500px.com/photo/64786603\"},{\"id\":65100001,\"name\":\"path\",\"url\":\"images/65100001.jpg\",\"attribution\":\"Maksim Kapranoff\",\"thumb\":\"http://ppcdn.500px.org/65100001/e4c61b8460da7f1986045c0d94cb23a4676a518f/2.jpg\",\"href\":\"http://500px.com/photo/65100001\"},{\"id\":65044417,\"name\":\"Junction\",\"url\":\"images/65044417.jpg\",\"attribution\":\"Nicolas DECOOPMAN\",\"thumb\":\"http://ppcdn.500px.org/65044417/10c7a7a4a8b8710283e9608bed9d33d878aadc52/2.jpg\",\"href\":\"http://500px.com/photo/65044417\"},{\"id\":64752859,\"name\":\"Still life with peonies\",\"url\":\"images/64752859.jpg\",\"attribution\":\"Alina Lankina\",\"thumb\":\"http://ppcdn.500px.org/64752859/c8243c98616df7771aaec92645537f44e9a82389/2.jpg\",\"href\":\"http://500px.com/photo/64752859\"},{\"id\":65420791,\"name\":\"Panoramica de embarcadero en Xochimilco\",\"url\":\"images/65420791.jpg\",\"attribution\":\"James Castillo Espinosa\",\"thumb\":\"http://ppcdn.500px.org/65420791/c720bbe455f1caacd2e28ac27210c6aa6829d865/2.jpg\",\"href\":\"http://500px.com/photo/65420791\"},{\"id\":65220859,\"name\":\"Leafy Bed\",\"url\":\"images/65220859.jpg\",\"attribution\":\"Holt Johnson\",\"thumb\":\"http://ppcdn.500px.org/65220859/435c9a19afc3b3cdd328e185eb263074c1abe87c/2.jpg\",\"href\":\"http://500px.com/photo/65220859\"},{\"id\":29052013,\"name\":\"Smoking mountain\",\"url\":\"images/29052013.jpg\",\"attribution\":\"Nuno Fernandes\",\"thumb\":\"http://ppcdn.500px.org/29052013/0558178b34e897cd7e30560d4b774978745a600e/2.jpg\",\"href\":\"http://500px.com/photo/29052013\"},{\"id\":60940138,\"name\":\"The House Down the Hollow\",\"url\":\"images/60940138.jpg\",\"attribution\":\"Donnie Nunley\",\"thumb\":\"http://ppcdn.500px.org/60940138/a8c6c06fa3d749cbddd11d54acacca3ebb56612e/2.jpg\",\"href\":\"http://500px.com/photo/60940138\"},{\"id\":65131385,\"name\":\"Panoramastrasse\",\"url\":\"images/65131385.jpg\",\"attribution\":\"beatd\",\"thumb\":\"http://ppcdn.500px.org/65131385/fc71238bfdceaf2ec43ce14b3cd155b46d897b6e/2.jpg\",\"href\":\"http://500px.com/photo/65131385\"},{\"id\":65194379,\"name\":\"Margarita\",\"url\":\"images/65194379.jpg\",\"attribution\":\"sergio donet\",\"thumb\":\"http://ppcdn.500px.org/65194379/78da3714e60dce56b27b2cacb5f8e609145f72c7/2.jpg\",\"href\":\"http://500px.com/photo/65194379\"},{\"id\":65254305,\"name\":\"Sunset\",\"url\":\"images/65254305.jpg\",\"attribution\":\"Ruben Filipe\",\"thumb\":\"http://ppcdn.500px.org/65254305/da62dd1acba8ec2390c2212ca1412ab3fc764a3d/2.jpg\",\"href\":\"http://500px.com/photo/65254305\"},{\"id\":65210163,\"name\":\"Lovers\",\"url\":\"images/65210163.jpg\",\"attribution\":\"Photo KWest\",\"thumb\":\"http://ppcdn.500px.org/65210163/12525435125957393193be103215fae8a236b2b6/2.jpg\",\"href\":\"http://500px.com/photo/65210163\"},{\"id\":64953085,\"name\":\"A Beautiful\",\"url\":\"images/64953085.jpg\",\"attribution\":\"Tamal Mitra\",\"thumb\":\"http://ppcdn.500px.org/64953085/2f91199d0f74b2b3eb99496746c943e089302627/2.jpg\",\"href\":\"http://500px.com/photo/64953085\"},{\"id\":65140003,\"name\":\"8 march\",\"url\":\"images/65140003.jpg\",\"attribution\":\"Mario Mancuso\",\"thumb\":\"http://ppcdn.500px.org/65140003/f38135ff56f890427d12817160190f3fc0fbef2b/2.jpg\",\"href\":\"http://500px.com/photo/65140003\"},{\"id\":62562717,\"name\":\"SNAKEPIT\",\"url\":\"images/62562717.jpg\",\"attribution\":\"Jesús Ignacio Bravo Soler\",\"thumb\":\"http://ppcdn.500px.org/62562717/4f7f86b4318e456d636287b8d4f583d320251191/2.jpg\",\"href\":\"http://500px.com/photo/62562717\"},{\"id\":63768841,\"name\":\"Riyadh sky\",\"url\":\"images/63768841.jpg\",\"attribution\":\"Ahmed Hader\",\"thumb\":\"http://ppcdn.500px.org/63768841/73e37964151ea8cdd4927cdab10013835afba662/2.jpg\",\"href\":\"http://500px.com/photo/63768841\"},{\"id\":32595073,\"name\":\"Twilight\",\"url\":\"images/32595073.jpg\",\"attribution\":\"Nat Ditsathan\",\"thumb\":\"http://ppcdn.500px.org/32595073/da747b50190b372eb5ae05e4c1c46b17170aace0/2.jpg\",\"href\":\"http://500px.com/photo/32595073\"},{\"id\":27870021,\"name\":\"Hibiscus\",\"url\":\"images/27870021.jpg\",\"attribution\":\"Kok Hooi Au\",\"thumb\":\"http://ppcdn.500px.org/27870021/f8c9f7a2bf1807b937fe1c502fb6a0626a92a986/2.jpg\",\"href\":\"http://500px.com/photo/27870021\"},{\"id\":27464791,\"name\":\"Untitled\",\"url\":\"images/27464791.jpg\",\"attribution\":\"renaud debray\",\"thumb\":\"http://ppcdn.500px.org/27464791/995ef65340ecb3a666a1dfd3516949dfd9360787/2.jpg\",\"href\":\"http://500px.com/photo/27464791\"},{\"id\":65228821,\"name\":\"paris by night\",\"url\":\"images/65228821.jpg\",\"attribution\":\"Johann Ravera\",\"thumb\":\"http://ppcdn.500px.org/65228821/3fa0995640a8bd5e9d574fa4950480156652975b/2.jpg\",\"href\":\"http://500px.com/photo/65228821\"},{\"id\":65070033,\"name\":\"Passing Through\",\"url\":\"images/65070033.jpg\",\"attribution\":\"Sizar Adam\",\"thumb\":\"http://ppcdn.500px.org/65070033/49704a88197667d51416b8cdad53a463a25980c2/2.jpg\",\"href\":\"http://500px.com/photo/65070033\"},{\"id\":64902381,\"name\":\"wipe the sky\",\"url\":\"images/64902381.jpg\",\"attribution\":\"Magdalena Roeseler\",\"thumb\":\"http://ppcdn.500px.org/64902381/a1cc8c28940edb20217d04f765c65afd4f030bdb/2.jpg\",\"href\":\"http://500px.com/photo/64902381\"},{\"id\":63177553,\"name\":\"THE BLACK FEATHER\",\"url\":\"images/63177553.jpg\",\"attribution\":\"Chuck Evanish\",\"thumb\":\"http://ppcdn.500px.org/63177553/58bc86432c41a878ff7f80d4f9424014218c5e64/2.jpg\",\"href\":\"http://500px.com/photo/63177553\"},{\"id\":65235119,\"name\":\"White wine\",\"url\":\"images/65235119.jpg\",\"attribution\":\"Alexandre Roschewitz\",\"thumb\":\"http://ppcdn.500px.org/65235119/cdf8e490404ee52d3ab9c5c4be2f72fd9284291a/2.jpg\",\"href\":\"http://500px.com/photo/65235119\"},{\"id\":19772527,\"name\":\"Powerful\",\"url\":\"images/19772527.jpg\",\"attribution\":\"Ahmad Ghonaim\",\"thumb\":\"http://ppcdn.500px.org/19772527/152f8191e57cb98e731e49c1e20922a6b25d2b23/2.jpg\",\"href\":\"http://500px.com/photo/19772527\"},{\"id\":65155627,\"name\":\"Joshua Reid\",\"url\":\"images/65155627.jpg\",\"attribution\":\"Jeremy Meier\",\"thumb\":\"http://ppcdn.500px.org/65155627/24b65fd8d24d6039154f4a97e0094bff8a879913/2.jpg\",\"href\":\"http://500px.com/photo/65155627\"},{\"id\":23534627,\"name\":\"タネツケバナ\",\"url\":\"images/23534627.jpg\",\"attribution\":\"Kazuhiro Tsugita\",\"thumb\":\"http://ppcdn.500px.org/23534627/e2bdd33715a4619380588e21bd6f9c333c3570c3/2.jpg\",\"href\":\"http://500px.com/photo/23534627\"},{\"id\":63246701,\"name\":\"THE PLANET\",\"url\":\"images/63246701.jpg\",\"attribution\":\"NELLA BERNARDI\",\"thumb\":\"http://ppcdn.500px.org/63246701/cd5e5c384a4444376a190aae3d28cca503b5b453/2.jpg\",\"href\":\"http://500px.com/photo/63246701\"},{\"id\":28057549,\"name\":\"Divina luz\",\"url\":\"images/28057549.jpg\",\"attribution\":\"Carlos \",\"thumb\":\"http://ppcdn.500px.org/28057549/28c1b6af8178affbbc91c33f8858a66cb563d3aa/2.jpg\",\"href\":\"http://500px.com/photo/28057549\"},{\"id\":64743063,\"name\":\"IBA\",\"url\":\"images/64743063.jpg\",\"attribution\":\"Mario Mancuso\",\"thumb\":\"http://ppcdn.500px.org/64743063/e44ce5b19e12ff3e4d95ca70d7903590225afaa1/2.jpg\",\"href\":\"http://500px.com/photo/64743063\"},{\"id\":64950105,\"name\":\"travel shadow\",\"url\":\"images/64950105.jpg\",\"attribution\":\"Mario Mancuso\",\"thumb\":\"http://ppcdn.500px.org/64950105/50468ce2a51ceddf90a01db03dbe03904c9fa3ee/2.jpg\",\"href\":\"http://500px.com/photo/64950105\"},{\"id\":65282347,\"name\":\"Waldgeist\",\"url\":\"images/65282347.jpg\",\"attribution\":\"Pepe Kirchhoff\",\"thumb\":\"http://ppcdn.500px.org/65282347/63c78a0bcbdf8288772b3426bdd8253989afdc70/2.jpg\",\"href\":\"http://500px.com/photo/65282347\"},{\"id\":60449430,\"name\":\"winter's tale\",\"url\":\"images/60449430.jpg\",\"attribution\":\"7 7\",\"thumb\":\"http://ppcdn.500px.org/60449430/9e38edaabab223d14a06f4515b95cfae7d90521a/2.jpg\",\"href\":\"http://500px.com/photo/60449430\"},{\"id\":30343877,\"name\":\"Suivie de Lumière\",\"url\":\"images/30343877.jpg\",\"attribution\":\"Mathieu Dupouy\",\"thumb\":\"http://ppcdn.500px.org/30343877/db8fbe6de6f3a15f895d891ddcc9aa4e3d485069/2.jpg\",\"href\":\"http://500px.com/photo/30343877\"},{\"id\":64749691,\"name\":\"First day of spring\",\"url\":\"images/64749691.jpg\",\"attribution\":\"Bzhar Omer\",\"thumb\":\"http://ppcdn.500px.org/64749691/0b1c99ee0b30692ef455849f4bbf69eac787688a/2.jpg\",\"href\":\"http://500px.com/photo/64749691\"},{\"id\":64948093,\"name\":\"All for one.. and one for all!\",\"url\":\"images/64948093.jpg\",\"attribution\":\"Sherazade Curfew Ali\",\"thumb\":\"http://ppcdn.500px.org/64948093/b5fdb95704c6554abebfc02de36678791c23caf5/2.jpg\",\"href\":\"http://500px.com/photo/64948093\"},{\"id\":60362300,\"name\":\"Sur le chemin de la Fontaine Salée\",\"url\":\"images/60362300.jpg\",\"attribution\":\"Gregory Klein\",\"thumb\":\"http://ppcdn.500px.org/60362300/bb8c9f61c03c4cbc49f08defd88c46b3c12c02d7/2.jpg\",\"href\":\"http://500px.com/photo/60362300\"},{\"id\":60506900,\"name\":\"Cloud Maker\",\"url\":\"images/60506900.jpg\",\"attribution\":\"Ken Day\",\"thumb\":\"http://ppcdn.500px.org/60506900/1d06f00bcef83d0857a451c1da30de341ac2486c/2.jpg\",\"href\":\"http://500px.com/photo/60506900\"},{\"id\":65163341,\"name\":\"Sunset on Maine\",\"url\":\"images/65163341.jpg\",\"attribution\":\"Ling Mao\",\"thumb\":\"http://ppcdn.500px.org/65163341/e6af33174bba526b3ed4c183318c92ba0500666f/2.jpg\",\"href\":\"http://500px.com/photo/65163341\"},{\"id\":29383761,\"name\":\"Canyonlands Vista - Utah\",\"url\":\"images/29383761.jpg\",\"attribution\":\"Charles \\\"Skip\\\" Martin\",\"thumb\":\"http://ppcdn.500px.org/29383761/168a5f8798ae4b359ee17103c47bf0338ebb7f35/2.jpg\",\"href\":\"http://500px.com/photo/29383761\"},{\"id\":27733227,\"name\":\"Untitled\",\"url\":\"images/27733227.jpg\",\"attribution\":\"jean vaneli\",\"thumb\":\"http://ppcdn.500px.org/27733227/bac29be0ff6856915ce1d26c4b1cb8c410118a66/2.jpg\",\"href\":\"http://500px.com/photo/27733227\"},{\"id\":28065157,\"name\":\"Untitled\",\"url\":\"images/28065157.jpg\",\"attribution\":\"乾貴 傅\",\"thumb\":\"http://ppcdn.500px.org/28065157/3aab8009fab0d662b5e5ecb7731084457d43f060/2.jpg\",\"href\":\"http://500px.com/photo/28065157\"},{\"id\":64413205,\"name\":\"Brugge\",\"url\":\"images/64413205.jpg\",\"attribution\":\"Gianluca C.\",\"thumb\":\"http://ppcdn.500px.org/64413205/e6438c09b696e32a89adf955148672449879807f/2.jpg\",\"href\":\"http://500px.com/photo/64413205\"},{\"id\":65160167,\"name\":\"Quintana di Foligno 2012\",\"url\":\"images/65160167.jpg\",\"attribution\":\"Sandro \",\"thumb\":\"http://ppcdn.500px.org/65160167/c83aaf03bc05fb0be8bce72322369b45a91b0104/2.jpg\",\"href\":\"http://500px.com/photo/65160167\"},{\"id\":24391757,\"name\":\"Snowscape\",\"url\":\"images/24391757.jpg\",\"attribution\":\"HanRiver Jang\",\"thumb\":\"http://ppcdn.500px.org/24391757/89d42d32e606fc842433b83254c00b78480e827e/2.jpg\",\"href\":\"http://500px.com/photo/24391757\"}]\n"
  },
  {
    "path": "examples/jquery.js",
    "content": "/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */\n!function(e,t){\"use strict\";\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error(\"jQuery requires a window with a document\");return t(e)}:t(e)}(\"undefined\"!=typeof window?window:this,function(C,e){\"use strict\";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return\"function\"==typeof e&&\"number\"!=typeof e.nodeType&&\"function\"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement(\"script\");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?n[o.call(e)]||\"object\":typeof e}var f=\"3.6.0\",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&\"length\"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&(\"array\"===n||0===t||\"number\"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for(\"boolean\"==typeof a&&(l=a,a=arguments[s]||{},s++),\"object\"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],\"__proto__\"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:\"jQuery\"+(f+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||\"[object Object]\"!==o.call(e))&&(!(t=r(e))||\"function\"==typeof(n=v.call(t,\"constructor\")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,\"string\"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),\"function\"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),function(e,t){n[\"[object \"+t+\"]\"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S=\"sizzle\"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",M=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",I=\"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\"+M+\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",W=\"\\\\[\"+M+\"*(\"+I+\")(?:\"+M+\"*([*^$|!~]?=)\"+M+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+I+\"))|)\"+M+\"*\\\\]\",F=\":(\"+I+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+W+\")*)|.*)\\\\)|)\",B=new RegExp(M+\"+\",\"g\"),$=new RegExp(\"^\"+M+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+M+\"+$\",\"g\"),_=new RegExp(\"^\"+M+\"*,\"+M+\"*\"),z=new RegExp(\"^\"+M+\"*([>+~]|\"+M+\")\"+M+\"*\"),U=new RegExp(M+\"|>\"),X=new RegExp(F),V=new RegExp(\"^\"+I+\"$\"),G={ID:new RegExp(\"^#(\"+I+\")\"),CLASS:new RegExp(\"^\\\\.(\"+I+\")\"),TAG:new RegExp(\"^(\"+I+\"|[*])\"),ATTR:new RegExp(\"^\"+W),PSEUDO:new RegExp(\"^\"+F),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+M+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+M+\"*(?:([+-]|)\"+M+\"*(\\\\d+)|))\"+M+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+R+\")$\",\"i\"),needsContext:new RegExp(\"^\"+M+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+M+\"*((?:-\\\\d)?\\\\d*)\"+M+\"*\\\\)|)(?=[^-]|$)\",\"i\")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\\d$/i,K=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ee=/[+~]/,te=new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\"+M+\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\",\"g\"),ne=function(e,t){var n=\"0x\"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ie=function(e,t){return t?\"\\0\"===e?\"\\ufffd\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&\"fieldset\"===e.nodeName.toLowerCase()},{dir:\"parentNode\",next:\"legend\"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],\"string\"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+\" \"]&&(!v||!v.test(t))&&(1!==p||\"object\"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute(\"id\"))?s=s.replace(re,ie):e.setAttribute(\"id\",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?\"#\"+s:\":scope\")+\" \"+xe(l[o]);c=l.join(\",\")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute(\"id\")}}}return g(t.replace($,\"$1\"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+\" \")>b.cacheLength&&delete e[r.shift()],e[t+\" \"]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split(\"|\"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return\"input\"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return(\"input\"===t||\"button\"===t)&&e.type===n}}function ge(t){return function(e){return\"form\"in e?e.parentNode&&!1===e.disabled?\"label\"in e?\"label\"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:\"label\"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&\"undefined\"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||\"HTML\")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener(\"unload\",oe,!1):n.attachEvent&&n.attachEvent(\"onunload\",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement(\"div\")),\"undefined\"!=typeof e.querySelectorAll&&!e.querySelectorAll(\":scope fieldset div\").length}),d.attributes=ce(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute(\"id\")===t}},b.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t=\"undefined\"!=typeof e.getAttributeNode&&e.getAttributeNode(\"id\");return t&&t.value===n}},b.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return\"undefined\"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if(\"undefined\"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML=\"<a id='\"+S+\"'></a><select id='\"+S+\"-\\r\\\\' msallowcapture=''><option selected=''></option></select>\",e.querySelectorAll(\"[msallowcapture^='']\").length&&v.push(\"[*^$]=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||v.push(\"\\\\[\"+M+\"*(?:value|\"+R+\")\"),e.querySelectorAll(\"[id~=\"+S+\"-]\").length||v.push(\"~=\"),(t=C.createElement(\"input\")).setAttribute(\"name\",\"\"),e.appendChild(t),e.querySelectorAll(\"[name='']\").length||v.push(\"\\\\[\"+M+\"*name\"+M+\"*=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\":checked\").length||v.push(\":checked\"),e.querySelectorAll(\"a#\"+S+\"+*\").length||v.push(\".#.+[+~]\"),e.querySelectorAll(\"\\\\\\f\"),v.push(\"[\\\\r\\\\n\\\\f]\")}),ce(function(e){e.innerHTML=\"<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>\";var t=C.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&v.push(\"name\"+M+\"*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&v.push(\":enabled\",\":disabled\"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&v.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),v.push(\",.*:\")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,\"*\"),c.call(e,\"[s!='']:x\"),s.push(\"!=\",F)}),v=v.length&&new RegExp(v.join(\"|\")),s=s.length&&new RegExp(s.join(\"|\")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+\" \"]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+\"\").replace(re,ie)},se.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n=\"\",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||\"\").replace(te,ne),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+\" \"];return t||(t=new RegExp(\"(^|\"+M+\")\"+e+\"(\"+M+\"|$)\"))&&m(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||\"undefined\"!=typeof e.getAttribute&&e.getAttribute(\"class\")||\"\")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?\"!=\"===r:!r||(t+=\"\",\"=\"===r?t===i:\"!=\"===r?t!==i:\"^=\"===r?i&&0===t.indexOf(i):\"*=\"===r?i&&-1<t.indexOf(i):\"$=\"===r?i&&t.slice(-i.length)===i:\"~=\"===r?-1<(\" \"+t.replace(B,\" \")+\" \").indexOf(i):\"|=\"===r&&(t===i||t.slice(0,i.length+1)===i+\"-\"))}},CHILD:function(h,e,t,g,v){var y=\"nth\"!==h.slice(0,3),m=\"last\"!==h.slice(-4),x=\"of-type\"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?\"nextSibling\":\"previousSibling\",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l=\"only\"===h&&!u&&\"nextSibling\"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error(\"unsupported pseudo: \"+e);return a[S]?a(o):1<a.length?(t=[e,e,\"\",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,\"$1\"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||\"\")||se.error(\"unsupported lang: \"+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute(\"xml:lang\")||e.getAttribute(\"lang\"))return(t=t.toLowerCase())===n||0===t.indexOf(n+\"-\")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r=\"\";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&\"parentNode\"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||\"*\",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[\" \"],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:\" \"===e[s-2].type?\"*\":\"\"})).replace($,\"$1\"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+\" \"];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($,\" \")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+\" \"];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l=\"0\",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG(\"*\",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l=\"function\"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&\"ID\"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split(\"\").sort(j).join(\"\")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement(\"fieldset\"))}),ce(function(e){return e.innerHTML=\"<a href='#'></a>\",\"#\"===e.firstChild.getAttribute(\"href\")})||fe(\"type|href|height|width\",function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML=\"<input/>\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||fe(\"value\",function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute(\"disabled\")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[\":\"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):\"string\"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if(\"string\"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,\"string\"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,\"string\"==typeof e){if(!(r=\"<\"===e[0]&&\">\"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a=\"string\"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,\"parentNode\")},parentsUntil:function(e,t,n){return h(e,\"parentNode\",n)},next:function(e){return O(e,\"nextSibling\")},prev:function(e){return O(e,\"previousSibling\")},nextAll:function(e){return h(e,\"nextSibling\")},prevAll:function(e){return h(e,\"previousSibling\")},nextUntil:function(e,t,n){return h(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return h(e,\"previousSibling\",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,\"template\")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return\"Until\"!==r.slice(-5)&&(t=e),t&&\"string\"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\\x20\\t\\r\\n\\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r=\"string\"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:\"\")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&\"string\"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t=\"\",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=\"\"),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[[\"notify\",\"progress\",S.Callbacks(\"memory\"),S.Callbacks(\"memory\"),2],[\"resolve\",\"done\",S.Callbacks(\"once memory\"),S.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",S.Callbacks(\"once memory\"),S.Callbacks(\"once memory\"),1,\"rejected\"]],i=\"pending\",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},\"catch\":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+\"With\"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError(\"Thenable self-resolution\");t=e&&(\"object\"==typeof e||\"function\"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+\"With\"](this===s?void 0:this,arguments),this},s[t[0]+\"With\"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),\"pending\"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn(\"jQuery.Deferred exception: \"+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener(\"DOMContentLoaded\",B),C.removeEventListener(\"load\",B),S.ready()}S.fn.ready=function(e){return F.then(e)[\"catch\"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,\"complete\"===E.readyState||\"loading\"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener(\"DOMContentLoaded\",B),C.addEventListener(\"load\",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(\"object\"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,\"ms-\").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if(\"string\"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&\"string\"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r=\"data-\"+t.replace(K,\"-$&\").toLowerCase(),\"string\"==typeof(n=e.getAttribute(r))){try{n=\"true\"===(i=n)||\"false\"!==i&&(\"null\"===i?null:i===+i+\"\"?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,\"hasDataAttrs\"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf(\"data-\")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,\"hasDataAttrs\",!0)}return i}return\"object\"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks(\"once memory\").add(function(){Y.remove(e,[t+\"queue\",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return\"string\"!=typeof t&&(n=t,t=\"fx\",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),\"fx\"===t&&\"inprogress\"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||\"fx\",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};\"string\"!=typeof e&&(t=e,e=void 0),e=e||\"fx\";while(a--)(n=Y.get(o[a],e+\"queueHooks\"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,te=new RegExp(\"^(?:([+-])=|)(\"+ee+\")([a-z%]*)$\",\"i\"),ne=[\"Top\",\"Right\",\"Bottom\",\"Left\"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return\"none\"===(e=t||e).style.display||\"\"===e.style.display&&ie(e)&&\"none\"===S.css(e,\"display\")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,\"\")},u=s(),l=n&&n[3]||(S.cssNumber[t]?\"\":\"px\"),c=e.nodeType&&(S.cssNumber[t]||\"px\"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?(\"none\"===n&&(l[c]=Y.get(r,\"display\")||null,l[c]||(r.style.display=\"\")),\"\"===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,\"display\"),o.parentNode.removeChild(o),\"none\"===u&&(u=\"block\"),ue[s]=u)))):\"none\"!==n&&(l[c]=\"none\",Y.set(r,\"display\",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return\"boolean\"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i,he=/^$|^module$|\\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement(\"div\")),(fe=E.createElement(\"input\")).setAttribute(\"type\",\"radio\"),fe.setAttribute(\"checked\",\"checked\"),fe.setAttribute(\"name\",\"t\"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML=\"<textarea>x</textarea>\",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML=\"<option></option>\",y.option=!!ce.lastChild;var ge={thead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};function ve(e,t){var n;return n=\"undefined\"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):\"undefined\"!=typeof e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],\"globalEval\",!t||Y.get(t[n],\"globalEval\"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,\"<select multiple='multiple'>\",\"</select>\"]);var me=/<|&#?\\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if(\"object\"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement(\"div\")),s=(de.exec(o)||[\"\",\"\"])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=\"\"}else p.push(t.createTextNode(o));f.textContent=\"\",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),\"script\"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||\"\")&&n.push(o)}return f}var be=/^([^.]*)(?:\\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==(\"focus\"===t)}function Ee(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){for(s in\"string\"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return\"undefined\"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||\"\").match(P)||[\"\"]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||\"\").match(P)||[\"\"]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&(\"**\"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,\"handle events\")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,\"events\")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!(\"click\"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&(\"click\"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+\" \"]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,\"input\")&&Se(t,\"click\",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,\"input\")&&Se(t,\"click\"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,\"input\")&&Y.get(t,\"click\")||A(t,\"a\")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,\"char\":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:\"focusin\",blur:\"focusout\"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+\".\"+r.namespace:r.origType,r.selector,r.handler),this;if(\"object\"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&\"function\"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\\s*(?:[^=]|=\\s*.checked.)/i,Ne=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;function je(e,t){return A(e,\"table\")&&A(11!==t.nodeType?t:t.firstChild,\"tr\")&&S(e).children(\"tbody\")[0]||e}function De(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function qe(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,\"handle events\"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&\"string\"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,\"script\"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,\"script\"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||\"\")&&!Y.access(u,\"globalEval\")&&S.contains(l,u)&&(u.src&&\"module\"!==(u.type||\"\").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute(\"nonce\")},l):b(u.textContent.replace(Ne,\"\"),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,\"script\")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,\"input\"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:\"input\"!==l&&\"textarea\"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,\"script\")).length&&ye(a,!f&&ve(e,\"script\")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp(\"^(\"+ee+\")(?!px)[a-z%]+$\",\"i\"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join(\"|\"),\"i\");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(\"\"!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+\"\":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText=\"position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0\",l.style.cssText=\"position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%\",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n=\"1%\"!==e.top,s=12===t(e.marginLeft),l.style.right=\"60%\",o=36===t(e.right),r=36===t(e.width),l.style.position=\"absolute\",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement(\"div\"),l=E.createElement(\"div\");l.style&&(l.style.backgroundClip=\"content-box\",l.cloneNode(!0).style.backgroundClip=\"\",y.clearCloneStyle=\"content-box\"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement(\"table\"),t=E.createElement(\"tr\"),n=E.createElement(\"div\"),e.style.cssText=\"position:absolute;left:-11111px;border-collapse:separate\",t.style.cssText=\"border:1px solid\",t.style.height=\"1px\",n.style.height=\"9px\",n.style.display=\"block\",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=[\"Webkit\",\"Moz\",\"ms\"],$e=E.createElement(\"div\").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Ge={letterSpacing:\"0\",fontWeight:\"400\"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||\"px\"):t}function Qe(e,t,n,r,i,o){var a=\"width\"===t?1:0,s=0,u=0;if(n===(r?\"border\":\"content\"))return 0;for(;a<4;a+=2)\"margin\"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?(\"content\"===n&&(u-=S.css(e,\"padding\"+ne[a],!0,i)),\"margin\"!==n&&(u-=S.css(e,\"border\"+ne[a]+\"Width\",!0,i))):(u+=S.css(e,\"padding\"+ne[a],!0,i),\"padding\"!==n?u+=S.css(e,\"border\"+ne[a]+\"Width\",!0,i):s+=S.css(e,\"border\"+ne[a]+\"Width\",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&\"border-box\"===S.css(e,\"boxSizing\",!1,r),o=i,a=We(e,t,r),s=\"offset\"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a=\"auto\"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,\"tr\")||\"auto\"===a||!parseFloat(a)&&\"inline\"===S.css(e,\"display\",!1,r))&&e.getClientRects().length&&(i=\"border-box\"===S.css(e,\"boxSizing\",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?\"border\":\"content\"),o,r,a)+\"px\"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];\"string\"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o=\"number\"),null!=n&&n==n&&(\"number\"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?\"\":\"px\")),y.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(l[t]=\"inherit\"),a&&\"set\"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&\"get\"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),\"normal\"===i&&t in Ge&&(i=Ge[t]),\"\"===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each([\"height\",\"width\"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&\"absolute\"===i.position,a=(o||n)&&\"border-box\"===S.css(e,\"boxSizing\",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e[\"offset\"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,\"border\",!1,i)-.5)),s&&(r=te.exec(t))&&\"px\"!==(r[3]||\"px\")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,\"marginLeft\"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+\"px\"}),S.each({margin:\"\",padding:\"\",border:\"Width\"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r=\"string\"==typeof e?e.split(\" \"):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},\"margin\"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?\"\":\"px\")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i[\"margin\"+(n=ne[r])]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners[\"*\"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&\"expand\"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{\"*\":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=[\"*\"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f=\"width\"in t||\"height\"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,\"fxshow\");for(r in n.queue||(null==(a=S._queueHooks(e,\"fx\")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,\"fx\").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||\"toggle\"===i,i===(g?\"hide\":\"show\")){if(\"show\"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,\"display\")),\"none\"===(c=S.css(e,\"display\"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,\"display\"),le([e]))),(\"inline\"===c||\"inline-block\"===c&&null!=l)&&\"none\"===S.css(e,\"float\")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l=\"none\"===c?\"\":c)),h.display=\"inline-block\")),n.overflow&&(h.overflow=\"hidden\",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?\"hidden\"in v&&(g=v.hidden):v=Y.access(e,\"fxshow\",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,\"fxshow\"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&\"object\"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:\"number\"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue=\"fx\"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css(\"opacity\",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,\"finish\"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return\"string\"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||\"fx\",[]),this.each(function(){var e=!0,t=null!=i&&i+\"queueHooks\",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||\"fx\"),this.each(function(){var e,t=Y.get(this),n=t[a+\"queue\"],r=t[a+\"queueHooks\"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each([\"toggle\",\"show\",\"hide\"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||\"boolean\"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st(\"show\"),slideUp:st(\"hide\"),slideToggle:st(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||\"fx\",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement(\"input\"),nt=E.createElement(\"select\").appendChild(E.createElement(\"option\")),tt.type=\"checkbox\",y.checkOn=\"\"!==tt.value,y.optSelected=nt.selected,(tt=E.createElement(\"input\")).value=\"t\",tt.type=\"radio\",y.radioValue=\"t\"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return\"undefined\"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&\"radio\"===t&&A(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(\" \")}function gt(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function vt(e){return Array.isArray(e)?e:\"string\"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,\"tabindex\");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{\"for\":\"htmlFor\",\"class\":\"className\"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&\" \"+ht(i)+\" \"){a=0;while(o=e[a++])r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");i!==(s=ht(r))&&n.setAttribute(\"class\",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr(\"class\",\"\");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&\" \"+ht(i)+\" \"){a=0;while(o=e[a++])while(-1<r.indexOf(\" \"+o+\" \"))r=r.replace(\" \"+o+\" \",\" \");i!==(s=ht(r))&&n.setAttribute(\"class\",s)}return this},toggleClass:function(i,t){var o=typeof i,a=\"string\"===o||Array.isArray(i);return\"boolean\"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&\"boolean\"!==o||((e=gt(this))&&Y.set(this,\"__className__\",e),this.setAttribute&&this.setAttribute(\"class\",e||!1===i?\"\":Y.get(this,\"__className__\")||\"\"))})},hasClass:function(e){var t,n,r=0;t=\" \"+e+\" \";while(n=this[r++])if(1===n.nodeType&&-1<(\" \"+ht(gt(n))+\" \").indexOf(t))return!0;return!1}});var yt=/\\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t=\"\":\"number\"==typeof t?t+=\"\":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?\"\":e+\"\"})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&\"set\"in r&&void 0!==r.set(this,t,\"value\")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&\"get\"in r&&void 0!==(e=r.get(t,\"value\"))?e:\"string\"==typeof(e=t.value)?e.replace(yt,\"\"):null==e?\"\":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,\"value\");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a=\"select-one\"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,\"optgroup\"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each([\"radio\",\"checkbox\"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})}),y.focusin=\"onfocusin\"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,\"type\")?e.type:e,h=v.call(e,\"namespace\")?e.namespace.split(\".\"):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(\".\")&&(d=(h=d.split(\".\")).shift(),h.sort()),u=d.indexOf(\":\")<0&&\"on\"+d,(e=e[S.expando]?e:new S.Event(d,\"object\"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join(\".\"),e.rnamespace=e.namespace?new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,\"events\")||Object.create(null))[e.type]&&Y.get(o,\"handle\"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:\"focusin\",blur:\"focusout\"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\\?/;S.parseXML=function(e){var t,n;if(!e||\"string\"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,\"text/xml\")}catch(e){}return n=t&&t.getElementsByTagName(\"parsererror\")[0],t&&!n||S.error(\"Invalid XML: \"+(n?S.map(n.childNodes,function(e){return e.textContent}).join(\"\\n\"):e)),t};var Ct=/\\[\\]$/,Et=/\\r?\\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+\"[\"+(\"object\"==typeof t&&null!=t?e:\"\")+\"]\",t,r,i)});else if(r||\"object\"!==w(e))i(n,e);else for(t in e)At(n+\"[\"+t+\"]\",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(null==n?\"\":n)};if(null==e)return\"\";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join(\"&\")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,\"elements\");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(\":disabled\")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,\"\\r\\n\")}}):{name:t.name,value:n.replace(Et,\"\\r\\n\")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\\/\\//,Ot={},Pt={},Rt=\"*/\".concat(\"*\"),Mt=E.createElement(\"a\");function It(o){return function(e,t){\"string\"!=typeof e&&(t=e,e=\"*\");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])\"+\"===n[0]?(n=n.slice(1)||\"*\",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return\"string\"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s[\"*\"]&&l(\"*\")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:\"GET\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Rt,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){\"object\"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks(\"once memory\"),w=v.statusCode||{},a={},s={},u=\"canceled\",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+\" \"]=(n[t[1].toLowerCase()+\" \"]||[]).concat(t[2])}t=n[e.toLowerCase()+\" \"]}return null==t?null:t.join(\", \")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+\"\").replace(Ht,bt.protocol+\"//\"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||\"*\").toLowerCase().match(P)||[\"\"],null==v.crossDomain){r=E.createElement(\"a\");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+\"//\"+Mt.host!=r.protocol+\"//\"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&\"string\"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger(\"ajaxStart\"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,\"\"),v.hasContent?v.data&&v.processData&&0===(v.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(v.data=v.data.replace(Nt,\"+\")):(o=v.url.slice(f.length),v.data&&(v.processData||\"string\"==typeof v.data)&&(f+=(Tt.test(f)?\"&\":\"?\")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,\"$1\"),o=(Tt.test(f)?\"&\":\"?\")+\"_=\"+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader(\"If-Modified-Since\",S.lastModified[f]),S.etag[f]&&T.setRequestHeader(\"If-None-Match\",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader(\"Content-Type\",v.contentType),T.setRequestHeader(\"Accept\",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+(\"*\"!==v.dataTypes[0]?\", \"+Rt+\"; q=0.01\":\"\"):v.accepts[\"*\"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u=\"abort\",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger(\"ajaxSend\",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort(\"timeout\")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,\"No Transport\");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||\"\",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while(\"*\"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+\" \"+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray(\"script\",v.dataTypes)&&S.inArray(\"json\",v.dataTypes)<0&&(v.converters[\"text script\"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(!(a=l[u+\" \"+o]||l[\"* \"+o]))for(i in l)if((s=i.split(\" \"))[1]===o&&(a=l[u+\" \"+s[0]]||l[\"* \"+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e[\"throws\"])t=a(t);else try{t=a(t)}catch(e){return{state:\"parsererror\",error:a?e:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader(\"Last-Modified\"))&&(S.lastModified[f]=u),(u=T.getResponseHeader(\"etag\"))&&(S.etag[f]=u)),204===e||\"HEAD\"===v.type?l=\"nocontent\":304===e?l=\"notmodified\":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l=\"error\",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+\"\",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?\"ajaxSuccess\":\"ajaxError\",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger(\"ajaxComplete\",[T,v]),--S.active||S.event.trigger(\"ajaxStop\")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,\"json\")},getScript:function(e,t){return S.get(e,void 0,t,\"script\")}}),S.each([\"get\",\"post\"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)\"content-type\"===t.toLowerCase()&&(e.contentType=e.headers[t]||\"\")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,converters:{\"text script\":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not(\"body\").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&\"withCredentials\"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e[\"X-Requested-With\"]||(e[\"X-Requested-With\"]=\"XMLHttpRequest\"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,\"abort\"===e?r.abort():\"error\"===e?\"number\"!=typeof r.status?t(0,\"error\"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,\"text\"!==(r.responseType||\"text\")||\"string\"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o(\"error\"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o(\"abort\");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter(\"script\",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")}),S.ajaxTransport(\"script\",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S(\"<script>\").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on(\"load error\",i=function(e){r.remove(),i=null,e&&t(\"error\"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\\?(?=&|$)|\\?\\?/;S.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=zt.pop()||S.expando+\"_\"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter(\"json jsonp\",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?\"url\":\"string\"==typeof e.data&&0===(e.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Ut.test(e.data)&&\"data\");if(a||\"jsonp\"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,\"$1\"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?\"&\":\"?\")+e.jsonp+\"=\"+r),e.converters[\"script json\"]=function(){return o||S.error(r+\" was not called\"),o[0]},e.dataTypes[0]=\"json\",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),\"script\"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument(\"\").body).innerHTML=\"<form></form><form></form>\",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return\"string\"!=typeof e?[]:(\"boolean\"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument(\"\")).createElement(\"base\")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(\" \");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&\"object\"==typeof t&&(i=\"POST\"),0<a.length&&S.ajax({url:e,type:i||\"GET\",dataType:\"html\",data:t}).done(function(e){o=arguments,a.html(r?S(\"<div>\").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,\"position\"),c=S(e),f={};\"static\"===l&&(e.style.position=\"relative\"),s=c.offset(),o=S.css(e,\"top\"),u=S.css(e,\"left\"),(\"absolute\"===l||\"fixed\"===l)&&-1<(o+u).indexOf(\"auto\")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),\"using\"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if(\"fixed\"===S.css(r,\"position\"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&\"static\"===S.css(e,\"position\"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,\"borderTopWidth\",!0),i.left+=S.css(e,\"borderLeftWidth\",!0))}return{top:t.top-i.top-S.css(r,\"marginTop\",!0),left:t.left-i.left-S.css(r,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&\"static\"===S.css(e,\"position\"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(t,i){var o=\"pageYOffset\"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each([\"top\",\"left\"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+\"px\":t})}),S.each({Height:\"height\",Width:\"width\"},function(a,s){S.each({padding:\"inner\"+a,content:s,\"\":\"outer\"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||\"boolean\"!=typeof e),i=r||(!0===e||!0===t?\"margin\":\"border\");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf(\"outer\")?e[\"inner\"+a]:e.document.documentElement[\"client\"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body[\"scroll\"+a],r[\"scroll\"+a],e.body[\"offset\"+a],r[\"offset\"+a],r[\"client\"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if(\"string\"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return(\"number\"===t||\"string\"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?\"\":(e+\"\").replace(Xt,\"\")},\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},\"undefined\"==typeof e&&(C.jQuery=C.$=S),S});\n"
  },
  {
    "path": "examples/minimal.html",
    "content": "<!DOCTYPE html>\n<html>\n\n<head>\n  <title>Minimal Smartcrop Example</title>\n  <style>\n    img {\n      width: 320px;\n    }\n  </style>\n</head>\n\n<body>\n  <script src=\"../smartcrop.js\"></script>\n  <script>\n    function loadImage(src) {\n      return new Promise((resolve, reject) => {\n        const image = new Image();\n        image.onload = () => resolve(image);\n        image.onerror = e => reject(new Error(e));\n        image.src = src;\n      });\n    }\n    async function main() {\n      const src = 'images/unsplash/makhmutova-dina-1580313-unsplash.jpg';\n      const options = {\n        width: 100,\n        height: 100\n      };\n      const image = await loadImage(src);\n      const crops = await smartcrop.crop(image, options);\n      console.log('crops', crops);\n      showCroppedImage(src, crops.topCrop, options)\n    }\n    function showCroppedImage(src, crop, options) {\n      const div = document.createElement('div');\n      const style = div.style;\n      style.backgroundImage = `url('${src}')`;\n      const scale = options.width / crop.width;\n      style.backgroundPositionX = crop.x * scale + 'px';\n      style.backgroundPositionY = -crop.y * scale + 'px';\n      style.backgroundSize = '100%';\n      style.width = options.width + 'px';\n      style.height = options.height + 'px';\n      document.body.appendChild(div);\n    }\n    main();\n  </script>\n</body>\n\n</html>"
  },
  {
    "path": "examples/q.js",
    "content": "// vim:ts=4:sts=4:sw=4:\n/*!\n *\n * Copyright 2009-2012 Kris Kowal under the terms of the MIT\n * license found at http://github.com/kriskowal/q/raw/master/LICENSE\n *\n * With parts by Tyler Close\n * Copyright 2007-2009 Tyler Close under the terms of the MIT X license found\n * at http://www.opensource.org/licenses/mit-license.html\n * Forked at ref_send.js version: 2009-05-11\n *\n * With parts by Mark Miller\n * Copyright (C) 2011 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n(function (definition) {\n    // Turn off strict mode for this function so we can assign to global.Q\n    /* jshint strict: false */\n\n    // This file will function properly as a <script> tag, or a module\n    // using CommonJS and NodeJS or RequireJS module formats.  In\n    // Common/Node/RequireJS, the module exports the Q API and when\n    // executed as a simple <script>, it creates a Q global instead.\n\n    // Montage Require\n    if (typeof bootstrap === \"function\") {\n        bootstrap(\"promise\", definition);\n\n    // CommonJS\n    } else if (typeof exports === \"object\") {\n        module.exports = definition();\n\n    // RequireJS\n    } else if (typeof define === \"function\" && define.amd) {\n        define(definition);\n\n    // SES (Secure EcmaScript)\n    } else if (typeof ses !== \"undefined\") {\n        if (!ses.ok()) {\n            return;\n        } else {\n            ses.makeQ = definition;\n        }\n\n    // <script>\n    } else {\n        Q = definition();\n    }\n\n})(function () {\n\"use strict\";\n\nvar hasStacks = false;\ntry {\n    throw new Error();\n} catch (e) {\n    hasStacks = !!e.stack;\n}\n\n// All code after this point will be filtered from stack traces reported\n// by Q.\nvar qStartingLine = captureLine();\nvar qFileName;\n\n// shims\n\n// used for fallback in \"allResolved\"\nvar noop = function () {};\n\n// Use the fastest possible means to execute a task in a future turn\n// of the event loop.\nvar nextTick =(function () {\n    // linked list of tasks (single, with head node)\n    var head = {task: void 0, next: null};\n    var tail = head;\n    var flushing = false;\n    var requestTick = void 0;\n    var isNodeJS = false;\n\n    function flush() {\n        /* jshint loopfunc: true */\n\n        while (head.next) {\n            head = head.next;\n            var task = head.task;\n            head.task = void 0;\n            var domain = head.domain;\n\n            if (domain) {\n                head.domain = void 0;\n                domain.enter();\n            }\n\n            try {\n                task();\n\n            } catch (e) {\n                if (isNodeJS) {\n                    // In node, uncaught exceptions are considered fatal errors.\n                    // Re-throw them synchronously to interrupt flushing!\n\n                    // Ensure continuation if the uncaught exception is suppressed\n                    // listening \"uncaughtException\" events (as domains does).\n                    // Continue in next event to avoid tick recursion.\n                    if (domain) {\n                        domain.exit();\n                    }\n                    setTimeout(flush, 0);\n                    if (domain) {\n                        domain.enter();\n                    }\n\n                    throw e;\n\n                } else {\n                    // In browsers, uncaught exceptions are not fatal.\n                    // Re-throw them asynchronously to avoid slow-downs.\n                    setTimeout(function() {\n                       throw e;\n                    }, 0);\n                }\n            }\n\n            if (domain) {\n                domain.exit();\n            }\n        }\n\n        flushing = false;\n    }\n\n    nextTick = function (task) {\n        tail = tail.next = {\n            task: task,\n            domain: isNodeJS && process.domain,\n            next: null\n        };\n\n        if (!flushing) {\n            flushing = true;\n            requestTick();\n        }\n    };\n\n    if (typeof process !== \"undefined\" && process.nextTick) {\n        // Node.js before 0.9. Note that some fake-Node environments, like the\n        // Mocha test runner, introduce a `process` global without a `nextTick`.\n        isNodeJS = true;\n\n        requestTick = function () {\n            process.nextTick(flush);\n        };\n\n    } else if (typeof setImmediate === \"function\") {\n        // In IE10, Node.js 0.9+, or https://github.com/NobleJS/setImmediate\n        if (typeof window !== \"undefined\") {\n            requestTick = setImmediate.bind(window, flush);\n        } else {\n            requestTick = function () {\n                setImmediate(flush);\n            };\n        }\n\n    } else if (typeof MessageChannel !== \"undefined\") {\n        // modern browsers\n        // http://www.nonblocking.io/2011/06/windownexttick.html\n        var channel = new MessageChannel();\n        // At least Safari Version 6.0.5 (8536.30.1) intermittently cannot create\n        // working message ports the first time a page loads.\n        channel.port1.onmessage = function () {\n            requestTick = requestPortTick;\n            channel.port1.onmessage = flush;\n            flush();\n        };\n        var requestPortTick = function () {\n            // Opera requires us to provide a message payload, regardless of\n            // whether we use it.\n            channel.port2.postMessage(0);\n        };\n        requestTick = function () {\n            setTimeout(flush, 0);\n            requestPortTick();\n        };\n\n    } else {\n        // old browsers\n        requestTick = function () {\n            setTimeout(flush, 0);\n        };\n    }\n\n    return nextTick;\n})();\n\n// Attempt to make generics safe in the face of downstream\n// modifications.\n// There is no situation where this is necessary.\n// If you need a security guarantee, these primordials need to be\n// deeply frozen anyway, and if you don’t need a security guarantee,\n// this is just plain paranoid.\n// However, this **might** have the nice side-effect of reducing the size of\n// the minified code by reducing x.call() to merely x()\n// See Mark Miller’s explanation of what this does.\n// http://wiki.ecmascript.org/doku.php?id=conventions:safe_meta_programming\nvar call = Function.call;\nfunction uncurryThis(f) {\n    return function () {\n        return call.apply(f, arguments);\n    };\n}\n// This is equivalent, but slower:\n// uncurryThis = Function_bind.bind(Function_bind.call);\n// http://jsperf.com/uncurrythis\n\nvar array_slice = uncurryThis(Array.prototype.slice);\n\nvar array_reduce = uncurryThis(\n    Array.prototype.reduce || function (callback, basis) {\n        var index = 0,\n            length = this.length;\n        // concerning the initial value, if one is not provided\n        if (arguments.length === 1) {\n            // seek to the first value in the array, accounting\n            // for the possibility that is is a sparse array\n            do {\n                if (index in this) {\n                    basis = this[index++];\n                    break;\n                }\n                if (++index >= length) {\n                    throw new TypeError();\n                }\n            } while (1);\n        }\n        // reduce\n        for (; index < length; index++) {\n            // account for the possibility that the array is sparse\n            if (index in this) {\n                basis = callback(basis, this[index], index);\n            }\n        }\n        return basis;\n    }\n);\n\nvar array_indexOf = uncurryThis(\n    Array.prototype.indexOf || function (value) {\n        // not a very good shim, but good enough for our one use of it\n        for (var i = 0; i < this.length; i++) {\n            if (this[i] === value) {\n                return i;\n            }\n        }\n        return -1;\n    }\n);\n\nvar array_map = uncurryThis(\n    Array.prototype.map || function (callback, thisp) {\n        var self = this;\n        var collect = [];\n        array_reduce(self, function (undefined, value, index) {\n            collect.push(callback.call(thisp, value, index, self));\n        }, void 0);\n        return collect;\n    }\n);\n\nvar object_create = Object.create || function (prototype) {\n    function Type() { }\n    Type.prototype = prototype;\n    return new Type();\n};\n\nvar object_hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);\n\nvar object_keys = Object.keys || function (object) {\n    var keys = [];\n    for (var key in object) {\n        if (object_hasOwnProperty(object, key)) {\n            keys.push(key);\n        }\n    }\n    return keys;\n};\n\nvar object_toString = uncurryThis(Object.prototype.toString);\n\nfunction isObject(value) {\n    return value === Object(value);\n}\n\n// generator related shims\n\n// FIXME: Remove this function once ES6 generators are in SpiderMonkey.\nfunction isStopIteration(exception) {\n    return (\n        object_toString(exception) === \"[object StopIteration]\" ||\n        exception instanceof QReturnValue\n    );\n}\n\n// FIXME: Remove this helper and Q.return once ES6 generators are in\n// SpiderMonkey.\nvar QReturnValue;\nif (typeof ReturnValue !== \"undefined\") {\n    QReturnValue = ReturnValue;\n} else {\n    QReturnValue = function (value) {\n        this.value = value;\n    };\n}\n\n// long stack traces\n\nvar STACK_JUMP_SEPARATOR = \"From previous event:\";\n\nfunction makeStackTraceLong(error, promise) {\n    // If possible, transform the error stack trace by removing Node and Q\n    // cruft, then concatenating with the stack trace of `promise`. See #57.\n    if (hasStacks &&\n        promise.stack &&\n        typeof error === \"object\" &&\n        error !== null &&\n        error.stack &&\n        error.stack.indexOf(STACK_JUMP_SEPARATOR) === -1\n    ) {\n        var stacks = [];\n        for (var p = promise; !!p; p = p.source) {\n            if (p.stack) {\n                stacks.unshift(p.stack);\n            }\n        }\n        stacks.unshift(error.stack);\n\n        var concatedStacks = stacks.join(\"\\n\" + STACK_JUMP_SEPARATOR + \"\\n\");\n        error.stack = filterStackString(concatedStacks);\n    }\n}\n\nfunction filterStackString(stackString) {\n    var lines = stackString.split(\"\\n\");\n    var desiredLines = [];\n    for (var i = 0; i < lines.length; ++i) {\n        var line = lines[i];\n\n        if (!isInternalFrame(line) && !isNodeFrame(line) && line) {\n            desiredLines.push(line);\n        }\n    }\n    return desiredLines.join(\"\\n\");\n}\n\nfunction isNodeFrame(stackLine) {\n    return stackLine.indexOf(\"(module.js:\") !== -1 ||\n           stackLine.indexOf(\"(node.js:\") !== -1;\n}\n\nfunction getFileNameAndLineNumber(stackLine) {\n    // Named functions: \"at functionName (filename:lineNumber:columnNumber)\"\n    // In IE10 function name can have spaces (\"Anonymous function\") O_o\n    var attempt1 = /at .+ \\((.+):(\\d+):(?:\\d+)\\)$/.exec(stackLine);\n    if (attempt1) {\n        return [attempt1[1], Number(attempt1[2])];\n    }\n\n    // Anonymous functions: \"at filename:lineNumber:columnNumber\"\n    var attempt2 = /at ([^ ]+):(\\d+):(?:\\d+)$/.exec(stackLine);\n    if (attempt2) {\n        return [attempt2[1], Number(attempt2[2])];\n    }\n\n    // Firefox style: \"function@filename:lineNumber or @filename:lineNumber\"\n    var attempt3 = /.*@(.+):(\\d+)$/.exec(stackLine);\n    if (attempt3) {\n        return [attempt3[1], Number(attempt3[2])];\n    }\n}\n\nfunction isInternalFrame(stackLine) {\n    var fileNameAndLineNumber = getFileNameAndLineNumber(stackLine);\n\n    if (!fileNameAndLineNumber) {\n        return false;\n    }\n\n    var fileName = fileNameAndLineNumber[0];\n    var lineNumber = fileNameAndLineNumber[1];\n\n    return fileName === qFileName &&\n        lineNumber >= qStartingLine &&\n        lineNumber <= qEndingLine;\n}\n\n// discover own file name and line number range for filtering stack\n// traces\nfunction captureLine() {\n    if (!hasStacks) {\n        return;\n    }\n\n    try {\n        throw new Error();\n    } catch (e) {\n        var lines = e.stack.split(\"\\n\");\n        var firstLine = lines[0].indexOf(\"@\") > 0 ? lines[1] : lines[2];\n        var fileNameAndLineNumber = getFileNameAndLineNumber(firstLine);\n        if (!fileNameAndLineNumber) {\n            return;\n        }\n\n        qFileName = fileNameAndLineNumber[0];\n        return fileNameAndLineNumber[1];\n    }\n}\n\nfunction deprecate(callback, name, alternative) {\n    return function () {\n        if (typeof console !== \"undefined\" &&\n            typeof console.warn === \"function\") {\n            console.warn(name + \" is deprecated, use \" + alternative +\n                         \" instead.\", new Error(\"\").stack);\n        }\n        return callback.apply(callback, arguments);\n    };\n}\n\n// end of shims\n// beginning of real work\n\n/**\n * Constructs a promise for an immediate reference, passes promises through, or\n * coerces promises from different systems.\n * @param value immediate reference or promise\n */\nfunction Q(value) {\n    // If the object is already a Promise, return it directly.  This enables\n    // the resolve function to both be used to created references from objects,\n    // but to tolerably coerce non-promises to promises.\n    if (isPromise(value)) {\n        return value;\n    }\n\n    // assimilate thenables\n    if (isPromiseAlike(value)) {\n        return coerce(value);\n    } else {\n        return fulfill(value);\n    }\n}\nQ.resolve = Q;\n\n/**\n * Performs a task in a future turn of the event loop.\n * @param {Function} task\n */\nQ.nextTick = nextTick;\n\n/**\n * Controls whether or not long stack traces will be on\n */\nQ.longStackSupport = false;\n\n/**\n * Constructs a {promise, resolve, reject} object.\n *\n * `resolve` is a callback to invoke with a more resolved value for the\n * promise. To fulfill the promise, invoke `resolve` with any value that is\n * not a thenable. To reject the promise, invoke `resolve` with a rejected\n * thenable, or invoke `reject` with the reason directly. To resolve the\n * promise to another thenable, thus putting it in the same state, invoke\n * `resolve` with that other thenable.\n */\nQ.defer = defer;\nfunction defer() {\n    // if \"messages\" is an \"Array\", that indicates that the promise has not yet\n    // been resolved.  If it is \"undefined\", it has been resolved.  Each\n    // element of the messages array is itself an array of complete arguments to\n    // forward to the resolved promise.  We coerce the resolution value to a\n    // promise using the `resolve` function because it handles both fully\n    // non-thenable values and other thenables gracefully.\n    var messages = [], progressListeners = [], resolvedPromise;\n\n    var deferred = object_create(defer.prototype);\n    var promise = object_create(Promise.prototype);\n\n    promise.promiseDispatch = function (resolve, op, operands) {\n        var args = array_slice(arguments);\n        if (messages) {\n            messages.push(args);\n            if (op === \"when\" && operands[1]) { // progress operand\n                progressListeners.push(operands[1]);\n            }\n        } else {\n            nextTick(function () {\n                resolvedPromise.promiseDispatch.apply(resolvedPromise, args);\n            });\n        }\n    };\n\n    // XXX deprecated\n    promise.valueOf = function () {\n        if (messages) {\n            return promise;\n        }\n        var nearerValue = nearer(resolvedPromise);\n        if (isPromise(nearerValue)) {\n            resolvedPromise = nearerValue; // shorten chain\n        }\n        return nearerValue;\n    };\n\n    promise.inspect = function () {\n        if (!resolvedPromise) {\n            return { state: \"pending\" };\n        }\n        return resolvedPromise.inspect();\n    };\n\n    if (Q.longStackSupport && hasStacks) {\n        try {\n            throw new Error();\n        } catch (e) {\n            // NOTE: don't try to use `Error.captureStackTrace` or transfer the\n            // accessor around; that causes memory leaks as per GH-111. Just\n            // reify the stack trace as a string ASAP.\n            //\n            // At the same time, cut off the first line; it's always just\n            // \"[object Promise]\\n\", as per the `toString`.\n            promise.stack = e.stack.substring(e.stack.indexOf(\"\\n\") + 1);\n        }\n    }\n\n    // NOTE: we do the checks for `resolvedPromise` in each method, instead of\n    // consolidating them into `become`, since otherwise we'd create new\n    // promises with the lines `become(whatever(value))`. See e.g. GH-252.\n\n    function become(newPromise) {\n        resolvedPromise = newPromise;\n        promise.source = newPromise;\n\n        array_reduce(messages, function (undefined, message) {\n            nextTick(function () {\n                newPromise.promiseDispatch.apply(newPromise, message);\n            });\n        }, void 0);\n\n        messages = void 0;\n        progressListeners = void 0;\n    }\n\n    deferred.promise = promise;\n    deferred.resolve = function (value) {\n        if (resolvedPromise) {\n            return;\n        }\n\n        become(Q(value));\n    };\n\n    deferred.fulfill = function (value) {\n        if (resolvedPromise) {\n            return;\n        }\n\n        become(fulfill(value));\n    };\n    deferred.reject = function (reason) {\n        if (resolvedPromise) {\n            return;\n        }\n\n        become(reject(reason));\n    };\n    deferred.notify = function (progress) {\n        if (resolvedPromise) {\n            return;\n        }\n\n        array_reduce(progressListeners, function (undefined, progressListener) {\n            nextTick(function () {\n                progressListener(progress);\n            });\n        }, void 0);\n    };\n\n    return deferred;\n}\n\n/**\n * Creates a Node-style callback that will resolve or reject the deferred\n * promise.\n * @returns a nodeback\n */\ndefer.prototype.makeNodeResolver = function () {\n    var self = this;\n    return function (error, value) {\n        if (error) {\n            self.reject(error);\n        } else if (arguments.length > 2) {\n            self.resolve(array_slice(arguments, 1));\n        } else {\n            self.resolve(value);\n        }\n    };\n};\n\n/**\n * @param resolver {Function} a function that returns nothing and accepts\n * the resolve, reject, and notify functions for a deferred.\n * @returns a promise that may be resolved with the given resolve and reject\n * functions, or rejected by a thrown exception in resolver\n */\nQ.Promise = promise; // ES6\nQ.promise = promise;\nfunction promise(resolver) {\n    if (typeof resolver !== \"function\") {\n        throw new TypeError(\"resolver must be a function.\");\n    }\n    var deferred = defer();\n    try {\n        resolver(deferred.resolve, deferred.reject, deferred.notify);\n    } catch (reason) {\n        deferred.reject(reason);\n    }\n    return deferred.promise;\n}\n\npromise.race = race; // ES6\npromise.all = all; // ES6\npromise.reject = reject; // ES6\npromise.resolve = Q; // ES6\n\n// XXX experimental.  This method is a way to denote that a local value is\n// serializable and should be immediately dispatched to a remote upon request,\n// instead of passing a reference.\nQ.passByCopy = function (object) {\n    //freeze(object);\n    //passByCopies.set(object, true);\n    return object;\n};\n\nPromise.prototype.passByCopy = function () {\n    //freeze(object);\n    //passByCopies.set(object, true);\n    return this;\n};\n\n/**\n * If two promises eventually fulfill to the same value, promises that value,\n * but otherwise rejects.\n * @param x {Any*}\n * @param y {Any*}\n * @returns {Any*} a promise for x and y if they are the same, but a rejection\n * otherwise.\n *\n */\nQ.join = function (x, y) {\n    return Q(x).join(y);\n};\n\nPromise.prototype.join = function (that) {\n    return Q([this, that]).spread(function (x, y) {\n        if (x === y) {\n            // TODO: \"===\" should be Object.is or equiv\n            return x;\n        } else {\n            throw new Error(\"Can't join: not the same: \" + x + \" \" + y);\n        }\n    });\n};\n\n/**\n * Returns a promise for the first of an array of promises to become fulfilled.\n * @param answers {Array[Any*]} promises to race\n * @returns {Any*} the first promise to be fulfilled\n */\nQ.race = race;\nfunction race(answerPs) {\n    return promise(function(resolve, reject) {\n        // Switch to this once we can assume at least ES5\n        // answerPs.forEach(function(answerP) {\n        //     Q(answerP).then(resolve, reject);\n        // });\n        // Use this in the meantime\n        for (var i = 0, len = answerPs.length; i < len; i++) {\n            Q(answerPs[i]).then(resolve, reject);\n        }\n    });\n}\n\nPromise.prototype.race = function () {\n    return this.then(Q.race);\n};\n\n/**\n * Constructs a Promise with a promise descriptor object and optional fallback\n * function.  The descriptor contains methods like when(rejected), get(name),\n * set(name, value), post(name, args), and delete(name), which all\n * return either a value, a promise for a value, or a rejection.  The fallback\n * accepts the operation name, a resolver, and any further arguments that would\n * have been forwarded to the appropriate method above had a method been\n * provided with the proper name.  The API makes no guarantees about the nature\n * of the returned object, apart from that it is usable whereever promises are\n * bought and sold.\n */\nQ.makePromise = Promise;\nfunction Promise(descriptor, fallback, inspect) {\n    if (fallback === void 0) {\n        fallback = function (op) {\n            return reject(new Error(\n                \"Promise does not support operation: \" + op\n            ));\n        };\n    }\n    if (inspect === void 0) {\n        inspect = function () {\n            return {state: \"unknown\"};\n        };\n    }\n\n    var promise = object_create(Promise.prototype);\n\n    promise.promiseDispatch = function (resolve, op, args) {\n        var result;\n        try {\n            if (descriptor[op]) {\n                result = descriptor[op].apply(promise, args);\n            } else {\n                result = fallback.call(promise, op, args);\n            }\n        } catch (exception) {\n            result = reject(exception);\n        }\n        if (resolve) {\n            resolve(result);\n        }\n    };\n\n    promise.inspect = inspect;\n\n    // XXX deprecated `valueOf` and `exception` support\n    if (inspect) {\n        var inspected = inspect();\n        if (inspected.state === \"rejected\") {\n            promise.exception = inspected.reason;\n        }\n\n        promise.valueOf = function () {\n            var inspected = inspect();\n            if (inspected.state === \"pending\" ||\n                inspected.state === \"rejected\") {\n                return promise;\n            }\n            return inspected.value;\n        };\n    }\n\n    return promise;\n}\n\nPromise.prototype.toString = function () {\n    return \"[object Promise]\";\n};\n\nPromise.prototype.then = function (fulfilled, rejected, progressed) {\n    var self = this;\n    var deferred = defer();\n    var done = false;   // ensure the untrusted promise makes at most a\n                        // single call to one of the callbacks\n\n    function _fulfilled(value) {\n        try {\n            return typeof fulfilled === \"function\" ? fulfilled(value) : value;\n        } catch (exception) {\n            return reject(exception);\n        }\n    }\n\n    function _rejected(exception) {\n        if (typeof rejected === \"function\") {\n            makeStackTraceLong(exception, self);\n            try {\n                return rejected(exception);\n            } catch (newException) {\n                return reject(newException);\n            }\n        }\n        return reject(exception);\n    }\n\n    function _progressed(value) {\n        return typeof progressed === \"function\" ? progressed(value) : value;\n    }\n\n    nextTick(function () {\n        self.promiseDispatch(function (value) {\n            if (done) {\n                return;\n            }\n            done = true;\n\n            deferred.resolve(_fulfilled(value));\n        }, \"when\", [function (exception) {\n            if (done) {\n                return;\n            }\n            done = true;\n\n            deferred.resolve(_rejected(exception));\n        }]);\n    });\n\n    // Progress propagator need to be attached in the current tick.\n    self.promiseDispatch(void 0, \"when\", [void 0, function (value) {\n        var newValue;\n        var threw = false;\n        try {\n            newValue = _progressed(value);\n        } catch (e) {\n            threw = true;\n            if (Q.onerror) {\n                Q.onerror(e);\n            } else {\n                throw e;\n            }\n        }\n\n        if (!threw) {\n            deferred.notify(newValue);\n        }\n    }]);\n\n    return deferred.promise;\n};\n\n/**\n * Registers an observer on a promise.\n *\n * Guarantees:\n *\n * 1. that fulfilled and rejected will be called only once.\n * 2. that either the fulfilled callback or the rejected callback will be\n *    called, but not both.\n * 3. that fulfilled and rejected will not be called in this turn.\n *\n * @param value      promise or immediate reference to observe\n * @param fulfilled  function to be called with the fulfilled value\n * @param rejected   function to be called with the rejection exception\n * @param progressed function to be called on any progress notifications\n * @return promise for the return value from the invoked callback\n */\nQ.when = when;\nfunction when(value, fulfilled, rejected, progressed) {\n    return Q(value).then(fulfilled, rejected, progressed);\n}\n\nPromise.prototype.thenResolve = function (value) {\n    return this.then(function () { return value; });\n};\n\nQ.thenResolve = function (promise, value) {\n    return Q(promise).thenResolve(value);\n};\n\nPromise.prototype.thenReject = function (reason) {\n    return this.then(function () { throw reason; });\n};\n\nQ.thenReject = function (promise, reason) {\n    return Q(promise).thenReject(reason);\n};\n\n/**\n * If an object is not a promise, it is as \"near\" as possible.\n * If a promise is rejected, it is as \"near\" as possible too.\n * If it’s a fulfilled promise, the fulfillment value is nearer.\n * If it’s a deferred promise and the deferred has been resolved, the\n * resolution is \"nearer\".\n * @param object\n * @returns most resolved (nearest) form of the object\n */\n\n// XXX should we re-do this?\nQ.nearer = nearer;\nfunction nearer(value) {\n    if (isPromise(value)) {\n        var inspected = value.inspect();\n        if (inspected.state === \"fulfilled\") {\n            return inspected.value;\n        }\n    }\n    return value;\n}\n\n/**\n * @returns whether the given object is a promise.\n * Otherwise it is a fulfilled value.\n */\nQ.isPromise = isPromise;\nfunction isPromise(object) {\n    return isObject(object) &&\n        typeof object.promiseDispatch === \"function\" &&\n        typeof object.inspect === \"function\";\n}\n\nQ.isPromiseAlike = isPromiseAlike;\nfunction isPromiseAlike(object) {\n    return isObject(object) && typeof object.then === \"function\";\n}\n\n/**\n * @returns whether the given object is a pending promise, meaning not\n * fulfilled or rejected.\n */\nQ.isPending = isPending;\nfunction isPending(object) {\n    return isPromise(object) && object.inspect().state === \"pending\";\n}\n\nPromise.prototype.isPending = function () {\n    return this.inspect().state === \"pending\";\n};\n\n/**\n * @returns whether the given object is a value or fulfilled\n * promise.\n */\nQ.isFulfilled = isFulfilled;\nfunction isFulfilled(object) {\n    return !isPromise(object) || object.inspect().state === \"fulfilled\";\n}\n\nPromise.prototype.isFulfilled = function () {\n    return this.inspect().state === \"fulfilled\";\n};\n\n/**\n * @returns whether the given object is a rejected promise.\n */\nQ.isRejected = isRejected;\nfunction isRejected(object) {\n    return isPromise(object) && object.inspect().state === \"rejected\";\n}\n\nPromise.prototype.isRejected = function () {\n    return this.inspect().state === \"rejected\";\n};\n\n//// BEGIN UNHANDLED REJECTION TRACKING\n\n// This promise library consumes exceptions thrown in handlers so they can be\n// handled by a subsequent promise.  The exceptions get added to this array when\n// they are created, and removed when they are handled.  Note that in ES6 or\n// shimmed environments, this would naturally be a `Set`.\nvar unhandledReasons = [];\nvar unhandledRejections = [];\nvar trackUnhandledRejections = true;\n\nfunction resetUnhandledRejections() {\n    unhandledReasons.length = 0;\n    unhandledRejections.length = 0;\n\n    if (!trackUnhandledRejections) {\n        trackUnhandledRejections = true;\n    }\n}\n\nfunction trackRejection(promise, reason) {\n    if (!trackUnhandledRejections) {\n        return;\n    }\n\n    unhandledRejections.push(promise);\n    if (reason && typeof reason.stack !== \"undefined\") {\n        unhandledReasons.push(reason.stack);\n    } else {\n        unhandledReasons.push(\"(no stack) \" + reason);\n    }\n}\n\nfunction untrackRejection(promise) {\n    if (!trackUnhandledRejections) {\n        return;\n    }\n\n    var at = array_indexOf(unhandledRejections, promise);\n    if (at !== -1) {\n        unhandledRejections.splice(at, 1);\n        unhandledReasons.splice(at, 1);\n    }\n}\n\nQ.resetUnhandledRejections = resetUnhandledRejections;\n\nQ.getUnhandledReasons = function () {\n    // Make a copy so that consumers can't interfere with our internal state.\n    return unhandledReasons.slice();\n};\n\nQ.stopUnhandledRejectionTracking = function () {\n    resetUnhandledRejections();\n    trackUnhandledRejections = false;\n};\n\nresetUnhandledRejections();\n\n//// END UNHANDLED REJECTION TRACKING\n\n/**\n * Constructs a rejected promise.\n * @param reason value describing the failure\n */\nQ.reject = reject;\nfunction reject(reason) {\n    var rejection = Promise({\n        \"when\": function (rejected) {\n            // note that the error has been handled\n            if (rejected) {\n                untrackRejection(this);\n            }\n            return rejected ? rejected(reason) : this;\n        }\n    }, function fallback() {\n        return this;\n    }, function inspect() {\n        return { state: \"rejected\", reason: reason };\n    });\n\n    // Note that the reason has not been handled.\n    trackRejection(rejection, reason);\n\n    return rejection;\n}\n\n/**\n * Constructs a fulfilled promise for an immediate reference.\n * @param value immediate reference\n */\nQ.fulfill = fulfill;\nfunction fulfill(value) {\n    return Promise({\n        \"when\": function () {\n            return value;\n        },\n        \"get\": function (name) {\n            return value[name];\n        },\n        \"set\": function (name, rhs) {\n            value[name] = rhs;\n        },\n        \"delete\": function (name) {\n            delete value[name];\n        },\n        \"post\": function (name, args) {\n            // Mark Miller proposes that post with no name should apply a\n            // promised function.\n            if (name === null || name === void 0) {\n                return value.apply(void 0, args);\n            } else {\n                return value[name].apply(value, args);\n            }\n        },\n        \"apply\": function (thisp, args) {\n            return value.apply(thisp, args);\n        },\n        \"keys\": function () {\n            return object_keys(value);\n        }\n    }, void 0, function inspect() {\n        return { state: \"fulfilled\", value: value };\n    });\n}\n\n/**\n * Converts thenables to Q promises.\n * @param promise thenable promise\n * @returns a Q promise\n */\nfunction coerce(promise) {\n    var deferred = defer();\n    nextTick(function () {\n        try {\n            promise.then(deferred.resolve, deferred.reject, deferred.notify);\n        } catch (exception) {\n            deferred.reject(exception);\n        }\n    });\n    return deferred.promise;\n}\n\n/**\n * Annotates an object such that it will never be\n * transferred away from this process over any promise\n * communication channel.\n * @param object\n * @returns promise a wrapping of that object that\n * additionally responds to the \"isDef\" message\n * without a rejection.\n */\nQ.master = master;\nfunction master(object) {\n    return Promise({\n        \"isDef\": function () {}\n    }, function fallback(op, args) {\n        return dispatch(object, op, args);\n    }, function () {\n        return Q(object).inspect();\n    });\n}\n\n/**\n * Spreads the values of a promised array of arguments into the\n * fulfillment callback.\n * @param fulfilled callback that receives variadic arguments from the\n * promised array\n * @param rejected callback that receives the exception if the promise\n * is rejected.\n * @returns a promise for the return value or thrown exception of\n * either callback.\n */\nQ.spread = spread;\nfunction spread(value, fulfilled, rejected) {\n    return Q(value).spread(fulfilled, rejected);\n}\n\nPromise.prototype.spread = function (fulfilled, rejected) {\n    return this.all().then(function (array) {\n        return fulfilled.apply(void 0, array);\n    }, rejected);\n};\n\n/**\n * The async function is a decorator for generator functions, turning\n * them into asynchronous generators.  Although generators are only part\n * of the newest ECMAScript 6 drafts, this code does not cause syntax\n * errors in older engines.  This code should continue to work and will\n * in fact improve over time as the language improves.\n *\n * ES6 generators are currently part of V8 version 3.19 with the\n * --harmony-generators runtime flag enabled.  SpiderMonkey has had them\n * for longer, but under an older Python-inspired form.  This function\n * works on both kinds of generators.\n *\n * Decorates a generator function such that:\n *  - it may yield promises\n *  - execution will continue when that promise is fulfilled\n *  - the value of the yield expression will be the fulfilled value\n *  - it returns a promise for the return value (when the generator\n *    stops iterating)\n *  - the decorated function returns a promise for the return value\n *    of the generator or the first rejected promise among those\n *    yielded.\n *  - if an error is thrown in the generator, it propagates through\n *    every following yield until it is caught, or until it escapes\n *    the generator function altogether, and is translated into a\n *    rejection for the promise returned by the decorated generator.\n */\nQ.async = async;\nfunction async(makeGenerator) {\n    return function () {\n        // when verb is \"send\", arg is a value\n        // when verb is \"throw\", arg is an exception\n        function continuer(verb, arg) {\n            var result;\n\n            // Until V8 3.19 / Chromium 29 is released, SpiderMonkey is the only\n            // engine that has a deployed base of browsers that support generators.\n            // However, SM's generators use the Python-inspired semantics of\n            // outdated ES6 drafts.  We would like to support ES6, but we'd also\n            // like to make it possible to use generators in deployed browsers, so\n            // we also support Python-style generators.  At some point we can remove\n            // this block.\n\n            if (typeof StopIteration === \"undefined\") {\n                // ES6 Generators\n                try {\n                    result = generator[verb](arg);\n                } catch (exception) {\n                    return reject(exception);\n                }\n                if (result.done) {\n                    return Q(result.value);\n                } else {\n                    return when(result.value, callback, errback);\n                }\n            } else {\n                // SpiderMonkey Generators\n                // FIXME: Remove this case when SM does ES6 generators.\n                try {\n                    result = generator[verb](arg);\n                } catch (exception) {\n                    if (isStopIteration(exception)) {\n                        return Q(exception.value);\n                    } else {\n                        return reject(exception);\n                    }\n                }\n                return when(result, callback, errback);\n            }\n        }\n        var generator = makeGenerator.apply(this, arguments);\n        var callback = continuer.bind(continuer, \"next\");\n        var errback = continuer.bind(continuer, \"throw\");\n        return callback();\n    };\n}\n\n/**\n * The spawn function is a small wrapper around async that immediately\n * calls the generator and also ends the promise chain, so that any\n * unhandled errors are thrown instead of forwarded to the error\n * handler. This is useful because it's extremely common to run\n * generators at the top-level to work with libraries.\n */\nQ.spawn = spawn;\nfunction spawn(makeGenerator) {\n    Q.done(Q.async(makeGenerator)());\n}\n\n// FIXME: Remove this interface once ES6 generators are in SpiderMonkey.\n/**\n * Throws a ReturnValue exception to stop an asynchronous generator.\n *\n * This interface is a stop-gap measure to support generator return\n * values in older Firefox/SpiderMonkey.  In browsers that support ES6\n * generators like Chromium 29, just use \"return\" in your generator\n * functions.\n *\n * @param value the return value for the surrounding generator\n * @throws ReturnValue exception with the value.\n * @example\n * // ES6 style\n * Q.async(function* () {\n *      var foo = yield getFooPromise();\n *      var bar = yield getBarPromise();\n *      return foo + bar;\n * })\n * // Older SpiderMonkey style\n * Q.async(function () {\n *      var foo = yield getFooPromise();\n *      var bar = yield getBarPromise();\n *      Q.return(foo + bar);\n * })\n */\nQ[\"return\"] = _return;\nfunction _return(value) {\n    throw new QReturnValue(value);\n}\n\n/**\n * The promised function decorator ensures that any promise arguments\n * are settled and passed as values (`this` is also settled and passed\n * as a value).  It will also ensure that the result of a function is\n * always a promise.\n *\n * @example\n * var add = Q.promised(function (a, b) {\n *     return a + b;\n * });\n * add(Q(a), Q(B));\n *\n * @param {function} callback The function to decorate\n * @returns {function} a function that has been decorated.\n */\nQ.promised = promised;\nfunction promised(callback) {\n    return function () {\n        return spread([this, all(arguments)], function (self, args) {\n            return callback.apply(self, args);\n        });\n    };\n}\n\n/**\n * sends a message to a value in a future turn\n * @param object* the recipient\n * @param op the name of the message operation, e.g., \"when\",\n * @param args further arguments to be forwarded to the operation\n * @returns result {Promise} a promise for the result of the operation\n */\nQ.dispatch = dispatch;\nfunction dispatch(object, op, args) {\n    return Q(object).dispatch(op, args);\n}\n\nPromise.prototype.dispatch = function (op, args) {\n    var self = this;\n    var deferred = defer();\n    nextTick(function () {\n        self.promiseDispatch(deferred.resolve, op, args);\n    });\n    return deferred.promise;\n};\n\n/**\n * Gets the value of a property in a future turn.\n * @param object    promise or immediate reference for target object\n * @param name      name of property to get\n * @return promise for the property value\n */\nQ.get = function (object, key) {\n    return Q(object).dispatch(\"get\", [key]);\n};\n\nPromise.prototype.get = function (key) {\n    return this.dispatch(\"get\", [key]);\n};\n\n/**\n * Sets the value of a property in a future turn.\n * @param object    promise or immediate reference for object object\n * @param name      name of property to set\n * @param value     new value of property\n * @return promise for the return value\n */\nQ.set = function (object, key, value) {\n    return Q(object).dispatch(\"set\", [key, value]);\n};\n\nPromise.prototype.set = function (key, value) {\n    return this.dispatch(\"set\", [key, value]);\n};\n\n/**\n * Deletes a property in a future turn.\n * @param object    promise or immediate reference for target object\n * @param name      name of property to delete\n * @return promise for the return value\n */\nQ.del = // XXX legacy\nQ[\"delete\"] = function (object, key) {\n    return Q(object).dispatch(\"delete\", [key]);\n};\n\nPromise.prototype.del = // XXX legacy\nPromise.prototype[\"delete\"] = function (key) {\n    return this.dispatch(\"delete\", [key]);\n};\n\n/**\n * Invokes a method in a future turn.\n * @param object    promise or immediate reference for target object\n * @param name      name of method to invoke\n * @param value     a value to post, typically an array of\n *                  invocation arguments for promises that\n *                  are ultimately backed with `resolve` values,\n *                  as opposed to those backed with URLs\n *                  wherein the posted value can be any\n *                  JSON serializable object.\n * @return promise for the return value\n */\n// bound locally because it is used by other methods\nQ.mapply = // XXX As proposed by \"Redsandro\"\nQ.post = function (object, name, args) {\n    return Q(object).dispatch(\"post\", [name, args]);\n};\n\nPromise.prototype.mapply = // XXX As proposed by \"Redsandro\"\nPromise.prototype.post = function (name, args) {\n    return this.dispatch(\"post\", [name, args]);\n};\n\n/**\n * Invokes a method in a future turn.\n * @param object    promise or immediate reference for target object\n * @param name      name of method to invoke\n * @param ...args   array of invocation arguments\n * @return promise for the return value\n */\nQ.send = // XXX Mark Miller's proposed parlance\nQ.mcall = // XXX As proposed by \"Redsandro\"\nQ.invoke = function (object, name /*...args*/) {\n    return Q(object).dispatch(\"post\", [name, array_slice(arguments, 2)]);\n};\n\nPromise.prototype.send = // XXX Mark Miller's proposed parlance\nPromise.prototype.mcall = // XXX As proposed by \"Redsandro\"\nPromise.prototype.invoke = function (name /*...args*/) {\n    return this.dispatch(\"post\", [name, array_slice(arguments, 1)]);\n};\n\n/**\n * Applies the promised function in a future turn.\n * @param object    promise or immediate reference for target function\n * @param args      array of application arguments\n */\nQ.fapply = function (object, args) {\n    return Q(object).dispatch(\"apply\", [void 0, args]);\n};\n\nPromise.prototype.fapply = function (args) {\n    return this.dispatch(\"apply\", [void 0, args]);\n};\n\n/**\n * Calls the promised function in a future turn.\n * @param object    promise or immediate reference for target function\n * @param ...args   array of application arguments\n */\nQ[\"try\"] =\nQ.fcall = function (object /* ...args*/) {\n    return Q(object).dispatch(\"apply\", [void 0, array_slice(arguments, 1)]);\n};\n\nPromise.prototype.fcall = function (/*...args*/) {\n    return this.dispatch(\"apply\", [void 0, array_slice(arguments)]);\n};\n\n/**\n * Binds the promised function, transforming return values into a fulfilled\n * promise and thrown errors into a rejected one.\n * @param object    promise or immediate reference for target function\n * @param ...args   array of application arguments\n */\nQ.fbind = function (object /*...args*/) {\n    var promise = Q(object);\n    var args = array_slice(arguments, 1);\n    return function fbound() {\n        return promise.dispatch(\"apply\", [\n            this,\n            args.concat(array_slice(arguments))\n        ]);\n    };\n};\nPromise.prototype.fbind = function (/*...args*/) {\n    var promise = this;\n    var args = array_slice(arguments);\n    return function fbound() {\n        return promise.dispatch(\"apply\", [\n            this,\n            args.concat(array_slice(arguments))\n        ]);\n    };\n};\n\n/**\n * Requests the names of the owned properties of a promised\n * object in a future turn.\n * @param object    promise or immediate reference for target object\n * @return promise for the keys of the eventually settled object\n */\nQ.keys = function (object) {\n    return Q(object).dispatch(\"keys\", []);\n};\n\nPromise.prototype.keys = function () {\n    return this.dispatch(\"keys\", []);\n};\n\n/**\n * Turns an array of promises into a promise for an array.  If any of\n * the promises gets rejected, the whole array is rejected immediately.\n * @param {Array*} an array (or promise for an array) of values (or\n * promises for values)\n * @returns a promise for an array of the corresponding values\n */\n// By Mark Miller\n// http://wiki.ecmascript.org/doku.php?id=strawman:concurrency&rev=1308776521#allfulfilled\nQ.all = all;\nfunction all(promises) {\n    return when(promises, function (promises) {\n        var countDown = 0;\n        var deferred = defer();\n        array_reduce(promises, function (undefined, promise, index) {\n            var snapshot;\n            if (\n                isPromise(promise) &&\n                (snapshot = promise.inspect()).state === \"fulfilled\"\n            ) {\n                promises[index] = snapshot.value;\n            } else {\n                ++countDown;\n                when(\n                    promise,\n                    function (value) {\n                        promises[index] = value;\n                        if (--countDown === 0) {\n                            deferred.resolve(promises);\n                        }\n                    },\n                    deferred.reject,\n                    function (progress) {\n                        deferred.notify({ index: index, value: progress });\n                    }\n                );\n            }\n        }, void 0);\n        if (countDown === 0) {\n            deferred.resolve(promises);\n        }\n        return deferred.promise;\n    });\n}\n\nPromise.prototype.all = function () {\n    return all(this);\n};\n\n/**\n * Waits for all promises to be settled, either fulfilled or\n * rejected.  This is distinct from `all` since that would stop\n * waiting at the first rejection.  The promise returned by\n * `allResolved` will never be rejected.\n * @param promises a promise for an array (or an array) of promises\n * (or values)\n * @return a promise for an array of promises\n */\nQ.allResolved = deprecate(allResolved, \"allResolved\", \"allSettled\");\nfunction allResolved(promises) {\n    return when(promises, function (promises) {\n        promises = array_map(promises, Q);\n        return when(all(array_map(promises, function (promise) {\n            return when(promise, noop, noop);\n        })), function () {\n            return promises;\n        });\n    });\n}\n\nPromise.prototype.allResolved = function () {\n    return allResolved(this);\n};\n\n/**\n * @see Promise#allSettled\n */\nQ.allSettled = allSettled;\nfunction allSettled(promises) {\n    return Q(promises).allSettled();\n}\n\n/**\n * Turns an array of promises into a promise for an array of their states (as\n * returned by `inspect`) when they have all settled.\n * @param {Array[Any*]} values an array (or promise for an array) of values (or\n * promises for values)\n * @returns {Array[State]} an array of states for the respective values.\n */\nPromise.prototype.allSettled = function () {\n    return this.then(function (promises) {\n        return all(array_map(promises, function (promise) {\n            promise = Q(promise);\n            function regardless() {\n                return promise.inspect();\n            }\n            return promise.then(regardless, regardless);\n        }));\n    });\n};\n\n/**\n * Captures the failure of a promise, giving an oportunity to recover\n * with a callback.  If the given promise is fulfilled, the returned\n * promise is fulfilled.\n * @param {Any*} promise for something\n * @param {Function} callback to fulfill the returned promise if the\n * given promise is rejected\n * @returns a promise for the return value of the callback\n */\nQ.fail = // XXX legacy\nQ[\"catch\"] = function (object, rejected) {\n    return Q(object).then(void 0, rejected);\n};\n\nPromise.prototype.fail = // XXX legacy\nPromise.prototype[\"catch\"] = function (rejected) {\n    return this.then(void 0, rejected);\n};\n\n/**\n * Attaches a listener that can respond to progress notifications from a\n * promise's originating deferred. This listener receives the exact arguments\n * passed to ``deferred.notify``.\n * @param {Any*} promise for something\n * @param {Function} callback to receive any progress notifications\n * @returns the given promise, unchanged\n */\nQ.progress = progress;\nfunction progress(object, progressed) {\n    return Q(object).then(void 0, void 0, progressed);\n}\n\nPromise.prototype.progress = function (progressed) {\n    return this.then(void 0, void 0, progressed);\n};\n\n/**\n * Provides an opportunity to observe the settling of a promise,\n * regardless of whether the promise is fulfilled or rejected.  Forwards\n * the resolution to the returned promise when the callback is done.\n * The callback can return a promise to defer completion.\n * @param {Any*} promise\n * @param {Function} callback to observe the resolution of the given\n * promise, takes no arguments.\n * @returns a promise for the resolution of the given promise when\n * ``fin`` is done.\n */\nQ.fin = // XXX legacy\nQ[\"finally\"] = function (object, callback) {\n    return Q(object)[\"finally\"](callback);\n};\n\nPromise.prototype.fin = // XXX legacy\nPromise.prototype[\"finally\"] = function (callback) {\n    callback = Q(callback);\n    return this.then(function (value) {\n        return callback.fcall().then(function () {\n            return value;\n        });\n    }, function (reason) {\n        // TODO attempt to recycle the rejection with \"this\".\n        return callback.fcall().then(function () {\n            throw reason;\n        });\n    });\n};\n\n/**\n * Terminates a chain of promises, forcing rejections to be\n * thrown as exceptions.\n * @param {Any*} promise at the end of a chain of promises\n * @returns nothing\n */\nQ.done = function (object, fulfilled, rejected, progress) {\n    return Q(object).done(fulfilled, rejected, progress);\n};\n\nPromise.prototype.done = function (fulfilled, rejected, progress) {\n    var onUnhandledError = function (error) {\n        // forward to a future turn so that ``when``\n        // does not catch it and turn it into a rejection.\n        nextTick(function () {\n            makeStackTraceLong(error, promise);\n            if (Q.onerror) {\n                Q.onerror(error);\n            } else {\n                throw error;\n            }\n        });\n    };\n\n    // Avoid unnecessary `nextTick`ing via an unnecessary `when`.\n    var promise = fulfilled || rejected || progress ?\n        this.then(fulfilled, rejected, progress) :\n        this;\n\n    if (typeof process === \"object\" && process && process.domain) {\n        onUnhandledError = process.domain.bind(onUnhandledError);\n    }\n\n    promise.then(void 0, onUnhandledError);\n};\n\n/**\n * Causes a promise to be rejected if it does not get fulfilled before\n * some milliseconds time out.\n * @param {Any*} promise\n * @param {Number} milliseconds timeout\n * @param {Any*} custom error message or Error object (optional)\n * @returns a promise for the resolution of the given promise if it is\n * fulfilled before the timeout, otherwise rejected.\n */\nQ.timeout = function (object, ms, error) {\n    return Q(object).timeout(ms, error);\n};\n\nPromise.prototype.timeout = function (ms, error) {\n    var deferred = defer();\n    var timeoutId = setTimeout(function () {\n        if (!error || \"string\" === typeof error) {\n            error = new Error(error || \"Timed out after \" + ms + \" ms\");\n            error.code = \"ETIMEDOUT\";\n        }\n        deferred.reject(error);\n    }, ms);\n\n    this.then(function (value) {\n        clearTimeout(timeoutId);\n        deferred.resolve(value);\n    }, function (exception) {\n        clearTimeout(timeoutId);\n        deferred.reject(exception);\n    }, deferred.notify);\n\n    return deferred.promise;\n};\n\n/**\n * Returns a promise for the given value (or promised value), some\n * milliseconds after it resolved. Passes rejections immediately.\n * @param {Any*} promise\n * @param {Number} milliseconds\n * @returns a promise for the resolution of the given promise after milliseconds\n * time has elapsed since the resolution of the given promise.\n * If the given promise rejects, that is passed immediately.\n */\nQ.delay = function (object, timeout) {\n    if (timeout === void 0) {\n        timeout = object;\n        object = void 0;\n    }\n    return Q(object).delay(timeout);\n};\n\nPromise.prototype.delay = function (timeout) {\n    return this.then(function (value) {\n        var deferred = defer();\n        setTimeout(function () {\n            deferred.resolve(value);\n        }, timeout);\n        return deferred.promise;\n    });\n};\n\n/**\n * Passes a continuation to a Node function, which is called with the given\n * arguments provided as an array, and returns a promise.\n *\n *      Q.nfapply(FS.readFile, [__filename])\n *      .then(function (content) {\n *      })\n *\n */\nQ.nfapply = function (callback, args) {\n    return Q(callback).nfapply(args);\n};\n\nPromise.prototype.nfapply = function (args) {\n    var deferred = defer();\n    var nodeArgs = array_slice(args);\n    nodeArgs.push(deferred.makeNodeResolver());\n    this.fapply(nodeArgs).fail(deferred.reject);\n    return deferred.promise;\n};\n\n/**\n * Passes a continuation to a Node function, which is called with the given\n * arguments provided individually, and returns a promise.\n * @example\n * Q.nfcall(FS.readFile, __filename)\n * .then(function (content) {\n * })\n *\n */\nQ.nfcall = function (callback /*...args*/) {\n    var args = array_slice(arguments, 1);\n    return Q(callback).nfapply(args);\n};\n\nPromise.prototype.nfcall = function (/*...args*/) {\n    var nodeArgs = array_slice(arguments);\n    var deferred = defer();\n    nodeArgs.push(deferred.makeNodeResolver());\n    this.fapply(nodeArgs).fail(deferred.reject);\n    return deferred.promise;\n};\n\n/**\n * Wraps a NodeJS continuation passing function and returns an equivalent\n * version that returns a promise.\n * @example\n * Q.nfbind(FS.readFile, __filename)(\"utf-8\")\n * .then(console.log)\n * .done()\n */\nQ.nfbind =\nQ.denodeify = function (callback /*...args*/) {\n    var baseArgs = array_slice(arguments, 1);\n    return function () {\n        var nodeArgs = baseArgs.concat(array_slice(arguments));\n        var deferred = defer();\n        nodeArgs.push(deferred.makeNodeResolver());\n        Q(callback).fapply(nodeArgs).fail(deferred.reject);\n        return deferred.promise;\n    };\n};\n\nPromise.prototype.nfbind =\nPromise.prototype.denodeify = function (/*...args*/) {\n    var args = array_slice(arguments);\n    args.unshift(this);\n    return Q.denodeify.apply(void 0, args);\n};\n\nQ.nbind = function (callback, thisp /*...args*/) {\n    var baseArgs = array_slice(arguments, 2);\n    return function () {\n        var nodeArgs = baseArgs.concat(array_slice(arguments));\n        var deferred = defer();\n        nodeArgs.push(deferred.makeNodeResolver());\n        function bound() {\n            return callback.apply(thisp, arguments);\n        }\n        Q(bound).fapply(nodeArgs).fail(deferred.reject);\n        return deferred.promise;\n    };\n};\n\nPromise.prototype.nbind = function (/*thisp, ...args*/) {\n    var args = array_slice(arguments, 0);\n    args.unshift(this);\n    return Q.nbind.apply(void 0, args);\n};\n\n/**\n * Calls a method of a Node-style object that accepts a Node-style\n * callback with a given array of arguments, plus a provided callback.\n * @param object an object that has the named method\n * @param {String} name name of the method of object\n * @param {Array} args arguments to pass to the method; the callback\n * will be provided by Q and appended to these arguments.\n * @returns a promise for the value or error\n */\nQ.nmapply = // XXX As proposed by \"Redsandro\"\nQ.npost = function (object, name, args) {\n    return Q(object).npost(name, args);\n};\n\nPromise.prototype.nmapply = // XXX As proposed by \"Redsandro\"\nPromise.prototype.npost = function (name, args) {\n    var nodeArgs = array_slice(args || []);\n    var deferred = defer();\n    nodeArgs.push(deferred.makeNodeResolver());\n    this.dispatch(\"post\", [name, nodeArgs]).fail(deferred.reject);\n    return deferred.promise;\n};\n\n/**\n * Calls a method of a Node-style object that accepts a Node-style\n * callback, forwarding the given variadic arguments, plus a provided\n * callback argument.\n * @param object an object that has the named method\n * @param {String} name name of the method of object\n * @param ...args arguments to pass to the method; the callback will\n * be provided by Q and appended to these arguments.\n * @returns a promise for the value or error\n */\nQ.nsend = // XXX Based on Mark Miller's proposed \"send\"\nQ.nmcall = // XXX Based on \"Redsandro's\" proposal\nQ.ninvoke = function (object, name /*...args*/) {\n    var nodeArgs = array_slice(arguments, 2);\n    var deferred = defer();\n    nodeArgs.push(deferred.makeNodeResolver());\n    Q(object).dispatch(\"post\", [name, nodeArgs]).fail(deferred.reject);\n    return deferred.promise;\n};\n\nPromise.prototype.nsend = // XXX Based on Mark Miller's proposed \"send\"\nPromise.prototype.nmcall = // XXX Based on \"Redsandro's\" proposal\nPromise.prototype.ninvoke = function (name /*...args*/) {\n    var nodeArgs = array_slice(arguments, 1);\n    var deferred = defer();\n    nodeArgs.push(deferred.makeNodeResolver());\n    this.dispatch(\"post\", [name, nodeArgs]).fail(deferred.reject);\n    return deferred.promise;\n};\n\n/**\n * If a function would like to support both Node continuation-passing-style and\n * promise-returning-style, it can end its internal promise chain with\n * `nodeify(nodeback)`, forwarding the optional nodeback argument.  If the user\n * elects to use a nodeback, the result will be sent there.  If they do not\n * pass a nodeback, they will receive the result promise.\n * @param object a result (or a promise for a result)\n * @param {Function} nodeback a Node.js-style callback\n * @returns either the promise or nothing\n */\nQ.nodeify = nodeify;\nfunction nodeify(object, nodeback) {\n    return Q(object).nodeify(nodeback);\n}\n\nPromise.prototype.nodeify = function (nodeback) {\n    if (nodeback) {\n        this.then(function (value) {\n            nextTick(function () {\n                nodeback(null, value);\n            });\n        }, function (error) {\n            nextTick(function () {\n                nodeback(error);\n            });\n        });\n    } else {\n        return this;\n    }\n};\n\n// All code before this point will be filtered from stack traces.\nvar qEndingLine = captureLine();\n\nreturn Q;\n\n});\n"
  },
  {
    "path": "examples/slideshow.html",
    "content": "<!DOCTYPE html>\n<html class=\"dark\">\n\n<head>\n  <meta charset=\"utf-8\" />\n  <title>smartcrop.js slideshow</title>\n  <link rel=\"stylesheet\" href=\"style.css\" />\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n  <meta property=\"og:image\" content=\"http://29a.ch/sandbox/2014/smartcrop/examples/images/slideshow/0.jpg\" />\n</head>\n\n<body>\n  <h1>smartcrop.js slideshow</h1>\n  <p>\n    <a href=\"https://github.com/jwagner/smartcrop.js\">smartcrop.js</a> is a\n    content aware image cropping library. On this page you can see how it can\n    be used to automatically pick crops to create a\n    <a href=\"http://en.wikipedia.org/wiki/Ken_Burns_effect\">Ken Burns</a>\n    effect on images.\n  </p>\n  <p>\n    You can learn more about smartcrop.js on its\n    <a href=\"https://github.com/jwagner/smartcrop.js/\">github page</a>.\n  </p>\n\n  <div id=\"prev-slide\"></div>\n  <div id=\"slide\">loading, this can take a little while...</div>\n  <p>\n    All the images are my own, you can find them and their license on my\n    <a href=\"https://www.flickr.com/photos/80225884@N06/\">flickr stream</a>.\n  </p>\n  <script src=\"jquery.js\"></script>\n  <script src=\"underscore.js\"></script>\n  <script src=\"q.js\"></script>\n  <script src=\"../smartcrop.js\"></script>\n  <script src=\"slideshow.js\"></script>\n  <script src=\"/a.js\" async></script>\n</body>\n\n</html>"
  },
  {
    "path": "examples/slideshow.js",
    "content": "/* global jQuery, Q */\njQuery(function($) {\n  var transitionend =\n    'transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd';\n\n  var slide = $('#slide');\n  var prevSlide = $('#prev-slide');\n  var images = [];\n  var width = slide.width();\n  var height = slide.height();\n\n  for (var i = 0; i < 8; i++) {\n    images.push({ url: 'images/slideshow/' + i + '.jpg' });\n  }\n\n  function loadImage(src) {\n    var d = Q.defer();\n    var i = new Image();\n\n    i.onload = function() {\n      d.resolve(i);\n    };\n    i.onerror = function(e) {\n      d.reject(e);\n    };\n    i.src = src;\n    return d.promise;\n  }\n\n  function smartcrop(img, options) {\n    var d = Q.defer();\n    smartcrop.crop(img, options, d.resolve.bind(d));\n    return d.promise;\n  }\n\n  function slideShow(images) {\n    var i = 0;\n\n    function next() {\n      showSlide(images[i], next);\n      i = (i + 1) % images.length;\n    }\n\n    images = _.chain(images)\n      .shuffle()\n      .head(10)\n      .value();\n\n    Q.all(\n      images.map(function(i) {\n        return loadImage(i.url).then(function(img) {\n          i.img = img;\n          var options = {\n            width: width * 0.1,\n            height: height * 0.1,\n            ruleOfThirds: false\n          };\n          return Q.all([\n            smartcrop(\n              img,\n              _.extend({ maxScale: 0.8, minScale: 0.7 }, options)\n            ).then(function(result) {\n              i.from = result;\n            }),\n            smartcrop(img, _.extend({ minScale: 1 }, options)).then(function(\n              result\n            ) {\n              i.to = result;\n            })\n          ]);\n        });\n      })\n    ).then(next);\n  }\n\n  function showSlide(image, done) {\n    var img = image.img;\n    function transform(crop) {\n      var s = width / crop.width;\n      var x = crop.x;\n      var y = crop.y;\n      var t = 'scale(' + s + ') translate(-' + x + 'px, -' + y + 'px)';\n      return {\n        '-webkit-transform': t,\n        transform: t,\n        '-webkit-transform-origin': '0 0',\n        'transform-origin': '0 0'\n      };\n    }\n\n    // zooming out usually works better, but some change is good too\n    var from, to;\n    if (\n      (image.from.topCrop.score.total + 0.1) * 1.002 >\n      image.to.topCrop.score.total + 0.1\n    ) {\n      from = image.from;\n      to = image.to;\n    } else {\n      from = image.to;\n      to = image.from;\n    }\n    window.from = from;\n    window.to = to;\n    var last = $('img', slide);\n    if (last[0]) {\n      prevSlide.empty().append(last.remove());\n      last.width();\n      last.css('opacity', '0');\n    }\n    slide.empty().append(img);\n    $(img)\n      .css(transform(from.topCrop))\n      .css('opacity', 1)\n      .width(); // reflow\n    $(img)\n      .on(transitionend, _.once(done))\n      .css(transform(to.topCrop));\n\n    img.onerror = done;\n    img.src = image.url;\n  }\n\n  slideShow(images);\n});\n"
  },
  {
    "path": "examples/smartcrop-debug.js",
    "content": "// eslint-disable-next-line no-unused-vars\nfunction debugDraw(result, showCrop) {\n  var topCrop = result.debugTopCrop;\n  var options = result.debugOptions;\n  var output = result.debugOutput;\n  var canvas = document.createElement('canvas');\n  canvas.width = output.width;\n  canvas.height = output.height;\n  var ctx = canvas.getContext('2d');\n  ctx.fillStyle = 'rgba(255, 0, 0, 0.1)';\n  ctx.fillRect(topCrop.x, topCrop.y, topCrop.width, topCrop.height);\n  var debugOutput = ctx.createImageData(output.width, output.height);\n  debugOutput.data.set(output.data);\n  for (var y = 0; y < output.height; y++) {\n    for (var x = 0; x < output.width; x++) {\n      var p = (y * output.width + x) * 4;\n      if (showCrop) {\n        var I = smartcrop.importance(options, topCrop, x, y);\n        if (I > 0) {\n          debugOutput.data[p + 1] += I * 32;\n        }\n\n        if (I < 0) {\n          debugOutput.data[p] += I * -64;\n        }\n      }\n      // visualize alpha (boost) as magenta\n      var boost = debugOutput.data[p + 3] / 2;\n      debugOutput.data[p] += boost;\n      debugOutput.data[p + 2] += boost;\n      debugOutput.data[p + 3] = 255;\n    }\n  }\n\n  ctx.putImageData(debugOutput, 0, 0);\n  ctx.strokeStyle = 'rgba(255, 0, 0, 0.8)';\n  if (showCrop) {\n    ctx.strokeRect(topCrop.x, topCrop.y, topCrop.width, topCrop.height);\n  }\n  if (options.boost) {\n    ctx.strokeStyle = 'rgba(255, 255, 255, 1.0)';\n    for (var i = 0; i < options.boost.length; i++) {\n      var b = options.boost[i];\n      ctx.strokeRect(b.x, b.y, b.width, b.height);\n    }\n  }\n  return canvas;\n}\n"
  },
  {
    "path": "examples/style.css",
    "content": "html {\n  width: 100%;\n  min-height: 100%;\n}\nbody {\n  font-family: sans-serif;\n  max-width: 1400px;\n  padding: 8px;\n  margin: auto;\n}\n.dark body {\n  max-width: 1240px;\n}\n.dark {\n  background: #111;\n  color: #888;\n}\n.dark a {\n  color: #8af;\n}\n\nh1 {\n  font-weight: normal;\n}\n\np {\n  max-width: 900px;\n}\ninput[type='file'] {\n  display: block;\n}\ninput[type='range'] {\n  width: 300px;\n}\n\nimg,\ncanvas {\n  padding: 8px;\n  box-sizing: border-box;\n  max-width: 100%;\n  margin: auto;\n}\n\n.output {\n  width: 50%;\n  float: left;\n}\n\n.testsuite img {\n  max-width: 40%;\n}\n.testsuite > div {\n  margin-top: 2em;\n}\n\n.testsuite > .testsuite-image-title {\n  margin-top: 0;\n}\n\n.sidebar {\n  width: 50%;\n  float: left;\n  height: 600px;\n}\n\n#slide,\n#prev-slide {\n  max-width: 100%;\n  width: 1280px;\n  height: 720px;\n  overflow: hidden;\n}\n#slide {\n  background: #ccc;\n}\n#prev-slide {\n  position: absolute;\n  z-index: 1;\n}\n\n#prev-slide img {\n  transition: all 1s linear;\n  -webkit-transition: all 1s linear;\n  opacity: 0.9;\n  max-width: none;\n  padding: 0;\n  margin: 0;\n}\n\n#slide img {\n  transition: all 5s linear;\n  -webkit-transition: all 5s linear;\n  /*transition-delay: 1s;*/\n  /*-webkit-transition-delay: 1s; [> Safari <]*/\n  opacity: 1;\n  max-width: none;\n  padding: 0;\n  margin: 0;\n}\n\n.opencv-loading {\n  color: #666;\n  position: relative;\n}\n\n@keyframes spinner {\n  to {\n    transform: rotate(360deg);\n  }\n}\n\n.opencv-loading:after {\n  content: '';\n  box-sizing: border-box;\n  display: inline-block;\n  width: 1ex;\n  height: 1ex;\n  margin-left: 1em;\n  border-radius: 50%;\n  border: 2px solid #ccc;\n  border-top-color: #333;\n  animation: spinner 0.6s linear infinite;\n}\n\n.drop {\n  background: #eee;\n  padding: 1em;\n  margin-bottom: 2em;\n}\n"
  },
  {
    "path": "examples/testbed.html",
    "content": "<!DOCTYPE html>\n<html>\n\n<head>\n  <meta charset=\"utf-8\" />\n  <title>smartcrop.js testbed</title>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n  <link rel=\"stylesheet\" href=\"style.css\" />\n</head>\n\n<body>\n  <h1>smartcrop.js testbed</h1>\n  <p>\n    smartcrop.js is a content aware image cropping library. On this page you\n    can test it with your own images. You can learn more about the library on\n    it's <a href=\"https://github.com/jwagner/smartcrop.js/\">github page</a>.\n  </p>\n  <div>\n    <form>\n      <div class=\"drop\">\n        <h2>Drop images on this page to analyze them.</h2>\n        <input type=\"file\" name=\"file\" accept=\"image/*\" />\n      </div>\n      <label>Width\n        <div>\n          <input name=\"width\" type=\"range\" min=\"50\" max=\"500\" step=\"1\" value=\"250\" /><span class=\"value\">250</span>px\n        </div>\n      </label>\n      <label>Height\n        <div>\n          <input name=\"height\" type=\"range\" min=\"50\" max=\"500\" step=\"1\" value=\"250\" /><span class=\"value\">250</span>px\n        </div>\n      </label>\n      <label>minScale\n        <div>\n          <input name=\"minScale\" type=\"range\" min=\"0.5\" max=\"1.0\" step=\"0.1\" value=\"1\" /><span class=\"value\">1.0</span>\n        </div>\n      </label>\n      <p>\n        <label>Rule of thirds<input name=\"ruleOfThirds\" type=\"checkbox\" value=\"1\" checked /></label>\n      </p>\n      <p><strong>Face Detection</strong></p>\n      <div>\n        <label><input name=\"faceDetection\" type=\"radio\" value=\"off\" checked />Off</label>\n      </div>\n      <div>\n        <label><input name=\"faceDetection\" type=\"radio\" value=\"face-api\" />Use\n          <a href=\"https://github.com/vladmandic/face-api/\">face-api</a>\n          (tiny_face_detector model)\n        </label>\n      </div>\n      <div>\n        <label class=\"opencv-loading\"><input name=\"faceDetection\" type=\"radio\" value=\"opencv\" disabled />Use <a\n            href=\"https://opencv.org/\">opencv.js</a></label>\n      </div>\n    </form>\n  </div>\n  <div class=\"output\">\n    <canvas id=\"c\"></canvas>\n  </div>\n  <div class=\"sidebar\">\n    <div id=\"debug\"></div>\n    <h4>All Crops</h4>\n    <div class=\"crops\"></div>\n  </div>\n  <script src=\"jquery.js\"></script>\n  <script src=\"underscore.js\"></script>\n  <script src=\"../smartcrop.js\"></script>\n  <script src=\"smartcrop-debug.js\"></script>\n  <script src=\"face-api.js\"></script>\n  <script src=\"testbed.js\"></script>\n  <script async src=\"https://unpkg.com/opencv.js@1.2.1/opencv.js\"\n    integrity=\"sha384-ucXOxPgA5tSKdaZgFD+5C0lAJeavjW31veENhNvOwsTjgx8waDD0s1QcMdUxhlxk\" crossorigin=\"anonymous\"\n    onload=\"openCvReady()\"></script>\n  <p style=\"clear:both\">Example Photo by Makhmutova Dina on Unsplash</p>\n  <script src=\"/a.js\" async></script>\n</body>\n\n</html>"
  },
  {
    "path": "examples/testbed.js",
    "content": "(function() {\n  var canvas = $('canvas')[0];\n  var form = document.forms[0];\n  var ctx = canvas.getContext('2d');\n  var img;\n\n  $('html')\n    .on('dragover', function(e) {\n      e.preventDefault();\n      return false;\n    })\n    .on('drop', function(e) {\n      var files = e.originalEvent.dataTransfer.files;\n      handleFiles(files);\n      return false;\n    });\n\n  $('input[type=file]').change(function() {\n    handleFiles(this.files);\n  });\n\n  function handleFiles(files) {\n    if (files.length > 0) {\n      var file = files[0];\n      if (\n        typeof FileReader !== 'undefined' &&\n        file.type.indexOf('image') != -1\n      ) {\n        var reader = new FileReader();\n        // Note: addEventListener doesn't work in Google Chrome for this event\n        reader.onload = function(evt) {\n          load(evt.target.result);\n        };\n        reader.readAsDataURL(file);\n      }\n    }\n  }\n\n  load('images/unsplash/makhmutova-dina-1580313-unsplash.jpg');\n\n  $('input[type=range]').on(\n    'input',\n    _.debounce(function() {\n      $(this)\n        .next('.value')\n        .text($(this).val());\n      run();\n    }, 500)\n  );\n\n  $('input[type=radio], input[type=checkbox]').on(\n    'change',\n    _.debounce(function() {\n      run();\n    })\n  );\n\n  function load(src) {\n    img = new Image();\n    img.onload = function() {\n      run();\n    };\n    img.src = src;\n  }\n\n  function run() {\n    if (!img) return;\n    var options = {\n      width: form.width.value * 1,\n      height: form.height.value * 1,\n      minScale: form.minScale.value * 1,\n      ruleOfThirds: form.ruleOfThirds.checked,\n      debug: true\n    };\n\n    var faceDetection = $('input[name=faceDetection]:checked', form).val();\n    var analyzeOptions = analyze.bind(this, options);\n\n    switch (faceDetection) {\n    case 'opencv':\n      faceDetectionOpenCV(options, analyzeOptions);\n      break;\n    case 'face-api':\n      faceDetectionFaceAPI(options, analyzeOptions);\n      break;\n    default:\n      analyzeOptions();\n    }\n  }\n\n  function prescaleImage(image, maxDimension, callback) {\n    // tracking.js is very slow on big images so make sure the image is reasonably small\n    var width = image.naturalWidth || image.width;\n    var height = image.naturalHeight || image.height;\n    if (width < maxDimension && height < maxDimension)\n      return callback(image, 1);\n    var scale = Math.min(maxDimension / width, maxDimension / height);\n    var canvas = document.createElement('canvas');\n    canvas.width = ~~(width * scale);\n    canvas.height = ~~(height * scale);\n    canvas.getContext('2d').drawImage(image, 0, 0, canvas.width, canvas.height);\n    var result = document.createElement('img');\n    result.onload = function() {\n      callback(result, scale);\n    };\n    result.src = canvas.toDataURL();\n  }\n\n  var getFaceAPIDetector = _.memoize(function() {\n    return faceapi.nets.tinyFaceDetector.loadFromUri('face-api');\n  });\n\n  function faceDetectionFaceAPI(options, callback) {\n    getFaceAPIDetector()\n      .then(\n        function() {\n          return faceapi.tinyFaceDetector(img);\n        },\n        function(err) {\n          console.error(err);\n          alert('Could not load models');\n        }\n      )\n      .then(\n        function(faces) {\n          options.boost = faces.map(function(face) {\n            var box = face.box;\n            return {\n              x: box.x,\n              y: box.y,\n              width: box.width,\n              height: box.height,\n              weight: 1.0\n            };\n          });\n          callback(options);\n        },\n        function(err) {\n          console.error(err);\n          alert('could not detectAllFaces');\n        }\n      );\n  }\n\n  function faceDetectionOpenCV(options, callback) {\n    prescaleImage(img, 768, function(img, scale) {\n      var src = cv.imread(img);\n      var gray = new cv.Mat();\n      cv.cvtColor(src, gray, cv.COLOR_RGBA2GRAY, 0);\n      var faces = new cv.RectVector();\n      var faceCascade = new cv.CascadeClassifier();\n      // load pre-trained classifiers\n      faceCascade.load('haarcascade_frontalface_default.xml');\n      console.log(faceCascade);\n      // detect faces\n      var msize = new cv.Size(0, 0);\n      faceCascade.detectMultiScale(gray, faces, 1.1, 3, 0, msize, msize);\n      options.boost = [];\n      for (var i = 0; i < faces.size(); ++i) {\n        var face = faces.get(i);\n        options.boost.push({\n          x: face.x / scale,\n          y: face.y / scale,\n          width: face.width / scale,\n          height: face.height / scale,\n          weight: 1.0\n        });\n      }\n      src.delete();\n      gray.delete();\n      faceCascade.delete();\n      faces.delete();\n      callback(options);\n    });\n  }\n\n  function analyze(options) {\n    console.log('analyze', options);\n    smartcrop.crop(img, options, draw);\n  }\n\n  function draw(result) {\n    var selectedCrop = result.topCrop;\n    $('.crops')\n      .empty()\n      .append(\n        _.sortBy(result.crops, function(c) {\n          return -c.score.total;\n        }).map(function(crop) {\n          return $('<p>')\n            .text(\n              'Score: ' +\n                ~~(crop.score.total * 10000000) +\n                ', ' +\n                crop.x +\n                'x' +\n                crop.y\n            )\n            .hover(\n              function() {\n                drawCrop(crop);\n              },\n              function() {\n                drawCrop(selectedCrop);\n              }\n            )\n            .click(function() {\n              selectedCrop = crop;\n              drawCrop(selectedCrop);\n            })\n            .data('crop', crop);\n        })\n      );\n\n    drawCrop(selectedCrop);\n    $('#debug')\n      .empty()\n      .append(debugDraw(result, true));\n  }\n\n  function drawCrop(crop) {\n    canvas.width = img.width;\n    canvas.height = img.height;\n    ctx.drawImage(img, 0, 0);\n    ctx.strokeStyle = 'red';\n    ctx.lineWidth = 4;\n    ctx.strokeRect(crop.x, crop.y, crop.width, crop.height);\n  }\n\n  window.openCvReady = function() {\n    console.log('opencv code ready');\n    loadCascade(\n      'haarcascade_frontalface_default.xml',\n      'https://unpkg.com/opencv.js@1.2.1/tests/haarcascade_frontalface_default.xml',\n      function() {\n        console.log('opencv ready');\n        document.querySelector('.opencv-loading input').disabled = false;\n        document.querySelector('.opencv-loading').className = '';\n      }\n    );\n  };\n\n  function loadCascade(path, url, callback) {\n    var request = new XMLHttpRequest();\n    request.open('GET', url, true);\n    request.responseType = 'arraybuffer';\n    request.onload = function() {\n      if (request.readyState === 4) {\n        if (request.status === 200) {\n          var data = new Uint8Array(request.response);\n          cv.FS_createDataFile('/', path, data, true, false, false);\n          callback();\n        } else {\n          self.printError(\n            'Failed to load ' + url + ' status: ' + request.status\n          );\n        }\n      }\n    };\n    request.send();\n  }\n})();\n"
  },
  {
    "path": "examples/testsuite.html",
    "content": "<!DOCTYPE HTML>\n<html>\n\n<head>\n  <meta charset=\"utf-8\">\n  <title>smartcrop.js testsuite</title>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <link rel=stylesheet href=style.css>\n</head>\n\n<body class=testsuite>\n  <h1>smartcrop.js test page</h1>\n  <p>smartcrop.js is a content aware image cropping library. On this page you can see how it operates on a large set of\n    (&gt;100) images. This page is designed to show you both the strengths and weaknesses of this open source library.\n    Please note that this\n    page is running just smartcrop.js without any additional face detection. You can play with face detection in the <a\n      href=\"testbed.html\">testbed</a>.\n  </p>\n  <p>\n    You can learn more about the library on its <a href=\"https://github.com/jwagner/smartcrop.js/\">github page</a>. You\n    can try it out on your on images using the <a href=\"testbed.html\">testbed</a>.</p>\n  <p id=perf></p>\n  <div><img src=images/flickr/img.jpg></div>\n  <div class=testsuite-image-title><a href=\"https://www.flickr.com/photos/80225884@N06/13318614973/\">Selfie</a> by <span\n      class=testsuite-image-attribution><a href=\"https://29a.ch/\">Myself</a> ;)</span></div>\n  <div><img src=images/flickr/kitty.jpg></div>\n  <div class=testsuite-image-title><a href=\"https://www.flickr.com/photos/11250735@N07/8561945042/\">Cats in the\n      Spring</a> by <span class=testsuite-image-attribution>ziamoku_woodpile</span></div>\n  <div><img src=images/flickr/guitarist.jpg></div>\n  <div class=testsuite-image-title><a href=\"https://www.flickr.com/photos/64654599@N00/7185037375/\">Kitty, Daisy and\n      Lewis at the Garage</a> by <span class=testsuite-image-attribution>Paul Hudson</span></div>\n  <div><img src=images/flickr/goodtimes.jpg></div>\n  <div class=testsuite-image-title><a href=\"https://www.flickr.com/photos/endogamia/5682480447/\">Where Have All the Good\n      Times Gone?</a> by <span class=testsuite-image-attribution>N. Feans</span></div>\n  <script src=jquery.js></script>\n  <script src=\"../smartcrop.js\"></script>\n  <script src=smartcrop-debug.js></script>\n  <script src=testsuite.js></script>\n  <script src=\"/a.js\" async></script>\n</body>\n\n</html>"
  },
  {
    "path": "examples/testsuite.js",
    "content": "// prepare base perf object\nif (typeof window.performance === 'undefined') {\n  window.performance = {};\n}\n\nif (!window.performance.now) {\n  var nowOffset = Date.now();\n\n  if (performance.timing && performance.timing.navigationStart) {\n    nowOffset = performance.timing.navigationStart;\n  }\n\n  window.performance.now = function now() {\n    return Date.now() - nowOffset;\n  };\n}\n\nvar processed = {};\nvar options = { debug: true, width: 250, height: 250 };\n$.getJSON('images/images.json', function(images) {\n  $('body').append(\n    images.map(function(image) {\n      return $('<div>')\n        .append($('<img>').attr('src', image.url))\n        .append(\n          $('<div class=testsuite-image-title>')\n            .append(\n              $('<a>')\n                .text(image.name)\n                .attr('href', image.href)\n            )\n            .append(\n              $('<span class=test-suite-image-attribution>').text(\n                ' by ' + image.attribution\n              )\n            )\n        );\n    })\n  );\n\n  var totalTime = 0;\n  var totalmpix = 0;\n  var totalCrops = 0;\n\n  $('img').each(function() {\n    $(this).on('load', function() {\n      window.setTimeout(\n        function() {\n          var img = this;\n          if (processed[img.src]) return;\n          processed[img.src] = true;\n          var t = performance.now();\n          smartcrop.crop(img, options, function(result) {\n            totalTime += (performance.now() - t) / 1e3;\n            totalmpix += img.naturalWidth * img.naturalHeight / 1e6;\n            totalCrops++;\n            $('#perf').text(\n              'processed ' +\n                totalCrops +\n                ' images, ' +\n                Math.round(totalTime * 1000 / totalCrops) +\n                ' ms/image, ' +\n                Math.round(100 * totalmpix / totalTime) / 100 +\n                ' mega pixel/s'\n            );\n            // console.log(img.src, result);\n            var crop = result.topCrop;\n            var canvas = $('<canvas>')[0];\n            var ctx = canvas.getContext('2d');\n            canvas.width = options.width;\n            canvas.height = options.height;\n            ctx.drawImage(\n              img,\n              crop.x,\n              crop.y,\n              crop.width,\n              crop.height,\n              0,\n              0,\n              canvas.width,\n              canvas.height\n            );\n\n            $(img)\n              .after(canvas)\n              .after(debugDraw(result, true));\n            //  .parent()\n            //  .append($('<pre>').text(JSON.stringify(crop.score)));\n          });\n        }.bind(this),\n        100\n      );\n    });\n    if (this.complete) {\n      $(this).trigger('load');\n    }\n  });\n});\n"
  },
  {
    "path": "examples/tracking-face-min.js",
    "content": "/**\n * tracking.js - A modern approach for Computer Vision on the web.\n * @author Eduardo Lundgren <edu@rdo.io>\n * @version v1.0.0\n * @link http://trackingjs.com\n * @license BSD\n */\ntracking.ViolaJones.classifiers.face=new Float64Array([20,20,.822689414024353,3,0,2,3,7,14,4,-1,3,9,14,2,2,.004014195874333382,.0337941907346249,.8378106951713562,0,2,1,2,18,4,-1,7,2,6,4,3,.0151513395830989,.1514132022857666,.7488812208175659,0,2,1,7,15,9,-1,1,10,15,3,3,.004210993181914091,.0900492817163467,.6374819874763489,6.956608772277832,16,0,2,5,6,2,6,-1,5,9,2,3,2,.0016227109590545297,.0693085864186287,.7110946178436279,0,2,7,5,6,3,-1,9,5,2,3,3,.002290664939209819,.1795803010463715,.6668692231178284,0,2,4,0,12,9,-1,4,3,12,3,3,.005002570804208517,.1693672984838486,.6554006934165955,0,2,6,9,10,8,-1,6,13,10,4,2,.007965989410877228,.5866332054138184,.0914145186543465,0,2,3,6,14,8,-1,3,10,14,4,2,-.003522701095789671,.1413166970014572,.6031895875930786,0,2,14,1,6,10,-1,14,1,3,10,2,.0366676896810532,.3675672113895416,.7920318245887756,0,2,7,8,5,12,-1,7,12,5,4,3,.009336147457361221,.6161385774612427,.2088509947061539,0,2,1,1,18,3,-1,7,1,6,3,3,.008696131408214569,.2836230993270874,.6360273957252502,0,2,1,8,17,2,-1,1,9,17,1,2,.0011488880263641477,.2223580926656723,.5800700783729553,0,2,16,6,4,2,-1,16,7,4,1,2,-.002148468978703022,.2406464070081711,.5787054896354675,0,2,5,17,2,2,-1,5,18,2,1,2,.002121906029060483,.5559654831886292,.136223703622818,0,2,14,2,6,12,-1,14,2,3,12,2,-.0939491465687752,.8502737283706665,.4717740118503571,0,3,4,0,4,12,-1,4,0,2,6,2,6,6,2,6,2,.0013777789426967502,.5993673801422119,.2834529876708984,0,2,2,11,18,8,-1,8,11,6,8,3,.0730631574988365,.4341886043548584,.7060034275054932,0,2,5,7,10,2,-1,5,8,10,1,2,.00036767389974556863,.3027887940406799,.6051574945449829,0,2,15,11,5,3,-1,15,12,5,1,3,-.0060479710809886456,.17984339594841,.5675256848335266,9.498542785644531,21,0,2,5,3,10,9,-1,5,6,10,3,3,-.0165106896311045,.6644225120544434,.1424857974052429,0,2,9,4,2,14,-1,9,11,2,7,2,.002705249935388565,.6325352191925049,.1288477033376694,0,2,3,5,4,12,-1,3,9,4,4,3,.002806986914947629,.1240288019180298,.6193193197250366,0,2,4,5,12,5,-1,8,5,4,5,3,-.0015402400167658925,.1432143002748489,.5670015811920166,0,2,5,6,10,8,-1,5,10,10,4,2,-.0005638627917505801,.1657433062791824,.5905207991600037,0,2,8,0,6,9,-1,8,3,6,3,3,.0019253729842603207,.2695507109165192,.5738824009895325,0,2,9,12,1,8,-1,9,16,1,4,2,-.005021484103053808,.1893538981676102,.5782774090766907,0,2,0,7,20,6,-1,0,9,20,2,3,.0026365420781075954,.2309329062700272,.5695425868034363,0,2,7,0,6,17,-1,9,0,2,17,3,-.0015127769438549876,.2759602069854736,.5956642031669617,0,2,9,0,6,4,-1,11,0,2,4,3,-.0101574398577213,.1732538044452667,.5522047281265259,0,2,5,1,6,4,-1,7,1,2,4,3,-.011953660286963,.1339409947395325,.5559014081954956,0,2,12,1,6,16,-1,14,1,2,16,3,.004885949194431305,.3628703951835632,.6188849210739136,0,3,0,5,18,8,-1,0,5,9,4,2,9,9,9,4,2,-.0801329165697098,.0912110507488251,.5475944876670837,0,3,8,15,10,4,-1,13,15,5,2,2,8,17,5,2,2,.0010643280111253262,.3715142905712128,.5711399912834167,0,3,3,1,4,8,-1,3,1,2,4,2,5,5,2,4,2,-.0013419450260698795,.5953313708305359,.331809788942337,0,3,3,6,14,10,-1,10,6,7,5,2,3,11,7,5,2,-.0546011403203011,.1844065934419632,.5602846145629883,0,2,2,1,6,16,-1,4,1,2,16,3,.0029071690514683723,.3594244122505188,.6131715178489685,0,2,0,18,20,2,-1,0,19,20,1,2,.0007471871795132756,.5994353294372559,.3459562957286835,0,2,8,13,4,3,-1,8,14,4,1,3,.004301380831748247,.4172652065753937,.6990845203399658,0,2,9,14,2,3,-1,9,15,2,1,3,.004501757211983204,.4509715139865875,.7801457047462463,0,2,0,12,9,6,-1,0,14,9,2,3,.0241385009139776,.5438212752342224,.1319826990365982,18.4129695892334,39,0,2,5,7,3,4,-1,5,9,3,2,2,.001921223010867834,.1415266990661621,.6199870705604553,0,2,9,3,2,16,-1,9,11,2,8,2,-.00012748669541906565,.6191074252128601,.1884928941726685,0,2,3,6,13,8,-1,3,10,13,4,2,.0005140993162058294,.1487396955490112,.5857927799224854,0,2,12,3,8,2,-1,12,3,4,2,2,.004187860991805792,.2746909856796265,.6359239816665649,0,2,8,8,4,12,-1,8,12,4,4,3,.005101571790874004,.5870851278305054,.2175628989934921,0,3,11,3,8,6,-1,15,3,4,3,2,11,6,4,3,2,-.002144844038411975,.5880944728851318,.2979590892791748,0,2,7,1,6,19,-1,9,1,2,19,3,-.0028977119363844395,.2373327016830444,.5876647233963013,0,2,9,0,6,4,-1,11,0,2,4,3,-.0216106791049242,.1220654994249344,.5194202065467834,0,2,3,1,9,3,-1,6,1,3,3,3,-.004629931878298521,.263123095035553,.5817409157752991,0,3,8,15,10,4,-1,13,15,5,2,2,8,17,5,2,2,.000593937118537724,.363862007856369,.5698544979095459,0,2,0,3,6,10,-1,3,3,3,10,2,.0538786612451077,.4303531050682068,.7559366226196289,0,2,3,4,15,15,-1,3,9,15,5,3,.0018887349870055914,.2122603058815002,.561342716217041,0,2,6,5,8,6,-1,6,7,8,2,3,-.0023635339457541704,.563184916973114,.2642767131328583,0,3,4,4,12,10,-1,10,4,6,5,2,4,9,6,5,2,.0240177996456623,.5797107815742493,.2751705944538117,0,2,6,4,4,4,-1,8,4,2,4,2,.00020543030404951423,.2705242037773132,.575256884098053,0,2,15,11,1,2,-1,15,12,1,1,2,.0008479019743390381,.5435624718666077,.2334876954555512,0,2,3,11,2,2,-1,3,12,2,1,2,.0014091329649090767,.5319424867630005,.2063155025243759,0,2,16,11,1,3,-1,16,12,1,1,3,.0014642629539594054,.5418980717658997,.3068861067295075,0,3,3,15,6,4,-1,3,15,3,2,2,6,17,3,2,2,.0016352549428120255,.3695372939109802,.6112868189811707,0,2,6,7,8,2,-1,6,8,8,1,2,.0008317275205627084,.3565036952495575,.6025236248970032,0,2,3,11,1,3,-1,3,12,1,1,3,-.0020998890977352858,.1913982033729553,.5362827181816101,0,2,6,0,12,2,-1,6,1,12,1,2,-.0007421398186124861,.3835555016994476,.552931010723114,0,2,9,14,2,3,-1,9,15,2,1,3,.0032655049581080675,.4312896132469177,.7101895809173584,0,2,7,15,6,2,-1,7,16,6,1,2,.0008913499186746776,.3984830975532532,.6391963958740234,0,2,0,5,4,6,-1,0,7,4,2,3,-.0152841797098517,.2366732954978943,.5433713793754578,0,2,4,12,12,2,-1,8,12,4,2,3,.004838141147047281,.5817500948905945,.3239189088344574,0,2,6,3,1,9,-1,6,6,1,3,3,-.0009109317907132208,.5540593862533569,.2911868989467621,0,2,10,17,3,2,-1,11,17,1,2,3,-.006127506028860807,.1775255054235458,.5196629166603088,0,2,9,9,2,2,-1,9,10,2,1,2,-.00044576259097084403,.3024170100688934,.5533593893051147,0,2,7,6,6,4,-1,9,6,2,4,3,.0226465407758951,.4414930939674377,.6975377202033997,0,2,7,17,3,2,-1,8,17,1,2,3,-.0018804960418492556,.2791394889354706,.5497952103614807,0,2,10,17,3,3,-1,11,17,1,3,3,.007088910788297653,.5263199210166931,.2385547012090683,0,2,8,12,3,2,-1,8,13,3,1,2,.0017318050377070904,.4319379031658173,.6983600854873657,0,2,9,3,6,2,-1,11,3,2,2,3,-.006848270073533058,.3082042932510376,.5390920042991638,0,2,3,11,14,4,-1,3,13,14,2,2,-15062530110299122e-21,.552192211151123,.3120366036891937,0,3,1,10,18,4,-1,10,10,9,2,2,1,12,9,2,2,.0294755697250366,.5401322841644287,.1770603060722351,0,2,0,10,3,3,-1,0,11,3,1,3,.008138732984662056,.5178617835044861,.121101900935173,0,2,9,1,6,6,-1,11,1,2,6,3,.0209429506212473,.5290294289588928,.3311221897602081,0,2,8,7,3,6,-1,9,7,1,6,3,-.009566552937030792,.7471994161605835,.4451968967914581,15.324139595031738,33,0,2,1,0,18,9,-1,1,3,18,3,3,-.00028206960996612906,.2064086049795151,.6076732277870178,0,2,12,10,2,6,-1,12,13,2,3,2,.00167906004935503,.5851997137069702,.1255383938550949,0,2,0,5,19,8,-1,0,9,19,4,2,.0006982791237533092,.094018429517746,.5728961229324341,0,2,7,0,6,9,-1,9,0,2,9,3,.0007895901217125356,.1781987994909287,.5694308876991272,0,2,5,3,6,1,-1,7,3,2,1,3,-.002856049919500947,.1638399064540863,.5788664817810059,0,2,11,3,6,1,-1,13,3,2,1,3,-.0038122469559311867,.2085440009832382,.5508564710617065,0,2,5,10,4,6,-1,5,13,4,3,2,.0015896620461717248,.5702760815620422,.1857215017080307,0,2,11,3,6,1,-1,13,3,2,1,3,.0100783398374915,.5116943120956421,.2189770042896271,0,2,4,4,12,6,-1,4,6,12,2,3,-.0635263025760651,.7131379842758179,.4043813049793243,0,2,15,12,2,6,-1,15,14,2,2,3,-.009103149175643921,.2567181885242462,.54639732837677,0,2,9,3,2,2,-1,10,3,1,2,2,-.002403500024229288,.1700665950775147,.559097409248352,0,2,9,3,3,1,-1,10,3,1,1,3,.001522636041045189,.5410556793212891,.2619054019451141,0,2,1,1,4,14,-1,3,1,2,14,2,.0179974399507046,.3732436895370483,.6535220742225647,0,3,9,0,4,4,-1,11,0,2,2,2,9,2,2,2,2,-.00645381910726428,.2626481950283051,.5537446141242981,0,2,7,5,1,14,-1,7,12,1,7,2,-.0118807600811124,.2003753930330277,.5544745922088623,0,2,19,0,1,4,-1,19,2,1,2,2,.0012713660253211856,.5591902732849121,.303197592496872,0,2,5,5,6,4,-1,8,5,3,4,2,.0011376109905540943,.2730407118797302,.5646508932113647,0,2,9,18,3,2,-1,10,18,1,2,3,-.00426519988104701,.1405909061431885,.5461820960044861,0,2,8,18,3,2,-1,9,18,1,2,3,-.0029602861031889915,.1795035004615784,.5459290146827698,0,2,4,5,12,6,-1,4,7,12,2,3,-.008844822645187378,.5736783146858215,.280921995639801,0,2,3,12,2,6,-1,3,14,2,2,3,-.006643068976700306,.2370675951242447,.5503826141357422,0,2,10,8,2,12,-1,10,12,2,4,3,.003999780863523483,.5608199834823608,.3304282128810883,0,2,7,18,3,2,-1,8,18,1,2,3,-.004122172016650438,.1640105992555618,.5378993153572083,0,2,9,0,6,2,-1,11,0,2,2,3,.0156249096617103,.5227649211883545,.2288603931665421,0,2,5,11,9,3,-1,5,12,9,1,3,-.0103564197197557,.7016193866729736,.4252927899360657,0,2,9,0,6,2,-1,11,0,2,2,3,-.008796080946922302,.2767347097396851,.5355830192565918,0,2,1,1,18,5,-1,7,1,6,5,3,.1622693985700607,.434224009513855,.744257926940918,0,3,8,0,4,4,-1,10,0,2,2,2,8,2,2,2,2,.0045542530715465546,.5726485848426819,.2582125067710877,0,2,3,12,1,3,-1,3,13,1,1,3,-.002130920998752117,.2106848061084747,.5361018776893616,0,2,8,14,5,3,-1,8,15,5,1,3,-.0132084200158715,.7593790888786316,.4552468061447144,0,3,5,4,10,12,-1,5,4,5,6,2,10,10,5,6,2,-.0659966766834259,.125247597694397,.5344039797782898,0,2,9,6,9,12,-1,9,10,9,4,3,.007914265617728233,.3315384089946747,.5601043105125427,0,3,2,2,12,14,-1,2,2,6,7,2,8,9,6,7,2,.0208942797034979,.5506049990653992,.2768838107585907,21.010639190673828,44,0,2,4,7,12,2,-1,8,7,4,2,3,.0011961159761995077,.1762690991163254,.6156241297721863,0,2,7,4,6,4,-1,7,6,6,2,2,-.0018679830245673656,.6118106842041016,.1832399964332581,0,2,4,5,11,8,-1,4,9,11,4,2,-.00019579799845814705,.0990442633628845,.5723816156387329,0,2,3,10,16,4,-1,3,12,16,2,2,-.0008025565766729414,.5579879879951477,.2377282977104187,0,2,0,0,16,2,-1,0,1,16,1,2,-.0024510810617357492,.2231457978487015,.5858935117721558,0,2,7,5,6,2,-1,9,5,2,2,3,.0005036185029894114,.2653993964195252,.5794103741645813,0,3,3,2,6,10,-1,3,2,3,5,2,6,7,3,5,2,.0040293349884450436,.5803827047348022,.2484865039587021,0,2,10,5,8,15,-1,10,10,8,5,3,-.0144517095759511,.1830351948738098,.5484204888343811,0,3,3,14,8,6,-1,3,14,4,3,2,7,17,4,3,2,.0020380979403853416,.3363558948040009,.6051092743873596,0,2,14,2,2,2,-1,14,3,2,1,2,-.0016155190533027053,.2286642044782639,.5441246032714844,0,2,1,10,7,6,-1,1,13,7,3,2,.0033458340913057327,.5625913143157959,.2392338067293167,0,2,15,4,4,3,-1,15,4,2,3,2,.0016379579901695251,.3906993865966797,.5964621901512146,0,3,2,9,14,6,-1,2,9,7,3,2,9,12,7,3,2,.0302512105554342,.524848222732544,.1575746983289719,0,2,5,7,10,4,-1,5,9,10,2,2,.037251990288496,.4194310903549194,.6748418807983398,0,3,6,9,8,8,-1,6,9,4,4,2,10,13,4,4,2,-.0251097902655602,.1882549971342087,.5473451018333435,0,2,14,1,3,2,-1,14,2,3,1,2,-.005309905856847763,.133997306227684,.5227110981941223,0,2,1,4,4,2,-1,3,4,2,2,2,.0012086479691788554,.3762088119983673,.6109635829925537,0,2,11,10,2,8,-1,11,14,2,4,2,-.0219076797366142,.266314297914505,.5404006838798523,0,2,0,0,5,3,-1,0,1,5,1,3,.0054116579703986645,.5363578796386719,.2232273072004318,0,3,2,5,18,8,-1,11,5,9,4,2,2,9,9,4,2,.069946326315403,.5358232855796814,.2453698068857193,0,2,6,6,1,6,-1,6,9,1,3,2,.00034520021290518343,.2409671992063522,.5376930236816406,0,2,19,1,1,3,-1,19,2,1,1,3,.0012627709656953812,.5425856709480286,.3155693113803864,0,2,7,6,6,6,-1,9,6,2,6,3,.0227195098996162,.4158405959606171,.6597865223884583,0,2,19,1,1,3,-1,19,2,1,1,3,-.001811100053600967,.2811253070831299,.5505244731903076,0,2,3,13,2,3,-1,3,14,2,1,3,.0033469670452177525,.526002824306488,.1891465038061142,0,3,8,4,8,12,-1,12,4,4,6,2,8,10,4,6,2,.00040791751234792173,.5673509240150452,.3344210088253021,0,2,5,2,6,3,-1,7,2,2,3,3,.0127347996458411,.5343592166900635,.2395612001419067,0,2,6,1,9,10,-1,6,6,9,5,2,-.007311972789466381,.6010890007019043,.4022207856178284,0,2,0,4,6,12,-1,2,4,2,12,3,-.0569487512111664,.8199151158332825,.4543190896511078,0,2,15,13,2,3,-1,15,14,2,1,3,-.005011659115552902,.2200281023979187,.5357710719108582,0,2,7,14,5,3,-1,7,15,5,1,3,.006033436860889196,.4413081109523773,.7181751132011414,0,2,15,13,3,3,-1,15,14,3,1,3,.0039437441155314445,.547886073589325,.2791733145713806,0,2,6,14,8,3,-1,6,15,8,1,3,-.0036591119132936,.635786771774292,.3989723920822144,0,2,15,13,3,3,-1,15,14,3,1,3,-.0038456181064248085,.3493686020374298,.5300664901733398,0,2,2,13,3,3,-1,2,14,3,1,3,-.007192626129835844,.1119614988565445,.5229672789573669,0,3,4,7,12,12,-1,10,7,6,6,2,4,13,6,6,2,-.0527989417314529,.2387102991342545,.54534512758255,0,2,9,7,2,6,-1,10,7,1,6,2,-.007953766733407974,.7586917877197266,.4439376890659332,0,2,8,9,5,2,-1,8,10,5,1,2,-.0027344180271029472,.2565476894378662,.5489321947097778,0,2,8,6,3,4,-1,9,6,1,4,3,-.0018507939530536532,.6734347939491272,.4252474904060364,0,2,9,6,2,8,-1,9,10,2,4,2,.0159189198166132,.548835277557373,.2292661964893341,0,2,7,7,3,6,-1,8,7,1,6,3,-.0012687679845839739,.6104331016540527,.4022389948368073,0,2,11,3,3,3,-1,12,3,1,3,3,.006288391072303057,.5310853123664856,.1536193042993546,0,2,5,4,6,1,-1,7,4,2,1,3,-.0062259892001748085,.1729111969470978,.524160623550415,0,2,5,6,10,3,-1,5,7,10,1,3,-.0121325999498367,.659775972366333,.4325182139873505,23.918790817260742,50,0,2,7,3,6,9,-1,7,6,6,3,3,-.0039184908382594585,.6103435158729553,.1469330936670303,0,2,6,7,9,1,-1,9,7,3,1,3,.0015971299726516008,.2632363140583038,.5896466970443726,0,2,2,8,16,8,-1,2,12,16,4,2,.0177801102399826,.587287425994873,.1760361939668655,0,2,14,6,2,6,-1,14,9,2,3,2,.0006533476989716291,.1567801982164383,.5596066117286682,0,2,1,5,6,15,-1,1,10,6,5,3,-.00028353091329336166,.1913153976202011,.5732036232948303,0,2,10,0,6,9,-1,10,3,6,3,3,.0016104689566418529,.2914913892745972,.5623080730438232,0,2,6,6,7,14,-1,6,13,7,7,2,-.0977506190538406,.194347694516182,.5648233294487,0,2,13,7,3,6,-1,13,9,3,2,3,.0005518235848285258,.3134616911411285,.5504639744758606,0,2,1,8,15,4,-1,6,8,5,4,3,-.0128582203760743,.253648191690445,.5760142803192139,0,2,11,2,3,10,-1,11,7,3,5,2,.004153023939579725,.5767722129821777,.36597740650177,0,2,3,7,4,6,-1,3,9,4,2,3,.0017092459602281451,.2843191027641296,.5918939113616943,0,2,13,3,6,10,-1,15,3,2,10,3,.007521735969930887,.4052427113056183,.6183109283447266,0,3,5,7,8,10,-1,5,7,4,5,2,9,12,4,5,2,.0022479810286313295,.578375518321991,.3135401010513306,0,3,4,4,12,12,-1,10,4,6,6,2,4,10,6,6,2,.0520062111318111,.5541312098503113,.1916636973619461,0,2,1,4,6,9,-1,3,4,2,9,3,.0120855299755931,.4032655954360962,.6644591093063354,0,2,11,3,2,5,-1,11,3,1,5,2,14687820112158079e-21,.3535977900028229,.5709382891654968,0,2,7,3,2,5,-1,8,3,1,5,2,7139518857002258e-21,.3037444949150085,.5610269904136658,0,2,10,14,2,3,-1,10,15,2,1,3,-.0046001640148460865,.7181087136268616,.4580326080322266,0,2,5,12,6,2,-1,8,12,3,2,2,.0020058949012309313,.5621951818466187,.2953684031963348,0,2,9,14,2,3,-1,9,15,2,1,3,.004505027085542679,.4615387916564941,.7619017958641052,0,2,4,11,12,6,-1,4,14,12,3,2,.0117468303069472,.5343837141990662,.1772529035806656,0,2,11,11,5,9,-1,11,14,5,3,3,-.0583163388073444,.1686245948076248,.5340772271156311,0,2,6,15,3,2,-1,6,16,3,1,2,.00023629379575140774,.3792056143283844,.6026803851127625,0,2,11,0,3,5,-1,12,0,1,5,3,-.007815618067979813,.151286706328392,.5324323773384094,0,2,5,5,6,7,-1,8,5,3,7,2,-.0108761601150036,.2081822007894516,.5319945216178894,0,2,13,0,1,9,-1,13,3,1,3,3,-.0027745519764721394,.4098246991634369,.5210328102111816,0,3,3,2,4,8,-1,3,2,2,4,2,5,6,2,4,2,-.0007827638182789087,.5693274140357971,.3478842079639435,0,2,13,12,4,6,-1,13,14,4,2,3,.0138704096898437,.5326750874519348,.2257698029279709,0,2,3,12,4,6,-1,3,14,4,2,3,-.0236749108880758,.1551305055618286,.5200707912445068,0,2,13,11,3,4,-1,13,13,3,2,2,-14879409718560055e-21,.5500566959381104,.3820176124572754,0,2,4,4,4,3,-1,4,5,4,1,3,.00361906411126256,.4238683879375458,.6639748215675354,0,2,7,5,11,8,-1,7,9,11,4,2,-.0198171101510525,.2150038033723831,.5382357835769653,0,2,7,8,3,4,-1,8,8,1,4,3,-.0038154039066284895,.6675711274147034,.4215297102928162,0,2,9,1,6,1,-1,11,1,2,1,3,-.0049775829538702965,.2267289012670517,.5386328101158142,0,2,5,5,3,3,-1,5,6,3,1,3,.002244102070108056,.4308691024780273,.6855735778808594,0,3,0,9,20,6,-1,10,9,10,3,2,0,12,10,3,2,.0122824599966407,.5836614966392517,.3467479050159454,0,2,8,6,3,5,-1,9,6,1,5,3,-.002854869933798909,.7016944885253906,.4311453998088837,0,2,11,0,1,3,-1,11,1,1,1,3,-.0037875669077038765,.2895345091819763,.5224946141242981,0,2,4,2,4,2,-1,4,3,4,1,2,-.0012201230274513364,.2975570857524872,.5481644868850708,0,2,12,6,4,3,-1,12,7,4,1,3,.010160599835217,.4888817965984345,.8182697892189026,0,2,5,0,6,4,-1,7,0,2,4,3,-.0161745697259903,.1481492966413498,.5239992737770081,0,2,9,7,3,8,-1,10,7,1,8,3,.0192924607545137,.4786309897899628,.7378190755844116,0,2,9,7,2,2,-1,10,7,1,2,2,-.003247953951358795,.7374222874641418,.4470643997192383,0,3,6,7,14,4,-1,13,7,7,2,2,6,9,7,2,2,-.009380348026752472,.3489154875278473,.5537996292114258,0,2,0,5,3,6,-1,0,7,3,2,3,-.0126061299815774,.2379686981439591,.5315443277359009,0,2,13,11,3,4,-1,13,13,3,2,2,-.0256219301372766,.1964688003063202,.5138769745826721,0,2,4,11,3,4,-1,4,13,3,2,2,-7574149640277028e-20,.5590522885322571,.3365853130817413,0,3,5,9,12,8,-1,11,9,6,4,2,5,13,6,4,2,-.0892108827829361,.0634046569466591,.516263484954834,0,2,9,12,1,3,-1,9,13,1,1,3,-.002767048077657819,.732346773147583,.4490706026554108,0,2,10,15,2,4,-1,10,17,2,2,2,.0002715257869567722,.411483496427536,.5985518097877502,24.52787971496582,51,0,2,7,7,6,1,-1,9,7,2,1,3,.001478621968999505,.266354501247406,.6643316745758057,0,3,12,3,6,6,-1,15,3,3,3,2,12,6,3,3,2,-.001874165958724916,.6143848896026611,.2518512904644013,0,2,0,4,10,6,-1,0,6,10,2,3,-.001715100952424109,.5766341090202332,.2397463023662567,0,3,8,3,8,14,-1,12,3,4,7,2,8,10,4,7,2,-.0018939269939437509,.5682045817375183,.2529144883155823,0,2,4,4,7,15,-1,4,9,7,5,3,-.005300605203956366,.1640675961971283,.5556079745292664,0,3,12,2,6,8,-1,15,2,3,4,2,12,6,3,4,2,-.0466625317931175,.6123154163360596,.4762830138206482,0,3,2,2,6,8,-1,2,2,3,4,2,5,6,3,4,2,-.000794313324149698,.5707858800888062,.2839404046535492,0,2,2,13,18,7,-1,8,13,6,7,3,.0148916700854898,.4089672863483429,.6006367206573486,0,3,4,3,8,14,-1,4,3,4,7,2,8,10,4,7,2,-.0012046529445797205,.5712450742721558,.2705289125442505,0,2,18,1,2,6,-1,18,3,2,2,3,.006061938125640154,.526250422000885,.3262225985527039,0,2,9,11,2,3,-1,9,12,2,1,3,-.0025286648888140917,.6853830814361572,.4199256896972656,0,2,18,1,2,6,-1,18,3,2,2,3,-.005901021882891655,.3266282081604004,.5434812903404236,0,2,0,1,2,6,-1,0,3,2,2,3,.005670276004821062,.5468410849571228,.2319003939628601,0,2,1,5,18,6,-1,1,7,18,2,3,-.003030410036444664,.557066798210144,.2708238065242767,0,2,0,2,6,7,-1,3,2,3,7,2,.002980364952236414,.3700568974018097,.5890625715255737,0,2,7,3,6,14,-1,7,10,6,7,2,-.0758405104279518,.2140070050954819,.5419948101043701,0,2,3,7,13,10,-1,3,12,13,5,2,.0192625392228365,.5526772141456604,.2726590037345886,0,2,11,15,2,2,-1,11,16,2,1,2,.00018888259364757687,.3958011865615845,.6017209887504578,0,3,2,11,16,4,-1,2,11,8,2,2,10,13,8,2,2,.0293695498257875,.5241373777389526,.1435758024454117,0,3,13,7,6,4,-1,16,7,3,2,2,13,9,3,2,2,.0010417619487270713,.3385409116744995,.5929983258247375,0,2,6,10,3,9,-1,6,13,3,3,3,.0026125640142709017,.5485377907752991,.3021597862243652,0,2,14,6,1,6,-1,14,9,1,3,2,.0009697746718302369,.3375276029109955,.553203284740448,0,2,5,10,4,1,-1,7,10,2,1,2,.0005951265920884907,.563174307346344,.3359399139881134,0,2,3,8,15,5,-1,8,8,5,5,3,-.1015655994415283,.0637350380420685,.5230425000190735,0,2,1,6,5,4,-1,1,8,5,2,2,.0361566990613937,.5136963129043579,.1029528975486755,0,2,3,1,17,6,-1,3,3,17,2,3,.003462414024397731,.3879320025444031,.5558289289474487,0,2,6,7,8,2,-1,10,7,4,2,2,.0195549800992012,.5250086784362793,.1875859946012497,0,2,9,7,3,2,-1,10,7,1,2,3,-.0023121440317481756,.667202889919281,.4679641127586365,0,2,8,7,3,2,-1,9,7,1,2,3,-.001860528951510787,.7163379192352295,.4334670901298523,0,2,8,9,4,2,-1,8,10,4,1,2,-.0009402636205777526,.302136093378067,.5650203227996826,0,2,8,8,4,3,-1,8,9,4,1,3,-.005241833161562681,.1820009052753449,.5250256061553955,0,2,9,5,6,4,-1,9,5,3,4,2,.00011729019752237946,.3389188051223755,.544597327709198,0,2,8,13,4,3,-1,8,14,4,1,3,.0011878840159624815,.4085349142551422,.6253563165664673,0,3,4,7,12,6,-1,10,7,6,3,2,4,10,6,3,2,-.0108813596889377,.3378399014472961,.5700082778930664,0,2,8,14,4,3,-1,8,15,4,1,3,.0017354859737679362,.4204635918140411,.6523038744926453,0,2,9,7,3,3,-1,9,8,3,1,3,-.00651190523058176,.2595216035842896,.5428143739700317,0,2,7,4,3,8,-1,8,4,1,8,3,-.0012136430013924837,.6165143847465515,.3977893888950348,0,2,10,0,3,6,-1,11,0,1,6,3,-.010354240424931,.1628028005361557,.5219504833221436,0,2,6,3,4,8,-1,8,3,2,8,2,.0005585883045569062,.3199650943279266,.5503574013710022,0,2,14,3,6,13,-1,14,3,3,13,2,.0152996499091387,.4103994071483612,.6122388243675232,0,2,8,13,3,6,-1,8,16,3,3,2,-.021588210016489,.103491298854351,.519738495349884,0,2,14,3,6,13,-1,14,3,3,13,2,-.1283462941646576,.8493865132331848,.4893102943897247,0,3,0,7,10,4,-1,0,7,5,2,2,5,9,5,2,2,-.0022927189711481333,.3130157887935638,.5471575260162354,0,2,14,3,6,13,-1,14,3,3,13,2,.0799151062965393,.4856320917606354,.6073989272117615,0,2,0,3,6,13,-1,3,3,3,13,2,-.0794410929083824,.8394674062728882,.462453305721283,0,2,9,1,4,1,-1,9,1,2,1,2,-.00528000108897686,.1881695985794067,.5306698083877563,0,2,8,0,2,1,-1,9,0,1,1,2,.0010463109938427806,.5271229147911072,.2583065927028656,0,3,10,16,4,4,-1,12,16,2,2,2,10,18,2,2,2,.00026317298761568964,.4235304892063141,.5735440850257874,0,2,9,6,2,3,-1,10,6,1,3,2,-.0036173160187900066,.6934396028518677,.4495444893836975,0,2,4,5,12,2,-1,8,5,4,2,3,.0114218797534704,.590092122554779,.4138193130493164,0,2,8,7,3,5,-1,9,7,1,5,3,-.0019963278900831938,.6466382741928101,.4327239990234375,27.153350830078125,56,0,2,6,4,8,6,-1,6,6,8,2,3,-.00996912457048893,.6142324209213257,.2482212036848068,0,2,9,5,2,12,-1,9,11,2,6,2,.0007307305932044983,.5704951882362366,.2321965992450714,0,2,4,6,6,8,-1,4,10,6,4,2,.0006404530140571296,.2112251967191696,.5814933180809021,0,2,12,2,8,5,-1,12,2,4,5,2,.004542401991784573,.2950482070446014,.586631178855896,0,2,0,8,18,3,-1,0,9,18,1,3,9247744310414419e-20,.2990990877151489,.5791326761245728,0,2,8,12,4,8,-1,8,16,4,4,2,-.008660314604640007,.2813029885292053,.5635542273521423,0,2,0,2,8,5,-1,4,2,4,5,2,.008051581680774689,.3535369038581848,.6054757237434387,0,2,13,11,3,4,-1,13,13,3,2,2,.00043835240649059415,.5596532225608826,.2731510996818543,0,2,5,11,6,1,-1,7,11,2,1,3,-981689736363478e-19,.5978031754493713,.3638561069965363,0,2,11,3,3,1,-1,12,3,1,1,3,-.0011298790341243148,.2755252122879028,.5432729125022888,0,2,7,13,5,3,-1,7,14,5,1,3,.006435615010559559,.4305641949176788,.7069833278656006,0,2,11,11,7,6,-1,11,14,7,3,2,-.0568293295800686,.2495242953300476,.5294997096061707,0,2,2,11,7,6,-1,2,14,7,3,2,.004066816996783018,.5478553175926208,.2497723996639252,0,2,12,14,2,6,-1,12,16,2,2,3,481647984997835e-19,.3938601016998291,.5706356167793274,0,2,8,14,3,3,-1,8,15,3,1,3,.00617950176820159,.440760612487793,.7394766807556152,0,2,11,0,3,5,-1,12,0,1,5,3,.006498575210571289,.5445243120193481,.2479152977466583,0,2,6,1,4,9,-1,8,1,2,9,2,-.0010211090557277203,.2544766962528229,.5338971018791199,0,2,10,3,6,1,-1,12,3,2,1,3,-.005424752831459045,.2718858122825623,.5324069261550903,0,2,8,8,3,4,-1,8,10,3,2,2,-.0010559899965301156,.3178288042545319,.553450882434845,0,2,8,12,4,2,-1,8,13,4,1,2,.0006646580877713859,.4284219145774841,.6558194160461426,0,2,5,18,4,2,-1,5,19,4,1,2,-.00027524109464138746,.5902860760688782,.3810262978076935,0,2,2,1,18,6,-1,2,3,18,2,3,.004229320213198662,.381648987531662,.5709385871887207,0,2,6,0,3,2,-1,7,0,1,2,3,-.0032868210691958666,.1747743934392929,.5259544253349304,0,3,13,8,6,2,-1,16,8,3,1,2,13,9,3,1,2,.0001561187964398414,.3601722121238709,.5725612044334412,0,2,6,10,3,6,-1,6,13,3,3,2,-7362138148891972e-21,.540185809135437,.3044497072696686,0,3,0,13,20,4,-1,10,13,10,2,2,0,15,10,2,2,-.014767250046134,.3220770061016083,.5573434829711914,0,2,7,7,6,5,-1,9,7,2,5,3,.0244895908981562,.4301528036594391,.6518812775611877,0,2,11,0,2,2,-1,11,1,2,1,2,-.000376520911231637,.356458306312561,.5598236918449402,0,3,1,8,6,2,-1,1,8,3,1,2,4,9,3,1,2,736576885174145e-20,.3490782976150513,.556189775466919,0,3,0,2,20,2,-1,10,2,10,1,2,0,3,10,1,2,-.0150999398902059,.1776272058486939,.5335299968719482,0,2,7,14,5,3,-1,7,15,5,1,3,-.0038316650316119194,.6149687767028809,.4221394062042236,0,3,7,13,6,6,-1,10,13,3,3,2,7,16,3,3,2,.0169254001230001,.5413014888763428,.2166585028171539,0,2,9,12,2,3,-1,9,13,2,1,3,-.003047785023227334,.6449490785598755,.4354617893695831,0,2,16,11,1,6,-1,16,13,1,2,3,.003214058931916952,.5400155186653137,.3523217141628265,0,2,3,11,1,6,-1,3,13,1,2,3,-.004002320114523172,.2774524092674255,.5338417291641235,0,3,4,4,14,12,-1,11,4,7,6,2,4,10,7,6,2,.0074182129465043545,.567673921585083,.3702817857265472,0,2,5,4,3,3,-1,5,5,3,1,3,-.008876458741724491,.7749221920967102,.4583688974380493,0,2,12,3,3,3,-1,13,3,1,3,3,.002731173997744918,.5338721871376038,.3996661007404327,0,2,6,6,8,3,-1,6,7,8,1,3,-.0025082379579544067,.5611963272094727,.377749890089035,0,2,12,3,3,3,-1,13,3,1,3,3,-.008054107427597046,.291522890329361,.5179182887077332,0,3,3,1,4,10,-1,3,1,2,5,2,5,6,2,5,2,-.0009793881326913834,.5536432862281799,.3700192868709564,0,2,5,7,10,2,-1,5,7,5,2,2,-.005874590948224068,.3754391074180603,.5679376125335693,0,2,8,7,3,3,-1,9,7,1,3,3,-.00449367193505168,.7019699215888977,.4480949938297272,0,2,15,12,2,3,-1,15,13,2,1,3,-.00543892290443182,.2310364991426468,.5313386917114258,0,2,7,8,3,4,-1,8,8,1,4,3,-.0007509464048780501,.5864868760108948,.4129343032836914,0,2,13,4,1,12,-1,13,10,1,6,2,14528800420521293e-21,.3732407093048096,.5619621276855469,0,3,4,5,12,12,-1,4,5,6,6,2,10,11,6,6,2,.0407580696046352,.5312091112136841,.2720521986484528,0,2,7,14,7,3,-1,7,15,7,1,3,.006650593131780624,.4710015952587128,.6693493723869324,0,2,3,12,2,3,-1,3,13,2,1,3,.0045759351924061775,.5167819261550903,.1637275964021683,0,3,3,2,14,2,-1,10,2,7,1,2,3,3,7,1,2,.0065269311890006065,.5397608876228333,.2938531935214996,0,2,0,1,3,10,-1,1,1,1,10,3,-.0136603796854615,.7086488008499146,.453220009803772,0,2,9,0,6,5,-1,11,0,2,5,3,.0273588690906763,.5206481218338013,.3589231967926025,0,2,5,7,6,2,-1,8,7,3,2,2,.0006219755159690976,.3507075905799866,.5441123247146606,0,2,7,1,6,10,-1,7,6,6,5,2,-.0033077080734074116,.5859522819519043,.402489185333252,0,2,1,1,18,3,-1,7,1,6,3,3,-.0106311095878482,.6743267178535461,.4422602951526642,0,2,16,3,3,6,-1,16,5,3,2,3,.0194416493177414,.5282716155052185,.1797904968261719,34.55411148071289,71,0,2,6,3,7,6,-1,6,6,7,3,2,-.005505216773599386,.5914731025695801,.2626559138298035,0,2,4,7,12,2,-1,8,7,4,2,3,.001956227933987975,.2312581986188889,.5741627216339111,0,2,0,4,17,10,-1,0,9,17,5,2,-.008892478421330452,.1656530052423477,.5626654028892517,0,2,3,4,15,16,-1,3,12,15,8,2,.0836383774876595,.5423449873924255,.1957294940948486,0,2,7,15,6,4,-1,7,17,6,2,2,.0012282270472496748,.3417904078960419,.5992503762245178,0,2,15,2,4,9,-1,15,2,2,9,2,.0057629169896245,.3719581961631775,.6079903841018677,0,2,2,3,3,2,-1,2,4,3,1,2,-.0016417410224676132,.2577486038208008,.5576915740966797,0,2,13,6,7,9,-1,13,9,7,3,3,.0034113149158656597,.2950749099254608,.5514171719551086,0,2,8,11,4,3,-1,8,12,4,1,3,-.0110693201422691,.7569358944892883,.4477078914642334,0,3,0,2,20,6,-1,10,2,10,3,2,0,5,10,3,2,.0348659716546535,.5583708882331848,.2669621109962463,0,3,3,2,6,10,-1,3,2,3,5,2,6,7,3,5,2,.0006570109981112182,.5627313256263733,.2988890111446381,0,2,13,10,3,4,-1,13,12,3,2,2,-.0243391301482916,.2771185040473938,.5108863115310669,0,2,4,10,3,4,-1,4,12,3,2,2,.0005943520227447152,.5580651760101318,.3120341897010803,0,2,7,5,6,3,-1,9,5,2,3,3,.0022971509024500847,.3330250084400177,.5679075717926025,0,2,7,6,6,8,-1,7,10,6,4,2,-.0037801829166710377,.2990534901618958,.5344808101654053,0,2,0,11,20,6,-1,0,14,20,3,2,-.13420669734478,.1463858932256699,.5392568111419678,0,3,4,13,4,6,-1,4,13,2,3,2,6,16,2,3,2,.0007522454834543169,.3746953904628754,.5692734718322754,0,3,6,0,8,12,-1,10,0,4,6,2,6,6,4,6,2,-.040545541793108,.2754747867584229,.5484297871589661,0,2,2,0,15,2,-1,2,1,15,1,2,.0012572970008477569,.3744584023952484,.5756075978279114,0,2,9,12,2,3,-1,9,13,2,1,3,-.007424994837492704,.7513859272003174,.4728231132030487,0,2,3,12,1,2,-1,3,13,1,1,2,.0005090812919661403,.540489673614502,.2932321131229401,0,2,9,11,2,3,-1,9,12,2,1,3,-.001280845026485622,.6169779896736145,.4273349046707153,0,2,7,3,3,1,-1,8,3,1,1,3,-.0018348860321566463,.2048496007919312,.5206472277641296,0,2,17,7,3,6,-1,17,9,3,2,3,.0274848695844412,.5252984762191772,.1675522029399872,0,2,7,2,3,2,-1,8,2,1,2,3,.0022372419480234385,.5267782807350159,.2777658104896545,0,2,11,4,5,3,-1,11,5,5,1,3,-.008863529190421104,.69545578956604,.4812048971652985,0,2,4,4,5,3,-1,4,5,5,1,3,.004175397101789713,.4291887879371643,.6349195837974548,0,2,19,3,1,2,-1,19,4,1,1,2,-.0017098189564421773,.2930536866188049,.5361248850822449,0,2,5,5,4,3,-1,5,6,4,1,3,.006532854866236448,.4495325088500977,.7409694194793701,0,2,17,7,3,6,-1,17,9,3,2,3,-.009537290781736374,.3149119913578033,.5416501760482788,0,2,0,7,3,6,-1,0,9,3,2,3,.0253109894692898,.5121892094612122,.1311707943677902,0,2,14,2,6,9,-1,14,5,6,3,3,.0364609695971012,.5175911784172058,.2591339945793152,0,2,0,4,5,6,-1,0,6,5,2,3,.0208543296903372,.5137140154838562,.1582316011190414,0,2,10,5,6,2,-1,12,5,2,2,3,-.0008720774785615504,.5574309825897217,.439897894859314,0,2,4,5,6,2,-1,6,5,2,2,3,-15227000403683633e-21,.5548940896987915,.3708069920539856,0,2,8,1,4,6,-1,8,3,4,2,3,-.0008431650931015611,.3387419879436493,.5554211139678955,0,2,0,2,3,6,-1,0,4,3,2,3,.0036037859972566366,.5358061790466309,.3411171138286591,0,2,6,6,8,3,-1,6,7,8,1,3,-.006805789191275835,.6125202775001526,.4345862865447998,0,2,0,1,5,9,-1,0,4,5,3,3,-.0470216609537601,.2358165979385376,.519373893737793,0,2,16,0,4,15,-1,16,0,2,15,2,-.0369541086256504,.7323111295700073,.4760943949222565,0,2,1,10,3,2,-1,1,11,3,1,2,.0010439479956403375,.5419455170631409,.3411330878734589,0,2,14,4,1,10,-1,14,9,1,5,2,-.00021050689974799752,.2821694016456604,.5554947257041931,0,2,0,1,4,12,-1,2,1,2,12,2,-.0808315873146057,.9129930138587952,.4697434902191162,0,2,11,11,4,2,-1,11,11,2,2,2,-.0003657905908767134,.6022670269012451,.3978292942047119,0,2,5,11,4,2,-1,7,11,2,2,2,-.00012545920617412776,.5613213181495667,.384553998708725,0,2,3,8,15,5,-1,8,8,5,5,3,-.0687864869832993,.2261611968278885,.5300496816635132,0,2,0,0,6,10,-1,3,0,3,10,2,.0124157899990678,.4075691998004913,.5828812122344971,0,2,11,4,3,2,-1,12,4,1,2,3,-.004717481788247824,.2827253937721252,.5267757773399353,0,2,8,12,3,8,-1,8,16,3,4,2,.0381368584930897,.5074741244316101,.1023615971207619,0,2,8,14,5,3,-1,8,15,5,1,3,-.0028168049175292253,.6169006824493408,.4359692931175232,0,2,7,14,4,3,-1,7,15,4,1,3,.008130360394716263,.4524433016777039,.76060950756073,0,2,11,4,3,2,-1,12,4,1,2,3,.006005601957440376,.5240408778190613,.185971200466156,0,3,3,15,14,4,-1,3,15,7,2,2,10,17,7,2,2,.0191393196582794,.5209379196166992,.2332071959972382,0,3,2,2,16,4,-1,10,2,8,2,2,2,4,8,2,2,.0164457596838474,.5450702905654907,.3264234960079193,0,2,0,8,6,12,-1,3,8,3,12,2,-.0373568907380104,.6999046802520752,.4533241987228394,0,2,5,7,10,2,-1,5,7,5,2,2,-.0197279006242752,.2653664946556091,.54128098487854,0,2,9,7,2,5,-1,10,7,1,5,2,.0066972579807043076,.4480566084384918,.7138652205467224,0,3,13,7,6,4,-1,16,7,3,2,2,13,9,3,2,2,.0007445752853527665,.4231350123882294,.5471320152282715,0,2,0,13,8,2,-1,0,14,8,1,2,.0011790640419349074,.5341702103614807,.3130455017089844,0,3,13,7,6,4,-1,16,7,3,2,2,13,9,3,2,2,.0349806100130081,.5118659734725952,.343053013086319,0,3,1,7,6,4,-1,1,7,3,2,2,4,9,3,2,2,.0005685979267582297,.3532187044620514,.5468639731407166,0,2,12,6,1,12,-1,12,12,1,6,2,-.0113406497985125,.2842353880405426,.5348700881004333,0,2,9,5,2,6,-1,10,5,1,6,2,-.00662281084805727,.6883640289306641,.4492664933204651,0,2,14,12,2,3,-1,14,13,2,1,3,-.008016033098101616,.1709893941879273,.5224308967590332,0,2,4,12,2,3,-1,4,13,2,1,3,.0014206819469109178,.5290846228599548,.299338310956955,0,2,8,12,4,3,-1,8,13,4,1,3,-.002780171111226082,.6498854160308838,.4460499882698059,0,3,5,2,2,4,-1,5,2,1,2,2,6,4,1,2,2,-.0014747589593753219,.3260438144207001,.5388113260269165,0,2,5,5,11,3,-1,5,6,11,1,3,-.0238303393125534,.7528941035270691,.4801219999790192,0,2,7,6,4,12,-1,7,12,4,6,2,.00693697901442647,.5335165858268738,.3261427879333496,0,2,12,13,8,5,-1,12,13,4,5,2,.008280625566840172,.458039402961731,.5737829804420471,0,2,7,6,1,12,-1,7,12,1,6,2,-.0104395002126694,.2592320144176483,.5233827829360962,39.1072883605957,80,0,2,1,2,6,3,-1,4,2,3,3,2,.0072006587870419025,.325888603925705,.6849808096885681,0,3,9,5,6,10,-1,12,5,3,5,2,9,10,3,5,2,-.002859358908608556,.5838881134986877,.2537829875946045,0,3,5,5,8,12,-1,5,5,4,6,2,9,11,4,6,2,.0006858052802272141,.5708081722259521,.2812424004077911,0,2,0,7,20,6,-1,0,9,20,2,3,.007958019152283669,.2501051127910614,.5544260740280151,0,2,4,2,2,2,-1,4,3,2,1,2,-.0012124150525778532,.2385368049144745,.5433350205421448,0,2,4,18,12,2,-1,8,18,4,2,3,.00794261321425438,.3955070972442627,.6220757961273193,0,2,7,4,4,16,-1,7,12,4,8,2,.0024630590341985226,.5639708042144775,.2992357909679413,0,2,7,6,7,8,-1,7,10,7,4,2,-.006039659958332777,.218651294708252,.541167676448822,0,2,6,3,3,1,-1,7,3,1,1,3,-.0012988339876756072,.23507060110569,.5364584922790527,0,2,11,15,2,4,-1,11,17,2,2,2,.00022299369447864592,.380411297082901,.572960615158081,0,2,3,5,4,8,-1,3,9,4,4,2,.0014654280385002494,.2510167956352234,.5258268713951111,0,2,7,1,6,12,-1,7,7,6,6,2,-.0008121004211716354,.5992823839187622,.3851158916950226,0,2,4,6,6,2,-1,6,6,2,2,3,-.0013836020370945334,.5681396126747131,.3636586964130402,0,2,16,4,4,6,-1,16,6,4,2,3,-.0279364492744207,.1491317003965378,.5377560257911682,0,2,3,3,5,2,-1,3,4,5,1,2,-.0004691955109592527,.3692429959774017,.5572484731674194,0,2,9,11,2,3,-1,9,12,2,1,3,-.004982965998351574,.6758509278297424,.4532504081726074,0,2,2,16,4,2,-1,2,17,4,1,2,.001881530974060297,.5368022918701172,.2932539880275726,0,3,7,13,6,6,-1,10,13,3,3,2,7,16,3,3,2,-.0190675500780344,.1649377048015595,.5330067276954651,0,2,7,0,3,4,-1,8,0,1,4,3,-.0046906559728085995,.1963925957679749,.5119361877441406,0,2,8,15,4,3,-1,8,16,4,1,3,.005977713968604803,.467117190361023,.7008398175239563,0,2,0,4,4,6,-1,0,6,4,2,3,-.0333031304180622,.1155416965484619,.5104162096977234,0,2,5,6,12,3,-1,9,6,4,3,3,.0907441079616547,.5149660110473633,.1306173056364059,0,2,7,6,6,14,-1,9,6,2,14,3,.0009355589863844216,.3605481088161469,.543985903263092,0,2,9,7,3,3,-1,10,7,1,3,3,.0149016501381993,.4886212050914764,.7687569856643677,0,2,6,12,2,4,-1,6,14,2,2,2,.0006159411859698594,.5356813073158264,.3240939080715179,0,2,10,12,7,6,-1,10,14,7,2,3,-.0506709888577461,.1848621964454651,.5230404138565063,0,2,1,0,15,2,-1,1,1,15,1,2,.0006866574985906482,.3840579986572266,.5517945885658264,0,2,14,0,6,6,-1,14,0,3,6,2,.008371243253350258,.4288564026355743,.6131753921508789,0,2,5,3,3,1,-1,6,3,1,1,3,-.0012953069526702166,.2913674116134644,.528073787689209,0,2,14,0,6,6,-1,14,0,3,6,2,-.0419416800141335,.7554799914360046,.4856030941009522,0,2,0,3,20,10,-1,0,8,20,5,2,-.0235293805599213,.2838279902935028,.5256081223487854,0,2,14,0,6,6,-1,14,0,3,6,2,.0408574491739273,.4870935082435608,.6277297139167786,0,2,0,0,6,6,-1,3,0,3,6,2,-.0254068691283464,.7099707722663879,.4575029015541077,0,2,19,15,1,2,-1,19,16,1,1,2,-.00041415440500713885,.4030886888504028,.5469412207603455,0,2,0,2,4,8,-1,2,2,2,8,2,.0218241196125746,.4502024054527283,.6768701076507568,0,3,2,1,18,4,-1,11,1,9,2,2,2,3,9,2,2,.0141140399500728,.5442860722541809,.3791700005531311,0,2,8,12,1,2,-1,8,13,1,1,2,6721459067193791e-20,.4200463891029358,.5873476266860962,0,3,5,2,10,6,-1,10,2,5,3,2,5,5,5,3,2,-.00794176384806633,.3792561888694763,.5585265755653381,0,2,9,7,2,4,-1,10,7,1,4,2,-.00721444096416235,.7253103852272034,.4603548943996429,0,2,9,7,3,3,-1,10,7,1,3,3,.002581733977422118,.4693301916122437,.5900238752365112,0,2,4,5,12,8,-1,8,5,4,8,3,.1340931951999664,.5149213075637817,.1808844953775406,0,2,15,15,4,3,-1,15,16,4,1,3,.0022962710354477167,.5399743914604187,.3717867136001587,0,2,8,18,3,1,-1,9,18,1,1,3,-.002157584996894002,.2408495992422104,.5148863792419434,0,2,9,13,4,3,-1,9,14,4,1,3,-.004919618833810091,.6573588252067566,.4738740026950836,0,2,7,13,4,3,-1,7,14,4,1,3,.0016267469618469477,.4192821979522705,.6303114295005798,0,2,19,15,1,2,-1,19,16,1,1,2,.00033413388882763684,.5540298223495483,.3702101111412048,0,2,0,15,8,4,-1,0,17,8,2,2,-.0266980808228254,.1710917949676514,.5101410746574402,0,2,9,3,6,4,-1,11,3,2,4,3,-.0305618792772293,.1904218047857285,.5168793797492981,0,2,8,14,4,3,-1,8,15,4,1,3,.002851154888048768,.4447506964206696,.6313853859901428,0,2,3,14,14,6,-1,3,16,14,2,3,-.0362114794552326,.2490727007389069,.5377349257469177,0,2,6,3,6,6,-1,6,6,6,3,2,-.002411518944427371,.5381243228912354,.3664236962795258,0,2,5,11,10,6,-1,5,14,10,3,2,-.0007725320174358785,.5530232191085815,.3541550040245056,0,2,3,10,3,4,-1,4,10,1,4,3,.0002948172914329916,.4132699072360992,.5667243003845215,0,2,13,9,2,2,-1,13,9,1,2,2,-.006233456078916788,.0987872332334518,.5198668837547302,0,2,5,3,6,4,-1,7,3,2,4,3,-.0262747295200825,.0911274924874306,.5028107166290283,0,2,9,7,3,3,-1,10,7,1,3,3,.005321226082742214,.4726648926734924,.6222720742225647,0,2,2,12,2,3,-1,2,13,2,1,3,-.004112905822694302,.2157457023859024,.5137804746627808,0,2,9,8,3,12,-1,9,12,3,4,3,.0032457809429615736,.5410770773887634,.3721776902675629,0,3,3,14,4,6,-1,3,14,2,3,2,5,17,2,3,2,-.0163597092032433,.7787874937057495,.4685291945934296,0,2,16,15,2,2,-1,16,16,2,1,2,.00032166109303943813,.5478987097740173,.4240373969078064,0,2,2,15,2,2,-1,2,16,2,1,2,.000644524407107383,.5330560803413391,.3501324951648712,0,2,8,12,4,3,-1,8,13,4,1,3,-.0078909732401371,.6923521161079407,.4726569056510925,0,2,0,7,20,1,-1,10,7,10,1,2,.048336211591959,.50559002161026,.0757492035627365,0,2,7,6,8,3,-1,7,6,4,3,2,-.000751781277358532,.3783741891384125,.5538573861122131,0,2,5,7,8,2,-1,9,7,4,2,2,-.002495391061529517,.3081651031970978,.5359612107276917,0,2,9,7,3,5,-1,10,7,1,5,3,-.0022385010961443186,.663395881652832,.4649342894554138,0,2,8,7,3,5,-1,9,7,1,5,3,-.0017988430336117744,.6596844792366028,.4347187876701355,0,2,11,1,3,5,-1,12,1,1,5,3,.008786091580986977,.523183286190033,.2315579950809479,0,2,6,2,3,6,-1,7,2,1,6,3,.003671538084745407,.520425021648407,.2977376878261566,0,2,14,14,6,5,-1,14,14,3,5,2,-.0353364497423172,.7238878011703491,.4861505031585693,0,2,9,8,2,2,-1,9,9,2,1,2,-.0006918924045749009,.3105022013187408,.5229824781417847,0,2,10,7,1,3,-1,10,8,1,1,3,-.003394610946998,.3138968050479889,.5210173726081848,0,3,6,6,2,2,-1,6,6,1,1,2,7,7,1,1,2,.0009856928372755647,.4536580145359039,.6585097908973694,0,3,2,11,18,4,-1,11,11,9,2,2,2,13,9,2,2,-.0501631014049053,.1804454028606415,.5198916792869568,0,3,6,6,2,2,-1,6,6,1,1,2,7,7,1,1,2,-.0022367259953171015,.7255702018737793,.4651359021663666,0,2,0,15,20,2,-1,0,16,20,1,2,.0007432628772221506,.4412921071052551,.5898545980453491,0,2,4,14,2,3,-1,4,15,2,1,3,-.0009348518215119839,.3500052988529205,.5366017818450928,0,2,8,14,4,3,-1,8,15,4,1,3,.0174979399889708,.4912194907665253,.8315284848213196,0,2,8,7,2,3,-1,8,8,2,1,3,-.0015200000489130616,.3570275902748108,.537056028842926,0,2,9,10,2,3,-1,9,11,2,1,3,.0007800394087098539,.4353772103786469,.5967335104942322,50.61048126220703,103,0,2,5,4,10,4,-1,5,6,10,2,2,-.00999455526471138,.6162583231925964,.3054533004760742,0,3,9,7,6,4,-1,12,7,3,2,2,9,9,3,2,2,-.001108522992581129,.5818294882774353,.3155578076839447,0,2,4,7,3,6,-1,4,9,3,2,3,.001036438043229282,.2552052140235901,.5692911744117737,0,3,11,15,4,4,-1,13,15,2,2,2,11,17,2,2,2,.000682113110087812,.3685089945793152,.5934931039810181,0,2,7,8,4,2,-1,7,9,4,1,2,-.0006805734010413289,.2332392036914825,.5474792122840881,0,2,13,1,4,3,-1,13,1,2,3,2,.0002606878988444805,.325745701789856,.5667545795440674,0,3,5,15,4,4,-1,5,15,2,2,2,7,17,2,2,2,.0005160737200640142,.3744716942310333,.5845472812652588,0,2,9,5,4,7,-1,9,5,2,7,2,.0008500752155669034,.3420371115207672,.5522807240486145,0,2,5,6,8,3,-1,9,6,4,3,2,-.0018607829697430134,.2804419994354248,.5375424027442932,0,2,9,9,2,2,-1,9,10,2,1,2,-.001503397012129426,.2579050958156586,.5498952269554138,0,2,7,15,5,3,-1,7,16,5,1,3,.0023478909861296415,.4175156056880951,.6313710808753967,0,2,11,10,4,3,-1,11,10,2,3,2,-.00028880240279249847,.5865169763565063,.4052666127681732,0,2,6,9,8,10,-1,6,14,8,5,2,.008940547704696655,.5211141109466553,.231865406036377,0,2,10,11,6,2,-1,10,11,3,2,2,-.0193277392536402,.2753432989120483,.5241525769233704,0,2,4,11,6,2,-1,7,11,3,2,2,-.0002020206011366099,.5722978711128235,.3677195906639099,0,2,11,3,8,1,-1,11,3,4,1,2,.002117906929925084,.4466108083724976,.5542430877685547,0,2,6,3,3,2,-1,7,3,1,2,3,-.0017743760254234076,.2813253104686737,.5300959944725037,0,2,14,5,6,5,-1,14,5,3,5,2,.004223445896059275,.439970999956131,.5795428156852722,0,2,7,5,2,12,-1,7,11,2,6,2,-.0143752200528979,.2981117963790894,.5292059183120728,0,2,8,11,4,3,-1,8,12,4,1,3,-.0153491804376245,.7705215215682983,.4748171865940094,0,2,4,1,2,3,-1,5,1,1,3,2,15152279956964776e-21,.3718844056129456,.5576897263526917,0,2,18,3,2,6,-1,18,5,2,2,3,-.009129391983151436,.3615196049213409,.5286766886711121,0,2,0,3,2,6,-1,0,5,2,2,3,.0022512159775942564,.5364704728126526,.3486298024654388,0,2,9,12,2,3,-1,9,13,2,1,3,-.0049696918576955795,.6927651762962341,.4676836133003235,0,2,7,13,4,3,-1,7,14,4,1,3,-.0128290103748441,.7712153792381287,.4660735130310059,0,2,18,0,2,6,-1,18,2,2,2,3,-.009366006590425968,.3374983966350555,.5351287722587585,0,2,0,0,2,6,-1,0,2,2,2,3,.0032452319283038378,.5325189828872681,.3289610147476196,0,2,8,14,6,3,-1,8,15,6,1,3,-.0117235602810979,.6837652921676636,.4754300117492676,0,2,7,4,2,4,-1,8,4,1,4,2,2925794069597032e-20,.357208788394928,.5360502004623413,0,2,8,5,4,6,-1,8,7,4,2,3,-22244219508138485e-21,.5541427135467529,.3552064001560211,0,2,6,4,2,2,-1,7,4,1,2,2,.005088150966912508,.5070844292640686,.1256462037563324,0,3,3,14,14,4,-1,10,14,7,2,2,3,16,7,2,2,.0274296794086695,.5269560217857361,.1625818014144898,0,3,6,15,6,2,-1,6,15,3,1,2,9,16,3,1,2,-.00641428679227829,.7145588994026184,.4584197103977203,0,2,14,15,6,2,-1,14,16,6,1,2,.003347995923832059,.5398612022399902,.3494696915149689,0,2,2,12,12,8,-1,2,16,12,4,2,-.0826354920864105,.2439192980527878,.5160226225852966,0,2,7,7,7,2,-1,7,8,7,1,2,.0010261740535497665,.3886891901493073,.5767908096313477,0,2,0,2,18,2,-1,0,3,18,1,2,-.0016307090409100056,.3389458060264587,.5347700715065002,0,2,9,6,2,5,-1,9,6,1,5,2,.0024546680506318808,.4601413905620575,.638724684715271,0,2,7,5,3,8,-1,8,5,1,8,3,-.0009947651997208595,.5769879221916199,.4120396077632904,0,2,9,6,3,4,-1,10,6,1,4,3,.0154091902077198,.4878709018230438,.7089822292327881,0,2,4,13,3,2,-1,4,14,3,1,2,.001178440055809915,.5263553261756897,.2895244956016541,0,2,9,4,6,3,-1,11,4,2,3,3,-.0277019198983908,.149882897734642,.5219606757164001,0,2,5,4,6,3,-1,7,4,2,3,3,-.0295053999871016,.024893319234252,.4999816119670868,0,2,14,11,5,2,-1,14,12,5,1,2,.0004515943001024425,.5464622974395752,.4029662907123566,0,2,1,2,6,9,-1,3,2,2,9,3,.007177263963967562,.4271056950092316,.5866296887397766,0,2,14,6,6,13,-1,14,6,3,13,2,-.0741820484399796,.6874179244041443,.4919027984142304,0,3,3,6,14,8,-1,3,6,7,4,2,10,10,7,4,2,-.0172541607171297,.3370676040649414,.534873902797699,0,2,16,0,4,11,-1,16,0,2,11,2,.0148515598848462,.4626792967319489,.6129904985427856,0,3,3,4,12,12,-1,3,4,6,6,2,9,10,6,6,2,.0100020002573729,.5346122980117798,.3423453867435455,0,2,11,4,5,3,-1,11,5,5,1,3,.0020138120744377375,.4643830060958862,.5824304223060608,0,2,4,11,4,2,-1,4,12,4,1,2,.0015135470312088728,.5196396112442017,.2856149971485138,0,2,10,7,2,2,-1,10,7,1,2,2,.003138143103569746,.4838162958621979,.5958529710769653,0,2,8,7,2,2,-1,9,7,1,2,2,-.005145044066011906,.8920302987098694,.4741412103176117,0,2,9,17,3,2,-1,10,17,1,2,3,-.004473670851439238,.2033942937850952,.5337278842926025,0,2,5,6,3,3,-1,5,7,3,1,3,.001962847076356411,.457163393497467,.6725863218307495,0,2,10,0,3,3,-1,11,0,1,3,3,.005426045041531324,.5271108150482178,.2845670878887177,0,3,5,6,6,2,-1,5,6,3,1,2,8,7,3,1,2,.0004961146041750908,.4138312935829163,.5718597769737244,0,2,12,16,4,3,-1,12,17,4,1,3,.009372878819704056,.5225151181221008,.2804847061634064,0,2,3,12,3,2,-1,3,13,3,1,2,.0006050089723430574,.523676872253418,.3314523994922638,0,2,9,12,3,2,-1,9,13,3,1,2,.0005679255118593574,.4531059861183167,.6276971101760864,0,3,1,11,16,4,-1,1,11,8,2,2,9,13,8,2,2,.0246443394571543,.5130851864814758,.2017143964767456,0,2,12,4,3,3,-1,12,5,3,1,3,-.0102904504165053,.7786595225334167,.4876641035079956,0,2,4,4,5,3,-1,4,5,5,1,3,.002062941901385784,.4288598895072937,.5881264209747314,0,2,12,16,4,3,-1,12,17,4,1,3,-.005051948130130768,.3523977994918823,.5286008715629578,0,2,5,4,3,3,-1,5,5,3,1,3,-.0057692620903253555,.6841086149215698,.4588094055652618,0,2,9,0,2,2,-1,9,1,2,1,2,-.0004578994121402502,.356552004814148,.5485978126525879,0,2,8,9,4,2,-1,8,10,4,1,2,-.0007591883768327534,.336879312992096,.5254197120666504,0,2,8,8,4,3,-1,8,9,4,1,3,-.001773725962266326,.3422161042690277,.5454015135765076,0,2,0,13,6,3,-1,2,13,2,3,3,-.008561046794056892,.6533612012863159,.4485856890678406,0,2,16,14,3,2,-1,16,15,3,1,2,.0017277270089834929,.5307580232620239,.3925352990627289,0,2,1,18,18,2,-1,7,18,6,2,3,-.0281996093690395,.685745894908905,.4588584005832672,0,2,16,14,3,2,-1,16,15,3,1,2,-.001778110978193581,.4037851095199585,.5369856953620911,0,2,1,14,3,2,-1,1,15,3,1,2,.00033177141449414194,.539979875087738,.3705750107765198,0,2,7,14,6,3,-1,7,15,6,1,3,.0026385399978607893,.4665437042713165,.6452730894088745,0,2,5,14,8,3,-1,5,15,8,1,3,-.0021183069329708815,.5914781093597412,.4064677059650421,0,2,10,6,4,14,-1,10,6,2,14,2,-.0147732896730304,.3642038106918335,.5294762849807739,0,2,6,6,4,14,-1,8,6,2,14,2,-.0168154407292604,.2664231956005096,.5144972801208496,0,2,13,5,2,3,-1,13,6,2,1,3,-.006337014026939869,.6779531240463257,.4852097928524017,0,2,7,16,6,1,-1,9,16,2,1,3,-44560048991115764e-21,.5613964796066284,.4153054058551788,0,2,9,12,3,3,-1,9,13,3,1,3,-.0010240620467811823,.5964478254318237,.4566304087638855,0,2,7,0,3,3,-1,8,0,1,3,3,-.00231616897508502,.2976115047931671,.5188159942626953,0,2,4,0,16,18,-1,4,9,16,9,2,.5321757197380066,.5187839269638062,.220263198018074,0,2,1,1,16,14,-1,1,8,16,7,2,-.1664305031299591,.1866022944450378,.5060343146324158,0,2,3,9,15,4,-1,8,9,5,4,3,.112535297870636,.5212125182151794,.1185022965073586,0,2,6,12,7,3,-1,6,13,7,1,3,.009304686449468136,.4589937031269074,.6826149225234985,0,2,14,15,2,3,-1,14,16,2,1,3,-.004625509958714247,.3079940974712372,.5225008726119995,0,3,2,3,16,14,-1,2,3,8,7,2,10,10,8,7,2,-.1111646965146065,.2101044058799744,.5080801844596863,0,3,16,2,4,18,-1,18,2,2,9,2,16,11,2,9,2,-.0108884396031499,.5765355229377747,.4790464043617249,0,2,4,15,2,3,-1,4,16,2,1,3,.005856430158019066,.5065100193023682,.1563598960638046,0,3,16,2,4,18,-1,18,2,2,9,2,16,11,2,9,2,.0548543892800808,.49669149518013,.7230510711669922,0,2,1,1,8,3,-1,1,2,8,1,3,-.0111973397433758,.2194979041814804,.5098798274993896,0,2,8,11,4,3,-1,8,12,4,1,3,.004406907130032778,.4778401851654053,.6770902872085571,0,2,5,11,5,9,-1,5,14,5,3,3,-.0636652931571007,.1936362981796265,.5081024169921875,0,2,16,0,4,11,-1,16,0,2,11,2,-.009808149188756943,.599906325340271,.4810341000556946,0,2,7,0,6,1,-1,9,0,2,1,3,-.0021717099007219076,.3338333964347839,.5235472917556763,0,2,16,3,3,7,-1,17,3,1,7,3,-.0133155202493072,.6617069840431213,.4919213056564331,0,2,1,3,3,7,-1,2,3,1,7,3,.002544207964092493,.4488744139671326,.6082184910774231,0,2,7,8,6,12,-1,7,12,6,4,3,.0120378397405148,.540939211845398,.3292432129383087,0,2,0,0,4,11,-1,2,0,2,11,2,-.0207010507583618,.6819120049476624,.4594995975494385,0,2,14,0,6,20,-1,14,0,3,20,2,.0276082791388035,.4630792140960693,.5767282843589783,0,2,0,3,1,2,-1,0,4,1,1,2,.0012370620388537645,.5165379047393799,.2635016143321991,0,3,5,5,10,8,-1,10,5,5,4,2,5,9,5,4,2,-.037669338285923,.2536393105983734,.5278980135917664,0,3,4,7,12,4,-1,4,7,6,2,2,10,9,6,2,2,-.0018057259730994701,.3985156118869782,.5517500042915344,54.62007141113281,111,0,2,2,1,6,4,-1,5,1,3,4,2,.004429902881383896,.2891018092632294,.633522629737854,0,3,9,7,6,4,-1,12,7,3,2,2,9,9,3,2,2,-.0023813319858163595,.621178925037384,.3477487862110138,0,2,5,6,2,6,-1,5,9,2,3,2,.0022915711160749197,.2254412025213242,.5582118034362793,0,3,9,16,6,4,-1,12,16,3,2,2,9,18,3,2,2,.0009945794008672237,.3711710870265961,.5930070877075195,0,2,9,4,2,12,-1,9,10,2,6,2,.0007716466789133847,.565172016620636,.334799587726593,0,2,7,1,6,18,-1,9,1,2,18,3,-.001138641033321619,.3069126009941101,.5508630871772766,0,2,4,12,12,2,-1,8,12,4,2,3,-.0001640303962631151,.576282799243927,.3699047863483429,0,2,8,8,6,2,-1,8,9,6,1,2,29793529392918572e-21,.2644244134426117,.5437911152839661,0,2,8,0,3,6,-1,9,0,1,6,3,.008577490225434303,.5051138997077942,.1795724928379059,0,2,11,18,3,2,-1,11,19,3,1,2,-.0002603268949314952,.5826969146728516,.4446826875209808,0,2,1,1,17,4,-1,1,3,17,2,2,-.006140463054180145,.3113852143287659,.5346971750259399,0,2,11,8,4,12,-1,11,8,2,12,2,-.0230869501829147,.32779461145401,.533119797706604,0,2,8,14,4,3,-1,8,15,4,1,3,-.0142436502501369,.7381709814071655,.4588063061237335,0,2,12,3,2,17,-1,12,3,1,17,2,.0194871295243502,.5256630778312683,.2274471968412399,0,2,4,7,6,1,-1,6,7,2,1,3,-.0009668110869824886,.5511230826377869,.3815006911754608,0,2,18,3,2,3,-1,18,4,2,1,3,.003147470997646451,.5425636768341064,.2543726861476898,0,2,8,4,3,4,-1,8,6,3,2,2,-.00018026070029009134,.5380191802978516,.3406304121017456,0,2,4,5,12,10,-1,4,10,12,5,2,-.006026626098901033,.3035801947116852,.54205721616745,0,2,5,18,4,2,-1,7,18,2,2,2,.00044462960795499384,.3990997076034546,.5660110116004944,0,2,17,2,3,6,-1,17,4,3,2,3,.002260976005345583,.5562806725502014,.3940688073635101,0,2,7,7,6,6,-1,9,7,2,6,3,.0511330589652061,.4609653949737549,.7118561863899231,0,2,17,2,3,6,-1,17,4,3,2,3,-.0177863091230392,.2316166013479233,.5322144031524658,0,2,8,0,3,4,-1,9,0,1,4,3,-.004967962857335806,.233077198266983,.5122029185295105,0,2,9,14,2,3,-1,9,15,2,1,3,.002066768938675523,.4657444059848785,.6455488204956055,0,2,0,12,6,3,-1,0,13,6,1,3,.007441376801580191,.5154392123222351,.236163392663002,0,2,8,14,4,3,-1,8,15,4,1,3,-.003627727972343564,.6219773292541504,.4476661086082459,0,2,3,12,2,3,-1,3,13,2,1,3,-.005353075917810202,.1837355047464371,.5102208256721497,0,2,5,6,12,7,-1,9,6,4,7,3,.1453091949224472,.5145987272262573,.1535930931568146,0,2,0,2,3,6,-1,0,4,3,2,3,.0024394490756094456,.5343660116195679,.3624661862850189,0,2,14,6,1,3,-1,14,7,1,1,3,-.003128339070826769,.6215007901191711,.4845592081546783,0,2,2,0,3,14,-1,3,0,1,14,3,.0017940260004252195,.4299261868000031,.5824198126792908,0,2,12,14,5,6,-1,12,16,5,2,3,.0362538211047649,.5260334014892578,.1439467966556549,0,2,4,14,5,6,-1,4,16,5,2,3,-.005174672231078148,.350653886795044,.5287045240402222,0,3,11,10,2,2,-1,12,10,1,1,2,11,11,1,1,2,.0006538329762406647,.4809640944004059,.6122040152549744,0,2,5,0,3,14,-1,6,0,1,14,3,-.0264802295714617,.1139362007379532,.5045586228370667,0,2,10,15,2,3,-1,10,16,2,1,3,-.0030440660193562508,.6352095007896423,.4794734120368958,0,2,0,2,2,3,-1,0,3,2,1,3,.0036993520334362984,.5131118297576904,.2498510926961899,0,2,5,11,12,6,-1,5,14,12,3,2,-.0003676293126773089,.54213947057724,.3709532022476196,0,2,6,11,3,9,-1,6,14,3,3,3,-.041382260620594,.1894959956407547,.5081691741943359,0,3,11,10,2,2,-1,12,10,1,1,2,11,11,1,1,2,-.0010532729793339968,.645436704158783,.4783608913421631,0,2,5,6,1,3,-1,5,7,1,1,3,-.0021648600231856108,.6215031147003174,.449982613325119,0,2,4,9,13,3,-1,4,10,13,1,3,-.0005674774874933064,.3712610900402069,.5419334769248962,0,2,1,7,15,6,-1,6,7,5,6,3,.173758402466774,.5023643970489502,.1215742006897926,0,2,4,5,12,6,-1,8,5,4,6,3,-.0029049699660390615,.3240267932415009,.5381883978843689,0,2,8,10,4,3,-1,8,11,4,1,3,.0012299539521336555,.4165507853031158,.5703486204147339,0,2,15,14,1,3,-1,15,15,1,1,3,-.0005432923790067434,.3854042887687683,.554754912853241,0,2,1,11,5,3,-1,1,12,5,1,3,-.008329725824296474,.2204494029283524,.5097082853317261,0,2,7,1,7,12,-1,7,7,7,6,2,-.00010417630255687982,.560706615447998,.4303036034107208,0,3,0,1,6,10,-1,0,1,3,5,2,3,6,3,5,2,.0312047004699707,.4621657133102417,.6982004046440125,0,2,16,1,4,3,-1,16,2,4,1,3,.007894350215792656,.5269594192504883,.226906806230545,0,2,5,5,2,3,-1,5,6,2,1,3,-.004364531021565199,.6359223127365112,.4537956118583679,0,2,12,2,3,5,-1,13,2,1,5,3,.007679305970668793,.5274767875671387,.274048388004303,0,2,0,3,4,6,-1,0,5,4,2,3,-.0254311393946409,.2038519978523254,.5071732997894287,0,2,8,12,4,2,-1,8,13,4,1,2,.0008200060110539198,.4587455093860626,.6119868159294128,0,2,8,18,3,1,-1,9,18,1,1,3,.002928460016846657,.5071274042129517,.2028204947710037,0,3,11,10,2,2,-1,12,10,1,1,2,11,11,1,1,2,4525647091213614e-20,.4812104105949402,.5430821776390076,0,3,7,10,2,2,-1,7,10,1,1,2,8,11,1,1,2,.0013158309739083052,.4625813961029053,.6779323220252991,0,2,11,11,4,4,-1,11,13,4,2,2,.0015870389761403203,.5386291742324829,.3431465029716492,0,2,8,12,3,8,-1,9,12,1,8,3,-.0215396601706743,.025942500680685,.5003222823143005,0,2,13,0,6,3,-1,13,1,6,1,3,.014334480278194,.5202844738960266,.1590632945299149,0,2,8,8,3,4,-1,9,8,1,4,3,-.008388138376176357,.728248119354248,.4648044109344482,0,3,5,7,10,10,-1,10,7,5,5,2,5,12,5,5,2,.00919068418443203,.556235671043396,.3923191130161285,0,3,3,18,8,2,-1,3,18,4,1,2,7,19,4,1,2,-.005845305975526571,.6803392767906189,.4629127979278565,0,2,10,2,6,8,-1,12,2,2,8,3,-.0547077991068363,.2561671137809753,.5206125974655151,0,2,4,2,6,8,-1,6,2,2,8,3,.009114277549088001,.518962025642395,.3053877055644989,0,2,11,0,3,7,-1,12,0,1,7,3,-.0155750000849366,.1295074969530106,.5169094800949097,0,2,7,11,2,1,-1,8,11,1,1,2,-.0001205060034408234,.5735098123550415,.4230825006961823,0,2,15,14,1,3,-1,15,15,1,1,3,.0012273970060050488,.5289878249168396,.4079791903495789,0,3,7,15,2,2,-1,7,15,1,1,2,8,16,1,1,2,-.0012186600361019373,.6575639843940735,.4574409127235413,0,2,15,14,1,3,-1,15,15,1,1,3,-.0033256649039685726,.3628047108650208,.5195019841194153,0,2,6,0,3,7,-1,7,0,1,7,3,-.0132883097976446,.1284265965223312,.504348874092102,0,2,18,1,2,7,-1,18,1,1,7,2,-.0033839771058410406,.6292240023612976,.475750595331192,0,2,2,0,8,20,-1,2,10,8,10,2,-.2195422053337097,.148773193359375,.5065013766288757,0,2,3,0,15,6,-1,3,2,15,2,3,.004911170806735754,.425610214471817,.5665838718414307,0,2,4,3,12,2,-1,4,4,12,1,2,-.00018744950648397207,.4004144072532654,.5586857199668884,0,2,16,0,4,5,-1,16,0,2,5,2,-.00521786417812109,.6009116172790527,.4812706112861633,0,2,7,0,3,4,-1,8,0,1,4,3,-.0011111519997939467,.3514933884143829,.5287089943885803,0,2,16,0,4,5,-1,16,0,2,5,2,.004403640050441027,.4642275869846344,.5924085974693298,0,2,1,7,6,13,-1,3,7,2,13,3,.1229949966073036,.5025529265403748,.0691524818539619,0,2,16,0,4,5,-1,16,0,2,5,2,-.0123135102912784,.5884591937065125,.4934012889862061,0,2,0,0,4,5,-1,2,0,2,5,2,.004147103987634182,.4372239112854004,.589347779750824,0,2,14,12,3,6,-1,14,14,3,2,3,-.003550264984369278,.4327551126480103,.5396270155906677,0,2,3,12,3,6,-1,3,14,3,2,3,-.0192242693156004,.1913134008646011,.5068330764770508,0,2,16,1,4,3,-1,16,2,4,1,3,.0014395059552043676,.5308178067207336,.424353301525116,0,3,8,7,2,10,-1,8,7,1,5,2,9,12,1,5,2,-.00677519990131259,.6365395784378052,.4540086090564728,0,2,11,11,4,4,-1,11,13,4,2,2,.007011963054537773,.5189834237098694,.302619993686676,0,2,0,1,4,3,-1,0,2,4,1,3,.005401465110480785,.5105062127113342,.2557682991027832,0,2,13,4,1,3,-1,13,5,1,1,3,.0009027498890645802,.4696914851665497,.5861827731132507,0,2,7,15,3,5,-1,8,15,1,5,3,.0114744501188397,.5053645968437195,.152717798948288,0,2,9,7,3,5,-1,10,7,1,5,3,-.006702343001961708,.6508980989456177,.4890604019165039,0,2,8,7,3,5,-1,9,7,1,5,3,-.0020462959073483944,.6241816878318787,.4514600038528442,0,2,10,6,4,14,-1,10,6,2,14,2,-.009995156899094582,.3432781100273132,.5400953888893127,0,2,0,5,5,6,-1,0,7,5,2,3,-.0357007086277008,.1878059059381485,.5074077844619751,0,2,9,5,6,4,-1,9,5,3,4,2,.0004558456130325794,.3805277049541473,.5402569770812988,0,2,0,0,18,10,-1,6,0,6,10,3,-.0542606003582478,.6843714714050293,.4595097005367279,0,2,10,6,4,14,-1,10,6,2,14,2,.0060600461438298225,.5502905249595642,.450052797794342,0,2,6,6,4,14,-1,8,6,2,14,2,-.006479183211922646,.3368858098983765,.5310757160186768,0,2,13,4,1,3,-1,13,5,1,1,3,-.0014939469983801246,.6487640142440796,.4756175875663757,0,2,5,1,2,3,-1,6,1,1,3,2,14610530342906713e-21,.403457909822464,.5451064109802246,0,3,18,1,2,18,-1,19,1,1,9,2,18,10,1,9,2,-.00723219383507967,.6386873722076416,.4824739992618561,0,2,2,1,4,3,-1,2,2,4,1,3,-.004064581822603941,.2986421883106232,.5157335996627808,0,3,18,1,2,18,-1,19,1,1,9,2,18,10,1,9,2,.0304630808532238,.5022199749946594,.7159956097602844,0,3,1,14,4,6,-1,1,14,2,3,2,3,17,2,3,2,-.008054491132497787,.6492452025413513,.4619275033473969,0,2,10,11,7,6,-1,10,13,7,2,3,.0395051389932632,.5150570869445801,.2450613975524902,0,3,0,10,6,10,-1,0,10,3,5,2,3,15,3,5,2,.008453020825982094,.4573669135570526,.6394037008285522,0,2,11,0,3,4,-1,12,0,1,4,3,-.0011688120430335402,.3865512013435364,.548366129398346,0,2,5,10,5,6,-1,5,13,5,3,2,.002807067008689046,.5128579139709473,.2701480090618134,0,2,14,6,1,8,-1,14,10,1,4,2,.000473652093205601,.4051581919193268,.5387461185455322,0,3,1,7,18,6,-1,1,7,9,3,2,10,10,9,3,2,.0117410803213716,.5295950174331665,.3719413876533508,0,2,9,7,2,2,-1,9,7,1,2,2,.0031833238899707794,.4789406955242157,.6895126104354858,0,2,5,9,4,5,-1,7,9,2,5,2,.0007024150108918548,.5384489297866821,.3918080925941467,50.16973114013672,102,0,2,7,6,6,3,-1,9,6,2,3,3,.0170599296689034,.3948527872562408,.7142534852027893,0,2,1,0,18,4,-1,7,0,6,4,3,.0218408405780792,.3370316028594971,.6090016961097717,0,2,7,15,2,4,-1,7,17,2,2,2,.00024520049919374287,.3500576019287109,.5987902283668518,0,2,1,0,19,9,-1,1,3,19,3,3,.008327260613441467,.3267528116703033,.5697240829467773,0,2,3,7,3,6,-1,3,9,3,2,3,.0005714829894714057,.3044599890708923,.5531656742095947,0,3,13,7,4,4,-1,15,7,2,2,2,13,9,2,2,2,.0006737398798577487,.3650012016296387,.567263126373291,0,3,3,7,4,4,-1,3,7,2,2,2,5,9,2,2,2,3468159047770314e-20,.3313541114330292,.5388727188110352,0,2,9,6,10,8,-1,9,10,10,4,2,-.005856339819729328,.2697942852973938,.5498778820037842,0,2,3,8,14,12,-1,3,14,14,6,2,.00851022731512785,.5269358158111572,.2762879133224487,0,3,6,5,10,12,-1,11,5,5,6,2,6,11,5,6,2,-.0698172077536583,.2909603118896484,.5259246826171875,0,2,9,11,2,3,-1,9,12,2,1,3,-.0008611367084085941,.5892577171325684,.4073697924613953,0,2,9,5,6,5,-1,9,5,3,5,2,.0009714924963191152,.3523564040660858,.5415862202644348,0,2,9,4,2,4,-1,9,6,2,2,2,-1472749045206001e-20,.5423017740249634,.3503156006336212,0,2,9,5,6,5,-1,9,5,3,5,2,.0484202913939953,.51939457654953,.3411195874214172,0,2,5,5,6,5,-1,8,5,3,5,2,.0013257140526548028,.315776914358139,.5335376262664795,0,2,11,2,6,1,-1,13,2,2,1,3,1492214960308047e-20,.4451299905776978,.5536553859710693,0,2,3,2,6,1,-1,5,2,2,1,3,-.002717339899390936,.3031741976737976,.5248088836669922,0,2,13,5,2,3,-1,13,6,2,1,3,.0029219500720500946,.4781453013420105,.6606041789054871,0,2,0,10,1,4,-1,0,12,1,2,2,-.0019804988987743855,.3186308145523071,.5287625193595886,0,2,13,5,2,3,-1,13,6,2,1,3,-.004001210909336805,.6413596868515015,.4749928116798401,0,2,8,18,3,2,-1,9,18,1,2,3,-.004349199123680592,.1507498025894165,.5098996758460999,0,2,6,15,9,2,-1,6,16,9,1,2,.0013490889687091112,.4316158890724182,.5881167054176331,0,2,8,14,4,3,-1,8,15,4,1,3,.0185970701277256,.4735553860664368,.9089794158935547,0,2,18,4,2,4,-1,18,6,2,2,2,-.001856237999163568,.3553189039230347,.5577837228775024,0,2,5,5,2,3,-1,5,6,2,1,3,.002294043079018593,.4500094950199127,.6580877900123596,0,2,15,16,3,2,-1,15,17,3,1,2,.00029982850537635386,.5629242062568665,.3975878953933716,0,2,0,0,3,9,-1,0,3,3,3,3,.0035455459728837013,.5381547212600708,.3605485856533051,0,2,9,7,3,3,-1,9,8,3,1,3,.009610472247004509,.5255997180938721,.1796745955944061,0,2,8,7,3,3,-1,8,8,3,1,3,-.0062783220782876015,.227285698056221,.5114030241966248,0,2,9,5,2,6,-1,9,5,1,6,2,.0034598479978740215,.4626308083534241,.6608219146728516,0,2,8,6,3,4,-1,9,6,1,4,3,-.0013112019514665008,.6317539811134338,.4436857998371124,0,3,7,6,8,12,-1,11,6,4,6,2,7,12,4,6,2,.002687617903575301,.5421109795570374,.4054022133350372,0,3,5,6,8,12,-1,5,6,4,6,2,9,12,4,6,2,.003911816980689764,.5358477830886841,.3273454904556274,0,2,12,4,3,3,-1,12,5,3,1,3,-.014206450432539,.7793576717376709,.4975781142711639,0,2,2,16,3,2,-1,2,17,3,1,2,.0007170552853494883,.5297319889068604,.3560903966426849,0,2,12,4,3,3,-1,12,5,3,1,3,.001663501956500113,.467809408903122,.5816481709480286,0,2,2,12,6,6,-1,2,14,6,2,3,.0033686188980937004,.5276734232902527,.3446420133113861,0,2,7,13,6,3,-1,7,14,6,1,3,.0127995302900672,.4834679961204529,.7472159266471863,0,2,6,14,6,3,-1,6,15,6,1,3,.0033901201095432043,.4511859118938446,.6401721239089966,0,2,14,15,5,3,-1,14,16,5,1,3,.004707077983766794,.533565878868103,.355522096157074,0,2,5,4,3,3,-1,5,5,3,1,3,.0014819339849054813,.4250707030296326,.5772724151611328,0,2,14,15,5,3,-1,14,16,5,1,3,-.0069995759986341,.3003320097923279,.5292900204658508,0,2,5,3,6,2,-1,7,3,2,2,3,.0159390103071928,.5067319273948669,.1675581932067871,0,2,8,15,4,3,-1,8,16,4,1,3,.007637734990566969,.4795069992542267,.7085601091384888,0,2,1,15,5,3,-1,1,16,5,1,3,.006733404006808996,.5133113265037537,.2162470072507858,0,3,8,13,4,6,-1,10,13,2,3,2,8,16,2,3,2,-.012858809903264,.1938841938972473,.525137186050415,0,2,7,8,3,3,-1,8,8,1,3,3,-.0006227080011740327,.5686538219451904,.419786810874939,0,2,12,0,5,4,-1,12,2,5,2,2,-.0005265168147161603,.4224168956279755,.5429695844650269,0,3,0,2,20,2,-1,0,2,10,1,2,10,3,10,1,2,.0110750999301672,.5113775134086609,.2514517903327942,0,2,1,0,18,4,-1,7,0,6,4,3,-.0367282517254353,.7194662094116211,.4849618971347809,0,2,4,3,6,1,-1,6,3,2,1,3,-.00028207109426148236,.3840261995792389,.539444625377655,0,2,4,18,13,2,-1,4,19,13,1,2,-.0027489690110087395,.593708872795105,.4569182097911835,0,2,2,10,3,6,-1,2,12,3,2,3,.0100475195795298,.5138576030731201,.2802298069000244,0,3,14,12,6,8,-1,17,12,3,4,2,14,16,3,4,2,-.008149784058332443,.6090037226676941,.4636121094226837,0,3,4,13,10,6,-1,4,13,5,3,2,9,16,5,3,2,-.006883388850837946,.3458611071109772,.5254660248756409,0,2,14,12,1,2,-1,14,13,1,1,2,-140393603942357e-19,.5693104267120361,.4082083106040955,0,2,8,13,4,3,-1,8,14,4,1,3,.001549841952510178,.4350537061691284,.5806517004966736,0,2,14,12,2,2,-1,14,13,2,1,2,-.006784149911254644,.1468873023986816,.5182775259017944,0,2,4,12,2,2,-1,4,13,2,1,2,.00021705629478674382,.5293524265289307,.345617413520813,0,2,8,12,9,2,-1,8,13,9,1,2,.00031198898795992136,.4652450978755951,.5942413806915283,0,2,9,14,2,3,-1,9,15,2,1,3,.005450753029435873,.4653508961200714,.7024846076965332,0,2,11,10,3,6,-1,11,13,3,3,2,-.00025818689027801156,.5497295260429382,.3768967092037201,0,2,5,6,9,12,-1,5,12,9,6,2,-.0174425393342972,.3919087946414948,.5457497835159302,0,2,11,10,3,6,-1,11,13,3,3,2,-.045343529433012,.1631357073783875,.5154908895492554,0,2,6,10,3,6,-1,6,13,3,3,2,.0019190689781680703,.514589786529541,.2791895866394043,0,2,5,4,11,3,-1,5,5,11,1,3,-.006017786916345358,.6517636179924011,.4756332933902741,0,2,7,1,5,10,-1,7,6,5,5,2,-.004072073847055435,.5514652729034424,.4092685878276825,0,2,2,8,18,2,-1,2,9,18,1,2,.00039855059003457427,.316524088382721,.5285550951957703,0,2,7,17,5,3,-1,7,18,5,1,3,-.0065418570302426815,.6853377819061279,.4652808904647827,0,2,5,9,12,1,-1,9,9,4,1,3,.003484508953988552,.5484588146209717,.4502759873867035,0,3,0,14,6,6,-1,0,14,3,3,2,3,17,3,3,2,-.0136967804282904,.6395779848098755,.4572555124759674,0,2,5,9,12,1,-1,9,9,4,1,3,-.017347140237689,.2751072943210602,.5181614756584167,0,2,3,9,12,1,-1,7,9,4,1,3,-.004088542889803648,.3325636088848114,.5194984078407288,0,2,14,10,6,7,-1,14,10,3,7,2,-.009468790143728256,.5942280888557434,.485181987285614,0,2,1,0,16,2,-1,1,1,16,1,2,.0017084840219467878,.4167110919952393,.5519806146621704,0,2,10,9,10,9,-1,10,12,10,3,3,.009480909444391727,.5433894991874695,.4208514988422394,0,2,0,1,10,2,-1,5,1,5,2,2,-.004738965071737766,.6407189965248108,.4560655057430267,0,2,17,3,2,3,-1,17,4,2,1,3,.006576105020940304,.5214555263519287,.2258227020502091,0,2,1,3,2,3,-1,1,4,2,1,3,-.0021690549328923225,.3151527941226959,.5156704783439636,0,2,9,7,3,6,-1,10,7,1,6,3,.014660170301795,.4870837032794952,.668994128704071,0,2,6,5,4,3,-1,8,5,2,3,2,.00017231999663636088,.3569748997688294,.5251078009605408,0,2,7,5,6,6,-1,9,5,2,6,3,-.0218037609010935,.8825920820236206,.496632993221283,0,3,3,4,12,12,-1,3,4,6,6,2,9,10,6,6,2,-.0947361066937447,.1446162015199661,.5061113834381104,0,2,9,2,6,15,-1,11,2,2,15,3,.0055825551971793175,.5396478772163391,.4238066077232361,0,2,2,2,6,17,-1,4,2,2,17,3,.001951709040440619,.4170410931110382,.5497786998748779,0,2,14,10,6,7,-1,14,10,3,7,2,.0121499001979828,.4698367118835449,.5664274096488953,0,2,0,10,6,7,-1,3,10,3,7,2,-.007516962010413408,.6267772912979126,.4463135898113251,0,2,9,2,6,15,-1,11,2,2,15,3,-.0716679096221924,.3097011148929596,.5221003293991089,0,2,5,2,6,15,-1,7,2,2,15,3,-.0882924199104309,.0811238884925842,.5006365180015564,0,2,17,9,3,6,-1,17,11,3,2,3,.0310630798339844,.5155503749847412,.1282255947589874,0,2,6,7,6,6,-1,8,7,2,6,3,.0466218404471874,.4699777960777283,.736396074295044,0,3,1,10,18,6,-1,10,10,9,3,2,1,13,9,3,2,-.0121894897893071,.3920530080795288,.5518996715545654,0,2,0,9,10,9,-1,0,12,10,3,3,.0130161102861166,.5260658264160156,.3685136139392853,0,2,8,15,4,3,-1,8,16,4,1,3,-.003495289944112301,.6339294910430908,.4716280996799469,0,2,5,12,3,4,-1,5,14,3,2,2,-4401503974804655e-20,.5333027243614197,.3776184916496277,0,2,3,3,16,12,-1,3,9,16,6,2,-.1096649020910263,.1765342056751251,.5198346972465515,0,3,1,1,12,12,-1,1,1,6,6,2,7,7,6,6,2,-.0009027955820783973,.5324159860610962,.3838908076286316,0,3,10,4,2,4,-1,11,4,1,2,2,10,6,1,2,2,.0007112664170563221,.4647929966449738,.5755224227905273,0,3,0,9,10,2,-1,0,9,5,1,2,5,10,5,1,2,-.003125027986243367,.323670893907547,.5166770815849304,0,2,9,11,3,3,-1,9,12,3,1,3,.002414467977359891,.4787439107894898,.6459717750549316,0,2,3,12,9,2,-1,3,13,9,1,2,.00044391240226104856,.4409308135509491,.6010255813598633,0,2,9,9,2,2,-1,9,10,2,1,2,-.0002261118934256956,.4038113951683044,.5493255853652954,66.66912078857422,135,0,2,3,4,13,6,-1,3,6,13,2,3,-.0469012893736362,.660017192363739,.3743801116943359,0,3,9,7,6,4,-1,12,7,3,2,2,9,9,3,2,2,-.001456834957934916,.578399121761322,.3437797129154205,0,2,1,0,6,8,-1,4,0,3,8,2,.005559836979955435,.3622266948223114,.5908216238021851,0,2,9,5,2,12,-1,9,11,2,6,2,.0007317048730328679,.550041913986206,.2873558104038239,0,2,4,4,3,10,-1,4,9,3,5,2,.001331800944171846,.267316997051239,.5431019067764282,0,2,6,17,8,3,-1,6,18,8,1,3,.00024347059661522508,.3855027854442596,.574138879776001,0,2,0,5,10,6,-1,0,7,10,2,3,-.0030512469820678234,.5503209829330444,.3462845087051392,0,2,13,2,3,2,-1,13,3,3,1,2,-.0006865719915367663,.3291221857070923,.5429509282112122,0,2,7,5,4,5,-1,9,5,2,5,2,.001466820016503334,.3588382005691528,.5351811051368713,0,2,12,14,3,6,-1,12,16,3,2,3,.0003202187072020024,.429684191942215,.5700234174728394,0,2,1,11,8,2,-1,1,12,8,1,2,.0007412218837998807,.5282164812088013,.3366870880126953,0,2,7,13,6,3,-1,7,14,6,1,3,.0038330298848450184,.4559567868709564,.6257336139678955,0,2,0,5,3,6,-1,0,7,3,2,3,-.0154564399272203,.2350116968154907,.512945294380188,0,2,13,2,3,2,-1,13,3,3,1,2,.002679677912965417,.5329415202140808,.4155062139034271,0,3,4,14,4,6,-1,4,14,2,3,2,6,17,2,3,2,.0028296569362282753,.4273087978363037,.5804538130760193,0,2,13,2,3,2,-1,13,3,3,1,2,-.0039444249123334885,.2912611961364746,.5202686190605164,0,2,8,2,4,12,-1,8,6,4,4,3,.002717955969274044,.5307688117027283,.3585677146911621,0,3,14,0,6,8,-1,17,0,3,4,2,14,4,3,4,2,.005907762795686722,.470377504825592,.5941585898399353,0,2,7,17,3,2,-1,8,17,1,2,3,-.004224034957587719,.2141567021608353,.5088796019554138,0,2,8,12,4,2,-1,8,13,4,1,2,.0040725888684391975,.4766413867473602,.6841061115264893,0,3,6,0,8,12,-1,6,0,4,6,2,10,6,4,6,2,.0101495301350951,.5360798835754395,.3748497068881989,0,3,14,0,2,10,-1,15,0,1,5,2,14,5,1,5,2,-.00018864999583456665,.5720130205154419,.3853805065155029,0,3,5,3,8,6,-1,5,3,4,3,2,9,6,4,3,2,-.0048864358104765415,.3693122863769531,.5340958833694458,0,3,14,0,6,10,-1,17,0,3,5,2,14,5,3,5,2,.0261584799736738,.4962374866008759,.6059989929199219,0,2,9,14,1,2,-1,9,15,1,1,2,.0004856075975112617,.4438945949077606,.6012468934059143,0,2,15,10,4,3,-1,15,11,4,1,3,.0112687097862363,.5244250297546387,.1840388029813767,0,2,8,14,2,3,-1,8,15,2,1,3,-.0028114619199186563,.6060283780097961,.4409897029399872,0,3,3,13,14,4,-1,10,13,7,2,2,3,15,7,2,2,-.005611272994428873,.3891170918941498,.5589237213134766,0,2,1,10,4,3,-1,1,11,4,1,3,.008568009361624718,.5069345831871033,.2062619030475617,0,2,9,11,6,1,-1,11,11,2,1,3,-.00038172779022715986,.5882201790809631,.41926109790802,0,2,5,11,6,1,-1,7,11,2,1,3,-.00017680290329735726,.5533605813980103,.400336891412735,0,2,3,5,16,15,-1,3,10,16,5,3,.006511253770440817,.3310146927833557,.5444191098213196,0,2,6,12,4,2,-1,8,12,2,2,2,-6594868318643421e-20,.5433831810951233,.3944905996322632,0,3,4,4,12,10,-1,10,4,6,5,2,4,9,6,5,2,.006993905175477266,.5600358247756958,.4192714095115662,0,2,8,6,3,4,-1,9,6,1,4,3,-.0046744439750909805,.6685466766357422,.4604960978031158,0,3,8,12,4,8,-1,10,12,2,4,2,8,16,2,4,2,.0115898502990603,.5357121229171753,.2926830053329468,0,2,8,14,4,3,-1,8,15,4,1,3,.013007840141654,.4679817855358124,.730746328830719,0,2,12,2,3,2,-1,13,2,1,2,3,-.0011008579749614,.3937501013278961,.5415065288543701,0,2,8,15,3,2,-1,8,16,3,1,2,.0006047264905646443,.4242376089096069,.5604041218757629,0,2,6,0,9,14,-1,9,0,3,14,3,-.0144948400557041,.3631210029125214,.5293182730674744,0,2,9,6,2,3,-1,10,6,1,3,2,-.005305694881826639,.686045229434967,.4621821045875549,0,2,10,8,2,3,-1,10,9,2,1,3,-.00081829127157107,.3944096863269806,.542043924331665,0,2,0,9,4,6,-1,0,11,4,2,3,-.0190775208175182,.1962621957063675,.5037891864776611,0,2,6,0,8,2,-1,6,1,8,1,2,.00035549470339901745,.4086259007453919,.5613973140716553,0,2,6,14,7,3,-1,6,15,7,1,3,.0019679730758070946,.448912113904953,.5926123261451721,0,2,8,10,8,9,-1,8,13,8,3,3,.006918914150446653,.5335925817489624,.3728385865688324,0,2,5,2,3,2,-1,6,2,1,2,3,.002987277926877141,.5111321210861206,.2975643873214722,0,3,14,1,6,8,-1,17,1,3,4,2,14,5,3,4,2,-.006226461846381426,.5541489720344543,.4824537932872772,0,3,0,1,6,8,-1,0,1,3,4,2,3,5,3,4,2,.013353300280869,.4586423933506012,.6414797902107239,0,3,1,2,18,6,-1,10,2,9,3,2,1,5,9,3,2,.0335052385926247,.5392425060272217,.3429994881153107,0,2,9,3,2,1,-1,10,3,1,1,2,-.0025294460356235504,.1703713983297348,.5013315081596375,0,3,13,2,4,6,-1,15,2,2,3,2,13,5,2,3,2,-.001280162949115038,.5305461883544922,.4697405099868774,0,2,5,4,3,3,-1,5,5,3,1,3,.007068738806992769,.4615545868873596,.643650472164154,0,2,13,5,1,3,-1,13,6,1,1,3,.0009688049904070795,.4833599030971527,.6043894290924072,0,2,2,16,5,3,-1,2,17,5,1,3,.003964765928685665,.5187637209892273,.323181688785553,0,3,13,2,4,6,-1,15,2,2,3,2,13,5,2,3,2,-.022057730704546,.4079256951808929,.520098090171814,0,3,3,2,4,6,-1,3,2,2,3,2,5,5,2,3,2,-.0006690631271339953,.533160924911499,.3815600872039795,0,2,13,5,1,2,-1,13,6,1,1,2,-.0006700932863168418,.5655422210693359,.4688901901245117,0,2,5,5,2,2,-1,5,6,2,1,2,.000742845528293401,.4534381031990051,.6287400126457214,0,2,13,9,2,2,-1,13,9,1,2,2,.0022227810695767403,.5350633263587952,.3303655982017517,0,2,5,9,2,2,-1,6,9,1,2,2,-.005413052160292864,.1113687008619309,.500543475151062,0,2,13,17,3,2,-1,13,18,3,1,2,-14520040167553816e-21,.5628737807273865,.4325133860111237,0,3,6,16,4,4,-1,6,16,2,2,2,8,18,2,2,2,.00023369169502984732,.4165835082530975,.5447791218757629,0,2,9,16,2,3,-1,9,17,2,1,3,.004289454780519009,.4860391020774841,.6778649091720581,0,2,0,13,9,6,-1,0,15,9,2,3,.0059103150852024555,.52623051404953,.3612113893032074,0,2,9,14,2,6,-1,9,17,2,3,2,.0129005396738648,.5319377183914185,.32502880692482,0,2,9,15,2,3,-1,9,16,2,1,3,.004698297940194607,.461824506521225,.6665925979614258,0,2,1,10,18,6,-1,1,12,18,2,3,.0104398597031832,.550567090511322,.3883604109287262,0,2,8,11,4,2,-1,8,12,4,1,2,.0030443191062659025,.4697853028774262,.7301844954490662,0,2,7,9,6,2,-1,7,10,6,1,2,-.0006159375188872218,.3830839097499847,.5464984178543091,0,2,8,8,2,3,-1,8,9,2,1,3,-.0034247159492224455,.256630003452301,.5089530944824219,0,2,17,5,3,4,-1,18,5,1,4,3,-.009353856556117535,.6469966173171997,.49407958984375,0,2,1,19,18,1,-1,7,19,6,1,3,.0523389987647533,.4745982885360718,.787877082824707,0,2,9,0,3,2,-1,10,0,1,2,3,.0035765620414167643,.5306664705276489,.2748498022556305,0,2,1,8,1,6,-1,1,10,1,2,3,.0007155531784519553,.541312575340271,.4041908979415894,0,2,12,17,8,3,-1,12,17,4,3,2,-.0105166798457503,.6158512234687805,.4815283119678497,0,2,0,5,3,4,-1,1,5,1,4,3,.007734792772680521,.4695805907249451,.7028980851173401,0,2,9,7,2,3,-1,9,8,2,1,3,-.004322677850723267,.2849566042423248,.5304684042930603,0,3,7,11,2,2,-1,7,11,1,1,2,8,12,1,1,2,-.0025534399319440126,.7056984901428223,.4688892066478729,0,2,11,3,2,5,-1,11,3,1,5,2,.00010268510231981054,.3902932107448578,.5573464035987854,0,2,7,3,2,5,-1,8,3,1,5,2,7139518857002258e-21,.368423193693161,.526398777961731,0,2,15,13,2,3,-1,15,14,2,1,3,-.0016711989883333445,.3849175870418549,.5387271046638489,0,2,5,6,2,3,-1,5,7,2,1,3,.004926044959574938,.4729771912097931,.7447251081466675,0,2,4,19,15,1,-1,9,19,5,1,3,.0043908702209591866,.4809181094169617,.5591921806335449,0,2,1,19,15,1,-1,6,19,5,1,3,-.0177936293184757,.6903678178787231,.4676927030086517,0,2,15,13,2,3,-1,15,14,2,1,3,.002046966925263405,.5370690226554871,.3308162093162537,0,2,5,0,4,15,-1,7,0,2,15,2,.0298914890736341,.5139865279197693,.3309059143066406,0,2,9,6,2,5,-1,9,6,1,5,2,.0015494900289922953,.466023713350296,.6078342795372009,0,2,9,5,2,7,-1,10,5,1,7,2,.001495696953497827,.4404835999011993,.5863919854164124,0,2,16,11,3,3,-1,16,12,3,1,3,.0009588592802174389,.5435971021652222,.4208523035049439,0,2,1,11,3,3,-1,1,12,3,1,3,.0004964370164088905,.5370578169822693,.4000622034072876,0,2,6,6,8,3,-1,6,7,8,1,3,-.00272808107547462,.5659412741661072,.4259642958641052,0,2,0,15,6,2,-1,0,16,6,1,2,.0023026480339467525,.5161657929420471,.3350869119167328,0,2,1,0,18,6,-1,7,0,6,6,3,.2515163123607636,.4869661927223206,.714730978012085,0,2,6,0,3,4,-1,7,0,1,4,3,-.004632802214473486,.27274489402771,.5083789825439453,0,3,14,10,4,10,-1,16,10,2,5,2,14,15,2,5,2,-.0404344908893108,.6851438879966736,.5021767020225525,0,2,3,2,3,2,-1,4,2,1,2,3,14972220014897175e-21,.428446501493454,.5522555112838745,0,2,11,2,2,2,-1,11,3,2,1,2,-.00024050309730228037,.4226118922233582,.5390074849128723,0,3,2,10,4,10,-1,2,10,2,5,2,4,15,2,5,2,.0236578397452831,.4744631946086884,.7504366040229797,0,3,0,13,20,6,-1,10,13,10,3,2,0,16,10,3,2,-.00814491044729948,.424505889415741,.5538362860679626,0,2,0,5,2,15,-1,1,5,1,15,2,-.003699213033542037,.5952357053756714,.4529713094234467,0,3,1,7,18,4,-1,10,7,9,2,2,1,9,9,2,2,-.0067718601785600185,.4137794077396393,.5473399758338928,0,2,0,0,2,17,-1,1,0,1,17,2,.004266953095793724,.4484114944934845,.5797994136810303,0,3,2,6,16,6,-1,10,6,8,3,2,2,9,8,3,2,.0017791989957913756,.5624858736991882,.4432444870471954,0,2,8,14,1,3,-1,8,15,1,1,3,.0016774770338088274,.4637751877307892,.63642418384552,0,2,8,15,4,2,-1,8,16,4,1,2,.0011732629500329494,.4544503092765808,.5914415717124939,0,3,5,2,8,2,-1,5,2,4,1,2,9,3,4,1,2,.000869981711730361,.5334752798080444,.3885917961597443,0,2,6,11,8,6,-1,6,14,8,3,2,.0007637834060005844,.5398585200309753,.374494194984436,0,2,9,13,2,2,-1,9,14,2,1,2,.00015684569370932877,.4317873120307922,.5614616274833679,0,2,18,4,2,6,-1,18,6,2,2,3,-.0215113703161478,.1785925030708313,.5185542702674866,0,2,9,12,2,2,-1,9,13,2,1,2,.00013081369979772717,.4342499077320099,.5682849884033203,0,2,18,4,2,6,-1,18,6,2,2,3,.021992040798068,.5161716938018799,.2379394024610519,0,2,9,13,1,3,-1,9,14,1,1,3,-.0008013650076463819,.598676323890686,.4466426968574524,0,2,18,4,2,6,-1,18,6,2,2,3,-.008273609913885593,.410821795463562,.5251057147979736,0,2,0,4,2,6,-1,0,6,2,2,3,.0036831789184361696,.5173814296722412,.339751809835434,0,2,9,12,3,3,-1,9,13,3,1,3,-.007952568121254444,.6888983249664307,.4845924079418182,0,2,3,13,2,3,-1,3,14,2,1,3,.0015382299898192286,.5178567171096802,.3454113900661469,0,2,13,13,4,3,-1,13,14,4,1,3,-.0140435304492712,.1678421050310135,.518866777420044,0,2,5,4,3,3,-1,5,5,3,1,3,.0014315890148282051,.436825692653656,.5655773878097534,0,2,5,2,10,6,-1,5,4,10,2,3,-.0340142287313938,.7802296280860901,.4959217011928558,0,2,3,13,4,3,-1,3,14,4,1,3,-.0120272999629378,.1585101038217545,.503223180770874,0,2,3,7,15,5,-1,8,7,5,5,3,.1331661939620972,.5163304805755615,.2755128145217896,0,2,3,7,12,2,-1,7,7,4,2,3,-.0015221949433907866,.372831791639328,.5214552283287048,0,2,10,3,3,9,-1,11,3,1,9,3,-.000939292716793716,.5838379263877869,.4511165022850037,0,2,8,6,4,6,-1,10,6,2,6,2,.0277197398245335,.4728286862373352,.7331544756889343,0,2,9,7,4,3,-1,9,8,4,1,3,.003103015013039112,.5302202105522156,.4101563096046448,0,2,0,9,4,9,-1,2,9,2,9,2,.0778612196445465,.4998334050178528,.127296194434166,0,2,9,13,3,5,-1,10,13,1,5,3,-.0158549398183823,.0508333593606949,.5165656208992004,0,2,7,7,6,3,-1,9,7,2,3,3,-.00497253006324172,.6798133850097656,.4684231877326965,0,2,9,7,3,5,-1,10,7,1,5,3,-.0009767650626599789,.6010771989822388,.4788931906223297,0,2,5,7,8,2,-1,9,7,4,2,2,-.0024647710379213095,.3393397927284241,.5220503807067871,0,2,5,9,12,2,-1,9,9,4,2,3,-.006793770007789135,.4365136921405792,.5239663124084473,0,2,5,6,10,3,-1,10,6,5,3,2,.0326080210506916,.505272388458252,.2425214946269989,0,2,10,12,3,1,-1,11,12,1,1,3,-.0005851442110724747,.5733973979949951,.4758574068546295,0,2,0,1,11,15,-1,0,6,11,5,3,-.0296326000243425,.3892289102077484,.5263597965240479,67.69892120361328,137,0,2,1,0,18,6,-1,7,0,6,6,3,.0465508513152599,.3276950120925903,.6240522861480713,0,2,7,7,6,1,-1,9,7,2,1,3,.007953712716698647,.4256485104560852,.6942939162254333,0,3,5,16,6,4,-1,5,16,3,2,2,8,18,3,2,2,.0006822156137786806,.3711487054824829,.59007328748703,0,2,6,5,9,8,-1,6,9,9,4,2,-.00019348249770700932,.2041133940219879,.53005450963974,0,2,5,10,2,6,-1,5,13,2,3,2,-.0002671050897333771,.5416126251220703,.3103179037570953,0,3,7,6,8,10,-1,11,6,4,5,2,7,11,4,5,2,.0027818060480058193,.5277832746505737,.3467069864273071,0,3,5,6,8,10,-1,5,6,4,5,2,9,11,4,5,2,-.000467790785478428,.5308231115341187,.3294492065906525,0,2,9,5,2,2,-1,9,6,2,1,2,-30335160772665404e-21,.577387273311615,.3852097094058991,0,2,5,12,8,2,-1,5,13,8,1,2,.0007803800981491804,.4317438900470734,.6150057911872864,0,2,10,2,8,2,-1,10,3,8,1,2,-.004255385138094425,.2933903932571411,.5324292778968811,0,3,4,0,2,10,-1,4,0,1,5,2,5,5,1,5,2,-.0002473561035003513,.5468844771385193,.3843030035495758,0,2,9,10,2,2,-1,9,11,2,1,2,-.00014724259381182492,.4281542897224426,.5755587220191956,0,2,2,8,15,3,-1,2,9,15,1,3,.0011864770203828812,.374730110168457,.5471466183662415,0,2,8,13,4,3,-1,8,14,4,1,3,.0023936580400913954,.4537783861160278,.6111528873443604,0,2,7,2,3,2,-1,8,2,1,2,3,-.0015390539774671197,.2971341907978058,.518953800201416,0,2,7,13,6,3,-1,7,14,6,1,3,-.007196879014372826,.6699066758155823,.4726476967334747,0,2,9,9,2,2,-1,9,10,2,1,2,-.0004149978922214359,.3384954035282135,.5260317921638489,0,2,17,2,3,6,-1,17,4,3,2,3,.004435983020812273,.539912223815918,.3920140862464905,0,2,1,5,3,4,-1,2,5,1,4,3,.0026606200262904167,.4482578039169312,.6119617819786072,0,2,14,8,4,6,-1,14,10,4,2,3,-.0015287200221791863,.3711237907409668,.5340266227722168,0,2,1,4,3,8,-1,2,4,1,8,3,-.0047397250309586525,.603108823299408,.4455145001411438,0,2,8,13,4,6,-1,8,16,4,3,2,-.0148291299119592,.2838754057884216,.5341861844062805,0,2,3,14,2,2,-1,3,15,2,1,2,.0009227555710822344,.5209547281265259,.3361653983592987,0,2,14,8,4,6,-1,14,10,4,2,3,.0835298076272011,.5119969844818115,.0811644494533539,0,2,2,8,4,6,-1,2,10,4,2,3,-.0007563314866274595,.331712007522583,.5189831256866455,0,2,10,14,1,6,-1,10,17,1,3,2,.009840385988354683,.524759829044342,.233495905995369,0,2,7,5,3,6,-1,8,5,1,6,3,-.0015953830443322659,.5750094056129456,.4295622110366821,0,3,11,2,2,6,-1,12,2,1,3,2,11,5,1,3,2,34766020689858124e-21,.4342445135116577,.5564029216766357,0,2,6,6,6,5,-1,8,6,2,5,3,.0298629105091095,.4579147100448608,.6579188108444214,0,2,17,1,3,6,-1,17,3,3,2,3,.0113255903124809,.5274311900138855,.3673888146877289,0,2,8,7,3,5,-1,9,7,1,5,3,-.008782864548265934,.7100368738174438,.4642167091369629,0,2,9,18,3,2,-1,10,18,1,2,3,.004363995976746082,.5279216170310974,.2705877125263214,0,2,8,18,3,2,-1,9,18,1,2,3,.004180472809821367,.5072525143623352,.2449083030223846,0,2,12,3,5,2,-1,12,4,5,1,2,-.0004566851130221039,.4283105134963989,.5548691153526306,0,2,7,1,5,12,-1,7,7,5,6,2,-.0037140368949621916,.5519387722015381,.4103653132915497,0,2,1,0,18,4,-1,7,0,6,4,3,-.025304289534688,.6867002248764038,.48698890209198,0,2,4,2,2,2,-1,4,3,2,1,2,-.0003445408074185252,.3728874027729034,.528769314289093,0,3,11,14,4,2,-1,13,14,2,1,2,11,15,2,1,2,-.0008393523166887462,.6060152053833008,.4616062045097351,0,2,0,2,3,6,-1,0,4,3,2,3,.0172800496220589,.5049635767936707,.1819823980331421,0,2,9,7,2,3,-1,9,8,2,1,3,-.006359507795423269,.1631239950656891,.5232778787612915,0,2,5,5,1,3,-1,5,6,1,1,3,.0010298109846189618,.446327805519104,.6176549196243286,0,2,10,10,6,1,-1,10,10,3,1,2,.0010117109632119536,.5473384857177734,.4300698935985565,0,2,4,10,6,1,-1,7,10,3,1,2,-.010308800265193,.1166985034942627,.5000867247581482,0,2,9,17,3,3,-1,9,18,3,1,3,.005468201823532581,.4769287109375,.6719213724136353,0,2,4,14,1,3,-1,4,15,1,1,3,-.0009169646073132753,.3471089899539948,.5178164839744568,0,2,12,5,3,3,-1,12,6,3,1,3,.002392282010987401,.4785236120223999,.6216310858726501,0,2,4,5,12,3,-1,4,6,12,1,3,-.007557381875813007,.5814796090126038,.4410085082054138,0,2,9,8,2,3,-1,9,9,2,1,3,-.0007702403236180544,.387800008058548,.546572208404541,0,2,4,9,3,3,-1,5,9,1,3,3,-.00871259905397892,.1660051047801971,.4995836019515991,0,2,6,0,9,17,-1,9,0,3,17,3,-.0103063201531768,.4093391001224518,.5274233818054199,0,2,9,12,1,3,-1,9,13,1,1,3,-.002094097901135683,.6206194758415222,.4572280049324036,0,2,9,5,2,15,-1,9,10,2,5,3,.006809905171394348,.5567759275436401,.4155600070953369,0,2,8,14,2,3,-1,8,15,2,1,3,-.0010746059706434608,.5638927817344666,.4353024959564209,0,2,10,14,1,3,-1,10,15,1,1,3,.0021550289820879698,.4826265871524811,.6749758124351501,0,2,7,1,6,5,-1,9,1,2,5,3,.0317423194646835,.5048379898071289,.188324898481369,0,2,0,0,20,2,-1,0,0,10,2,2,-.0783827230334282,.2369548976421356,.5260158181190491,0,2,2,13,5,3,-1,2,14,5,1,3,.005741511937230825,.5048828721046448,.2776469886302948,0,2,9,11,2,3,-1,9,12,2,1,3,-.0029014600440859795,.6238604784011841,.4693317115306854,0,2,2,5,9,15,-1,2,10,9,5,3,-.0026427931152284145,.3314141929149628,.5169777274131775,0,3,5,0,12,10,-1,11,0,6,5,2,5,5,6,5,2,-.1094966009259224,.2380045056343079,.5183441042900085,0,2,5,1,2,3,-1,6,1,1,3,2,7407591328956187e-20,.406963586807251,.5362150073051453,0,2,10,7,6,1,-1,12,7,2,1,3,-.0005059380200691521,.5506706237792969,.437459409236908,0,3,3,1,2,10,-1,3,1,1,5,2,4,6,1,5,2,-.0008213177789002657,.5525709986686707,.4209375977516174,0,2,13,7,2,1,-1,13,7,1,1,2,-60276539443293586e-21,.5455474853515625,.4748266041278839,0,2,4,13,4,6,-1,4,15,4,2,3,.006806514225900173,.5157995820045471,.3424577116966248,0,2,13,7,2,1,-1,13,7,1,1,2,.0017202789895236492,.5013207793235779,.6331263780593872,0,2,5,7,2,1,-1,6,7,1,1,2,-.0001301692973356694,.5539718270301819,.4226869940757752,0,3,2,12,18,4,-1,11,12,9,2,2,2,14,9,2,2,-.004801638890057802,.4425095021724701,.5430780053138733,0,3,5,7,2,2,-1,5,7,1,1,2,6,8,1,1,2,-.002539931097999215,.7145782113075256,.4697605073451996,0,2,16,3,4,2,-1,16,4,4,1,2,-.0014278929447755218,.4070445001125336,.539960503578186,0,3,0,2,2,18,-1,0,2,1,9,2,1,11,1,9,2,-.0251425504684448,.7884690761566162,.4747352004051209,0,3,1,2,18,4,-1,10,2,9,2,2,1,4,9,2,2,-.0038899609353393316,.4296191930770874,.5577110052108765,0,2,9,14,1,3,-1,9,15,1,1,3,.004394745919853449,.4693162143230438,.702394425868988,0,3,2,12,18,4,-1,11,12,9,2,2,2,14,9,2,2,.0246784202754498,.5242322087287903,.3812510073184967,0,3,0,12,18,4,-1,0,12,9,2,2,9,14,9,2,2,.0380476787686348,.5011739730834961,.1687828004360199,0,2,11,4,5,3,-1,11,5,5,1,3,.007942486554384232,.4828582108020783,.6369568109512329,0,2,6,4,7,3,-1,6,5,7,1,3,-.0015110049862414598,.5906485915184021,.4487667977809906,0,2,13,17,3,3,-1,13,18,3,1,3,.0064201741479337215,.5241097807884216,.2990570068359375,0,2,8,1,3,4,-1,9,1,1,4,3,-.0029802159406244755,.3041465878486633,.5078489780426025,0,2,11,4,2,4,-1,11,4,1,4,2,-.0007458007894456387,.4128139019012451,.5256826281547546,0,2,0,17,9,3,-1,3,17,3,3,3,-.0104709500446916,.5808395147323608,.4494296014308929,0,3,11,0,2,8,-1,12,0,1,4,2,11,4,1,4,2,.009336920455098152,.524655282497406,.265894889831543,0,3,0,8,6,12,-1,0,8,3,6,2,3,14,3,6,2,.0279369000345469,.4674955010414124,.7087256908416748,0,2,10,7,4,12,-1,10,13,4,6,2,.007427767850458622,.5409486889839172,.3758518099784851,0,2,5,3,8,14,-1,5,10,8,7,2,-.0235845092684031,.3758639991283417,.5238550901412964,0,2,14,10,6,1,-1,14,10,3,1,2,.0011452640173956752,.4329578876495361,.5804247260093689,0,2,0,4,10,4,-1,0,6,10,2,2,-.0004346866044215858,.5280618071556091,.3873069882392883,0,2,10,0,5,8,-1,10,4,5,4,2,.0106485402211547,.4902113080024719,.5681251883506775,0,3,8,1,4,8,-1,8,1,2,4,2,10,5,2,4,2,-.0003941805043723434,.5570880174636841,.4318251013755798,0,2,9,11,6,1,-1,11,11,2,1,3,-.00013270479394122958,.5658439993858337,.4343554973602295,0,2,8,9,3,4,-1,9,9,1,4,3,-.002012551063671708,.6056739091873169,.4537523984909058,0,2,18,4,2,6,-1,18,6,2,2,3,.0024854319635778666,.5390477180480957,.4138010144233704,0,2,8,8,3,4,-1,9,8,1,4,3,.0018237880431115627,.4354828894138336,.5717188715934753,0,2,7,1,13,3,-1,7,2,13,1,3,-.0166566595435143,.3010913133621216,.521612286567688,0,2,7,13,6,1,-1,9,13,2,1,3,.0008034955826587975,.5300151109695435,.3818396925926209,0,2,12,11,3,6,-1,12,13,3,2,3,.003417037893086672,.5328028798103333,.4241400063037872,0,2,5,11,6,1,-1,7,11,2,1,3,-.00036222729249857366,.5491728186607361,.418697714805603,0,3,1,4,18,10,-1,10,4,9,5,2,1,9,9,5,2,-.1163002029061317,.1440722048282623,.522645115852356,0,2,8,6,4,9,-1,8,9,4,3,3,-.0146950101479888,.7747725248336792,.4715717136859894,0,2,8,6,4,3,-1,8,7,4,1,3,.0021972130052745342,.5355433821678162,.3315644860267639,0,2,8,7,3,3,-1,9,7,1,3,3,-.00046965209185145795,.5767235159873962,.4458136856555939,0,2,14,15,4,3,-1,14,16,4,1,3,.006514499895274639,.5215674042701721,.3647888898849487,0,2,5,10,3,10,-1,6,10,1,10,3,.0213000606745481,.4994204938411713,.1567950993776321,0,2,8,15,4,3,-1,8,16,4,1,3,.0031881409231573343,.4742200076580048,.6287270188331604,0,2,0,8,1,6,-1,0,10,1,2,3,.0009001977741718292,.5347954034805298,.394375205039978,0,2,10,15,1,3,-1,10,16,1,1,3,-.005177227780222893,.6727191805839539,.5013138055801392,0,2,2,15,4,3,-1,2,16,4,1,3,-.004376464989036322,.3106675148010254,.5128793120384216,0,3,18,3,2,8,-1,19,3,1,4,2,18,7,1,4,2,.002629996044561267,.488631010055542,.5755215883255005,0,3,0,3,2,8,-1,0,3,1,4,2,1,7,1,4,2,-.002045868895947933,.6025794148445129,.4558076858520508,0,3,3,7,14,10,-1,10,7,7,5,2,3,12,7,5,2,.0694827064871788,.5240747928619385,.2185259014368057,0,2,0,7,19,3,-1,0,8,19,1,3,.0240489393472672,.501186728477478,.2090622037649155,0,2,12,6,3,3,-1,12,7,3,1,3,.003109534038230777,.4866712093353272,.7108548283576965,0,2,0,6,1,3,-1,0,7,1,1,3,-.00125032605137676,.3407891094684601,.5156195163726807,0,2,12,6,3,3,-1,12,7,3,1,3,-.0010281190043315291,.557557225227356,.443943202495575,0,2,5,6,3,3,-1,5,7,3,1,3,-.008889362215995789,.6402000784873962,.4620442092418671,0,2,8,2,4,2,-1,8,3,4,1,2,-.0006109480164013803,.3766441941261292,.5448899865150452,0,2,6,3,4,12,-1,8,3,2,12,2,-.005768635775893927,.3318648934364319,.5133677124977112,0,2,13,6,2,3,-1,13,7,2,1,3,.0018506490159779787,.4903570115566254,.6406934857368469,0,2,0,10,20,4,-1,0,12,20,2,2,-.0997994691133499,.1536051034927368,.5015562176704407,0,2,2,0,17,14,-1,2,7,17,7,2,-.3512834906578064,.0588231310248375,.5174378752708435,0,3,0,0,6,10,-1,0,0,3,5,2,3,5,3,5,2,-.0452445708215237,.6961488723754883,.4677872955799103,0,2,14,6,6,4,-1,14,6,3,4,2,.0714815780520439,.5167986154556274,.1038092970848084,0,2,0,6,6,4,-1,3,6,3,4,2,.0021895780228078365,.4273078143596649,.5532060861587524,0,2,13,2,7,2,-1,13,3,7,1,2,-.0005924265133216977,.46389439702034,.5276389122009277,0,2,0,2,7,2,-1,0,3,7,1,2,.0016788389766588807,.530164897441864,.3932034969329834,0,3,6,11,14,2,-1,13,11,7,1,2,6,12,7,1,2,-.0022163488902151585,.5630694031715393,.4757033884525299,0,3,8,5,2,2,-1,8,5,1,1,2,9,6,1,1,2,.00011568699846975505,.4307535886764526,.5535702705383301,0,2,13,9,2,3,-1,13,9,1,3,2,-.007201728876680136,.144488200545311,.5193064212799072,0,2,1,1,3,12,-1,2,1,1,12,3,.0008908127201721072,.4384432137012482,.5593621134757996,0,2,17,4,1,3,-1,17,5,1,1,3,.00019605009583756328,.5340415835380554,.4705956876277924,0,2,2,4,1,3,-1,2,5,1,1,3,.0005202214233577251,.5213856101036072,.3810079097747803,0,2,14,5,1,3,-1,14,6,1,1,3,.0009458857239224017,.4769414961338043,.6130738854408264,0,2,7,16,2,3,-1,7,17,2,1,3,916984718060121e-19,.4245009124279022,.5429363250732422,0,3,8,13,4,6,-1,10,13,2,3,2,8,16,2,3,2,.002183320000767708,.5457730889320374,.419107586145401,0,2,5,5,1,3,-1,5,6,1,1,3,-.0008603967144154012,.5764588713645935,.4471659958362579,0,2,16,0,4,20,-1,16,0,2,20,2,-.0132362395524979,.6372823119163513,.4695009887218475,0,3,5,1,2,6,-1,5,1,1,3,2,6,4,1,3,2,.0004337670106906444,.5317873954772949,.394582986831665,69.22987365722656,140,0,2,5,4,10,4,-1,5,6,10,2,2,-.024847149848938,.6555516719818115,.3873311877250671,0,2,15,2,4,12,-1,15,2,2,12,2,.006134861148893833,.374807208776474,.5973997712135315,0,2,7,6,4,12,-1,7,12,4,6,2,.006449849810451269,.542549192905426,.2548811137676239,0,2,14,5,1,8,-1,14,9,1,4,2,.0006349121103994548,.2462442070245743,.5387253761291504,0,3,1,4,14,10,-1,1,4,7,5,2,8,9,7,5,2,.0014023890253156424,.5594322085380554,.3528657853603363,0,3,11,6,6,14,-1,14,6,3,7,2,11,13,3,7,2,.0003004400059580803,.3958503901958466,.576593816280365,0,3,3,6,6,14,-1,3,6,3,7,2,6,13,3,7,2,.00010042409849120304,.3698996901512146,.5534998178482056,0,2,4,9,15,2,-1,9,9,5,2,3,-.005084149073809385,.3711090981960297,.5547800064086914,0,2,7,14,6,3,-1,7,15,6,1,3,-.0195372607558966,.7492755055427551,.4579297006130219,0,3,6,3,14,4,-1,13,3,7,2,2,6,5,7,2,2,-7453274065483129e-21,.5649787187576294,.390406996011734,0,2,1,9,15,2,-1,6,9,5,2,3,-.0036079459823668003,.3381088078022003,.5267801284790039,0,2,6,11,8,9,-1,6,14,8,3,3,.002069750102236867,.5519291162490845,.3714388906955719,0,2,7,4,3,8,-1,8,4,1,8,3,-.0004646384040825069,.5608214735984802,.4113566875457764,0,2,14,6,2,6,-1,14,9,2,3,2,.0007549045258201659,.3559206128120422,.532935619354248,0,3,5,7,6,4,-1,5,7,3,2,2,8,9,3,2,2,-.0009832223877310753,.5414795875549316,.3763205111026764,0,2,1,1,18,19,-1,7,1,6,19,3,-.0199406407773495,.634790301322937,.4705299139022827,0,2,1,2,6,5,-1,4,2,3,5,2,.0037680300883948803,.3913489878177643,.5563716292381287,0,2,12,17,6,2,-1,12,18,6,1,2,-.009452850557863712,.2554892897605896,.5215116739273071,0,2,2,17,6,2,-1,2,18,6,1,2,.002956084907054901,.5174679160118103,.3063920140266419,0,2,17,3,3,6,-1,17,5,3,2,3,.009107873775064945,.5388448238372803,.2885963022708893,0,2,8,17,3,3,-1,8,18,3,1,3,.0018219229532405734,.4336043000221252,.58521968126297,0,2,10,13,2,6,-1,10,16,2,3,2,.0146887395530939,.5287361741065979,.2870005965232849,0,2,7,13,6,3,-1,7,14,6,1,3,-.0143879903480411,.701944887638092,.4647370874881744,0,2,17,3,3,6,-1,17,5,3,2,3,-.0189866498112679,.2986552119255066,.5247011780738831,0,2,8,13,2,3,-1,8,14,2,1,3,.0011527639580890536,.4323473870754242,.593166172504425,0,2,9,3,6,2,-1,11,3,2,2,3,.0109336702153087,.5286864042282104,.3130319118499756,0,2,0,3,3,6,-1,0,5,3,2,3,-.0149327302351594,.2658419013023377,.508407711982727,0,2,8,5,4,6,-1,8,7,4,2,3,-.0002997053961735219,.5463526844978333,.374072402715683,0,2,5,5,3,2,-1,5,6,3,1,2,.004167762119323015,.4703496992588043,.7435721755027771,0,2,10,1,3,4,-1,11,1,1,4,3,-.00639053201302886,.2069258987903595,.5280538201332092,0,2,1,2,5,9,-1,1,5,5,3,3,.004502960946410894,.518264889717102,.348354309797287,0,2,13,6,2,3,-1,13,7,2,1,3,-.009204036556184292,.680377721786499,.4932360053062439,0,2,0,6,14,3,-1,7,6,7,3,2,.0813272595405579,.5058398842811584,.2253051996231079,0,2,2,11,18,8,-1,2,15,18,4,2,-.150792807340622,.2963424921035767,.5264679789543152,0,2,5,6,2,3,-1,5,7,2,1,3,.0033179009333252907,.4655495882034302,.7072932124137878,0,3,10,6,4,2,-1,12,6,2,1,2,10,7,2,1,2,.0007740280125290155,.4780347943305969,.5668237805366516,0,3,6,6,4,2,-1,6,6,2,1,2,8,7,2,1,2,.0006819954141974449,.4286996126174927,.5722156763076782,0,2,10,1,3,4,-1,11,1,1,4,3,.0053671570494771,.5299307107925415,.3114621937274933,0,2,7,1,2,7,-1,8,1,1,7,2,9701866656541824e-20,.3674638867378235,.5269461870193481,0,2,4,2,15,14,-1,4,9,15,7,2,-.1253408938646317,.2351492047309876,.5245791077613831,0,2,8,7,3,2,-1,9,7,1,2,3,-.005251626949757338,.7115936875343323,.4693767130374908,0,3,2,3,18,4,-1,11,3,9,2,2,2,5,9,2,2,-.007834210991859436,.4462651014328003,.5409085750579834,0,2,9,7,2,2,-1,10,7,1,2,2,-.001131006982177496,.5945618748664856,.4417662024497986,0,2,13,9,2,3,-1,13,9,1,3,2,.0017601120052859187,.5353249907493591,.3973453044891357,0,2,5,2,6,2,-1,7,2,2,2,3,-.00081581249833107,.3760268092155457,.5264726877212524,0,2,9,5,2,7,-1,9,5,1,7,2,-.003868758911266923,.6309912800788879,.4749819934368134,0,2,5,9,2,3,-1,6,9,1,3,2,.0015207129763439298,.5230181813240051,.3361223936080933,0,2,6,0,14,18,-1,6,9,14,9,2,.545867383480072,.5167139768600464,.1172635033726692,0,2,2,16,6,3,-1,2,17,6,1,3,.0156501904129982,.4979439079761505,.1393294930458069,0,2,9,7,3,6,-1,10,7,1,6,3,-.0117318602278829,.7129650712013245,.4921196103096008,0,2,7,8,4,3,-1,7,9,4,1,3,-.006176512222737074,.2288102954626083,.5049701929092407,0,2,7,12,6,3,-1,7,13,6,1,3,.0022457661107182503,.4632433950901032,.6048725843429565,0,2,9,12,2,3,-1,9,13,2,1,3,-.005191586911678314,.6467421054840088,.4602192938327789,0,2,7,12,6,2,-1,9,12,2,2,3,-.0238278806209564,.1482000946998596,.5226079225540161,0,2,5,11,4,6,-1,5,14,4,3,2,.0010284580057486892,.5135489106178284,.3375957012176514,0,2,11,12,7,2,-1,11,13,7,1,2,-.0100788502022624,.2740561068058014,.5303567051887512,0,3,6,10,8,6,-1,6,10,4,3,2,10,13,4,3,2,.002616893034428358,.533267080783844,.3972454071044922,0,2,11,10,3,4,-1,11,12,3,2,2,.000543853675480932,.5365604162216187,.4063411951065064,0,2,9,16,2,3,-1,9,17,2,1,3,.005351051222532988,.4653759002685547,.6889045834541321,0,2,13,3,1,9,-1,13,6,1,3,3,-.0015274790348485112,.5449501276016235,.3624723851680756,0,2,1,13,14,6,-1,1,15,14,2,3,-.0806244164705276,.1656087040901184,.5000287294387817,0,2,13,6,1,6,-1,13,9,1,3,2,.0221920292824507,.5132731199264526,.2002808004617691,0,2,0,4,3,8,-1,1,4,1,8,3,.007310063112527132,.4617947936058044,.6366536021232605,0,2,18,0,2,18,-1,18,0,1,18,2,-.006406307220458984,.5916250944137573,.4867860972881317,0,2,2,3,6,2,-1,2,4,6,1,2,-.0007641504053026438,.388840913772583,.5315797924995422,0,2,9,0,8,6,-1,9,2,8,2,3,.0007673448999412358,.4159064888954163,.5605279803276062,0,2,6,6,1,6,-1,6,9,1,3,2,.0006147450185380876,.3089022040367127,.5120148062705994,0,2,14,8,6,3,-1,14,9,6,1,3,-.005010527092963457,.3972199857234955,.5207306146621704,0,2,0,0,2,18,-1,1,0,1,18,2,-.008690913207828999,.6257408261299133,.4608575999736786,0,3,1,18,18,2,-1,10,18,9,1,2,1,19,9,1,2,-.016391459852457,.2085209935903549,.5242266058921814,0,2,3,15,2,2,-1,3,16,2,1,2,.00040973909199237823,.5222427248954773,.3780320882797241,0,2,8,14,5,3,-1,8,15,5,1,3,-.002524228999391198,.5803927183151245,.4611890017986298,0,2,8,14,2,3,-1,8,15,2,1,3,.0005094531225040555,.4401271939277649,.5846015810966492,0,2,12,3,3,3,-1,13,3,1,3,3,.001965641975402832,.5322325229644775,.4184590876102448,0,2,7,5,6,2,-1,9,5,2,2,3,.0005629889783449471,.3741844892501831,.5234565734863281,0,2,15,5,5,2,-1,15,6,5,1,2,-.0006794679793529212,.4631041884422302,.5356478095054626,0,2,0,5,5,2,-1,0,6,5,1,2,.007285634987056255,.5044670104980469,.2377564013004303,0,2,17,14,1,6,-1,17,17,1,3,2,-.0174594894051552,.7289121150970459,.5050435066223145,0,2,2,9,9,3,-1,5,9,3,3,3,-.0254217498004436,.6667134761810303,.4678100049495697,0,2,12,3,3,3,-1,13,3,1,3,3,-.0015647639520466328,.4391759037971497,.532362699508667,0,2,0,0,4,18,-1,2,0,2,18,2,.0114443600177765,.4346440136432648,.5680012106895447,0,2,17,6,1,3,-1,17,7,1,1,3,-.0006735255010426044,.44771409034729,.5296812057495117,0,2,2,14,1,6,-1,2,17,1,3,2,.009319420903921127,.4740200042724609,.7462607026100159,0,2,19,8,1,2,-1,19,9,1,1,2,.00013328490604180843,.536506175994873,.475213497877121,0,2,5,3,3,3,-1,6,3,1,3,3,-.007881579920649529,.1752219051122665,.5015255212783813,0,2,9,16,2,3,-1,9,17,2,1,3,-.005798568017780781,.7271236777305603,.4896200895309448,0,2,2,6,1,3,-1,2,7,1,1,3,-.0003892249951604754,.4003908932209015,.5344941020011902,0,3,12,4,8,2,-1,16,4,4,1,2,12,5,4,1,2,-.0019288610201328993,.5605612993240356,.4803955852985382,0,3,0,4,8,2,-1,0,4,4,1,2,4,5,4,1,2,.008421415463089943,.4753246903419495,.7623608708381653,0,2,2,16,18,4,-1,2,18,18,2,2,.008165587671101093,.5393261909484863,.419164389371872,0,2,7,15,2,4,-1,7,17,2,2,2,.00048280550981871784,.4240800142288208,.5399821996688843,0,2,4,0,14,3,-1,4,1,14,1,3,-.002718663075938821,.4244599938392639,.5424923896789551,0,2,0,0,4,20,-1,2,0,2,20,2,-.0125072300434113,.5895841717720032,.4550411105155945,0,3,12,4,4,8,-1,14,4,2,4,2,12,8,2,4,2,-.0242865197360516,.2647134959697723,.518917977809906,0,3,6,7,2,2,-1,6,7,1,1,2,7,8,1,1,2,-.0029676330741494894,.734768271446228,.4749749898910523,0,2,10,6,2,3,-1,10,7,2,1,3,-.0125289997085929,.2756049931049347,.5177599787712097,0,2,8,7,3,2,-1,8,8,3,1,2,-.0010104000102728605,.3510560989379883,.5144724249839783,0,2,8,2,6,12,-1,8,8,6,6,2,-.0021348530426621437,.5637925863265991,.466731995344162,0,2,4,0,11,12,-1,4,4,11,4,3,.0195642597973347,.4614573121070862,.6137639880180359,0,2,14,9,6,11,-1,16,9,2,11,3,-.0971463471651077,.2998378872871399,.5193555951118469,0,2,0,14,4,3,-1,0,15,4,1,3,.00450145686045289,.5077884793281555,.3045755922794342,0,2,9,10,2,3,-1,9,11,2,1,3,.006370697170495987,.486101895570755,.6887500882148743,0,2,5,11,3,2,-1,5,12,3,1,2,-.009072152897715569,.1673395931720734,.5017563104629517,0,2,9,15,3,3,-1,10,15,1,3,3,-.005353720858693123,.2692756950855255,.524263322353363,0,2,8,8,3,4,-1,9,8,1,4,3,-.0109328404068947,.7183864116668701,.4736028909683228,0,2,9,15,3,3,-1,10,15,1,3,3,.008235607296228409,.5223966836929321,.2389862984418869,0,2,7,7,3,2,-1,8,7,1,2,3,-.0010038160253316164,.5719355940818787,.4433943033218384,0,3,2,10,16,4,-1,10,10,8,2,2,2,12,8,2,2,.004085912834852934,.5472841858863831,.4148836135864258,0,2,2,3,4,17,-1,4,3,2,17,2,.1548541933298111,.4973812103271484,.0610615983605385,0,2,15,13,2,7,-1,15,13,1,7,2,.00020897459762636572,.4709174036979675,.542388916015625,0,2,2,2,6,1,-1,5,2,3,1,2,.0003331699117552489,.4089626967906952,.5300992131233215,0,2,5,2,12,4,-1,9,2,4,4,3,-.0108134001493454,.6104369759559631,.4957334101200104,0,3,6,0,8,12,-1,6,0,4,6,2,10,6,4,6,2,.0456560105085373,.5069689154624939,.2866660058498383,0,3,13,7,2,2,-1,14,7,1,1,2,13,8,1,1,2,.0012569549726322293,.484691709280014,.631817102432251,0,2,0,12,20,6,-1,0,14,20,2,3,-.120150700211525,.0605261400341988,.4980959892272949,0,2,14,7,2,3,-1,14,7,1,3,2,-.00010533799650147557,.5363109707832336,.4708042144775391,0,2,0,8,9,12,-1,3,8,3,12,3,-.2070319056510925,.059660330414772,.497909814119339,0,2,3,0,16,2,-1,3,0,8,2,2,.00012909180077258497,.4712977111339569,.5377997756004333,0,2,6,15,3,3,-1,6,16,3,1,3,.000388185289921239,.4363538026809692,.5534191131591797,0,2,8,15,6,3,-1,8,16,6,1,3,-.0029243610333651304,.5811185836791992,.4825215935707092,0,2,0,10,1,6,-1,0,12,1,2,3,.0008388233254663646,.5311700105667114,.403813898563385,0,2,10,9,4,3,-1,10,10,4,1,3,-.0019061550265178084,.3770701885223389,.526001513004303,0,2,9,15,2,3,-1,9,16,2,1,3,.00895143486559391,.4766167998313904,.7682183980941772,0,2,5,7,10,1,-1,5,7,5,1,2,.0130834598094225,.5264462828636169,.3062222003936768,0,2,4,0,12,19,-1,10,0,6,19,2,-.2115933001041412,.6737198233604431,.4695810079574585,0,3,0,6,20,6,-1,10,6,10,3,2,0,9,10,3,2,.0031493250280618668,.5644835233688354,.4386953115463257,0,3,3,6,2,2,-1,3,6,1,1,2,4,7,1,1,2,.00039754100725986063,.4526061117649078,.5895630121231079,0,3,15,6,2,2,-1,16,6,1,1,2,15,7,1,1,2,-.0013814480043947697,.6070582270622253,.4942413866519928,0,3,3,6,2,2,-1,3,6,1,1,2,4,7,1,1,2,-.0005812218878418207,.5998213291168213,.4508252143859863,0,2,14,4,1,12,-1,14,10,1,6,2,-.002390532987192273,.420558899641037,.5223848223686218,0,3,2,5,16,10,-1,2,5,8,5,2,10,10,8,5,2,.0272689294070005,.5206447243690491,.3563301861286163,0,2,9,17,3,2,-1,10,17,1,2,3,-.0037658358924090862,.3144704103469849,.5218814015388489,0,2,1,4,2,2,-1,1,5,2,1,2,-.0014903489500284195,.338019609451294,.5124437212944031,0,2,5,0,15,5,-1,10,0,5,5,3,-.0174282304942608,.5829960703849792,.4919725954532623,0,2,0,0,15,5,-1,5,0,5,5,3,-.0152780301868916,.6163144707679749,.4617887139320374,0,2,11,2,2,17,-1,11,2,1,17,2,.0319956094026566,.5166357159614563,.171276405453682,0,2,7,2,2,17,-1,8,2,1,17,2,-.003825671039521694,.3408012092113495,.5131387710571289,0,2,15,11,2,9,-1,15,11,1,9,2,-.00851864367723465,.6105518937110901,.4997941851615906,0,2,3,11,2,9,-1,4,11,1,9,2,.0009064162150025368,.4327270984649658,.5582311153411865,0,2,5,16,14,4,-1,5,16,7,4,2,.0103448498994112,.4855653047561646,.5452420115470886,79.24907684326172,160,0,2,1,4,18,1,-1,7,4,6,1,3,.007898182608187199,.333252489566803,.5946462154388428,0,3,13,7,6,4,-1,16,7,3,2,2,13,9,3,2,2,.0016170160379260778,.3490641117095947,.5577868819236755,0,2,9,8,2,12,-1,9,12,2,4,3,-.0005544974119402468,.5542566180229187,.3291530013084412,0,2,12,1,6,6,-1,12,3,6,2,3,.001542898011393845,.3612579107284546,.5545979142189026,0,3,5,2,6,6,-1,5,2,3,3,2,8,5,3,3,2,-.0010329450014978647,.3530139029026032,.5576140284538269,0,3,9,16,6,4,-1,12,16,3,2,2,9,18,3,2,2,.0007769815856590867,.3916778862476349,.5645321011543274,0,2,1,2,18,3,-1,7,2,6,3,3,.143203005194664,.4667482078075409,.7023633122444153,0,2,7,4,9,10,-1,7,9,9,5,2,-.007386649027466774,.3073684871196747,.5289257764816284,0,2,5,9,4,4,-1,7,9,2,4,2,-.0006293674232438207,.562211811542511,.4037049114704132,0,2,11,10,3,6,-1,11,13,3,3,2,.0007889352855272591,.5267661213874817,.3557874858379364,0,2,7,11,5,3,-1,7,12,5,1,3,-.0122280502691865,.6668320894241333,.4625549912452698,0,3,7,11,6,6,-1,10,11,3,3,2,7,14,3,3,2,.0035420239437371492,.5521438121795654,.3869673013687134,0,2,0,0,10,9,-1,0,3,10,3,3,-.0010585320414975286,.3628678023815155,.5320926904678345,0,2,13,14,1,6,-1,13,16,1,2,3,14935660146875307e-21,.4632444977760315,.5363323092460632,0,2,0,2,3,6,-1,0,4,3,2,3,.005253770854324102,.5132231712341309,.3265708982944489,0,2,8,14,4,3,-1,8,15,4,1,3,-.008233802393078804,.6693689823150635,.4774140119552612,0,2,6,14,1,6,-1,6,16,1,2,3,2186681012972258e-20,.405386209487915,.5457931160926819,0,2,9,15,2,3,-1,9,16,2,1,3,-.0038150229956954718,.645499587059021,.4793178141117096,0,2,6,4,3,3,-1,7,4,1,3,3,.0011105879675596952,.5270407199859619,.3529678881168366,0,2,9,0,11,3,-1,9,1,11,1,3,-.005770768970251083,.3803547024726868,.5352957844734192,0,2,0,6,20,3,-1,0,7,20,1,3,-.003015833906829357,.533940315246582,.3887133002281189,0,2,10,1,1,2,-1,10,2,1,1,2,-.0008545368909835815,.3564616143703461,.5273603796958923,0,2,9,6,2,6,-1,10,6,1,6,2,.0110505102202296,.4671907126903534,.6849737763404846,0,2,5,8,12,1,-1,9,8,4,1,3,.0426058396697044,.51514732837677,.0702200904488564,0,2,3,8,12,1,-1,7,8,4,1,3,-.0030781750101596117,.3041661083698273,.5152602195739746,0,2,9,7,3,5,-1,10,7,1,5,3,-.005481572821736336,.6430295705795288,.4897229969501495,0,2,3,9,6,2,-1,6,9,3,2,2,.003188186092302203,.5307493209838867,.3826209902763367,0,2,12,9,3,3,-1,12,10,3,1,3,.00035947180003859103,.4650047123432159,.5421904921531677,0,2,7,0,6,1,-1,9,0,2,1,3,-.004070503171533346,.2849679887294769,.5079116225242615,0,2,12,9,3,3,-1,12,10,3,1,3,-.0145941702648997,.2971645891666412,.5128461718559265,0,2,7,10,2,1,-1,8,10,1,1,2,-.00011947689927183092,.563109815120697,.4343082010746002,0,2,6,4,9,13,-1,9,4,3,13,3,-.0006934464909136295,.4403578042984009,.5359959006309509,0,2,6,8,4,2,-1,6,9,4,1,2,14834799912932795e-21,.3421008884906769,.5164697766304016,0,2,16,2,4,6,-1,16,2,2,6,2,.009029698558151722,.4639343023300171,.6114075183868408,0,2,0,17,6,3,-1,0,18,6,1,3,-.008064081892371178,.2820158898830414,.5075494050979614,0,2,10,10,3,10,-1,10,15,3,5,2,.0260621197521687,.5208905935287476,.2688778042793274,0,2,8,7,3,5,-1,9,7,1,5,3,.0173146594315767,.4663713872432709,.6738539934158325,0,2,10,4,4,3,-1,10,4,2,3,2,.0226666405797005,.5209349989891052,.2212723940610886,0,2,8,4,3,8,-1,9,4,1,8,3,-.002196592977270484,.6063101291656494,.4538190066814423,0,2,6,6,9,13,-1,9,6,3,13,3,-.009528247639536858,.4635204970836639,.5247430801391602,0,3,6,0,8,12,-1,6,0,4,6,2,10,6,4,6,2,.00809436198323965,.5289440155029297,.3913882076740265,0,2,14,2,6,8,-1,16,2,2,8,3,-.0728773325681686,.7752001881599426,.4990234971046448,0,2,6,0,3,6,-1,7,0,1,6,3,-.006900952197611332,.2428039014339447,.5048090219497681,0,2,14,2,6,8,-1,16,2,2,8,3,-.0113082397729158,.5734364986419678,.4842376112937927,0,2,0,5,6,6,-1,0,8,6,3,2,.0596132017672062,.5029836297035217,.2524977028369904,0,3,9,12,6,2,-1,12,12,3,1,2,9,13,3,1,2,-.0028624620754271746,.6073045134544373,.4898459911346436,0,2,8,17,3,2,-1,9,17,1,2,3,.00447814492508769,.5015289187431335,.2220316976308823,0,3,11,6,2,2,-1,12,6,1,1,2,11,7,1,1,2,-.001751324045471847,.6614428758621216,.4933868944644928,0,2,1,9,18,2,-1,7,9,6,2,3,.0401634201407433,.5180878043174744,.3741044998168945,0,3,11,6,2,2,-1,12,6,1,1,2,11,7,1,1,2,.0003476894926279783,.4720416963100433,.5818032026290894,0,2,3,4,12,8,-1,7,4,4,8,3,.00265516503714025,.3805010914802551,.5221335887908936,0,2,13,11,5,3,-1,13,12,5,1,3,-.008770627900958061,.294416606426239,.5231295228004456,0,2,9,10,2,3,-1,9,11,2,1,3,-.005512209143489599,.7346177101135254,.4722816944122315,0,2,14,7,2,3,-1,14,7,1,3,2,.0006867204210720956,.5452876091003418,.424241304397583,0,2,5,4,1,3,-1,5,5,1,1,3,.0005601966986432672,.439886212348938,.5601285099983215,0,2,13,4,2,3,-1,13,5,2,1,3,.0024143769405782223,.4741686880588532,.6136621832847595,0,2,5,4,2,3,-1,5,5,2,1,3,-.0015680900542065501,.604455292224884,.4516409933567047,0,2,9,8,2,3,-1,9,9,2,1,3,-.0036827491130679846,.2452459037303925,.5294982194900513,0,2,8,9,2,2,-1,8,10,2,1,2,-.000294091907562688,.3732838034629822,.5251451134681702,0,2,15,14,1,4,-1,15,16,1,2,2,.00042847759323194623,.5498809814453125,.4065535068511963,0,2,3,12,2,2,-1,3,13,2,1,2,-.004881707020103931,.2139908969402313,.4999957084655762,0,3,12,15,2,2,-1,13,15,1,1,2,12,16,1,1,2,.00027272020815871656,.465028703212738,.581342875957489,0,2,9,13,2,2,-1,9,14,2,1,2,.00020947199664078653,.4387486875057221,.5572792887687683,0,2,4,11,14,9,-1,4,14,14,3,3,.0485011897981167,.5244972705841064,.3212889134883881,0,2,7,13,4,3,-1,7,14,4,1,3,-.004516641143709421,.605681300163269,.4545882046222687,0,2,15,14,1,4,-1,15,16,1,2,2,-.0122916800901294,.2040929049253464,.5152214169502258,0,2,4,14,1,4,-1,4,16,1,2,2,.0004854967992287129,.5237604975700378,.3739503026008606,0,2,14,0,6,13,-1,16,0,2,13,3,.0305560491979122,.4960533976554871,.5938246250152588,0,3,4,1,2,12,-1,4,1,1,6,2,5,7,1,6,2,-.00015105320198927075,.5351303815841675,.4145204126834869,0,3,11,14,6,6,-1,14,14,3,3,2,11,17,3,3,2,.0024937440175563097,.4693366885185242,.5514941215515137,0,3,3,14,6,6,-1,3,14,3,3,2,6,17,3,3,2,-.012382130138576,.6791396737098694,.4681667983531952,0,2,14,17,3,2,-1,14,18,3,1,2,-.005133346188813448,.3608739078044891,.5229160189628601,0,2,3,17,3,2,-1,3,18,3,1,2,.0005191927775740623,.5300073027610779,.3633613884449005,0,2,14,0,6,13,-1,16,0,2,13,3,.1506042033433914,.515731692314148,.2211782038211823,0,2,0,0,6,13,-1,2,0,2,13,3,.007714414969086647,.4410496950149536,.5776609182357788,0,2,10,10,7,6,-1,10,12,7,2,3,.009444352239370346,.5401855111122131,.375665009021759,0,3,6,15,2,2,-1,6,15,1,1,2,7,16,1,1,2,.00025006249779835343,.4368270933628082,.5607374906539917,0,3,6,11,8,6,-1,10,11,4,3,2,6,14,4,3,2,-.003307715058326721,.4244799017906189,.551823079586029,0,3,7,6,2,2,-1,7,6,1,1,2,8,7,1,1,2,.0007404891075566411,.4496962130069733,.5900576710700989,0,3,2,2,16,6,-1,10,2,8,3,2,2,5,8,3,2,.0440920516848564,.5293493270874023,.3156355023384094,0,2,5,4,3,3,-1,5,5,3,1,3,.0033639909233897924,.4483296871185303,.5848662257194519,0,2,11,7,3,10,-1,11,12,3,5,2,-.003976007923483849,.4559507071971893,.5483639240264893,0,2,6,7,3,10,-1,6,12,3,5,2,.0027716930489987135,.534178614616394,.3792484104633331,0,2,10,7,3,2,-1,11,7,1,2,3,-.00024123019829858094,.5667188763618469,.4576973021030426,0,2,8,12,4,2,-1,8,13,4,1,2,.0004942566738463938,.4421244859695435,.5628787279129028,0,2,10,1,1,3,-1,10,2,1,1,3,-.0003887646889779717,.4288370907306671,.5391063094139099,0,3,1,2,4,18,-1,1,2,2,9,2,3,11,2,9,2,-.0500488989055157,.6899513006210327,.4703742861747742,0,2,12,4,4,12,-1,12,10,4,6,2,-.0366354808211327,.2217779010534287,.5191826224327087,0,2,0,0,1,6,-1,0,2,1,2,3,.0024273579474538565,.5136224031448364,.3497397899627686,0,2,9,11,2,3,-1,9,12,2,1,3,.001955803018063307,.4826192855834961,.640838086605072,0,2,8,7,4,3,-1,8,8,4,1,3,-.0017494610510766506,.3922835886478424,.5272685289382935,0,2,10,7,3,2,-1,11,7,1,2,3,.0139550799503922,.507820188999176,.8416504859924316,0,2,7,7,3,2,-1,8,7,1,2,3,-.00021896739781368524,.5520489811897278,.4314234852790833,0,2,9,4,6,1,-1,11,4,2,1,3,-.0015131309628486633,.3934605121612549,.5382571220397949,0,2,8,7,2,3,-1,9,7,1,3,2,-.004362280014902353,.7370628714561462,.4736475944519043,0,3,12,7,8,6,-1,16,7,4,3,2,12,10,4,3,2,.0651605874300003,.5159279704093933,.328159511089325,0,3,0,7,8,6,-1,0,7,4,3,2,4,10,4,3,2,-.0023567399475723505,.3672826886177063,.5172886252403259,0,3,18,2,2,10,-1,19,2,1,5,2,18,7,1,5,2,.0151466596871614,.5031493902206421,.6687604188919067,0,2,0,2,6,4,-1,3,2,3,4,2,-.0228509604930878,.676751971244812,.4709596931934357,0,2,9,4,6,1,-1,11,4,2,1,3,.004886765033006668,.5257998108863831,.4059878885746002,0,3,7,15,2,2,-1,7,15,1,1,2,8,16,1,1,2,.0017619599821045995,.4696272909641266,.6688278913497925,0,2,11,13,1,6,-1,11,16,1,3,2,-.0012942519970238209,.4320712983608246,.5344281792640686,0,2,8,13,1,6,-1,8,16,1,3,2,.0109299495816231,.4997706115245819,.1637486070394516,0,2,14,3,2,1,-1,14,3,1,1,2,2995848990394734e-20,.4282417893409729,.5633224248886108,0,2,8,15,2,3,-1,8,16,2,1,3,-.0065884361974895,.677212119102478,.4700526893138886,0,2,12,15,7,4,-1,12,17,7,2,2,.0032527779694646597,.531339704990387,.4536148905754089,0,2,4,14,12,3,-1,4,15,12,1,3,-.00404357397928834,.5660061836242676,.4413388967514038,0,2,10,3,3,2,-1,11,3,1,2,3,-.0012523540062829852,.3731913864612579,.5356451869010925,0,2,4,12,2,2,-1,4,13,2,1,2,.00019246719602961093,.5189986228942871,.3738811016082764,0,2,10,11,4,6,-1,10,14,4,3,2,-.038589671254158,.2956373989582062,.51888108253479,0,3,7,13,2,2,-1,7,13,1,1,2,8,14,1,1,2,.0001548987056594342,.4347135126590729,.5509533286094666,0,3,4,11,14,4,-1,11,11,7,2,2,4,13,7,2,2,-.0337638482451439,.3230330049991608,.5195475816726685,0,2,1,18,18,2,-1,7,18,6,2,3,-.008265706710517406,.5975489020347595,.4552114009857178,0,3,11,18,2,2,-1,12,18,1,1,2,11,19,1,1,2,14481440302915871e-21,.4745678007602692,.5497426986694336,0,3,7,18,2,2,-1,7,18,1,1,2,8,19,1,1,2,14951299817766994e-21,.4324473142623901,.5480644106864929,0,2,12,18,8,2,-1,12,19,8,1,2,-.018741799518466,.1580052971839905,.517853319644928,0,2,7,14,6,2,-1,7,15,6,1,2,.0017572239739820361,.4517636895179749,.5773764252662659,0,3,8,12,4,8,-1,10,12,2,4,2,8,16,2,4,2,-.0031391119118779898,.4149647951126099,.5460842251777649,0,2,4,9,3,3,-1,4,10,3,1,3,6665677938144654e-20,.4039090871810913,.5293084979057312,0,2,7,10,6,2,-1,9,10,2,2,3,.006774342153221369,.4767651855945587,.612195611000061,0,2,5,0,4,15,-1,7,0,2,15,2,-.0073868161998689175,.3586258888244629,.5187280774116516,0,2,8,6,12,14,-1,12,6,4,14,3,.0140409301966429,.4712139964103699,.5576155781745911,0,2,5,16,3,3,-1,5,17,3,1,3,-.005525832995772362,.2661027014255524,.5039281249046326,0,2,8,1,12,19,-1,12,1,4,19,3,.3868423998355866,.5144339799880981,.2525899112224579,0,2,3,0,3,2,-1,3,1,3,1,2,.0001145924034062773,.4284994900226593,.5423371195793152,0,2,10,12,4,5,-1,10,12,2,5,2,-.0184675697237253,.3885835111141205,.5213062167167664,0,2,6,12,4,5,-1,8,12,2,5,2,-.0004590701137203723,.541256308555603,.4235909879207611,0,3,11,11,2,2,-1,12,11,1,1,2,11,12,1,1,2,.0012527540093287826,.4899305105209351,.6624091267585754,0,2,0,2,3,6,-1,0,4,3,2,3,.001491060946136713,.5286778211593628,.4040051996707916,0,3,11,11,2,2,-1,12,11,1,1,2,11,12,1,1,2,-.0007543556275777519,.6032990217208862,.4795120060443878,0,2,7,6,4,10,-1,7,11,4,5,2,-.0069478838704526424,.408440113067627,.5373504161834717,0,3,11,11,2,2,-1,12,11,1,1,2,11,12,1,1,2,.0002809292054735124,.4846062958240509,.5759382247924805,0,2,2,13,5,2,-1,2,14,5,1,2,.0009607371757738292,.5164741277694702,.3554979860782623,0,3,11,11,2,2,-1,12,11,1,1,2,11,12,1,1,2,-.0002688392996788025,.5677582025527954,.4731765985488892,0,3,7,11,2,2,-1,7,11,1,1,2,8,12,1,1,2,.0021599370520561934,.4731487035751343,.7070567011833191,0,2,14,13,3,3,-1,14,14,3,1,3,.005623530130833387,.5240243077278137,.2781791985034943,0,2,3,13,3,3,-1,3,14,3,1,3,-.005024399142712355,.2837013900279999,.5062304139137268,0,2,9,14,2,3,-1,9,15,2,1,3,-.009761163964867592,.7400717735290527,.4934569001197815,0,2,8,7,3,3,-1,8,8,3,1,3,.004151510074734688,.5119131207466125,.3407008051872253,0,2,13,5,3,3,-1,13,6,3,1,3,.006246508099138737,.4923788011074066,.6579058766365051,0,2,0,9,5,3,-1,0,10,5,1,3,-.007059747818857431,.2434711009263992,.503284215927124,0,2,13,5,3,3,-1,13,6,3,1,3,-.0020587709732353687,.590031087398529,.469508707523346,0,3,9,12,2,8,-1,9,12,1,4,2,10,16,1,4,2,-.0024146060459315777,.3647317886352539,.5189201831817627,0,3,11,7,2,2,-1,12,7,1,1,2,11,8,1,1,2,-.0014817609917372465,.6034948229789734,.4940128028392792,0,2,0,16,6,4,-1,3,16,3,4,2,-.0063016400672495365,.5818989872932434,.4560427963733673,0,2,10,6,2,3,-1,10,7,2,1,3,.00347634288482368,.5217475891113281,.3483993113040924,0,2,9,5,2,6,-1,9,7,2,2,3,-.0222508702427149,.2360700070858002,.5032082796096802,0,2,12,15,8,4,-1,12,15,4,4,2,-.030612550675869,.6499186754226685,.4914919137954712,0,2,0,14,8,6,-1,4,14,4,6,2,.013057479634881,.4413323104381561,.5683764219284058,0,2,9,0,3,2,-1,10,0,1,2,3,-.0006009574281051755,.4359731078147888,.5333483219146729,0,2,4,15,4,2,-1,6,15,2,2,2,-.0004151425091549754,.550406277179718,.4326060116291046,0,2,12,7,3,13,-1,13,7,1,13,3,-.013776290230453,.4064112901687622,.5201548933982849,0,2,5,7,3,13,-1,6,7,1,13,3,-.0322965085506439,.0473519712686539,.4977194964885712,0,2,9,6,3,9,-1,9,9,3,3,3,.0535569787025452,.4881733059883118,.666693925857544,0,2,4,4,7,12,-1,4,10,7,6,2,.008188954554498196,.5400037169456482,.4240820109844208,0,3,12,12,2,2,-1,13,12,1,1,2,12,13,1,1,2,.00021055320394225419,.4802047908306122,.5563852787017822,0,3,6,12,2,2,-1,6,12,1,1,2,7,13,1,1,2,-.00243827304802835,.7387793064117432,.4773685038089752,0,3,8,9,4,2,-1,10,9,2,1,2,8,10,2,1,2,.003283557016402483,.5288546085357666,.3171291947364807,0,3,3,6,2,2,-1,3,6,1,1,2,4,7,1,1,2,.00237295706756413,.4750812947750092,.7060170769691467,0,2,16,6,3,2,-1,16,7,3,1,2,-.0014541699783876538,.3811730146408081,.533073902130127,87.69602966308594,177,0,2,0,7,19,4,-1,0,9,19,2,2,.0557552389800549,.4019156992435455,.6806036829948425,0,2,10,2,10,1,-1,10,2,5,1,2,.002473024884238839,.3351148962974548,.5965719819068909,0,2,9,4,2,12,-1,9,10,2,6,2,-.00035031698644161224,.5557708144187927,.3482286930084229,0,2,12,18,4,1,-1,12,18,2,1,2,.0005416763015091419,.426085889339447,.5693380832672119,0,3,1,7,6,4,-1,1,7,3,2,2,4,9,3,2,2,.0007719367858953774,.3494240045547485,.5433688759803772,0,2,12,0,6,13,-1,14,0,2,13,3,-.0015999219613149762,.4028499126434326,.5484359264373779,0,2,2,0,6,13,-1,4,0,2,13,3,-.00011832080053864047,.3806901872158051,.5425465106964111,0,2,10,5,8,8,-1,10,9,8,4,2,.0003290903114248067,.262010008096695,.5429521799087524,0,2,8,3,2,5,-1,9,3,1,5,2,.0002951810893137008,.379976898431778,.5399264097213745,0,2,8,4,9,1,-1,11,4,3,1,3,9046671038959175e-20,.4433645009994507,.5440226197242737,0,2,3,4,9,1,-1,6,4,3,1,3,15007190086180344e-21,.3719654977321625,.5409119725227356,0,2,1,0,18,10,-1,7,0,6,10,3,.1393561065196991,.552539587020874,.4479042887687683,0,2,7,17,5,3,-1,7,18,5,1,3,.0016461990308016539,.4264501035213471,.5772169828414917,0,2,7,11,6,1,-1,9,11,2,1,3,.0004998443182557821,.4359526038169861,.5685871243476868,0,2,2,2,3,2,-1,2,3,3,1,2,-.001097128028050065,.3390136957168579,.5205408930778503,0,2,8,12,4,2,-1,8,13,4,1,2,.0006691989256069064,.4557456076145172,.598065972328186,0,2,6,10,3,6,-1,6,13,3,3,2,.0008647104259580374,.5134841203689575,.2944033145904541,0,2,11,4,2,4,-1,11,4,1,4,2,-.0002718259929679334,.3906578123569489,.5377181172370911,0,2,7,4,2,4,-1,8,4,1,4,2,3024949910468422e-20,.3679609894752502,.5225688815116882,0,2,9,6,2,4,-1,9,6,1,4,2,-.008522589690983295,.7293102145195007,.4892365038394928,0,2,6,13,8,3,-1,6,14,8,1,3,.0016705560265108943,.43453249335289,.5696138143539429,0,2,9,15,3,4,-1,10,15,1,4,3,-.0071433838456869125,.2591280043125153,.5225623846054077,0,2,9,2,2,17,-1,10,2,1,17,2,-.0163193698972464,.6922279000282288,.4651575982570648,0,2,7,0,6,1,-1,9,0,2,1,3,.004803426098078489,.5352262854576111,.3286302983760834,0,2,8,15,3,4,-1,9,15,1,4,3,-.0075421929359436035,.2040544003248215,.5034546256065369,0,2,7,13,7,3,-1,7,14,7,1,3,-.0143631100654602,.6804888844490051,.4889059066772461,0,2,8,16,3,3,-1,9,16,1,3,3,.0008906358852982521,.5310695767402649,.3895480930805206,0,2,6,2,8,10,-1,6,7,8,5,2,-.004406019113957882,.5741562843322754,.4372426867485046,0,2,2,5,8,8,-1,2,9,8,4,2,-.0001886254030978307,.2831785976886749,.5098205208778381,0,2,14,16,2,2,-1,14,17,2,1,2,-.0037979281041771173,.3372507989406586,.5246580243110657,0,2,4,16,2,2,-1,4,17,2,1,2,.00014627049677073956,.5306674242019653,.391171008348465,0,2,10,11,4,6,-1,10,14,4,3,2,-49164638767251745e-21,.5462496280670166,.3942720890045166,0,2,6,11,4,6,-1,6,14,4,3,2,-.0335825011134148,.2157824039459229,.5048211812973022,0,2,10,14,1,3,-1,10,15,1,1,3,-.0035339309833943844,.6465312242507935,.4872696995735169,0,2,8,14,4,3,-1,8,15,4,1,3,.005014411173760891,.4617668092250824,.6248074769973755,0,3,10,0,4,6,-1,12,0,2,3,2,10,3,2,3,2,.0188173707574606,.5220689177513123,.2000052034854889,0,2,0,3,20,2,-1,0,4,20,1,2,-.001343433978036046,.4014537930488586,.53016197681427,0,3,12,0,8,2,-1,16,0,4,1,2,12,1,4,1,2,.001755796023644507,.4794039130210877,.5653169751167297,0,2,2,12,10,8,-1,2,16,10,4,2,-.0956374630331993,.2034195065498352,.5006706714630127,0,3,17,7,2,10,-1,18,7,1,5,2,17,12,1,5,2,-.0222412291914225,.7672473192214966,.5046340227127075,0,3,1,7,2,10,-1,1,7,1,5,2,2,12,1,5,2,-.0155758196488023,.7490342259407043,.4755851030349731,0,2,15,10,3,6,-1,15,12,3,2,3,.005359911825507879,.5365303754806519,.4004670977592468,0,2,4,4,6,2,-1,6,4,2,2,3,-.0217634998261929,.0740154981613159,.4964174926280975,0,2,0,5,20,6,-1,0,7,20,2,3,-.165615901350975,.2859103083610535,.5218086242675781,0,3,0,0,8,2,-1,0,0,4,1,2,4,1,4,1,2,.0001646132004680112,.4191615879535675,.5380793213844299,0,2,1,0,18,4,-1,7,0,6,4,3,-.008907750248908997,.6273192763328552,.4877404868602753,0,2,1,13,6,2,-1,1,14,6,1,2,.0008634644909761846,.5159940719604492,.3671025931835175,0,2,10,8,3,4,-1,11,8,1,4,3,-.0013751760125160217,.5884376764297485,.4579083919525147,0,2,6,1,6,1,-1,8,1,2,1,3,-.0014081239933148026,.3560509979724884,.5139945149421692,0,2,8,14,4,3,-1,8,15,4,1,3,-.003934288863092661,.5994288921356201,.466427206993103,0,2,1,6,18,2,-1,10,6,9,2,2,-.0319669283926487,.3345462083816528,.5144183039665222,0,2,15,11,1,2,-1,15,12,1,1,2,-15089280168467667e-21,.5582656264305115,.441405713558197,0,2,6,5,1,2,-1,6,6,1,1,2,.0005199447041377425,.4623680114746094,.6168993711471558,0,2,13,4,1,3,-1,13,5,1,1,3,-.0034220460802316666,.6557074785232544,.4974805116653442,0,2,2,15,1,2,-1,2,16,1,1,2,.00017723299970384687,.5269501805305481,.3901908099651337,0,2,12,4,4,3,-1,12,5,4,1,3,.0015716759953647852,.4633373022079468,.5790457725524902,0,2,0,0,7,3,-1,0,1,7,1,3,-.00890413299202919,.2689608037471771,.5053591132164001,0,2,9,12,6,2,-1,9,12,3,2,2,.00040677518700249493,.5456603169441223,.4329898953437805,0,2,5,4,2,3,-1,5,5,2,1,3,.0067604780197143555,.4648993909358978,.6689761877059937,0,2,18,4,2,3,-1,18,5,2,1,3,.0029100088868290186,.5309703946113586,.3377839922904968,0,2,3,0,8,6,-1,3,2,8,2,3,.0013885459629818797,.4074738919734955,.5349133014678955,0,3,0,2,20,6,-1,10,2,10,3,2,0,5,10,3,2,-.0767642632126808,.1992176026105881,.522824227809906,0,2,4,7,2,4,-1,5,7,1,4,2,-.00022688310127705336,.5438501834869385,.4253072142601013,0,2,3,10,15,2,-1,8,10,5,2,3,-.006309415213763714,.4259178936481476,.5378909707069397,0,2,3,0,12,11,-1,9,0,6,11,2,-.1100727990269661,.6904156804084778,.4721749126911163,0,2,13,0,2,6,-1,13,0,1,6,2,.0002861965913325548,.4524914920330048,.5548306107521057,0,2,0,19,2,1,-1,1,19,1,1,2,2942532955785282e-20,.5370373725891113,.4236463904380798,0,3,16,10,4,10,-1,18,10,2,5,2,16,15,2,5,2,-.0248865708708763,.6423557996749878,.4969303905963898,0,2,4,8,10,3,-1,4,9,10,1,3,.0331488512456417,.4988475143909454,.1613811999559403,0,2,14,12,3,3,-1,14,13,3,1,3,.0007849169196560979,.541602611541748,.4223009049892426,0,3,0,10,4,10,-1,0,10,2,5,2,2,15,2,5,2,.004708718974143267,.4576328992843628,.6027557849884033,0,2,18,3,2,6,-1,18,5,2,2,3,.0024144479539245367,.530897319316864,.4422498941421509,0,2,6,6,1,3,-1,6,7,1,1,3,.0019523180089890957,.4705634117126465,.666332483291626,0,2,7,7,7,2,-1,7,8,7,1,2,.0013031980488449335,.4406126141548157,.5526962280273438,0,2,0,3,2,6,-1,0,5,2,2,3,.004473549779504538,.5129023790359497,.3301498889923096,0,2,11,1,3,1,-1,12,1,1,1,3,-.002665286883711815,.3135471045970917,.5175036191940308,0,2,5,0,2,6,-1,6,0,1,6,2,.0001366677024634555,.4119370877742767,.530687689781189,0,2,1,1,18,14,-1,7,1,6,14,3,-.0171264503151178,.6177806258201599,.4836578965187073,0,2,4,6,8,3,-1,8,6,4,3,2,-.0002660143072716892,.3654330968856812,.5169736742973328,0,2,9,12,6,2,-1,9,12,3,2,2,-.022932380437851,.349091500043869,.5163992047309875,0,2,5,12,6,2,-1,8,12,3,2,2,.0023316550068557262,.5166299939155579,.3709389865398407,0,2,10,7,3,5,-1,11,7,1,5,3,.016925660893321,.501473605632782,.8053988218307495,0,2,7,7,3,5,-1,8,7,1,5,3,-.008985882624983788,.6470788717269897,.465702086687088,0,2,13,0,3,10,-1,14,0,1,10,3,-.0118746999651194,.3246378898620606,.5258755087852478,0,2,4,11,3,2,-1,4,12,3,1,2,.00019350569345988333,.5191941857337952,.3839643895626068,0,2,17,3,3,6,-1,18,3,1,6,3,.005871349014341831,.4918133914470673,.6187043190002441,0,2,1,8,18,10,-1,1,13,18,5,2,-.2483879029750824,.1836802959442139,.4988150000572205,0,2,13,0,3,10,-1,14,0,1,10,3,.0122560001909733,.5227053761482239,.3632029891014099,0,2,9,14,2,3,-1,9,15,2,1,3,.0008399017970077693,.4490250051021576,.5774148106575012,0,2,16,3,3,7,-1,17,3,1,7,3,.002540736924856901,.4804787039756775,.5858299136161804,0,2,4,0,3,10,-1,5,0,1,10,3,-.0148224299773574,.2521049976348877,.5023537278175354,0,2,16,3,3,7,-1,17,3,1,7,3,-.005797395948320627,.5996695756912231,.4853715002536774,0,2,0,9,1,2,-1,0,10,1,1,2,.000726621481589973,.5153716802597046,.3671779930591583,0,2,18,1,2,10,-1,18,1,1,10,2,-.0172325801104307,.6621719002723694,.4994656145572662,0,2,0,1,2,10,-1,1,1,1,10,2,.007862408645451069,.4633395075798035,.6256101727485657,0,2,10,16,3,4,-1,11,16,1,4,3,-.004734362009912729,.3615573048591614,.5281885266304016,0,2,2,8,3,3,-1,3,8,1,3,3,.0008304847870022058,.4442889094352722,.5550957918167114,0,3,11,0,2,6,-1,12,0,1,3,2,11,3,1,3,2,.00766021991148591,.5162935256958008,.2613354921340942,0,3,7,0,2,6,-1,7,0,1,3,2,8,3,1,3,2,-.004104837775230408,.2789632081985474,.5019031763076782,0,2,16,3,3,7,-1,17,3,1,7,3,.004851257894188166,.4968984127044678,.5661668181419373,0,2,1,3,3,7,-1,2,3,1,7,3,.0009989645332098007,.4445607960224152,.5551813244819641,0,2,14,1,6,16,-1,16,1,2,16,3,-.2702363133430481,.0293882098048925,.515131413936615,0,2,0,1,6,16,-1,2,1,2,16,3,-.0130906803533435,.5699399709701538,.4447459876537323,0,3,2,0,16,8,-1,10,0,8,4,2,2,4,8,4,2,-.009434279054403305,.4305466115474701,.5487895011901855,0,2,6,8,5,3,-1,6,9,5,1,3,-.0015482039889320731,.3680317103862763,.512808084487915,0,2,9,7,3,3,-1,10,7,1,3,3,.005374613218009472,.4838916957378388,.6101555824279785,0,2,8,8,4,3,-1,8,9,4,1,3,.0015786769799888134,.5325223207473755,.4118548035621643,0,2,9,6,2,4,-1,9,6,1,4,2,.003685605013743043,.4810948073863983,.6252303123474121,0,2,0,7,15,1,-1,5,7,5,1,3,.009388701990246773,.520022988319397,.3629410862922669,0,2,8,2,7,9,-1,8,5,7,3,3,.0127926301211119,.4961709976196289,.673801600933075,0,3,1,7,16,4,-1,1,7,8,2,2,9,9,8,2,2,-.003366104094311595,.4060279130935669,.5283598899841309,0,2,6,12,8,2,-1,6,13,8,1,2,.00039771420415490866,.4674113988876343,.5900775194168091,0,2,8,11,3,3,-1,8,12,3,1,3,.0014868030557408929,.4519116878509522,.6082053780555725,0,3,4,5,14,10,-1,11,5,7,5,2,4,10,7,5,2,-.0886867493391037,.2807899117469788,.5180991888046265,0,2,4,12,3,2,-1,4,13,3,1,2,-7429611287079751e-20,.5295584201812744,.408762514591217,0,2,9,11,6,1,-1,11,11,2,1,3,-14932939848222304e-21,.5461400151252747,.4538542926311493,0,2,4,9,7,6,-1,4,11,7,2,3,.005916223861277103,.5329161286354065,.4192134141921997,0,2,7,10,6,3,-1,7,11,6,1,3,.001114164013415575,.4512017965316773,.5706217288970947,0,2,9,11,2,2,-1,9,12,2,1,2,8924936264520511e-20,.4577805995941162,.5897638201713562,0,2,0,5,20,6,-1,0,7,20,2,3,.0025319510605186224,.5299603939056396,.3357639014720917,0,2,6,4,6,1,-1,8,4,2,1,3,.0124262003228068,.4959059059619904,.1346601992845535,0,2,9,11,6,1,-1,11,11,2,1,3,.0283357501029968,.5117079019546509,.0006104363710619509,0,2,5,11,6,1,-1,7,11,2,1,3,.006616588216274977,.4736349880695343,.7011628150939941,0,2,10,16,3,4,-1,11,16,1,4,3,.008046876639127731,.5216417908668518,.3282819986343384,0,2,8,7,3,3,-1,9,7,1,3,3,-.001119398046284914,.5809860825538635,.4563739001750946,0,2,2,12,16,8,-1,2,16,16,4,2,.0132775902748108,.5398362278938293,.4103901088237763,0,2,0,15,15,2,-1,0,16,15,1,2,.0004879473999608308,.424928605556488,.5410590767860413,0,2,15,4,5,6,-1,15,6,5,2,3,.0112431701272726,.526996374130249,.3438215851783752,0,2,9,5,2,4,-1,10,5,1,4,2,-.0008989666821435094,.5633075833320618,.4456613063812256,0,2,8,10,9,6,-1,8,12,9,2,3,.006667715962976217,.5312889218330383,.4362679123878479,0,2,2,19,15,1,-1,7,19,5,1,3,.0289472993463278,.4701794981956482,.657579779624939,0,2,10,16,3,4,-1,11,16,1,4,3,-.0234000496566296,0,.5137398838996887,0,2,0,15,20,4,-1,0,17,20,2,2,-.0891170501708984,.0237452797591686,.4942430853843689,0,2,10,16,3,4,-1,11,16,1,4,3,-.0140546001493931,.3127323091030121,.511751115322113,0,2,7,16,3,4,-1,8,16,1,4,3,.008123939856886864,.50090491771698,.2520025968551636,0,2,9,16,3,3,-1,9,17,3,1,3,-.004996465053409338,.6387143731117249,.4927811920642853,0,2,8,11,4,6,-1,8,14,4,3,2,.0031253970228135586,.5136849880218506,.3680452108383179,0,2,9,6,2,12,-1,9,10,2,4,3,.006766964215785265,.5509843826293945,.4363631904125214,0,2,8,17,4,3,-1,8,18,4,1,3,-.002371144015341997,.6162335276603699,.4586946964263916,0,3,9,18,8,2,-1,13,18,4,1,2,9,19,4,1,2,-.005352279171347618,.6185457706451416,.4920490980148315,0,2,1,18,8,2,-1,1,19,8,1,2,-.0159688591957092,.1382617950439453,.4983252882957459,0,2,13,5,6,15,-1,15,5,2,15,3,.004767606034874916,.4688057899475098,.5490046143531799,0,2,9,8,2,2,-1,9,9,2,1,2,-.002471469109877944,.2368514984846115,.5003952980041504,0,2,9,5,2,3,-1,9,5,1,3,2,-.0007103378884494305,.5856394171714783,.4721533060073853,0,2,1,5,6,15,-1,3,5,2,15,3,-.1411755979061127,.0869000628590584,.4961591064929962,0,3,4,1,14,8,-1,11,1,7,4,2,4,5,7,4,2,.1065180972218514,.5138837099075317,.1741005033254623,0,3,2,4,4,16,-1,2,4,2,8,2,4,12,2,8,2,-.0527447499334812,.7353636026382446,.4772881865501404,0,2,12,4,3,12,-1,12,10,3,6,2,-.00474317604675889,.3884406089782715,.5292701721191406,0,3,4,5,10,12,-1,4,5,5,6,2,9,11,5,6,2,.0009967676596716046,.5223492980003357,.4003424048423767,0,2,9,14,2,3,-1,9,15,2,1,3,.00802841316908598,.4959106147289276,.7212964296340942,0,2,5,4,2,3,-1,5,5,2,1,3,.0008602585876360536,.4444884061813355,.55384761095047,0,3,12,2,4,10,-1,14,2,2,5,2,12,7,2,5,2,.0009319150121882558,.539837121963501,.4163244068622589,0,2,6,4,7,3,-1,6,5,7,1,3,-.002508206060156226,.5854265093803406,.456250011920929,0,3,2,0,18,2,-1,11,0,9,1,2,2,1,9,1,2,-.0021378761157393456,.4608069062232971,.5280259251594543,0,3,0,0,18,2,-1,0,0,9,1,2,9,1,9,1,2,-.002154604997485876,.3791126906871796,.5255997180938721,0,3,13,13,4,6,-1,15,13,2,3,2,13,16,2,3,2,-.007621400989592075,.5998609066009521,.4952073991298676,0,3,3,13,4,6,-1,3,13,2,3,2,5,16,2,3,2,.002205536002293229,.4484206140041351,.5588530898094177,0,2,10,12,2,6,-1,10,15,2,3,2,.0012586950324475765,.5450747013092041,.4423840939998627,0,3,5,9,10,10,-1,5,9,5,5,2,10,14,5,5,2,-.005092672072350979,.4118275046348572,.5263035893440247,0,3,11,4,4,2,-1,13,4,2,1,2,11,5,2,1,2,-.0025095739401876926,.5787907838821411,.4998494982719421,0,2,7,12,6,8,-1,10,12,3,8,2,-.0773275569081306,.8397865891456604,.481112003326416,0,3,12,2,4,10,-1,14,2,2,5,2,12,7,2,5,2,-.041485819965601,.240861102938652,.5176993012428284,0,2,8,11,2,1,-1,9,11,1,1,2,.00010355669655837119,.4355360865592957,.5417054295539856,0,2,10,5,1,12,-1,10,9,1,4,3,.0013255809899419546,.5453971028327942,.4894095063209534,0,2,0,11,6,9,-1,3,11,3,9,2,-.00805987324565649,.5771024227142334,.4577918946743012,0,3,12,2,4,10,-1,14,2,2,5,2,12,7,2,5,2,.019058620557189,.5169867873191833,.3400475084781647,0,3,4,2,4,10,-1,4,2,2,5,2,6,7,2,5,2,-.0350578911602497,.2203243970870972,.5000503063201904,0,3,11,4,4,2,-1,13,4,2,1,2,11,5,2,1,2,.005729605909436941,.5043408274650574,.6597570776939392,0,2,0,14,6,3,-1,0,15,6,1,3,-.0116483299061656,.2186284959316254,.4996652901172638,0,3,11,4,4,2,-1,13,4,2,1,2,11,5,2,1,2,.0014544479781761765,.5007681846618652,.5503727793693542,0,2,6,1,3,2,-1,7,1,1,2,3,-.00025030909455381334,.4129841029644013,.524167001247406,0,3,11,4,4,2,-1,13,4,2,1,2,11,5,2,1,2,-.000829072727356106,.541286826133728,.4974496066570282,0,3,5,4,4,2,-1,5,4,2,1,2,7,5,2,1,2,.0010862209601327777,.460552990436554,.5879228711128235,0,3,13,0,2,12,-1,14,0,1,6,2,13,6,1,6,2,.0002000050008064136,.5278854966163635,.4705209136009216,0,2,6,0,3,10,-1,7,0,1,10,3,.0029212920926511288,.5129609704017639,.375553697347641,0,2,3,0,17,8,-1,3,4,17,4,2,.0253874007612467,.4822691977024078,.5790768265724182,0,2,0,4,20,4,-1,0,6,20,2,2,-.00319684692658484,.5248395204544067,.3962840139865875,90.25334930419922,182,0,2,0,3,8,2,-1,4,3,4,2,2,.005803173873573542,.3498983979225159,.596198320388794,0,2,8,11,4,3,-1,8,12,4,1,3,-.009000306949019432,.6816636919975281,.4478552043437958,0,3,5,7,6,4,-1,5,7,3,2,2,8,9,3,2,2,-.00115496595390141,.5585706233978271,.3578251004219055,0,2,8,3,4,9,-1,8,6,4,3,3,-.0011069850297644734,.5365036129951477,.3050428032875061,0,2,8,15,1,4,-1,8,17,1,2,2,.00010308309720130637,.363909512758255,.5344635844230652,0,2,4,5,12,7,-1,8,5,4,7,3,-.005098483990877867,.2859157025814056,.5504264831542969,0,3,4,2,4,10,-1,4,2,2,5,2,6,7,2,5,2,.0008257220033556223,.5236523747444153,.3476041853427887,0,2,3,0,17,2,-1,3,1,17,1,2,.009978332556784153,.4750322103500366,.621964693069458,0,2,2,2,16,15,-1,2,7,16,5,3,-.0374025292694569,.334337592124939,.527806282043457,0,2,15,2,5,2,-1,15,3,5,1,2,.0048548257909715176,.5192180871963501,.3700444102287293,0,2,9,3,2,2,-1,10,3,1,2,2,-.001866447040811181,.2929843962192535,.5091944932937622,0,2,4,5,16,15,-1,4,10,16,5,3,.0168888904154301,.3686845898628235,.5431225895881653,0,2,7,13,5,6,-1,7,16,5,3,2,-.005837262142449617,.3632183969020844,.5221335887908936,0,2,10,7,3,2,-1,11,7,1,2,3,-.00147137395106256,.5870683789253235,.4700650870800018,0,2,8,3,3,1,-1,9,3,1,1,3,-.0011522950371727347,.3195894956588745,.5140954256057739,0,2,9,16,3,3,-1,9,17,3,1,3,-.004256030078977346,.6301859021186829,.4814921021461487,0,2,0,2,5,2,-1,0,3,5,1,2,-.006737829186022282,.1977048069238663,.5025808215141296,0,2,12,5,4,3,-1,12,6,4,1,3,.0113826701417565,.495413213968277,.6867045760154724,0,2,1,7,12,1,-1,5,7,4,1,3,.005179470870643854,.5164427757263184,.3350647985935211,0,2,7,5,6,14,-1,7,12,6,7,2,-.1174378991127014,.2315246015787125,.5234413743019104,0,3,0,0,8,10,-1,0,0,4,5,2,4,5,4,5,2,.0287034492939711,.4664297103881836,.6722521185874939,0,2,9,1,3,2,-1,10,1,1,2,3,.004823103081434965,.5220875144004822,.2723532915115356,0,2,8,1,3,2,-1,9,1,1,2,3,.0026798530016094446,.5079277157783508,.2906948924064636,0,2,12,4,3,3,-1,12,5,3,1,3,.008050408214330673,.4885950982570648,.6395021080970764,0,2,7,4,6,16,-1,7,12,6,8,2,.004805495962500572,.5197256803512573,.365666389465332,0,2,12,4,3,3,-1,12,5,3,1,3,-.0022420159075409174,.6153467893600464,.4763701856136322,0,2,2,3,2,6,-1,2,5,2,2,3,-.0137577103450894,.2637344896793366,.5030903220176697,0,2,14,2,6,9,-1,14,5,6,3,3,-.1033829972147942,.2287521958351135,.5182461142539978,0,2,5,4,3,3,-1,5,5,3,1,3,-.009443208575248718,.6953303813934326,.4694949090480804,0,2,9,17,3,2,-1,10,17,1,2,3,.0008027118165045977,.5450655221939087,.4268783926963806,0,2,5,5,2,3,-1,5,6,2,1,3,-.004194566980004311,.6091387867927551,.4571642875671387,0,2,13,11,3,6,-1,13,13,3,2,3,.0109422104433179,.5241063237190247,.3284547030925751,0,2,3,14,2,6,-1,3,17,2,3,2,-.0005784106906503439,.5387929081916809,.4179368913173676,0,2,14,3,6,2,-1,14,4,6,1,2,-.002088862005621195,.4292691051959992,.5301715731620789,0,2,0,8,16,2,-1,0,9,16,1,2,.0032383969519287348,.379234790802002,.5220744013786316,0,2,14,3,6,2,-1,14,4,6,1,2,.004907502792775631,.5237283110618591,.4126757979393005,0,2,0,0,5,6,-1,0,2,5,2,3,-.0322779417037964,.1947655975818634,.4994502067565918,0,2,12,5,4,3,-1,12,6,4,1,3,-.008971123024821281,.6011285185813904,.4929032027721405,0,2,4,11,3,6,-1,4,13,3,2,3,.0153210898861289,.5009753704071045,.2039822041988373,0,2,12,5,4,3,-1,12,6,4,1,3,.002085556974634528,.4862189888954163,.5721694827079773,0,2,9,5,1,3,-1,9,6,1,1,3,.005061502102762461,.5000218749046326,.1801805943250656,0,2,12,5,4,3,-1,12,6,4,1,3,-.0037174751050770283,.5530117154121399,.4897592961788178,0,2,6,6,8,12,-1,6,12,8,6,2,-.0121705001220107,.4178605973720551,.5383723974227905,0,2,12,5,4,3,-1,12,6,4,1,3,.004624839872121811,.4997169971466065,.5761327147483826,0,2,5,12,9,2,-1,8,12,3,2,3,-.0002104042941937223,.5331807136535645,.4097681045532227,0,2,12,5,4,3,-1,12,6,4,1,3,-.0146417804062366,.5755925178527832,.5051776170730591,0,2,4,5,4,3,-1,4,6,4,1,3,.00331994891166687,.4576976895332336,.6031805872917175,0,2,6,6,9,2,-1,9,6,3,2,3,.003723687957972288,.4380396902561188,.541588306427002,0,2,4,11,1,3,-1,4,12,1,1,3,.0008295116131193936,.5163031816482544,.3702219128608704,0,2,14,12,6,6,-1,14,12,3,6,2,-.0114084901288152,.6072946786880493,.4862565100193024,0,2,7,0,3,7,-1,8,0,1,7,3,-.004532012157142162,.3292475938796997,.5088962912559509,0,2,9,8,3,3,-1,10,8,1,3,3,.00512760179117322,.4829767942428589,.6122708916664124,0,2,8,8,3,3,-1,9,8,1,3,3,.00985831581056118,.4660679996013641,.6556177139282227,0,2,5,10,11,3,-1,5,11,11,1,3,.036985918879509,.5204849243164062,.1690472066402435,0,2,5,7,10,1,-1,10,7,5,1,2,.004649116192013025,.5167322158813477,.3725225031375885,0,2,9,7,3,2,-1,10,7,1,2,3,-.004266470205038786,.6406493186950684,.4987342953681946,0,2,8,7,3,2,-1,9,7,1,2,3,-.0004795659042429179,.5897293090820312,.4464873969554901,0,2,11,9,4,2,-1,11,9,2,2,2,.0036827160511165857,.5441560745239258,.347266286611557,0,2,5,9,4,2,-1,7,9,2,2,2,-.0100598800927401,.2143162935972214,.500482976436615,0,2,14,10,2,4,-1,14,12,2,2,2,-.0003036184061784297,.538642406463623,.4590323865413666,0,2,7,7,3,2,-1,8,7,1,2,3,-.0014545479789376259,.5751184225082397,.4497095048427582,0,2,14,17,6,3,-1,14,18,6,1,3,.0016515209572389722,.5421937704086304,.4238520860671997,0,3,4,5,12,12,-1,4,5,6,6,2,10,11,6,6,2,-.007846863940358162,.4077920913696289,.5258157253265381,0,3,6,9,8,8,-1,10,9,4,4,2,6,13,4,4,2,-.005125985015183687,.422927588224411,.5479453206062317,0,2,0,4,15,4,-1,5,4,5,4,3,-.0368909612298012,.6596375703811646,.4674678146839142,0,2,13,2,4,1,-1,13,2,2,1,2,.0002403563994448632,.4251135885715485,.5573202967643738,0,2,4,12,2,2,-1,4,13,2,1,2,-15150169929256663e-21,.5259246826171875,.4074114859104157,0,2,8,13,4,3,-1,8,14,4,1,3,.0022108471021056175,.4671722948551178,.5886352062225342,0,2,9,13,2,3,-1,9,14,2,1,3,-.0011568620102480054,.5711066126823425,.4487161934375763,0,2,13,11,2,3,-1,13,12,2,1,3,.004999629221856594,.5264198184013367,.2898327112197876,0,3,7,12,4,4,-1,7,12,2,2,2,9,14,2,2,2,-.0014656189596280456,.3891738057136536,.5197871923446655,0,3,10,11,2,2,-1,11,11,1,1,2,10,12,1,1,2,-.0011975039960816503,.5795872807502747,.4927955865859985,0,2,8,17,3,2,-1,9,17,1,2,3,-.0044954330660402775,.2377603054046631,.5012555122375488,0,3,10,11,2,2,-1,11,11,1,1,2,10,12,1,1,2,.00014997160178609192,.4876626133918762,.5617607831954956,0,2,0,17,6,3,-1,0,18,6,1,3,.002639150945469737,.516808807849884,.3765509128570557,0,3,10,11,2,2,-1,11,11,1,1,2,10,12,1,1,2,-.0002936813107226044,.5446649193763733,.4874630868434906,0,3,8,11,2,2,-1,8,11,1,1,2,9,12,1,1,2,.0014211760135367513,.4687897861003876,.669133186340332,0,2,12,5,8,4,-1,12,5,4,4,2,.0794276371598244,.5193443894386292,.273294597864151,0,2,0,5,8,4,-1,4,5,4,4,2,.0799375027418137,.4971731007099152,.1782083958387375,0,2,13,2,4,1,-1,13,2,2,1,2,.0110892597585917,.5165994763374329,.3209475874900818,0,2,3,2,4,1,-1,5,2,2,1,2,.00016560709627810866,.4058471918106079,.5307276248931885,0,3,10,0,4,2,-1,12,0,2,1,2,10,1,2,1,2,-.0053354292176663876,.3445056974887848,.5158129930496216,0,2,7,12,3,1,-1,8,12,1,1,3,.0011287260567769408,.4594863057136536,.6075533032417297,0,3,8,11,4,8,-1,10,11,2,4,2,8,15,2,4,2,-.0219692196696997,.1680400967597961,.5228595733642578,0,2,9,9,2,2,-1,9,10,2,1,2,-.00021775320055894554,.3861596882343292,.5215672850608826,0,2,3,18,15,2,-1,3,19,15,1,2,.00020200149447191507,.5517979264259338,.4363039135932922,0,3,2,6,2,12,-1,2,6,1,6,2,3,12,1,6,2,-.0217331498861313,.7999460101127625,.4789851009845734,0,2,9,8,2,3,-1,9,9,2,1,3,-.0008439993252977729,.4085975885391235,.5374773144721985,0,2,7,10,3,2,-1,8,10,1,2,3,-.00043895249837078154,.5470405220985413,.4366143047809601,0,2,11,11,3,1,-1,12,11,1,1,3,.0015092400135472417,.4988996982574463,.5842149257659912,0,2,6,11,3,1,-1,7,11,1,1,3,-.003554783994331956,.6753690242767334,.4721005856990814,0,3,9,2,4,2,-1,11,2,2,1,2,9,3,2,1,2,.00048191400128416717,.541585385799408,.4357109069824219,0,2,4,12,2,3,-1,4,13,2,1,3,-.00602643983438611,.2258509993553162,.499188095331192,0,2,2,1,18,3,-1,8,1,6,3,3,-.0116681400686502,.625655472278595,.4927498996257782,0,2,5,1,4,14,-1,7,1,2,14,2,-.0028718370012938976,.3947784900665283,.524580180644989,0,2,8,16,12,3,-1,8,16,6,3,2,.0170511696487665,.4752511084079742,.5794224143028259,0,2,1,17,18,3,-1,7,17,6,3,3,-.0133520802482963,.6041104793548584,.4544535875320435,0,2,9,14,2,6,-1,9,17,2,3,2,-.0003930180100724101,.4258275926113129,.5544905066490173,0,2,9,12,1,8,-1,9,16,1,4,2,.0030483349692076445,.5233420133590698,.3780272901058197,0,2,9,14,2,3,-1,9,15,2,1,3,-.00435792887583375,.6371889114379883,.4838674068450928,0,2,9,6,2,12,-1,9,10,2,4,3,.0056661018170416355,.5374705791473389,.4163666069507599,0,2,12,9,3,3,-1,12,10,3,1,3,6067733920644969e-20,.4638795852661133,.5311625003814697,0,2,0,1,4,8,-1,2,1,2,8,2,.0367381609976292,.4688656032085419,.6466524004936218,0,3,9,1,6,2,-1,12,1,3,1,2,9,2,3,1,2,.008652813732624054,.5204318761825562,.2188657969236374,0,2,1,3,12,14,-1,1,10,12,7,2,-.1537135988473892,.1630371958017349,.4958840012550354,0,3,8,12,4,2,-1,10,12,2,1,2,8,13,2,1,2,-.00041560421232134104,.577445924282074,.4696458876132965,0,3,1,9,10,2,-1,1,9,5,1,2,6,10,5,1,2,-.0012640169588848948,.3977175951004028,.5217198133468628,0,2,8,15,4,3,-1,8,16,4,1,3,-.003547334112226963,.6046528220176697,.480831503868103,0,2,6,8,8,3,-1,6,9,8,1,3,3001906952704303e-20,.3996723890304565,.5228201150894165,0,2,9,15,5,3,-1,9,16,5,1,3,.00131130195222795,.4712158143520355,.5765997767448425,0,2,8,7,4,3,-1,8,8,4,1,3,-.0013374709524214268,.4109584987163544,.5253170132637024,0,2,7,7,6,2,-1,7,8,6,1,2,.0208767093718052,.5202993750572205,.1757981926202774,0,3,5,7,8,2,-1,5,7,4,1,2,9,8,4,1,2,-.007549794856458902,.6566609740257263,.4694975018501282,0,2,12,9,3,3,-1,12,10,3,1,3,.0241885501891375,.5128673911094666,.3370220959186554,0,2,4,7,4,2,-1,4,8,4,1,2,-.002935882890596986,.658078670501709,.4694541096687317,0,2,14,2,6,9,-1,14,5,6,3,3,.0575579293072224,.5146445035934448,.2775259912014008,0,2,4,9,3,3,-1,5,9,1,3,3,-.0011343370424583554,.3836601972579956,.5192667245864868,0,2,12,9,3,3,-1,12,10,3,1,3,.0168169997632504,.5085592865943909,.6177260875701904,0,2,0,2,6,9,-1,0,5,6,3,3,.005053517874330282,.5138763189315796,.3684791922569275,0,2,17,3,3,6,-1,18,3,1,6,3,-.004587471019476652,.5989655256271362,.4835202097892761,0,2,0,3,3,6,-1,1,3,1,6,3,.001688246033154428,.4509486854076386,.5723056793212891,0,2,17,14,1,2,-1,17,15,1,1,2,-.0016554000321775675,.3496770858764648,.5243319272994995,0,2,4,9,4,3,-1,6,9,2,3,2,-.0193738006055355,.1120536997914314,.496871292591095,0,2,12,9,3,3,-1,12,10,3,1,3,.0103744501248002,.5148196816444397,.4395213127136231,0,2,5,9,3,3,-1,5,10,3,1,3,.00014973050565458834,.4084999859333038,.526988685131073,0,3,9,5,6,8,-1,12,5,3,4,2,9,9,3,4,2,-.042981930077076,.6394104957580566,.501850426197052,0,3,5,5,6,8,-1,5,5,3,4,2,8,9,3,4,2,.008306593634188175,.470755398273468,.6698353290557861,0,2,16,1,4,6,-1,16,4,4,3,2,-.0041285790503025055,.4541369080543518,.5323647260665894,0,2,1,0,6,20,-1,3,0,2,20,3,.0017399420030415058,.433396190404892,.5439866185188293,0,2,12,11,3,2,-1,13,11,1,2,3,.00011739750334527344,.4579687118530273,.5543426275253296,0,2,5,11,3,2,-1,6,11,1,2,3,.00018585780344437808,.4324643909931183,.5426754951477051,0,2,9,4,6,1,-1,11,4,2,1,3,.005558769218623638,.525722086429596,.3550611138343811,0,2,0,0,8,3,-1,4,0,4,3,2,-.007985156029462814,.6043018102645874,.4630635976791382,0,2,15,0,2,5,-1,15,0,1,5,2,.0006059412262402475,.4598254859447479,.55331951379776,0,2,4,1,3,2,-1,5,1,1,2,3,-.0002298304025316611,.4130752086639404,.5322461128234863,0,2,7,0,6,15,-1,9,0,2,15,3,.0004374021082185209,.4043039977550507,.5409289002418518,0,2,6,11,3,1,-1,7,11,1,1,3,.0002948202018160373,.4494963884353638,.5628852248191833,0,2,12,0,3,4,-1,13,0,1,4,3,.0103126596659422,.5177510976791382,.2704316973686218,0,2,5,4,6,1,-1,7,4,2,1,3,-.007724110968410969,.1988019049167633,.4980553984642029,0,2,12,7,3,2,-1,12,8,3,1,2,-.004679720848798752,.6644750237464905,.5018296241760254,0,2,0,1,4,6,-1,0,4,4,3,2,-.005075545981526375,.3898304998874664,.5185269117355347,0,2,12,7,3,2,-1,12,8,3,1,2,.00224797404371202,.4801808893680573,.5660336017608643,0,2,2,16,3,3,-1,2,17,3,1,3,.0008332700817845762,.5210919976234436,.3957188129425049,0,3,13,8,6,10,-1,16,8,3,5,2,13,13,3,5,2,-.0412793308496475,.6154541969299316,.5007054209709167,0,2,0,9,5,2,-1,0,10,5,1,2,-.0005093018990010023,.3975942134857178,.5228403806686401,0,3,12,11,2,2,-1,13,11,1,1,2,12,12,1,1,2,.0012568780221045017,.4979138076305389,.5939183235168457,0,2,3,15,3,3,-1,3,16,3,1,3,.008004849776625633,.4984497129917145,.1633366048336029,0,2,12,7,3,2,-1,12,8,3,1,2,-.0011879300000146031,.5904964804649353,.4942624866962433,0,2,5,7,3,2,-1,5,8,3,1,2,.0006194895249791443,.4199557900428772,.5328726172447205,0,2,9,5,9,9,-1,9,8,9,3,3,.006682985927909613,.5418602824211121,.490588903427124,0,2,5,0,3,7,-1,6,0,1,7,3,-.0037062340416014194,.3725939095020294,.5138000249862671,0,2,5,2,12,5,-1,9,2,4,5,3,-.0397394113242626,.6478961110115051,.5050346851348877,0,3,6,11,2,2,-1,6,11,1,1,2,7,12,1,1,2,.0014085009461268783,.4682339131832123,.6377884149551392,0,2,15,15,3,2,-1,15,16,3,1,2,.0003932268882635981,.5458530187606812,.415048211812973,0,2,2,15,3,2,-1,2,16,3,1,2,-.0018979819724336267,.3690159916877747,.5149704217910767,0,3,14,12,6,8,-1,17,12,3,4,2,14,16,3,4,2,-.0139704402536154,.6050562858581543,.4811357855796814,0,2,2,8,15,6,-1,7,8,5,6,3,-.1010081991553307,.2017080038785934,.4992361962795258,0,2,2,2,18,17,-1,8,2,6,17,3,-.0173469204455614,.5713148713111877,.4899486005306244,0,2,5,1,4,1,-1,7,1,2,1,2,.000156197595060803,.4215388894081116,.5392642021179199,0,2,5,2,12,5,-1,9,2,4,5,3,.1343892961740494,.5136151909828186,.3767612874507904,0,2,3,2,12,5,-1,7,2,4,5,3,-.0245822407305241,.7027357816696167,.4747906923294067,0,3,4,9,12,4,-1,10,9,6,2,2,4,11,6,2,2,-.0038553720805794,.4317409098148346,.5427716970443726,0,3,5,15,6,2,-1,5,15,3,1,2,8,16,3,1,2,-.002316524973139167,.594269871711731,.4618647992610931,0,2,10,14,2,3,-1,10,15,2,1,3,-.004851812031120062,.6191568970680237,.4884895086288452,0,3,0,13,20,2,-1,0,13,10,1,2,10,14,10,1,2,.002469993894919753,.5256664752960205,.4017199873924255,0,3,4,9,12,8,-1,10,9,6,4,2,4,13,6,4,2,.0454969592392445,.5237867832183838,.2685773968696594,0,2,8,13,3,6,-1,8,16,3,3,2,-.0203195996582508,.213044598698616,.4979738891124725,0,2,10,12,2,2,-1,10,13,2,1,2,.0002699499891605228,.481404185295105,.5543122291564941,0,3,9,12,2,2,-1,9,12,1,1,2,10,13,1,1,2,-.0018232699949294329,.6482579708099365,.4709989130496979,0,3,4,11,14,4,-1,11,11,7,2,2,4,13,7,2,2,-.006301579065620899,.4581927955150604,.5306236147880554,0,2,8,5,4,2,-1,8,6,4,1,2,-.0002413949987385422,.5232086777687073,.4051763117313385,0,2,10,10,6,3,-1,12,10,2,3,3,-.001033036969602108,.5556201934814453,.4789193868637085,0,2,2,14,1,2,-1,2,15,1,1,2,.0001804116036510095,.5229442715644836,.4011810123920441,0,3,13,8,6,12,-1,16,8,3,6,2,13,14,3,6,2,-.0614078603684902,.62986820936203,.5010703206062317,0,3,1,8,6,12,-1,1,8,3,6,2,4,14,3,6,2,-.0695439130067825,.7228280901908875,.4773184061050415,0,2,10,0,6,10,-1,12,0,2,10,3,-.0705426633358002,.2269513010978699,.5182529091835022,0,3,5,11,8,4,-1,5,11,4,2,2,9,13,4,2,2,.0024423799477517605,.5237097144126892,.4098151028156281,0,3,10,16,8,4,-1,14,16,4,2,2,10,18,4,2,2,.0015494349645450711,.4773750901222229,.5468043088912964,0,2,7,7,6,6,-1,9,7,2,6,3,-.0239142198115587,.7146975994110107,.4783824980258942,0,2,10,2,4,10,-1,10,2,2,10,2,-.0124536901712418,.2635296881198883,.5241122841835022,0,2,6,1,4,9,-1,8,1,2,9,2,-.00020760179904755205,.3623757064342499,.5113608837127686,0,2,12,19,2,1,-1,12,19,1,1,2,29781080229440704e-21,.4705932140350342,.5432801842689514,104.74919891357422,211,0,2,1,2,4,9,-1,3,2,2,9,2,.0117727499455214,.3860518932342529,.6421167254447937,0,2,7,5,6,4,-1,9,5,2,4,3,.0270375702530146,.4385654926300049,.675403892993927,0,2,9,4,2,4,-1,9,6,2,2,2,-3641950024757534e-20,.5487101078033447,.34233158826828,0,2,14,5,2,8,-1,14,9,2,4,2,.001999540952965617,.3230532109737396,.5400317907333374,0,2,7,6,5,12,-1,7,12,5,6,2,.0045278300531208515,.5091639757156372,.2935043871402741,0,2,14,6,2,6,-1,14,9,2,3,2,.00047890920541249216,.4178153872489929,.5344064235687256,0,2,4,6,2,6,-1,4,9,2,3,2,.0011720920447260141,.2899182140827179,.5132070779800415,0,3,8,15,10,4,-1,13,15,5,2,2,8,17,5,2,2,.0009530570241622627,.428012490272522,.5560845136642456,0,2,6,18,2,2,-1,7,18,1,2,2,15099150004971307e-21,.4044871926307678,.5404760241508484,0,2,11,3,6,2,-1,11,4,6,1,2,-.0006081790197640657,.4271768927574158,.5503466129302979,0,2,2,0,16,6,-1,2,2,16,2,3,.003322452073916793,.3962723910808563,.5369734764099121,0,2,11,3,6,2,-1,11,4,6,1,2,-.0011037490330636501,.4727177917957306,.5237749814987183,0,2,4,11,10,3,-1,4,12,10,1,3,-.0014350269921123981,.5603008270263672,.4223509132862091,0,2,11,3,6,2,-1,11,4,6,1,2,.0020767399109899998,.5225917100906372,.4732725918292999,0,2,3,3,6,2,-1,3,4,6,1,2,-.00016412809782195836,.3999075889587402,.5432739853858948,0,2,16,0,4,7,-1,16,0,2,7,2,.008830243721604347,.4678385853767395,.6027327179908752,0,2,0,14,9,6,-1,0,16,9,2,3,-.0105520701035857,.3493967056274414,.5213974714279175,0,2,9,16,3,3,-1,9,17,3,1,3,-.00227316003292799,.6185818910598755,.4749062955379486,0,2,4,6,6,2,-1,6,6,2,2,3,-.0008478633244521916,.5285341143608093,.3843482136726379,0,2,15,11,1,3,-1,15,12,1,1,3,.0012081359745934606,.536064088344574,.3447335958480835,0,2,5,5,2,3,-1,5,6,2,1,3,.002651273040100932,.4558292031288147,.6193962097167969,0,2,10,9,2,2,-1,10,10,2,1,2,-.0011012479662895203,.368023008108139,.5327628254890442,0,2,3,1,4,3,-1,5,1,2,3,2,.0004956151824444532,.396059513092041,.5274940729141235,0,2,16,0,4,7,-1,16,0,2,7,2,-.0439017713069916,.7020444869995117,.4992839097976685,0,2,0,0,20,1,-1,10,0,10,1,2,.0346903502941132,.5049164295196533,.276660293340683,0,2,15,11,1,3,-1,15,12,1,1,3,-.002744219033047557,.2672632932662964,.5274971127510071,0,2,0,4,3,4,-1,1,4,1,4,3,.003331658896058798,.4579482972621918,.6001101732254028,0,2,16,3,3,6,-1,16,5,3,2,3,-.0200445707887411,.3171594142913818,.523571789264679,0,2,1,3,3,6,-1,1,5,3,2,3,.0013492030557245016,.5265362858772278,.4034324884414673,0,3,6,2,12,6,-1,12,2,6,3,2,6,5,6,3,2,.0029702018946409225,.5332456827163696,.4571984112262726,0,2,8,10,4,3,-1,8,11,4,1,3,.006303998176008463,.4593310952186585,.6034635901451111,0,3,4,2,14,6,-1,11,2,7,3,2,4,5,7,3,2,-.0129365902394056,.4437963962554932,.5372971296310425,0,2,9,11,2,3,-1,9,12,2,1,3,.004014872945845127,.4680323898792267,.6437833905220032,0,2,15,13,2,3,-1,15,14,2,1,3,-.002640167949721217,.3709631860256195,.5314332842826843,0,2,8,12,4,3,-1,8,13,4,1,3,.0139184398576617,.4723555147647858,.713080883026123,0,2,15,11,1,3,-1,15,12,1,1,3,-.00045087869511917233,.4492394030094147,.5370404124259949,0,2,7,13,5,2,-1,7,14,5,1,2,.00025384349282830954,.4406864047050476,.5514402985572815,0,2,7,12,6,3,-1,7,13,6,1,3,.002271000063046813,.4682416915893555,.5967984199523926,0,2,5,11,4,4,-1,5,13,4,2,2,.002412077970802784,.5079392194747925,.3018598854541779,0,2,11,4,3,3,-1,12,4,1,3,3,-3602567085181363e-20,.560103714466095,.4471096992492676,0,2,6,4,3,3,-1,7,4,1,3,3,-.0074905529618263245,.2207535058259964,.4989944100379944,0,2,16,5,3,6,-1,17,5,1,6,3,-.017513120546937,.6531215906143188,.5017648935317993,0,2,3,6,12,7,-1,7,6,4,7,3,.1428163051605225,.4967963099479675,.1482062041759491,0,2,16,5,3,6,-1,17,5,1,6,3,.005534526892006397,.4898946881294251,.5954223871231079,0,2,3,13,2,3,-1,3,14,2,1,3,-.0009632359142415226,.3927116990089417,.519607424736023,0,2,16,5,3,6,-1,17,5,1,6,3,-.0020370010752230883,.5613325238227844,.4884858131408691,0,2,1,5,3,6,-1,2,5,1,6,3,.0016614829655736685,.4472880065441132,.5578880906105042,0,2,1,9,18,1,-1,7,9,6,1,3,-.0031188090797513723,.3840532898902893,.5397477746009827,0,2,0,9,8,7,-1,4,9,4,7,2,-.006400061771273613,.5843983888626099,.4533218145370483,0,2,12,11,8,2,-1,12,12,8,1,2,.0003131960111204535,.5439221858978271,.4234727919101715,0,2,0,11,8,2,-1,0,12,8,1,2,-.0182220991700888,.1288464963436127,.4958404898643494,0,2,9,13,2,3,-1,9,14,2,1,3,.008796924725174904,.49512979388237,.7153480052947998,0,3,4,10,12,4,-1,4,10,6,2,2,10,12,6,2,2,-.004239507019519806,.3946599960327148,.5194936990737915,0,2,9,3,3,7,-1,10,3,1,7,3,.009708627127110958,.4897503852844238,.6064900159835815,0,2,7,2,3,5,-1,8,2,1,5,3,-.003993417136371136,.3245440125465393,.5060828924179077,0,3,9,12,4,6,-1,11,12,2,3,2,9,15,2,3,2,-.0167850591242313,.1581953018903732,.5203778743743896,0,2,8,7,3,6,-1,9,7,1,6,3,.018272090703249,.4680935144424439,.6626979112625122,0,2,15,4,4,2,-1,15,5,4,1,2,.00568728381767869,.5211697816848755,.3512184917926788,0,2,8,7,3,3,-1,9,7,1,3,3,-.0010739039862528443,.5768386125564575,.4529845118522644,0,2,14,2,6,4,-1,14,4,6,2,2,-.00370938703417778,.4507763087749481,.5313581228256226,0,2,7,16,6,1,-1,9,16,2,1,3,-.0002111070934915915,.5460820198059082,.4333376884460449,0,2,15,13,2,3,-1,15,14,2,1,3,.0010670139454305172,.5371856093406677,.4078390896320343,0,2,8,7,3,10,-1,9,7,1,10,3,.0035943021066486835,.4471287131309509,.5643836259841919,0,2,11,10,2,6,-1,11,12,2,2,3,-.005177603103220463,.4499393105506897,.5280330181121826,0,2,6,10,4,1,-1,8,10,2,1,2,-.00025414369883947074,.5516173243522644,.4407708048820496,0,2,10,9,2,2,-1,10,10,2,1,2,.006352256052196026,.5194190144538879,.2465227991342545,0,2,8,9,2,2,-1,8,10,2,1,2,-.00044205080484971404,.3830705881118774,.5139682292938232,0,3,12,7,2,2,-1,13,7,1,1,2,12,8,1,1,2,.0007448872784152627,.4891090989112854,.5974786877632141,0,3,5,7,2,2,-1,5,7,1,1,2,6,8,1,1,2,-.0035116379149258137,.7413681745529175,.4768764972686768,0,2,13,0,3,14,-1,14,0,1,14,3,-.0125409103929996,.3648819029331207,.5252826809883118,0,2,4,0,3,14,-1,5,0,1,14,3,.009493185207247734,.5100492835044861,.362958699464798,0,2,13,4,3,14,-1,14,4,1,14,3,.0129611501470208,.5232442021369934,.4333561062812805,0,2,9,14,2,3,-1,9,15,2,1,3,.004720944911241531,.4648149013519287,.6331052780151367,0,2,8,14,4,3,-1,8,15,4,1,3,-.0023119079414755106,.5930309891700745,.4531058073043823,0,2,4,2,3,16,-1,5,2,1,16,3,-.002826229901984334,.3870477974414825,.5257101058959961,0,2,7,2,8,10,-1,7,7,8,5,2,-.0014311339473351836,.552250325679779,.4561854898929596,0,2,6,14,7,3,-1,6,15,7,1,3,.0019378310535103083,.4546220898628235,.5736966729164124,0,3,9,2,10,12,-1,14,2,5,6,2,9,8,5,6,2,.00026343559147790074,.5345739126205444,.4571875035762787,0,2,6,7,8,2,-1,6,8,8,1,2,.0007825752254575491,.3967815935611725,.5220187902450562,0,2,8,13,4,6,-1,8,16,4,3,2,-.0195504408329725,.282964289188385,.5243508219718933,0,2,6,6,1,3,-1,6,7,1,1,3,.00043914958951063454,.4590066969394684,.589909017086029,0,2,16,2,4,6,-1,16,4,4,2,3,.0214520003646612,.523141086101532,.2855378985404968,0,3,6,6,4,2,-1,6,6,2,1,2,8,7,2,1,2,.0005897358059883118,.4397256970405579,.550642192363739,0,2,16,2,4,6,-1,16,4,4,2,3,-.0261576101183891,.3135079145431519,.5189175009727478,0,2,0,2,4,6,-1,0,4,4,2,3,-.0139598604291677,.3213272988796234,.5040717720985413,0,2,9,6,2,6,-1,9,6,1,6,2,-.006369901821017265,.6387544870376587,.4849506914615631,0,2,3,4,6,10,-1,3,9,6,5,2,-.008561382070183754,.2759132087230682,.5032019019126892,0,2,9,5,2,6,-1,9,5,1,6,2,.000966229010373354,.4685640931129456,.5834879279136658,0,2,3,13,2,3,-1,3,14,2,1,3,.0007655026856809855,.5175207257270813,.389642208814621,0,2,13,13,3,2,-1,13,14,3,1,2,-.008183334022760391,.2069136947393417,.5208122134208679,0,3,2,16,10,4,-1,2,16,5,2,2,7,18,5,2,2,-.009397693909704685,.6134091019630432,.4641222953796387,0,3,5,6,10,6,-1,10,6,5,3,2,5,9,5,3,2,.004802898038178682,.5454108119010925,.439521998167038,0,2,7,14,1,3,-1,7,15,1,1,3,-.003568056970834732,.6344485282897949,.4681093990802765,0,2,14,16,6,3,-1,14,17,6,1,3,.0040733120404183865,.5292683243751526,.4015620052814484,0,2,5,4,3,3,-1,5,5,3,1,3,.0012568129459396005,.4392988085746765,.5452824831008911,0,2,7,4,10,3,-1,7,5,10,1,3,-.0029065010603517294,.5898832082748413,.4863379895687103,0,2,0,4,5,4,-1,0,6,5,2,2,-.00244093406945467,.4069364964962006,.5247421860694885,0,2,13,11,3,9,-1,13,14,3,3,3,.0248307008296251,.5182725787162781,.3682524859905243,0,2,4,11,3,9,-1,4,14,3,3,3,-.0488540083169937,.1307577937841415,.496128112077713,0,2,9,7,2,1,-1,9,7,1,1,2,-.001611037994734943,.6421005725860596,.4872662127017975,0,2,5,0,6,17,-1,7,0,2,17,3,-.0970094799995422,.0477693490684032,.495098888874054,0,2,10,3,6,3,-1,10,3,3,3,2,.0011209240183234215,.4616267085075378,.5354745984077454,0,2,2,2,15,4,-1,7,2,5,4,3,-.001306409016251564,.626185417175293,.4638805985450745,0,3,8,2,8,2,-1,12,2,4,1,2,8,3,4,1,2,.00045771620352752507,.5384417772293091,.4646640121936798,0,2,8,1,3,6,-1,8,3,3,2,3,-.0006314995116554201,.3804047107696533,.51302570104599,0,2,9,17,2,2,-1,9,18,2,1,2,.0001450597046641633,.4554310142993927,.5664461851119995,0,2,0,0,2,14,-1,1,0,1,14,2,-.0164745505899191,.6596958041191101,.4715859889984131,0,2,12,0,7,3,-1,12,1,7,1,3,.0133695797994733,.519546627998352,.3035964965820313,0,2,1,14,1,2,-1,1,15,1,1,2,.00010271780047332868,.522917628288269,.4107066094875336,0,3,14,12,2,8,-1,15,12,1,4,2,14,16,1,4,2,-.0055311559699475765,.6352887749671936,.4960907101631165,0,2,1,0,7,3,-1,1,1,7,1,3,-.0026187049224972725,.3824546039104462,.5140984058380127,0,3,14,12,2,8,-1,15,12,1,4,2,14,16,1,4,2,.005083426833152771,.4950439929962158,.6220818758010864,0,3,6,0,8,12,-1,6,0,4,6,2,10,6,4,6,2,.0798181593418121,.4952335953712463,.1322475969791412,0,2,6,1,8,9,-1,6,4,8,3,3,-.0992265865206718,.7542728781700134,.5008416771888733,0,2,5,2,2,2,-1,5,3,2,1,2,-.0006517401780001819,.3699302971363068,.5130121111869812,0,3,13,14,6,6,-1,16,14,3,3,2,13,17,3,3,2,-.018996849656105,.6689178943634033,.4921202957630158,0,3,0,17,20,2,-1,0,17,10,1,2,10,18,10,1,2,.0173468999564648,.4983300864696503,.1859198063611984,0,3,10,3,2,6,-1,11,3,1,3,2,10,6,1,3,2,.0005508210160769522,.4574424028396606,.5522121787071228,0,2,5,12,6,2,-1,8,12,3,2,2,.002005605027079582,.5131744742393494,.3856469988822937,0,2,10,7,6,13,-1,10,7,3,13,2,-.007768819108605385,.4361700117588043,.5434309244155884,0,2,5,15,10,5,-1,10,15,5,5,2,.0508782789111137,.4682720899581909,.6840639710426331,0,2,10,4,4,10,-1,10,4,2,10,2,-.0022901780903339386,.4329245090484619,.5306099057197571,0,2,5,7,2,1,-1,6,7,1,1,2,-.00015715380141045898,.5370057225227356,.4378164112567902,0,2,10,3,6,7,-1,10,3,3,7,2,.1051924005150795,.5137274265289307,.0673614665865898,0,2,4,3,6,7,-1,7,3,3,7,2,.002719891956076026,.4112060964107513,.5255665183067322,0,2,1,7,18,5,-1,7,7,6,5,3,.0483377799391747,.5404623746871948,.4438967108726502,0,2,3,17,4,3,-1,5,17,2,3,2,.0009570376132614911,.4355969130992889,.5399510860443115,0,3,8,14,12,6,-1,14,14,6,3,2,8,17,6,3,2,-.0253712590783834,.5995175242424011,.5031024813652039,0,3,0,13,20,4,-1,0,13,10,2,2,10,15,10,2,2,.0524579510092735,.4950287938117981,.1398351043462753,0,3,4,5,14,2,-1,11,5,7,1,2,4,6,7,1,2,-.0123656298965216,.639729917049408,.496410608291626,0,3,1,2,10,12,-1,1,2,5,6,2,6,8,5,6,2,-.1458971947431564,.1001669988036156,.494632214307785,0,2,6,1,14,3,-1,6,2,14,1,3,-.0159086007624865,.3312329947948456,.5208340883255005,0,2,8,16,2,3,-1,8,17,2,1,3,.00039486068999394774,.4406363964080811,.5426102876663208,0,2,9,17,3,2,-1,10,17,1,2,3,-.0052454001270234585,.2799589931964874,.5189967155456543,0,3,5,15,4,2,-1,5,15,2,1,2,7,16,2,1,2,-.005042179953306913,.6987580060958862,.4752142131328583,0,2,10,15,1,3,-1,10,16,1,1,3,.0029812189750373363,.4983288943767548,.6307479739189148,0,3,8,16,4,4,-1,8,16,2,2,2,10,18,2,2,2,-.007288430817425251,.298233300447464,.5026869773864746,0,2,6,11,8,6,-1,6,14,8,3,2,.0015094350092113018,.5308442115783691,.3832970857620239,0,2,2,13,5,2,-1,2,14,5,1,2,-.009334079921245575,.2037964016199112,.4969817101955414,0,3,13,14,6,6,-1,16,14,3,3,2,13,17,3,3,2,.0286671407520771,.5025696754455566,.6928027272224426,0,2,1,9,18,4,-1,7,9,6,4,3,.1701968014240265,.4960052967071533,.1476442962884903,0,3,13,14,6,6,-1,16,14,3,3,2,13,17,3,3,2,-.003261447884142399,.5603063702583313,.4826056063175201,0,2,0,2,1,6,-1,0,4,1,2,3,.0005576927796937525,.5205562114715576,.4129633009433746,0,2,5,0,15,20,-1,5,10,15,10,2,.3625833988189697,.5221652984619141,.3768612146377564,0,3,1,14,6,6,-1,1,14,3,3,2,4,17,3,3,2,-.0116151301190257,.6022682785987854,.4637489914894104,0,3,8,14,4,6,-1,10,14,2,3,2,8,17,2,3,2,-.004079519771039486,.4070447087287903,.5337479114532471,0,2,7,11,2,1,-1,8,11,1,1,2,.0005720430053770542,.4601835012435913,.5900393128395081,0,2,9,17,3,2,-1,10,17,1,2,3,.000675433489959687,.5398252010345459,.4345428943634033,0,2,8,17,3,2,-1,9,17,1,2,3,.0006329569732770324,.5201563239097595,.4051358997821808,0,3,12,14,4,6,-1,14,14,2,3,2,12,17,2,3,2,.00124353205319494,.4642387926578522,.5547441244125366,0,3,4,14,4,6,-1,4,14,2,3,2,6,17,2,3,2,-.004736385773867369,.6198567152023315,.4672552049160004,0,3,13,14,2,6,-1,14,14,1,3,2,13,17,1,3,2,-.006465846206992865,.6837332844734192,.5019000768661499,0,3,5,14,2,6,-1,5,14,1,3,2,6,17,1,3,2,.000350173213519156,.4344803094863892,.5363622903823853,0,2,7,0,6,12,-1,7,4,6,4,3,.00015754920605104417,.4760079085826874,.5732020735740662,0,2,0,7,12,2,-1,4,7,4,2,3,.009977436624467373,.5090985894203186,.3635039925575256,0,2,10,3,3,13,-1,11,3,1,13,3,-.0004146452993154526,.5570064783096313,.4593802094459534,0,2,7,3,3,13,-1,8,3,1,13,3,-.00035888899583369493,.5356845855712891,.4339134991168976,0,2,10,8,6,3,-1,10,9,6,1,3,.0004046325047966093,.4439803063869476,.5436776876449585,0,2,3,11,3,2,-1,4,11,1,2,3,-.0008218478760682046,.4042294919490814,.5176299214363098,0,3,13,12,6,8,-1,16,12,3,4,2,13,16,3,4,2,.005946741905063391,.4927651882171631,.5633779764175415,0,2,7,6,6,5,-1,9,6,2,5,3,-.0217533893883228,.8006293773651123,.480084091424942,0,2,17,11,2,7,-1,17,11,1,7,2,-.0145403798669577,.3946054875850678,.5182222723960876,0,2,3,13,8,2,-1,7,13,4,2,2,-.0405107699334621,.0213249903172255,.4935792982578278,0,2,6,9,8,3,-1,6,10,8,1,3,-.0005845826817676425,.4012795984745026,.5314025282859802,0,2,4,3,4,3,-1,4,4,4,1,3,.005515180062502623,.4642418920993805,.5896260738372803,0,2,11,3,4,3,-1,11,4,4,1,3,-.006062622182071209,.6502159237861633,.5016477704048157,0,2,1,4,17,12,-1,1,8,17,4,3,.0945358425378799,.5264708995819092,.4126827120780945,0,2,11,3,4,3,-1,11,4,4,1,3,.004731505177915096,.4879199862480164,.5892447829246521,0,2,4,8,6,3,-1,4,9,6,1,3,-.0005257147131487727,.391728013753891,.5189412832260132,0,2,12,3,5,3,-1,12,4,5,1,3,-.002546404954046011,.5837599039077759,.498570591211319,0,2,1,11,2,7,-1,2,11,1,7,2,-.0260756891220808,.1261983960866928,.4955821931362152,0,3,15,12,2,8,-1,16,12,1,4,2,15,16,1,4,2,-.00547797093167901,.5722513794898987,.5010265707969666,0,2,4,8,11,3,-1,4,9,11,1,3,.005133774131536484,.527326226234436,.4226376116275787,0,3,9,13,6,2,-1,12,13,3,1,2,9,14,3,1,2,.000479449809063226,.4450066983699799,.5819587111473083,0,2,6,13,4,3,-1,6,14,4,1,3,-.0021114079281687737,.5757653117179871,.451171487569809,0,2,9,12,3,3,-1,10,12,1,3,3,-.0131799904629588,.1884381026029587,.5160734057426453,0,2,5,3,3,3,-1,5,4,3,1,3,-.004796809982508421,.6589789986610413,.4736118912696838,0,2,9,4,2,3,-1,9,5,2,1,3,.0067483168095350266,.5259429812431335,.3356395065784454,0,2,0,2,16,3,-1,0,3,16,1,3,.0014623369788751006,.5355271100997925,.4264092147350311,0,3,15,12,2,8,-1,16,12,1,4,2,15,16,1,4,2,.004764515906572342,.5034406781196594,.5786827802658081,0,3,3,12,2,8,-1,3,12,1,4,2,4,16,1,4,2,.0068066660314798355,.475660502910614,.6677829027175903,0,2,14,13,3,6,-1,14,15,3,2,3,.0036608621012419462,.5369611978530884,.4311546981334686,0,2,3,13,3,6,-1,3,15,3,2,3,.0214496403932571,.4968641996383667,.1888816058635712,0,3,6,5,10,2,-1,11,5,5,1,2,6,6,5,1,2,.004167890176177025,.4930733144283295,.5815368890762329,0,2,2,14,14,6,-1,2,17,14,3,2,.008646756410598755,.5205205082893372,.4132595062255859,0,2,10,14,1,3,-1,10,15,1,1,3,-.0003611407882999629,.5483555197715759,.4800927937030792,0,3,4,16,2,2,-1,4,16,1,1,2,5,17,1,1,2,.0010808729566633701,.4689902067184448,.6041421294212341,0,2,10,6,2,3,-1,10,7,2,1,3,.005771995987743139,.5171142220497131,.3053277134895325,0,3,0,17,20,2,-1,0,17,10,1,2,10,18,10,1,2,.001572077046148479,.5219978094100952,.4178803861141205,0,2,13,6,1,3,-1,13,7,1,1,3,-.0019307859474793077,.5860369801521301,.4812920093536377,0,2,8,13,3,2,-1,9,13,1,2,3,-.007892627269029617,.1749276965856552,.497173398733139,0,2,12,2,3,3,-1,13,2,1,3,3,-.002222467912361026,.434258908033371,.521284818649292,0,3,3,18,2,2,-1,3,18,1,1,2,4,19,1,1,2,.0019011989934369922,.4765186905860901,.689205527305603,0,2,9,16,3,4,-1,10,16,1,4,3,.0027576119173318148,.5262191295623779,.4337486028671265,0,2,6,6,1,3,-1,6,7,1,1,3,.005178744904696941,.4804069101810455,.7843729257583618,0,2,13,1,5,2,-1,13,2,5,1,2,-.0009027334162965417,.412084698677063,.5353423953056335,0,3,7,14,6,2,-1,7,14,3,1,2,10,15,3,1,2,.005179795902222395,.4740372896194458,.6425960063934326,0,2,11,3,3,4,-1,12,3,1,4,3,-.0101140001788735,.2468792051076889,.5175017714500427,0,2,1,13,12,6,-1,5,13,4,6,3,-.0186170600354671,.5756294131278992,.4628978967666626,0,2,14,11,5,2,-1,14,12,5,1,2,.0059225959703326225,.5169625878334045,.3214271068572998,0,3,2,15,14,4,-1,2,15,7,2,2,9,17,7,2,2,-.006294507998973131,.3872014880180359,.5141636729240417,0,3,3,7,14,2,-1,10,7,7,1,2,3,8,7,1,2,.0065353019163012505,.4853048920631409,.6310489773750305,0,2,1,11,4,2,-1,1,12,4,1,2,.0010878399480134249,.5117315053939819,.3723258972167969,0,2,14,0,6,14,-1,16,0,2,14,3,-.0225422400981188,.5692740082740784,.4887112975120544,0,2,4,11,1,3,-1,4,12,1,1,3,-.003006566083058715,.2556012868881226,.5003992915153503,0,2,14,0,6,14,-1,16,0,2,14,3,.007474127225577831,.4810872972011566,.5675926804542542,0,2,1,10,3,7,-1,2,10,1,7,3,.0261623207479715,.4971194863319397,.1777237057685852,0,2,8,12,9,2,-1,8,13,9,1,2,.0009435273823328316,.4940010905265808,.549125075340271,0,2,0,6,20,1,-1,10,6,10,1,2,.0333632417023182,.5007612109184265,.2790724039077759,0,2,8,4,4,4,-1,8,4,2,4,2,-.0151186501607299,.7059578895568848,.4973031878471375,0,2,0,0,2,2,-1,0,1,2,1,2,.0009864894673228264,.5128620266914368,.3776761889457703,105.76110076904297,213,0,2,5,3,10,9,-1,5,6,10,3,3,-.0951507985591888,.6470757126808167,.4017286896705627,0,2,15,2,4,10,-1,15,2,2,10,2,.006270234007388353,.399982213973999,.574644923210144,0,2,8,2,2,7,-1,9,2,1,7,2,.000300180894555524,.355877012014389,.5538809895515442,0,2,7,4,12,1,-1,11,4,4,1,3,.0011757409665733576,.425653487443924,.5382617712020874,0,2,3,4,9,1,-1,6,4,3,1,3,4423526843311265e-20,.3682908117771149,.5589926838874817,0,2,15,10,1,4,-1,15,12,1,2,2,-29936920327600092e-21,.5452470183372498,.4020367860794067,0,2,4,10,6,4,-1,7,10,3,4,2,.003007319988682866,.5239058136940002,.3317843973636627,0,2,15,9,1,6,-1,15,12,1,3,2,-.0105138896033168,.4320689141750336,.5307983756065369,0,2,7,17,6,3,-1,7,18,6,1,3,.008347682654857635,.4504637122154236,.6453298926353455,0,3,14,3,2,16,-1,15,3,1,8,2,14,11,1,8,2,-.0031492270063608885,.4313425123691559,.5370525121688843,0,2,4,9,1,6,-1,4,12,1,3,2,-1443564997316571e-20,.5326603055000305,.381797194480896,0,2,12,1,5,2,-1,12,2,5,1,2,-.00042855090578086674,.430516391992569,.5382009744644165,0,3,6,18,4,2,-1,6,18,2,1,2,8,19,2,1,2,.00015062429883982986,.4235970973968506,.5544965267181396,0,3,2,4,16,10,-1,10,4,8,5,2,2,9,8,5,2,.0715598315000534,.5303059816360474,.2678802907466888,0,2,6,5,1,10,-1,6,10,1,5,2,.0008409518050029874,.3557108938694,.5205433964729309,0,2,4,8,15,2,-1,9,8,5,2,3,.0629865005612373,.5225362777709961,.2861376106739044,0,2,1,8,15,2,-1,6,8,5,2,3,-.0033798629883676767,.3624185919761658,.5201697945594788,0,2,9,5,3,6,-1,9,7,3,2,3,-.00011810739670181647,.547447681427002,.3959893882274628,0,2,5,7,8,2,-1,9,7,4,2,2,-.0005450560129247606,.3740422129631043,.5215715765953064,0,2,9,11,2,3,-1,9,12,2,1,3,-.0018454910023137927,.5893052220344543,.4584448933601379,0,2,1,0,16,3,-1,1,1,16,1,3,-.0004383237101137638,.4084582030773163,.5385351181030273,0,2,11,2,7,2,-1,11,3,7,1,2,-.002400083001703024,.377745509147644,.5293580293655396,0,2,5,1,10,18,-1,5,7,10,6,3,-.0987957417964935,.2963612079620361,.5070089101791382,0,2,17,4,3,2,-1,18,4,1,2,3,.0031798239797353745,.4877632856369019,.6726443767547607,0,2,8,13,1,3,-1,8,14,1,1,3,.00032406419632025063,.4366911053657532,.5561109781265259,0,2,3,14,14,6,-1,3,16,14,2,3,-.0325472503900528,.31281578540802,.5308616161346436,0,2,0,2,3,4,-1,1,2,1,4,3,-.007756113074719906,.6560224890708923,.4639872014522553,0,2,12,1,5,2,-1,12,2,5,1,2,.0160272493958473,.5172680020332336,.3141897916793823,0,2,3,1,5,2,-1,3,2,5,1,2,710023505234858e-20,.4084446132183075,.5336294770240784,0,2,10,13,2,3,-1,10,14,2,1,3,.007342280820012093,.4966922104358673,.660346508026123,0,2,8,13,2,3,-1,8,14,2,1,3,-.0016970280557870865,.5908237099647522,.4500182867050171,0,2,14,12,2,3,-1,14,13,2,1,3,.0024118260480463505,.5315160751342773,.3599720895290375,0,2,7,2,2,3,-1,7,3,2,1,3,-.005530093796551228,.2334040999412537,.4996814131736755,0,3,5,6,10,4,-1,10,6,5,2,2,5,8,5,2,2,-.0026478730142116547,.5880935788154602,.4684734046459198,0,2,9,13,1,6,-1,9,16,1,3,2,.0112956296652555,.4983777105808258,.1884590983390808,0,3,10,12,2,2,-1,11,12,1,1,2,10,13,1,1,2,-.000669528788421303,.5872138142585754,.4799019992351532,0,2,4,12,2,3,-1,4,13,2,1,3,.0014410680159926414,.5131189227104187,.350101113319397,0,2,14,4,6,6,-1,14,6,6,2,3,.0024637870956212282,.5339372158050537,.4117639064788818,0,2,8,17,2,3,-1,8,18,2,1,3,.0003311451873742044,.4313383102416992,.5398246049880981,0,2,16,4,4,6,-1,16,6,4,2,3,-.0335572697222233,.26753368973732,.5179154872894287,0,2,0,4,4,6,-1,0,6,4,2,3,.0185394193977118,.4973869919776917,.2317177057266235,0,2,14,6,2,3,-1,14,6,1,3,2,-.00029698139405809343,.552970826625824,.4643664062023163,0,2,4,9,8,1,-1,8,9,4,1,2,-.0004557725915219635,.5629584193229675,.4469191133975983,0,2,8,12,4,3,-1,8,13,4,1,3,-.0101589802652597,.6706212759017944,.4925918877124786,0,2,5,12,10,6,-1,5,14,10,2,3,-22413829356082715e-21,.5239421725273132,.3912901878356934,0,2,11,12,1,2,-1,11,13,1,1,2,7203496352303773e-20,.4799438118934631,.5501788854598999,0,2,8,15,4,2,-1,8,16,4,1,2,-.006926720961928368,.6930009722709656,.4698084890842438,0,3,6,9,8,8,-1,10,9,4,4,2,6,13,4,4,2,-.007699783891439438,.409962385892868,.5480883121490479,0,3,7,12,4,6,-1,7,12,2,3,2,9,15,2,3,2,-.007313054986298084,.3283475935459137,.5057886242866516,0,2,10,11,3,1,-1,11,11,1,1,3,.0019650589674711227,.4978047013282776,.6398249864578247,0,3,9,7,2,10,-1,9,7,1,5,2,10,12,1,5,2,.007164760027080774,.4661160111427307,.6222137212753296,0,2,8,0,6,6,-1,10,0,2,6,3,-.0240786392241716,.2334644943475723,.5222162008285522,0,2,3,11,2,6,-1,3,13,2,2,3,-.0210279691964388,.1183653995394707,.4938226044178009,0,2,16,12,1,2,-1,16,13,1,1,2,.00036017020465806127,.5325019955635071,.4116711020469666,0,3,1,14,6,6,-1,1,14,3,3,2,4,17,3,3,2,-.0172197297215462,.6278762221336365,.4664269089698792,0,2,13,1,3,6,-1,14,1,1,6,3,-.007867214269936085,.3403415083885193,.5249736905097961,0,2,8,8,2,2,-1,8,9,2,1,2,-.000447773898486048,.3610411882400513,.5086259245872498,0,2,9,9,3,3,-1,10,9,1,3,3,.005548601038753986,.4884265959262848,.6203498244285583,0,2,8,7,3,3,-1,8,8,3,1,3,-.00694611482322216,.262593001127243,.5011097192764282,0,2,14,0,2,3,-1,14,0,1,3,2,.00013569870498031378,.4340794980525971,.5628312230110168,0,2,1,0,18,9,-1,7,0,6,9,3,-.0458802506327629,.6507998704910278,.4696274995803833,0,2,11,5,4,15,-1,11,5,2,15,2,-.0215825606137514,.3826502859592438,.5287616848945618,0,2,5,5,4,15,-1,7,5,2,15,2,-.0202095396816731,.3233368098735809,.5074477195739746,0,2,14,0,2,3,-1,14,0,1,3,2,.005849671084433794,.5177603960037231,.4489670991897583,0,2,4,0,2,3,-1,5,0,1,3,2,-5747637987951748e-20,.4020850956439972,.5246363878250122,0,3,11,12,2,2,-1,12,12,1,1,2,11,13,1,1,2,-.001151310047134757,.6315072178840637,.490515410900116,0,3,7,12,2,2,-1,7,12,1,1,2,8,13,1,1,2,.0019862831104546785,.4702459871768951,.6497151255607605,0,2,12,0,3,4,-1,13,0,1,4,3,-.005271951202303171,.3650383949279785,.5227652788162231,0,2,4,11,3,3,-1,4,12,3,1,3,.0012662699446082115,.5166100859642029,.387761801481247,0,2,12,7,4,2,-1,12,8,4,1,2,-.006291944067925215,.737589418888092,.5023847818374634,0,2,8,10,3,2,-1,9,10,1,2,3,.000673601112794131,.4423226118087769,.5495585799217224,0,2,9,9,3,2,-1,10,9,1,2,3,-.0010523450328037143,.5976396203041077,.4859583079814911,0,2,8,9,3,2,-1,9,9,1,2,3,-.00044216238893568516,.5955939292907715,.4398930966854096,0,2,12,0,3,4,-1,13,0,1,4,3,.0011747940443456173,.5349888205528259,.4605058133602142,0,2,5,0,3,4,-1,6,0,1,4,3,.005245743785053492,.5049191117286682,.2941577136516571,0,3,4,14,12,4,-1,10,14,6,2,2,4,16,6,2,2,-.0245397202670574,.2550177872180939,.5218586921691895,0,2,8,13,2,3,-1,8,14,2,1,3,.0007379304151982069,.4424861073493958,.5490816235542297,0,2,10,10,3,8,-1,10,14,3,4,2,.0014233799884095788,.5319514274597168,.4081355929374695,0,3,8,10,4,8,-1,8,10,2,4,2,10,14,2,4,2,-.0024149110540747643,.4087659120559692,.5238950252532959,0,2,10,8,3,1,-1,11,8,1,1,3,-.0012165299849584699,.567457914352417,.4908052980899811,0,2,9,12,1,6,-1,9,15,1,3,2,-.0012438809499144554,.4129425883293152,.5256118178367615,0,2,10,8,3,1,-1,11,8,1,1,3,.006194273941218853,.5060194134712219,.7313653230667114,0,2,7,8,3,1,-1,8,8,1,1,3,-.0016607169527560472,.5979632139205933,.4596369862556458,0,2,5,2,15,14,-1,5,9,15,7,2,-.0273162592202425,.4174365103244782,.5308842062950134,0,3,2,1,2,10,-1,2,1,1,5,2,3,6,1,5,2,-.00158455700147897,.56158047914505,.4519486129283905,0,2,14,14,2,3,-1,14,15,2,1,3,-.0015514739789068699,.4076187014579773,.5360785126686096,0,2,2,7,3,3,-1,3,7,1,3,3,.0003844655875582248,.4347293972969055,.5430442094802856,0,2,17,4,3,3,-1,17,5,3,1,3,-.0146722598001361,.1659304946660996,.5146093964576721,0,2,0,4,3,3,-1,0,5,3,1,3,.008160888217389584,.4961819052696228,.1884745955467224,0,3,13,5,6,2,-1,16,5,3,1,2,13,6,3,1,2,.0011121659772470593,.4868263900279999,.6093816161155701,0,2,4,19,12,1,-1,8,19,4,1,3,-.007260377053171396,.6284325122833252,.4690375924110413,0,2,12,12,2,4,-1,12,14,2,2,2,-.00024046430189628154,.5575000047683716,.4046044051647186,0,2,3,15,1,3,-1,3,16,1,1,3,-.00023348190006799996,.4115762114524841,.5252848267555237,0,2,11,16,6,4,-1,11,16,3,4,2,.005573648028075695,.4730072915554047,.5690100789070129,0,2,2,10,3,10,-1,3,10,1,10,3,.0306237693876028,.4971886873245239,.1740095019340515,0,2,12,8,2,4,-1,12,8,1,4,2,.0009207479888573289,.5372117757797241,.4354872107505798,0,2,6,8,2,4,-1,7,8,1,4,2,-4355073906481266e-20,.5366883873939514,.4347316920757294,0,2,10,14,2,3,-1,10,14,1,3,2,-.006645271088927984,.3435518145561218,.516053318977356,0,2,5,1,10,3,-1,10,1,5,3,2,.0432219989597797,.4766792058944702,.7293652892112732,0,2,10,7,3,2,-1,11,7,1,2,3,.0022331769578158855,.5029315948486328,.5633171200752258,0,2,5,6,9,2,-1,8,6,3,2,3,.0031829739455133677,.4016092121601105,.5192136764526367,0,2,9,8,2,2,-1,9,9,2,1,2,-.00018027749320026487,.4088315963745117,.5417919754981995,0,3,2,11,16,6,-1,2,11,8,3,2,10,14,8,3,2,-.0052934689447283745,.407567709684372,.5243561863899231,0,3,12,7,2,2,-1,13,7,1,1,2,12,8,1,1,2,.0012750959722325206,.4913282990455627,.6387010812759399,0,2,9,5,2,3,-1,9,6,2,1,3,.004338532220572233,.5031672120094299,.2947346866130829,0,2,9,7,3,2,-1,10,7,1,2,3,.00852507445961237,.4949789047241211,.6308869123458862,0,2,5,1,8,12,-1,5,7,8,6,2,-.0009426635224372149,.5328366756439209,.4285649955272675,0,2,13,5,2,2,-1,13,6,2,1,2,.0013609660090878606,.4991525113582611,.5941501259803772,0,2,5,5,2,2,-1,5,6,2,1,2,.0004478250921238214,.4573504030704498,.5854480862617493,0,2,12,4,3,3,-1,12,5,3,1,3,.001336005050688982,.4604358971118927,.584905207157135,0,2,4,14,2,3,-1,4,15,2,1,3,-.0006096754805184901,.3969388902187347,.522942304611206,0,2,12,4,3,3,-1,12,5,3,1,3,-.002365678083151579,.5808320045471191,.4898357093334198,0,2,5,4,3,3,-1,5,5,3,1,3,.001073434017598629,.435121089220047,.5470039248466492,0,3,9,14,2,6,-1,10,14,1,3,2,9,17,1,3,2,.0021923359017819166,.535506010055542,.3842903971672058,0,2,8,14,3,2,-1,9,14,1,2,3,.005496861878782511,.5018138885498047,.2827191948890686,0,2,9,5,6,6,-1,11,5,2,6,3,-.0753688216209412,.1225076019763947,.5148826837539673,0,2,5,5,6,6,-1,7,5,2,6,3,.0251344703137875,.4731766879558563,.702544629573822,0,2,13,13,1,2,-1,13,14,1,1,2,-2935859993158374e-20,.5430532097816467,.465608686208725,0,2,0,2,10,2,-1,0,3,10,1,2,-.0005835591000504792,.4031040072441101,.5190119743347168,0,2,13,13,1,2,-1,13,14,1,1,2,-.0026639450807124376,.4308126866817474,.5161771178245544,0,3,5,7,2,2,-1,5,7,1,1,2,6,8,1,1,2,-.0013804089976474643,.621982991695404,.4695515930652618,0,2,13,5,2,7,-1,13,5,1,7,2,.0012313219485804439,.5379363894462585,.4425831139087677,0,2,6,13,1,2,-1,6,14,1,1,2,-14644179827882908e-21,.5281640291213989,.4222503006458283,0,2,11,0,3,7,-1,12,0,1,7,3,-.0128188095986843,.2582092881202698,.5179932713508606,0,3,0,3,2,16,-1,0,3,1,8,2,1,11,1,8,2,.0228521898388863,.4778693020343781,.7609264254570007,0,2,11,0,3,7,-1,12,0,1,7,3,.0008230597013607621,.5340992212295532,.4671724140644074,0,2,6,0,3,7,-1,7,0,1,7,3,.0127701200544834,.4965761005878449,.1472366005182266,0,2,11,16,8,4,-1,11,16,4,4,2,-.0500515103340149,.641499400138855,.5016592144966125,0,2,1,16,8,4,-1,5,16,4,4,2,.0157752707600594,.4522320032119751,.5685362219810486,0,2,13,5,2,7,-1,13,5,1,7,2,-.0185016207396984,.2764748930931091,.5137959122657776,0,2,5,5,2,7,-1,6,5,1,7,2,.0024626250378787518,.5141941905021667,.3795408010482788,0,2,18,6,2,14,-1,18,13,2,7,2,.0629161670804024,.5060648918151855,.658043384552002,0,2,6,10,3,4,-1,6,12,3,2,2,-21648500478477217e-21,.5195388197898865,.401988685131073,0,2,14,7,1,2,-1,14,8,1,1,2,.0021180990152060986,.4962365031242371,.5954458713531494,0,3,0,1,18,6,-1,0,1,9,3,2,9,4,9,3,2,-.0166348908096552,.3757933080196381,.517544686794281,0,2,14,7,1,2,-1,14,8,1,1,2,-.002889947034418583,.6624013781547546,.5057178735733032,0,2,0,6,2,14,-1,0,13,2,7,2,.076783262193203,.4795796871185303,.8047714829444885,0,2,17,0,3,12,-1,18,0,1,12,3,.003917067777365446,.4937882125377655,.5719941854476929,0,2,0,6,18,3,-1,0,7,18,1,3,-.0726706013083458,.0538945607841015,.4943903982639313,0,2,6,0,14,16,-1,6,8,14,8,2,.5403950214385986,.5129774212837219,.1143338978290558,0,2,0,0,3,12,-1,1,0,1,12,3,.0029510019812732935,.4528343975543976,.5698574185371399,0,2,13,0,3,7,-1,14,0,1,7,3,.0034508369863033295,.5357726812362671,.4218730926513672,0,2,5,7,1,2,-1,5,8,1,1,2,-.0004207793972454965,.5916172862052917,.4637925922870636,0,2,14,4,6,6,-1,14,6,6,2,3,.0033051050268113613,.5273385047912598,.438204288482666,0,2,5,7,7,2,-1,5,8,7,1,2,.0004773506079800427,.4046528041362763,.5181884765625,0,2,8,6,6,9,-1,8,9,6,3,3,-.0259285103529692,.7452235817909241,.5089386105537415,0,2,5,4,6,1,-1,7,4,2,1,3,-.002972979098558426,.3295435905456543,.5058795213699341,0,3,13,0,6,4,-1,16,0,3,2,2,13,2,3,2,2,.005850832909345627,.4857144057750702,.5793024897575378,0,2,1,2,18,12,-1,1,6,18,4,3,-.0459675192832947,.4312731027603149,.5380653142929077,0,2,3,2,17,12,-1,3,6,17,4,3,.1558596044778824,.5196170210838318,.1684713959693909,0,2,5,14,7,3,-1,5,15,7,1,3,.0151648297905922,.4735757112503052,.6735026836395264,0,2,10,14,1,3,-1,10,15,1,1,3,-.0010604249546304345,.5822926759719849,.4775702953338623,0,2,3,14,3,3,-1,3,15,3,1,3,.006647629197686911,.4999198913574219,.231953501701355,0,2,14,4,6,6,-1,14,6,6,2,3,-.0122311301529408,.4750893115997315,.5262982249259949,0,2,0,4,6,6,-1,0,6,6,2,3,.005652888212352991,.5069767832756042,.3561818897724152,0,2,12,5,4,3,-1,12,6,4,1,3,.0012977829901501536,.4875693917274475,.5619062781333923,0,2,4,5,4,3,-1,4,6,4,1,3,.0107815898954868,.4750770032405853,.6782308220863342,0,2,18,0,2,6,-1,18,2,2,2,3,.002865477930754423,.5305461883544922,.4290736019611359,0,2,8,1,4,9,-1,10,1,2,9,2,.0028663428965955973,.4518479108810425,.5539351105690002,0,2,6,6,8,2,-1,6,6,4,2,2,-.005198332015424967,.4149119853973389,.5434188842773438,0,3,6,5,4,2,-1,6,5,2,1,2,8,6,2,1,2,.005373999010771513,.471789687871933,.6507657170295715,0,2,10,5,2,3,-1,10,6,2,1,3,-.0146415298804641,.2172164022922516,.5161777138710022,0,2,9,5,1,3,-1,9,6,1,1,3,-15042580344015732e-21,.533738374710083,.4298836886882782,0,2,9,10,2,2,-1,9,11,2,1,2,-.0001187566012958996,.4604594111442566,.5582447052001953,0,2,0,8,4,3,-1,0,9,4,1,3,.0169955305755138,.4945895075798035,.0738800764083862,0,2,6,0,8,6,-1,6,3,8,3,2,-.0350959412753582,.70055091381073,.4977591037750244,0,3,1,0,6,4,-1,1,0,3,2,2,4,2,3,2,2,.0024217350874096155,.4466265141963959,.5477694272994995,0,2,13,0,3,7,-1,14,0,1,7,3,-.0009634033776819706,.4714098870754242,.5313338041305542,0,2,9,16,2,2,-1,9,17,2,1,2,.00016391130338888615,.4331546127796173,.5342242121696472,0,2,11,4,6,10,-1,11,9,6,5,2,-.0211414601653814,.2644700109958649,.5204498767852783,0,2,0,10,19,2,-1,0,11,19,1,2,.0008777520270086825,.5208349823951721,.4152742922306061,0,2,9,5,8,9,-1,9,8,8,3,3,-.0279439203441143,.6344125270843506,.5018811821937561,0,2,4,0,3,7,-1,5,0,1,7,3,.006729737855494022,.5050438046455383,.3500863909721375,0,3,8,6,4,12,-1,10,6,2,6,2,8,12,2,6,2,.0232810396701097,.4966318011283875,.6968677043914795,0,2,0,2,6,4,-1,0,4,6,2,2,-.0116449799388647,.3300260007381439,.5049629807472229,0,2,8,15,4,3,-1,8,16,4,1,3,.0157643090933561,.4991598129272461,.7321153879165649,0,2,8,0,3,7,-1,9,0,1,7,3,-.001361147966235876,.3911735117435455,.5160670876502991,0,2,9,5,3,4,-1,10,5,1,4,3,-.0008152233785949647,.5628911256790161,.49497190117836,0,2,8,5,3,4,-1,9,5,1,4,3,-.0006006627227179706,.585359513759613,.4550595879554749,0,2,7,6,6,1,-1,9,6,2,1,3,.0004971551825292408,.4271470010280609,.5443599224090576,0,3,7,14,4,4,-1,7,14,2,2,2,9,16,2,2,2,.0023475370835512877,.5143110752105713,.3887656927108765,0,3,13,14,4,6,-1,15,14,2,3,2,13,17,2,3,2,-.008926156908273697,.6044502258300781,.497172087430954,0,2,7,8,1,8,-1,7,12,1,4,2,-.013919910416007,.2583160996437073,.5000367760658264,0,3,16,0,2,8,-1,17,0,1,4,2,16,4,1,4,2,.0010209949687123299,.4857374131679535,.5560358166694641,0,3,2,0,2,8,-1,2,0,1,4,2,3,4,1,4,2,-.0027441629208624363,.5936884880065918,.464577704668045,0,2,6,1,14,3,-1,6,2,14,1,3,-.0162001308053732,.3163014948368073,.5193495154380798,0,2,7,9,3,10,-1,7,14,3,5,2,.004333198070526123,.5061224102973938,.3458878993988037,0,2,9,14,2,2,-1,9,15,2,1,2,.0005849793087691069,.4779017865657806,.5870177745819092,0,2,7,7,6,8,-1,7,11,6,4,2,-.0022466450463980436,.4297851026058197,.5374773144721985,0,2,9,7,3,6,-1,9,10,3,3,2,.0023146099410951138,.5438671708106995,.4640969932079315,0,2,7,13,3,3,-1,7,14,3,1,3,.008767912164330482,.472689300775528,.6771789789199829,0,2,9,9,2,2,-1,9,10,2,1,2,-.00022448020172305405,.4229173064231873,.5428048968315125,0,2,0,1,18,2,-1,6,1,6,2,3,-.007433602120727301,.6098880767822266,.4683673977851868,0,2,7,1,6,14,-1,7,8,6,7,2,-.0023189240600913763,.5689436793327332,.4424242079257965,0,2,1,9,18,1,-1,7,9,6,1,3,-.0021042178850620985,.3762221038341522,.5187087059020996,0,2,9,7,2,2,-1,9,7,1,2,2,.000460348412161693,.4699405133724213,.5771207213401794,0,2,9,3,2,9,-1,10,3,1,9,2,.0010547629790380597,.4465216994285584,.5601701736450195,0,2,18,14,2,3,-1,18,15,2,1,3,.0008714881842024624,.544980525970459,.3914709091186523,0,2,7,11,3,1,-1,8,11,1,1,3,.00033364820410497487,.4564009010791779,.5645738840103149,0,2,10,8,3,4,-1,11,8,1,4,3,-.0014853250468149781,.5747377872467041,.4692778885364533,0,2,7,14,3,6,-1,8,14,1,6,3,.0030251620337367058,.5166196823120117,.3762814104557037,0,2,10,8,3,4,-1,11,8,1,4,3,.005028074141591787,.5002111792564392,.6151527166366577,0,2,7,8,3,4,-1,8,8,1,4,3,-.0005816451157443225,.5394598245620728,.4390751123428345,0,2,7,9,6,9,-1,7,12,6,3,3,.0451415292918682,.5188326835632324,.206303596496582,0,2,0,14,2,3,-1,0,15,2,1,3,-.001079562003724277,.3904685080051422,.5137907266616821,0,2,11,12,1,2,-1,11,13,1,1,2,.00015995999274309725,.4895322918891907,.5427504181861877,0,2,4,3,8,3,-1,8,3,4,3,2,-.0193592701107264,.6975228786468506,.4773507118225098,0,2,0,4,20,6,-1,0,4,10,6,2,.207255095243454,.5233635902404785,.3034991919994354,0,2,9,14,1,3,-1,9,15,1,1,3,-.00041953290929086506,.5419396758079529,.4460186064243317,0,2,8,14,4,3,-1,8,15,4,1,3,.0022582069505006075,.4815764129161835,.6027408838272095,0,2,0,15,14,4,-1,0,17,14,2,2,-.0067811207845807076,.3980278968811035,.5183305740356445,0,2,1,14,18,6,-1,1,17,18,3,2,.0111543098464608,.543123185634613,.4188759922981262,0,3,0,0,10,6,-1,0,0,5,3,2,5,3,5,3,2,.0431624315679073,.4738228023052216,.6522961258888245]);\n"
  },
  {
    "path": "examples/tracking-min.js",
    "content": "/**\n * tracking - A modern approach for Computer Vision on the web.\n * @author Eduardo Lundgren <edu@rdo.io>\n * @version v1.1.2\n * @link http://trackingjs.com\n * @license BSD\n */\n!function(t,r){t.tracking=t.tracking||{},tracking.inherits=function(t,r){function n(){}n.prototype=r.prototype,t.superClass_=r.prototype,t.prototype=new n,t.prototype.constructor=t,t.base=function(t,n){var e=Array.prototype.slice.call(arguments,2);return r.prototype[n].apply(t,e)}},tracking.initUserMedia_=function(r,n){t.navigator.getUserMedia({video:!0,audio:!(!n||!n.audio)},function(n){try{r.src=t.URL.createObjectURL(n)}catch(e){r.src=n}},function(){throw Error(\"Cannot capture user camera.\")})},tracking.isNode=function(t){return t.nodeType||this.isWindow(t)},tracking.isWindow=function(t){return!!(t&&t.alert&&t.document)},tracking.one=function(t,r){return this.isNode(t)?t:(r||document).querySelector(t)},tracking.track=function(t,r,n){if(t=tracking.one(t),!t)throw new Error(\"Element not found, try a different element or selector.\");if(!r)throw new Error(\"Tracker not specified, try `tracking.track(element, new tracking.FaceTracker())`.\");switch(t.nodeName.toLowerCase()){case\"canvas\":return this.trackCanvas_(t,r,n);case\"img\":return this.trackImg_(t,r,n);case\"video\":return n&&n.camera&&this.initUserMedia_(t,n),this.trackVideo_(t,r,n);default:throw new Error(\"Element not supported, try in a canvas, img, or video.\")}},tracking.trackCanvas_=function(t,r){var n=this,e=new tracking.TrackerTask(r);return e.on(\"run\",function(){n.trackCanvasInternal_(t,r)}),e.run()},tracking.trackCanvasInternal_=function(t,r){var n=t.width,e=t.height,i=t.getContext(\"2d\"),a=i.getImageData(0,0,n,e);r.track(a.data,n,e)},tracking.trackImg_=function(t,r){var n=t.width,e=t.height,i=document.createElement(\"canvas\");i.width=n,i.height=e;var a=new tracking.TrackerTask(r);return a.on(\"run\",function(){tracking.Canvas.loadImage(i,t.src,0,0,n,e,function(){tracking.trackCanvasInternal_(i,r)})}),a.run()},tracking.trackVideo_=function(r,n){var e,i,a=document.createElement(\"canvas\"),o=a.getContext(\"2d\"),c=function(){e=r.offsetWidth,i=r.offsetHeight,a.width=e,a.height=i};c(),r.addEventListener(\"resize\",c);var s,g=function(){s=t.requestAnimationFrame(function(){if(r.readyState===r.HAVE_ENOUGH_DATA){try{o.drawImage(r,0,0,e,i)}catch(t){}tracking.trackCanvasInternal_(a,n)}g()})},h=new tracking.TrackerTask(n);return h.on(\"stop\",function(){t.cancelAnimationFrame(s)}),h.on(\"run\",function(){g()}),h.run()},t.URL||(t.URL=t.URL||t.webkitURL||t.msURL||t.oURL),navigator.getUserMedia||(navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)}(window),function(){tracking.EventEmitter=function(){},tracking.EventEmitter.prototype.events_=null,tracking.EventEmitter.prototype.addListener=function(t,r){if(\"function\"!=typeof r)throw new TypeError(\"Listener must be a function\");return this.events_||(this.events_={}),this.emit(\"newListener\",t,r),this.events_[t]||(this.events_[t]=[]),this.events_[t].push(r),this},tracking.EventEmitter.prototype.listeners=function(t){return this.events_&&this.events_[t]},tracking.EventEmitter.prototype.emit=function(t){var r=this.listeners(t);if(r){for(var n=Array.prototype.slice.call(arguments,1),e=0;e<r.length;e++)r[e]&&r[e].apply(this,n);return!0}return!1},tracking.EventEmitter.prototype.on=tracking.EventEmitter.prototype.addListener,tracking.EventEmitter.prototype.once=function(t,r){var n=this;n.on(t,function e(){n.removeListener(t,e),r.apply(this,arguments)})},tracking.EventEmitter.prototype.removeAllListeners=function(t){return this.events_?(t?delete this.events_[t]:delete this.events_,this):this},tracking.EventEmitter.prototype.removeListener=function(t,r){if(\"function\"!=typeof r)throw new TypeError(\"Listener must be a function\");if(!this.events_)return this;var n=this.listeners(t);if(Array.isArray(n)){var e=n.indexOf(r);if(0>e)return this;n.splice(e,1)}return this},tracking.EventEmitter.prototype.setMaxListeners=function(){throw new Error(\"Not implemented\")}}(),function(){tracking.Canvas={},tracking.Canvas.loadImage=function(t,r,n,e,i,a,o){var c=this,s=new window.Image;s.crossOrigin=\"*\",s.onload=function(){var r=t.getContext(\"2d\");t.width=i,t.height=a,r.drawImage(s,n,e,i,a),o&&o.call(c),s=null},s.src=r}}(),function(){tracking.DisjointSet=function(t){if(void 0===t)throw new Error(\"DisjointSet length not specified.\");this.length=t,this.parent=new Uint32Array(t);for(var r=0;t>r;r++)this.parent[r]=r},tracking.DisjointSet.prototype.length=null,tracking.DisjointSet.prototype.parent=null,tracking.DisjointSet.prototype.find=function(t){return this.parent[t]===t?t:this.parent[t]=this.find(this.parent[t])},tracking.DisjointSet.prototype.union=function(t,r){var n=this.find(t),e=this.find(r);this.parent[n]=e}}(),function(){tracking.Image={},tracking.Image.blur=function(t,r,n,e){if(e=Math.abs(e),1>=e)throw new Error(\"Diameter should be greater than 1.\");for(var i=e/2,a=Math.ceil(e)+(1-Math.ceil(e)%2),o=new Float32Array(a),c=(i+.5)/3,s=c*c,g=1/Math.sqrt(2*Math.PI*s),h=-1/(2*c*c),k=0,u=Math.floor(a/2),f=0;a>f;f++){var l=f-u,p=g*Math.exp(l*l*h);o[f]=p,k+=p}for(var v=0;v<o.length;v++)o[v]/=k;return this.separableConvolve(t,r,n,o,o,!1)},tracking.Image.computeIntegralImage=function(t,r,n,e,i,a,o){if(arguments.length<4)throw new Error(\"You should specify at least one output array in the order: sum, square, tilted, sobel.\");var c;o&&(c=tracking.Image.sobel(t,r,n));for(var s=0;n>s;s++)for(var g=0;r>g;g++){var h=s*r*4+4*g,k=~~(.299*t[h]+.587*t[h+1]+.114*t[h+2]);if(e&&this.computePixelValueSAT_(e,r,s,g,k),i&&this.computePixelValueSAT_(i,r,s,g,k*k),a){var u=h-4*r,f=~~(.299*t[u]+.587*t[u+1]+.114*t[u+2]);this.computePixelValueRSAT_(a,r,s,g,k,f||0)}o&&this.computePixelValueSAT_(o,r,s,g,c[h])}},tracking.Image.computePixelValueRSAT_=function(t,r,n,e,i,a){var o=n*r+e;t[o]=(t[o-r-1]||0)+(t[o-r+1]||0)-(t[o-r-r]||0)+i+a},tracking.Image.computePixelValueSAT_=function(t,r,n,e,i){var a=n*r+e;t[a]=(t[a-r]||0)+(t[a-1]||0)+i-(t[a-r-1]||0)},tracking.Image.grayscale=function(t,r,n,e){for(var i=new Uint8ClampedArray(e?t.length:t.length>>2),a=0,o=0,c=0;n>c;c++)for(var s=0;r>s;s++){var g=.299*t[o]+.587*t[o+1]+.114*t[o+2];i[a++]=g,e&&(i[a++]=g,i[a++]=g,i[a++]=t[o+3]),o+=4}return i},tracking.Image.horizontalConvolve=function(t,r,n,e,i){for(var a=e.length,o=Math.floor(a/2),c=new Float32Array(r*n*4),s=i?1:0,g=0;n>g;g++)for(var h=0;r>h;h++){for(var k=g,u=h,f=4*(g*r+h),l=0,p=0,v=0,m=0,y=0;a>y;y++){var d=k,w=Math.min(r-1,Math.max(0,u+y-o)),T=4*(d*r+w),C=e[y];l+=t[T]*C,p+=t[T+1]*C,v+=t[T+2]*C,m+=t[T+3]*C}c[f]=l,c[f+1]=p,c[f+2]=v,c[f+3]=m+s*(255-m)}return c},tracking.Image.verticalConvolve=function(t,r,n,e,i){for(var a=e.length,o=Math.floor(a/2),c=new Float32Array(r*n*4),s=i?1:0,g=0;n>g;g++)for(var h=0;r>h;h++){for(var k=g,u=h,f=4*(g*r+h),l=0,p=0,v=0,m=0,y=0;a>y;y++){var d=Math.min(n-1,Math.max(0,k+y-o)),w=u,T=4*(d*r+w),C=e[y];l+=t[T]*C,p+=t[T+1]*C,v+=t[T+2]*C,m+=t[T+3]*C}c[f]=l,c[f+1]=p,c[f+2]=v,c[f+3]=m+s*(255-m)}return c},tracking.Image.separableConvolve=function(t,r,n,e,i,a){var o=this.verticalConvolve(t,r,n,i,a);return this.horizontalConvolve(o,r,n,e,a)},tracking.Image.sobel=function(t,r,n){t=this.grayscale(t,r,n,!0);for(var e=new Float32Array(r*n*4),i=new Float32Array([-1,0,1]),a=new Float32Array([1,2,1]),o=this.separableConvolve(t,r,n,i,a),c=this.separableConvolve(t,r,n,a,i),s=0;s<e.length;s+=4){var g=o[s],h=c[s],k=Math.sqrt(h*h+g*g);e[s]=k,e[s+1]=k,e[s+2]=k,e[s+3]=255}return e}}(),function(){tracking.ViolaJones={},tracking.ViolaJones.REGIONS_OVERLAP=.5,tracking.ViolaJones.classifiers={},tracking.ViolaJones.detect=function(t,r,n,e,i,a,o,c){var s,g=0,h=[],k=new Int32Array(r*n),u=new Int32Array(r*n),f=new Int32Array(r*n);o>0&&(s=new Int32Array(r*n)),tracking.Image.computeIntegralImage(t,r,n,k,u,f,s);for(var l=c[0],p=c[1],v=e*i,m=v*l|0,y=v*p|0;r>m&&n>y;){for(var d=v*a+.5|0,w=0;n-y>w;w+=d)for(var T=0;r-m>T;T+=d)o>0&&this.isTriviallyExcluded(o,s,w,T,r,m,y)||this.evalStages_(c,k,u,f,w,T,r,m,y,v)&&(h[g++]={width:m,height:y,x:T,y:w});v*=i,m=v*l|0,y=v*p|0}return this.mergeRectangles_(h)},tracking.ViolaJones.isTriviallyExcluded=function(t,r,n,e,i,a,o){var c=n*i+e,s=c+a,g=c+o*i,h=g+a,k=(r[c]-r[s]-r[g]+r[h])/(a*o*255);return t>k?!0:!1},tracking.ViolaJones.evalStages_=function(t,r,n,e,i,a,o,c,s,g){var h=1/(c*s),k=i*o+a,u=k+c,f=k+s*o,l=f+c,p=(r[k]-r[u]-r[f]+r[l])*h,v=(n[k]-n[u]-n[f]+n[l])*h-p*p,m=1;v>0&&(m=Math.sqrt(v));for(var y=t.length,d=2;y>d;){for(var w=0,T=t[d++],C=t[d++];C--;){for(var _=0,E=t[d++],M=t[d++],x=0;M>x;x++){var I,b,O,A,S=a+t[d++]*g+.5|0,D=i+t[d++]*g+.5|0,R=t[d++]*g+.5|0,j=t[d++]*g+.5|0,F=t[d++];E?(I=S-j+R+(D+R+j-1)*o,b=S+(D-1)*o,O=S-j+(D+j-1)*o,A=S+R+(D+R-1)*o,_+=(e[I]+e[b]-e[O]-e[A])*F):(I=D*o+S,b=I+R,O=I+j*o,A=O+R,_+=(r[I]-r[b]-r[O]+r[A])*F)}var L=t[d++],V=t[d++],U=t[d++];w+=L*m>_*h?V:U}if(T>w)return!1}return!0},tracking.ViolaJones.mergeRectangles_=function(t){for(var r=new tracking.DisjointSet(t.length),n=0;n<t.length;n++)for(var e=t[n],i=0;i<t.length;i++){var a=t[i];if(tracking.Math.intersectRect(e.x,e.y,e.x+e.width,e.y+e.height,a.x,a.y,a.x+a.width,a.y+a.height)){var o=Math.max(e.x,a.x),c=Math.max(e.y,a.y),s=Math.min(e.x+e.width,a.x+a.width),g=Math.min(e.y+e.height,a.y+a.height),h=(o-s)*(c-g),k=e.width*e.height,u=a.width*a.height;h/(k*(k/u))>=this.REGIONS_OVERLAP&&h/(u*(k/u))>=this.REGIONS_OVERLAP&&r.union(n,i)}}for(var f={},l=0;l<r.length;l++){var p=r.find(l);f[p]?(f[p].total++,f[p].width+=t[l].width,f[p].height+=t[l].height,f[p].x+=t[l].x,f[p].y+=t[l].y):f[p]={total:1,width:t[l].width,height:t[l].height,x:t[l].x,y:t[l].y}}var v=[];return Object.keys(f).forEach(function(t){var r=f[t];v.push({total:r.total,width:r.width/r.total+.5|0,height:r.height/r.total+.5|0,x:r.x/r.total+.5|0,y:r.y/r.total+.5|0})}),v}}(),function(){tracking.Brief={},tracking.Brief.N=512,tracking.Brief.randomImageOffsets_={},tracking.Brief.randomWindowOffsets_=null,tracking.Brief.getDescriptors=function(t,r,n){for(var e=new Int32Array((n.length>>1)*(this.N>>5)),i=0,a=this.getRandomOffsets_(r),o=0,c=0;c<n.length;c+=2)for(var s=r*n[c+1]+n[c],g=0,h=0,k=this.N;k>h;h++)t[a[g++]+s]<t[a[g++]+s]&&(i|=1<<(31&h)),h+1&31||(e[o++]=i,i=0);return e},tracking.Brief.match=function(t,r,n,e){for(var i=t.length>>1,a=n.length>>1,o=new Array(i),c=0;i>c;c++){for(var s=1/0,g=0,h=0;a>h;h++){for(var k=0,u=0,f=this.N>>5;f>u;u++)k+=tracking.Math.hammingWeight(r[c*f+u]^e[h*f+u]);s>k&&(s=k,g=h)}o[c]={index1:c,index2:g,keypoint1:[t[2*c],t[2*c+1]],keypoint2:[n[2*g],n[2*g+1]],confidence:1-s/this.N}}return o},tracking.Brief.reciprocalMatch=function(t,r,n,e){var i=[];if(0===t.length||0===n.length)return i;for(var a=tracking.Brief.match(t,r,n,e),o=tracking.Brief.match(n,e,t,r),c=0;c<a.length;c++)o[a[c].index2].index2===c&&i.push(a[c]);return i},tracking.Brief.getRandomOffsets_=function(t){if(!this.randomWindowOffsets_){for(var r=0,n=new Int32Array(4*this.N),e=0;e<this.N;e++)n[r++]=Math.round(tracking.Math.uniformRandom(-15,16)),n[r++]=Math.round(tracking.Math.uniformRandom(-15,16)),n[r++]=Math.round(tracking.Math.uniformRandom(-15,16)),n[r++]=Math.round(tracking.Math.uniformRandom(-15,16));this.randomWindowOffsets_=n}if(!this.randomImageOffsets_[t]){for(var i=0,a=new Int32Array(2*this.N),o=0;o<this.N;o++)a[i++]=this.randomWindowOffsets_[4*o]*t+this.randomWindowOffsets_[4*o+1],a[i++]=this.randomWindowOffsets_[4*o+2]*t+this.randomWindowOffsets_[4*o+3];this.randomImageOffsets_[t]=a}return this.randomImageOffsets_[t]}}(),function(){tracking.Fast={},tracking.Fast.THRESHOLD=40,tracking.Fast.circles_={},tracking.Fast.findCorners=function(t,r,n,e){var i=this.getCircleOffsets_(r),a=new Int32Array(16),o=[];void 0===e&&(e=this.THRESHOLD);for(var c=3;n-3>c;c++)for(var s=3;r-3>s;s++){for(var g=c*r+s,h=t[g],k=0;16>k;k++)a[k]=t[g+i[k]];this.isCorner(h,a,e)&&(o.push(s,c),s+=3)}return o},tracking.Fast.isBrighter=function(t,r,n){return t-r>n},tracking.Fast.isCorner=function(t,r,n){if(this.isTriviallyExcluded(r,t,n))return!1;for(var e=0;16>e;e++){for(var i=!0,a=!0,o=0;9>o;o++){var c=r[e+o&15];if(!this.isBrighter(t,c,n)&&(a=!1,i===!1))break;if(!this.isDarker(t,c,n)&&(i=!1,a===!1))break}if(a||i)return!0}return!1},tracking.Fast.isDarker=function(t,r,n){return r-t>n},tracking.Fast.isTriviallyExcluded=function(t,r,n){var e=0,i=t[8],a=t[12],o=t[4],c=t[0];return this.isBrighter(c,r,n)&&e++,this.isBrighter(o,r,n)&&e++,this.isBrighter(i,r,n)&&e++,this.isBrighter(a,r,n)&&e++,3>e&&(e=0,this.isDarker(c,r,n)&&e++,this.isDarker(o,r,n)&&e++,this.isDarker(i,r,n)&&e++,this.isDarker(a,r,n)&&e++,3>e)?!0:!1},tracking.Fast.getCircleOffsets_=function(t){if(this.circles_[t])return this.circles_[t];var r=new Int32Array(16);return r[0]=-t-t-t,r[1]=r[0]+1,r[2]=r[1]+t+1,r[3]=r[2]+t+1,r[4]=r[3]+t,r[5]=r[4]+t,r[6]=r[5]+t-1,r[7]=r[6]+t-1,r[8]=r[7]-1,r[9]=r[8]-1,r[10]=r[9]-t-1,r[11]=r[10]-t-1,r[12]=r[11]-t,r[13]=r[12]-t,r[14]=r[13]-t+1,r[15]=r[14]-t+1,this.circles_[t]=r,r}}(),function(){tracking.Math={},tracking.Math.distance=function(t,r,n,e){var i=n-t,a=e-r;return Math.sqrt(i*i+a*a)},tracking.Math.hammingWeight=function(t){return t-=t>>1&1431655765,t=(858993459&t)+(t>>2&858993459),16843009*(t+(t>>4)&252645135)>>24},tracking.Math.uniformRandom=function(t,r){return t+Math.random()*(r-t)},tracking.Math.intersectRect=function(t,r,n,e,i,a,o,c){return!(i>n||t>o||a>e||r>c)}}(),function(){tracking.Matrix={},tracking.Matrix.forEach=function(t,r,n,e,i){i=i||1;for(var a=0;n>a;a+=i)for(var o=0;r>o;o+=i){var c=a*r*4+4*o;e.call(this,t[c],t[c+1],t[c+2],t[c+3],c,a,o)}}}(),function(){tracking.EPnP={},tracking.EPnP.solve=function(t,r,n){}}(),function(){tracking.Tracker=function(){tracking.Tracker.base(this,\"constructor\")},tracking.inherits(tracking.Tracker,tracking.EventEmitter),tracking.Tracker.prototype.track=function(){}}(),function(){tracking.TrackerTask=function(t){if(tracking.TrackerTask.base(this,\"constructor\"),!t)throw new Error(\"Tracker instance not specified.\");this.setTracker(t)},tracking.inherits(tracking.TrackerTask,tracking.EventEmitter),tracking.TrackerTask.prototype.tracker_=null,tracking.TrackerTask.prototype.running_=!1,tracking.TrackerTask.prototype.getTracker=function(){return this.tracker_},tracking.TrackerTask.prototype.inRunning=function(){return this.running_},tracking.TrackerTask.prototype.setRunning=function(t){this.running_=t},tracking.TrackerTask.prototype.setTracker=function(t){this.tracker_=t},tracking.TrackerTask.prototype.run=function(){var t=this;if(!this.inRunning())return this.setRunning(!0),this.reemitTrackEvent_=function(r){t.emit(\"track\",r)},this.tracker_.on(\"track\",this.reemitTrackEvent_),this.emit(\"run\"),this},tracking.TrackerTask.prototype.stop=function(){return this.inRunning()?(this.setRunning(!1),this.emit(\"stop\"),this.tracker_.removeListener(\"track\",this.reemitTrackEvent_),this):void 0}}(),function(){tracking.ColorTracker=function(t){tracking.ColorTracker.base(this,\"constructor\"),\"string\"==typeof t&&(t=[t]),t&&(t.forEach(function(t){if(!tracking.ColorTracker.getColor(t))throw new Error('Color not valid, try `new tracking.ColorTracker(\"magenta\")`.')}),this.setColors(t))},tracking.inherits(tracking.ColorTracker,tracking.Tracker),tracking.ColorTracker.knownColors_={},tracking.ColorTracker.neighbours_={},tracking.ColorTracker.registerColor=function(t,r){tracking.ColorTracker.knownColors_[t]=r},tracking.ColorTracker.getColor=function(t){return tracking.ColorTracker.knownColors_[t]},tracking.ColorTracker.prototype.colors=[\"magenta\"],tracking.ColorTracker.prototype.minDimension=20,tracking.ColorTracker.prototype.maxDimension=1/0,tracking.ColorTracker.prototype.minGroupSize=30,tracking.ColorTracker.prototype.calculateDimensions_=function(t,r){for(var n=-1,e=-1,i=1/0,a=1/0,o=0;r>o;o+=2){var c=t[o],s=t[o+1];i>c&&(i=c),c>n&&(n=c),a>s&&(a=s),s>e&&(e=s)}return{width:n-i,height:e-a,x:i,y:a}},tracking.ColorTracker.prototype.getColors=function(){return this.colors},tracking.ColorTracker.prototype.getMinDimension=function(){return this.minDimension},tracking.ColorTracker.prototype.getMaxDimension=function(){return this.maxDimension},tracking.ColorTracker.prototype.getMinGroupSize=function(){return this.minGroupSize},tracking.ColorTracker.prototype.getNeighboursForWidth_=function(t){if(tracking.ColorTracker.neighbours_[t])return tracking.ColorTracker.neighbours_[t];var r=new Int32Array(8);return r[0]=4*-t,r[1]=4*-t+4,r[2]=4,r[3]=4*t+4,r[4]=4*t,r[5]=4*t-4,r[6]=-4,r[7]=4*-t-4,tracking.ColorTracker.neighbours_[t]=r,r},tracking.ColorTracker.prototype.mergeRectangles_=function(t){for(var r,n=[],e=this.getMinDimension(),i=this.getMaxDimension(),a=0;a<t.length;a++){var o=t[a];r=!0;for(var c=a+1;c<t.length;c++){var s=t[c];if(tracking.Math.intersectRect(o.x,o.y,o.x+o.width,o.y+o.height,s.x,s.y,s.x+s.width,s.y+s.height)){r=!1;var g=Math.min(o.x,s.x),h=Math.min(o.y,s.y),k=Math.max(o.x+o.width,s.x+s.width),u=Math.max(o.y+o.height,s.y+s.height);s.height=u-h,s.width=k-g,s.x=g,s.y=h;break}}r&&o.width>=e&&o.height>=e&&o.width<=i&&o.height<=i&&n.push(o)}return n},tracking.ColorTracker.prototype.setColors=function(t){this.colors=t},tracking.ColorTracker.prototype.setMinDimension=function(t){this.minDimension=t},tracking.ColorTracker.prototype.setMaxDimension=function(t){this.maxDimension=t},tracking.ColorTracker.prototype.setMinGroupSize=function(t){this.minGroupSize=t},tracking.ColorTracker.prototype.track=function(t,r,n){var e=this,i=this.getColors();if(!i)throw new Error('Colors not specified, try `new tracking.ColorTracker(\"magenta\")`.');var a=[];i.forEach(function(i){a=a.concat(e.trackColor_(t,r,n,i))}),this.emit(\"track\",{data:a})},tracking.ColorTracker.prototype.trackColor_=function(n,e,i,a){var o,c,s,g,h,k=tracking.ColorTracker.knownColors_[a],u=new Int32Array(n.length>>2),f=new Int8Array(n.length),l=this.getMinGroupSize(),p=this.getNeighboursForWidth_(e),v=new Int32Array(n.length),m=[],y=-4;if(!k)return m;for(var d=0;i>d;d++)for(var w=0;e>w;w++)if(y+=4,!f[y]){for(o=0,h=-1,v[++h]=y,v[++h]=d,v[++h]=w,f[y]=1;h>=0;)if(s=v[h--],c=v[h--],g=v[h--],k(n[g],n[g+1],n[g+2],n[g+3],g,c,s)){u[o++]=s,u[o++]=c;for(var T=0;T<p.length;T++){var C=g+p[T],_=c+t[T],E=s+r[T];!f[C]&&_>=0&&i>_&&E>=0&&e>E&&(v[++h]=C,v[++h]=_,v[++h]=E,f[C]=1)}}if(o>=l){var M=this.calculateDimensions_(u,o);M&&(M.color=a,m.push(M))}}return this.mergeRectangles_(m)},tracking.ColorTracker.registerColor(\"cyan\",function(t,r,n){var e=50,i=70,a=t-0,o=r-255,c=n-255;return r-t>=e&&n-t>=i?!0:6400>a*a+o*o+c*c}),tracking.ColorTracker.registerColor(\"magenta\",function(t,r,n){var e=50,i=t-255,a=r-0,o=n-255;return t-r>=e&&n-r>=e?!0:19600>i*i+a*a+o*o}),tracking.ColorTracker.registerColor(\"yellow\",function(t,r,n){var e=50,i=t-255,a=r-255,o=n-0;return t-n>=e&&r-n>=e?!0:1e4>i*i+a*a+o*o});var t=new Int32Array([-1,-1,0,1,1,1,0,-1]),r=new Int32Array([0,1,1,1,0,-1,-1,-1])}(),function(){tracking.ObjectTracker=function(t){tracking.ObjectTracker.base(this,\"constructor\"),t&&(Array.isArray(t)||(t=[t]),Array.isArray(t)&&t.forEach(function(r,n){if(\"string\"==typeof r&&(t[n]=tracking.ViolaJones.classifiers[r]),!t[n])throw new Error('Object classifier not valid, try `new tracking.ObjectTracker(\"face\")`.')})),this.setClassifiers(t)},tracking.inherits(tracking.ObjectTracker,tracking.Tracker),tracking.ObjectTracker.prototype.edgesDensity=.2,tracking.ObjectTracker.prototype.initialScale=1,tracking.ObjectTracker.prototype.scaleFactor=1.25,tracking.ObjectTracker.prototype.stepSize=1.5,tracking.ObjectTracker.prototype.getClassifiers=function(){return this.classifiers},tracking.ObjectTracker.prototype.getEdgesDensity=function(){return this.edgesDensity},tracking.ObjectTracker.prototype.getInitialScale=function(){return this.initialScale},tracking.ObjectTracker.prototype.getScaleFactor=function(){return this.scaleFactor},tracking.ObjectTracker.prototype.getStepSize=function(){return this.stepSize},tracking.ObjectTracker.prototype.track=function(t,r,n){var e=this,i=this.getClassifiers();if(!i)throw new Error('Object classifier not specified, try `new tracking.ObjectTracker(\"face\")`.');var a=[];i.forEach(function(i){a=a.concat(tracking.ViolaJones.detect(t,r,n,e.getInitialScale(),e.getScaleFactor(),e.getStepSize(),e.getEdgesDensity(),i))}),this.emit(\"track\",{data:a})},tracking.ObjectTracker.prototype.setClassifiers=function(t){this.classifiers=t},tracking.ObjectTracker.prototype.setEdgesDensity=function(t){this.edgesDensity=t},tracking.ObjectTracker.prototype.setInitialScale=function(t){this.initialScale=t},tracking.ObjectTracker.prototype.setScaleFactor=function(t){this.scaleFactor=t},tracking.ObjectTracker.prototype.setStepSize=function(t){this.stepSize=t}}();"
  },
  {
    "path": "examples/underscore.js",
    "content": "!function(n,r){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define(\"underscore\",r):(n=\"undefined\"!=typeof globalThis?globalThis:n||self,function(){var t=n._,e=n._=r();e.noConflict=function(){return n._=t,e}}())}(this,(function(){\n//     Underscore.js 1.13.1\n//     https://underscorejs.org\n//     (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n//     Underscore may be freely distributed under the MIT license.\nvar n=\"1.13.1\",r=\"object\"==typeof self&&self.self===self&&self||\"object\"==typeof global&&global.global===global&&global||Function(\"return this\")()||{},t=Array.prototype,e=Object.prototype,u=\"undefined\"!=typeof Symbol?Symbol.prototype:null,o=t.push,i=t.slice,a=e.toString,f=e.hasOwnProperty,c=\"undefined\"!=typeof ArrayBuffer,l=\"undefined\"!=typeof DataView,s=Array.isArray,p=Object.keys,v=Object.create,h=c&&ArrayBuffer.isView,y=isNaN,d=isFinite,g=!{toString:null}.propertyIsEnumerable(\"toString\"),b=[\"valueOf\",\"isPrototypeOf\",\"toString\",\"propertyIsEnumerable\",\"hasOwnProperty\",\"toLocaleString\"],m=Math.pow(2,53)-1;function j(n,r){return r=null==r?n.length-1:+r,function(){for(var t=Math.max(arguments.length-r,0),e=Array(t),u=0;u<t;u++)e[u]=arguments[u+r];switch(r){case 0:return n.call(this,e);case 1:return n.call(this,arguments[0],e);case 2:return n.call(this,arguments[0],arguments[1],e)}var o=Array(r+1);for(u=0;u<r;u++)o[u]=arguments[u];return o[r]=e,n.apply(this,o)}}function _(n){var r=typeof n;return\"function\"===r||\"object\"===r&&!!n}function w(n){return void 0===n}function A(n){return!0===n||!1===n||\"[object Boolean]\"===a.call(n)}function x(n){var r=\"[object \"+n+\"]\";return function(n){return a.call(n)===r}}var S=x(\"String\"),O=x(\"Number\"),M=x(\"Date\"),E=x(\"RegExp\"),B=x(\"Error\"),N=x(\"Symbol\"),I=x(\"ArrayBuffer\"),T=x(\"Function\"),k=r.document&&r.document.childNodes;\"function\"!=typeof/./&&\"object\"!=typeof Int8Array&&\"function\"!=typeof k&&(T=function(n){return\"function\"==typeof n||!1});var D=T,R=x(\"Object\"),F=l&&R(new DataView(new ArrayBuffer(8))),V=\"undefined\"!=typeof Map&&R(new Map),P=x(\"DataView\");var q=F?function(n){return null!=n&&D(n.getInt8)&&I(n.buffer)}:P,U=s||x(\"Array\");function W(n,r){return null!=n&&f.call(n,r)}var z=x(\"Arguments\");!function(){z(arguments)||(z=function(n){return W(n,\"callee\")})}();var L=z;function $(n){return O(n)&&y(n)}function C(n){return function(){return n}}function K(n){return function(r){var t=n(r);return\"number\"==typeof t&&t>=0&&t<=m}}function J(n){return function(r){return null==r?void 0:r[n]}}var G=J(\"byteLength\"),H=K(G),Q=/\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;var X=c?function(n){return h?h(n)&&!q(n):H(n)&&Q.test(a.call(n))}:C(!1),Y=J(\"length\");function Z(n,r){r=function(n){for(var r={},t=n.length,e=0;e<t;++e)r[n[e]]=!0;return{contains:function(n){return r[n]},push:function(t){return r[t]=!0,n.push(t)}}}(r);var t=b.length,u=n.constructor,o=D(u)&&u.prototype||e,i=\"constructor\";for(W(n,i)&&!r.contains(i)&&r.push(i);t--;)(i=b[t])in n&&n[i]!==o[i]&&!r.contains(i)&&r.push(i)}function nn(n){if(!_(n))return[];if(p)return p(n);var r=[];for(var t in n)W(n,t)&&r.push(t);return g&&Z(n,r),r}function rn(n,r){var t=nn(r),e=t.length;if(null==n)return!e;for(var u=Object(n),o=0;o<e;o++){var i=t[o];if(r[i]!==u[i]||!(i in u))return!1}return!0}function tn(n){return n instanceof tn?n:this instanceof tn?void(this._wrapped=n):new tn(n)}function en(n){return new Uint8Array(n.buffer||n,n.byteOffset||0,G(n))}tn.VERSION=n,tn.prototype.value=function(){return this._wrapped},tn.prototype.valueOf=tn.prototype.toJSON=tn.prototype.value,tn.prototype.toString=function(){return String(this._wrapped)};var un=\"[object DataView]\";function on(n,r,t,e){if(n===r)return 0!==n||1/n==1/r;if(null==n||null==r)return!1;if(n!=n)return r!=r;var o=typeof n;return(\"function\"===o||\"object\"===o||\"object\"==typeof r)&&function n(r,t,e,o){r instanceof tn&&(r=r._wrapped);t instanceof tn&&(t=t._wrapped);var i=a.call(r);if(i!==a.call(t))return!1;if(F&&\"[object Object]\"==i&&q(r)){if(!q(t))return!1;i=un}switch(i){case\"[object RegExp]\":case\"[object String]\":return\"\"+r==\"\"+t;case\"[object Number]\":return+r!=+r?+t!=+t:0==+r?1/+r==1/t:+r==+t;case\"[object Date]\":case\"[object Boolean]\":return+r==+t;case\"[object Symbol]\":return u.valueOf.call(r)===u.valueOf.call(t);case\"[object ArrayBuffer]\":case un:return n(en(r),en(t),e,o)}var f=\"[object Array]\"===i;if(!f&&X(r)){if(G(r)!==G(t))return!1;if(r.buffer===t.buffer&&r.byteOffset===t.byteOffset)return!0;f=!0}if(!f){if(\"object\"!=typeof r||\"object\"!=typeof t)return!1;var c=r.constructor,l=t.constructor;if(c!==l&&!(D(c)&&c instanceof c&&D(l)&&l instanceof l)&&\"constructor\"in r&&\"constructor\"in t)return!1}o=o||[];var s=(e=e||[]).length;for(;s--;)if(e[s]===r)return o[s]===t;if(e.push(r),o.push(t),f){if((s=r.length)!==t.length)return!1;for(;s--;)if(!on(r[s],t[s],e,o))return!1}else{var p,v=nn(r);if(s=v.length,nn(t).length!==s)return!1;for(;s--;)if(p=v[s],!W(t,p)||!on(r[p],t[p],e,o))return!1}return e.pop(),o.pop(),!0}(n,r,t,e)}function an(n){if(!_(n))return[];var r=[];for(var t in n)r.push(t);return g&&Z(n,r),r}function fn(n){var r=Y(n);return function(t){if(null==t)return!1;var e=an(t);if(Y(e))return!1;for(var u=0;u<r;u++)if(!D(t[n[u]]))return!1;return n!==hn||!D(t[cn])}}var cn=\"forEach\",ln=\"has\",sn=[\"clear\",\"delete\"],pn=[\"get\",ln,\"set\"],vn=sn.concat(cn,pn),hn=sn.concat(pn),yn=[\"add\"].concat(sn,cn,ln),dn=V?fn(vn):x(\"Map\"),gn=V?fn(hn):x(\"WeakMap\"),bn=V?fn(yn):x(\"Set\"),mn=x(\"WeakSet\");function jn(n){for(var r=nn(n),t=r.length,e=Array(t),u=0;u<t;u++)e[u]=n[r[u]];return e}function _n(n){for(var r={},t=nn(n),e=0,u=t.length;e<u;e++)r[n[t[e]]]=t[e];return r}function wn(n){var r=[];for(var t in n)D(n[t])&&r.push(t);return r.sort()}function An(n,r){return function(t){var e=arguments.length;if(r&&(t=Object(t)),e<2||null==t)return t;for(var u=1;u<e;u++)for(var o=arguments[u],i=n(o),a=i.length,f=0;f<a;f++){var c=i[f];r&&void 0!==t[c]||(t[c]=o[c])}return t}}var xn=An(an),Sn=An(nn),On=An(an,!0);function Mn(n){if(!_(n))return{};if(v)return v(n);var r=function(){};r.prototype=n;var t=new r;return r.prototype=null,t}function En(n){return _(n)?U(n)?n.slice():xn({},n):n}function Bn(n){return U(n)?n:[n]}function Nn(n){return tn.toPath(n)}function In(n,r){for(var t=r.length,e=0;e<t;e++){if(null==n)return;n=n[r[e]]}return t?n:void 0}function Tn(n,r,t){var e=In(n,Nn(r));return w(e)?t:e}function kn(n){return n}function Dn(n){return n=Sn({},n),function(r){return rn(r,n)}}function Rn(n){return n=Nn(n),function(r){return In(r,n)}}function Fn(n,r,t){if(void 0===r)return n;switch(null==t?3:t){case 1:return function(t){return n.call(r,t)};case 3:return function(t,e,u){return n.call(r,t,e,u)};case 4:return function(t,e,u,o){return n.call(r,t,e,u,o)}}return function(){return n.apply(r,arguments)}}function Vn(n,r,t){return null==n?kn:D(n)?Fn(n,r,t):_(n)&&!U(n)?Dn(n):Rn(n)}function Pn(n,r){return Vn(n,r,1/0)}function qn(n,r,t){return tn.iteratee!==Pn?tn.iteratee(n,r):Vn(n,r,t)}function Un(){}function Wn(n,r){return null==r&&(r=n,n=0),n+Math.floor(Math.random()*(r-n+1))}tn.toPath=Bn,tn.iteratee=Pn;var zn=Date.now||function(){return(new Date).getTime()};function Ln(n){var r=function(r){return n[r]},t=\"(?:\"+nn(n).join(\"|\")+\")\",e=RegExp(t),u=RegExp(t,\"g\");return function(n){return n=null==n?\"\":\"\"+n,e.test(n)?n.replace(u,r):n}}var $n={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#x27;\",\"`\":\"&#x60;\"},Cn=Ln($n),Kn=Ln(_n($n)),Jn=tn.templateSettings={evaluate:/<%([\\s\\S]+?)%>/g,interpolate:/<%=([\\s\\S]+?)%>/g,escape:/<%-([\\s\\S]+?)%>/g},Gn=/(.)^/,Hn={\"'\":\"'\",\"\\\\\":\"\\\\\",\"\\r\":\"r\",\"\\n\":\"n\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},Qn=/\\\\|'|\\r|\\n|\\u2028|\\u2029/g;function Xn(n){return\"\\\\\"+Hn[n]}var Yn=/^\\s*(\\w|\\$)+\\s*$/;var Zn=0;function nr(n,r,t,e,u){if(!(e instanceof r))return n.apply(t,u);var o=Mn(n.prototype),i=n.apply(o,u);return _(i)?i:o}var rr=j((function(n,r){var t=rr.placeholder,e=function(){for(var u=0,o=r.length,i=Array(o),a=0;a<o;a++)i[a]=r[a]===t?arguments[u++]:r[a];for(;u<arguments.length;)i.push(arguments[u++]);return nr(n,e,this,this,i)};return e}));rr.placeholder=tn;var tr=j((function(n,r,t){if(!D(n))throw new TypeError(\"Bind must be called on a function\");var e=j((function(u){return nr(n,e,r,this,t.concat(u))}));return e})),er=K(Y);function ur(n,r,t,e){if(e=e||[],r||0===r){if(r<=0)return e.concat(n)}else r=1/0;for(var u=e.length,o=0,i=Y(n);o<i;o++){var a=n[o];if(er(a)&&(U(a)||L(a)))if(r>1)ur(a,r-1,t,e),u=e.length;else for(var f=0,c=a.length;f<c;)e[u++]=a[f++];else t||(e[u++]=a)}return e}var or=j((function(n,r){var t=(r=ur(r,!1,!1)).length;if(t<1)throw new Error(\"bindAll must be passed function names\");for(;t--;){var e=r[t];n[e]=tr(n[e],n)}return n}));var ir=j((function(n,r,t){return setTimeout((function(){return n.apply(null,t)}),r)})),ar=rr(ir,tn,1);function fr(n){return function(){return!n.apply(this,arguments)}}function cr(n,r){var t;return function(){return--n>0&&(t=r.apply(this,arguments)),n<=1&&(r=null),t}}var lr=rr(cr,2);function sr(n,r,t){r=qn(r,t);for(var e,u=nn(n),o=0,i=u.length;o<i;o++)if(r(n[e=u[o]],e,n))return e}function pr(n){return function(r,t,e){t=qn(t,e);for(var u=Y(r),o=n>0?0:u-1;o>=0&&o<u;o+=n)if(t(r[o],o,r))return o;return-1}}var vr=pr(1),hr=pr(-1);function yr(n,r,t,e){for(var u=(t=qn(t,e,1))(r),o=0,i=Y(n);o<i;){var a=Math.floor((o+i)/2);t(n[a])<u?o=a+1:i=a}return o}function dr(n,r,t){return function(e,u,o){var a=0,f=Y(e);if(\"number\"==typeof o)n>0?a=o>=0?o:Math.max(o+f,a):f=o>=0?Math.min(o+1,f):o+f+1;else if(t&&o&&f)return e[o=t(e,u)]===u?o:-1;if(u!=u)return(o=r(i.call(e,a,f),$))>=0?o+a:-1;for(o=n>0?a:f-1;o>=0&&o<f;o+=n)if(e[o]===u)return o;return-1}}var gr=dr(1,vr,yr),br=dr(-1,hr);function mr(n,r,t){var e=(er(n)?vr:sr)(n,r,t);if(void 0!==e&&-1!==e)return n[e]}function jr(n,r,t){var e,u;if(r=Fn(r,t),er(n))for(e=0,u=n.length;e<u;e++)r(n[e],e,n);else{var o=nn(n);for(e=0,u=o.length;e<u;e++)r(n[o[e]],o[e],n)}return n}function _r(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=Array(u),i=0;i<u;i++){var a=e?e[i]:i;o[i]=r(n[a],a,n)}return o}function wr(n){var r=function(r,t,e,u){var o=!er(r)&&nn(r),i=(o||r).length,a=n>0?0:i-1;for(u||(e=r[o?o[a]:a],a+=n);a>=0&&a<i;a+=n){var f=o?o[a]:a;e=t(e,r[f],f,r)}return e};return function(n,t,e,u){var o=arguments.length>=3;return r(n,Fn(t,u,4),e,o)}}var Ar=wr(1),xr=wr(-1);function Sr(n,r,t){var e=[];return r=qn(r,t),jr(n,(function(n,t,u){r(n,t,u)&&e.push(n)})),e}function Or(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=0;o<u;o++){var i=e?e[o]:o;if(!r(n[i],i,n))return!1}return!0}function Mr(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=0;o<u;o++){var i=e?e[o]:o;if(r(n[i],i,n))return!0}return!1}function Er(n,r,t,e){return er(n)||(n=jn(n)),(\"number\"!=typeof t||e)&&(t=0),gr(n,r,t)>=0}var Br=j((function(n,r,t){var e,u;return D(r)?u=r:(r=Nn(r),e=r.slice(0,-1),r=r[r.length-1]),_r(n,(function(n){var o=u;if(!o){if(e&&e.length&&(n=In(n,e)),null==n)return;o=n[r]}return null==o?o:o.apply(n,t)}))}));function Nr(n,r){return _r(n,Rn(r))}function Ir(n,r,t){var e,u,o=-1/0,i=-1/0;if(null==r||\"number\"==typeof r&&\"object\"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;a<f;a++)null!=(e=n[a])&&e>o&&(o=e);else r=qn(r,t),jr(n,(function(n,t,e){((u=r(n,t,e))>i||u===-1/0&&o===-1/0)&&(o=n,i=u)}));return o}function Tr(n,r,t){if(null==r||t)return er(n)||(n=jn(n)),n[Wn(n.length-1)];var e=er(n)?En(n):jn(n),u=Y(e);r=Math.max(Math.min(r,u),0);for(var o=u-1,i=0;i<r;i++){var a=Wn(i,o),f=e[i];e[i]=e[a],e[a]=f}return e.slice(0,r)}function kr(n,r){return function(t,e,u){var o=r?[[],[]]:{};return e=qn(e,u),jr(t,(function(r,u){var i=e(r,u,t);n(o,r,i)})),o}}var Dr=kr((function(n,r,t){W(n,t)?n[t].push(r):n[t]=[r]})),Rr=kr((function(n,r,t){n[t]=r})),Fr=kr((function(n,r,t){W(n,t)?n[t]++:n[t]=1})),Vr=kr((function(n,r,t){n[t?0:1].push(r)}),!0),Pr=/[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;function qr(n,r,t){return r in t}var Ur=j((function(n,r){var t={},e=r[0];if(null==n)return t;D(e)?(r.length>1&&(e=Fn(e,r[1])),r=an(n)):(e=qr,r=ur(r,!1,!1),n=Object(n));for(var u=0,o=r.length;u<o;u++){var i=r[u],a=n[i];e(a,i,n)&&(t[i]=a)}return t})),Wr=j((function(n,r){var t,e=r[0];return D(e)?(e=fr(e),r.length>1&&(t=r[1])):(r=_r(ur(r,!1,!1),String),e=function(n,t){return!Er(r,t)}),Ur(n,e,t)}));function zr(n,r,t){return i.call(n,0,Math.max(0,n.length-(null==r||t?1:r)))}function Lr(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[0]:zr(n,n.length-r)}function $r(n,r,t){return i.call(n,null==r||t?1:r)}var Cr=j((function(n,r){return r=ur(r,!0,!0),Sr(n,(function(n){return!Er(r,n)}))})),Kr=j((function(n,r){return Cr(n,r)}));function Jr(n,r,t,e){A(r)||(e=t,t=r,r=!1),null!=t&&(t=qn(t,e));for(var u=[],o=[],i=0,a=Y(n);i<a;i++){var f=n[i],c=t?t(f,i,n):f;r&&!t?(i&&o===c||u.push(f),o=c):t?Er(o,c)||(o.push(c),u.push(f)):Er(u,f)||u.push(f)}return u}var Gr=j((function(n){return Jr(ur(n,!0,!0))}));function Hr(n){for(var r=n&&Ir(n,Y).length||0,t=Array(r),e=0;e<r;e++)t[e]=Nr(n,e);return t}var Qr=j(Hr);function Xr(n,r){return n._chain?tn(r).chain():r}function Yr(n){return jr(wn(n),(function(r){var t=tn[r]=n[r];tn.prototype[r]=function(){var n=[this._wrapped];return o.apply(n,arguments),Xr(this,t.apply(tn,n))}})),tn}jr([\"pop\",\"push\",\"reverse\",\"shift\",\"sort\",\"splice\",\"unshift\"],(function(n){var r=t[n];tn.prototype[n]=function(){var t=this._wrapped;return null!=t&&(r.apply(t,arguments),\"shift\"!==n&&\"splice\"!==n||0!==t.length||delete t[0]),Xr(this,t)}})),jr([\"concat\",\"join\",\"slice\"],(function(n){var r=t[n];tn.prototype[n]=function(){var n=this._wrapped;return null!=n&&(n=r.apply(n,arguments)),Xr(this,n)}}));var Zr=Yr({__proto__:null,VERSION:n,restArguments:j,isObject:_,isNull:function(n){return null===n},isUndefined:w,isBoolean:A,isElement:function(n){return!(!n||1!==n.nodeType)},isString:S,isNumber:O,isDate:M,isRegExp:E,isError:B,isSymbol:N,isArrayBuffer:I,isDataView:q,isArray:U,isFunction:D,isArguments:L,isFinite:function(n){return!N(n)&&d(n)&&!isNaN(parseFloat(n))},isNaN:$,isTypedArray:X,isEmpty:function(n){if(null==n)return!0;var r=Y(n);return\"number\"==typeof r&&(U(n)||S(n)||L(n))?0===r:0===Y(nn(n))},isMatch:rn,isEqual:function(n,r){return on(n,r)},isMap:dn,isWeakMap:gn,isSet:bn,isWeakSet:mn,keys:nn,allKeys:an,values:jn,pairs:function(n){for(var r=nn(n),t=r.length,e=Array(t),u=0;u<t;u++)e[u]=[r[u],n[r[u]]];return e},invert:_n,functions:wn,methods:wn,extend:xn,extendOwn:Sn,assign:Sn,defaults:On,create:function(n,r){var t=Mn(n);return r&&Sn(t,r),t},clone:En,tap:function(n,r){return r(n),n},get:Tn,has:function(n,r){for(var t=(r=Nn(r)).length,e=0;e<t;e++){var u=r[e];if(!W(n,u))return!1;n=n[u]}return!!t},mapObject:function(n,r,t){r=qn(r,t);for(var e=nn(n),u=e.length,o={},i=0;i<u;i++){var a=e[i];o[a]=r(n[a],a,n)}return o},identity:kn,constant:C,noop:Un,toPath:Bn,property:Rn,propertyOf:function(n){return null==n?Un:function(r){return Tn(n,r)}},matcher:Dn,matches:Dn,times:function(n,r,t){var e=Array(Math.max(0,n));r=Fn(r,t,1);for(var u=0;u<n;u++)e[u]=r(u);return e},random:Wn,now:zn,escape:Cn,unescape:Kn,templateSettings:Jn,template:function(n,r,t){!r&&t&&(r=t),r=On({},r,tn.templateSettings);var e=RegExp([(r.escape||Gn).source,(r.interpolate||Gn).source,(r.evaluate||Gn).source].join(\"|\")+\"|$\",\"g\"),u=0,o=\"__p+='\";n.replace(e,(function(r,t,e,i,a){return o+=n.slice(u,a).replace(Qn,Xn),u=a+r.length,t?o+=\"'+\\n((__t=(\"+t+\"))==null?'':_.escape(__t))+\\n'\":e?o+=\"'+\\n((__t=(\"+e+\"))==null?'':__t)+\\n'\":i&&(o+=\"';\\n\"+i+\"\\n__p+='\"),r})),o+=\"';\\n\";var i,a=r.variable;if(a){if(!Yn.test(a))throw new Error(\"variable is not a bare identifier: \"+a)}else o=\"with(obj||{}){\\n\"+o+\"}\\n\",a=\"obj\";o=\"var __t,__p='',__j=Array.prototype.join,\"+\"print=function(){__p+=__j.call(arguments,'');};\\n\"+o+\"return __p;\\n\";try{i=new Function(a,\"_\",o)}catch(n){throw n.source=o,n}var f=function(n){return i.call(this,n,tn)};return f.source=\"function(\"+a+\"){\\n\"+o+\"}\",f},result:function(n,r,t){var e=(r=Nn(r)).length;if(!e)return D(t)?t.call(n):t;for(var u=0;u<e;u++){var o=null==n?void 0:n[r[u]];void 0===o&&(o=t,u=e),n=D(o)?o.call(n):o}return n},uniqueId:function(n){var r=++Zn+\"\";return n?n+r:r},chain:function(n){var r=tn(n);return r._chain=!0,r},iteratee:Pn,partial:rr,bind:tr,bindAll:or,memoize:function(n,r){var t=function(e){var u=t.cache,o=\"\"+(r?r.apply(this,arguments):e);return W(u,o)||(u[o]=n.apply(this,arguments)),u[o]};return t.cache={},t},delay:ir,defer:ar,throttle:function(n,r,t){var e,u,o,i,a=0;t||(t={});var f=function(){a=!1===t.leading?0:zn(),e=null,i=n.apply(u,o),e||(u=o=null)},c=function(){var c=zn();a||!1!==t.leading||(a=c);var l=r-(c-a);return u=this,o=arguments,l<=0||l>r?(e&&(clearTimeout(e),e=null),a=c,i=n.apply(u,o),e||(u=o=null)):e||!1===t.trailing||(e=setTimeout(f,l)),i};return c.cancel=function(){clearTimeout(e),a=0,e=u=o=null},c},debounce:function(n,r,t){var e,u,o,i,a,f=function(){var c=zn()-u;r>c?e=setTimeout(f,r-c):(e=null,t||(i=n.apply(a,o)),e||(o=a=null))},c=j((function(c){return a=this,o=c,u=zn(),e||(e=setTimeout(f,r),t&&(i=n.apply(a,o))),i}));return c.cancel=function(){clearTimeout(e),e=o=a=null},c},wrap:function(n,r){return rr(r,n)},negate:fr,compose:function(){var n=arguments,r=n.length-1;return function(){for(var t=r,e=n[r].apply(this,arguments);t--;)e=n[t].call(this,e);return e}},after:function(n,r){return function(){if(--n<1)return r.apply(this,arguments)}},before:cr,once:lr,findKey:sr,findIndex:vr,findLastIndex:hr,sortedIndex:yr,indexOf:gr,lastIndexOf:br,find:mr,detect:mr,findWhere:function(n,r){return mr(n,Dn(r))},each:jr,forEach:jr,map:_r,collect:_r,reduce:Ar,foldl:Ar,inject:Ar,reduceRight:xr,foldr:xr,filter:Sr,select:Sr,reject:function(n,r,t){return Sr(n,fr(qn(r)),t)},every:Or,all:Or,some:Mr,any:Mr,contains:Er,includes:Er,include:Er,invoke:Br,pluck:Nr,where:function(n,r){return Sr(n,Dn(r))},max:Ir,min:function(n,r,t){var e,u,o=1/0,i=1/0;if(null==r||\"number\"==typeof r&&\"object\"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;a<f;a++)null!=(e=n[a])&&e<o&&(o=e);else r=qn(r,t),jr(n,(function(n,t,e){((u=r(n,t,e))<i||u===1/0&&o===1/0)&&(o=n,i=u)}));return o},shuffle:function(n){return Tr(n,1/0)},sample:Tr,sortBy:function(n,r,t){var e=0;return r=qn(r,t),Nr(_r(n,(function(n,t,u){return{value:n,index:e++,criteria:r(n,t,u)}})).sort((function(n,r){var t=n.criteria,e=r.criteria;if(t!==e){if(t>e||void 0===t)return 1;if(t<e||void 0===e)return-1}return n.index-r.index})),\"value\")},groupBy:Dr,indexBy:Rr,countBy:Fr,partition:Vr,toArray:function(n){return n?U(n)?i.call(n):S(n)?n.match(Pr):er(n)?_r(n,kn):jn(n):[]},size:function(n){return null==n?0:er(n)?n.length:nn(n).length},pick:Ur,omit:Wr,first:Lr,head:Lr,take:Lr,initial:zr,last:function(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[n.length-1]:$r(n,Math.max(0,n.length-r))},rest:$r,tail:$r,drop:$r,compact:function(n){return Sr(n,Boolean)},flatten:function(n,r){return ur(n,r,!1)},without:Kr,uniq:Jr,unique:Jr,union:Gr,intersection:function(n){for(var r=[],t=arguments.length,e=0,u=Y(n);e<u;e++){var o=n[e];if(!Er(r,o)){var i;for(i=1;i<t&&Er(arguments[i],o);i++);i===t&&r.push(o)}}return r},difference:Cr,unzip:Hr,transpose:Hr,zip:Qr,object:function(n,r){for(var t={},e=0,u=Y(n);e<u;e++)r?t[n[e]]=r[e]:t[n[e][0]]=n[e][1];return t},range:function(n,r,t){null==r&&(r=n||0,n=0),t||(t=r<n?-1:1);for(var e=Math.max(Math.ceil((r-n)/t),0),u=Array(e),o=0;o<e;o++,n+=t)u[o]=n;return u},chunk:function(n,r){if(null==r||r<1)return[];for(var t=[],e=0,u=n.length;e<u;)t.push(i.call(n,e,e+=r));return t},mixin:Yr,default:tn});return Zr._=Zr,Zr}));"
  },
  {
    "path": "index.d.ts",
    "content": "export interface Crop {\n  x: number;\n  y: number;\n  width: number;\n  height: number;\n}\nexport interface CropResult {\n  topCrop: Crop;\n}\nexport interface CropBoost {\n  x: number;\n  y: number;\n  width: number;\n  height: number;\n  weight: number;\n}\nexport interface CropOptions {\n  minScale?: number;\n  width: number;\n  height: number;\n  boost?: CropBoost[];\n  ruleOfThirds?: boolean;\n  debug?: boolean;\n}\ndeclare const smartcrop: {\n  crop(image: CanvasImageSource, options: CropOptions): Promise<CropResult>;\n};\nexport default smartcrop;"
  },
  {
    "path": "karma.conf.js",
    "content": "// Karma configuration\n// Generated on Mon Jun 27 2016 18:36:52 GMT+0200 (CEST)\n\nmodule.exports = function(config) {\n  var launchers = {\n    sauceChromeLatest: {\n      base: 'SauceLabs',\n      browserName: 'chrome',\n      platform: 'Windows 11',\n      version: 'latest'\n    },\n    sauceFirefoxLatest: {\n      base: 'SauceLabs',\n      browserName: 'firefox',\n      platform: 'Windows 11',\n      version: 'latest'\n    },\n    sauceEdge: {\n      base: 'SauceLabs',\n      browserName: 'MicrosoftEdge',\n      platform: 'Windows 11',\n      version: 'latest'\n    },\n    sauceSafari: {\n      base: 'SauceLabs',\n      browserName: 'safari',\n      platform: 'macOS 13',\n      version: 'latest'\n    }\n    // sl_firefox: {\n    //   base: 'SauceLabs',\n    //   browserName: 'firefox',\n    //   version: '30'\n    // },\n    // sl_ios_safari: {\n    //   base: 'SauceLabs',\n    //   browserName: 'iphone',\n    //   platform: 'OS X 10.9',\n    //   version: '7.1'\n    // },\n    // sl_ie_11: {\n    //   base: 'SauceLabs',\n    //   browserName: 'internet explorer',\n    //   platform: 'Windows 8.1',\n    //   version: '11'\n    // }\n  };\n\n  config.set({\n\n    // base path that will be used to resolve all patterns (eg. files, exclude)\n    basePath: '',\n\n\n    // frameworks to use\n    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter\n    frameworks: ['mocha'],\n\n\n    // list of files / patterns to load in the browser\n    files: [\n      'node_modules/promise-polyfill/dist/polyfill.js',\n      'node_modules/chai/chai.js',\n      'smartcrop.js',\n      'test/smartcrop.js',\n      { pattern: 'examples/images/flickr/kitty.jpg', included: false, served: true }\n    ],\n\n    proxies: {\n      '/examples/images/': '/base/examples/images/'\n    },\n\n\n    // list of files to exclude\n    exclude: [\n    ],\n\n\n    // preprocess matching files before serving them to the browser\n    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor\n    preprocessors: {\n    },\n\n\n    // test results reporter to use\n    // possible values: 'dots', 'progress'\n    // available reporters: https://npmjs.org/browse/keyword/karma-reporter\n    reporters: ['progress', 'saucelabs'],\n\n\n    // web server port\n    port: 9876,\n\n\n    // enable / disable colors in the output (reporters and logs)\n    colors: true,\n\n\n    // level of logging\n    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG\n    logLevel: config.LOG_INFO,\n\n\n    // enable / disable watching file and executing tests whenever any file changes\n    autoWatch: true,\n\n\n    // start these browsers\n    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher\n    browsers: Object.keys(launchers),\n    customLaunchers: launchers,\n\n    // Continuous Integration mode\n    // if true, Karma captures browsers, runs the tests and exits\n    singleRun: true,\n\n    // Concurrency level\n    // how many browser should be started simultaneous\n    concurrency: Infinity\n  });\n};\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"smartcrop\",\n  \"version\": \"2.0.5\",\n  \"description\": \"Content aware image cropping.\",\n  \"homepage\": \"https://github.com/jwagner/smartcrop.js\",\n  \"author\": \"Jonas Wagner <jonas@29a.ch> (http://29a.ch/)\",\n  \"main\": \"./smartcrop\",\n  \"files\": [\n    \"smartcrop.js\",\n    \"index.d.ts\"\n  ],\n  \"devDependencies\": {\n    \"benchmark\": \"^2.1.4\",\n    \"chai\": \"^4.2.0\",\n    \"eslint\": \"^8.56.0\",\n    \"@vladmandic/face-api\": \"^1.7.13\",\n    \"grunt\": \"^1.6.1\",\n    \"grunt-cli\": \"^1.4.3\",\n    \"grunt-contrib-connect\": \"~4.0.0\",\n    \"grunt-contrib-watch\": \"^1.1.0\",\n    \"grunt-rsync\": \"~3.0.0\",\n    \"karma\": \"^6.4.2\",\n    \"karma-chrome-launcher\": \"^3.2.0\",\n    \"karma-mocha\": \"^2.0.1\",\n    \"karma-sauce-launcher\": \"^4.3.6\",\n    \"microtime\": \"^3.1.1\",\n    \"mocha\": \"^9.0.2\",\n    \"prettier-eslint\": \"^16.3.0\",\n    \"promise-polyfill\": \"^8.3.0\"\n  },\n  \"overrides\": {\n    \"saucelabs\": \"^7.5.0\",\n    \"webdriverio\": \"^8.29.0\"\n  },\n  \"license\": \"MIT\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jwagner/smartcrop.js.git\"\n  },\n  \"scripts\": {\n    \"start\": \"grunt\",\n    \"test\": \"karma start karma.conf.js && npx tsc -noEmit test/types.ts\",\n    \"lint\": \"eslint smartcrop.js test examples/slideshow.js examples/testbed.js examples/testsuite.js examples/smartcrop-debug.js\"\n  }\n}"
  },
  {
    "path": "scripts/release.sh",
    "content": "#!/bin/sh\nversion=\"$1\"\nif [ -z \"$version\" ]; then\n    echo \"Usage: release.sh version\"\n    exit\nfi\n\necho $version\n\njq \".version=\\\"$version\\\"\" < package.json > _package.json\nmv _package.json package.json\nname=$(jq -r \".name\" < package.json)\narchive=release/$name-$version.zip\n\nmkdir release\ngit archive -o $archive HEAD\n\ngit diff\ngit status\necho \"Confirm release with YES\"\nread confirmation\nif [ \"$confirmation\" != 'YES' ]; then\n    echo \"Ok, maybe not.\"\n    exit\nfi\ngit add -f package.json\ngit commit -am \"$version\"\ngit tag -a \"v$version\" -m \"release $version\"\ngit push origin \"v$version\"\ngrunt rsync\nnpm publish\nhub release create -a $archive \"v$version\"\n#git checkout master\n"
  },
  {
    "path": "scripts/sync-web.sh",
    "content": "#!/bin/bash\nfor f in examples/*.{html,js,css}; do\n  gzip -k $f\ndone\nrsync -vLr examples smartcrop.js doc/example.jpg x.29a.ch:/var/www/static/sandbox/2014/smartcrop/\nrm examples/*.gz\n"
  },
  {
    "path": "smartcrop.js",
    "content": "/**\n * smartcrop.js\n * A javascript library implementing content aware image cropping\n *\n * Copyright (C) 2018 Jonas Wagner\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n(function() {\n  'use strict';\n\n  var smartcrop = {};\n  // Promise implementation to use\n  function NoPromises() {\n    throw new Error('No native promises and smartcrop.Promise not set.');\n  }\n\n  smartcrop.Promise = typeof Promise !== 'undefined' ? Promise : NoPromises;\n\n  smartcrop.DEFAULTS = {\n    width: 0,\n    height: 0,\n    aspect: 0,\n    cropWidth: 0,\n    cropHeight: 0,\n    detailWeight: 0.2,\n    skinColor: [0.78, 0.57, 0.44],\n    skinBias: 0.01,\n    skinBrightnessMin: 0.2,\n    skinBrightnessMax: 1.0,\n    skinThreshold: 0.8,\n    skinWeight: 1.8,\n    saturationBrightnessMin: 0.05,\n    saturationBrightnessMax: 0.9,\n    saturationThreshold: 0.4,\n    saturationBias: 0.2,\n    saturationWeight: 0.1,\n    // Step * minscale rounded down to the next power of two should be good\n    scoreDownSample: 8,\n    step: 8,\n    scaleStep: 0.1,\n    minScale: 1.0,\n    maxScale: 1.0,\n    edgeRadius: 0.4,\n    edgeWeight: -20.0,\n    outsideImportance: -0.5,\n    boostWeight: 100.0,\n    ruleOfThirds: true,\n    prescale: true,\n    imageOperations: null,\n    canvasFactory: defaultCanvasFactory,\n    // Factory: defaultFactories,\n    debug: false\n  };\n\n  smartcrop.crop = function(inputImage, options_, callback) {\n    var options = extend({}, smartcrop.DEFAULTS, options_);\n\n    if (options.aspect) {\n      options.width = options.aspect;\n      options.height = 1;\n    }\n\n    if (options.imageOperations === null) {\n      options.imageOperations = canvasImageOperations(options.canvasFactory);\n    }\n\n    var iop = options.imageOperations;\n\n    var scale = 1;\n    var prescale = 1;\n\n    // open the image\n    return iop\n      .open(inputImage, options.input)\n      .then(function(image) {\n        // calculate desired crop dimensions based on the image size\n        if (options.width && options.height) {\n          scale = min(\n            image.width / options.width,\n            image.height / options.height\n          );\n          options.cropWidth = ~~(options.width * scale);\n          options.cropHeight = ~~(options.height * scale);\n          // Img = 100x100, width = 95x95, scale = 100/95, 1/scale > min\n          // don't set minscale smaller than 1/scale\n          // -> don't pick crops that need upscaling\n          options.minScale = min(\n            options.maxScale,\n            max(1 / scale, options.minScale)\n          );\n\n          // prescale if possible\n          if (options.prescale !== false) {\n            prescale = min(max(256 / image.width, 256 / image.height), 1);\n            if (prescale < 1) {\n              image = iop.resample(\n                image,\n                image.width * prescale,\n                image.height * prescale\n              );\n              options.cropWidth = ~~(options.cropWidth * prescale);\n              options.cropHeight = ~~(options.cropHeight * prescale);\n              if (options.boost) {\n                options.boost = options.boost.map(function(boost) {\n                  return {\n                    x: ~~(boost.x * prescale),\n                    y: ~~(boost.y * prescale),\n                    width: ~~(boost.width * prescale),\n                    height: ~~(boost.height * prescale),\n                    weight: boost.weight\n                  };\n                });\n              }\n            } else {\n              prescale = 1;\n            }\n          }\n        }\n        return image;\n      })\n      .then(function(image) {\n        return iop.getData(image).then(function(data) {\n          var result = analyse(options, data);\n\n          var crops = result.crops || [result.topCrop];\n          for (var i = 0, iLen = crops.length; i < iLen; i++) {\n            var crop = crops[i];\n            crop.x = ~~(crop.x / prescale);\n            crop.y = ~~(crop.y / prescale);\n            crop.width = ~~(crop.width / prescale);\n            crop.height = ~~(crop.height / prescale);\n          }\n          if (callback) callback(result);\n          return result;\n        });\n      });\n  };\n\n  // Check if all the dependencies are there\n  // todo:\n  smartcrop.isAvailable = function(options) {\n    if (!smartcrop.Promise) return false;\n\n    var canvasFactory = options ? options.canvasFactory : defaultCanvasFactory;\n\n    if (canvasFactory === defaultCanvasFactory) {\n      var c = document.createElement('canvas');\n      if (!c.getContext('2d')) {\n        return false;\n      }\n    }\n\n    return true;\n  };\n\n  function edgeDetect(i, o) {\n    var id = i.data;\n    var od = o.data;\n    var w = i.width;\n    var h = i.height;\n\n    for (var y = 0; y < h; y++) {\n      for (var x = 0; x < w; x++) {\n        var p = (y * w + x) * 4;\n        var lightness;\n\n        if (x === 0 || x >= w - 1 || y === 0 || y >= h - 1) {\n          lightness = sample(id, p);\n        } else {\n          lightness =\n            sample(id, p) * 4 -\n            sample(id, p - w * 4) -\n            sample(id, p - 4) -\n            sample(id, p + 4) -\n            sample(id, p + w * 4);\n        }\n\n        od[p + 1] = lightness;\n      }\n    }\n  }\n\n  function skinDetect(options, i, o) {\n    var id = i.data;\n    var od = o.data;\n    var w = i.width;\n    var h = i.height;\n\n    for (var y = 0; y < h; y++) {\n      for (var x = 0; x < w; x++) {\n        var p = (y * w + x) * 4;\n        var lightness = cie(id[p], id[p + 1], id[p + 2]) / 255;\n        var skin = skinColor(options, id[p], id[p + 1], id[p + 2]);\n        var isSkinColor = skin > options.skinThreshold;\n        var isSkinBrightness =\n          lightness >= options.skinBrightnessMin &&\n          lightness <= options.skinBrightnessMax;\n        if (isSkinColor && isSkinBrightness) {\n          od[p] =\n            (skin - options.skinThreshold) *\n            (255 / (1 - options.skinThreshold));\n        } else {\n          od[p] = 0;\n        }\n      }\n    }\n  }\n\n  function saturationDetect(options, i, o) {\n    var id = i.data;\n    var od = o.data;\n    var w = i.width;\n    var h = i.height;\n    for (var y = 0; y < h; y++) {\n      for (var x = 0; x < w; x++) {\n        var p = (y * w + x) * 4;\n\n        var lightness = cie(id[p], id[p + 1], id[p + 2]) / 255;\n        var sat = saturation(id[p], id[p + 1], id[p + 2]);\n\n        var acceptableSaturation = sat > options.saturationThreshold;\n        var acceptableLightness =\n          lightness >= options.saturationBrightnessMin &&\n          lightness <= options.saturationBrightnessMax;\n        if (acceptableLightness && acceptableSaturation) {\n          od[p + 2] =\n            (sat - options.saturationThreshold) *\n            (255 / (1 - options.saturationThreshold));\n        } else {\n          od[p + 2] = 0;\n        }\n      }\n    }\n  }\n\n  function applyBoosts(options, output) {\n    if (!options.boost) return;\n    var od = output.data;\n    for (var i = 0; i < output.width; i += 4) {\n      od[i + 3] = 0;\n    }\n    for (i = 0; i < options.boost.length; i++) {\n      applyBoost(options.boost[i], options, output);\n    }\n  }\n\n  function applyBoost(boost, options, output) {\n    var od = output.data;\n    var w = output.width;\n    var x0 = ~~boost.x;\n    var x1 = ~~(boost.x + boost.width);\n    var y0 = ~~boost.y;\n    var y1 = ~~(boost.y + boost.height);\n    var weight = boost.weight * 255;\n    for (var y = y0; y < y1; y++) {\n      for (var x = x0; x < x1; x++) {\n        var i = (y * w + x) * 4;\n        od[i + 3] += weight;\n      }\n    }\n  }\n\n  function generateCrops(options, width, height) {\n    var results = [];\n    var minDimension = min(width, height);\n    var cropWidth = options.cropWidth || minDimension;\n    var cropHeight = options.cropHeight || minDimension;\n    for (\n      var scale = options.maxScale;\n      scale >= options.minScale;\n      scale -= options.scaleStep\n    ) {\n      for (var y = 0; y + cropHeight * scale <= height; y += options.step) {\n        for (var x = 0; x + cropWidth * scale <= width; x += options.step) {\n          results.push({\n            x: x,\n            y: y,\n            width: cropWidth * scale,\n            height: cropHeight * scale\n          });\n        }\n      }\n    }\n    return results;\n  }\n\n  function score(options, output, crop) {\n    var result = {\n      detail: 0,\n      saturation: 0,\n      skin: 0,\n      boost: 0,\n      total: 0\n    };\n\n    var od = output.data;\n    var downSample = options.scoreDownSample;\n    var invDownSample = 1 / downSample;\n    var outputHeightDownSample = output.height * downSample;\n    var outputWidthDownSample = output.width * downSample;\n    var outputWidth = output.width;\n\n    for (var y = 0; y < outputHeightDownSample; y += downSample) {\n      for (var x = 0; x < outputWidthDownSample; x += downSample) {\n        var p =\n          (~~(y * invDownSample) * outputWidth + ~~(x * invDownSample)) * 4;\n        var i = importance(options, crop, x, y);\n        var detail = od[p + 1] / 255;\n\n        result.skin += (od[p] / 255) * (detail + options.skinBias) * i;\n        result.detail += detail * i;\n        result.saturation +=\n          (od[p + 2] / 255) * (detail + options.saturationBias) * i;\n        result.boost += (od[p + 3] / 255) * i;\n      }\n    }\n\n    result.total =\n      (result.detail * options.detailWeight +\n        result.skin * options.skinWeight +\n        result.saturation * options.saturationWeight +\n        result.boost * options.boostWeight) /\n      (crop.width * crop.height);\n    return result;\n  }\n\n  function importance(options, crop, x, y) {\n    if (\n      crop.x > x ||\n      x >= crop.x + crop.width ||\n      crop.y > y ||\n      y >= crop.y + crop.height\n    ) {\n      return options.outsideImportance;\n    }\n    x = (x - crop.x) / crop.width;\n    y = (y - crop.y) / crop.height;\n    var px = abs(0.5 - x) * 2;\n    var py = abs(0.5 - y) * 2;\n    // Distance from edge\n    var dx = Math.max(px - 1.0 + options.edgeRadius, 0);\n    var dy = Math.max(py - 1.0 + options.edgeRadius, 0);\n    var d = (dx * dx + dy * dy) * options.edgeWeight;\n    var s = 1.41 - sqrt(px * px + py * py);\n    if (options.ruleOfThirds) {\n      s += Math.max(0, s + d + 0.5) * 1.2 * (thirds(px) + thirds(py));\n    }\n    return s + d;\n  }\n  smartcrop.importance = importance;\n\n  function skinColor(options, r, g, b) {\n    var mag = sqrt(r * r + g * g + b * b);\n    var rd = r / mag - options.skinColor[0];\n    var gd = g / mag - options.skinColor[1];\n    var bd = b / mag - options.skinColor[2];\n    var d = sqrt(rd * rd + gd * gd + bd * bd);\n    return 1 - d;\n  }\n\n  function analyse(options, input) {\n    var result = {};\n    var output = new ImgData(input.width, input.height);\n\n    edgeDetect(input, output);\n    skinDetect(options, input, output);\n    saturationDetect(options, input, output);\n    applyBoosts(options, output);\n\n    var scoreOutput = downSample(output, options.scoreDownSample);\n\n    var topScore = -Infinity;\n    var topCrop = null;\n    var crops = generateCrops(options, input.width, input.height);\n\n    for (var i = 0, iLen = crops.length; i < iLen; i++) {\n      var crop = crops[i];\n      crop.score = score(options, scoreOutput, crop);\n      if (crop.score.total > topScore) {\n        topCrop = crop;\n        topScore = crop.score.total;\n      }\n    }\n\n    result.topCrop = topCrop;\n\n    if (options.debug && topCrop) {\n      result.crops = crops;\n      result.debugOutput = output;\n      result.debugOptions = options;\n      // Create a copy which will not be adjusted by the post scaling of smartcrop.crop\n      result.debugTopCrop = extend({}, result.topCrop);\n    }\n    return result;\n  }\n\n  function ImgData(width, height, data) {\n    this.width = width;\n    this.height = height;\n    if (data) {\n      this.data = new Uint8ClampedArray(data);\n    } else {\n      this.data = new Uint8ClampedArray(width * height * 4);\n    }\n  }\n  smartcrop.ImgData = ImgData;\n\n  function downSample(input, factor) {\n    var idata = input.data;\n    var iwidth = input.width;\n    var width = Math.floor(input.width / factor);\n    var height = Math.floor(input.height / factor);\n    var output = new ImgData(width, height);\n    var data = output.data;\n    var ifactor2 = 1 / (factor * factor);\n    for (var y = 0; y < height; y++) {\n      for (var x = 0; x < width; x++) {\n        var i = (y * width + x) * 4;\n\n        var r = 0;\n        var g = 0;\n        var b = 0;\n        var a = 0;\n\n        var mr = 0;\n        var mg = 0;\n\n        for (var v = 0; v < factor; v++) {\n          for (var u = 0; u < factor; u++) {\n            var j = ((y * factor + v) * iwidth + (x * factor + u)) * 4;\n            r += idata[j];\n            g += idata[j + 1];\n            b += idata[j + 2];\n            a += idata[j + 3];\n            mr = Math.max(mr, idata[j]);\n            mg = Math.max(mg, idata[j + 1]);\n            // unused\n            // mb = Math.max(mb, idata[j + 2]);\n          }\n        }\n        // this is some funky magic to preserve detail a bit more for\n        // skin (r) and detail (g). Saturation (b) does not get this boost.\n        data[i] = r * ifactor2 * 0.5 + mr * 0.5;\n        data[i + 1] = g * ifactor2 * 0.7 + mg * 0.3;\n        data[i + 2] = b * ifactor2;\n        data[i + 3] = a * ifactor2;\n      }\n    }\n    return output;\n  }\n  smartcrop._downSample = downSample;\n\n  function defaultCanvasFactory(w, h) {\n    var c = document.createElement('canvas');\n    c.width = w;\n    c.height = h;\n    return c;\n  }\n\n  function canvasImageOperations(canvasFactory) {\n    return {\n      // Takes imageInput as argument\n      // returns an object which has at least\n      // {width: n, height: n}\n      open: function(image) {\n        // Work around images scaled in css by drawing them onto a canvas\n        var w = image.naturalWidth || image.width;\n        var h = image.naturalHeight || image.height;\n        var c = canvasFactory(w, h);\n        var ctx = c.getContext('2d');\n        if (\n          image.naturalWidth &&\n          (image.naturalWidth != image.width ||\n            image.naturalHeight != image.height)\n        ) {\n          c.width = image.naturalWidth;\n          c.height = image.naturalHeight;\n        } else {\n          c.width = image.width;\n          c.height = image.height;\n        }\n        ctx.drawImage(image, 0, 0);\n        return smartcrop.Promise.resolve(c);\n      },\n      // Takes an image (as returned by open), and changes it's size by resampling\n      resample: function(image, width, height) {\n        return Promise.resolve(image).then(function(image) {\n          var c = canvasFactory(~~width, ~~height);\n          var ctx = c.getContext('2d');\n\n          ctx.drawImage(\n            image,\n            0,\n            0,\n            image.width,\n            image.height,\n            0,\n            0,\n            c.width,\n            c.height\n          );\n          return smartcrop.Promise.resolve(c);\n        });\n      },\n      getData: function(image) {\n        return Promise.resolve(image).then(function(c) {\n          var ctx = c.getContext('2d');\n          var id = ctx.getImageData(0, 0, c.width, c.height);\n          return new ImgData(c.width, c.height, id.data);\n        });\n      }\n    };\n  }\n  smartcrop._canvasImageOperations = canvasImageOperations;\n\n  // Aliases and helpers\n  var min = Math.min;\n  var max = Math.max;\n  var abs = Math.abs;\n  var sqrt = Math.sqrt;\n\n  function extend(o) {\n    for (var i = 1, iLen = arguments.length; i < iLen; i++) {\n      var arg = arguments[i];\n      if (arg) {\n        for (var name in arg) {\n          o[name] = arg[name];\n        }\n      }\n    }\n    return o;\n  }\n\n  // Gets value in the range of [0, 1] where 0 is the center of the pictures\n  // returns weight of rule of thirds [0, 1]\n  function thirds(x) {\n    x = (((x - 1 / 3 + 1.0) % 2.0) * 0.5 - 0.5) * 16;\n    return Math.max(1.0 - x * x, 0.0);\n  }\n\n  function cie(r, g, b) {\n    return 0.5126 * b + 0.7152 * g + 0.0722 * r;\n  }\n  function sample(id, p) {\n    return cie(id[p], id[p + 1], id[p + 2]);\n  }\n  function saturation(r, g, b) {\n    var maximum = max(r / 255, g / 255, b / 255);\n    var minimum = min(r / 255, g / 255, b / 255);\n\n    if (maximum === minimum) {\n      return 0;\n    }\n\n    var l = (maximum + minimum) / 2;\n    var d = maximum - minimum;\n\n    return l > 0.5 ? d / (2 - maximum - minimum) : d / (maximum + minimum);\n  }\n\n  // Amd\n  if (typeof define !== 'undefined' && define.amd)\n    define(function() {\n      return smartcrop;\n    });\n  // Common js\n  if (typeof exports !== 'undefined') exports.smartcrop = smartcrop;\n  else if (typeof navigator !== 'undefined')\n    // Browser\n    window.SmartCrop = window.smartcrop = smartcrop;\n  // Nodejs\n  if (typeof module !== 'undefined') {\n    module.exports = smartcrop;\n  }\n})();\n"
  },
  {
    "path": "test/benchmark-node.js",
    "content": "// npm install microtime canvas\n// then run from base directory:\n// node test/benchmark-node.js\n//\nvar Benchmark = require('benchmark'),\n  fs = require('fs'),\n  Canvas = require('canvas'),\n  SmartCrop = require('../smartcrop');\n\nvar img = new Canvas.Image();\nimg.src = fs.readFileSync('examples/images/flickr/kitty.jpg');\nfunction canvasFactory(w, h) {\n  return new Canvas(w, h);\n}\nvar benchmark = new Benchmark(\n  'SmartCrop.crop()',\n  function(deferred) {\n    SmartCrop.crop(\n      img,\n      { width: 256, height: 256, canvasFactory: canvasFactory },\n      function() {\n        deferred.resolve();\n      }\n    );\n  },\n  {\n    defer: true,\n    onComplete: function() {\n      console.log(benchmark.toString()); // eslint: ignore\n    }\n  }\n).run();\n"
  },
  {
    "path": "test/benchmark.html",
    "content": "<html>\n<head>\n  <meta charset=\"utf-8\">\n  <title>smartcrop.js benchmark</title>\n</head>\n<body>\n  <h1>smartcrop.js benchmark</h1>\n  <div id=status></div>\n  <pre id=raw>Running</pre>\n  <script src=\"../node_modules/benchmark/node_modules/lodash/lodash.js\"></script>\n\n  <script src=\"../node_modules/benchmark/benchmark.js\"></script>\n  <script src=\"../smartcrop.js\"></script>\n  <script src=\"../examples/jquery.js\"></script>\n  <script src=\"benchmark.js\"></script>\n</body>\n</html>\n"
  },
  {
    "path": "test/benchmark.js",
    "content": "(function() {\n  var KITTY = '/examples/images/flickr/kitty.jpg',\n    raw = $('#raw'),\n    status = $('#status');\n\n  var benchmark = new Benchmark(\n      'smartcrop.crop()',\n      function(deferred) {\n        smartcrop.crop(img, { width: 256, height: 256 }, function() {\n          deferred.resolve();\n        });\n      },\n      {\n        defer: true,\n        maxTime: 30,\n        onCycle: function() {\n          status.text(benchmark.toString());\n        },\n        onComplete: function() {\n          console.log('complete', arguments);\n          status.text(benchmark.toString());\n          raw.text(JSON.stringify(benchmark.stats, null, ' '));\n        }\n      }\n    ),\n    img = new Image();\n  // add tests\n  img.src = KITTY;\n  img.onload = function() {\n    benchmark.run({ async: true });\n  };\n})();\n"
  },
  {
    "path": "test/index.html",
    "content": "<html>\n<head>\n  <meta charset=\"utf-8\">\n  <title>smartcrop.js Mocha Tests</title>\n  <link rel=\"stylesheet\" href=\"../node_modules/mocha/mocha.css\" />\n</head>\n<body>\n  <div id=\"mocha\"></div>\n  <script src=\"../node_modules/mocha/mocha.js\"></script>\n  <script src=\"../node_modules/chai/chai.js\"></script>\n  <script src=\"../examples/smartcrop-debug.js\"></script>\n  <script src=\"../smartcrop.js\"></script>\n\n  <script>\n      mocha.setup('bdd')\n      window.expect = chai.expect;\n  </script>\n  <script src=\"smartcrop.js\"></script>\n  <script>\n    //mocha.checkLeaks();\n    //mocha.globals(['jQuery', 'LiveReload', '__screenCapturePageContext__']);\n    mocha.run();\n  </script>\n</body>\n</html>\n"
  },
  {
    "path": "test/smartcrop.js",
    "content": "(function() {\n  mocha.setup('bdd');\n  var expect = chai.expect;\n\n  var KITTY = '/examples/images/flickr/kitty.jpg';\n  describe('smartcrop', function() {\n    var img;\n    beforeEach(function(done) {\n      img = new Image();\n      img.src = KITTY;\n      img.onload = function() {\n        done();\n      };\n    });\n    function validResult(result) {\n      expect(result.topCrop.x).to.be.within(\n        0,\n        img.width - result.topCrop.width\n      );\n      expect(result.topCrop.y).to.be.within(\n        0,\n        img.height - result.topCrop.height\n      );\n      expect(result.topCrop.width).to.be.within(1, img.width);\n      expect(result.topCrop.height).to.be.within(1, img.height);\n    }\n    function expectAspectRatio(result, expected) {\n      expect(result.topCrop.width / result.topCrop.height).to.be.closeTo(\n        expected,\n        0.01\n      );\n    }\n    describe('isAvailable', function() {\n      it('should return true when canvas is available', function() {\n        expect(smartcrop.isAvailable()).to.equal(true);\n      });\n    });\n    describe('crop', function() {\n      it('should do something sane', function() {\n        var c = document.createElement('canvas');\n        var ctx = c.getContext('2d');\n        c.width = 128;\n        c.height = 64;\n        ctx.fillStyle = 'white';\n        ctx.fillRect(0, 0, 128, 64);\n        ctx.fillStyle = 'red';\n        ctx.fillRect(96, 32, 16, 16);\n        return smartcrop\n          .crop(c, { width: 32, height: 32 })\n          .then(function(result) {\n            expectAspectRatio(result, 1);\n            expect(result.topCrop.x).to.be.lessThan(96);\n            expect(result.topCrop.y).to.be.lessThan(32);\n            expect(result.topCrop.x + result.topCrop.width).to.be.greaterThan(\n              112\n            );\n            expect(result.topCrop.y + result.topCrop.height).to.be.greaterThan(\n              48\n            );\n          });\n      });\n      it('should take into account ruleOfThirds', function() {\n        var c = document.createElement('canvas');\n        var ctx = c.getContext('2d');\n        c.width = 256;\n        c.height = 128;\n        ctx.fillStyle = 'white';\n        ctx.fillRect(0, 0, 256, 128);\n        ctx.fillStyle = 'red';\n        ctx.fillRect(128, 24, 8, 80);\n        var optionsThirds = {\n          width: 32,\n          height: 32,\n          ruleOfThirds: true,\n          debug: true\n        };\n        var optionsNoThirds = {\n          width: 32,\n          height: 32,\n          ruleOfThirds: false,\n          debug: true\n        };\n        return smartcrop.crop(c, optionsThirds).then(function(resultThirds) {\n          return smartcrop\n            .crop(c, optionsNoThirds)\n            .then(function(resultNoThirds) {\n              validResult(resultThirds);\n              validResult(resultNoThirds);\n              expectAspectRatio(resultNoThirds, 1);\n              expect(\n                resultNoThirds.topCrop.x + resultNoThirds.topCrop.width / 2\n              ).to.equal(128);\n              expect(\n                resultThirds.topCrop.x + resultThirds.topCrop.width / 2\n              ).to.equal(144);\n            });\n        });\n      });\n\n      it('should adhere to minScale', function() {\n        return smartcrop.crop(img, { minScale: 1 }).then(function(result) {\n          validResult(result);\n          expectAspectRatio(result, 1);\n          expect(result.topCrop.y).to.equal(0);\n          expect(result.topCrop.height).to.equal(img.height);\n        });\n      });\n      it('should take into account boost', function() {\n        var boost = [\n          {\n            x: img.width - 128,\n            y: img.height - 128,\n            width: 64,\n            height: 64,\n            weight: 1.0\n          }\n        ];\n        return smartcrop\n          .crop(img, { boost: boost, width: 64, height: 64 })\n          .then(function(result) {\n            validResult(result);\n            expect(result.topCrop.y).to.equal(0);\n            expect(result.topCrop.x).to.equal(200);\n            expect(result.topCrop.height).to.equal(img.height);\n          });\n      });\n      it('should take into account the aspect ratio', function() {\n        return smartcrop\n          .crop(img, { width: 128, height: 64 })\n          .then(function(result) {\n            validResult(result);\n            expectAspectRatio(result, 2.0 / 1);\n            return smartcrop\n              .crop(img, { width: 160, height: 90 })\n              .then(function(result) {\n                validResult(result);\n                expectAspectRatio(result, 16 / 9);\n              });\n          });\n      });\n\n      it('should crop the kitty', function() {\n        return smartcrop.crop(img, {}).then(function(result) {\n          validResult(result);\n        });\n      });\n    });\n    describe('iop', function() {\n      describe('open', function() {\n        it('passes input options', function() {\n          var iop = smartcrop._canvasImageOperations(\n            smartcrop.DEFAULTS.canvasFactory\n          );\n          var open = iop.open;\n          var inputOptions;\n          iop.open = function(image, inputOptions_) {\n            inputOptions = inputOptions_;\n            return open(image);\n          };\n          var options = {\n            imageOperations: iop,\n            input: { foo: 'bar' }\n          };\n          return smartcrop.crop(img, options).then(function(result) {\n            expect(inputOptions).to.equal(options.input);\n            validResult(result);\n          });\n        });\n      });\n    });\n\n    describe('_downSample', function() {\n      var input = {\n        width: 4,\n        height: 4,\n        data: mono2rgba([1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2])\n      };\n      function mono2rgba(input) {\n        var output = new Uint8ClampedArray(input.length * 4);\n        for (var i = 0; i < input.length; i++) {\n          output[i * 4] = input[i];\n          output[i * 4 + 1] = input[i];\n          output[i * 4 + 2] = input[i];\n          output[i * 4 + 3] = input[i];\n        }\n        return output;\n      }\n      it('keeps the image the same at a factor of one', function() {\n        var output = smartcrop._downSample(input, 1);\n        expect(output.width).to.equal(input.width);\n        expect(output.height).to.equal(input.height);\n        expect(output.data).to.deep.equal(input.data);\n      });\n\n      it('samples down an image by a factor of two', function() {\n        var expectedOutputData = new Uint8ClampedArray([\n          5,\n          4,\n          4,\n          4,\n          7,\n          6,\n          6,\n          6,\n          8,\n          7,\n          6,\n          6,\n          6,\n          5,\n          4,\n          4\n        ]);\n        var output = smartcrop._downSample(input, 2);\n        expect(output.width).to.equal(input.width / 2);\n        expect(output.height).to.equal(input.height / 2);\n        expect(output.data).to.deep.equal(expectedOutputData);\n      });\n      it('keeps a constant value constant', function() {\n        var w = 59;\n        var h = 23;\n        var input = {\n          width: w,\n          height: h,\n          data: new Uint8ClampedArray(w * h * 4)\n        };\n        for (var i = 0; i < input.data.length; i++) {\n          input.data[i] = 119;\n        }\n        var output = smartcrop._downSample(input, 8);\n        expect(output.width).to.equal(~~(input.width / 8));\n        expect(output.height).to.equal(~~(input.height / 8));\n        for (i = 0; i < output.data.length; i++) {\n          expect(output.data[i]).to.be.within(118, 120);\n        }\n      });\n    });\n  });\n})();\n"
  },
  {
    "path": "test/types.ts",
    "content": "import SmartCrop from '..';\n\nconsole.log(SmartCrop.crop);"
  }
]