From 1bde24f6a57fd4cc40d8560483aa9c3e2dbff704 Mon Sep 17 00:00:00 2001 From: ezliu Date: Sat, 21 Apr 2018 13:12:16 -0700 Subject: [PATCH] Remove duplicate miniwob-sandbox. Fixes #6 --- miniwob-sandbox | 1 + miniwob-sandbox/.gitignore | 5 - miniwob-sandbox/README.md | 115 - miniwob-sandbox/bot/click-test-2-bot.py | 84 - miniwob-sandbox/bot/parallel-bot.py | 35 - miniwob-sandbox/docker/Dockerfile | 16 - miniwob-sandbox/html/.gitignore | 1 - miniwob-sandbox/html/common/shapes.js | 235 - .../common/special/book-flight/domestic.js | 734 -- .../common/special/checkbox-numbers/ch_0.png | Bin 7177 -> 0 bytes .../common/special/checkbox-numbers/ch_1.png | Bin 7031 -> 0 bytes .../common/special/checkbox-numbers/ch_2.png | Bin 7065 -> 0 bytes .../common/special/checkbox-numbers/ch_3.png | Bin 7095 -> 0 bytes .../common/special/checkbox-numbers/ch_4.png | Bin 7019 -> 0 bytes .../common/special/checkbox-numbers/ch_5.png | Bin 7079 -> 0 bytes .../common/special/checkbox-numbers/ch_6.png | Bin 7079 -> 0 bytes .../common/special/checkbox-numbers/ch_7.png | Bin 7052 -> 0 bytes .../common/special/checkbox-numbers/ch_8.png | Bin 7047 -> 0 bytes .../common/special/checkbox-numbers/ch_9.png | Bin 7092 -> 0 bytes .../special/click-pie/raphael.icons.min.js | 4 - .../common/special/click-pie/raphael.min.js | 4 - .../common/special/click-pie/wheelnav.min.js | 2 - .../html/common/special/drag-cube/blank.png | Bin 52210 -> 0 bytes .../html/common/special/drag-cube/cube.css | 132 - .../html/common/special/drag-cube/cube.js | 358 - .../special/email-inbox-nl/templates.js | 515 - .../common/special/email-inbox/delete.png | Bin 1713 -> 0 bytes .../special/email-inbox/email-inbox.css | 78 - .../common/special/email-inbox/forward.png | Bin 622 -> 0 bytes .../special/email-inbox/left-arrow-white.png | Bin 479 -> 0 bytes .../common/special/email-inbox/left-arrow.png | Bin 693 -> 0 bytes .../html/common/special/email-inbox/reply.png | Bin 1137 -> 0 bytes .../common/special/email-inbox/search.png | Bin 1183 -> 0 bytes .../html/common/special/email-inbox/send.png | Bin 772 -> 0 bytes .../special/email-inbox/star-clicked.png | Bin 1116 -> 0 bytes .../html/common/special/email-inbox/star.png | Bin 1760 -> 0 bytes .../navigate-tree/images/ajax-loader.gif | Bin 649 -> 0 bytes .../special/navigate-tree/images/file.gif | Bin 109 -> 0 bytes .../navigate-tree/images/folder-closed.gif | Bin 102 -> 0 bytes .../special/navigate-tree/images/folder.gif | Bin 106 -> 0 bytes .../special/navigate-tree/images/minus.gif | Bin 58 -> 0 bytes .../special/navigate-tree/images/plus.gif | Bin 61 -> 0 bytes .../images/treeview-black-line.gif | Bin 1010 -> 0 bytes .../navigate-tree/images/treeview-black.gif | Bin 381 -> 0 bytes .../images/treeview-default-line.gif | Bin 848 -> 0 bytes .../navigate-tree/images/treeview-default.gif | Bin 387 -> 0 bytes .../images/treeview-famfamfam-line.gif | Bin 37 -> 0 bytes .../images/treeview-famfamfam.gif | Bin 545 -> 0 bytes .../images/treeview-gray-line.gif | Bin 1010 -> 0 bytes .../navigate-tree/images/treeview-gray.gif | Bin 394 -> 0 bytes .../images/treeview-red-line.gif | Bin 1010 -> 0 bytes .../navigate-tree/images/treeview-red.gif | Bin 394 -> 0 bytes .../special/navigate-tree/jquery.treeview.css | 68 - .../navigate-tree/jquery.treeview.min.js | 15 - .../jquery.twbsPagination.min.js | 9 - .../special/social-media/like-hover.png | Bin 1424 -> 0 bytes .../html/common/special/social-media/like.png | Bin 1307 -> 0 bytes .../special/social-media/more-hover.png | Bin 695 -> 0 bytes .../html/common/special/social-media/more.png | Bin 850 -> 0 bytes .../special/social-media/reply-hover.png | Bin 1235 -> 0 bytes .../common/special/social-media/reply.png | Bin 1094 -> 0 bytes .../special/social-media/retweet-hover.png | Bin 991 -> 0 bytes .../common/special/social-media/retweet.png | Bin 1069 -> 0 bytes .../special/social-media/share-hover.png | Bin 1508 -> 0 bytes .../common/special/social-media/share.png | Bin 1475 -> 0 bytes .../common/special/text-editor/quill.min.js | 14 - .../common/special/text-editor/quill.snow.css | 881 -- .../html/common/special/tic-tac-toe/o.png | Bin 2803 -> 0 bytes .../html/common/special/tic-tac-toe/x.png | Bin 993 -> 0 bytes miniwob-sandbox/html/common/ui_utils.js | 120 - miniwob-sandbox/html/core/core.css | 104 - miniwob-sandbox/html/core/core.js | 626 - miniwob-sandbox/html/core/d3.v3.min.js | 5 - .../core/jquery-ui/external/jquery/jquery.js | 11008 ---------------- .../images/ui-icons_444444_256x240.png | Bin 7006 -> 0 bytes .../images/ui-icons_555555_256x240.png | Bin 7074 -> 0 bytes .../images/ui-icons_777620_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_777777_256x240.png | Bin 7013 -> 0 bytes .../images/ui-icons_cc0000_256x240.png | Bin 4632 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6313 -> 0 bytes .../html/core/jquery-ui/jquery-ui.min.css | 7 - .../html/core/jquery-ui/jquery-ui.min.js | 13 - .../jquery-ui/jquery-ui.structure.min.css | 5 - .../core/jquery-ui/jquery-ui.theme.min.css | 5 - miniwob-sandbox/html/core/jscolor.min.js | 10 - miniwob-sandbox/html/core/record.js | 215 - .../html/flight/AA/apps/common/js/aacom.js | 1 - .../flight/AA/apps/common/js/aacomDevice.js | 1 - .../flight/AA/apps/common/js/airportcode.js | 1 - .../flight/AA/apps/common/js/cookieconsent.js | 1 - .../aacom/plugins/aaAirportAutoComplete.js | 1 - .../common/js/jquery/aacom/plugins/aaCache.js | 1 - .../js/jquery/aacom/plugins/aaCookie.js | 1 - .../aacom/plugins/aaCountryLanSelect.js | 1 - .../jquery/aacom/plugins/aaDropdownPanel.js | 1 - .../js/jquery/aacom/plugins/aaFooterAds.js | 1 - .../jquery/aacom/plugins/aaTextBoxMessage.js | 1 - .../jquery/aacom/utilities/aaUtilities-2.1.js | 1 - .../js/jquery/aacom/utilities/aaUtils.js | 1 - .../html/flight/AA/apps/common/js/wa.js | 1 - .../flight/AA/content/common/css/v3/core.css | 1 - .../common/css/v3/jquery-ui-1.10-aa.css | 6 - .../findFlights/mobile/findFlights.css | 1 - .../AA/content/common/css/v3/responsive.css | 1 - .../fonts/american-v2/americansans-bold.woff | Bin 31168 -> 0 bytes .../fonts/american-v2/americansans-light.woff | Bin 30212 -> 0 bytes .../american-v2/americansans-medium.woff | Bin 30252 -> 0 bytes .../american-v2/americansans-regular.woff | Bin 29480 -> 0 bytes .../fonts/icons/american-icons-v4-4.woff | Bin 38864 -> 0 bytes .../content/images/chrome/icons/loading.gif | Bin 3208 -> 0 bytes .../images/chrome/rebrand/aa-flight-icon.png | Bin 22382 -> 0 bytes .../chrome/rebrand/aa-icons-flags-sprite.png | Bin 32426 -> 0 bytes .../content/images/chrome/rebrand/aa-logo.png | Bin 28485 -> 0 bytes .../images/chrome/rebrand/down-arrow.png | Bin 973 -> 0 bytes .../content/images/chrome/rebrand/favicon.png | Bin 821 -> 0 bytes .../images/chrome/rebrand/oneworld.png | Bin 2572 -> 0 bytes .../images/chrome/rebrand/shadow-down.png | Bin 399 -> 0 bytes .../chrome/rebrand/shadow-vertical-150.png | Bin 299 -> 0 bytes .../images/chrome/rebrand/shadow12-down.png | Bin 306 -> 0 bytes .../images/chrome/rebrand/shadow12-up.png | Bin 303 -> 0 bytes .../images/chrome/rebrand/shadow3-down.png | Bin 191 -> 0 bytes .../icons/aa-jqueryUIicons-sprite.png | Bin 8692 -> 0 bytes miniwob-sandbox/html/flight/AA/dataset-AA.js | 1771 --- miniwob-sandbox/html/flight/AA/index.html | 589 - .../flight/AA/js/aa/common/aa-utility-menu.js | 1 - .../flight/AA/js/aa/common/aacom-ui-1.0.0.js | 1 - .../html/flight/AA/js/aa/common/core-2.0.0.js | 1 - .../flight/AA/js/aa/modules/airportLookup.js | 1 - .../html/flight/AA/js/aa/modules/ajax.js | 1 - .../flight/AA/js/aa/modules/browserdetect.js | 1 - .../flight/AA/js/aa/modules/commonsetup.js | 1 - .../AA/js/aa/modules/mobileDatePicker.js | 1 - .../html/flight/AA/js/aa/modules/utilities.js | 1 - .../html/flight/AA/js/aa/modules/widgets.js | 1 - .../html/flight/AA/js/aa/plugins/noBounce.js | 1 - .../AA/js/aa/shopping/mobileSearchFlights.js | 1 - .../AA/js/libs/jquery/jquery-1.11.1.min.js | 4 - .../libs/jquery/jquery-migrate-1.2.1.min.js | 2 - .../1.10/i18n/jquery.ui.datepicker-en-aa.js | 24 - .../js/libs/jquery/ui/1.10/jquery-ui.min.js | 12 - .../html/flight/AA/js/libs/modernizr-2.8.1.js | 4 - miniwob-sandbox/html/flight/AA/original.html | 698 - .../html/flight/AA/surrogate/airportLookup.js | 45 - .../html/flight/AA/surrogate/airports.json | 1 - miniwob-sandbox/html/flight/AA/wrapper.html | 37 - .../flight/Alaska-auto-medium/images/aura.png | Bin 764 -> 0 bytes .../flight/Alaska-auto-medium/images/cal3.png | Bin 414 -> 0 bytes .../Alaska-auto-medium/images/chkboxes3.png | Bin 540 -> 0 bytes .../Alaska-auto-medium/images/clear_text2.png | Bin 245 -> 0 bytes .../Alaska-auto-medium/images/collapse.png | Bin 277 -> 0 bytes .../Alaska-auto-medium/images/expand.png | Bin 277 -> 0 bytes .../images/flight_arrow.png | Bin 1032 -> 0 bytes .../flight/Alaska-auto-medium/images/geo.png | Bin 408 -> 0 bytes .../flight/Alaska-auto-medium/images/home.png | Bin 185 -> 0 bytes .../Alaska-auto-medium/images/info2.png | Bin 288 -> 0 bytes .../Alaska-auto-medium/images/leftright.png | Bin 389 -> 0 bytes .../Alaska-auto-medium/images/logo2.png | Bin 1367 -> 0 bytes .../Alaska-auto-medium/images/logos/AA.png | Bin 1627 -> 0 bytes .../Alaska-auto-medium/images/logos/AS.png | Bin 1146 -> 0 bytes .../Alaska-auto-medium/images/logos/DL.png | Bin 949 -> 0 bytes .../Alaska-auto-medium/images/logos/VX.png | Bin 4217 -> 0 bytes .../html/flight/Alaska-auto-medium/index.html | 160 - .../mobileweb-v3-28-6227-21813.css | 1 - .../Alaska-auto-medium/scripts/datepickr.js | 1 - .../flight/Alaska-auto-medium/scripts/main.js | 1 - .../Alaska-auto-medium/scripts/shopbook.js | 1 - .../circular/ASCircularWeb-Bold.woff | Bin 21864 -> 0 bytes .../circular/ASCircularWeb-Book.woff | Bin 21844 -> 0 bytes .../surrogate/airportLookup.js | 44 - .../surrogate/airports.json | 412 - .../flight/Alaska-auto-medium/wrapper.html | 124 - .../html/flight/Alaska-auto/images/aura.png | Bin 764 -> 0 bytes .../html/flight/Alaska-auto/images/cal3.png | Bin 414 -> 0 bytes .../flight/Alaska-auto/images/chkboxes3.png | Bin 540 -> 0 bytes .../flight/Alaska-auto/images/clear_text2.png | Bin 245 -> 0 bytes .../flight/Alaska-auto/images/collapse.png | Bin 277 -> 0 bytes .../html/flight/Alaska-auto/images/expand.png | Bin 277 -> 0 bytes .../Alaska-auto/images/flight_arrow.png | Bin 1032 -> 0 bytes .../html/flight/Alaska-auto/images/geo.png | Bin 408 -> 0 bytes .../html/flight/Alaska-auto/images/home.png | Bin 185 -> 0 bytes .../html/flight/Alaska-auto/images/info2.png | Bin 288 -> 0 bytes .../flight/Alaska-auto/images/leftright.png | Bin 389 -> 0 bytes .../html/flight/Alaska-auto/images/logo2.png | Bin 1367 -> 0 bytes .../flight/Alaska-auto/images/logos/AA.png | Bin 1627 -> 0 bytes .../flight/Alaska-auto/images/logos/AS.png | Bin 1146 -> 0 bytes .../flight/Alaska-auto/images/logos/DL.png | Bin 949 -> 0 bytes .../flight/Alaska-auto/images/logos/VX.png | Bin 4217 -> 0 bytes .../html/flight/Alaska-auto/index.html | 160 - .../mobileweb-v3-28-6227-21813.css | 1 - .../flight/Alaska-auto/scripts/datepickr.js | 1 - .../html/flight/Alaska-auto/scripts/main.js | 1 - .../flight/Alaska-auto/scripts/shopbook.js | 1 - .../circular/ASCircularWeb-Bold.woff | Bin 21864 -> 0 bytes .../circular/ASCircularWeb-Book.woff | Bin 21844 -> 0 bytes .../Alaska-auto/surrogate/airportLookup.js | 44 - .../Alaska-auto/surrogate/airports.json | 412 - .../html/flight/Alaska-auto/wrapper.html | 132 - .../html/flight/Alaska/dataset-Alaska.js | 3294 ----- .../html/flight/Alaska/images/aura.png | Bin 764 -> 0 bytes .../html/flight/Alaska/images/cal3.png | Bin 414 -> 0 bytes .../html/flight/Alaska/images/chkboxes3.png | Bin 540 -> 0 bytes .../html/flight/Alaska/images/clear_text2.png | Bin 245 -> 0 bytes .../html/flight/Alaska/images/collapse.png | Bin 277 -> 0 bytes .../html/flight/Alaska/images/expand.png | Bin 277 -> 0 bytes .../flight/Alaska/images/flight_arrow.png | Bin 1032 -> 0 bytes .../html/flight/Alaska/images/geo.png | Bin 408 -> 0 bytes .../html/flight/Alaska/images/home.png | Bin 185 -> 0 bytes .../html/flight/Alaska/images/info2.png | Bin 288 -> 0 bytes .../html/flight/Alaska/images/leftright.png | Bin 389 -> 0 bytes .../html/flight/Alaska/images/logo2.png | Bin 1367 -> 0 bytes .../html/flight/Alaska/images/logos/AA.png | Bin 1627 -> 0 bytes .../html/flight/Alaska/images/logos/AS.png | Bin 1146 -> 0 bytes .../html/flight/Alaska/images/logos/DL.png | Bin 949 -> 0 bytes .../html/flight/Alaska/images/logos/VX.png | Bin 4217 -> 0 bytes miniwob-sandbox/html/flight/Alaska/index.html | 160 - .../Alaska/mobileweb-v3-28-6227-21813.css | 1 - .../html/flight/Alaska/original.html | 188 - .../html/flight/Alaska/scripts/datepickr.js | 1 - .../html/flight/Alaska/scripts/main.js | 1 - .../html/flight/Alaska/scripts/shopbook.js | 1 - .../circular/ASCircularWeb-Bold.woff | Bin 21864 -> 0 bytes .../circular/ASCircularWeb-Book.woff | Bin 21844 -> 0 bytes .../flight/Alaska/surrogate/airportLookup.js | 44 - .../flight/Alaska/surrogate/airports.json | 412 - .../html/flight/Alaska/wrapper.html | 37 - .../html/flight/flight-common/inject.js | 368 - .../html/flight/flight-common/wrapper.css | 49 - .../html/flight/flight-common/wrapper.js | 238 - miniwob-sandbox/html/http-serve | 5 - .../html/miniwob/bisect-angle.html | 159 - .../html/miniwob/book-flight-nodelay.html | 316 - miniwob-sandbox/html/miniwob/book-flight.html | 314 - .../html/miniwob/chase-circle.html | 90 - .../html/miniwob/choose-date-easy.html | 62 - .../html/miniwob/choose-date-medium.html | 62 - .../html/miniwob/choose-date-nodelay.html | 64 - miniwob-sandbox/html/miniwob/choose-date.html | 62 - miniwob-sandbox/html/miniwob/choose-list.html | 63 - .../html/miniwob/circle-center.html | 100 - miniwob-sandbox/html/miniwob/classes | 98 - .../html/miniwob/click-button-sequence.html | 57 - .../html/miniwob/click-button.html | 74 - .../html/miniwob/click-checkboxes-large.html | 88 - .../html/miniwob/click-checkboxes-soft.html | 122 - .../miniwob/click-checkboxes-transfer.html | 85 - .../html/miniwob/click-checkboxes.html | 76 - .../miniwob/click-collapsible-2-nodelay.html | 79 - .../html/miniwob/click-collapsible-2.html | 79 - .../miniwob/click-collapsible-nodelay.html | 61 - .../html/miniwob/click-collapsible.html | 61 - miniwob-sandbox/html/miniwob/click-color.html | 93 - .../html/miniwob/click-dialog-2.html | 85 - .../html/miniwob/click-dialog.html | 62 - miniwob-sandbox/html/miniwob/click-link.html | 77 - .../html/miniwob/click-menu-2.html | 99 - miniwob-sandbox/html/miniwob/click-menu.html | 83 - .../html/miniwob/click-option.html | 65 - .../html/miniwob/click-pie-nodelay.html | 93 - miniwob-sandbox/html/miniwob/click-pie.html | 91 - .../html/miniwob/click-scroll-list.html | 93 - .../html/miniwob/click-shades.html | 114 - miniwob-sandbox/html/miniwob/click-shape.html | 66 - .../html/miniwob/click-tab-2-easy.html | 95 - .../html/miniwob/click-tab-2-hard.html | 94 - .../html/miniwob/click-tab-2-medium.html | 109 - miniwob-sandbox/html/miniwob/click-tab-2.html | 97 - miniwob-sandbox/html/miniwob/click-tab.html | 85 - .../html/miniwob/click-test-2.html | 44 - .../html/miniwob/click-test-transfer.html | 54 - miniwob-sandbox/html/miniwob/click-test.html | 40 - .../html/miniwob/click-widget.html | 76 - .../html/miniwob/copy-paste-2.html | 100 - miniwob-sandbox/html/miniwob/copy-paste.html | 81 - miniwob-sandbox/html/miniwob/count-shape.html | 97 - miniwob-sandbox/html/miniwob/count-sides.html | 91 - miniwob-sandbox/html/miniwob/drag-box.html | 78 - miniwob-sandbox/html/miniwob/drag-cube.html | 78 - miniwob-sandbox/html/miniwob/drag-item.html | 76 - .../html/miniwob/drag-items-grid.html | 89 - miniwob-sandbox/html/miniwob/drag-items.html | 90 - miniwob-sandbox/html/miniwob/drag-shapes.html | 149 - .../html/miniwob/drag-sort-numbers.html | 78 - .../html/miniwob/email-inbox-delete.html | 504 - .../miniwob/email-inbox-forward-nl-turk.html | 525 - .../html/miniwob/email-inbox-forward-nl.html | 562 - .../html/miniwob/email-inbox-forward.html | 504 - .../html/miniwob/email-inbox-important.html | 504 - .../html/miniwob/email-inbox-nl-turk.html | 551 - .../html/miniwob/email-inbox-noscroll.html | 504 - .../html/miniwob/email-inbox-reply.html | 504 - .../html/miniwob/email-inbox-star-reply.html | 504 - miniwob-sandbox/html/miniwob/email-inbox.html | 504 - miniwob-sandbox/html/miniwob/enter-date.html | 57 - .../html/miniwob/enter-password.html | 53 - .../html/miniwob/enter-text-2.html | 78 - .../html/miniwob/enter-text-dynamic.html | 57 - miniwob-sandbox/html/miniwob/enter-text.html | 59 - miniwob-sandbox/html/miniwob/enter-time.html | 56 - .../html/miniwob/find-midpoint.html | 151 - miniwob-sandbox/html/miniwob/find-word.html | 86 - .../html/miniwob/focus-text-2.html | 60 - miniwob-sandbox/html/miniwob/focus-text.html | 53 - .../html/miniwob/grid-coordinate.html | 125 - .../html/miniwob/guess-number.html | 78 - .../html/miniwob/highlight-text-2.html | 83 - .../html/miniwob/highlight-text.html | 72 - .../html/miniwob/identify-shape.html | 96 - miniwob-sandbox/html/miniwob/logfile | 263 - .../html/miniwob/login-user-popup.html | 117 - miniwob-sandbox/html/miniwob/login-user.html | 52 - .../html/miniwob/moving-items.html | 139 - .../html/miniwob/multi-layouts.html | 182 - .../html/miniwob/multi-orderings.html | 75 - .../html/miniwob/navigate-tree.html | 105 - .../html/miniwob/number-checkboxes.html | 200 - miniwob-sandbox/html/miniwob/parser.py | 17 - .../html/miniwob/read-table-2.html | 149 - miniwob-sandbox/html/miniwob/read-table.html | 102 - .../html/miniwob/resize-textarea.html | 84 - miniwob-sandbox/html/miniwob/right-angle.html | 162 - .../html/miniwob/scroll-text-2.html | 69 - miniwob-sandbox/html/miniwob/scroll-text.html | 57 - .../html/miniwob/search-engine.html | 152 - miniwob-sandbox/html/miniwob/simon-says.html | 92 - .../html/miniwob/simple-algebra.html | 74 - .../html/miniwob/simple-arithmetic.html | 69 - .../html/miniwob/social-media-all.html | 172 - .../html/miniwob/social-media-some.html | 179 - .../html/miniwob/social-media.html | 175 - miniwob-sandbox/html/miniwob/terminal.html | 247 - miniwob-sandbox/html/miniwob/text-editor.html | 165 - .../html/miniwob/text-transform.html | 77 - miniwob-sandbox/html/miniwob/tic-tac-toe.html | 208 - .../html/miniwob/unicode-test.html | 74 - .../miniwob/use-autocomplete-nodelay.html | 80 - .../html/miniwob/use-autocomplete.html | 79 - .../html/miniwob/use-colorwheel-2.html | 64 - .../html/miniwob/use-colorwheel.html | 55 - .../html/miniwob/use-slider-2.html | 91 - miniwob-sandbox/html/miniwob/use-slider.html | 71 - miniwob-sandbox/html/miniwob/use-spinner.html | 56 - .../html/miniwob/visual-addition.html | 81 - miniwob-sandbox/record.py | 118 - .../tasks/tasks-from-paper-results.txt | 100 - miniwob-sandbox/tasks/tasks-from-paper.txt | 100 - miniwob-sandbox/tasks/tasks.json | 486 - miniwob-sandbox/tasks/tasks.txt | 80 - miniwob-sandbox/turk-api/.gitignore | 2 - .../turk-api/fix-email-nlp-demos.py | 93 - miniwob-sandbox/turk-api/parse-email-nlp.py | 123 - .../turk-api/parse-turk-results.py | 126 - miniwob-sandbox/turk-api/run.py | 766 -- miniwob-sandbox/turk-server/.gitignore | 2 - miniwob-sandbox/turk-server/launch | 3 - miniwob-sandbox/turk-server/log.py | 22 - miniwob-sandbox/turk-server/server.py | 68 - .../turk-server/static/core/core.css | 127 - .../turk-server/static/core/core.js | 632 - .../turk-server/static/core/d3.v3.min.js | 5 - .../core/jquery-ui/external/jquery/jquery.js | 11008 ---------------- .../images/ui-icons_444444_256x240.png | Bin 7006 -> 0 bytes .../images/ui-icons_555555_256x240.png | Bin 7074 -> 0 bytes .../images/ui-icons_777620_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_777777_256x240.png | Bin 7013 -> 0 bytes .../images/ui-icons_cc0000_256x240.png | Bin 4632 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6313 -> 0 bytes .../static/core/jquery-ui/jquery-ui.min.css | 7 - .../static/core/jquery-ui/jquery-ui.min.js | 13 - .../jquery-ui/jquery-ui.structure.min.css | 5 - .../core/jquery-ui/jquery-ui.theme.min.css | 5 - .../turk-server/static/core/jscolor.min.js | 10 - .../static/flight/Alaska-auto/images/aura.png | Bin 764 -> 0 bytes .../static/flight/Alaska-auto/images/cal3.png | Bin 414 -> 0 bytes .../flight/Alaska-auto/images/chkboxes3.png | Bin 540 -> 0 bytes .../flight/Alaska-auto/images/clear_text2.png | Bin 245 -> 0 bytes .../flight/Alaska-auto/images/collapse.png | Bin 277 -> 0 bytes .../flight/Alaska-auto/images/expand.png | Bin 277 -> 0 bytes .../Alaska-auto/images/flight_arrow.png | Bin 1032 -> 0 bytes .../static/flight/Alaska-auto/images/geo.png | Bin 408 -> 0 bytes .../static/flight/Alaska-auto/images/home.png | Bin 185 -> 0 bytes .../flight/Alaska-auto/images/info2.png | Bin 288 -> 0 bytes .../flight/Alaska-auto/images/leftright.png | Bin 389 -> 0 bytes .../flight/Alaska-auto/images/logo2.png | Bin 1367 -> 0 bytes .../flight/Alaska-auto/images/logos/AA.png | Bin 1627 -> 0 bytes .../flight/Alaska-auto/images/logos/AS.png | Bin 1146 -> 0 bytes .../flight/Alaska-auto/images/logos/DL.png | Bin 949 -> 0 bytes .../flight/Alaska-auto/images/logos/VX.png | Bin 4217 -> 0 bytes .../static/flight/Alaska-auto/index.html | 160 - .../mobileweb-v3-28-6227-21813.css | 1 - .../flight/Alaska-auto/scripts/datepickr.js | 1 - .../static/flight/Alaska-auto/scripts/main.js | 1 - .../flight/Alaska-auto/scripts/shopbook.js | 1 - .../circular/ASCircularWeb-Bold.woff | Bin 21864 -> 0 bytes .../circular/ASCircularWeb-Book.woff | Bin 21844 -> 0 bytes .../Alaska-auto/surrogate/airportLookup.js | 44 - .../Alaska-auto/surrogate/airports.json | 412 - .../static/flight/Alaska-auto/wrapper.html | 132 - .../static/flight/flight-common/inject.js | 368 - .../static/flight/flight-common/wrapper.css | 61 - .../static/flight/flight-common/wrapper.js | 140 - miniwob-sandbox/turk-server/task.py | 63 - miniwob-sandbox/turk-www-flight/core/core.css | 128 - miniwob-sandbox/turk-www-flight/core/core.js | 629 - .../turk-www-flight/core/d3.v3.min.js | 5 - .../core/jquery-ui/external/jquery/jquery.js | 11008 ---------------- .../images/ui-icons_444444_256x240.png | Bin 7006 -> 0 bytes .../images/ui-icons_555555_256x240.png | Bin 7074 -> 0 bytes .../images/ui-icons_777620_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_777777_256x240.png | Bin 7013 -> 0 bytes .../images/ui-icons_cc0000_256x240.png | Bin 4632 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6313 -> 0 bytes .../core/jquery-ui/jquery-ui.min.css | 7 - .../core/jquery-ui/jquery-ui.min.js | 13 - .../jquery-ui/jquery-ui.structure.min.css | 5 - .../core/jquery-ui/jquery-ui.theme.min.css | 5 - .../turk-www-flight/core/jscolor.min.js | 10 - .../flight/Alaska-auto/images/aura.png | Bin 764 -> 0 bytes .../flight/Alaska-auto/images/cal3.png | Bin 414 -> 0 bytes .../flight/Alaska-auto/images/chkboxes3.png | Bin 540 -> 0 bytes .../flight/Alaska-auto/images/clear_text2.png | Bin 245 -> 0 bytes .../flight/Alaska-auto/images/collapse.png | Bin 277 -> 0 bytes .../flight/Alaska-auto/images/expand.png | Bin 277 -> 0 bytes .../Alaska-auto/images/flight_arrow.png | Bin 1032 -> 0 bytes .../flight/Alaska-auto/images/geo.png | Bin 408 -> 0 bytes .../flight/Alaska-auto/images/home.png | Bin 185 -> 0 bytes .../flight/Alaska-auto/images/info2.png | Bin 288 -> 0 bytes .../flight/Alaska-auto/images/leftright.png | Bin 389 -> 0 bytes .../flight/Alaska-auto/images/logo2.png | Bin 1367 -> 0 bytes .../flight/Alaska-auto/images/logos/AA.png | Bin 1627 -> 0 bytes .../flight/Alaska-auto/images/logos/AS.png | Bin 1146 -> 0 bytes .../flight/Alaska-auto/images/logos/DL.png | Bin 949 -> 0 bytes .../flight/Alaska-auto/images/logos/VX.png | Bin 4217 -> 0 bytes .../flight/Alaska-auto/index.html | 160 - .../mobileweb-v3-28-6227-21813.css | 1 - .../flight/Alaska-auto/scripts/datepickr.js | 1 - .../flight/Alaska-auto/scripts/main.js | 1 - .../flight/Alaska-auto/scripts/shopbook.js | 1 - .../circular/ASCircularWeb-Bold.woff | Bin 21864 -> 0 bytes .../circular/ASCircularWeb-Book.woff | Bin 21844 -> 0 bytes .../Alaska-auto/surrogate/airportLookup.js | 44 - .../Alaska-auto/surrogate/airports.json | 412 - .../flight/Alaska-auto/wrapper.html | 132 - .../flight/flight-common/inject.js | 368 - .../flight/flight-common/wrapper.css | 61 - .../flight/flight-common/wrapper.js | 140 - miniwob-sandbox/turk-www/common/shapes.js | 235 - .../common/special/book-flight/domestic.js | 734 -- .../common/special/checkbox-numbers/ch_0.png | Bin 7177 -> 0 bytes .../common/special/checkbox-numbers/ch_1.png | Bin 7031 -> 0 bytes .../common/special/checkbox-numbers/ch_2.png | Bin 7065 -> 0 bytes .../common/special/checkbox-numbers/ch_3.png | Bin 7095 -> 0 bytes .../common/special/checkbox-numbers/ch_4.png | Bin 7019 -> 0 bytes .../common/special/checkbox-numbers/ch_5.png | Bin 7079 -> 0 bytes .../common/special/checkbox-numbers/ch_6.png | Bin 7079 -> 0 bytes .../common/special/checkbox-numbers/ch_7.png | Bin 7052 -> 0 bytes .../common/special/checkbox-numbers/ch_8.png | Bin 7047 -> 0 bytes .../common/special/checkbox-numbers/ch_9.png | Bin 7092 -> 0 bytes .../special/click-pie/raphael.icons.min.js | 4 - .../common/special/click-pie/raphael.min.js | 4 - .../common/special/click-pie/wheelnav.min.js | 2 - .../common/special/drag-cube/blank.png | Bin 52210 -> 0 bytes .../common/special/drag-cube/cube.css | 132 - .../turk-www/common/special/drag-cube/cube.js | 358 - .../special/email-inbox-nl/templates.js | 515 - .../common/special/email-inbox/delete.png | Bin 1713 -> 0 bytes .../special/email-inbox/email-inbox.css | 78 - .../common/special/email-inbox/forward.png | Bin 622 -> 0 bytes .../special/email-inbox/left-arrow-white.png | Bin 479 -> 0 bytes .../common/special/email-inbox/left-arrow.png | Bin 693 -> 0 bytes .../common/special/email-inbox/reply.png | Bin 1137 -> 0 bytes .../common/special/email-inbox/search.png | Bin 1183 -> 0 bytes .../common/special/email-inbox/send.png | Bin 772 -> 0 bytes .../special/email-inbox/star-clicked.png | Bin 1116 -> 0 bytes .../common/special/email-inbox/star.png | Bin 1760 -> 0 bytes .../navigate-tree/images/ajax-loader.gif | Bin 649 -> 0 bytes .../special/navigate-tree/images/file.gif | Bin 109 -> 0 bytes .../navigate-tree/images/folder-closed.gif | Bin 102 -> 0 bytes .../special/navigate-tree/images/folder.gif | Bin 106 -> 0 bytes .../special/navigate-tree/images/minus.gif | Bin 58 -> 0 bytes .../special/navigate-tree/images/plus.gif | Bin 61 -> 0 bytes .../images/treeview-black-line.gif | Bin 1010 -> 0 bytes .../navigate-tree/images/treeview-black.gif | Bin 381 -> 0 bytes .../images/treeview-default-line.gif | Bin 848 -> 0 bytes .../navigate-tree/images/treeview-default.gif | Bin 387 -> 0 bytes .../images/treeview-famfamfam-line.gif | Bin 37 -> 0 bytes .../images/treeview-famfamfam.gif | Bin 545 -> 0 bytes .../images/treeview-gray-line.gif | Bin 1010 -> 0 bytes .../navigate-tree/images/treeview-gray.gif | Bin 394 -> 0 bytes .../images/treeview-red-line.gif | Bin 1010 -> 0 bytes .../navigate-tree/images/treeview-red.gif | Bin 394 -> 0 bytes .../special/navigate-tree/jquery.treeview.css | 68 - .../navigate-tree/jquery.treeview.min.js | 15 - .../jquery.twbsPagination.min.js | 9 - .../special/social-media/like-hover.png | Bin 1424 -> 0 bytes .../common/special/social-media/like.png | Bin 1307 -> 0 bytes .../special/social-media/more-hover.png | Bin 695 -> 0 bytes .../common/special/social-media/more.png | Bin 850 -> 0 bytes .../special/social-media/reply-hover.png | Bin 1235 -> 0 bytes .../common/special/social-media/reply.png | Bin 1094 -> 0 bytes .../special/social-media/retweet-hover.png | Bin 991 -> 0 bytes .../common/special/social-media/retweet.png | Bin 1069 -> 0 bytes .../special/social-media/share-hover.png | Bin 1508 -> 0 bytes .../common/special/social-media/share.png | Bin 1475 -> 0 bytes .../common/special/text-editor/quill.min.js | 14 - .../common/special/text-editor/quill.snow.css | 881 -- .../turk-www/common/special/tic-tac-toe/o.png | Bin 2803 -> 0 bytes .../turk-www/common/special/tic-tac-toe/x.png | Bin 993 -> 0 bytes miniwob-sandbox/turk-www/common/ui_utils.js | 120 - miniwob-sandbox/turk-www/core/core.css | 117 - miniwob-sandbox/turk-www/core/core.js | 704 - miniwob-sandbox/turk-www/core/d3.v3.min.js | 5 - .../core/jquery-ui/external/jquery/jquery.js | 11008 ---------------- .../images/ui-icons_444444_256x240.png | Bin 7006 -> 0 bytes .../images/ui-icons_555555_256x240.png | Bin 7074 -> 0 bytes .../images/ui-icons_777620_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_777777_256x240.png | Bin 7013 -> 0 bytes .../images/ui-icons_cc0000_256x240.png | Bin 4632 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6313 -> 0 bytes .../turk-www/core/jquery-ui/jquery-ui.min.css | 7 - .../turk-www/core/jquery-ui/jquery-ui.min.js | 13 - .../jquery-ui/jquery-ui.structure.min.css | 5 - .../core/jquery-ui/jquery-ui.theme.min.css | 5 - miniwob-sandbox/turk-www/core/jscolor.min.js | 10 - .../turk-www/miniwob/bisect-angle.html | 159 - .../turk-www/miniwob/book-flight-nodelay.html | 316 - .../turk-www/miniwob/book-flight.html | 314 - .../turk-www/miniwob/chase-circle.html | 90 - .../turk-www/miniwob/choose-date-easy.html | 62 - .../turk-www/miniwob/choose-date-medium.html | 62 - .../turk-www/miniwob/choose-date-nodelay.html | 64 - .../turk-www/miniwob/choose-date.html | 62 - .../turk-www/miniwob/choose-list.html | 63 - .../turk-www/miniwob/circle-center.html | 100 - miniwob-sandbox/turk-www/miniwob/classes | 98 - .../miniwob/click-button-sequence.html | 57 - .../turk-www/miniwob/click-button.html | 74 - .../miniwob/click-checkboxes-large.html | 88 - .../miniwob/click-checkboxes-soft.html | 122 - .../miniwob/click-checkboxes-transfer.html | 85 - .../turk-www/miniwob/click-checkboxes.html | 76 - .../miniwob/click-collapsible-2-nodelay.html | 79 - .../turk-www/miniwob/click-collapsible-2.html | 79 - .../miniwob/click-collapsible-nodelay.html | 61 - .../turk-www/miniwob/click-collapsible.html | 61 - .../turk-www/miniwob/click-color.html | 93 - .../turk-www/miniwob/click-dialog-2.html | 85 - .../turk-www/miniwob/click-dialog.html | 62 - .../turk-www/miniwob/click-link.html | 77 - .../turk-www/miniwob/click-menu-2.html | 99 - .../turk-www/miniwob/click-menu.html | 83 - .../turk-www/miniwob/click-option.html | 65 - .../turk-www/miniwob/click-pie-nodelay.html | 93 - .../turk-www/miniwob/click-pie.html | 91 - .../turk-www/miniwob/click-scroll-list.html | 93 - .../turk-www/miniwob/click-shades.html | 114 - .../turk-www/miniwob/click-shape.html | 66 - .../turk-www/miniwob/click-tab-2-easy.html | 95 - .../turk-www/miniwob/click-tab-2-hard.html | 94 - .../turk-www/miniwob/click-tab-2-medium.html | 109 - .../turk-www/miniwob/click-tab-2.html | 97 - .../turk-www/miniwob/click-tab.html | 85 - .../turk-www/miniwob/click-test-2.html | 44 - .../turk-www/miniwob/click-test-transfer.html | 54 - .../turk-www/miniwob/click-test.html | 40 - .../turk-www/miniwob/click-widget.html | 76 - .../turk-www/miniwob/copy-paste-2.html | 100 - .../turk-www/miniwob/copy-paste.html | 81 - .../turk-www/miniwob/count-shape.html | 97 - .../turk-www/miniwob/count-sides.html | 91 - .../turk-www/miniwob/drag-box.html | 78 - .../turk-www/miniwob/drag-cube.html | 78 - .../turk-www/miniwob/drag-item.html | 76 - .../turk-www/miniwob/drag-items-grid.html | 89 - .../turk-www/miniwob/drag-items.html | 90 - .../turk-www/miniwob/drag-shapes.html | 149 - .../turk-www/miniwob/drag-sort-numbers.html | 78 - .../turk-www/miniwob/email-inbox-delete.html | 504 - .../miniwob/email-inbox-forward-nl-turk.html | 525 - .../miniwob/email-inbox-forward-nl.html | 562 - .../turk-www/miniwob/email-inbox-forward.html | 504 - .../miniwob/email-inbox-important.html | 504 - .../turk-www/miniwob/email-inbox-nl-turk.html | 551 - .../miniwob/email-inbox-noscroll.html | 504 - .../turk-www/miniwob/email-inbox-reply.html | 504 - .../miniwob/email-inbox-star-reply.html | 504 - .../turk-www/miniwob/email-inbox.html | 504 - .../turk-www/miniwob/enter-date.html | 57 - .../turk-www/miniwob/enter-password.html | 53 - .../turk-www/miniwob/enter-text-2.html | 78 - .../turk-www/miniwob/enter-text-dynamic.html | 57 - .../turk-www/miniwob/enter-text.html | 59 - .../turk-www/miniwob/enter-time.html | 56 - .../turk-www/miniwob/find-midpoint.html | 151 - .../turk-www/miniwob/find-word.html | 86 - .../turk-www/miniwob/focus-text-2.html | 60 - .../turk-www/miniwob/focus-text.html | 53 - .../turk-www/miniwob/grid-coordinate.html | 125 - .../turk-www/miniwob/guess-number.html | 78 - .../turk-www/miniwob/highlight-text-2.html | 83 - .../turk-www/miniwob/highlight-text.html | 72 - .../turk-www/miniwob/identify-shape.html | 96 - miniwob-sandbox/turk-www/miniwob/logfile | 263 - .../turk-www/miniwob/login-user-popup.html | 117 - .../turk-www/miniwob/login-user.html | 52 - .../turk-www/miniwob/moving-items.html | 139 - .../turk-www/miniwob/multi-layouts.html | 182 - .../turk-www/miniwob/multi-orderings.html | 75 - .../turk-www/miniwob/navigate-tree.html | 105 - .../turk-www/miniwob/number-checkboxes.html | 200 - miniwob-sandbox/turk-www/miniwob/parser.py | 17 - .../turk-www/miniwob/read-table-2.html | 149 - .../turk-www/miniwob/read-table.html | 102 - .../turk-www/miniwob/resize-textarea.html | 84 - .../turk-www/miniwob/right-angle.html | 162 - .../turk-www/miniwob/scroll-text-2.html | 69 - .../turk-www/miniwob/scroll-text.html | 57 - .../turk-www/miniwob/search-engine.html | 152 - .../turk-www/miniwob/simon-says.html | 92 - .../turk-www/miniwob/simple-algebra.html | 74 - .../turk-www/miniwob/simple-arithmetic.html | 69 - .../turk-www/miniwob/social-media-all.html | 172 - .../turk-www/miniwob/social-media-some.html | 179 - .../turk-www/miniwob/social-media.html | 175 - .../turk-www/miniwob/terminal.html | 247 - .../turk-www/miniwob/text-editor.html | 165 - .../turk-www/miniwob/text-transform.html | 77 - .../turk-www/miniwob/tic-tac-toe.html | 208 - .../turk-www/miniwob/unicode-test.html | 74 - .../miniwob/use-autocomplete-nodelay.html | 80 - .../turk-www/miniwob/use-autocomplete.html | 79 - .../turk-www/miniwob/use-colorwheel-2.html | 64 - .../turk-www/miniwob/use-colorwheel.html | 55 - .../turk-www/miniwob/use-slider-2.html | 91 - .../turk-www/miniwob/use-slider.html | 71 - .../turk-www/miniwob/use-spinner.html | 56 - .../turk-www/miniwob/visual-addition.html | 81 - miniwob-sandbox/turk-www/sync | 2 - miniwob-sandbox/viewer/main.js | 161 - miniwob-sandbox/viewer/style.css | 95 - miniwob-sandbox/viewer/viewer.html | 20 - 640 files changed, 1 insertion(+), 99193 deletions(-) create mode 120000 miniwob-sandbox delete mode 100644 miniwob-sandbox/.gitignore delete mode 100644 miniwob-sandbox/README.md delete mode 100755 miniwob-sandbox/bot/click-test-2-bot.py delete mode 100755 miniwob-sandbox/bot/parallel-bot.py delete mode 100644 miniwob-sandbox/docker/Dockerfile delete mode 100644 miniwob-sandbox/html/.gitignore delete mode 100644 miniwob-sandbox/html/common/shapes.js delete mode 100644 miniwob-sandbox/html/common/special/book-flight/domestic.js delete mode 100644 miniwob-sandbox/html/common/special/checkbox-numbers/ch_0.png delete mode 100644 miniwob-sandbox/html/common/special/checkbox-numbers/ch_1.png delete mode 100644 miniwob-sandbox/html/common/special/checkbox-numbers/ch_2.png delete mode 100644 miniwob-sandbox/html/common/special/checkbox-numbers/ch_3.png delete mode 100644 miniwob-sandbox/html/common/special/checkbox-numbers/ch_4.png delete mode 100644 miniwob-sandbox/html/common/special/checkbox-numbers/ch_5.png delete mode 100644 miniwob-sandbox/html/common/special/checkbox-numbers/ch_6.png delete mode 100644 miniwob-sandbox/html/common/special/checkbox-numbers/ch_7.png delete mode 100644 miniwob-sandbox/html/common/special/checkbox-numbers/ch_8.png delete mode 100644 miniwob-sandbox/html/common/special/checkbox-numbers/ch_9.png delete mode 100644 miniwob-sandbox/html/common/special/click-pie/raphael.icons.min.js delete mode 100644 miniwob-sandbox/html/common/special/click-pie/raphael.min.js delete mode 100644 miniwob-sandbox/html/common/special/click-pie/wheelnav.min.js delete mode 100644 miniwob-sandbox/html/common/special/drag-cube/blank.png delete mode 100644 miniwob-sandbox/html/common/special/drag-cube/cube.css delete mode 100644 miniwob-sandbox/html/common/special/drag-cube/cube.js delete mode 100644 miniwob-sandbox/html/common/special/email-inbox-nl/templates.js delete mode 100644 miniwob-sandbox/html/common/special/email-inbox/delete.png delete mode 100644 miniwob-sandbox/html/common/special/email-inbox/email-inbox.css delete mode 100644 miniwob-sandbox/html/common/special/email-inbox/forward.png delete mode 100644 miniwob-sandbox/html/common/special/email-inbox/left-arrow-white.png delete mode 100644 miniwob-sandbox/html/common/special/email-inbox/left-arrow.png delete mode 100644 miniwob-sandbox/html/common/special/email-inbox/reply.png delete mode 100644 miniwob-sandbox/html/common/special/email-inbox/search.png delete mode 100644 miniwob-sandbox/html/common/special/email-inbox/send.png delete mode 100644 miniwob-sandbox/html/common/special/email-inbox/star-clicked.png delete mode 100644 miniwob-sandbox/html/common/special/email-inbox/star.png delete mode 100644 miniwob-sandbox/html/common/special/navigate-tree/images/ajax-loader.gif delete mode 100644 miniwob-sandbox/html/common/special/navigate-tree/images/file.gif delete mode 100644 miniwob-sandbox/html/common/special/navigate-tree/images/folder-closed.gif delete mode 100644 miniwob-sandbox/html/common/special/navigate-tree/images/folder.gif delete mode 100644 miniwob-sandbox/html/common/special/navigate-tree/images/minus.gif delete mode 100644 miniwob-sandbox/html/common/special/navigate-tree/images/plus.gif delete mode 100644 miniwob-sandbox/html/common/special/navigate-tree/images/treeview-black-line.gif delete mode 100644 miniwob-sandbox/html/common/special/navigate-tree/images/treeview-black.gif delete mode 100644 miniwob-sandbox/html/common/special/navigate-tree/images/treeview-default-line.gif delete mode 100644 miniwob-sandbox/html/common/special/navigate-tree/images/treeview-default.gif delete mode 100644 miniwob-sandbox/html/common/special/navigate-tree/images/treeview-famfamfam-line.gif delete mode 100644 miniwob-sandbox/html/common/special/navigate-tree/images/treeview-famfamfam.gif delete mode 100644 miniwob-sandbox/html/common/special/navigate-tree/images/treeview-gray-line.gif delete mode 100644 miniwob-sandbox/html/common/special/navigate-tree/images/treeview-gray.gif delete mode 100644 miniwob-sandbox/html/common/special/navigate-tree/images/treeview-red-line.gif delete mode 100644 miniwob-sandbox/html/common/special/navigate-tree/images/treeview-red.gif delete mode 100644 miniwob-sandbox/html/common/special/navigate-tree/jquery.treeview.css delete mode 100644 miniwob-sandbox/html/common/special/navigate-tree/jquery.treeview.min.js delete mode 100644 miniwob-sandbox/html/common/special/search-engine/jquery.twbsPagination.min.js delete mode 100644 miniwob-sandbox/html/common/special/social-media/like-hover.png delete mode 100644 miniwob-sandbox/html/common/special/social-media/like.png delete mode 100644 miniwob-sandbox/html/common/special/social-media/more-hover.png delete mode 100644 miniwob-sandbox/html/common/special/social-media/more.png delete mode 100644 miniwob-sandbox/html/common/special/social-media/reply-hover.png delete mode 100644 miniwob-sandbox/html/common/special/social-media/reply.png delete mode 100644 miniwob-sandbox/html/common/special/social-media/retweet-hover.png delete mode 100644 miniwob-sandbox/html/common/special/social-media/retweet.png delete mode 100644 miniwob-sandbox/html/common/special/social-media/share-hover.png delete mode 100644 miniwob-sandbox/html/common/special/social-media/share.png delete mode 100644 miniwob-sandbox/html/common/special/text-editor/quill.min.js delete mode 100644 miniwob-sandbox/html/common/special/text-editor/quill.snow.css delete mode 100644 miniwob-sandbox/html/common/special/tic-tac-toe/o.png delete mode 100644 miniwob-sandbox/html/common/special/tic-tac-toe/x.png delete mode 100644 miniwob-sandbox/html/common/ui_utils.js delete mode 100644 miniwob-sandbox/html/core/core.css delete mode 100644 miniwob-sandbox/html/core/core.js delete mode 100644 miniwob-sandbox/html/core/d3.v3.min.js delete mode 100644 miniwob-sandbox/html/core/jquery-ui/external/jquery/jquery.js delete mode 100644 miniwob-sandbox/html/core/jquery-ui/images/ui-icons_444444_256x240.png delete mode 100644 miniwob-sandbox/html/core/jquery-ui/images/ui-icons_555555_256x240.png delete mode 100644 miniwob-sandbox/html/core/jquery-ui/images/ui-icons_777620_256x240.png delete mode 100644 miniwob-sandbox/html/core/jquery-ui/images/ui-icons_777777_256x240.png delete mode 100644 miniwob-sandbox/html/core/jquery-ui/images/ui-icons_cc0000_256x240.png delete mode 100644 miniwob-sandbox/html/core/jquery-ui/images/ui-icons_ffffff_256x240.png delete mode 100644 miniwob-sandbox/html/core/jquery-ui/jquery-ui.min.css delete mode 100644 miniwob-sandbox/html/core/jquery-ui/jquery-ui.min.js delete mode 100644 miniwob-sandbox/html/core/jquery-ui/jquery-ui.structure.min.css delete mode 100644 miniwob-sandbox/html/core/jquery-ui/jquery-ui.theme.min.css delete mode 100644 miniwob-sandbox/html/core/jscolor.min.js delete mode 100644 miniwob-sandbox/html/core/record.js delete mode 100644 miniwob-sandbox/html/flight/AA/apps/common/js/aacom.js delete mode 100644 miniwob-sandbox/html/flight/AA/apps/common/js/aacomDevice.js delete mode 100644 miniwob-sandbox/html/flight/AA/apps/common/js/airportcode.js delete mode 100644 miniwob-sandbox/html/flight/AA/apps/common/js/cookieconsent.js delete mode 100644 miniwob-sandbox/html/flight/AA/apps/common/js/jquery/aacom/plugins/aaAirportAutoComplete.js delete mode 100644 miniwob-sandbox/html/flight/AA/apps/common/js/jquery/aacom/plugins/aaCache.js delete mode 100644 miniwob-sandbox/html/flight/AA/apps/common/js/jquery/aacom/plugins/aaCookie.js delete mode 100644 miniwob-sandbox/html/flight/AA/apps/common/js/jquery/aacom/plugins/aaCountryLanSelect.js delete mode 100644 miniwob-sandbox/html/flight/AA/apps/common/js/jquery/aacom/plugins/aaDropdownPanel.js delete mode 100644 miniwob-sandbox/html/flight/AA/apps/common/js/jquery/aacom/plugins/aaFooterAds.js delete mode 100644 miniwob-sandbox/html/flight/AA/apps/common/js/jquery/aacom/plugins/aaTextBoxMessage.js delete mode 100644 miniwob-sandbox/html/flight/AA/apps/common/js/jquery/aacom/utilities/aaUtilities-2.1.js delete mode 100644 miniwob-sandbox/html/flight/AA/apps/common/js/jquery/aacom/utilities/aaUtils.js delete mode 100644 miniwob-sandbox/html/flight/AA/apps/common/js/wa.js delete mode 100644 miniwob-sandbox/html/flight/AA/content/common/css/v3/core.css delete mode 100644 miniwob-sandbox/html/flight/AA/content/common/css/v3/jquery-ui-1.10-aa.css delete mode 100644 miniwob-sandbox/html/flight/AA/content/common/css/v3/reservation/findFlights/mobile/findFlights.css delete mode 100644 miniwob-sandbox/html/flight/AA/content/common/css/v3/responsive.css delete mode 100644 miniwob-sandbox/html/flight/AA/content/fonts/american-v2/americansans-bold.woff delete mode 100644 miniwob-sandbox/html/flight/AA/content/fonts/american-v2/americansans-light.woff delete mode 100644 miniwob-sandbox/html/flight/AA/content/fonts/american-v2/americansans-medium.woff delete mode 100644 miniwob-sandbox/html/flight/AA/content/fonts/american-v2/americansans-regular.woff delete mode 100644 miniwob-sandbox/html/flight/AA/content/fonts/icons/american-icons-v4-4.woff delete mode 100644 miniwob-sandbox/html/flight/AA/content/images/chrome/icons/loading.gif delete mode 100644 miniwob-sandbox/html/flight/AA/content/images/chrome/rebrand/aa-flight-icon.png delete mode 100644 miniwob-sandbox/html/flight/AA/content/images/chrome/rebrand/aa-icons-flags-sprite.png delete mode 100644 miniwob-sandbox/html/flight/AA/content/images/chrome/rebrand/aa-logo.png delete mode 100644 miniwob-sandbox/html/flight/AA/content/images/chrome/rebrand/down-arrow.png delete mode 100644 miniwob-sandbox/html/flight/AA/content/images/chrome/rebrand/favicon.png delete mode 100644 miniwob-sandbox/html/flight/AA/content/images/chrome/rebrand/oneworld.png delete mode 100644 miniwob-sandbox/html/flight/AA/content/images/chrome/rebrand/shadow-down.png delete mode 100644 miniwob-sandbox/html/flight/AA/content/images/chrome/rebrand/shadow-vertical-150.png delete mode 100644 miniwob-sandbox/html/flight/AA/content/images/chrome/rebrand/shadow12-down.png delete mode 100644 miniwob-sandbox/html/flight/AA/content/images/chrome/rebrand/shadow12-up.png delete mode 100644 miniwob-sandbox/html/flight/AA/content/images/chrome/rebrand/shadow3-down.png delete mode 100644 miniwob-sandbox/html/flight/AA/content/images/graphics/icons/aa-jqueryUIicons-sprite.png delete mode 100644 miniwob-sandbox/html/flight/AA/dataset-AA.js delete mode 100644 miniwob-sandbox/html/flight/AA/index.html delete mode 100644 miniwob-sandbox/html/flight/AA/js/aa/common/aa-utility-menu.js delete mode 100644 miniwob-sandbox/html/flight/AA/js/aa/common/aacom-ui-1.0.0.js delete mode 100644 miniwob-sandbox/html/flight/AA/js/aa/common/core-2.0.0.js delete mode 100644 miniwob-sandbox/html/flight/AA/js/aa/modules/airportLookup.js delete mode 100644 miniwob-sandbox/html/flight/AA/js/aa/modules/ajax.js delete mode 100644 miniwob-sandbox/html/flight/AA/js/aa/modules/browserdetect.js delete mode 100644 miniwob-sandbox/html/flight/AA/js/aa/modules/commonsetup.js delete mode 100644 miniwob-sandbox/html/flight/AA/js/aa/modules/mobileDatePicker.js delete mode 100644 miniwob-sandbox/html/flight/AA/js/aa/modules/utilities.js delete mode 100644 miniwob-sandbox/html/flight/AA/js/aa/modules/widgets.js delete mode 100644 miniwob-sandbox/html/flight/AA/js/aa/plugins/noBounce.js delete mode 100644 miniwob-sandbox/html/flight/AA/js/aa/shopping/mobileSearchFlights.js delete mode 100644 miniwob-sandbox/html/flight/AA/js/libs/jquery/jquery-1.11.1.min.js delete mode 100644 miniwob-sandbox/html/flight/AA/js/libs/jquery/jquery-migrate-1.2.1.min.js delete mode 100644 miniwob-sandbox/html/flight/AA/js/libs/jquery/ui/1.10/i18n/jquery.ui.datepicker-en-aa.js delete mode 100644 miniwob-sandbox/html/flight/AA/js/libs/jquery/ui/1.10/jquery-ui.min.js delete mode 100644 miniwob-sandbox/html/flight/AA/js/libs/modernizr-2.8.1.js delete mode 100644 miniwob-sandbox/html/flight/AA/original.html delete mode 100644 miniwob-sandbox/html/flight/AA/surrogate/airportLookup.js delete mode 100644 miniwob-sandbox/html/flight/AA/surrogate/airports.json delete mode 100644 miniwob-sandbox/html/flight/AA/wrapper.html delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/images/aura.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/images/cal3.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/images/chkboxes3.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/images/clear_text2.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/images/collapse.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/images/expand.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/images/flight_arrow.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/images/geo.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/images/home.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/images/info2.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/images/leftright.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/images/logo2.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/images/logos/AA.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/images/logos/AS.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/images/logos/DL.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/images/logos/VX.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/index.html delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/mobileweb-v3-28-6227-21813.css delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/scripts/datepickr.js delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/scripts/main.js delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/scripts/shopbook.js delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/stylesheets/circular/ASCircularWeb-Bold.woff delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/stylesheets/circular/ASCircularWeb-Book.woff delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/surrogate/airportLookup.js delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/surrogate/airports.json delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto-medium/wrapper.html delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/images/aura.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/images/cal3.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/images/chkboxes3.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/images/clear_text2.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/images/collapse.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/images/expand.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/images/flight_arrow.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/images/geo.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/images/home.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/images/info2.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/images/leftright.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/images/logo2.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/images/logos/AA.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/images/logos/AS.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/images/logos/DL.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/images/logos/VX.png delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/index.html delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/mobileweb-v3-28-6227-21813.css delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/scripts/datepickr.js delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/scripts/main.js delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/scripts/shopbook.js delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/stylesheets/circular/ASCircularWeb-Bold.woff delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/stylesheets/circular/ASCircularWeb-Book.woff delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/surrogate/airportLookup.js delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/surrogate/airports.json delete mode 100644 miniwob-sandbox/html/flight/Alaska-auto/wrapper.html delete mode 100644 miniwob-sandbox/html/flight/Alaska/dataset-Alaska.js delete mode 100644 miniwob-sandbox/html/flight/Alaska/images/aura.png delete mode 100644 miniwob-sandbox/html/flight/Alaska/images/cal3.png delete mode 100644 miniwob-sandbox/html/flight/Alaska/images/chkboxes3.png delete mode 100644 miniwob-sandbox/html/flight/Alaska/images/clear_text2.png delete mode 100644 miniwob-sandbox/html/flight/Alaska/images/collapse.png delete mode 100644 miniwob-sandbox/html/flight/Alaska/images/expand.png delete mode 100644 miniwob-sandbox/html/flight/Alaska/images/flight_arrow.png delete mode 100644 miniwob-sandbox/html/flight/Alaska/images/geo.png delete mode 100644 miniwob-sandbox/html/flight/Alaska/images/home.png delete mode 100644 miniwob-sandbox/html/flight/Alaska/images/info2.png delete mode 100644 miniwob-sandbox/html/flight/Alaska/images/leftright.png delete mode 100644 miniwob-sandbox/html/flight/Alaska/images/logo2.png delete mode 100644 miniwob-sandbox/html/flight/Alaska/images/logos/AA.png delete mode 100644 miniwob-sandbox/html/flight/Alaska/images/logos/AS.png delete mode 100644 miniwob-sandbox/html/flight/Alaska/images/logos/DL.png delete mode 100644 miniwob-sandbox/html/flight/Alaska/images/logos/VX.png delete mode 100644 miniwob-sandbox/html/flight/Alaska/index.html delete mode 100644 miniwob-sandbox/html/flight/Alaska/mobileweb-v3-28-6227-21813.css delete mode 100644 miniwob-sandbox/html/flight/Alaska/original.html delete mode 100644 miniwob-sandbox/html/flight/Alaska/scripts/datepickr.js delete mode 100644 miniwob-sandbox/html/flight/Alaska/scripts/main.js delete mode 100644 miniwob-sandbox/html/flight/Alaska/scripts/shopbook.js delete mode 100644 miniwob-sandbox/html/flight/Alaska/stylesheets/circular/ASCircularWeb-Bold.woff delete mode 100644 miniwob-sandbox/html/flight/Alaska/stylesheets/circular/ASCircularWeb-Book.woff delete mode 100644 miniwob-sandbox/html/flight/Alaska/surrogate/airportLookup.js delete mode 100644 miniwob-sandbox/html/flight/Alaska/surrogate/airports.json delete mode 100644 miniwob-sandbox/html/flight/Alaska/wrapper.html delete mode 100644 miniwob-sandbox/html/flight/flight-common/inject.js delete mode 100644 miniwob-sandbox/html/flight/flight-common/wrapper.css delete mode 100644 miniwob-sandbox/html/flight/flight-common/wrapper.js delete mode 100755 miniwob-sandbox/html/http-serve delete mode 100644 miniwob-sandbox/html/miniwob/bisect-angle.html delete mode 100644 miniwob-sandbox/html/miniwob/book-flight-nodelay.html delete mode 100644 miniwob-sandbox/html/miniwob/book-flight.html delete mode 100644 miniwob-sandbox/html/miniwob/chase-circle.html delete mode 100644 miniwob-sandbox/html/miniwob/choose-date-easy.html delete mode 100644 miniwob-sandbox/html/miniwob/choose-date-medium.html delete mode 100644 miniwob-sandbox/html/miniwob/choose-date-nodelay.html delete mode 100644 miniwob-sandbox/html/miniwob/choose-date.html delete mode 100644 miniwob-sandbox/html/miniwob/choose-list.html delete mode 100644 miniwob-sandbox/html/miniwob/circle-center.html delete mode 100644 miniwob-sandbox/html/miniwob/classes delete mode 100644 miniwob-sandbox/html/miniwob/click-button-sequence.html delete mode 100644 miniwob-sandbox/html/miniwob/click-button.html delete mode 100644 miniwob-sandbox/html/miniwob/click-checkboxes-large.html delete mode 100644 miniwob-sandbox/html/miniwob/click-checkboxes-soft.html delete mode 100644 miniwob-sandbox/html/miniwob/click-checkboxes-transfer.html delete mode 100644 miniwob-sandbox/html/miniwob/click-checkboxes.html delete mode 100644 miniwob-sandbox/html/miniwob/click-collapsible-2-nodelay.html delete mode 100644 miniwob-sandbox/html/miniwob/click-collapsible-2.html delete mode 100644 miniwob-sandbox/html/miniwob/click-collapsible-nodelay.html delete mode 100644 miniwob-sandbox/html/miniwob/click-collapsible.html delete mode 100644 miniwob-sandbox/html/miniwob/click-color.html delete mode 100644 miniwob-sandbox/html/miniwob/click-dialog-2.html delete mode 100644 miniwob-sandbox/html/miniwob/click-dialog.html delete mode 100644 miniwob-sandbox/html/miniwob/click-link.html delete mode 100644 miniwob-sandbox/html/miniwob/click-menu-2.html delete mode 100644 miniwob-sandbox/html/miniwob/click-menu.html delete mode 100644 miniwob-sandbox/html/miniwob/click-option.html delete mode 100644 miniwob-sandbox/html/miniwob/click-pie-nodelay.html delete mode 100644 miniwob-sandbox/html/miniwob/click-pie.html delete mode 100644 miniwob-sandbox/html/miniwob/click-scroll-list.html delete mode 100644 miniwob-sandbox/html/miniwob/click-shades.html delete mode 100644 miniwob-sandbox/html/miniwob/click-shape.html delete mode 100644 miniwob-sandbox/html/miniwob/click-tab-2-easy.html delete mode 100644 miniwob-sandbox/html/miniwob/click-tab-2-hard.html delete mode 100644 miniwob-sandbox/html/miniwob/click-tab-2-medium.html delete mode 100644 miniwob-sandbox/html/miniwob/click-tab-2.html delete mode 100644 miniwob-sandbox/html/miniwob/click-tab.html delete mode 100644 miniwob-sandbox/html/miniwob/click-test-2.html delete mode 100644 miniwob-sandbox/html/miniwob/click-test-transfer.html delete mode 100644 miniwob-sandbox/html/miniwob/click-test.html delete mode 100644 miniwob-sandbox/html/miniwob/click-widget.html delete mode 100644 miniwob-sandbox/html/miniwob/copy-paste-2.html delete mode 100644 miniwob-sandbox/html/miniwob/copy-paste.html delete mode 100644 miniwob-sandbox/html/miniwob/count-shape.html delete mode 100644 miniwob-sandbox/html/miniwob/count-sides.html delete mode 100644 miniwob-sandbox/html/miniwob/drag-box.html delete mode 100644 miniwob-sandbox/html/miniwob/drag-cube.html delete mode 100644 miniwob-sandbox/html/miniwob/drag-item.html delete mode 100644 miniwob-sandbox/html/miniwob/drag-items-grid.html delete mode 100644 miniwob-sandbox/html/miniwob/drag-items.html delete mode 100644 miniwob-sandbox/html/miniwob/drag-shapes.html delete mode 100644 miniwob-sandbox/html/miniwob/drag-sort-numbers.html delete mode 100644 miniwob-sandbox/html/miniwob/email-inbox-delete.html delete mode 100644 miniwob-sandbox/html/miniwob/email-inbox-forward-nl-turk.html delete mode 100644 miniwob-sandbox/html/miniwob/email-inbox-forward-nl.html delete mode 100644 miniwob-sandbox/html/miniwob/email-inbox-forward.html delete mode 100644 miniwob-sandbox/html/miniwob/email-inbox-important.html delete mode 100644 miniwob-sandbox/html/miniwob/email-inbox-nl-turk.html delete mode 100644 miniwob-sandbox/html/miniwob/email-inbox-noscroll.html delete mode 100644 miniwob-sandbox/html/miniwob/email-inbox-reply.html delete mode 100644 miniwob-sandbox/html/miniwob/email-inbox-star-reply.html delete mode 100644 miniwob-sandbox/html/miniwob/email-inbox.html delete mode 100644 miniwob-sandbox/html/miniwob/enter-date.html delete mode 100644 miniwob-sandbox/html/miniwob/enter-password.html delete mode 100644 miniwob-sandbox/html/miniwob/enter-text-2.html delete mode 100644 miniwob-sandbox/html/miniwob/enter-text-dynamic.html delete mode 100644 miniwob-sandbox/html/miniwob/enter-text.html delete mode 100644 miniwob-sandbox/html/miniwob/enter-time.html delete mode 100644 miniwob-sandbox/html/miniwob/find-midpoint.html delete mode 100644 miniwob-sandbox/html/miniwob/find-word.html delete mode 100644 miniwob-sandbox/html/miniwob/focus-text-2.html delete mode 100644 miniwob-sandbox/html/miniwob/focus-text.html delete mode 100644 miniwob-sandbox/html/miniwob/grid-coordinate.html delete mode 100644 miniwob-sandbox/html/miniwob/guess-number.html delete mode 100644 miniwob-sandbox/html/miniwob/highlight-text-2.html delete mode 100644 miniwob-sandbox/html/miniwob/highlight-text.html delete mode 100644 miniwob-sandbox/html/miniwob/identify-shape.html delete mode 100644 miniwob-sandbox/html/miniwob/logfile delete mode 100644 miniwob-sandbox/html/miniwob/login-user-popup.html delete mode 100644 miniwob-sandbox/html/miniwob/login-user.html delete mode 100644 miniwob-sandbox/html/miniwob/moving-items.html delete mode 100644 miniwob-sandbox/html/miniwob/multi-layouts.html delete mode 100644 miniwob-sandbox/html/miniwob/multi-orderings.html delete mode 100644 miniwob-sandbox/html/miniwob/navigate-tree.html delete mode 100644 miniwob-sandbox/html/miniwob/number-checkboxes.html delete mode 100644 miniwob-sandbox/html/miniwob/parser.py delete mode 100644 miniwob-sandbox/html/miniwob/read-table-2.html delete mode 100644 miniwob-sandbox/html/miniwob/read-table.html delete mode 100644 miniwob-sandbox/html/miniwob/resize-textarea.html delete mode 100644 miniwob-sandbox/html/miniwob/right-angle.html delete mode 100644 miniwob-sandbox/html/miniwob/scroll-text-2.html delete mode 100644 miniwob-sandbox/html/miniwob/scroll-text.html delete mode 100644 miniwob-sandbox/html/miniwob/search-engine.html delete mode 100644 miniwob-sandbox/html/miniwob/simon-says.html delete mode 100644 miniwob-sandbox/html/miniwob/simple-algebra.html delete mode 100644 miniwob-sandbox/html/miniwob/simple-arithmetic.html delete mode 100644 miniwob-sandbox/html/miniwob/social-media-all.html delete mode 100644 miniwob-sandbox/html/miniwob/social-media-some.html delete mode 100644 miniwob-sandbox/html/miniwob/social-media.html delete mode 100644 miniwob-sandbox/html/miniwob/terminal.html delete mode 100644 miniwob-sandbox/html/miniwob/text-editor.html delete mode 100644 miniwob-sandbox/html/miniwob/text-transform.html delete mode 100644 miniwob-sandbox/html/miniwob/tic-tac-toe.html delete mode 100644 miniwob-sandbox/html/miniwob/unicode-test.html delete mode 100644 miniwob-sandbox/html/miniwob/use-autocomplete-nodelay.html delete mode 100644 miniwob-sandbox/html/miniwob/use-autocomplete.html delete mode 100644 miniwob-sandbox/html/miniwob/use-colorwheel-2.html delete mode 100644 miniwob-sandbox/html/miniwob/use-colorwheel.html delete mode 100644 miniwob-sandbox/html/miniwob/use-slider-2.html delete mode 100644 miniwob-sandbox/html/miniwob/use-slider.html delete mode 100644 miniwob-sandbox/html/miniwob/use-spinner.html delete mode 100644 miniwob-sandbox/html/miniwob/visual-addition.html delete mode 100755 miniwob-sandbox/record.py delete mode 100644 miniwob-sandbox/tasks/tasks-from-paper-results.txt delete mode 100644 miniwob-sandbox/tasks/tasks-from-paper.txt delete mode 100644 miniwob-sandbox/tasks/tasks.json delete mode 100644 miniwob-sandbox/tasks/tasks.txt delete mode 100644 miniwob-sandbox/turk-api/.gitignore delete mode 100755 miniwob-sandbox/turk-api/fix-email-nlp-demos.py delete mode 100755 miniwob-sandbox/turk-api/parse-email-nlp.py delete mode 100755 miniwob-sandbox/turk-api/parse-turk-results.py delete mode 100755 miniwob-sandbox/turk-api/run.py delete mode 100644 miniwob-sandbox/turk-server/.gitignore delete mode 100755 miniwob-sandbox/turk-server/launch delete mode 100644 miniwob-sandbox/turk-server/log.py delete mode 100644 miniwob-sandbox/turk-server/server.py delete mode 100644 miniwob-sandbox/turk-server/static/core/core.css delete mode 100644 miniwob-sandbox/turk-server/static/core/core.js delete mode 100644 miniwob-sandbox/turk-server/static/core/d3.v3.min.js delete mode 100644 miniwob-sandbox/turk-server/static/core/jquery-ui/external/jquery/jquery.js delete mode 100644 miniwob-sandbox/turk-server/static/core/jquery-ui/images/ui-icons_444444_256x240.png delete mode 100644 miniwob-sandbox/turk-server/static/core/jquery-ui/images/ui-icons_555555_256x240.png delete mode 100644 miniwob-sandbox/turk-server/static/core/jquery-ui/images/ui-icons_777620_256x240.png delete mode 100644 miniwob-sandbox/turk-server/static/core/jquery-ui/images/ui-icons_777777_256x240.png delete mode 100644 miniwob-sandbox/turk-server/static/core/jquery-ui/images/ui-icons_cc0000_256x240.png delete mode 100644 miniwob-sandbox/turk-server/static/core/jquery-ui/images/ui-icons_ffffff_256x240.png delete mode 100644 miniwob-sandbox/turk-server/static/core/jquery-ui/jquery-ui.min.css delete mode 100644 miniwob-sandbox/turk-server/static/core/jquery-ui/jquery-ui.min.js delete mode 100644 miniwob-sandbox/turk-server/static/core/jquery-ui/jquery-ui.structure.min.css delete mode 100644 miniwob-sandbox/turk-server/static/core/jquery-ui/jquery-ui.theme.min.css delete mode 100644 miniwob-sandbox/turk-server/static/core/jscolor.min.js delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/images/aura.png delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/images/cal3.png delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/images/chkboxes3.png delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/images/clear_text2.png delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/images/collapse.png delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/images/expand.png delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/images/flight_arrow.png delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/images/geo.png delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/images/home.png delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/images/info2.png delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/images/leftright.png delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/images/logo2.png delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/images/logos/AA.png delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/images/logos/AS.png delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/images/logos/DL.png delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/images/logos/VX.png delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/index.html delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/mobileweb-v3-28-6227-21813.css delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/scripts/datepickr.js delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/scripts/main.js delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/scripts/shopbook.js delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/stylesheets/circular/ASCircularWeb-Bold.woff delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/stylesheets/circular/ASCircularWeb-Book.woff delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/surrogate/airportLookup.js delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/surrogate/airports.json delete mode 100644 miniwob-sandbox/turk-server/static/flight/Alaska-auto/wrapper.html delete mode 100644 miniwob-sandbox/turk-server/static/flight/flight-common/inject.js delete mode 100644 miniwob-sandbox/turk-server/static/flight/flight-common/wrapper.css delete mode 100644 miniwob-sandbox/turk-server/static/flight/flight-common/wrapper.js delete mode 100755 miniwob-sandbox/turk-server/task.py delete mode 100644 miniwob-sandbox/turk-www-flight/core/core.css delete mode 100644 miniwob-sandbox/turk-www-flight/core/core.js delete mode 100644 miniwob-sandbox/turk-www-flight/core/d3.v3.min.js delete mode 100644 miniwob-sandbox/turk-www-flight/core/jquery-ui/external/jquery/jquery.js delete mode 100644 miniwob-sandbox/turk-www-flight/core/jquery-ui/images/ui-icons_444444_256x240.png delete mode 100644 miniwob-sandbox/turk-www-flight/core/jquery-ui/images/ui-icons_555555_256x240.png delete mode 100644 miniwob-sandbox/turk-www-flight/core/jquery-ui/images/ui-icons_777620_256x240.png delete mode 100644 miniwob-sandbox/turk-www-flight/core/jquery-ui/images/ui-icons_777777_256x240.png delete mode 100644 miniwob-sandbox/turk-www-flight/core/jquery-ui/images/ui-icons_cc0000_256x240.png delete mode 100644 miniwob-sandbox/turk-www-flight/core/jquery-ui/images/ui-icons_ffffff_256x240.png delete mode 100644 miniwob-sandbox/turk-www-flight/core/jquery-ui/jquery-ui.min.css delete mode 100644 miniwob-sandbox/turk-www-flight/core/jquery-ui/jquery-ui.min.js delete mode 100644 miniwob-sandbox/turk-www-flight/core/jquery-ui/jquery-ui.structure.min.css delete mode 100644 miniwob-sandbox/turk-www-flight/core/jquery-ui/jquery-ui.theme.min.css delete mode 100644 miniwob-sandbox/turk-www-flight/core/jscolor.min.js delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/images/aura.png delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/images/cal3.png delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/images/chkboxes3.png delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/images/clear_text2.png delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/images/collapse.png delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/images/expand.png delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/images/flight_arrow.png delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/images/geo.png delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/images/home.png delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/images/info2.png delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/images/leftright.png delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/images/logo2.png delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/images/logos/AA.png delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/images/logos/AS.png delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/images/logos/DL.png delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/images/logos/VX.png delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/index.html delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/mobileweb-v3-28-6227-21813.css delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/scripts/datepickr.js delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/scripts/main.js delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/scripts/shopbook.js delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/stylesheets/circular/ASCircularWeb-Bold.woff delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/stylesheets/circular/ASCircularWeb-Book.woff delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/surrogate/airportLookup.js delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/surrogate/airports.json delete mode 100644 miniwob-sandbox/turk-www-flight/flight/Alaska-auto/wrapper.html delete mode 100644 miniwob-sandbox/turk-www-flight/flight/flight-common/inject.js delete mode 100644 miniwob-sandbox/turk-www-flight/flight/flight-common/wrapper.css delete mode 100644 miniwob-sandbox/turk-www-flight/flight/flight-common/wrapper.js delete mode 100644 miniwob-sandbox/turk-www/common/shapes.js delete mode 100644 miniwob-sandbox/turk-www/common/special/book-flight/domestic.js delete mode 100644 miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_0.png delete mode 100644 miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_1.png delete mode 100644 miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_2.png delete mode 100644 miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_3.png delete mode 100644 miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_4.png delete mode 100644 miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_5.png delete mode 100644 miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_6.png delete mode 100644 miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_7.png delete mode 100644 miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_8.png delete mode 100644 miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_9.png delete mode 100644 miniwob-sandbox/turk-www/common/special/click-pie/raphael.icons.min.js delete mode 100644 miniwob-sandbox/turk-www/common/special/click-pie/raphael.min.js delete mode 100644 miniwob-sandbox/turk-www/common/special/click-pie/wheelnav.min.js delete mode 100644 miniwob-sandbox/turk-www/common/special/drag-cube/blank.png delete mode 100644 miniwob-sandbox/turk-www/common/special/drag-cube/cube.css delete mode 100644 miniwob-sandbox/turk-www/common/special/drag-cube/cube.js delete mode 100644 miniwob-sandbox/turk-www/common/special/email-inbox-nl/templates.js delete mode 100644 miniwob-sandbox/turk-www/common/special/email-inbox/delete.png delete mode 100644 miniwob-sandbox/turk-www/common/special/email-inbox/email-inbox.css delete mode 100644 miniwob-sandbox/turk-www/common/special/email-inbox/forward.png delete mode 100644 miniwob-sandbox/turk-www/common/special/email-inbox/left-arrow-white.png delete mode 100644 miniwob-sandbox/turk-www/common/special/email-inbox/left-arrow.png delete mode 100644 miniwob-sandbox/turk-www/common/special/email-inbox/reply.png delete mode 100644 miniwob-sandbox/turk-www/common/special/email-inbox/search.png delete mode 100644 miniwob-sandbox/turk-www/common/special/email-inbox/send.png delete mode 100644 miniwob-sandbox/turk-www/common/special/email-inbox/star-clicked.png delete mode 100644 miniwob-sandbox/turk-www/common/special/email-inbox/star.png delete mode 100644 miniwob-sandbox/turk-www/common/special/navigate-tree/images/ajax-loader.gif delete mode 100644 miniwob-sandbox/turk-www/common/special/navigate-tree/images/file.gif delete mode 100644 miniwob-sandbox/turk-www/common/special/navigate-tree/images/folder-closed.gif delete mode 100644 miniwob-sandbox/turk-www/common/special/navigate-tree/images/folder.gif delete mode 100644 miniwob-sandbox/turk-www/common/special/navigate-tree/images/minus.gif delete mode 100644 miniwob-sandbox/turk-www/common/special/navigate-tree/images/plus.gif delete mode 100644 miniwob-sandbox/turk-www/common/special/navigate-tree/images/treeview-black-line.gif delete mode 100644 miniwob-sandbox/turk-www/common/special/navigate-tree/images/treeview-black.gif delete mode 100644 miniwob-sandbox/turk-www/common/special/navigate-tree/images/treeview-default-line.gif delete mode 100644 miniwob-sandbox/turk-www/common/special/navigate-tree/images/treeview-default.gif delete mode 100644 miniwob-sandbox/turk-www/common/special/navigate-tree/images/treeview-famfamfam-line.gif delete mode 100644 miniwob-sandbox/turk-www/common/special/navigate-tree/images/treeview-famfamfam.gif delete mode 100644 miniwob-sandbox/turk-www/common/special/navigate-tree/images/treeview-gray-line.gif delete mode 100644 miniwob-sandbox/turk-www/common/special/navigate-tree/images/treeview-gray.gif delete mode 100644 miniwob-sandbox/turk-www/common/special/navigate-tree/images/treeview-red-line.gif delete mode 100644 miniwob-sandbox/turk-www/common/special/navigate-tree/images/treeview-red.gif delete mode 100644 miniwob-sandbox/turk-www/common/special/navigate-tree/jquery.treeview.css delete mode 100644 miniwob-sandbox/turk-www/common/special/navigate-tree/jquery.treeview.min.js delete mode 100644 miniwob-sandbox/turk-www/common/special/search-engine/jquery.twbsPagination.min.js delete mode 100644 miniwob-sandbox/turk-www/common/special/social-media/like-hover.png delete mode 100644 miniwob-sandbox/turk-www/common/special/social-media/like.png delete mode 100644 miniwob-sandbox/turk-www/common/special/social-media/more-hover.png delete mode 100644 miniwob-sandbox/turk-www/common/special/social-media/more.png delete mode 100644 miniwob-sandbox/turk-www/common/special/social-media/reply-hover.png delete mode 100644 miniwob-sandbox/turk-www/common/special/social-media/reply.png delete mode 100644 miniwob-sandbox/turk-www/common/special/social-media/retweet-hover.png delete mode 100644 miniwob-sandbox/turk-www/common/special/social-media/retweet.png delete mode 100644 miniwob-sandbox/turk-www/common/special/social-media/share-hover.png delete mode 100644 miniwob-sandbox/turk-www/common/special/social-media/share.png delete mode 100644 miniwob-sandbox/turk-www/common/special/text-editor/quill.min.js delete mode 100644 miniwob-sandbox/turk-www/common/special/text-editor/quill.snow.css delete mode 100644 miniwob-sandbox/turk-www/common/special/tic-tac-toe/o.png delete mode 100644 miniwob-sandbox/turk-www/common/special/tic-tac-toe/x.png delete mode 100644 miniwob-sandbox/turk-www/common/ui_utils.js delete mode 100644 miniwob-sandbox/turk-www/core/core.css delete mode 100644 miniwob-sandbox/turk-www/core/core.js delete mode 100644 miniwob-sandbox/turk-www/core/d3.v3.min.js delete mode 100644 miniwob-sandbox/turk-www/core/jquery-ui/external/jquery/jquery.js delete mode 100644 miniwob-sandbox/turk-www/core/jquery-ui/images/ui-icons_444444_256x240.png delete mode 100644 miniwob-sandbox/turk-www/core/jquery-ui/images/ui-icons_555555_256x240.png delete mode 100644 miniwob-sandbox/turk-www/core/jquery-ui/images/ui-icons_777620_256x240.png delete mode 100644 miniwob-sandbox/turk-www/core/jquery-ui/images/ui-icons_777777_256x240.png delete mode 100644 miniwob-sandbox/turk-www/core/jquery-ui/images/ui-icons_cc0000_256x240.png delete mode 100644 miniwob-sandbox/turk-www/core/jquery-ui/images/ui-icons_ffffff_256x240.png delete mode 100644 miniwob-sandbox/turk-www/core/jquery-ui/jquery-ui.min.css delete mode 100644 miniwob-sandbox/turk-www/core/jquery-ui/jquery-ui.min.js delete mode 100644 miniwob-sandbox/turk-www/core/jquery-ui/jquery-ui.structure.min.css delete mode 100644 miniwob-sandbox/turk-www/core/jquery-ui/jquery-ui.theme.min.css delete mode 100644 miniwob-sandbox/turk-www/core/jscolor.min.js delete mode 100644 miniwob-sandbox/turk-www/miniwob/bisect-angle.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/book-flight-nodelay.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/book-flight.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/chase-circle.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/choose-date-easy.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/choose-date-medium.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/choose-date-nodelay.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/choose-date.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/choose-list.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/circle-center.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/classes delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-button-sequence.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-button.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-checkboxes-large.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-checkboxes-soft.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-checkboxes-transfer.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-checkboxes.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-collapsible-2-nodelay.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-collapsible-2.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-collapsible-nodelay.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-collapsible.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-color.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-dialog-2.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-dialog.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-link.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-menu-2.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-menu.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-option.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-pie-nodelay.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-pie.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-scroll-list.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-shades.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-shape.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-tab-2-easy.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-tab-2-hard.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-tab-2-medium.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-tab-2.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-tab.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-test-2.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-test-transfer.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-test.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/click-widget.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/copy-paste-2.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/copy-paste.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/count-shape.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/count-sides.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/drag-box.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/drag-cube.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/drag-item.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/drag-items-grid.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/drag-items.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/drag-shapes.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/drag-sort-numbers.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/email-inbox-delete.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/email-inbox-forward-nl-turk.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/email-inbox-forward-nl.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/email-inbox-forward.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/email-inbox-important.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/email-inbox-nl-turk.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/email-inbox-noscroll.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/email-inbox-reply.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/email-inbox-star-reply.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/email-inbox.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/enter-date.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/enter-password.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/enter-text-2.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/enter-text-dynamic.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/enter-text.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/enter-time.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/find-midpoint.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/find-word.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/focus-text-2.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/focus-text.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/grid-coordinate.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/guess-number.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/highlight-text-2.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/highlight-text.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/identify-shape.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/logfile delete mode 100644 miniwob-sandbox/turk-www/miniwob/login-user-popup.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/login-user.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/moving-items.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/multi-layouts.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/multi-orderings.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/navigate-tree.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/number-checkboxes.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/parser.py delete mode 100644 miniwob-sandbox/turk-www/miniwob/read-table-2.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/read-table.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/resize-textarea.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/right-angle.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/scroll-text-2.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/scroll-text.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/search-engine.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/simon-says.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/simple-algebra.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/simple-arithmetic.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/social-media-all.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/social-media-some.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/social-media.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/terminal.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/text-editor.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/text-transform.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/tic-tac-toe.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/unicode-test.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/use-autocomplete-nodelay.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/use-autocomplete.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/use-colorwheel-2.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/use-colorwheel.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/use-slider-2.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/use-slider.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/use-spinner.html delete mode 100644 miniwob-sandbox/turk-www/miniwob/visual-addition.html delete mode 100755 miniwob-sandbox/turk-www/sync delete mode 100644 miniwob-sandbox/viewer/main.js delete mode 100644 miniwob-sandbox/viewer/style.css delete mode 100644 miniwob-sandbox/viewer/viewer.html diff --git a/miniwob-sandbox b/miniwob-sandbox new file mode 120000 index 0000000..b1cc093 --- /dev/null +++ b/miniwob-sandbox @@ -0,0 +1 @@ +third-party/miniwob-sandbox/ \ No newline at end of file diff --git a/miniwob-sandbox/.gitignore b/miniwob-sandbox/.gitignore deleted file mode 100644 index 8e9972c..0000000 --- a/miniwob-sandbox/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -*.swp -*~ -*.bak -*.pyc -/out diff --git a/miniwob-sandbox/README.md b/miniwob-sandbox/README.md deleted file mode 100644 index d95a5c4..0000000 --- a/miniwob-sandbox/README.md +++ /dev/null @@ -1,115 +0,0 @@ -# MiniWoB Sandbox - -## Viewing the Tasks - -There are 2 ways to access the tasks: - -* **Use the `file://` protocol (Recommended):** open `miniwob-sandbox/html/miniwob/` in the browser. - * The URL should now be something like - - file:///path/to/web-agents/miniwob-sandbox/html/miniwob/ - - * This should show the directory listing of all task HTML files. - -* **Run a simple server:** go to `miniwob-sandbox/html/` and run `./http-server`. - * The tasks should now be accessible at `http://localhost:8080/miniwob/` - * The port can be specified like this: `./http-server -p 8765` - -## Recording Demonstrations - -1. Start the recording server: - - # Create an output directory - mkdir out/ - ./record.py out/ - -2. Append `?record=true` to the URL of the task you want to record. For example, for the `click-test` task, go to - - file:///path/to/web-agents/miniwob-sandbox/html/miniwob/click-test.html?record=true - -3. To view the results, open `viewer/viewer.html` while the recording server is running. The URL should be like - - file:///path/to/web-agents/miniwob-sandbox/html/viewer/viewer.html - ---- - -# JavaScript Utilities - -This version of MiniWoB incorporates a few additional JavaScript utilities. - -## `Math.seedrandom([seed])` - -Set the global random seed of the environment. The optional argument `seed` can be an object. - -## `getDOMInfo()` - -Returns a nested object containing information about the current DOM states. -The returned object corresponds to the `` element. Its children can be accessed under the `children` field. - -In Python, the `step` method in `MiniWoBInstance` calls this function to build the `MiniWoBState`. - -### Output Format - -Each visible DOM element is converted into an object with the following fields: - -* `tag` (string): Tag name - * For normal elements, this is the uppercased tag name (e.g., `"DIV"`) - * For `` elements, the input type is appended (e.g., `"INPUT_text"`) - * Each non-empty text node is converted into pseudo-elements with tag `"t"`, - where each pseudo-element represents one line of text. - However, if the text node is the only child of the parent. The text pseudo-element is not created, - and its text is assigned to the parent element instead. -* `ref` (number): Reference number - * Within each episode, the `ref` number of the same object stays the same - * For the same random seed, the `ref` number of the same object should be the same - * `ref` for normal elements start from 1, while `ref` for text psuedo-elements counts down from -1 -* `children` (list): Recursive list of objects corresponding to the children -* `left`, `top`, `width`, `height` (number): Geometry of the element -* `id` (string): Element's `id` -* `classes` (string): Element's `class`es (space-separated) -* `bgColor`, `fgColor` (string): Background and foreground colors -* `focused` (boolean): Indicates if the element is being focused on -* `tampered` (boolean): Indicates if the element is tampered (clicked, focused, typed, etc.) -* `value`: For ``, this contains the input value - * For `checkbox` and `radio` types, this contains a boolean whether the input is selected - * For other input types, this contains a text value -* `text` (string): For child nodes and text pseudo-elements, this contains the text content - -## `flattenDOMInfo(rootDomInfo)` - -Can be called on the result of `getDOMInfo()` to get a flattened representation. -Useful for debugging in Chrome console. - -## `elementClick(ref)` - -Click on an element regardless of its location and visibility. -The argument `ref` is the ref value generated by the previous call to `getDOMInfo()`. - -## `visualizeAttention(values)` - -Visualize the attention weights on the screen. -The argument `values` is a 2D array of shape 20 × 20. - ---- - -# Demonstration Format - -Each demonstration is saved as a JSON file. The root object generated by `core/record.js` contains the following fields: - -* `taskName` (string) -* `utterance` (string) -* `reward` (number): Reward as defined by the task -* `rawReward` (number): 1 if succeeded and -1 if failed -* `states`: a list of state objects - * One state is recorded for the initial state - * Two states are recorded for each event, one before the event resolves and one after the event resolves - -Each state object has the following fields: - -* `time` (number): Time elapsed since the episode started -* `action`: An action-specific object (not present for the initial state) with the following common keys: - * `type` (string) - * `timing` (number): the `eventPhase` property of the JS event object. - This is 1 before the event resolves (capturing state) and 3 after the event resolves (bubbling state). -* `dom`: The DOM info as generated by `getDOMInfo()` - * The event target will have a special key `recordingTarget` set to `true`. diff --git a/miniwob-sandbox/bot/click-test-2-bot.py b/miniwob-sandbox/bot/click-test-2-bot.py deleted file mode 100755 index d39c525..0000000 --- a/miniwob-sandbox/bot/click-test-2-bot.py +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import sys, os, shutil, re, argparse, json, time, traceback, urlparse -from codecs import open -from itertools import izip -from collections import defaultdict, Counter - -from selenium import webdriver -from selenium.webdriver.common.keys import Keys -from selenium.webdriver.common.by import By -from selenium.webdriver.support.ui import WebDriverWait -from selenium.webdriver.support import expected_conditions as EC - - -def get_options(headless=False): - options = webdriver.ChromeOptions() - if headless: - options.add_argument('headless') - options.add_argument('disable-gpu') - options.add_argument('no-sandbox') - return options - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('-s', '--screenshot', - help='dump screenshot to this directory') - parser.add_argument('-H', '--headless', action='store_true', - help='do not render the Chrome interface') - parser.add_argument('-n', type=int, default=30, - help='number of episodes') - parser.add_argument('-b', '--base-url', - default='http://localhost:8000/miniwob/', - help='base URL of the task') - args = parser.parse_args() - - if args.screenshot: - assert os.path.isdir(args.screenshot) - - print 'Opening Chrome' - options = get_options(headless=args.headless) - driver = webdriver.Chrome(chrome_options=options) - driver.implicitly_wait(1) - url = urlparse.urljoin(args.base_url, 'click-test-2.html') - print 'Go to {}'.format(url) - driver.get(url) - - for i in xrange(args.n): - print 'Instance {}'.format(i) - element = WebDriverWait(driver, 3).until( - EC.element_to_be_clickable((By.ID, "sync-task-cover"))) - driver.find_element_by_id('sync-task-cover').click() - if args.screenshot: - driver.save_screenshot(os.path.join(args.screenshot, '{}.png'.format(i))) - buttons = driver.find_elements_by_tag_name('button') - one_buttons = [x for x in buttons if x.text == 'ONE'] - clicked = False - for x in one_buttons: - try: - x.click() - clicked = True - break - except Exception as e: - # May fail if TWO is in front of ONE! - traceback.print_exc() - if not clicked: - print 'Attempt to click other things' - for x in buttons: - try: - x.click() - clicked = True - break - except Exception as e: - traceback.print_exc() - print 'Cliked = {}'.format(clicked) - - print 'DONE!' - driver.close() - - -if __name__ == '__main__': - main() - diff --git a/miniwob-sandbox/bot/parallel-bot.py b/miniwob-sandbox/bot/parallel-bot.py deleted file mode 100755 index 50a851c..0000000 --- a/miniwob-sandbox/bot/parallel-bot.py +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import sys, os, shutil, re, argparse, json -from codecs import open -from itertools import izip -from collections import defaultdict, Counter - -from selenium import webdriver -from selenium.webdriver.common.keys import Keys - - -def main(): - parser = argparse.ArgumentParser() - - args = parser.parse_args() - - drivers = [] - for i in xrange(5): - drivers.append(webdriver.Remote( - desired_capabilities={'browserName': 'chrome'})) - print 'Created 5 drivers' - - for driver in drivers: - driver.get("https://github.com") - print(driver.title) - assert "GitHub" in driver.title - - for driver in drivers: - driver.close() - - -if __name__ == '__main__': - main() - diff --git a/miniwob-sandbox/docker/Dockerfile b/miniwob-sandbox/docker/Dockerfile deleted file mode 100644 index 542d4ca..0000000 --- a/miniwob-sandbox/docker/Dockerfile +++ /dev/null @@ -1,16 +0,0 @@ -FROM python:2.7-slim -RUN pip install selenium - -RUN apt-get update && apt-get install wget unzip xvfb -y - -RUN wget -q -O /tmp/linux_signing_key.pub https://dl-ssl.google.com/linux/linux_signing_key.pub \ - && apt-key add /tmp/linux_signing_key.pub \ - && echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list \ - && apt-get update && apt-get install google-chrome-stable -y - -RUN wget -q https://chromedriver.storage.googleapis.com/2.30/chromedriver_linux64.zip -O /tmp/chromedriver.zip \ - && mkdir -p /opt/bin/ \ - && unzip /tmp/chromedriver.zip -d /opt/bin/ -ENV PATH /opt/bin/:$PATH - -VOLUME ["/miniwob"] diff --git a/miniwob-sandbox/html/.gitignore b/miniwob-sandbox/html/.gitignore deleted file mode 100644 index 914bb2d..0000000 --- a/miniwob-sandbox/html/.gitignore +++ /dev/null @@ -1 +0,0 @@ -twistd.pid diff --git a/miniwob-sandbox/html/common/shapes.js b/miniwob-sandbox/html/common/shapes.js deleted file mode 100644 index 1b761a3..0000000 --- a/miniwob-sandbox/html/common/shapes.js +++ /dev/null @@ -1,235 +0,0 @@ -/* -Utilities for generating and describing shapes/digits/letters in a grid -that have various properties. -*/ - -var shapes = {}; - -// env variables -shapes.SZ_X = 7; // number of bins for shapes -shapes.SZ_Y = 7; -shapes.MAX_SIZE = 20; // max render size of shapes in pixels. Note by default grid is 160x160, so 8*20=160. - -shapes.MAX_NUM_SHAPES = 20; -shapes.MIN_NUM_SHAPES = 3; -shapes.COLORS = ['red', 'green', 'blue', 'aqua', 'black', 'magenta', 'yellow']; -shapes.LETTERS = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'; -shapes.DIGITS = '1234567890'; -shapes.SHAPES = ['circle', 'rectangle', 'triangle']; - -// helper function that creates a grid of shapes -shapes.genGrid = function(n) { - - var grid = {}; - grid.shapes = []; - - var taken_positions = []; - var num_shapes = typeof n !== 'undefined' ? n : core.randi(shapes.MIN_NUM_SHAPES, shapes.MAX_NUM_SHAPES); - for(var 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 ZtQiLjsxpQs*FU~TB{_9ym5fEi{{g8hc~JlW diff --git a/miniwob-sandbox/html/common/special/checkbox-numbers/ch_1.png b/miniwob-sandbox/html/common/special/checkbox-numbers/ch_1.png deleted file mode 100644 index d8d717065488ed08f18a7862d00d9137b7053f2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7031 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 diff --git a/miniwob-sandbox/html/common/special/checkbox-numbers/ch_2.png b/miniwob-sandbox/html/common/special/checkbox-numbers/ch_2.png deleted file mode 100644 index d7d2519a5ee181e2f48185454a2b90f9f3948d80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7065 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 af-riQUp{`)*L3sO+oLS64y}=W8Sy{NP*3Lo diff --git a/miniwob-sandbox/html/common/special/checkbox-numbers/ch_4.png b/miniwob-sandbox/html/common/special/checkbox-numbers/ch_4.png deleted file mode 100644 index 8bc996c609d3f9d18ef2b6edb867ef486bceca3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7019 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 G;{N~&y;Pn6 diff --git a/miniwob-sandbox/html/common/special/checkbox-numbers/ch_6.png b/miniwob-sandbox/html/common/special/checkbox-numbers/ch_6.png deleted file mode 100644 index 89e4135e708b8dcfd63cb856cad76878f78a8794..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7079 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 L2CPc!+onm| diff --git a/miniwob-sandbox/html/common/special/checkbox-numbers/ch_7.png b/miniwob-sandbox/html/common/special/checkbox-numbers/ch_7.png deleted file mode 100644 index d9afd3bf68bb9de47761efc653afd6fc784583fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7052 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 diff --git a/miniwob-sandbox/html/common/special/checkbox-numbers/ch_8.png b/miniwob-sandbox/html/common/special/checkbox-numbers/ch_8.png deleted file mode 100644 index 5c664b63dc08426d1f0d3fff921c2c96bf5f5803..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7047 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 I?2Cy11182^lK=n! diff --git a/miniwob-sandbox/html/common/special/checkbox-numbers/ch_9.png b/miniwob-sandbox/html/common/special/checkbox-numbers/ch_9.png deleted file mode 100644 index 5a07eec58bcd287d6d2e64050cb76818a867f444..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7092 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 f[e.shift()],e.push(u),f[u]=n[v](t,o),i?i(f[u]):f[u])}return r}function oi(){return this.hex}function br(n,t){for(var i,f=[],r=0,u=n.length;u-2*!t>r;r+=2)i=[{x:+n[r-2],y:+n[r-1]},{x:+n[r],y:+n[r+1]},{x:+n[r+2],y:+n[r+3]},{x:+n[r+4],y:+n[r+5]}],t?r?u-4==r?i[3]={x:+n[0],y:+n[1]}:u-2==r&&(i[2]={x:+n[0],y:+n[1]},i[3]={x:+n[2],y:+n[3]}):i[0]={x:+n[u-2],y:+n[u-1]}:u-4==r?i[3]=i[2]:r||(i[0]={x:+n[r],y:+n[r+1]}),f.push(["C",(-i[0].x+6*i[1].x+i[2].x)/6,(-i[0].y+6*i[1].y+i[2].y)/6,(i[1].x+6*i[2].x-i[3].x)/6,(i[1].y+6*i[2].y-i[3].y)/6,i[2].x,i[2].y]);return f}function kr(n,t,i,r,u){var f=-3*t+9*i-9*r+3*u,e=n*f+6*t-12*i+6*r;return n*e-3*t+3*i}function vt(n,t,i,r,f,e,o,s,h){var c;h==null&&(h=1);h=h>1?1:h<0?0:h;var l=h/2,w=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],b=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],a=0;for(c=0;c<12;c++){var v=l*w[c]+l,y=kr(v,n,i,f,o),p=kr(v,t,r,e,s),k=y*y+p*p;a+=b[c]*u.sqrt(k)}return l*a}function cf(n,t,i,r,u,f,e,o,s){if(!(s<0)&&!(vt(n,t,i,r,u,f,e,o).01;)l/=2,h+=(co(u,e))&&!(o(t,r)o(f,s))){var p=(n*r-t*i)*(u-e)-(n-i)*(u*s-f*e),w=(n*r-t*i)*(f-s)-(t-r)*(u*s-f*e),a=(n-i)*(f-s)-(t-r)*(u-e);if(a){var v=p/a,y=w/a,h=+v.toFixed(2),c=+y.toFixed(2);if(!(h<+l(n,i).toFixed(2))&&!(h>+o(n,i).toFixed(2))&&!(h<+l(u,e).toFixed(2))&&!(h>+o(u,e).toFixed(2))&&!(c<+l(t,r).toFixed(2))&&!(c>+o(t,r).toFixed(2))&&!(c<+l(f,s).toFixed(2))&&!(c>+o(f,s).toFixed(2)))return{x:v,y:y}}}}function di(n,t,r){var ut=i.bezierBBox(n),ft=i.bezierBBox(t),u,h,c,d,g;if(!i.isBBoxIntersect(ut,ft))return r?0:[];var et=vt.apply(0,n),ot=vt.apply(0,t),p=o(~~(et/5),1),w=o(~~(ot/5),1),nt=[],tt=[],rt={},it=r?0:[];for(u=0;u=0&&d<=1.001&&g>=0&&g<=1.001&&(r?it++:it.push({x:f.x,y:f.y,t1:l(d,1),t2:l(g,1)}))}}return it}function gi(n,t,r){var e,o,s,h,b,k,d,g,c,l,y,p,nt,a,w,tt,v,u,f,it;for(n=i._path2curve(n),t=i._path2curve(t),y=r?0:[],p=0,nt=n.length;pu)return u;while(rf?r=i:u=i;i=(u-r)/2+r}return i}var e=3*t,o=3*(r-t)-e,h=1-e-o,s=3*i,c=3*(u-i)-s,a=1-s-c;return v(n,1/(200*f))}function ft(n,t){var i=[],u={},r;if(this.ms=t,this.times=1,n){for(r in n)n[a](r)&&(u[h(r)]=n[r],i.push(h(r)));i.sort(tf)}this.anim=u;this.top=i[i.length-1];this.percents=i}function kt(n,r,u,e,o,c){var nt,v,et,l,at,dt,ii,tt,vt,gt,yt,d,rt,st,ct,ni,ft,lt;u=h(u);var it,ot,pt,ti,bt,kt,w=n.ms,y={},g={},k={};if(e){for(v=0,et=f.length;ve*n.top){u=n.percents[v];bt=n.percents[v-1]||0;w=w/n.top*(u-bt);ti=n.percents[v+1];it=n.anim[u];break}else e&&r.attr(n.anim[n.percents[v]]);if(it){if(ot)ot.initstatus=e,ot.start=new Date-ot.ms*e;else{for(l in it)if(it[a](l)&&(wi[a](l)||r.paper.customAttributes[a](l))){y[l]=r.attr(l);y[l]==null&&(y[l]=bu[l]);g[l]=it[l];switch(wi[l]){case p:k[l]=(g[l]-y[l])/w;break;case"colour":y[l]=i.getRGB(y[l]);at=i.getRGB(g[l]);k[l]={r:(at.r-y[l].r)/w,g:(at.g-y[l].g)/w,b:(at.b-y[l].b)/w};break;case"path":for(dt=wt(y[l],g[l]),ii=dt[1],y[l]=dt[0],k[l]=[],v=0,et=y[l].length;v',fi=ui.firstChild,fi.style.behavior="url(#default#VML)",!(fi&&typeof fi.adj=="object"))return i.type=d;ui=null}i.svg=!(i.vml=i.type=="VML");i._Paper=hr;i.fn=c=hr.prototype=i.prototype;i._id=0;i._oid=0;i.is=function(n,t){return(t=ni.call(t),t=="finite")?!pu[a](+n):t=="array"?n instanceof Array:t=="null"&&n===null||t==typeof n&&n!==null||t=="object"&&n===Object(n)||t=="array"&&Array.isArray&&Array.isArray(n)||vu.call(n).slice(8,-1).toLowerCase()==t};i.angle=function(n,t,r,f,e,o){if(e==null){var s=n-r,h=t-f;return!s&&!h?0:(180+u.atan2(-h,-s)*180/k+360)%360}return i.angle(n,t,e,o)-i.angle(r,f,e,o)};i.rad=function(n){return n%360*k/180};i.deg=function(n){return n*180/k%360};i.snapTo=function(n,t,r){var f,u;if(r=i.is(r,"finite")?r:10,i.is(n,tt)){for(f=n.length;f--;)if(y(n[f]-t)<=r)return n[f]}else{if(n=+n,u=t%n,un-r)return t-u+n}return t};ff=i.createUUID=function(n,t){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(n,t).toUpperCase()}}(/[xy]/g,function(n){var t=u.random()*16|0,i=n=="x"?t:t&3|8;return i.toString(16)});i.setWindow=function(n){t("raphael.setWindow",i,r.win,n);r.win=n;r.doc=r.win.document;i._engine.initWin&&i._engine.initWin(r.win)};var ei=function(n){var e,u,f,o,t;if(i.vml){e=/^\s+|\s+$/g;try{f=new ActiveXObject("htmlfile");f.write("");f.close();u=f.body}catch(s){u=createPopup().document.body}o=u.createTextRange();ei=it(function(n){try{u.style.color=b(n).replace(e,d);var t=o.queryCommandValue("ForeColor");return t=(t&255)<<16|t&65280|(t&16711680)>>>16,"#"+("000000"+t.toString(16)).slice(-6)}catch(i){return"none"}})}else t=r.doc.createElement("i"),t.title="Raphaël Colour Picker",t.style.display="none",r.doc.body.appendChild(t),ei=it(function(n){return t.style.color=n,r.doc.defaultView.getComputedStyle(t,d).getPropertyValue("color")});return ei(n)},ef=function(){return"hsb("+[this.h,this.s,this.b]+")"},of=function(){return"hsl("+[this.h,this.s,this.l]+")"},yr=function(){return this.hex},pr=function(n,t,r){if(t==null&&i.is(n,"object")&&"r"in n&&"g"in n&&"b"in n&&(r=n.b,t=n.g,n=n.r),t==null&&i.is(n,ti)){var u=i.getRGB(n);n=u.r;t=u.g;r=u.b}return(n>1||t>1||r>1)&&(n/=255,t/=255,r/=255),[n,t,r]},wr=function(n,t,r,u){n*=255;t*=255;r*=255;var f={r:n,g:t,b:r,hex:i.rgb(n,t,r),toString:yr};return i.is(u,"finite")&&(f.opacity=u),f};i.color=function(n){var t;return i.is(n,"object")&&"h"in n&&"s"in n&&"b"in n?(t=i.hsb2rgb(n),n.r=t.r,n.g=t.g,n.b=t.b,n.hex=t.hex):i.is(n,"object")&&"h"in n&&"s"in n&&"l"in n?(t=i.hsl2rgb(n),n.r=t.r,n.g=t.g,n.b=t.b,n.hex=t.hex):(i.is(n,"string")&&(n=i.getRGB(n)),i.is(n,"object")&&"r"in n&&"g"in n&&"b"in n?(t=i.rgb2hsl(n),n.h=t.h,n.s=t.s,n.l=t.l,t=i.rgb2hsb(n),n.v=t.b):(n={hex:"none"},n.r=n.g=n.b=n.h=n.s=n.v=n.l=-1)),n.toString=yr,n};i.hsb2rgb=function(n,t,i,r){this.is(n,"object")&&"h"in n&&"s"in n&&"b"in n&&(i=n.b,t=n.s,n=n.h,r=n.o);n*=360;var e,o,s,f,u;return n=n%360/60,u=i*t,f=u*(1-y(n%2-1)),e=o=s=i-u,n=~~n,e+=[u,f,0,0,f,u][n],o+=[f,u,u,f,0,0][n],s+=[0,0,f,u,u,f][n],wr(e,o,s,r)};i.hsl2rgb=function(n,t,i,r){this.is(n,"object")&&"h"in n&&"s"in n&&"l"in n&&(i=n.l,t=n.s,n=n.h);(n>1||t>1||i>1)&&(n/=360,t/=100,i/=100);n*=360;var e,o,s,f,u;return n=n%360/60,u=2*t*(i<.5?i:1-i),f=u*(1-y(n%2-1)),e=o=s=i-u/2,n=~~n,e+=[u,f,0,0,f,u][n],o+=[f,u,u,f,0,0][n],s+=[0,0,f,u,u,f][n],wr(e,o,s,r)};i.rgb2hsb=function(n,t,i){i=pr(n,t,i);n=i[0];t=i[1];i=i[2];var f,e,u,r;return u=o(n,t,i),r=u-l(n,t,i),f=r==0?null:u==n?(t-i)/r:u==t?(i-n)/r+2:(n-t)/r+4,f=(f+360)%6/6,e=r==0?0:r/u,{h:f,s:e,b:u,toString:ef}};i.rgb2hsl=function(n,t,i){i=pr(n,t,i);n=i[0];t=i[1];i=i[2];var e,h,u,f,s,r;return f=o(n,t,i),s=l(n,t,i),r=f-s,e=r==0?null:f==n?(t-i)/r:f==t?(i-n)/r+2:(n-t)/r+4,e=(e+360)%6/6,u=(f+s)/2,h=r==0?0:u<.5?r/(2*u):r/(2-2*u),{h:e,s:h,l:u,toString:of}};i._path2string=function(){return this.join(",").replace(du,"$1")};hf=i._preload=function(n,t){var i=r.doc.createElement("img");i.style.cssText="position:absolute;left:-9999em;top:-9999em";i.onload=function(){t.call(this);this.onload=null;r.doc.body.removeChild(this)};i.onerror=function(){r.doc.body.removeChild(this)};r.doc.body.appendChild(i);i.src=n};i.getRGB=it(function(n){if(!n||!!((n=b(n)).indexOf("-")+1))return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:oi};if(n=="none")return{r:-1,g:-1,b:-1,hex:"none",toString:oi};ku[a](n.toLowerCase().substring(0,2))||n.charAt()=="#"||(n=ei(n));var u,f,e,o,s,t,r=n.match(yu);return r?(r[2]&&(e=st(r[2].substring(5),16),f=st(r[2].substring(3,5),16),u=st(r[2].substring(1,3),16)),r[3]&&(e=st((s=r[3].charAt(3))+s,16),f=st((s=r[3].charAt(2))+s,16),u=st((s=r[3].charAt(1))+s,16)),r[4]&&(t=r[4][ut](bi),u=h(t[0]),t[0].slice(-1)=="%"&&(u*=2.55),f=h(t[1]),t[1].slice(-1)=="%"&&(f*=2.55),e=h(t[2]),t[2].slice(-1)=="%"&&(e*=2.55),r[1].toLowerCase().slice(0,4)=="rgba"&&(o=h(t[3])),t[3]&&t[3].slice(-1)=="%"&&(o/=100)),r[5])?(t=r[5][ut](bi),u=h(t[0]),t[0].slice(-1)=="%"&&(u*=2.55),f=h(t[1]),t[1].slice(-1)=="%"&&(f*=2.55),e=h(t[2]),t[2].slice(-1)=="%"&&(e*=2.55),(t[0].slice(-3)=="deg"||t[0].slice(-1)=="°")&&(u/=360),r[1].toLowerCase().slice(0,4)=="hsba"&&(o=h(t[3])),t[3]&&t[3].slice(-1)=="%"&&(o/=100),i.hsb2rgb(u,f,e,o)):r[6]?(t=r[6][ut](bi),u=h(t[0]),t[0].slice(-1)=="%"&&(u*=2.55),f=h(t[1]),t[1].slice(-1)=="%"&&(f*=2.55),e=h(t[2]),t[2].slice(-1)=="%"&&(e*=2.55),(t[0].slice(-3)=="deg"||t[0].slice(-1)=="°")&&(u/=360),r[1].toLowerCase().slice(0,4)=="hsla"&&(o=h(t[3])),t[3]&&t[3].slice(-1)=="%"&&(o/=100),i.hsl2rgb(u,f,e,o)):(r={r:u,g:f,b:e,toString:oi},r.hex="#"+(16777216|e|f<<8|u<<16).toString(16).slice(1),i.is(o,"finite")&&(r.opacity=o),r):{r:-1,g:-1,b:-1,hex:"none",error:1,toString:oi}},i);i.hsb=it(function(n,t,r){return i.hsb2rgb(n,t,r).hex});i.hsl=it(function(n,t,r){return i.hsl2rgb(n,t,r).hex});i.rgb=it(function(n,t,i){return"#"+(16777216|i|t<<8|n<<16).toString(16).slice(1)});i.getColor=function(n){var t=this.getColor.start=this.getColor.start||{h:0,s:1,b:n||.75},i=this.hsb2rgb(t.h,t.s,t.b);return t.h+=.075,t.h>1&&(t.h=0,t.s-=.2,t.s<=0&&(this.getColor.start={h:0,s:1,b:t.b})),i.hex};i.getColor.reset=function(){delete this.start};i.parsePathString=function(n){var r,u,t;return n?(r=et(n),r.arr)?rt(r.arr):(u={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},t=[],i.is(n,tt)&&i.is(n[0],tt)&&(t=rt(n)),t.length||b(n).replace(gu,function(n,i,r){var f=[],e=i.toLowerCase();if(r.replace(ar,function(n,t){t&&f.push(+t)}),e=="m"&&f.length>2&&(t.push([i][s](f.splice(0,2))),e="l",i=i=="m"?"l":"L"),e=="r")t.push([i][s](f));else while(f.length>=u[e])if(t.push([i][s](f.splice(0,u[e]))),!u[e])break}),t.toString=i._path2string,r.arr=rt(t),t):null};i.parseTransformString=it(function(n){if(!n)return null;var t=[];return i.is(n,tt)&&i.is(n[0],tt)&&(t=rt(n)),t.length||b(n).replace(nf,function(n,i,r){var u=[],f=ni.call(i);r.replace(ar,function(n,t){t&&u.push(+t)});t.push([i][s](u))}),t.toString=i._path2string,t});et=function(n){var t=et.ps=et.ps||{};return t[n]?t[n].sleep=100:t[n]={sleep:100},setTimeout(function(){for(var i in t)t[a](i)&&i!=n&&(t[i].sleep--,t[i].sleep||delete t[i])}),t[n]};i.findDotsAtSegment=function(n,t,i,r,f,e,o,s,h){var c=1-h,w=nt(c,3),b=nt(c,2),l=h*h,d=l*h,tt=w*n+b*3*h*i+c*3*h*h*f+d*o,it=w*t+b*3*h*r+c*3*h*h*e+d*s,a=n+2*h*(i-n)+l*(f-2*i+n),v=t+2*h*(r-t)+l*(e-2*r+t),y=i+2*h*(f-i)+l*(o-2*f+i),p=r+2*h*(e-r)+l*(s-2*e+r),rt=c*n+h*i,ut=c*t+h*r,ft=c*f+h*o,et=c*e+h*s,g=90-u.atan2(a-y,v-p)*180/k;return(a>y||v=n.x&&t<=n.x2&&i>=n.y&&i<=n.y2};i.isBBoxIntersect=function(n,t){var r=i.isPointInsideBBox;return r(t,n.x,n.y)||r(t,n.x2,n.y)||r(t,n.x,n.y2)||r(t,n.x2,n.y2)||r(n,t.x,t.y)||r(n,t.x2,t.y)||r(n,t.x,t.y2)||r(n,t.x2,t.y2)||(n.xt.x||t.xn.x)&&(n.yt.y||t.yn.y)};i.pathIntersection=function(n,t){return gi(n,t)};i.pathIntersectionNumber=function(n,t){return gi(n,t,1)};i.isPointInsidePath=function(n,t,r){var u=i.pathBBox(n);return i.isPointInsideBBox(u,t,r)&&gi(n,[["M",t,r],["H",u.x2+10]],1)%2==1};i._removedFactory=function(n){return function(){t("raphael.log",null,"Raphaël: you are calling to method “"+n+"” of removed object",n)}};var nr=i.pathBBox=function(n){var c=et(n),h,p,u;if(c.bbox)return pt(c.bbox);if(!n)return{x:0,y:0,width:0,height:0,x2:0,y2:0};n=wt(n);var f=0,e=0,i=[],r=[],t;for(h=0,p=n.length;h1&&(tt=u.sqrt(tt),i=tt*i,r=tt*r);var ht=i*i,ct=r*r,vt=(e==o?-1:1)*u.sqrt(y((ht*ct-ht*d*d-ct*b*b)/(ht*d*d+ct*b*b))),rt=vt*i*d/r+(n+h)/2,ft=vt*-r*b/i+(t+c)/2,v=u.asin(((t-ft)/r).toFixed(9)),a=u.asin(((c-ft)/r).toFixed(9));v=na&&(v=v-k*2);!o&&a>v&&(a=a-k*2)}if(st=a-v,y(st)>at){var ni=a,ti=h,ii=c;a=v+at*(o&&a>v?1:-1);h=rt+i*u.cos(a);c=ft+r*u.sin(a);p=nu(h,c,i,r,f,0,o,ti,ii,[a,ni,rt,ft])}st=a-v;var ri=u.cos(v),ui=u.sin(v),fi=u.cos(a),ei=u.sin(a),yt=u.tan(st/4),pt=4/3*i*yt,wt=4/3*r*yt,bt=[n,t],nt=[n+pt*ui,t-wt*ri],kt=[h+pt*ei,c-wt*fi],dt=[h,c];if(nt[0]=2*bt[0]-nt[0],nt[1]=2*bt[1]-nt[1],l)return[nt,kt,dt][s](p);for(p=[nt,kt,dt][s](p).join()[ut](","),lt=[],w=0,gt=p.length;w"1e12"&&(p=.5),y(w)>"1e12"&&(w=.5),p>0&&p<1&&(a=hi(n,t,i,r,f,e,s,h,p),d.push(a.x),k.push(a.y)),w>0&&w<1&&(a=hi(n,t,i,r,f,e,s,h,w),d.push(a.x),k.push(a.y)),b=e-2*r+t-(h-2*e+r),c=2*(r-t)-2*(e-r),g=t-r,p=(-c+u.sqrt(c*c-4*b*g))/2/b,w=(-c-u.sqrt(c*c-4*b*g))/2/b,y(p)>"1e12"&&(p=.5),y(w)>"1e12"&&(w=.5),p>0&&p<1&&(a=hi(n,t,i,r,f,e,s,h,p),d.push(a.x),k.push(a.y)),w>0&&w<1&&(a=hi(n,t,i,r,f,e,s,h,w),d.push(a.x),k.push(a.y)),{min:{x:l[v](0,d),y:l[v](0,k)},max:{x:o[v](0,d),y:o[v](0,k)}}}),wt=i._path2curve=it(function(n,t){var w=!t&&et(n),r,a;if(!t&&w.curve)return rt(w.curve);var u=dr(n),i=t&&dr(t),f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},e={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},b=function(n,t,i){var r,u;if(!n)return["C",t.x,t.y,t.x,t.y,t.x,t.y];n[0]in{T:1,Q:1}||(t.qx=t.qy=null);switch(n[0]){case"M":t.X=n[1];t.Y=n[2];break;case"A":n=["C"][s](nu[v](0,[t.x,t.y][s](n.slice(1))));break;case"S":i=="C"||i=="S"?(r=t.x*2-t.bx,u=t.y*2-t.by):(r=t.x,u=t.y);n=["C",r,u][s](n.slice(1));break;case"T":i=="Q"||i=="T"?(t.qx=t.x*2-t.qx,t.qy=t.y*2-t.qy):(t.qx=t.x,t.qy=t.y);n=["C"][s](gr(t.x,t.y,t.qx,t.qy,n[1],n[2]));break;case"Q":t.qx=n[1];t.qy=n[2];n=["C"][s](gr(t.x,t.y,n[1],n[2],n[3],n[4]));break;case"L":n=["C"][s](si(t.x,t.y,n[1],n[2]));break;case"H":n=["C"][s](si(t.x,t.y,n[1],t.y));break;case"V":n=["C"][s](si(t.x,t.y,t.x,n[1]));break;case"Z":n=["C"][s](si(t.x,t.y,t.X,t.Y))}return n},k=function(n,t){if(n[t].length>7){n[t].shift();for(var r=n[t];r.length;)n.splice(t++,0,["C"][s](r.splice(0,6)));n.splice(t,1);a=o(u.length,i&&i.length||0)}},d=function(n,t,r,f,e){n&&t&&n[e][0]=="M"&&t[e][0]!="M"&&(t.splice(e,0,["M",f.x,f.y]),r.bx=0,r.by=0,r.x=n[e][1],r.y=n[e][2],a=o(u.length,i&&i.length||0))};for(r=0,a=o(u.length,i&&i.length||0);ru){if(t&&!v.start){if(o=ur(s,h,e[1],e[2],e[3],e[4],e[5],e[6],u-l),c+=["C"+o.start.x,o.start.y,o.m.x,o.m.y,o.x,o.y],f)return c;v.start=c;c=["M"+o.x,o.y+"C"+o.n.x,o.n.y,o.end.x,o.end.y,e[5],e[6]].join();l+=a;s=+e[5];h=+e[6];continue}if(!n&&!t)return o=ur(s,h,e[1],e[2],e[3],e[4],e[5],e[6],u-l),{x:o.x,y:o.y,alpha:o.alpha}}l+=a;s=+e[5];h=+e[6]}c+=e.shift()+e}return v.end=c,o=n?l:t?v:i.findDotsAtSegment(s,h,e[0],e[1],e[2],e[3],e[4],e[5],1),o.alpha&&(o={x:o.x,y:o.y,alpha:o.alpha}),o}},ou=fr(1),su=fr(),er=fr(0,1);i.getTotalLength=ou;i.getPointAtLength=su;i.getSubpath=function(n,t,i){if(this.getTotalLength(n)-i<1e-6)return er(n,t).end;var r=er(n,i,1);return t?er(r,t).end:r};e.getTotalLength=function(){var n=this.getPath();if(n)return this.node.getTotalLength?this.node.getTotalLength():ou(n)};e.getPointAtLength=function(n){var t=this.getPath();if(t)return su(t,n)};e.getPath=function(){var n,t=i._getPath[this.type];if(this.type!="text"&&this.type!="set")return t&&(n=t(this)),n};e.getSubpath=function(n,t){var r=this.getPath();if(r)return i.getSubpath(r,n,t)};g=i.easing_formulas={linear:function(n){return n},"<":function(n){return nt(n,1.7)},">":function(n){return nt(n,.48)},"<>":function(n){var i=.48-n/1.04,r=u.sqrt(.1734+i*i),f=r-i,o=nt(y(f),1/3)*(f<0?-1:1),e=-r-i,s=nt(y(e),1/3)*(e<0?-1:1),t=o+s+.5;return(1-t)*3*t*t+t*t*t},backIn:function(n){var t=1.70158;return n*n*((t+1)*n-t)},backOut:function(n){n=n-1;var t=1.70158;return n*n*((t+1)*n+t)+1},elastic:function(n){return n==!!n?n:nt(2,-10*n)*u.sin((n-.075)*2*k/.3)+1},bounce:function(n){var r=7.5625,t=2.75,i;return n<1/t?i=r*n*n:n<2/t?(n-=1.5/t,i=r*n*n+.75):n<2.5/t?(n-=2.25/t,i=r*n*n+.9375):(n-=2.625/t,i=r*n*n+.984375),i}};g.easeIn=g["ease-in"]=g["<"];g.easeOut=g["ease-out"]=g[">"];g.easeInOut=g["ease-in-out"]=g["<>"];g["back-in"]=g.backIn;g["back-out"]=g.backOut;var f=[],hu=n.requestAnimationFrame||n.webkitRequestAnimationFrame||n.mozRequestAnimationFrame||n.oRequestAnimationFrame||n.msRequestAnimationFrame||function(n){setTimeout(n,16)},or=function(){for(var ft=+new Date,b=0,n,v,r,u,g,c,nt,w,ut;b1&&!n.next){for(d in tt)tt[a](d)&&(rt[d]=n.totalOrigin[d]);n.el.attr(rt);kt(n.anim,n.el,n.anim.percents[0],null,n.totalOrigin,n.repeat-1)}n.next&&!n.stop&&kt(n.anim,n.el,n.next,null,n.totalOrigin,n.repeat)}}i.svg&&y&&y.paper&&y.paper.safari();f.length&&hu(or)},sr=function(n){return n>255?255:n<0?0:n};e.animateWith=function(n,t,r,u,e,o){var s=this,c,h,l;if(s.removed)return o&&o.call(s),s;for(c=r instanceof ft?r:i.animation(r,u,e,o),kt(c,s,c.percents[0],null,s.attr()),h=0,l=f.length;h.5)*2-1;d(b-.5,2)+d(s-.5,2)>.25&&(s=c.sqrt(.25-d(b-.5,2))*r+.5)&&s!=.5&&(s=s.toFixed(5)-1e-5*r)}return o}),r=r.split(/\s*\-\s*/),w=="linear"){if(v=r.shift(),v=-f(v),isNaN(v))return null;e=[0,0,c.cos(i.rad(v)),c.sin(i.rad(v))];nt=1/(k(y(e[2]),y(e[3]))||1);e[2]*=nt;e[3]*=nt;e[2]<0&&(e[0]=-e[2],e[2]=0);e[3]<0&&(e[1]=-e[3],e[3]=0)}if(p=i._parseDots(r),!p)return null;if(l=l.replace(/[\(\)\s,\xb0#]/g,"_"),t.gradient&&l!=t.gradient.id&&(it.defs.removeChild(t.gradient),delete t.gradient),!t.gradient)for(a=n(w+"Gradient",{id:l}),t.gradient=a,n(a,w=="radial"?{fx:b,fy:s}:{x1:e[0],y1:e[1],x2:e[2],y2:e[3],gradientTransform:t.matrix.invert()}),it.defs.appendChild(a),h=0,rt=p.length;h1?w.opacity/100:w.opacity});case"stroke":w=i.getRGB(e);h.setAttribute(v,w.hex);v=="stroke"&&w[t]("opacity")&&n(h,{"stroke-opacity":w.opacity>1?w.opacity/100:w.opacity});v=="stroke"&&r._.arrows&&("startString"in r._.arrows&&s(r,r._.arrows.startString),"endString"in r._.arrows&&s(r,r._.arrows.endString,1));break;case"gradient":(r.type=="circle"||r.type=="ellipse"||u(e).charAt()!="r")&&it(r,e);break;case"opacity":c.gradient&&!c[t]("stroke-opacity")&&n(h,{"stroke-opacity":e>1?e/100:e});case"fill-opacity":if(c.gradient){ut=i._g.doc.getElementById(h.getAttribute("fill").replace(/^url\(#|\)$/g,o));ut&&(ft=ut.getElementsByTagName("stop"),n(ft[ft.length-1],{"stop-opacity":e}));break}default:v=="font-size"&&(e=tt(e,10)+"px");yt=v.replace(/(\-.)/g,function(n){return n.substring(1).toUpperCase()});h.style[yt]=e;r._.dirty=1;h.setAttribute(v,e)}}ot(r,f);h.style.visibility=pt},ut=1.2,ot=function(r,f){var y,h,l,e,a,p,v;if(r.type=="text"&&(f[t]("text")||f[t]("font")||f[t]("font-size")||f[t]("x")||f[t]("y"))){var c=r.attrs,s=r.node,w=s.firstChild?tt(i._g.doc.defaultView.getComputedStyle(s.firstChild,o).getPropertyValue("font-size"),10):10;if(f[t]("text")){for(c.text=f.text;s.firstChild;)s.removeChild(s.firstChild);for(y=u(f.text).split("\n"),h=[],e=0,a=y.length;e")),vt=ti.getBoundingClientRect(),p.W=v.w=(vt.right-vt.left)/ii,p.H=v.h=(vt.bottom-vt.top)/ii,p.X=v.x,p.Y=v.y+p.H/2,(("x"in c)||("y"in c))&&(p.path.v=i.format("m{0},{1}l{2},{1}",e(v.x*n),e(v.y*n),e(v.x*n)+1)),ri=["x","y","text","font","font-family","font-weight","font-style","font-size"],bt=0,hi=ri.length;bt.25&&(i=c.sqrt(.25-v(t-.5,2))*((i>.5)*2-1)+.5),p=t+o+i),u}),r=r.split(/\s*\-\s*/),y=="linear"&&(l=r.shift(),l=-f(l),isNaN(l)))||(s=i._parseDots(r),!s))return null;if(n=n.shape||n.node,s.length){for(n.removeChild(e),e.on=!0,e.method="none",e.color=s[0].color,e.color2=s[s.length-1].color,a=[],h=0,w=s.length;h')}}catch(i){s=function(n){return t.createElement("<"+n+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}};i._engine.initWin(i._g.win);i._engine.create=function(){var e=i._getContainer.apply(0,arguments),f=e.container,r=e.height,u=e.width,c=e.x,l=e.y;if(!f)throw new Error("VML container not found.");var t=new i._Paper,s=t.canvas=i._g.doc.createElement("div"),h=s.style;return c=c||0,l=l||0,u=u||512,r=r||342,t.width=u,t.height=r,u==+u&&(u+="px"),r==+r&&(r+="px"),t.coordsize=n*1e3+o+n*1e3,t.coordorigin="0 0",t.span=i._g.doc.createElement("span"),t.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",s.appendChild(t.span),h.cssText=i.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",u,r),f==1?(i._g.doc.body.appendChild(s),h.left=c+"px",h.top=l+"px",h.position="absolute"):f.firstChild?f.insertBefore(s,f.firstChild):f.appendChild(s),t.renderfix=function(){},t};i.prototype.clear=function(){i.eve("raphael.clear",this);this.canvas.innerHTML=u;this.span=i._g.doc.createElement("span");this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;";this.canvas.appendChild(this.span);this.bottom=this.top=null};i.prototype.remove=function(){i.eve("raphael.remove",this);this.canvas.parentNode.removeChild(this.canvas);for(var n in this)this[n]=typeof this[n]=="function"?i._removedFactory(n):null;return!0};d=i.st;for(y in r)r[h](y)&&!d[h](y)&&(d[y]=function(n){return function(){var t=arguments;return this.forEach(function(i){i[n].apply(i,t)})}}(y))}}(),yi.was?r.win.Raphael=i:Raphael=i,i}); -//# sourceMappingURL=raphael.min.js.map - diff --git a/miniwob-sandbox/html/common/special/click-pie/wheelnav.min.js b/miniwob-sandbox/html/common/special/click-pie/wheelnav.min.js deleted file mode 100644 index e387d8d..0000000 --- a/miniwob-sandbox/html/common/special/click-pie/wheelnav.min.js +++ /dev/null @@ -1,2 +0,0 @@ -var sliceTransform,sliceTransformCustomization,colorpalette;wheelnav=function(n,t,i,r){var u,e,s,o,f;if(this.holderId="wheel",n!==undefined&&n!==null&&(this.holderId=n),u=document.getElementById(n),(u===null||u===undefined)&&(t===undefined||t===null))return this;if(s=!0,t===undefined||t===null){for(o=[],f=0;f-1&&n.preventDefault();t=null;(i===r.keynavigateUpCode||i===r.keynavigateUpCodeAlt)&&(t=r.currentClick===r.navItemCount-1?0:r.currentClick+1);(i===r.keynavigateDownCode||i===r.keynavigateDownCodeAlt)&&(t=r.currentClick===0?r.navItemCount-1:r.currentClick-1);t!==null&&(r.navItems[t].navigateFunction!==null&&r.navItems[t].navigateFunction(),r.navigateWheel(t))})}return this.spreader=new spreader(this),this.marker=new marker(this),this.refreshWheel(),t!==undefined&&this.spreadWheel(),this};wheelnav.prototype.removeWheel=function(){if(this.raphael.remove(),this.keynavigateEnabled){var n=window;this.keynavigateOnlyFocus&&(n=document.getElementById(this.holderId),n.hasAttribute("tabindex")&&n.removeAttribute("tabindex"));n.removeEventListener("keydown",this.keyNavigateFunction)}};wheelnav.prototype.refreshWheel=function(n){for(i=0;i0&&(r=r-360)),t.currentRotateAngle-=r,u=this.animatetime!=null?this.animatetime:1500,this.animatetimeCalculated&&n!==this.currentClick&&(t.animatetime=u*(Math.abs(r)/360)),this.rotateRoundCount>0&&(this.clockwise?t.currentRotateAngle-=this.rotateRoundCount*360:t.currentRotateAngle+=this.rotateRoundCount*360,t.animatetime=u*(this.rotateRoundCount+1)));for(i=0;i0){for(this.initWheel(i),t=0;t-1||n.indexOf(" ")>-1)?!0:!1},this.isImageTitle=function(n){return n===undefined&&(n=this.title),n!==null&&n.substr(0,7)==="imgsrc:"?!0:!1},this};wheelnavTitle.prototype.getTitlePercentAttr=function(n,t,i,r){var u={},f,e;return this.relativePath!==undefined?(f=n+(this.startX-this.centerX),e=t+(this.startY-this.centerY),this.relativePath[0][1]=f,this.relativePath[0][2]=e,u={path:this.relativePath,title:this.title}):u=this.isImageTitle()?{x:n-i/2,y:t-r/2,width:i,height:r,title:this.title,src:this.title.substr(7,this.title.length)}:{x:n,y:t,title:this.title},u};wheelnavTitle.prototype.getTitleSizeTransform=function(n,t){var i="";return n!==null&&t!==null&&(i="s",this.height>this.width?(i+=(n/this.height).toString()+",",i+=(t/this.height).toString()):(i+=(n/this.width).toString()+",",i+=(t/this.width).toString())),i};wheelnav.prototype.styleWheel=function(){this.cssMode?(this.spreaderPathInAttr={"class":this.getSpreaderCssClass("in")},this.spreaderPathOutAttr={"class":this.getSpreaderCssClass("out")},this.spreaderTitleInAttr={"class":this.getSpreaderTitleCssClass("in")},this.spreaderTitleOutAttr={"class":this.getSpreaderTitleCssClass("out")},this.markerAttr={"class":this.getMarkerCssClass()}):((this.spreaderPathInAttr===undefined||this.spreaderPathInAttr===null)&&(this.spreaderPathInAttr={fill:"#444",stroke:"#444","stroke-width":2,cursor:"pointer"}),(this.spreaderPathOutAttr===undefined||this.spreaderPathOutAttr===null)&&(this.spreaderPathOutAttr={fill:"#444",stroke:"#444","stroke-width":2,cursor:"pointer"}),(this.spreaderTitleInAttr===undefined||this.spreaderTitleInAttr===null)&&(this.spreaderTitleInAttr={fill:"#eee",stroke:"#444",cursor:"pointer"}),(this.spreaderTitleOutAttr===undefined||this.spreaderTitleOutAttr===null)&&(this.spreaderTitleOutAttr={fill:"#eee",stroke:"#444",cursor:"pointer"}),(this.markerAttr===undefined||this.markerAttr===null)&&(this.markerAttr={stroke:"#444","stroke-width":2}))};wheelnavItem.prototype.styleNavItem=function(){this.wheelnav.cssMode?(this.slicePathAttr={"class":this.wheelnav.getSliceCssClass(this.wheelItemIndex,"basic")},this.sliceHoverAttr={"class":this.wheelnav.getSliceCssClass(this.wheelItemIndex,"hover")},this.sliceSelectedAttr={"class":this.wheelnav.getSliceCssClass(this.wheelItemIndex,"selected")},this.titleAttr={"class":this.wheelnav.getTitleCssClass(this.wheelItemIndex,"basic")},this.titleHoverAttr={"class":this.wheelnav.getTitleCssClass(this.wheelItemIndex,"hover")},this.titleSelectedAttr={"class":this.wheelnav.getTitleCssClass(this.wheelItemIndex,"selected")},this.linePathAttr={"class":this.wheelnav.getLineCssClass(this.wheelItemIndex,"basic")},this.lineHoverAttr={"class":this.wheelnav.getLineCssClass(this.wheelItemIndex,"hover")},this.lineSelectedAttr={"class":this.wheelnav.getLineCssClass(this.wheelItemIndex,"selected")}):(this.slicePathAttr={stroke:"#333","stroke-width":0,cursor:"pointer","fill-opacity":1},this.sliceHoverAttr={stroke:"#222","stroke-width":0,cursor:"pointer","fill-opacity":.77},this.sliceSelectedAttr={stroke:"#111","stroke-width":0,cursor:"default","fill-opacity":1},this.titleAttr={font:this.titleFont,fill:"#333",stroke:"none",cursor:"pointer"},this.titleHoverAttr={font:this.titleFont,fill:"#222",cursor:"pointer",stroke:"none"},this.titleSelectedAttr={font:this.titleFont,fill:"#fff",cursor:"default"},this.linePathAttr={stroke:"#444","stroke-width":1,cursor:"pointer"},this.lineHoverAttr={stroke:"#222","stroke-width":2,cursor:"pointer"},this.lineSelectedAttr={stroke:"#444","stroke-width":1,cursor:"default"});this.sliceClickablePathAttr={fill:"#FFF",stroke:"#FFF","stroke-width":0,cursor:"pointer","fill-opacity":.01};this.sliceClickableHoverAttr={stroke:"#FFF","stroke-width":0,cursor:"pointer"};this.sliceClickableSelectedAttr={stroke:"#FFF","stroke-width":0,cursor:"default"}};wheelnav.prototype.getSliceCssClass=function(n,t){return"wheelnav-"+this.holderId+"-slice-"+t+"-"+n};wheelnav.prototype.getTitleCssClass=function(n,t){return"wheelnav-"+this.holderId+"-title-"+t+"-"+n};wheelnav.prototype.getLineCssClass=function(n,t){return"wheelnav-"+this.holderId+"-line-"+t+"-"+n};wheelnav.prototype.getSpreaderCssClass=function(n){return"wheelnav-"+this.holderId+"-spreader-"+n};wheelnav.prototype.getSpreaderTitleCssClass=function(n){return"wheelnav-"+this.holderId+"-spreadertitle-"+n};wheelnav.prototype.getMarkerCssClass=function(){return"wheelnav-"+this.holderId+"-marker"};var pathHelper=function(){return this.sliceRadius=0,this.startAngle=0,this.middleAngle=0,this.endAngle=0,this.sliceAngle=0,this.startTheta=0,this.middleTheta=0,this.endTheta=0,this.titlePosX=0,this.titlePosY=0,this.titleRadius=0,this.titleTheta=0,this.custom=null,this.centerX=0,this.centerY=0,this.wheelRadius=0,this.itemIndex=0,this.navItemCount=0,this.navAngle=0,this.setBaseValue=function(n,t){t===null?t=new slicePathCustomization:this.custom=t;this.sliceRadius=this.wheelRadius*n*.9;this.middleAngle=this.startAngle+this.sliceAngle/2;this.endAngle=this.startAngle+this.sliceAngle;this.startTheta=this.getTheta(this.startAngle);this.middleTheta=this.getTheta(this.middleAngle);this.endTheta=this.getTheta(this.endAngle);t!==null?(t.titleRadiusPercent!==null&&(this.titleRadius=this.sliceRadius*t.titleRadiusPercent),t.titleSliceAnglePercent!==null&&(this.titleTheta=this.getTheta(this.startAngle+this.sliceAngle*t.titleSliceAnglePercent))):(this.titleRadius=this.sliceRadius*.5,this.titleTheta=this.middleTheta);this.setTitlePos()},this.setTitlePos=function(){this.titlePosX=this.titleRadius*Math.cos(this.titleTheta)+this.centerX;this.titlePosY=this.titleRadius*Math.sin(this.titleTheta)+this.centerY},this.getX=function(n,t){return t*Math.cos(this.getTheta(n))+this.centerX},this.getY=function(n,t){return t*Math.sin(this.getTheta(n))+this.centerY},this.MoveTo=function(n,t){return["M",this.getX(n,t),this.getY(n,t)]},this.MoveToCenter=function(){return["M",this.centerX,this.centerY]},this.LineTo=function(n,t,i,r){return i===undefined&&(i=n),r===undefined&&(r=t),["L",this.getX(n,t),this.getY(i,r)]},this.ArcTo=function(n,t,i){return["A",n,n,0,0,1,this.getX(t,i),this.getY(t,i)]},this.ArcBackTo=function(n,t,i){return["A",n,n,0,0,0,this.getX(t,i),this.getY(t,i)]},this.StartSpreader=function(n,t,i){this.endAngle-this.startAngle==360?n.push(this.MoveTo(t,i)):(n.push(this.MoveToCenter()),n.push(this.LineTo(t,i)))},this.Close=function(){return["z"]},this.getTheta=function(n){return n%360*Math.PI/180},this},slicePathCustomization=function(){return this.titleRadiusPercent=.5,this.titleSliceAnglePercent=.5,this},spreaderPathCustomization=function(){return this.titleRadiusPercent=0,this.titleSliceAnglePercent=.5,this.spreaderPercent=1,this},markerPathCustomization=function(){return this.titleRadiusPercent=1,this.titleSliceAnglePercent=.5,this.markerPercent=1.05,this};slicePath=function(){return this.NullSlice=function(n,t,i){return n.setBaseValue(t,i),{slicePathString:"",linePathString:"",titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.NullInitSlice=function(n,t,i){return n.setBaseValue(t,i),slicePathString=[n.MoveToCenter(),n.Close()],{slicePathString:slicePathString,linePathString:slicePathString,titlePosX:n.centerX,titlePosY:n.centerY}},this.PieSliceCustomization=function(){var n=new slicePathCustomization;return n.titleRadiusPercent=.6,n.arcBaseRadiusPercent=1,n.arcRadiusPercent=1,n.startRadiusPercent=0,n},this.PieSlice=function(n,t,i){i===null&&(i=PieSliceCustomization());n.setBaseValue(t,i);var r=n.sliceRadius*i.arcBaseRadiusPercent,u=n.sliceRadius*i.arcRadiusPercent;return slicePathString=[n.MoveTo(n.middleAngle,i.startRadiusPercent*n.sliceRadius),n.LineTo(n.startAngle,r),n.ArcTo(u,n.endAngle,r),n.Close()],{slicePathString:slicePathString,linePathString:"",titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.FlowerSlice=function(n,t,i){i===null&&(i=PieSliceCustomization(),i.titleRadiusPercent=.5,i.arcBaseRadiusPercent=.65,i.arcRadiusPercent=.14);var r=PieSlice(n,t,i);return{slicePathString:r.slicePathString,linePathString:"",titlePosX:r.titlePosX,titlePosY:r.titlePosY}},this.PieArrowSliceCustomization=function(){var n=new slicePathCustomization;return n.titleRadiusPercent=.6,n.arrowRadiusPercent=1.1,n},this.PieArrowSlice=function(n,t,i){i===null&&(i=PieArrowSliceCustomization());n.setBaseValue(t,i);r=n.sliceRadius;arrowAngleStart=n.startAngle+n.sliceAngle*.45;arrowAngleEnd=n.startAngle+n.sliceAngle*.55;var u=r*i.arrowRadiusPercent;return slicePathString=[n.MoveToCenter(),n.LineTo(n.startAngle,r),n.ArcTo(r,arrowAngleStart,r),n.LineTo(n.middleAngle,u),n.LineTo(arrowAngleEnd,r),n.ArcTo(r,n.endAngle,r),n.Close()],{slicePathString:slicePathString,linePathString:"",titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.PieArrowBasePieSlice=function(n,t,i){i===null&&(i=PieArrowSliceCustomization());i.arrowRadiusPercent=1;var r=PieArrowSlice(n,t,i);return{slicePathString:r.slicePathString,linePathString:"",titlePosX:r.titlePosX,titlePosY:r.titlePosY}},this.DonutSliceCustomization=function(){var n=new slicePathCustomization;return n.minRadiusPercent=.37,n.maxRadiusPercent=.9,n},this.DonutSlice=function(n,t,i){return i===null&&(i=DonutSliceCustomization()),maxRadius=n.wheelRadius*t*i.maxRadiusPercent,minRadius=n.wheelRadius*t*i.minRadiusPercent,n.setBaseValue(t,i),n.titleRadius=(maxRadius+minRadius)/2,n.setTitlePos(),slicePathString=[n.MoveTo(n.startAngle,minRadius),n.LineTo(n.startAngle,maxRadius),n.ArcTo(maxRadius,n.endAngle,maxRadius),n.LineTo(n.endAngle,minRadius),n.ArcBackTo(minRadius,n.startAngle,minRadius),n.Close()],{slicePathString:slicePathString,linePathString:"",titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.CogSliceCustomization=function(){var n=new slicePathCustomization;return n.titleRadiusPercent=.55,n.isBasePieSlice=!1,n},this.CogSlice=function(n,t,i){return i===null&&(i=CogSliceCustomization()),n.setBaseValue(t,i),r=n.sliceRadius,rbase=n.wheelRadius*t*.83,percentAngle0625=n.startAngle+n.sliceAngle*.0625,percentAngle1250=n.startAngle+n.sliceAngle*.125,percentAngle1875=n.startAngle+n.sliceAngle*.1875,percentAngle2500=n.startAngle+n.sliceAngle*.25,percentAngle3125=n.startAngle+n.sliceAngle*.3125,percentAngle3750=n.startAngle+n.sliceAngle*.375,percentAngle4375=n.startAngle+n.sliceAngle*.4375,percentAngle5000=n.startAngle+n.sliceAngle*.5,percentAngle5625=n.startAngle+n.sliceAngle*.5625,percentAngle6250=n.startAngle+n.sliceAngle*.625,percentAngle6875=n.startAngle+n.sliceAngle*.6875,percentAngle7500=n.startAngle+n.sliceAngle*.75,percentAngle8125=n.startAngle+n.sliceAngle*.8125,percentAngle8750=n.startAngle+n.sliceAngle*.875,percentAngle9375=n.startAngle+n.sliceAngle*.9375,percentAngle9687=n.startAngle+n.sliceAngle*.96875,i.isBasePieSlice?(r=rbase,slicePathString=[n.MoveToCenter(),n.LineTo(n.startAngle,r),n.ArcTo(r,percentAngle0625,r),n.ArcTo(r,percentAngle1250,r),n.ArcTo(r,percentAngle1875,r),n.ArcTo(r,percentAngle2500,r),n.ArcTo(r,percentAngle3125,r),n.ArcTo(r,percentAngle3750,r),n.ArcTo(r,percentAngle4375,r),n.ArcTo(r,percentAngle5000,r),n.ArcTo(r,percentAngle5625,r),n.ArcTo(r,percentAngle6250,r),n.ArcTo(r,percentAngle6875,r),n.ArcTo(r,percentAngle7500,r),n.ArcTo(r,percentAngle8125,r),n.ArcTo(r,percentAngle8750,r),n.ArcTo(r,percentAngle9375,r),n.ArcTo(r,percentAngle9687,r),n.ArcTo(r,n.endAngle,r),n.Close()]):slicePathString=[n.MoveToCenter(),n.LineTo(n.startAngle,r),n.ArcTo(r,percentAngle0625,r),n.LineTo(percentAngle0625,rbase),n.ArcTo(rbase,percentAngle1875,rbase),n.LineTo(percentAngle1875,r),n.ArcTo(r,percentAngle3125,r),n.LineTo(percentAngle3125,rbase),n.ArcTo(rbase,percentAngle4375,rbase),n.LineTo(percentAngle4375,r),n.ArcTo(r,percentAngle5625,r),n.LineTo(percentAngle5625,rbase),n.ArcTo(rbase,percentAngle6875,rbase),n.LineTo(percentAngle6875,r),n.ArcTo(r,percentAngle8125,r),n.LineTo(percentAngle8125,rbase),n.ArcTo(rbase,percentAngle9375,rbase),n.LineTo(percentAngle9375,r),n.ArcTo(r,n.endAngle,r),n.Close()],{slicePathString:slicePathString,linePathString:"",titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.CogBasePieSlice=function(n,t,i){i===null&&(i=CogSliceCustomization());i.isBasePieSlice=!0;var r=CogSlice(n,t,i);return{slicePathString:r.slicePathString,linePathString:"",titlePosX:r.titlePosX,titlePosY:r.titlePosY}},this.StarSliceCustomization=function(){var n=new slicePathCustomization;return n.titleRadiusPercent=.44,n.minRadiusPercent=.5,n.isBasePieSlice=!1,n},this.StarSlice=function(n,t,i){return i===null&&(i=StarSliceCustomization()),n.setBaseValue(t,i),r=n.wheelRadius*t,rbase=r*i.minRadiusPercent,i.isBasePieSlice?(r=n.sliceRadius,slicePathString=[n.MoveToCenter(),n.LineTo(n.startAngle,r),n.ArcTo(r,n.middleAngle,r),n.ArcTo(r,n.endAngle,r),n.Close()]):slicePathString=[n.MoveToCenter(),n.LineTo(n.startAngle,rbase),n.LineTo(n.middleAngle,r),n.LineTo(n.endAngle,rbase),n.Close()],{slicePathString:slicePathString,linePathString:"",titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.StarBasePieSlice=function(n,t,i){i===null&&(i=StarSliceCustomization());i.titleRadiusPercent=.6;i.isBasePieSlice=!0;var r=StarSlice(n,t,i);return{slicePathString:r.slicePathString,linePathString:"",titlePosX:r.titlePosX,titlePosY:r.titlePosY}},this.MenuSliceCustomization=function(){var n=new slicePathCustomization;return n.menuRadius=35,n.titleRadiusPercent=.63,n.isSelectedLine=!1,n.lineBaseRadiusPercent=0,n},this.MenuSlice=function(n,t,i){var u,r;return i===null&&(i=MenuSliceCustomization()),n.setBaseValue(t,i),x=n.centerX,y=n.centerY,u=n.wheelRadius*t,n.titleRadius=u*i.titleRadiusPercent,n.setTitlePos(),r=t*i.menuRadius,t<=.05&&(r=10),middleTheta=n.middleTheta,slicePathString=[["M",n.titlePosX-r*Math.cos(middleTheta),n.titlePosY-r*Math.sin(middleTheta)],["A",r,r,0,0,1,n.titlePosX+r*Math.cos(middleTheta),n.titlePosY+r*Math.sin(middleTheta)],["A",r,r,0,0,1,n.titlePosX-r*Math.cos(middleTheta),n.titlePosY-r*Math.sin(middleTheta)],["z"]],linePathString=t<=.05?[["M",x,y],["A",1,1,0,0,1,x+1,y+1]]:i.isSelectedLine?[n.MoveTo(n.middleAngle,i.lineBaseRadiusPercent*u),n.ArcTo(u/3,n.middleAngle,n.titleRadius-r)]:[n.MoveTo(n.middleAngle,i.lineBaseRadiusPercent*u),n.ArcTo(u/2,n.middleAngle,n.titleRadius-r)],{slicePathString:slicePathString,linePathString:linePathString,titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.MenuSliceSelectedLine=function(n,t,i){i===null&&(i=MenuSliceCustomization());i.isSelectedLine=!0;var r=MenuSlice(n,t,i);return{slicePathString:r.slicePathString,linePathString:r.linePathString,titlePosX:r.titlePosX,titlePosY:r.titlePosY}},this.MenuSliceWithoutLine=function(n,t,i){var r=MenuSlice(n,t,i);return{slicePathString:r.slicePathString,linePathString:"",titlePosX:r.titlePosX,titlePosY:r.titlePosY}},this.LineSlice=function(n,t,i){return n.setBaseValue(t,i),r=n.sliceRadius,n.sliceAngle>60&&n.sliceAngle<180?(n.titleRadius=r*(36/n.sliceAngle),n.setTitlePos()):(n.titleRadius=r*.55,n.setTitlePos()),slicePathString=n.sliceAngle<180?[n.MoveToCenter(),n.LineTo(n.startAngle,r),n.LineTo(n.endAngle,r),n.Close()]:n.startAngle===180||n.startAngle===0||n.startAngle===-180||n.startAngle===360?[n.MoveToCenter(),n.LineTo(n.startAngle,r),n.LineTo(n.startAngle,r,n.middleAngle,r),n.LineTo(n.endAngle,r,n.middleAngle,r),n.LineTo(n.endAngle,r),n.Close()]:[n.MoveToCenter(),n.LineTo(n.startAngle,r),n.LineTo(n.middleAngle,r,n.startAngle,r),n.LineTo(n.middleAngle,r,n.endAngle,r),n.LineTo(n.endAngle,r),n.Close()],{slicePathString:slicePathString,linePathString:"",titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.EyeSliceCustomization=function(){var n=new slicePathCustomization;return n.titleRadiusPercent=.68,n},this.EyeSlice=function(n,t,i){return i===null&&(i=EyeSliceCustomization()),n.setBaseValue(t,i),r=n.wheelRadius*t*.7,t===0&&(r=.01),startAngle=n.startAngle,endAngle=n.endAngle,n.sliceAngle===180&&(startAngle=n.startAngle+n.sliceAngle/4,endAngle=n.startAngle+n.sliceAngle-n.sliceAngle/4),slicePathString=[n.MoveTo(endAngle,r),n.ArcTo(r,startAngle,r),n.ArcTo(r,endAngle,r),n.Close()],{slicePathString:slicePathString,linePathString:"",titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.WheelSlice=function(n,t,i){n.setBaseValue(t,i);x=n.centerX;y=n.centerY;r=n.sliceRadius;startTheta=n.startTheta;middleTheta=n.middleTheta;endTheta=n.endTheta;var u;return n.sliceAngle<120?(n.titleRadius=r*.57,u=.9):n.sliceAngle<180?(n.titleRadius=r*.52,u=.91):(n.titleRadius=r*.45,u=.873),slicePathString=[n.MoveTo(n.middleAngle,r*.07),["L",r*.07*Math.cos(middleTheta)+r*.87*Math.cos(startTheta)+x,r*.07*Math.sin(middleTheta)+r*.87*Math.sin(startTheta)+y],["A",r*u,r*u,0,0,1,r*.07*Math.cos(middleTheta)+r*.87*Math.cos(endTheta)+x,r*.07*Math.sin(middleTheta)+r*.87*Math.sin(endTheta)+y],n.Close()],linePathString=[n.MoveTo(n.startAngle,r),n.ArcTo(r,n.endAngle,r),n.ArcBackTo(r,n.startAngle,r)],n.setTitlePos(),{slicePathString:slicePathString,linePathString:linePathString,titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.OuterStrokeSlice=function(n,t,i){return n.setBaseValue(t,i),x=n.centerX,y=n.centerY,r=n.sliceRadius,innerRadius=r/4,n.titleRadius=n.sliceAngle<120?r*.57:n.sliceAngle<180?r*.52:r*.45,linePathString=[n.MoveTo(n.startAngle,innerRadius),n.LineTo(n.startAngle,r),n.MoveTo(n.endAngle,innerRadius),n.LineTo(n.endAngle,r)],slicePathString=[n.MoveTo(n.startAngle,r),n.ArcTo(r,n.endAngle,r),n.ArcBackTo(r,n.startAngle,r),n.MoveTo(n.startAngle,innerRadius),n.ArcTo(innerRadius,n.endAngle,innerRadius),n.ArcBackTo(innerRadius,n.startAngle,innerRadius)],n.setTitlePos(),{slicePathString:slicePathString,linePathString:linePathString,titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.TabSlice=function(n){var i=n.wheelRadius*.9,r=360/n.sliceAngle,t=2*i/r;return x=n.centerX,y=n.centerY,itemIndex=n.itemIndex,titlePosX=x,titlePosY=itemIndex*t+y+t/2-i,slicePathString=[["M",x-t/2,itemIndex*t+y-i],["L",t/2+x,itemIndex*t+y-i],["L",t/2+x,(itemIndex+1)*t+y-i],["L",x-t/2,(itemIndex+1)*t+y-i],["z"]],{slicePathString:slicePathString,linePathString:"",titlePosX:titlePosX,titlePosY:titlePosY}},this.YinYangSlice=function(n,t,i){return n.setBaseValue(t,i),r=n.sliceRadius,slicePathString=[n.MoveToCenter(),n.ArcTo(r/2,n.startAngle,r),n.ArcTo(r,n.endAngle,r),n.ArcBackTo(r/2,0,0),n.Close()],titlePosX=n.getX(n.startAngle,r/2),titlePosY=n.getY(n.startAngle,r/2),{slicePathString:slicePathString,linePathString:slicePathString,titlePosX:titlePosX,titlePosY:titlePosY}},this.WebSlice=function(n,t,i){return n.setBaseValue(t,i),r=n.sliceRadius,n.titleRadius=r*.55,n.setTitlePos(),linePathString=[n.MoveToCenter(),n.LineTo(n.startAngle,r*1.1),n.MoveToCenter(),n.LineTo(n.endAngle,r*1.1),n.MoveTo(n.startAngle,r*.15),n.LineTo(n.endAngle,r*.15),n.MoveTo(n.startAngle,r*.35),n.LineTo(n.endAngle,r*.35),n.MoveTo(n.startAngle,r*.55),n.LineTo(n.endAngle,r*.55),n.MoveTo(n.startAngle,r*.75),n.LineTo(n.endAngle,r*.75),n.MoveTo(n.startAngle,r*.95),n.LineTo(n.endAngle,r*.95),n.Close()],{slicePathString:"",linePathString:linePathString,titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.WinterSliceCustomization=function(){var n=new slicePathCustomization;return n.titleRadiusPercent=.85,n.arcRadiusPercent=1,n},this.WinterSlice=function(n,t,i){i===null&&(i=WinterSliceCustomization());n.setBaseValue(t,i);sliceAngle=n.sliceAngle;parallelAngle=n.startAngle+sliceAngle/4;parallelAngle2=n.startAngle+sliceAngle/4*3;borderAngle1=n.startAngle+sliceAngle/200;borderAngle2=n.startAngle+sliceAngle/2-sliceAngle/200;borderAngle3=n.startAngle+sliceAngle/2+sliceAngle/200;borderAngle4=n.startAngle+sliceAngle-sliceAngle/200;var r=n.sliceRadius*i.arcRadiusPercent;return slicePathString=[n.MoveToCenter(),n.MoveTo(parallelAngle,r/100),n.LineTo(borderAngle1,r/2),n.LineTo(parallelAngle,r-r/100),n.LineTo(borderAngle2,r/2),n.LineTo(parallelAngle,r/100),n.MoveTo(parallelAngle2,r/100),n.LineTo(borderAngle4,r/2),n.LineTo(parallelAngle2,r-r/100),n.LineTo(borderAngle3,r/2),n.LineTo(parallelAngle2,r/100),n.Close()],linePathString=[n.MoveTo(parallelAngle,r),n.LineTo(borderAngle2,r/2),n.MoveTo(borderAngle3,r/2),n.LineTo(parallelAngle2,r)],{slicePathString:slicePathString,linePathString:linePathString,titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.TutorialSliceCustomization=function(){var n=new slicePathCustomization;return n.titleRadiusPercent=.6,n.isMoveTo=!1,n.isLineTo=!1,n.isArcTo=!1,n.isArcBackTo=!1,n},this.TutorialSlice=function(n,t,i){return i===null&&(i=TutorialSliceCustomization()),n.setBaseValue(t,i),slicePathString=[],slicePathString.push(n.MoveToCenter()),i.isMoveTo===!0&&slicePathString.push(n.MoveTo(n.middleAngle,n.sliceRadius/4)),i.isLineTo&&slicePathString.push(n.LineTo(n.startAngle,n.sliceRadius)),i.isArcTo&&slicePathString.push(n.ArcTo(n.sliceRadius,n.middleAngle,n.sliceRadius)),i.isArcBackTo&&slicePathString.push(n.ArcBackTo(n.sliceRadius,n.endAngle,n.sliceRadius)),slicePathString.push(n.Close()),linePathString=[n.MoveToCenter(),n.LineTo(n.startAngle,n.sliceRadius),n.ArcTo(n.sliceRadius,n.endAngle,n.sliceRadius),n.Close()],{slicePathString:slicePathString,linePathString:linePathString,titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this};sliceTransform=function(){this.startAngle=0;this.startTheta=0;this.middleTheta=0;this.endTheta=0;var t=function(t,i,r,u,f){this.startAngle=u;this.startTheta=n(startAngle);this.middleTheta=n(startAngle+f/2);this.endTheta=n(startAngle+f)},n=function(n){return n%360*Math.PI/180};return this.NullTransform=function(){return{sliceTransformString:"",lineTransformString:"",titleTransformString:""}},this.MoveMiddleTransform=function(i,r,u,f,e,o,s){var c,h,l,a;return t(i,r,u,f,e,o,s),c="t"+(u/10*Math.cos(middleTheta)).toString()+","+(u/10*Math.sin(middleTheta)).toString(),o!==null?h=n(-o):(l=f-s*e,h=n(l+e/2)),a="s1,r0,t"+(u/10*Math.cos(h)).toString()+","+(u/10*Math.sin(h)).toString(),{sliceTransformString:c,lineTransformString:c,titleTransformString:a}},this.RotateTransform=function(){var n="s1,r360";return{sliceTransformString:n,lineTransformString:n,titleTransformString:n}},this.RotateHalfTransform=function(){var n="s1,r90";return{sliceTransformString:n,lineTransformString:n,titleTransformString:n}},this.RotateTitleTransform=function(){return{sliceTransformString:"",lineTransformString:"",titleTransformString:"s1,r360"}},this.ScaleTransform=function(){var n="s1.2";return{sliceTransformString:n,lineTransformString:"",titleTransformString:n}},this.ScaleTitleTransform=function(){return{sliceTransformString:"",lineTransformString:"",titleTransformString:"s1.3"}},this.RotateScaleTransform=function(){var n="r360,s1.3";return{sliceTransformString:n,lineTransformString:"",titleTransformString:n}},this.CustomTransform=function(n,t,i,r,u,f,e,o){var s=o.scaleString+","+o.rotateString;return{sliceTransformString:s,lineTransformString:s,titleTransformString:s}},this.CustomTitleTransform=function(n,t,i,r,u,f,e,o){var s=o.scaleString+","+o.rotateString;return{sliceTransformString:"",lineTransformString:"",titleTransformString:s}},this};sliceTransformCustomization=function(){return this.scaleString="s1",this.rotateString="r0",this};spreader=function(n){var t,i;if(this.wheelnav=n,this.wheelnav.spreaderEnable){this.spreaderHelper=new pathHelper;this.spreaderHelper.centerX=this.wheelnav.centerX;this.spreaderHelper.centerY=this.wheelnav.centerY;this.spreaderHelper.navItemCount=this.wheelnav.navItemCount;this.spreaderHelper.navAngle=this.wheelnav.navAngle;this.spreaderHelper.wheelRadius=this.wheelnav.spreaderRadius;this.spreaderHelper.startAngle=this.wheelnav.spreaderStartAngle;this.spreaderHelper.sliceAngle=this.wheelnav.spreaderSliceAngle;t=this.wheelnav;this.animateeffect="bounce";this.animatetime=1500;this.wheelnav.animateeffect!==null&&(this.animateeffect=this.wheelnav.animateeffect);this.wheelnav.animatetime!==null&&(this.animatetime=this.wheelnav.animatetime);this.fontAttr=this.wheelnav.spreaderTitleFont!==null?{font:this.wheelnav.spreaderTitleFont}:{font:"100 32px Impact, Charcoal, sans-serif"};this.spreaderPathIn=this.wheelnav.spreaderPathFunction(this.spreaderHelper,this.wheelnav.spreaderInPercent,this.wheelnav.spreaderPathCustom);this.spreaderPathOut=this.wheelnav.spreaderPathFunction(this.spreaderHelper,this.wheelnav.spreaderOutPercent,this.wheelnav.spreaderPathCustom);i=this.spreaderPathOut;t.initPercentthis.wheelnav.minPercent?this.spreaderPathOut.spreaderPathString:this.spreaderPathIn.spreaderPathString;spreaderTransformAttr={path:currentPath};this.spreaderPath.animate(spreaderTransformAttr,this.animatetime,this.animateeffect);var t,i,r;this.wheelnav.currentPercent===this.wheelnav.maxPercent?(t=this.outTitle,i=this.wheelnav.spreaderTitleOutAttr,this.spreaderPath.attr(this.wheelnav.spreaderPathOutAttr),r=this.outTitleSizeTransform):(t=this.inTitle,i=this.wheelnav.spreaderTitleInAttr,this.spreaderPath.attr(this.wheelnav.spreaderPathInAttr),r=this.inTitleSizeTransform);wheelnavTitle().isPathTitle(t.title)?(i.path=t.path,i.transform=r):wheelnavTitle().isImageTitle(t.title)?(i.x=t.x,i.y=t.y,i.width=t.width,i.height=t.height,this.spreaderTitle.attr({src:t.src})):(offYOffset=0,t.title==="-"&&(offYOffset=3),i.x=t.x,i.y=t.y-offYOffset,t.title!==null&&this.spreaderTitle.attr({text:t.title}));this.spreaderTitle.animate(i,this.animatetime,this.animateeffect)}this.spreaderPath.toFront();this.spreaderTitle.toFront()}};spreaderPath=function(){return this.NullSpreader=function(n,t){return t===null&&(t=new spreaderPathCustomization),n.setBaseValue(t.spreaderPercent,t),{spreaderPathString:"",titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.PieSpreaderCustomization=function(){var n=new spreaderPathCustomization;return n.spreaderRadius=25,n.arcBaseRadiusPercent=1,n.arcRadiusPercent=1,n.startRadiusPercent=0,n},this.PieSpreader=function(n,t,i){i===null&&(i=PieSpreaderCustomization());n.setBaseValue(i.spreaderPercent*t,i);var r=n.sliceRadius*i.arcBaseRadiusPercent,u=n.sliceRadius*i.arcRadiusPercent;return spreaderPathString=[],n.StartSpreader(spreaderPathString,n.startAngle,r),spreaderPathString.push(n.ArcTo(u,n.middleAngle,r)),spreaderPathString.push(n.ArcTo(u,n.endAngle,r)),spreaderPathString.push(n.Close()),{spreaderPathString:spreaderPathString,titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.StarSpreaderCustomization=function(){var n=new spreaderPathCustomization;return n.minRadiusPercent=.5,n},this.StarSpreader=function(n,t,i){i===null&&(i=StarSpreaderCustomization());n.setBaseValue(i.spreaderPercent*t,i);rbase=n.wheelRadius*i.spreaderPercent*i.minRadiusPercent*t;r=n.sliceRadius;spreaderPathString=[];sliceAngle=n.sliceAngle/n.navItemCount;baseAngle=n.navAngle;n.endAngle-n.startAngle<360&&(baseAngle=n.startAngle);n.StartSpreader(spreaderPathString,baseAngle,r);for(var u=0;uIyobTLo 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%0DWzWW6uiZq5LY=35Fc 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 z z35ro#Npt5UHxuR`2bTz|*%NYTW(oQD#CZH@1y$wju-Pm-KBK{MvB;{wIH#|?DmCLJ zihL7S@*Cpru(I)w81l@i+6o%DZc*ShE4`%e(rZZ1;;#EdDgaw%-4U}R+J~)}Ba(8(1_*$a~?p9r@MXjBa*iGLp z!$GJ6AcE?MO!7+puPd|8m_`3#j$;#PxS7*ZVUJ0ba^k#Six&ygU>D{E(`u0PWl|+Q zOk>6K%s}30DI@yg;DsMqy#;L&H%P*BM+1(d*=snJzCR<^Y8|U*MNQn{Dgw+hSqDJE##BS2X zoK|0X^yjjSp362-Z{&lim)|HRFsU8DZ0eSBl zlUgL%P&tQLth4GZo*8xN1z&OYKhI9Jm~G6b4dpqUc4Jp^x7N_4kh#_o7yT0NQ8tYS zd5*pi!9MDowfNQ;=@22rB|9Xm&a$!s#GHZ#$8E;jI!?0Rco*z>o{Xa1!-+*ucI<;U v_w|%D$@dh`WHC4wHK=`c1MzsG3SF>PHn97iE2d|CKii=L=0>@OXU_ctL(L*? diff --git a/miniwob-sandbox/html/common/special/drag-cube/cube.css b/miniwob-sandbox/html/common/special/drag-cube/cube.css deleted file mode 100644 index 1948261..0000000 --- a/miniwob-sandbox/html/common/special/drag-cube/cube.css +++ /dev/null @@ -1,132 +0,0 @@ -.viewport { - -webkit-perspective: 800px; - -moz-perspective: 800px; - -ms-perspective: 800px; - -o-perspective: 800px; - perspective: 800px; - -webkit-perspective-origin: 50% 80px; - -moz-perspective-origin: 50% 80px; - -ms-perspective-origin: 50% 80px; - -o-perspective-origin: 50% 80px; - perspective-origin: 50% 80px; - -webkit-transform: scale(0.8, 0.8); - -moz-transform: scale(0.8, 0.8); - -ms-transform: scale(0.8, 0.8); - -o-transform: scale(0.8, 0.8); - transform: scale(0.8, 0.8); -} - -.cube { - position: relative; - margin: 20px auto; - height: 80px; - width: 80px; - -webkit-transform-style: preserve-3d; - -moz-transform-style: preserve-3d; - -ms-transform-style: preserve-3d; - -o-transform-style: preserve-3d; - transform-style: preserve-3d; - -webkit-transform: rotateX(136deg) rotateY(1122deg); - -moz-transform: rotateX(136deg) rotateY(1122deg); - -ms-transform: rotateX(136deg) rotateY(1122deg); - -o-transform: rotateX(136deg) rotateY(1122deg); - transform: rotateX(136deg) rotateY(1122deg); } - -.cube > div { - overflow: hidden; - position: absolute; - opacity: 0.9; - height: 80px; - width: 80px; - background-image: url("blank.png"); - -webkit-touch-callout: none; - -moz-touch-callout: none; - -ms-touch-callout: none; - -o-touch-callout: none; - touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - user-select: none; } - -.cube > div > div.cube-image { - width: 80px; - height: 80px; - -webkit-transform: rotate(180deg); - -moz-transform: rotate(180deg); - -ms-transform: rotate(180deg); - -o-transform: rotate(180deg); - transform: rotate(180deg); - line-height: 80px; - font-size: 80px; - text-align: center; - color: #1b9bd8; - -webkit-transition: color 600ms; - -moz-transition: color 600ms; - -ms-transition: color 600ms; - -o-transition: color 600ms; - transition: color 600ms; } - .cube > div > div.cube-image.active { - color: red; } - -.cube > div:hover { - cursor: pointer; } - -.cube > div:active { - cursor: pointer; } - -.cube > div:first-child { - -webkit-transform: rotateX(90deg) translateZ(40px); - -moz-transform: rotateX(90deg) translateZ(40px); - -ms-transform: rotateX(90deg) translateZ(40px); - -o-transform: rotateX(90deg) translateZ(40px); - transform: rotateX(90deg) translateZ(40px); - outline: 1px solid transparent; } - -.cube > div:nth-child(2) { - -webkit-transform: translateZ(40px); - -moz-transform: translateZ(40px); - -ms-transform: translateZ(40px); - -o-transform: translateZ(40px); - transform: translateZ(40px); - outline: 1px solid transparent; } - -.cube > div:nth-child(3) { - -webkit-transform: rotateY(90deg) translateZ(40px); - -moz-transform: rotateY(90deg) translateZ(40px); - -ms-transform: rotateY(90deg) translateZ(40px); - -o-transform: rotateY(90deg) translateZ(40px); - transform: rotateY(90deg) translateZ(40px); - outline: 1px solid transparent; } - -.cube > div:nth-child(4) { - -webkit-transform: rotateY(180deg) translateZ(40px); - -moz-transform: rotateY(180deg) translateZ(40px); - -ms-transform: rotateY(180deg) translateZ(40px); - -o-transform: rotateY(180deg) translateZ(40px); - transform: rotateY(180deg) translateZ(40px); - outline: 1px solid transparent; } - -.cube > div:nth-child(5) { - -webkit-transform: rotateY(-90deg) translateZ(40px); - -moz-transform: rotateY(-90deg) translateZ(40px); - -ms-transform: rotateY(-90deg) translateZ(40px); - -o-transform: rotateY(-90deg) translateZ(40px); - transform: rotateY(-90deg) translateZ(40px); - outline: 1px solid transparent; } - -.cube > div:nth-child(6) { - -webkit-transform: rotateX(-90deg) rotate(180deg) translateZ(40px); - -moz-transform: rotateX(-90deg) rotate(180deg) translateZ(40px); - -ms-transform: rotateX(-90deg) rotate(180deg) translateZ(40px); - -o-transform: rotateX(-90deg) rotate(180deg) translateZ(40px); - transform: rotateX(-90deg) rotate(180deg) translateZ(40px); - outline: 1px solid transparent; } - -object { - opacity: 0.5; } - -object:hover { - opacity: 1; -} diff --git a/miniwob-sandbox/html/common/special/drag-cube/cube.js b/miniwob-sandbox/html/common/special/drag-cube/cube.js deleted file mode 100644 index c1715f1..0000000 --- a/miniwob-sandbox/html/common/special/drag-cube/cube.js +++ /dev/null @@ -1,358 +0,0 @@ -var cubePuzzle = {}; - -// reset the cube back to its default position. -cubePuzzle.reset = function(){ - document.getElementsByClassName('active')[0].setAttribute('class','cube-image'); - document.getElementsByClassName('cube-image')[2].removeAttribute('style'); - document.getElementsByClassName('cube-image')[3].removeAttribute('style'); - document.getElementsByClassName('cube-image')[5].setAttribute('class','cube-image active'); - cube.viewport.positionX = 1122; - cube.viewport.positionY = 136; -} - -// setup the cube on the screen. -cubePuzzle.setup = function() { - var events = new Events(); - events.add = function(obj) { - obj.events = { }; - } - events.implement = function(fn) { - fn.prototype = Object.create(Events.prototype); - } - - function Events() { - this.events = { }; - } - Events.prototype.on = function(name, fn) { - var events = this.events[name]; - if (events == undefined) { - this.events[name] = [ fn ]; - this.emit('event:on', fn); - } else { - if (events.indexOf(fn) == -1) { - events.push(fn); - this.emit('event:on', fn); - } - } - return this; - } - Events.prototype.once = function(name, fn) { - var events = this.events[name]; - fn.once = true; - if (!events) { - this.events[name] = [ fn ]; - this.emit('event:once', fn); - } else { - if (events.indexOf(fn) == -1) { - events.push(fn); - this.emit('event:once', fn); - } - } - return this; - } - Events.prototype.emit = function(name, args) { - var events = this.events[name]; - if (events) { - var i = events.length; - while(i--) { - if (events[i]) { - events[i].call(this, args); - if (events[i].once) { - delete events[i]; - } - } - } - } - return this; - } - Events.prototype.unbind = function(name, fn) { - if (name) { - var events = this.events[name]; - if (events) { - if (fn) { - var i = events.indexOf(fn); - if (i != -1) { - delete events[i]; - } - } else { - delete this.events[name]; - } - } - } else { - delete this.events; - this.events = { }; - } - return this; - } - - var userPrefix; - - var prefix = (function () { - var styles = window.getComputedStyle(document.documentElement, ''), - pre = (Array.prototype.slice - .call(styles) - .join('') - .match(/-(moz|webkit|ms)-/) || (styles.OLink === '' && ['', 'o']) - )[1], - dom = ('WebKit|Moz|MS|O').match(new RegExp('(' + pre + ')', 'i'))[1]; - userPrefix = { - dom: dom, - lowercase: pre, - css: '-' + pre + '-', - js: pre[0].toUpperCase() + pre.substr(1) - }; - })(); - - function bindEvent(element, type, handler) { - if(element.addEventListener) { - element.addEventListener(type, handler, false); - } else { - element.attachEvent('on' + type, handler); - } - } - - function Viewport(data) { - events.add(this); - - var self = this; - - this.element = data.element; - this.fps = data.fps; - this.sensivity = data.sensivity; - this.sensivityFade = data.sensivityFade; - this.touchSensivity = data.touchSensivity; - this.speed = data.speed; - - this.lastX = 0; - this.lastY = 0; - this.mouseX = 0; - this.mouseY = 0; - this.distanceX = 0; - this.distanceY = 0; - this.positionX = 1122; - this.positionY = 136; - this.torqueX = 0; - this.torqueY = 0; - - this.down = false; - this.upsideDown = false; - - this.previousPositionX = 0; - this.previousPositionY = 0; - - this.currentSide = 0; - this.calculatedSide = 0; - - - bindEvent(document, 'mousedown', function() { - self.down = true; - }); - - bindEvent(document, 'mouseup', function() { - self.down = false; - }); - - bindEvent(document, 'keyup', function() { - self.down = false; - }); - - bindEvent(document, 'mousemove', function(e) { - self.mouseX = e.pageX; - self.mouseY = e.pageY; - }); - - bindEvent(document, 'touchstart', function(e) { - - self.down = true; - e.touches ? e = e.touches[0] : null; - self.mouseX = e.pageX / self.touchSensivity; - self.mouseY = e.pageY / self.touchSensivity; - self.lastX = self.mouseX; - self.lastY = self.mouseY; - }); - - bindEvent(document, 'touchmove', function(e) { - if(e.preventDefault) { - e.preventDefault(); - } - - if(e.touches.length == 1) { - - e.touches ? e = e.touches[0] : null; - - self.mouseX = e.pageX / self.touchSensivity; - self.mouseY = e.pageY / self.touchSensivity; - - } - }); - - bindEvent(document, 'touchend', function(e) { - self.down = false; - }); - - setInterval(this.animate.bind(this), this.fps); - - } - events.implement(Viewport); - Viewport.prototype.animate = function() { - - this.distanceX = (this.mouseX - this.lastX); - this.distanceY = (this.mouseY - this.lastY); - - this.lastX = this.mouseX; - this.lastY = this.mouseY; - - if(this.down) { - this.torqueX = this.torqueX * this.sensivityFade + (this.distanceX * this.speed - this.torqueX) * this.sensivity; - this.torqueY = this.torqueY * this.sensivityFade + (this.distanceY * this.speed - this.torqueY) * this.sensivity; - } - - if(Math.abs(this.torqueX) > 1.0 || Math.abs(this.torqueY) > 1.0) { - if(!this.down) { - this.torqueX *= this.sensivityFade; - this.torqueY *= this.sensivityFade; - } - - this.positionY -= this.torqueY; - - if(this.positionY > 360) { - this.positionY -= 360; - } else if(this.positionY < 0) { - this.positionY += 360; - } - - if(this.positionY > 90 && this.positionY < 270) { - this.positionX -= this.torqueX; - - if(!this.upsideDown) { - this.upsideDown = true; - this.emit('upsideDown', { upsideDown: this.upsideDown }); - } - - } else { - - this.positionX += this.torqueX; - - if(this.upsideDown) { - this.upsideDown = false; - this.emit('upsideDown', { upsideDown: this.upsideDown }); - } - } - - if(this.positionX > 360) { - this.positionX -= 360; - } else if(this.positionX < 0) { - this.positionX += 360; - } - - if(!(this.positionY >= 46 && this.positionY <= 130) && !(this.positionY >= 220 && this.positionY <= 308)) { - if(this.upsideDown) { - if(this.positionX >= 42 && this.positionX <= 130) { - this.calculatedSide = 3; - } else if(this.positionX >= 131 && this.positionX <= 223) { - this.calculatedSide = 2; - } else if(this.positionX >= 224 && this.positionX <= 314) { - this.calculatedSide = 5; - } else { - this.calculatedSide = 4; - } - } else { - if(this.positionX >= 42 && this.positionX <= 130) { - this.calculatedSide = 5; - } else if(this.positionX >= 131 && this.positionX <= 223) { - this.calculatedSide = 4; - } else if(this.positionX >= 224 && this.positionX <= 314) { - this.calculatedSide = 3; - } else { - this.calculatedSide = 2; - } - } - } else { - if(this.positionY >= 46 && this.positionY <= 130) { - this.calculatedSide = 6; - } - - if(this.positionY >= 220 && this.positionY <= 308) { - this.calculatedSide = 1; - } - } - - if(this.calculatedSide !== this.currentSide) { - this.currentSide = this.calculatedSide; - this.emit('sideChange'); - } - - } - - this.element.style[userPrefix.js + 'Transform'] = 'rotateX(' + this.positionY + 'deg) rotateY(' + this.positionX + 'deg)'; - - if(this.positionY != this.previousPositionY || this.positionX != this.previousPositionX) { - this.previousPositionY = this.positionY; - this.previousPositionX = this.positionX; - - this.emit('rotate'); - - } - - } - var viewport = new Viewport({ - element: document.getElementsByClassName('cube')[0], - fps: 20, - sensivity: .1, - sensivityFade: .93, - speed: 2, - touchSensivity: 1.5 - }); - - function Cube(data) { - var self = this; - - this.element = data.element; - this.sides = this.element.getElementsByClassName('side'); - - this.viewport = data.viewport; - this.viewport.on('rotate', function() { - self.rotateSides(); - }); - this.viewport.on('upsideDown', function(obj) { - self.upsideDown(obj); - }); - this.viewport.on('sideChange', function() { - self.sideChange(); - }); - } - Cube.prototype.rotateSides = function() { - var viewport = this.viewport; - if(viewport.positionY > 90 && viewport.positionY < 270) { - this.sides[0].getElementsByClassName('cube-image')[0].style[userPrefix.js + 'Transform'] = 'rotate(' + (viewport.positionX + viewport.torqueX) + 'deg)'; - this.sides[5].getElementsByClassName('cube-image')[0].style[userPrefix.js + 'Transform'] = 'rotate(' + -(viewport.positionX + 180 + viewport.torqueX) + 'deg)'; - } else { - this.sides[0].getElementsByClassName('cube-image')[0].style[userPrefix.js + 'Transform'] = 'rotate(' + (viewport.positionX - viewport.torqueX) + 'deg)'; - this.sides[5].getElementsByClassName('cube-image')[0].style[userPrefix.js + 'Transform'] = 'rotate(' + -(viewport.positionX + 180 - viewport.torqueX) + 'deg)'; - } - } - Cube.prototype.upsideDown = function(obj) { - - var deg = (obj.upsideDown == true) ? '180deg' : '0deg'; - var i = 5; - - while(i > 0 && --i) { - this.sides[i].getElementsByClassName('cube-image')[0].style[userPrefix.js + 'Transform'] = 'rotate(' + deg + ')'; - } - - } - Cube.prototype.sideChange = function() { - - for(var i = 0; i < this.sides.length; ++i) { - this.sides[i].getElementsByClassName('cube-image')[0].className = 'cube-image'; - } - - this.sides[this.viewport.currentSide - 1].getElementsByClassName('cube-image')[0].className = 'cube-image active'; - - } - - cube = new Cube({ - viewport: viewport, - element: document.getElementsByClassName('cube')[0] - }); -} diff --git a/miniwob-sandbox/html/common/special/email-inbox-nl/templates.js b/miniwob-sandbox/html/common/special/email-inbox-nl/templates.js deleted file mode 100644 index c871856..0000000 --- a/miniwob-sandbox/html/common/special/email-inbox-nl/templates.js +++ /dev/null @@ -1,515 +0,0 @@ -var TEMPLATES = { - "forward":{ - "train":[ - "Ask NAME to forward her messages to DEST.", - "Automatically forward all emails from NAME to DEST.", - "Can you forward the email from NAME to DEST please?", - "Can you please retrieve an email I received from NAME and forward it to DEST?", - "Copy the email from NAME and send it to DEST.", - "Could you find NAME's email, then forward it to DEST?", - "Could you forward NAME's email to DEST?", - "DEST must be forwarded email from NAME.", - "FOrward to DEST the email that NAME sent to me today.", - "Find NAME's e-mail and send it along to DEST.", - "Find NAME's email and forward it to DEST, please.", - "Find NAME's email and forward to DEST.", - "Find NAME's email and send it to DEST.", - "Find NAME's email, forward to DEST", - "Find NAME's last email and forward it to DEST.", - "Find an email from NAME and send it to DEST", - "Find the NAME email and forward it to DEST.", - "Find the e-mail from NAME and send it to DEST.", - "Find the email by NAME and forward it to DEST.", - "Find the email by NAME and send it on to DEST.", - "Find the email from DEST and forward it to NAME.", - "Find the email from NAME and forward it to DEST.", - "Find the email from NAME and give it to DEST.", - "Find the email from NAME and send it to DEST.", - "Find the email that NAME sent and forward it to DEST.", - "Find the first email from NAME and forward it to DEST.", - "Find the last email NAME sent and forward it to DEST.", - "Find yesterday's emails from DEST and forward them to NAME.", - "Forward DEST NAME's latest email.", - "Forward DEST a copy of NAME's e-mail.", - "Forward DEST all of NAME's emails.", - "Forward DEST email from NAME.", - "Forward DEST the email from NAME.", - "Forward DEST the latest email from NAME.", - "Forward DEST's email from yesterday to NAME.", - "Forward NAME's e-mail to DEST.", - "Forward NAME's email that is in the email app to DEST.", - "Forward NAME's email to DEST", - "Forward NAME's email to DEST.", - "Forward all messages from DEST to NAME.", - "Forward email from NAME to DEST", - "Forward email from NAME to DEST.", - "Forward email to DEST from NAME.", - "Forward most recent email from NAME to DEST.", - "Forward the email from NAME in the email app to DEST.", - "Forward the email from NAME to DEST.", - "Forward the email in the inbox app from NAME to DEST.", - "Forward the last email from NAME to DEST.", - "Foward the email by NAME to DEST please.", - "Give DEST NAME's Email", - "Give DEST the email from NAME.", - "Go ahead and forward to DEST the e-mail that I received from NAME.", - "Go ahead and send DEST the e-mail I got from NAME.", - "I command you to give DEST the email from NAME.", - "I need an email written to me by NAME sent to DEST", - "I need to forward NAME's e-mail to DEST.", - "I need to forward NAME's message to DEST", - "I need you to forward the email to DEST from NAME.", - "I need you to take NAME's email and give it to DEST.", - "I want DEST to be forwarded email from NAME.", - "I want to forward NAME's email to DEST.", - "I want to forward the email from NAME over to DEST.", - "I want to send DEST the e-mail that I got from NAME.", - "I want to send NAME's email to DEST.", - "I want to send the email I got from NAME over to DEST.", - "I would like you to send NAME's email to DEST.", - "I'd like to email DEST the email I got from NAME.", - "I'd like to send DEST the email I got from NAME.", - "I'd like to send the email from NAME to DEST's email.", - "In my inbox, there should be an email from NAME, it needs to be forwarded to DEST.", - "Let DEST receive the email message by NAME.", - "Let me send NAME's email to DEST.", - "Let me send the email that I received from NAME over to DEST.", - "Locate NAME's email and forward it to DEST.", - "Locate email from NAME and forward it to DEST.", - "Locate email from NAME and send to DEST.", - "Look for the email that NAME wrote in this email app and forward it to DEST", - "Make sure DEST recieve emails from NAME in primary.", - "Make sure the email written by NAME is forwarded to DEST.", - "NAME wrote an email in this app that needs to be forwarded to DEST.", - "NAME's email, will you forward that to DEST?", - "Open NAME's email and forward it to DEST", - "Open NAME's latest email and forward it to DEST.", - "Open email, forward message from NAME to DEST", - "Open primary email folder, forward NAME's message to DEST.", - "Open the e-mail from NAME and forward it to DEST.", - "Please find my email from NAME and forward it to DEST.", - "Please find that email from NAME and forward to by email to DEST.", - "Please forward NAME's email to DEST.", - "Please forward the email NAME sent today to DEST", - "Please locate NAME's email and put a copy in DEST's inbox.", - "Please search for the email from NAME and give it to DEST.", - "Please send DEST NAME's email.", - "Please send NAME's email to DEST.", - "Pull up the e-mail from NAME and forward it to DEST.", - "Pull up the email from NAME and forward it to DEST.", - "Pull up the email from NAME and let me send it to DEST.", - "Remind me to forward the email from NAME to DEST.", - "Resend NAME's e-mail back to DEST", - "Search for NAME's email and forward to DEST.", - "Search for an email written by NAME and send that email to DEST.", - "Search todays email and send the one from NAME, to DEST.", - "Select email from NAME and send to DEST", - "Send DEST NAME's email.", - "Send DEST the email from NAME.", - "Send DEST the email that NAME sent yesterday.", - "Send DEST the email written by NAME.", - "Send DEST the last email from NAME", - "Send Email in primary from NAME to DEST.", - "Send NAME the message from DEST.", - "Send NAME's email DEST.", - "Send NAME's email to DEST.", - "Send email from NAME to DEST.", - "Send my email from NAME to DEST.", - "Send the email from NAME to DEST.", - "Send to DEST NAME's email.", - "Send to DEST an email found in the app that is written by NAME.", - "Send to DEST the email from NAME.", - "Send to DEST the email in this app that is written by NAME.", - "Take NAME's email and give it to DEST.", - "The email that is found in the email app and written by NAME needs to be forwarded to DEST.", - "Will you find the email from NAME and forward it to DEST?", - "find the email from NAME and forward it to DEST", - "forward NAME's email to DEST", - "forward NAME's last email to DEST", - "forward any email from NAME to DEST", - "forward the email from NAME to DEST.", - "please forward NAMEs last email to DEST", - "pull up NAME's email and send to to DEST", - "pull up NAME's last email and send it to DEST", - "put DEST on the list of people to send NAME's email to", - "send DEST the email from NAME", - "send NAME's email to DEST", - "send NAME's latest email to DEST" - ], - "test":[ - "DEST needs the email in the inbox app written by NAME forwarded to him.", - "DEST needs to receive the email that NAME sent.", - "Email DEST the forward from NAME in Primary inbox.", - "Find NAME's email and forward it to DEST.", - "Find email from NAME and send to DEST.", - "Find emails from NAME in primary inbox and forward them to DEST.", - "Find the last email from NAME and forward it to DEST.", - "Forward all mail from NAME to DEST.", - "Forward email by NAME and forward to DEST.", - "Forward the last email from NAME to DEST", - "Forward to DEST an email in this application from NAME.", - "Forward to DEST email from NAME.", - "Highlight NAME's email and forward to DEST.", - "I want to find the email from NAME and then send to DEST.", - "I want to forward DEST email from NAME.", - "NAME's email should be forwarded to DEST.", - "NAME's email that is in this app needs to be forwarded to DEST.", - "Please find the email from NAME and forward it to DEST.", - "Please forward to DEST the e-mail that NAME sent me.", - "Please take the e-mail that NAME sent me and forward it to DEST.", - "Search through the emaiol app for an email written by NAME and send that email to DEST.", - "Send the email NAME sent to me to DEST.", - "Send the email by NAME in the inbox app to DEST.", - "Send the latest email from NAME to DEST by way of forward." - ] - }, - "reply":{ - "train":[ - "\"MSG\" is my reply to NAME's most recent email.", - "Answer NAME's email with \"MSG\"", - "Answer the new email from NAME with \"MSG\"", - "AnswerNAME's email with \"MSG\"", - "Can you email NAME and tell her \"MSG\"", - "Can you please respond in my primary email box to NAME and write \"MSG\"", - "Create a reply email to NAME saying \"MSG\".", - "Email \"MSG\" to NAME.", - "Email NAME back to tell her \"MSG\"", - "Email NAME the message, \"MSG\"", - "Email NAME, \"MSG\"", - "Find NAME's e-mail and reply with the words \"MSG\"", - "Find NAME's email and reply \"MSG\".", - "Find NAME's email and reply saying \"MSG\"", - "Find NAME's email and respond with \"MSG\"", - "Find email from NAME and reply with \"MSG\".", - "Find email from NAME, then reply to NAME \"MSG\"", - "Find the NAME email and reply, \"MSG\"", - "Find the NAME email and tell her, \"MSG\"", - "Find the email from NAME in this email app and respond by saying \"MSG\".", - "First, find the most recent email from NAME; then, send him a message saying \"MSG\"", - "Go ahead and reply to NAME with the words \"MSG\"", - "Hi NAME, I'll \"MSG\".", - "I need to reply to NAME's email with the message \"MSG\"", - "I need to respond to NAME's last email sent to me and tell her, \"MSG\".", - "I need to see NAME's email, please reply \"MSG\"", - "I need to send an email to NAME letting her know I will \"MSG\".", - "I want to reply to NAME by saying \"MSG\"", - "I want you to reply to NAME and send \"MSG\"", - "I would like to create the message \"MSG\" and use it to reply to NAME's email.", - "I'll \"MSG\", NAME.", - "I'm almost done here, NAME. I'll \"MSG\".", - "In my inbox, there should be an email from NAME, respond and tell her \"MSG\".", - "In my inbox, there should be an email from NAME, respond and tell him \"MSG\".", - "Let NAME know I think it \"MSG\"", - "Locate NAME's email from today and send back \"MSG\".", - "NAME's email needs to be responded to with \"MSG\".", - "Open email and go to my inbox. Find the last email from NAME. please reply back, \"MSG\".", - "Open the email by NAME and reply \"MSG\"", - "Please find NAME's last email and send him the answer, \"MSG\".", - "Please find NAME's recent e-mail to me and respond to her with \"MSG\"", - "Please open my inbox and search for the email that NAME sent me. Please write her back, \"MSG\".", - "Please reply \"MSG\" to the most recent email from NAME.", - "Please reply to NAME by saying \"MSG\".", - "Please reply to NAME's email, \"MSG\"", - "Please reply to the email from NAME with \"MSG\".", - "Please send NAME a reply of \"MSG\".", - "Pull up NAME's e-mail to me and reply with \"MSG\".", - "Replay to email from NAME with text, \"MSG\".", - "Reply \"MSG\" to the email from NAME", - "Reply to NAME with a text, \"MSG\".", - "Reply to NAME's email \"MSG\"", - "Reply to NAME's email \"MSG\",", - "Reply to NAME's email with \"MSG\"", - "Reply to NAME's email with \"MSG\".", - "Reply to NAME's email with the text, \"MSG\".", - "Reply to NAME's email with, \"MSG\".", - "Reply to NAME's email, \"MSG\".", - "Reply to NAME's email: \"MSG\"", - "Reply to NAME's most recent email \"MSG\"", - "Reply to the email from NAME with, \"MSG\".", - "Reply with the message \"MSG\" to NAME's email.", - "Respond \"MSG\" to the email in the email app sent by NAME.", - "Respond to NAME's email with the text, \"MSG\".", - "Respond to NAME's most recent email with \"MSG\"", - "Respond with \"MSG\" to NAME's email from Tuesday.", - "Say \"MSG\" as a reply to the email from NAME.", - "Say to NAME \"MSG\"", - "Send \"MSG\" to NAME.", - "Send NAME a text, \"MSG\"", - "Send NAME an email saying, \"MSG\"", - "Send NAME email saying \"MSG\"", - "Send a reply saying \"MSG\" to NAME's email.", - "Send a reply to NAME saying \"MSG\".", - "Send a reply to NAME's email with the words, \"MSG\".", - "Send a text to NAME, \"MSG\".", - "Send an email in response to the email from NAME by sayhing \"MSG\".", - "Send email to NAME saying, \"MSG\"", - "Send, \"MSG\" as a response to NAME's email.", - "Send, \"MSG\", to NAME.", - "Simply tell NAME \"MSG\"", - "Siri please reply \"MSG\" to NAME's message.", - "Siri, Email NAME, \"MSG\".", - "Take NAME's email and reply with \"MSG\".", - "Tell NAME \"MSG\"", - "Tell NAME \"MSG\" as a response to her email in this email app.", - "Tell NAME \"MSG\" in an email.", - "Tell NAME I said \"MSG\"", - "Tell NAME i said \"MSG\"", - "Tell NAME it \"MSG\" in response to his email.", - "Tell NAME that \"MSG\"", - "Text \"MSG\" to NAME", - "Text NAME \"MSG\"", - "Text NAME, \"MSG\"", - "Thanks NAME, I'll \"MSG\".", - "To NAME respond \"MSG\"", - "Will you respond to NAME's email and tell her that it \"MSG\"?", - "Will you respond to NAME's email and tell him that it \"MSG\"?", - "email NAME and reply with \"MSG\"", - "find NAME mail and reply with a \"MSG\"", - "please send a reply email to NAME with \"\"MSG\" \"", - "pull up NAME email and responds with \"MSG\"", - "pull up NAME's last email and write back \"MSG\"", - "reply \"MSG\" to NAME", - "reply to NAME mail with \"MSG\"", - "reply to NAME saying \"MSG\"", - "reply to NAME's last email \"MSG\"", - "reply to NAME, \"MSG\"", - "respond to NAME with \"MSG\"", - "search contact NAME and text him \"MSG\"", - "send \"MSG\" to NAME", - "send \"MSG\" to contact NAME", - "tell NAME \"MSG\"", - "write to NAME \"MSG\"", - "write to NAME replying with \"MSG\"" - ], - "test":[ - "Alexa please email NAME \"MSG\" in reply to his last message.", - "Email NAME and say \"MSG\".", - "Find NAME's email and reply with \"MSG\".", - "Find NAME's email and say \"MSG\"", - "Find NAME's email and text him \"MSG\"", - "Find NAME's email, and reply by text with \"MSG\".", - "Find the email from NAME and simply reply \"MSG\"", - "For the email from NAME, answer it \"MSG\"", - "Go to email and find the last email NAME sent to me. Respond back that I will \"MSG\".", - "NAME, I;ll \"MSG\", Just have to finish up here.", - "Open an email for NAME and say \"MSG\" and send", - "Please reply to my NAME's most recent email with \"MSG\"", - "Respond to NAME's email by texting \"MSG\".", - "Respond to NAME's email with, \"MSG\".", - "Search NAME in my contacts and send her a text saying \"MSG\"", - "Search for the last email from NAME and respond with \"MSG\"", - "Send \"MSG\" in an email to NAME.", - "Send \"MSG\" to NAME's most recent email", - "Tell NAME I'll \"MSG\" in response to her email.", - "find email from NAME and respond with \"MSG\"", - "please reply to NAME's last email with \"MSG\"" - ] - }, - "important":{ - "train":[ - "Can you find the email from NAME and label it as important?", - "Can you mark the email from NAME as important, please?", - "Find NAME's email and flag it for importance.", - "Find NAME's email and make important.", - "Find NAME's email and mark it as important.", - "Find NAME's email and mark it important", - "Find NAME's email and mark it was important.", - "Find an email by NAME and mark it as important.", - "Find email from NAME and mark as important.", - "Find email from NAME in primary and mark as important.", - "Find email in primary inbox from NAME and mark as important.", - "Find me the email from NAME that is important.", - "Find the email from NAME and mark it important", - "Find the email from NAME and mark it important.", - "Find the email from NAME so that you can mark it as important.", - "Find the email from NAME that is marked as important.", - "Find the important email from NAME", - "Flag email from NAME as important.", - "I need the email from NAME to be found and marked important.", - "I need to find the email from NAME and classify it as important", - "I need you to Mark all the emails from or by NAME and mark them as important.", - "I want to make the email I received from NAME an important message.", - "I want to set the message from NAME as an important email.", - "I want to star NAME's email as important.", - "I would like to see the important email NAME sent me.", - "I'm looking for an email from NAME and I need it to be marked important", - "Important mark on emails by NAME please.", - "In my inbox, find the email from NAME and mark it as important please.", - "In my inbox, find the email from NAME and mark it as please.", - "In the email app, the email from NAME in the inbox should be marked important.", - "Just mark all the emails by NAME as important.", - "Locate NAME's email and mark as important.", - "Locate NAME's email and mark it important.", - "Locate NAME's email from today and mark it important.", - "Look for email sent by NAME and mark it as important.", - "Make NAME's latest email important", - "Mark NAME's email as imporant.", - "Mark NAME's email as important in the email app.", - "Mark NAME's email as important.", - "Mark NAME's email important.", - "Mark all emails written by NAME as important.", - "Mark all of the important emails from NAME as unread.", - "Mark an email from NAME as important", - "Mark email from NAME as important.", - "Mark emails from NAME as important.", - "Mark the email from NAME as important.", - "Mark the email from NAME in this email app as important.", - "Mark the email that I sent to NAME this morning as important.", - "Mark the last email NAME sent as imiportant.", - "Mark the unread email from NAME as important.", - "NAME's appontment needs to be marked important.", - "NAME's email needs to be found in the email app and marked important.", - "NAME's email needs to be marked important.", - "NAME's email needs to be set as an important message.", - "NAME's email should be marked as important.", - "Please find the email NAME sent me and file it as important", - "Please find the email from NAME and mark it as important.", - "Please flag NAME's email as important.", - "Please hunt for NAME's important email.", - "Please mark all emails by NAME as important.", - "Please mark email from NAME as important.", - "Please mark the email by NAME as important.", - "Please mark the email from NAME as important.", - "Pull up NAME's email and mark it important.", - "Pull up the email by NAME and mark it important.", - "Save NAME's email as important.", - "Search for an email from NAME and tag it as important", - "Search for an email from NAME in this email app and mark it as important.", - "Set the email from NAME as an important email.", - "Star the email from NAME.", - "Tag NAME's email as important.", - "The email from NAME in the inbox of the app needs to be marked important.", - "The email from NAME needs to marked as important.", - "You can find NAME's email in the email inbox app and mark it important.", - "You must find NAME's email and mark it important.", - "change NAME's email to being important", - "change the email from NAME to important", - "find NAMEs email and mark it as important", - "find the email from NAME and mark it important", - "in my email there is a message from NAME that needs to be marked as importnat", - "in my inbox mark the email from NAME as important", - "mark NAME's email as important", - "mark NAME's last email as important", - "mark all emails in primary with NAME", - "mark any of NAME's incoming emails as important", - "mark the email from NAME as important", - "mark the email from NAME with a star", - "please put important on NAME's email", - "search for NAME in my primary and mark important", - "show NAME's email as important", - "the email from NAME is important please mark it that way" - ], - "test":[ - "Find the email NAME sent yesterday and mark it as important.", - "Find the email by NAME and mark it as important.", - "Flag NAME's email as important.", - "Make NAME's email important.", - "Make NAME's emails marked important.", - "Make the email from NAME an important message.", - "Mark emails in Primary from NAME as important.", - "Mark the email I sent to NAME this morning as important.", - "Mark the emails from NAME as important.", - "Search and find NAME's important email.", - "The email from NAME needs to be marked important.", - "There is an email from NAME in my inbox, will you mark it as important?", - "find NAME's email and mark it as important", - "important email in primary inbox are from NAME.", - "mark the last email from NAME important", - "put a star on NAME's email", - "star NAME's email" - ] - }, - "delete":{ - "train":[ - "Can you go to my email account and delete emails from NAME?", - "Can you please list emails from NAME and then delete them?", - "Delete NAME's email.", - "Delete NAME's message.", - "Delete all emails by NAME.", - "Delete all emails that I have sent to NAME", - "Delete all messages from NAME.", - "Delete all read messages from NAME.", - "Delete message NAME from email inbox.", - "Delete the email I received from NAME.", - "Delete the email NAME sent me.", - "Delete the email from NAME", - "Delete the email from NAME, please.", - "Delete the email from NAME.", - "Delete the email that NAME sent yesterday.", - "Delete the emails from NAME that are not marked as important.", - "Delete the message from NAME.", - "Find NAME's email and delete it", - "Find NAME's email and delete it.", - "Find NAME's email to delete it.", - "Find NAME's email to me and delete it.", - "Find and remove the email from NAME.", - "Find email from NAME and delete it.", - "Find my email from NAME and delete it.", - "Find the email from NAME and delete it.", - "Find the email from NAME in my inbox and delete it.", - "Find the new email from NAME and delete it.", - "Find today's email from NAME and get rid of it.", - "Get rid of NAME's email.", - "Get rid of my message from NAME.", - "Get rid of the email I got from NAME.", - "Get rid of the email from NAME.", - "I don't want NAME's email in my inbox.", - "I don't want the email from NAME anymore.", - "In my inbox, there is an email from NAME and it needs to be deleted.", - "Jend the email from NAME to the trash.", - "Locate NAME's email and delete it.", - "Locate NAME's email from today and delete it.", - "Locate NAME's recent email and delete it.", - "Locate and delete the email from NAME.", - "Locate the email from NAME and delete it.", - "NAME's email should be deleted from the inbox.", - "Please delete NAME's email", - "Please delete NAME's emails.", - "Please find NAME's email in the inbox and delete it.", - "Please find the email from NAME and delete it.", - "Please get rid of the email from NAME.", - "Please pull up email and then delete NAME's email to me?", - "Put the email from NAME in the trash.", - "Search for NAME's email and delete it", - "Search for email from NAME and delete it.", - "Search for the email from NAME now and delete it", - "Search for the last email NAME sent and delete it.", - "Search my inbox for emails from NAME and delete all of them.", - "Select NAME's email and delete.", - "Take NAME's email out of my inbox.", - "There is an email that needs to be deleted by NAME.", - "Throw away NAME's email.", - "Trash that email from NAME.", - "WiIl you please find the email from NAME and delete it?", - "delete the last email from NAME", - "delete the message from NAME in my email", - "delete the most recent email from NAME", - "delete this email from NAME", - "find NAME's email and delete it", - "find NAME's last email and delete it", - "find the email from NAME in my inbox and delete it", - "get rid of this email from NAME", - "open email and delete the message from NAME", - "please delete the email from NAME in my inbox", - "pull up NAME's last email and delete it", - "put this email from NAME in the recycling bin", - "there is a message from NAME in my email that needs to be deleted" - ], - "test":[ - "Can you please find and then delete the email from NAME?", - "Delete NAME's email from today.", - "Delete email from NAME.", - "Delete email message from NAME.", - "Find NAME's email and delete.", - "Find and delete the email from NAME.", - "I want you to delete NAME's email.", - "If NAME sent me an email, delete it.", - "May you delete all emails from NAME?", - "Please delete the email from NAME", - "Please delete the email from NAME.", - "Search for and find the email from NAME and delete it.", - "Select the email with the author NAME and sent it to trash.", - "The email from NAME needs to be deleted." - ] - } -}; diff --git a/miniwob-sandbox/html/common/special/email-inbox/delete.png b/miniwob-sandbox/html/common/special/email-inbox/delete.png deleted file mode 100644 index ddf909afd706ce98f37b3c1ab000c0cfd943a993..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1713 zcmZ`&dpJ~S82`>7L|MwMtjaz~VPZs@)ih>jGPA-MGt89{W*Wt~OwS;Xrm~xK@f3D# zA+{7MX|YPTQMp7(OA`1F{k9>v=}UbBd;vIG68rGA=MxN zo816-AqIe00DyHuVMDMF062Z-IyMaw!gxG%ak*i9J`6&+TrL*qaG0UhF!(?(xN$IC z$AK-Oumy{CB#uY~Q>IvqiJcC53~&5KzO@BQP?0{C~Bh@iZdPi9kP4 z5_JWSz~hn0WDJ2c)TE9K5spA05{Xbvod=;%$bnW-H(YF}SS&_Gu-6D}U~Aeu?1C3Y z!2Doc&^bC~dIg7vf3AKxsjkEk3Q@k!A>=a{42%Y+V-De2&{#*t-Uj?YgK4|M;8v+% z1%`mZghK8}x@xTUEcuGRssPt}q$Uc1Hea^mK)4B}NPjPoA-bS{hRNCD) z^EYNy=-Uu$u6B>kSZ4L<*lJsk^?{^ZqxpN*Tqqy!dZty=?C+g!%Da|)B=f+7IotZH z62(tHEZHAa)NFXAPw~rdv%}h-{I&Fs-z0R6toQe$f-Hlt=`b-)p!1U9-{n4fBNV4Y zDG)SNFal_XeI}OH_?2Qd3G#3a45}}idv!Q}B0@v9X$~s=J7PhX|7D_3Cl#w zM0wtDc`d#~m2HyfoSl6nzUP~*WvN=c46nRiwx+G+`OlY9Ulq%jE9DlM-T^Fbz*=7H zc94{`OBjfR^w_4}Wfqqf$J(^llv3@8Y-MuxT~>4*eW~T%pf&)N{!N zQv`LAaS3^b5gk1BdLVAf&Obr1AeY5ls3h(wEMIFEAv)h2Y*$)$B|W<6syF2&Ep^z_ zZeM(BMK@R59j(`OqvfKYwewz_`_0&{aG61QAF?+^+!EN_Q`e2F-r25g$`~irT#iWp z)$qof+4eZWSiu6T-e&VRwT=n9Go{IFeQ(LZyQa^zOJ2%vKMWn!I09+_n6ij(DQkb^ zd$VI;34Ke^6XbYT`bOb+pvH%i*_lsfP|BYpQm&de(&78`^>@aZVAIx7p91TKRb(?0 zm6mzhx-!qqoU(v)DPy!VFHwb9B?Q;u_aCsp4@{NpEC};fbF2~q>Z+Vg5yg&Y`HM2< z@b^rzDVyV$NhqJHB@g?N`n{@e`+9DUyn4KJV*EmXKVnuOP?0jqBgSvP)piz9>_@V? zubB@!l&m2UAG@2iMuFfzQYkO-g+YYOV0*VVP%Pme@z^$TYrwNS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Sk<_qw#P}GO)!+Tgz`$tZ>EalYaqsBO)4a_F0xSX6 znVMeyOFA8dw@khhEMlo}9}Yvu|Tw_p0(5+ZO&=t1CXRt$VzX!OKR# zp}U=N#YY7OTREl&N0=G*R1`Cq-;+4dZ_euRh?j9wg>i$)Jr0F_^BH-U{@I83nf>EG zR#0!Zd}Y@JV9=_TxJHzuB$lLFB^RXvDF!10Lo;1NLtR6Q5F;ZiLlY|lLu~^?D+2>b zm5vK28glbfGSez?YsjcH$N_4Q1lbUrpH@mmtT}V`<;yx PP!WTttDnm{r-UW|DHh3I diff --git a/miniwob-sandbox/html/common/special/email-inbox/left-arrow-white.png b/miniwob-sandbox/html/common/special/email-inbox/left-arrow-white.png deleted file mode 100644 index 966d968ac69678536d3365a9dbb180947941028a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Sk<_qw#8erUa|kd2h1PnyIEG~0dwX*??;!^f*1&G9 zA4{Hie9;eN+dpBBSQ`U7hvepy`?xRVFwT3-`<>6Z{qQvA*>drDXYV&;cNjcl)LS$8 zC(A=!{sKJ}pC|KMLXG$fv=q)f(dLN%#Na;dq|Ke1sh_JqKRY|yJpbOF%Foa0&Gx_e z!v4R6T}Z`af`Vfc3#X7uh+vg%n7L4u-F0(;L$f_y>)HZLqiPjG&Xozbd?=fBV!uGp zgcy VqV(DCY(R<_JYD@<);T3K0RT=0nO*<@ diff --git a/miniwob-sandbox/html/common/special/email-inbox/left-arrow.png b/miniwob-sandbox/html/common/special/email-inbox/left-arrow.png deleted file mode 100644 index 9c16b9b9ebf78ab8c944c52fd7d337d859ad5ebf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 693 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Sk<_qwgmq=PWK1j=7#N#9T^vI)?p>Yf?RVHfppCuV zddl@l$4wt~T~?Uz!ZV8VNZ|?I2@%^;BIRNWo78laR8(Z_AN?;+%2&ViJyS+~o}}QR zs5$pTyMy2F-}{AiG0UTmflM4VEeve-5e%*J8V!f}g&ZESb0mB`$dpmDfI&`P<-h@U zj)D*Om~{3mXW)OYdf-SkN5MxwMzed02aZRx20hSa%KWgGY2}9pw*+Q1UfixQ_t2F7 zM5)%5^<6)?EdTWF+X}3{G78%s>8_Ku%i9O^(xhQka~zU);H{U_<7X z+9Hcz4~o8A)ZJtC&sH!uHp6`07N=w1?ROuwx*Bj=<~cBiR7+eVN>UO_QmvAUQh^kM zk%6I^uA!l>p+$(HrIm@Pm64^kfuWUwLGI-_=TJ1{=BH$)RpQnl)2C7d)F276Aviy+ pq&%@Gm7%=6TrV>(yEr+qAXP8FD1G)j8!4b722WQ%mvv4FO#m#w0@MHi diff --git a/miniwob-sandbox/html/common/special/email-inbox/reply.png b/miniwob-sandbox/html/common/special/email-inbox/reply.png deleted file mode 100644 index 48183ebd24d35cbf07e4a9d566f6cb81f343eb18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1137 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Sk<_qw#CX*-BCLTnGTVE)IEG~0dppD5LnKh<`2Kvg zySj==`fZWy#scf#vIz>wa+&CyXfAz`a^l>t?cLL@Duj2<$a}Y+DR|M6qYHMqv^(73 z%T0c&I(b2_PEoN}fwA`OO4)Dyeb&a-ug~q<`NMYa{p$XobwAGje*5np!|hEGdp71e z^}fFJaO%q)KN;pI{*K#o-1J@V@~c7&{`_pgzcY5TGR%{!vXy?5%(q~JerE~eox4l7 zU1u#QpS&>WHna5>u@*gp4cE^!Txd-c`zFQk=1nN$ow;w`Fiy($-!p4>^2uerivB-c zVz~aB3Oc+v(AzYBVgpO3P7tS%iqc7;xyy|gZq;STIT;tby25dOv7k$hJumZ&jQ#6G zeJ))*Ad(Ts(BIxSBX53S4@=IygQ2nwlWr|H@n6sK?nzn`LqoKJ^3Jab`(9{Q8U8S1 zZ_SG8dozsxbPxIVEJ`tZkIhy&SDMH z7uH>zw327?TlOI5e^2Lpmd;G7;0jvxVAW9rh7S!IQB48wYgF`>=&LQNND*8v$t)10 zdoT5C@S3Go|6{gs)!3C7v0E(FaQ@Fx+%ox@iAr?%qDz4x-fUB*uf17ez42sO)^nLJ z0xPFxpLBd<bo}SHc zZoVfc6!OXiKN5IdT&6v?IN0a$`4jJ5w-;*L{>=aQwPMXy zFWFi1Gmfk%?#wyo(mC_S2e==dxV!CI*k%ie?$Zp)nQ%0UV>nrw<1lkQwM$X=lOnfIYl3WLJJN1GJ< zbLK7F%ywH~A)D@}%MW}C8TMBHI}*5V#;fEz?410CZW9~Rj>Q`8UEh2Q25z4lVNnV#}fha@6?3ot%&+~SzV)zxwm+tf} z-GOaK<5&HYXN(=rou2xy^U?gxx|hGmtGF;75PE#y9GJUQOI#yLQW8s2t&)pUffR$0 zfuWhMp`os!MTn7+m7%efv4ysQp_PHbgZCF_qG-s?PsvQH#I0fCrc70!21$?&!TD(= p<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6cwc)I$ztaD0e0su>e+WG(h diff --git a/miniwob-sandbox/html/common/special/email-inbox/search.png b/miniwob-sandbox/html/common/special/email-inbox/search.png deleted file mode 100644 index e5386cfff01c47651d92b5653d0e4b9abe3d03df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1183 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Sk<_qwm~_q0IGe0wU|`Pmba4#Hxc4@~(PN6EMD71o z7pFa4Sae&=)2h;QItypl3g_uAClBb|`*P#x_lbvzU| zI-$@U+4ErUcF8mRjMp~IetajvFvapfw9bF?M^|eOna+A3ef#CxwH2z>J5yBl_44o8 zSpLa#+1ex9Cng<@J8}PM*JK+{zYjhZh5dieJ&N|&e9tfVrp=qwf35k;HvdzOXPEZ#8XX?P zq*c3RS6oVe{{Mk0bDE_5&xneI>;>W6hLKj~t#=RZNmy@?ryRd_>s(K{tzHk*uDiBO z;r-hgR`d8xdD5NB-~8ulZgui;)F2V5(7< zqF|0guEgSd?*rJ}j#zAv^<*|)_@t5N3dX`=H%NcFE&iEUvzhpUF06g3y;|y&wpMv^-r;Gt96;= zoeNBBKF=%s_|^K6_iiqxgf6RjtlL%1va|jDtYiEm7s@J4ib<1S-Bq;iN6{yrsME|0 z=S3=Koh+Ua>m%|n!RXZK8jW3XjGvE{E1h8Ps_Jds;c=d*{~AIU@UaM=(gFuR0>U z_Q-Ol+ZTCuL@`7h7iXLLi!1z{|`1@`)(k?mt*TK?#9v#b8Uekj86AAi2u*-LZFXFLSvMb#45h?11Vl2ohYqEsNoU}Ruu zrfX=ZYiJQ-U}R-tYGrDwZD43+U~sEoVHt{s-29Zxv`X9>R_jWh0&0*1*$|wcR#Ki= ml*&+EUaps!mtCBkSdglhUz9%kosASw5re0zpUXO@geCyd2K)s8 diff --git a/miniwob-sandbox/html/common/special/email-inbox/send.png b/miniwob-sandbox/html/common/special/email-inbox/send.png deleted file mode 100644 index d8d87e35271ff67c77338b732f1a683e54f95683..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 772 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Sk<_qw8CWG6zl#JiFfd;7ba4#HxcBy^zuzGT5w;Kc zS>kQNE3DhRU+`Y35ElM_=YX`pGPO&}9+oZMto#q|wLWmVDZ$xmBW~)l;e^lgvpzk0 zR5`y)|30x-Zn%EmqUMghmBf3yJ2fqg9b$|Ow%sLFrT;{D7#L2hlwLXc zb^*{Wce%e-)f#fLF);9GF5NcY;S^)Tc86)qU9Xf2rB7%vJg^XuWq4p95bF?F8?=}& zUm=a5!Bzn1qbDa^4heghIt1!8-e6#8bI4(2n4qj&S|-jH5OUPv2LpqFi*=qn{~<<( z#|}RjUB7Bv+dlm?GC|tbLsp>h&$;m0{G~;6RE8byp9T9&N*7mBN z^awh*a`V^phAlb*AAfJ3@q6-O=aV%Ghu(-^x)p7k74a=yPr&&=QoY{x z7NZaDW!pJtcmo4jwZt`|BqgyV)hf9t6-Y4{85o-B8XD>vT80=HSQ(gF8JTDs7+M(^ zaOi(&M$wR)pOTqYiCaTuk&iu4gCxj?;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xh Rq=1STJYD@<);T3K0RR>N7hnJY diff --git a/miniwob-sandbox/html/common/special/email-inbox/star-clicked.png b/miniwob-sandbox/html/common/special/email-inbox/star-clicked.png deleted file mode 100644 index f28d87bef62f6f952c453e57acf92a052a3142d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1116 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 E0EoQSDgXcg diff --git a/miniwob-sandbox/html/common/special/navigate-tree/images/file.gif b/miniwob-sandbox/html/common/special/navigate-tree/images/file.gif deleted file mode 100644 index d1a7d325bb06b87abad107285151b88360196d12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109 zcmZ?wbh9u|e$hLqR7;@J|!)0`7wu!G@<#922l1_o;Y D7Ck34 diff --git a/miniwob-sandbox/html/common/special/navigate-tree/images/folder.gif b/miniwob-sandbox/html/common/special/navigate-tree/images/folder.gif deleted file mode 100644 index 2b31631ca2bfec3a8afb1bfdd4f8ed4c5bcc3a18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106 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 diff --git a/miniwob-sandbox/html/common/special/navigate-tree/images/treeview-famfamfam.gif b/miniwob-sandbox/html/common/special/navigate-tree/images/treeview-famfamfam.gif deleted file mode 100644 index c568d36eaa8595968792893ac7a24182889c2bd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 545 zcmV++0^a>cNk%w1VPF7-0Q4RJ|I)QFYZy6mAwqK@QiL&coMXL00KG~8)>;V0S|Q$R zA@_3t_j?$GwPTFEW0bXf?}S44t#g#MjHSJtwbqoi#;v*1q~4{3=dFzAwUqC*l-B3H z|Ns900000000000A^8La0015UEC2ui0AK)x000I5peK%GX`X1RuB_L+oeH;fZQo>! z?|g6TzMxPD92$?vq;kn@I-k&}bSknG3WN!Do2oP@8wcUREt3co3di9PnBQoQoDz7O z2aX1((YBW*1P&BpWPV%{0|5gPhK-Jokdcy;l$BIPmQ9$MH8V0VoI9JLNTZ~usHv)} ztgVh22?hxlt~?nE8UPUr8MQbG8W0Q&5DC6F1^{v#3nx_Vo+_WAnz{QY)TShVo-0)`MjG-}wm*%xO{oqc%p z@L8x2kRXHn5Gi8hucOD0AVZG8*N)^W81?3!VKb?YWjdGWV2Yec^Blk|{RoB`b1==C zJ`B}3MS{ZYIX6t j8*ErHesty7bt{dUHGX}o{pDwwvg_BdW6Pd>A_M?CkIn!l diff --git a/miniwob-sandbox/html/common/special/navigate-tree/images/treeview-gray-line.gif b/miniwob-sandbox/html/common/special/navigate-tree/images/treeview-gray-line.gif deleted file mode 100644 index 170382cd94f66273625d0a261f6031c1b7bd5442..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1010 zcmV_vme;WqnScE{mod7YlN=ke>g|NgfZ*auiBXh?Xdn8+CO z<){X!*JvXp$#*%JiMYAgNr@9#`8X;XI{BGein@x~s`<(p>p2U`Lwf3(3%e`ZOZ#hk zgnMgR%o?nkT&sMn>&y%7D-BF7JcBHwz0KY2{S6*oJ#0*#ZT^fNtv<~@j-3v_F5gc7 zZe)Lrzi-LxzYNe?Gk5y>1td5yUqXJw5dIVR(BVOa5h+e&Sk5BEi~j~UdX)H4Bgl~= zOJY1{vLnfp@mS7tSr6ttl_?w6%qX*<&72Eq@~rri<4&JMhZ@CM6zNfvK|?lOnUrbN zmQ!C=jd^wEQmR|6cE$QttJ1Mj!|Ei<6|GmbVA+Z->-H?%xoPRHwc8f&+q!)3_Rafu zuiwFd2@5Wa_^@KRff*ZioEY-ro@Ob>wX9dNX3UK_KlU6M^kkq}H`f}>bqD>1` z{hIaa&a*$)4t;xcY}&hR_s0EOx6{(Ci|2Md9CdKyP?aZ#{ap5P!x{{6(Q`~R;FAbHohr(b^o5;$Of z3G(M0g8vElpo0f07$JodG8mqP5MF5Dh8{}zp@txiC}N2io@Zi*B%T-_i}SfyAB^{@ zm|}x9W+-EUHs-h>jXYNPBZoWsNaT=4;#ee-N1_;Hh)u4TB$H9LIOU5~#(3q7OH#R| zm0e=_rIt#LDP@>ClF22SUaAQun_`yf=9zHLnI@fU+Sw+aZ`R4@oqgu{=bnBJ3Miq1 z7K-Shipm)%qlP+~D5Q(_XeOm`TB@g{nqt~0r;mCXDX5bIndPRWR(k5Csb(swsY0sy zDyyq@I_sykhI;F$vC_J$t-a#ErLxJw`mC(W8awT=)JDrI zw!Uf$EVsfo3oW?PdduvM=d7x%lo&thN4D3oyCY zx~p%$0TVoMz6tZ|EW-Z^{IJ6ZD;zP!6EhsH#SmX?@WviX{ISL$k1TS@7@uo$$0VN| zFU#|~TrbS`s+@AeHD@ey!8Yf-FwHzy{4>Wp`%LuEM&n#G(nq5lbjVGwoHWx>w>6T$45OcsIB zs$yz@TBW(I_c`;5v*R+^Jl3MQ>u=lr-leE<+x%S5TrACNepI6Nw{SOTc!<~rMw57= zCD^F(7?rk*bQp+PVrGD2quO@=9BXE34bO*YJz5 z`&TIGYm1z$yqtx~Y?(0Jiskg|XJBLkh%b)-NJDpF#h5!Hn diff --git a/miniwob-sandbox/html/common/special/navigate-tree/images/treeview-red-line.gif b/miniwob-sandbox/html/common/special/navigate-tree/images/treeview-red-line.gif deleted file mode 100644 index 8602e2d981d62149ff675cc0b77dc95bcc42cb12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1010 zcmV%gu001HR1O)&90RSuj0000G0PqF?0{@I3fXm9C z;BykuYA)85OAi6!I8K;#9-x^_vme;WqnScE{mod7YlN=ke>g|NgfZ*auiBXh?Xdn8+CO z<){X!*JvXp$#*%JiMYAgNr@9#`8X;XI{BGein@x~s`<(p>p2U`Lwf3(3%e`ZOZ#hk zgnMgR%o?nkT&sMn>&y%7D-BF7JcBHwz0KY2{S6*oJ#0*#ZT^fNtv<~@j-3v_F5gc7 zZe)Lrzi-LxzYNe?Gk5y>1td5yUqXJw5dIVR(BVOa5h+e&Sk5BEi~j~UdX)H4Bgl~= zOJY1{vLnfp@mS7tSr6ttl_?w6%qX*<&72Eq@~rri<4&JMhZ@CM6zNfvK|?lOnUrbN zmQ!C=jd^wEQmR|6cE$QttJ1Mj!|Ei<6|GmbVA+Z->-H?%xoPRHwc8f&+q!)3_Rafu zuiwFd2@5Wa_^@KRff*ZioEY-ro@Ob>wX9dNX3UK_KlU6M^kkq}H`f}>bqD>1` z{hIaa&a*$)4t;xcY}&hR_s0EOx6{(Ci|2Md9CdKyP?aZ#{ap5P!x{{6(Q`~R;FAbHohr(b^o5;$Of z3G(M0g8vElpo0f07$JodG8mqP5MF5Dh8{}zp@txiC}N2io@Zi*B%T-_i}SfyAB^{@ zm|}x9W+-EUHs-h>jXYNPBZoWsNaT=4;#ee-N1_;Hh)u4TB$H9LIOU5~#(3q7OH#R| zm0e=_rIt#LDP@>ClF22SUaAQun_`yf=9zHLnI@fU+Sw+aZ`R4@oqgu{=bnBJ3Miq1 z7K-Shipm)%qlP+~D5Q(_XeOm`TB@g{nqt~0r;mCXDX5bIndPRWR(k5Csb(swsY0sy zDyyq@I_sykhI;F$vC_J$t-a#ErLxJw`mC(W8awT=)JDrI zw!Uf$EVsfo3oW?PdduvM=d7x%lo&thN4D3oyCY zx~p%$0TVoMz6tZ|EW-Z^{IJ6ZD;zP!6EhsH#SmX?@WviX{ISL$k1TS@7@uo$$0VN| zFU#|~TrbS`s+@AeHD@ey!8Yf-FwHzy{4>Wp`%LuEM&n#G(nq5lbjVGwoHWx>w>8B>(^b diff --git a/miniwob-sandbox/html/common/special/navigate-tree/images/treeview-red.gif b/miniwob-sandbox/html/common/special/navigate-tree/images/treeview-red.gif deleted file mode 100644 index 68fc9f1c7af7bdcd3c47fbf4df33a9cda9f66cc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmV;50d@XINk%w1VPF7-0Pq3;0002>c6K581O)&90st%k0001B0EGYm0{@hcsmtvT z1(?9mh_l|P@(+fZCzhs3p6bfB?i$3h{MKf$;P(FM(&6I?BR*1ah-Ba>6T$45OcsIB zs$yz@TBW(I_c`;5v*R+^Jl3MQ>u=lr-leE<+x%S5TrACNepI6Nw{SOTc!<~rMw57= zCD^F(7?rk*bQp+PVrGD2quO@=9BXE34bO*YJz5 z`&TIGYm1z$yqtx~Y?(0Jiskg|XJBLkh%b)-NJ1n-r=Kufz diff --git a/miniwob-sandbox/html/common/special/navigate-tree/jquery.treeview.css b/miniwob-sandbox/html/common/special/navigate-tree/jquery.treeview.css deleted file mode 100644 index 022c513..0000000 --- a/miniwob-sandbox/html/common/special/navigate-tree/jquery.treeview.css +++ /dev/null @@ -1,68 +0,0 @@ -.treeview, .treeview ul { - padding: 0; - margin: 0; - list-style: none; -} - -.treeview ul { - background-color: white; - margin-top: 1px; -} - -.treeview .hitarea { - background: url(images/treeview-default.gif) -64px -25px no-repeat; - height: 16px; - width: 16px; - margin-left: -16px; - float: left; - cursor: pointer; -} -/* fix for IE6 */ -* html .hitarea { - display: inline; - float:none; -} - -.treeview li { - margin: 0; - padding: 3px 0pt 3px 16px; -} - -.treeview a.selected { - background-color: #eee; -} - -#treecontrol { margin: 1em 0; display: none; } - -.treeview .hover { color: red; cursor: pointer; } - -.treeview li { background: url(images/treeview-default-line.gif) 0 0 no-repeat; } -.treeview li.collapsable, .treeview li.expandable { background-position: 0 -176px; } - -.treeview .expandable-hitarea { background-position: -80px -3px; } - -.treeview li.last { background-position: 0 -1766px } -.treeview li.lastCollapsable, .treeview li.lastExpandable { background-image: url(images/treeview-default.gif); } -.treeview li.lastCollapsable { background-position: 0 -111px } -.treeview li.lastExpandable { background-position: -32px -67px } - -.treeview div.lastCollapsable-hitarea, .treeview div.lastExpandable-hitarea { background-position: 0; } - -.treeview-red li { background-image: url(images/treeview-red-line.gif); } -.treeview-red .hitarea, .treeview-red li.lastCollapsable, .treeview-red li.lastExpandable { background-image: url(images/treeview-red.gif); } - -.treeview-black li { background-image: url(images/treeview-black-line.gif); } -.treeview-black .hitarea, .treeview-black li.lastCollapsable, .treeview-black li.lastExpandable { background-image: url(images/treeview-black.gif); } - -.treeview-gray li { background-image: url(images/treeview-gray-line.gif); } -.treeview-gray .hitarea, .treeview-gray li.lastCollapsable, .treeview-gray li.lastExpandable { background-image: url(images/treeview-gray.gif); } - -.treeview-famfamfam li { background-image: url(images/treeview-famfamfam-line.gif); } -.treeview-famfamfam .hitarea, .treeview-famfamfam li.lastCollapsable, .treeview-famfamfam li.lastExpandable { background-image: url(images/treeview-famfamfam.gif); } - - -.filetree li { padding: 1px 0 1px 16px; } -.filetree span.folder, .filetree span.file { padding: 1px 0 1px 16px; display: block; } -.filetree span.folder { background: url(images/folder.gif) 0 0 no-repeat; } -.filetree li.expandable span.folder { background: url(images/folder-closed.gif) 0 0 no-repeat; } -.filetree span.file { background: url(images/file.gif) 0 0 no-repeat; } diff --git a/miniwob-sandbox/html/common/special/navigate-tree/jquery.treeview.min.js b/miniwob-sandbox/html/common/special/navigate-tree/jquery.treeview.min.js deleted file mode 100644 index 96202d9..0000000 --- a/miniwob-sandbox/html/common/special/navigate-tree/jquery.treeview.min.js +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Treeview 1.4 - jQuery plugin to hide and show branches of a tree - * - * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ - * http://docs.jquery.com/Plugins/Treeview - * - * Copyright (c) 2007 Jörn Zaefferer - * - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - * - * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $ - * - */;(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").addClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event){toggler.apply($(this).next());}).add($("a",this)).hoverClass();if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend("
").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){settings=$.extend({cookieId:"treeview"},settings);if(settings.add){return this.trigger("add",[settings.add]);}if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}function toggler(){$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}function serialize(){function binary(arg){return arg?1:0;}var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}break;}branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery); \ No newline at end of file diff --git a/miniwob-sandbox/html/common/special/search-engine/jquery.twbsPagination.min.js b/miniwob-sandbox/html/common/special/search-engine/jquery.twbsPagination.min.js deleted file mode 100644 index 8ad0ed1..0000000 --- a/miniwob-sandbox/html/common/special/search-engine/jquery.twbsPagination.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - * jQuery Bootstrap Pagination v1.4.1 - * https://github.com/esimakin/twbs-pagination - * - * Copyright 2014-2016, Eugene Simakin - * Released under Apache-2.0 license - * http://apache.org/licenses/LICENSE-2.0.html - */ -!function(a,b,c,d){"use strict";var e=a.fn.twbsPagination,f=function(b,c){if(this.$element=a(b),this.options=a.extend({},a.fn.twbsPagination.defaults,c),this.options.startPage<1||this.options.startPage>this.options.totalPages)throw new Error("Start page option is incorrect");if(this.options.totalPages=parseInt(this.options.totalPages),isNaN(this.options.totalPages))throw new Error("Total pages option is not correct!");if(this.options.visiblePages=parseInt(this.options.visiblePages),isNaN(this.options.visiblePages))throw new Error("Visible pages option is not correct!");if(this.options.onPageClick instanceof Function&&this.$element.first().on("page",this.options.onPageClick),this.options.hideOnlyOnePage&&1==this.options.totalPages)return this.$element.trigger("page",1),this;this.options.totalPages"),this.$listContainer.addClass(this.options.paginationClass),"UL"!==d&&this.$element.append(this.$listContainer),this.options.initiateStartPageClick?this.show(this.options.startPage):(this.currentPage=this.options.startPage,this.render(this.getPages(this.options.startPage)),this.setupEvents()),this};f.prototype={constructor:f,destroy:function(){return this.$element.empty(),this.$element.removeData("twbs-pagination"),this.$element.off("page"),this},show:function(a){if(a<1||a>this.options.totalPages)throw new Error("Page is incorrect.");return this.currentPage=a,this.render(this.getPages(a)),this.setupEvents(),this.$element.trigger("page",a),this},enable:function(){this.show(this.currentPage)},disable:function(){var b=this;this.$listContainer.off("click").on("click","li",function(a){a.preventDefault()}),this.$listContainer.children().each(function(){var c=a(this);c.hasClass(b.options.activeClass)||a(this).addClass(b.options.disabledClass)})},buildListItems:function(a){var b=[];if(this.options.first&&b.push(this.buildItem("first",1)),this.options.prev){var c=a.currentPage>1?a.currentPage-1:this.options.loop?this.options.totalPages:1;b.push(this.buildItem("prev",c))}for(var d=0;d"),e=a(""),f=this.options[b]?this.makeText(this.options[b],c):c;return d.addClass(this.options[b+"Class"]),d.data("page",c),d.data("page-type",b),d.append(e.attr("href",this.makeHref(c)).addClass(this.options.anchorClass).html(f)),d},getPages:function(a){var b=[],c=Math.floor(this.options.visiblePages/2),d=a-c+1-this.options.visiblePages%2,e=a+c;d<=0&&(d=1,e=this.options.visiblePages),e>this.options.totalPages&&(d=this.options.totalPages-this.options.visiblePages+1,e=this.options.totalPages);for(var f=d;f<=e;)b.push(f),f++;return{currentPage:a,numeric:b}},render:function(b){var c=this;this.$listContainer.children().remove();var d=this.buildListItems(b);a.each(d,function(a,b){c.$listContainer.append(b)}),this.$listContainer.children().each(function(){var d=a(this),e=d.data("page-type");switch(e){case"page":d.data("page")===b.currentPage&&d.addClass(c.options.activeClass);break;case"first":d.toggleClass(c.options.disabledClass,1===b.currentPage);break;case"last":d.toggleClass(c.options.disabledClass,b.currentPage===c.options.totalPages);break;case"prev":d.toggleClass(c.options.disabledClass,!c.options.loop&&1===b.currentPage);break;case"next":d.toggleClass(c.options.disabledClass,!c.options.loop&&b.currentPage===c.options.totalPages)}})},setupEvents:function(){var b=this;this.$listContainer.off("click").on("click","li",function(c){var d=a(this);return!d.hasClass(b.options.disabledClass)&&!d.hasClass(b.options.activeClass)&&(!b.options.href&&c.preventDefault(),void b.show(parseInt(d.data("page"))))})},makeHref:function(a){return this.options.href?this.generateQueryString(a):"#"},makeText:function(a,b){return a.replace(this.options.pageVariable,b).replace(this.options.totalPagesVariable,this.options.totalPages)},getPageFromQueryString:function(a){var b=this.getSearchString(a),c=new RegExp(this.options.pageVariable+"(=([^&#]*)|&|#|$)"),d=c.exec(b);return d&&d[2]?(d=decodeURIComponent(d[2]),d=parseInt(d),isNaN(d)?null:d):null},generateQueryString:function(a,b){var c=this.getSearchString(b),d=new RegExp(this.options.pageVariable+"=*[^&#]*");return c?"?"+c.replace(d,this.options.pageVariable+"="+a):""},getSearchString:function(a){var c=a||b.location.search;return""===c?null:(0===c.indexOf("?")&&(c=c.substr(1)),c)},getCurrentPage:function(){return this.currentPage}},a.fn.twbsPagination=function(b){var c,e=Array.prototype.slice.call(arguments,1),g=a(this),h=g.data("twbs-pagination"),i="object"==typeof b?b:{};return h||g.data("twbs-pagination",h=new f(this,i)),"string"==typeof b&&(c=h[b].apply(h,e)),c===d?g:c},a.fn.twbsPagination.defaults={totalPages:1,startPage:1,visiblePages:5,initiateStartPageClick:!0,hideOnlyOnePage:!1,href:!1,pageVariable:"{{page}}",totalPagesVariable:"{{total_pages}}",page:null,first:"First",prev:"Previous",next:"Next",last:"Last",loop:!1,onPageClick:null,paginationClass:"pagination",nextClass:"page-item next",prevClass:"page-item prev",lastClass:"page-item last",firstClass:"page-item first",pageClass:"page-item",activeClass:"active",disabledClass:"disabled",anchorClass:"page-link"},a.fn.twbsPagination.Constructor=f,a.fn.twbsPagination.noConflict=function(){return a.fn.twbsPagination=e,this},a.fn.twbsPagination.version="1.4.1"}(window.jQuery,window,document); \ No newline at end of file diff --git a/miniwob-sandbox/html/common/special/social-media/like-hover.png b/miniwob-sandbox/html/common/special/social-media/like-hover.png deleted file mode 100644 index 35afcca0d9e653056cb26a1081bf337d8ac36814..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1424 zcmZ`%X;4#F82y08uti2fMVMj{2rz}=*_Aax})78lw&1#tlt4cQQaLVDkeI@2GWxyyIYJ>U7xT_oY50W?!v zQvjd^a{VLGypia}Mrf>SKlB_;@9pvn@dIcnHG9pcptXG>H!=hu#~I+@R{(PeI`{-2 z69agb0Kl#SuuiY-itqt2s0k0|aS%ZVpaf49tW*K6Bu3OQG^zpDfG65jfQOpgMK}WA z#pDv31Q!*sP^=`fh^7W?99YwU>!nC>0#^W&%tcJJ^@jg83&|27Sr;jIkTI@B=t-M1Q{V5p%;GyGu*#|89PNpv=5;ALT@>zW^(d zxlAHU2A>55_`^38J1$z7q;t0k(H9*iy1^#bnk)oTMS&q4>U}c{>vim<8oDijAtTV= zj~CNFSgDP+j96BYgyZH?@kN7$Q(1fV{Mr-OJ)b$9-^!Pb^!CjA3Q~&$@>hFPs;i9#ndM2> z4x~4ldwZEG!c(fsU555G@itquNB=l>_xtkFOf2O=fK>IQl# z5jJx7iSBAl(zPi&GPYH2Ihx2lBdIkkD=V>C?>u_XrMs}sSLn@PzRGE*%m>#CCsJ=L zIBe)`V};+R7HKFS7sO)CGM2ZL;%L=pjIlQ_Ib7_pdCca!zA*YM9!fv#7)t*Q_oD~f zhtL~-IBw!u)nMX`bLheRBhFP<%tNq(Ccm*_S1f3WR5hGk;!yQ4Kl|H+9_&`@T<*)M z@WH2M8JAm{_nZCoLdain{Hn`R>Cd|(!p?OFy~is>vnO(&isIrUCZa0_WHV8ZH?*~E z@8mm0Q35AR=;05I?tEG?l+aCpf>oWgT?=!x zKOc=VU3`~+otiezukV+8FgS^X(Rui3zeLRD^Sahp1z9TxDi@4x7_)a3=$QGIh)X~Sr2AB8qZ zIiWjQq|SZyyY{w4YW;z8=Uc9Y8Oqd?tBZA1t$9)gTrHF6*HZvg^1q5fw!CFK7LHqA(F diff --git a/miniwob-sandbox/html/common/special/social-media/like.png b/miniwob-sandbox/html/common/special/social-media/like.png deleted file mode 100644 index 6b548c358a3c898bff52c055b3ebbb7cbcd09548..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1307 zcmZ`(dpOg382`?OtSmY%jojsS5UDw#(`1@iZkbDA84Wwj+*YoK6_qkM(y`IBWYU&Z zv}AdzMOsdb;-m|mb(Sc{W!UX@&#<=o5l) zJ0Qe<&t(Xxf<$Q)R1vBEA^rfgRV~+0w4vELIcP@+00j;Ju*v}V3{k8p0QPwR@Fo!e zA1(lG4~HV# z`V|29YXZ)nl=gh0E+Ne*#z_8c5+!`7kI_z7H@T#1+nm!ur#hHvSVl=!t-B;?GTn+* z$11lj?=`9ar2b9!fv)+XgW*I%`h_-=zbi*Q@!ZeV#N+hhcknRouw^8=aJWI)uLNiz8(D z1&tZG(Rb{~vmynvd@Z7LLIbN!N~%@)T=Ub23S?H67W}-GAGoI{rsP!;d8Zi`%PdMV z$6()4R}2-ag_igC^BPDG*-@)i=5;dDr>UR$`P!XVHTr)bqot9q{4ewr&J8Z=@8*Nm zCBwg{Cf}o~4`e8lVe>L`@<{P?R!!exS*VT-PA%$BpBJ)*%kBc_!~LpUae(mN*H}kG zy}cVxwId$S4J|AU;zG??jOSo%K^o|SN+i=P6b6};+EhE+IvwU>qcG|$d~JJm=ekyD z4C}=vM^8ulgqvkmTqZ6#+X9;S73_#C;h4vAon^RBwsuxJ}y z=D`3jx`qd*lavSS>q4u3UCL!g+AGQbPz`qqR;*-KxUTYxLtBDDlk?%u!1x;s7I_lM zwG9`MutFKUS<7oUdidcM@c2PM)7F6>n!Hj5~rg z5e~{_)<7I$yqgY3oLM-Vpm!@_&f=-Dx3l38LV(~#Xm3pOZtBqjj52RgUR9)Ab`nh6 z?msSKH9YEldE~{g^3Tax{^X{nfEHr4=0mn*SG0Lw!TW8xllIEO?$G4Swwzi)JbY$A zLVVjHxSaoZPx0v{2Pxk7LYDPNZz=z4z`kt?&gr=Y$zOtwmJaHz9-{b)G$9{3GxgJP zy)alw4JUR~!|UFnV81QWL~pq1MV_d_HwsM}xS#ZTdHgW?{SRG>I^`O5!L1Gh3(9Ne zWeH}>%|vZ*rm%mvSYnGP;iwIb_y(MydYq zv2(lviBY{5V0Arj7kT+#33lt8MKT879lZE3sEo-_-ktPO~rdymId5j*X*y7u-jjSS#yp^odF3 z-*!K?v)N#VwjWq!1^t1w%)nUY9txA{lblV30Ic`$#JG8Sx_M$q9v(hWcwv6@@Pr!Q zCxqbt2+}k5&{FdMUl3fT{s;-s-yI?|Qkc1vY%0jj&2^_S=sC%hOsacEcIv5FKQrhE N5CTJS7q=!J{1@NlI2`~0 diff --git a/miniwob-sandbox/html/common/special/social-media/more-hover.png b/miniwob-sandbox/html/common/special/social-media/more-hover.png deleted file mode 100644 index dea7d186cacb4570c2e283c87eb5cc85740ffa8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 695 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP@*WnC&U#tz-?Q1Kc&D>Ei=zO`PPx93g^^wMxp~hD zenmX`9?_{XReEOJ>~7!gnE5%|j$cj@bJgTu^-E%XW~IrMsmo43%8#oG*!TS>cWig9 zXuk44r6-4ZmG^6%@Hso>->g~n9?4QSSN+{ywbQEmT9^5f%|83tl)X=9eBHa$+9)Dz z&NPLs+%Fa_zj%px55pdo4{A;Qf;AH#giHRJ@!)*r%GO#9jwXc@p+6XPPsDc0t`|}U z`cbvSHKHUXu_VKdAc7#UlcT3Q*HYa19^85q3gzsG{2AvZrI zGp!Q0hFL*rJAfJ_K{f>ErERK(!v>gTe~ HDWM4fcaj6N diff --git a/miniwob-sandbox/html/common/special/social-media/more.png b/miniwob-sandbox/html/common/special/social-media/more.png deleted file mode 100644 index 764e0ce3e97dfd5fd88390014bdc0d5868104127..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 850 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Sk<_s4#jUi2B8=>TniM=;978hhy`6SGTi8+L_2lU81(E;l|4y9suKE<@r5|@IX3x&{$`T5?NL+6-S90kDWjD#3ZmS@`L_BTm) zV)mvet=f{?d+89{4Dozj-bFbFv-qDGDXH$`%-_0NV!^&v^Bv|V|EK)!zyGS;B6^0l z68AszFM*QJudVxXcK;rs-#e^5{~XAEUYpQx?C*WmJsej<|DJuY#{A0mzyotvrpQ+= zU$QCNvyR7nir(>U;rp0*cI>$NdBX~sy}w^itX`Y(-*5BPxgR*L{=6MOG33_Vmbp?z z3(6N{@~f;}{Ndr^1=d+2=fsu;Uz@nhcEb&8hKO3$uP1khe7s^g_1k~J^E}_wpYKeu zKbYS9_VB};!#Cs}r5a>KpO}@Ca(mi7E0%QWn3Nu_8DDCqnDukpdA(jOdi!+2jWpKN zN*97$Zcb9Pn5JAZJNZ~ah2SyE&-qMZsord#3*{D8&oMpQHeufJ=nuWS(yEr+qAXP8FD1G)j8!4b722WQ%mvv4FO#t~jSU>;( diff --git a/miniwob-sandbox/html/common/special/social-media/reply-hover.png b/miniwob-sandbox/html/common/special/social-media/reply-hover.png deleted file mode 100644 index e73751332c19cdd475acefbdeff245553c41dec7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1235 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#N0|R4HfKP}kPyt892llFW ztmW_7tKYI$y=4QF?3Exkd-WUksyATrEnDRq_L|pRWv>|;{(}Uo-g1Bxyk)C;2UN^f z^@amTR=;7be$9{uRPdI)@*M|Is^Tp}!z+;Dn%4{r|JkeGu~oifD0~bO0UB8O4y3XQ zCNSK74BisK^jjdRB*-tAL8(-~;BR>T-Wz$j zIrlWwrP#7Ro!Yvvw=y-*g!SA077v~;4vbl4oR4BN|DDzP=>O+L`Y+p8a;prtY+}*1 zarO@GT6gKIRmQI0)k5)yW~6-BbDsI3$mgW_0zWtUL@OJAXOi9>^OEbr+#Rd$)+rpj z81?$GV?=}R4G*CGj7i?^E({&4vLFs;fk$L9Fj-v(VMZs7*%d%R_7YEDSM~?o0t}3r z%RbaK0`+Y1ba4!cIDGe7c=#a)0oDhi(p@61jx2(rIT}q$953i#ME<~f;Rc3v=Tlp_de}Vc8&5}c6bN7D z43=}&x>xwb?UYK>-L9Dur|V`GDdn+k5pdmeVbhFcRkvA*hwLm(ZIfruogE(_B6gKO zv^+y|-yHTe9_s=OuZ3T~R@}h5Oh-iS_3UUPg)>uHmF}|!hj8Vb7Qb2>vsNgfU6b3j zF*aAsgk zE48_wx-j@{JTQ}CPI4pnzWT~m)^(K+*lwpA)=jy;h;f<^{}OAPg858xA8NnNU}|D{ z(D~YaH>X1ja~wzQv9m1iwOK2e3xa;Vk$uq2Qgdi}GmFYW=U1EG%SZj^e=1(hmw7$x zq3Ri6l&Y4vMwFx^mZVxG7o`Fz1|tJQGhIVNT|=`F0|P4qLn{+QZ6Il2AYCc?7)3*F zeoAIqC2kE_Dr@6`8YDqB1m~xflqVLYGL)B>>t*I;7bhncr0V4trO$q6BL!5%;OXk; Jvd$@?2>_ph^l$(G diff --git a/miniwob-sandbox/html/common/special/social-media/reply.png b/miniwob-sandbox/html/common/special/social-media/reply.png deleted file mode 100644 index 40a525c5c6997cc165026420426a96d6a3810fec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1094 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Sk<_pF7#KNT&CI*cz`!ix>EalYaqsO6UmsydiMIPU zr^LN*H1X4w2^n_#0&mVf z!Jcq5P9QhMHuAe*I}_{WfCUqjG?qNrZ1F7q1fzob?=Q2GjrJx?oaynRKbb-N?R3*- z$G3R}GXmWjZdkr5y<6uwdB?)G)z5MmxU$y2HjbSjH^aS&(cz8GS1VoLPlDBp=W^^b zW&E&-o#9U!Z{u>dh8Ke0X3Vx_SdlS3XrBp__4%uE0vC1Xdon)A+P7pw%v_cQegSs1 zPnRh1^u38-;o#fo#xG#Ddiodfb*C>V2x)1#i$8aGV3qyIj?HKH3>n6T)7vkoEZkG1 zw3CbJddF{#jCS7B1~*R2KAd39>iMqg{4by4``c7zi)8okb}DUb@oE*)S{iiFeRtro zQyJpdEL9VJ`c8fw zXUJ`}yFRc7(8sw4PE>f|SzZ}i*&ro@-$4$0Y^lwz20Xw6mG7Uug) ztYWtPD4cw@Oy)%yH{*{Rjn5eyyL@(?!`C1 zKe^pde~r80X=DNa2PTDmKWgMVDwsEf)d$S4i+wE0aIx0*3r7R*``-^l4^%NMxb3Z2 z->{ZpUkCF&#teqnG5b8vRg@J*m&imf`S<5{h3djyr{-AvZrIGp!Q0hU#z6%77Xq vK{f>ErERK(!v>gTe~DWM4ftlY_+ diff --git a/miniwob-sandbox/html/common/special/social-media/retweet-hover.png b/miniwob-sandbox/html/common/special/social-media/retweet-hover.png deleted file mode 100644 index 9f4d16ce353aba775572b75eb91aa463f3ba0975..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 991 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP~u*IPlzj!X86C1;s0`m z|4YCO2zx2R|3ye#px`Qo|1%l>1I2-CAObRgr~$@Z0h0m>0*wMHSPW)BlmSf!G9Vg( z<^UBy)NF3JKU~UWpdK53KfPN<8u13jm7BG zVn)@M{gU@91uk(O{u8k2yM6nMFUlR|Qh%;oodz_MG0EHAg`tC0)&t1lEbxdd21e6$ z5N34Jm|X!BWH0gbb!C6R%`a}j@s&?75~!!Z)5S3);_%yP*NYB0@VHJ->QdYi;QapT zmwVBZ{{GiLC9q+lG>C#Bm1TAm7t2JE{% zRm&vH#6dPLd~v2#^J_iD1y{}fI=Kt;M6ta1CU@?Jd;}AZyZ`^999DywO5aTuGe6@l zx#p>ru=CLM(!C2Ax9EyzY*%OGbB|pH> zyH)Qne-P7m+<%jya_hMkh80pdE5hEn&AiBPr=%^(QUAH5=z-!5stO#U zmFta+)60p#=ujy9k+6IPJ1_p0@ zz9yh($jwj5OsmALVXmO>9iRqDkPX54X(i=}MX3zs<>h*rdD+Fui3O>8`9NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Sk<_s4#m)7v&)M-8sOh(-i(^Q}y|**sJwzO3j_)t7 zj#}8->eA>Y5XiCD#nVxsW$q1oSC!WS5BJ1|AJI_ZU{3a4F>lL@3D;)tZZ_6YcG+N} zFStl<(Sqr5T>^{vel>@LNW8r3$3L-h`{wf9ccb)w*Y5iHZ=dn+o404)+{r9sS@h(@ z#Kr%0l463oS^F&xtYN8F0VsU&lXFy@wXtk9M`S5UcNmC7NboS6FMl?^A{%-WttUgF(SJ(1zc){_#^b8Y?nF7&xF zbcpOcw((v{|7XShXBo_=tGb^M`y4yND?5iJ;7&Z-#?wLajMoqEe#=xay=-IA9{*zQ zzzLW9);kAZ{rhQ(F2g^*7t2KVb_8?Zek8T~UAVq>ehK>l#t4x}%bRHvb~)~7UUWvX zXwtS9dpdj>K7~YFdzX}XEWq*BJEopJFSooEG`V{`P(`=2a>t@L&l?u(M-r80`)^J^ zbnx)~+<7hk1pH?A?7O5@JD>4(cwPgzU)Y)c+aWtpT2K< z%g}PPR^qh4kAqpW=Kaf@71dTUBip}&ao$>$D^`h2);nuWt||EHnVfmc{O5D6=~?0G z3f9UtxdY5o3cc1|S{tIg-Ti{^?H{Zkl~*5mT{3;H;MEfS>y`zoR}SfW6h1mw(j_`! z*O#4h)D>TwTB-hy&-nczcVDG)-JI!8c`cPPt{o1sHhTJ+t0$ry%9 z{M!2&V|ASN{+U$LZ|ZdT@t>&5a}D$J+qJit?)FK#IZ0z|c(B&`{UVG{nf*%GA`##9Z6J z(8|D|w9=peMMG|WN@iLmZVfCd9cO?VBtbR==ckpFCl;kLl$V$5W#(lUCnpx9>g5-u U&wghk1ysb~>FVdQ&MBb@0A2062mk;8 diff --git a/miniwob-sandbox/html/common/special/social-media/share-hover.png b/miniwob-sandbox/html/common/special/social-media/share-hover.png deleted file mode 100644 index 0a6db26aad11e69c9e70cc341ffd396c59939549..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1508 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.append.apply(this,t.slice(1))},t.prototype.contains=function(t){for(var e,n=this.iterator();e=n();)if(e===t)return!0;return!1},t.prototype.insertBefore=function(t,e){t.next=e,null!=e?(t.prev=e.prev,null!=e.prev&&(e.prev.next=t),e.prev=t,e===this.head&&(this.head=t)):null!=this.tail?(this.tail.next=t,t.prev=this.tail,this.tail=t):(t.prev=void 0,this.head=this.tail=t),this.length+=1},t.prototype.offset=function(t){for(var e=0,n=this.head;null!=n;){if(n===t)return e;e+=n.length(),n=n.next}return-1},t.prototype.remove=function(t){this.contains(t)&&(null!=t.prev&&(t.prev.next=t.next),null!=t.next&&(t.next.prev=t.prev),t===this.head&&(this.head=t.next),t===this.tail&&(this.tail=t.prev),this.length-=1)},t.prototype.iterator=function(t){return void 0===t&&(t=this.head),function(){var e=t;return null!=t&&(t=t.next),e}},t.prototype.find=function(t,e){void 0===e&&(e=!1);for(var n,r=this.iterator();n=r();){var o=n.length();if(ta?n(r,t-a,Math.min(e,a+u-t)):n(r,0,Math.min(u,t+e-a)),a+=u}},t.prototype.map=function(t){return this.reduce(function(e,n){return e.push(t(n)),e},[])},t.prototype.reduce=function(t,e){for(var n,r=this.iterator();n=r();)e=t(e,n);return e},t}();Object.defineProperty(e,"__esModule",{value:!0}),e.default=n},function(t,e,n){"use strict";var r=n(6),o=function(){function t(t){this.domNode=t,this.attach()}return Object.defineProperty(t.prototype,"statics",{get:function(){return this.constructor},enumerable:!0,configurable:!0}),t.create=function(t){if(null==this.tagName)throw new r.ParchmentError("Blot definition missing tagName");var e;return Array.isArray(this.tagName)?("string"==typeof t&&(t=t.toUpperCase(),parseInt(t).toString()===t&&(t=parseInt(t))),e="number"==typeof t?document.createElement(this.tagName[t-1]):this.tagName.indexOf(t)>-1?document.createElement(t):document.createElement(this.tagName[0])):e=document.createElement(this.tagName),this.className&&e.classList.add(this.className),e},t.prototype.attach=function(){this.domNode[r.DATA_KEY]={blot:this}},t.prototype.clone=function(){var t=this.domNode.cloneNode();return r.create(t)},t.prototype.detach=function(){null!=this.parent&&this.parent.removeChild(this),delete this.domNode[r.DATA_KEY]},t.prototype.deleteAt=function(t,e){var n=this.isolate(t,e);n.remove()},t.prototype.formatAt=function(t,e,n,o){var i=this.isolate(t,e);if(null!=r.query(n,r.Scope.BLOT)&&o)i.wrap(n,o);else if(null!=r.query(n,r.Scope.ATTRIBUTE)){var l=r.create(this.statics.scope);i.wrap(l),l.format(n,o)}},t.prototype.insertAt=function(t,e,n){var o=null==n?r.create("text",e):r.create(e,n),i=this.split(t);this.parent.insertBefore(o,i)},t.prototype.insertInto=function(t,e){if(null!=this.parent&&this.parent.children.remove(this),t.children.insertBefore(this,e),null!=e)var n=e.domNode;null!=this.next&&this.domNode.nextSibling==n||t.domNode.insertBefore(this.domNode,n),this.parent=t},t.prototype.isolate=function(t,e){var n=this.split(t);return n.split(e),n},t.prototype.length=function(){return 1},t.prototype.offset=function(t){return void 0===t&&(t=this.parent),null==this.parent||this==t?0:this.parent.children.offset(this)+this.parent.offset(t)},t.prototype.optimize=function(){null!=this.domNode[r.DATA_KEY]&&delete this.domNode[r.DATA_KEY].mutations},t.prototype.remove=function(){null!=this.domNode.parentNode&&this.domNode.parentNode.removeChild(this.domNode),this.detach()},t.prototype.replace=function(t){null!=t.parent&&(t.parent.insertBefore(this,t.next),t.remove())},t.prototype.replaceWith=function(t,e){var n="string"==typeof t?r.create(t,e):t;return n.replace(this),n},t.prototype.split=function(t,e){return 0===t?this:this.next},t.prototype.update=function(t){void 0===t&&(t=[])},t.prototype.wrap=function(t,e){var n="string"==typeof t?r.create(t,e):t;return null!=this.parent&&this.parent.insertBefore(n,this.next),n.appendChild(this),n},t.blotName="abstract",t}();Object.defineProperty(e,"__esModule",{value:!0}),e.default=o},function(t,e){"use strict";function n(t,e){var n=o(t);if(null==n)throw new a("Unable to create "+t+" blot");var r=n,i=t instanceof Node?t:r.create(e);return new r(i,e)}function r(t,n){return void 0===n&&(n=!1),null==t?null:null!=t[e.DATA_KEY]?t[e.DATA_KEY].blot:n?r(t.parentNode,n):null}function o(t,e){void 0===e&&(e=p.ANY);var n;if("string"==typeof t)n=f[t]||s[t];else if(t instanceof Text)n=f.text;else if("number"==typeof t)t&p.LEVEL&p.BLOCK?n=f.block:t&p.LEVEL&p.INLINE&&(n=f.inline);else if(t instanceof HTMLElement){var r=(t.getAttribute("class")||"").split(/\s+/);for(var o in r)if(n=u[r[o]])break;n=n||c[t.tagName]}return null==n&&t instanceof Node&&console.log(t.nodeType),null==n?null:e&p.LEVEL&n.scope&&e&p.TYPE&n.scope?n:null}function i(){for(var t=[],e=0;e1)return t.map(function(t){return i(t)});var n=t[0];if("string"!=typeof n.blotName&&"string"!=typeof n.attrName)throw new a("Invalid definition");if("abstract"===n.blotName)throw new a("Cannot register abstract class");if(f[n.blotName||n.attrName]=n,"string"==typeof n.keyName)s[n.keyName]=n;else if(null!=n.className&&(u[n.className]=n),null!=n.tagName){Array.isArray(n.tagName)?n.tagName=n.tagName.map(function(t){return t.toUpperCase()}):n.tagName=n.tagName.toUpperCase();var r=Array.isArray(n.tagName)?n.tagName:[n.tagName];r.forEach(function(t){null!=c[t]&&null!=n.className||(c[t]=n)})}return n}var l=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},a=function(t){function e(e){e="[Parchment] "+e,t.call(this,e),this.message=e,this.name=this.constructor.name}return l(e,t),e}(Error);e.ParchmentError=a;var s={},u={},c={},f={};e.DATA_KEY="__blot",function(t){t[t.TYPE=3]="TYPE",t[t.LEVEL=12]="LEVEL",t[t.ATTRIBUTE=13]="ATTRIBUTE",t[t.BLOT=14]="BLOT",t[t.INLINE=7]="INLINE",t[t.BLOCK=11]="BLOCK",t[t.BLOCK_BLOT=10]="BLOCK_BLOT",t[t.INLINE_BLOT=6]="INLINE_BLOT",t[t.BLOCK_ATTRIBUTE=9]="BLOCK_ATTRIBUTE",t[t.INLINE_ATTRIBUTE=5]="INLINE_ATTRIBUTE",t[t.ANY=15]="ANY"}(e.Scope||(e.Scope={}));var p=e.Scope;e.create=n,e.find=r,e.query=o,e.register=i},function(t,e,n){"use strict";var r=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},o=n(8),i=n(9),l=n(3),a=n(6),s=function(t){function e(){t.apply(this,arguments)}return r(e,t),e.formats=function(t){return"string"==typeof this.tagName||(Array.isArray(this.tagName)?t.tagName.toLowerCase():void 0)},e.prototype.attach=function(){t.prototype.attach.call(this),this.attributes=new i.default(this.domNode)},e.prototype.format=function(t,e){var n=a.query(t);n instanceof o.default?this.attributes.attribute(n,e):e&&(null==n||t===this.statics.blotName&&this.formats()[t]===e||this.replaceWith(t,e))},e.prototype.formats=function(){var t=this.attributes.values(),e=this.statics.formats(this.domNode);return null!=e&&(t[this.statics.blotName]=e),t},e.prototype.replaceWith=function(e,n){var r=t.prototype.replaceWith.call(this,e,n);return this.attributes.copy(r),r},e.prototype.update=function(e){var n=this;t.prototype.update.call(this,e),e.some(function(t){return t.target===n.domNode&&"attributes"===t.type})&&this.attributes.build()},e.prototype.wrap=function(n,r){var o=t.prototype.wrap.call(this,n,r);return o instanceof e&&o.statics.scope===this.statics.scope&&this.attributes.move(o),o},e}(l.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=s},function(t,e,n){"use strict";var r=n(6),o=function(){function t(t,e,n){void 0===n&&(n={}),this.attrName=t,this.keyName=e;var o=r.Scope.TYPE&r.Scope.ATTRIBUTE;null!=n.scope?this.scope=n.scope&r.Scope.LEVEL|o:this.scope=r.Scope.ATTRIBUTE,null!=n.whitelist&&(this.whitelist=n.whitelist)}return t.keys=function(t){return[].map.call(t.attributes,function(t){return t.name})},t.prototype.add=function(t,e){return!!this.canAdd(t,e)&&(t.setAttribute(this.keyName,e),!0)},t.prototype.canAdd=function(t,e){var n=r.query(t,r.Scope.BLOT&(this.scope|r.Scope.TYPE));return null!=n&&(null==this.whitelist||this.whitelist.indexOf(e)>-1)},t.prototype.remove=function(t){t.removeAttribute(this.keyName)},t.prototype.value=function(t){return t.getAttribute(this.keyName)},t}();Object.defineProperty(e,"__esModule",{value:!0}),e.default=o},function(t,e,n){"use strict";var r=n(8),o=n(10),i=n(11),l=n(6),a=function(){function t(t){this.attributes={},this.domNode=t,this.build()}return t.prototype.attribute=function(t,e){e?t.add(this.domNode,e)&&(null!=t.value(this.domNode)?this.attributes[t.attrName]=t:delete this.attributes[t.attrName]):(t.remove(this.domNode),delete this.attributes[t.attrName])},t.prototype.build=function(){var t=this;this.attributes={};var e=r.default.keys(this.domNode),n=o.default.keys(this.domNode),a=i.default.keys(this.domNode);e.concat(n).concat(a).forEach(function(e){var n=l.query(e,l.Scope.ATTRIBUTE);n instanceof r.default&&(t.attributes[n.attrName]=n)})},t.prototype.copy=function(t){var e=this;Object.keys(this.attributes).forEach(function(n){var r=e.attributes[n].value(e.domNode);t.format(n,r)})},t.prototype.move=function(t){var e=this;this.copy(t),Object.keys(this.attributes).forEach(function(t){e.attributes[t].remove(e.domNode)}),this.attributes={}},t.prototype.values=function(){var t=this;return Object.keys(this.attributes).reduce(function(e,n){return e[n]=t.attributes[n].value(t.domNode),e},{})},t}();Object.defineProperty(e,"__esModule",{value:!0}),e.default=a},function(t,e,n){"use strict";function r(t,e){var n=t.getAttribute("class")||"";return n.split(/\s+/).filter(function(t){return 0===t.indexOf(e+"-")})}var o=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},i=n(8),l=function(t){function e(){t.apply(this,arguments)}return o(e,t),e.keys=function(t){return(t.getAttribute("class")||"").split(/\s+/).map(function(t){return t.split("-").slice(0,-1).join("-")})},e.prototype.add=function(t,e){return!!this.canAdd(t,e)&&(this.remove(t),t.classList.add(this.keyName+"-"+e),!0)},e.prototype.remove=function(t){var e=r(t,this.keyName);e.forEach(function(e){t.classList.remove(e)}),0===t.classList.length&&t.removeAttribute("class")},e.prototype.value=function(t){var e=r(t,this.keyName)[0]||"";return e.slice(this.keyName.length+1)},e}(i.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=l},function(t,e,n){"use strict";function r(t){var e=t.split("-"),n=e.slice(1).map(function(t){return t[0].toUpperCase()+t.slice(1)}).join("");return e[0]+n}var o=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},i=n(8),l=function(t){function e(){t.apply(this,arguments)}return o(e,t),e.keys=function(t){return(t.getAttribute("style")||"").split(";").map(function(t){var e=t.split(":");return e[0].trim()})},e.prototype.add=function(t,e){return!!this.canAdd(t,e)&&(t.style[r(this.keyName)]=e,!0)},e.prototype.remove=function(t){t.style[r(this.keyName)]="",t.getAttribute("style")||t.removeAttribute("style")},e.prototype.value=function(t){return t.style[r(this.keyName)]},e}(i.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=l},function(t,e,n){"use strict";var r=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},o=n(5),i=n(6),l=function(t){function e(){t.apply(this,arguments)}return r(e,t),e.value=function(t){return!0},e.prototype.index=function(t,e){return t!==this.domNode?-1:Math.min(e,1)},e.prototype.position=function(t,e){var n=[].indexOf.call(this.parent.domNode.childNodes,this.domNode);return t>0&&(n+=1),[this.parent.domNode,n]},e.prototype.value=function(){return t={},t[this.statics.blotName]=this.statics.value(this.domNode)||!0,t;var t},e.scope=i.Scope.INLINE_BLOT,e}(o.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=l},function(t,e,n){"use strict";var r=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},o=n(3),i=n(6),l={attributes:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0},a=100,s=function(t){function e(e){var n=this;t.call(this,e),this.parent=null,this.observer=new MutationObserver(function(t){n.update(t)}),this.observer.observe(this.domNode,l)}return r(e,t),e.prototype.detach=function(){t.prototype.detach.call(this),this.observer.disconnect()},e.prototype.deleteAt=function(e,n){this.update(),0===e&&n===this.length()?this.children.forEach(function(t){t.remove()}):t.prototype.deleteAt.call(this,e,n)},e.prototype.formatAt=function(e,n,r,o){this.update(),t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.insertAt=function(e,n,r){this.update(),t.prototype.insertAt.call(this,e,n,r)},e.prototype.optimize=function(e){var n=this;void 0===e&&(e=[]),t.prototype.optimize.call(this),e.push.apply(e,this.observer.takeRecords());for(var r=function(t,e){void 0===e&&(e=!0),null!=t&&t!==n&&null!=t.domNode.parentNode&&(null==t.domNode[i.DATA_KEY].mutations&&(t.domNode[i.DATA_KEY].mutations=[]),e&&r(t.parent))},l=function(t){null!=t.domNode[i.DATA_KEY]&&null!=t.domNode[i.DATA_KEY].mutations&&(t instanceof o.default&&t.children.forEach(l),t.optimize())},s=e,u=0;s.length>0;u+=1){if(u>=a)throw new Error("[Parchment] Maximum optimize iterations reached");s.forEach(function(t){var e=i.find(t.target,!0);null!=e&&(e.domNode===t.target&&("childList"===t.type?(r(i.find(t.previousSibling,!1)),[].forEach.call(t.addedNodes,function(t){var e=i.find(t,!1);r(e,!1),e instanceof o.default&&e.children.forEach(function(t){r(t,!1)})})):"attributes"===t.type&&r(e.prev)),r(e))}),this.children.forEach(l),s=this.observer.takeRecords(),e.push.apply(e,s)}},e.prototype.update=function(e){var n=this;e=e||this.observer.takeRecords(),e.map(function(t){var e=i.find(t.target,!0);if(null!=e)return null==e.domNode[i.DATA_KEY].mutations?(e.domNode[i.DATA_KEY].mutations=[t],e):(e.domNode[i.DATA_KEY].mutations.push(t),null)}).forEach(function(t){null!=t&&t!==n&&null!=t.domNode[i.DATA_KEY]&&t.update(t.domNode[i.DATA_KEY].mutations||[])}),null!=this.domNode[i.DATA_KEY].mutations&&t.prototype.update.call(this,this.domNode[i.DATA_KEY].mutations),this.optimize(e)},e.blotName="scroll",e.defaultChild="block",e.scope=i.Scope.BLOCK_BLOT,e.tagName="DIV",e}(o.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=s},function(t,e,n){"use strict";function r(t,e){if(Object.keys(t).length!==Object.keys(e).length)return!1;for(var n in t)if(t[n]!==e[n])return!1;return!0}var o=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},i=n(7),l=n(6),a=function(t){function e(){t.apply(this,arguments)}return o(e,t),e.formats=function(n){if(n.tagName!==e.tagName)return t.formats.call(this,n)},e.prototype.format=function(n,r){var o=this;n!==this.statics.blotName||r?t.prototype.format.call(this,n,r):(this.children.forEach(function(t){t instanceof i.default||(t=t.wrap(e.blotName,!0)),o.attributes.copy(t)}),this.unwrap())},e.prototype.formatAt=function(e,n,r,o){if(null!=this.formats()[r]||l.query(r,l.Scope.ATTRIBUTE)){var i=this.isolate(e,n);i.format(r,o)}else t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.optimize=function(){t.prototype.optimize.call(this);var n=this.formats();if(0===Object.keys(n).length)return this.unwrap();var o=this.next;o instanceof e&&o.prev===this&&r(n,o.formats())&&(o.moveChildren(this),o.remove())},e.blotName="inline",e.scope=l.Scope.INLINE_BLOT,e.tagName="SPAN",e}(i.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=a},function(t,e,n){"use strict";var r=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},o=n(7),i=n(6),l=function(t){function e(){t.apply(this,arguments)}return r(e,t),e.formats=function(n){var r=i.query(e.blotName).tagName;if(n.tagName!==r)return t.formats.call(this,n)},e.prototype.format=function(n,r){null!=i.query(n,i.Scope.BLOCK)&&(n!==this.statics.blotName||r?t.prototype.format.call(this,n,r):this.replaceWith(e.blotName))},e.prototype.formatAt=function(e,n,r,o){null!=i.query(r,i.Scope.BLOCK)?this.format(r,o):t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.insertAt=function(e,n,r){if(null==r||null!=i.query(n,i.Scope.INLINE))t.prototype.insertAt.call(this,e,n,r);else{var o=this.split(e),l=i.create(n,r);o.parent.insertBefore(l,o)}},e.blotName="block",e.scope=i.Scope.BLOCK_BLOT,e.tagName="P",e}(o.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=l},function(t,e,n){"use strict";var r=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},o=n(12),i=function(t){function e(){t.apply(this,arguments)}return r(e,t),e.formats=function(t){},e.prototype.format=function(e,n){t.prototype.formatAt.call(this,0,this.length(),e,n)},e.prototype.formatAt=function(e,n,r,o){0===e&&n===this.length()?this.format(r,o):t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.formats=function(){return this.statics.formats(this.domNode)},e}(o.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=i},function(t,e,n){"use strict";var r=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},o=n(12),i=n(6),l=function(t){function e(e){t.call(this,e),this.text=this.statics.value(this.domNode)}return r(e,t),e.create=function(t){return document.createTextNode(t)},e.value=function(t){return t.data},e.prototype.deleteAt=function(t,e){this.domNode.data=this.text=this.text.slice(0,t)+this.text.slice(t+e)},e.prototype.index=function(t,e){return this.domNode===t?e:-1},e.prototype.insertAt=function(e,n,r){null==r?(this.text=this.text.slice(0,e)+n+this.text.slice(e),this.domNode.data=this.text):t.prototype.insertAt.call(this,e,n,r)},e.prototype.length=function(){return this.text.length},e.prototype.optimize=function(){t.prototype.optimize.call(this),this.text=this.statics.value(this.domNode),0===this.text.length?this.remove():this.next instanceof e&&this.next.prev===this&&(this.insertAt(this.length(),this.next.value()),this.next.remove())},e.prototype.position=function(t,e){return void 0===e&&(e=!1),[this.domNode,t]},e.prototype.split=function(t,e){if(void 0===e&&(e=!1),!e){if(0===t)return this;if(t===this.length())return this.next}var n=i.create(this.domNode.splitText(t));return this.parent.insertBefore(n,this.next),this.text=this.statics.value(this.domNode),n},e.prototype.update=function(t){var e=this;t.some(function(t){return"characterData"===t.type&&t.target===e.domNode})&&(this.text=this.statics.value(this.domNode))},e.prototype.value=function(){return this.text},e.blotName="text",e.scope=i.Scope.INLINE_BLOT,e}(o.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=l},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){if(e=(0,j.default)(!0,{container:t,modules:{clipboard:!0,keyboard:!0,history:!0}},e),e.theme&&e.theme!==S.DEFAULTS.theme){if(e.theme=S.import("themes/"+e.theme),null==e.theme)throw new Error("Invalid theme "+e.theme+". Did you register it?")}else e.theme=T.default;var n=(0,j.default)(!0,{},e.theme.DEFAULTS);[n,e].forEach(function(t){t.modules=t.modules||{},Object.keys(t.modules).forEach(function(e){t.modules[e]===!0&&(t.modules[e]={})})});var r=Object.keys(n.modules).concat(Object.keys(e.modules)),o=r.reduce(function(t,e){var n=S.import("modules/"+e);return null==n?P.error("Cannot load "+e+" module. Are you sure you registered it?"):t[e]=n.DEFAULTS||{},t},{});return null!=e.modules&&e.modules.toolbar&&e.modules.toolbar.constructor!==Object&&(e.modules.toolbar={container:e.modules.toolbar}),e=(0,j.default)(!0,{},S.DEFAULTS,{modules:o},n,e),["bounds","container"].forEach(function(t){"string"==typeof e[t]&&(e[t]=document.querySelector(e[t]))}),e.modules=Object.keys(e.modules).reduce(function(t,n){return e.modules[n]&&(t[n]=e.modules[n]),t},{}),e}function a(t,e,n,r){if(!this.options.strict&&!this.isEnabled()&&e===g.default.sources.USER)return new d.default;var o=null==n?null:this.getSelection(),i=this.editor.delta,l=t();if(null!=o&&(n===!0&&(n=o.index),null==r?o=u(o,l,e):0!==r&&(o=u(o,n,r,e)),this.setSelection(o,g.default.sources.SILENT)),l.length()>0){var a,s=[g.default.events.TEXT_CHANGE,l,i,e];if((a=this.emitter).emit.apply(a,[g.default.events.EDITOR_CHANGE].concat(s)),e!==g.default.sources.SILENT){var c;(c=this.emitter).emit.apply(c,s)}}return l}function s(t,e,n,r,o){var i={};return"number"==typeof t.index&&"number"==typeof t.length?"number"!=typeof e?(o=r,r=n,n=e,e=t.length,t=t.index):(e=t.length,t=t.index):"number"!=typeof e&&(o=r,r=n,n=e,e=0),"object"===("undefined"==typeof n?"undefined":c(n))?(i=n,o=r):"string"==typeof n&&(null!=r?i[n]=r:o=n),o=o||g.default.sources.API,[t,e,i,o]}function u(t,e,n,r){if(null==t)return null;var o=void 0,i=void 0;if(e instanceof d.default){var l=[t.index,t.index+t.length].map(function(t){return e.transformPosition(t,r===g.default.sources.USER)}),a=f(l,2);o=a[0],i=a[1]}else{var s=[t.index,t.index+t.length].map(function(t){return t=0?t+n:Math.max(e,t+n)}),u=f(s,2);o=u[0],i=u[1]}return new x.Range(o,i-o)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.overload=e.expandConfig=void 0;var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),p=function(){function t(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};if(i(this,t),this.options=l(e,r),this.container=this.options.container,null==this.container)return P.error("Invalid Quill container",e);this.options.debug&&t.debug(this.options.debug);var o=this.container.innerHTML.trim(); -this.container.classList.add("ql-container"),this.container.innerHTML="",this.root=this.addContainer("ql-editor"),this.root.classList.add("ql-blank"),this.emitter=new g.default,this.scroll=w.default.create(this.root,{emitter:this.emitter,whitelist:this.options.formats}),this.editor=new v.default(this.scroll),this.selection=new k.default(this.scroll,this.emitter),this.theme=new this.options.theme(this,this.options),this.keyboard=this.theme.addModule("keyboard"),this.clipboard=this.theme.addModule("clipboard"),this.history=this.theme.addModule("history"),this.theme.init(),this.emitter.on(g.default.events.EDITOR_CHANGE,function(t){t===g.default.events.TEXT_CHANGE&&n.root.classList.toggle("ql-blank",n.editor.isBlank())}),this.emitter.on(g.default.events.SCROLL_UPDATE,function(t,e){var r=n.selection.lastRange,o=r&&0===r.length?r.index:void 0;a.call(n,function(){return n.editor.update(null,e,o)},t)});var s=this.clipboard.convert("
"+o+"


");this.setContents(s),this.history.clear(),this.options.placeholder&&this.root.setAttribute("data-placeholder",this.options.placeholder),this.options.readOnly&&this.disable()}return p(t,null,[{key:"debug",value:function(t){t===!0&&(t="log"),N.default.level(t)}},{key:"import",value:function(t){return null==this.imports[t]&&P.error("Cannot import "+t+". Are you sure it was registered?"),this.imports[t]}},{key:"register",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"!=typeof t){var o=t.attrName||t.blotName;"string"==typeof o?this.register("formats/"+o,t,e):Object.keys(t).forEach(function(r){n.register(r,t[r],e)})}else null==this.imports[t]||r||P.warn("Overwriting "+t+" with",e),this.imports[t]=e,(t.startsWith("blots/")||t.startsWith("formats/"))&&"abstract"!==e.blotName&&w.default.register(e)}}]),p(t,[{key:"addContainer",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof t){var n=t;t=document.createElement("div"),t.classList.add(n)}return this.container.insertBefore(t,e),t}},{key:"blur",value:function(){this.selection.setRange(null)}},{key:"deleteText",value:function(t,e,n){var r=this,o=s(t,e,n),i=f(o,4);return t=i[0],e=i[1],n=i[3],a.call(this,function(){return r.editor.deleteText(t,e)},n,t,-1*e)}},{key:"disable",value:function(){this.enable(!1)}},{key:"enable",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.scroll.enable(t),this.container.classList.toggle("ql-disabled",!t),t||this.blur()}},{key:"focus",value:function(){this.selection.focus(),this.selection.scrollIntoView()}},{key:"format",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:g.default.sources.API;return a.call(this,function(){var r=n.getSelection(!0),i=new d.default;if(null==r)return i;if(w.default.query(t,w.default.Scope.BLOCK))i=n.editor.formatLine(r.index,r.length,o({},t,e));else{if(0===r.length)return n.selection.format(t,e),i;i=n.editor.formatText(r.index,r.length,o({},t,e))}return n.setSelection(r,g.default.sources.SILENT),i},r)}},{key:"formatLine",value:function(t,e,n,r,o){var i=this,l=void 0,u=s(t,e,n,r,o),c=f(u,4);return t=c[0],e=c[1],l=c[2],o=c[3],a.call(this,function(){return i.editor.formatLine(t,e,l)},o,t,0)}},{key:"formatText",value:function(t,e,n,r,o){var i=this,l=void 0,u=s(t,e,n,r,o),c=f(u,4);return t=c[0],e=c[1],l=c[2],o=c[3],a.call(this,function(){return i.editor.formatText(t,e,l)},o,t,0)}},{key:"getBounds",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return"number"==typeof t?this.selection.getBounds(t,e):this.selection.getBounds(t.index,t.length)}},{key:"getContents",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getLength()-t,n=s(t,e),r=f(n,2);return t=r[0],e=r[1],this.editor.getContents(t,e)}},{key:"getFormat",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.getSelection(),e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return"number"==typeof t?this.editor.getFormat(t,e):this.editor.getFormat(t.index,t.length)}},{key:"getLength",value:function(){return this.scroll.length()}},{key:"getModule",value:function(t){return this.theme.modules[t]}},{key:"getSelection",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t&&this.focus(),this.update(),this.selection.getRange()[0]}},{key:"getText",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getLength()-t,n=s(t,e),r=f(n,2);return t=r[0],e=r[1],this.editor.getText(t,e)}},{key:"hasFocus",value:function(){return this.selection.hasFocus()}},{key:"insertEmbed",value:function(e,n,r){var o=this,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.sources.API;return a.call(this,function(){return o.editor.insertEmbed(e,n,r)},i,e)}},{key:"insertText",value:function(t,e,n,r,o){var i=this,l=void 0,u=s(t,0,n,r,o),c=f(u,4);return t=c[0],l=c[2],o=c[3],a.call(this,function(){return i.editor.insertText(t,e,l)},o,t,e.length)}},{key:"isEnabled",value:function(){return!this.container.classList.contains("ql-disabled")}},{key:"off",value:function(){return this.emitter.off.apply(this.emitter,arguments)}},{key:"on",value:function(){return this.emitter.on.apply(this.emitter,arguments)}},{key:"once",value:function(){return this.emitter.once.apply(this.emitter,arguments)}},{key:"pasteHTML",value:function(t,e,n){this.clipboard.dangerouslyPasteHTML(t,e,n)}},{key:"removeFormat",value:function(t,e,n){var r=this,o=s(t,e,n),i=f(o,4);return t=i[0],e=i[1],n=i[3],a.call(this,function(){return r.editor.removeFormat(t,e)},n,t)}},{key:"setContents",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g.default.sources.API;return a.call(this,function(){t=new d.default(t);var n=e.getLength(),r=e.editor.deleteText(0,n),o=e.editor.applyDelta(t),i=o.ops[o.ops.length-1];null!=i&&"string"==typeof i.insert&&"\n"===i.insert[i.insert.length-1]&&(e.editor.deleteText(e.getLength()-1,1),o.delete(1));var l=r.compose(o);return l},n)}},{key:"setSelection",value:function(e,n,r){if(null==e)this.selection.setRange(null,n||t.sources.API);else{var o=s(e,n,r),i=f(o,4);e=i[0],n=i[1],r=i[3],this.selection.setRange(new x.Range(e,n),r)}this.selection.scrollIntoView()}},{key:"setText",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g.default.sources.API,n=(new d.default).insert(t);return this.setContents(n,e)}},{key:"update",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g.default.sources.USER,e=this.scroll.update(t);return this.selection.update(t),e}},{key:"updateContents",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g.default.sources.API;return a.call(this,function(){return t=new d.default(t),e.editor.applyDelta(t,n)},n,!0)}}]),t}();S.DEFAULTS={bounds:null,formats:null,modules:{},placeholder:"",readOnly:!1,strict:!0,theme:"default"},S.events=g.default.events,S.sources=g.default.sources,S.version="1.1.5",S.imports={delta:d.default,parchment:w.default,"core/module":_.default,"core/theme":T.default},e.expandConfig=l,e.overload=s,e.default=S},function(t,e){"use strict";var n=document.createElement("div");n.classList.toggle("test-class",!1),n.classList.contains("test-class")&&!function(){var t=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,n){return arguments.length>1&&!this.contains(e)==!n?n:t.call(this,e)}}(),String.prototype.startsWith||(String.prototype.startsWith=function(t,e){return e=e||0,this.substr(e,t.length)===t}),String.prototype.endsWith||(String.prototype.endsWith=function(t,e){var n=this.toString();("number"!=typeof e||!isFinite(e)||Math.floor(e)!==e||e>n.length)&&(e=n.length),e-=t.length;var r=n.indexOf(t,e);return r!==-1&&r===e}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function t(e){if(null===this)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var t,n=Object(this),r=n.length>>>0,o=arguments[1],i=0;i0&&(n.attributes=e),this.push(n))},s.prototype.delete=function(t){return t<=0?this:this.push({delete:t})},s.prototype.retain=function(t,e){if(t<=0)return this;var n={retain:t};return null!=e&&"object"==typeof e&&Object.keys(e).length>0&&(n.attributes=e),this.push(n)},s.prototype.push=function(t){var e=this.ops.length,n=this.ops[e-1];if(t=i(!0,{},t),"object"==typeof n){if("number"==typeof t.delete&&"number"==typeof n.delete)return this.ops[e-1]={delete:n.delete+t.delete},this;if("number"==typeof n.delete&&null!=t.insert&&(e-=1,n=this.ops[e-1],"object"!=typeof n))return this.ops.unshift(t),this;if(o(t.attributes,n.attributes)){if("string"==typeof t.insert&&"string"==typeof n.insert)return this.ops[e-1]={insert:n.insert+t.insert},"object"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this;if("number"==typeof t.retain&&"number"==typeof n.retain)return this.ops[e-1]={retain:n.retain+t.retain},"object"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this}}return e===this.ops.length?this.ops.push(t):this.ops.splice(e,0,t),this},s.prototype.filter=function(t){return this.ops.filter(t)},s.prototype.forEach=function(t){this.ops.forEach(t)},s.prototype.map=function(t){return this.ops.map(t)},s.prototype.partition=function(t){var e=[],n=[];return this.forEach(function(r){var o=t(r)?e:n;o.push(r)}),[e,n]},s.prototype.reduce=function(t,e){return this.ops.reduce(t,e)},s.prototype.chop=function(){var t=this.ops[this.ops.length-1];return t&&t.retain&&!t.attributes&&this.ops.pop(),this},s.prototype.length=function(){return this.reduce(function(t,e){return t+l.length(e)},0)},s.prototype.slice=function(t,e){t=t||0,"number"!=typeof e&&(e=1/0);for(var n=[],r=l.iterator(this.ops),o=0;o0&&(e.push(t.ops[0]),e.ops=e.ops.concat(t.ops.slice(1))),e},s.prototype.diff=function(t,e){if(this.ops===t.ops)return new s;var n=[this,t].map(function(e){return e.map(function(n){if(null!=n.insert)return"string"==typeof n.insert?n.insert:a;var r=e===t?"on":"with";throw new Error("diff() called "+r+" non-document")}).join("")}),i=new s,u=r(n[0],n[1],e),c=l.iterator(this.ops),f=l.iterator(t.ops);return u.forEach(function(t){for(var e=t[1].length;e>0;){var n=0;switch(t[0]){case r.INSERT:n=Math.min(f.peekLength(),e),i.push(f.next(n));break;case r.DELETE:n=Math.min(e,c.peekLength()),c.next(n),i.delete(n);break;case r.EQUAL:n=Math.min(c.peekLength(),f.peekLength(),e);var a=c.next(n),s=f.next(n);o(a.insert,s.insert)?i.retain(n,l.attributes.diff(a.attributes,s.attributes)):i.push(s).delete(n)}e-=n}}),i.chop()},s.prototype.eachLine=function(t,e){e=e||"\n";for(var n=l.iterator(this.ops),r=new s;n.hasNext();){if("insert"!==n.peekType())return;var o=n.peek(),i=l.length(o)-n.peekLength(),a="string"==typeof o.insert?o.insert.indexOf(e,i)-i:-1;a<0?r.push(n.next()):a>0?r.push(n.next(a)):(t(r,n.next(1).attributes||{}),r=new s)}r.length()>0&&t(r,{})},s.prototype.transform=function(t,e){if(e=!!e,"number"==typeof t)return this.transformPosition(t,e);for(var n=l.iterator(this.ops),r=l.iterator(t.ops),o=new s;n.hasNext()||r.hasNext();)if("insert"!==n.peekType()||!e&&"insert"===r.peekType())if("insert"===r.peekType())o.push(r.next());else{var i=Math.min(n.peekLength(),r.peekLength()),a=n.next(i),u=r.next(i);if(a.delete)continue;u.delete?o.push(u):o.retain(i,l.attributes.transform(a.attributes,u.attributes,e))}else o.retain(l.length(n.next()));return o.chop()},s.prototype.transformPosition=function(t,e){e=!!e;for(var n=l.iterator(this.ops),r=0;n.hasNext()&&r<=t;){var o=n.peekLength(),i=n.peekType();n.next(),"delete"!==i?("insert"===i&&(re.length?t:e,l=t.length>e.length?e:t,a=i.indexOf(l);if(a!=-1)return r=[[d,i.substring(0,a)],[y,l],[d,i.substring(a+l.length)]],t.length>e.length&&(r[0][0]=r[2][0]=h),r;if(1==l.length)return[[h,t],[d,e]];var u=s(t,e);if(u){var c=u[0],f=u[1],p=u[2],v=u[3],b=u[4],g=n(c,p),m=n(f,v);return g.concat([[y,b]],m)}return o(t,e)}function o(t,e){for(var n=t.length,r=e.length,o=Math.ceil((n+r)/2),l=o,a=2*o,s=new Array(a),u=new Array(a),c=0;cn)v+=2;else if(x>r)y+=2;else if(p){var k=l+f-_;if(k>=0&&k=E)return i(t,e,O,x)}}}for(var j=-m+b;j<=m-g;j+=2){var E,k=l+j;E=j==-m||j!=m&&u[k-1]n)g+=2;else if(A>r)b+=2;else if(!p){var w=l+f-j;if(w>=0&&w=E)return i(t,e,O,x)}}}}return[[h,t],[d,e]]}function i(t,e,r,o){var i=t.substring(0,r),l=e.substring(0,o),a=t.substring(r),s=e.substring(o),u=n(i,l),c=n(a,s);return u.concat(c)}function l(t,e){if(!t||!e||t.charAt(0)!=e.charAt(0))return 0;for(var n=0,r=Math.min(t.length,e.length),o=r,i=0;n=t.length?[r,o,i,s,f]:null}var r=t.length>e.length?t:e,o=t.length>e.length?e:t;if(r.length<4||2*o.lengthu[4].length?s:u:s;var c,f,p,h;t.length>e.length?(c=i[0],f=i[1],p=i[2],h=i[3]):(p=i[0],h=i[1],c=i[2],f=i[3]);var d=i[4];return[c,f,p,h,d]}function u(t){t.push([y,""]);for(var e,n=0,r=0,o=0,i="",s="";n1?(0!==r&&0!==o&&(e=l(s,i),0!==e&&(n-r-o>0&&t[n-r-o-1][0]==y?t[n-r-o-1][1]+=s.substring(0,e):(t.splice(0,0,[y,s.substring(0,e)]),n++),s=s.substring(e),i=i.substring(e)),e=a(s,i),0!==e&&(t[n][1]=s.substring(s.length-e)+t[n][1],s=s.substring(0,s.length-e),i=i.substring(0,i.length-e))),0===r?t.splice(n-o,r+o,[d,s]):0===o?t.splice(n-r,r+o,[h,i]):t.splice(n-r-o,r+o,[h,i],[d,s]),n=n-r-o+(r?1:0)+(o?1:0)+1):0!==n&&t[n-1][0]==y?(t[n-1][1]+=t[n][1],t.splice(n,1)):n++,o=0,r=0,i="",s=""}""===t[t.length-1][1]&&t.pop();var c=!1;for(n=1;n0&&r.splice(o+2,0,[l[0],a]),p(r,o,3)}return t}function p(t,e,n){for(var r=e+n-1;r>=0&&r>=e-1;r--)if(r+10?r:void 0},diff:function(t,e){"object"!=typeof t&&(t={}),"object"!=typeof e&&(e={});var n=Object.keys(t).concat(Object.keys(e)).reduce(function(n,r){return o(t[r],e[r])||(n[r]=void 0===e[r]?null:e[r]),n},{});return Object.keys(n).length>0?n:void 0},transform:function(t,e,n){if("object"!=typeof t)return e;if("object"==typeof e){if(!n)return e;var r=Object.keys(e).reduce(function(n,r){return void 0===t[r]&&(n[r]=e[r]),n},{});return Object.keys(r).length>0?r:void 0}}},iterator:function(t){return new r(t)},length:function(t){return"number"==typeof t.delete?t.delete:"number"==typeof t.retain?t.retain:"string"==typeof t.insert?t.insert.length:1}};r.prototype.hasNext=function(){return this.peekLength()<1/0},r.prototype.next=function(t){t||(t=1/0);var e=this.ops[this.index];if(e){var n=this.offset,r=l.length(e);if(t>=r-n?(t=r-n,this.index+=1,this.offset=0):this.offset+=t,"number"==typeof e.delete)return{delete:t};var o={};return e.attributes&&(o.attributes=e.attributes),"number"==typeof e.retain?o.retain=t:"string"==typeof e.insert?o.insert=e.insert.substr(n,t):o.insert=e.insert,o}return{retain:1/0}},r.prototype.peek=function(){return this.ops[this.index]},r.prototype.peekLength=function(){return this.ops[this.index]?l.length(this.ops[this.index])-this.offset:1/0},r.prototype.peekType=function(){return this.ops[this.index]?"number"==typeof this.ops[this.index].delete?"delete":"number"==typeof this.ops[this.index].retain?"retain":"insert":"retain"},t.exports=l},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){return Object.keys(e).reduce(function(n,r){return null==t[r]?n:(e[r]===t[r]?n[r]=e[r]:Array.isArray(e[r])?e[r].indexOf(t[r])<0&&(n[r]=e[r].concat([t[r]])):n[r]=[e[r],t[r]],n)},{})}function a(t){return t.reduce(function(t,e){if(1===e.insert){var n=(0,k.default)(e.attributes);return delete n.image,t.insert({image:e.attributes.image},n)}if(null==e.attributes||e.attributes.list!==!0&&e.attributes.bullet!==!0||(e=(0,k.default)(e),e.attributes.list?e.attributes.list="ordered":(e.attributes.list="bullet",delete e.attributes.bullet)),"string"==typeof e.insert){var r=e.insert.replace(/\r\n/g,"\n").replace(/\r/g,"\n");return t.insert(r,e.attributes)}return t.push(e)},new p.default)}Object.defineProperty(e,"__esModule",{value:!0});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=function(){function t(t,e){for(var n=0;n=r&&!a.endsWith("\n")&&(n=!0),e.scroll.insertAt(t,a);var c=e.scroll.line(t),f=u(c,2),p=f[0],h=f[1],y=(0,N.default)({},(0,O.bubbleFormats)(p));if(p instanceof w.default){var b=p.descendant(v.default.Leaf,h),g=u(b,1),m=g[0];y=(0,N.default)(y,(0,O.bubbleFormats)(m))}l=d.default.attributes.diff(y,l)||{}}else if("object"===s(o.insert)){var _=Object.keys(o.insert)[0];if(null==_)return t;e.scroll.insertAt(t,_,o.insert[_])}r+=i}return Object.keys(l).forEach(function(n){e.scroll.formatAt(t,i,n,l[n])}),t+i},0),t.reduce(function(t,n){return"number"==typeof n.delete?(e.scroll.deleteAt(t,n.delete),t):t+(n.retain||n.insert.length||1)},0),this.scroll.batch=!1,this.scroll.optimize(),this.update(t)}},{key:"deleteText",value:function(t,e){return this.scroll.deleteAt(t,e),this.update((new p.default).retain(t).delete(e))}},{key:"formatLine",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.scroll.update(),Object.keys(r).forEach(function(o){var i=n.scroll.lines(t,Math.max(e,1)),l=e;i.forEach(function(e){var i=e.length();if(e instanceof g.default){var a=t-e.offset(n.scroll),s=e.newlineIndex(a+l)-a+1;e.formatAt(a,s,o,r[o])}else e.format(o,r[o]);l-=i})}),this.scroll.optimize(),this.update((new p.default).retain(t).retain(e,(0,k.default)(r)))}},{key:"formatText",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return Object.keys(r).forEach(function(o){n.scroll.formatAt(t,e,o,r[o])}),this.update((new p.default).retain(t).retain(e,(0,k.default)(r)))}},{key:"getContents",value:function(t,e){return this.delta.slice(t,t+e)}},{key:"getDelta",value:function(){return this.scroll.lines().reduce(function(t,e){return t.concat(e.delta())},new p.default)}},{key:"getFormat",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=[],r=[];0===e?this.scroll.path(t).forEach(function(t){var e=u(t,1),o=e[0];o instanceof w.default?n.push(o):o instanceof v.default.Leaf&&r.push(o)}):(n=this.scroll.lines(t,e),r=this.scroll.descendants(v.default.Leaf,t,e));var o=[n,r].map(function(t){if(0===t.length)return{};for(var e=(0,O.bubbleFormats)(t.shift());Object.keys(e).length>0;){var n=t.shift();if(null==n)return e;e=l((0,O.bubbleFormats)(n),e)}return e});return N.default.apply(N.default,o)}},{key:"getText",value:function(t,e){return this.getContents(t,e).filter(function(t){return"string"==typeof t.insert}).map(function(t){return t.insert}).join("")}},{key:"insertEmbed",value:function(t,e,n){return this.scroll.insertAt(t,e,n),this.update((new p.default).retain(t).insert(o({},e,n)))}},{key:"insertText",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return e=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n"),this.scroll.insertAt(t,e),Object.keys(r).forEach(function(o){n.scroll.formatAt(t,e.length,o,r[o])}),this.update((new p.default).retain(t).insert(e,(0,k.default)(r)))}},{key:"isBlank",value:function(){if(0==this.scroll.children.length)return!0;if(this.scroll.children.length>1)return!1;var t=this.scroll.children.head;return t.length()<=1&&0==Object.keys(t.formats()).length}},{key:"removeFormat",value:function(t,e){var n=this.getText(t,e),r=this.scroll.line(t+e),o=u(r,2),i=o[0],l=o[1],a=0,s=new p.default;null!=i&&(a=i instanceof g.default?i.newlineIndex(l)-l+1:i.length()-l,s=i.delta().slice(l,l+a-1).insert("\n"));var c=this.getContents(t,e+a),f=c.diff((new p.default).insert(n).concat(s)),h=(new p.default).retain(t).concat(f);return this.applyDelta(h)}},{key:"update",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,o=this.delta;return 1===n.length&&"characterData"===n[0].type&&v.default.find(n[0].target)?!function(){var i=v.default.find(n[0].target),l=(0,O.bubbleFormats)(i),a=i.offset(e.scroll),s=n[0].oldValue.replace(_.default.CONTENTS,""),u=(new p.default).insert(s),c=(new p.default).insert(i.value()),f=(new p.default).retain(a).concat(u.diff(c,r));t=f.reduce(function(t,e){return e.insert?t.insert(e.insert,l):t.push(e)},new p.default),e.delta=o.compose(t)}():(this.delta=this.getDelta(),t&&(0,j.default)(o.compose(t),this.delta)||(t=o.diff(this.delta,r))),t}}]),t}();e.default=q},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.Code=void 0;var a=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function(){function t(t,e){for(var n=0;n=t+n)){var l=this.newlineIndex(t,!0)+1,a=i-l+1,s=this.isolate(l,a),u=s.next;s.format(r,o),u instanceof e&&u.formatAt(0,t-l+n-a,r,o)}}}},{key:"insertAt",value:function(t,e,n){if(null==n){var r=this.descendant(m.default,t),o=a(r,2),i=o[0],l=o[1];i.insertAt(l,e)}}},{key:"length",value:function t(){var t=this.domNode.textContent.length;return this.domNode.textContent.endsWith("\n")?t:t+1}},{key:"newlineIndex",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(e)return this.domNode.textContent.slice(0,t).lastIndexOf("\n");var n=this.domNode.textContent.slice(t).indexOf("\n");return n>-1?t+n:-1}},{key:"optimize",value:function(){this.domNode.textContent.endsWith("\n")||this.appendChild(h.default.create("text","\n")),u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this);var t=this.next;null!=t&&t.prev===this&&t.statics.blotName===this.statics.blotName&&this.statics.formats(this.domNode)===t.statics.formats(t.domNode)&&(t.optimize(),t.moveChildren(this),t.remove())}},{key:"replace",value:function(t){u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"replace",this).call(this,t),[].slice.call(this.domNode.querySelectorAll("*")).forEach(function(t){var e=h.default.find(t);null==e?t.parentNode.removeChild(t):e instanceof h.default.Embed?e.remove():e.unwrap()})}}],[{key:"create",value:function(t){var n=u(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t); -return n.setAttribute("spellcheck",!1),n}},{key:"formats",value:function(){return!0}}]),e}(y.default);O.blotName="code-block",O.tagName="PRE",O.TAB=" ",e.Code=_,e.default=O},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return null==t?e:("function"==typeof t.formats&&(e=(0,f.default)(e,t.formats())),null==t.parent||"scroll"==t.parent.blotName||t.parent.statics.scope!==t.statics.scope?e:a(t.parent,e))}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.BlockEmbed=e.bubbleFormats=void 0;var s=function(){function t(t,e){for(var n=0;n0&&(t1&&void 0!==arguments[1]&&arguments[1];if(n&&(0===t||t>=this.length()-k)){var r=this.clone();return 0===t?(this.parent.insertBefore(r,this),this):(this.parent.insertBefore(r,this.next),r)}var o=u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"split",this).call(this,t,n);return this.cache={},o}}]),e}(y.default.Block);j.blotName="block",j.tagName="P",j.defaultChild="break",j.allowedChildren=[O.default,m.default,x.default],e.bubbleFormats=a,e.BlockEmbed=E,e.default=j},25,function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var n=0;n0){var t=this.parent.isolate(this.offset(),this.length());this.moveChildren(t),t.wrap(this)}}}],[{key:"compare",value:function(t,n){var r=e.order.indexOf(t),o=e.order.indexOf(n);return r>=0||o>=0?r-o:t===n?0:t1?e-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:{};n(this,t),this.quill=e,this.options=r};r.DEFAULTS={},e.default=r},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e1&&void 0!==arguments[1]?arguments[1]:0;i(this,t),this.index=e,this.length=n},O=function(){function t(e,n){var r=this;i(this,t),this.emitter=n,this.scroll=e,this.composing=!1,this.root=this.scroll.domNode,this.root.addEventListener("compositionstart",function(){r.composing=!0}),this.root.addEventListener("compositionend",function(){r.composing=!1}),this.cursor=c.default.create("cursor",this),this.lastRange=this.savedRange=new _(0,0),["keyup","mouseup","mouseleave","touchend","touchleave","focus","blur"].forEach(function(t){r.root.addEventListener(t,function(){setTimeout(r.update.bind(r,v.default.sources.USER),100)})}),this.emitter.on(v.default.events.EDITOR_CHANGE,function(t,e){t===v.default.events.TEXT_CHANGE&&e.length()>0&&r.update(v.default.sources.SILENT)}),this.emitter.on(v.default.events.SCROLL_BEFORE_UPDATE,function(){var t=r.getNativeRange();null!=t&&t.start.node!==r.cursor.textNode&&r.emitter.once(v.default.events.SCROLL_UPDATE,function(){try{r.setNativeRange(t.start.node,t.start.offset,t.end.node,t.end.offset)}catch(t){}})}),this.update(v.default.sources.SILENT)}return s(t,[{key:"focus",value:function(){if(!this.hasFocus()){var t=document.body.scrollTop;this.root.focus(),document.body.scrollTop=t,this.setRange(this.savedRange)}}},{key:"format",value:function(t,e){this.scroll.update();var n=this.getNativeRange();if(null!=n&&n.native.collapsed&&!c.default.query(t,c.default.Scope.BLOCK)){if(n.start.node!==this.cursor.textNode){var r=c.default.find(n.start.node,!1);if(null==r)return;if(r instanceof c.default.Leaf){var o=r.split(n.start.offset);r.parent.insertBefore(this.cursor,o)}else r.insertBefore(this.cursor,n.start.node);this.cursor.attach()}this.cursor.format(t,e),this.scroll.optimize(),this.setNativeRange(this.cursor.textNode,this.cursor.textNode.data.length),this.update()}}},{key:"getBounds",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.scroll.length();t=Math.min(t,n-1),e=Math.min(t+e,n-1)-t;var r=void 0,o=void 0,i=this.scroll.leaf(t),l=a(i,2),s=l[0],u=l[1];if(null==s)return null;var c=s.position(u,!0),f=a(c,2);o=f[0],u=f[1];var p=document.createRange();if(e>0){p.setStart(o,u);var h=this.scroll.leaf(t+e),d=a(h,2);if(s=d[0],u=d[1],null==s)return null;var y=s.position(u,!0),v=a(y,2);o=v[0],u=v[1],p.setEnd(o,u),r=p.getBoundingClientRect()}else{var b="left",g=void 0;o instanceof Text?(u0&&(b="right")),r={height:g.height,left:g[b],width:0,top:g.top}}var m=this.root.parentNode.getBoundingClientRect();return{left:r.left-m.left,right:r.left+r.width-m.left,top:r.top-m.top,bottom:r.top+r.height-m.top,height:r.height,width:r.width}}},{key:"getNativeRange",value:function(){var t=document.getSelection();if(null==t||t.rangeCount<=0)return null;var e=t.getRangeAt(0);if(null==e)return null;if(!l(this.root,e.startContainer)||!e.collapsed&&!l(this.root,e.endContainer))return null;var n={start:{node:e.startContainer,offset:e.startOffset},end:{node:e.endContainer,offset:e.endOffset},native:e};return[n.start,n.end].forEach(function(t){for(var e=t.node,n=t.offset;!(e instanceof Text)&&e.childNodes.length>0;)if(e.childNodes.length>n)e=e.childNodes[n],n=0;else{if(e.childNodes.length!==n)break;e=e.lastChild,n=e instanceof Text?e.data.length:e.childNodes.length+1}t.node=e,t.offset=n}),m.info("getNativeRange",n),n}},{key:"getRange",value:function(){var t=this,e=this.getNativeRange();if(null==e)return[null,null];var n=[[e.start.node,e.start.offset]];e.native.collapsed||n.push([e.end.node,e.end.offset]);var r=n.map(function(e){var n=a(e,2),r=n[0],o=n[1],i=c.default.find(r,!0),l=i.offset(t.scroll);return 0===o?l:i instanceof c.default.Container?l+i.length():l+i.index(r,o)}),i=Math.min.apply(Math,o(r)),l=Math.max.apply(Math,o(r));return[new _(i,l-i),e]}},{key:"hasFocus",value:function(){return document.activeElement===this.root}},{key:"scrollIntoView",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.lastRange;if(null!=t){var e=this.getBounds(t.index,t.length);if(null!=e)if(this.root.offsetHeight2&&void 0!==arguments[2]?arguments[2]:t,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e,o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(m.info("setNativeRange",t,e,n,r),null==t||null!=this.root.parentNode&&null!=t.parentNode&&null!=n.parentNode){var i=document.getSelection();if(null!=i)if(null!=t){this.hasFocus()||this.root.focus();var l=this.getNativeRange();if(null==l||o||t!==l.start.node||e!==l.start.offset||n!==l.end.node||r!==l.end.offset){var a=document.createRange();a.setStart(t,e),a.setEnd(n,r),i.removeAllRanges(),i.addRange(a)}}else i.removeAllRanges(),this.root.blur(),document.body.focus()}}},{key:"setRange",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:v.default.sources.API;"string"==typeof n&&(r=n,n=!1),m.info("setRange",t),null!=t?!function(){var r=t.collapsed?[t.index]:[t.index,t.index+t.length],i=[],l=e.scroll.length();r.forEach(function(t,n){t=Math.min(l-1,t);var r=void 0,o=e.scroll.leaf(t),s=a(o,2),u=s[0],c=s[1],f=u.position(c,0!==n),p=a(f,2);r=p[0],c=p[1],i.push(r,c)}),i.length<2&&(i=i.concat(i)),e.setNativeRange.apply(e,o(i).concat([n]))}():this.setNativeRange(null),this.update(r)}},{key:"update",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:v.default.sources.USER,e=void 0,n=this.lastRange,r=this.getRange(),o=a(r,2);if(this.lastRange=o[0],e=o[1],null!=this.lastRange&&(this.savedRange=this.lastRange),!(0,d.default)(n,this.lastRange)){var i;!this.composing&&null!=e&&e.native.collapsed&&e.start.node!==this.cursor.textNode&&this.cursor.restore();var l=[v.default.events.SELECTION_CHANGE,(0,p.default)(this.lastRange),(0,p.default)(n),t];if((i=this.emitter).emit.apply(i,[v.default.events.EDITOR_CHANGE].concat(l)),t!==v.default.sources.SILENT){var s;(s=this.emitter).emit.apply(s,l)}}}}]),t}();e.Range=_,e.default=O},function(t,e){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n0&&!(i instanceof y.BlockEmbed)&&!(f instanceof y.BlockEmbed)){f instanceof w.default&&f.deleteAt(f.length()-1,1);var p=f.children.head instanceof g.default?null:f.children.head;i.moveChildren(f,p),i.remove()}this.optimize()}},{key:"enable",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.domNode.setAttribute("contenteditable",t)}},{key:"formatAt",value:function(t,n,r,o){(null==this.whitelist||this.whitelist[r])&&(c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"formatAt",this).call(this,t,n,r,o),this.optimize())}},{key:"insertAt",value:function(t,n,r){if(null==r||null==this.whitelist||this.whitelist[n]){if(t>=this.length())if(null==r||null==p.default.query(n,p.default.Scope.BLOCK)){var o=p.default.create(this.statics.defaultChild);this.appendChild(o),null==r&&n.endsWith("\n")&&(n=n.slice(0,-1)),o.insertAt(0,n,r)}else{var i=p.default.create(n,r);this.appendChild(i)}else c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertAt",this).call(this,t,n,r);this.optimize()}}},{key:"insertBefore",value:function(t,n){if(t.statics.scope===p.default.Scope.INLINE_BLOT){var r=p.default.create(this.statics.defaultChild);r.appendChild(t),t=r}c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertBefore",this).call(this,t,n)}},{key:"leaf",value:function(t){return this.path(t).pop()||[null,-1]}},{key:"line",value:function(t){return t===this.length()?this.line(t-1):this.descendant(a,t)}},{key:"lines",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE,n=function t(e,n,r){var o=[],i=r;return e.children.forEachAt(n,r,function(e,n,r){a(e)?o.push(e):e instanceof p.default.Container&&(o=o.concat(t(e,n,i))),i-=r}),o};return n(this,t,e)}},{key:"optimize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.batch!==!0&&(c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this,t),t.length>0&&this.emitter.emit(d.default.events.SCROLL_OPTIMIZE,t))}},{key:"path",value:function(t){return c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"path",this).call(this,t).slice(1)}},{key:"update",value:function(t){if(this.batch!==!0){var n=d.default.sources.USER;"string"==typeof t&&(n=t),Array.isArray(t)||(t=this.observer.takeRecords()),t.length>0&&this.emitter.emit(d.default.events.SCROLL_BEFORE_UPDATE,n,t),c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"update",this).call(this,t.concat([])),t.length>0&&this.emitter.emit(d.default.events.SCROLL_UPDATE,n,t)}}}]),e}(p.default.Scroll);x.blotName="scroll",x.className="ql-editor",x.tagName="DIV",x.defaultChild="block",x.allowedChildren=[v.default,y.BlockEmbed,_.default],e.default=x},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e=0&&n.length-1}function p(t,e,n){return n.compose((new k.default).retain(n.length(),o({},t,!0)))}function h(t,e){var n=j.default.Attributor.Attribute.keys(t),r=j.default.Attributor.Class.keys(t),o=j.default.Attributor.Style.keys(t),i={};return n.concat(r).concat(o).forEach(function(e){var n=j.default.query(e,j.default.Scope.ATTRIBUTE);null!=n&&(i[n.attrName]=n.value(t),i[n.attrName])||(null!=H[e]&&(n=H[e],i[n.attrName]=n.value(t)),null!=F[e]&&(n=F[e],i[n.attrName]=n.value(t)))}),Object.keys(i).length>0&&(e=e.compose((new k.default).retain(e.length(),i))),e}function d(t,e){var n=j.default.query(t);if(null==n)return e;if(n.prototype instanceof j.default.Embed){var r={},i=n.value(t);null!=i&&(r[n.blotName]=i,e=(new k.default).insert(r,n.formats(t)))}else if("function"==typeof n.formats){var l=o({},n.blotName,n.formats(t));e=e.compose((new k.default).retain(e.length(),l))}return e}function y(t,e){return c(e,"\n")||e.insert("\n"),e}function v(){return new k.default}function b(t,e){return f(t)&&!c(e,"\n")&&e.insert("\n"),e}function g(t,e){if(f(t)&&null!=t.nextElementSibling&&!c(e,"\n\n")){var n=t.offsetHeight+parseFloat(u(t).marginTop)+parseFloat(u(t).marginBottom);t.nextElementSibling.offsetTop>t.offsetTop+1.5*n&&e.insert("\n")}return e}function m(t,e){var n={},r=t.style||{};return r.fontWeight&&"bold"===u(t).fontWeight&&(n.bold=!0),Object.keys(n).length>0&&(e=e.compose((new k.default).retain(e.length(),n))),parseFloat(r.textIndent||0)>0&&(e=(new k.default).insert("\t").concat(e)),e}function _(t,e){var n=t.data;if("O:P"===t.parentNode.tagName)return e.insert(n.trim());if(!u(t.parentNode).whiteSpace.startsWith("pre")){var r=function(t,e){return e=e.replace(/[^\u00a0]/g,""),e.length<1&&t?" ":e};n=n.replace(/\r\n/g," ").replace(/\n/g," "),n=n.replace(/\s\s+/g,r.bind(r,!0)),(null==t.previousSibling&&f(t.parentNode)||null!=t.previousSibling&&f(t.previousSibling))&&(n=n.replace(/^\s+/,r.bind(r,!1))),(null==t.nextSibling&&f(t.parentNode)||null!=t.nextSibling&&f(t.nextSibling))&&(n=n.replace(/\s+$/,r.bind(r,!1)))}return e.insert(n)}Object.defineProperty(e,"__esModule",{value:!0}),e.matchText=e.matchSpacing=e.matchNewline=e.matchBlot=e.matchAttributor=e.default=void 0;var O=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),w=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:N.default.sources.API;if("string"==typeof t)return this.quill.setContents(this.convert(t),e);var r=this.convert(e);return this.quill.updateContents((new k.default).retain(t).concat(r),n)}},{key:"onPaste",value:function(t){var e=this;if(!t.defaultPrevented&&this.quill.isEnabled()){var n=this.quill.getSelection(),r=(new k.default).retain(n.index).delete(n.length),o=document.body.scrollTop;this.container.focus(),setTimeout(function(){e.quill.selection.update(N.default.sources.SILENT),r=r.concat(e.convert()),e.quill.updateContents(r,N.default.sources.USER),e.quill.setSelection(r.length()-n.length,N.default.sources.SILENT),document.body.scrollTop=o,e.quill.selection.scrollIntoView()},1)}}}]),e}(S.default);K.DEFAULTS={matchers:[]},e.default=K,e.matchAttributor=h,e.matchBlot=d,e.matchNewline=b,e.matchSpacing=g,e.matchText=_},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),e.AlignStyle=e.AlignClass=e.AlignAttribute=void 0;var o=n(2),i=r(o),l={scope:i.default.Scope.BLOCK,whitelist:["right","center","justify"]},a=new i.default.Attributor.Attribute("align","align",l),s=new i.default.Attributor.Class("align","ql-align",l),u=new i.default.Attributor.Style("align","text-align",l);e.AlignAttribute=a,e.AlignClass=s,e.AlignStyle=u},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),e.BackgroundStyle=e.BackgroundClass=void 0;var o=n(2),i=r(o),l=n(51),a=new i.default.Attributor.Class("background","ql-bg",{scope:i.default.Scope.INLINE}),s=new l.ColorAttributor("background","background-color",{scope:i.default.Scope.INLINE});e.BackgroundClass=a,e.BackgroundStyle=s},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.ColorStyle=e.ColorClass=e.ColorAttributor=void 0;var a=function(){function t(t,e){for(var n=0;nr&&this.stack.undo.length>0){var o=this.stack.undo.pop();n=n.compose(o.undo),t=o.redo.compose(t)}else this.lastRecorded=r;this.stack.undo.push({redo:t,undo:n}),this.stack.undo.length>this.options.maxStack&&this.stack.undo.shift()}}},{key:"redo",value:function(){this.change("redo","undo")}},{key:"transform",value:function(t){this.stack.undo.forEach(function(e){e.undo=t.transform(e.undo,!0),e.redo=t.transform(e.redo,!0)}),this.stack.redo.forEach(function(e){e.undo=t.transform(e.undo,!0),e.redo=t.transform(e.redo,!0)})}},{key:"undo",value:function(){this.change("undo","redo")}}]),e}(y.default);v.DEFAULTS={delay:1e3,maxStack:100,userOnly:!1},e.default=v,e.getLastChangeIndex=s},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t,e){if(0!==t.index){var n=this.quill.scroll.line(t.index),r=y(n,1),o=r[0],i={};if(0===e.offset){var l=o.formats(),a=this.quill.getFormat(t.index-1,1);i=k.default.attributes.diff(l,a)||{}}this.quill.deleteText(t.index-1,1,N.default.sources.USER),Object.keys(i).length>0&&this.quill.formatLine(t.index-1,1,i,N.default.sources.USER),this.quill.selection.scrollIntoView()}}function s(t){t.index>=this.quill.getLength()-1||this.quill.deleteText(t.index,1,N.default.sources.USER)}function u(t){this.quill.deleteText(t,N.default.sources.USER),this.quill.setSelection(t.index,N.default.sources.SILENT),this.quill.selection.scrollIntoView()}function c(t,e){var n=this;t.length>0&&this.quill.scroll.deleteAt(t.index,t.length);var r=Object.keys(e.format).reduce(function(t,n){return j.default.query(n,j.default.Scope.BLOCK)&&!Array.isArray(e.format[n])&&(t[n]=e.format[n]),t},{});this.quill.insertText(t.index,"\n",r,N.default.sources.USER),this.quill.selection.scrollIntoView(),Object.keys(e.format).forEach(function(t){null==r[t]&&(Array.isArray(e.format[t])||"link"!==t&&n.quill.format(t,e.format[t],N.default.sources.USER))})}function f(t){return{key:M.keys.TAB,shiftKey:!t,format:{"code-block":!0},handler:function(e){var n=j.default.query("code-block"),r=e.index,o=e.length,i=this.quill.scroll.descendant(n,r),l=y(i,2),a=l[0],s=l[1];if(null!=a){var u=this.quill.scroll.offset(a),c=a.newlineIndex(s,!0)+1,f=a.newlineIndex(u+s+o),p=a.domNode.textContent.slice(c,f).split("\n");s=0,p.forEach(function(e,i){t?(a.insertAt(c+s,n.TAB),s+=n.TAB.length,0===i?r+=n.TAB.length:o+=n.TAB.length):e.startsWith(n.TAB)&&(a.deleteAt(c+s,n.TAB.length),s-=n.TAB.length,0===i?r-=n.TAB.length:o-=n.TAB.length),s+=e.length+1}),this.quill.update(N.default.sources.USER),this.quill.setSelection(r,o,N.default.sources.SILENT)}}}}function p(t){return{key:t[0].toUpperCase(),shortKey:!0,handler:function(e,n){this.quill.format(t,!n.format[t],N.default.sources.USER)}}}function h(t){if("string"==typeof t||"number"==typeof t)return h({key:t});if("object"===("undefined"==typeof t?"undefined":d(t))&&(t=(0,g.default)(t,!1)),"string"==typeof t.key)if(null!=M.keys[t.key.toUpperCase()])t.key=M.keys[t.key.toUpperCase()];else{if(1!==t.key.length)return null;t.key=t.key.toUpperCase().charCodeAt(0)}return t}Object.defineProperty(e,"__esModule",{value:!0});var d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},y=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),v=function(){function t(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=h(t);return null==r||null==r.key?L.warn("Attempted to add invalid keyboard binding",r):("function"==typeof e&&(e={handler:e}),"function"==typeof n&&(n={handler:n}),r=(0,w.default)(r,e,n),this.bindings[r.key]=this.bindings[r.key]||[],void this.bindings[r.key].push(r))}},{key:"listen",value:function(){var t=this;this.quill.root.addEventListener("keydown",function(n){if(!n.defaultPrevented){var r=n.which||n.keyCode,o=(t.bindings[r]||[]).filter(function(t){return e.match(n,t)});if(0!==o.length){var i=t.quill.getSelection();if(null!=i&&t.quill.hasFocus()){var l=t.quill.scroll.line(i.index),a=y(l,2),s=a[0],u=a[1],c=t.quill.scroll.leaf(i.index),f=y(c,2),p=f[0],h=f[1],v=0===i.length?[p,h]:t.quill.scroll.leaf(i.index+i.length),b=y(v,2),g=b[0],m=b[1],O=p instanceof j.default.Text?p.value().slice(0,h):"",w=g instanceof j.default.Text?g.value().slice(m):"",x={collapsed:0===i.length,empty:0===i.length&&s.length()<=1,format:t.quill.getFormat(i),offset:u,prefix:O,suffix:w},k=o.some(function(e){if(null!=e.collapsed&&e.collapsed!==x.collapsed)return!1;if(null!=e.empty&&e.empty!==x.empty)return!1;if(null!=e.offset&&e.offset!==x.offset)return!1;if(Array.isArray(e.format)){if(e.format.every(function(t){return null==x.format[t]}))return!1}else if("object"===d(e.format)&&!Object.keys(e.format).every(function(t){return e.format[t]===!0?null!=x.format[t]:e.format[t]===!1?null==x.format[t]:(0,_.default)(e.format[t],x.format[t])}))return!1;return!(null!=e.prefix&&!e.prefix.test(x.prefix))&&(!(null!=e.suffix&&!e.suffix.test(x.suffix))&&e.handler.call(t,i,x)!==!0)});k&&n.preventDefault()}}}})}}]),e}(S.default);M.keys={BACKSPACE:8,TAB:9,ENTER:13,ESCAPE:27,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46},M.DEFAULTS={bindings:{bold:p("bold"),italic:p("italic"),underline:p("underline"),indent:{key:M.keys.TAB,format:["blockquote","indent","list"],handler:function(t,e){return!(!e.collapsed||0===e.offset)||void this.quill.format("indent","+1",N.default.sources.USER)}},outdent:{key:M.keys.TAB,shiftKey:!0,format:["blockquote","indent","list"],handler:function(t,e){return!(!e.collapsed||0===e.offset)||void this.quill.format("indent","-1",N.default.sources.USER)}},"outdent backspace":{key:M.keys.BACKSPACE,collapsed:!0,format:["blockquote","indent","list"],offset:0,handler:function(t,e){null!=e.format.indent?this.quill.format("indent","-1",N.default.sources.USER):null!=e.format.blockquote?this.quill.format("blockquote",!1,N.default.sources.USER):null!=e.format.list&&this.quill.format("list",!1,N.default.sources.USER)}},"indent code-block":f(!0),"outdent code-block":f(!1),"remove tab":{key:M.keys.TAB,shiftKey:!0,collapsed:!0,prefix:/\t$/,handler:function(t){this.quill.deleteText(t.index-1,1,N.default.sources.USER)}},tab:{key:M.keys.TAB,handler:function(t,e){e.collapsed||this.quill.scroll.deleteAt(t.index,t.length),this.quill.insertText(t.index,"\t",N.default.sources.USER),this.quill.setSelection(t.index+1,N.default.sources.SILENT)}},"list empty enter":{key:M.keys.ENTER,collapsed:!0,format:["list"],empty:!0,handler:function(t,e){this.quill.format("list",!1,N.default.sources.USER),e.format.indent&&this.quill.format("indent",!1,N.default.sources.USER)}},"header enter":{key:M.keys.ENTER,collapsed:!0,format:["header"],suffix:/^$/,handler:function(t){this.quill.scroll.insertAt(t.index,"\n"),this.quill.formatText(t.index+1,1,"header",!1,N.default.sources.USER),this.quill.setSelection(t.index+1,N.default.sources.SILENT),this.quill.selection.scrollIntoView()}},"list autofill":{key:" ",collapsed:!0,format:{list:!1},prefix:/^(1\.|-)$/,handler:function(t,e){var n=e.prefix.length;this.quill.scroll.deleteAt(t.index-n,n),this.quill.formatLine(t.index-n,1,"list",1===n?"bullet":"ordered",N.default.sources.USER),this.quill.setSelection(t.index-n,N.default.sources.SILENT)}}}},e.default=M},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.IndentClass=void 0;var a=function(){function t(t,e){for(var n=0;n0&&this.children.tail.format(t,e)}},{key:"formats",value:function(){return o({},this.statics.blotName,this.statics.formats(this.domNode))}},{key:"insertBefore",value:function(t,n){if(t instanceof v)u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertBefore",this).call(this,t,n);else{var r=null==n?this.length():n.offset(this),o=this.split(r);o.parent.insertBefore(t,o)}}},{key:"optimize",value:function(){u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this);var t=this.next;null!=t&&t.prev===this&&t.statics.blotName===this.statics.blotName&&t.domNode.tagName===this.domNode.tagName&&(t.moveChildren(this),t.remove())}},{key:"replace",value:function(t){if(t.statics.blotName!==this.statics.blotName){var n=f.default.create(this.statics.defaultChild);t.moveChildren(n),this.appendChild(n)}u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"replace",this).call(this,t)}}],[{key:"create",value:function(t){return"ordered"===t?t="OL":"bullet"===t&&(t="UL"),u(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t)}},{key:"formats",value:function(t){return"OL"===t.tagName?"ordered":"UL"===t.tagName?"bullet":void 0}}]),e}(y.default);b.blotName="list",b.scope=f.default.Scope.BLOCK_BLOT,b.tagName=["OL","UL"],b.defaultChild="list-item",b.allowedChildren=[v],e.ListItem=v,e.default=b},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var n=0;n-1}Object.defineProperty(e,"__esModule",{value:!0}),e.sanitize=e.default=void 0;var s=function(){function t(t,e){for(var n=0;n-1?n?this.domNode.setAttribute(t,n):this.domNode.removeAttribute(t):s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"format",this).call(this,t,n)}}],[{key:"create",value:function(t){var n=s(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t);return"string"==typeof t&&n.setAttribute("src",this.sanitize(t)),n}},{key:"formats",value:function(t){return p.reduce(function(e,n){return t.hasAttribute(n)&&(e[n]=t.getAttribute(n)),e},{})}},{key:"match",value:function(t){return/\.(jpe?g|gif|png)$/.test(t)||/^data:image\/.+;base64/.test(t)}},{key:"sanitize",value:function(t){return(0,f.sanitize)(t,["http","https","data"])?t:"//:0"}},{key:"value",value:function(t){return t.getAttribute("src")}}]),e}(c.default);h.blotName="image",h.tagName="IMG",e.default=h},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var n=0;n-1?n?this.domNode.setAttribute(t,n):this.domNode.removeAttribute(t):s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"format",this).call(this,t,n)}}],[{key:"create",value:function(t){var n=s(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t);return n.setAttribute("frameborder","0"),n.setAttribute("allowfullscreen",!0),n.setAttribute("src",this.sanitize(t)),n}},{key:"formats",value:function(t){return p.reduce(function(e,n){return t.hasAttribute(n)&&(e[n]=t.getAttribute(n)),e},{})}},{key:"sanitize",value:function(t){return f.default.sanitize(t)}},{key:"value",value:function(t){return t.getAttribute("src")}}]),e}(u.BlockEmbed);h.blotName="video",h.className="ql-video",h.tagName="IFRAME",e.default=h},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(){if(null==window.katex)throw new Error("Formula module requires KaTeX.");h.default.register(d,!0)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.FormulaBlot=void 0;var s=function(){function t(t,e){for(var n=0;n0||null==this.cachedHTML)&&(this.domNode.innerHTML=t(e),this.attach()),this.cachedHTML=this.domNode.innerHTML}}}]),e}(v.default);b.className="ql-syntax";var g=new c.default.Attributor.Class("token","hljs",{scope:c.default.Scope.INLINE}),m=function(t){function e(t,n){o(this,e);var r=i(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));if("function"!=typeof r.options.highlight)throw new Error("Syntax module requires highlight.js. Please include the library on the page before Quill.");p.default.register(g,!0),p.default.register(b,!0);var l=null;return r.quill.on(p.default.events.SCROLL_OPTIMIZE,function(){null==l&&(l=setTimeout(function(){r.highlight(),l=null},100))}),r.highlight(),r}return l(e,t),a(e,[{key:"highlight",value:function(){var t=this;if(!this.quill.selection.composing){var e=this.quill.getSelection();this.quill.scroll.descendants(b).forEach(function(e){e.highlight(t.options.highlight)}),this.quill.update(p.default.sources.SILENT),null!=e&&this.quill.setSelection(e,p.default.sources.SILENT)}}}]),e}(d.default);m.DEFAULTS={highlight:function(){return null==window.hljs?null:function(t){var e=window.hljs.highlightAuto(t);return e.value}}()},e.CodeBlock=b,e.CodeToken=g,e.default=m},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function s(t,e,n){var r=document.createElement("button");r.setAttribute("type","button"),r.classList.add("ql-"+e),null!=n&&(r.value=n),t.appendChild(r)}function u(t,e){Array.isArray(e[0])||(e=[e]),e.forEach(function(e){var n=document.createElement("span");n.classList.add("ql-formats"),e.forEach(function(t){if("string"==typeof t)s(n,t);else{var e=Object.keys(t)[0],r=t[e];Array.isArray(r)?c(n,e,r):s(n,e,r)}}),t.appendChild(n)})}function c(t,e,n){var r=document.createElement("select");r.classList.add("ql-"+e),n.forEach(function(t){var e=document.createElement("option");t!==!1?e.setAttribute("value",t):e.setAttribute("selected","selected"),r.appendChild(e)}),t.appendChild(r)}Object.defineProperty(e,"__esModule",{value:!0}),e.addControls=e.default=void 0;var f=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),p=function(){function t(t,e){for(var n=0;n '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '; -},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l=function(){function t(t,e){for(var n=0;n1&&void 0!==arguments[1]&&arguments[1],n=this.container.querySelector(".ql-selected");if(t!==n)if(null!=n&&n.classList.remove("ql-selected"),null!=t){if(t.classList.add("ql-selected"),this.select.selectedIndex=[].indexOf.call(t.parentNode.children,t),t.hasAttribute("data-value")?this.label.setAttribute("data-value",t.getAttribute("data-value")):this.label.removeAttribute("data-value"),t.hasAttribute("data-label")?this.label.setAttribute("data-label",t.getAttribute("data-label")):this.label.removeAttribute("data-label"),e){if("function"==typeof Event)this.select.dispatchEvent(new Event("change"));else if("object"===("undefined"==typeof Event?"undefined":i(Event))){var r=document.createEvent("Event");r.initEvent("change",!0,!0),this.select.dispatchEvent(r)}this.close()}}else this.label.removeAttribute("data-value"),this.label.removeAttribute("data-label")}},{key:"update",value:function(){var t=void 0;if(this.select.selectedIndex>-1){var e=this.container.querySelector(".ql-picker-options").children[this.select.selectedIndex];t=this.select.options[this.select.selectedIndex],this.selectItem(e)}else this.selectItem(null);var n=null!=t&&t!==this.select.querySelector("option[selected]");this.label.classList.toggle("ql-active",n)}}]),t}();e.default=u},function(t,e){t.exports=' '},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var n=0;n=this.quill.root.offsetHeight)}},{key:"hide",value:function(){this.root.classList.add("ql-hidden")}},{key:"position",value:function(t){var e=t.left+t.width/2-this.root.offsetWidth/2,n=t.bottom+this.quill.root.scrollTop;this.root.style.left=e+"px",this.root.style.top=n+"px";var r=this.boundsContainer.getBoundingClientRect(),o=this.root.getBoundingClientRect(),i=0;return o.right>r.right&&(i=r.right-o.right,this.root.style.left=e+i+"px"),o.left0){r.show(),r.root.style.left="0px",r.root.style.width="",r.root.style.width=r.root.offsetWidth+"px";var n=r.quill.scroll.lines(e.index,e.length);if(1===n.length)r.position(r.quill.getBounds(e));else{var o=n[n.length-1],i=o.offset(r.quill.scroll),l=Math.min(o.length()-1,e.index+e.length-i),a=r.quill.getBounds(new y.Range(i,l));r.position(a)}}else document.activeElement!==r.textbox&&r.quill.hasFocus()&&r.hide()}),r}return l(e,t),s(e,[{key:"listen",value:function(){var t=this;a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"listen",this).call(this),this.root.querySelector(".ql-close").addEventListener("click",function(){t.root.classList.remove("ql-editing")}),this.quill.on(p.default.events.SCROLL_OPTIMIZE,function(){setTimeout(function(){if(!t.root.classList.contains("ql-hidden")){var e=t.quill.getSelection();null!=e&&t.position(t.quill.getBounds(e))}},1)})}},{key:"cancel",value:function(){this.show()}},{key:"position",value:function(t){var n=a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"position",this).call(this,t),r=this.root.querySelector(".ql-tooltip-arrow");return r.style.marginLeft="",0===n?n:void(r.style.marginLeft=-1*n-r.offsetWidth/2+"px")}}]),e}(h.BaseTooltip);_.TEMPLATE=['','
','','',"
"].join(""),e.BubbleTooltip=_,e.default=m},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];e.forEach(function(e){var r=document.createElement("option");e===n?r.setAttribute("selected","selected"):r.setAttribute("value",e),t.appendChild(r)})}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.BaseTooltip=void 0;var s=function(){function t(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:"link",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.root.classList.remove("ql-hidden"),this.root.classList.add("ql-editing"),null!=e?this.textbox.value=e:t!==this.root.getAttribute("data-mode")&&(this.textbox.value=""),this.position(this.quill.getBounds(this.quill.selection.savedRange)),this.textbox.select(),this.textbox.setAttribute("placeholder",this.textbox.getAttribute("data-"+t)||""),this.root.setAttribute("data-mode",t)}},{key:"restoreFocus",value:function(){var t=this.quill.root.scrollTop;this.quill.focus(),this.quill.root.scrollTop=t}},{key:"save",value:function(){var t=this.textbox.value;switch(this.root.getAttribute("data-mode")){case"link":var e=this.quill.root.scrollTop;this.linkRange?(this.quill.formatText(this.linkRange,"link",t,y.default.sources.USER),delete this.linkRange):(this.restoreFocus(),this.quill.format("link",t,y.default.sources.USER)),this.quill.root.scrollTop=e;break;case"video":var n=t.match(/^(https?):\/\/(www\.)?youtube\.com\/watch.*v=([a-zA-Z0-9_-]+)/)||t.match(/^(https?):\/\/(www\.)?youtu\.be\/([a-zA-Z0-9_-]+)/);n?t=n[1]+"://www.youtube.com/embed/"+n[3]+"?showinfo=0":(n=t.match(/^(https?):\/\/(www\.)?vimeo\.com\/(\d+)/))&&(t=n[1]+"://player.vimeo.com/video/"+n[3]+"/");case"formula":var r=this.quill.getSelection(!0),o=r.index+r.length;null!=r&&(this.quill.insertEmbed(o,this.root.getAttribute("data-mode"),t,y.default.sources.USER),"formula"===this.root.getAttribute("data-mode")&&this.quill.insertText(o+1," ",y.default.sources.USER),this.quill.setSelection(o+2,y.default.sources.USER))}this.textbox.value="",this.hide()}}]),e}(A.default);e.BaseTooltip=C,e.default=L},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0); -}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},u=function(){function t(t,e){for(var n=0;n','','',''].join(""),e.default=w},function(t,e,n,r,o){function i(t){return null===t||void 0===t}function l(t){return!(!t||"object"!=typeof t||"number"!=typeof t.length)&&("function"==typeof t.copy&&"function"==typeof t.slice&&!(t.length>0&&"number"!=typeof t[0]))}function a(t,e,n){var r,o;if(i(t)||i(e))return!1;if(t.prototype!==e.prototype)return!1;if(c(t))return!!c(e)&&(t=s.call(t),e=s.call(e),f(t,e,n));if(l(t)){if(!l(e))return!1;if(t.length!==e.length)return!1;for(r=0;r=0;r--)if(a[r]!=p[r])return!1;for(r=a.length-1;r>=0;r--)if(o=a[r],!f(t[o],e[o],n))return!1;return typeof t==typeof e}var s=Array.prototype.slice,u=n(r),c=n(o),f=t.exports=function(t,e,n){return n||(n={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||"object"!=typeof t&&"object"!=typeof e?n.strict?t===e:t==e:a(t,e,n))}}]))}); -//# sourceMappingURL=quill.min.js.map \ No newline at end of file diff --git a/miniwob-sandbox/html/common/special/text-editor/quill.snow.css b/miniwob-sandbox/html/common/special/text-editor/quill.snow.css deleted file mode 100644 index 34ef5f1..0000000 --- a/miniwob-sandbox/html/common/special/text-editor/quill.snow.css +++ /dev/null @@ -1,881 +0,0 @@ -/*! - * Quill Editor v1.1.5 - * https://quilljs.com/ - * Copyright (c) 2014, Jason Chen - * Copyright (c) 2013, salesforce.com - */ -.ql-container { - box-sizing: border-box; - font-family: Helvetica, Arial, sans-serif; - font-size: 13px; - height: 100%; - margin: 0px; - position: relative; -} -.ql-container.ql-disabled .ql-tooltip { - visibility: hidden; -} -.ql-clipboard { - left: -100000px; - height: 1px; - overflow-y: hidden; - position: absolute; - top: 50%; -} -.ql-clipboard p { - margin: 0; - padding: 0; -} -.ql-editor { - box-sizing: border-box; - cursor: text; - line-height: 1.42; - height: 100%; - outline: none; - overflow-y: auto; - padding: 12px 15px; - tab-size: 4; - -moz-tab-size: 4; - text-align: left; - white-space: pre-wrap; - word-wrap: break-word; -} -.ql-editor p, -.ql-editor ol, -.ql-editor ul, -.ql-editor pre, -.ql-editor blockquote, -.ql-editor h1, -.ql-editor h2, -.ql-editor h3, -.ql-editor h4, -.ql-editor h5, -.ql-editor h6 { - margin: 0; - padding: 0; - counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol, -.ql-editor ul { - padding-left: 1.5em; -} -.ql-editor ol > li, -.ql-editor ul > li { - list-style-type: none; -} -.ql-editor ul > li::before { - content: '\25CF'; -} -.ql-editor li::before { - display: inline-block; - margin-right: 0.3em; - text-align: right; - white-space: nowrap; - width: 1.2em; -} -.ql-editor li:not(.ql-direction-rtl)::before { - margin-left: -1.5em; -} -.ql-editor ol li, -.ql-editor ul li { - padding-left: 1.5em; -} -.ql-editor ol li { - counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; - counter-increment: list-num; -} -.ql-editor ol li:before { - content: counter(list-num, decimal) '. '; -} -.ql-editor ol li.ql-indent-1 { - counter-increment: list-1; -} -.ql-editor ol li.ql-indent-1:before { - content: counter(list-1, lower-alpha) '. '; -} -.ql-editor ol li.ql-indent-1 { - counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-2 { - counter-increment: list-2; -} -.ql-editor ol li.ql-indent-2:before { - content: counter(list-2, lower-roman) '. '; -} -.ql-editor ol li.ql-indent-2 { - counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-3 { - counter-increment: list-3; -} -.ql-editor ol li.ql-indent-3:before { - content: counter(list-3, decimal) '. '; -} -.ql-editor ol li.ql-indent-3 { - counter-reset: list-4 list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-4 { - counter-increment: list-4; -} -.ql-editor ol li.ql-indent-4:before { - content: counter(list-4, lower-alpha) '. '; -} -.ql-editor ol li.ql-indent-4 { - counter-reset: list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-5 { - counter-increment: list-5; -} -.ql-editor ol li.ql-indent-5:before { - content: counter(list-5, lower-roman) '. '; -} -.ql-editor ol li.ql-indent-5 { - counter-reset: list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-6 { - counter-increment: list-6; -} -.ql-editor ol li.ql-indent-6:before { - content: counter(list-6, decimal) '. '; -} -.ql-editor ol li.ql-indent-6 { - counter-reset: list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-7 { - counter-increment: list-7; -} -.ql-editor ol li.ql-indent-7:before { - content: counter(list-7, lower-alpha) '. '; -} -.ql-editor ol li.ql-indent-7 { - counter-reset: list-8 list-9; -} -.ql-editor ol li.ql-indent-8 { - counter-increment: list-8; -} -.ql-editor ol li.ql-indent-8:before { - content: counter(list-8, lower-roman) '. '; -} -.ql-editor ol li.ql-indent-8 { - counter-reset: list-9; -} -.ql-editor ol li.ql-indent-9 { - counter-increment: list-9; -} -.ql-editor ol li.ql-indent-9:before { - content: counter(list-9, decimal) '. '; -} -.ql-editor .ql-indent-1:not(.ql-direction-rtl) { - padding-left: 3em; -} -.ql-editor li.ql-indent-1:not(.ql-direction-rtl) { - padding-left: 4.5em; -} -.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right { - padding-right: 3em; -} -.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right { - padding-right: 4.5em; -} -.ql-editor .ql-indent-2:not(.ql-direction-rtl) { - padding-left: 6em; -} -.ql-editor li.ql-indent-2:not(.ql-direction-rtl) { - padding-left: 7.5em; -} -.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right { - padding-right: 6em; -} -.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right { - padding-right: 7.5em; -} -.ql-editor .ql-indent-3:not(.ql-direction-rtl) { - padding-left: 9em; -} -.ql-editor li.ql-indent-3:not(.ql-direction-rtl) { - padding-left: 10.5em; -} -.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right { - padding-right: 9em; -} -.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right { - padding-right: 10.5em; -} -.ql-editor .ql-indent-4:not(.ql-direction-rtl) { - padding-left: 12em; -} -.ql-editor li.ql-indent-4:not(.ql-direction-rtl) { - padding-left: 13.5em; -} -.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right { - padding-right: 12em; -} -.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right { - padding-right: 13.5em; -} -.ql-editor .ql-indent-5:not(.ql-direction-rtl) { - padding-left: 15em; -} -.ql-editor li.ql-indent-5:not(.ql-direction-rtl) { - padding-left: 16.5em; -} -.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right { - padding-right: 15em; -} -.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right { - padding-right: 16.5em; -} -.ql-editor .ql-indent-6:not(.ql-direction-rtl) { - padding-left: 18em; -} -.ql-editor li.ql-indent-6:not(.ql-direction-rtl) { - padding-left: 19.5em; -} -.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right { - padding-right: 18em; -} -.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right { - padding-right: 19.5em; -} -.ql-editor .ql-indent-7:not(.ql-direction-rtl) { - padding-left: 21em; -} -.ql-editor li.ql-indent-7:not(.ql-direction-rtl) { - padding-left: 22.5em; -} -.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right { - padding-right: 21em; -} -.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right { - padding-right: 22.5em; -} -.ql-editor .ql-indent-8:not(.ql-direction-rtl) { - padding-left: 24em; -} -.ql-editor li.ql-indent-8:not(.ql-direction-rtl) { - padding-left: 25.5em; -} -.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right { - padding-right: 24em; -} -.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right { - padding-right: 25.5em; -} -.ql-editor .ql-indent-9:not(.ql-direction-rtl) { - padding-left: 27em; -} -.ql-editor li.ql-indent-9:not(.ql-direction-rtl) { - padding-left: 28.5em; -} -.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right { - padding-right: 27em; -} -.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right { - padding-right: 28.5em; -} -.ql-editor .ql-video { - display: block; - max-width: 100%; -} -.ql-editor .ql-video.ql-align-center { - margin: 0 auto; -} -.ql-editor .ql-video.ql-align-right { - margin: 0 0 0 auto; -} -.ql-editor .ql-bg-black { - background-color: #000; -} -.ql-editor .ql-bg-red { - background-color: #e60000; -} -.ql-editor .ql-bg-orange { - background-color: #f90; -} -.ql-editor .ql-bg-yellow { - background-color: #ff0; -} -.ql-editor .ql-bg-green { - background-color: #008a00; -} -.ql-editor .ql-bg-blue { - background-color: #06c; -} -.ql-editor .ql-bg-purple { - background-color: #93f; -} -.ql-editor .ql-color-white { - color: #fff; -} -.ql-editor .ql-color-red { - color: #e60000; -} -.ql-editor .ql-color-orange { - color: #f90; -} -.ql-editor .ql-color-yellow { - color: #ff0; -} -.ql-editor .ql-color-green { - color: #008a00; -} -.ql-editor .ql-color-blue { - color: #06c; -} -.ql-editor .ql-color-purple { - color: #93f; -} -.ql-editor .ql-font-serif { - font-family: Georgia, Times New Roman, serif; -} -.ql-editor .ql-font-monospace { - font-family: Monaco, Courier New, monospace; -} -.ql-editor .ql-size-small { - font-size: 0.75em; -} -.ql-editor .ql-size-large { - font-size: 1.5em; -} -.ql-editor .ql-size-huge { - font-size: 2.5em; -} -.ql-editor .ql-direction-rtl { - direction: rtl; - text-align: inherit; -} -.ql-editor .ql-align-center { - text-align: center; -} -.ql-editor .ql-align-justify { - text-align: justify; -} -.ql-editor .ql-align-right { - text-align: right; -} -.ql-editor.ql-blank::before { - color: rgba(0,0,0,0.6); - content: attr(data-placeholder); - font-style: italic; - pointer-events: none; - position: absolute; -} -.ql-snow.ql-toolbar:after, -.ql-snow .ql-toolbar:after { - clear: both; - content: ''; - display: table; -} -.ql-snow.ql-toolbar button, -.ql-snow .ql-toolbar button { - background: none; - border: none; - cursor: pointer; - display: inline-block; - float: left; - height: 24px; - padding: 3px 5px; - width: 28px; -} -.ql-snow.ql-toolbar button svg, -.ql-snow .ql-toolbar button svg { - float: left; - height: 100%; -} -.ql-snow.ql-toolbar input.ql-image[type=file], -.ql-snow .ql-toolbar input.ql-image[type=file] { - display: none; -} -.ql-snow.ql-toolbar button:hover, -.ql-snow .ql-toolbar button:hover, -.ql-snow.ql-toolbar button.ql-active, -.ql-snow .ql-toolbar button.ql-active, -.ql-snow.ql-toolbar .ql-picker-label:hover, -.ql-snow .ql-toolbar .ql-picker-label:hover, -.ql-snow.ql-toolbar .ql-picker-label.ql-active, -.ql-snow .ql-toolbar .ql-picker-label.ql-active, -.ql-snow.ql-toolbar .ql-picker-item:hover, -.ql-snow .ql-toolbar .ql-picker-item:hover, -.ql-snow.ql-toolbar .ql-picker-item.ql-selected, -.ql-snow .ql-toolbar .ql-picker-item.ql-selected { - color: #06c; -} -.ql-snow.ql-toolbar button:hover .ql-fill, -.ql-snow .ql-toolbar button:hover .ql-fill, -.ql-snow.ql-toolbar button.ql-active .ql-fill, -.ql-snow .ql-toolbar button.ql-active .ql-fill, -.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill, -.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill, -.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill, -.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill, -.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill, -.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill, -.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill, -.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill, -.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill, -.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill, -.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill, -.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill, -.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, -.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, -.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, -.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, -.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, -.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, -.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill, -.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill { - fill: #06c; -} -.ql-snow.ql-toolbar button:hover .ql-stroke, -.ql-snow .ql-toolbar button:hover .ql-stroke, -.ql-snow.ql-toolbar button.ql-active .ql-stroke, -.ql-snow .ql-toolbar button.ql-active .ql-stroke, -.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke, -.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke, -.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke, -.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke, -.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke, -.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke, -.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke, -.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke, -.ql-snow.ql-toolbar button:hover .ql-stroke-miter, -.ql-snow .ql-toolbar button:hover .ql-stroke-miter, -.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter, -.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter, -.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter, -.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter, -.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, -.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, -.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter, -.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter, -.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter, -.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter { - stroke: #06c; -} -.ql-snow { - box-sizing: border-box; -} -.ql-snow * { - box-sizing: border-box; -} -.ql-snow .ql-hidden { - display: none; -} -.ql-snow .ql-out-bottom, -.ql-snow .ql-out-top { - visibility: hidden; -} -.ql-snow .ql-tooltip { - position: absolute; -} -.ql-snow .ql-tooltip a { - cursor: pointer; - text-decoration: none; -} -.ql-snow .ql-formats { - display: inline-block; - vertical-align: middle; -} -.ql-snow .ql-formats:after { - clear: both; - content: ''; - display: table; -} -.ql-snow .ql-stroke { - fill: none; - stroke: #444; - stroke-linecap: round; - stroke-linejoin: round; - stroke-width: 2; -} -.ql-snow .ql-stroke-miter { - fill: none; - stroke: #444; - stroke-miterlimit: 10; - stroke-width: 2; -} -.ql-snow .ql-fill, -.ql-snow .ql-stroke.ql-fill { - fill: #444; -} -.ql-snow .ql-empty { - fill: none; -} -.ql-snow .ql-even { - fill-rule: evenodd; -} -.ql-snow .ql-thin, -.ql-snow .ql-stroke.ql-thin { - stroke-width: 1; -} -.ql-snow .ql-transparent { - opacity: 0.4; -} -.ql-snow .ql-direction svg:last-child { - display: none; -} -.ql-snow .ql-direction.ql-active svg:last-child { - display: inline; -} -.ql-snow .ql-direction.ql-active svg:first-child { - display: none; -} -.ql-snow .ql-editor h1 { - font-size: 2em; -} -.ql-snow .ql-editor h2 { - font-size: 1.5em; -} -.ql-snow .ql-editor h3 { - font-size: 1.17em; -} -.ql-snow .ql-editor h4 { - font-size: 1em; -} -.ql-snow .ql-editor h5 { - font-size: 0.83em; -} -.ql-snow .ql-editor h6 { - font-size: 0.67em; -} -.ql-snow .ql-editor a { - text-decoration: underline; -} -.ql-snow .ql-editor blockquote { - border-left: 4px solid #ccc; - margin-bottom: 5px; - margin-top: 5px; - padding-left: 16px; -} -.ql-snow .ql-editor code, -.ql-snow .ql-editor pre { - background-color: #f0f0f0; - border-radius: 3px; -} -.ql-snow .ql-editor pre { - white-space: pre-wrap; - margin-bottom: 5px; - margin-top: 5px; - padding: 5px 10px; -} -.ql-snow .ql-editor code { - font-size: 85%; - padding-bottom: 2px; - padding-top: 2px; -} -.ql-snow .ql-editor code:before, -.ql-snow .ql-editor code:after { - content: "\A0"; - letter-spacing: -2px; -} -.ql-snow .ql-editor pre.ql-syntax { - background-color: #23241f; - color: #f8f8f2; - overflow: visible; -} -.ql-snow .ql-editor img { - max-width: 100%; -} -.ql-snow .ql-picker { - color: #444; - display: inline-block; - float: left; - font-size: 14px; - font-weight: 500; - height: 24px; - position: relative; - vertical-align: middle; -} -.ql-snow .ql-picker-label { - cursor: pointer; - display: inline-block; - height: 100%; - padding-left: 8px; - padding-right: 2px; - position: relative; - width: 100%; -} -.ql-snow .ql-picker-label::before { - display: inline-block; - line-height: 22px; -} -.ql-snow .ql-picker-options { - background-color: #fff; - display: none; - min-width: 100%; - padding: 4px 8px; - position: absolute; - white-space: nowrap; -} -.ql-snow .ql-picker-options .ql-picker-item { - cursor: pointer; - display: block; - padding-bottom: 5px; - padding-top: 5px; -} -.ql-snow .ql-picker.ql-expanded .ql-picker-label { - color: #ccc; - z-index: 2; -} -.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill { - fill: #ccc; -} -.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke { - stroke: #ccc; -} -.ql-snow .ql-picker.ql-expanded .ql-picker-options { - display: block; - margin-top: -1px; - top: 100%; - z-index: 1; -} -.ql-snow .ql-color-picker, -.ql-snow .ql-icon-picker { - width: 28px; -} -.ql-snow .ql-color-picker .ql-picker-label, -.ql-snow .ql-icon-picker .ql-picker-label { - padding: 2px 4px; -} -.ql-snow .ql-color-picker .ql-picker-label svg, -.ql-snow .ql-icon-picker .ql-picker-label svg { - right: 4px; -} -.ql-snow .ql-icon-picker .ql-picker-options { - padding: 4px 0px; -} -.ql-snow .ql-icon-picker .ql-picker-item { - height: 24px; - width: 24px; - padding: 2px 4px; -} -.ql-snow .ql-color-picker .ql-picker-options { - padding: 3px 5px; - width: 152px; -} -.ql-snow .ql-color-picker .ql-picker-item { - border: 1px solid transparent; - float: left; - height: 16px; - margin: 2px; - padding: 0px; - width: 16px; -} -.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg { - position: absolute; - margin-top: -9px; - right: 0; - top: 50%; - width: 18px; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before, -.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before, -.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before, -.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before, -.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before { - content: attr(data-label); -} -.ql-snow .ql-picker.ql-header { - width: 98px; -} -.ql-snow .ql-picker.ql-header .ql-picker-label::before, -.ql-snow .ql-picker.ql-header .ql-picker-item::before { - content: 'Normal'; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before { - content: 'Heading 1'; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { - content: 'Heading 2'; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { - content: 'Heading 3'; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before { - content: 'Heading 4'; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before { - content: 'Heading 5'; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before { - content: 'Heading 6'; -} -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before { - font-size: 2em; -} -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { - font-size: 1.5em; -} -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { - font-size: 1.17em; -} -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before { - font-size: 1em; -} -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before { - font-size: 0.83em; -} -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before { - font-size: 0.67em; -} -.ql-snow .ql-picker.ql-font { - width: 108px; -} -.ql-snow .ql-picker.ql-font .ql-picker-label::before, -.ql-snow .ql-picker.ql-font .ql-picker-item::before { - content: 'Sans Serif'; -} -.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]::before, -.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before { - content: 'Serif'; -} -.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before, -.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before { - content: 'Monospace'; -} -.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before { - font-family: Georgia, Times New Roman, serif; -} -.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before { - font-family: Monaco, Courier New, monospace; -} -.ql-snow .ql-picker.ql-size { - width: 98px; -} -.ql-snow .ql-picker.ql-size .ql-picker-label::before, -.ql-snow .ql-picker.ql-size .ql-picker-item::before { - content: 'Normal'; -} -.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]::before, -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before { - content: 'Small'; -} -.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]::before, -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before { - content: 'Large'; -} -.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]::before, -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before { - content: 'Huge'; -} -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before { - font-size: 10px; -} -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before { - font-size: 18px; -} -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before { - font-size: 32px; -} -.ql-snow .ql-color-picker.ql-background .ql-picker-item { - background-color: #fff; -} -.ql-snow .ql-color-picker.ql-color .ql-picker-item { - background-color: #000; -} -.ql-toolbar.ql-snow { - border: 1px solid #ccc; - box-sizing: border-box; - font-family: 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif; - padding: 8px; -} -.ql-toolbar.ql-snow .ql-formats { - margin-right: 15px; -} -.ql-toolbar.ql-snow .ql-picker-label { - border: 1px solid transparent; -} -.ql-toolbar.ql-snow .ql-picker-options { - border: 1px solid transparent; - box-shadow: rgba(0,0,0,0.2) 0 2px 8px; -} -.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label { - border-color: #ccc; -} -.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options { - border-color: #ccc; -} -.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected, -.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover { - border-color: #000; -} -.ql-toolbar.ql-snow + .ql-container.ql-snow { - border-top: 0px; -} -.ql-snow .ql-tooltip { - background-color: #fff; - border: 1px solid #ccc; - box-shadow: 0px 0px 5px #ddd; - color: #444; - margin-top: 10px; - padding: 5px 12px; - white-space: nowrap; -} -.ql-snow .ql-tooltip::before { - content: "Visit URL:"; - line-height: 26px; - margin-right: 8px; -} -.ql-snow .ql-tooltip input[type=text] { - display: none; - border: 1px solid #ccc; - font-size: 13px; - height: 26px; - margin: 0px; - padding: 3px 5px; - width: 170px; -} -.ql-snow .ql-tooltip a.ql-preview { - display: inline-block; - max-width: 200px; - overflow-x: hidden; - text-overflow: ellipsis; - vertical-align: top; -} -.ql-snow .ql-tooltip a.ql-action::after { - border-right: 1px solid #ccc; - content: 'Edit'; - margin-left: 16px; - padding-right: 8px; -} -.ql-snow .ql-tooltip a.ql-remove::before { - content: 'Remove'; - margin-left: 8px; -} -.ql-snow .ql-tooltip a { - line-height: 26px; -} -.ql-snow .ql-tooltip.ql-editing a.ql-preview, -.ql-snow .ql-tooltip.ql-editing a.ql-remove { - display: none; -} -.ql-snow .ql-tooltip.ql-editing input[type=text] { - display: inline-block; -} -.ql-snow .ql-tooltip.ql-editing a.ql-action::after { - border-right: 0px; - content: 'Save'; - padding-right: 0px; -} -.ql-snow .ql-tooltip[data-mode=link]::before { - content: "Enter link:"; -} -.ql-snow .ql-tooltip[data-mode=formula]::before { - content: "Enter formula:"; -} -.ql-snow .ql-tooltip[data-mode=video]::before { - content: "Enter video:"; -} -.ql-snow a { - color: #06c; -} -.ql-container.ql-snow { - border: 1px solid #ccc; -} diff --git a/miniwob-sandbox/html/common/special/tic-tac-toe/o.png b/miniwob-sandbox/html/common/special/tic-tac-toe/o.png deleted file mode 100644 index 259a8a7404c3705f87496861df51601886193303..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2803 zcmZ`*X*d*&7M?N6kY%hzmXUoQ1{n!si5X1R8k7viI%D4{N*YT{F$N9BE=%_G6|yh+ zkc?#Svoy9S%Xh!rk*@B)`{O>(dC&Wt_j%vv{5&Vs7GuG~CB_8+0C-TAX7;D-^&4RJ z(>}L-`|~NWd01JP0e+Flqg|&HXRxJn*r|KxH-NqFxRKvtWH8d_l>eIrkmTK%ry2ug zhIEXc`%(}`aQ!GTWVEgqlC3SPW~0CSkXnyocP@TNlUDLI;REvY~hr9LpST0ifMgivfV20&9QWfW0Mfa7t(igi=VEH`9@%SSJhextrjo(xxlq;FFw z%_+hLCOR$OiyKKc*Av`Qp=iDr;vPm-^(3_XmqN}Y>|Z5mL(YAj6yrw#jB#*b!%UA6 zC!|nu^r5lp@H%k1B@MmC&L1vLgSP+3Tjj>EdoMsm*6iM2ceWAbipv6*$?=D`WOs!< zDB0_Me6FAExrfYl9_@^g-n`7F*F{(GH{TIZ&%{R1qZ zHab0K{DQ9AGpq#&E)RS<0T`MY+cFo#5b5*EO>uOOm_n-SUrxs?KgZa@Y0?fdKr>JU`& zSip1`Ze-8T=I1M)|EJR^B^GYqa&BZvE)Mq9M?dERsy znEt)-2uH^LwTzeiL~hQ1AHcA!w)c~F5{I*d%|-2ae>nCkgpgG;o9f`%9Vrq`Ek)=kb5wYGiG8+C7~n=|kkRX z_e4lV@TJuti=5*q&%)S^3aTGURBLA|C{8!Lw2@QsWY;8*dSn>twD^hDgI|{nXd`$K z)BWB;ng{3Ys#s+yFP-!Iy|2Tu0aP4KUj%4*4ydAtI(cNXV~HFVb)MQXw4*edxJx5* z_8ae|knrj}=*j9lJjUS-$;nT(wWfL+R9jFH=(_W~g2~-i`E2WgC8*`FyQXZCNRx1? zR)8yde*g%eI(IerG7uB=D@ych@IMTuWaM5s(7y7SD@6pl7T8Bno`HH@0&^W#to}u{ zG0!|JVk{@jd@^BCQ9fc;H`0@qW2@;Dn_Ws#MrAC0Ly35=A|5DZxtF{)G)NMA$JV*H zy%G--9J}nZnsp}YO7^@^GNqju;F9Cui)q=Vy!n{sfnIFWd4V3YgHf#DAJeO1e)@MP zYg;`nb=-2`HMgS%o%eEetEx!J7id^=fh7m*%swHpb)uGYn4uAFyyx!#mcw&ZuV?<^ z`%)=u8q1iV82W0(C^5V)WHEW#FM3|BT5c{~n4q!qqZ*c`E&7SB3}q8~{y=BelO?gr z&!=Mzy>UqvjCym}29th8w5f&Q7&5oB{?xbZ8mD@0m40S_t$O4_uQK~%t?h+h#Jf=( ztwBzWd*cNWaVt@n$c$YDsAVPQ?*ie4q1SM1vDr{FV}UjF{uFu=GeL}VP_}G06r|je zR(w5}??nciXtxuC&^k1rtX`i^>KJFI3OSU5e5DpS1+^Fpv7iXf2#nGyvzX#M_0X|c zcg|Qn5mzl@h0c)!@;qs=ZPt#oISI0wM5|arqzymurG&ybRBq-aVL)^5&B5hTXIQW6 zIX>mr?Yw+fbX=eb+SX?YpG32it{$@AC47oQ=jwDvhApW0F&)32Pn3+@SgcqB-+4of z%X+((@_Nv>C8Q#xP z7~1=SNEr9New^sv!A!*`yzvtzYX5A&ZzB_dTU9@)5k}wksu>)Tk$Z8MPRc9o_K^>D zsqpy@P&^f!UMXBbS0l*zdz02Kb*%_gOS$hBvqd-^wphQyx`#b8+@-Yv&K*d)iiV>1 zFCJrdsB^_PwpAPcN(vh-=`mPhY8Ot~Sj|Q4>C*LMKj>Fz7QWWsj~w;{O$XFX{p1|H2HYuJ{3Bw>8+VCvg^;&oI8d&bJ=?b zRm5nKk+bA5++eEmX%2B#kosPj<{Ee6> zbNn=6BH!N=Phc$-g#>+0kE_Tz(AGbLtxLPT23gNX&XyYpGGPf!kPGUy+T`iwOSx+8 zWh%Fz<$B9gae<4LxlElsYxp&nmf(4>S0l^!YQy)t9r<0#(g-onhMITZA7+8$X1*eD zQ`pea}$*DFL)#nwn~-rKRhriO|>5(bs~h!SwWDuor=< zmH!hU26_2;$Nc}m0-Pdt8W8=x!6C>yJPH?z2Si0hsrv;6gn8nE@#;aLKD1qf-zM?j vCP%+;0v=#a3=WThn&CnNpw4&#At(xJ?-%HkUu#S~^#M@k7_)j4_Xqz0B-H)F diff --git a/miniwob-sandbox/html/common/special/tic-tac-toe/x.png b/miniwob-sandbox/html/common/special/tic-tac-toe/x.png deleted file mode 100644 index d6a3263be56ba94cc2b3f855ae7d8f3032209e32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 993 zcmWlY4NMbf7=W+sX>S-NH()7k8MckGxB+!TI%WqubEQ_&b}k~;pSJEtCpaPE5VfnN z%e2L7scvfhMK==&6^>yRFhoknb|nMnuu-5BsyU1qbz_~;oD*R$mweB6-}}Dz-QDx% zbAMpaCMSuL5Cloqtsy^z*)cz`g~0xzZG$kOHLG>&F}Q5lCoWjORK3PjgCL7i=LZit zb54XHg0FNWvA*uyUw@QVNQktO`;vp=`#Fr2mJ1elUUh_g?~P@=t}5t^zG!*g+WMF< z_Mmfw!2Jr(as4&T<<7cKnQ}6v`7YOh&78=z;Pp-aLat-v1_U1MRY67VxR-X_>;5}jPIknUkR09J zok+*8NNQ~wbntMN1rP0rP*5_y7n1%u+sYa=(nxQo9ErT4G#;Dhm+=|PiajV59CqQ# zS%X5;#|b?tJXSST$Y)fyK1QjkE6tcFrdy0Fd$0bAEA74pK*w6Z@gzX!5GD$`D1d(e z(BcBTa}zU@lZ}y{jF@i+O2yn}xz(nBp+P(^|pJLr-#p3zpwq%Lv!8sRS_$keL9yF~E1r z0nQ4*#a4i0icPKm-ppk4g%{Z3Rl&2EShFSCQY}j_CnrW_&X3+|ufz%b^u8yqC8n>B zo*{jge*(A8GO-0Gd<~$idc%G&X*eJP`#)TOc33ZmL2&-md|2pFLJ!WDKy|1@0iCe^ zG62tPRQAIrxkLGoJhWYE(PxE**uYNs@qH1{+oVqg@sc7Cui6FT$E!iSy`Svk!e3Dpbz~+CV(j zhWjb{4zy)sCGPjqC*e+7ig#0VE`0lzQ+T(R&WCpr3M|7izKAW~b3D&JvA_|Z=r;)a/=2,b/=2,c>>>=1;return(a+c)/b};return u.int32=function(){return 0|t.g(4)},u.quick=function(){return t.g(4)/4294967296},u.double=u,g(i(t.S),a),(j.pass||k||function(a,c,d,f){return f&&(f.S&&e(f,t),a.state=function(){return e(t,{})}),d?(b[o]=a,c):a})(u,s,"global"in j?j.global:this==b,j.state)}function d(a){var b,c=a.length,d=this,e=0,f=d.i=d.j=0,g=d.S=[];for(c||(a=[c++]);e element. - -core.DISPLAY_HTML = ` -
- - - -
-
- - - -
-
- - - -
-
- - 0 -
-`; - -// create element via JS; appending the HTML template -// directly to the body will cause jQuery UI elements -// to freak out. -core.createDisplay = function(){ - var display = document.getElementById('reward-display'); - if(display === null) { - // Click visualizer - var canvas = document.createElement('canvas'); - canvas.setAttribute('id','click-canvas'); - canvas.setAttribute('width',160); - canvas.setAttribute('height',210); - document.body.appendChild(canvas); - document.body.addEventListener('click', core.canvasDrawClick); - // Reward display - var newDiv = document.createElement('div'); - newDiv.setAttribute('id','reward-display'); - newDiv.innerHTML = core.DISPLAY_HTML; - document.body.appendChild(newDiv); - } - core.reloadDisplay(); -} - -// reload the display, reward stats should be persistent -// across all tasks and not just within a single task. -core.reloadDisplay = function(){ - core.wob_latest = core.wob_latest || '-'; - core.wob_scores = core.wob_scores || []; - - if(core.wob_latest !== '-'){ - var latestColor = core.computeColor(core.wob_latest); - document.getElementById('reward-last').setAttribute('style', 'color: ' + latestColor); - document.getElementById('reward-last').innerHTML = core.wob_latest.toFixed(2); - } - - if(core.wob_scores.length > 0){ - var avg = core.rewardAvg(); - var avgColor = core.computeColor(avg); - document.getElementById('reward-avg').setAttribute('style', 'color: ' + avgColor); - document.getElementById('reward-avg').innerHTML = avg.toFixed(2); - } -} - -core.updateDisplay = function(reward){ - core.wob_latest = reward; - core.wob_scores.push(reward); - core.wob_scores = core.wob_scores.splice(-10); // only keep the last 10 rewards. - - var avg = core.rewardAvg(); - var avgColor = core.computeColor(avg); - var latestColor = core.computeColor(reward); - - // update text and set the appropriate colors. - document.getElementById('reward-avg').setAttribute('style', 'color: ' + avgColor); - document.getElementById('reward-avg').innerHTML = avg.toFixed(2); - document.getElementById('reward-last').setAttribute('style', 'color: ' + latestColor); - document.getElementById('reward-last').innerHTML = reward.toFixed(2); -} - -// only computes for last X tasks. -core.rewardAvg = function(){ - var toCompute = core.wob_scores.slice(); - var total = toCompute.reduce(function(a,b){ return a+b; }); - return total/toCompute.length; -} - -// use RGB values for setting CSS font color. -// red value should increase as number goes towards -1 -// green value should increase as number goes towards +1. -core.computeColor = function(reward){ - var red = 255; - var green = 180; - if(reward <= 0) green = parseInt(180*(1-Math.abs(reward))); - else red = parseInt(255*(1-reward)); - return "rgb(" + red + "," + green + ",0);" -} - -core.hideDisplay = function(){ - document.getElementById('reward-display').setAttribute('style', 'display: none'); -} - - -core.countdownTimer = function(et){ - core.clearTimer(); - var episodeTime = et/1000; - var currentTime = et/1000; - var intervalTime = 1000; - // update the timer immediately to display the total episode - // time on start, eg. "10 / 10s" - updateTimer(); - // set an interval so that the timer text will be updated - // based on the `intervalTime` (ie. every 1sec) - core.CD_TIMER = setInterval(updateTimer, intervalTime); - - function updateTimer(){ - var cd = document.getElementById('timer-countdown'); - if (currentTime <= 0){ - cd.setAttribute('style', 'color: red'); - cd.innerHTML = '0 / ' + episodeTime + 's'; - window.clearInterval(core.CD_TIMER); - return; - } else { - var frac = currentTime / episodeTime, col; - if(frac > 0.75) { col = 'green'; } - else if(frac > 0.5) { col = 'orange'; } - else if(frac > 0.25) { col = 'brown'; } - else { col = 'red'; } - cd.setAttribute('style', 'color:' + col); - cd.innerHTML = currentTime + ' / ' + episodeTime + 'sec'; - currentTime-=intervalTime/1000; - } - } -}; - -core.clearTimer = function(){ - window.clearInterval(core.CD_TIMER); - var cd = document.getElementById('timer-countdown'); - cd.setAttribute('style', 'color: black'); - cd.innerHTML = '-'; -} - -// ################################ -// Custom getter - -core.getUtterance = function () { - var query = document.getElementById('query'); - return query.textContent.replace(/\s+/g, ' ').trim(); -} - -core.previousDOMInfo = {}; -core.nextRefCode = 1; -core.nextTextRefCode = -1; -core.resetRefCode = function () { - core.nextRefCode = 1; - core.nextTextRefCode = -1; -} - -/* Returns a nested object (dict) with all visible DOM element information. - - Special handling for Text nodes: - - Text nodes with only whitespaces are discarded. - - If the Text node is the only child, discard that Text node - and reassign its text to the parent Element. - - If the Text node is not the only child, it is broken into - pseudo-Elements with tag "t". -*/ -core.getDOMInfo = function (baseElement) { - core.previousDOMInfo = {}; - - function getDOMInfoOfElement(element) { - if (element.id === 'reward-display' || - element.id === 'sync-task-cover' || - element.id === 'click-canvas' || - element.id === 'query') return; - var rect = element.getBoundingClientRect(); - if (rect.width == 0 || rect.height == 0) return; - var answer = { - tag: element.tagName, - left: rect.left, top: rect.top, - width: rect.width, height: rect.height, - children: [], - id: element.id, - classes: element.className, - }; - // Assign ref code - if (element.dataset.wob_ref !== undefined && - element.dataset.wob_eps === 'e' + WOB_EPISODE_ID) { - answer.ref = +element.dataset.wob_ref; - } else { - element.dataset.wob_ref = answer.ref = core.nextRefCode++; - element.dataset.wob_eps = 'e' + WOB_EPISODE_ID; - } - // Record styles - var computedStyle = window.getComputedStyle(element); - answer.bgColor = computedStyle.backgroundColor; - answer.fgColor = computedStyle.color; - // Indicate if the element is being focused on - if (document.activeElement === element) { - answer.focused = true; - } - // Indicate if the element is tampered with in this episode - if (element.dataset.tampered !== undefined && - element.dataset.tampered == 'e' + WOB_EPISODE_ID) { - answer.tampered = true; - } - // For recording demonstrations: Record the target - if (element.dataset.recording_target) { - answer.recordingTarget = true; - } - // For , also add input type and value - if (element instanceof HTMLInputElement) { - var inputType = element.type; - answer.tag += '_' + inputType; - if (inputType === 'checkbox' || inputType === 'radio') { - answer.value = element.checked; - } else { - answer.value = element.value; - } - } else if (element instanceof HTMLTextAreaElement) { - answer.value = element.value; - } - core.previousDOMInfo[answer.ref] = element; - // Read the children - var filteredChildNodes = [], textOnly = true; - element.childNodes.forEach(function (child) { - if (child instanceof Text) { - if (!/^\s*$/.test(child.data)) { - filteredChildNodes.push(child); - } - } else if (child instanceof Element) { - filteredChildNodes.push(child); - textOnly = false; - } - }); - if (textOnly) { - answer.text = filteredChildNodes.map(function (x) { - return x.data.trim(); - }).join(' '); - } else { - filteredChildNodes.forEach(function (child) { - if (child instanceof Text) { - addDOMInfosOfTextNode(child, answer.children); - } else { - child = getDOMInfoOfElement(child); - if (child !== undefined) - answer.children.push(child); - } - }); - } - return answer; - } - - function addDOMInfosOfTextNode(textNode, collection) { - // Break the text node into multiple nodes - // Each node only occupies a single rectangle boundary - var range = document.createRange(); - range.selectNodeContents(textNode); - var absolute_start = range.startOffset, absolute_end = range.endOffset; - var start = absolute_start; - var itr = 0; - while (start < absolute_end) { - // Binary search on the next end point - var end_lower_bound = start + 1, - end_upper_bound = absolute_end, - l = range.getClientRects().length, - end = Math.floor((end_lower_bound * (l-1) + end_upper_bound) / l); - while (end_lower_bound <= end_upper_bound) { - range.setEnd(textNode, end); - if (range.getClientRects().length == 1) { - end_lower_bound = end + 1; - end = Math.min(end_lower_bound + 5, Math.floor((end_lower_bound + end_upper_bound) / 2)); - } else { - end_upper_bound = end - 1; - end = Math.max(end_upper_bound - 5, Math.floor((end_lower_bound + end_upper_bound) / 2)); - } - if (itr++ > 1000) throwTextNodeError('Text node computation stuck in an infinite loop'); - } - range.setEnd(textNode, end); - var rects = range.getClientRects(); - if (rects.length !== 1) throwTextNodeError('Text node computation incorrect'); - var rect = rects[0], text = textNode.data.substring(start, end).trim(); - if (rect.width > 0 && rect.height > 0 && text) { - var answer = { - tag: "t", - left: rect.left, top: rect.top, - width: rect.width, height: rect.height, - ref: core.nextTextRefCode--, - children: [], - text: text, - }; - collection.push(answer); - } - start = end; - range.setEnd(textNode, absolute_end); - range.setStart(textNode, start); - if (itr++ > 1000) throwTextNodeError('Text node computation stuck in an infinite loop'); - } - } - - function throwTextNodeError(message) { - alert(message); - throw message; - } - - return getDOMInfoOfElement(baseElement || document.body); -} - - -/* Debug: return a mapping from ref to its DOMInfo */ -core.flattenDOMInfo = function (rootDomInfo, flattened) { - if (flattened == undefined) flattened = {}; - flattened[rootDomInfo.ref] = rootDomInfo; - rootDomInfo.children.forEach(function (x) { core.flattenDOMInfo(x, flattened); }); - return flattened; -} - - -/* Click on an element regardless of its location or visibility. - - Args: - ref: The ref value generated by the previous call to getDOMInfo -*/ -core.elementClick = function (ref) { - try { - var element = core.previousDOMInfo[ref]; - core.canvasDrawElementClick(element); - if (element instanceof SVGElement) { - // SVG needs special treatment - var event = new Event('mousedown'); - element.dispatchEvent(event); - var event = new Event('mouseup'); - element.dispatchEvent(event); - var event = new Event('click'); - element.dispatchEvent(event); - } else { - element.click(); - element.focus(); - } - return true; - } catch (err) { - return err.message; - } -} - -// ################################ -// Mouse click tracker - -/* Helper: Prepare canvas for the next drawing step. - Return true if the canvas is ready. -*/ -core.prepareCanvas = function () { - if (core.clickTrackCtx === undefined) - core.clickTrackCtx = document.getElementById('click-canvas').getContext('2d'); - // Blur out the old content - var ctx = core.clickTrackCtx; - ctx.globalCompositeOperation = "screen"; - ctx.fillStyle = "hsl(0, 0, 80)"; - ctx.fillRect(0,0,160,210); - ctx.globalCompositeOperation = "source-over"; // restore default comp - return true; -} - -core.canvasDrawClick = function (event) { - // Don't visualize the click on the sync cover - if (event.target === core.cover_div) return; - // Note that the element is clicked - event.target.dataset.tampered = 'e' + WOB_EPISODE_ID; - // Don't visualize elementClick or clicks outside the bound - if (!event.isTrusted || event.pageX > 160 || event.pageY > 210) return; - // Draw! - if (!core.prepareCanvas()) return; - var ctx = core.clickTrackCtx; - ctx.beginPath(); - ctx.arc(event.pageX, event.pageY, 5, 0,2*Math.PI); - ctx.fillStyle = "rgba(100, 100, 255, 0.8)"; - ctx.fill(); -} - -core.canvasDrawElementClick = function (element) { - if (!core.prepareCanvas()) return; - var rect = element.getBoundingClientRect() - var ctx = core.clickTrackCtx; - ctx.fillStyle = "rgba(100, 100, 255, 0.8)"; - ctx.fillRect(rect.left, rect.top, rect.width, rect.height); -} - -core.canvasClear = function () { - if (core.clickTrackCtx === undefined) - core.clickTrackCtx = document.getElementById('click-canvas').getContext('2d'); - var ctx = core.clickTrackCtx; - ctx.fillStyle = "white"; - ctx.fillRect(0,0,160,210); -} - -// ################################ -// Attention visualization - -// Coordinates (may be changed in the future) -var ROW_TO_Y = [54, 62, 70, 78, 86, 94, 102, 110, 118, 126, 134, 142, 150, 158, 166, 174, 182, 190, 198, 206]; -var COL_TO_X = [4, 12, 20, 28, 36, 44, 52, 60, 68, 76, 84, 92, 100, 108, 116, 124, 132, 140, 148, 156]; - -/* Visualize the attention. - - Args: - values: 2d array of shape (num_grid_rows, num_grid_cols) -*/ -core.visualizeAttention = function (values) { - if (core.attentionCtx === undefined) { - var canvas = document.createElement('canvas'); - canvas.setAttribute('id','attention-canvas'); - canvas.setAttribute('width',160); - canvas.setAttribute('height',210); - document.body.appendChild(canvas); - core.attentionCtx = canvas.getContext('2d'); - } - var ctx = core.attentionCtx; - ctx.clearRect(0,0,160,210); - values.forEach(function (row, i) { - var y = ROW_TO_Y[i]; - row.forEach(function (cell, j) { - var x = COL_TO_X[j]; - ctx.fillStyle = "hsl(0,0%," + (cell * 100) + "%)"; - ctx.fillRect(x-3,y-3,6,6); - }); - }); -} - -// ################################ -// Train-test split - -// genProblem can read this variable when generating a problem -var WOB_DATA_MODE = 'default'; // dataset distribution to sample the problem from - -core.setDataMode = function (mode) { - WOB_DATA_MODE = mode; -} - -// Can also set the mode with "?mode=..." in the URL -if (core.QueryString.mode) { - core.setDataMode(core.QueryString.mode); -} - -// ################################ -// Record demonstrations (import core/record.js) - -core.addRecordScript = function () { - // record script - var script = document.createElement('script'); - script.type = 'text/javascript'; - script.src = '../core/record.js'; - document.head.appendChild(script); -} - -// Enable demonstration recording with "?record=..." in the URL -if (core.QueryString.record) { - core.addRecordScript(); -} diff --git a/miniwob-sandbox/html/core/d3.v3.min.js b/miniwob-sandbox/html/core/d3.v3.min.js deleted file mode 100644 index ca05c71..0000000 --- a/miniwob-sandbox/html/core/d3.v3.min.js +++ /dev/null @@ -1,5 +0,0 @@ -!function(){function n(n){return n&&(n.ownerDocument||n.document||n).documentElement}function t(n){return n&&(n.ownerDocument&&n.ownerDocument.defaultView||n.document&&n||n.defaultView)}function e(n,t){return t>n?-1:n>t?1:n>=t?0:NaN}function r(n){return null===n?NaN:+n}function u(n){return!isNaN(n)}function i(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)<0?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)>0?u=i:r=i+1}return r}}}function a(n){return n.length}function o(n){for(var t=1;n*t%1;)t*=10;return t}function l(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function c(){this._=Object.create(null)}function s(n){return(n+="")===xa||n[0]===ba?ba+n:n}function f(n){return(n+="")[0]===ba?n.slice(1):n}function h(n){return s(n)in this._}function g(n){return(n=s(n))in this._&&delete this._[n]}function p(){var n=[];for(var t in this._)n.push(f(t));return n}function v(){var n=0;for(var t in this._)++n;return n}function d(){for(var n in this._)return!1;return!0}function m(){this._=Object.create(null)}function y(n){return n}function M(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function x(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=_a.length;r>e;++e){var u=_a[e]+t;if(u in n)return u}}function b(){}function _(){}function w(n){function t(){for(var t,r=e,u=-1,i=r.length;++ue;e++)for(var u,i=n[e],a=0,o=i.length;o>a;a++)(u=i[a])&&t(u,a,e);return n}function Z(n){return Sa(n,za),n}function V(n){var t,e;return function(r,u,i){var a,o=n[i].update,l=o.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(a=o[t])&&++t0&&(n=n.slice(0,o));var c=La.get(n);return c&&(n=c,l=B),o?t?u:r:t?b:i}function $(n,t){return function(e){var r=oa.event;oa.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{oa.event=r}}}function B(n,t){var e=$(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function W(e){var r=".dragsuppress-"+ ++Ta,u="click"+r,i=oa.select(t(e)).on("touchmove"+r,S).on("dragstart"+r,S).on("selectstart"+r,S);if(null==qa&&(qa="onselectstart"in e?!1:x(e.style,"userSelect")),qa){var a=n(e).style,o=a[qa];a[qa]="none"}return function(n){if(i.on(r,null),qa&&(a[qa]=o),n){var t=function(){i.on(u,null)};i.on(u,function(){S(),t()},!0),setTimeout(t,0)}}}function J(n,e){e.changedTouches&&(e=e.changedTouches[0]);var r=n.ownerSVGElement||n;if(r.createSVGPoint){var u=r.createSVGPoint();if(0>Ra){var i=t(n);if(i.scrollX||i.scrollY){r=oa.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var a=r[0][0].getScreenCTM();Ra=!(a.f||a.e),r.remove()}}return Ra?(u.x=e.pageX,u.y=e.pageY):(u.x=e.clientX,u.y=e.clientY),u=u.matrixTransform(n.getScreenCTM().inverse()),[u.x,u.y]}var o=n.getBoundingClientRect();return[e.clientX-o.left-n.clientLeft,e.clientY-o.top-n.clientTop]}function G(){return oa.event.changedTouches[0].identifier}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nn(n){return n>1?0:-1>n?ja:Math.acos(n)}function tn(n){return n>1?Ha:-1>n?-Ha:Math.asin(n)}function en(n){return((n=Math.exp(n))-1/n)/2}function rn(n){return((n=Math.exp(n))+1/n)/2}function un(n){return((n=Math.exp(2*n))-1)/(n+1)}function an(n){return(n=Math.sin(n/2))*n}function on(){}function ln(n,t,e){return this instanceof ln?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof ln?new ln(n.h,n.s,n.l):_n(""+n,wn,ln):new ln(n,t,e)}function cn(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(a-i)*n/60:180>n?a:240>n?i+(a-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,a;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,a=.5>=e?e*(1+t):e+t-e*t,i=2*e-a,new yn(u(n+120),u(n),u(n-120))}function sn(n,t,e){return this instanceof sn?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof sn?new sn(n.h,n.c,n.l):n instanceof hn?pn(n.l,n.a,n.b):pn((n=Sn((n=oa.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new sn(n,t,e)}function fn(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new hn(e,Math.cos(n*=Oa)*t,Math.sin(n)*t)}function hn(n,t,e){return this instanceof hn?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof hn?new hn(n.l,n.a,n.b):n instanceof sn?fn(n.h,n.c,n.l):Sn((n=yn(n)).r,n.g,n.b):new hn(n,t,e)}function gn(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=vn(u)*Ka,r=vn(r)*Qa,i=vn(i)*no,new yn(mn(3.2404542*u-1.5371385*r-.4985314*i),mn(-.969266*u+1.8760108*r+.041556*i),mn(.0556434*u-.2040259*r+1.0572252*i))}function pn(n,t,e){return n>0?new sn(Math.atan2(e,t)*Ia,Math.sqrt(t*t+e*e),n):new sn(NaN,NaN,n)}function vn(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function dn(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function mn(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function yn(n,t,e){return this instanceof yn?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof yn?new yn(n.r,n.g,n.b):_n(""+n,yn,cn):new yn(n,t,e)}function Mn(n){return new yn(n>>16,n>>8&255,255&n)}function xn(n){return Mn(n)+""}function bn(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function _n(n,t,e){var r,u,i,a=0,o=0,l=0;if(r=/([a-z]+)\((.*)\)/.exec(n=n.toLowerCase()))switch(u=r[2].split(","),r[1]){case"hsl":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(Nn(u[0]),Nn(u[1]),Nn(u[2]))}return(i=ro.get(n))?t(i.r,i.g,i.b):(null==n||"#"!==n.charAt(0)||isNaN(i=parseInt(n.slice(1),16))||(4===n.length?(a=(3840&i)>>4,a=a>>4|a,o=240&i,o=o>>4|o,l=15&i,l=l<<4|l):7===n.length&&(a=(16711680&i)>>16,o=(65280&i)>>8,l=255&i)),t(a,o,l))}function wn(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),a=Math.max(n,t,e),o=a-i,l=(a+i)/2;return o?(u=.5>l?o/(a+i):o/(2-a-i),r=n==a?(t-e)/o+(e>t?6:0):t==a?(e-n)/o+2:(n-t)/o+4,r*=60):(r=NaN,u=l>0&&1>l?0:r),new ln(r,u,l)}function Sn(n,t,e){n=kn(n),t=kn(t),e=kn(e);var r=dn((.4124564*n+.3575761*t+.1804375*e)/Ka),u=dn((.2126729*n+.7151522*t+.072175*e)/Qa),i=dn((.0193339*n+.119192*t+.9503041*e)/no);return hn(116*u-16,500*(r-u),200*(u-i))}function kn(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function Nn(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function En(n){return"function"==typeof n?n:function(){return n}}function An(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Cn(t,e,n,r)}}function Cn(n,t,e,r){function u(){var n,t=l.status;if(!t&&Ln(l)||t>=200&&300>t||304===t){try{n=e.call(i,l)}catch(r){return void a.error.call(i,r)}a.load.call(i,n)}else a.error.call(i,l)}var i={},a=oa.dispatch("beforesend","progress","load","error"),o={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(n)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=u:l.onreadystatechange=function(){l.readyState>3&&u()},l.onprogress=function(n){var t=oa.event;oa.event=n;try{a.progress.call(i,l)}finally{oa.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?o[n]:(null==t?delete o[n]:o[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(c=n,i):c},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(ca(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),l.open(e,n,!0),null==t||"accept"in o||(o.accept=t+",*/*"),l.setRequestHeader)for(var s in o)l.setRequestHeader(s,o[s]);return null!=t&&l.overrideMimeType&&l.overrideMimeType(t),null!=c&&(l.responseType=c),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),a.beforesend.call(i,l),l.send(null==r?null:r),i},i.abort=function(){return l.abort(),i},oa.rebind(i,a,"on"),null==r?i:i.get(zn(r))}function zn(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Ln(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function qn(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,n:null};return io?io.n=i:uo=i,io=i,ao||(oo=clearTimeout(oo),ao=1,lo(Tn)),i}function Tn(){var n=Rn(),t=Dn()-n;t>24?(isFinite(t)&&(clearTimeout(oo),oo=setTimeout(Tn,t)),ao=0):(ao=1,lo(Tn))}function Rn(){for(var n=Date.now(),t=uo;t;)n>=t.t&&t.c(n-t.t)&&(t.c=null),t=t.n;return n}function Dn(){for(var n,t=uo,e=1/0;t;)t.c?(t.t8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Un(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r&&e?function(n,t){for(var u=n.length,i=[],a=0,o=r[0],l=0;u>0&&o>0&&(l+o+1>t&&(o=Math.max(1,t-l)),i.push(n.substring(u-=o,u+o)),!((l+=o+1)>t));)o=r[a=(a+1)%r.length];return i.reverse().join(e)}:y;return function(n){var e=so.exec(n),r=e[1]||" ",a=e[2]||">",o=e[3]||"-",l=e[4]||"",c=e[5],s=+e[6],f=e[7],h=e[8],g=e[9],p=1,v="",d="",m=!1,y=!0;switch(h&&(h=+h.substring(1)),(c||"0"===r&&"="===a)&&(c=r="0",a="="),g){case"n":f=!0,g="g";break;case"%":p=100,d="%",g="f";break;case"p":p=100,d="%",g="r";break;case"b":case"o":case"x":case"X":"#"===l&&(v="0"+g.toLowerCase());case"c":y=!1;case"d":m=!0,h=0;break;case"s":p=-1,g="r"}"$"===l&&(v=u[0],d=u[1]),"r"!=g||h||(g="g"),null!=h&&("g"==g?h=Math.max(1,Math.min(21,h)):("e"==g||"f"==g)&&(h=Math.max(0,Math.min(20,h)))),g=fo.get(g)||Fn;var M=c&&f;return function(n){var e=d;if(m&&n%1)return"";var u=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===o?"":o;if(0>p){var l=oa.formatPrefix(n,h);n=l.scale(n),e=l.symbol+d}else n*=p;n=g(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=y?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!c&&f&&(x=i(x,1/0));var S=v.length+x.length+b.length+(M?0:u.length),k=s>S?new Array(S=s-S+1).join(r):"";return M&&(x=i(k+x,k.length?s-b.length:1/0)),u+=v,n=x+b,("<"===a?u+n+k:">"===a?k+u+n:"^"===a?k.substring(0,S>>=1)+u+n+k.substring(S):u+(M?n:k+n))+e}}}function Fn(n){return n+""}function Hn(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function On(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new go(e-1)),1),e}function i(n,e){return t(n=new go(+n),e),n}function a(n,r,i){var a=u(n),o=[];if(i>1)for(;r>a;)e(a)%i||o.push(new Date(+a)),t(a,1);else for(;r>a;)o.push(new Date(+a)),t(a,1);return o}function o(n,t,e){try{go=Hn;var r=new Hn;return r._=n,a(r,t,e)}finally{go=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=a;var l=n.utc=In(n);return l.floor=l,l.round=In(r),l.ceil=In(u),l.offset=In(i),l.range=o,n}function In(n){return function(t,e){try{go=Hn;var r=new Hn;return r._=t,n(r,e)._}finally{go=Date}}}function Yn(n){function t(n){function t(t){for(var e,u,i,a=[],o=-1,l=0;++oo;){if(r>=c)return-1;if(u=t.charCodeAt(o++),37===u){if(a=t.charAt(o++),i=C[a in vo?t.charAt(o++):a],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){N.lastIndex=0;var r=N.exec(t.slice(e));return r?(n.m=E.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,r){return e(n,A.c.toString(),t,r)}function l(n,t,r){return e(n,A.x.toString(),t,r)}function c(n,t,r){return e(n,A.X.toString(),t,r)}function s(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,v=n.days,d=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{go=Hn;var t=new go;return t._=n,r(t)}finally{go=Date}}var r=t(n);return e.parse=function(n){try{go=Hn;var t=r.parse(n);return t&&t._}finally{go=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ct;var M=oa.map(),x=Vn(v),b=Xn(v),_=Vn(d),w=Xn(d),S=Vn(m),k=Xn(m),N=Vn(y),E=Xn(y);p.forEach(function(n,t){M.set(n.toLowerCase(),t)});var A={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return Zn(n.getDate(),t,2)},e:function(n,t){return Zn(n.getDate(),t,2)},H:function(n,t){return Zn(n.getHours(),t,2)},I:function(n,t){return Zn(n.getHours()%12||12,t,2)},j:function(n,t){return Zn(1+ho.dayOfYear(n),t,3)},L:function(n,t){return Zn(n.getMilliseconds(),t,3)},m:function(n,t){return Zn(n.getMonth()+1,t,2)},M:function(n,t){return Zn(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return Zn(n.getSeconds(),t,2)},U:function(n,t){return Zn(ho.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Zn(ho.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return Zn(n.getFullYear()%100,t,2)},Y:function(n,t){return Zn(n.getFullYear()%1e4,t,4)},Z:ot,"%":function(){return"%"}},C={a:r,A:u,b:i,B:a,c:o,d:tt,e:tt,H:rt,I:rt,j:et,L:at,m:nt,M:ut,p:s,S:it,U:Bn,w:$n,W:Wn,x:l,X:c,y:Gn,Y:Jn,Z:Kn,"%":lt};return t}function Zn(n,t,e){var r=0>n?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function Vn(n){return new RegExp("^(?:"+n.map(oa.requote).join("|")+")","i")}function Xn(n){for(var t=new c,e=-1,r=n.length;++e68?1900:2e3)}function nt(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function tt(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function et(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function rt(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function ut(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function it(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function at(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function ot(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=Ma(t)/60|0,u=Ma(t)%60;return e+Zn(r,"0",2)+Zn(u,"0",2)}function lt(n,t,e){yo.lastIndex=0;var r=yo.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ct(n){for(var t=n.length,e=-1;++e=0?1:-1,o=a*e,l=Math.cos(t),c=Math.sin(t),s=i*c,f=u*l+s*Math.cos(o),h=s*a*Math.sin(o);So.add(Math.atan2(h,f)),r=n,u=l,i=c}var t,e,r,u,i;ko.point=function(a,o){ko.point=n,r=(t=a)*Oa,u=Math.cos(o=(e=o)*Oa/2+ja/4),i=Math.sin(o)},ko.lineEnd=function(){n(t,e)}}function dt(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function mt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function yt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function Mt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function xt(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function bt(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function _t(n){return[Math.atan2(n[1],n[0]),tn(n[2])]}function wt(n,t){return Ma(n[0]-t[0])o;++o)u.point((e=n[o])[0],e[1]);return void u.lineEnd()}var l=new Tt(e,n,null,!0),c=new Tt(e,null,l,!1);l.o=c,i.push(l),a.push(c),l=new Tt(r,n,null,!1),c=new Tt(r,null,l,!0),l.o=c,i.push(l),a.push(c)}}),a.sort(t),qt(i),qt(a),i.length){for(var o=0,l=e,c=a.length;c>o;++o)a[o].e=l=!l;for(var s,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;s=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var o=0,c=s.length;c>o;++o)u.point((f=s[o])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){s=g.p.z;for(var o=s.length-1;o>=0;--o)u.point((f=s[o])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,s=g.z,p=!p}while(!g.v);u.lineEnd()}}}function qt(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r0){for(b||(i.polygonStart(),b=!0),i.lineStart();++a1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Dt))}var g,p,v,d=t(i),m=u.invert(r[0],r[1]),y={point:a,lineStart:l,lineEnd:c,polygonStart:function(){y.point=s,y.lineStart=f,y.lineEnd=h,g=[],p=[]},polygonEnd:function(){y.point=a,y.lineStart=l,y.lineEnd=c,g=oa.merge(g);var n=Ot(m,p);g.length?(b||(i.polygonStart(),b=!0),Lt(g,jt,n,e,i)):n&&(b||(i.polygonStart(),b=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),b&&(i.polygonEnd(),b=!1),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},M=Pt(),x=t(M),b=!1;return y}}function Dt(n){return n.length>1}function Pt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:b,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function jt(n,t){return((n=n.x)[0]<0?n[1]-Ha-Da:Ha-n[1])-((t=t.x)[0]<0?t[1]-Ha-Da:Ha-t[1])}function Ut(n){var t,e=NaN,r=NaN,u=NaN;return{lineStart:function(){n.lineStart(),t=1},point:function(i,a){var o=i>0?ja:-ja,l=Ma(i-e);Ma(l-ja)0?Ha:-Ha),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(o,r),n.point(i,r),t=0):u!==o&&l>=ja&&(Ma(e-u)Da?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*a)):(t+r)/2}function Ht(n,t,e,r){var u;if(null==n)u=e*Ha,r.point(-ja,u),r.point(0,u),r.point(ja,u),r.point(ja,0),r.point(ja,-u),r.point(0,-u),r.point(-ja,-u),r.point(-ja,0),r.point(-ja,u);else if(Ma(n[0]-t[0])>Da){var i=n[0]o;++o){var c=t[o],s=c.length;if(s)for(var f=c[0],h=f[0],g=f[1]/2+ja/4,p=Math.sin(g),v=Math.cos(g),d=1;;){d===s&&(d=0),n=c[d];var m=n[0],y=n[1]/2+ja/4,M=Math.sin(y),x=Math.cos(y),b=m-h,_=b>=0?1:-1,w=_*b,S=w>ja,k=p*M;if(So.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),i+=S?b+_*Ua:b,S^h>=e^m>=e){var N=yt(dt(f),dt(n));bt(N);var E=yt(u,N);bt(E);var A=(S^b>=0?-1:1)*tn(E[2]);(r>A||r===A&&(N[0]||N[1]))&&(a+=S^b>=0?1:-1)}if(!d++)break;h=m,p=M,v=x,f=n}}return(-Da>i||Da>i&&0>So)^1&a}function It(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function e(n){var e,i,l,c,s;return{lineStart:function(){c=l=!1,s=1},point:function(f,h){var g,p=[f,h],v=t(f,h),d=a?v?0:u(f,h):v?u(f+(0>f?ja:-ja),h):0;if(!e&&(c=l=v)&&n.lineStart(),v!==l&&(g=r(e,p),(wt(e,g)||wt(p,g))&&(p[0]+=Da,p[1]+=Da,v=t(p[0],p[1]))),v!==l)s=0,v?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(o&&e&&a^v){var m;d&i||!(m=r(p,e,!0))||(s=0,a?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!v||e&&wt(e,p)||n.point(p[0],p[1]),e=p,l=v,i=d},lineEnd:function(){l&&n.lineEnd(),e=null},clean:function(){return s|(c&&l)<<1}}}function r(n,t,e){var r=dt(n),u=dt(t),a=[1,0,0],o=yt(r,u),l=mt(o,o),c=o[0],s=l-c*c;if(!s)return!e&&n;var f=i*l/s,h=-i*c/s,g=yt(a,o),p=xt(a,f),v=xt(o,h);Mt(p,v);var d=g,m=mt(p,d),y=mt(d,d),M=m*m-y*(mt(p,p)-1);if(!(0>M)){var x=Math.sqrt(M),b=xt(d,(-m-x)/y);if(Mt(b,p),b=_t(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],N=t[1];w>S&&(_=w,w=S,S=_);var E=S-w,A=Ma(E-ja)E;if(!A&&k>N&&(_=k,k=N,N=_),C?A?k+N>0^b[1]<(Ma(b[0]-w)ja^(w<=b[0]&&b[0]<=S)){var z=xt(d,(-m+x)/y);return Mt(z,p),[b,_t(z)]}}}function u(t,e){var r=a?n:ja-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),a=i>0,o=Ma(i)>Da,l=ve(n,6*Oa);return Rt(t,e,l,a?[0,-n]:[-ja,n-ja])}function Yt(n,t,e,r){return function(u){var i,a=u.a,o=u.b,l=a.x,c=a.y,s=o.x,f=o.y,h=0,g=1,p=s-l,v=f-c;if(i=n-l,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-l,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-c,v||!(i>0)){if(i/=v,0>v){if(h>i)return;g>i&&(g=i)}else if(v>0){if(i>g)return;i>h&&(h=i)}if(i=r-c,v||!(0>i)){if(i/=v,0>v){if(i>g)return;i>h&&(h=i)}else if(v>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:l+h*p,y:c+h*v}),1>g&&(u.b={x:l+g*p,y:c+g*v}),u}}}}}}function Zt(n,t,e,r){function u(r,u){return Ma(r[0]-n)0?0:3:Ma(r[0]-e)0?2:1:Ma(r[1]-t)0?1:0:u>0?3:2}function i(n,t){return a(n.x,t.x)}function a(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(o){function l(n){for(var t=0,e=d.length,r=n[1],u=0;e>u;++u)for(var i,a=1,o=d[u],l=o.length,c=o[0];l>a;++a)i=o[a],c[1]<=r?i[1]>r&&Q(c,i,n)>0&&++t:i[1]<=r&&Q(c,i,n)<0&&--t,c=i;return 0!==t}function c(i,o,l,c){var s=0,f=0;if(null==i||(s=u(i,l))!==(f=u(o,l))||a(i,o)<0^l>0){do c.point(0===s||3===s?n:e,s>1?r:t);while((s=(s+l+4)%4)!==f)}else c.point(o[0],o[1])}function s(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){s(n,t)&&o.point(n,t)}function h(){C.point=p,d&&d.push(m=[]),S=!0,w=!1,b=_=NaN}function g(){v&&(p(y,M),x&&w&&E.rejoin(),v.push(E.buffer())),C.point=f,w&&o.lineEnd()}function p(n,t){n=Math.max(-Fo,Math.min(Fo,n)),t=Math.max(-Fo,Math.min(Fo,t));var e=s(n,t);if(d&&m.push([n,t]),S)y=n,M=t,x=e,S=!1,e&&(o.lineStart(),o.point(n,t));else if(e&&w)o.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};A(r)?(w||(o.lineStart(),o.point(r.a.x,r.a.y)),o.point(r.b.x,r.b.y),e||o.lineEnd(),k=!1):e&&(o.lineStart(),o.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,m,y,M,x,b,_,w,S,k,N=o,E=Pt(),A=Yt(n,t,e,r),C={point:f,lineStart:h,lineEnd:g,polygonStart:function(){o=E,v=[],d=[],k=!0},polygonEnd:function(){o=N,v=oa.merge(v);var t=l([n,r]),e=k&&t,u=v.length;(e||u)&&(o.polygonStart(),e&&(o.lineStart(),c(null,null,1,o),o.lineEnd()),u&&Lt(v,i,t,c,o),o.polygonEnd()),v=d=m=null}};return C}}function Vt(n){var t=0,e=ja/3,r=oe(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*ja/180,e=n[1]*ja/180):[t/ja*180,e/ja*180]},u}function Xt(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),a-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),a=Math.sqrt(i)/u;return e.invert=function(n,t){var e=a-t;return[Math.atan2(n,e)/u,tn((i-(n*n+e*e)*u*u)/(2*u))]},e}function $t(){function n(n,t){Oo+=u*n-r*t,r=n,u=t}var t,e,r,u;Xo.point=function(i,a){Xo.point=n,t=r=i,e=u=a},Xo.lineEnd=function(){n(t,e)}}function Bt(n,t){Io>n&&(Io=n),n>Zo&&(Zo=n),Yo>t&&(Yo=t),t>Vo&&(Vo=t)}function Wt(){function n(n,t){a.push("M",n,",",t,i)}function t(n,t){a.push("M",n,",",t),o.point=e}function e(n,t){a.push("L",n,",",t)}function r(){o.point=n}function u(){a.push("Z")}var i=Jt(4.5),a=[],o={point:n,lineStart:function(){o.point=t},lineEnd:r,polygonStart:function(){o.lineEnd=u},polygonEnd:function(){o.lineEnd=r,o.point=n},pointRadius:function(n){return i=Jt(n),o},result:function(){if(a.length){var n=a.join("");return a=[],n}}};return o}function Jt(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Gt(n,t){Ao+=n,Co+=t,++zo}function Kt(){function n(n,r){var u=n-t,i=r-e,a=Math.sqrt(u*u+i*i);Lo+=a*(t+n)/2,qo+=a*(e+r)/2,To+=a,Gt(t=n,e=r)}var t,e;Bo.point=function(r,u){Bo.point=n,Gt(t=r,e=u)}}function Qt(){Bo.point=Gt}function ne(){function n(n,t){var e=n-r,i=t-u,a=Math.sqrt(e*e+i*i);Lo+=a*(r+n)/2,qo+=a*(u+t)/2,To+=a,a=u*n-r*t,Ro+=a*(r+n),Do+=a*(u+t),Po+=3*a,Gt(r=n,u=t)}var t,e,r,u;Bo.point=function(i,a){Bo.point=n,Gt(t=r=i,e=u=a)},Bo.lineEnd=function(){n(t,e)}}function te(n){function t(t,e){n.moveTo(t+a,e),n.arc(t,e,a,0,Ua)}function e(t,e){n.moveTo(t,e),o.point=r}function r(t,e){n.lineTo(t,e)}function u(){o.point=t}function i(){n.closePath()}var a=4.5,o={point:t,lineStart:function(){o.point=e},lineEnd:u,polygonStart:function(){o.lineEnd=i},polygonEnd:function(){o.lineEnd=u,o.point=t},pointRadius:function(n){return a=n,o},result:b};return o}function ee(n){function t(n){return(o?r:e)(n)}function e(t){return ie(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=NaN,S.point=i,t.lineStart()}function i(e,r){var i=dt([e,r]),a=n(e,r);u(M,x,y,b,_,w,M=a[0],x=a[1],y=e,b=i[0],_=i[1],w=i[2],o,t),t.point(M,x)}function a(){S.point=e,t.lineEnd()}function l(){r(),S.point=c,S.lineEnd=s}function c(n,t){ -i(f=n,h=t),g=M,p=x,v=b,d=_,m=w,S.point=i}function s(){u(M,x,y,b,_,w,g,p,f,v,d,m,o,t),S.lineEnd=a,a()}var f,h,g,p,v,d,m,y,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:a,polygonStart:function(){t.polygonStart(),S.lineStart=l},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,o,l,c,s,f,h,g,p,v,d,m){var y=s-t,M=f-e,x=y*y+M*M;if(x>4*i&&d--){var b=o+g,_=l+p,w=c+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),N=Ma(Ma(w)-1)i||Ma((y*z+M*L)/x-.5)>.3||a>o*g+l*p+c*v)&&(u(t,e,r,o,l,c,A,C,N,b/=S,_/=S,w,d,m),m.point(A,C),u(A,C,N,b,_,w,s,f,h,g,p,v,d,m))}}var i=.5,a=Math.cos(30*Oa),o=16;return t.precision=function(n){return arguments.length?(o=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function re(n){var t=ee(function(t,e){return n([t*Ia,e*Ia])});return function(n){return le(t(n))}}function ue(n){this.stream=n}function ie(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function ae(n){return oe(function(){return n})()}function oe(n){function t(n){return n=o(n[0]*Oa,n[1]*Oa),[n[0]*h+l,c-n[1]*h]}function e(n){return n=o.invert((n[0]-l)/h,(c-n[1])/h),n&&[n[0]*Ia,n[1]*Ia]}function r(){o=Ct(a=fe(m,M,x),i);var n=i(v,d);return l=g-n[0]*h,c=p+n[1]*h,u()}function u(){return s&&(s.valid=!1,s=null),t}var i,a,o,l,c,s,f=ee(function(n,t){return n=i(n,t),[n[0]*h+l,c-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,M=0,x=0,b=Uo,_=y,w=null,S=null;return t.stream=function(n){return s&&(s.valid=!1),s=le(b(a,f(_(n)))),s.valid=!0,s},t.clipAngle=function(n){return arguments.length?(b=null==n?(w=n,Uo):It((w=+n)*Oa),u()):w},t.clipExtent=function(n){return arguments.length?(S=n,_=n?Zt(n[0][0],n[0][1],n[1][0],n[1][1]):y,u()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*Oa,d=n[1]%360*Oa,r()):[v*Ia,d*Ia]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Oa,M=n[1]%360*Oa,x=n.length>2?n[2]%360*Oa:0,r()):[m*Ia,M*Ia,x*Ia]},oa.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function le(n){return ie(n,function(t,e){n.point(t*Oa,e*Oa)})}function ce(n,t){return[n,t]}function se(n,t){return[n>ja?n-Ua:-ja>n?n+Ua:n,t]}function fe(n,t,e){return n?t||e?Ct(ge(n),pe(t,e)):ge(n):t||e?pe(t,e):se}function he(n){return function(t,e){return t+=n,[t>ja?t-Ua:-ja>t?t+Ua:t,e]}}function ge(n){var t=he(n);return t.invert=he(-n),t}function pe(n,t){function e(n,t){var e=Math.cos(t),o=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),s=c*r+o*u;return[Math.atan2(l*i-s*a,o*r-c*u),tn(s*i+l*a)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),a=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),o=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),s=c*i-l*a;return[Math.atan2(l*i+c*a,o*r+s*u),tn(s*r-o*u)]},e}function ve(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,a,o){var l=a*t;null!=u?(u=de(e,u),i=de(e,i),(a>0?i>u:u>i)&&(u+=a*Ua)):(u=n+a*Ua,i=n-.5*l);for(var c,s=u;a>0?s>i:i>s;s-=l)o.point((c=_t([e,-r*Math.cos(s),-r*Math.sin(s)]))[0],c[1])}}function de(n,t){var e=dt(t);e[0]-=n,bt(e);var r=nn(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Da)%(2*Math.PI)}function me(n,t,e){var r=oa.range(n,t-Da,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function ye(n,t,e){var r=oa.range(n,t-Da,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function Me(n){return n.source}function xe(n){return n.target}function be(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),a=Math.cos(r),o=Math.sin(r),l=u*Math.cos(n),c=u*Math.sin(n),s=a*Math.cos(e),f=a*Math.sin(e),h=2*Math.asin(Math.sqrt(an(r-t)+u*a*an(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*l+t*s,u=e*c+t*f,a=e*i+t*o;return[Math.atan2(u,r)*Ia,Math.atan2(a,Math.sqrt(r*r+u*u))*Ia]}:function(){return[n*Ia,t*Ia]};return p.distance=h,p}function _e(){function n(n,u){var i=Math.sin(u*=Oa),a=Math.cos(u),o=Ma((n*=Oa)-t),l=Math.cos(o);Wo+=Math.atan2(Math.sqrt((o=a*Math.sin(o))*o+(o=r*i-e*a*l)*o),e*i+r*a*l),t=n,e=i,r=a}var t,e,r;Jo.point=function(u,i){t=u*Oa,e=Math.sin(i*=Oa),r=Math.cos(i),Jo.point=n},Jo.lineEnd=function(){Jo.point=Jo.lineEnd=b}}function we(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),a=Math.cos(u);return[Math.atan2(n*i,r*a),Math.asin(r&&e*i/r)]},e}function Se(n,t){function e(n,t){a>0?-Ha+Da>t&&(t=-Ha+Da):t>Ha-Da&&(t=Ha-Da);var e=a/Math.pow(u(t),i);return[e*Math.sin(i*n),a-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(ja/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),a=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=a-t,r=K(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(a/r,1/i))-Ha]},e):Ne}function ke(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return Ma(u)u;u++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function qe(n,t){return n[0]-t[0]||n[1]-t[1]}function Te(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Re(n,t,e,r){var u=n[0],i=e[0],a=t[0]-u,o=r[0]-i,l=n[1],c=e[1],s=t[1]-l,f=r[1]-c,h=(o*(l-c)-f*(u-i))/(f*a-o*s);return[u+h*a,l+h*s]}function De(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Pe(){rr(this),this.edge=this.site=this.circle=null}function je(n){var t=ll.pop()||new Pe;return t.site=n,t}function Ue(n){Be(n),il.remove(n),ll.push(n),rr(n)}function Fe(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,a=n.N,o=[n];Ue(n);for(var l=i;l.circle&&Ma(e-l.circle.x)s;++s)c=o[s],l=o[s-1],nr(c.edge,l.site,c.site,u);l=o[0],c=o[f-1],c.edge=Ke(l.site,c.site,null,u),$e(l),$e(c)}function He(n){for(var t,e,r,u,i=n.x,a=n.y,o=il._;o;)if(r=Oe(o,a)-i,r>Da)o=o.L;else{if(u=i-Ie(o,a),!(u>Da)){r>-Da?(t=o.P,e=o):u>-Da?(t=o,e=o.N):t=e=o;break}if(!o.R){t=o;break}o=o.R}var l=je(n);if(il.insert(t,l),t||e){if(t===e)return Be(t),e=je(t.site),il.insert(l,e),l.edge=e.edge=Ke(t.site,l.site),$e(t),void $e(e);if(!e)return void(l.edge=Ke(t.site,l.site));Be(t),Be(e);var c=t.site,s=c.x,f=c.y,h=n.x-s,g=n.y-f,p=e.site,v=p.x-s,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,M=v*v+d*d,x={x:(d*y-g*M)/m+s,y:(h*M-v*y)/m+f};nr(e.edge,c,p,x),l.edge=Ke(c,n,null,x),e.edge=Ke(n,p,null,x),$e(t),$e(e)}}function Oe(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var a=n.P;if(!a)return-(1/0);e=a.site;var o=e.x,l=e.y,c=l-t;if(!c)return o;var s=o-r,f=1/i-1/c,h=s/c;return f?(-h+Math.sqrt(h*h-2*f*(s*s/(-2*c)-l+c/2+u-i/2)))/f+r:(r+o)/2}function Ie(n,t){var e=n.N;if(e)return Oe(e,t);var r=n.site;return r.y===t?r.x:1/0}function Ye(n){this.site=n,this.edges=[]}function Ze(n){for(var t,e,r,u,i,a,o,l,c,s,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=ul,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(o=i.edges,l=o.length,a=0;l>a;)s=o[a].end(),r=s.x,u=s.y,c=o[++a%l].start(),t=c.x,e=c.y,(Ma(r-t)>Da||Ma(u-e)>Da)&&(o.splice(a,0,new tr(Qe(i.site,s,Ma(r-f)Da?{x:f,y:Ma(t-f)Da?{x:Ma(e-p)Da?{x:h,y:Ma(t-h)Da?{x:Ma(e-g)=-Pa)){var g=l*l+c*c,p=s*s+f*f,v=(f*g-c*p)/h,d=(l*p-s*g)/h,f=d+o,m=cl.pop()||new Xe;m.arc=n,m.site=u,m.x=v+a,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,M=ol._;M;)if(m.yd||d>=o)return;if(h>p){if(i){if(i.y>=c)return}else i={x:d,y:l};e={x:d,y:c}}else{if(i){if(i.yr||r>1)if(h>p){if(i){if(i.y>=c)return}else i={x:(l-u)/r,y:l};e={x:(c-u)/r,y:c}}else{if(i){if(i.yg){if(i){if(i.x>=o)return}else i={x:a,y:r*a+u};e={x:o,y:r*o+u}}else{if(i){if(i.xi||f>a||r>h||u>g)){if(p=n.point){var p,v=t-n.x,d=e-n.y,m=v*v+d*d;if(l>m){var y=Math.sqrt(l=m);r=t-y,u=e-y,i=t+y,a=e+y,o=p}}for(var M=n.nodes,x=.5*(s+h),b=.5*(f+g),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:c(n,s,f,x,b);break;case 1:c(n,x,f,h,b);break;case 2:c(n,s,b,x,g);break;case 3:c(n,x,b,h,g)}}}(n,r,u,i,a),o}function vr(n,t){n=oa.rgb(n),t=oa.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,a=t.g-r,o=t.b-u;return function(n){return"#"+bn(Math.round(e+i*n))+bn(Math.round(r+a*n))+bn(Math.round(u+o*n))}}function dr(n,t){var e,r={},u={};for(e in n)e in t?r[e]=Mr(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function mr(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function yr(n,t){var e,r,u,i=fl.lastIndex=hl.lastIndex=0,a=-1,o=[],l=[];for(n+="",t+="";(e=fl.exec(n))&&(r=hl.exec(t));)(u=r.index)>i&&(u=t.slice(i,u),o[a]?o[a]+=u:o[++a]=u),(e=e[0])===(r=r[0])?o[a]?o[a]+=r:o[++a]=r:(o[++a]=null,l.push({i:a,x:mr(e,r)})),i=hl.lastIndex;return ir;++r)o[(e=l[r]).i]=e.x(n);return o.join("")})}function Mr(n,t){for(var e,r=oa.interpolators.length;--r>=0&&!(e=oa.interpolators[r](n,t)););return e}function xr(n,t){var e,r=[],u=[],i=n.length,a=t.length,o=Math.min(n.length,t.length);for(e=0;o>e;++e)r.push(Mr(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;a>e;++e)u[e]=t[e];return function(n){for(e=0;o>e;++e)u[e]=r[e](n);return u}}function br(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function _r(n){return function(t){return 1-n(1-t)}}function wr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function Sr(n){return n*n}function kr(n){return n*n*n}function Nr(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Er(n){return function(t){return Math.pow(t,n)}}function Ar(n){return 1-Math.cos(n*Ha)}function Cr(n){return Math.pow(2,10*(n-1))}function zr(n){return 1-Math.sqrt(1-n*n)}function Lr(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Ua*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Ua/t)}}function qr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Tr(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Rr(n,t){n=oa.hcl(n),t=oa.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,a=t.c-r,o=t.l-u;return isNaN(a)&&(a=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return fn(e+i*n,r+a*n,u+o*n)+""}}function Dr(n,t){n=oa.hsl(n),t=oa.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,a=t.s-r,o=t.l-u;return isNaN(a)&&(a=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return cn(e+i*n,r+a*n,u+o*n)+""}}function Pr(n,t){n=oa.lab(n),t=oa.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,a=t.a-r,o=t.b-u;return function(n){return gn(e+i*n,r+a*n,u+o*n)+""}}function jr(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Ur(n){var t=[n.a,n.b],e=[n.c,n.d],r=Hr(t),u=Fr(t,e),i=Hr(Or(e,t,-u))||0;t[0]*e[1]180?t+=360:t-n>180&&(n+=360),r.push({i:e.push(Ir(e)+"rotate(",null,")")-2,x:mr(n,t)})):t&&e.push(Ir(e)+"rotate("+t+")")}function Vr(n,t,e,r){n!==t?r.push({i:e.push(Ir(e)+"skewX(",null,")")-2,x:mr(n,t)}):t&&e.push(Ir(e)+"skewX("+t+")")}function Xr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var u=e.push(Ir(e)+"scale(",null,",",null,")");r.push({i:u-4,x:mr(n[0],t[0])},{i:u-2,x:mr(n[1],t[1])})}else(1!==t[0]||1!==t[1])&&e.push(Ir(e)+"scale("+t+")")}function $r(n,t){var e=[],r=[];return n=oa.transform(n),t=oa.transform(t),Yr(n.translate,t.translate,e,r),Zr(n.rotate,t.rotate,e,r),Vr(n.skew,t.skew,e,r),Xr(n.scale,t.scale,e,r),n=t=null,function(n){for(var t,u=-1,i=r.length;++u=0;)e.push(u[r])}function au(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(i=n.children)&&(u=i.length))for(var u,i,a=-1;++ae;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function mu(n){return n.reduce(yu,0)}function yu(n,t){return n+t[1]}function Mu(n,t){return xu(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function xu(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function bu(n){return[oa.min(n),oa.max(n)]}function _u(n,t){return n.value-t.value}function wu(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function Su(n,t){n._pack_next=t,t._pack_prev=n}function ku(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function Nu(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(c=e.length)){var e,r,u,i,a,o,l,c,s=1/0,f=-(1/0),h=1/0,g=-(1/0);if(e.forEach(Eu),r=e[0],r.x=-r.r,r.y=0,t(r),c>1&&(u=e[1],u.x=u.r,u.y=0,t(u),c>2))for(i=e[2],zu(r,u,i),t(i),wu(r,i),r._pack_prev=i,wu(i,u),u=r._pack_next,a=3;c>a;a++){zu(r,u,i=e[a]);var p=0,v=1,d=1;for(o=u._pack_next;o!==u;o=o._pack_next,v++)if(ku(o,i)){p=1;break}if(1==p)for(l=r._pack_prev;l!==o._pack_prev&&!ku(l,i);l=l._pack_prev,d++);p?(d>v||v==d&&u.ra;a++)i=e[a],i.x-=m,i.y-=y,M=Math.max(M,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=M,e.forEach(Au)}}function Eu(n){n._pack_next=n._pack_prev=n}function Au(n){delete n._pack_next,delete n._pack_prev}function Cu(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,a=u.length;++i=0;)t=u[i],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function Pu(n,t,e){return n.a.parent===t.parent?n.a:e}function ju(n){return 1+oa.max(n,function(n){return n.y})}function Uu(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Fu(n){var t=n.children;return t&&t.length?Fu(t[0]):n}function Hu(n){var t,e=n.children;return e&&(t=e.length)?Hu(e[t-1]):n}function Ou(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Iu(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function Yu(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Zu(n){return n.rangeExtent?n.rangeExtent():Yu(n.range())}function Vu(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Xu(n,t){var e,r=0,u=n.length-1,i=n[r],a=n[u];return i>a&&(e=r,r=u,u=e,e=i,i=a,a=e),n[r]=t.floor(i),n[u]=t.ceil(a),n}function $u(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:wl}function Bu(n,t,e,r){var u=[],i=[],a=0,o=Math.min(n.length,t.length)-1;for(n[o]2?Bu:Vu,l=r?Wr:Br;return a=u(n,t,l,e),o=u(t,n,l,Mr),i}function i(n){return a(n)}var a,o;return i.invert=function(n){return o(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(jr)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return Qu(n,t)},i.tickFormat=function(t,e){return ni(n,t,e)},i.nice=function(t){return Gu(n,t),u()},i.copy=function(){return Wu(n,t,e,r)},u()}function Ju(n,t){return oa.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Gu(n,t){return Xu(n,$u(Ku(n,t)[2])),Xu(n,$u(Ku(n,t)[2])),n}function Ku(n,t){null==t&&(t=10);var e=Yu(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function Qu(n,t){return oa.range.apply(oa,Ku(n,t))}function ni(n,t,e){var r=Ku(n,t);if(e){var u=so.exec(e);if(u.shift(),"s"===u[8]){var i=oa.formatPrefix(Math.max(Ma(r[0]),Ma(r[1])));return u[7]||(u[7]="."+ti(i.scale(r[2]))),u[8]="f",e=oa.format(u.join("")),function(n){return e(i.scale(n))+i.symbol}}u[7]||(u[7]="."+ei(u[8],r)),e=u.join("")}else e=",."+ti(r[2])+"f";return oa.format(e)}function ti(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function ei(n,t){var e=ti(t[2]);return n in Sl?Math.abs(e-ti(Math.max(Ma(t[0]),Ma(t[1]))))+ +("e"!==n):e-2*("%"===n)}function ri(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function a(t){return n(u(t))}return a.invert=function(t){return i(n.invert(t))},a.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),a):r},a.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),a):t},a.nice=function(){var t=Xu(r.map(u),e?Math:Nl);return n.domain(t),r=t.map(i),a},a.ticks=function(){var n=Yu(r),a=[],o=n[0],l=n[1],c=Math.floor(u(o)),s=Math.ceil(u(l)),f=t%1?2:t;if(isFinite(s-c)){if(e){for(;s>c;c++)for(var h=1;f>h;h++)a.push(i(c)*h);a.push(i(c))}else for(a.push(i(c));c++0;h--)a.push(i(c)*h);for(c=0;a[c]l;s--);a=a.slice(c,s)}return a},a.tickFormat=function(n,e){if(!arguments.length)return kl;arguments.length<2?e=kl:"function"!=typeof e&&(e=oa.format(e));var r=Math.max(1,t*n/a.ticks().length);return function(n){var a=n/i(Math.round(u(n)));return t-.5>a*t&&(a*=t),r>=a?e(n):""}},a.copy=function(){return ri(n.copy(),t,e,r)},Ju(a,n)}function ui(n,t,e){function r(t){return n(u(t))}var u=ii(t),i=ii(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return Qu(e,n)},r.tickFormat=function(n,t){return ni(e,n,t)},r.nice=function(n){return r.domain(Gu(e,n))},r.exponent=function(a){return arguments.length?(u=ii(t=a),i=ii(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return ui(n.copy(),t,e)},Ju(r,n)}function ii(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function ai(n,t){function e(e){return i[((u.get(e)||("range"===t.t?u.set(e,n.push(e)):NaN))-1)%i.length]}function r(t,e){return oa.range(n.length).map(function(n){return t+e*n})}var u,i,a;return e.domain=function(r){if(!arguments.length)return n;n=[],u=new c;for(var i,a=-1,o=r.length;++ae?[NaN,NaN]:[e>0?o[e-1]:n[0],et?NaN:t/i+n,[t,t+1/i]},r.copy=function(){return li(n,t,e)},u()}function ci(n,t){function e(e){return e>=e?t[oa.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return ci(n,t)},e}function si(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Qu(n,t)},t.tickFormat=function(t,e){return ni(n,t,e)},t.copy=function(){return si(n)},t}function fi(){return 0}function hi(n){return n.innerRadius}function gi(n){return n.outerRadius}function pi(n){return n.startAngle}function vi(n){return n.endAngle}function di(n){return n&&n.padAngle}function mi(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function yi(n,t,e,r,u){var i=n[0]-t[0],a=n[1]-t[1],o=(u?r:-r)/Math.sqrt(i*i+a*a),l=o*a,c=-o*i,s=n[0]+l,f=n[1]+c,h=t[0]+l,g=t[1]+c,p=(s+h)/2,v=(f+g)/2,d=h-s,m=g-f,y=d*d+m*m,M=e-r,x=s*g-h*f,b=(0>m?-1:1)*Math.sqrt(Math.max(0,M*M*y-x*x)),_=(x*m-d*b)/y,w=(-x*d-m*b)/y,S=(x*m+d*b)/y,k=(-x*d+m*b)/y,N=_-p,E=w-v,A=S-p,C=k-v;return N*N+E*E>A*A+C*C&&(_=S,w=k),[[_-l,w-c],[_*e/M,w*e/M]]}function Mi(n){function t(t){function a(){c.push("M",i(n(s),o))}for(var l,c=[],s=[],f=-1,h=t.length,g=En(e),p=En(r);++f1?n.join("L"):n+"Z"}function bi(n){return n.join("L")+"Z"}function _i(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t1&&u.push("H",r[0]),u.join("")}function wi(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t1){o=t[1],i=n[l],l++,r+="C"+(u[0]+a[0])+","+(u[1]+a[1])+","+(i[0]-o[0])+","+(i[1]-o[1])+","+i[0]+","+i[1];for(var c=2;c9&&(u=3*t/Math.sqrt(u),a[o]=u*e,a[o+1]=u*r));for(o=-1;++o<=l;)u=(n[Math.min(l,o+1)][0]-n[Math.max(0,o-1)][0])/(6*(1+a[o]*a[o])),i.push([u||0,a[o]*u||0]);return i}function Fi(n){return n.length<3?xi(n):n[0]+Ai(n,Ui(n))}function Hi(n){for(var t,e,r,u=-1,i=n.length;++u=t?a(n-t):void(s.c=a)}function a(e){var u=p.active,i=p[u];i&&(i.timer.c=null,i.timer.t=NaN,--p.count,delete p[u],i.event&&i.event.interrupt.call(n,n.__data__,i.index));for(var a in p)if(r>+a){var c=p[a];c.timer.c=null,c.timer.t=NaN,--p.count,delete p[a]}s.c=o,qn(function(){return s.c&&o(e||1)&&(s.c=null,s.t=NaN),1},0,l),p.active=r,v.event&&v.event.start.call(n,n.__data__,t),g=[],v.tween.forEach(function(e,r){(r=r.call(n,n.__data__,t))&&g.push(r)}),h=v.ease,f=v.duration}function o(u){for(var i=u/f,a=h(i),o=g.length;o>0;)g[--o].call(n,a);return i>=1?(v.event&&v.event.end.call(n,n.__data__,t),--p.count?delete p[r]:delete n[e],1):void 0}var l,s,f,h,g,p=n[e]||(n[e]={active:0,count:0}),v=p[r];v||(l=u.time,s=qn(i,0,l),v=p[r]={tween:new c,time:l,timer:s,delay:u.delay,duration:u.duration,ease:u.ease,index:t},u=null,++p.count)}function na(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function ta(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function ea(n){return n.toISOString()}function ra(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=oa.bisect(Gl,u);return i==Gl.length?[t.year,Ku(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/Gl[i-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=ua(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=ua(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Yu(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],ua(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return ra(n.copy(),t,e)},Ju(r,n)}function ua(n){return new Date(n)}function ia(n){return JSON.parse(n.responseText)}function aa(n){var t=sa.createRange();return t.selectNode(sa.body),t.createContextualFragment(n.responseText)}var oa={version:"3.5.12"},la=[].slice,ca=function(n){return la.call(n)},sa=this.document;if(sa)try{ca(sa.documentElement.childNodes)[0].nodeType}catch(fa){ca=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),sa)try{sa.createElement("DIV").style.setProperty("opacity",0,"")}catch(ha){var ga=this.Element.prototype,pa=ga.setAttribute,va=ga.setAttributeNS,da=this.CSSStyleDeclaration.prototype,ma=da.setProperty;ga.setAttribute=function(n,t){pa.call(this,n,t+"")},ga.setAttributeNS=function(n,t,e){va.call(this,n,t,e+"")},da.setProperty=function(n,t,e){ma.call(this,n,t+"",e)}}oa.ascending=e,oa.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:NaN},oa.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=r){e=r;break}for(;++ur&&(e=r)}else{for(;++u=r){e=r;break}for(;++ur&&(e=r)}return e},oa.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=r){e=r;break}for(;++ue&&(e=r)}else{for(;++u=r){e=r;break}for(;++ue&&(e=r)}return e},oa.extent=function(n,t){var e,r,u,i=-1,a=n.length;if(1===arguments.length){for(;++i=r){e=u=r;break}for(;++ir&&(e=r),r>u&&(u=r))}else{for(;++i=r){e=u=r;break}for(;++ir&&(e=r),r>u&&(u=r))}return[e,u]},oa.sum=function(n,t){var e,r=0,i=n.length,a=-1;if(1===arguments.length)for(;++a1?l/(s-1):void 0},oa.deviation=function(){var n=oa.variance.apply(this,arguments);return n?Math.sqrt(n):n};var ya=i(e);oa.bisectLeft=ya.left,oa.bisect=oa.bisectRight=ya.right,oa.bisector=function(n){return i(1===n.length?function(t,r){return e(n(t),r)}:n)},oa.shuffle=function(n,t,e){(i=arguments.length)<3&&(e=n.length,2>i&&(t=0));for(var r,u,i=e-t;i;)u=Math.random()*i--|0,r=n[i+t],n[i+t]=n[u+t],n[u+t]=r;return n},oa.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},oa.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},oa.zip=function(){if(!(r=arguments.length))return[];for(var n=-1,t=oa.min(arguments,a),e=new Array(t);++n=0;)for(r=n[u],t=r.length;--t>=0;)e[--a]=r[t];return e};var Ma=Math.abs;oa.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e===1/0)throw new Error("infinite range");var r,u=[],i=o(Ma(e)),a=-1;if(n*=i,t*=i,e*=i,0>e)for(;(r=n+e*++a)>t;)u.push(r/i);else for(;(r=n+e*++a)=i.length)return r?r.call(u,a):e?a.sort(e):a;for(var l,s,f,h,g=-1,p=a.length,v=i[o++],d=new c;++g=i.length)return n;var r=[],u=a[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,u={},i=[],a=[];return u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return t(n(oa.map,e,0),0)},u.key=function(n){return i.push(n),u},u.sortKeys=function(n){return a[i.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return r=n,u},u},oa.set=function(n){var t=new m;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},l(m,{has:h,add:function(n){return this._[s(n+="")]=!0,n},remove:g,values:p,size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,f(t))}}),oa.behavior={},oa.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},oa.event=null,oa.requote=function(n){return n.replace(wa,"\\$&")};var wa=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,Sa={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},ka=function(n,t){return t.querySelector(n)},Na=function(n,t){return t.querySelectorAll(n)},Ea=function(n,t){var e=n.matches||n[x(n,"matchesSelector")];return(Ea=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(ka=function(n,t){return Sizzle(n,t)[0]||null},Na=Sizzle,Ea=Sizzle.matchesSelector),oa.selection=function(){return oa.select(sa.documentElement)};var Aa=oa.selection.prototype=[];Aa.select=function(n){var t,e,r,u,i=[];n=A(n);for(var a=-1,o=this.length;++a=0&&"xmlns"!==(e=n.slice(0,t))&&(n=n.slice(t+1)),Ca.hasOwnProperty(e)?{space:Ca[e],local:n}:n}},Aa.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=oa.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},Aa.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=T(n)).length,u=-1;if(t=e.classList){for(;++uu){if("string"!=typeof n){2>u&&(e="");for(r in n)this.each(P(r,n[r],e));return this}if(2>u){var i=this.node();return t(i).getComputedStyle(i,null).getPropertyValue(n)}r=""}return this.each(P(n,e,r))},Aa.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(j(t,n[t]));return this}return this.each(j(n,t))},Aa.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},Aa.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},Aa.append=function(n){return n=U(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},Aa.insert=function(n,t){return n=U(n),t=A(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},Aa.remove=function(){return this.each(F)},Aa.data=function(n,t){function e(n,e){var r,u,i,a=n.length,f=e.length,h=Math.min(a,f),g=new Array(f),p=new Array(f),v=new Array(a);if(t){var d,m=new c,y=new Array(a);for(r=-1;++rr;++r)p[r]=H(e[r]);for(;a>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,o.push(p),l.push(g),s.push(v)}var r,u,i=-1,a=this.length;if(!arguments.length){for(n=new Array(a=(r=this[0]).length);++ii;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var o=0,l=e.length;l>o;o++)(r=e[o])&&n.call(r,r.__data__,o,i)&&t.push(r)}return E(u)},Aa.order=function(){for(var n=-1,t=this.length;++n=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},Aa.sort=function(n){n=I.apply(this,arguments);for(var t=-1,e=this.length;++tn;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},Aa.size=function(){var n=0;return Y(this,function(){++n}),n};var za=[];oa.selection.enter=Z,oa.selection.enter.prototype=za,za.append=Aa.append,za.empty=Aa.empty,za.node=Aa.node,za.call=Aa.call,za.size=Aa.size,za.select=function(n){for(var t,e,r,u,i,a=[],o=-1,l=this.length;++or){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(X(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(X(n,t,e))};var La=oa.map({mouseenter:"mouseover",mouseleave:"mouseout"});sa&&La.forEach(function(n){"on"+n in sa&&La.remove(n)});var qa,Ta=0;oa.mouse=function(n){return J(n,k())};var Ra=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;oa.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=k().changedTouches),t)for(var r,u=0,i=t.length;i>u;++u)if((r=t[u]).identifier===e)return J(n,r)},oa.behavior.drag=function(){function n(){this.on("mousedown.drag",i).on("touchstart.drag",a)}function e(n,t,e,i,a){return function(){function o(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],p|=n|e,M=r,g({type:"drag",x:r[0]+c[0],y:r[1]+c[1],dx:n,dy:e}))}function l(){t(h,v)&&(m.on(i+d,null).on(a+d,null),y(p),g({type:"dragend"}))}var c,s=this,f=oa.event.target,h=s.parentNode,g=r.of(s,arguments),p=0,v=n(),d=".drag"+(null==v?"":"-"+v),m=oa.select(e(f)).on(i+d,o).on(a+d,l),y=W(f),M=t(h,v);u?(c=u.apply(s,arguments),c=[c.x-M[0],c.y-M[1]]):c=[0,0],g({type:"dragstart"})}}var r=N(n,"drag","dragstart","dragend"),u=null,i=e(b,oa.mouse,t,"mousemove","mouseup"),a=e(G,oa.touch,y,"touchmove","touchend");return n.origin=function(t){return arguments.length?(u=t,n):u},oa.rebind(n,r,"on")},oa.touches=function(n,t){return arguments.length<2&&(t=k().touches),t?ca(t).map(function(t){var e=J(n,t);return e.identifier=t.identifier,e}):[]};var Da=1e-6,Pa=Da*Da,ja=Math.PI,Ua=2*ja,Fa=Ua-Da,Ha=ja/2,Oa=ja/180,Ia=180/ja,Ya=Math.SQRT2,Za=2,Va=4;oa.interpolateZoom=function(n,t){var e,r,u=n[0],i=n[1],a=n[2],o=t[0],l=t[1],c=t[2],s=o-u,f=l-i,h=s*s+f*f;if(Pa>h)r=Math.log(c/a)/Ya,e=function(n){return[u+n*s,i+n*f,a*Math.exp(Ya*n*r)]};else{var g=Math.sqrt(h),p=(c*c-a*a+Va*h)/(2*a*Za*g),v=(c*c-a*a-Va*h)/(2*c*Za*g),d=Math.log(Math.sqrt(p*p+1)-p),m=Math.log(Math.sqrt(v*v+1)-v);r=(m-d)/Ya,e=function(n){var t=n*r,e=rn(d),o=a/(Za*g)*(e*un(Ya*t+d)-en(d));return[u+o*s,i+o*f,a*e/rn(Ya*t+d)]}}return e.duration=1e3*r,e},oa.behavior.zoom=function(){function n(n){n.on(L,f).on($a+".zoom",g).on("dblclick.zoom",p).on(R,h)}function e(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function r(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function u(n){k.k=Math.max(A[0],Math.min(A[1],n))}function i(n,t){t=r(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function a(t,e,r,a){t.__chart__={x:k.x,y:k.y,k:k.k},u(Math.pow(2,a)),i(d=e,r),t=oa.select(t),C>0&&(t=t.transition().duration(C)),t.call(n.event)}function o(){b&&b.domain(x.range().map(function(n){return(n-k.x)/k.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function l(n){z++||n({type:"zoomstart"})}function c(n){o(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function s(n){--z||(n({type:"zoomend"}),d=null)}function f(){function n(){o=1,i(oa.mouse(u),h),c(a)}function r(){f.on(q,null).on(T,null),g(o),s(a)}var u=this,a=D.of(u,arguments),o=0,f=oa.select(t(u)).on(q,n).on(T,r),h=e(oa.mouse(u)),g=W(u);Ol.call(u),l(a)}function h(){function n(){var n=oa.touches(p);return g=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=e(n))}),n}function t(){var t=oa.event.target;oa.select(t).on(x,r).on(b,o),_.push(t);for(var e=oa.event.changedTouches,u=0,i=e.length;i>u;++u)d[e[u].identifier]=null;var l=n(),c=Date.now();if(1===l.length){if(500>c-M){var s=l[0];a(p,s,d[s.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),S()}M=c}else if(l.length>1){var s=l[0],f=l[1],h=s[0]-f[0],g=s[1]-f[1];m=h*h+g*g}}function r(){var n,t,e,r,a=oa.touches(p);Ol.call(p);for(var o=0,l=a.length;l>o;++o,r=null)if(e=a[o],r=d[e.identifier]){if(t)break;n=e,t=r}if(r){var s=(s=e[0]-n[0])*s+(s=e[1]-n[1])*s,f=m&&Math.sqrt(s/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+r[0])/2,(t[1]+r[1])/2],u(f*g)}M=null,i(n,t),c(v)}function o(){if(oa.event.touches.length){for(var t=oa.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var u in d)return void n()}oa.selectAll(_).on(y,null),w.on(L,f).on(R,h),N(),s(v)}var g,p=this,v=D.of(p,arguments),d={},m=0,y=".zoom-"+oa.event.changedTouches[0].identifier,x="touchmove"+y,b="touchend"+y,_=[],w=oa.select(p),N=W(p);t(),l(v),w.on(L,null).on(R,t)}function g(){var n=D.of(this,arguments);y?clearTimeout(y):(Ol.call(this),v=e(d=m||oa.mouse(this)),l(n)),y=setTimeout(function(){y=null,s(n)},50),S(),u(Math.pow(2,.002*Xa())*k.k),i(d,v),c(n)}function p(){var n=oa.mouse(this),t=Math.log(k.k)/Math.LN2;a(this,n,e(n),oa.event.shiftKey?Math.ceil(t)-1:Math.floor(t)+1)}var v,d,m,y,M,x,b,_,w,k={x:0,y:0,k:1},E=[960,500],A=Ba,C=250,z=0,L="mousedown.zoom",q="mousemove.zoom",T="mouseup.zoom",R="touchstart.zoom",D=N(n,"zoomstart","zoom","zoomend");return $a||($a="onwheel"in sa?(Xa=function(){return-oa.event.deltaY*(oa.event.deltaMode?120:1)},"wheel"):"onmousewheel"in sa?(Xa=function(){return oa.event.wheelDelta},"mousewheel"):(Xa=function(){return-oa.event.detail},"MozMousePixelScroll")),n.event=function(n){n.each(function(){var n=D.of(this,arguments),t=k;Fl?oa.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},l(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],u=d?d[0]:e/2,i=d?d[1]:r/2,a=oa.interpolateZoom([(u-k.x)/k.k,(i-k.y)/k.k,e/k.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=a(t),o=e/r[2];this.__chart__=k={x:u-r[0]*o,y:i-r[1]*o,k:o},c(n)}}).each("interrupt.zoom",function(){s(n)}).each("end.zoom",function(){s(n)}):(this.__chart__=k,l(n),c(n),s(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},o(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:null},u(+t),o(),n):k.k},n.scaleExtent=function(t){return arguments.length?(A=null==t?Ba:[+t[0],+t[1]],n):A},n.center=function(t){return arguments.length?(m=t&&[+t[0],+t[1]],n):m},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.duration=function(t){return arguments.length?(C=+t,n):C},n.x=function(t){return arguments.length?(b=t,x=t.copy(),k={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),k={x:0,y:0,k:1},n):w},oa.rebind(n,D,"on")};var Xa,$a,Ba=[0,1/0];oa.color=on,on.prototype.toString=function(){return this.rgb()+""},oa.hsl=ln;var Wa=ln.prototype=new on;Wa.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,this.l/n)},Wa.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,n*this.l)},Wa.rgb=function(){return cn(this.h,this.s,this.l)},oa.hcl=sn;var Ja=sn.prototype=new on;Ja.brighter=function(n){return new sn(this.h,this.c,Math.min(100,this.l+Ga*(arguments.length?n:1)))},Ja.darker=function(n){return new sn(this.h,this.c,Math.max(0,this.l-Ga*(arguments.length?n:1)))},Ja.rgb=function(){return fn(this.h,this.c,this.l).rgb()},oa.lab=hn;var Ga=18,Ka=.95047,Qa=1,no=1.08883,to=hn.prototype=new on;to.brighter=function(n){return new hn(Math.min(100,this.l+Ga*(arguments.length?n:1)),this.a,this.b)},to.darker=function(n){return new hn(Math.max(0,this.l-Ga*(arguments.length?n:1)),this.a,this.b)},to.rgb=function(){return gn(this.l,this.a,this.b)},oa.rgb=yn;var eo=yn.prototype=new on;eo.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),new yn(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new yn(u,u,u)},eo.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new yn(n*this.r,n*this.g,n*this.b)},eo.hsl=function(){return wn(this.r,this.g,this.b)},eo.toString=function(){return"#"+bn(this.r)+bn(this.g)+bn(this.b)};var ro=oa.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});ro.forEach(function(n,t){ro.set(n,Mn(t))}),oa.functor=En,oa.xhr=An(y),oa.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var a=Cn(n,t,null==e?r:u(e),i);return a.row=function(n){return arguments.length?a.response(null==(e=n)?r:u(n)):e},a}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(a).join(n)}function a(n){return o.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var o=new RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(s>=c)return a;if(u)return u=!1,i;var t=s;if(34===n.charCodeAt(t)){for(var e=t;e++s;){var r=n.charCodeAt(s++),o=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(s)&&(++s,++o);else if(r!==l)continue;return n.slice(t,s-o)}return n.slice(t)}for(var r,u,i={},a={},o=[],c=n.length,s=0,f=0;(r=e())!==a;){for(var h=[];r!==i&&r!==a;)h.push(r),r=e();t&&null==(h=t(h,f++))||o.push(h)}return o},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new m,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(a).join(n)].concat(t.map(function(t){return u.map(function(n){return a(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(i).join("\n")},e},oa.csv=oa.dsv(",","text/csv"),oa.tsv=oa.dsv(" ","text/tab-separated-values");var uo,io,ao,oo,lo=this[x(this,"requestAnimationFrame")]||function(n){setTimeout(n,17)};oa.timer=function(){qn.apply(this,arguments)},oa.timer.flush=function(){Rn(),Dn()},oa.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var co=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(jn);oa.formatPrefix=function(n,t){var e=0;return(n=+n)&&(0>n&&(n*=-1),t&&(n=oa.round(n,Pn(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),co[8+e/3]};var so=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,fo=oa.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=oa.round(n,Pn(n,t))).toFixed(Math.max(0,Math.min(20,Pn(n*(1+1e-15),t))))}}),ho=oa.time={},go=Date;Hn.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){po.setUTCDate.apply(this._,arguments)},setDay:function(){po.setUTCDay.apply(this._,arguments)},setFullYear:function(){po.setUTCFullYear.apply(this._,arguments)},setHours:function(){po.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){po.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){po.setUTCMinutes.apply(this._,arguments)},setMonth:function(){po.setUTCMonth.apply(this._,arguments)},setSeconds:function(){po.setUTCSeconds.apply(this._,arguments)},setTime:function(){po.setTime.apply(this._,arguments)}};var po=Date.prototype;ho.year=On(function(n){return n=ho.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),ho.years=ho.year.range,ho.years.utc=ho.year.utc.range,ho.day=On(function(n){var t=new go(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),ho.days=ho.day.range,ho.days.utc=ho.day.utc.range,ho.dayOfYear=function(n){var t=ho.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=ho[n]=On(function(n){return(n=ho.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=ho.year(n).getDay();return Math.floor((ho.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ho[n+"s"]=e.range,ho[n+"s"].utc=e.utc.range,ho[n+"OfYear"]=function(n){var e=ho.year(n).getDay();return Math.floor((ho.dayOfYear(n)+(e+t)%7)/7)}}),ho.week=ho.sunday,ho.weeks=ho.sunday.range,ho.weeks.utc=ho.sunday.utc.range,ho.weekOfYear=ho.sundayOfYear;var vo={"-":"",_:" ",0:"0"},mo=/^\s*\d+/,yo=/^%/;oa.locale=function(n){return{numberFormat:Un(n),timeFormat:Yn(n)}};var Mo=oa.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"], -shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});oa.format=Mo.numberFormat,oa.geo={},st.prototype={s:0,t:0,add:function(n){ft(n,this.t,xo),ft(xo.s,this.s,this),this.s?this.t+=xo.t:this.s=xo.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var xo=new st;oa.geo.stream=function(n,t){n&&bo.hasOwnProperty(n.type)?bo[n.type](n,t):ht(n,t)};var bo={Feature:function(n,t){ht(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++rn?4*ja+n:n,ko.lineStart=ko.lineEnd=ko.point=b}};oa.geo.bounds=function(){function n(n,t){M.push(x=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=dt([t*Oa,e*Oa]);if(m){var u=yt(m,r),i=[u[1],-u[0],0],a=yt(i,u);bt(a),a=_t(a);var l=t-p,c=l>0?1:-1,v=a[0]*Ia*c,d=Ma(l)>180;if(d^(v>c*p&&c*t>v)){var y=a[1]*Ia;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>c*p&&c*t>v)){var y=-a[1]*Ia;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?o(s,t)>o(s,h)&&(h=t):o(t,h)>o(s,h)&&(s=t):h>=s?(s>t&&(s=t),t>h&&(h=t)):t>p?o(s,t)>o(s,h)&&(h=t):o(t,h)>o(s,h)&&(s=t)}else n(t,e);m=r,p=t}function e(){b.point=t}function r(){x[0]=s,x[1]=h,b.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=Ma(r)>180?r+(r>0?360:-360):r}else v=n,d=e;ko.point(n,e),t(n,e)}function i(){ko.lineStart()}function a(){u(v,d),ko.lineEnd(),Ma(y)>Da&&(s=-(h=180)),x[0]=s,x[1]=h,m=null}function o(n,t){return(t-=n)<0?t+360:t}function l(n,t){return n[0]-t[0]}function c(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nSo?(s=-(h=180),f=-(g=90)):y>Da?g=90:-Da>y&&(f=-90),x[0]=s,x[1]=h}};return function(n){g=h=-(s=f=1/0),M=[],oa.geo.stream(n,b);var t=M.length;if(t){M.sort(l);for(var e,r=1,u=M[0],i=[u];t>r;++r)e=M[r],c(e[0],u)||c(e[1],u)?(o(u[0],e[1])>o(u[0],u[1])&&(u[1]=e[1]),o(e[0],u[1])>o(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var a,e,p=-(1/0),t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(a=o(u[1],e[0]))>p&&(p=a,s=e[0],h=u[1])}return M=x=null,s===1/0||f===1/0?[[NaN,NaN],[NaN,NaN]]:[[s,f],[h,g]]}}(),oa.geo.centroid=function(n){No=Eo=Ao=Co=zo=Lo=qo=To=Ro=Do=Po=0,oa.geo.stream(n,jo);var t=Ro,e=Do,r=Po,u=t*t+e*e+r*r;return Pa>u&&(t=Lo,e=qo,r=To,Da>Eo&&(t=Ao,e=Co,r=zo),u=t*t+e*e+r*r,Pa>u)?[NaN,NaN]:[Math.atan2(e,t)*Ia,tn(r/Math.sqrt(u))*Ia]};var No,Eo,Ao,Co,zo,Lo,qo,To,Ro,Do,Po,jo={sphere:b,point:St,lineStart:Nt,lineEnd:Et,polygonStart:function(){jo.lineStart=At},polygonEnd:function(){jo.lineStart=Nt}},Uo=Rt(zt,Ut,Ht,[-ja,-ja/2]),Fo=1e9;oa.geo.clipExtent=function(){var n,t,e,r,u,i,a={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(o){return arguments.length?(i=Zt(n=+o[0][0],t=+o[0][1],e=+o[1][0],r=+o[1][1]),u&&(u.valid=!1,u=null),a):[[n,t],[e,r]]}};return a.extent([[0,0],[960,500]])},(oa.geo.conicEqualArea=function(){return Vt(Xt)}).raw=Xt,oa.geo.albers=function(){return oa.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},oa.geo.albersUsa=function(){function n(n){var i=n[0],a=n[1];return t=null,e(i,a),t||(r(i,a),t)||u(i,a),t}var t,e,r,u,i=oa.geo.albers(),a=oa.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),o=oa.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?a:u>=.166&&.234>u&&r>=-.214&&-.115>r?o:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=a.stream(n),r=o.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),a.precision(t),o.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),a.scale(.35*t),o.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var c=i.scale(),s=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[s-.455*c,f-.238*c],[s+.455*c,f+.238*c]]).stream(l).point,r=a.translate([s-.307*c,f+.201*c]).clipExtent([[s-.425*c+Da,f+.12*c+Da],[s-.214*c-Da,f+.234*c-Da]]).stream(l).point,u=o.translate([s-.205*c,f+.212*c]).clipExtent([[s-.214*c+Da,f+.166*c+Da],[s-.115*c-Da,f+.234*c-Da]]).stream(l).point,n},n.scale(1070)};var Ho,Oo,Io,Yo,Zo,Vo,Xo={point:b,lineStart:b,lineEnd:b,polygonStart:function(){Oo=0,Xo.lineStart=$t},polygonEnd:function(){Xo.lineStart=Xo.lineEnd=Xo.point=b,Ho+=Ma(Oo/2)}},$o={point:Bt,lineStart:b,lineEnd:b,polygonStart:b,polygonEnd:b},Bo={point:Gt,lineStart:Kt,lineEnd:Qt,polygonStart:function(){Bo.lineStart=ne},polygonEnd:function(){Bo.point=Gt,Bo.lineStart=Kt,Bo.lineEnd=Qt}};oa.geo.path=function(){function n(n){return n&&("function"==typeof o&&i.pointRadius(+o.apply(this,arguments)),a&&a.valid||(a=u(i)),oa.geo.stream(n,a)),i.result()}function t(){return a=null,n}var e,r,u,i,a,o=4.5;return n.area=function(n){return Ho=0,oa.geo.stream(n,u(Xo)),Ho},n.centroid=function(n){return Ao=Co=zo=Lo=qo=To=Ro=Do=Po=0,oa.geo.stream(n,u(Bo)),Po?[Ro/Po,Do/Po]:To?[Lo/To,qo/To]:zo?[Ao/zo,Co/zo]:[NaN,NaN]},n.bounds=function(n){return Zo=Vo=-(Io=Yo=1/0),oa.geo.stream(n,u($o)),[[Io,Yo],[Zo,Vo]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||re(n):y,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new Wt:new te(n),"function"!=typeof o&&i.pointRadius(o),t()):r},n.pointRadius=function(t){return arguments.length?(o="function"==typeof t?t:(i.pointRadius(+t),+t),n):o},n.projection(oa.geo.albersUsa()).context(null)},oa.geo.transform=function(n){return{stream:function(t){var e=new ue(t);for(var r in n)e[r]=n[r];return e}}},ue.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},oa.geo.projection=ae,oa.geo.projectionMutator=oe,(oa.geo.equirectangular=function(){return ae(ce)}).raw=ce.invert=ce,oa.geo.rotation=function(n){function t(t){return t=n(t[0]*Oa,t[1]*Oa),t[0]*=Ia,t[1]*=Ia,t}return n=fe(n[0]%360*Oa,n[1]*Oa,n.length>2?n[2]*Oa:0),t.invert=function(t){return t=n.invert(t[0]*Oa,t[1]*Oa),t[0]*=Ia,t[1]*=Ia,t},t},se.invert=ce,oa.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=fe(-n[0]*Oa,-n[1]*Oa,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=Ia,n[1]*=Ia}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=ve((t=+r)*Oa,u*Oa),n):t},n.precision=function(r){return arguments.length?(e=ve(t*Oa,(u=+r)*Oa),n):u},n.angle(90)},oa.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Oa,u=n[1]*Oa,i=t[1]*Oa,a=Math.sin(r),o=Math.cos(r),l=Math.sin(u),c=Math.cos(u),s=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*a)*e+(e=c*s-l*f*o)*e),l*s+c*f*o)},oa.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return oa.range(Math.ceil(i/d)*d,u,d).map(h).concat(oa.range(Math.ceil(c/m)*m,l,m).map(g)).concat(oa.range(Math.ceil(r/p)*p,e,p).filter(function(n){return Ma(n%d)>Da}).map(s)).concat(oa.range(Math.ceil(o/v)*v,a,v).filter(function(n){return Ma(n%m)>Da}).map(f))}var e,r,u,i,a,o,l,c,s,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(l).slice(1),h(u).reverse().slice(1),g(c).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],c=+t[0][1],l=+t[1][1],i>u&&(t=i,i=u,u=t),c>l&&(t=c,c=l,l=t),n.precision(y)):[[i,c],[u,l]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],o=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),o>a&&(t=o,o=a,a=t),n.precision(y)):[[r,o],[e,a]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,s=me(o,a,90),f=ye(r,e,y),h=me(c,l,90),g=ye(i,u,y),n):y},n.majorExtent([[-180,-90+Da],[180,90-Da]]).minorExtent([[-180,-80-Da],[180,80+Da]])},oa.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=Me,u=xe;return n.distance=function(){return oa.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},oa.geo.interpolate=function(n,t){return be(n[0]*Oa,n[1]*Oa,t[0]*Oa,t[1]*Oa)},oa.geo.length=function(n){return Wo=0,oa.geo.stream(n,Jo),Wo};var Wo,Jo={sphere:b,point:b,lineStart:_e,lineEnd:b,polygonStart:b,polygonEnd:b},Go=we(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(oa.geo.azimuthalEqualArea=function(){return ae(Go)}).raw=Go;var Ko=we(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},y);(oa.geo.azimuthalEquidistant=function(){return ae(Ko)}).raw=Ko,(oa.geo.conicConformal=function(){return Vt(Se)}).raw=Se,(oa.geo.conicEquidistant=function(){return Vt(ke)}).raw=ke;var Qo=we(function(n){return 1/n},Math.atan);(oa.geo.gnomonic=function(){return ae(Qo)}).raw=Qo,Ne.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Ha]},(oa.geo.mercator=function(){return Ee(Ne)}).raw=Ne;var nl=we(function(){return 1},Math.asin);(oa.geo.orthographic=function(){return ae(nl)}).raw=nl;var tl=we(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(oa.geo.stereographic=function(){return ae(tl)}).raw=tl,Ae.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Ha]},(oa.geo.transverseMercator=function(){var n=Ee(Ae),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ae,oa.geom={},oa.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=En(e),i=En(r),a=n.length,o=[],l=[];for(t=0;a>t;t++)o.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(o.sort(qe),t=0;a>t;t++)l.push([o[t][0],-o[t][1]]);var c=Le(o),s=Le(l),f=s[0]===c[0],h=s[s.length-1]===c[c.length-1],g=[];for(t=c.length-1;t>=0;--t)g.push(n[o[c[t]][2]]);for(t=+f;t=r&&c.x<=i&&c.y>=u&&c.y<=a?[[r,a],[i,a],[i,u],[r,u]]:[];s.point=n[o]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Da)*Da,y:Math.round(a(n,t)/Da)*Da,i:t}})}var r=Ce,u=ze,i=r,a=u,o=sl;return n?t(n):(t.links=function(n){return or(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return or(e(n)).cells.forEach(function(e,r){for(var u,i,a=e.site,o=e.edges.sort(Ve),l=-1,c=o.length,s=o[c-1].edge,f=s.l===a?s.r:s.l;++l=c,h=r>=s,g=h<<1|f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=hr()),f?u=c:o=c,h?a=s:l=s,i(n,t,e,r,u,a,o,l)}var s,f,h,g,p,v,d,m,y,M=En(o),x=En(l);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,a)for(g=0;p>g;++g)s=n[g],s.xm&&(m=s.x),s.y>y&&(y=s.y),f.push(s.x),h.push(s.y);else for(g=0;p>g;++g){var b=+M(s=n[g],g),_=+x(s,g);v>b&&(v=b),d>_&&(d=_),b>m&&(m=b),_>y&&(y=_),f.push(b),h.push(_)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=hr();if(k.add=function(n){i(k,n,+M(n,++g),+x(n,g),v,d,m,y)},k.visit=function(n){gr(n,k,v,d,m,y)},k.find=function(n){return pr(k,n[0],n[1],v,d,m,y)},g=-1,null==t){for(;++g=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=pl.get(e)||gl,r=vl.get(r)||y,br(r(e.apply(null,la.call(arguments,1))))},oa.interpolateHcl=Rr,oa.interpolateHsl=Dr,oa.interpolateLab=Pr,oa.interpolateRound=jr,oa.transform=function(n){var t=sa.createElementNS(oa.ns.prefix.svg,"g");return(oa.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Ur(e?e.matrix:dl)})(n)},Ur.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var dl={a:1,b:0,c:0,d:1,e:0,f:0};oa.interpolateTransform=$r,oa.layout={},oa.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++eo*o/m){if(v>l){var c=t.charge/l;n.px-=i*c,n.py-=a*c}return!0}if(t.point&&l&&v>l){var c=t.pointCharge/l;n.px-=i*c,n.py-=a*c}}return!t.charge}}function t(n){n.px=oa.event.x,n.py=oa.event.y,l.resume()}var e,r,u,i,a,o,l={},c=oa.dispatch("start","tick","end"),s=[1,1],f=.9,h=ml,g=yl,p=-30,v=Ml,d=.1,m=.64,M=[],x=[];return l.tick=function(){if((u*=.99)<.005)return e=null,c.end({type:"end",alpha:u=0}),!0;var t,r,l,h,g,v,m,y,b,_=M.length,w=x.length;for(r=0;w>r;++r)l=x[r],h=l.source,g=l.target,y=g.x-h.x,b=g.y-h.y,(v=y*y+b*b)&&(v=u*a[r]*((v=Math.sqrt(v))-i[r])/v,y*=v,b*=v,g.x-=y*(m=h.weight+g.weight?h.weight/(h.weight+g.weight):.5),g.y-=b*m,h.x+=y*(m=1-m),h.y+=b*m);if((m=u*d)&&(y=s[0]/2,b=s[1]/2,r=-1,m))for(;++r<_;)l=M[r],l.x+=(y-l.x)*m,l.y+=(b-l.y)*m;if(p)for(ru(t=oa.geom.quadtree(M),u,o),r=-1;++r<_;)(l=M[r]).fixed||t.visit(n(l));for(r=-1;++r<_;)l=M[r],l.fixed?(l.x=l.px,l.y=l.py):(l.x-=(l.px-(l.px=l.x))*f,l.y-=(l.py-(l.py=l.y))*f);c.tick({type:"tick",alpha:u})},l.nodes=function(n){return arguments.length?(M=n,l):M},l.links=function(n){return arguments.length?(x=n,l):x},l.size=function(n){return arguments.length?(s=n,l):s},l.linkDistance=function(n){return arguments.length?(h="function"==typeof n?n:+n,l):h},l.distance=l.linkDistance,l.linkStrength=function(n){return arguments.length?(g="function"==typeof n?n:+n,l):g},l.friction=function(n){return arguments.length?(f=+n,l):f},l.charge=function(n){return arguments.length?(p="function"==typeof n?n:+n,l):p},l.chargeDistance=function(n){return arguments.length?(v=n*n,l):Math.sqrt(v)},l.gravity=function(n){return arguments.length?(d=+n,l):d},l.theta=function(n){return arguments.length?(m=n*n,l):Math.sqrt(m)},l.alpha=function(n){return arguments.length?(n=+n,u?n>0?u=n:(e.c=null,e.t=NaN,e=null,c.end({type:"end",alpha:u=0})):n>0&&(c.start({type:"start",alpha:u=n}),e=qn(l.tick)),l):u},l.start=function(){function n(n,r){if(!e){for(e=new Array(u),l=0;u>l;++l)e[l]=[];for(l=0;c>l;++l){var i=x[l];e[i.source.index].push(i.target),e[i.target.index].push(i.source)}}for(var a,o=e[t],l=-1,s=o.length;++lt;++t)(r=M[t]).index=t,r.weight=0;for(t=0;c>t;++t)r=x[t],"number"==typeof r.source&&(r.source=M[r.source]),"number"==typeof r.target&&(r.target=M[r.target]),++r.source.weight,++r.target.weight;for(t=0;u>t;++t)r=M[t],isNaN(r.x)&&(r.x=n("x",f)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(i=[],"function"==typeof h)for(t=0;c>t;++t)i[t]=+h.call(this,x[t],t);else for(t=0;c>t;++t)i[t]=h;if(a=[],"function"==typeof g)for(t=0;c>t;++t)a[t]=+g.call(this,x[t],t);else for(t=0;c>t;++t)a[t]=g;if(o=[],"function"==typeof p)for(t=0;u>t;++t)o[t]=+p.call(this,M[t],t);else for(t=0;u>t;++t)o[t]=p;return l.resume()},l.resume=function(){return l.alpha(.1)},l.stop=function(){return l.alpha(0)},l.drag=function(){return r||(r=oa.behavior.drag().origin(y).on("dragstart.force",Qr).on("drag.force",t).on("dragend.force",nu)),arguments.length?void this.on("mouseover.force",tu).on("mouseout.force",eu).call(r):r},oa.rebind(l,c,"on")};var ml=20,yl=1,Ml=1/0;oa.layout.hierarchy=function(){function n(u){var i,a=[u],o=[];for(u.depth=0;null!=(i=a.pop());)if(o.push(i),(c=e.call(n,i,i.depth))&&(l=c.length)){for(var l,c,s;--l>=0;)a.push(s=c[l]),s.parent=i,s.depth=i.depth+1;r&&(i.value=0),i.children=c}else r&&(i.value=+r.call(n,i,i.depth)||0),delete i.children;return au(u,function(n){var e,u;t&&(e=n.children)&&e.sort(t),r&&(u=n.parent)&&(u.value+=n.value)}),o}var t=cu,e=ou,r=lu;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(iu(t,function(n){n.children&&(n.value=0)}),au(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},oa.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(a=i.length)){var a,o,l,c=-1;for(r=t.value?r/t.value:0;++cf?-1:1),p=oa.sum(c),v=p?(f-l*g)/p:0,d=oa.range(l),m=[];return null!=e&&d.sort(e===xl?function(n,t){return c[t]-c[n]}:function(n,t){return e(a[n],a[t])}),d.forEach(function(n){m[n]={data:a[n],value:o=c[n],startAngle:s,endAngle:s+=o*v+g,padAngle:h}}),m}var t=Number,e=xl,r=0,u=Ua,i=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(u=t,n):u},n.padAngle=function(t){return arguments.length?(i=t,n):i},n};var xl={};oa.layout.stack=function(){function n(o,l){if(!(h=o.length))return o;var c=o.map(function(e,r){return t.call(n,e,r)}),s=c.map(function(t){return t.map(function(t,e){return[i.call(n,t,e),a.call(n,t,e)]})}),f=e.call(n,s,l);c=oa.permute(c,f),s=oa.permute(s,f);var h,g,p,v,d=r.call(n,s,l),m=c[0].length;for(p=0;m>p;++p)for(u.call(n,c[0][p],v=d[p],s[0][p][1]),g=1;h>g;++g)u.call(n,c[g][p],v+=s[g-1][p][1],s[g][p][1]);return o}var t=y,e=pu,r=vu,u=gu,i=fu,a=hu;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:bl.get(t)||pu,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:_l.get(t)||vu,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(a=t,n):a},n.out=function(t){return arguments.length?(u=t,n):u},n};var bl=oa.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(du),i=n.map(mu),a=oa.range(r).sort(function(n,t){return u[n]-u[t]}),o=0,l=0,c=[],s=[];for(t=0;r>t;++t)e=a[t],l>o?(o+=i[e],c.push(e)):(l+=i[e],s.push(e));return s.reverse().concat(c)},reverse:function(n){return oa.range(n.length).reverse()},"default":pu}),_l=oa.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,a=[],o=0,l=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>o&&(o=r),a.push(r)}for(e=0;i>e;++e)l[e]=(o-a[e])/2;return l},wiggle:function(n){var t,e,r,u,i,a,o,l,c,s=n.length,f=n[0],h=f.length,g=[];for(g[0]=l=c=0,e=1;h>e;++e){for(t=0,u=0;s>t;++t)u+=n[t][e][1];for(t=0,i=0,o=f[e][0]-f[e-1][0];s>t;++t){for(r=0,a=(n[t][e][1]-n[t][e-1][1])/(2*o);t>r;++r)a+=(n[r][e][1]-n[r][e-1][1])/o;i+=a*n[t][e][1]}g[e]=l-=u?i/u*o:0,c>l&&(c=l)}for(e=0;h>e;++e)g[e]-=c;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,a=1/u,o=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=a}for(e=0;i>e;++e)o[e]=0;return o},zero:vu});oa.layout.histogram=function(){function n(n,i){for(var a,o,l=[],c=n.map(e,this),s=r.call(this,c,i),f=u.call(this,s,c,i),i=-1,h=c.length,g=f.length-1,p=t?1:1/h;++i0)for(i=-1;++i=s[0]&&o<=s[1]&&(a=l[oa.bisect(f,o,1,g)-1],a.y+=p,a.push(n[i]));return l}var t=!0,e=Number,r=bu,u=Mu;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=En(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return xu(n,t)}:En(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},oa.layout.pack=function(){function n(n,i){var a=e.call(this,n,i),o=a[0],l=u[0],c=u[1],s=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(o.x=o.y=0,au(o,function(n){n.r=+s(n.value)}),au(o,Nu),r){var f=r*(t?1:Math.max(2*o.r/l,2*o.r/c))/2;au(o,function(n){n.r+=f}),au(o,Nu),au(o,function(n){n.r-=f})}return Cu(o,l/2,c/2,t?1:1/Math.max(2*o.r/l,2*o.r/c)),a}var t,e=oa.layout.hierarchy().sort(_u),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},uu(n,e)},oa.layout.tree=function(){function n(n,u){var s=a.call(this,n,u),f=s[0],h=t(f);if(au(h,e),h.parent.m=-h.z,iu(h,r),c)iu(f,i);else{var g=f,p=f,v=f;iu(f,function(n){n.xp.x&&(p=n),n.depth>v.depth&&(v=n)});var d=o(g,p)/2-g.x,m=l[0]/(p.x+o(p,g)/2+d),y=l[1]/(v.depth||1);iu(f,function(n){n.x=(n.x+d)*m,n.y=n.depth*y})}return s}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var u,i=t.children,a=0,o=i.length;o>a;++a)r.push((i[a]=u={_:i[a],parent:t,children:(u=i[a].children)&&u.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:a}).a=u);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Du(n);var i=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+o(n._,r._),n.m=n.z-i):n.z=i}else r&&(n.z=r.z+o(n._,r._));n.parent.A=u(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function u(n,t,e){if(t){for(var r,u=n,i=n,a=t,l=u.parent.children[0],c=u.m,s=i.m,f=a.m,h=l.m;a=Tu(a),u=qu(u),a&&u;)l=qu(l),i=Tu(i),i.a=n,r=a.z+f-u.z-c+o(a._,u._),r>0&&(Ru(Pu(a,n,e),n,r),c+=r,s+=r),f+=a.m,c+=u.m,h+=l.m,s+=i.m;a&&!Tu(i)&&(i.t=a,i.m+=f-s),u&&!qu(l)&&(l.t=u,l.m+=c-h,e=n)}return e}function i(n){n.x*=l[0],n.y=n.depth*l[1]}var a=oa.layout.hierarchy().sort(null).value(null),o=Lu,l=[1,1],c=null;return n.separation=function(t){return arguments.length?(o=t,n):o},n.size=function(t){return arguments.length?(c=null==(l=t)?i:null,n):c?null:l},n.nodeSize=function(t){return arguments.length?(c=null==(l=t)?null:i,n):c?l:null},uu(n,a)},oa.layout.cluster=function(){function n(n,i){var a,o=t.call(this,n,i),l=o[0],c=0;au(l,function(n){var t=n.children;t&&t.length?(n.x=Uu(t),n.y=ju(t)):(n.x=a?c+=e(n,a):0,n.y=0,a=n)});var s=Fu(l),f=Hu(l),h=s.x-e(s,f)/2,g=f.x+e(f,s)/2;return au(l,u?function(n){n.x=(n.x-l.x)*r[0],n.y=(l.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(l.y?n.y/l.y:1))*r[1]}),o}var t=oa.layout.hierarchy().sort(null).value(null),e=Lu,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},uu(n,t)},oa.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++ut?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var a,o,l,c=f(e),s=[],h=i.slice(),p=1/0,v="slice"===g?c.dx:"dice"===g?c.dy:"slice-dice"===g?1&e.depth?c.dy:c.dx:Math.min(c.dx,c.dy);for(n(h,c.dx*c.dy/e.value),s.area=0;(l=h.length)>0;)s.push(a=h[l-1]),s.area+=a.area,"squarify"!==g||(o=r(s,v))<=p?(h.pop(),p=o):(s.area-=s.pop().area,u(s,v,c,!1),v=Math.min(c.dx,c.dy),s.length=s.area=0,p=1/0);s.length&&(u(s,v,c,!0),s.length=s.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,a=f(t),o=r.slice(),l=[];for(n(o,a.dx*a.dy/t.value),l.area=0;i=o.pop();)l.push(i),l.area+=i.area,null!=i.z&&(u(l,i.z?a.dx:a.dy,a,!o.length),l.length=l.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,a=-1,o=n.length;++ae&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,a=n.length,o=e.x,c=e.y,s=t?l(n.area/t):0; -if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++ie.dx)&&(s=e.dx);++ie&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=oa.random.normal.apply(oa,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=oa.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},oa.scale={};var wl={floor:y,ceil:y};oa.scale.linear=function(){return Wu([0,1],[0,1],Mr,!1)};var Sl={s:1,g:1,p:1,r:1,e:1};oa.scale.log=function(){return ri(oa.scale.linear().domain([0,1]),10,!0,[1,10])};var kl=oa.format(".0e"),Nl={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};oa.scale.pow=function(){return ui(oa.scale.linear(),1,[0,1])},oa.scale.sqrt=function(){return oa.scale.pow().exponent(.5)},oa.scale.ordinal=function(){return ai([],{t:"range",a:[[]]})},oa.scale.category10=function(){return oa.scale.ordinal().range(El)},oa.scale.category20=function(){return oa.scale.ordinal().range(Al)},oa.scale.category20b=function(){return oa.scale.ordinal().range(Cl)},oa.scale.category20c=function(){return oa.scale.ordinal().range(zl)};var El=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(xn),Al=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(xn),Cl=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(xn),zl=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(xn);oa.scale.quantile=function(){return oi([],[])},oa.scale.quantize=function(){return li(0,1,[0,1])},oa.scale.threshold=function(){return ci([.5],[0,1])},oa.scale.identity=function(){return si([0,1])},oa.svg={},oa.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),c=Math.max(0,+r.apply(this,arguments)),s=a.apply(this,arguments)-Ha,f=o.apply(this,arguments)-Ha,h=Math.abs(f-s),g=s>f?0:1;if(n>c&&(p=c,c=n,n=p),h>=Fa)return t(c,g)+(n?t(n,1-g):"")+"Z";var p,v,d,m,y,M,x,b,_,w,S,k,N=0,E=0,A=[];if((m=(+l.apply(this,arguments)||0)/2)&&(d=i===Ll?Math.sqrt(n*n+c*c):+i.apply(this,arguments),g||(E*=-1),c&&(E=tn(d/c*Math.sin(m))),n&&(N=tn(d/n*Math.sin(m)))),c){y=c*Math.cos(s+E),M=c*Math.sin(s+E),x=c*Math.cos(f-E),b=c*Math.sin(f-E);var C=Math.abs(f-s-2*E)<=ja?0:1;if(E&&mi(y,M,x,b)===g^C){var z=(s+f)/2;y=c*Math.cos(z),M=c*Math.sin(z),x=b=null}}else y=M=0;if(n){_=n*Math.cos(f-N),w=n*Math.sin(f-N),S=n*Math.cos(s+N),k=n*Math.sin(s+N);var L=Math.abs(s-f+2*N)<=ja?0:1;if(N&&mi(_,w,S,k)===1-g^L){var q=(s+f)/2;_=n*Math.cos(q),w=n*Math.sin(q),S=k=null}}else _=w=0;if(h>Da&&(p=Math.min(Math.abs(c-n)/2,+u.apply(this,arguments)))>.001){v=c>n^g?0:1;var T=p,R=p;if(ja>h){var D=null==S?[_,w]:null==x?[y,M]:Re([y,M],[S,k],[x,b],[_,w]),P=y-D[0],j=M-D[1],U=x-D[0],F=b-D[1],H=1/Math.sin(Math.acos((P*U+j*F)/(Math.sqrt(P*P+j*j)*Math.sqrt(U*U+F*F)))/2),O=Math.sqrt(D[0]*D[0]+D[1]*D[1]);R=Math.min(p,(n-O)/(H-1)),T=Math.min(p,(c-O)/(H+1))}if(null!=x){var I=yi(null==S?[_,w]:[S,k],[y,M],c,T,g),Y=yi([x,b],[_,w],c,T,g);p===T?A.push("M",I[0],"A",T,",",T," 0 0,",v," ",I[1],"A",c,",",c," 0 ",1-g^mi(I[1][0],I[1][1],Y[1][0],Y[1][1]),",",g," ",Y[1],"A",T,",",T," 0 0,",v," ",Y[0]):A.push("M",I[0],"A",T,",",T," 0 1,",v," ",Y[0])}else A.push("M",y,",",M);if(null!=S){var Z=yi([y,M],[S,k],n,-R,g),V=yi([_,w],null==x?[y,M]:[x,b],n,-R,g);p===R?A.push("L",V[0],"A",R,",",R," 0 0,",v," ",V[1],"A",n,",",n," 0 ",g^mi(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-g," ",Z[1],"A",R,",",R," 0 0,",v," ",Z[0]):A.push("L",V[0],"A",R,",",R," 0 0,",v," ",Z[0])}else A.push("L",_,",",w)}else A.push("M",y,",",M),null!=x&&A.push("A",c,",",c," 0 ",C,",",g," ",x,",",b),A.push("L",_,",",w),null!=S&&A.push("A",n,",",n," 0 ",L,",",1-g," ",S,",",k);return A.push("Z"),A.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=hi,r=gi,u=fi,i=Ll,a=pi,o=vi,l=di;return n.innerRadius=function(t){return arguments.length?(e=En(t),n):e},n.outerRadius=function(t){return arguments.length?(r=En(t),n):r},n.cornerRadius=function(t){return arguments.length?(u=En(t),n):u},n.padRadius=function(t){return arguments.length?(i=t==Ll?Ll:En(t),n):i},n.startAngle=function(t){return arguments.length?(a=En(t),n):a},n.endAngle=function(t){return arguments.length?(o=En(t),n):o},n.padAngle=function(t){return arguments.length?(l=En(t),n):l},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+a.apply(this,arguments)+ +o.apply(this,arguments))/2-Ha;return[Math.cos(t)*n,Math.sin(t)*n]},n};var Ll="auto";oa.svg.line=function(){return Mi(y)};var ql=oa.map({linear:xi,"linear-closed":bi,step:_i,"step-before":wi,"step-after":Si,basis:zi,"basis-open":Li,"basis-closed":qi,bundle:Ti,cardinal:Ei,"cardinal-open":ki,"cardinal-closed":Ni,monotone:Fi});ql.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var Tl=[0,2/3,1/3,0],Rl=[0,1/3,2/3,0],Dl=[0,1/6,2/3,1/6];oa.svg.line.radial=function(){var n=Mi(Hi);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},wi.reverse=Si,Si.reverse=wi,oa.svg.area=function(){return Oi(y)},oa.svg.area.radial=function(){var n=Oi(Hi);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},oa.svg.chord=function(){function n(n,o){var l=t(this,i,n,o),c=t(this,a,n,o);return"M"+l.p0+r(l.r,l.p1,l.a1-l.a0)+(e(l,c)?u(l.r,l.p1,l.r,l.p0):u(l.r,l.p1,c.r,c.p0)+r(c.r,c.p1,c.a1-c.a0)+u(c.r,c.p1,l.r,l.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=o.call(n,u,r),a=l.call(n,u,r)-Ha,s=c.call(n,u,r)-Ha;return{r:i,a0:a,a1:s,p0:[i*Math.cos(a),i*Math.sin(a)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>ja)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=Me,a=xe,o=Ii,l=pi,c=vi;return n.radius=function(t){return arguments.length?(o=En(t),n):o},n.source=function(t){return arguments.length?(i=En(t),n):i},n.target=function(t){return arguments.length?(a=En(t),n):a},n.startAngle=function(t){return arguments.length?(l=En(t),n):l},n.endAngle=function(t){return arguments.length?(c=En(t),n):c},n},oa.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),a=e.call(this,n,u),o=(i.y+a.y)/2,l=[i,{x:i.x,y:o},{x:a.x,y:o},a];return l=l.map(r),"M"+l[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var t=Me,e=xe,r=Yi;return n.source=function(e){return arguments.length?(t=En(e),n):t},n.target=function(t){return arguments.length?(e=En(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},oa.svg.diagonal.radial=function(){var n=oa.svg.diagonal(),t=Yi,e=n.projection;return n.projection=function(n){return arguments.length?e(Zi(t=n)):t},n},oa.svg.symbol=function(){function n(n,r){return(Pl.get(t.call(this,n,r))||$i)(e.call(this,n,r))}var t=Xi,e=Vi;return n.type=function(e){return arguments.length?(t=En(e),n):t},n.size=function(t){return arguments.length?(e=En(t),n):e},n};var Pl=oa.map({circle:$i,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Ul)),e=t*Ul;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});oa.svg.symbolTypes=Pl.keys();var jl=Math.sqrt(3),Ul=Math.tan(30*Oa);Aa.transition=function(n){for(var t,e,r=Fl||++Yl,u=Ki(n),i=[],a=Hl||{time:Date.now(),ease:Nr,delay:0,duration:250},o=-1,l=this.length;++oi;i++){u.push(t=[]);for(var e=this[i],o=0,l=e.length;l>o;o++)(r=e[o])&&n.call(r,r.__data__,o,i)&&t.push(r)}return Wi(u,this.namespace,this.id)},Il.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):Y(this,null==t?function(t){t[r][e].tween.remove(n)}:function(u){u[r][e].tween.set(n,t)})},Il.attr=function(n,t){function e(){this.removeAttribute(o)}function r(){this.removeAttributeNS(o.space,o.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(o);return e!==n&&(t=a(e,n),function(n){this.setAttribute(o,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(o.space,o.local);return e!==n&&(t=a(e,n),function(n){this.setAttributeNS(o.space,o.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var a="transform"==n?$r:Mr,o=oa.ns.qualify(n);return Ji(this,"attr."+n,t,o.local?i:u)},Il.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=oa.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Il.style=function(n,e,r){function u(){this.style.removeProperty(n)}function i(e){return null==e?u:(e+="",function(){var u,i=t(this).getComputedStyle(this,null).getPropertyValue(n);return i!==e&&(u=Mr(i,e),function(t){this.style.setProperty(n,u(t),r)})})}var a=arguments.length;if(3>a){if("string"!=typeof n){2>a&&(e="");for(r in n)this.style(r,n[r],e);return this}r=""}return Ji(this,"style."+n,e,i)},Il.styleTween=function(n,e,r){function u(u,i){var a=e.call(this,u,i,t(this).getComputedStyle(this,null).getPropertyValue(n));return a&&function(t){this.style.setProperty(n,a(t),r)}}return arguments.length<3&&(r=""),this.tween("style."+n,u)},Il.text=function(n){return Ji(this,"text",n,Gi)},Il.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Il.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=oa.ease.apply(oa,arguments)),Y(this,function(r){r[e][t].ease=n}))},Il.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:Y(this,"function"==typeof n?function(r,u,i){r[e][t].delay=+n.call(r,r.__data__,u,i)}:(n=+n,function(r){r[e][t].delay=n}))},Il.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:Y(this,"function"==typeof n?function(r,u,i){r[e][t].duration=Math.max(1,n.call(r,r.__data__,u,i))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Il.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var u=Hl,i=Fl;try{Fl=e,Y(this,function(t,u,i){Hl=t[r][e],n.call(t,t.__data__,u,i)})}finally{Hl=u,Fl=i}}else Y(this,function(u){var i=u[r][e];(i.event||(i.event=oa.dispatch("start","end","interrupt"))).on(n,t)});return this},Il.transition=function(){for(var n,t,e,r,u=this.id,i=++Yl,a=this.namespace,o=[],l=0,c=this.length;c>l;l++){o.push(n=[]);for(var t=this[l],s=0,f=t.length;f>s;s++)(e=t[s])&&(r=e[a][u],Qi(e,s,a,i,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Wi(o,a,i)},oa.svg.axis=function(){function n(n){n.each(function(){var n,c=oa.select(this),s=this.__chart__||e,f=this.__chart__=e.copy(),h=null==l?f.ticks?f.ticks.apply(f,o):f.domain():l,g=null==t?f.tickFormat?f.tickFormat.apply(f,o):y:t,p=c.selectAll(".tick").data(h,f),v=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Da),d=oa.transition(p.exit()).style("opacity",Da).remove(),m=oa.transition(p.order()).style("opacity",1),M=Math.max(u,0)+a,x=Zu(f),b=c.selectAll(".domain").data([0]),_=(b.enter().append("path").attr("class","domain"),oa.transition(b));v.append("line"),v.append("text");var w,S,k,N,E=v.select("line"),A=m.select("line"),C=p.select("text").text(g),z=v.select("text"),L=m.select("text"),q="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=na,w="x",k="y",S="x2",N="y2",C.attr("dy",0>q?"0em":".71em").style("text-anchor","middle"),_.attr("d","M"+x[0]+","+q*i+"V0H"+x[1]+"V"+q*i)):(n=ta,w="y",k="x",S="y2",N="x2",C.attr("dy",".32em").style("text-anchor",0>q?"end":"start"),_.attr("d","M"+q*i+","+x[0]+"H0V"+x[1]+"H"+q*i)),E.attr(N,q*u),z.attr(k,q*M),A.attr(S,0).attr(N,q*u),L.attr(w,0).attr(k,q*M),f.rangeBand){var T=f,R=T.rangeBand()/2;s=f=function(n){return T(n)+R}}else s.rangeBand?s=f:d.call(n,f,s);v.call(n,s,f),m.call(n,f,f)})}var t,e=oa.scale.linear(),r=Zl,u=6,i=6,a=3,o=[10],l=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Vl?t+"":Zl,n):r},n.ticks=function(){return arguments.length?(o=ca(arguments),n):o},n.tickValues=function(t){return arguments.length?(l=t,n):l},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(a=+t,n):a},n.tickSubdivide=function(){return arguments.length&&n},n};var Zl="bottom",Vl={top:1,right:1,bottom:1,left:1};oa.svg.brush=function(){function n(t){t.each(function(){var t=oa.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",i).on("touchstart.brush",i),a=t.selectAll(".background").data([0]);a.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),t.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var o=t.selectAll(".resize").data(v,y);o.exit().remove(),o.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return Xl[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),o.style("display",n.empty()?"none":null);var l,f=oa.transition(t),h=oa.transition(a);c&&(l=Zu(c),h.attr("x",l[0]).attr("width",l[1]-l[0]),r(f)),s&&(l=Zu(s),h.attr("y",l[0]).attr("height",l[1]-l[0]),u(f)),e(f)})}function e(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+f[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function r(n){n.select(".extent").attr("x",f[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",f[1]-f[0])}function u(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function i(){function i(){32==oa.event.keyCode&&(C||(M=null,L[0]-=f[1],L[1]-=h[1],C=2),S())}function v(){32==oa.event.keyCode&&2==C&&(L[0]+=f[1],L[1]+=h[1],C=0,S())}function d(){var n=oa.mouse(b),t=!1;x&&(n[0]+=x[0],n[1]+=x[1]),C||(oa.event.altKey?(M||(M=[(f[0]+f[1])/2,(h[0]+h[1])/2]),L[0]=f[+(n[0]s?(u=r,r=s):u=s),v[0]!=r||v[1]!=u?(e?o=null:a=null,v[0]=r,v[1]=u,!0):void 0}function y(){d(),k.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),oa.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),z(),w({type:"brushend"})}var M,x,b=this,_=oa.select(oa.event.target),w=l.of(b,arguments),k=oa.select(b),N=_.datum(),E=!/^(n|s)$/.test(N)&&c,A=!/^(e|w)$/.test(N)&&s,C=_.classed("extent"),z=W(b),L=oa.mouse(b),q=oa.select(t(b)).on("keydown.brush",i).on("keyup.brush",v);if(oa.event.changedTouches?q.on("touchmove.brush",d).on("touchend.brush",y):q.on("mousemove.brush",d).on("mouseup.brush",y),k.interrupt().selectAll("*").interrupt(),C)L[0]=f[0]-L[0],L[1]=h[0]-L[1];else if(N){var T=+/w$/.test(N),R=+/^n/.test(N);x=[f[1-T]-L[0],h[1-R]-L[1]],L[0]=f[T],L[1]=h[R]}else oa.event.altKey&&(M=L.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),oa.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),d()}var a,o,l=N(n,"brushstart","brush","brushend"),c=null,s=null,f=[0,0],h=[0,0],g=!0,p=!0,v=$l[0];return n.event=function(n){n.each(function(){var n=l.of(this,arguments),t={x:f,y:h,i:a,j:o},e=this.__chart__||t;this.__chart__=t,Fl?oa.select(this).transition().each("start.brush",function(){a=e.i,o=e.j,f=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=xr(f,t.x),r=xr(h,t.y);return a=o=null,function(u){f=t.x=e(u),h=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){a=t.i,o=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,v=$l[!c<<1|!s],n):c},n.y=function(t){return arguments.length?(s=t,v=$l[!c<<1|!s],n):s},n.clamp=function(t){return arguments.length?(c&&s?(g=!!t[0],p=!!t[1]):c?g=!!t:s&&(p=!!t),n):c&&s?[g,p]:c?g:s?p:null},n.extent=function(t){var e,r,u,i,l;return arguments.length?(c&&(e=t[0],r=t[1],s&&(e=e[0],r=r[0]),a=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(l=e,e=r,r=l),(e!=f[0]||r!=f[1])&&(f=[e,r])),s&&(u=t[0],i=t[1],c&&(u=u[1],i=i[1]),o=[u,i],s.invert&&(u=s(u),i=s(i)),u>i&&(l=u,u=i,i=l),(u!=h[0]||i!=h[1])&&(h=[u,i])),n):(c&&(a?(e=a[0],r=a[1]):(e=f[0],r=f[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(l=e,e=r,r=l))),s&&(o?(u=o[0],i=o[1]):(u=h[0],i=h[1],s.invert&&(u=s.invert(u),i=s.invert(i)),u>i&&(l=u,u=i,i=l))),c&&s?[[e,u],[r,i]]:c?[e,r]:s&&[u,i])},n.clear=function(){return n.empty()||(f=[0,0],h=[0,0],a=o=null),n},n.empty=function(){return!!c&&f[0]==f[1]||!!s&&h[0]==h[1]},oa.rebind(n,l,"on")};var Xl={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},$l=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Bl=ho.format=Mo.timeFormat,Wl=Bl.utc,Jl=Wl("%Y-%m-%dT%H:%M:%S.%LZ");Bl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?ea:Jl,ea.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},ea.toString=Jl.toString,ho.second=On(function(n){return new go(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),ho.seconds=ho.second.range,ho.seconds.utc=ho.second.utc.range,ho.minute=On(function(n){return new go(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),ho.minutes=ho.minute.range,ho.minutes.utc=ho.minute.utc.range,ho.hour=On(function(n){var t=n.getTimezoneOffset()/60;return new go(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),ho.hours=ho.hour.range,ho.hours.utc=ho.hour.utc.range,ho.month=On(function(n){return n=ho.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),ho.months=ho.month.range,ho.months.utc=ho.month.utc.range;var Gl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Kl=[[ho.second,1],[ho.second,5],[ho.second,15],[ho.second,30],[ho.minute,1],[ho.minute,5],[ho.minute,15],[ho.minute,30],[ho.hour,1],[ho.hour,3],[ho.hour,6],[ho.hour,12],[ho.day,1],[ho.day,2],[ho.week,1],[ho.month,1],[ho.month,3],[ho.year,1]],Ql=Bl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",zt]]),nc={range:function(n,t,e){return oa.range(Math.ceil(n/e)*e,+t,e).map(ua)},floor:y,ceil:y};Kl.year=ho.year,ho.scale=function(){return ra(oa.scale.linear(),Kl,Ql)};var tc=Kl.map(function(n){return[n[0].utc,n[1]]}),ec=Wl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",zt]]);tc.year=ho.year.utc,ho.scale.utc=function(){return ra(oa.scale.linear(),tc,ec)},oa.text=An(function(n){return n.responseText}),oa.json=function(n,t){return Cn(n,"application/json",ia,t)},oa.html=function(n,t){return Cn(n,"text/html",aa,t)},oa.xml=An(function(n){return n.responseXML}),"function"==typeof define&&define.amd?(this.d3=oa,define(oa)):"object"==typeof module&&module.exports?module.exports=oa:this.d3=oa}(); \ No newline at end of file diff --git a/miniwob-sandbox/html/core/jquery-ui/external/jquery/jquery.js b/miniwob-sandbox/html/core/jquery-ui/external/jquery/jquery.js deleted file mode 100644 index 7fc60fc..0000000 --- a/miniwob-sandbox/html/core/jquery-ui/external/jquery/jquery.js +++ /dev/null @@ -1,11008 +0,0 @@ -/*! - * jQuery JavaScript Library v1.12.4 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-05-20T17:17Z - */ - -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Support: Firefox 18+ -// Can't be in strict mode, several libs including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -//"use strict"; -var deletedIds = []; - -var document = window.document; - -var slice = deletedIds.slice; - -var concat = deletedIds.concat; - -var push = deletedIds.push; - -var indexOf = deletedIds.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - version = "1.12.4", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1, IE<9 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: deletedIds.sort, - splice: deletedIds.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var src, copyIsArray, copy, name, options, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = jQuery.isArray( copy ) ) ) ) { - - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray( src ) ? src : []; - - } else { - clone = src && jQuery.isPlainObject( src ) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type( obj ) === "function"; - }, - - isArray: Array.isArray || function( obj ) { - return jQuery.type( obj ) === "array"; - }, - - isWindow: function( obj ) { - /* jshint eqeqeq: false */ - return obj != null && obj == obj.window; - }, - - isNumeric: function( obj ) { - - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - var realStringObj = obj && obj.toString(); - return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - isPlainObject: function( obj ) { - var key; - - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - try { - - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call( obj, "constructor" ) && - !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { - return false; - } - } catch ( e ) { - - // IE8,9 Will throw exceptions on certain host objects #9897 - return false; - } - - // Support: IE<9 - // Handle iteration over inherited properties before own properties. - if ( !support.ownFirst ) { - for ( key in obj ) { - return hasOwn.call( obj, key ); - } - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; - }, - - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function( data ) { - if ( data && jQuery.trim( data ) ) { - - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); // jscs:ignore requireDotNotation - } )( data ); - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android<4.1, IE<9 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - var len; - - if ( arr ) { - if ( indexOf ) { - return indexOf.call( arr, elem, i ); - } - - len = arr.length; - i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; - - for ( ; i < len; i++ ) { - - // Skip accessing in sparse arrays - if ( i in arr && arr[ i ] === elem ) { - return i; - } - } - } - - return -1; - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - while ( j < len ) { - first[ i++ ] = second[ j++ ]; - } - - // Support: IE<9 - // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) - if ( len !== len ) { - while ( second[ j ] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var args, proxy, tmp; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: function() { - return +( new Date() ); - }, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -// JSHint would error on this code due to the Symbol not being defined in ES5. -// Defining this global in .jshintrc would create a danger of using the global -// unguarded in another place, it seems safer to just disable JSHint for these -// three lines. -/* jshint ignore: start */ -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = deletedIds[ Symbol.iterator ]; -} -/* jshint ignore: end */ - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: iOS 8.2 (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.2.1 - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-10-17 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, nidselect, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - - // ID selector - if ( (m = match[1]) ) { - - // Document context - if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !compilerCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - - if ( nodeType !== 1 ) { - newContext = context; - newSelector = selector; - - // qSA looks outside Element context, which is not what we want - // Thanks to Andrew Dupont for this workaround technique - // Support: IE <=8 - // Exclude object elements - } else if ( context.nodeName.toLowerCase() !== "object" ) { - - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", (nid = expando) ); - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; - while ( i-- ) { - groups[i] = nidselect + " " + toSelector( groups[i] ); - } - newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9-11, Edge - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( (parent = document.defaultView) && parent.top !== parent ) { - // Support: IE 11 - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( document.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - return m ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - !compilerCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - // Use previously-cached element index if available - if ( useCache ) { - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); - - if ( (oldCache = uniqueCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context === document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - if ( !context && elem.ownerDocument !== document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - } ); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( jQuery.inArray( elem, qualifier ) > -1 ) !== not; - } ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, - ret = [], - self = this, - len = self.length; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // init accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector.charAt( 0 ) === "<" && - selector.charAt( selector.length - 1 ) === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[ 2 ] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[ 0 ] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return typeof root.ready !== "undefined" ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var i, - targets = jQuery( target, this ), - len = targets.length; - - return this.filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( pos ? - pos.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return jQuery.inArray( this[ 0 ], jQuery( elem ) ); - } - - // Locate the position of the desired element - return jQuery.inArray( - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem, this ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - do { - cur = cur[ dir ]; - } while ( cur && cur.nodeType !== 1 ); - - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - ret = jQuery.uniqueSort( ret ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - } - - return this.pushStack( ret ); - }; -} ); -var rnotwhite = ( /\S+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( jQuery.isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = true; - if ( !memory ) { - self.disable(); - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], - [ "notify", "progress", jQuery.Callbacks( "memory" ) ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this === promise ? newDefer.promise() : this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( function() { - - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || - ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. - // If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .progress( updateFunc( i, progressContexts, progressValues ) ) - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ); - } else { - --remaining; - } - } - } - - // if we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -} ); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -} ); - -/** - * Clean-up method for dom ready events - */ -function detach() { - if ( document.addEventListener ) { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - - } else { - document.detachEvent( "onreadystatechange", completed ); - window.detachEvent( "onload", completed ); - } -} - -/** - * The ready event handler and self cleanup method - */ -function completed() { - - // readyState === "complete" is good enough for us to call the dom ready in oldIE - if ( document.addEventListener || - window.event.type === "load" || - document.readyState === "complete" ) { - - detach(); - jQuery.ready(); - } -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called - // after the browser event has already occurred. - // Support: IE6-10 - // Older IE sometimes signals "interactive" too soon - if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - - // Standards-based browsers support DOMContentLoaded - } else if ( document.addEventListener ) { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); - - // If IE event model is used - } else { - - // Ensure firing before onload, maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", completed ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", completed ); - - // If IE and not a frame - // continually check to see if the document is ready - var top = false; - - try { - top = window.frameElement == null && document.documentElement; - } catch ( e ) {} - - if ( top && top.doScroll ) { - ( function doScrollCheck() { - if ( !jQuery.isReady ) { - - try { - - // Use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - top.doScroll( "left" ); - } catch ( e ) { - return window.setTimeout( doScrollCheck, 50 ); - } - - // detach all dom ready events - detach(); - - // and execute any waiting functions - jQuery.ready(); - } - } )(); - } - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); - - - - -// Support: IE<9 -// Iteration over object's inherited properties before its own -var i; -for ( i in jQuery( support ) ) { - break; -} -support.ownFirst = i === "0"; - -// Note: most support tests are defined in their respective modules. -// false until the test is run -support.inlineBlockNeedsLayout = false; - -// Execute ASAP in case we need to set body.style.zoom -jQuery( function() { - - // Minified: var a,b,c,d - var val, div, body, container; - - body = document.getElementsByTagName( "body" )[ 0 ]; - if ( !body || !body.style ) { - - // Return for frameset docs that don't have a body - return; - } - - // Setup - div = document.createElement( "div" ); - container = document.createElement( "div" ); - container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; - body.appendChild( container ).appendChild( div ); - - if ( typeof div.style.zoom !== "undefined" ) { - - // Support: IE<8 - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; - - support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; - if ( val ) { - - // Prevent IE 6 from affecting layout for positioned elements #11048 - // Prevent IE from shrinking the body in IE 7 mode #12869 - // Support: IE<8 - body.style.zoom = 1; - } - } - - body.removeChild( container ); -} ); - - -( function() { - var div = document.createElement( "div" ); - - // Support: IE<9 - support.deleteExpando = true; - try { - delete div.test; - } catch ( e ) { - support.deleteExpando = false; - } - - // Null elements to avoid leaks in IE. - div = null; -} )(); -var acceptData = function( elem ) { - var noData = jQuery.noData[ ( elem.nodeName + " " ).toLowerCase() ], - nodeType = +elem.nodeType || 1; - - // Do not set data on non-element DOM nodes because it will not be cleared (#8335). - return nodeType !== 1 && nodeType !== 9 ? - false : - - // Nodes accept data unless otherwise specified; rejection can be conditional - !noData || noData !== true && elem.getAttribute( "classid" ) === noData; -}; - - - - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /([A-Z])/g; - -function dataAttr( elem, key, data ) { - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - - var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// checks a cache object for emptiness -function isEmptyDataObject( obj ) { - var name; - for ( name in obj ) { - - // if the public data object is empty, the private is still empty - if ( name === "data" && jQuery.isEmptyObject( obj[ name ] ) ) { - continue; - } - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} - -function internalData( elem, name, data, pvt /* Internal Use Only */ ) { - if ( !acceptData( elem ) ) { - return; - } - - var ret, thisCache, - internalKey = jQuery.expando, - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( ( !id || !cache[ id ] || ( !pvt && !cache[ id ].data ) ) && - data === undefined && typeof name === "string" ) { - return; - } - - if ( !id ) { - - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; - } else { - id = internalKey; - } - } - - if ( !cache[ id ] ) { - - // Avoid exposing jQuery metadata on plain JS objects when the object - // is serialized using JSON.stringify - cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ] = jQuery.extend( cache[ id ], name ); - } else { - cache[ id ].data = jQuery.extend( cache[ id ].data, name ); - } - } - - thisCache = cache[ id ]; - - // jQuery data() is stored in a separate object inside the object's internal data - // cache in order to avoid key collisions between internal data and user-defined - // data. - if ( !pvt ) { - if ( !thisCache.data ) { - thisCache.data = {}; - } - - thisCache = thisCache.data; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // Check for both converted-to-camel and non-converted data property names - // If a data property was specified - if ( typeof name === "string" ) { - - // First Try to find as-is property data - ret = thisCache[ name ]; - - // Test for null|undefined property data - if ( ret == null ) { - - // Try to find the camelCased property - ret = thisCache[ jQuery.camelCase( name ) ]; - } - } else { - ret = thisCache; - } - - return ret; -} - -function internalRemoveData( elem, name, pvt ) { - if ( !acceptData( elem ) ) { - return; - } - - var thisCache, i, - isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - id = isNode ? elem[ jQuery.expando ] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - - thisCache = pvt ? cache[ id ] : cache[ id ].data; - - if ( thisCache ) { - - // Support array or space separated string names for data keys - if ( !jQuery.isArray( name ) ) { - - // try the string as a key before any manipulation - if ( name in thisCache ) { - name = [ name ]; - } else { - - // split the camel cased version by spaces unless a key with the spaces exists - name = jQuery.camelCase( name ); - if ( name in thisCache ) { - name = [ name ]; - } else { - name = name.split( " " ); - } - } - } else { - - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = name.concat( jQuery.map( name, jQuery.camelCase ) ); - } - - i = name.length; - while ( i-- ) { - delete thisCache[ name[ i ] ]; - } - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( pvt ? !isEmptyDataObject( thisCache ) : !jQuery.isEmptyObject( thisCache ) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( !pvt ) { - delete cache[ id ].data; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject( cache[ id ] ) ) { - return; - } - } - - // Destroy the cache - if ( isNode ) { - jQuery.cleanData( [ elem ], true ); - - // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) - /* jshint eqeqeq: false */ - } else if ( support.deleteExpando || cache != cache.window ) { - /* jshint eqeqeq: true */ - delete cache[ id ]; - - // When all else fails, undefined - } else { - cache[ id ] = undefined; - } -} - -jQuery.extend( { - cache: {}, - - // The following elements (space-suffixed to avoid Object.prototype collisions) - // throw uncatchable exceptions if you attempt to set expando properties - noData: { - "applet ": true, - "embed ": true, - - // ...but Flash objects (which have this classid) *can* handle expandos - "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[ jQuery.expando ] ] : elem[ jQuery.expando ]; - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data ) { - return internalData( elem, name, data ); - }, - - removeData: function( elem, name ) { - return internalRemoveData( elem, name ); - }, - - // For internal use only. - _data: function( elem, name, data ) { - return internalData( elem, name, data, true ); - }, - - _removeData: function( elem, name ) { - return internalRemoveData( elem, name, true ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Special expections of .data basically thwart jQuery.access, - // so implement the relevant behavior ourselves - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = jQuery.data( elem ); - - if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - jQuery._data( elem, "parsedAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - jQuery.data( this, key ); - } ); - } - - return arguments.length > 1 ? - - // Sets one value - this.each( function() { - jQuery.data( this, key, value ); - } ) : - - // Gets one value - // Try to fetch any internally stored data first - elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; - }, - - removeData: function( key ) { - return this.each( function() { - jQuery.removeData( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = jQuery._data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = jQuery._data( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // not intended for public consumption - generates a queueHooks object, - // or returns the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return jQuery._data( elem, key ) || jQuery._data( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - jQuery._removeData( elem, type + "queue" ); - jQuery._removeData( elem, key ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = jQuery._data( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); - - -( function() { - var shrinkWrapBlocksVal; - - support.shrinkWrapBlocks = function() { - if ( shrinkWrapBlocksVal != null ) { - return shrinkWrapBlocksVal; - } - - // Will be changed later if needed. - shrinkWrapBlocksVal = false; - - // Minified: var b,c,d - var div, body, container; - - body = document.getElementsByTagName( "body" )[ 0 ]; - if ( !body || !body.style ) { - - // Test fired too early or in an unsupported environment, exit. - return; - } - - // Setup - div = document.createElement( "div" ); - container = document.createElement( "div" ); - container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; - body.appendChild( container ).appendChild( div ); - - // Support: IE6 - // Check if elements with layout shrink-wrap their children - if ( typeof div.style.zoom !== "undefined" ) { - - // Reset CSS: box-sizing; display; margin; border - div.style.cssText = - - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + - "box-sizing:content-box;display:block;margin:0;border:0;" + - "padding:1px;width:1px;zoom:1"; - div.appendChild( document.createElement( "div" ) ).style.width = "5px"; - shrinkWrapBlocksVal = div.offsetWidth !== 3; - } - - body.removeChild( container ); - - return shrinkWrapBlocksVal; - }; - -} )(); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || - !jQuery.contains( elem.ownerDocument, elem ); - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, - scale = 1, - maxIterations = 20, - currentValue = tween ? - function() { return tween.cur(); } : - function() { return jQuery.css( elem, prop, "" ); }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - do { - - // If previous iteration zeroed out, double until we get *something*. - // Use string for doubling so we don't accidentally see scale as unchanged below - scale = scale || ".5"; - - // Adjust and apply - initialInUnit = initialInUnit / scale; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Update scale, tolerating zero or NaN from tween.cur() - // Break the loop if scale is unchanged or perfect, or if we've just had enough. - } while ( - scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations - ); - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - length = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < length; i++ ) { - fn( - elems[ i ], - key, - raw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - length ? fn( elems[ 0 ], key ) : emptyGet; -}; -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([\w:-]+)/ ); - -var rscriptType = ( /^$|\/(?:java|ecma)script/i ); - -var rleadingWhitespace = ( /^\s+/ ); - -var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|" + - "details|dialog|figcaption|figure|footer|header|hgroup|main|" + - "mark|meter|nav|output|picture|progress|section|summary|template|time|video"; - - - -function createSafeFragment( document ) { - var list = nodeNames.split( "|" ), - safeFrag = document.createDocumentFragment(); - - if ( safeFrag.createElement ) { - while ( list.length ) { - safeFrag.createElement( - list.pop() - ); - } - } - return safeFrag; -} - - -( function() { - var div = document.createElement( "div" ), - fragment = document.createDocumentFragment(), - input = document.createElement( "input" ); - - // Setup - div.innerHTML = "
a"; - - // IE strips leading whitespace when .innerHTML is used - support.leadingWhitespace = div.firstChild.nodeType === 3; - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - support.tbody = !div.getElementsByTagName( "tbody" ).length; - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; - - // Makes sure cloning an html5 element does not cause problems - // Where outerHTML is undefined, this still works - support.html5Clone = - document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - input.type = "checkbox"; - input.checked = true; - fragment.appendChild( input ); - support.appendChecked = input.checked; - - // Make sure textarea (and checkbox) defaultValue is properly cloned - // Support: IE6-IE11+ - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // #11217 - WebKit loses check when the name is after the checked attribute - fragment.appendChild( div ); - - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input = document.createElement( "input" ); - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 - // old WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<9 - // Cloned elements keep attachEvent handlers, we use addEventListener on IE9+ - support.noCloneEvent = !!div.addEventListener; - - // Support: IE<9 - // Since attributes and properties are the same in IE, - // cleanData must set properties to undefined rather than use removeAttribute - div[ jQuery.expando ] = 1; - support.attributes = !div.getAttribute( jQuery.expando ); -} )(); - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - option: [ 1, "" ], - legend: [ 1, "
", "
" ], - area: [ 1, "", "" ], - - // Support: IE8 - param: [ 1, "", "" ], - thead: [ 1, "", "
" ], - tr: [ 2, "", "
" ], - col: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, - // unless wrapped in a div with non-breaking characters in front of it. - _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] -}; - -// Support: IE8-IE9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - - -function getAll( context, tag ) { - var elems, elem, - i = 0, - found = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== "undefined" ? - context.querySelectorAll( tag || "*" ) : - undefined; - - if ( !found ) { - for ( found = [], elems = context.childNodes || context; - ( elem = elems[ i ] ) != null; - i++ - ) { - if ( !tag || jQuery.nodeName( elem, tag ) ) { - found.push( elem ); - } else { - jQuery.merge( found, getAll( elem, tag ) ); - } - } - } - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], found ) : - found; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var elem, - i = 0; - for ( ; ( elem = elems[ i ] ) != null; i++ ) { - jQuery._data( - elem, - "globalEval", - !refElements || jQuery._data( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/, - rtbody = / from table fragments - if ( !support.tbody ) { - - // String was a , *may* have spurious - elem = tag === "table" && !rtbody.test( elem ) ? - tmp.firstChild : - - // String was a bare or - wrap[ 1 ] === "
" && !rtbody.test( elem ) ? - tmp : - 0; - - j = elem && elem.childNodes.length; - while ( j-- ) { - if ( jQuery.nodeName( ( tbody = elem.childNodes[ j ] ), "tbody" ) && - !tbody.childNodes.length ) { - - elem.removeChild( tbody ); - } - } - } - - jQuery.merge( nodes, tmp.childNodes ); - - // Fix #12392 for WebKit and IE > 9 - tmp.textContent = ""; - - // Fix #12392 for oldIE - while ( tmp.firstChild ) { - tmp.removeChild( tmp.firstChild ); - } - - // Remember the top-level container for proper cleanup - tmp = safe.lastChild; - } - } - } - - // Fix #11356: Clear elements from fragment - if ( tmp ) { - safe.removeChild( tmp ); - } - - // Reset defaultChecked for any radios and checkboxes - // about to be appended to the DOM in IE 6/7 (#8060) - if ( !support.appendChecked ) { - jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); - } - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( safe.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - tmp = null; - - return safe; -} - - -( function() { - var i, eventName, - div = document.createElement( "div" ); - - // Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events) - for ( i in { submit: true, change: true, focusin: true } ) { - eventName = "on" + i; - - if ( !( support[ i ] = eventName in window ) ) { - - // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) - div.setAttribute( eventName, "t" ); - support[ i ] = div.attributes[ eventName ].expando === false; - } - } - - // Null elements to avoid leaks in IE. - div = null; -} )(); - - -var rformElems = /^(?:input|select|textarea)$/i, - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE9 -// See #13393 for more info -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - var tmp, events, t, handleObjIn, - special, eventHandle, handleObj, - handlers, type, namespaces, origType, - elemData = jQuery._data( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && - ( !e || jQuery.event.triggered !== e.type ) ? - jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : - undefined; - }; - - // Add elem as a property of the handle fn to prevent a memory leak - // with IE non-native events - eventHandle.elem = elem; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener/attachEvent if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - var j, handleObj, tmp, - origCount, t, events, - special, handlers, type, - namespaces, origType, - elemData = jQuery.hasData( elem ) && jQuery._data( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - - // removeData also checks for emptiness and clears the expando if empty - // so use it instead of delete - jQuery._removeData( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - var handle, ontype, cur, - bubbleType, special, tmp, i, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && - jQuery._data( cur, "handle" ); - - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( - ( !special._default || - special._default.apply( eventPath.pop(), data ) === false - ) && acceptData( elem ) - ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction() check here because IE6/7 fails that test. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - try { - elem[ type ](); - } catch ( e ) { - - // IE<9 dies on focus/blur to hidden element (#1486,#12518) - // only reproducible on winXP IE8 native, not IE9 in IE8 mode - } - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Support (at least): Chrome, IE9 - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // - // Support: Firefox<=42+ - // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) - if ( delegateCount && cur.nodeType && - ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { - - /* jshint eqeqeq: false */ - for ( ; cur != this; cur = cur.parentNode || this ) { - /* jshint eqeqeq: true */ - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push( { elem: cur, handlers: matches } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: IE<9 - // Fix target property (#1925) - if ( !event.target ) { - event.target = originalEvent.srcElement || document; - } - - // Support: Safari 6-8+ - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Support: IE<9 - // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) - event.metaKey = !!event.metaKey; - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + - "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split( " " ), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: ( "button buttons clientX clientY fromElement offsetX offsetY " + - "pageX pageY screenX screenY toElement" ).split( " " ), - filter: function( event, original ) { - var body, eventDoc, doc, - button = original.button, - fromElement = original.fromElement; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + - ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + - ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && fromElement ) { - event.relatedTarget = fromElement === event.target ? - original.toElement : - fromElement; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - try { - this.focus(); - return false; - } catch ( e ) { - - // Support: IE<9 - // If we error on focus to hidden element (#1486, #12518), - // let .trigger() run the handlers - } - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - // Piggyback on a donor event to simulate a different one - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - - // Previously, `originalEvent: {}` was set here, so stopPropagation call - // would not be triggered on donor event, since in our own - // jQuery.event.stopPropagation function we had a check for existence of - // originalEvent.stopPropagation method, so, consequently it would be a noop. - // - // Guard for simulated events was moved to jQuery.event.stopPropagation function - // since `originalEvent` should point to the original event for the - // constancy with other events and for more focused logic - } - ); - - jQuery.event.trigger( e, null, elem ); - - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } - } : - function( elem, type, handle ) { - var name = "on" + type; - - if ( elem.detachEvent ) { - - // #8545, #7054, preventing memory leaks for custom events in IE6-8 - // detachEvent needed property on element, by name of that event, - // to properly expose it to GC - if ( typeof elem[ name ] === "undefined" ) { - elem[ name ] = null; - } - - elem.detachEvent( name, handle ); - } - }; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: IE < 9, Android < 4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - if ( !e ) { - return; - } - - // If preventDefault exists, run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // Support: IE - // Otherwise set the returnValue property of the original event to false - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( !e || this.isSimulated ) { - return; - } - - // If stopPropagation exists, run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - - // Support: IE - // Set the cancelBubble property of the original event to true - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && e.stopImmediatePropagation ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://code.google.com/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -// IE submit delegation -if ( !support.submit ) { - - jQuery.event.special.submit = { - setup: function() { - - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Lazy-add a submit handler when a descendant form may potentially be submitted - jQuery.event.add( this, "click._submit keypress._submit", function( e ) { - - // Node name check avoids a VML-related crash in IE (#9807) - var elem = e.target, - form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? - - // Support: IE <=8 - // We use jQuery.prop instead of elem.form - // to allow fixing the IE8 delegated submit issue (gh-2332) - // by 3rd party polyfills/workarounds. - jQuery.prop( elem, "form" ) : - undefined; - - if ( form && !jQuery._data( form, "submit" ) ) { - jQuery.event.add( form, "submit._submit", function( event ) { - event._submitBubble = true; - } ); - jQuery._data( form, "submit", true ); - } - } ); - - // return undefined since we don't need an event listener - }, - - postDispatch: function( event ) { - - // If form was submitted by the user, bubble the event up the tree - if ( event._submitBubble ) { - delete event._submitBubble; - if ( this.parentNode && !event.isTrigger ) { - jQuery.event.simulate( "submit", this.parentNode, event ); - } - } - }, - - teardown: function() { - - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Remove delegated handlers; cleanData eventually reaps submit handlers attached above - jQuery.event.remove( this, "._submit" ); - } - }; -} - -// IE change delegation and checkbox/radio fix -if ( !support.change ) { - - jQuery.event.special.change = { - - setup: function() { - - if ( rformElems.test( this.nodeName ) ) { - - // IE doesn't fire change on a check/radio until blur; trigger it on click - // after a propertychange. Eat the blur-change in special.change.handle. - // This still fires onchange a second time for check/radio after blur. - if ( this.type === "checkbox" || this.type === "radio" ) { - jQuery.event.add( this, "propertychange._change", function( event ) { - if ( event.originalEvent.propertyName === "checked" ) { - this._justChanged = true; - } - } ); - jQuery.event.add( this, "click._change", function( event ) { - if ( this._justChanged && !event.isTrigger ) { - this._justChanged = false; - } - - // Allow triggered, simulated change events (#11500) - jQuery.event.simulate( "change", this, event ); - } ); - } - return false; - } - - // Delegated event; lazy-add a change handler on descendant inputs - jQuery.event.add( this, "beforeactivate._change", function( e ) { - var elem = e.target; - - if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "change" ) ) { - jQuery.event.add( elem, "change._change", function( event ) { - if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { - jQuery.event.simulate( "change", this.parentNode, event ); - } - } ); - jQuery._data( elem, "change", true ); - } - } ); - }, - - handle: function( event ) { - var elem = event.target; - - // Swallow native change events from checkbox/radio, we already triggered them above - if ( this !== elem || event.isSimulated || event.isTrigger || - ( elem.type !== "radio" && elem.type !== "checkbox" ) ) { - - return event.handleObj.handler.apply( this, arguments ); - } - }, - - teardown: function() { - jQuery.event.remove( this, "._change" ); - - return !rformElems.test( this.nodeName ); - } - }; -} - -// Support: Firefox -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome, Safari -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - jQuery._removeData( doc, fix ); - } else { - jQuery._data( doc, fix, attaches ); - } - } - }; - } ); -} - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - }, - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -var rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, - rnoshimcache = new RegExp( "<(?:" + nodeNames + ")[\\s/>]", "i" ), - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, - - // Support: IE 10-11, Edge 10240+ - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g, - safeFragment = createSafeFragment( document ), - fragmentDiv = safeFragment.appendChild( document.createElement( "div" ) ); - -// Support: IE<8 -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName( "tbody" )[ 0 ] || - elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( jQuery.find.attr( elem, "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute( "type" ); - } - return elem; -} - -function cloneCopyEvent( src, dest ) { - if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { - return; - } - - var type, i, l, - oldData = jQuery._data( src ), - curData = jQuery._data( dest, oldData ), - events = oldData.events; - - if ( events ) { - delete curData.handle; - curData.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - - // make the cloned public data object a copy from the original - if ( curData.data ) { - curData.data = jQuery.extend( {}, curData.data ); - } -} - -function fixCloneNodeIssues( src, dest ) { - var nodeName, e, data; - - // We do not need to do anything for non-Elements - if ( dest.nodeType !== 1 ) { - return; - } - - nodeName = dest.nodeName.toLowerCase(); - - // IE6-8 copies events bound via attachEvent when using cloneNode. - if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { - data = jQuery._data( dest ); - - for ( e in data.events ) { - jQuery.removeEvent( dest, e, data.handle ); - } - - // Event data gets referenced instead of copied if the expando gets copied too - dest.removeAttribute( jQuery.expando ); - } - - // IE blanks contents when cloning scripts, and tries to evaluate newly-set text - if ( nodeName === "script" && dest.text !== src.text ) { - disableScript( dest ).text = src.text; - restoreScript( dest ); - - // IE6-10 improperly clones children of object elements using classid. - // IE10 throws NoModificationAllowedError if parent is null, #12132. - } else if ( nodeName === "object" ) { - if ( dest.parentNode ) { - dest.outerHTML = src.outerHTML; - } - - // This path appears unavoidable for IE9. When cloning an object - // element in IE9, the outerHTML strategy above is not sufficient. - // If the src has innerHTML and the destination does not, - // copy the src.innerHTML into the dest.innerHTML. #10324 - if ( support.html5Clone && ( src.innerHTML && !jQuery.trim( dest.innerHTML ) ) ) { - dest.innerHTML = src.innerHTML; - } - - } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - - // IE6-8 fails to persist the checked state of a cloned checkbox - // or radio button. Worse, IE6-7 fail to give the cloned element - // a checked appearance if the defaultChecked value isn't also set - - dest.defaultChecked = dest.checked = src.checked; - - // IE6-7 get confused and end up setting the value of a cloned - // checkbox/radio button to an empty string instead of "on" - if ( dest.value !== src.value ) { - dest.value = src.value; - } - - // IE6-8 fails to return the selected option to the default selected - // state when cloning options - } else if ( nodeName === "option" ) { - dest.defaultSelected = dest.selected = src.defaultSelected; - - // IE6-8 fails to set the defaultValue to the correct value when - // cloning other types of input fields - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var first, node, hasScripts, - scripts, doc, fragment, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !jQuery._data( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( - ( node.text || node.textContent || node.innerHTML || "" ) - .replace( rcleanScript, "" ) - ); - } - } - } - } - - // Fix #11809: Avoid leaking memory - fragment = first = null; - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - elems = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = elems[ i ] ) != null; i++ ) { - - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var destElements, node, clone, i, srcElements, - inPage = jQuery.contains( elem.ownerDocument, elem ); - - if ( support.html5Clone || jQuery.isXMLDoc( elem ) || - !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { - - clone = elem.cloneNode( true ); - - // IE<=8 does not properly clone detached, unknown element nodes - } else { - fragmentDiv.innerHTML = elem.outerHTML; - fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); - } - - if ( ( !support.noCloneEvent || !support.noCloneChecked ) && - ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - // Fix all IE cloning issues - for ( i = 0; ( node = srcElements[ i ] ) != null; ++i ) { - - // Ensure that the destination node is not null; Fixes #9587 - if ( destElements[ i ] ) { - fixCloneNodeIssues( node, destElements[ i ] ); - } - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0; ( node = srcElements[ i ] ) != null; i++ ) { - cloneCopyEvent( node, destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - destElements = srcElements = node = null; - - // Return the cloned set - return clone; - }, - - cleanData: function( elems, /* internal */ forceAcceptData ) { - var elem, type, id, data, - i = 0, - internalKey = jQuery.expando, - cache = jQuery.cache, - attributes = support.attributes, - special = jQuery.event.special; - - for ( ; ( elem = elems[ i ] ) != null; i++ ) { - if ( forceAcceptData || acceptData( elem ) ) { - - id = elem[ internalKey ]; - data = id && cache[ id ]; - - if ( data ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Remove cache only if it was not already removed by jQuery.event.remove - if ( cache[ id ] ) { - - delete cache[ id ]; - - // Support: IE<9 - // IE does not allow us to delete expando properties from nodes - // IE creates expando attributes along with the property - // IE does not have a removeAttribute function on Document nodes - if ( !attributes && typeof elem.removeAttribute !== "undefined" ) { - elem.removeAttribute( internalKey ); - - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://code.google.com/p/chromium/issues/detail?id=378607 - } else { - elem[ internalKey ] = undefined; - } - - deletedIds.push( id ); - } - } - } - } - } -} ); - -jQuery.fn.extend( { - - // Keep domManip exposed until 3.0 (gh-2225) - domManip: domManip, - - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().append( - ( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value ) - ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - } - - // Remove any remaining nodes - while ( elem.firstChild ) { - elem.removeChild( elem.firstChild ); - } - - // If this is a select, ensure that it displays empty (#12336) - // Support: IE<9 - if ( elem.options && jQuery.nodeName( elem, "select" ) ) { - elem.options.length = 0; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined ) { - return elem.nodeType === 1 ? - elem.innerHTML.replace( rinlinejQuery, "" ) : - undefined; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - ( support.htmlSerialize || !rnoshimcache.test( value ) ) && - ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - - // Remove element nodes and prevent memory leaks - elem = this[ i ] || {}; - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - i = 0, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); - - -var iframe, - elemdisplay = { - - // Support: Firefox - // We have to pre-define these values for FF (#10227) - HTML: "block", - BODY: "block" - }; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ - -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - display = jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = ( iframe || jQuery( " - - diff --git a/miniwob-sandbox/html/flight/Alaska-auto-medium/images/aura.png b/miniwob-sandbox/html/flight/Alaska-auto-medium/images/aura.png deleted file mode 100644 index cb1e08a7340e604f30dcb81b4fd820e7a45096a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 764 zcmeAS@N?(olHy`uVBq!ia0vp^mw`BngBeJQrcM40q%s41LR^8gddWJCvh_fc7^GLf z*<-Wq!)&G$*HXCS}U`dc)FoQtC`}GP94)@RZ?+=)7Q1JeNbngKM1|~yK7srr_TW@c2 zmNgj&G&~H9iHMQv>bkb;?*9qA3cYSDY|3fRp6)*Qe}<31!`)L)pZ5%jKA!et@lz3= z%y&QU=JP+AdBnxvWG3%{1uRHZ?}s|KJa*5SFZqRO^V2E3W+&$>pX)!k>~xq0 zoA^BQNx#?n&zPzGR>1RM3S+IajnbFb6U^oL9x#7$Ef<=hQZ0XBs?4tD10J{LE?}(b zld(GNS!dCF{*c;D>%y*+OA;*Eq$Rvh^-WL>@Dyn(@YU>8;GF29%yD^&0OzD#>a5<{ z%}e?`_o-&@4w|l_zvV&F+D89b=MNN}SaRar+5-O1j}Og{sOiYt;y=s3k>g@YxK19I zad_6hIZ6NLT{cyBbyirm@TK;WjbgXV-=45tv}{?jm+{NY%W9EF6)${w;^(!Qo3mq8 zmCNx^9oCk-C2h-Mg`V3qale06_+ni~?B?<>3$+DfD=l+h6ixYlIQMdtm?mSuGG5uA ze$%YnN^gr}g@ttoKZAaN{c@H0FS@Qo$P1DWN i*A{(`f#}0`_9bnP15a;#xCofC7(8A5T-G@yGywo0*<^hH diff --git a/miniwob-sandbox/html/flight/Alaska-auto-medium/images/cal3.png b/miniwob-sandbox/html/flight/Alaska-auto-medium/images/cal3.png deleted file mode 100644 index 3198f8bed9dc08b3197577efe0e526966e86d918..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6X#qYVu0UG7WF4*1^SMnRixo?P z{DK+ITe`01t&tHqBOkBId1FhG?vH23=1vUGiSoMLS@h5pQYx6ichya&V>Bjbm%)% z)nyN%skV$E?^oLJ*$63q?)sVf#H=}q-JEmH>GI>t&F69JzxDp!$Nh-0bp@9_=Yk(k QfIedIboFyt=akR{0Ne$v6951J diff --git a/miniwob-sandbox/html/flight/Alaska-auto-medium/images/chkboxes3.png b/miniwob-sandbox/html/flight/Alaska-auto-medium/images/chkboxes3.png deleted file mode 100644 index 97caa83cbc8e415be6a3760b9d38d952a285b824..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 540 zcmeAS@N?(olHy`uVBq!ia0vp^l0a<4!3-ql#WXAdQn3L(A+A7Ly<{DYP|Nz&&Oi&~ zN`m}?8BSkSj54sgyRZ9kvpBzR1?QJ_T63~fUQWq(UA%mUT9zeHC1Zf6i(`nz>8+Em zPii*cag8lpcs)Sq|Nrzn5mkxPH*YTAYn%|t{_K>~27A+UleaqGEKym{Zn$MtptgAK zp{V#%k5gf)^Xp;r>zwD`Z;gg zoGUVGoDUa${2R`6GOkuRU{0y!1SYF3ALeNEmA;YO81a7E-YYYHiZ|=M^)4UgdwTEUP1|1$Ld8ta>|7!x z9VLZkeymXzsC}06hWTnsiqgy5pD$Tl)12|tcw^nh`8V183UuZ*v~Jz-B_Qt6dWMFC zdj>^Jj*?0r1%CKdv4|Tbc+U{)+PS&NV)daP2X}Ea9hE$KHeh#l=Ypq~PjI;Wo%hJ$ zs=*W!mMI^*xtJEMdilulpWj}tjLF+iPnVSKb_$<-*81%TS)dnA>jos|#o@ NgQu&X%Q~loCIB>GbGZNj diff --git a/miniwob-sandbox/html/flight/Alaska-auto-medium/images/collapse.png b/miniwob-sandbox/html/flight/Alaska-auto-medium/images/collapse.png deleted file mode 100644 index 4cc514d6027702c68161fd9c2808a7fd5eef164d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tfdM`tu0UF?XsKH9I<=CuYQ<~S zi`VJoZIrK{4-`=^SqCCPf@@VvR)N$MgVmI*S1;WlU%y@@cNm=p{0O+A)iI#N^AF|KDd?+ox4}6=(;8r>mdKI;Vst E0BR~~MF0Q* diff --git a/miniwob-sandbox/html/flight/Alaska-auto-medium/images/expand.png b/miniwob-sandbox/html/flight/Alaska-auto-medium/images/expand.png deleted file mode 100644 index 7f987fe05179628a825da805ff4ddb17b3169460..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5tfdM`tu0UF?XsKH9I<=CuYQ<~S zi`VJoZIrK{4-`=^SqCCPf@@VvR)N$MgVmI*S1;WlU%y@@cNY|Wjd*eSU{gJbH&UcbG++L_iy%DvMA+QH!I>gTe~DWM4f D9kFD< diff --git a/miniwob-sandbox/html/flight/Alaska-auto-medium/images/flight_arrow.png b/miniwob-sandbox/html/flight/Alaska-auto-medium/images/flight_arrow.png deleted file mode 100644 index 9451dd2a9fa8d1e0af10c007e5df4e8956f90c23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1032 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL3?z5Yp7kC`Ee-GqaRt%}ib{$~N+42EMP6P- zT3Q;!R#8z@QdUw@l9iPOa)C%rK~WyaP*73;D~1TFs;Yt+${-Rbr2sSpWR8L&SOmld z>IIntQlJFkg4rN(AOe~RRH>{01Yng4N+7PBqKcd{P*6n?2$Yn+_U8+MTwfC87tHYc z%i|CO<{3QS`8l4ylUQJ%dvjX@+v`)UKGmio50385(o{K=AiZki(#aiVg%%gm-1?%d z6y@}-ESwk^nC^JGIEHu}@16Q`+A0Hqmdgz+0uy}AMDKjh-B$JAefMLT=Ui$NSK4P3 z?VI!JUCFG@qO^mFvv;!G$UEA9@J`ZPqiRoEMUxcwkA+tqEp1d8emw~I^6YbP;JVAw zFW<>7yB7Ya@r%_QQ*n3Cr$TDp@r=Cs=}scwS_0NwyvLf_rny*WUE>b@yVC2fvE*ys z{A{VXdzR0_ev-dRE{fd8Tyh;C?dhLrF|E`%T?lPL0wurU)MbY^Q?0Rdj zr<(~}J8K&B{5iY3%KrR?ym~PYC%1q4_I9brtgbSJ+0o}iZ#;PO-(}hNkXES%migXi zxh0CTu1wpMx${M_jiY7CW= zWiG#@v~5z}hF@(y$Rxcud?{a$%iG;@2R`4lar)F0wQI#~5$OlkLE3Ih=WW`{`99lPOi;@$K{Uvu3vCLPW&-%pk1AB?J*UeA6NOd{HSn^HFiq!JZ4#P zIHY_oJ6HRp-XQk1{+G`5G)r`Fy55 zB73~H1kbZ&c=s$fOXO(vj@9|~m$lxkS|vY)Tbj4>3yo5 ZFXgv|_`Tyj76r=l44$rjF6*2UngFN9sC@tc diff --git a/miniwob-sandbox/html/flight/Alaska-auto-medium/images/geo.png b/miniwob-sandbox/html/flight/Alaska-auto-medium/images/geo.png deleted file mode 100644 index 9d9419d30f88751380650cb9621cd94671b10a5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^svyk43?x4}TrdPut^qzFu0UG7WF3X*|Mtr!K!e0e zg8YIRdf4v@|Eze@BDHtjqI7?Edn>hRy}67P?y*1>Z#-QbLo81BPKlg!Sb>K%Rjm1= zn6>Bq|0|qhW+s_LuKD+H`D;-Q&qW-kUnpPf_nyGNDd#hhFXy#8kx#=m(o~qsL znG?L+)u$#h?a$6^4Vs%~yNBs@{7b&g9ow{w?}T1*y%$lmaOvBPUbnKM{_KrT63aDB znNRn&g^DV=b#+i29?lcRp^ zn1-Asv;M?)C(pjzes7n$%R<2^q8T?f<$T|?_hOiS^jqKm8Lv5`>t|M7z4CpVq|w>M uh1=Mx0p_Z#f*`&|SSbMvyxESQyQ`ix#^9H_k0E|DVTz>_R+uyDe|9!6#!gZYi0&Ivqo^tEI*WWCB3 ya(kg(a>EXut5-GboWAP1c_=t>+Oh;Xi!(fb=%lr(*=RA)oeZ9?elF{r5}E*4`d@

-HTjAetuP5rPVEC|9sg68J%^at6AT+q-|Po zHuB|fku9e)7Us%c5&SR=o__ z*OI9V=I;D{_wcM00tJUFrY$%3+qcVIe)S>mNIUm){+Y?4it0z#lT}N5p#A`^bd?ID(I?9qLo^RT{kh0C3 z1LPApC7({&x>`1va}j{9H;kuK);oFQsmS6r$uC=dhq5JG+nAfZfr#XwRPA*CVWj(# zw7zlCmtC=1Vp+q<{zWAUuh(R5gt&i1*)fU8FxOWxqzK$mwmR6+=Qek6{?(d{!}@He zFdhu{wz`P+win7`Vca0RHQ%p!EwtHgpF_$Lwl0W(ssKkZS!PK!;;QZ?c0wDC_6c~i z;NgjNhq4K2qII10W9ljE8=6}65<0YHp1+Oc-63T&2s~`&7A;mo9z{=4#O+GjWUYHr z#mS0qU=S8(^sS1+nEghn91HYj;cC!9S*Jwr@MddJ zlr2jZzajK3lx`HX0xQhRxF|@LU6(>6$61n~?r3Posww+*3xyc>DJ!GaNy@N&uRsRH zXSG#+sqw;^4B_1oWhYP$qg2*PzP%_DbXB8#o~1n6g3q1oI~r+8y^IoL+6^ z{0ny_1T|TY&{cR04Mh@VVgAI+AdtAHZ0W6>ySS8IsmTysmL-@Q&`$^{t2=uJZ;oAe zV=*^OUsE2BG)W0nvi#lgt&MQ7qp44WeB6fjYM5gBA*^3XKWXS@4x&YRDM0 zduvlL0onWJ5Md;QA9{UNfmq`~FjTKwwh%8WsSkl6RSE_>L+)xu64DDDyfGsm9t|Uz zqg`5b%yIBa>4+eJ*UgWPIYPKkkbt%;9>TMG@~0~K7wFn^HgxGjWYGxXEQq9PMix=} z1=vBvX~>5)*|Fo`s%1C>uw#j{LW64raNf|L-Z@Asaf&ti{hI7J;-shX9GeR(Ue%>j zd7dRvLlmgp=~IZ%|5)p4BYmyy%`Ws`YQQ8Y-bWebdpbohJuQRW!(Ku3o`P)U{|U*K z?Y)|Vn(PpECtg~JxLm^`i_9&y!N(X=!7@l)--k6w#+3a=QSQ#anA~K}Mu8@*M}Zbd zLG?C7xD4P#OsMgxi{Nfka Z;SX0V*Xiz_92Nio002ovPDHLkV1hhMuS@^{ diff --git a/miniwob-sandbox/html/flight/Alaska-auto-medium/images/logos/AA.png b/miniwob-sandbox/html/flight/Alaska-auto-medium/images/logos/AA.png deleted file mode 100644 index 54d89b60c5de00cdc16f53547e2f744b04ce65de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1627 zcmV-h2Bi6kP)<(I6(cBqiqQ?3=8!n;ahskj4>QoC|8F zEK!Z<>h0a&rl`A5^V@<)MnX4@&f+rxzFDQ{yMyP9B5=n)|9wc9ivbq2O z04{V=PE!CNVEr(l5I}&>=Z{dgaDV-Pf*mjrKwzvuAZ3r|ds|@JXsl33x2)&q&!CSm zpd8L(000EqNklkm@Bb{3SF5ue+b~Dk zOswz69hPlrKdrQa0Rn+QAP@)y0)ar__i*Z{MZmbYbsu?n0!GE%`^3n+k2>#@Feb$M zL(BRp7!xNR5*No+*DkITw_!}2T6c`AtQ~#e7*|<)?X+KyYI~o2?KlE|k}OFw_$649 zBn&)a+ofraVPP&Gaa=xl zf^ze=p}<_#^(s&6OV-*{+_WW4Ny9Gl`aw%g057N)J@*!M-z8O1 z+S^zpaIp5?R+timH!G8tiljT8B5-H=;lsv;(f+u#y}h}4eqd3hSj=OJ!cY`sjMG_~ zP%-Z+rC{vMv`GyrC)#SKnZoy^+r>OZAtE*{IN8e6E~v|-qiskED*X(Tn|YlVs?b00 z&&hP^ytmN1Z>eka(iE4Z0ZN)+rZI{VTQNFqgVEA$MEg=&=Z@vZ3X{k*raPh4Qg}yX z>h9>dw%=t}JGW0MJG`(-C_vhb(1;#arv|INcm4cia=vGo=Qbd>=%iatuGSV9MM|v< zgH#wq6CcXBJ|x?py>%C>e4J=!#|t}g{WgwfJe^l*H`rh9L9HaojAcxb1z z!!wE^C+(t%q8?q=%(Wvg#svFth_b-7?cE_cB*QeL0&i=Jer-mxsBC_v0ks8=5ew*W z4%7W@=hJNVWfgj8CJ?J=6CVvrQAAY(Y5S**#!n(f=SG|R+AeQE3)a_8p#_X~waR7cv{g$RL+8p+;DmeH$${Es z<>6-7#@*T7d!Kh^YcFd~LzlGj;6vJgAv!wRs7Po!@sa`UqVh-<)0Vj8eORV@f5W^s z{rdUwOJce2uMi*6uZ=Q%SiA5>c9XCBwWF#x(tVP-+pcUB2-tq zDY41C?DQ`3_A<@t#znL-Mg-sSYEqZwdp>?S_ctZQo(*Y3u4#<2qwW35o}r8(Ghe!^ z%}uND3kzRN8k zBM|ruqh4IMY-m90h`OZl=Oa-^h%`}@)EHAleXKls;j;`Q;q)t?M=LNA&OY)vI~MQd zCoNWCBrH8`u>>RG# Z`2lUqPwP2Dph*A#002ovPDHLkV1hRg2pIqX diff --git a/miniwob-sandbox/html/flight/Alaska-auto-medium/images/logos/AS.png b/miniwob-sandbox/html/flight/Alaska-auto-medium/images/logos/AS.png deleted file mode 100644 index 7e40bcec1acd52b36d9339915e84f7002b9b4af3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1146 zcmV-=1cm#FP)9T^F0000pP)t-s00001 zLTUj*Y5_uO0YYj4LTUj*Y5_uO0YYj4LTUj*Y5_uO0YYj4LTUj*Y5_uO0YYls|NpW8 z000nlQchC<@DRX&K;SSSpwO_8P;g+4u2cyC00ZVpL_t(&-tAf0lA|yT1k3V)4d(y9 zb}N9~a$wj^Le)~c=_ktLqjj_;XSy%G_~PG(VQVAN*xe4Mqj0r;3LsMCv^6(q(LU{Qk8 zYRK=X0XF$-xaAs5tJQ$J_?_MIwMytYT%iUe#^;zMq+~j}P7USKnlORSCu$h4Qv-_v z1`j?Tsli>Q1}koh27EqJgGHi#hESC-E?&Ho8pf)GwLT9AY6x|5rZr%Wi1L>0Y-wFY z(lsX}s)@89Eqi#IXqLIj{&AV#W=>iSuK81l{oJ5PR|>Fl{-8`JBmI*?I_KtPy5o&N zRVOmXA&(l6_PdV16QXhn^iw+(0TCFU>=QC7{5lZyyCJ|E$jr85DF?L}YG9`lChpcF zs+{KEBeLd0%K2W*PL@%acy2K%=l3Bi5=Lxuc`Qvp!22B0I2E0-Iv?B~X>I!ICCN#@ zIY1wkhI(~^+rW?uqX3*j62l&;0pC6Db@{E?78){ps$>mxr&C4)PTKNAMQa8sg1d)IH)rjtrV67e!%=t=7I8q z8bYt;+NV1jiG>yu6-OJLG*Nfn@M25sd#r|3_l6V=Rv@&k@REVic<0c0vCgg2wV-jX zQUmKcN$@yKK;PnLz_dm;*_ZyP%md*_4W{xbn$4hIrh*aNF@U`ih(ZldC{JY`fEp05 zu{w^LHjNL`*Q!QgOAp}#Itg=uqpez?Ho$QN(yTKg9?8hUrm#{J$KgCiK+elNplwRe zuR1smJm7S7w-j|tkcz8A#(MPFJJ_9$09KBW7MLzL{>JOAa zqJ;9Zgon*oFp|&bUlZ-L-kdyCms4HlL4t(bI3T5dY(GzkyFo@)0#p0oO0omb8i-DG$%Wl({`9rvcJJYYO$n{e zt^>2GuEDW=L$23VHIbVvrfMaeYPFLUthB(8aDe-}exbartt-Ny**yJIlgtsP?3lwm&1 zayH#x0aSj&fBxWpjNL7fx47OD(lFc;wqLHjyTUX3?u#$J_~O6DFCqn%U&?@46#xJL M07*qoM6N<$g3PZHpa1{> diff --git a/miniwob-sandbox/html/flight/Alaska-auto-medium/images/logos/DL.png b/miniwob-sandbox/html/flight/Alaska-auto-medium/images/logos/DL.png deleted file mode 100644 index a7b48cb0024e9c5dc621fbc03e9aa2bce15e7f70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 949 zcmeAS@N?(olHy`uVBq!ia0vp^-+{A5V4?irhkl|}TywR(xr$%x2{W&%Azu#@=J#jto z&erI&GcFf&i5o9c5D^sS%gYzaZpun3G8Zo} z#Xgl<+Vbh2>uJIFTW=o-kv{9ZP3rCA8*bB;_-^H@x z&}xfwPKvi6``c|M*WLbvW|(&@@3Y9-K66_c%gj$3g2Pvu-A`E5+oGX;FndCZ;v=A@ z4CXJI=iX$ipJiDEQn_@W*`t2L?dyCWHY{Bfw&0sX+PdCy`ORzJI^W-5KdEDX*7Ik# zEV3)6ZM}JeSH5n7o6Oe6OA*r7IrjPH=G6B&EA?AsG0$9SCU(JPk*x2B`zz+!=-0JO z=61i@xg|R}*JtOkJ+gcKe{-?Q9DnFh5utu1FE}?hMfBFiC(KWZZ**Q}yJ5EV<(9sm zo19nsEsM<$miD>2UH0{oTe-iEe=oB*SUugW`L?B;#}S~~>uxvd!-}$nCB8Yzu3HtH zd0l$W_Q`G>PnG&aLNA>2FyHRgT{^G5e%Ynve;+%YIePQjwI|2jm>w(jU0Nb;zxZ2j zvVX#q?@yIZ=ox1&arsyheg5_Z7tvBN<$cZb-j%;x{bT0Ky|I=>)30`!X?!x4nzyxT zqMgk)_H&GXracq*T)x-4+vS$c#?Ec(yFS^KKcUj9YkB$GUDs|gZ(emaAfN4U((d&OdNjqBKUaKx z^X~sL@2l4Hu2dYqeEIejkvSIA-V_J@*!^aYf!-SZWTxCD|8}f5caRLuaIRFI&)i(1 vy=CI<<2*kT)zt((8{PvZQ)p^c`_E7-tp463Vs0ZaZ!mbe`njxgN@xNANg1${ diff --git a/miniwob-sandbox/html/flight/Alaska-auto-medium/images/logos/VX.png b/miniwob-sandbox/html/flight/Alaska-auto-medium/images/logos/VX.png deleted file mode 100644 index 3e5d3bb622367f4101716da90c797ffc24b483ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4217 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 - - - - -Alaska - - - - - - - -

-
-
-

Book a flight

-
-
- - - - - - - - -
-
- - -
-
- - - -
-
-
- -
-
Geolocation
-
-
- -
-
Geolocation
-
-
-
- - -
-
- - -
-
-
-
- -
-
-
-
1
-
+
-
- - Child traveling alone? -
-
-
-

More search options

-
-
-
-
Cabin
-
- - -
-
-
-
Upgrade options
-
- - - - - -
-
-
- -
-
-
-
-
-
-
- - - - -
-
- -
- - - -
- - - - - - - diff --git a/miniwob-sandbox/html/flight/Alaska-auto-medium/mobileweb-v3-28-6227-21813.css b/miniwob-sandbox/html/flight/Alaska-auto-medium/mobileweb-v3-28-6227-21813.css deleted file mode 100644 index 9e3d064..0000000 --- a/miniwob-sandbox/html/flight/Alaska-auto-medium/mobileweb-v3-28-6227-21813.css +++ /dev/null @@ -1 +0,0 @@ -@font-face{font-family:"AS Circular";src:url(stylesheets/circular/ASCircularWeb-Book.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:"AS Circular";src:url(stylesheets/circular/ASCircularWeb-Bold.woff) format("woff");font-weight:700;font-style:normal}html,body,div,span,h1,h2,h3,h4,h5,h6,p,a,img,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;-webkit-overflow-scrolling:auto}h1,h2,.circularfont{font-family:"AS Circular","Helvetica Neue",Helvetica,Arial,sans-serif}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}th{font-weight:bold;text-align:left}th,td{border:1px solid #000;padding:2%;vertical-align:middle}body{color:#3c3b3f;background:#fff;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1;-webkit-text-size-adjust:100%}.group:after{content:".";display:block;height:0;clear:both;visibility:hidden}.left{float:left}.right{float:right}.clear{clear:both}.center{text-align:center}.hidden{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}html{background:#f5f5f5;font-size:10px;margin:0;min-height:100%;padding:0}a{color:#2774ae;text-decoration:none}.inline-list{line-height:1.3;list-style:disc;margin:15px 0 20px 15px}.highlight{color:#3c3b3f}a.info-link-narrow,a.info-link-medium,a.info-link-wide{display:block;color:#3c3b3f}a.info-link-wide:hover{background-color:#e9e9e9}p{font-size:1em;line-height:1.28}b,.b{font-weight:bold}.br{display:block}hr{height:1px;border:0 solid;border-top:1px solid #ccc}.intro{color:#3c3b3f;font-size:14px;font-size:1.4rem;margin-bottom:10px;margin-bottom:1rem}.p-list{color:#fff;font-size:14px;font-size:1.4rem}.p-info{font-size:14px;font-size:1.4rem;line-height:1.3;margin-left:13px}.p-info.contact{margin-bottom:5px}.confirmation-code{margin-bottom:10px}.null{font-size:18px;font-size:1.8rem;line-height:1;padding:10px 30px 20px 30px;text-align:center}.firearmsmodal{margin-left:24px;list-style-type:disc}.wayfindingmodal{padding:8px 0;list-style-type:none}.inline-alerts{display:block;font-weight:bold;padding:5px 0 0 21px;width:100%}.name{font-size:16px;font-size:1.6rem;font-weight:bold;padding-bottom:5px}.name-seat,.name-seat-single{background:#fff;font-size:16px;font-size:1.6rem;font-weight:bold;text-overflow:ellipsis;overflow:hidden;float:left;padding-right:5px}.pcla-callout{float:left;color:#656565;font-weight:bold;width:103px;padding-left:15px;background:url('images/pc_star_grey.png') no-repeat;background-position:0 2px;background-size:12px 12px;white-space:nowrap;line-height:20px}.name-seats-container{clear:both;padding:9px 0}.name-seat-container{float:left;padding:9px 0}.name-seat-single{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.message{font-size:14px;font-size:1.4rem;font-style:italic;font-weight:bold;margin-bottom:5px}.note{font-style:italic;margin-top:7px}::-webkit-input-placeholder{color:#c8c9c7;font-weight:normal}input:-ms-input-placeholder{color:#c8c9c7;font-weight:normal}.img-span{width:320px;margin:0 auto;display:block}.h1{color:#01426a;font-size:2rem;font-weight:bold;margin-bottom:10px;margin-bottom:1.6rem}.h1-results{color:#01426a;font-size:18px;font-size:1.8rem;margin-bottom:5px;margin-bottom:.5rem}.h2{font-size:16px;font-size:1.6rem;font-weight:bold;line-height:1.28;margin-bottom:5px;margin-bottom:.5rem}.h3{font-size:16px;font-size:1.6rem;font-weight:bold;line-height:1.28;margin-bottom:0}.h4{font-size:14px;font-size:1.4rem}.name-heading{font-size:16px;font-size:1.6rem;font-weight:bold}.header-h1{margin-bottom:4px;margin-bottom:.4rem}.w-intro{margin-bottom:5px;margin-bottom:.5rem}.page-sub-heading{font-size:18px;font-size:1.8rem;line-height:1.28}.shaded-heading{color:#01426a;font-size:18px;font-size:1.8rem;font-weight:normal;margin-top:3px;margin-top:.3rem;margin-bottom:15px;margin-bottom:1.5rem}.shaded-bags{background:#fff;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;height:55px;width:55px;margin:0 7px}.shaded .h2,.drop-content .h2,.unshaded .sub-heading{color:#3c3b3f;font-size:2.2rem;font-weight:bold;margin-top:3px;margin-top:.3rem;margin-bottom:15px;margin-bottom:1.5rem}.drop-content .h2{margin:0 0 5px 8px}.unshaded .sub-heading{margin-bottom:5px}.inline-heading{font-size:16px;font-size:1.6rem;font-weight:normal;padding:10px 0 3px 0}.inline-total{color:#3c3b3f;font-size:16px;font-size:1.6rem;font-weight:normal;padding:5px 0 3px 0}.flight-list{font-size:14px;font-size:1.4rem;line-height:1.3}.flight-list.last{margin-bottom:10px}.flight-list dt,.flight-list dd{float:left}.flight-list dt{width:28%}.flight-list .flight-num{width:49%}.flight-list .time{width:23%;text-align:right}.banner{background-color:#01426a;background-image:url(images/home.png),url(images/aura.png);background-repeat:no-repeat,no-repeat;background-position:21px 19px,left;background-size:auto,contain;display:block;text-align:center;padding:6px 0}#banner_home{text-align:center;padding:6px 6px;background:#01426a url(images/aura.png) left no-repeat;background-size:contain}.alaska_logo{height:32px;position:relative;top:3px}.shaded,.unshaded{margin-bottom:15px;margin-bottom:1.5rem;padding:8px}.unshaded-page-title{margin-bottom:15px;margin-bottom:1.5rem;padding:8px 8px 8px 0}.shaded-list .shaded{margin-bottom:12px;margin-bottom:1.2rem}.shaded.link.narrow:hover{background:#e9e9e9}.shaded.link.medium:hover{background:#e9e9e9}.unshaded.header,.unshaded-page-title.header{margin-bottom:0;padding-bottom:5px}.shaded{-webkit-border-radius:3px;border-radius:3px}.shaded-light{-webkit-border-radius:3px;border-radius:3px;margin-bottom:15px;margin-bottom:1.5rem;padding:8px}.shaded.bp-summary{padding:0}.divided,.js .radio-drop.open .divided{border-bottom:1px solid #e0e0e0;margin-bottom:20px;margin-bottom:2rem;padding-bottom:10px}.js .radio-drop .divided{border-bottom:0;margin-bottom:0;padding-bottom:0}.divided.last{border-bottom:1px solid #e0e0e0;margin-bottom:0;padding-bottom:10px}.divided.span{border-bottom:1px solid #e0e0e0;margin:0 0 10px -8px;padding:5px 8px 10px 8px}#booklink{float:none;width:100%}#booklink a{height:56px;background-position:97% 85%;position:relative}.main-nav li{float:left;list-style:none;width:50%}.main-nav h2{font-size:2rem;margin-bottom:1rem}.main-nav div{margin:0 7.5px 0 0}.main-nav .alt{margin:0 0 0 7.5px}.main-nav a{display:block;height:120px;text-decoration:none;position:relative}.main-nav a h2{color:#2774ae}.main-nav a p{color:#3c3b3f}.sub-nav a{color:#2774ae;font-size:18px;font-size:1.8rem;padding:10px 8px 10px 8px;text-decoration:none;position:relative}#alaskalistensli{width:100%}#alaskalistensli a.alaskalistenslink{margin:0;padding-top:12px;height:20px}.normal-text{font-weight:normal;color:#3c3b3f}#alaskalistensli a.alaskalistenslink .title{font-weight:bold;color:#2774ae;font-size:1em}#alaskalistensli a.alaskalistenslink .pipe{color:#3c3b3f;padding:0 10px}.bp-banner{display:block;height:42px;text-decoration:none;width:100%;position:relative;background:#f5f5f5}.bp-banner dt{color:#2774ae;font-size:11px;font-size:1.1rem}.bp-banner dd{color:#2774ae;font-size:18px;font-size:1.7rem;font-weight:bold}.bp-rfid{float:left;margin:0 23px 0 23px;padding:7px 0 0 0}.bp-banner .flight-details{float:left;padding:7px 0 0 0;width:28%}.bp-banner .gate-info{float:left;padding:7px 0 0 0;width:18%}.bp-banner .flight-time{float:left;padding:7px 0 0 0;width:27%}.bp-rfid-multi{margin:0 0 0 0;top:42px;position:absolute}.js .bp-rfid-multi{display:none}.js .bp-rfid-multi.open{display:block}.bp-rfid-multi li{background:#f5f5f5;background-size:10px 13px;border-bottom:1px solid #c8c9c7;border-right:1px solid #c8c9c7;display:block;height:30px;line-height:30px;padding:0 0 0 25px;width:120px}.bp-rfid-multi li.last{-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px}.bp-rfid-multi a{color:#2474ae;display:block;font-size:16px;font-size:1.6rem;text-decoration:none;position:relative}.bp-rfid-multi a .right-sprite{top:5px;right:5px}.bp-drop{background:url(images/expand.png) no-repeat 0 center;background-size:13px 10px;float:left;margin:5px 8px 0 15px;padding:4px 4px 4px 20px;width:28px}.server-msg-success,.server-msg-error,.server-msg-advisory,.home-advisory{line-height:1.3;padding:5px 5px 5px 23px}.server-msg-success{background-color:#48850b;color:#fff}.server-msg-error{background-color:#cb391f;color:#fff}.home-advisory{color:#3c3b3f;background:#f9e595}.home-advisory a{color:#3c3b3f;text-decoration:underline}.server-msg-advisory{background:#f9e595;color:#3c3b3f;padding-bottom:7px}.server-msg-advisory a,.server-msg-error a{color:#3c3b3f;text-decoration:underline;padding-left:8px;padding-right:8px}.server-msg-advisory ul{list-style-type:disc;margin:.5em 0 .5em 30px}.ecert-grey{background:url(images/ecert_grey.png) no-repeat 1px center;background-size:9px 14px;width:18px;height:15px;display:inline-block}.form-error-msg{background:url(images/error.png) no-repeat 5px 5px;color:#cb391f;line-height:1.3;margin:3px 0 0 0;min-height:22px;padding:3px 5px 0 23px}.server-msg-advisory-icon{background:#fcedac url(images/Warning_icon5.png) no-repeat 10px 5px;color:#000;line-height:1.3;margin:3px 0 0 0;min-height:20px;padding:5px 5px 4px 54px}input.error-input,.input-validation-error{border:1px solid #cb391f!important}select.input-validation-error{border:1px solid #cb391f!important}.status-msg{font-size:14px;font-size:1.4rem;line-height:31px;margin:0 -15px;padding:0 0 0 23px;color:#fff}.status-msg.on-time{background-color:#48850b}.status-msg.delay,.status-msg.diverted{background-color:#f9e595;color:#3c3b3f}.status-msg.cancel{background-color:#cb391f}.airline-logo{background:#fff;height:31px;margin:0 -15px}.airline-logo img{padding:0 0 0 23px;height:31px}.checked-in{background:url(images/checkedin_mark2.png) no-repeat left center;color:#48850b;font-size:16px;font-size:1.6rem;margin-left:23px;margin-bottom:-5px;padding-left:20px}#upgradelistinfo{margin-bottom:20px}.fc_seat_assigned{background:url(images/fc_seat_assigned.png) no-repeat center center;background-size:15px 15px;width:15px;height:15px;display:inline-block}.pc_seat_assigned{background:url(images/pc_seat_assigned.png) no-repeat center center;background-size:15px 15px;width:15px;height:15px;display:inline-block}.seat_assigned{background:url(images/seat_assigned.png) no-repeat center center;background-size:15px 15px;width:15px;height:15px;display:inline-block}#prioritylistcontainer{margin:0 -20px}#prioritylist{background:none;width:100%;font-weight:bold}#prioritylist tr.legend th{background:#fff;font-weight:normal;padding-top:20px;padding-bottom:20px}#prioritylist tr.header th{background:#f5f5f5;height:30px}#prioritylist tr:nth-child(even){background:#f5f5f5}#prioritylist th,#prioritylist td{border:0;height:30px;padding:5px 5px}#prioritylist td{font-size:16px}#prioritylist th.pos-col,#prioritylist td.pos-col{padding-left:20px;width:20px}#prioritylist th.last-col,#prioritylist td.last-col{padding-right:20px}.flight-info{position:relative}.flight-info a{text-decoration:none}.flight-info .divided{border-bottom:1px solid #c8c9c7;padding-bottom:8px;margin-bottom:3px}.flight-info .info-head{color:#01426a;font-size:18px;font-size:1.8rem}.flight-info .info-head.divided{padding-bottom:4px}.flight-info .info-head-normal{color:#01426a;font-size:16px;font-size:1.6rem;font-weight:normal;margin:0 0 5px 0}.flight-info .info-head-plain{color:#fff;font-size:16px;font-size:1.6rem;font-weight:bold}.flight-info .info-head-bold{color:#01426a;font-size:16px;font-size:1.6rem;font-weight:bold;margin:5px 0 5px 0}.flight-info .info-head-normal.date{color:#01426a;font-size:16px;font-size:1.6rem;font-weight:normal;margin:0 0 10px 0}.flight-info .info-head-bold.alert{font-weight:normal;margin:10px 0 10px 0}.flight-info .alt-info-head{color:#ffed99}.flight-info .result-list{color:#ffed99}.flight-info dl{float:left;width:50%}.flight-info .cl{clear:left}.flight-info .alt{float:right;clear:right}.flight-info .alt dt,.flight-info .alt dd{margin-left:8px}.flight-info .arrow{background-image:url(images/cp_arrow_small.png);background-position:92% 28px;background-repeat:no-repeat;background-size:20px}.flight-info dt{color:#3b3c3f;font-size:12px;font-size:1.2rem;margin:10px 0 3px}.flight-info dd{color:#212223;font-size:15px;font-size:1.5rem;line-height:1.3;margin-bottom:0}.flight-info .large,.flight-info .xlarge{font-weight:bold;line-height:1;margin-bottom:3px}.flight-info .large{font-size:30px;font-size:3rem}.flight-info .xlarge{font-size:40px;font-size:4rem}.flight-info .normal{font-size:20px;font-size:2rem;font-weight:normal;margin-bottom:3px;text-transform:capitalize}.flight-info .normal-bold{font-size:18px;font-size:1.8rem;font-weight:bold;margin-bottom:3px;text-transform:capitalize}.normal-bold-NoCapitalize{font-size:18px;font-size:1.8rem;font-weight:bold;margin-bottom:3px}.flight-info .details{font-size:16px;font-size:1.6rem;font-weight:bold;margin-bottom:3px}.flight-info .details.small{font-size:14px;font-size:1.4rem;font-weight:normal}.flight-info .light{font-weight:normal;text-transform:none}.flight-info .badge{font-size:11px;font-size:1.1rem;margin:8px 8px 0 0;padding:2px 4px;position:absolute;right:0;top:0}.flight-info .full{width:100%}.flight-info .top dt{margin-top:5px}.flight-info .sub{padding-bottom:15px;width:100%}.flight-info .sub dt,.flight-info .sub dd{float:left;font-size:15px;font-size:1.5rem;margin:0 0 5px;width:50%}.flight-info .sub dd span{display:block;margin-left:8px}.mileage-plan dt{color:#656565;font-size:14px;font-size:1.4rem;position:relative;top:-38px}.mileage-plan dd,.mileage-plan .mileage-status{color:#3c3b3f;font-size:12px;font-size:1.2rem}.mileage-plan dd{position:relative;top:-10px}.mileage-plan .mileage-status{float:right;position:relative;top:-22px}.mileage-amount,.mileage-amount-green{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:3px;border-radius:3px}.mileage-amount{background:#eee;height:20px;margin:25px 0 0 0}.mileage-amount-green{background:#48a9c5;height:100%;text-indent:-9999em;max-width:100%}#bofa_img{padding:0 5px 5px 0}#confirmcodebox{margin:0 auto;text-align:center}#confirmcodebox .shaded{margin-bottom:1.5em;padding:0}#confirmcodebox .flight-info dt{margin-bottom:1.5px}#confirmcodebox a{margin-bottom:1.7em}.confirmcodeboxoal{margin:0 auto 1em;width:95%;text-align:center}.confirmcodeboxoallabel{font-size:12px;font-size:1.2rem;padding:5px 0}.confirmcodeboxoalconfcode{font-size:18px;font-size:1.8rem;padding:0 0 5px}#alaskalistensbox{margin-bottom:1.6em;width:100%;text-align:center}#alaskalistensbox .pipe{color:#ccc;padding:0 10px;font-weight:bold}.flight-info .details-wrap .third{width:100%}.details-wrap .third dt{font-size:15px;font-size:1.5rem;font-weight:bold;float:left;line-height:1.3;margin:0;padding-left:1%;text-transform:uppercase;width:50%}.details-wrap .third dd{float:left;width:49%}.col1{float:left;padding:11px 3% 10px 0;width:27%}.col1.last{padding-bottom:15px}.col2{float:left;margin-top:10px;width:70%}.col1 .checkin{background:url(images/checkedin_icon2.png) no-repeat center top;font-size:12px;font-size:1.2rem;font-weight:normal;padding-top:50px;text-align:center}.col1 .bags-link{background:#48850b;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;height:55px;width:55px;margin:0 auto;-webkit-border-radius:3px;border-radius:3px}.col1 .add-bags{margin-top:5px;text-align:center}.col1 .bags-number{background:url(images/luggage_icon.png) no-repeat 20px 10px;color:#fff;font-size:21px;font-size:2.1rem;font-weight:bold;line-height:.9;margin-left:5px;padding:10px 5px}.col1 .bags-label{font-size:12px;font-size:1.2rem;font-weight:normal;padding-top:3px}.col1 .bags-number-ex{background:url(images/luggage_icon.png) no-repeat 30px 10px;color:#fff;font-size:21px;font-size:2.1rem;font-weight:bold;line-height:.9;margin-left:-2px;padding:10px 5px}.col1 .bags-label-ex{font-size:12px;font-size:1.2rem;font-weight:normal;padding-top:3px;margin-left:7px}.flight-info .full-span{padding:5px 0 5px 0;width:100%}.flight-info .full-span dt,.flight-info .full-span dd{color:#01426a;font-size:15px;font-size:1.5rem;float:left;line-height:1.3;margin:0}.flight-info .full-span dt{width:34%}.flight-info .full-span dd{width:32%}.seat-link{float:left;line-height:1.3}.flight-info .bp-info{float:left;height:62px;margin:10px 0 0 0;padding:0;position:relative;text-align:center;width:85px}.flight-info .bp-info.middle{left:50%;margin-left:-127px;margin-top:10px}.flight-info .bp-info.last{float:right}.bp-img-wrap{background:#fff;float:left;left:50%;margin-left:-78px;padding:8px;position:relative;width:143px}.bp-list dl{float:left;width:100%}.bp-list dt{float:left;width:60%}.bp-list .airport{float:left;width:40%}.bp-list a{font-weight:bold;text-decoration:none}.flight-info-wrapper{padding:8px}.bp-summary .passengers{padding:8px}.bp-summary .passengers a{text-decoration:none}.bp-summary .passengers .full-name{font-size:14px;font-size:1.4rem;font-weight:bold;text-decoration:none;color:#01426a}.bp-badge,.bp-badge-display{border:1px solid #e3e3e3;font-weight:bold;padding:5px}.bp-badge{float:right}.bp-badge-display{margin-top:3px;text-align:center}.bp-depdate{padding-left:10px}.flight-info.city-pair .departs-wrap{float:left;width:50%}.flight-info.city-pair .departs{width:50%}.flight-info.city-pair .departs-wrap:after{float:left;content:"";background:url(images/flight_arrow.png) no-repeat center top;display:block;background-size:30px;margin-top:18px;text-align:center;width:50%;height:30px}.flight-info .cp-status{margin-top:5px}.flight-info .cp-status dt,.flight-info .cp-status dd{float:left;font-size:14px;font-size:1.4rem;line-height:1.3;margin-top:0;text-transform:capitalize}.flight-info .cp-status dt{color:#fff}.flight-info .cp-status dd{margin:0 0 0 5px}.flight-info.my-trips .arrives{width:28%}.flight-info.my-trips .confirmation{width:72%}.flight-info.my-trips .confirmation dt,.flight-info.my-trips .confirmation dd{margin-left:16px}.flight-info .text-link{text-decoration:none;font-weight:normal}.geo-wrap{padding-right:2.6em;position:relative}.geo-img{background:url(images/geo.png) no-repeat center center;display:block;text-indent:-9999px;background-size:22px;height:22px;width:22px}.info-img{background:url(images/info2.png) no-repeat center center;display:block;text-indent:-9999px;width:18px;height:18px;background-size:18px}.refresh-button{margin:-22px -4px 0 0;background-repeat:no-repeat;background-position:center center;text-indent:-9999px;height:16px;width:16px;background-image:url(images/refresh.png)}.geo-button,.info-button{margin:1.25em 0 0 1em;padding:.4em;position:absolute;right:0;top:0}.no-js .geo-wrap,.no-geolocation .geo-wrap{padding-right:0}.no-js .geo-button,.no-geolocation .geo-button{display:none}.calbg{background:url(images/cal3.png) 95% center no-repeat}.discount-code-wrap{padding-right:2.6em;position:relative}.form-dl{margin-top:5px;margin-bottom:10px}.form-dl.top{margin:0 0 7px 0}.form-dl.bottom{margin:0 0 15px 0}.form-dl dt{color:#3c3b3f;font-size:12px;font-size:1.2rem}.form-dl dd{font-size:20px;font-size:2rem;font-weight:bold;line-height:1.3}.form-dl .value{font-size:16px;font-size:1.6rem;font-weight:bold;margin-bottom:5px;text-transform:uppercase}.form-dl .label{color:#3c3b3f;font-size:16px;font-size:1.6rem;font-weight:bold;margin-bottom:5px;text-transform:capitalize}.form-dl .list-name{font-size:16px;font-size:1.6rem;font-weight:bold}.form-dl .m-number{font-size:30px;font-size:3rem;font-weight:bold}.form-dl .m-status{font-size:18px;font-size:1.8rem;font-weight:bold}.form-row{margin:0 0 15px 0}.form-row.top{margin:15px 0 15px 0}.form-row.bottom{margin-bottom:25px}.form-row-name{margin:0 0 20px 0}.form-row-middle{margin:0 0 10px 0}.form-row.last{margin-bottom:0}.form-row.left{float:left;width:100%}.form-row .sub-group-small{float:left;margin-right:10px;width:30%}.form-row .sub-group-medium{float:left;margin-right:5%;width:50%}.form-row .sub-group-medium.last{float:left;margin-right:0;width:45%}.text-label,.row-label{display:block;font-size:12px;font-size:1.2rem;width:100%}.text-label-head,.row-label-head{display:block;font-size:12px;font-size:1.2rem;padding-top:5px}.row-select{display:block;font-family:inherit;font-size:16px;margin:5px 0 0 0;width:100%;height:30px;box-sizing:border-box}.row-select.alert{margin:5px 0 20px 0}.row-select-full-date{display:block;font-family:inherit;font-size:16px;margin:5px 0 10px 0;width:100%;height:30px;box-sizing:border-box}.row-select-month{display:block;float:left;font-family:inherit;font-size:16px;margin:5px 0 0 0;width:38%;height:30px}.row-select-day{display:block;float:left;font-family:inherit;font-size:16px;margin:5px 2% 0 2%;width:25%;height:30px}.row-select-year{display:block;float:left;font-family:inherit;font-size:16px;margin:5px 0 0 0;width:33%;height:30px}.row-select option{font-size:16px;line-height:30px}.or-input{float:left;width:50%}.or{font-size:18px;font-style:italic;float:left;width:50%;margin-top:23px}.or-span{padding-left:8px}.text-input,.text-input-pad{border:0;border-radius:0;border:1px solid #c8c9c7;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;color:#3c3b3f;display:block;font-family:inherit;font-weight:normal;font-size:16px;height:30px;margin-top:5px;padding-left:5px;width:100%;-webkit-appearance:none}.text-input:focus,.text-input-pad:focus{border:2px solid #01426a!important;color:#01426a!important;font-weight:bold!important;outline-color:transparent!important;outline-style:none!important}.text-input-pad{padding-right:30px}.date-input-day,.date-input-month{float:left;width:17%}.date-input-year{float:left;width:25%}.date-slash-lbl{width:5%;float:left;line-height:25px;padding-top:10px;text-align:center}input[readonly]{background-color:#bbb}select[disabled]{background-color:#bbb;-webkit-appearance:none}select:focus{outline-color:transparent!important;outline-style:none!important}.cleartxt,.cleartxt0{background:url('images/clear_text2.png') center center no-repeat;height:28px;position:absolute;right:38px;top:18px;width:28px}.cleartxt0{right:0}.radio-label,.checkbox-label{font-size:1em;vertical-align:middle;width:100%}.checkin-slctpax-name{color:#3c3b3f;font-size:16px;font-size:1.6rem;font-weight:bold}.radio-input,.checkbox-input{margin-right:7px}.checkbox-input.terms,.radio-input.terms{float:left}input[type=checkbox]{padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;width:18px;height:18px;vertical-align:text-bottom}input[type=checkbox].css-chkbox,input[type=radio].css-radio{display:none}input[type=checkbox].css-chkbox+label.css-lbl,input[type=radio].css-radio+label.css-lbl{padding-left:25px;height:25px;display:inline-block;line-height:27px;background-repeat:no-repeat}.css-lbl{background-image:url(images/chkboxes3.png)}input[type=checkbox].css-chkbox:checked+label.css-lbl,input[type=radio].css-radio:checked+label.css-lbl{background-position:0 -26px}.button,.button-link{background:#48850b;border:1px solid #48850b;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:#fff;font-size:1em;font-weight:bold;height:40px;text-transform:uppercase;-webkit-appearance:none;-webkit-box-shadow:0 0 3px 0 rgba(0,0,0,.35);box-shadow:0 0 3px 0 rgba(0,0,0,.35);letter-spacing:.4px}.button,.button-link{display:block;width:100%;margin:0 auto}.button:hover,.button-link:hover{background:#366408;color:rgba(255,255,255,.5);cursor:pointer;-webkit-appearance:none}.button.top{margin-top:5px}.button-link.top{margin-top:10px}.button-link.top-extra{margin-top:20px}.button-link{display:block;line-height:37px;text-align:center;text-decoration:none}.button.secondary,.button-link.secondary{background:#fff;border:2px solid #2774ae;color:#2774ae;text-decoration:none;text-transform:uppercase;-webkit-appearance:none}.button.secondary:hover,.button-link.secondary:hover{background:#e9e9e9}.button-link.half{float:left;margin-right:2%;width:49%}.button.half{float:left;margin-right:0;width:49%}.button.disabled,.button-link.disabled,.button.disabled:hover,.button-link.disabled:hover,.button[disabled]{border-color:#c8c9c7;background:#c8c9c7;color:#fff;cursor:default;-webkit-appearance:none}.linklook,.linklookb{background:none;border:0;cursor:pointer;font-size:1em;padding:0;margin-bottom:1rem;color:#2774ae}.js .radio-controller{margin:5px 0 25px 0}.js .radio-controller.five label{width:20%;font-size:.9em}.js .radio-controller.four label{width:25%}.js .radio-controller.three label{width:33%}.js .radio-controller.two label{width:50%}.js .radio-controller input{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.js .radio-controller label{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;color:#2774ae;display:block;font-size:1em;font-weight:normal;line-height:28px;text-align:center}.js .radio-controller label:hover{cursor:pointer}.js .radio-controller .left-link{border-bottom:1px solid #2774ae}.js .radio-controller .center-link{border-bottom:1px solid #2774ae;border-left:0}.js .radio-controller .right-link{border-bottom:1px solid #2774ae}.js .radio-controller .current{border-bottom:8px solid #01426a;color:#01426a}.js .radio-controller .disabled{background:#fff;color:#c8c9c7;cursor:default;border-bottom:2px solid #c8c9c7}.seat-map-key{padding:5px 0 0 0;overflow:hidden;transition:all .5s}.seat-map-key.hidden{height:0;opacity:0}.legend-body{transition:all .5s;max-height:300px;opacity:1}.legend-body.collapsed{max-height:0;opacity:0}.seat-map-key li{display:block;float:left;height:25px;line-height:25px;width:36%}.seat-map-key li.short{width:30%}.seat-map-key li.wide{width:100%}#legend-toggle-img{height:16px;margin-left:4px;transform:translateY(2px)}.occupied-key{background-size:15px;float:left;height:15px;margin:4px 6px 0 0;width:15px}.available-key,.your-seat-key,.prem-key,.ppls-key,.prem-class-key{border-width:0;float:left;height:15px;margin:4px 6px 0 0;width:15px;border-radius:1px}.available-key{background-color:#48a9c5}.occupied-key{border-radius:1px;background-color:#c8c9c7;background-image:url(images/occupied_reserved_legend.png)}.your-seat-key{background-color:#48850b}.prem-key{background-color:#48a9c5;background-image:url(images/premium_triangle_legend.png);background-size:15px}.prem-class-key{background-color:#01426a;background-image:url(images/pc_star_legend.png);background-size:15px}.ppls-key{background-color:#2774ae;background-image:url(images/legroom_diamond_legend.png);background-size:15px}.no-js .your-seat-key{display:none}.js .nojsseat,.no-js .jsseat,.no-js .sm-name{display:none}.jsseat input{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.jsseat label{background:#b3d57d;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;font-size:1em;font-weight:600;height:35px;line-height:37px;text-align:center;width:37px;border-radius:4px}.jsseat.single{float:left;margin-right:1.5%}.jsseat.multi{float:left;height:43px;margin-right:1.5%;width:13%}.jsseat.multi.last{margin:0}.jsseat.single.current label{background:#48850b;color:#fff}.jsseat.multi.current{background-image:url(images/selected_pax_multi.png);background-size:15px 7px;background-position:11px 35px;background-repeat:no-repeat}.jsseat.multi.current label{background:#48850b;color:#fff}.seat-summary-intro{border-top:1px solid #cdcdcd;padding-top:10px}.seat-summary-amount{padding:20px 0;text-align:right}.seat-summary-amount p{line-height:1.7em}.total-price{font-size:1.3em}.span{width:100%;margin:0 0 0 -15px;padding:0 15px}.span.img{padding:0}.span.bp-list{background:#014680;background:rgba(0,0,0,.2) url(images/info_link_arrow_wide.png) no-repeat right center;border-top:solid 1px #cecece;margin-bottom:0;padding-bottom:15px;padding-top:15px}.span.bp-list.disabled{background:rgba(0,0,0,.1) url(images/info_link_arrow_wide.png) no-repeat right center}.drop,.drop-link-rule{background:url(images/expand.png) no-repeat 11px 13px;padding:0 15px;width:100%;border:1px solid #e2e2e2;margin:0 0 -1px -15px;border-left:0;border-right:0}.drop.close{margin-bottom:0}.shaded-span{margin:0 -15px 5px -15px;padding:0 15px}.open.drop-link-rule,.open.drop{background-image:url(images/collapse.png);padding-bottom:15px}.drop-head{color:#2774ae;font-size:14px;font-size:1.4rem;padding:15px 0 15px 22px;font:inherit}.drop-head.f-links{font-size:16px;font-size:1.6rem;padding:15px 0 15px 22px}.drop-head:hover{cursor:pointer}.drop-content{padding:0 1px 0 1px}.js .drop-content,.js .radio-drop-content{display:none}.js .open .drop-content,.js .open .radio-drop-content{display:block}.u-sign-in{border-top:1px solid #c8c9c7;background:#fff;bottom:0;position:absolute;width:100%}.u-sign-in .drop-head{padding:9px 20px;font-weight:normal}.sign-inout-link{font-size:14px;font-size:1.4rem;padding:9px 20px;display:block;text-decoration:none}.u-sign-in .drop-content{padding:0 23px 15px 23px}.u-sign-in-form{padding-bottom:50px}body,[role="main"],.u-sign-in-wrapper{margin:0 auto;max-width:800px;min-width:240px}.u-sign-in-wrapper{position:relative}[role="main"]{padding:15px 15px 65px 15px}.sign-in-open[role="main"]{padding-bottom:328px}#footer-wrapper{background:#01426a;padding:0 0 16px 0;color:#fff}#footer-nav{padding:10px 20px;background:#e9e9e9}#footer-nav li{display:block;float:left;list-style:none}#footer-nav a,#optfees-link,#cc-link{font-size:13px;font-size:1.3rem;font-weight:bold;text-decoration:none;color:#01426a}#cc-link{width:27%}#optfees-link{width:27%}#help-link{width:10%}#full-link{text-align:center;width:25%}#legal-link{text-align:center;width:17%}#privacy-link{text-align:center;width:21%}#contact-link{text-align:right;width:27%}#more-links{padding:10px;text-align:center}#more-links a{color:#fff}#copyright{color:#fff;font-size:.8em;text-align:center}#debug{display:none}.footer-text-link{display:block;font-size:16px;font-size:1.6rem;margin:5px 0 5px 7px;padding:15px 8px 15px 15px;width:95%}.footer-text-link a{display:block;text-decoration:none}.js .toggle{display:none}.js .toggle.default-toggle{display:block}.disable-ui{position:absolute;top:0;left:0;width:100%;height:2500px;z-index:100;overflow:hidden;background:rgba(0,0,0,.7)}#cuba-info ul{list-style:disc;margin:auto;padding-left:40px}#modal-window #cuba-info .button.secondary{margin-top:5px}#modal-window #cuba-info{height:100%}#modal-window .scrollable{overflow-y:scroll}#cuba-info .scrollable{padding-right:8px}#modal-window,#cal-modal-window{position:relative;width:75%;min-width:268px;max-width:500px;margin:0 auto;background:#fff;color:#3c3b3f;padding:15px;-webkit-box-shadow:0 0 25px #000;box-shadow:0 0 25px #000;z-index:101;-webkit-border-radius:3px;border-radius:4px;line-height:18px}#cal-modal-window{width:268px}#modal-window h2{font-size:16px;font-size:1.6rem;font-weight:bold;color:#01426a;margin-top:3px;margin-top:.3rem;margin-bottom:10px;margin-bottom:1rem}#modal-window p{margin-bottom:1em}#modal-window input.button,#modal-window a.button-link{margin-top:15px}#modal-window .button.secondary,#modal-window .button-link.secondary{margin-top:15px}.popup{position:fixed;left:50%;bottom:18px;background:#fff;color:#333;padding:12px 16px 32px 16px;width:75%;min-height:72px;max-width:600px;margin-left:-37.5%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:0 0 8px #222;box-shadow:0 0 8px #222;z-index:1001;font-size:1.1em}.popup p{width:90%}.popup.ios p{width:64%}.popup a.close-popup{background-image:url(images/icon_close.png);position:absolute;right:8px;top:8px;width:22px;height:22px}.popup .icon-barcode{background-image:url(images/icon_barcode.png);width:66px;height:64px;position:absolute;top:50%;right:26px;margin-top:-33px}.popup .arrow-down{width:25px;height:25px;background:#fff;position:absolute;bottom:-12px;left:50%;margin-left:-12.5px;-webkit-box-shadow:inherit;box-shadow:inherit;-webkit-transform:rotate(45deg)}.popup .cover-shadow{width:50px;height:25px;background:#fff;z-index:1002;position:absolute;left:50%;bottom:0;margin-left:-25px}.geo-active{border-bottom-left-radius:0;border-bottom-right-radius:0}.input-selections{font-size:16px;font-size:1.6rem;color:#01426a;position:absolute;width:100%;z-index:100}.input-selections:focus{border-color:red}.input-selections li{background:#fff;border:1px solid #01426a;border-bottom:0;color:#01426a;line-height:1.8;padding-left:8px;margin-right:36px}.input-selections{top:46px}.form-row{position:relative}.input-selections li:hover{cursor:pointer}.input-selections .last{border-bottom:1px solid #01426a;border-bottom-left-radius:5px;border-bottom-right-radius:5px}[role=main].boarding-pass{background-image:none;padding-bottom:0}.boarding-pass .passenger-number{color:#fff;font-size:14px}.barcode-img{background:#fff no-repeat center center;height:150px;margin:0 auto 5px;width:165px}.barcode-text{font-weight:bold;text-align:center;min-height:1em}.barcode{margin:20px 0 10px 0}.barcode-error{font-size:18px;text-align:center;height:147px;padding:12px;max-width:200px;margin:0 auto}.tsaprecheck-img{background:no-repeat;height:24px;width:84px}.passbook-div{text-align:center;padding-top:6px}.time-mark{font-size:18px;font-size:1.8rem}.bp-menu li{color:#01426a;font-size:16px;border:1px solid #fff;border-width:1px 0 0 0;padding:12px 23px}.bp-menu li.current{color:#fff;background-color:#01426a;background-image:none}.bp-menu li:hover{cursor:pointer}.bp-menu .last{border-width:1px 0}.bp-unavailable{display:block;clear:both;font-size:14px;font-style:italic;font-weight:normal;line-height:1.4;color:#fda93c;text-transform:lowercase}.bp-flight-header{background:#014680;background:rgba(0,0,0,.2);border:1px solid #fff;border-width:1px 0;padding:10px 23px}.boarding-pass .airline{float:left}.boarding-pass .city-pair{float:right;margin-right:15px}.bp-dl-wrap-left{float:left;width:42%}.bp-dl-wrap-middle{float:left;width:26%}.bp-dl-wrap-right{float:left;width:32%}.bp-dl{float:none;border:1px solid #e3e3e3;margin:0 3px;height:42px;padding:12px 0}.bp-dl.left{margin-left:0}.bp-dl.right{margin-right:0}.bp-dl dt{color:#212223;font-size:12px;font-size:1.2rem;text-align:center}.bp-dl dd{color:#212223;text-align:center;font-size:30px;font-weight:bold}.bp-exit-row{font-size:12px!important;font-weight:normal!important}[role=main].boarding-pass{padding:15px 0 0 0}.boarding-pass .unshaded{padding:0 23px}.boarding-pass .span{margin:0;width:auto;position:relative}.boarding-pass .bp-menu .h1{margin-left:23px}.bp-menu-item .right-sprite{top:10px;right:5px}.bp-menu-item.current .right-sprite{display:none}.bp-prev,.bp-next{position:absolute;background-repeat:no-repeat;background-position:10px center;display:block;height:110px;text-decoration:none;text-indent:-9999px;width:35px;z-index:100}.bp-prev .left-sprite{top:45px;left:8px}.bp-next .right-sprite{top:45px;left:10px}.bp-prev.menu,.bp-next.menu{text-indent:0}.text-nav-left,.text-nav-right{color:#2774ae;display:block;text-indent:none;z-index:101}.text-nav-left{margin-top:50px;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.text-nav-right{margin-left:5px;margin-top:42px;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.bp-prev{border:2px solid #2774ae;border-left:0;left:0;top:115px;-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px}.bp-next{border:2px solid #2774ae;border-right:0;right:0;top:115px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px}.dropshadow{box-shadow:0 3px 3px 0 rgba(0,0,0,.15)}.seatmapwrap{background:#f5f5f5;margin:0 -15px;padding:12px 0}.seat-row,.seat-row-first{margin:0 15px}#seat-map-header-container{position:fixed;top:0;left:0;width:100%;z-index:50}#seat-map-header.is-visible{border-bottom:1px solid #cdcdcd}#seat-map-header-wrapper{background:rgba(255,255,255,.96);overflow:hidden;max-width:800px;min-width:240px;margin:0 auto}#seat-map-legend{padding-top:15px;padding-bottom:15px;overflow:hidden}#seat-map-legend-toggle{cursor:pointer}#section-container{overflow:hidden;max-height:100px;opacity:1}#section-container.collapsed{max-height:0;opacity:0}#section-legend{margin:0 9px 0 0}.seat-map-section{font-weight:600;padding:15px 15px;color:#fff}.seat-map-section.first-class{background-color:#01426a}.seat-map-section.premium-class{background-color:#01426a}.seat-map-section.preferred-plus{background-color:#2774ae}.seat-map-section.main-cabin{background-color:#48a9c5}.seat-map-section.preferred-refundable{background-color:#48a9c5}.section-info-image{width:18px}#section-map-link{float:right;display:inline;margin:-15px -15px;padding-top:13px;padding-right:15px;padding-left:15px;padding-bottom:11px}.seatcard img{height:30px}.seatcardhead{padding:0 3%}.seatcardhead2 div{padding:2px 0}.seatcardnum{float:right;line-height:30px}.seatcarddetail{background:url(images/flight_arrow.png) center center no-repeat;background-size:27px;padding:3%}.cabinline{border-bottom:1px solid #c8c9c7;height:1px;width:50%;margin:0 0}.letterspacer{width:10%;height:1em;float:left}.seat-row-first .seatnumber{line-height:71px}.seatnumber,.seatnumberexitrow{font-family:"AS Circular","Helvetica Neue",Helvetica,Arial,sans-serif;margin-bottom:-12px;float:left;width:10%;height:47px;text-align:center;line-height:58px;font-size:medium;font-weight:bold}.seatnumberexitrow{color:#cb391f}.exitrowmarker{background-color:#cb391f;float:left;width:5px;height:47px;text-align:center;line-height:47px;padding:4px 0}.exitrowmarkernone{float:left;width:5px;height:47px;text-align:center;line-height:47px}.wingl,.wingr{width:15px;height:47px;background-color:#c8c9c7;padding:4px 0}.wingl{float:left;margin-left:-15px}.wingr{float:right;margin-right:-15px}.exitlabel{margin-top:12px;font-weight:bold;color:#cb391f;width:100%;text-align:center}.seat-select{position:absolute;top:0;width:100%;z-index:20}.seat-row li{float:left;margin:10px 0 10px}.seat-row .seat,.seat-row-first .seat{background:#48a9c5;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;height:35px;width:35px;margin:0 auto;text-indent:-9999px;border-radius:3.5px}.seat-row-first .seat{height:50px;width:50px;border-radius:5px;background:#01426a}.seat-row .seat.premium{background-color:#48a9c5;background-image:url(images/premium_triangle.png);background-size:34px}.seat-row .seat.ppls{background-color:#2774ae;background-image:url(images/legroom_diamond.png);background-size:34px}.seat-row .seat.pcla{background-color:#01426a;background-image:url(images/pc_star.png);background-size:34px}.seat-row .seat.reserved{background-color:#f5f5f5;background-image:url(images/occupied_reserved.png);background-size:34px}.seat-row-first .seat.reserved{background-color:#f5f5f5;background-image:url(images/occupied_reserved.png);background-size:50px}.seat-row .seat.accessible,.seat-row .seat.accessible.party,.seat-row .seat.accessible.reserved,.seat-row .seat.minor,.seat-row .seat.minor.reserved{width:37px;height:37px;background-size:37px 37px;background-repeat:no-repeat;background-position:center center}.seat-row .seat.minor,.seat-row .seat.minor.reserved{background-size:11px}.seat-row .seat.accessible{background-image:url(images/accessible_white.png)}.seat-row .seat.accessible.premium{background-image:url(images/premium_triangle.png),url(images/accessible_white.png);background-size:37px}.seat-row .seat.accessible.ppls{background-image:url(images/ppls_star.png),url(images/accessible_white.png);background-size:37px}.seat-row .seat.accessible.reserved{background-color:#c8c9c7;background-image:url(images/accessible_gray.png)}.seat-row .seat.current,.seat-row-first .seat.current{background-color:#48850b}.seat-row .seat.party,.seat-row-first .seat.party{background-color:#b3d57d}.seat-row .l3,.seat-row .r3{width:43.15%;float:left;margin:0}.seat-row .l2{width:28%;float:left;margin-left:15%}.seat-row .r2{width:28%;float:left;margin-right:15%}.seat-row .l1{width:15%;float:left;margin-left:28%}.seat-row .r1{width:15%;float:left;margin-right:28%}.seat-row-first li{float:left;margin:10px 0}.seat-row-first .l1{width:15%;float:left;margin-left:30%}.seat-row-first .l2{float:left;width:43%}.seat-row-first .r2{float:left;width:43%}.l3 li,.r3 li{width:33.3333%}.l2 li,.r2 li{width:50%}.l1 li,.r1 li{width:100%}.l3exit li,.r3exit li{width:32.3333%}.galley,.lav{margin:5px 0 5px}.galley span,.exitlabel span,.lav span{display:block;height:37px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.galley span{background:#fff url(images/gal.png) no-repeat center center;text-indent:-9999px;background-color:#eee}.lav span{background:#fff url(images/lav.png) no-repeat center center;background-size:27px;text-indent:-9999px;margin:5px 0;background-color:#eee}.exitlabel span{text-indent:-9999px;margin:5px 0;font-weight:bold;color:#b92028;width:100%;text-align:center}#passengers-container{padding:0 15px 0 15px}#seat-map-passengers{font-family:"AS Circular","Helvetica Neue",Helvetica,Arial,sans-serif;padding:8px 0 3px 0}.paxseatinput{width:70px;display:inline;text-align:center}.letter-key{padding:2px 0;font-family:"AS Circular","Helvetica Neue",Helvetica,Arial,sans-serif}.letter-key li{font-size:16px;font-size:1.6rem;text-align:center;font-weight:bold}.js .bp-flight-info{display:none}.js .bp-flight-info.current{display:block}.js .bp-flight-header{display:none}.bag_fees_total{font-size:1.3em;font-weight:bold}.ppls_summary_list{padding:10px 0}.ppls_summary_citypair{padding:5px 0}.ppls_summary_item{padding:5px 0}@media screen and (max-width:319px){.main-nav li{list-style:none;width:100%}.main-nav div,.main-nav .alt{margin:0}.main-nav a{background-image:none;color:#2774ae;display:block;height:auto;text-decoration:none}}@media screen and (min-width:321px){.span.img{padding:0 15px}}#bp-offline-both,#bp-offline-email{display:none}.applicationcache #bp-offline-both,.no-js #bp-offline-email,.no-applicationcache #bp-offline-email,.no-localstorage #bp-offline-email{display:block}.no-js .bp-flight-header{display:none}.bp-info-pad{padding-bottom:10px}.bp-warning{color:#cb391f}#exempt-items-list{list-style-type:disc;margin:5px 0 0 20px}#exempt-items-list li{margin-bottom:3px}.js #payforbags-warning,.js .signin-url-msg{display:none}div.spinner{position:relative;width:13px;height:13px;display:inline-block}div.spinner div{width:20%;height:55%;position:absolute;left:40%;top:40%;opacity:90;-webkit-animation:fade 1s linear infinite;animation:fade 1s linear infinite}div.spinner div.bar1{-webkit-transform:rotate(0deg) translate(0,-142%);-webkit-animation-delay:0s;transform:rotate(0deg) translate(0,-142%);animation-delay:0s}div.spinner div.bar2{-webkit-transform:rotate(30deg) translate(0,-142%);-webkit-animation-delay:-.9167s;transform:rotate(30deg) translate(0,-142%);animation-delay:-.9167s}div.spinner div.bar3{-webkit-transform:rotate(60deg) translate(0,-142%);-webkit-animation-delay:-.833s;transform:rotate(60deg) translate(0,-142%);animation-delay:-.833s}div.spinner div.bar4{-webkit-transform:rotate(90deg) translate(0,-142%);-webkit-animation-delay:-.75s;transform:rotate(90deg) translate(0,-142%);animation-delay:-.75s}div.spinner div.bar5{-webkit-transform:rotate(120deg) translate(0,-142%);-webkit-animation-delay:-.667s;transform:rotate(120deg) translate(0,-142%);animation-delay:-.667s}div.spinner div.bar6{-webkit-transform:rotate(150deg) translate(0,-142%);-webkit-animation-delay:-.5833s;transform:rotate(150deg) translate(0,-142%);animation-delay:-.5833s}div.spinner div.bar7{-webkit-transform:rotate(180deg) translate(0,-142%);-webkit-animation-delay:-.5s;transform:rotate(180deg) translate(0,-142%);animation-delay:-.5s}div.spinner div.bar8{-webkit-transform:rotate(210deg) translate(0,-142%);-webkit-animation-delay:-.41667s;transform:rotate(210deg) translate(0,-142%);animation-delay:-.41667s}div.spinner div.bar9{-webkit-transform:rotate(240deg) translate(0,-142%);-webkit-animation-delay:-.333s;transform:rotate(240deg) translate(0,-142%);animation-delay:-.333s}div.spinner div.bar10{-webkit-transform:rotate(270deg) translate(0,-142%);-webkit-animation-delay:-.25s;transform:rotate(270deg) translate(0,-142%);animation-delay:-.25s}div.spinner div.bar11{-webkit-transform:rotate(300deg) translate(0,-142%);-webkit-animation-delay:-.1667s;transform:rotate(300deg) translate(0,-142%);animation-delay:-.1667s}div.spinner div.bar12{-webkit-transform:rotate(330deg) translate(0,-142%);-webkit-animation-delay:-.0833s;transform:rotate(330deg) translate(0,-142%);animation-delay:-.0833s}@-webkit-keyframes fade{from{opacity:1}to{opacity:.25}}@keyframes fade{from{opacity:1}to{opacity:.25}}div.container{-webkit-border-radius:3px;border-radius:3px;display:inline-block;background:#01426a;padding:1em}div.container div.spinner div{background:#fff}.join-modal-content{display:none}.join-tip-textbox,.join-tip-checkbox{background:url('images/help.png') no-repeat center center;background-size:15px 15px;float:left;height:16px;margin-left:5px;width:16px}.join-tip-textbox{margin-top:-3px}.join-tip-checkbox{margin-top:0}.label-align{padding-bottom:5px;padding-right:1px}.t-pixel{height:0;width:0;display:none}.hazmat-img{background:url(images/hazmat.png) no-repeat center center;background-size:277px 123px;display:block;height:123px}.shadow{-webkit-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 0 3px 0 rgba(0,0,0,.15);box-shadow:0 0 3px 0 rgba(0,0,0,.15)}.ppls_head{padding:10px 10px 1px 10px;font-size:2.5em;line-height:1em}.pplus-price{font-size:.7em}.ppls_list li{background:url(images/ppls.png) no-repeat;background-size:27.5px 82.5px;color:#00567e;font-size:1.5em;margin:18px 15px;padding-left:40px;line-height:30px;height:27.5px}.ppls_list li.legroom{background-position:0 0}.ppls_list li.priorityboarding{background-position:0 -27.5px}.ppls_list li.freedrink{background-position:0 -55px}.ppls_foot{font-size:.9em;margin:9px 15px}.free-upgrade,.pc-h2{color:#87cefa;font-weight:700;font-size:1em}.seat-upgrade-header{background-color:#07446a;border-radius:3px 3px 0 0}.pcla-header,.pc-h1{font-size:1.5em;color:#87cefa;font-weight:600;margin-top:3px}#pcla-submit{margin-top:12px}.pcla-benefits{font-weight:600;margin-bottom:24px}ul.pcla_list{font-weight:600}ul.pcla_list li{padding:1px 0;font-size:.9em}.left-sprite{background-image:url(images/leftright.png);background-position:0 0;background-size:38px 19px;display:inline-block;height:19px;width:19px;position:absolute}.right-sprite{background-image:url(images/leftright.png);background-position:-19px 0;background-size:38px 19px;display:inline-block;height:19px;width:19px;position:absolute}.main-nav .right-sprite{bottom:8px;right:8px}.sub-nav .right-sprite{right:8px}.info-link-medium .right-sprite{top:44%;right:8px}.visa-checkout{margin-top:1.5rem;border:1px solid transparent}.visa-checkout .v-button{margin-top:1.5rem}.server-msg-advisory.visa-checkout-msg{margin-top:12px}.cc-info{margin-bottom:0}#visa-checkout-info{margin-top:1.5rem;margin-left:-6px;margin-right:-6px}.visa-checkout-header .h2{display:inline-block}.visa-checkout-header a{float:right;margin-top:9px}.visa-summary-form .divided-group{border-bottom:1px solid #c8c9c7;padding:8px 0}.visa-summary-form .divided-group:last-child{border-bottom:none}.visa-summary-form dl{width:100%}.visa-summary-form dt{float:left;width:33.33333%;margin-bottom:5px;font-weight:600}.visa-summary-form dd{float:left;margin-bottom:5px;width:66.66666%}#btn-change-payment-method{background:none;border:none;color:#2774ae;font-size:1.4rem;padding:15px 15px 15px 8px;cursor:pointer}#change-payment-method{margin:0 -15px;padding:0 8px;border-top:1px solid #e2e2e2}.clearfix{zoom:1}.clearfix:before,.clearfix:after{display:table;content:'';line-height:0}.clearfix:after{clear:both}.strike{display:block;text-align:center;overflow:hidden;white-space:nowrap;margin-top:24px}.strike>span{position:relative;display:inline-block;font-weight:600}.strike>span:before,.strike>span:after{content:"";position:absolute;top:50%;width:9999px;height:1px;background:#e3e3e3}.strike>span:before{right:100%;margin-right:10px}.strike>span:after{left:100%;margin-left:10px}@media only screen and (-webkit-min-device-pixel-ratio:2){.banner{background-image:url(images/home_retina.png),url(images/aura.png);background-size:21px,contain}.form-error-msg{background:url(images/error_retina.png) no-repeat 5px 5px;background-size:13px}.checked-in{background:url(images/checkedin_mark_retina2.png) no-repeat left center;background-size:13px}.col1 .bags-number{background-image:url(images/luggage_icon_retina.png);background-size:21px}.col1 .checkin{background:url(images/checkedin_icon_retina2.png) no-repeat center top;background-size:45px}.calbg{background:url(images/cal_retina3.png) 95% center no-repeat;background-size:22px}.popup .icon-barcode{background-image:url(images/icon_barcode_retina.png);background-size:66px}.popup a.close-popup{background-image:url(images/icon_close_retina.png);background-size:22px}.css-lbl{background-image:url(images/chkboxes_retina3.png);background-size:25px}.bp-drop{background-image:url(images/expand_retina.png);background-size:12px}.seat-row .seat.premium{background-image:url(images/premium_triangle_retina.png)}.seat-row .seat.ppls{background-image:url(images/legroom_diamond_retina.png)}.seat-row .seat.pcla{background-image:url(images/pc_star_retina.png)}.seat-row .seat.reserved,.seat-row-first .seat.reserved{background-image:url(images/occupied_reserved_retina.png)}.js .drop,.js .drop-link-rule,.breakdown-head-close{background-image:url(images/expand_retina.png);background-size:19px}.drop,.open.drop-link-rule,.open.drop,.breakdown-head-open{background-image:url(images/collapse_retina.png);background-size:19px}.span.bp-list{background-image:none}.seat-row .seat.accessible{background-image:url(images/accessible_white_retina.png)}.seat-row .seat.accessible.ppls{background-image:url(images/ppls_star_retina.png),url(images/accessible_white_retina.png)}.seat-row .seat.accessible.premium{background-image:url(images/premium_triangle_retina.png),url(images/accessible_white_retina.png)}.seat-row .seat.accessible.reserved{background-image:url(images/accessible_gray_retina.png)}.galley span{background-image:url(images/gal_retina.png);background-size:27px}.lav span{background-image:url(images/lav_retina.png)}.ecert-grey{background-image:url(images/ecert_grey_retina.png)}}.activity{padding:8px 0 8px 8px;cursor:pointer}.activity-left{float:left;max-width:55.55555%}.activity-right{float:right;max-width:33.33333%;text-align:right;padding-right:12px}.activity-action{float:right;width:19px;min-height:1px;margin-right:8px}.activity-partner{color:#2774ae}.activity-total-miles,.activity-partner{font-weight:600;font-size:1.5em;padding:8px 0}.activity-partner{text-overflow:ellipsis;white-space:nowrap;overflow-x:hidden}.activity:nth-child(2n){background-color:#e9e9e9}.activity-base,.activity-bonus{font-weight:600;font-size:1.2em;padding:5px 0}.activity-details{transition:all .5s;min-height:0;max-height:0;opacity:0;overflow-y:hidden}.activity-details.active{height:auto;max-height:300px;min-height:40px;opacity:1}.no_margin{margin:0}.schedule_change_time{font-size:18px}.schedule_change_time_tt{font-size:13px}.schedule_change_next_day_arrival{text-align:right;margin:0 2px 0 0}.schedule_change_date{padding:15px 15px;background:#f5f5f5}.schedule_change_bottom{height:4px;background:#48a9c5}.sc-section{padding:15px 15px 10px 15px}.sc-section:nth-child(even){background-color:#f5f5f5}.h1_schedule_change{color:#3c3b3f;margin:0 0 5px 0}.schedule_change_details{margin:2px 2px 0 0}.schedule-change .item-changed-original{text-decoration:line-through}.schedule-change .item-changed-new{color:#48850b}.schedule-change .scarrow{width:60%;display:inline}.schedule-change .scarrow .lowercase{width:59%;display:inline-block}.schedule-change .scarrow:after{content:"";background:url(images/flight_airplane.png) no-repeat center;display:inline-block;background-size:20px;text-align:center;width:18%;height:20px}.schedule-change .item_left{width:30%;display:inline-block;line-height:25px}.schedule-change .item_right{width:68%;text-align:right;display:inline-block;line-height:25px}.lowercase{text-transform:lowercase}.panel{border-bottom:6px solid #c8c9c7}.panel.panel-blue{border-bottom-color:#48a9c5}.phonenum{white-space:nowrap}#modal-window-no-padding{position:relative;min-width:300px;max-width:300px;margin:0 auto;background:#fff;color:#3c3b3f;padding:0;-webkit-box-shadow:0 0 25px #000;box-shadow:0 0 25px #000;z-index:101;-webkit-border-radius:3px;border-radius:4px;line-height:18px;letter-spacing:.5px}.seat-upgrade-header{background-color:#07446a;padding:15px 15px 0 30px;color:#fff}.seat-upgrade-title,.seat-upgrade-sub-title,seat-upgrade-price-per-passenger,.seat-upgrade-body h2,.seat-upgrade-body p{font-family:"AS Circular","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:normal}.seat-upgrade-icon img{float:right;height:25px}.seat-upgrade-title{font-size:22px;line-height:22px;padding-bottom:4px}.seat-upgrade-sub-title{font-size:30px;line-height:30px;padding-bottom:5px;font-weight:bold}.seat-upgrade-price-per-passenger{font-size:16px;padding-bottom:6px}.seat-upgrade-header-seperator{background-color:#07446a;line-height:0;margin-bottom:-1px;margin-top:-1px}.seat-upgrade-header-seperator img{width:100%}.seat-upgrade-body{background-color:#fff;padding:20px 30px 15px 30px;overflow-y:auto}.seat-upgrade-feature{padding-bottom:20px}.seat-upgrade-feature:last-child{padding-bottom:0}.seat-upgrade-feature h2{color:#01426a;font-size:22px;margin-bottom:4px;font-weight:800}.seat-upgrade-feature p{color:#3c3b3f;font-size:15px}.seat-upgrade-footer{padding:0 30px 22px 30px;border-bottom:6px solid #44a8c4;border-radius:0 0 3px 3px}.coglink{color:#005daa}.cardtitle{padding:4px 0 4px 2px;clear:both;font-weight:bold}.cardrow{padding:4px 0 4px 1px;clear:both}.cardrow:last-child{border:0}.cardrow1{font-size:1.15em;font-weight:bold}.cardlabel{width:34%;float:left;font-weight:bold;padding-left:1%}.cardvalue{float:left;width:65%;word-wrap:break-word}.cardvalueR{float:left;text-align:right;width:65%}.cardBorderTaxes{padding:2px}.cardrowtaxes{padding:4px 0 4px 1px;clear:both}.cardrowtaxes:last-child{border:0}.cardheadlabeltaxes{width:60%;float:left;margin-left:1%}.cardheadawardlabeltaxes{width:38%;float:left;margin-left:1%}.cardsubheadlabeltaxes{width:70%;float:left;margin-left:1%}.cardsubheadawardlabeltaxes{width:41%;float:left;margin-left:1%}.cardindentlabelbasetaxes{float:left;padding-left:6%}.cardindentlabeltaxes{width:74%;float:left;padding-left:6%}.cardvaluetaxes{float:right;margin-right:1%;text-align:right}.cardheadawardlabeltaxes.pad,.cardsubheadlabeltaxes.pad{padding-top:10px}.cardvaluetaxes.pad{padding-top:10px;border-top:1px solid #e2e2e2}.traveleredit{float:right;padding-left:20px;text-decoration:none;margin-top:5px;font-size:14px}.shoppingShaded{margin-bottom:1.5rem;-webkit-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 0 3px 0 rgba(0,0,0,.35);box-shadow:0 0 3px 0 rgba(0,0,0,.35)}.shoppingShaded:last-child{margin:0}.sliceoption{padding-bottom:4px}.optionHeader{height:31px;padding:5px 3%}.optionHeader img{height:31px}.optionHeaderFltNum{float:right;line-height:30px}.optionList{background:#fff;margin:0 -15px 1em;padding:10px 3%}.optionDetail{padding:3%}.optionDeparts{width:50%;background:url('images/flight_arrow.png') 75% top no-repeat;background-size:24px;float:left}.optionCityCode{font-size:23px;font-size:2.3rem;font-weight:bold;margin-bottom:5px;color:#212223}.optionTime{margin-bottom:5px}.optionOperatedBy{font-size:smaller}.optionLinkPList{margin:0 -2px 0 -1px;font-size:13px}.result-details{background-color:#fff;overflow:hidden}.detailsegmentwrap{margin-bottom:20px}.detailsegmentwrapheader{padding:10px 10px}.detailrow,.detaillayover{padding:3%}.detailrow:last-child{border:0}.detaillbl{float:left;width:41%;font-weight:bold}.detailinfo{float:left;width:59%}.detaillayover{background:#f9e595;color:#3c3b3f;line-height:1.3}.departureDaysDifferent{font-size:11px;text-align:left}.arrivalDaysDifferent{font-size:11px;text-align:right}#farerules,#bagrules,#discountcoderules{list-style-type:disc;margin-left:20px}#farerules li,#bagrules li,#discountcoderules li{margin-bottom:.5em;line-height:18px}#farerules li ul{list-style-type:disc;margin:.5em 0 .5em 30px}#mileageplanactivityinfo ul li{list-style-type:disc;margin:.5em 0 .5em 30px}#summarytotal{font-size:1.2em}#umnrlink{margin-top:14px}#num-travelers-cnt{background:none;height:32px;line-height:32px;height:32px;margin:5px 18px 0 0;width:100px}#tnum-display{float:left;background:#fff;padding:0 8px;border-left:1px;border-right:1px;border-style:solid;color:#01426a}.tnum-button{font-family:Arial,Sans-Serif;float:left;font-size:30px;width:35px;text-align:center;color:#fff;background:#01426a}.datecnt{width:46%}#cal-modal-window{background:#fff}#cal{text-align:center}#cal .months{background-color:#fff;color:#2774ae;font-size:20px;font-size:2rem;width:100%;font-weight:bold;padding:15px 0;height:30px}#cal #prev-month{float:right;background:url('images/leftright.png') no-repeat;background-size:38px 19px;background-position:0 0;width:19px;height:19px}#cal #prev-month-pad{float:right;width:20px;min-height:19px}#cal #next-month{float:right;background:url('images/leftright.png') no-repeat;background-size:38px 19px;background-position:-19px 0;width:19px;height:19px}#cal #next-month-pad{float:right;width:8px;min-height:19px}#cal #prev-month.hide,#cal #next-month.hide{visibility:hidden}#cal .current-month{float:left;padding-left:10px;color:#01426a;width:170px;text-align:left}#cal .title{padding-left:10px;text-align:left}#cal table{width:100%}#cal th{background:#fff;border:0;color:#3c3b3f;padding:0 0 5px 0;text-align:center;font-weight:normal}#cal td{background:#fff;color:#c8c9c7;width:14.3%;height:30px;border:0;padding:0}#cal td a{display:block;color:#2774ae;line-height:30px;text-decoration:none}#cal td a.selected{color:#fff;background-color:#2774ae}#cal td a.selectedlight{color:#fff;background-color:#01426a}#cal td a.selecteddark{color:#fff;background-color:#01426a}#cal .button-link{margin-top:20px}#cal .button-link.secondary{margin-right:2%}.filter-bar,.filter-bar-open{background:#fff url(images/expand.png) no-repeat 96% center;border:1px solid #c8c9c7;cursor:pointer;padding:8px;-webkit-border-radius:3px;border-radius:3px}.filter-bar-open{background-image:url(images/collapse.png);-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0}.filter-container{border:1px solid #c8c9c7;border-top:0;padding:3px 8px 8px 8px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.filter-lbl{line-height:30px;margin-top:5px;text-align:right}.fare{background-color:#fff;cursor:pointer;font-size:1.2em;text-align:center;margin:1%;border:1px solid #c8c9c7;border-bottom:3px solid #b3d57d;-webkit-box-sizing:border-box;box-sizing:border-box;color:#3c3b3f}.fareFirst{border-bottom:3px solid #48a9c5}.fc-upgrade-img{height:14px}.farefam{font-size:.7em;line-height:25px}.fareprice{font-weight:bold;line-height:35px}.farepriceaward{font-weight:bold;min-height:34px;padding:10px 0}.fareSelected{background:#b3d57d;border-color:#b3d57d;color:#212223}.fareSelectedFirst{background:#48a9c5;border-color:#48a9c5;color:#212223}.fareNotSelectedDisabled{cursor:default;border:1px solid #cdcdcd}.fareNotSelectedDisabled .farefam,.fareNotSelectedDisabled .fareprice,.fareNotSelectedDisabled .farepriceaward{color:#c8c9c7}.fares2 .fare{width:48%;float:left}.fares3 .fare{width:31.3333333%;float:left}.discounted{display:inline-block;background:url(images/ecert.png) no-repeat center center;background-size:9px 14px;height:14px;width:9px}.fareSelected .fareSelectedFirst .discounted{background:url(images/ecert.png) no-repeat center center}.shoulder-container{height:60px}.shoulder,.shoulderSelected{float:left;padding:5px 0;text-align:center;line-height:1.2em;width:32%;-webkit-box-sizing:border-box;box-sizing:border-box}.shoulder{color:#3c3b3f;cursor:pointer;border:1px solid #c8c9c7;border-bottom:3px solid #01426a}.shoulderSelected{background:#01426a;color:#fff;border-bottom:3px solid #01426a;margin:0 2%}.shoulderDisabled{color:#c8c9c7;cursor:default;border-bottom:2px solid #c8c9c7}.showall{text-align:right;margin:5px 0 12px;display:none}.currconv{text-align:left;margin:5px 0 12px;display:block}.upg-symbol,.upg-symbol-h{font-family:Arial;-webkit-border-radius:50%;border-radius:50%;border:1px solid;display:inline-block;font-size:14px;line-height:11px;padding:3px;text-align:center}.upg-symbol-h{font-size:11px;width:10px;line-height:10px;margin:0;padding:2px}#shopping-legend{display:none}table.shopping-legend td:first-child{width:90px;white-space:nowrap}table.shopping-legend{margin:10px 0;width:100%}.shopping-legend tr.legendsubheader{border-bottom:1px solid #c8c9c7}.shopping-legend th{background-color:transparent;font-weight:bold}.shopping-legend th,.shopping-legend td{border:0;padding-left:0;padding-right:10px}.fixed #seatavailmsg{display:none}#seatavailmsg{font-style:italic;padding:6px 0 10px 0;font-size:.8em}#breakdown-head{float:right;margin:15px 0 10px;height:19px;line-height:19px;padding-left:25px}#breakdown-details{clear:both;display:none}.breakdown-head-open{background:url(images/collapse.png) left center no-repeat}.breakdown-head-close{background:url(images/expand.png) left center no-repeat}.total-text{font-size:1.2em}.total-price{font-size:1.3em}.discount-code{margin-top:2rem}.fare-baggage-rule-agree{line-height:18px}li.booking-confirmation{background-color:#f9f9f9}.fareRuleTbl{margin-bottom:1em;width:100%}.fareRuleTbl td{width:50%}.fareRuleSection{border-bottom:1px solid #01426a;padding:.5em}.chkbox-box{width:25px;float:left}.chkbox-txt{width:90%;float:left}#Other_Cruise_Label{margin-top:8px}.calendar-container{margin:0 -15px 30px -15px}.cal-shop{margin:10px 0;text-align:center;width:100%}.cal-shop th,.cal-shop td{text-align:center;min-width:10%;padding:10px 0;border:1px solid #e2e2e2;border-left-color:#fff;border-right-color:#fff}.dollar{vertical-align:top;top:4px;font-size:10px}.cal-shop td{font-size:20px}.cal-shop td.disabled{color:#cdcdcd}.cal-shop-price{color:#48a9c5;font-size:14px;padding-top:6px}.cal-modal-link{float:right}.cal-shop-price.lowest{color:#48850b}td.selected,td.selected .cal-shop-price{background-color:#01426a;color:#fff}@media only screen and (-webkit-min-device-pixel-ratio:2){.discounted{background:url(images/ecert_retina.png) no-repeat center center;background-size:9px 14px}.fareSelected .fareSelectedFirst .discounted{background:url(images/ecert_retina.png) no-repeat center center;background-size:9px 14px}} diff --git a/miniwob-sandbox/html/flight/Alaska-auto-medium/scripts/datepickr.js b/miniwob-sandbox/html/flight/Alaska-auto-medium/scripts/datepickr.js deleted file mode 100644 index 35e7e12..0000000 --- a/miniwob-sandbox/html/flight/Alaska-auto-medium/scripts/datepickr.js +++ /dev/null @@ -1 +0,0 @@ -Alaska.$("lbldep-date").setAttribute("onclick","return false");Alaska.$("lblret-date").setAttribute("onclick","return false");Alaska.util.listenEvent(Alaska.$("departure-date"),"focus",function(){Alaska.datepickrState=0;this.blur();new Alaska.datepickr});Alaska.util.listenEvent(Alaska.$("return-date"),"focus",function(){Alaska.datepickrState=1;this.blur();new Alaska.datepickr});Alaska.datepickrState=0;Alaska.datepickr=function(n){function i(n,t,i){var r,u;if(n in tt||(tt[n]=document.createElement(n)),r=tt[n].cloneNode(!1),t!=null)for(u in t)r[u]=t[u];return i!=null&&(typeof i=="object"?r.appendChild(i):r.innerHTML=i),r}function at(n,t){return t==!0?y[n]:y[n].length>3?y[n].substring(0,3):y[n]}function et(){for(currentMonthView<0&&(currentYearView--,currentMonthView=11),currentMonthView>11&&(currentYearView++,currentMonthView=0),Alaska.$("prev-month").className=p()?"hide":"",Alaska.$("next-month").className=w()?"hide":"",d.innerHTML=l.month.string(o.fullCurrentMonth)+" "+currentYearView;e.hasChildNodes();)e.removeChild(e.lastChild);return e.appendChild(ct()),ot(),rt(),!1}function vt(){g.onclick=function(){return p()?!1:(currentMonthView--,et())};nt.onclick=function(){return w()?!1:(currentMonthView++,et())}}function ot(){var n=e.getElementsByTagName("a"),i=n.length;for(t=0;t=i&&(n[t].className="cal-day selected")}function rt(){var t=e.getElementsByTagName("a"),o=t.length,i,f,n;if(r!=null&&u!=null)if(i=r.getMonth(),f=u.getMonth(),currentMonthView==i&&i==f)for(n=0;n=r.getDate()&&t[n].innerHTML<=u.getDate()&&(t[n].className="cal-day selected");else r.getFullYear()!=u.getFullYear()?currentMonthView<=11&¤tYearViewi&&it(t):currentYearView>r.getFullYear()&¤tYearView<=u.getFullYear()&¤tMonthView<=f&&(currentMonthView==f?st(t):it(t)):i==currentMonthView&&ii&&it(t));if(r!=null&&r.getMonth()==currentMonthView)for(n=0;nt&&pt()?n.appendChild(i("td",{},t)):n.appendChild(i("td",{},i("a",{className:"cal-day",href:"#"},t))),r++;for(t=1;t<=7-r;t++)n.appendChild(i("td",{}," "));return u.appendChild(n),u}function bt(n){var u,r,f,h,v,t,y,b,c,a;if(n)for(u in n)o.hasOwnProperty(u)&&(o[u]=n[u]);r=document.createElement("div");r.setAttribute("id","modal-background");r.setAttribute("style","height: "+Alaska.util.getDocumentHeight()+"px;");r.setAttribute("class","disable-ui");f=document.createElement("div");f.setAttribute("id","cal-modal-window");h=document.createElement("div");v=Alaska.datepickrState==0?"departure":"return";h.setAttribute("class","highlight");h.innerHTML="
Select "+v+"<\/span> date<\/div>";s=i("div",{id:"cal"});t=i("div",{className:"months"});g=i("span",{id:"prev-month",className:p()?"hide":""},i("a",{href:"#"},"  "));nt=i("span",{id:"next-month",className:w()?"hide":""},i("a",{href:"#"},"  "));d=i("span",{className:"current-month"},l.month.string(o.fullCurrentMonth)+" "+currentYearView);t.appendChild(d);y=i("span",{id:"next-month-pad"});t.appendChild(y);t.appendChild(nt);b=i("span",{id:"prev-month-pad"});t.appendChild(b);t.appendChild(g);c=i("table",{},i("thead",{},i("tr",{className:"weekdays"},yt())));e=i("tbody",{},ct());c.appendChild(e);s.appendChild(h);s.appendChild(t);s.appendChild(c);a=document.createElement("div");a.innerHTML='
'); - }); - document.getElementById('query-pretty').innerHTML = ( - '
Mode: ' + WOB_DATA_MODE + '
' + - '
' + key + '' + instruction[key] + '
' + queryPretty.join('') + '
'); - document.getElementById('reward-reason').innerHTML = ''; - WOB_TASK_READY = false; // The child page must set this to true - document.getElementById('wrap').src = 'index.html'; -} - -/** - Return an object that looks like this: - { - "instruction": {"key1", "value1", ...} - "request": {"key1", "value1", ...} - } -*/ -core.sampleQuestion = function () { - if (WOB_DATA_MODE == 'train' || WOB_DATA_MODE == 'default') - return core.sample(DATA_TRAIN); - else if (WOB_DATA_MODE == 'test') - return core.sample(DATA_TEST); - else - throw 'Incorrect WOB_DATA_MODE'; -} - -// List of required fields -// The reward is -1 if any of these fields is not filled -core.requiredFields = []; - -/** - Validate the form and return the reward. - data format: list of [tag, type, name, value] -*/ -core.validateForm = function(data) { - // Convert to a dict - var dataDict = {}; - data.forEach(function (datum) { - dataDict[datum[2]] = datum[3]; - }); - // Compute accuracy - var target = core.currentQuestion.request; - var score = 0., n = 0., wrongFields = []; - for (var key in target) { - n++; - var expected = target[key], predicted = dataDict[key], - check = (expected == predicted); - console.log([check, key, expected, predicted]); - if (!check) { - wrongFields.push( - '' + key + '
True: ' + expected + '
Pred: ' + predicted); - } - score += check; - } - // Validate the required fields - if (!core.validateRequiredFields(dataDict)) return -1; - // Display reasons - if (score == n) { - document.getElementById('reward-reason').innerHTML = 'GOOD'; - } else { - document.getElementById('reward-reason').innerHTML = ( - 'PARTIAL: Incorrect fields:
' + wrongFields.join('
')); - } - return score / n; -} - -core.validateRequiredFields = function(dataDict) { - for (var i = 0; i < core.requiredFields.length; i++) { - var key = core.requiredFields[i]; - if (!(dataDict[key] || '').length) { - console.log(['missing required field', key]); - document.getElementById('reward-reason').innerHTML = ( - 'BAD: Missing required field ' + key); - return false; - } - } - return true; -} - -// ################################################ -// Function overrides (delegate to the iframe) - -core.getDOMInfo = function () { - return core.flightChildWindow().$miniwob.getDOMInfo(); -} - -core.elementClick = function (ref) { - return core.flightChildWindow().$miniwob.elementClick(ref); -} - -// ################################################ -// Record demonstrations - -var recorder = {}; -recorder.SERVER_DEFAULT = 'http://localhost:8032'; -recorder.DISPLAY_HTML = ` -
- - - -
-
- - - -
-`; - -recorder.setup = function () { - if (recorder.isSetup) return; - document.getElementById('reward-display').innerHTML += recorder.DISPLAY_HTML; - recorder.server = (core.QueryString.server || recorder.SERVER_DEFAULT) + '/record'; - document.getElementById('server-name').innerHTML = recorder.server; - var url = window.location.pathname; - recorder.taskName = (/flight\/[^/]*/.exec(url) || ['flight.unknown'])[0].replace(/\//, '.'); - recorder.isSetup = true; -} - -recorder.startRecording = function (startEpisodeReal) { - recorder.data = {}; - recorder.data.taskName = recorder.taskName; - recorder.data.states = []; - recorder.isRecording = true; - startEpisodeReal(); - var utterance = core.getUtterance(); - if (typeof utterance === 'string') { - recorder.data.utterance = utterance; - } else { - recorder.data.utterance = utterance.utterance; - recorder.data.fields = utterance.fields; - } -} - -// End recording the episode -recorder.endRecording = function () { - recorder.data.reward = WOB_REWARD_GLOBAL; - recorder.data.rawReward = WOB_RAW_REWARD_GLOBAL; - // Send the data to the server - recorder.isRecording = false; - var data = recorder.data; - recorder.data = {}; // Prevent future addition - console.log(data); - var req = new XMLHttpRequest(); - req.open('POST', recorder.server); - req.setRequestHeader('Content-type', 'text/plain'); - req.onreadystatechange = function () { - if (req.readyState === XMLHttpRequest.DONE) { - var msg = document.getElementById('server-reply'); - if (req.status === 200) { - msg.setAttribute('style', 'color:green'); - msg.textContent = 'OK: ' + req.responseText; - } else { - msg.setAttribute('style', 'color:red'); - msg.textContent = 'ERROR: ' + req.statusText; - } - } - } - req.send(JSON.stringify(data)); - // Make it ready for the next episode - core.cover_div.classList.remove('transparent'); -} - -// Enable demonstration recording with "?flightRecord=..." in the URL -if (core.QueryString.flightRecord) { - - // Wrap startEpisodeReal - core.startEpisodeReal = (function(startEpisodeReal) { - return function () { - if (core.cover_div.classList.contains('transparent')) return; - recorder.setup(); - recorder.startRecording(startEpisodeReal); - } - })(core.startEpisodeReal); - - // Wrap endEpisode - core.endEpisode = (function(endEpisode) { - return function (reward, time_proportional, reason, recorder_data) { - if (core.EP_TIMER === null) return; - core.cover_div.classList.add('transparent'); - endEpisode(reward, time_proportional, reason); - // Delay to allow the last action to be recorded - if (recorder_data) { - recorder.data.states = recorder_data.states; - } - setTimeout(recorder.endRecording, 500); - } - })(core.endEpisode); - -} diff --git a/miniwob-sandbox/html/http-serve b/miniwob-sandbox/html/http-serve deleted file mode 100755 index 9c79db8..0000000 --- a/miniwob-sandbox/html/http-serve +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -PORT="$1" -[ -n "$PORT" ] || PORT=8080 -echo "Serving on port $PORT" -twistd -no web --port tcp:"$PORT" --path . diff --git a/miniwob-sandbox/html/miniwob/bisect-angle.html b/miniwob-sandbox/html/miniwob/bisect-angle.html deleted file mode 100644 index 4b91b63..0000000 --- a/miniwob-sandbox/html/miniwob/bisect-angle.html +++ /dev/null @@ -1,159 +0,0 @@ - - - -Bisect Angle Task - - - - - - - - - - - - -
-
Create a line that bisects the angle evenly in two, then press submit.
-
- - -
-
- - diff --git a/miniwob-sandbox/html/miniwob/book-flight-nodelay.html b/miniwob-sandbox/html/miniwob/book-flight-nodelay.html deleted file mode 100644 index 0651389..0000000 --- a/miniwob-sandbox/html/miniwob/book-flight-nodelay.html +++ /dev/null @@ -1,316 +0,0 @@ - - - -Book Flight Task - - - - - - - - - - - - - - - -
-
-
- -
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/book-flight.html b/miniwob-sandbox/html/miniwob/book-flight.html deleted file mode 100644 index 8fbc483..0000000 --- a/miniwob-sandbox/html/miniwob/book-flight.html +++ /dev/null @@ -1,314 +0,0 @@ - - - -Book Flight Task - - - - - - - - - - - - - - - -
-
-
- -
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/chase-circle.html b/miniwob-sandbox/html/miniwob/chase-circle.html deleted file mode 100644 index 22fe77e..0000000 --- a/miniwob-sandbox/html/miniwob/chase-circle.html +++ /dev/null @@ -1,90 +0,0 @@ - - - -Chase Circle Task - - - - - - - - - - - -
-
Keep your mouse inside the circle as it moves around.
-
- -
-
- - diff --git a/miniwob-sandbox/html/miniwob/choose-date-easy.html b/miniwob-sandbox/html/miniwob/choose-date-easy.html deleted file mode 100644 index c623c01..0000000 --- a/miniwob-sandbox/html/miniwob/choose-date-easy.html +++ /dev/null @@ -1,62 +0,0 @@ - - - -Choose Date Task - - - - - - - - - - - - - - - -
-
-
-

Date:

-
- -
-
- - diff --git a/miniwob-sandbox/html/miniwob/choose-date-medium.html b/miniwob-sandbox/html/miniwob/choose-date-medium.html deleted file mode 100644 index 6d54db2..0000000 --- a/miniwob-sandbox/html/miniwob/choose-date-medium.html +++ /dev/null @@ -1,62 +0,0 @@ - - - -Choose Date Task - - - - - - - - - - - - - - - -
-
-
-

Date:

-
- -
-
- - diff --git a/miniwob-sandbox/html/miniwob/choose-date-nodelay.html b/miniwob-sandbox/html/miniwob/choose-date-nodelay.html deleted file mode 100644 index e625452..0000000 --- a/miniwob-sandbox/html/miniwob/choose-date-nodelay.html +++ /dev/null @@ -1,64 +0,0 @@ - - - -Choose Date Task - - - - - - - - - - - - - - - -
-
-
-

Date:

-
- -
-
- - diff --git a/miniwob-sandbox/html/miniwob/choose-date.html b/miniwob-sandbox/html/miniwob/choose-date.html deleted file mode 100644 index 2194b35..0000000 --- a/miniwob-sandbox/html/miniwob/choose-date.html +++ /dev/null @@ -1,62 +0,0 @@ - - - -Choose Date Task - - - - - - - - - - - - - - - -
-
-
-

Date:

-
- -
-
- - diff --git a/miniwob-sandbox/html/miniwob/choose-list.html b/miniwob-sandbox/html/miniwob/choose-list.html deleted file mode 100644 index d5b0157..0000000 --- a/miniwob-sandbox/html/miniwob/choose-list.html +++ /dev/null @@ -1,63 +0,0 @@ - - - -Choose List Task - - - - - - - - - - - - -
-
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/circle-center.html b/miniwob-sandbox/html/miniwob/circle-center.html deleted file mode 100644 index 9263c7b..0000000 --- a/miniwob-sandbox/html/miniwob/circle-center.html +++ /dev/null @@ -1,100 +0,0 @@ - - - -Circle Center Task - - - - - - - - - - - - -
-
Find and click on the center of the circle, then press submit.
-
- - -
-
- - diff --git a/miniwob-sandbox/html/miniwob/classes b/miniwob-sandbox/html/miniwob/classes deleted file mode 100644 index 19c9aba..0000000 --- a/miniwob-sandbox/html/miniwob/classes +++ /dev/null @@ -1,98 +0,0 @@ -"time-duration", -"flight-duration", -"ui-icon ui-icon-disk", -"labels", -"ttt-row", -"spacer", -"depart-day", -"cube-image", -"flight-depart", -"controls", -"forward-body", -"ui-icon ' + PROBLEM_SET[expectedLabel] + '", -"label-container", -"search-title", -"ui-icon ui-icon-zoomout", -"filetree", -"email-reply", -"email-sender", -"ui-icon ui-icon-zoomin", -"jscolor", -"report", -"name", -"terminal-line", -"like", -"depart-city", -"side", -"arrive-time", -"search-container", -"retweet", -"ui-icon ui-icon-play", -"hide", -"email-subject", -"reply-sender", -"reply", -"body", -"widget", -"depart-time", -"bold", -"alink", -"output", -"details-container", -"departure-header", -"forward-subject", -"arrive-day", -"folder", -"addition-block", -"reply-subj", -"menu-user", -"arrive-city", -"secondary-action", -"search-url", -"email-forward", -"ui-icon ui-icon-seek-end", -"forward-info", -"icon", -"more", -"username", -"forward-header", -"flight-input", -"reply-header", -"copy", -"ui-icon ui-icon-seek-start", -"cube-image active", -"viewport", -"flight-summary", -"flight-date", -"email-left", -"highlight", -"embed", -"ui-icon ui-icon-print", -"ui-icon ui-icon-stop", -"block-user", -"math-container", -"share", -"cube", -"file", -"flight-price", -"departure-container", -"search-desc", -"email-body", -"email-actions", -"book", -"details", -"email-send", -"trash", -"email-time", -"star", -"flight-codes", -"user", -"reply-to", -"email-header", -"reply-info", -"email-right", -"flight-arrive", -"command", -"time", -"reply-body", -"forward-sender", diff --git a/miniwob-sandbox/html/miniwob/click-button-sequence.html b/miniwob-sandbox/html/miniwob/click-button-sequence.html deleted file mode 100644 index 1166e26..0000000 --- a/miniwob-sandbox/html/miniwob/click-button-sequence.html +++ /dev/null @@ -1,57 +0,0 @@ - - - -Click Button Sqeuence Task - - - - - - - - - - - -
-
Click button ONE, then click button TWO.
-
- - -
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-button.html b/miniwob-sandbox/html/miniwob/click-button.html deleted file mode 100644 index e119ef6..0000000 --- a/miniwob-sandbox/html/miniwob/click-button.html +++ /dev/null @@ -1,74 +0,0 @@ - - - -Click Button Task - - - - - - - - - -
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-checkboxes-large.html b/miniwob-sandbox/html/miniwob/click-checkboxes-large.html deleted file mode 100644 index 3a251cc..0000000 --- a/miniwob-sandbox/html/miniwob/click-checkboxes-large.html +++ /dev/null @@ -1,88 +0,0 @@ - - - -Click Checkboxes Task - - - - - - - - - - - - - - - -
-
-
-
-
-
- -
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-checkboxes-soft.html b/miniwob-sandbox/html/miniwob/click-checkboxes-soft.html deleted file mode 100644 index da8b536..0000000 --- a/miniwob-sandbox/html/miniwob/click-checkboxes-soft.html +++ /dev/null @@ -1,122 +0,0 @@ - - - -Click Checkboxes Task - - - - - - - - - - - - - - - -
-
-
-
-
- -
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-checkboxes-transfer.html b/miniwob-sandbox/html/miniwob/click-checkboxes-transfer.html deleted file mode 100644 index 6b0edc9..0000000 --- a/miniwob-sandbox/html/miniwob/click-checkboxes-transfer.html +++ /dev/null @@ -1,85 +0,0 @@ - - - -Click Checkboxes Task - - - - - - - - - - - - - - - -
-
-
-
-
- -
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-checkboxes.html b/miniwob-sandbox/html/miniwob/click-checkboxes.html deleted file mode 100644 index 45a9aa4..0000000 --- a/miniwob-sandbox/html/miniwob/click-checkboxes.html +++ /dev/null @@ -1,76 +0,0 @@ - - - -Click Checkboxes Task - - - - - - - - - - - - - - - -
-
-
-
-
- -
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-collapsible-2-nodelay.html b/miniwob-sandbox/html/miniwob/click-collapsible-2-nodelay.html deleted file mode 100644 index a8cf67f..0000000 --- a/miniwob-sandbox/html/miniwob/click-collapsible-2-nodelay.html +++ /dev/null @@ -1,79 +0,0 @@ - - - -Click Collapsible Task - - - - - - - - - - - - - - -
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-collapsible-2.html b/miniwob-sandbox/html/miniwob/click-collapsible-2.html deleted file mode 100644 index 4612d8c..0000000 --- a/miniwob-sandbox/html/miniwob/click-collapsible-2.html +++ /dev/null @@ -1,79 +0,0 @@ - - - -Click Collapsible Task - - - - - - - - - - - - - - -
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-collapsible-nodelay.html b/miniwob-sandbox/html/miniwob/click-collapsible-nodelay.html deleted file mode 100644 index a88cb14..0000000 --- a/miniwob-sandbox/html/miniwob/click-collapsible-nodelay.html +++ /dev/null @@ -1,61 +0,0 @@ - - - -Click Collapsible Task - - - - - - - - - - - - - - -
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-collapsible.html b/miniwob-sandbox/html/miniwob/click-collapsible.html deleted file mode 100644 index 1d1c9f2..0000000 --- a/miniwob-sandbox/html/miniwob/click-collapsible.html +++ /dev/null @@ -1,61 +0,0 @@ - - - -Click Collapsible Task - - - - - - - - - - - - - - -
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-color.html b/miniwob-sandbox/html/miniwob/click-color.html deleted file mode 100644 index acfb343..0000000 --- a/miniwob-sandbox/html/miniwob/click-color.html +++ /dev/null @@ -1,93 +0,0 @@ - - - -Click Color Task - - - - - - - - - - - - -
-
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-dialog-2.html b/miniwob-sandbox/html/miniwob/click-dialog-2.html deleted file mode 100644 index 2dd3af0..0000000 --- a/miniwob-sandbox/html/miniwob/click-dialog-2.html +++ /dev/null @@ -1,85 +0,0 @@ - - - -Click Dialog Task - - - - - - - - - - - - - - - -
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-dialog.html b/miniwob-sandbox/html/miniwob/click-dialog.html deleted file mode 100644 index 5d7d4ed..0000000 --- a/miniwob-sandbox/html/miniwob/click-dialog.html +++ /dev/null @@ -1,62 +0,0 @@ - - - -Click Dialog Task - - - - - - - - - - - - - - - -
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-link.html b/miniwob-sandbox/html/miniwob/click-link.html deleted file mode 100644 index 05405c4..0000000 --- a/miniwob-sandbox/html/miniwob/click-link.html +++ /dev/null @@ -1,77 +0,0 @@ - - - -Click Link Task - - - - - - - - - - - - -
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-menu-2.html b/miniwob-sandbox/html/miniwob/click-menu-2.html deleted file mode 100644 index 782fbdd..0000000 --- a/miniwob-sandbox/html/miniwob/click-menu-2.html +++ /dev/null @@ -1,99 +0,0 @@ - - - -Click Menu Task - - - - - - - - - - - - - - - -
-
-
- - -
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-menu.html b/miniwob-sandbox/html/miniwob/click-menu.html deleted file mode 100644 index 6b36a50..0000000 --- a/miniwob-sandbox/html/miniwob/click-menu.html +++ /dev/null @@ -1,83 +0,0 @@ - - - -Click Menu Task - - - - - - - - - - - - - - - -
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-option.html b/miniwob-sandbox/html/miniwob/click-option.html deleted file mode 100644 index bd00c5c..0000000 --- a/miniwob-sandbox/html/miniwob/click-option.html +++ /dev/null @@ -1,65 +0,0 @@ - - - -Click Option Task - - - - - - - - - - - - - - - -
-
-
-
-
- -
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-pie-nodelay.html b/miniwob-sandbox/html/miniwob/click-pie-nodelay.html deleted file mode 100644 index ae9a83f..0000000 --- a/miniwob-sandbox/html/miniwob/click-pie-nodelay.html +++ /dev/null @@ -1,93 +0,0 @@ - - - -Click Pie Menu Task - - - - - - - - - - - - - - - - -
-
-
-
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-pie.html b/miniwob-sandbox/html/miniwob/click-pie.html deleted file mode 100644 index f137b25..0000000 --- a/miniwob-sandbox/html/miniwob/click-pie.html +++ /dev/null @@ -1,91 +0,0 @@ - - - -Click Pie Menu Task - - - - - - - - - - - - - - - - -
-
-
-
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-scroll-list.html b/miniwob-sandbox/html/miniwob/click-scroll-list.html deleted file mode 100644 index 483b041..0000000 --- a/miniwob-sandbox/html/miniwob/click-scroll-list.html +++ /dev/null @@ -1,93 +0,0 @@ - - - -Choose List Task - - - - - - - - - - - - -
-
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-shades.html b/miniwob-sandbox/html/miniwob/click-shades.html deleted file mode 100644 index c0ad892..0000000 --- a/miniwob-sandbox/html/miniwob/click-shades.html +++ /dev/null @@ -1,114 +0,0 @@ - - - -Click Shades Task - - - - - - - - - - - - -
-
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-shape.html b/miniwob-sandbox/html/miniwob/click-shape.html deleted file mode 100644 index ecf85e6..0000000 --- a/miniwob-sandbox/html/miniwob/click-shape.html +++ /dev/null @@ -1,66 +0,0 @@ - - - -Click Shape Task - - - - - - - - - - - -
-
-
- -
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-tab-2-easy.html b/miniwob-sandbox/html/miniwob/click-tab-2-easy.html deleted file mode 100644 index c0a66ad..0000000 --- a/miniwob-sandbox/html/miniwob/click-tab-2-easy.html +++ /dev/null @@ -1,95 +0,0 @@ - - - -Click Tab Task - - - - - - - - - - - - - - - -
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-tab-2-hard.html b/miniwob-sandbox/html/miniwob/click-tab-2-hard.html deleted file mode 100644 index 513f02f..0000000 --- a/miniwob-sandbox/html/miniwob/click-tab-2-hard.html +++ /dev/null @@ -1,94 +0,0 @@ - - - -Click Tab Task - - - - - - - - - - - - - - - -
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-tab-2-medium.html b/miniwob-sandbox/html/miniwob/click-tab-2-medium.html deleted file mode 100644 index 38af34d..0000000 --- a/miniwob-sandbox/html/miniwob/click-tab-2-medium.html +++ /dev/null @@ -1,109 +0,0 @@ - - - -Click Tab Task - - - - - - - - - - - - - - - -
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-tab-2.html b/miniwob-sandbox/html/miniwob/click-tab-2.html deleted file mode 100644 index aabe3b8..0000000 --- a/miniwob-sandbox/html/miniwob/click-tab-2.html +++ /dev/null @@ -1,97 +0,0 @@ - - - -Click Tab Task - - - - - - - - - - - - - - - -
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-tab.html b/miniwob-sandbox/html/miniwob/click-tab.html deleted file mode 100644 index b8b2034..0000000 --- a/miniwob-sandbox/html/miniwob/click-tab.html +++ /dev/null @@ -1,85 +0,0 @@ - - - -Click Tab Task - - - - - - - - - - - - - - - -
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-test-2.html b/miniwob-sandbox/html/miniwob/click-test-2.html deleted file mode 100644 index 0478b9e..0000000 --- a/miniwob-sandbox/html/miniwob/click-test-2.html +++ /dev/null @@ -1,44 +0,0 @@ - - - -Click Test Task - - - - - - - - - - - - -
-
Click button ONE.
-
- - -
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-test-transfer.html b/miniwob-sandbox/html/miniwob/click-test-transfer.html deleted file mode 100644 index 14ced82..0000000 --- a/miniwob-sandbox/html/miniwob/click-test-transfer.html +++ /dev/null @@ -1,54 +0,0 @@ - - - -Click Test Transfer Task - - - - - - - - - - - - -
-
-
- - -
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-test.html b/miniwob-sandbox/html/miniwob/click-test.html deleted file mode 100644 index ee51c74..0000000 --- a/miniwob-sandbox/html/miniwob/click-test.html +++ /dev/null @@ -1,40 +0,0 @@ - - - -Click Test Task - - - - - - - - - - - - -
-
Click the button.
-
- -
-
- - diff --git a/miniwob-sandbox/html/miniwob/click-widget.html b/miniwob-sandbox/html/miniwob/click-widget.html deleted file mode 100644 index 88f35d0..0000000 --- a/miniwob-sandbox/html/miniwob/click-widget.html +++ /dev/null @@ -1,76 +0,0 @@ - - - -Click Widget Task - - - - - - - - - - -
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/copy-paste-2.html b/miniwob-sandbox/html/miniwob/copy-paste-2.html deleted file mode 100644 index 215f416..0000000 --- a/miniwob-sandbox/html/miniwob/copy-paste-2.html +++ /dev/null @@ -1,100 +0,0 @@ - - - -Copy Paste Task - - - - - - - - - - - - - -
-
-
- -
-
- - -
-
- - diff --git a/miniwob-sandbox/html/miniwob/copy-paste.html b/miniwob-sandbox/html/miniwob/copy-paste.html deleted file mode 100644 index 4f4ee97..0000000 --- a/miniwob-sandbox/html/miniwob/copy-paste.html +++ /dev/null @@ -1,81 +0,0 @@ - - - -Copy Paste Task - - - - - - - - - - - - - -
-
-
-
-
- -
-
- - diff --git a/miniwob-sandbox/html/miniwob/count-shape.html b/miniwob-sandbox/html/miniwob/count-shape.html deleted file mode 100644 index c1a4dda..0000000 --- a/miniwob-sandbox/html/miniwob/count-shape.html +++ /dev/null @@ -1,97 +0,0 @@ - - - -Count Shape Task - - - - - - - - - - - - -
-
-
- -
-
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/count-sides.html b/miniwob-sandbox/html/miniwob/count-sides.html deleted file mode 100644 index 0043a6d..0000000 --- a/miniwob-sandbox/html/miniwob/count-sides.html +++ /dev/null @@ -1,91 +0,0 @@ - - - -Count Sides Task - - - - - - - - - - - -
-
Press the button that correctly denotes how many sides the shape has.
-
- -
- - - - - -
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/drag-box.html b/miniwob-sandbox/html/miniwob/drag-box.html deleted file mode 100644 index a51cb4b..0000000 --- a/miniwob-sandbox/html/miniwob/drag-box.html +++ /dev/null @@ -1,78 +0,0 @@ - - - -Drag Box Task - - - - - - - - - - - - - - - -
-
-
-
- -
-
- - diff --git a/miniwob-sandbox/html/miniwob/drag-cube.html b/miniwob-sandbox/html/miniwob/drag-cube.html deleted file mode 100644 index 4bd0ade..0000000 --- a/miniwob-sandbox/html/miniwob/drag-cube.html +++ /dev/null @@ -1,78 +0,0 @@ - - - -Drag Cube Task - - - - - - - - - - - - - - -
-
-
-
-
-
-
-
1
-
-
-
2
-
-
-
3
-
-
-
4
-
-
-
5
-
-
-
6
-
-
-
- -
-
-
- - diff --git a/miniwob-sandbox/html/miniwob/drag-item.html b/miniwob-sandbox/html/miniwob/drag-item.html deleted file mode 100644 index c60fbd5..0000000 --- a/miniwob-sandbox/html/miniwob/drag-item.html +++ /dev/null @@ -1,76 +0,0 @@ - - - -Drag Item Task - - - - - - - - - - - -
-
Click the button.
-
- - -
-
- - diff --git a/miniwob-sandbox/html/miniwob/drag-items-grid.html b/miniwob-sandbox/html/miniwob/drag-items-grid.html deleted file mode 100644 index d563f41..0000000 --- a/miniwob-sandbox/html/miniwob/drag-items-grid.html +++ /dev/null @@ -1,89 +0,0 @@ - - - -Drag Items Grid Task - - - - - - - - - - - - - - - -
-
-
-
    -
    -
    - - diff --git a/miniwob-sandbox/html/miniwob/drag-items.html b/miniwob-sandbox/html/miniwob/drag-items.html deleted file mode 100644 index 530ad6f..0000000 --- a/miniwob-sandbox/html/miniwob/drag-items.html +++ /dev/null @@ -1,90 +0,0 @@ - - - -Drag Items Task - - - - - - - - - - - - - - - -
    -
    -
    -
      -
      -
      - - diff --git a/miniwob-sandbox/html/miniwob/drag-shapes.html b/miniwob-sandbox/html/miniwob/drag-shapes.html deleted file mode 100644 index 070a88e..0000000 --- a/miniwob-sandbox/html/miniwob/drag-shapes.html +++ /dev/null @@ -1,149 +0,0 @@ - - - -Drag Shapes Task - - - - - - - - - - - -
      -
      -
      - - - -
      -
      - - diff --git a/miniwob-sandbox/html/miniwob/drag-sort-numbers.html b/miniwob-sandbox/html/miniwob/drag-sort-numbers.html deleted file mode 100644 index 8bf5709..0000000 --- a/miniwob-sandbox/html/miniwob/drag-sort-numbers.html +++ /dev/null @@ -1,78 +0,0 @@ - - - -Drag Sort Numbers Task - - - - - - - - - - - - - - - -
      -
      -
      -
        - -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/email-inbox-delete.html b/miniwob-sandbox/html/miniwob/email-inbox-delete.html deleted file mode 100644 index 454263a..0000000 --- a/miniwob-sandbox/html/miniwob/email-inbox-delete.html +++ /dev/null @@ -1,504 +0,0 @@ - - - -Email Inbox Task - - - - - - - - - - - - - - -
        -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/email-inbox-forward-nl-turk.html b/miniwob-sandbox/html/miniwob/email-inbox-forward-nl-turk.html deleted file mode 100644 index 5f5f230..0000000 --- a/miniwob-sandbox/html/miniwob/email-inbox-forward-nl-turk.html +++ /dev/null @@ -1,525 +0,0 @@ - - - -Email Inbox Task - - - - - - - - - - - - - - - -
        -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/email-inbox-forward-nl.html b/miniwob-sandbox/html/miniwob/email-inbox-forward-nl.html deleted file mode 100644 index d6ecc0b..0000000 --- a/miniwob-sandbox/html/miniwob/email-inbox-forward-nl.html +++ /dev/null @@ -1,562 +0,0 @@ - - - -Email Inbox Task - - - - - - - - - - - - - - -
        -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/email-inbox-forward.html b/miniwob-sandbox/html/miniwob/email-inbox-forward.html deleted file mode 100644 index 44a4963..0000000 --- a/miniwob-sandbox/html/miniwob/email-inbox-forward.html +++ /dev/null @@ -1,504 +0,0 @@ - - - -Email Inbox Task - - - - - - - - - - - - - - -
        -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/email-inbox-important.html b/miniwob-sandbox/html/miniwob/email-inbox-important.html deleted file mode 100644 index d09f61e..0000000 --- a/miniwob-sandbox/html/miniwob/email-inbox-important.html +++ /dev/null @@ -1,504 +0,0 @@ - - - -Email Inbox Task - - - - - - - - - - - - - - -
        -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/email-inbox-nl-turk.html b/miniwob-sandbox/html/miniwob/email-inbox-nl-turk.html deleted file mode 100644 index 0be64f5..0000000 --- a/miniwob-sandbox/html/miniwob/email-inbox-nl-turk.html +++ /dev/null @@ -1,551 +0,0 @@ - - - -Email Inbox Task - - - - - - - - - - - - - - - -
        -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/email-inbox-noscroll.html b/miniwob-sandbox/html/miniwob/email-inbox-noscroll.html deleted file mode 100644 index ff918de..0000000 --- a/miniwob-sandbox/html/miniwob/email-inbox-noscroll.html +++ /dev/null @@ -1,504 +0,0 @@ - - - -Email Inbox Task - - - - - - - - - - - - - - -
        -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/email-inbox-reply.html b/miniwob-sandbox/html/miniwob/email-inbox-reply.html deleted file mode 100644 index 8449ab3..0000000 --- a/miniwob-sandbox/html/miniwob/email-inbox-reply.html +++ /dev/null @@ -1,504 +0,0 @@ - - - -Email Inbox Task - - - - - - - - - - - - - - -
        -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/email-inbox-star-reply.html b/miniwob-sandbox/html/miniwob/email-inbox-star-reply.html deleted file mode 100644 index 4737f57..0000000 --- a/miniwob-sandbox/html/miniwob/email-inbox-star-reply.html +++ /dev/null @@ -1,504 +0,0 @@ - - - -Email Inbox Task - - - - - - - - - - - - - - -
        -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/email-inbox.html b/miniwob-sandbox/html/miniwob/email-inbox.html deleted file mode 100644 index c25ce00..0000000 --- a/miniwob-sandbox/html/miniwob/email-inbox.html +++ /dev/null @@ -1,504 +0,0 @@ - - - -Email Inbox Task - - - - - - - - - - - - - - -
        -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/enter-date.html b/miniwob-sandbox/html/miniwob/enter-date.html deleted file mode 100644 index ed11dcf..0000000 --- a/miniwob-sandbox/html/miniwob/enter-date.html +++ /dev/null @@ -1,57 +0,0 @@ - - - -Enter Date Task - - - - - - - - - - - - -
        -
        -
        -
        - - -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/enter-password.html b/miniwob-sandbox/html/miniwob/enter-password.html deleted file mode 100644 index cee913a..0000000 --- a/miniwob-sandbox/html/miniwob/enter-password.html +++ /dev/null @@ -1,53 +0,0 @@ - - - -Enter Password Task - - - - - - - - - - - - -
        -
        -
        -
        -

        -

        - -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/enter-text-2.html b/miniwob-sandbox/html/miniwob/enter-text-2.html deleted file mode 100644 index e3330cd..0000000 --- a/miniwob-sandbox/html/miniwob/enter-text-2.html +++ /dev/null @@ -1,78 +0,0 @@ - - - -Enter Text Task - - - - - - - - - - - - - -
        -
        -
        -
        - - -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/enter-text-dynamic.html b/miniwob-sandbox/html/miniwob/enter-text-dynamic.html deleted file mode 100644 index 8439418..0000000 --- a/miniwob-sandbox/html/miniwob/enter-text-dynamic.html +++ /dev/null @@ -1,57 +0,0 @@ - - - -Enter Dynamic Text Task - - - - - - - - - - - - -
        -
        -
        -
        - - -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/enter-text.html b/miniwob-sandbox/html/miniwob/enter-text.html deleted file mode 100644 index f2821ad..0000000 --- a/miniwob-sandbox/html/miniwob/enter-text.html +++ /dev/null @@ -1,59 +0,0 @@ - - - -Enter Text Task - - - - - - - - - - - - -
        -
        -
        -
        - - -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/enter-time.html b/miniwob-sandbox/html/miniwob/enter-time.html deleted file mode 100644 index fcf8ba0..0000000 --- a/miniwob-sandbox/html/miniwob/enter-time.html +++ /dev/null @@ -1,56 +0,0 @@ - - - -Enter Time Task - - - - - - - - - - - - -
        -
        -
        -
        - - -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/find-midpoint.html b/miniwob-sandbox/html/miniwob/find-midpoint.html deleted file mode 100644 index a3e37a4..0000000 --- a/miniwob-sandbox/html/miniwob/find-midpoint.html +++ /dev/null @@ -1,151 +0,0 @@ - - - -Find Midpoint Task - - - - - - - - - - - - -
        -
        Find and click on the shortest mid-point between the two points, then press submit.
        -
        - - -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/find-word.html b/miniwob-sandbox/html/miniwob/find-word.html deleted file mode 100644 index 67191c7..0000000 --- a/miniwob-sandbox/html/miniwob/find-word.html +++ /dev/null @@ -1,86 +0,0 @@ - - - -Find Word Task - - - - - - - - - - - - - -
        -
        -
        -

        - - -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/focus-text-2.html b/miniwob-sandbox/html/miniwob/focus-text-2.html deleted file mode 100644 index 2de44a8..0000000 --- a/miniwob-sandbox/html/miniwob/focus-text-2.html +++ /dev/null @@ -1,60 +0,0 @@ - - - -Focus Text Task - - - - - - - - - - - -
        -
        -
        - - - -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/focus-text.html b/miniwob-sandbox/html/miniwob/focus-text.html deleted file mode 100644 index d60cc6b..0000000 --- a/miniwob-sandbox/html/miniwob/focus-text.html +++ /dev/null @@ -1,53 +0,0 @@ - - - -Focus Text Task - - - - - - - - - - - -
        -
        -
        - -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/grid-coordinate.html b/miniwob-sandbox/html/miniwob/grid-coordinate.html deleted file mode 100644 index 149deea..0000000 --- a/miniwob-sandbox/html/miniwob/grid-coordinate.html +++ /dev/null @@ -1,125 +0,0 @@ - - - -Grid Coordinate Task - - - - - - - - - - - -
        -
        -
        - -
        -
        x
        -
        y
        -
        0
        -
        -
        -
        -2
        -
        -1
        -
        1
        -
        2
        -
        -
        -
        -2
        -
        -1
        -
        1
        -
        2
        -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/guess-number.html b/miniwob-sandbox/html/miniwob/guess-number.html deleted file mode 100644 index 0a64e25..0000000 --- a/miniwob-sandbox/html/miniwob/guess-number.html +++ /dev/null @@ -1,78 +0,0 @@ - - - -Resize Textarea Task - - - - - - - - - - - - -
        -
        Guess the number between 0-9 and press Submit. Use the feedback below to find the right number.
        -
        -
        -
        Waiting for your guess...
        -
        Correct!
        -
        The number is lower than .
        -
        The number is higher than .
        -
        -
        - - -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/highlight-text-2.html b/miniwob-sandbox/html/miniwob/highlight-text-2.html deleted file mode 100644 index 8f192b1..0000000 --- a/miniwob-sandbox/html/miniwob/highlight-text-2.html +++ /dev/null @@ -1,83 +0,0 @@ - - - -Highlight Text Task - - - - - - - - - - - - -
        -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/highlight-text.html b/miniwob-sandbox/html/miniwob/highlight-text.html deleted file mode 100644 index fb20a87..0000000 --- a/miniwob-sandbox/html/miniwob/highlight-text.html +++ /dev/null @@ -1,72 +0,0 @@ - - - -Highlight Text Task - - - - - - - - - - - - -
        -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/identify-shape.html b/miniwob-sandbox/html/miniwob/identify-shape.html deleted file mode 100644 index 1a98674..0000000 --- a/miniwob-sandbox/html/miniwob/identify-shape.html +++ /dev/null @@ -1,96 +0,0 @@ - - - -Identify Shape Task - - - - - - - - - - - -
        -
        Click the button that best describes the figure below.
        -
        - -
        - - - - - -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/logfile b/miniwob-sandbox/html/miniwob/logfile deleted file mode 100644 index d635773..0000000 --- a/miniwob-sandbox/html/miniwob/logfile +++ /dev/null @@ -1,263 +0,0 @@ -book-flight.html: div.getElementsByClassName('flight-codes')[0].innerHTML = departCode + " to " + arriveCode; -book-flight.html: div.getElementsByClassName('flight-date')[0].innerHTML = departDate; -book-flight.html: div.getElementsByClassName('depart-time')[0].innerHTML = result.depart.time; -book-flight.html: div.getElementsByClassName('depart-day')[0].innerHTML = result.depart.day; -book-flight.html: div.getElementsByClassName('depart-city')[0].innerHTML = result.depart.city; -book-flight.html: div.getElementsByClassName('arrive-time')[0].innerHTML = result.arrive.time; -book-flight.html: div.getElementsByClassName('arrive-day')[0].innerHTML = result.arrive.day; -book-flight.html: div.getElementsByClassName('arrive-city')[0].innerHTML = result.arrive.city; -book-flight.html: div.getElementsByClassName('time-duration')[0].innerHTML = result.userDuration; -book-flight.html: div.getElementsByClassName('time-duration')[0].setAttribute('data-duration', result.duration); -book-flight.html: div.getElementsByClassName('flight-price')[0].innerHTML += '$' + result.price; -book-flight.html: div.getElementsByClassName('flight-price')[0].setAttribute('data-price', result.price); -book-flight.html: $('#menu').removeClass('hide'); -book-flight.html: $('#results').addClass('hide').empty(); -book-flight.html: $('.error').removeClass('.error'); -book-flight.html: $('.error').removeClass('error'); -book-flight.html: $('#flight-from').addClass('error'); -book-flight.html: $('#flight-to').addClass('error'); -book-flight.html: $('#datepicker').addClass('error'); -book-flight.html: $('#results').removeClass('hide'); -book-flight.html: $('#menu').addClass('hide'); -book-flight.html: $('#results').addClass('hide'); -book-flight.html: $('#menu').removeClass('hide'); -click-collapsible-2.html: var elements = document.getElementsByClassName('alink'); -click-link.html: var elements = document.getElementsByClassName('alink'); -click-shades.html: var elemClass = this.getAttribute('class'); -click-shades.html: (elemClass == 'selected') ? this.removeAttribute('class') : this.setAttribute('class', 'selected'); -click-tab-2-easy.html: var elements = document.getElementsByClassName('alink'); -click-tab-2-medium.html: var elements = document.getElementsByClassName('alink'); -click-tab-2-medium.html: var elements = document.getElementsByClassName('alink'), hasCorrect = false; -click-tab-2-medium.html: var tabs = document.getElementsByClassName('ui-tab'); -click-tab-2.html: var elements = document.getElementsByClassName('alink'); -drag-cube.html: var t = document.body.getElementsByClassName('active')[0].innerHTML; -email-inbox-delete.html: div.getElementsByClassName('email-sender')[0].innerHTML = emails[i].name; -email-inbox-delete.html: div.getElementsByClassName('email-subject')[0].innerHTML = summarizeEmailContent(emails[i].subject); -email-inbox-delete.html: div.getElementsByClassName('email-body')[0].innerHTML = summarizeEmailContent(emails[i].body); -email-inbox-delete.html: div.getElementsByClassName('email-sender')[0].innerHTML = emails[i].name.replace(searchString, ''+searchString+''); -email-inbox-delete.html: div.getElementsByClassName('email-subject')[0].innerHTML = emails[i].subject.replace(searchString, ''+searchString+''); -email-inbox-delete.html: div.getElementsByClassName('email-body')[0].innerHTML = summarizeEmailContent(emails[i].body).replace(searchString, ''+searchString+''); -email-inbox-delete.html: emailDiv.getElementsByClassName('email-sender')[0].innerHTML = email.name; -email-inbox-delete.html: emailDiv.getElementsByClassName('email-subject')[0].innerHTML = email.subject; -email-inbox-delete.html: emailDiv.getElementsByClassName('email-body')[0].innerHTML = email.body; -email-inbox-delete.html: $('#main').addClass('hide'); -email-inbox-delete.html: $('#search').addClass('hide'); -email-inbox-delete.html: $('#main').removeClass('hide'); -email-inbox-delete.html: if($(this).hasClass('clicked')){ -email-inbox-delete.html: $(this).removeClass('clicked'); -email-inbox-delete.html: $(this).addClass('clicked'); -email-inbox-delete.html: reply.getElementsByClassName('reply-sender')[0].innerHTML = email.name; -email-inbox-delete.html: reply.getElementsByClassName('reply-subject')[0].innerHTML += email.subject; -email-inbox-delete.html: $('#email').addClass('hide'); -email-inbox-delete.html: forward.getElementsByClassName('forward-subject')[0].innerHTML += email.subject; -email-inbox-delete.html: $('#email').addClass('hide'); -email-inbox-delete.html: $('#email').removeClass('hide'); -email-inbox-delete.html: $('#email').removeClass('hide'); -email-inbox-delete.html: if($(this).hasClass('clicked')){ -email-inbox-delete.html: $(this).removeClass('clicked'); -email-inbox-delete.html: $(this).addClass('clicked'); -email-inbox-delete.html: $('#search').removeClass('hide'); -email-inbox-delete.html: $('#main').addClass('hide'); -email-inbox-delete.html: $('#search').addClass('hide'); -email-inbox-delete.html: $('#main').removeClass('hide'); -email-inbox-forward.html: div.getElementsByClassName('email-sender')[0].innerHTML = emails[i].name; -email-inbox-forward.html: div.getElementsByClassName('email-subject')[0].innerHTML = summarizeEmailContent(emails[i].subject); -email-inbox-forward.html: div.getElementsByClassName('email-body')[0].innerHTML = summarizeEmailContent(emails[i].body); -email-inbox-forward.html: div.getElementsByClassName('email-sender')[0].innerHTML = emails[i].name.replace(searchString, ''+searchString+''); -email-inbox-forward.html: div.getElementsByClassName('email-subject')[0].innerHTML = emails[i].subject.replace(searchString, ''+searchString+''); -email-inbox-forward.html: div.getElementsByClassName('email-body')[0].innerHTML = summarizeEmailContent(emails[i].body).replace(searchString, ''+searchString+''); -email-inbox-forward.html: emailDiv.getElementsByClassName('email-sender')[0].innerHTML = email.name; -email-inbox-forward.html: emailDiv.getElementsByClassName('email-subject')[0].innerHTML = email.subject; -email-inbox-forward.html: emailDiv.getElementsByClassName('email-body')[0].innerHTML = email.body; -email-inbox-forward.html: $('#main').addClass('hide'); -email-inbox-forward.html: $('#search').addClass('hide'); -email-inbox-forward.html: $('#main').removeClass('hide'); -email-inbox-forward.html: if($(this).hasClass('clicked')){ -email-inbox-forward.html: $(this).removeClass('clicked'); -email-inbox-forward.html: $(this).addClass('clicked'); -email-inbox-forward.html: reply.getElementsByClassName('reply-sender')[0].innerHTML = email.name; -email-inbox-forward.html: reply.getElementsByClassName('reply-subject')[0].innerHTML += email.subject; -email-inbox-forward.html: $('#email').addClass('hide'); -email-inbox-forward.html: forward.getElementsByClassName('forward-subject')[0].innerHTML += email.subject; -email-inbox-forward.html: $('#email').addClass('hide'); -email-inbox-forward.html: $('#email').removeClass('hide'); -email-inbox-forward.html: $('#email').removeClass('hide'); -email-inbox-forward.html: if($(this).hasClass('clicked')){ -email-inbox-forward.html: $(this).removeClass('clicked'); -email-inbox-forward.html: $(this).addClass('clicked'); -email-inbox-forward.html: $('#search').removeClass('hide'); -email-inbox-forward.html: $('#main').addClass('hide'); -email-inbox-forward.html: $('#search').addClass('hide'); -email-inbox-forward.html: $('#main').removeClass('hide'); -email-inbox-important.html: div.getElementsByClassName('email-sender')[0].innerHTML = emails[i].name; -email-inbox-important.html: div.getElementsByClassName('email-subject')[0].innerHTML = summarizeEmailContent(emails[i].subject); -email-inbox-important.html: div.getElementsByClassName('email-body')[0].innerHTML = summarizeEmailContent(emails[i].body); -email-inbox-important.html: div.getElementsByClassName('email-sender')[0].innerHTML = emails[i].name.replace(searchString, ''+searchString+''); -email-inbox-important.html: div.getElementsByClassName('email-subject')[0].innerHTML = emails[i].subject.replace(searchString, ''+searchString+''); -email-inbox-important.html: div.getElementsByClassName('email-body')[0].innerHTML = summarizeEmailContent(emails[i].body).replace(searchString, ''+searchString+''); -email-inbox-important.html: emailDiv.getElementsByClassName('email-sender')[0].innerHTML = email.name; -email-inbox-important.html: emailDiv.getElementsByClassName('email-subject')[0].innerHTML = email.subject; -email-inbox-important.html: emailDiv.getElementsByClassName('email-body')[0].innerHTML = email.body; -email-inbox-important.html: $('#main').addClass('hide'); -email-inbox-important.html: $('#search').addClass('hide'); -email-inbox-important.html: $('#main').removeClass('hide'); -email-inbox-important.html: if($(this).hasClass('clicked')){ -email-inbox-important.html: $(this).removeClass('clicked'); -email-inbox-important.html: $(this).addClass('clicked'); -email-inbox-important.html: reply.getElementsByClassName('reply-sender')[0].innerHTML = email.name; -email-inbox-important.html: reply.getElementsByClassName('reply-subject')[0].innerHTML += email.subject; -email-inbox-important.html: $('#email').addClass('hide'); -email-inbox-important.html: forward.getElementsByClassName('forward-subject')[0].innerHTML += email.subject; -email-inbox-important.html: $('#email').addClass('hide'); -email-inbox-important.html: $('#email').removeClass('hide'); -email-inbox-important.html: $('#email').removeClass('hide'); -email-inbox-important.html: if($(this).hasClass('clicked')){ -email-inbox-important.html: $(this).removeClass('clicked'); -email-inbox-important.html: $(this).addClass('clicked'); -email-inbox-important.html: $('#search').removeClass('hide'); -email-inbox-important.html: $('#main').addClass('hide'); -email-inbox-important.html: $('#search').addClass('hide'); -email-inbox-important.html: $('#main').removeClass('hide'); -email-inbox-noscroll.html: div.getElementsByClassName('email-sender')[0].innerHTML = emails[i].name; -email-inbox-noscroll.html: div.getElementsByClassName('email-subject')[0].innerHTML = summarizeEmailContent(emails[i].subject); -email-inbox-noscroll.html: div.getElementsByClassName('email-body')[0].innerHTML = summarizeEmailContent(emails[i].body); -email-inbox-noscroll.html: div.getElementsByClassName('email-sender')[0].innerHTML = emails[i].name.replace(searchString, ''+searchString+''); -email-inbox-noscroll.html: div.getElementsByClassName('email-subject')[0].innerHTML = emails[i].subject.replace(searchString, ''+searchString+''); -email-inbox-noscroll.html: div.getElementsByClassName('email-body')[0].innerHTML = summarizeEmailContent(emails[i].body).replace(searchString, ''+searchString+''); -email-inbox-noscroll.html: emailDiv.getElementsByClassName('email-sender')[0].innerHTML = email.name; -email-inbox-noscroll.html: emailDiv.getElementsByClassName('email-subject')[0].innerHTML = email.subject; -email-inbox-noscroll.html: emailDiv.getElementsByClassName('email-body')[0].innerHTML = email.body; -email-inbox-noscroll.html: $('#main').addClass('hide'); -email-inbox-noscroll.html: $('#search').addClass('hide'); -email-inbox-noscroll.html: $('#main').removeClass('hide'); -email-inbox-noscroll.html: if($(this).hasClass('clicked')){ -email-inbox-noscroll.html: $(this).removeClass('clicked'); -email-inbox-noscroll.html: $(this).addClass('clicked'); -email-inbox-noscroll.html: reply.getElementsByClassName('reply-sender')[0].innerHTML = email.name; -email-inbox-noscroll.html: reply.getElementsByClassName('reply-subject')[0].innerHTML += email.subject; -email-inbox-noscroll.html: $('#email').addClass('hide'); -email-inbox-noscroll.html: forward.getElementsByClassName('forward-subject')[0].innerHTML += email.subject; -email-inbox-noscroll.html: $('#email').addClass('hide'); -email-inbox-noscroll.html: $('#email').removeClass('hide'); -email-inbox-noscroll.html: $('#email').removeClass('hide'); -email-inbox-noscroll.html: if($(this).hasClass('clicked')){ -email-inbox-noscroll.html: $(this).removeClass('clicked'); -email-inbox-noscroll.html: $(this).addClass('clicked'); -email-inbox-noscroll.html: $('#search').removeClass('hide'); -email-inbox-noscroll.html: $('#main').addClass('hide'); -email-inbox-noscroll.html: $('#search').addClass('hide'); -email-inbox-noscroll.html: $('#main').removeClass('hide'); -email-inbox-reply.html: div.getElementsByClassName('email-sender')[0].innerHTML = emails[i].name; -email-inbox-reply.html: div.getElementsByClassName('email-subject')[0].innerHTML = summarizeEmailContent(emails[i].subject); -email-inbox-reply.html: div.getElementsByClassName('email-body')[0].innerHTML = summarizeEmailContent(emails[i].body); -email-inbox-reply.html: div.getElementsByClassName('email-sender')[0].innerHTML = emails[i].name.replace(searchString, ''+searchString+''); -email-inbox-reply.html: div.getElementsByClassName('email-subject')[0].innerHTML = emails[i].subject.replace(searchString, ''+searchString+''); -email-inbox-reply.html: div.getElementsByClassName('email-body')[0].innerHTML = summarizeEmailContent(emails[i].body).replace(searchString, ''+searchString+''); -email-inbox-reply.html: emailDiv.getElementsByClassName('email-sender')[0].innerHTML = email.name; -email-inbox-reply.html: emailDiv.getElementsByClassName('email-subject')[0].innerHTML = email.subject; -email-inbox-reply.html: emailDiv.getElementsByClassName('email-body')[0].innerHTML = email.body; -email-inbox-reply.html: $('#main').addClass('hide'); -email-inbox-reply.html: $('#search').addClass('hide'); -email-inbox-reply.html: $('#main').removeClass('hide'); -email-inbox-reply.html: if($(this).hasClass('clicked')){ -email-inbox-reply.html: $(this).removeClass('clicked'); -email-inbox-reply.html: $(this).addClass('clicked'); -email-inbox-reply.html: reply.getElementsByClassName('reply-sender')[0].innerHTML = email.name; -email-inbox-reply.html: reply.getElementsByClassName('reply-subject')[0].innerHTML += email.subject; -email-inbox-reply.html: $('#email').addClass('hide'); -email-inbox-reply.html: forward.getElementsByClassName('forward-subject')[0].innerHTML += email.subject; -email-inbox-reply.html: $('#email').addClass('hide'); -email-inbox-reply.html: $('#email').removeClass('hide'); -email-inbox-reply.html: $('#email').removeClass('hide'); -email-inbox-reply.html: if($(this).hasClass('clicked')){ -email-inbox-reply.html: $(this).removeClass('clicked'); -email-inbox-reply.html: $(this).addClass('clicked'); -email-inbox-reply.html: $('#search').removeClass('hide'); -email-inbox-reply.html: $('#main').addClass('hide'); -email-inbox-reply.html: $('#search').addClass('hide'); -email-inbox-reply.html: $('#main').removeClass('hide'); -email-inbox-star-reply.html: div.getElementsByClassName('email-sender')[0].innerHTML = emails[i].name; -email-inbox-star-reply.html: div.getElementsByClassName('email-subject')[0].innerHTML = summarizeEmailContent(emails[i].subject); -email-inbox-star-reply.html: div.getElementsByClassName('email-body')[0].innerHTML = summarizeEmailContent(emails[i].body); -email-inbox-star-reply.html: div.getElementsByClassName('email-sender')[0].innerHTML = emails[i].name.replace(searchString, ''+searchString+''); -email-inbox-star-reply.html: div.getElementsByClassName('email-subject')[0].innerHTML = emails[i].subject.replace(searchString, ''+searchString+''); -email-inbox-star-reply.html: div.getElementsByClassName('email-body')[0].innerHTML = summarizeEmailContent(emails[i].body).replace(searchString, ''+searchString+''); -email-inbox-star-reply.html: emailDiv.getElementsByClassName('email-sender')[0].innerHTML = email.name; -email-inbox-star-reply.html: emailDiv.getElementsByClassName('email-subject')[0].innerHTML = email.subject; -email-inbox-star-reply.html: emailDiv.getElementsByClassName('email-body')[0].innerHTML = email.body; -email-inbox-star-reply.html: $('#main').addClass('hide'); -email-inbox-star-reply.html: $('#search').addClass('hide'); -email-inbox-star-reply.html: $('#main').removeClass('hide'); -email-inbox-star-reply.html: if($(this).hasClass('clicked')){ -email-inbox-star-reply.html: $(this).removeClass('clicked'); -email-inbox-star-reply.html: $(this).addClass('clicked'); -email-inbox-star-reply.html: reply.getElementsByClassName('reply-sender')[0].innerHTML = email.name; -email-inbox-star-reply.html: reply.getElementsByClassName('reply-subject')[0].innerHTML += email.subject; -email-inbox-star-reply.html: $('#email').addClass('hide'); -email-inbox-star-reply.html: forward.getElementsByClassName('forward-subject')[0].innerHTML += email.subject; -email-inbox-star-reply.html: $('#email').addClass('hide'); -email-inbox-star-reply.html: $('#email').removeClass('hide'); -email-inbox-star-reply.html: $('#email').removeClass('hide'); -email-inbox-star-reply.html: if($(this).hasClass('clicked')){ -email-inbox-star-reply.html: $(this).removeClass('clicked'); -email-inbox-star-reply.html: $(this).addClass('clicked'); -email-inbox-star-reply.html: $('#search').removeClass('hide'); -email-inbox-star-reply.html: $('#main').addClass('hide'); -email-inbox-star-reply.html: $('#search').addClass('hide'); -email-inbox-star-reply.html: $('#main').removeClass('hide'); -email-inbox.html: div.getElementsByClassName('email-sender')[0].innerHTML = emails[i].name; -email-inbox.html: div.getElementsByClassName('email-subject')[0].innerHTML = summarizeEmailContent(emails[i].subject); -email-inbox.html: div.getElementsByClassName('email-body')[0].innerHTML = summarizeEmailContent(emails[i].body); -email-inbox.html: div.getElementsByClassName('email-sender')[0].innerHTML = emails[i].name.replace(searchString, ''+searchString+''); -email-inbox.html: div.getElementsByClassName('email-subject')[0].innerHTML = emails[i].subject.replace(searchString, ''+searchString+''); -email-inbox.html: div.getElementsByClassName('email-body')[0].innerHTML = summarizeEmailContent(emails[i].body).replace(searchString, ''+searchString+''); -email-inbox.html: emailDiv.getElementsByClassName('email-sender')[0].innerHTML = email.name; -email-inbox.html: emailDiv.getElementsByClassName('email-subject')[0].innerHTML = email.subject; -email-inbox.html: emailDiv.getElementsByClassName('email-body')[0].innerHTML = email.body; -email-inbox.html: $('#main').addClass('hide'); -email-inbox.html: $('#search').addClass('hide'); -email-inbox.html: $('#main').removeClass('hide'); -email-inbox.html: if($(this).hasClass('clicked')){ -email-inbox.html: $(this).removeClass('clicked'); -email-inbox.html: $(this).addClass('clicked'); -email-inbox.html: reply.getElementsByClassName('reply-sender')[0].innerHTML = email.name; -email-inbox.html: reply.getElementsByClassName('reply-subject')[0].innerHTML += email.subject; -email-inbox.html: $('#email').addClass('hide'); -email-inbox.html: forward.getElementsByClassName('forward-subject')[0].innerHTML += email.subject; -email-inbox.html: $('#email').addClass('hide'); -email-inbox.html: $('#email').removeClass('hide'); -email-inbox.html: $('#email').removeClass('hide'); -email-inbox.html: if($(this).hasClass('clicked')){ -email-inbox.html: $(this).removeClass('clicked'); -email-inbox.html: $(this).addClass('clicked'); -email-inbox.html: $('#search').removeClass('hide'); -email-inbox.html: $('#main').addClass('hide'); -email-inbox.html: $('#search').addClass('hide'); -email-inbox.html: $('#main').removeClass('hide'); -guess-number.html: $('#feedback div').addClass('hide'); -guess-number.html: $('#waiting').removeClass('hide'); -guess-number.html: $('#feedback div').addClass('hide'); -guess-number.html: $('#correct').removeClass('hide'); -guess-number.html: $('#higher').removeClass('hide'); -guess-number.html: $('#lower').removeClass('hide'); -search-engine.html: div.getElementsByClassName('search-title')[0].innerHTML = result.title; -search-engine.html: div.getElementsByClassName('search-title')[0].setAttribute('data-result', index); -search-engine.html: div.getElementsByClassName('search-url')[0].innerHTML = result.url; -search-engine.html: div.getElementsByClassName('search-desc')[0].innerHTML = result.desc; -simon-says.html: $button.toggleClass('push'); -simon-says.html: $button.toggleClass('push'); -social-media.html: div.getElementsByClassName('name')[0].innerHTML = result.name; -social-media.html: div.getElementsByClassName('username')[0].innerHTML = result.username; -social-media.html: div.getElementsByClassName('body')[0].innerHTML = result.body; -social-media.html: div.getElementsByClassName('time')[0].innerHTML = result.time; -social-media.html: div.getElementsByClassName('menu-user')[0].innerHTML += ' ' + result.username; -social-media.html: div.getElementsByClassName('block-user')[0].innerHTML += ' ' + result.username; -social-media.html: if($ul.hasClass('hide')) { -social-media.html: $('#area ul').addClass('hide'); -social-media.html: $ul.removeClass('hide'); -social-media.html: } else $ul.addClass('hide'); -terminal.html: div.getElementsByClassName('command')[0].innerHTML = commandInput; -terminal.html: div.getElementsByClassName('output')[0].innerHTML = output; -terminal.html: $('#input-flicker').toggleClass('hide'); -tic-tac-toe.html: $('#ttt-' + enemySpace).addClass(enemyPiece); -tic-tac-toe.html: $this.addClass(playerPiece); diff --git a/miniwob-sandbox/html/miniwob/login-user-popup.html b/miniwob-sandbox/html/miniwob/login-user-popup.html deleted file mode 100644 index 75c0a7e..0000000 --- a/miniwob-sandbox/html/miniwob/login-user-popup.html +++ /dev/null @@ -1,117 +0,0 @@ - - - -Login User Popup Task - - - - - - - - - - - - -
        -
        -
        -
        -

        -

        - -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/login-user.html b/miniwob-sandbox/html/miniwob/login-user.html deleted file mode 100644 index 2261a52..0000000 --- a/miniwob-sandbox/html/miniwob/login-user.html +++ /dev/null @@ -1,52 +0,0 @@ - - - -Login User Task - - - - - - - - - - - - -
        -
        -
        -
        -

        -

        - -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/moving-items.html b/miniwob-sandbox/html/miniwob/moving-items.html deleted file mode 100644 index 536265f..0000000 --- a/miniwob-sandbox/html/miniwob/moving-items.html +++ /dev/null @@ -1,139 +0,0 @@ - - - -Chase Circle Task - - - - - - - - - - - -
        -
        Click as many moving circles as possible.
        -
        - -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/multi-layouts.html b/miniwob-sandbox/html/miniwob/multi-layouts.html deleted file mode 100644 index 4017964..0000000 --- a/miniwob-sandbox/html/miniwob/multi-layouts.html +++ /dev/null @@ -1,182 +0,0 @@ - - - -Multi Layouts Task - - - - - - - - - - -
        -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/multi-orderings.html b/miniwob-sandbox/html/miniwob/multi-orderings.html deleted file mode 100644 index 51136af..0000000 --- a/miniwob-sandbox/html/miniwob/multi-orderings.html +++ /dev/null @@ -1,75 +0,0 @@ - - - -Multi Orderings Task - - - - - - - - - - -
        -
        -
        -
        - - diff --git a/miniwob-sandbox/html/miniwob/navigate-tree.html b/miniwob-sandbox/html/miniwob/navigate-tree.html deleted file mode 100644 index dfca9f3..0000000 --- a/miniwob-sandbox/html/miniwob/navigate-tree.html +++ /dev/null @@ -1,105 +0,0 @@ - - - -Navigate Tree Task - - - - - - - - - - - - - - -
        -
        Click the folder labeled "Secrets".
        -
        -
        -
          -
          -
          -
          - - diff --git a/miniwob-sandbox/html/miniwob/number-checkboxes.html b/miniwob-sandbox/html/miniwob/number-checkboxes.html deleted file mode 100644 index f51f485..0000000 --- a/miniwob-sandbox/html/miniwob/number-checkboxes.html +++ /dev/null @@ -1,200 +0,0 @@ - - - -Number Checkboxes Task - - - - - - - - - - - - -
          -
          -
          - -
          - -
          -
          - - diff --git a/miniwob-sandbox/html/miniwob/parser.py b/miniwob-sandbox/html/miniwob/parser.py deleted file mode 100644 index 0fae83d..0000000 --- a/miniwob-sandbox/html/miniwob/parser.py +++ /dev/null @@ -1,17 +0,0 @@ -import re - -classes = set() -with open("logfile", "r") as f: - for line in f: - match = re.match(r".*class='([^']+)'", line) - if match: - classes.add(match.group(1)) - else: - match = re.match(r".*class=\"([^\"]+)\"", line) - if match: - classes.add(match.group(1)) - else: - print line, - -#for c in classes: -# print "\"{}\",".format(c) diff --git a/miniwob-sandbox/html/miniwob/read-table-2.html b/miniwob-sandbox/html/miniwob/read-table-2.html deleted file mode 100644 index 31a5abd..0000000 --- a/miniwob-sandbox/html/miniwob/read-table-2.html +++ /dev/null @@ -1,149 +0,0 @@ - - - -Read Table Task - - - - - - - - - - - - -
          -
          -
          -
          -
          -
          - - -
          -
          - - -
          - -
          -
          -
          - - diff --git a/miniwob-sandbox/html/miniwob/read-table.html b/miniwob-sandbox/html/miniwob/read-table.html deleted file mode 100644 index cc4071b..0000000 --- a/miniwob-sandbox/html/miniwob/read-table.html +++ /dev/null @@ -1,102 +0,0 @@ - - - -Read Table Task - - - - - - - - - - - - -
          -
          -
          -
          -
          - - -
          -
          -
          - - diff --git a/miniwob-sandbox/html/miniwob/resize-textarea.html b/miniwob-sandbox/html/miniwob/resize-textarea.html deleted file mode 100644 index 4747e5a..0000000 --- a/miniwob-sandbox/html/miniwob/resize-textarea.html +++ /dev/null @@ -1,84 +0,0 @@ - - - -Resize Textarea Task - - - - - - - - - - - - - -
          -
          -
          -
          - - diff --git a/miniwob-sandbox/html/miniwob/right-angle.html b/miniwob-sandbox/html/miniwob/right-angle.html deleted file mode 100644 index bb35398..0000000 --- a/miniwob-sandbox/html/miniwob/right-angle.html +++ /dev/null @@ -1,162 +0,0 @@ - - - -Right Angle Task - - - - - - - - - - - - -
          -
          Add a third point to create a right angle, then press submit.
          -
          - - -
          -
          - - diff --git a/miniwob-sandbox/html/miniwob/scroll-text-2.html b/miniwob-sandbox/html/miniwob/scroll-text-2.html deleted file mode 100644 index 15511b2..0000000 --- a/miniwob-sandbox/html/miniwob/scroll-text-2.html +++ /dev/null @@ -1,69 +0,0 @@ - - - -Scroll Text Task - - - - - - - - - - - - - -
          -
          -
          - - -
          -
          - - diff --git a/miniwob-sandbox/html/miniwob/scroll-text.html b/miniwob-sandbox/html/miniwob/scroll-text.html deleted file mode 100644 index 2454127..0000000 --- a/miniwob-sandbox/html/miniwob/scroll-text.html +++ /dev/null @@ -1,57 +0,0 @@ - - - -Scroll Text Task - - - - - - - - - - - - - -
          -
          -
          - - - -
          -
          - - diff --git a/miniwob-sandbox/html/miniwob/search-engine.html b/miniwob-sandbox/html/miniwob/search-engine.html deleted file mode 100644 index 513170a..0000000 --- a/miniwob-sandbox/html/miniwob/search-engine.html +++ /dev/null @@ -1,152 +0,0 @@ - - - -Search Engine Task - - - - - - - - - - - - - -
          -
          -
          - -
          -
            -
            -
            - - diff --git a/miniwob-sandbox/html/miniwob/simon-says.html b/miniwob-sandbox/html/miniwob/simon-says.html deleted file mode 100644 index e1f5527..0000000 --- a/miniwob-sandbox/html/miniwob/simon-says.html +++ /dev/null @@ -1,92 +0,0 @@ - - - -Simon Says Task - - - - - - - - - - - - -
            -
            -
            - - -
            - -
            -
            - - diff --git a/miniwob-sandbox/html/miniwob/simple-algebra.html b/miniwob-sandbox/html/miniwob/simple-algebra.html deleted file mode 100644 index 21e2bb7..0000000 --- a/miniwob-sandbox/html/miniwob/simple-algebra.html +++ /dev/null @@ -1,74 +0,0 @@ - - - -Simple Algebra Task - - - - - - - - - - - - -
            -
            Solve for x and type your answer into the textbox. Press Submit when done.
            -
            -
            -
            - x = - -
            - -
            -
            - - diff --git a/miniwob-sandbox/html/miniwob/simple-arithmetic.html b/miniwob-sandbox/html/miniwob/simple-arithmetic.html deleted file mode 100644 index afaee99..0000000 --- a/miniwob-sandbox/html/miniwob/simple-arithmetic.html +++ /dev/null @@ -1,69 +0,0 @@ - - - -Simple Math Task - - - - - - - - - - - - -
            -
            Solve the math problem and type your answer into the textbox. Press submit when done.
            -
            -
            -
            - -
            - -
            -
            - - diff --git a/miniwob-sandbox/html/miniwob/social-media-all.html b/miniwob-sandbox/html/miniwob/social-media-all.html deleted file mode 100644 index 05b1ea9..0000000 --- a/miniwob-sandbox/html/miniwob/social-media-all.html +++ /dev/null @@ -1,172 +0,0 @@ - - - -Social Media All Task - - - - - - - - - - - - - -
            -
            -
            -
            - - diff --git a/miniwob-sandbox/html/miniwob/social-media-some.html b/miniwob-sandbox/html/miniwob/social-media-some.html deleted file mode 100644 index 6297bde..0000000 --- a/miniwob-sandbox/html/miniwob/social-media-some.html +++ /dev/null @@ -1,179 +0,0 @@ - - - -Social Media All Task - - - - - - - - - - - - - -
            -
            -
            -
            - - diff --git a/miniwob-sandbox/html/miniwob/social-media.html b/miniwob-sandbox/html/miniwob/social-media.html deleted file mode 100644 index a252116..0000000 --- a/miniwob-sandbox/html/miniwob/social-media.html +++ /dev/null @@ -1,175 +0,0 @@ - - - -Social Media Task - - - - - - - - - - - - - -
            -
            TODO: Write code to generate actual problems.
            -
            -
            - - diff --git a/miniwob-sandbox/html/miniwob/terminal.html b/miniwob-sandbox/html/miniwob/terminal.html deleted file mode 100644 index 4e5087c..0000000 --- a/miniwob-sandbox/html/miniwob/terminal.html +++ /dev/null @@ -1,247 +0,0 @@ - - - -Terminal Task - - - - - - - - - - - - -
            -
            -
            -
            - - diff --git a/miniwob-sandbox/html/miniwob/text-editor.html b/miniwob-sandbox/html/miniwob/text-editor.html deleted file mode 100644 index 1e8596e..0000000 --- a/miniwob-sandbox/html/miniwob/text-editor.html +++ /dev/null @@ -1,165 +0,0 @@ - - - -Text Editor Task - - - - - - - - - - - - - - - -
            -
            -
            -
            - -
            -
            - - diff --git a/miniwob-sandbox/html/miniwob/text-transform.html b/miniwob-sandbox/html/miniwob/text-transform.html deleted file mode 100644 index 4efffdb..0000000 --- a/miniwob-sandbox/html/miniwob/text-transform.html +++ /dev/null @@ -1,77 +0,0 @@ - - - -Text Transform Task - - - - - - - - - - - - -
            -
            Type the text below into the text field and press Submit.
            -
            -
            -
            - - -
            -
            -
            - - diff --git a/miniwob-sandbox/html/miniwob/tic-tac-toe.html b/miniwob-sandbox/html/miniwob/tic-tac-toe.html deleted file mode 100644 index 24d082b..0000000 --- a/miniwob-sandbox/html/miniwob/tic-tac-toe.html +++ /dev/null @@ -1,208 +0,0 @@ - - - -Tic Tac Toe Task - - - - - - - - - - - - -
            -
            Playing as 'X', win a game of tic-tac-toe.
            -
            -
            - - diff --git a/miniwob-sandbox/html/miniwob/unicode-test.html b/miniwob-sandbox/html/miniwob/unicode-test.html deleted file mode 100644 index a125df2..0000000 --- a/miniwob-sandbox/html/miniwob/unicode-test.html +++ /dev/null @@ -1,74 +0,0 @@ - - - -Click Button Task - - - - - - - - - -
            -
            -
            -
            - - diff --git a/miniwob-sandbox/html/miniwob/use-autocomplete-nodelay.html b/miniwob-sandbox/html/miniwob/use-autocomplete-nodelay.html deleted file mode 100644 index 653b726..0000000 --- a/miniwob-sandbox/html/miniwob/use-autocomplete-nodelay.html +++ /dev/null @@ -1,80 +0,0 @@ - - - -Use Autocomplete Task - - - - - - - - - - - - - - - -
            -
            -
            - - - -
            -
            - - diff --git a/miniwob-sandbox/html/miniwob/use-autocomplete.html b/miniwob-sandbox/html/miniwob/use-autocomplete.html deleted file mode 100644 index 8293aed..0000000 --- a/miniwob-sandbox/html/miniwob/use-autocomplete.html +++ /dev/null @@ -1,79 +0,0 @@ - - - -Use Autocomplete Task - - - - - - - - - - - - - - - -
            -
            -
            - - - -
            -
            - - diff --git a/miniwob-sandbox/html/miniwob/use-colorwheel-2.html b/miniwob-sandbox/html/miniwob/use-colorwheel-2.html deleted file mode 100644 index 47ecfd9..0000000 --- a/miniwob-sandbox/html/miniwob/use-colorwheel-2.html +++ /dev/null @@ -1,64 +0,0 @@ - - - -Use Color Wheel Task - - - - - - - - - - - - - -
            -
            -
            - Color:
            - -
            -
            - - diff --git a/miniwob-sandbox/html/miniwob/use-colorwheel.html b/miniwob-sandbox/html/miniwob/use-colorwheel.html deleted file mode 100644 index b36bd0d..0000000 --- a/miniwob-sandbox/html/miniwob/use-colorwheel.html +++ /dev/null @@ -1,55 +0,0 @@ - - - -Use Color Wheel Task - - - - - - - - - - - - - -
            -
            -
            - Color:
            - -
            -
            - - diff --git a/miniwob-sandbox/html/miniwob/use-slider-2.html b/miniwob-sandbox/html/miniwob/use-slider-2.html deleted file mode 100644 index c356dd7..0000000 --- a/miniwob-sandbox/html/miniwob/use-slider-2.html +++ /dev/null @@ -1,91 +0,0 @@ - - - -Use Slider Task - - - - - - - - - - - - - - - -
            -
            -
            -
            -
            0
            -
            -
            0
            -
            -
            0
            - -
            -
            - - diff --git a/miniwob-sandbox/html/miniwob/use-slider.html b/miniwob-sandbox/html/miniwob/use-slider.html deleted file mode 100644 index 07ad6f4..0000000 --- a/miniwob-sandbox/html/miniwob/use-slider.html +++ /dev/null @@ -1,71 +0,0 @@ - - - -Use Slider Task - - - - - - - - - - - - - - - -
            -
            -
            -
            -
            0
            - -
            -
            - - diff --git a/miniwob-sandbox/html/miniwob/use-spinner.html b/miniwob-sandbox/html/miniwob/use-spinner.html deleted file mode 100644 index 381a56b..0000000 --- a/miniwob-sandbox/html/miniwob/use-spinner.html +++ /dev/null @@ -1,56 +0,0 @@ - - - -Use Spinner Task - - - - - - - - - - - - - - - -
            -
            -
            - - - -
            -
            - - diff --git a/miniwob-sandbox/html/miniwob/visual-addition.html b/miniwob-sandbox/html/miniwob/visual-addition.html deleted file mode 100644 index c4ce2ed..0000000 --- a/miniwob-sandbox/html/miniwob/visual-addition.html +++ /dev/null @@ -1,81 +0,0 @@ - - - -Visual Addition Task - - - - - - - - - - - - -
            -
            Type the total number of blocks into the textbox and press Submit.
            -
            -
            - - + - + -
            -
            - - -
            -
            -
            - - diff --git a/miniwob-sandbox/record.py b/miniwob-sandbox/record.py deleted file mode 100755 index 46362b3..0000000 --- a/miniwob-sandbox/record.py +++ /dev/null @@ -1,118 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -"""A simple server for recording demonstrations. - -Dependency: bottle -""" - -import sys, os, shutil, re, argparse, json, time -from codecs import open -from itertools import izip -from collections import defaultdict, Counter - -from bottle import Bottle, request, response -app = Bottle() - -import base64, zlib, gzip - -class Saver(object): - outdir = None - - def init_directory(self, outdir): - assert os.path.isdir(outdir), '{} is not a directory'.format(outdir) - self.outdir = outdir - - def save(self, data): - data = json.loads(data) - task_name = data['taskName'] - filename = (task_name + '_' + - time.strftime('%m%d%H%M%S', time.gmtime()) + '.json') - filename = os.path.join(self.outdir, filename) - while os.path.exists(filename): - # Avoid collision - filename += 'x' - with open(filename, 'w') as fout: - json.dump(data, fout) - print 'Saved to {}'.format(filename) - return filename - - def save_turk(self, request): - keys = [key for key in request.forms if key[0] == 'd' and key[1:].isdigit()] - for key in keys: - data = Saver.decompress_turk(request.forms[key]) - filename = ('turk_' + - time.strftime('%m%d%H%M%S', time.gmtime()) - + key + '.json') - filename = os.path.join(self.outdir, filename) - while os.path.exists(filename): - # Avoid collision - filename += 'x' - with open(filename, 'w') as fout: - fout.write(data) - print 'Saved to {}'.format(filename) - - @staticmethod - def decompress_turk(compressed): - data = base64.b64decode(compressed) - data = zlib.decompress(data) - return data - - def load(self, filename): - opener = gzip.open if filename.endswith('.gz') else open - with opener(os.path.join(self.outdir, filename)) as fin: - return json.load(fin) - - def list_files(self): - return sorted(os.listdir(self.outdir)) - -saver = Saver() - -@app.hook('after_request') -def enable_cors(): - # This is dangerous but whatever: - response.headers['Access-Control-Allow-Origin'] = '*' - -@app.post('/record') -def record(): - filename = saver.save(request.body.read()) - return 'saved to {}'.format(filename) - -@app.post('/mturk/externalSubmit') -def turk(): - saver.save_turk(request) - return 'saved' - -@app.get('/list') -def list_files(): - return {'filenames': saver.list_files()} - -@app.get('/view') -def view(): - filename = request.query.filename - return { - 'filename': filename, - 'episode': saver.load(request.query.filename) - } - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('-p', '--port', default=8032, - help='Open the connection at this port') - parser.add_argument('outdir', - help='Directory to dump the demonstrations') - parser.add_argument('-g', '--global-access', action='store_true', - help='Allow global access to the server') - args = parser.parse_args() - - saver.init_directory(args.outdir) - - # Start the server - host = 'localhost' if not args.global_access else '0.0.0.0' - app.run(host=host, port=args.port) - print '\nGood bye!' - - -if __name__ == '__main__': - main() - diff --git a/miniwob-sandbox/tasks/tasks-from-paper-results.txt b/miniwob-sandbox/tasks/tasks-from-paper-results.txt deleted file mode 100644 index 7832e08..0000000 --- a/miniwob-sandbox/tasks/tasks-from-paper-results.txt +++ /dev/null @@ -1,100 +0,0 @@ -100 -100 -84 -27 -101 -96 -102 -0 -24 -99 -85 -63 -31 -36 -0 -32 -35 -39 -90 -41 -100 -12 ->9000 -78 -0 -16 -20 -28 -24 -13 -1 -11 -26 -84 -9 -12 -58 -19 -55 -13 -31 -51 -18 -98 -31 -80 -38 -29 -21 -7 -30 -8 -63 -38 -92 -0 -69 -28 -12 -18 -28 -19 -16 -4 -0 -0 -0 -106 -107 -0 -4 -0 -62 -15 -7 -27 -0 -0 -37 -0 -27 -21 -0 -0 -0 -16 -0 -0 -66 -0 -22 -0 -23 -1 -43 -0 -0 -1 -3 -0 \ No newline at end of file diff --git a/miniwob-sandbox/tasks/tasks-from-paper.txt b/miniwob-sandbox/tasks/tasks-from-paper.txt deleted file mode 100644 index 14117da..0000000 --- a/miniwob-sandbox/tasks/tasks-from-paper.txt +++ /dev/null @@ -1,100 +0,0 @@ -click-test -focus-text -click-test-2 -draw-line -click-dialog -scroll-text-2 -click-collapsible -enter-text -click-color -click-tab -focus-text-2 -click-button -drag-circle -drag-shape -copy-paste -click-link -click-widget -hover-shape -highlight-text -drag-items -find-greatest -click-shape -chase-circle -moving-items -use-autocomplete -click-pie -navigate-tree -hot-cold -click-button-sequence -click-menu -visual-addition -resize-textarea -choose-list -click-dialog-2 -click-tab-2 -click-collapsible-2 -click-checkboxes -click-option -tic-tac-toe -highlight-text-2 -drag-box -use-slider -use-spinner -circle-center -find-midpoint -bisect-angle -right-angle -buy-ticket -ascending-numbers -click-scroll-list -count-sides -enter-time -enter-date -identify-shape -drag-shapes -drag-shapes-2 -stock-market -simon-says -button-delay -drag-cube -draw-circle -count-shape -click-menu-2 -simple-algebra -read-table -read-table-2 -enter-text-dynamic -use-colorwheel -use-colorwheel-2 -form-sequence -form-sequence-3 -find-word -generate-number -use-slider-2 -simple-arithmetic -click-shades -scroll-text -copy-paste-2 -odd-or-even -terminal -grid-coordinate -guess-number -enter-password -login-user -form-sequence-2 -number-checkboxes -text-transform -enter-text-2 -drag-sort-numbers -choose-date -phone-book -order-food -social-media -text-editor -sign-agreement -search-engine -daily-calendar -drag-items-grid -email-inbox -book-flight diff --git a/miniwob-sandbox/tasks/tasks.json b/miniwob-sandbox/tasks/tasks.json deleted file mode 100644 index 1a1ce0b..0000000 --- a/miniwob-sandbox/tasks/tasks.json +++ /dev/null @@ -1,486 +0,0 @@ -{ - "version": "0.1", - "TAGS": ["click", "drag", "mouse"], - "envs": [ - { - "id": "wob.mini.BisectAngle-v0", - "filename": "bisect-angle", - "tags": ["click"], - "description": "Find the line that bisects an angle evenly in two." - }, - { - "id": "wob.mini.BookFlight-v0", - "filename": "book-flight", - "tags": [], - "description": "Search for flight results." - }, - { - "id": "wob.mini.ChaseCircle-v0", - "filename": "chase-circle", - "tags": ["click"], - "description": "Keep your mouse inside a moving circle." - }, - { - "id": "wob.mini.ChooseDate-v0", - "filename": "choose-date", - "tags": ["click"], - "description": "Learn to operate a date picker tool." - }, - { - "id": "wob.mini.ChooseList-v0", - "filename": "choose-list", - "tags": ["click"], - "description": "Choose an item from a drop down list." - }, - { - "id": "wob.mini.CircleCenter-v0", - "filename": "circle-center", - "tags": ["click"], - "description": "Find the center of a circle." - }, - { - "id": "wob.mini.ClickButton-v0", - "filename": "click-button", - "tags": ["click"], - "description": "Click on a specific button in a generated form." - }, - { - "id": "wob.mini.ClickButtonSequence-v0", - "filename": "click-button-sequence", - "tags": ["click"], - "description": "Click on buttons in a certain order." - }, - { - "id": "wob.mini.ClickCheckboxes-v0", - "filename": "click-checkboxes", - "tags": ["click"], - "description": "Click desired checkboxes." - }, - { - "id": "wob.mini.ClickCollapsible-v0", - "filename": "click-collapsible", - "tags": ["click"], - "description": "Click a collapsible element to expand it." - }, - { - "id": "wob.mini.ClickCollapsible2-v0", - "filename": "click-collapsible-2", - "tags": ["click"], - "description": "Find and click on a specified link, from collapsible elements." - }, - { - "id": "wob.mini.ClickColor-v0", - "filename": "click-color", - "tags": ["click"], - "description": "Click the specified color." - }, - { - "id": "wob.mini.ClickDialog-v0", - "filename": "click-dialog", - "tags": ["click"], - "description": "Click the button to close the dialog box." - }, - { - "id": "wob.mini.ClickDialog2-v0", - "filename": "click-dialog-2", - "tags": ["click"], - "description": "Click a specific button in a dialog box." - }, - { - "id": "wob.mini.ClickLink-v0", - "filename": "click-link", - "tags": ["click"], - "description": "Click on a specified link in text." - }, - { - "id": "wob.mini.ClickMenu-v0", - "filename": "click-menu", - "tags": ["drag"], - "description": "Click menu items." - }, - { - "id": "wob.mini.ClickMenu2-v0", - "filename": "click-menu-2", - "tags": ["click"], - "description": "Find a specific item from a menu." - }, - { - "id": "wob.mini.ClickOption-v0", - "filename": "click-option", - "tags": ["click"], - "description": "Click option boxes." - }, - { - "id": "wob.mini.ClickPie-v0", - "filename": "click-pie", - "tags": ["click"], - "description": "Click items on a pie menu." - }, - { - "id": "wob.mini.ClickScrollList-v0", - "filename": "click-scroll-list", - "tags": [], - "description": "Click multiple items from a scroll list." - }, - { - "id": "wob.mini.ClickShades-v0", - "filename": "click-shades", - "tags": ["click"], - "description": "Click the shades that match a specified color." - }, - { - "id": "wob.mini.ClickShape-v0", - "filename": "click-shape", - "tags": ["click"], - "description": "Click on a specific shape." - }, - { - "id": "wob.mini.ClickTab-v0", - "filename": "click-tab", - "tags": ["click"], - "description": "Click on a tab element." - }, - { - "id": "wob.mini.ClickTab2-v0", - "filename": "click-tab-2", - "tags": ["click"], - "description": "Click a link inside a specific tab element." - }, - { - "id": "wob.mini.ClickTest-v0", - "filename": "click-test", - "tags": ["click"], - "description": "Click on a single button." - }, - { - "id": "wob.mini.ClickTest2-v0", - "filename": "click-test-2", - "tags": ["click"], - "description": "Click on one of two buttons." - }, - { - "id": "wob.mini.ClickWidget-v0", - "filename": "click-widget", - "tags": ["click"], - "description": "Click on a specific widget in a generated form." - }, - { - "id": "wob.mini.CopyPaste-v0", - "filename": "copy-paste", - "tags": ["mouse"], - "description": "Copy text and paste it into an input." - }, - { - "id": "wob.mini.CopyPaste2-v0", - "filename": "copy-paste-2", - "tags": ["mouse"], - "description": "Copy text from a specific textarea and paste it into an input." - }, - { - "id": "wob.mini.CountShape-v0", - "filename": "count-shape", - "tags": ["click"], - "description": "Count number of shapes." - }, - { - "id": "wob.mini.CountSides-v0", - "filename": "count-sides", - "tags": ["click"], - "description": "Count the number of sides on a shape." - }, - { - "id": "wob.mini.DragBox-v0", - "filename": "drag-box", - "tags": ["drag"], - "description": "Drag the smaller box into the larger box." - }, - { - "id": "wob.mini.DragCube-v0", - "filename": "drag-cube", - "tags": ["drag"], - "description": "Drag a 3D cube to show a specific face." - }, - { - "id": "wob.mini.DragItem-v0", - "filename": "drag-item", - "tags": ["drag"], - "description": "Drag an item in a specified direction." - }, - { - "id": "wob.mini.DragItems-v0", - "filename": "drag-items", - "tags": ["drag"], - "description": "Drag items in a list, in a specified direction" - }, - { - "id": "wob.mini.DragItemsGrid-v0", - "filename": "drag-items-grid", - "tags": ["drag"], - "description": "Drag items in a 2D grid around." - }, - { - "id": "wob.mini.DragShapes-v0", - "filename": "drag-shapes", - "tags": ["drag"], - "description": "Drag shapes into a box." - }, - { - "id": "wob.mini.DragSortNumbers-v0", - "filename": "drag-sort-numbers", - "tags": ["drag"], - "description": "Drag numbers into sorted ascending order." - }, - { - "id": "wob.mini.EmailInbox-v0", - "filename": "email-inbox", - "tags": ["mouse"], - "description": "Navigate through an email inbox and perform some actions." - }, - { - "id": "wob.mini.EnterDate-v0", - "filename": "enter-date", - "tags": [], - "description": "Use the date input to pick the correct date." - }, - { - "id": "wob.mini.EnterPassword-v0", - "filename": "enter-password", - "tags": ["drag"], - "description": "Enter the password into the form." - }, - { - "id": "wob.mini.EnterText-v0", - "filename": "enter-text", - "tags": ["drag"], - "description": "Enter given text to a textfield." - }, - { - "id": "wob.mini.EnterText2-v0", - "filename": "enter-text-2", - "tags": [], - "description": "Convert given text to upper or lower case." - }, - { - "id": "wob.mini.EnterTextDynamic-v0", - "filename": "enter-text-dynamic", - "tags": ["drag"], - "description": "Enter dynamically generated text to a textfield." - }, - { - "id": "wob.mini.EnterTime-v0", - "filename": "enter-time", - "tags": [], - "description": "Enter the specified time into the input." - }, - { - "id": "wob.mini.FindMidpoint-v0", - "filename": "find-midpoint", - "tags": ["click"], - "description": "Find the shortest mid-point of two points." - }, - { - "id": "wob.mini.FindWord-v0", - "filename": "find-word", - "tags": ["mouse"], - "description": "Find nth word in a block of text." - }, - { - "id": "wob.mini.FocusText-v0", - "filename": "focus-text", - "tags": ["click"], - "description": "Focus into a text input." - }, - { - "id": "wob.mini.FocusText2-v0", - "filename": "focus-text-2", - "tags": ["click"], - "description": "Focus on a specific text input." - }, - { - "id": "wob.mini.GridCoordinate-v0", - "filename": "grid-coordinate", - "tags": ["click"], - "description": "Find the Cartesian coordinates on a grid." - }, - { - "id": "wob.mini.GuessNumber-v0", - "filename": "guess-number", - "tags": ["click"], - "description": "Guess the number." - }, - { - "id": "wob.mini.HighlightText-v0", - "filename": "highlight-text", - "tags": ["drag"], - "description": "Highlight all the text." - }, - { - "id": "wob.mini.HighlightText2-v0", - "filename": "highlight-text-2", - "tags": ["drag"], - "description": "Highlight the specified paragraph." - }, - { - "id": "wob.mini.IdentifyShape-v0", - "filename": "identify-shape", - "tags": ["click"], - "description": "Identify a randomly generated shape." - }, - { - "id": "wob.mini.LoginUser-v0", - "filename": "login-user", - "tags": ["drag"], - "description": "Enter user login details into the form." - }, - { - "id": "wob.mini.MovingItems-v0", - "filename": "moving-items", - "tags": ["drag"], - "description": "Click moving items before they disappear." - }, - { - "id": "wob.mini.NavigateTree-v0", - "filename": "navigate-tree", - "tags": ["click"], - "description": "Navigate a file tree to find a specified file or folder." - }, - { - "id": "wob.mini.NumberCheckboxes-v0", - "filename": "number-checkboxes", - "tags": ["click"], - "description": "Draw a given number using checkboxes." - }, - { - "id": "wob.mini.ReadTable-v0", - "filename": "read-table", - "tags": ["drag"], - "description": "Read information out from a table." - }, - { - "id": "wob.mini.ReadTable2-v0", - "filename": "read-table-2", - "tags": ["drag"], - "description": "Read multiple pieces of information out from a table." - }, - { - "id": "wob.mini.ResizeTextarea-v0", - "filename": "resize-textarea", - "tags": ["drag"], - "description": "Resize a textarea in a given direction." - }, - { - "id": "wob.mini.RightAngle-v0", - "filename": "right-angle", - "tags": ["click"], - "description": "Given two points, add a third point to create a right angle." - }, - { - "id": "wob.mini.ScrollText-v0", - "filename": "scroll-text", - "tags": ["mouse"], - "description": "Scroll through a text area element and enter last word into text area." - }, - { - "id": "wob.mini.ScrollText2-v0", - "filename": "scroll-text-2", - "tags": ["mouse"], - "description": "Scroll through a text area in a given direction." - }, - { - "id": "wob.mini.SearchEngine-v0", - "filename": "search-engine", - "tags": ["drag"], - "description": "Search through a bunch of results to find a specified link." - }, - { - "id": "wob.mini.SimonSays-v0", - "filename": "simon-says", - "tags": ["click"], - "description": "Push the buttons in the order shown." - }, - { - "id": "wob.mini.SimpleAlgebra-v0", - "filename": "simple-algebra", - "tags": [], - "description": "Solve for X." - }, - { - "id": "wob.mini.SimpleArithmetic-v0", - "filename": "simple-arithmetic", - "tags": [], - "description": "Perform some arithmetic math operations." - }, - { - "id": "wob.mini.SocialMedia-v0", - "filename": "social-media", - "tags": ["mouse"], - "description": "Interact with a social media feed." - }, - { - "id": "wob.mini.Terminal-v0", - "filename": "terminal", - "tags": [], - "description": "Use the terminal to delete a file." - }, - { - "id": "wob.mini.TextEditor-v0", - "filename": "text-editor", - "tags": ["drag"], - "description": "Modify a text\"s style in a text-editor." - }, - { - "id": "wob.mini.TextTransform-v0", - "filename": "text-transform", - "tags": [], - "description": "Enter slightly transformed text into a text box." - }, - { - "id": "wob.mini.TicTacToe-v0", - "filename": "tic-tac-toe", - "tags": ["click"], - "description": "Win a game of tic-tac-toe." - }, - { - "id": "wob.mini.UseAutocomplete-v0", - "filename": "use-autocomplete", - "tags": [], - "description": "Use autocomplete element efficiently." - }, - { - "id": "wob.mini.UseColorwheel-v0", - "filename": "use-colorwheel", - "tags": ["click"], - "description": "Use a color wheel." - }, - { - "id": "wob.mini.UseColorwheel2-v0", - "filename": "use-colorwheel-2", - "tags": ["click"], - "description": "Use a color wheel given specific random color." - }, - { - "id": "wob.mini.UseSlider-v0", - "filename": "use-slider", - "tags": ["click"], - "description": "Use a slider to select a particular value." - }, - { - "id": "wob.mini.UseSlider2-v0", - "filename": "use-slider-2", - "tags": ["click"], - "description": "Use sliders to create a given combination." - }, - { - "id": "wob.mini.UseSpinner-v0", - "filename": "use-spinner", - "tags": ["click"], - "description": "Use a spinner to select given number." - }, - { - "id": "wob.mini.VisualAddition-v0", - "filename": "visual-addition", - "tags": [], - "description": "Count the total number of blocks." - } - ] -} diff --git a/miniwob-sandbox/tasks/tasks.txt b/miniwob-sandbox/tasks/tasks.txt deleted file mode 100644 index 1f55979..0000000 --- a/miniwob-sandbox/tasks/tasks.txt +++ /dev/null @@ -1,80 +0,0 @@ -bisect-angle -chase-circle -choose-date -choose-list -circle-center -click-button -click-button-sequence -click-checkboxes -click-collapsible -click-collapsible-2 -click-color -click-dialog -click-dialog-2 -click-link -click-menu-2 -click-option -click-pie -click-shades -click-shape -click-tab -click-tab-2 -click-test -click-test-2 -click-widget -count-shape -count-sides -find-midpoint -focus-text -focus-text-2 -grid-coordinate -guess-number -identify-shape -navigate-tree -number-checkboxes -right-angle -simon-says -tic-tac-toe -use-colorwheel -use-colorwheel-2 -use-slider -use-slider-2 -use-spinner -click-menu -drag-box -drag-cube -drag-item -drag-items -drag-items-grid -drag-shapes -drag-sort-numbers -enter-password -enter-text -enter-text-dynamic -highlight-text -highlight-text-2 -login-user -moving-items -read-table -read-table-2 -resize-textarea -search-engine -text-editor -copy-paste -copy-paste-2 -email-inbox -find-word -scroll-text -scroll-text-2 -social-media -book-flight -click-scroll-list -enter-date -enter-text-2 -enter-time -simple-algebra -simple-arithmetic -terminal -text-transform -use-autocomplete -visual-addition diff --git a/miniwob-sandbox/turk-api/.gitignore b/miniwob-sandbox/turk-api/.gitignore deleted file mode 100644 index cea5e32..0000000 --- a/miniwob-sandbox/turk-api/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -data -parsed diff --git a/miniwob-sandbox/turk-api/fix-email-nlp-demos.py b/miniwob-sandbox/turk-api/fix-email-nlp-demos.py deleted file mode 100755 index 06595e3..0000000 --- a/miniwob-sandbox/turk-api/fix-email-nlp-demos.py +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import sys, os, shutil, re, argparse, json, gzip -from codecs import open -from itertools import izip -from collections import defaultdict, Counter - - - -EMAIL_INBOX_PATTERNS = [ - ('delete', r'Find the email by (.*) and click the trash icon to (.*) it\.', ['by', 'task']), - ('forward', r'Find the email by (.*) and (.*) that email to (.*)\.', ['by', 'task', 'to']), - ('important', r'Find the email by (.*) and click the (.*) icon to mark it as important\.', ['by', 'task']), - ('reply', r'Find the email by (.*) and (.*) to them with the text "(.*)"\.', ['by', 'task', 'message']), - ] - -def extract_email_inbox(utterance): - for task, regex, keys in EMAIL_INBOX_PATTERNS: - match = re.match(regex, utterance) - if match: - return dict(zip(keys, match.groups())) - raise ValueError('Bad email-inbox utterance: {}'.format(utterance)) - - -NL_TEMPLATES = [ - 'Find the email by (?P[^ ]*) and forward that email to (?P[^ ]*).', - 'Locate the email by (?P[^ ]*). Forward that email to (?P[^ ]*).', - 'Look for the email from (?P[^ ]*) and forward to (?P[^ ]*).', - 'Forward to (?P[^ ]*) the email from (?P[^ ]*).', - 'Send (?P[^ ]*) the email you got from (?P[^ ]*).', - 'Go to the email by (?P[^ ]*). Send it to (?P[^ ]*).', - 'Send to (?P[^ ]*) the email you got from (?P[^ ]*).', - 'Forward the email from (?P[^ ]*) to (?P[^ ]*).', - 'Forward to (?P[^ ]*) the email from (?P[^ ]*).', - 'Send (?P[^ ]*) the email from (?P[^ ]*).', - 'Please find the message by (?P[^ ]*), then send it to (?P[^ ]*).', - 'Please forward the information from (?P[^ ]*) to (?P[^ ]*).', - '(?P[^ ]*) wants the email you got from (?P[^ ]*).', - '(?P[^ ]*) wants the email (?P[^ ]*) sent to you.', - 'The mail by (?P[^ ]*) should be forwarded to (?P[^ ]*).', - 'Please forward to (?P[^ ]*) the email by (?P[^ ]*).', - 'Give (?P[^ ]*) the message you received from (?P[^ ]*),', - 'Forward the mail by (?P[^ ]*) to (?P[^ ]*).', - 'Go to the message from (?P[^ ]*) and send it to (?P[^ ]*).', - '(?P[^ ]*) is waiting for the email by (?P[^ ]*).', - '(?P[^ ]*) wants his or her message to be sent to (?P[^ ]*).', - 'I want the mail by (?P[^ ]*) to be sent to (?P[^ ]*).', - 'Forward to (?P[^ ]*) the email you got from (?P[^ ]*).', - 'Please forward the message from (?P[^ ]*) to (?P[^ ]*).', - 'Please find the mail by (?P[^ ]*). Forward it to (?P[^ ]*).', - 'Navigate to the message from (?P[^ ]*) and send it to (?P[^ ]*).', - 'Forward (?P[^ ]*) the email from (?P[^ ]*).', - 'Forward (?P[^ ]*) the message (?P[^ ]*) sent you.', - 'Send (?P[^ ]*) the information (?P[^ ]*) sent to you.', - 'Search for the mail (?P[^ ]*) sent you and send it to (?P[^ ]*).', - ] -NL_TEMPLATES = [re.compile(x) for x in NL_TEMPLATES] - -def extract_email_inbox_forward_nl(utterance): - for regex in NL_TEMPLATES: - match = regex.match(utterance) - if match: - return { - 'by': match.group('NAME'), - 'to': match.group('DEST'), - } - raise ValueError('Bad email-inbox utterance: {}'.format(utterance)) - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('mode', choices=['all', 'forward']) - parser.add_argument('filename') - args = parser.parse_args() - - with gzip.open(args.filename) as fin: - data = json.load(fin) - utterance = data['utterance'] - if args.mode == 'all': - data['fields'] = extract_email_inbox(utterance) - elif args.mode == 'forward': - data['fields'] = extract_email_inbox_forward_nl(utterance) - - - outfile = args.filename.replace('.json.gz', '-fixed.json.gz') - with gzip.open(outfile, 'w') as fout: - json.dump(data, fout, separators=(',', ':')) - print >> sys.stderr, '{} -> {}'.format(args.filename, outfile) - -if __name__ == '__main__': - main() - diff --git a/miniwob-sandbox/turk-api/parse-email-nlp.py b/miniwob-sandbox/turk-api/parse-email-nlp.py deleted file mode 100755 index 662991c..0000000 --- a/miniwob-sandbox/turk-api/parse-email-nlp.py +++ /dev/null @@ -1,123 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import sys, os, shutil, re, argparse, json, csv, random, unicodedata -from codecs import open -from itertools import izip -from collections import defaultdict, Counter, OrderedDict - - -def clean_text(x): - # screw non-ascii characters - if not isinstance(x, unicode): - x = x.decode('utf8', errors='ignore') - # Remove diacritics - x = ''.join(c for c in unicodedata.normalize('NFKD', x) - if unicodedata.category(c) != 'Mn') - # Normalize quotes and dashes - x = re.sub(ur"[‘’´`]", "'", x) - x = re.sub(ur"[“”]", "\"", x) - x = re.sub(ur"[‐‑‒–—−]", "-", x) - x = re.sub(r'\s+', ' ', x).strip() - x = str(x) - return x - - -def parse_csv_record(record, storage): - task = record['Input.task'] - for key, value in record.iteritems(): - m = re.match(r'^Answer\.(a\d+)$', key) - if not m or not value or value == '{}': - continue - value = clean_text(value) - storage[task].append(value) - - -# In this email inbox app, you want to find the email by Jill and reply to her with the text "See you soon". -# In this email inbox app, you want to find the email by Jill and mark it as important. -# In this email inbox app, you want to find the email by Jill and delete it. -# In this email inbox app, you want to find the email by John and mark it as important. -# In this email inbox app, you want to find the email by John and forward it to Kate. -# In this email inbox app, you want to find the email by Jill and forward it to Alice. -# In this email inbox app, you want to find the email by John and reply to him with the text "Sounds good". -# In this email inbox app, you want to find the email by John and delete it. - -def parse_task(task): - match = re.match(r'In this email inbox app, you want to find ' - r'the email by (.*) and (.*)$', task) - f_from = match.group(1) - f_details = match.group(2) - if f_details == 'mark it as important.': - return ('important', (f_from, 'NAME')) - elif f_details == 'delete it.': - return ('delete', (f_from, 'NAME')) - elif f_details.startswith('reply to'): - f_message = re.search(r'"(.*)"', f_details).group(1) - return ('reply', (f_from, 'NAME'), (f_message, 'MSG')) - elif f_details.startswith('forward it'): - f_dest = re.search(r'(.*)', f_details).group(1) - return ('forward', (f_from, 'NAME'), (f_dest, 'DEST')) - else: - raise ValueError('Unrecognized: {}'.format(f_details)) - - -def clean_msg(abstracted): - abstracted = re.sub(r'"MSG[^ ]*"', "MSG", abstracted) - if '"MSG"' not in abstracted: - abstracted = abstracted.replace('MSG', '"MSG"') - return abstracted - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('-s', '--split-size', type=float, default=.85) - parser.add_argument('infiles', nargs='+') - args = parser.parse_args() - - storage = defaultdict(list) - for filename in args.infiles: - with open(filename) as fin: - reader = csv.DictReader(fin) - for record in reader: - parse_csv_record(record, storage) - print >> sys.stderr, 'Read {} records'.format( - sum(len(values) for values in storage.values())) - - all_templates = defaultdict(set) - for key, values in storage.iteritems(): - task = parse_task(key) - for value in values: - abstracted = value - try: - # Replacement - for f, t in task[1:]: - if f in abstracted: - abstracted = abstracted.replace(f, t) - else: - assert f.lower() in abstracted - abstracted = abstracted.replace(f.lower(), t) - # Clean up the MSG - if 'MSG' in abstracted: - abstracted = clean_msg(abstracted) - all_templates[task[0]].add(abstracted) - except: - continue - - # Create a JS file - output = {} - for task, templates in all_templates.iteritems(): - templates = list(templates) - random.shuffle(templates) - num_trains = int(len(templates) * args.split_size) - output[task] = OrderedDict([ - ('train', sorted(templates[:num_trains])), - ('test', sorted(templates[num_trains:])), - ]) - print >> sys.stderr, '{}: {} trains, {} test'.format( - task, num_trains, len(templates) - num_trains) - print 'var TEMPLATES =', json.dumps(output, indent=2, separators=(',', ':')) + ';' - - -if __name__ == '__main__': - main() - diff --git a/miniwob-sandbox/turk-api/parse-turk-results.py b/miniwob-sandbox/turk-api/parse-turk-results.py deleted file mode 100755 index 8d469b3..0000000 --- a/miniwob-sandbox/turk-api/parse-turk-results.py +++ /dev/null @@ -1,126 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -"""Parse the results of the MiniWoB task on MTurk. - -Format of the submitted demos: -Answer.d1, Answer.d2, ... are the encoded demos. -Demos are encoded as follows: -- converted to JSON -- zlib encode (to reduce size) -- base64 encode (to ensure correct transmission) -""" - -import sys, os, shutil, re, argparse, json -from codecs import open -from itertools import izip -from collections import defaultdict, Counter - -import csv, base64, zlib, glob, gzip - - -def parse_csv_record(record, args): - workerId = record['WorkerId'] - assignmentId = record['AssignmentId'] - task = record['Input.task'] - count = 0 - used = set() - for key, value in record.iteritems(): - m = re.match(r'^Answer\.(d\d+)$', key) - if not m or not value: - continue - demo_id = m.group(1) - if value in used: - print u'ERROR ({}|{}|{}): Repeated demo'.format( - task, workerId, assignmentId) - try: - compressed = base64.b64decode(value) - demo = zlib.decompress(compressed) - assert demo[0] == '{' and demo[-1] == '}' - count += 1 - base_dir = os.path.join(args.outdir, task) - if not os.path.isdir(base_dir): - os.makedirs(base_dir) - filename = '{}_{}_{}.json.gz'.format(task, assignmentId, demo_id) - with gzip.open(os.path.join(base_dir, filename), 'w') as fout: - fout.write(demo) - except Exception as e: - print u'ERROR ({}|{}|{}): {}'.format( - task, workerId, assignmentId, e) - if count != args.demos_per_hit: - print u'WARNING ({}|{}|{}): Got {} != {} demos'.format( - task, workerId, assignmentId, - count, args.demos_per_hit) - - -def parse_json_record(record, args): - workerId = record['metadata']['WorkerId'] - assignmentId = record['metadata']['AssignmentId'] - status = record['metadata']['AssignmentStatus'] - task = record['answers']['task'] - count = 0 - used = set() - wtf = False - for key, value in record['answers'].iteritems(): - m = re.match(r'^(d\d+)$', key) - if not m or not value: - continue - demo_id = m.group(1) - if value in used: - print u'ERROR ({}|{}|{}): Repeated demo'.format( - task, workerId, assignmentId) - wtf = True - try: - compressed = base64.b64decode(value) - demo = zlib.decompress(compressed) - assert demo[0] == '{' and demo[-1] == '}' - count += 1 - base_dir = os.path.join(args.outdir, task) - if not os.path.isdir(base_dir): - os.makedirs(base_dir) - filename = '{}_{}_{}.json.gz'.format(task, assignmentId, demo_id) - with gzip.open(os.path.join(base_dir, filename), 'w') as fout: - fout.write(demo) - except Exception as e: - print u'ERROR ({}|{}|{}): {}'.format( - task, workerId, assignmentId, e) - wtf = True - if count < args.demos_per_hit: - print u'WARNING ({}|{}|{}): Got {} != {} demos'.format( - task, workerId, assignmentId, - count, args.demos_per_hit) - wtf = True - if status == 'Submitted': - if wtf: - print '@ BAD {} {}'.format(workerId, assignmentId) - else: - print '@ GOOD {} {}'.format(workerId, assignmentId) - else: - print '# {} {} {}'.format(status, workerId, assignmentId) - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('-d', '--demos-per-hit', type=int, default=5, - help='Expected number of demos per HIT') - parser.add_argument('-o', '--outdir', default='parsed', - help='Output directory') - parser.add_argument('infile', nargs='+', - help='MTurk Batch_*.csv or *.results file') - args = parser.parse_args() - - if not os.path.exists(args.outdir): - os.makedirs(args.outdir) - - for filename in args.infile: - with open(filename) as fin: - if filename.endswith('.csv'): - reader = csv.DictReader(fin) - for record in reader: - parse_csv_record(record, args) - elif filename.endswith('.results'): - for record in json.load(fin): - parse_json_record(record, args) - - -if __name__ == '__main__': - main() diff --git a/miniwob-sandbox/turk-api/run.py b/miniwob-sandbox/turk-api/run.py deleted file mode 100755 index 0e67aee..0000000 --- a/miniwob-sandbox/turk-api/run.py +++ /dev/null @@ -1,766 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import sys, os, shutil, argparse, re, json, traceback -from codecs import open -from ConfigParser import RawConfigParser -from collections import defaultdict - -import boto -from boto.mturk.connection import MTurkRequestError -from boto.mturk.price import Price -from boto.mturk.qualification import (Qualifications, Requirement, - LocaleRequirement, AdultRequirement, - NumberHitsApprovedRequirement, - PercentAssignmentsAbandonedRequirement, - PercentAssignmentsApprovedRequirement, - PercentAssignmentsRejectedRequirement, - PercentAssignmentsReturnedRequirement, - PercentAssignmentsSubmittedRequirement) -from boto.mturk.question import ExternalQuestion - -# 1 Batch has many HITs; 1 HIT has many assignments -# The Worker accepts an assignment, then either submits or returns it. -# The Requester reviews an assignment - -# There are 5 HIT states: -# - Assignable: -# The HIT is not expired *AND* at least 1 assignment has not been accepted -# I.e., a Worker can accept an assignment from this HIT. -# Extending a HIT will change the HIT to Assignable state. -# - Unassignable: <-- This name is the worst name ever -# No assignment is in open state, -# and at least one assignment is in assigned state. -# I.e., no Workers can accept an assignment from this HIT. -# - Reviewable: -# *ALL* assignments of the HIT are submitted *OR* the HIT expired. -# The Requester can get the list of all reviewable HITs by calling -# GetReviewableHITs. -# Note that even though all assignments are approved or rejected, the HIT -# will still be in Reviewable state. The Requester must call DisposeHIT -# to dispose the HIT. -# - Reviewing (optional): -# The Requester manually called SetHITAsReviewing on the HIT. -# Benefit: GetReviewableHITs does not return HITs in Reviewing state. -# - Disposed: -# The HIT has been deleted and can no longer be retrieved. -# (HITs are automatically disposed after 120 days.) - -# There are 6 assignment states: -# - Open (a Worker can accept the assignment) -# - Expired -# - Assigned (a Worker is working on the assignment) -# - Submitted (a Worker has submitted the assignment) -# - Approved -# - Rejected - -class MTurkWrapper(object): - SANDBOX = 'mechanicalturk.sandbox.amazonaws.com' - PREVIEW_REAL = 'https://www.mturk.com/mturk/preview?groupId=' - PREVIEW_SANDBOX = 'https://workersandbox.mturk.com/mturk/preview?groupId=' - - def __init__(self, sandbox=True): - self.sandbox = sandbox - - def load(self): - if self.sandbox: - print "Using SANDBOX ..." - self.mtc = boto.connect_mturk(host=MTurkWrapper.SANDBOX) - else: - print "Using REAL MTURK!" - self.mtc = boto.connect_mturk() - - def get_account_balance(self): - return self.mtc.get_account_balance() - - ################ CREATE HIT ################ - - def _replace_variables(self, s, variables): - for key, value in variables.iteritems(): - s = re.sub(r'\$\{' + key + r'\}', str(value), s, flags=re.I) - assert '${' not in s, s - return s - - def create_batch(self, properties, variables_list, maxhits=None): - '''Create a new batch of HITs. - Return (list of hit_ids, hit_type_id). - 'variables_list' is a list of dicts {key1: value1, key2: value2, ...} - Strings of the form '${key1}' in question and annotation - will be replaced with value1 and so on. - ''' - if maxhits: - variables_list = variables_list[:maxhits] - if raw_input('Creating %d HITs. Continue? (y/N) ' - % len(variables_list)).lower() != 'y': - return - # Register the HIT type - if 'hittypeid' in properties: - hit_type_id = properties['hittypeid'] - else: - result = self.mtc.register_hit_type( - properties['title'], properties['description'], - properties['reward'], properties['assignmentduration'], - properties['keywords'], properties['autoapprovaldelay'], - properties['qualifications']) - hit_type_id = result[0].HITTypeId - # Reading parameters for individual HITs - hit_ids = [] - for i, variables in enumerate(variables_list): - question = ExternalQuestion( - self._replace_variables(properties['url'], variables), - properties['frameheight']) - annotation = self._replace_variables( - properties['annotation'], variables) - if isinstance(properties['assignments'], int): - max_assignments = properties['assignments'] - else: - max_assignments = properties['assignments'][i] - if max_assignments <= 0: - print '(%5d/%5d)' % (i + 1, len(variables_list)), - print 'Skipped because assignments <= 0' - continue - result = self.mtc.create_hit( - hit_type=hit_type_id, question=question, - annotation=annotation, lifetime=properties['hitlifetime'], - max_assignments=max_assignments) - hit_id = result[0].HITId - hit_ids.append(hit_id) - assert hit_type_id == result[0].HITTypeId - print '(%5d/%5d)' % (i + 1, len(variables_list)), - print 'Created HIT', hit_id - print ('DONE! %d HITs created. Preview the HITs here:' - % len(variables_list)) - if self.sandbox: - print MTurkWrapper.PREVIEW_SANDBOX + hit_type_id - else: - print MTurkWrapper.PREVIEW_REAL + hit_type_id - return hit_ids, hit_type_id - - def extend_batch(self, hit_ids, assignments_increment=None, - expiration_increment=None): - '''Extend a batch of HITs.''' - print 'Extending batch ...' - print 'Assignment +=', assignments_increment - print 'Expiration +=', expiration_increment - for i, hit_id in enumerate(hit_ids): - self.mtc.extend_hit(hit_id, - assignments_increment=assignments_increment, - expiration_increment=expiration_increment) - print '(%5d/%5d)' % (i + 1, len(hit_ids)), - print 'Extended', hit_id - print 'Done!' - - ################ GET RESULTS ################ - - def get_batch(self, hit_ids, status=None): - '''Return a list of SUBMITTED assignments in the batch. - Parameter 'status' can be one of - - None (everything) - - 'Submitted' (neither approved nor rejected yet) - - 'Approved' - - 'Rejected' - - 'Approved,Rejected' (either approved or rejected) - ''' - print 'Getting submitted assignments ...' - assignments = [] - total_max_assignments = 0 - for i, hit_id in enumerate(hit_ids): - result_set = self.mtc.get_assignments(hit_id, status, page_size=100) - hit = self.mtc.get_hit(hit_id)[0] - max_assignments = int(hit.MaxAssignments) - total_max_assignments += max_assignments - print '(%5d/%5d)' % (i + 1, len(hit_ids)), - print hit_id, ':', result_set.NumResults, '/', max_assignments, 'assignments' - assignments.extend(result_set) - print 'DONE! %d / %d assignments retrieved.' % (len(assignments), total_max_assignments) - return assignments - - ################ APPROVE / REJECT ################ - - def _read_mapping(self, mapping): - '''Return a list of (id, reason) - mapping can be one of the following: - - list or tuple of ids (reason = None) - - dict from string (id) to string (reason) - - dict from string (reason) to list or tuple (ids) - ''' - if isinstance(mapping, (list, tuple)): - return [(x, None) for x in mapping] - elif isinstance(mapping, dict): - items = mapping.items() - if isinstance(items[0][1], (list, tuple)): - return [(x, reason) for (reason, ids) in items for x in ids] - else: - return items - assert False, 'mapping has incorrect type %s' % type(mapping) - - def approve_assignments(self, mapping): - mapping = self._read_mapping(mapping) - if raw_input('Approving %d assignments. Continue? (y/N) ' - % len(mapping)).lower() != 'y': - return - for assignment_id, reason in mapping: - try: - self.mtc.approve_assignment(assignment_id, reason) - print 'Approved %s (%s)' % (assignment_id, reason) - except Exception, e: - print e - - def reject_assignments(self, mapping): - mapping = self._read_mapping(mapping) - if raw_input('Rejecting %d assignments. Continue? (y/N) ' - % len(mapping)).lower() != 'y': - return - for assignment_id, reason in mapping: - self.mtc.reject_assignment(assignment_id, reason) - print 'Rejected %s (%s)' % (assignment_id, reason) - - def approve_rejected_assignments(self, mapping): - mapping = self._read_mapping(mapping) - if raw_input('Resurrecting %d assignments. Continue? (y/N) ' - % len(mapping)).lower() != 'y': - return - for assignment_id, reason in mapping: - self.mtc.approve_rejected_assignment(assignment_id, reason) - print 'Resurrected %s (%s)' % (assignment_id, reason) - - def grant_bonus(self, data): - '''data = list of (worker_id, assignment_id, bonus_amount, reason)''' - if raw_input('Granting bonus to %d Turkers. Continue? (y/N) ' - % len(data)).lower() != 'y': - return - for worker_id, assignment_id, bonus_amount, reason in data: - bonus_amount = Price(float(bonus_amount)) - self.mtc.grant_bonus(worker_id, assignment_id, bonus_amount, reason) - print 'Granted %s to %s (%s)' % (bonus_amount, worker_id, reason) - - def block_workers(self, mapping): - mapping = self._read_mapping(mapping) - pass - - def unblock_workers(self, mapping): - mapping = self._read_mapping(mapping) - pass - - ################ CLEAN UP ################ - - def delete_batch(self, hit_ids): - '''Delete the HITs: - - Try to dispose the HIT. - - If failed (because the conditions of dispose_hit are not met), - expire the HIT, approve the remaining assignments, and - re-dispose the HIT. - ''' - if raw_input('Deleting %d HITs. Continue? (y/N) ' - % len(hit_ids)).lower() != 'y': - return - for i, hit_id in enumerate(hit_ids): - status = self.mtc.get_hit(hit_id)[0].HITStatus - if status == 'Disposed': - print '(%5d/%5d)' % (i + 1, len(hit_ids)), - print 'HIT', hit_id, 'already disposed.' - continue - try: - self.mtc.dispose_hit(hit_id) - print '(%5d/%5d)' % (i + 1, len(hit_ids)), - print 'Disposed HIT', hit_id - except MTurkRequestError, e: - print 'Trying to dispose HIT', hit_id, '...' - try: - self.mtc.expire_hit(hit_id) - result_set = self.mtc.get_assignments( - hit_id, 'Submitted', page_size=100) - if len(result_set) > 0: - print 'Approving %d assignments ...' % len(result_set) - for assignment in result_set: - self.mtc.approve_assignment(assignment.AssignmentId) - self.mtc.dispose_hit(hit_id) - print '(%5d/%5d)' % (i + 1, len(hit_ids)), - print 'Disposed HIT', hit_id - except MTurkRequestError, e: - traceback.print_exc() - exit(1) - print 'DONE! %d HITs disposed.' % len(hit_ids) - - def early_expire_hits(self, hit_ids): - '''Expire several HITs''' - if raw_input('Expiring %d HITs. Continue? (y/N) ' - % len(hit_ids)).lower() != 'y': - return - for i, hit_id in enumerate(hit_ids): - self.mtc.expire_hit(hit_id) - print '(%5d/%5d)' % (i + 1, len(hit_ids)), - print 'Expired HIT', hit_id - print 'DONE! %d HITs expired.' % len(hit_ids) - - def dispose_batch(self, hit_ids): - '''Dispose HITs such that - - the HIT is in REVIEWABLE state, and - - all assignments approved or rejected. - If not all conditions are met, an error is thrown. - Warning: After disposing the HIT, the Requester can no longer approve - the rejected assignments. - The results can still be downloaded until 120 days after. - ''' - pass - - def disable_hit(self, hit_ids): - '''Deal with HITs that are NOT REVIEWABLE: - - Remove HITs from marketplace - - Approve all submitted assignments (+ Pay workers) - (that haven't been accepted or rejected), - - Dispose of the HITs and all assignment data. - Assignment results data CANNOT be retreived in the future! - ''' - pass - - ################ EMERGENCY ################ - - def get_all_hits(self): - '''Return the list of all (HIT id, HIT type id)''' - for x in self.mtc.get_all_hits(): - print '%s\t%s' % (x.HITId, x.HITTypeId) - -################################################################ - -class RecordWrapper(object): - def __init__(self, basedir): - assert os.path.isdir(basedir) - self.basedir = basedir - self.dirname = os.path.basename(os.path.realpath(basedir)) - - def _get_filename(self, extension, check=False): - filename = os.path.join(self.basedir, self.dirname + '.' + extension) - if check and os.path.exists(filename): - confirm = raw_input('%s exists. Overwrite? (Yes/No/Rename) ' % filename) - if confirm.lower() == 'r': - suffix = 0 - while os.path.exists(filename + '.conflict.' + str(suffix)): - suffix += 1 - return filename + '.conflict.' + str(suffix) - if confirm.lower() != 'y': - return None - return filename - - TIME_MULTIPLIERS = {'s': 1, 'm': 60, 'h': 60 * 60, 'd': 60 * 60 * 24, - 'w': 60 * 60 * 24 * 7} - def _parse_time(self, timespec): - if timespec[-1] in RecordWrapper.TIME_MULTIPLIERS: - return int(float(timespec[:-1]) * - RecordWrapper.TIME_MULTIPLIERS[timespec[-1]]) - return int(timespec) - - QUALIFICATIONS = {'adult': AdultRequirement, - 'numapproved': NumberHitsApprovedRequirement, - '%abandoned': PercentAssignmentsAbandonedRequirement, - '%approved': PercentAssignmentsApprovedRequirement, - '%rejected': PercentAssignmentsRejectedRequirement, - '%returned': PercentAssignmentsReturnedRequirement, - '%submitted': PercentAssignmentsSubmittedRequirement} - COMPARATORS = {'<': 'LessThan', '<=': 'LessThanOrEqualTo', - '>': 'GreaterThan', '>=': 'GreaterThanOrEqualTo', - '=': 'EqualTo', '!=': 'NotEqualTo'} - - def read_config(self): - '''Return (properties, variables_list)''' - filename = self._get_filename('config') - parser = RawConfigParser() - parser.read(filename) - properties = {} - if parser.has_option('properties', 'hittypeid'): - properties['hittypeid'] = parser.get('properties', 'hittypeid') - else: - # Create a new HIT Type ID if not present - for key in ('title', 'description', 'keywords'): - properties[key] = parser.get('properties', key) - properties['reward'] = Price(parser.getfloat('properties', 'reward')) - for key in ('assignmentduration', 'autoapprovaldelay'): - properties[key] = self._parse_time(parser.get('timing', key)) - # Qualifications - requirements = [] - if parser.has_option('qualifications', 'locale'): - requirements.append(LocaleRequirement( - 'EqualTo', parser.get('qualifications', 'locale'), True)) - for key in RecordWrapper.QUALIFICATIONS: - if parser.has_option('qualifications', key): - value = parser.get('qualifications', key) - comparator = ''.join(x for x in value if not x.isdigit()) - value = int(value[len(comparator):]) - requirements.append(RecordWrapper.QUALIFICATIONS[key]( - RecordWrapper.COMPARATORS[comparator], value, True)) - properties['qualifications'] = Qualifications(requirements) - # Other properties - properties['annotation'] = parser.get('properties', 'annotation') - properties['assignments'] = parser.get('properties', 'assignments') - try: - properties['assignments'] = int(properties['assignments']) - except ValueError: - properties['assignments'] = self.read_assignment_amounts(properties['assignments']) - properties['hitlifetime'] = self._parse_time(parser.get('timing', 'hitlifetime')) - # Question - properties['url'] = parser.get('question', 'url') - properties['frameheight'] = parser.get('question', 'frameheight') - # Input - n = parser.getint('input', 'numhits') - if isinstance(properties['assignments'], list): - assert len(properties['assignments']) == n, (len(properties['assignments']), n) - variables_list = [dict() for i in xrange(n)] - for key in parser.options('input'): - if key != 'numhits': - value = parser.get('input', key) - if value[0] == '[': - value = json.loads(value) - assert len(value) == n - for i in xrange(n): - variables_list[i][key] = value[i] - elif '-' in value: - start, end = [int(x) for x in value.split('-')] - assert end - start + 1 == n - for i in xrange(n): - variables_list[i][key] = start + i - else: - for i in xrange(n): - variables_list[i][key] = value - return properties, variables_list - - def read_assignment_amounts(self, suffix): - filename = self._get_filename(suffix) - with open(filename, 'r', 'utf8') as fin: - return [int(x) for x in fin if x.strip()] - - def read_increments(self): - '''Return (assignments_increment, expiration_increment)''' - a_i = raw_input('Assignment increment: ') - try: - a_i = int(a_i) or None - except: - print 'Invalid input "%s". Set to None.' % a_i - a_i = None - e_i = raw_input('Expiration increment: ') - try: - e_i = self._parse_time(e_i) or None - except: - print 'Invalid input "%s". Set to None.' % e_i - e_i = None - print '>>> Assignment +=', a_i - print '>>> Expiration +=', e_i - if raw_input('Is this OK? (Yes/No) ').lower()[:1] == 'y': - return (a_i, e_i) - return self.read_increments() - - def write_success(self, hit_ids, hit_type_id): - filename = self._get_filename('success', check=True) - if not filename: - return - with open(filename, 'w', 'utf8') as fout: - print >> fout, '\t'.join(('hitId', 'hitTypeId')) - for hit_id in hit_ids: - print >> fout, '\t'.join((hit_id, hit_type_id)) - - def read_success(self): - '''Return HIT IDs''' - with open(self._get_filename('success')) as fin: - return [line.split()[0] for line in fin.readlines()[1:]] - - def read_expire(self): - '''Return HIT IDs''' - with open(self._get_filename('expire')) as fin: - return [line.split()[0] for line in fin.readlines()[1:]] - - ASSIGNMENT_FIELDS = ( - 'AssignmentId', 'WorkerId', 'HITId', - 'AssignmentStatus', # Submitted / Approved / Rejected - 'AcceptTime', 'SubmitTime', 'AutoApprovalTime', - 'ApprovalTime', 'RejectionTime', - ) - - def write_results(self, assignments): - filename = self._get_filename('results', check=False) - if not filename: - return - records = [] - statistics = defaultdict(int) - for assignment in assignments: - statistics[assignment.AssignmentStatus] += 1 - record = {'metadata': {}, 'answers': {}} - for key in RecordWrapper.ASSIGNMENT_FIELDS: - try: - record['metadata'][key] = getattr(assignment, key) - except AttributeError: - pass # Ignore field - for answer in assignment.answers[0]: - record['answers'][answer.qid] = answer.fields[0] - records.append(record) - with open(filename, 'w', 'utf8') as fout: - json.dump(records, fout, ensure_ascii=False, indent=2, - separators=(',', ': '), sort_keys=True) - print ('Wrote %d records to %s' % (len(records), filename)) - for key, value in statistics.iteritems(): - print '%12s: %6d / %6d (%8.3f%%)' % (key, value, len(records), - value * 100.0 / len(records)) - - def read_results(self): - '''Return a list of {'metadata': {...}, 'answers': {...}}''' - filename = self._get_filename('results') - with open(filename, 'r', 'utf8') as fin: - return json.load(fin) - - def _read_approve_or_reject(self, fin): - '''Return a mapping from assignment_id to reason - Format: - # Reason for assignment IDs below <-- The first one is optional - Assignment ID - Assignment ID - ... - # Reason for worker IDs below - Assignment ID - ... - ''' - mapping = {} - reason = '' - for line in fin: - line = line.strip() - if line.startswith('#'): - reason = line[1:].strip() - elif line: - mapping[line] = reason - return mapping - - def read_approve(self): - filename = self._get_filename('approve') - if not os.path.exists(filename): - return None - with open(filename, 'r', 'utf8') as fin: - return self._read_approve_or_reject(fin) - - def read_reject(self): - filename = self._get_filename('reject') - if not os.path.exists(filename): - return None - with open(filename, 'r', 'utf8') as fin: - return self._read_approve_or_reject(fin) - - def read_tsv(self, extension): - """If all else fails...""" - filename = self._get_filename(extension) - if not os.path.exists(filename): - return None - with open(filename, 'r', 'utf8') as fin: - return [x.strip().split('\t') for x in fin if x.strip()] - -################################################################ - -class Actions(object): - ACTIONS = ('getbalance', 'create', 'extend', 'get', 'clean', - 'grade', 'approve', 'reject', 'expire', 'bonus', - 'getallhits') - - def __init__(self, sandbox=True, basedir=None): - self.mturk_w = MTurkWrapper(sandbox=sandbox) - if basedir: - self.record_w = RecordWrapper(basedir) - else: - self.record_w = None - - def getbalance(self, args): - """ Print the balance and exit. - - Does not require any file, but you still need to specify a dummy directory - in the command line. - - To get real MTurk balance, add the --real flag. - """ - self.mturk_w.load() - print self.mturk_w.get_account_balance() - - def create(self, args): - """ Create a batch of HITs. - - Requires [name].config containing the HIT configurations. - See the example config file. - - Creates [name].success containing created HIT IDs. - - Make sure you have enough balance first. - Otherwise it is pretty difficult to fix the error. - """ - properties, variables_list = self.record_w.read_config() - print '=' * 40 - for key in sorted(properties): - print key, ':', properties[key] - print '=' * 40 - self.mturk_w.load() - response = self.mturk_w.create_batch( - properties, variables_list, maxhits=args.maxhits) - if response: - hit_ids, hit_type_id = response - self.record_w.write_success(hit_ids, hit_type_id) - - def extend(self, args): - """ Extend an existing batch of HITs. - - Requires [name].success containing HIT IDs (created by |create|). - - Creates a new [name].success file; the old file will be backed up. - - You will be prompted to enter the amount of time and assignments per HIT to add. - Either fields can be left blank. - Time = number of seconds, but you can use shorthands like 1d (= 1 day) - """ - hit_ids = self.record_w.read_success() - assignments_increment, expiration_increment =\ - self.record_w.read_increments() - self.mturk_w.load() - self.mturk_w.extend_batch(hit_ids, - assignments_increment=assignments_increment, - expiration_increment=expiration_increment) - - def get(self, args): - """ Retrieve Turker's work for a batch of HITs. - - Requires [name].success containing HIT IDs (created by |create|). - - Creates [name].results, a JSON file containing the results. - """ - hit_ids = self.record_w.read_success() - self.mturk_w.load() - assignments = self.mturk_w.get_batch(hit_ids) - self.record_w.write_results(assignments) - - def clean(self, args): - """ Remove a batch of HITs from Amazon permanently. - - Requires [name].success containing HIT IDs (created by |create|). - - You should only call |clean| on sandbox tasks. - For the real tasks, just leave it on Amazon. - """ - hit_ids = self.record_w.read_success() - self.mturk_w.load() - self.mturk_w.delete_batch(hit_ids) - - def grade(self, args): - """ Perform |reject| and then |approve|. (Shortcut) - - Requires at least one of [name].approve and [name].reject - See |approve| and |reject| for file description. - - After all assignments are approved or rejected, back up the [name].approve - and [name].reject by renaming them as [name].approve-## and [name].reject-## - (## = number). - """ - mapping_rej = self.record_w.read_reject() - mapping_app = self.record_w.read_approve() - if not (mapping_rej or mapping_app): - print 'Nothing to reject or approve.' - exit(0) - i = 1 - while os.path.exists(self.record_w._get_filename('approve-%02d' % i)) \ - or os.path.exists(self.record_w._get_filename('reject-%02d' % i)): - i += 1 - print 'Reject, Approve, and move files to ...-%02d' % i - self.mturk_w.load() - if mapping_rej: - self.mturk_w.reject_assignments(mapping_rej) - shutil.move(self.record_w._get_filename('reject'), - self.record_w._get_filename('reject-%02d' % i)) - else: - print 'No assignment to reject.' - if mapping_app: - self.mturk_w.approve_assignments(mapping_app) - shutil.move(self.record_w._get_filename('approve'), - self.record_w._get_filename('approve-%02d' % i)) - else: - print 'No assignment to approve.' - - def approve(self, args): - """ Approve assignments from the given list. - It is better to use |grade| since it also handles |reject| and backs up files. - - Requires [name].approve containing one assignment ID per line. - - To give a feedback message to the approved assignments, add a comment line - in [name].approve (like "# Your answer is awesome."). All assignments - after that comment line will have that message. Later comment lines - override the previous ones. - """ - mapping = self.record_w.read_approve() - self.mturk_w.load() - self.mturk_w.approve_assignments(mapping) - - def reject(self, args): - """ Reject assignments from the given list. - It is better to use |grade| since it also handles |approve| and backs up files. - - Requires [name].reject containing one assignment ID per line. - - To give a feedback message to the rejected assignments, add a comment line - in [name].reject (like "# Your answer is nonsense."). All assignments - after that comment line will have that message. Later comment lines - override the previous ones. - """ - mapping = self.record_w.read_reject() - self.mturk_w.load() - self.mturk_w.reject_assignments(mapping) - - def expire(self, args): - """ Immediately expire a batch of HITs. - - Requires [name].success containing HIT IDs (created by |create|). - """ - hit_ids = self.record_w.read_expire() - self.mturk_w.load() - self.mturk_w.early_expire_hits(hit_ids) - - def bonus(self, args): - """ Give bonus to workers in a list. - - Requires [name].bonus containing one worker ID per line. - - To give a feedback message to the approved workers, add a comment line - in [name].bonus (like "# Your work is awesome."). All workers - after that comment line will have that message. Later comment lines - override the previous ones. - """ - data = self.record_w.read_tsv('bonus') - self.mturk_w.load() - self.mturk_w.grant_bonus(data) - - def getallhits(self, args): - """ Get the list of all HITs ever published in the account. - - If something fails, use this as a last resort for debugging stuff. - """ - self.mturk_w.load() - self.mturk_w.get_all_hits() - -################################################################ - -class CustomArgumentParser(argparse.ArgumentParser): - def error(self, message): - print >> sys.stderr, 'ERROR:', message - self.print_help() - sys.exit(2) - -if __name__ == '__main__': - parser = CustomArgumentParser() - parser.add_argument('--real', action='store_false', dest='sandbox', default=True, - help="Use the real MTurk instead of sandbox") - parser.add_argument('--maxhits', type=int, - help='Maximum number of HITs (for debugging in sandbox)') - parser.add_argument('dir', - help="Base directory") - parser.add_argument('action', - help="action to take (%s)" % ', '.join(Actions.ACTIONS) + - " Read the Action class in run.py to see what each action does") - args = parser.parse_args() - - # If action comes before dir (typo) ... - if not os.path.exists(args.dir) and os.path.exists(args.action): - args.dir, args.action = args.action, args.dir - # Perform action - actions = Actions(args.sandbox, args.dir) - if hasattr(actions, args.action.lower()): - getattr(actions, args.action.lower())(args) - else: - print "Action '%s' not recognized" % args.action diff --git a/miniwob-sandbox/turk-server/.gitignore b/miniwob-sandbox/turk-server/.gitignore deleted file mode 100644 index 0cd676a..0000000 --- a/miniwob-sandbox/turk-server/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/demos -/logs diff --git a/miniwob-sandbox/turk-server/launch b/miniwob-sandbox/turk-server/launch deleted file mode 100755 index dcac62b..0000000 --- a/miniwob-sandbox/turk-server/launch +++ /dev/null @@ -1,3 +0,0 @@ -LOG_PATH=log/server-stderr.txt -echo "stdout has been redirected to $LOG_PATH" -python task.py >> $LOG_PATH 2>&1 diff --git a/miniwob-sandbox/turk-server/log.py b/miniwob-sandbox/turk-server/log.py deleted file mode 100644 index e3cf954..0000000 --- a/miniwob-sandbox/turk-server/log.py +++ /dev/null @@ -1,22 +0,0 @@ -import logging -import datetime - - -def create_logger(name, file_path, level='DEBUG'): - """Create a logger with the specified name.""" - logger = logging.getLogger(name) - - if isinstance(level, str): - level = logging._levelNames[level] - logger.setLevel(level) - - log_formatter = logging.Formatter("%(asctime)s [%(name)-6.6s] [%(levelname)-5.5s] %(message)s") - file_handler = logging.FileHandler(file_path) - file_handler.setFormatter(log_formatter) - logger.addHandler(file_handler) - - return logger - - -# epoch time to pretty printed string -epoch_to_str = lambda t: datetime.datetime.fromtimestamp(t).strftime("%Y-%m-%d %H:%M:%S.%f")[:-3] \ No newline at end of file diff --git a/miniwob-sandbox/turk-server/server.py b/miniwob-sandbox/turk-server/server.py deleted file mode 100644 index 6bf6e49..0000000 --- a/miniwob-sandbox/turk-server/server.py +++ /dev/null @@ -1,68 +0,0 @@ -import os -from OpenSSL import SSL -from bottle import ServerAdapter, response, request - -try: - from cheroot.wsgi import Server as WSGIServer - from cheroot.ssl.pyopenssl import pyOpenSSLAdapter -except ImportError: - from cherrypy.wsgiserver import CherryPyWSGIServer as WSGIServer - from cherrypy.wsgiserver.ssl_pyopenssl import pyOpenSSLAdapter - - -# TODO(kelvin): set these absolute file paths (str) -BASEPATH = os.environ['CERT_BASEDIR'] -SSL_CERT = os.path.join(BASEPATH, 'cert.pem') -SSL_CERT_CHAIN = None -SSL_PRIVKEY = os.path.join(BASEPATH, 'privkey.pem') - -# By default, the server will allow negotiations with extremely old protocols -# that are susceptible to attacks, so we only allow TLSv1.2 -class SecuredSSLServer(pyOpenSSLAdapter): - def get_context(self): - c = super(SecuredSSLServer, self).get_context() - c.set_options(SSL.OP_NO_SSLv2) - c.set_options(SSL.OP_NO_SSLv3) - c.set_options(SSL.OP_NO_TLSv1) - c.set_options(SSL.OP_NO_TLSv1_1) - return c - - -# Create our own sub-class of Bottle's ServerAdapter -# so that we can specify SSL. Using just server='cherrypy' -# uses the default cherrypy server, which doesn't use SSL -class SSLCherryPyServer(ServerAdapter): - def run(self, handler): - cert = SSL_CERT - #cert_chain = SSL_CERT_CHAIN - privkey = SSL_PRIVKEY - server = WSGIServer((self.host, self.port), handler) - server.ssl_adapter = SecuredSSLServer(cert, privkey) #, cert_chain) - try: - server.start() - finally: - server.stop() - - -def pretty_print_time(seconds): - m, s = divmod(seconds, 60) - h, m = divmod(m, 60) - return "%02d:%02d:%02d" % (h, m, s) - - -def enable_cors(fn): - """Enable cross origin resource sharing (CORS). - - A decorator to enable CORS for certain handlers. - """ - def _enable_cors(*args, **kwargs): - # set CORS headers - response.headers['Access-Control-Allow-Origin'] = '*' - response.headers['Access-Control-Allow-Methods'] = 'GET, POST, PUT, OPTIONS' - response.headers['Access-Control-Allow-Headers'] = 'Origin, Accept, Content-Type, X-Requested-With, X-CSRF-Token' - - if request.method != 'OPTIONS': - # actual request; reply with the actual response - return fn(*args, **kwargs) - - return _enable_cors diff --git a/miniwob-sandbox/turk-server/static/core/core.css b/miniwob-sandbox/turk-server/static/core/core.css deleted file mode 100644 index f3ed649..0000000 --- a/miniwob-sandbox/turk-server/static/core/core.css +++ /dev/null @@ -1,127 +0,0 @@ -body { - background-color: #555; - font-family: Arial; - font-size: 14px; - margin: 0; - padding: 0; -} - -#wrap { - height:210px; - background-color: white; - width:160px; -} - -#query { - background-color: #FF0; - font-size: 10px; - height: 44px; - padding: 3px; -} - -#area { - font-size: 10px; - padding: 2px; -} - -#area input[type=text] { - width: 120px; -} - -#area textarea { - height: 25px; - width: 120px; -} - -#query .bold, #area .bold { font-weight: bold; } - -/* reward display CSS below */ -#reward-display { - font-size: 14px; - height: 210px; - width: 160px; - position: absolute; - left: 165px; - top: 0px; - background-color: white; -} - -#reward-display .info { - display: block; - margin: 10px 5px; -} - -#reward-display #preview-mode-wrapper { - display: none; - color: #C00; -} - -#reward-display span { - font-weight: bold; -} - -#reward-avg { - display: inline-block; -} - -#area button.secondary-action { - padding: 6px 25px; -} - -/* task cover for synchronization */ -#sync-task-cover { - position: absolute; - left: 0; - top: 0; - width: 160px; - height: 210px; - background-color: #111; - color: #eee; - text-align: center; - line-height: 210px; - font-size: 20px; - cursor: pointer; - z-index: 9999; -} -#sync-task-cover.cover-submit { - background-color: #050; -} -#sync-task-cover.cover-transparent { - background-color: transparent; - color: transparent; - cursor: not-allowed; -} - -/* Instructions */ -#instructions { - position: absolute; - width: 280px; - padding: 0 10px 10px; - left: 645px; - top: 0px; - background-color: white; - line-height: 1.3; -} - -#instructions .red { - color: #A00; -} - -#instructions p, #Instructions h1 { - margin: .5em 0; -} -#instructions h1 { - font-size: 120%; -} - -#submitButton { - width: 80%; - text-align: center; -} - -#warning { - padding: 10px; - background-color: white; - color: #a00; - text-align: center; -} diff --git a/miniwob-sandbox/turk-server/static/core/core.js b/miniwob-sandbox/turk-server/static/core/core.js deleted file mode 100644 index dbf44b0..0000000 --- a/miniwob-sandbox/turk-server/static/core/core.js +++ /dev/null @@ -1,632 +0,0 @@ -var core = {}; - -// Warning right off the bat -window.addEventListener("load", function () { - var warningDiv = document.createElement('div'); - warningDiv.setAttribute('id','warning'); - warningDiv.innerHTML = "

            Important: Please use Google Chrome on desktop. The task may not work correctly on other browsers!
            Please report any problem to the requester.

            "; - document.body.appendChild(warningDiv); -}); - -// various common utilities - -// seedrandom.min.js -- https://github.com/davidbau/seedrandom -// Usage: Math.seedrandom('hello.'); -- Set the seed -// Usage: Math.seedrandom(); -- Automatically set a random seed -!function(a,b){function c(c,j,k){var n=[];j=1==j?{entropy:!0}:j||{};var s=g(f(j.entropy?[c,i(a)]:null==c?h():c,3),n),t=new d(n),u=function(){for(var a=t.g(m),b=p,c=0;a=r;)a/=2,b/=2,c>>>=1;return(a+c)/b};return u.int32=function(){return 0|t.g(4)},u.quick=function(){return t.g(4)/4294967296},u.double=u,g(i(t.S),a),(j.pass||k||function(a,c,d,f){return f&&(f.S&&e(f,t),a.state=function(){return e(t,{})}),d?(b[o]=a,c):a})(u,s,"global"in j?j.global:this==b,j.state)}function d(a){var b,c=a.length,d=this,e=0,f=d.i=d.j=0,g=d.S=[];for(c||(a=[c++]);e 0 ? Math.floor(WOB_RAW_REWARD_GLOBAL * 10) / 10 : 0); - core.clearTimer(); - core.startEpisode(); -} - -// returns parameters passed in the url. -// e.g. ?topic=123&name=query+string in the url would return -// QueryString["topic"]; // 123 -// QueryString["name"]; // query string -// QueryString["nothere"]; // undefined (object) -core.QueryString = (function(a) { - if (a == "") return {}; - var b = {}; - for (var i = 0; i < a.length; ++i) - { - var p=a[i].split('=', 2); - if (p.length == 1) - b[p[0]] = ""; - else - b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " ")); - } - return b; -})(window.location.search.substr(1).split('&')); - -core.getTaskName = function () { - var url = window.location.pathname; - return url.substr(url.lastIndexOf('/') + 1).replace(/\.html/, ''); -} - -core.getOpt = function(d, k, def) { - var v = d[k] - return typeof v === 'undefined' ? def : v; -} - -core.DISPLAY_HTML = ` -
            - - 0 / 2 -
            -
            - - - -
            -
            - - - -
            -
            - Preview mode. - You must ACCEPT the HIT before you can submit the results. -
            -`; - -core.INSTRUCTION_HTML = ` -

            Important: Please use Google Chrome on desktop. The task may not work correctly on other browsers!

            -

            Instructions

            -

            In each task, please demonstrate how to fill the search form to search for flights based on the given criteria.

            -

            You can submit the HIT after successfully completing 2 tasks.

            -

            Details

            -

            Required fields: You must fill in all city and date fields. If the flight is one-way, be sure to select the "One-way" option to disable the return date field.

            -

            If all required fields are filled but some fields are wrong, you will get partial credit.

            -

            Cities: Please use autocomplete to select the cities. For ambiguous airports, use the following:

            -

                Portland → Portland, OR (not MD)

            -

                Dallas → Dallas, TX (not Ft. Worth)

            -

                New York → the "All Airports" option

            -

            Dates: Use the default month and year (which should be March 2017).

            -

            Seat type: Expand the "More search options" section to select the seat type.

            -`; - -core.MTURK_FORM_HTML = ` - - -`; - -// create element via JS; appending the HTML template -// directly to the body will cause jQuery UI elements -// to freak out. -core.createDisplay = function(){ - var display = document.getElementById('reward-display'); - if(display === null) { - // Instruction - var instructionDiv = document.createElement('div'); - instructionDiv.setAttribute('id','instructions'); - instructionDiv.innerHTML = core.INSTRUCTION_HTML; - document.body.appendChild(instructionDiv); - // On-screen text - document.getElementById('query-pretty').textContent = - '(Flight criteria will appear here)'; - document.getElementById('reward-reason').textContent = - '(Feedback will appear here)'; - core.EPISODE_MAX_TIME = 120000; // OVERRIDE! - // Reward display - var rewardDiv = document.createElement('div'); - rewardDiv.setAttribute('id','reward-display'); - rewardDiv.innerHTML = core.DISPLAY_HTML; - document.getElementById('query-wrap').insertBefore( - rewardDiv, document.getElementById('query-pretty')); - // Turk form - var newForm = document.createElement('form'); - newForm.setAttribute('id','mturk_form'); - newForm.setAttribute('method','POST'); - newForm.innerHTML = core.MTURK_FORM_HTML; - document.body.appendChild(newForm); - if ((core.QueryString.turkSubmitTo || '').indexOf('workersandbox') !== -1) { - // Sandbox mode - newForm.setAttribute('action', "https://workersandbox.mturk.com/mturk/externalSubmit"); - } else if (core.QueryString.debug === 'true') { - // Debug mode - newForm.setAttribute('action', "javascript:alert('debug!')"); - } else { - // Real mode - newForm.setAttribute('action', "https://www.mturk.com/mturk/externalSubmit"); - } - document.getElementById('assignmentId').value = core.QueryString.assignmentId || 'ASSIGNMENT_ID_NOT_AVAILABLE'; - document.getElementById('mturkTaskName').value = core.getTaskName(); - } - core.updateDisplay(); -} - -core.updateDisplay = function(reward){ - core.wob_latest = core.wob_latest || '-'; - core.wob_scores = core.wob_scores || 0; - if (typeof reward !== 'undefined') { - core.wob_latest = +reward; - core.wob_scores += +reward; - } - - if(core.wob_latest !== '-'){ - var latestText = (core.wob_latest == 1 ? 'success' : core.wob_latest > 0 ? 'partial' : 'failure'); - var latestColor = (core.wob_latest == 1 ? 'green' : core.wob_latest > 0 ? 'orange' : 'red'); - document.getElementById('reward-last').setAttribute('style', 'color: ' + latestColor); - document.getElementById('reward-last').innerHTML = latestText; - } - - var total = core.wob_scores; - var totalColor = (total >= core.EPISODES_NEEDED ? 'green' : 'red'); - document.getElementById('reward-total').setAttribute('style', 'color: ' + totalColor); - document.getElementById('reward-total').innerHTML = total; -} - -core.countdownTimer = function(et){ - core.clearTimer(); - var episodeTime = et/1000; - var currentTime = et/1000; - var intervalTime = 1000; - // update the timer immediately to display the total episode - // time on start, eg. "10 / 10s" - updateTimer(); - // set an interval so that the timer text will be updated - // based on the intervalTime (ie. every 1sec) - core.CD_TIMER = setInterval(updateTimer, intervalTime); - - function updateTimer(){ - var cd = document.getElementById('timer-countdown'); - if (currentTime <= 0){ - cd.setAttribute('style', 'color: red'); - cd.innerHTML = '0 / ' + episodeTime + 's'; - window.clearInterval(core.CD_TIMER); - return; - } else { - var frac = currentTime / episodeTime; - if(frac > 0.75) { var col = 'green'; } - else if(frac > 0.5) { var col = 'orange'; } - else if(frac > 0.25) { var col = 'brown'; } - else { var col = 'red'; } - cd.setAttribute('style', 'color:' + col); - cd.innerHTML = currentTime + ' / ' + episodeTime + 'sec'; - currentTime-=intervalTime/1000; - } - } -}; - -core.clearTimer = function(){ - window.clearInterval(core.CD_TIMER); - var cd = document.getElementById('timer-countdown'); - cd.setAttribute('style', 'color: black'); - cd.innerHTML = '-'; -} - -// ################################ -// Custom getter - -core.getUtterance = function () { - var query = document.getElementById('query'); - return query.textContent.replace(/\s+/g, ' ').trim(); -} - -var previousDOMInfo = {}; -var nextRefCode = 1, nextTextRefCode = -1; -function resetRefCode() { - nextRefCode = 1; - nextTextRefCode = -1; -} - -/* Returns a nested object (dict) with all visible DOM element information. - - Special handling for Text nodes: - - Text nodes with only whitespaces are discarded. - - If the Text node is the only child, discard that Text node - and reassign its text to the parent Element. - - If the Text node is not the only child, it is broken into - pseudo-Elements with tag "t". -*/ -function getDOMInfo() { - previousDOMInfo = {} - - function getDOMInfoOfElement(element) { - if (element.id === 'reward-display' - || element.id === 'sync-task-cover' - || element.id === 'instructions' - || element.id === 'query') return; - var rect = element.getBoundingClientRect(); - if (rect.width == 0 || rect.height == 0) return; - var answer = { - tag: element.tagName, - left: rect.left, top: rect.top, - width: rect.width, height: rect.height, - children: [], - id: element.id, - classes: element.className, - }; - // Assign ref code - if (element.dataset.wob_ref !== undefined - && element.dataset.wob_eps === 'e' + WOB_EPISODE_ID) { - answer.ref = +element.dataset.wob_ref; - } else { - element.dataset.wob_ref = answer.ref = nextRefCode++; - element.dataset.wob_eps = 'e' + WOB_EPISODE_ID; - } - // Record styles - var computedStyle = window.getComputedStyle(element); - answer.bgColor = computedStyle.backgroundColor; - answer.fgColor = computedStyle.color; - // Indicate if the element is being focused on - if (document.activeElement === element) { - answer.focused = true; - } - // Indicate if the element is tampered with in this episode - if (element.dataset.tampered !== undefined - && element.dataset.tampered == 'e' + WOB_EPISODE_ID) { - answer.tampered = true; - } - // For recording demonstrations: Record the target - if (element.dataset.recording_target) { - answer.recordingTarget = true; - } - // For , also add input type and value - if (element instanceof HTMLInputElement) { - var inputType = element.type; - answer.tag += '_' + inputType; - if (inputType === 'checkbox' || inputType === 'radio') { - answer.value = element.checked; - } else { - answer.value = element.value; - } - } else if (element instanceof HTMLTextAreaElement) { - answer.value = element.value; - } - previousDOMInfo[answer.ref] = element; - // Read the children - var filteredChildNodes = [], textOnly = true; - element.childNodes.forEach(function (child) { - if (child instanceof Text) { - if (!/^\s*$/.test(child.data)) { - filteredChildNodes.push(child); - } - } else if (child instanceof Element) { - filteredChildNodes.push(child); - textOnly = false; - } - }); - if (textOnly) { - answer.text = filteredChildNodes.map(function (x) { - return x.data.trim(); - }).join(' '); - } else { - filteredChildNodes.forEach(function (child) { - if (child instanceof Text) { - addDOMInfosOfTextNode(child, answer.children); - } else { - child = getDOMInfoOfElement(child); - if (child !== undefined) - answer.children.push(child); - } - }); - } - return answer; - } - - function addDOMInfosOfTextNode(textNode, collection) { - // Break the text node into multiple nodes - // Each node only occupies a single rectangle boundary - var range = document.createRange(); - range.selectNodeContents(textNode); - var absolute_start = range.startOffset, absolute_end = range.endOffset; - var start = absolute_start; - var itr = 0; - while (start < absolute_end) { - // Binary search on the next end point - var end_lower_bound = start + 1, - end_upper_bound = absolute_end, - l = range.getClientRects().length, - end = Math.floor((end_lower_bound * (l-1) + end_upper_bound) / l); - while (end_lower_bound <= end_upper_bound) { - range.setEnd(textNode, end); - if (range.getClientRects().length == 1) { - end_lower_bound = end + 1; - end = Math.min(end_lower_bound + 5, Math.floor((end_lower_bound + end_upper_bound) / 2)); - } else { - end_upper_bound = end - 1; - end = Math.max(end_upper_bound - 5, Math.floor((end_lower_bound + end_upper_bound) / 2)); - } - if (itr++ > 1000) throwTextNodeError('Text node computation stuck in an infinite loop'); - } - range.setEnd(textNode, end); - var rects = range.getClientRects(); - if (rects.length !== 1) throwTextNodeError('Text node computation incorrect'); - var rect = rects[0], text = textNode.data.substring(start, end).trim(); - if (rect.width > 0 && rect.height > 0 && text) { - var answer = { - tag: "t", - left: rect.left, top: rect.top, - width: rect.width, height: rect.height, - ref: nextTextRefCode--, - children: [], - text: text, - }; - collection.push(answer); - } - start = end; - range.setEnd(textNode, absolute_end); - range.setStart(textNode, start); - if (itr++ > 1000) throwTextNodeError('Text node computation stuck in an infinite loop'); - } - } - - function throwTextNodeError(message) { - alert(message); - throw message; - } - - return getDOMInfoOfElement(document.body); -} - - -/* Debug: return a mapping from ref to its DOMInfo */ -function flattenDOMInfo(rootDomInfo, flattened) { - if (flattened == undefined) flattened = {}; - flattened[rootDomInfo.ref] = rootDomInfo; - rootDomInfo.children.forEach(function (x) { flattenDOMInfo(x, flattened); }); - return flattened; -} - -// ################################################ -// Record demonstrations - -/* POST submit format - -* utterance -* states: array of objects with the following keys: - - time: time elapsed - - dom: DOM structure - - action: action performed at that moment -* reward - -*/ - -var recorder = {}; - -recorder.setup = function () { - if (recorder.isSetup) return; - recorder.isSetup = true; -} - -// Start recording the episode -recorder.startRecording = function (startEpisodeReal) { - recorder.data = {}; - recorder.data.taskName = core.getTaskName(); - recorder.data.states = []; - recorder.isRecording = true; - startEpisodeReal(); - var utterance = core.getUtterance(); - if (typeof utterance === 'string') { - recorder.data.utterance = utterance; - } else { - recorder.data.utterance = utterance.utterance; - recorder.data.fields = utterance.fields; - } -} - -recorder.server = '/record'; - -// End recording the episode -recorder.endRecording = function () { - recorder.data.reward = WOB_REWARD_GLOBAL; - recorder.data.rawReward = WOB_RAW_REWARD_GLOBAL; - recorder.isRecording = false; - var data = recorder.data; - recorder.data = {}; // Prevent future addition - //console.log(data); - // Create form element - var dumped = document.createElement("input"); - dumped.setAttribute("type", "hidden"); - dumped.setAttribute("name", "r" + WOB_EPISODE_ID); - document.getElementById('mturk_form').appendChild(dumped); - // Compress and send data - data = recorder.compress(data); - var req = new XMLHttpRequest(); - req.open('POST', recorder.server); - req.setRequestHeader('Content-type', 'text/plain'); - req.onreadystatechange = function () { - if (req.readyState === XMLHttpRequest.DONE) { - if (req.status === 200) { - dumped.setAttribute('value', 'OK: ' + req.responseText); - } else { - dumped.setAttribute('value', 'ERROR: ' + req.statusText); - } - } - } - req.send(JSON.stringify(data)); - // Make it ready for the next episode - core.cover_div.classList.remove('cover-transparent'); - if (core.wob_scores >= core.EPISODES_NEEDED) { - core.cover_div.classList.add('cover-submit'); - core.cover_div.innerHTML = 'SUBMIT'; - core.cover_div.onclick = function () { - document.getElementById('mturk_form').submit(); - } - } -} - -recorder.compress = function (data) { - data = JSON.stringify(data); - data = pako.deflate(data, {to:'string'}) - data = btoa(data); - return data; -} - -// ################################ -// Wrappers - -// Wrap startEpisodeReal -core.startEpisodeReal = (function(startEpisodeReal) { - return function () { - if (core.cover_div.classList.contains('cover-transparent')) return; - recorder.setup(); - recorder.startRecording(startEpisodeReal); - } -})(core.startEpisodeReal); - -// Wrap endEpisode -core.endEpisode = (function(endEpisode) { - return function (reward, time_proportional, reason, recorder_data) { - if (core.EP_TIMER === null) return; - core.cover_div.classList.add('cover-transparent'); - endEpisode(reward, time_proportional, reason); - // Delay to allow the last action to be recorded - if (recorder_data) { - recorder.data.states = recorder_data.states; - } - setTimeout(recorder.endRecording, 500); - } -})(core.endEpisode); - -// ################################ -// Initial setup for MTurk - -core.checkPreviewMode = function () { - if (core.QueryString.assignmentId != "ASSIGNMENT_ID_NOT_AVAILABLE") return; - document.getElementById('preview-mode-wrapper').style.display = 'block'; -}; - -(function () { - // Pako for compression - var script = document.createElement('script'); - script.type = 'text/javascript'; - script.src = 'https://cdnjs.cloudflare.com/ajax/libs/pako/1.0.6/pako.min.js'; - document.head.appendChild(script); -})(); diff --git a/miniwob-sandbox/turk-server/static/core/d3.v3.min.js b/miniwob-sandbox/turk-server/static/core/d3.v3.min.js deleted file mode 100644 index ca05c71..0000000 --- a/miniwob-sandbox/turk-server/static/core/d3.v3.min.js +++ /dev/null @@ -1,5 +0,0 @@ -!function(){function n(n){return n&&(n.ownerDocument||n.document||n).documentElement}function t(n){return n&&(n.ownerDocument&&n.ownerDocument.defaultView||n.document&&n||n.defaultView)}function e(n,t){return t>n?-1:n>t?1:n>=t?0:NaN}function r(n){return null===n?NaN:+n}function u(n){return!isNaN(n)}function i(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)<0?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)>0?u=i:r=i+1}return r}}}function a(n){return n.length}function o(n){for(var t=1;n*t%1;)t*=10;return t}function l(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function c(){this._=Object.create(null)}function s(n){return(n+="")===xa||n[0]===ba?ba+n:n}function f(n){return(n+="")[0]===ba?n.slice(1):n}function h(n){return s(n)in this._}function g(n){return(n=s(n))in this._&&delete this._[n]}function p(){var n=[];for(var t in this._)n.push(f(t));return n}function v(){var n=0;for(var t in this._)++n;return n}function d(){for(var n in this._)return!1;return!0}function m(){this._=Object.create(null)}function y(n){return n}function M(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function x(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=_a.length;r>e;++e){var u=_a[e]+t;if(u in n)return u}}function b(){}function _(){}function w(n){function t(){for(var t,r=e,u=-1,i=r.length;++ue;e++)for(var u,i=n[e],a=0,o=i.length;o>a;a++)(u=i[a])&&t(u,a,e);return n}function Z(n){return Sa(n,za),n}function V(n){var t,e;return function(r,u,i){var a,o=n[i].update,l=o.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(a=o[t])&&++t0&&(n=n.slice(0,o));var c=La.get(n);return c&&(n=c,l=B),o?t?u:r:t?b:i}function $(n,t){return function(e){var r=oa.event;oa.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{oa.event=r}}}function B(n,t){var e=$(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function W(e){var r=".dragsuppress-"+ ++Ta,u="click"+r,i=oa.select(t(e)).on("touchmove"+r,S).on("dragstart"+r,S).on("selectstart"+r,S);if(null==qa&&(qa="onselectstart"in e?!1:x(e.style,"userSelect")),qa){var a=n(e).style,o=a[qa];a[qa]="none"}return function(n){if(i.on(r,null),qa&&(a[qa]=o),n){var t=function(){i.on(u,null)};i.on(u,function(){S(),t()},!0),setTimeout(t,0)}}}function J(n,e){e.changedTouches&&(e=e.changedTouches[0]);var r=n.ownerSVGElement||n;if(r.createSVGPoint){var u=r.createSVGPoint();if(0>Ra){var i=t(n);if(i.scrollX||i.scrollY){r=oa.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var a=r[0][0].getScreenCTM();Ra=!(a.f||a.e),r.remove()}}return Ra?(u.x=e.pageX,u.y=e.pageY):(u.x=e.clientX,u.y=e.clientY),u=u.matrixTransform(n.getScreenCTM().inverse()),[u.x,u.y]}var o=n.getBoundingClientRect();return[e.clientX-o.left-n.clientLeft,e.clientY-o.top-n.clientTop]}function G(){return oa.event.changedTouches[0].identifier}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nn(n){return n>1?0:-1>n?ja:Math.acos(n)}function tn(n){return n>1?Ha:-1>n?-Ha:Math.asin(n)}function en(n){return((n=Math.exp(n))-1/n)/2}function rn(n){return((n=Math.exp(n))+1/n)/2}function un(n){return((n=Math.exp(2*n))-1)/(n+1)}function an(n){return(n=Math.sin(n/2))*n}function on(){}function ln(n,t,e){return this instanceof ln?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof ln?new ln(n.h,n.s,n.l):_n(""+n,wn,ln):new ln(n,t,e)}function cn(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(a-i)*n/60:180>n?a:240>n?i+(a-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,a;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,a=.5>=e?e*(1+t):e+t-e*t,i=2*e-a,new yn(u(n+120),u(n),u(n-120))}function sn(n,t,e){return this instanceof sn?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof sn?new sn(n.h,n.c,n.l):n instanceof hn?pn(n.l,n.a,n.b):pn((n=Sn((n=oa.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new sn(n,t,e)}function fn(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new hn(e,Math.cos(n*=Oa)*t,Math.sin(n)*t)}function hn(n,t,e){return this instanceof hn?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof hn?new hn(n.l,n.a,n.b):n instanceof sn?fn(n.h,n.c,n.l):Sn((n=yn(n)).r,n.g,n.b):new hn(n,t,e)}function gn(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=vn(u)*Ka,r=vn(r)*Qa,i=vn(i)*no,new yn(mn(3.2404542*u-1.5371385*r-.4985314*i),mn(-.969266*u+1.8760108*r+.041556*i),mn(.0556434*u-.2040259*r+1.0572252*i))}function pn(n,t,e){return n>0?new sn(Math.atan2(e,t)*Ia,Math.sqrt(t*t+e*e),n):new sn(NaN,NaN,n)}function vn(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function dn(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function mn(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function yn(n,t,e){return this instanceof yn?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof yn?new yn(n.r,n.g,n.b):_n(""+n,yn,cn):new yn(n,t,e)}function Mn(n){return new yn(n>>16,n>>8&255,255&n)}function xn(n){return Mn(n)+""}function bn(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function _n(n,t,e){var r,u,i,a=0,o=0,l=0;if(r=/([a-z]+)\((.*)\)/.exec(n=n.toLowerCase()))switch(u=r[2].split(","),r[1]){case"hsl":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(Nn(u[0]),Nn(u[1]),Nn(u[2]))}return(i=ro.get(n))?t(i.r,i.g,i.b):(null==n||"#"!==n.charAt(0)||isNaN(i=parseInt(n.slice(1),16))||(4===n.length?(a=(3840&i)>>4,a=a>>4|a,o=240&i,o=o>>4|o,l=15&i,l=l<<4|l):7===n.length&&(a=(16711680&i)>>16,o=(65280&i)>>8,l=255&i)),t(a,o,l))}function wn(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),a=Math.max(n,t,e),o=a-i,l=(a+i)/2;return o?(u=.5>l?o/(a+i):o/(2-a-i),r=n==a?(t-e)/o+(e>t?6:0):t==a?(e-n)/o+2:(n-t)/o+4,r*=60):(r=NaN,u=l>0&&1>l?0:r),new ln(r,u,l)}function Sn(n,t,e){n=kn(n),t=kn(t),e=kn(e);var r=dn((.4124564*n+.3575761*t+.1804375*e)/Ka),u=dn((.2126729*n+.7151522*t+.072175*e)/Qa),i=dn((.0193339*n+.119192*t+.9503041*e)/no);return hn(116*u-16,500*(r-u),200*(u-i))}function kn(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function Nn(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function En(n){return"function"==typeof n?n:function(){return n}}function An(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Cn(t,e,n,r)}}function Cn(n,t,e,r){function u(){var n,t=l.status;if(!t&&Ln(l)||t>=200&&300>t||304===t){try{n=e.call(i,l)}catch(r){return void a.error.call(i,r)}a.load.call(i,n)}else a.error.call(i,l)}var i={},a=oa.dispatch("beforesend","progress","load","error"),o={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(n)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=u:l.onreadystatechange=function(){l.readyState>3&&u()},l.onprogress=function(n){var t=oa.event;oa.event=n;try{a.progress.call(i,l)}finally{oa.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?o[n]:(null==t?delete o[n]:o[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(c=n,i):c},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(ca(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),l.open(e,n,!0),null==t||"accept"in o||(o.accept=t+",*/*"),l.setRequestHeader)for(var s in o)l.setRequestHeader(s,o[s]);return null!=t&&l.overrideMimeType&&l.overrideMimeType(t),null!=c&&(l.responseType=c),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),a.beforesend.call(i,l),l.send(null==r?null:r),i},i.abort=function(){return l.abort(),i},oa.rebind(i,a,"on"),null==r?i:i.get(zn(r))}function zn(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Ln(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function qn(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,n:null};return io?io.n=i:uo=i,io=i,ao||(oo=clearTimeout(oo),ao=1,lo(Tn)),i}function Tn(){var n=Rn(),t=Dn()-n;t>24?(isFinite(t)&&(clearTimeout(oo),oo=setTimeout(Tn,t)),ao=0):(ao=1,lo(Tn))}function Rn(){for(var n=Date.now(),t=uo;t;)n>=t.t&&t.c(n-t.t)&&(t.c=null),t=t.n;return n}function Dn(){for(var n,t=uo,e=1/0;t;)t.c?(t.t8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Un(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r&&e?function(n,t){for(var u=n.length,i=[],a=0,o=r[0],l=0;u>0&&o>0&&(l+o+1>t&&(o=Math.max(1,t-l)),i.push(n.substring(u-=o,u+o)),!((l+=o+1)>t));)o=r[a=(a+1)%r.length];return i.reverse().join(e)}:y;return function(n){var e=so.exec(n),r=e[1]||" ",a=e[2]||">",o=e[3]||"-",l=e[4]||"",c=e[5],s=+e[6],f=e[7],h=e[8],g=e[9],p=1,v="",d="",m=!1,y=!0;switch(h&&(h=+h.substring(1)),(c||"0"===r&&"="===a)&&(c=r="0",a="="),g){case"n":f=!0,g="g";break;case"%":p=100,d="%",g="f";break;case"p":p=100,d="%",g="r";break;case"b":case"o":case"x":case"X":"#"===l&&(v="0"+g.toLowerCase());case"c":y=!1;case"d":m=!0,h=0;break;case"s":p=-1,g="r"}"$"===l&&(v=u[0],d=u[1]),"r"!=g||h||(g="g"),null!=h&&("g"==g?h=Math.max(1,Math.min(21,h)):("e"==g||"f"==g)&&(h=Math.max(0,Math.min(20,h)))),g=fo.get(g)||Fn;var M=c&&f;return function(n){var e=d;if(m&&n%1)return"";var u=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===o?"":o;if(0>p){var l=oa.formatPrefix(n,h);n=l.scale(n),e=l.symbol+d}else n*=p;n=g(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=y?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!c&&f&&(x=i(x,1/0));var S=v.length+x.length+b.length+(M?0:u.length),k=s>S?new Array(S=s-S+1).join(r):"";return M&&(x=i(k+x,k.length?s-b.length:1/0)),u+=v,n=x+b,("<"===a?u+n+k:">"===a?k+u+n:"^"===a?k.substring(0,S>>=1)+u+n+k.substring(S):u+(M?n:k+n))+e}}}function Fn(n){return n+""}function Hn(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function On(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new go(e-1)),1),e}function i(n,e){return t(n=new go(+n),e),n}function a(n,r,i){var a=u(n),o=[];if(i>1)for(;r>a;)e(a)%i||o.push(new Date(+a)),t(a,1);else for(;r>a;)o.push(new Date(+a)),t(a,1);return o}function o(n,t,e){try{go=Hn;var r=new Hn;return r._=n,a(r,t,e)}finally{go=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=a;var l=n.utc=In(n);return l.floor=l,l.round=In(r),l.ceil=In(u),l.offset=In(i),l.range=o,n}function In(n){return function(t,e){try{go=Hn;var r=new Hn;return r._=t,n(r,e)._}finally{go=Date}}}function Yn(n){function t(n){function t(t){for(var e,u,i,a=[],o=-1,l=0;++oo;){if(r>=c)return-1;if(u=t.charCodeAt(o++),37===u){if(a=t.charAt(o++),i=C[a in vo?t.charAt(o++):a],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){N.lastIndex=0;var r=N.exec(t.slice(e));return r?(n.m=E.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,r){return e(n,A.c.toString(),t,r)}function l(n,t,r){return e(n,A.x.toString(),t,r)}function c(n,t,r){return e(n,A.X.toString(),t,r)}function s(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,v=n.days,d=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{go=Hn;var t=new go;return t._=n,r(t)}finally{go=Date}}var r=t(n);return e.parse=function(n){try{go=Hn;var t=r.parse(n);return t&&t._}finally{go=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ct;var M=oa.map(),x=Vn(v),b=Xn(v),_=Vn(d),w=Xn(d),S=Vn(m),k=Xn(m),N=Vn(y),E=Xn(y);p.forEach(function(n,t){M.set(n.toLowerCase(),t)});var A={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return Zn(n.getDate(),t,2)},e:function(n,t){return Zn(n.getDate(),t,2)},H:function(n,t){return Zn(n.getHours(),t,2)},I:function(n,t){return Zn(n.getHours()%12||12,t,2)},j:function(n,t){return Zn(1+ho.dayOfYear(n),t,3)},L:function(n,t){return Zn(n.getMilliseconds(),t,3)},m:function(n,t){return Zn(n.getMonth()+1,t,2)},M:function(n,t){return Zn(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return Zn(n.getSeconds(),t,2)},U:function(n,t){return Zn(ho.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Zn(ho.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return Zn(n.getFullYear()%100,t,2)},Y:function(n,t){return Zn(n.getFullYear()%1e4,t,4)},Z:ot,"%":function(){return"%"}},C={a:r,A:u,b:i,B:a,c:o,d:tt,e:tt,H:rt,I:rt,j:et,L:at,m:nt,M:ut,p:s,S:it,U:Bn,w:$n,W:Wn,x:l,X:c,y:Gn,Y:Jn,Z:Kn,"%":lt};return t}function Zn(n,t,e){var r=0>n?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function Vn(n){return new RegExp("^(?:"+n.map(oa.requote).join("|")+")","i")}function Xn(n){for(var t=new c,e=-1,r=n.length;++e68?1900:2e3)}function nt(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function tt(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function et(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function rt(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function ut(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function it(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function at(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function ot(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=Ma(t)/60|0,u=Ma(t)%60;return e+Zn(r,"0",2)+Zn(u,"0",2)}function lt(n,t,e){yo.lastIndex=0;var r=yo.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ct(n){for(var t=n.length,e=-1;++e=0?1:-1,o=a*e,l=Math.cos(t),c=Math.sin(t),s=i*c,f=u*l+s*Math.cos(o),h=s*a*Math.sin(o);So.add(Math.atan2(h,f)),r=n,u=l,i=c}var t,e,r,u,i;ko.point=function(a,o){ko.point=n,r=(t=a)*Oa,u=Math.cos(o=(e=o)*Oa/2+ja/4),i=Math.sin(o)},ko.lineEnd=function(){n(t,e)}}function dt(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function mt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function yt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function Mt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function xt(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function bt(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function _t(n){return[Math.atan2(n[1],n[0]),tn(n[2])]}function wt(n,t){return Ma(n[0]-t[0])o;++o)u.point((e=n[o])[0],e[1]);return void u.lineEnd()}var l=new Tt(e,n,null,!0),c=new Tt(e,null,l,!1);l.o=c,i.push(l),a.push(c),l=new Tt(r,n,null,!1),c=new Tt(r,null,l,!0),l.o=c,i.push(l),a.push(c)}}),a.sort(t),qt(i),qt(a),i.length){for(var o=0,l=e,c=a.length;c>o;++o)a[o].e=l=!l;for(var s,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;s=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var o=0,c=s.length;c>o;++o)u.point((f=s[o])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){s=g.p.z;for(var o=s.length-1;o>=0;--o)u.point((f=s[o])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,s=g.z,p=!p}while(!g.v);u.lineEnd()}}}function qt(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r0){for(b||(i.polygonStart(),b=!0),i.lineStart();++a1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Dt))}var g,p,v,d=t(i),m=u.invert(r[0],r[1]),y={point:a,lineStart:l,lineEnd:c,polygonStart:function(){y.point=s,y.lineStart=f,y.lineEnd=h,g=[],p=[]},polygonEnd:function(){y.point=a,y.lineStart=l,y.lineEnd=c,g=oa.merge(g);var n=Ot(m,p);g.length?(b||(i.polygonStart(),b=!0),Lt(g,jt,n,e,i)):n&&(b||(i.polygonStart(),b=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),b&&(i.polygonEnd(),b=!1),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},M=Pt(),x=t(M),b=!1;return y}}function Dt(n){return n.length>1}function Pt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:b,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function jt(n,t){return((n=n.x)[0]<0?n[1]-Ha-Da:Ha-n[1])-((t=t.x)[0]<0?t[1]-Ha-Da:Ha-t[1])}function Ut(n){var t,e=NaN,r=NaN,u=NaN;return{lineStart:function(){n.lineStart(),t=1},point:function(i,a){var o=i>0?ja:-ja,l=Ma(i-e);Ma(l-ja)0?Ha:-Ha),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(o,r),n.point(i,r),t=0):u!==o&&l>=ja&&(Ma(e-u)Da?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*a)):(t+r)/2}function Ht(n,t,e,r){var u;if(null==n)u=e*Ha,r.point(-ja,u),r.point(0,u),r.point(ja,u),r.point(ja,0),r.point(ja,-u),r.point(0,-u),r.point(-ja,-u),r.point(-ja,0),r.point(-ja,u);else if(Ma(n[0]-t[0])>Da){var i=n[0]o;++o){var c=t[o],s=c.length;if(s)for(var f=c[0],h=f[0],g=f[1]/2+ja/4,p=Math.sin(g),v=Math.cos(g),d=1;;){d===s&&(d=0),n=c[d];var m=n[0],y=n[1]/2+ja/4,M=Math.sin(y),x=Math.cos(y),b=m-h,_=b>=0?1:-1,w=_*b,S=w>ja,k=p*M;if(So.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),i+=S?b+_*Ua:b,S^h>=e^m>=e){var N=yt(dt(f),dt(n));bt(N);var E=yt(u,N);bt(E);var A=(S^b>=0?-1:1)*tn(E[2]);(r>A||r===A&&(N[0]||N[1]))&&(a+=S^b>=0?1:-1)}if(!d++)break;h=m,p=M,v=x,f=n}}return(-Da>i||Da>i&&0>So)^1&a}function It(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function e(n){var e,i,l,c,s;return{lineStart:function(){c=l=!1,s=1},point:function(f,h){var g,p=[f,h],v=t(f,h),d=a?v?0:u(f,h):v?u(f+(0>f?ja:-ja),h):0;if(!e&&(c=l=v)&&n.lineStart(),v!==l&&(g=r(e,p),(wt(e,g)||wt(p,g))&&(p[0]+=Da,p[1]+=Da,v=t(p[0],p[1]))),v!==l)s=0,v?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(o&&e&&a^v){var m;d&i||!(m=r(p,e,!0))||(s=0,a?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!v||e&&wt(e,p)||n.point(p[0],p[1]),e=p,l=v,i=d},lineEnd:function(){l&&n.lineEnd(),e=null},clean:function(){return s|(c&&l)<<1}}}function r(n,t,e){var r=dt(n),u=dt(t),a=[1,0,0],o=yt(r,u),l=mt(o,o),c=o[0],s=l-c*c;if(!s)return!e&&n;var f=i*l/s,h=-i*c/s,g=yt(a,o),p=xt(a,f),v=xt(o,h);Mt(p,v);var d=g,m=mt(p,d),y=mt(d,d),M=m*m-y*(mt(p,p)-1);if(!(0>M)){var x=Math.sqrt(M),b=xt(d,(-m-x)/y);if(Mt(b,p),b=_t(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],N=t[1];w>S&&(_=w,w=S,S=_);var E=S-w,A=Ma(E-ja)E;if(!A&&k>N&&(_=k,k=N,N=_),C?A?k+N>0^b[1]<(Ma(b[0]-w)ja^(w<=b[0]&&b[0]<=S)){var z=xt(d,(-m+x)/y);return Mt(z,p),[b,_t(z)]}}}function u(t,e){var r=a?n:ja-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),a=i>0,o=Ma(i)>Da,l=ve(n,6*Oa);return Rt(t,e,l,a?[0,-n]:[-ja,n-ja])}function Yt(n,t,e,r){return function(u){var i,a=u.a,o=u.b,l=a.x,c=a.y,s=o.x,f=o.y,h=0,g=1,p=s-l,v=f-c;if(i=n-l,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-l,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-c,v||!(i>0)){if(i/=v,0>v){if(h>i)return;g>i&&(g=i)}else if(v>0){if(i>g)return;i>h&&(h=i)}if(i=r-c,v||!(0>i)){if(i/=v,0>v){if(i>g)return;i>h&&(h=i)}else if(v>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:l+h*p,y:c+h*v}),1>g&&(u.b={x:l+g*p,y:c+g*v}),u}}}}}}function Zt(n,t,e,r){function u(r,u){return Ma(r[0]-n)0?0:3:Ma(r[0]-e)0?2:1:Ma(r[1]-t)0?1:0:u>0?3:2}function i(n,t){return a(n.x,t.x)}function a(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(o){function l(n){for(var t=0,e=d.length,r=n[1],u=0;e>u;++u)for(var i,a=1,o=d[u],l=o.length,c=o[0];l>a;++a)i=o[a],c[1]<=r?i[1]>r&&Q(c,i,n)>0&&++t:i[1]<=r&&Q(c,i,n)<0&&--t,c=i;return 0!==t}function c(i,o,l,c){var s=0,f=0;if(null==i||(s=u(i,l))!==(f=u(o,l))||a(i,o)<0^l>0){do c.point(0===s||3===s?n:e,s>1?r:t);while((s=(s+l+4)%4)!==f)}else c.point(o[0],o[1])}function s(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){s(n,t)&&o.point(n,t)}function h(){C.point=p,d&&d.push(m=[]),S=!0,w=!1,b=_=NaN}function g(){v&&(p(y,M),x&&w&&E.rejoin(),v.push(E.buffer())),C.point=f,w&&o.lineEnd()}function p(n,t){n=Math.max(-Fo,Math.min(Fo,n)),t=Math.max(-Fo,Math.min(Fo,t));var e=s(n,t);if(d&&m.push([n,t]),S)y=n,M=t,x=e,S=!1,e&&(o.lineStart(),o.point(n,t));else if(e&&w)o.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};A(r)?(w||(o.lineStart(),o.point(r.a.x,r.a.y)),o.point(r.b.x,r.b.y),e||o.lineEnd(),k=!1):e&&(o.lineStart(),o.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,m,y,M,x,b,_,w,S,k,N=o,E=Pt(),A=Yt(n,t,e,r),C={point:f,lineStart:h,lineEnd:g,polygonStart:function(){o=E,v=[],d=[],k=!0},polygonEnd:function(){o=N,v=oa.merge(v);var t=l([n,r]),e=k&&t,u=v.length;(e||u)&&(o.polygonStart(),e&&(o.lineStart(),c(null,null,1,o),o.lineEnd()),u&&Lt(v,i,t,c,o),o.polygonEnd()),v=d=m=null}};return C}}function Vt(n){var t=0,e=ja/3,r=oe(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*ja/180,e=n[1]*ja/180):[t/ja*180,e/ja*180]},u}function Xt(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),a-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),a=Math.sqrt(i)/u;return e.invert=function(n,t){var e=a-t;return[Math.atan2(n,e)/u,tn((i-(n*n+e*e)*u*u)/(2*u))]},e}function $t(){function n(n,t){Oo+=u*n-r*t,r=n,u=t}var t,e,r,u;Xo.point=function(i,a){Xo.point=n,t=r=i,e=u=a},Xo.lineEnd=function(){n(t,e)}}function Bt(n,t){Io>n&&(Io=n),n>Zo&&(Zo=n),Yo>t&&(Yo=t),t>Vo&&(Vo=t)}function Wt(){function n(n,t){a.push("M",n,",",t,i)}function t(n,t){a.push("M",n,",",t),o.point=e}function e(n,t){a.push("L",n,",",t)}function r(){o.point=n}function u(){a.push("Z")}var i=Jt(4.5),a=[],o={point:n,lineStart:function(){o.point=t},lineEnd:r,polygonStart:function(){o.lineEnd=u},polygonEnd:function(){o.lineEnd=r,o.point=n},pointRadius:function(n){return i=Jt(n),o},result:function(){if(a.length){var n=a.join("");return a=[],n}}};return o}function Jt(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Gt(n,t){Ao+=n,Co+=t,++zo}function Kt(){function n(n,r){var u=n-t,i=r-e,a=Math.sqrt(u*u+i*i);Lo+=a*(t+n)/2,qo+=a*(e+r)/2,To+=a,Gt(t=n,e=r)}var t,e;Bo.point=function(r,u){Bo.point=n,Gt(t=r,e=u)}}function Qt(){Bo.point=Gt}function ne(){function n(n,t){var e=n-r,i=t-u,a=Math.sqrt(e*e+i*i);Lo+=a*(r+n)/2,qo+=a*(u+t)/2,To+=a,a=u*n-r*t,Ro+=a*(r+n),Do+=a*(u+t),Po+=3*a,Gt(r=n,u=t)}var t,e,r,u;Bo.point=function(i,a){Bo.point=n,Gt(t=r=i,e=u=a)},Bo.lineEnd=function(){n(t,e)}}function te(n){function t(t,e){n.moveTo(t+a,e),n.arc(t,e,a,0,Ua)}function e(t,e){n.moveTo(t,e),o.point=r}function r(t,e){n.lineTo(t,e)}function u(){o.point=t}function i(){n.closePath()}var a=4.5,o={point:t,lineStart:function(){o.point=e},lineEnd:u,polygonStart:function(){o.lineEnd=i},polygonEnd:function(){o.lineEnd=u,o.point=t},pointRadius:function(n){return a=n,o},result:b};return o}function ee(n){function t(n){return(o?r:e)(n)}function e(t){return ie(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=NaN,S.point=i,t.lineStart()}function i(e,r){var i=dt([e,r]),a=n(e,r);u(M,x,y,b,_,w,M=a[0],x=a[1],y=e,b=i[0],_=i[1],w=i[2],o,t),t.point(M,x)}function a(){S.point=e,t.lineEnd()}function l(){r(),S.point=c,S.lineEnd=s}function c(n,t){ -i(f=n,h=t),g=M,p=x,v=b,d=_,m=w,S.point=i}function s(){u(M,x,y,b,_,w,g,p,f,v,d,m,o,t),S.lineEnd=a,a()}var f,h,g,p,v,d,m,y,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:a,polygonStart:function(){t.polygonStart(),S.lineStart=l},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,o,l,c,s,f,h,g,p,v,d,m){var y=s-t,M=f-e,x=y*y+M*M;if(x>4*i&&d--){var b=o+g,_=l+p,w=c+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),N=Ma(Ma(w)-1)i||Ma((y*z+M*L)/x-.5)>.3||a>o*g+l*p+c*v)&&(u(t,e,r,o,l,c,A,C,N,b/=S,_/=S,w,d,m),m.point(A,C),u(A,C,N,b,_,w,s,f,h,g,p,v,d,m))}}var i=.5,a=Math.cos(30*Oa),o=16;return t.precision=function(n){return arguments.length?(o=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function re(n){var t=ee(function(t,e){return n([t*Ia,e*Ia])});return function(n){return le(t(n))}}function ue(n){this.stream=n}function ie(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function ae(n){return oe(function(){return n})()}function oe(n){function t(n){return n=o(n[0]*Oa,n[1]*Oa),[n[0]*h+l,c-n[1]*h]}function e(n){return n=o.invert((n[0]-l)/h,(c-n[1])/h),n&&[n[0]*Ia,n[1]*Ia]}function r(){o=Ct(a=fe(m,M,x),i);var n=i(v,d);return l=g-n[0]*h,c=p+n[1]*h,u()}function u(){return s&&(s.valid=!1,s=null),t}var i,a,o,l,c,s,f=ee(function(n,t){return n=i(n,t),[n[0]*h+l,c-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,M=0,x=0,b=Uo,_=y,w=null,S=null;return t.stream=function(n){return s&&(s.valid=!1),s=le(b(a,f(_(n)))),s.valid=!0,s},t.clipAngle=function(n){return arguments.length?(b=null==n?(w=n,Uo):It((w=+n)*Oa),u()):w},t.clipExtent=function(n){return arguments.length?(S=n,_=n?Zt(n[0][0],n[0][1],n[1][0],n[1][1]):y,u()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*Oa,d=n[1]%360*Oa,r()):[v*Ia,d*Ia]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Oa,M=n[1]%360*Oa,x=n.length>2?n[2]%360*Oa:0,r()):[m*Ia,M*Ia,x*Ia]},oa.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function le(n){return ie(n,function(t,e){n.point(t*Oa,e*Oa)})}function ce(n,t){return[n,t]}function se(n,t){return[n>ja?n-Ua:-ja>n?n+Ua:n,t]}function fe(n,t,e){return n?t||e?Ct(ge(n),pe(t,e)):ge(n):t||e?pe(t,e):se}function he(n){return function(t,e){return t+=n,[t>ja?t-Ua:-ja>t?t+Ua:t,e]}}function ge(n){var t=he(n);return t.invert=he(-n),t}function pe(n,t){function e(n,t){var e=Math.cos(t),o=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),s=c*r+o*u;return[Math.atan2(l*i-s*a,o*r-c*u),tn(s*i+l*a)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),a=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),o=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),s=c*i-l*a;return[Math.atan2(l*i+c*a,o*r+s*u),tn(s*r-o*u)]},e}function ve(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,a,o){var l=a*t;null!=u?(u=de(e,u),i=de(e,i),(a>0?i>u:u>i)&&(u+=a*Ua)):(u=n+a*Ua,i=n-.5*l);for(var c,s=u;a>0?s>i:i>s;s-=l)o.point((c=_t([e,-r*Math.cos(s),-r*Math.sin(s)]))[0],c[1])}}function de(n,t){var e=dt(t);e[0]-=n,bt(e);var r=nn(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Da)%(2*Math.PI)}function me(n,t,e){var r=oa.range(n,t-Da,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function ye(n,t,e){var r=oa.range(n,t-Da,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function Me(n){return n.source}function xe(n){return n.target}function be(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),a=Math.cos(r),o=Math.sin(r),l=u*Math.cos(n),c=u*Math.sin(n),s=a*Math.cos(e),f=a*Math.sin(e),h=2*Math.asin(Math.sqrt(an(r-t)+u*a*an(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*l+t*s,u=e*c+t*f,a=e*i+t*o;return[Math.atan2(u,r)*Ia,Math.atan2(a,Math.sqrt(r*r+u*u))*Ia]}:function(){return[n*Ia,t*Ia]};return p.distance=h,p}function _e(){function n(n,u){var i=Math.sin(u*=Oa),a=Math.cos(u),o=Ma((n*=Oa)-t),l=Math.cos(o);Wo+=Math.atan2(Math.sqrt((o=a*Math.sin(o))*o+(o=r*i-e*a*l)*o),e*i+r*a*l),t=n,e=i,r=a}var t,e,r;Jo.point=function(u,i){t=u*Oa,e=Math.sin(i*=Oa),r=Math.cos(i),Jo.point=n},Jo.lineEnd=function(){Jo.point=Jo.lineEnd=b}}function we(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),a=Math.cos(u);return[Math.atan2(n*i,r*a),Math.asin(r&&e*i/r)]},e}function Se(n,t){function e(n,t){a>0?-Ha+Da>t&&(t=-Ha+Da):t>Ha-Da&&(t=Ha-Da);var e=a/Math.pow(u(t),i);return[e*Math.sin(i*n),a-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(ja/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),a=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=a-t,r=K(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(a/r,1/i))-Ha]},e):Ne}function ke(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return Ma(u)u;u++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function qe(n,t){return n[0]-t[0]||n[1]-t[1]}function Te(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Re(n,t,e,r){var u=n[0],i=e[0],a=t[0]-u,o=r[0]-i,l=n[1],c=e[1],s=t[1]-l,f=r[1]-c,h=(o*(l-c)-f*(u-i))/(f*a-o*s);return[u+h*a,l+h*s]}function De(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Pe(){rr(this),this.edge=this.site=this.circle=null}function je(n){var t=ll.pop()||new Pe;return t.site=n,t}function Ue(n){Be(n),il.remove(n),ll.push(n),rr(n)}function Fe(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,a=n.N,o=[n];Ue(n);for(var l=i;l.circle&&Ma(e-l.circle.x)s;++s)c=o[s],l=o[s-1],nr(c.edge,l.site,c.site,u);l=o[0],c=o[f-1],c.edge=Ke(l.site,c.site,null,u),$e(l),$e(c)}function He(n){for(var t,e,r,u,i=n.x,a=n.y,o=il._;o;)if(r=Oe(o,a)-i,r>Da)o=o.L;else{if(u=i-Ie(o,a),!(u>Da)){r>-Da?(t=o.P,e=o):u>-Da?(t=o,e=o.N):t=e=o;break}if(!o.R){t=o;break}o=o.R}var l=je(n);if(il.insert(t,l),t||e){if(t===e)return Be(t),e=je(t.site),il.insert(l,e),l.edge=e.edge=Ke(t.site,l.site),$e(t),void $e(e);if(!e)return void(l.edge=Ke(t.site,l.site));Be(t),Be(e);var c=t.site,s=c.x,f=c.y,h=n.x-s,g=n.y-f,p=e.site,v=p.x-s,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,M=v*v+d*d,x={x:(d*y-g*M)/m+s,y:(h*M-v*y)/m+f};nr(e.edge,c,p,x),l.edge=Ke(c,n,null,x),e.edge=Ke(n,p,null,x),$e(t),$e(e)}}function Oe(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var a=n.P;if(!a)return-(1/0);e=a.site;var o=e.x,l=e.y,c=l-t;if(!c)return o;var s=o-r,f=1/i-1/c,h=s/c;return f?(-h+Math.sqrt(h*h-2*f*(s*s/(-2*c)-l+c/2+u-i/2)))/f+r:(r+o)/2}function Ie(n,t){var e=n.N;if(e)return Oe(e,t);var r=n.site;return r.y===t?r.x:1/0}function Ye(n){this.site=n,this.edges=[]}function Ze(n){for(var t,e,r,u,i,a,o,l,c,s,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=ul,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(o=i.edges,l=o.length,a=0;l>a;)s=o[a].end(),r=s.x,u=s.y,c=o[++a%l].start(),t=c.x,e=c.y,(Ma(r-t)>Da||Ma(u-e)>Da)&&(o.splice(a,0,new tr(Qe(i.site,s,Ma(r-f)Da?{x:f,y:Ma(t-f)Da?{x:Ma(e-p)Da?{x:h,y:Ma(t-h)Da?{x:Ma(e-g)=-Pa)){var g=l*l+c*c,p=s*s+f*f,v=(f*g-c*p)/h,d=(l*p-s*g)/h,f=d+o,m=cl.pop()||new Xe;m.arc=n,m.site=u,m.x=v+a,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,M=ol._;M;)if(m.yd||d>=o)return;if(h>p){if(i){if(i.y>=c)return}else i={x:d,y:l};e={x:d,y:c}}else{if(i){if(i.yr||r>1)if(h>p){if(i){if(i.y>=c)return}else i={x:(l-u)/r,y:l};e={x:(c-u)/r,y:c}}else{if(i){if(i.yg){if(i){if(i.x>=o)return}else i={x:a,y:r*a+u};e={x:o,y:r*o+u}}else{if(i){if(i.xi||f>a||r>h||u>g)){if(p=n.point){var p,v=t-n.x,d=e-n.y,m=v*v+d*d;if(l>m){var y=Math.sqrt(l=m);r=t-y,u=e-y,i=t+y,a=e+y,o=p}}for(var M=n.nodes,x=.5*(s+h),b=.5*(f+g),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:c(n,s,f,x,b);break;case 1:c(n,x,f,h,b);break;case 2:c(n,s,b,x,g);break;case 3:c(n,x,b,h,g)}}}(n,r,u,i,a),o}function vr(n,t){n=oa.rgb(n),t=oa.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,a=t.g-r,o=t.b-u;return function(n){return"#"+bn(Math.round(e+i*n))+bn(Math.round(r+a*n))+bn(Math.round(u+o*n))}}function dr(n,t){var e,r={},u={};for(e in n)e in t?r[e]=Mr(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function mr(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function yr(n,t){var e,r,u,i=fl.lastIndex=hl.lastIndex=0,a=-1,o=[],l=[];for(n+="",t+="";(e=fl.exec(n))&&(r=hl.exec(t));)(u=r.index)>i&&(u=t.slice(i,u),o[a]?o[a]+=u:o[++a]=u),(e=e[0])===(r=r[0])?o[a]?o[a]+=r:o[++a]=r:(o[++a]=null,l.push({i:a,x:mr(e,r)})),i=hl.lastIndex;return ir;++r)o[(e=l[r]).i]=e.x(n);return o.join("")})}function Mr(n,t){for(var e,r=oa.interpolators.length;--r>=0&&!(e=oa.interpolators[r](n,t)););return e}function xr(n,t){var e,r=[],u=[],i=n.length,a=t.length,o=Math.min(n.length,t.length);for(e=0;o>e;++e)r.push(Mr(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;a>e;++e)u[e]=t[e];return function(n){for(e=0;o>e;++e)u[e]=r[e](n);return u}}function br(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function _r(n){return function(t){return 1-n(1-t)}}function wr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function Sr(n){return n*n}function kr(n){return n*n*n}function Nr(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Er(n){return function(t){return Math.pow(t,n)}}function Ar(n){return 1-Math.cos(n*Ha)}function Cr(n){return Math.pow(2,10*(n-1))}function zr(n){return 1-Math.sqrt(1-n*n)}function Lr(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Ua*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Ua/t)}}function qr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Tr(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Rr(n,t){n=oa.hcl(n),t=oa.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,a=t.c-r,o=t.l-u;return isNaN(a)&&(a=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return fn(e+i*n,r+a*n,u+o*n)+""}}function Dr(n,t){n=oa.hsl(n),t=oa.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,a=t.s-r,o=t.l-u;return isNaN(a)&&(a=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return cn(e+i*n,r+a*n,u+o*n)+""}}function Pr(n,t){n=oa.lab(n),t=oa.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,a=t.a-r,o=t.b-u;return function(n){return gn(e+i*n,r+a*n,u+o*n)+""}}function jr(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Ur(n){var t=[n.a,n.b],e=[n.c,n.d],r=Hr(t),u=Fr(t,e),i=Hr(Or(e,t,-u))||0;t[0]*e[1]180?t+=360:t-n>180&&(n+=360),r.push({i:e.push(Ir(e)+"rotate(",null,")")-2,x:mr(n,t)})):t&&e.push(Ir(e)+"rotate("+t+")")}function Vr(n,t,e,r){n!==t?r.push({i:e.push(Ir(e)+"skewX(",null,")")-2,x:mr(n,t)}):t&&e.push(Ir(e)+"skewX("+t+")")}function Xr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var u=e.push(Ir(e)+"scale(",null,",",null,")");r.push({i:u-4,x:mr(n[0],t[0])},{i:u-2,x:mr(n[1],t[1])})}else(1!==t[0]||1!==t[1])&&e.push(Ir(e)+"scale("+t+")")}function $r(n,t){var e=[],r=[];return n=oa.transform(n),t=oa.transform(t),Yr(n.translate,t.translate,e,r),Zr(n.rotate,t.rotate,e,r),Vr(n.skew,t.skew,e,r),Xr(n.scale,t.scale,e,r),n=t=null,function(n){for(var t,u=-1,i=r.length;++u=0;)e.push(u[r])}function au(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(i=n.children)&&(u=i.length))for(var u,i,a=-1;++ae;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function mu(n){return n.reduce(yu,0)}function yu(n,t){return n+t[1]}function Mu(n,t){return xu(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function xu(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function bu(n){return[oa.min(n),oa.max(n)]}function _u(n,t){return n.value-t.value}function wu(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function Su(n,t){n._pack_next=t,t._pack_prev=n}function ku(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function Nu(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(c=e.length)){var e,r,u,i,a,o,l,c,s=1/0,f=-(1/0),h=1/0,g=-(1/0);if(e.forEach(Eu),r=e[0],r.x=-r.r,r.y=0,t(r),c>1&&(u=e[1],u.x=u.r,u.y=0,t(u),c>2))for(i=e[2],zu(r,u,i),t(i),wu(r,i),r._pack_prev=i,wu(i,u),u=r._pack_next,a=3;c>a;a++){zu(r,u,i=e[a]);var p=0,v=1,d=1;for(o=u._pack_next;o!==u;o=o._pack_next,v++)if(ku(o,i)){p=1;break}if(1==p)for(l=r._pack_prev;l!==o._pack_prev&&!ku(l,i);l=l._pack_prev,d++);p?(d>v||v==d&&u.ra;a++)i=e[a],i.x-=m,i.y-=y,M=Math.max(M,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=M,e.forEach(Au)}}function Eu(n){n._pack_next=n._pack_prev=n}function Au(n){delete n._pack_next,delete n._pack_prev}function Cu(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,a=u.length;++i=0;)t=u[i],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function Pu(n,t,e){return n.a.parent===t.parent?n.a:e}function ju(n){return 1+oa.max(n,function(n){return n.y})}function Uu(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Fu(n){var t=n.children;return t&&t.length?Fu(t[0]):n}function Hu(n){var t,e=n.children;return e&&(t=e.length)?Hu(e[t-1]):n}function Ou(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Iu(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function Yu(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Zu(n){return n.rangeExtent?n.rangeExtent():Yu(n.range())}function Vu(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Xu(n,t){var e,r=0,u=n.length-1,i=n[r],a=n[u];return i>a&&(e=r,r=u,u=e,e=i,i=a,a=e),n[r]=t.floor(i),n[u]=t.ceil(a),n}function $u(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:wl}function Bu(n,t,e,r){var u=[],i=[],a=0,o=Math.min(n.length,t.length)-1;for(n[o]2?Bu:Vu,l=r?Wr:Br;return a=u(n,t,l,e),o=u(t,n,l,Mr),i}function i(n){return a(n)}var a,o;return i.invert=function(n){return o(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(jr)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return Qu(n,t)},i.tickFormat=function(t,e){return ni(n,t,e)},i.nice=function(t){return Gu(n,t),u()},i.copy=function(){return Wu(n,t,e,r)},u()}function Ju(n,t){return oa.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Gu(n,t){return Xu(n,$u(Ku(n,t)[2])),Xu(n,$u(Ku(n,t)[2])),n}function Ku(n,t){null==t&&(t=10);var e=Yu(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function Qu(n,t){return oa.range.apply(oa,Ku(n,t))}function ni(n,t,e){var r=Ku(n,t);if(e){var u=so.exec(e);if(u.shift(),"s"===u[8]){var i=oa.formatPrefix(Math.max(Ma(r[0]),Ma(r[1])));return u[7]||(u[7]="."+ti(i.scale(r[2]))),u[8]="f",e=oa.format(u.join("")),function(n){return e(i.scale(n))+i.symbol}}u[7]||(u[7]="."+ei(u[8],r)),e=u.join("")}else e=",."+ti(r[2])+"f";return oa.format(e)}function ti(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function ei(n,t){var e=ti(t[2]);return n in Sl?Math.abs(e-ti(Math.max(Ma(t[0]),Ma(t[1]))))+ +("e"!==n):e-2*("%"===n)}function ri(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function a(t){return n(u(t))}return a.invert=function(t){return i(n.invert(t))},a.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),a):r},a.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),a):t},a.nice=function(){var t=Xu(r.map(u),e?Math:Nl);return n.domain(t),r=t.map(i),a},a.ticks=function(){var n=Yu(r),a=[],o=n[0],l=n[1],c=Math.floor(u(o)),s=Math.ceil(u(l)),f=t%1?2:t;if(isFinite(s-c)){if(e){for(;s>c;c++)for(var h=1;f>h;h++)a.push(i(c)*h);a.push(i(c))}else for(a.push(i(c));c++0;h--)a.push(i(c)*h);for(c=0;a[c]l;s--);a=a.slice(c,s)}return a},a.tickFormat=function(n,e){if(!arguments.length)return kl;arguments.length<2?e=kl:"function"!=typeof e&&(e=oa.format(e));var r=Math.max(1,t*n/a.ticks().length);return function(n){var a=n/i(Math.round(u(n)));return t-.5>a*t&&(a*=t),r>=a?e(n):""}},a.copy=function(){return ri(n.copy(),t,e,r)},Ju(a,n)}function ui(n,t,e){function r(t){return n(u(t))}var u=ii(t),i=ii(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return Qu(e,n)},r.tickFormat=function(n,t){return ni(e,n,t)},r.nice=function(n){return r.domain(Gu(e,n))},r.exponent=function(a){return arguments.length?(u=ii(t=a),i=ii(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return ui(n.copy(),t,e)},Ju(r,n)}function ii(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function ai(n,t){function e(e){return i[((u.get(e)||("range"===t.t?u.set(e,n.push(e)):NaN))-1)%i.length]}function r(t,e){return oa.range(n.length).map(function(n){return t+e*n})}var u,i,a;return e.domain=function(r){if(!arguments.length)return n;n=[],u=new c;for(var i,a=-1,o=r.length;++ae?[NaN,NaN]:[e>0?o[e-1]:n[0],et?NaN:t/i+n,[t,t+1/i]},r.copy=function(){return li(n,t,e)},u()}function ci(n,t){function e(e){return e>=e?t[oa.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return ci(n,t)},e}function si(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Qu(n,t)},t.tickFormat=function(t,e){return ni(n,t,e)},t.copy=function(){return si(n)},t}function fi(){return 0}function hi(n){return n.innerRadius}function gi(n){return n.outerRadius}function pi(n){return n.startAngle}function vi(n){return n.endAngle}function di(n){return n&&n.padAngle}function mi(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function yi(n,t,e,r,u){var i=n[0]-t[0],a=n[1]-t[1],o=(u?r:-r)/Math.sqrt(i*i+a*a),l=o*a,c=-o*i,s=n[0]+l,f=n[1]+c,h=t[0]+l,g=t[1]+c,p=(s+h)/2,v=(f+g)/2,d=h-s,m=g-f,y=d*d+m*m,M=e-r,x=s*g-h*f,b=(0>m?-1:1)*Math.sqrt(Math.max(0,M*M*y-x*x)),_=(x*m-d*b)/y,w=(-x*d-m*b)/y,S=(x*m+d*b)/y,k=(-x*d+m*b)/y,N=_-p,E=w-v,A=S-p,C=k-v;return N*N+E*E>A*A+C*C&&(_=S,w=k),[[_-l,w-c],[_*e/M,w*e/M]]}function Mi(n){function t(t){function a(){c.push("M",i(n(s),o))}for(var l,c=[],s=[],f=-1,h=t.length,g=En(e),p=En(r);++f1?n.join("L"):n+"Z"}function bi(n){return n.join("L")+"Z"}function _i(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t1&&u.push("H",r[0]),u.join("")}function wi(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t1){o=t[1],i=n[l],l++,r+="C"+(u[0]+a[0])+","+(u[1]+a[1])+","+(i[0]-o[0])+","+(i[1]-o[1])+","+i[0]+","+i[1];for(var c=2;c9&&(u=3*t/Math.sqrt(u),a[o]=u*e,a[o+1]=u*r));for(o=-1;++o<=l;)u=(n[Math.min(l,o+1)][0]-n[Math.max(0,o-1)][0])/(6*(1+a[o]*a[o])),i.push([u||0,a[o]*u||0]);return i}function Fi(n){return n.length<3?xi(n):n[0]+Ai(n,Ui(n))}function Hi(n){for(var t,e,r,u=-1,i=n.length;++u=t?a(n-t):void(s.c=a)}function a(e){var u=p.active,i=p[u];i&&(i.timer.c=null,i.timer.t=NaN,--p.count,delete p[u],i.event&&i.event.interrupt.call(n,n.__data__,i.index));for(var a in p)if(r>+a){var c=p[a];c.timer.c=null,c.timer.t=NaN,--p.count,delete p[a]}s.c=o,qn(function(){return s.c&&o(e||1)&&(s.c=null,s.t=NaN),1},0,l),p.active=r,v.event&&v.event.start.call(n,n.__data__,t),g=[],v.tween.forEach(function(e,r){(r=r.call(n,n.__data__,t))&&g.push(r)}),h=v.ease,f=v.duration}function o(u){for(var i=u/f,a=h(i),o=g.length;o>0;)g[--o].call(n,a);return i>=1?(v.event&&v.event.end.call(n,n.__data__,t),--p.count?delete p[r]:delete n[e],1):void 0}var l,s,f,h,g,p=n[e]||(n[e]={active:0,count:0}),v=p[r];v||(l=u.time,s=qn(i,0,l),v=p[r]={tween:new c,time:l,timer:s,delay:u.delay,duration:u.duration,ease:u.ease,index:t},u=null,++p.count)}function na(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function ta(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function ea(n){return n.toISOString()}function ra(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=oa.bisect(Gl,u);return i==Gl.length?[t.year,Ku(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/Gl[i-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=ua(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=ua(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Yu(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],ua(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return ra(n.copy(),t,e)},Ju(r,n)}function ua(n){return new Date(n)}function ia(n){return JSON.parse(n.responseText)}function aa(n){var t=sa.createRange();return t.selectNode(sa.body),t.createContextualFragment(n.responseText)}var oa={version:"3.5.12"},la=[].slice,ca=function(n){return la.call(n)},sa=this.document;if(sa)try{ca(sa.documentElement.childNodes)[0].nodeType}catch(fa){ca=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),sa)try{sa.createElement("DIV").style.setProperty("opacity",0,"")}catch(ha){var ga=this.Element.prototype,pa=ga.setAttribute,va=ga.setAttributeNS,da=this.CSSStyleDeclaration.prototype,ma=da.setProperty;ga.setAttribute=function(n,t){pa.call(this,n,t+"")},ga.setAttributeNS=function(n,t,e){va.call(this,n,t,e+"")},da.setProperty=function(n,t,e){ma.call(this,n,t+"",e)}}oa.ascending=e,oa.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:NaN},oa.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=r){e=r;break}for(;++ur&&(e=r)}else{for(;++u=r){e=r;break}for(;++ur&&(e=r)}return e},oa.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=r){e=r;break}for(;++ue&&(e=r)}else{for(;++u=r){e=r;break}for(;++ue&&(e=r)}return e},oa.extent=function(n,t){var e,r,u,i=-1,a=n.length;if(1===arguments.length){for(;++i=r){e=u=r;break}for(;++ir&&(e=r),r>u&&(u=r))}else{for(;++i=r){e=u=r;break}for(;++ir&&(e=r),r>u&&(u=r))}return[e,u]},oa.sum=function(n,t){var e,r=0,i=n.length,a=-1;if(1===arguments.length)for(;++a1?l/(s-1):void 0},oa.deviation=function(){var n=oa.variance.apply(this,arguments);return n?Math.sqrt(n):n};var ya=i(e);oa.bisectLeft=ya.left,oa.bisect=oa.bisectRight=ya.right,oa.bisector=function(n){return i(1===n.length?function(t,r){return e(n(t),r)}:n)},oa.shuffle=function(n,t,e){(i=arguments.length)<3&&(e=n.length,2>i&&(t=0));for(var r,u,i=e-t;i;)u=Math.random()*i--|0,r=n[i+t],n[i+t]=n[u+t],n[u+t]=r;return n},oa.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},oa.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},oa.zip=function(){if(!(r=arguments.length))return[];for(var n=-1,t=oa.min(arguments,a),e=new Array(t);++n=0;)for(r=n[u],t=r.length;--t>=0;)e[--a]=r[t];return e};var Ma=Math.abs;oa.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e===1/0)throw new Error("infinite range");var r,u=[],i=o(Ma(e)),a=-1;if(n*=i,t*=i,e*=i,0>e)for(;(r=n+e*++a)>t;)u.push(r/i);else for(;(r=n+e*++a)=i.length)return r?r.call(u,a):e?a.sort(e):a;for(var l,s,f,h,g=-1,p=a.length,v=i[o++],d=new c;++g=i.length)return n;var r=[],u=a[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,u={},i=[],a=[];return u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return t(n(oa.map,e,0),0)},u.key=function(n){return i.push(n),u},u.sortKeys=function(n){return a[i.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return r=n,u},u},oa.set=function(n){var t=new m;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},l(m,{has:h,add:function(n){return this._[s(n+="")]=!0,n},remove:g,values:p,size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,f(t))}}),oa.behavior={},oa.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},oa.event=null,oa.requote=function(n){return n.replace(wa,"\\$&")};var wa=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,Sa={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},ka=function(n,t){return t.querySelector(n)},Na=function(n,t){return t.querySelectorAll(n)},Ea=function(n,t){var e=n.matches||n[x(n,"matchesSelector")];return(Ea=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(ka=function(n,t){return Sizzle(n,t)[0]||null},Na=Sizzle,Ea=Sizzle.matchesSelector),oa.selection=function(){return oa.select(sa.documentElement)};var Aa=oa.selection.prototype=[];Aa.select=function(n){var t,e,r,u,i=[];n=A(n);for(var a=-1,o=this.length;++a=0&&"xmlns"!==(e=n.slice(0,t))&&(n=n.slice(t+1)),Ca.hasOwnProperty(e)?{space:Ca[e],local:n}:n}},Aa.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=oa.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},Aa.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=T(n)).length,u=-1;if(t=e.classList){for(;++uu){if("string"!=typeof n){2>u&&(e="");for(r in n)this.each(P(r,n[r],e));return this}if(2>u){var i=this.node();return t(i).getComputedStyle(i,null).getPropertyValue(n)}r=""}return this.each(P(n,e,r))},Aa.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(j(t,n[t]));return this}return this.each(j(n,t))},Aa.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},Aa.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},Aa.append=function(n){return n=U(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},Aa.insert=function(n,t){return n=U(n),t=A(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},Aa.remove=function(){return this.each(F)},Aa.data=function(n,t){function e(n,e){var r,u,i,a=n.length,f=e.length,h=Math.min(a,f),g=new Array(f),p=new Array(f),v=new Array(a);if(t){var d,m=new c,y=new Array(a);for(r=-1;++rr;++r)p[r]=H(e[r]);for(;a>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,o.push(p),l.push(g),s.push(v)}var r,u,i=-1,a=this.length;if(!arguments.length){for(n=new Array(a=(r=this[0]).length);++ii;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var o=0,l=e.length;l>o;o++)(r=e[o])&&n.call(r,r.__data__,o,i)&&t.push(r)}return E(u)},Aa.order=function(){for(var n=-1,t=this.length;++n=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},Aa.sort=function(n){n=I.apply(this,arguments);for(var t=-1,e=this.length;++tn;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},Aa.size=function(){var n=0;return Y(this,function(){++n}),n};var za=[];oa.selection.enter=Z,oa.selection.enter.prototype=za,za.append=Aa.append,za.empty=Aa.empty,za.node=Aa.node,za.call=Aa.call,za.size=Aa.size,za.select=function(n){for(var t,e,r,u,i,a=[],o=-1,l=this.length;++or){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(X(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(X(n,t,e))};var La=oa.map({mouseenter:"mouseover",mouseleave:"mouseout"});sa&&La.forEach(function(n){"on"+n in sa&&La.remove(n)});var qa,Ta=0;oa.mouse=function(n){return J(n,k())};var Ra=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;oa.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=k().changedTouches),t)for(var r,u=0,i=t.length;i>u;++u)if((r=t[u]).identifier===e)return J(n,r)},oa.behavior.drag=function(){function n(){this.on("mousedown.drag",i).on("touchstart.drag",a)}function e(n,t,e,i,a){return function(){function o(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],p|=n|e,M=r,g({type:"drag",x:r[0]+c[0],y:r[1]+c[1],dx:n,dy:e}))}function l(){t(h,v)&&(m.on(i+d,null).on(a+d,null),y(p),g({type:"dragend"}))}var c,s=this,f=oa.event.target,h=s.parentNode,g=r.of(s,arguments),p=0,v=n(),d=".drag"+(null==v?"":"-"+v),m=oa.select(e(f)).on(i+d,o).on(a+d,l),y=W(f),M=t(h,v);u?(c=u.apply(s,arguments),c=[c.x-M[0],c.y-M[1]]):c=[0,0],g({type:"dragstart"})}}var r=N(n,"drag","dragstart","dragend"),u=null,i=e(b,oa.mouse,t,"mousemove","mouseup"),a=e(G,oa.touch,y,"touchmove","touchend");return n.origin=function(t){return arguments.length?(u=t,n):u},oa.rebind(n,r,"on")},oa.touches=function(n,t){return arguments.length<2&&(t=k().touches),t?ca(t).map(function(t){var e=J(n,t);return e.identifier=t.identifier,e}):[]};var Da=1e-6,Pa=Da*Da,ja=Math.PI,Ua=2*ja,Fa=Ua-Da,Ha=ja/2,Oa=ja/180,Ia=180/ja,Ya=Math.SQRT2,Za=2,Va=4;oa.interpolateZoom=function(n,t){var e,r,u=n[0],i=n[1],a=n[2],o=t[0],l=t[1],c=t[2],s=o-u,f=l-i,h=s*s+f*f;if(Pa>h)r=Math.log(c/a)/Ya,e=function(n){return[u+n*s,i+n*f,a*Math.exp(Ya*n*r)]};else{var g=Math.sqrt(h),p=(c*c-a*a+Va*h)/(2*a*Za*g),v=(c*c-a*a-Va*h)/(2*c*Za*g),d=Math.log(Math.sqrt(p*p+1)-p),m=Math.log(Math.sqrt(v*v+1)-v);r=(m-d)/Ya,e=function(n){var t=n*r,e=rn(d),o=a/(Za*g)*(e*un(Ya*t+d)-en(d));return[u+o*s,i+o*f,a*e/rn(Ya*t+d)]}}return e.duration=1e3*r,e},oa.behavior.zoom=function(){function n(n){n.on(L,f).on($a+".zoom",g).on("dblclick.zoom",p).on(R,h)}function e(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function r(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function u(n){k.k=Math.max(A[0],Math.min(A[1],n))}function i(n,t){t=r(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function a(t,e,r,a){t.__chart__={x:k.x,y:k.y,k:k.k},u(Math.pow(2,a)),i(d=e,r),t=oa.select(t),C>0&&(t=t.transition().duration(C)),t.call(n.event)}function o(){b&&b.domain(x.range().map(function(n){return(n-k.x)/k.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function l(n){z++||n({type:"zoomstart"})}function c(n){o(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function s(n){--z||(n({type:"zoomend"}),d=null)}function f(){function n(){o=1,i(oa.mouse(u),h),c(a)}function r(){f.on(q,null).on(T,null),g(o),s(a)}var u=this,a=D.of(u,arguments),o=0,f=oa.select(t(u)).on(q,n).on(T,r),h=e(oa.mouse(u)),g=W(u);Ol.call(u),l(a)}function h(){function n(){var n=oa.touches(p);return g=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=e(n))}),n}function t(){var t=oa.event.target;oa.select(t).on(x,r).on(b,o),_.push(t);for(var e=oa.event.changedTouches,u=0,i=e.length;i>u;++u)d[e[u].identifier]=null;var l=n(),c=Date.now();if(1===l.length){if(500>c-M){var s=l[0];a(p,s,d[s.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),S()}M=c}else if(l.length>1){var s=l[0],f=l[1],h=s[0]-f[0],g=s[1]-f[1];m=h*h+g*g}}function r(){var n,t,e,r,a=oa.touches(p);Ol.call(p);for(var o=0,l=a.length;l>o;++o,r=null)if(e=a[o],r=d[e.identifier]){if(t)break;n=e,t=r}if(r){var s=(s=e[0]-n[0])*s+(s=e[1]-n[1])*s,f=m&&Math.sqrt(s/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+r[0])/2,(t[1]+r[1])/2],u(f*g)}M=null,i(n,t),c(v)}function o(){if(oa.event.touches.length){for(var t=oa.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var u in d)return void n()}oa.selectAll(_).on(y,null),w.on(L,f).on(R,h),N(),s(v)}var g,p=this,v=D.of(p,arguments),d={},m=0,y=".zoom-"+oa.event.changedTouches[0].identifier,x="touchmove"+y,b="touchend"+y,_=[],w=oa.select(p),N=W(p);t(),l(v),w.on(L,null).on(R,t)}function g(){var n=D.of(this,arguments);y?clearTimeout(y):(Ol.call(this),v=e(d=m||oa.mouse(this)),l(n)),y=setTimeout(function(){y=null,s(n)},50),S(),u(Math.pow(2,.002*Xa())*k.k),i(d,v),c(n)}function p(){var n=oa.mouse(this),t=Math.log(k.k)/Math.LN2;a(this,n,e(n),oa.event.shiftKey?Math.ceil(t)-1:Math.floor(t)+1)}var v,d,m,y,M,x,b,_,w,k={x:0,y:0,k:1},E=[960,500],A=Ba,C=250,z=0,L="mousedown.zoom",q="mousemove.zoom",T="mouseup.zoom",R="touchstart.zoom",D=N(n,"zoomstart","zoom","zoomend");return $a||($a="onwheel"in sa?(Xa=function(){return-oa.event.deltaY*(oa.event.deltaMode?120:1)},"wheel"):"onmousewheel"in sa?(Xa=function(){return oa.event.wheelDelta},"mousewheel"):(Xa=function(){return-oa.event.detail},"MozMousePixelScroll")),n.event=function(n){n.each(function(){var n=D.of(this,arguments),t=k;Fl?oa.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},l(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],u=d?d[0]:e/2,i=d?d[1]:r/2,a=oa.interpolateZoom([(u-k.x)/k.k,(i-k.y)/k.k,e/k.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=a(t),o=e/r[2];this.__chart__=k={x:u-r[0]*o,y:i-r[1]*o,k:o},c(n)}}).each("interrupt.zoom",function(){s(n)}).each("end.zoom",function(){s(n)}):(this.__chart__=k,l(n),c(n),s(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},o(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:null},u(+t),o(),n):k.k},n.scaleExtent=function(t){return arguments.length?(A=null==t?Ba:[+t[0],+t[1]],n):A},n.center=function(t){return arguments.length?(m=t&&[+t[0],+t[1]],n):m},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.duration=function(t){return arguments.length?(C=+t,n):C},n.x=function(t){return arguments.length?(b=t,x=t.copy(),k={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),k={x:0,y:0,k:1},n):w},oa.rebind(n,D,"on")};var Xa,$a,Ba=[0,1/0];oa.color=on,on.prototype.toString=function(){return this.rgb()+""},oa.hsl=ln;var Wa=ln.prototype=new on;Wa.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,this.l/n)},Wa.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,n*this.l)},Wa.rgb=function(){return cn(this.h,this.s,this.l)},oa.hcl=sn;var Ja=sn.prototype=new on;Ja.brighter=function(n){return new sn(this.h,this.c,Math.min(100,this.l+Ga*(arguments.length?n:1)))},Ja.darker=function(n){return new sn(this.h,this.c,Math.max(0,this.l-Ga*(arguments.length?n:1)))},Ja.rgb=function(){return fn(this.h,this.c,this.l).rgb()},oa.lab=hn;var Ga=18,Ka=.95047,Qa=1,no=1.08883,to=hn.prototype=new on;to.brighter=function(n){return new hn(Math.min(100,this.l+Ga*(arguments.length?n:1)),this.a,this.b)},to.darker=function(n){return new hn(Math.max(0,this.l-Ga*(arguments.length?n:1)),this.a,this.b)},to.rgb=function(){return gn(this.l,this.a,this.b)},oa.rgb=yn;var eo=yn.prototype=new on;eo.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),new yn(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new yn(u,u,u)},eo.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new yn(n*this.r,n*this.g,n*this.b)},eo.hsl=function(){return wn(this.r,this.g,this.b)},eo.toString=function(){return"#"+bn(this.r)+bn(this.g)+bn(this.b)};var ro=oa.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});ro.forEach(function(n,t){ro.set(n,Mn(t))}),oa.functor=En,oa.xhr=An(y),oa.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var a=Cn(n,t,null==e?r:u(e),i);return a.row=function(n){return arguments.length?a.response(null==(e=n)?r:u(n)):e},a}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(a).join(n)}function a(n){return o.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var o=new RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(s>=c)return a;if(u)return u=!1,i;var t=s;if(34===n.charCodeAt(t)){for(var e=t;e++s;){var r=n.charCodeAt(s++),o=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(s)&&(++s,++o);else if(r!==l)continue;return n.slice(t,s-o)}return n.slice(t)}for(var r,u,i={},a={},o=[],c=n.length,s=0,f=0;(r=e())!==a;){for(var h=[];r!==i&&r!==a;)h.push(r),r=e();t&&null==(h=t(h,f++))||o.push(h)}return o},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new m,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(a).join(n)].concat(t.map(function(t){return u.map(function(n){return a(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(i).join("\n")},e},oa.csv=oa.dsv(",","text/csv"),oa.tsv=oa.dsv(" ","text/tab-separated-values");var uo,io,ao,oo,lo=this[x(this,"requestAnimationFrame")]||function(n){setTimeout(n,17)};oa.timer=function(){qn.apply(this,arguments)},oa.timer.flush=function(){Rn(),Dn()},oa.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var co=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(jn);oa.formatPrefix=function(n,t){var e=0;return(n=+n)&&(0>n&&(n*=-1),t&&(n=oa.round(n,Pn(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),co[8+e/3]};var so=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,fo=oa.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=oa.round(n,Pn(n,t))).toFixed(Math.max(0,Math.min(20,Pn(n*(1+1e-15),t))))}}),ho=oa.time={},go=Date;Hn.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){po.setUTCDate.apply(this._,arguments)},setDay:function(){po.setUTCDay.apply(this._,arguments)},setFullYear:function(){po.setUTCFullYear.apply(this._,arguments)},setHours:function(){po.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){po.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){po.setUTCMinutes.apply(this._,arguments)},setMonth:function(){po.setUTCMonth.apply(this._,arguments)},setSeconds:function(){po.setUTCSeconds.apply(this._,arguments)},setTime:function(){po.setTime.apply(this._,arguments)}};var po=Date.prototype;ho.year=On(function(n){return n=ho.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),ho.years=ho.year.range,ho.years.utc=ho.year.utc.range,ho.day=On(function(n){var t=new go(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),ho.days=ho.day.range,ho.days.utc=ho.day.utc.range,ho.dayOfYear=function(n){var t=ho.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=ho[n]=On(function(n){return(n=ho.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=ho.year(n).getDay();return Math.floor((ho.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ho[n+"s"]=e.range,ho[n+"s"].utc=e.utc.range,ho[n+"OfYear"]=function(n){var e=ho.year(n).getDay();return Math.floor((ho.dayOfYear(n)+(e+t)%7)/7)}}),ho.week=ho.sunday,ho.weeks=ho.sunday.range,ho.weeks.utc=ho.sunday.utc.range,ho.weekOfYear=ho.sundayOfYear;var vo={"-":"",_:" ",0:"0"},mo=/^\s*\d+/,yo=/^%/;oa.locale=function(n){return{numberFormat:Un(n),timeFormat:Yn(n)}};var Mo=oa.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"], -shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});oa.format=Mo.numberFormat,oa.geo={},st.prototype={s:0,t:0,add:function(n){ft(n,this.t,xo),ft(xo.s,this.s,this),this.s?this.t+=xo.t:this.s=xo.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var xo=new st;oa.geo.stream=function(n,t){n&&bo.hasOwnProperty(n.type)?bo[n.type](n,t):ht(n,t)};var bo={Feature:function(n,t){ht(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++rn?4*ja+n:n,ko.lineStart=ko.lineEnd=ko.point=b}};oa.geo.bounds=function(){function n(n,t){M.push(x=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=dt([t*Oa,e*Oa]);if(m){var u=yt(m,r),i=[u[1],-u[0],0],a=yt(i,u);bt(a),a=_t(a);var l=t-p,c=l>0?1:-1,v=a[0]*Ia*c,d=Ma(l)>180;if(d^(v>c*p&&c*t>v)){var y=a[1]*Ia;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>c*p&&c*t>v)){var y=-a[1]*Ia;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?o(s,t)>o(s,h)&&(h=t):o(t,h)>o(s,h)&&(s=t):h>=s?(s>t&&(s=t),t>h&&(h=t)):t>p?o(s,t)>o(s,h)&&(h=t):o(t,h)>o(s,h)&&(s=t)}else n(t,e);m=r,p=t}function e(){b.point=t}function r(){x[0]=s,x[1]=h,b.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=Ma(r)>180?r+(r>0?360:-360):r}else v=n,d=e;ko.point(n,e),t(n,e)}function i(){ko.lineStart()}function a(){u(v,d),ko.lineEnd(),Ma(y)>Da&&(s=-(h=180)),x[0]=s,x[1]=h,m=null}function o(n,t){return(t-=n)<0?t+360:t}function l(n,t){return n[0]-t[0]}function c(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nSo?(s=-(h=180),f=-(g=90)):y>Da?g=90:-Da>y&&(f=-90),x[0]=s,x[1]=h}};return function(n){g=h=-(s=f=1/0),M=[],oa.geo.stream(n,b);var t=M.length;if(t){M.sort(l);for(var e,r=1,u=M[0],i=[u];t>r;++r)e=M[r],c(e[0],u)||c(e[1],u)?(o(u[0],e[1])>o(u[0],u[1])&&(u[1]=e[1]),o(e[0],u[1])>o(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var a,e,p=-(1/0),t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(a=o(u[1],e[0]))>p&&(p=a,s=e[0],h=u[1])}return M=x=null,s===1/0||f===1/0?[[NaN,NaN],[NaN,NaN]]:[[s,f],[h,g]]}}(),oa.geo.centroid=function(n){No=Eo=Ao=Co=zo=Lo=qo=To=Ro=Do=Po=0,oa.geo.stream(n,jo);var t=Ro,e=Do,r=Po,u=t*t+e*e+r*r;return Pa>u&&(t=Lo,e=qo,r=To,Da>Eo&&(t=Ao,e=Co,r=zo),u=t*t+e*e+r*r,Pa>u)?[NaN,NaN]:[Math.atan2(e,t)*Ia,tn(r/Math.sqrt(u))*Ia]};var No,Eo,Ao,Co,zo,Lo,qo,To,Ro,Do,Po,jo={sphere:b,point:St,lineStart:Nt,lineEnd:Et,polygonStart:function(){jo.lineStart=At},polygonEnd:function(){jo.lineStart=Nt}},Uo=Rt(zt,Ut,Ht,[-ja,-ja/2]),Fo=1e9;oa.geo.clipExtent=function(){var n,t,e,r,u,i,a={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(o){return arguments.length?(i=Zt(n=+o[0][0],t=+o[0][1],e=+o[1][0],r=+o[1][1]),u&&(u.valid=!1,u=null),a):[[n,t],[e,r]]}};return a.extent([[0,0],[960,500]])},(oa.geo.conicEqualArea=function(){return Vt(Xt)}).raw=Xt,oa.geo.albers=function(){return oa.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},oa.geo.albersUsa=function(){function n(n){var i=n[0],a=n[1];return t=null,e(i,a),t||(r(i,a),t)||u(i,a),t}var t,e,r,u,i=oa.geo.albers(),a=oa.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),o=oa.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?a:u>=.166&&.234>u&&r>=-.214&&-.115>r?o:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=a.stream(n),r=o.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),a.precision(t),o.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),a.scale(.35*t),o.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var c=i.scale(),s=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[s-.455*c,f-.238*c],[s+.455*c,f+.238*c]]).stream(l).point,r=a.translate([s-.307*c,f+.201*c]).clipExtent([[s-.425*c+Da,f+.12*c+Da],[s-.214*c-Da,f+.234*c-Da]]).stream(l).point,u=o.translate([s-.205*c,f+.212*c]).clipExtent([[s-.214*c+Da,f+.166*c+Da],[s-.115*c-Da,f+.234*c-Da]]).stream(l).point,n},n.scale(1070)};var Ho,Oo,Io,Yo,Zo,Vo,Xo={point:b,lineStart:b,lineEnd:b,polygonStart:function(){Oo=0,Xo.lineStart=$t},polygonEnd:function(){Xo.lineStart=Xo.lineEnd=Xo.point=b,Ho+=Ma(Oo/2)}},$o={point:Bt,lineStart:b,lineEnd:b,polygonStart:b,polygonEnd:b},Bo={point:Gt,lineStart:Kt,lineEnd:Qt,polygonStart:function(){Bo.lineStart=ne},polygonEnd:function(){Bo.point=Gt,Bo.lineStart=Kt,Bo.lineEnd=Qt}};oa.geo.path=function(){function n(n){return n&&("function"==typeof o&&i.pointRadius(+o.apply(this,arguments)),a&&a.valid||(a=u(i)),oa.geo.stream(n,a)),i.result()}function t(){return a=null,n}var e,r,u,i,a,o=4.5;return n.area=function(n){return Ho=0,oa.geo.stream(n,u(Xo)),Ho},n.centroid=function(n){return Ao=Co=zo=Lo=qo=To=Ro=Do=Po=0,oa.geo.stream(n,u(Bo)),Po?[Ro/Po,Do/Po]:To?[Lo/To,qo/To]:zo?[Ao/zo,Co/zo]:[NaN,NaN]},n.bounds=function(n){return Zo=Vo=-(Io=Yo=1/0),oa.geo.stream(n,u($o)),[[Io,Yo],[Zo,Vo]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||re(n):y,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new Wt:new te(n),"function"!=typeof o&&i.pointRadius(o),t()):r},n.pointRadius=function(t){return arguments.length?(o="function"==typeof t?t:(i.pointRadius(+t),+t),n):o},n.projection(oa.geo.albersUsa()).context(null)},oa.geo.transform=function(n){return{stream:function(t){var e=new ue(t);for(var r in n)e[r]=n[r];return e}}},ue.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},oa.geo.projection=ae,oa.geo.projectionMutator=oe,(oa.geo.equirectangular=function(){return ae(ce)}).raw=ce.invert=ce,oa.geo.rotation=function(n){function t(t){return t=n(t[0]*Oa,t[1]*Oa),t[0]*=Ia,t[1]*=Ia,t}return n=fe(n[0]%360*Oa,n[1]*Oa,n.length>2?n[2]*Oa:0),t.invert=function(t){return t=n.invert(t[0]*Oa,t[1]*Oa),t[0]*=Ia,t[1]*=Ia,t},t},se.invert=ce,oa.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=fe(-n[0]*Oa,-n[1]*Oa,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=Ia,n[1]*=Ia}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=ve((t=+r)*Oa,u*Oa),n):t},n.precision=function(r){return arguments.length?(e=ve(t*Oa,(u=+r)*Oa),n):u},n.angle(90)},oa.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Oa,u=n[1]*Oa,i=t[1]*Oa,a=Math.sin(r),o=Math.cos(r),l=Math.sin(u),c=Math.cos(u),s=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*a)*e+(e=c*s-l*f*o)*e),l*s+c*f*o)},oa.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return oa.range(Math.ceil(i/d)*d,u,d).map(h).concat(oa.range(Math.ceil(c/m)*m,l,m).map(g)).concat(oa.range(Math.ceil(r/p)*p,e,p).filter(function(n){return Ma(n%d)>Da}).map(s)).concat(oa.range(Math.ceil(o/v)*v,a,v).filter(function(n){return Ma(n%m)>Da}).map(f))}var e,r,u,i,a,o,l,c,s,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(l).slice(1),h(u).reverse().slice(1),g(c).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],c=+t[0][1],l=+t[1][1],i>u&&(t=i,i=u,u=t),c>l&&(t=c,c=l,l=t),n.precision(y)):[[i,c],[u,l]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],o=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),o>a&&(t=o,o=a,a=t),n.precision(y)):[[r,o],[e,a]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,s=me(o,a,90),f=ye(r,e,y),h=me(c,l,90),g=ye(i,u,y),n):y},n.majorExtent([[-180,-90+Da],[180,90-Da]]).minorExtent([[-180,-80-Da],[180,80+Da]])},oa.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=Me,u=xe;return n.distance=function(){return oa.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},oa.geo.interpolate=function(n,t){return be(n[0]*Oa,n[1]*Oa,t[0]*Oa,t[1]*Oa)},oa.geo.length=function(n){return Wo=0,oa.geo.stream(n,Jo),Wo};var Wo,Jo={sphere:b,point:b,lineStart:_e,lineEnd:b,polygonStart:b,polygonEnd:b},Go=we(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(oa.geo.azimuthalEqualArea=function(){return ae(Go)}).raw=Go;var Ko=we(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},y);(oa.geo.azimuthalEquidistant=function(){return ae(Ko)}).raw=Ko,(oa.geo.conicConformal=function(){return Vt(Se)}).raw=Se,(oa.geo.conicEquidistant=function(){return Vt(ke)}).raw=ke;var Qo=we(function(n){return 1/n},Math.atan);(oa.geo.gnomonic=function(){return ae(Qo)}).raw=Qo,Ne.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Ha]},(oa.geo.mercator=function(){return Ee(Ne)}).raw=Ne;var nl=we(function(){return 1},Math.asin);(oa.geo.orthographic=function(){return ae(nl)}).raw=nl;var tl=we(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(oa.geo.stereographic=function(){return ae(tl)}).raw=tl,Ae.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Ha]},(oa.geo.transverseMercator=function(){var n=Ee(Ae),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ae,oa.geom={},oa.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=En(e),i=En(r),a=n.length,o=[],l=[];for(t=0;a>t;t++)o.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(o.sort(qe),t=0;a>t;t++)l.push([o[t][0],-o[t][1]]);var c=Le(o),s=Le(l),f=s[0]===c[0],h=s[s.length-1]===c[c.length-1],g=[];for(t=c.length-1;t>=0;--t)g.push(n[o[c[t]][2]]);for(t=+f;t=r&&c.x<=i&&c.y>=u&&c.y<=a?[[r,a],[i,a],[i,u],[r,u]]:[];s.point=n[o]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Da)*Da,y:Math.round(a(n,t)/Da)*Da,i:t}})}var r=Ce,u=ze,i=r,a=u,o=sl;return n?t(n):(t.links=function(n){return or(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return or(e(n)).cells.forEach(function(e,r){for(var u,i,a=e.site,o=e.edges.sort(Ve),l=-1,c=o.length,s=o[c-1].edge,f=s.l===a?s.r:s.l;++l=c,h=r>=s,g=h<<1|f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=hr()),f?u=c:o=c,h?a=s:l=s,i(n,t,e,r,u,a,o,l)}var s,f,h,g,p,v,d,m,y,M=En(o),x=En(l);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,a)for(g=0;p>g;++g)s=n[g],s.xm&&(m=s.x),s.y>y&&(y=s.y),f.push(s.x),h.push(s.y);else for(g=0;p>g;++g){var b=+M(s=n[g],g),_=+x(s,g);v>b&&(v=b),d>_&&(d=_),b>m&&(m=b),_>y&&(y=_),f.push(b),h.push(_)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=hr();if(k.add=function(n){i(k,n,+M(n,++g),+x(n,g),v,d,m,y)},k.visit=function(n){gr(n,k,v,d,m,y)},k.find=function(n){return pr(k,n[0],n[1],v,d,m,y)},g=-1,null==t){for(;++g=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=pl.get(e)||gl,r=vl.get(r)||y,br(r(e.apply(null,la.call(arguments,1))))},oa.interpolateHcl=Rr,oa.interpolateHsl=Dr,oa.interpolateLab=Pr,oa.interpolateRound=jr,oa.transform=function(n){var t=sa.createElementNS(oa.ns.prefix.svg,"g");return(oa.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Ur(e?e.matrix:dl)})(n)},Ur.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var dl={a:1,b:0,c:0,d:1,e:0,f:0};oa.interpolateTransform=$r,oa.layout={},oa.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++eo*o/m){if(v>l){var c=t.charge/l;n.px-=i*c,n.py-=a*c}return!0}if(t.point&&l&&v>l){var c=t.pointCharge/l;n.px-=i*c,n.py-=a*c}}return!t.charge}}function t(n){n.px=oa.event.x,n.py=oa.event.y,l.resume()}var e,r,u,i,a,o,l={},c=oa.dispatch("start","tick","end"),s=[1,1],f=.9,h=ml,g=yl,p=-30,v=Ml,d=.1,m=.64,M=[],x=[];return l.tick=function(){if((u*=.99)<.005)return e=null,c.end({type:"end",alpha:u=0}),!0;var t,r,l,h,g,v,m,y,b,_=M.length,w=x.length;for(r=0;w>r;++r)l=x[r],h=l.source,g=l.target,y=g.x-h.x,b=g.y-h.y,(v=y*y+b*b)&&(v=u*a[r]*((v=Math.sqrt(v))-i[r])/v,y*=v,b*=v,g.x-=y*(m=h.weight+g.weight?h.weight/(h.weight+g.weight):.5),g.y-=b*m,h.x+=y*(m=1-m),h.y+=b*m);if((m=u*d)&&(y=s[0]/2,b=s[1]/2,r=-1,m))for(;++r<_;)l=M[r],l.x+=(y-l.x)*m,l.y+=(b-l.y)*m;if(p)for(ru(t=oa.geom.quadtree(M),u,o),r=-1;++r<_;)(l=M[r]).fixed||t.visit(n(l));for(r=-1;++r<_;)l=M[r],l.fixed?(l.x=l.px,l.y=l.py):(l.x-=(l.px-(l.px=l.x))*f,l.y-=(l.py-(l.py=l.y))*f);c.tick({type:"tick",alpha:u})},l.nodes=function(n){return arguments.length?(M=n,l):M},l.links=function(n){return arguments.length?(x=n,l):x},l.size=function(n){return arguments.length?(s=n,l):s},l.linkDistance=function(n){return arguments.length?(h="function"==typeof n?n:+n,l):h},l.distance=l.linkDistance,l.linkStrength=function(n){return arguments.length?(g="function"==typeof n?n:+n,l):g},l.friction=function(n){return arguments.length?(f=+n,l):f},l.charge=function(n){return arguments.length?(p="function"==typeof n?n:+n,l):p},l.chargeDistance=function(n){return arguments.length?(v=n*n,l):Math.sqrt(v)},l.gravity=function(n){return arguments.length?(d=+n,l):d},l.theta=function(n){return arguments.length?(m=n*n,l):Math.sqrt(m)},l.alpha=function(n){return arguments.length?(n=+n,u?n>0?u=n:(e.c=null,e.t=NaN,e=null,c.end({type:"end",alpha:u=0})):n>0&&(c.start({type:"start",alpha:u=n}),e=qn(l.tick)),l):u},l.start=function(){function n(n,r){if(!e){for(e=new Array(u),l=0;u>l;++l)e[l]=[];for(l=0;c>l;++l){var i=x[l];e[i.source.index].push(i.target),e[i.target.index].push(i.source)}}for(var a,o=e[t],l=-1,s=o.length;++lt;++t)(r=M[t]).index=t,r.weight=0;for(t=0;c>t;++t)r=x[t],"number"==typeof r.source&&(r.source=M[r.source]),"number"==typeof r.target&&(r.target=M[r.target]),++r.source.weight,++r.target.weight;for(t=0;u>t;++t)r=M[t],isNaN(r.x)&&(r.x=n("x",f)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(i=[],"function"==typeof h)for(t=0;c>t;++t)i[t]=+h.call(this,x[t],t);else for(t=0;c>t;++t)i[t]=h;if(a=[],"function"==typeof g)for(t=0;c>t;++t)a[t]=+g.call(this,x[t],t);else for(t=0;c>t;++t)a[t]=g;if(o=[],"function"==typeof p)for(t=0;u>t;++t)o[t]=+p.call(this,M[t],t);else for(t=0;u>t;++t)o[t]=p;return l.resume()},l.resume=function(){return l.alpha(.1)},l.stop=function(){return l.alpha(0)},l.drag=function(){return r||(r=oa.behavior.drag().origin(y).on("dragstart.force",Qr).on("drag.force",t).on("dragend.force",nu)),arguments.length?void this.on("mouseover.force",tu).on("mouseout.force",eu).call(r):r},oa.rebind(l,c,"on")};var ml=20,yl=1,Ml=1/0;oa.layout.hierarchy=function(){function n(u){var i,a=[u],o=[];for(u.depth=0;null!=(i=a.pop());)if(o.push(i),(c=e.call(n,i,i.depth))&&(l=c.length)){for(var l,c,s;--l>=0;)a.push(s=c[l]),s.parent=i,s.depth=i.depth+1;r&&(i.value=0),i.children=c}else r&&(i.value=+r.call(n,i,i.depth)||0),delete i.children;return au(u,function(n){var e,u;t&&(e=n.children)&&e.sort(t),r&&(u=n.parent)&&(u.value+=n.value)}),o}var t=cu,e=ou,r=lu;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(iu(t,function(n){n.children&&(n.value=0)}),au(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},oa.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(a=i.length)){var a,o,l,c=-1;for(r=t.value?r/t.value:0;++cf?-1:1),p=oa.sum(c),v=p?(f-l*g)/p:0,d=oa.range(l),m=[];return null!=e&&d.sort(e===xl?function(n,t){return c[t]-c[n]}:function(n,t){return e(a[n],a[t])}),d.forEach(function(n){m[n]={data:a[n],value:o=c[n],startAngle:s,endAngle:s+=o*v+g,padAngle:h}}),m}var t=Number,e=xl,r=0,u=Ua,i=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(u=t,n):u},n.padAngle=function(t){return arguments.length?(i=t,n):i},n};var xl={};oa.layout.stack=function(){function n(o,l){if(!(h=o.length))return o;var c=o.map(function(e,r){return t.call(n,e,r)}),s=c.map(function(t){return t.map(function(t,e){return[i.call(n,t,e),a.call(n,t,e)]})}),f=e.call(n,s,l);c=oa.permute(c,f),s=oa.permute(s,f);var h,g,p,v,d=r.call(n,s,l),m=c[0].length;for(p=0;m>p;++p)for(u.call(n,c[0][p],v=d[p],s[0][p][1]),g=1;h>g;++g)u.call(n,c[g][p],v+=s[g-1][p][1],s[g][p][1]);return o}var t=y,e=pu,r=vu,u=gu,i=fu,a=hu;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:bl.get(t)||pu,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:_l.get(t)||vu,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(a=t,n):a},n.out=function(t){return arguments.length?(u=t,n):u},n};var bl=oa.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(du),i=n.map(mu),a=oa.range(r).sort(function(n,t){return u[n]-u[t]}),o=0,l=0,c=[],s=[];for(t=0;r>t;++t)e=a[t],l>o?(o+=i[e],c.push(e)):(l+=i[e],s.push(e));return s.reverse().concat(c)},reverse:function(n){return oa.range(n.length).reverse()},"default":pu}),_l=oa.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,a=[],o=0,l=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>o&&(o=r),a.push(r)}for(e=0;i>e;++e)l[e]=(o-a[e])/2;return l},wiggle:function(n){var t,e,r,u,i,a,o,l,c,s=n.length,f=n[0],h=f.length,g=[];for(g[0]=l=c=0,e=1;h>e;++e){for(t=0,u=0;s>t;++t)u+=n[t][e][1];for(t=0,i=0,o=f[e][0]-f[e-1][0];s>t;++t){for(r=0,a=(n[t][e][1]-n[t][e-1][1])/(2*o);t>r;++r)a+=(n[r][e][1]-n[r][e-1][1])/o;i+=a*n[t][e][1]}g[e]=l-=u?i/u*o:0,c>l&&(c=l)}for(e=0;h>e;++e)g[e]-=c;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,a=1/u,o=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=a}for(e=0;i>e;++e)o[e]=0;return o},zero:vu});oa.layout.histogram=function(){function n(n,i){for(var a,o,l=[],c=n.map(e,this),s=r.call(this,c,i),f=u.call(this,s,c,i),i=-1,h=c.length,g=f.length-1,p=t?1:1/h;++i0)for(i=-1;++i=s[0]&&o<=s[1]&&(a=l[oa.bisect(f,o,1,g)-1],a.y+=p,a.push(n[i]));return l}var t=!0,e=Number,r=bu,u=Mu;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=En(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return xu(n,t)}:En(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},oa.layout.pack=function(){function n(n,i){var a=e.call(this,n,i),o=a[0],l=u[0],c=u[1],s=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(o.x=o.y=0,au(o,function(n){n.r=+s(n.value)}),au(o,Nu),r){var f=r*(t?1:Math.max(2*o.r/l,2*o.r/c))/2;au(o,function(n){n.r+=f}),au(o,Nu),au(o,function(n){n.r-=f})}return Cu(o,l/2,c/2,t?1:1/Math.max(2*o.r/l,2*o.r/c)),a}var t,e=oa.layout.hierarchy().sort(_u),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},uu(n,e)},oa.layout.tree=function(){function n(n,u){var s=a.call(this,n,u),f=s[0],h=t(f);if(au(h,e),h.parent.m=-h.z,iu(h,r),c)iu(f,i);else{var g=f,p=f,v=f;iu(f,function(n){n.xp.x&&(p=n),n.depth>v.depth&&(v=n)});var d=o(g,p)/2-g.x,m=l[0]/(p.x+o(p,g)/2+d),y=l[1]/(v.depth||1);iu(f,function(n){n.x=(n.x+d)*m,n.y=n.depth*y})}return s}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var u,i=t.children,a=0,o=i.length;o>a;++a)r.push((i[a]=u={_:i[a],parent:t,children:(u=i[a].children)&&u.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:a}).a=u);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Du(n);var i=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+o(n._,r._),n.m=n.z-i):n.z=i}else r&&(n.z=r.z+o(n._,r._));n.parent.A=u(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function u(n,t,e){if(t){for(var r,u=n,i=n,a=t,l=u.parent.children[0],c=u.m,s=i.m,f=a.m,h=l.m;a=Tu(a),u=qu(u),a&&u;)l=qu(l),i=Tu(i),i.a=n,r=a.z+f-u.z-c+o(a._,u._),r>0&&(Ru(Pu(a,n,e),n,r),c+=r,s+=r),f+=a.m,c+=u.m,h+=l.m,s+=i.m;a&&!Tu(i)&&(i.t=a,i.m+=f-s),u&&!qu(l)&&(l.t=u,l.m+=c-h,e=n)}return e}function i(n){n.x*=l[0],n.y=n.depth*l[1]}var a=oa.layout.hierarchy().sort(null).value(null),o=Lu,l=[1,1],c=null;return n.separation=function(t){return arguments.length?(o=t,n):o},n.size=function(t){return arguments.length?(c=null==(l=t)?i:null,n):c?null:l},n.nodeSize=function(t){return arguments.length?(c=null==(l=t)?null:i,n):c?l:null},uu(n,a)},oa.layout.cluster=function(){function n(n,i){var a,o=t.call(this,n,i),l=o[0],c=0;au(l,function(n){var t=n.children;t&&t.length?(n.x=Uu(t),n.y=ju(t)):(n.x=a?c+=e(n,a):0,n.y=0,a=n)});var s=Fu(l),f=Hu(l),h=s.x-e(s,f)/2,g=f.x+e(f,s)/2;return au(l,u?function(n){n.x=(n.x-l.x)*r[0],n.y=(l.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(l.y?n.y/l.y:1))*r[1]}),o}var t=oa.layout.hierarchy().sort(null).value(null),e=Lu,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},uu(n,t)},oa.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++ut?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var a,o,l,c=f(e),s=[],h=i.slice(),p=1/0,v="slice"===g?c.dx:"dice"===g?c.dy:"slice-dice"===g?1&e.depth?c.dy:c.dx:Math.min(c.dx,c.dy);for(n(h,c.dx*c.dy/e.value),s.area=0;(l=h.length)>0;)s.push(a=h[l-1]),s.area+=a.area,"squarify"!==g||(o=r(s,v))<=p?(h.pop(),p=o):(s.area-=s.pop().area,u(s,v,c,!1),v=Math.min(c.dx,c.dy),s.length=s.area=0,p=1/0);s.length&&(u(s,v,c,!0),s.length=s.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,a=f(t),o=r.slice(),l=[];for(n(o,a.dx*a.dy/t.value),l.area=0;i=o.pop();)l.push(i),l.area+=i.area,null!=i.z&&(u(l,i.z?a.dx:a.dy,a,!o.length),l.length=l.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,a=-1,o=n.length;++ae&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,a=n.length,o=e.x,c=e.y,s=t?l(n.area/t):0; -if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++ie.dx)&&(s=e.dx);++ie&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=oa.random.normal.apply(oa,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=oa.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},oa.scale={};var wl={floor:y,ceil:y};oa.scale.linear=function(){return Wu([0,1],[0,1],Mr,!1)};var Sl={s:1,g:1,p:1,r:1,e:1};oa.scale.log=function(){return ri(oa.scale.linear().domain([0,1]),10,!0,[1,10])};var kl=oa.format(".0e"),Nl={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};oa.scale.pow=function(){return ui(oa.scale.linear(),1,[0,1])},oa.scale.sqrt=function(){return oa.scale.pow().exponent(.5)},oa.scale.ordinal=function(){return ai([],{t:"range",a:[[]]})},oa.scale.category10=function(){return oa.scale.ordinal().range(El)},oa.scale.category20=function(){return oa.scale.ordinal().range(Al)},oa.scale.category20b=function(){return oa.scale.ordinal().range(Cl)},oa.scale.category20c=function(){return oa.scale.ordinal().range(zl)};var El=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(xn),Al=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(xn),Cl=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(xn),zl=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(xn);oa.scale.quantile=function(){return oi([],[])},oa.scale.quantize=function(){return li(0,1,[0,1])},oa.scale.threshold=function(){return ci([.5],[0,1])},oa.scale.identity=function(){return si([0,1])},oa.svg={},oa.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),c=Math.max(0,+r.apply(this,arguments)),s=a.apply(this,arguments)-Ha,f=o.apply(this,arguments)-Ha,h=Math.abs(f-s),g=s>f?0:1;if(n>c&&(p=c,c=n,n=p),h>=Fa)return t(c,g)+(n?t(n,1-g):"")+"Z";var p,v,d,m,y,M,x,b,_,w,S,k,N=0,E=0,A=[];if((m=(+l.apply(this,arguments)||0)/2)&&(d=i===Ll?Math.sqrt(n*n+c*c):+i.apply(this,arguments),g||(E*=-1),c&&(E=tn(d/c*Math.sin(m))),n&&(N=tn(d/n*Math.sin(m)))),c){y=c*Math.cos(s+E),M=c*Math.sin(s+E),x=c*Math.cos(f-E),b=c*Math.sin(f-E);var C=Math.abs(f-s-2*E)<=ja?0:1;if(E&&mi(y,M,x,b)===g^C){var z=(s+f)/2;y=c*Math.cos(z),M=c*Math.sin(z),x=b=null}}else y=M=0;if(n){_=n*Math.cos(f-N),w=n*Math.sin(f-N),S=n*Math.cos(s+N),k=n*Math.sin(s+N);var L=Math.abs(s-f+2*N)<=ja?0:1;if(N&&mi(_,w,S,k)===1-g^L){var q=(s+f)/2;_=n*Math.cos(q),w=n*Math.sin(q),S=k=null}}else _=w=0;if(h>Da&&(p=Math.min(Math.abs(c-n)/2,+u.apply(this,arguments)))>.001){v=c>n^g?0:1;var T=p,R=p;if(ja>h){var D=null==S?[_,w]:null==x?[y,M]:Re([y,M],[S,k],[x,b],[_,w]),P=y-D[0],j=M-D[1],U=x-D[0],F=b-D[1],H=1/Math.sin(Math.acos((P*U+j*F)/(Math.sqrt(P*P+j*j)*Math.sqrt(U*U+F*F)))/2),O=Math.sqrt(D[0]*D[0]+D[1]*D[1]);R=Math.min(p,(n-O)/(H-1)),T=Math.min(p,(c-O)/(H+1))}if(null!=x){var I=yi(null==S?[_,w]:[S,k],[y,M],c,T,g),Y=yi([x,b],[_,w],c,T,g);p===T?A.push("M",I[0],"A",T,",",T," 0 0,",v," ",I[1],"A",c,",",c," 0 ",1-g^mi(I[1][0],I[1][1],Y[1][0],Y[1][1]),",",g," ",Y[1],"A",T,",",T," 0 0,",v," ",Y[0]):A.push("M",I[0],"A",T,",",T," 0 1,",v," ",Y[0])}else A.push("M",y,",",M);if(null!=S){var Z=yi([y,M],[S,k],n,-R,g),V=yi([_,w],null==x?[y,M]:[x,b],n,-R,g);p===R?A.push("L",V[0],"A",R,",",R," 0 0,",v," ",V[1],"A",n,",",n," 0 ",g^mi(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-g," ",Z[1],"A",R,",",R," 0 0,",v," ",Z[0]):A.push("L",V[0],"A",R,",",R," 0 0,",v," ",Z[0])}else A.push("L",_,",",w)}else A.push("M",y,",",M),null!=x&&A.push("A",c,",",c," 0 ",C,",",g," ",x,",",b),A.push("L",_,",",w),null!=S&&A.push("A",n,",",n," 0 ",L,",",1-g," ",S,",",k);return A.push("Z"),A.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=hi,r=gi,u=fi,i=Ll,a=pi,o=vi,l=di;return n.innerRadius=function(t){return arguments.length?(e=En(t),n):e},n.outerRadius=function(t){return arguments.length?(r=En(t),n):r},n.cornerRadius=function(t){return arguments.length?(u=En(t),n):u},n.padRadius=function(t){return arguments.length?(i=t==Ll?Ll:En(t),n):i},n.startAngle=function(t){return arguments.length?(a=En(t),n):a},n.endAngle=function(t){return arguments.length?(o=En(t),n):o},n.padAngle=function(t){return arguments.length?(l=En(t),n):l},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+a.apply(this,arguments)+ +o.apply(this,arguments))/2-Ha;return[Math.cos(t)*n,Math.sin(t)*n]},n};var Ll="auto";oa.svg.line=function(){return Mi(y)};var ql=oa.map({linear:xi,"linear-closed":bi,step:_i,"step-before":wi,"step-after":Si,basis:zi,"basis-open":Li,"basis-closed":qi,bundle:Ti,cardinal:Ei,"cardinal-open":ki,"cardinal-closed":Ni,monotone:Fi});ql.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var Tl=[0,2/3,1/3,0],Rl=[0,1/3,2/3,0],Dl=[0,1/6,2/3,1/6];oa.svg.line.radial=function(){var n=Mi(Hi);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},wi.reverse=Si,Si.reverse=wi,oa.svg.area=function(){return Oi(y)},oa.svg.area.radial=function(){var n=Oi(Hi);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},oa.svg.chord=function(){function n(n,o){var l=t(this,i,n,o),c=t(this,a,n,o);return"M"+l.p0+r(l.r,l.p1,l.a1-l.a0)+(e(l,c)?u(l.r,l.p1,l.r,l.p0):u(l.r,l.p1,c.r,c.p0)+r(c.r,c.p1,c.a1-c.a0)+u(c.r,c.p1,l.r,l.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=o.call(n,u,r),a=l.call(n,u,r)-Ha,s=c.call(n,u,r)-Ha;return{r:i,a0:a,a1:s,p0:[i*Math.cos(a),i*Math.sin(a)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>ja)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=Me,a=xe,o=Ii,l=pi,c=vi;return n.radius=function(t){return arguments.length?(o=En(t),n):o},n.source=function(t){return arguments.length?(i=En(t),n):i},n.target=function(t){return arguments.length?(a=En(t),n):a},n.startAngle=function(t){return arguments.length?(l=En(t),n):l},n.endAngle=function(t){return arguments.length?(c=En(t),n):c},n},oa.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),a=e.call(this,n,u),o=(i.y+a.y)/2,l=[i,{x:i.x,y:o},{x:a.x,y:o},a];return l=l.map(r),"M"+l[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var t=Me,e=xe,r=Yi;return n.source=function(e){return arguments.length?(t=En(e),n):t},n.target=function(t){return arguments.length?(e=En(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},oa.svg.diagonal.radial=function(){var n=oa.svg.diagonal(),t=Yi,e=n.projection;return n.projection=function(n){return arguments.length?e(Zi(t=n)):t},n},oa.svg.symbol=function(){function n(n,r){return(Pl.get(t.call(this,n,r))||$i)(e.call(this,n,r))}var t=Xi,e=Vi;return n.type=function(e){return arguments.length?(t=En(e),n):t},n.size=function(t){return arguments.length?(e=En(t),n):e},n};var Pl=oa.map({circle:$i,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Ul)),e=t*Ul;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});oa.svg.symbolTypes=Pl.keys();var jl=Math.sqrt(3),Ul=Math.tan(30*Oa);Aa.transition=function(n){for(var t,e,r=Fl||++Yl,u=Ki(n),i=[],a=Hl||{time:Date.now(),ease:Nr,delay:0,duration:250},o=-1,l=this.length;++oi;i++){u.push(t=[]);for(var e=this[i],o=0,l=e.length;l>o;o++)(r=e[o])&&n.call(r,r.__data__,o,i)&&t.push(r)}return Wi(u,this.namespace,this.id)},Il.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):Y(this,null==t?function(t){t[r][e].tween.remove(n)}:function(u){u[r][e].tween.set(n,t)})},Il.attr=function(n,t){function e(){this.removeAttribute(o)}function r(){this.removeAttributeNS(o.space,o.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(o);return e!==n&&(t=a(e,n),function(n){this.setAttribute(o,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(o.space,o.local);return e!==n&&(t=a(e,n),function(n){this.setAttributeNS(o.space,o.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var a="transform"==n?$r:Mr,o=oa.ns.qualify(n);return Ji(this,"attr."+n,t,o.local?i:u)},Il.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=oa.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Il.style=function(n,e,r){function u(){this.style.removeProperty(n)}function i(e){return null==e?u:(e+="",function(){var u,i=t(this).getComputedStyle(this,null).getPropertyValue(n);return i!==e&&(u=Mr(i,e),function(t){this.style.setProperty(n,u(t),r)})})}var a=arguments.length;if(3>a){if("string"!=typeof n){2>a&&(e="");for(r in n)this.style(r,n[r],e);return this}r=""}return Ji(this,"style."+n,e,i)},Il.styleTween=function(n,e,r){function u(u,i){var a=e.call(this,u,i,t(this).getComputedStyle(this,null).getPropertyValue(n));return a&&function(t){this.style.setProperty(n,a(t),r)}}return arguments.length<3&&(r=""),this.tween("style."+n,u)},Il.text=function(n){return Ji(this,"text",n,Gi)},Il.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Il.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=oa.ease.apply(oa,arguments)),Y(this,function(r){r[e][t].ease=n}))},Il.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:Y(this,"function"==typeof n?function(r,u,i){r[e][t].delay=+n.call(r,r.__data__,u,i)}:(n=+n,function(r){r[e][t].delay=n}))},Il.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:Y(this,"function"==typeof n?function(r,u,i){r[e][t].duration=Math.max(1,n.call(r,r.__data__,u,i))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Il.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var u=Hl,i=Fl;try{Fl=e,Y(this,function(t,u,i){Hl=t[r][e],n.call(t,t.__data__,u,i)})}finally{Hl=u,Fl=i}}else Y(this,function(u){var i=u[r][e];(i.event||(i.event=oa.dispatch("start","end","interrupt"))).on(n,t)});return this},Il.transition=function(){for(var n,t,e,r,u=this.id,i=++Yl,a=this.namespace,o=[],l=0,c=this.length;c>l;l++){o.push(n=[]);for(var t=this[l],s=0,f=t.length;f>s;s++)(e=t[s])&&(r=e[a][u],Qi(e,s,a,i,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Wi(o,a,i)},oa.svg.axis=function(){function n(n){n.each(function(){var n,c=oa.select(this),s=this.__chart__||e,f=this.__chart__=e.copy(),h=null==l?f.ticks?f.ticks.apply(f,o):f.domain():l,g=null==t?f.tickFormat?f.tickFormat.apply(f,o):y:t,p=c.selectAll(".tick").data(h,f),v=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Da),d=oa.transition(p.exit()).style("opacity",Da).remove(),m=oa.transition(p.order()).style("opacity",1),M=Math.max(u,0)+a,x=Zu(f),b=c.selectAll(".domain").data([0]),_=(b.enter().append("path").attr("class","domain"),oa.transition(b));v.append("line"),v.append("text");var w,S,k,N,E=v.select("line"),A=m.select("line"),C=p.select("text").text(g),z=v.select("text"),L=m.select("text"),q="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=na,w="x",k="y",S="x2",N="y2",C.attr("dy",0>q?"0em":".71em").style("text-anchor","middle"),_.attr("d","M"+x[0]+","+q*i+"V0H"+x[1]+"V"+q*i)):(n=ta,w="y",k="x",S="y2",N="x2",C.attr("dy",".32em").style("text-anchor",0>q?"end":"start"),_.attr("d","M"+q*i+","+x[0]+"H0V"+x[1]+"H"+q*i)),E.attr(N,q*u),z.attr(k,q*M),A.attr(S,0).attr(N,q*u),L.attr(w,0).attr(k,q*M),f.rangeBand){var T=f,R=T.rangeBand()/2;s=f=function(n){return T(n)+R}}else s.rangeBand?s=f:d.call(n,f,s);v.call(n,s,f),m.call(n,f,f)})}var t,e=oa.scale.linear(),r=Zl,u=6,i=6,a=3,o=[10],l=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Vl?t+"":Zl,n):r},n.ticks=function(){return arguments.length?(o=ca(arguments),n):o},n.tickValues=function(t){return arguments.length?(l=t,n):l},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(a=+t,n):a},n.tickSubdivide=function(){return arguments.length&&n},n};var Zl="bottom",Vl={top:1,right:1,bottom:1,left:1};oa.svg.brush=function(){function n(t){t.each(function(){var t=oa.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",i).on("touchstart.brush",i),a=t.selectAll(".background").data([0]);a.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),t.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var o=t.selectAll(".resize").data(v,y);o.exit().remove(),o.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return Xl[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),o.style("display",n.empty()?"none":null);var l,f=oa.transition(t),h=oa.transition(a);c&&(l=Zu(c),h.attr("x",l[0]).attr("width",l[1]-l[0]),r(f)),s&&(l=Zu(s),h.attr("y",l[0]).attr("height",l[1]-l[0]),u(f)),e(f)})}function e(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+f[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function r(n){n.select(".extent").attr("x",f[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",f[1]-f[0])}function u(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function i(){function i(){32==oa.event.keyCode&&(C||(M=null,L[0]-=f[1],L[1]-=h[1],C=2),S())}function v(){32==oa.event.keyCode&&2==C&&(L[0]+=f[1],L[1]+=h[1],C=0,S())}function d(){var n=oa.mouse(b),t=!1;x&&(n[0]+=x[0],n[1]+=x[1]),C||(oa.event.altKey?(M||(M=[(f[0]+f[1])/2,(h[0]+h[1])/2]),L[0]=f[+(n[0]s?(u=r,r=s):u=s),v[0]!=r||v[1]!=u?(e?o=null:a=null,v[0]=r,v[1]=u,!0):void 0}function y(){d(),k.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),oa.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),z(),w({type:"brushend"})}var M,x,b=this,_=oa.select(oa.event.target),w=l.of(b,arguments),k=oa.select(b),N=_.datum(),E=!/^(n|s)$/.test(N)&&c,A=!/^(e|w)$/.test(N)&&s,C=_.classed("extent"),z=W(b),L=oa.mouse(b),q=oa.select(t(b)).on("keydown.brush",i).on("keyup.brush",v);if(oa.event.changedTouches?q.on("touchmove.brush",d).on("touchend.brush",y):q.on("mousemove.brush",d).on("mouseup.brush",y),k.interrupt().selectAll("*").interrupt(),C)L[0]=f[0]-L[0],L[1]=h[0]-L[1];else if(N){var T=+/w$/.test(N),R=+/^n/.test(N);x=[f[1-T]-L[0],h[1-R]-L[1]],L[0]=f[T],L[1]=h[R]}else oa.event.altKey&&(M=L.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),oa.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),d()}var a,o,l=N(n,"brushstart","brush","brushend"),c=null,s=null,f=[0,0],h=[0,0],g=!0,p=!0,v=$l[0];return n.event=function(n){n.each(function(){var n=l.of(this,arguments),t={x:f,y:h,i:a,j:o},e=this.__chart__||t;this.__chart__=t,Fl?oa.select(this).transition().each("start.brush",function(){a=e.i,o=e.j,f=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=xr(f,t.x),r=xr(h,t.y);return a=o=null,function(u){f=t.x=e(u),h=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){a=t.i,o=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,v=$l[!c<<1|!s],n):c},n.y=function(t){return arguments.length?(s=t,v=$l[!c<<1|!s],n):s},n.clamp=function(t){return arguments.length?(c&&s?(g=!!t[0],p=!!t[1]):c?g=!!t:s&&(p=!!t),n):c&&s?[g,p]:c?g:s?p:null},n.extent=function(t){var e,r,u,i,l;return arguments.length?(c&&(e=t[0],r=t[1],s&&(e=e[0],r=r[0]),a=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(l=e,e=r,r=l),(e!=f[0]||r!=f[1])&&(f=[e,r])),s&&(u=t[0],i=t[1],c&&(u=u[1],i=i[1]),o=[u,i],s.invert&&(u=s(u),i=s(i)),u>i&&(l=u,u=i,i=l),(u!=h[0]||i!=h[1])&&(h=[u,i])),n):(c&&(a?(e=a[0],r=a[1]):(e=f[0],r=f[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(l=e,e=r,r=l))),s&&(o?(u=o[0],i=o[1]):(u=h[0],i=h[1],s.invert&&(u=s.invert(u),i=s.invert(i)),u>i&&(l=u,u=i,i=l))),c&&s?[[e,u],[r,i]]:c?[e,r]:s&&[u,i])},n.clear=function(){return n.empty()||(f=[0,0],h=[0,0],a=o=null),n},n.empty=function(){return!!c&&f[0]==f[1]||!!s&&h[0]==h[1]},oa.rebind(n,l,"on")};var Xl={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},$l=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Bl=ho.format=Mo.timeFormat,Wl=Bl.utc,Jl=Wl("%Y-%m-%dT%H:%M:%S.%LZ");Bl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?ea:Jl,ea.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},ea.toString=Jl.toString,ho.second=On(function(n){return new go(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),ho.seconds=ho.second.range,ho.seconds.utc=ho.second.utc.range,ho.minute=On(function(n){return new go(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),ho.minutes=ho.minute.range,ho.minutes.utc=ho.minute.utc.range,ho.hour=On(function(n){var t=n.getTimezoneOffset()/60;return new go(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),ho.hours=ho.hour.range,ho.hours.utc=ho.hour.utc.range,ho.month=On(function(n){return n=ho.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),ho.months=ho.month.range,ho.months.utc=ho.month.utc.range;var Gl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Kl=[[ho.second,1],[ho.second,5],[ho.second,15],[ho.second,30],[ho.minute,1],[ho.minute,5],[ho.minute,15],[ho.minute,30],[ho.hour,1],[ho.hour,3],[ho.hour,6],[ho.hour,12],[ho.day,1],[ho.day,2],[ho.week,1],[ho.month,1],[ho.month,3],[ho.year,1]],Ql=Bl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",zt]]),nc={range:function(n,t,e){return oa.range(Math.ceil(n/e)*e,+t,e).map(ua)},floor:y,ceil:y};Kl.year=ho.year,ho.scale=function(){return ra(oa.scale.linear(),Kl,Ql)};var tc=Kl.map(function(n){return[n[0].utc,n[1]]}),ec=Wl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",zt]]);tc.year=ho.year.utc,ho.scale.utc=function(){return ra(oa.scale.linear(),tc,ec)},oa.text=An(function(n){return n.responseText}),oa.json=function(n,t){return Cn(n,"application/json",ia,t)},oa.html=function(n,t){return Cn(n,"text/html",aa,t)},oa.xml=An(function(n){return n.responseXML}),"function"==typeof define&&define.amd?(this.d3=oa,define(oa)):"object"==typeof module&&module.exports?module.exports=oa:this.d3=oa}(); \ No newline at end of file diff --git a/miniwob-sandbox/turk-server/static/core/jquery-ui/external/jquery/jquery.js b/miniwob-sandbox/turk-server/static/core/jquery-ui/external/jquery/jquery.js deleted file mode 100644 index 7fc60fc..0000000 --- a/miniwob-sandbox/turk-server/static/core/jquery-ui/external/jquery/jquery.js +++ /dev/null @@ -1,11008 +0,0 @@ -/*! - * jQuery JavaScript Library v1.12.4 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-05-20T17:17Z - */ - -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Support: Firefox 18+ -// Can't be in strict mode, several libs including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -//"use strict"; -var deletedIds = []; - -var document = window.document; - -var slice = deletedIds.slice; - -var concat = deletedIds.concat; - -var push = deletedIds.push; - -var indexOf = deletedIds.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - version = "1.12.4", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1, IE<9 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: deletedIds.sort, - splice: deletedIds.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var src, copyIsArray, copy, name, options, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = jQuery.isArray( copy ) ) ) ) { - - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray( src ) ? src : []; - - } else { - clone = src && jQuery.isPlainObject( src ) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type( obj ) === "function"; - }, - - isArray: Array.isArray || function( obj ) { - return jQuery.type( obj ) === "array"; - }, - - isWindow: function( obj ) { - /* jshint eqeqeq: false */ - return obj != null && obj == obj.window; - }, - - isNumeric: function( obj ) { - - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - var realStringObj = obj && obj.toString(); - return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - isPlainObject: function( obj ) { - var key; - - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - try { - - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call( obj, "constructor" ) && - !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { - return false; - } - } catch ( e ) { - - // IE8,9 Will throw exceptions on certain host objects #9897 - return false; - } - - // Support: IE<9 - // Handle iteration over inherited properties before own properties. - if ( !support.ownFirst ) { - for ( key in obj ) { - return hasOwn.call( obj, key ); - } - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; - }, - - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function( data ) { - if ( data && jQuery.trim( data ) ) { - - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); // jscs:ignore requireDotNotation - } )( data ); - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android<4.1, IE<9 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - var len; - - if ( arr ) { - if ( indexOf ) { - return indexOf.call( arr, elem, i ); - } - - len = arr.length; - i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; - - for ( ; i < len; i++ ) { - - // Skip accessing in sparse arrays - if ( i in arr && arr[ i ] === elem ) { - return i; - } - } - } - - return -1; - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - while ( j < len ) { - first[ i++ ] = second[ j++ ]; - } - - // Support: IE<9 - // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) - if ( len !== len ) { - while ( second[ j ] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var args, proxy, tmp; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: function() { - return +( new Date() ); - }, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -// JSHint would error on this code due to the Symbol not being defined in ES5. -// Defining this global in .jshintrc would create a danger of using the global -// unguarded in another place, it seems safer to just disable JSHint for these -// three lines. -/* jshint ignore: start */ -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = deletedIds[ Symbol.iterator ]; -} -/* jshint ignore: end */ - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: iOS 8.2 (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.2.1 - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-10-17 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, nidselect, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - - // ID selector - if ( (m = match[1]) ) { - - // Document context - if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !compilerCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - - if ( nodeType !== 1 ) { - newContext = context; - newSelector = selector; - - // qSA looks outside Element context, which is not what we want - // Thanks to Andrew Dupont for this workaround technique - // Support: IE <=8 - // Exclude object elements - } else if ( context.nodeName.toLowerCase() !== "object" ) { - - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", (nid = expando) ); - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; - while ( i-- ) { - groups[i] = nidselect + " " + toSelector( groups[i] ); - } - newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9-11, Edge - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( (parent = document.defaultView) && parent.top !== parent ) { - // Support: IE 11 - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( document.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - return m ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "
            " + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - !compilerCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - // Use previously-cached element index if available - if ( useCache ) { - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); - - if ( (oldCache = uniqueCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context === document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - if ( !context && elem.ownerDocument !== document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - } ); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( jQuery.inArray( elem, qualifier ) > -1 ) !== not; - } ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, - ret = [], - self = this, - len = self.length; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // init accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector.charAt( 0 ) === "<" && - selector.charAt( selector.length - 1 ) === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[ 2 ] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[ 0 ] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return typeof root.ready !== "undefined" ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var i, - targets = jQuery( target, this ), - len = targets.length; - - return this.filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( pos ? - pos.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return jQuery.inArray( this[ 0 ], jQuery( elem ) ); - } - - // Locate the position of the desired element - return jQuery.inArray( - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem, this ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - do { - cur = cur[ dir ]; - } while ( cur && cur.nodeType !== 1 ); - - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - ret = jQuery.uniqueSort( ret ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - } - - return this.pushStack( ret ); - }; -} ); -var rnotwhite = ( /\S+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( jQuery.isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = true; - if ( !memory ) { - self.disable(); - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], - [ "notify", "progress", jQuery.Callbacks( "memory" ) ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this === promise ? newDefer.promise() : this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( function() { - - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || - ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. - // If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .progress( updateFunc( i, progressContexts, progressValues ) ) - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ); - } else { - --remaining; - } - } - } - - // if we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -} ); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -} ); - -/** - * Clean-up method for dom ready events - */ -function detach() { - if ( document.addEventListener ) { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - - } else { - document.detachEvent( "onreadystatechange", completed ); - window.detachEvent( "onload", completed ); - } -} - -/** - * The ready event handler and self cleanup method - */ -function completed() { - - // readyState === "complete" is good enough for us to call the dom ready in oldIE - if ( document.addEventListener || - window.event.type === "load" || - document.readyState === "complete" ) { - - detach(); - jQuery.ready(); - } -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called - // after the browser event has already occurred. - // Support: IE6-10 - // Older IE sometimes signals "interactive" too soon - if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - - // Standards-based browsers support DOMContentLoaded - } else if ( document.addEventListener ) { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); - - // If IE event model is used - } else { - - // Ensure firing before onload, maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", completed ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", completed ); - - // If IE and not a frame - // continually check to see if the document is ready - var top = false; - - try { - top = window.frameElement == null && document.documentElement; - } catch ( e ) {} - - if ( top && top.doScroll ) { - ( function doScrollCheck() { - if ( !jQuery.isReady ) { - - try { - - // Use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - top.doScroll( "left" ); - } catch ( e ) { - return window.setTimeout( doScrollCheck, 50 ); - } - - // detach all dom ready events - detach(); - - // and execute any waiting functions - jQuery.ready(); - } - } )(); - } - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); - - - - -// Support: IE<9 -// Iteration over object's inherited properties before its own -var i; -for ( i in jQuery( support ) ) { - break; -} -support.ownFirst = i === "0"; - -// Note: most support tests are defined in their respective modules. -// false until the test is run -support.inlineBlockNeedsLayout = false; - -// Execute ASAP in case we need to set body.style.zoom -jQuery( function() { - - // Minified: var a,b,c,d - var val, div, body, container; - - body = document.getElementsByTagName( "body" )[ 0 ]; - if ( !body || !body.style ) { - - // Return for frameset docs that don't have a body - return; - } - - // Setup - div = document.createElement( "div" ); - container = document.createElement( "div" ); - container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; - body.appendChild( container ).appendChild( div ); - - if ( typeof div.style.zoom !== "undefined" ) { - - // Support: IE<8 - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; - - support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; - if ( val ) { - - // Prevent IE 6 from affecting layout for positioned elements #11048 - // Prevent IE from shrinking the body in IE 7 mode #12869 - // Support: IE<8 - body.style.zoom = 1; - } - } - - body.removeChild( container ); -} ); - - -( function() { - var div = document.createElement( "div" ); - - // Support: IE<9 - support.deleteExpando = true; - try { - delete div.test; - } catch ( e ) { - support.deleteExpando = false; - } - - // Null elements to avoid leaks in IE. - div = null; -} )(); -var acceptData = function( elem ) { - var noData = jQuery.noData[ ( elem.nodeName + " " ).toLowerCase() ], - nodeType = +elem.nodeType || 1; - - // Do not set data on non-element DOM nodes because it will not be cleared (#8335). - return nodeType !== 1 && nodeType !== 9 ? - false : - - // Nodes accept data unless otherwise specified; rejection can be conditional - !noData || noData !== true && elem.getAttribute( "classid" ) === noData; -}; - - - - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /([A-Z])/g; - -function dataAttr( elem, key, data ) { - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - - var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// checks a cache object for emptiness -function isEmptyDataObject( obj ) { - var name; - for ( name in obj ) { - - // if the public data object is empty, the private is still empty - if ( name === "data" && jQuery.isEmptyObject( obj[ name ] ) ) { - continue; - } - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} - -function internalData( elem, name, data, pvt /* Internal Use Only */ ) { - if ( !acceptData( elem ) ) { - return; - } - - var ret, thisCache, - internalKey = jQuery.expando, - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( ( !id || !cache[ id ] || ( !pvt && !cache[ id ].data ) ) && - data === undefined && typeof name === "string" ) { - return; - } - - if ( !id ) { - - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; - } else { - id = internalKey; - } - } - - if ( !cache[ id ] ) { - - // Avoid exposing jQuery metadata on plain JS objects when the object - // is serialized using JSON.stringify - cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ] = jQuery.extend( cache[ id ], name ); - } else { - cache[ id ].data = jQuery.extend( cache[ id ].data, name ); - } - } - - thisCache = cache[ id ]; - - // jQuery data() is stored in a separate object inside the object's internal data - // cache in order to avoid key collisions between internal data and user-defined - // data. - if ( !pvt ) { - if ( !thisCache.data ) { - thisCache.data = {}; - } - - thisCache = thisCache.data; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // Check for both converted-to-camel and non-converted data property names - // If a data property was specified - if ( typeof name === "string" ) { - - // First Try to find as-is property data - ret = thisCache[ name ]; - - // Test for null|undefined property data - if ( ret == null ) { - - // Try to find the camelCased property - ret = thisCache[ jQuery.camelCase( name ) ]; - } - } else { - ret = thisCache; - } - - return ret; -} - -function internalRemoveData( elem, name, pvt ) { - if ( !acceptData( elem ) ) { - return; - } - - var thisCache, i, - isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - id = isNode ? elem[ jQuery.expando ] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - - thisCache = pvt ? cache[ id ] : cache[ id ].data; - - if ( thisCache ) { - - // Support array or space separated string names for data keys - if ( !jQuery.isArray( name ) ) { - - // try the string as a key before any manipulation - if ( name in thisCache ) { - name = [ name ]; - } else { - - // split the camel cased version by spaces unless a key with the spaces exists - name = jQuery.camelCase( name ); - if ( name in thisCache ) { - name = [ name ]; - } else { - name = name.split( " " ); - } - } - } else { - - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = name.concat( jQuery.map( name, jQuery.camelCase ) ); - } - - i = name.length; - while ( i-- ) { - delete thisCache[ name[ i ] ]; - } - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( pvt ? !isEmptyDataObject( thisCache ) : !jQuery.isEmptyObject( thisCache ) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( !pvt ) { - delete cache[ id ].data; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject( cache[ id ] ) ) { - return; - } - } - - // Destroy the cache - if ( isNode ) { - jQuery.cleanData( [ elem ], true ); - - // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) - /* jshint eqeqeq: false */ - } else if ( support.deleteExpando || cache != cache.window ) { - /* jshint eqeqeq: true */ - delete cache[ id ]; - - // When all else fails, undefined - } else { - cache[ id ] = undefined; - } -} - -jQuery.extend( { - cache: {}, - - // The following elements (space-suffixed to avoid Object.prototype collisions) - // throw uncatchable exceptions if you attempt to set expando properties - noData: { - "applet ": true, - "embed ": true, - - // ...but Flash objects (which have this classid) *can* handle expandos - "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[ jQuery.expando ] ] : elem[ jQuery.expando ]; - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data ) { - return internalData( elem, name, data ); - }, - - removeData: function( elem, name ) { - return internalRemoveData( elem, name ); - }, - - // For internal use only. - _data: function( elem, name, data ) { - return internalData( elem, name, data, true ); - }, - - _removeData: function( elem, name ) { - return internalRemoveData( elem, name, true ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Special expections of .data basically thwart jQuery.access, - // so implement the relevant behavior ourselves - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = jQuery.data( elem ); - - if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - jQuery._data( elem, "parsedAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - jQuery.data( this, key ); - } ); - } - - return arguments.length > 1 ? - - // Sets one value - this.each( function() { - jQuery.data( this, key, value ); - } ) : - - // Gets one value - // Try to fetch any internally stored data first - elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; - }, - - removeData: function( key ) { - return this.each( function() { - jQuery.removeData( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = jQuery._data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = jQuery._data( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // not intended for public consumption - generates a queueHooks object, - // or returns the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return jQuery._data( elem, key ) || jQuery._data( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - jQuery._removeData( elem, type + "queue" ); - jQuery._removeData( elem, key ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = jQuery._data( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); - - -( function() { - var shrinkWrapBlocksVal; - - support.shrinkWrapBlocks = function() { - if ( shrinkWrapBlocksVal != null ) { - return shrinkWrapBlocksVal; - } - - // Will be changed later if needed. - shrinkWrapBlocksVal = false; - - // Minified: var b,c,d - var div, body, container; - - body = document.getElementsByTagName( "body" )[ 0 ]; - if ( !body || !body.style ) { - - // Test fired too early or in an unsupported environment, exit. - return; - } - - // Setup - div = document.createElement( "div" ); - container = document.createElement( "div" ); - container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; - body.appendChild( container ).appendChild( div ); - - // Support: IE6 - // Check if elements with layout shrink-wrap their children - if ( typeof div.style.zoom !== "undefined" ) { - - // Reset CSS: box-sizing; display; margin; border - div.style.cssText = - - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + - "box-sizing:content-box;display:block;margin:0;border:0;" + - "padding:1px;width:1px;zoom:1"; - div.appendChild( document.createElement( "div" ) ).style.width = "5px"; - shrinkWrapBlocksVal = div.offsetWidth !== 3; - } - - body.removeChild( container ); - - return shrinkWrapBlocksVal; - }; - -} )(); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || - !jQuery.contains( elem.ownerDocument, elem ); - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, - scale = 1, - maxIterations = 20, - currentValue = tween ? - function() { return tween.cur(); } : - function() { return jQuery.css( elem, prop, "" ); }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - do { - - // If previous iteration zeroed out, double until we get *something*. - // Use string for doubling so we don't accidentally see scale as unchanged below - scale = scale || ".5"; - - // Adjust and apply - initialInUnit = initialInUnit / scale; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Update scale, tolerating zero or NaN from tween.cur() - // Break the loop if scale is unchanged or perfect, or if we've just had enough. - } while ( - scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations - ); - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - length = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < length; i++ ) { - fn( - elems[ i ], - key, - raw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - length ? fn( elems[ 0 ], key ) : emptyGet; -}; -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([\w:-]+)/ ); - -var rscriptType = ( /^$|\/(?:java|ecma)script/i ); - -var rleadingWhitespace = ( /^\s+/ ); - -var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|" + - "details|dialog|figcaption|figure|footer|header|hgroup|main|" + - "mark|meter|nav|output|picture|progress|section|summary|template|time|video"; - - - -function createSafeFragment( document ) { - var list = nodeNames.split( "|" ), - safeFrag = document.createDocumentFragment(); - - if ( safeFrag.createElement ) { - while ( list.length ) { - safeFrag.createElement( - list.pop() - ); - } - } - return safeFrag; -} - - -( function() { - var div = document.createElement( "div" ), - fragment = document.createDocumentFragment(), - input = document.createElement( "input" ); - - // Setup - div.innerHTML = "
            a"; - - // IE strips leading whitespace when .innerHTML is used - support.leadingWhitespace = div.firstChild.nodeType === 3; - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - support.tbody = !div.getElementsByTagName( "tbody" ).length; - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; - - // Makes sure cloning an html5 element does not cause problems - // Where outerHTML is undefined, this still works - support.html5Clone = - document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - input.type = "checkbox"; - input.checked = true; - fragment.appendChild( input ); - support.appendChecked = input.checked; - - // Make sure textarea (and checkbox) defaultValue is properly cloned - // Support: IE6-IE11+ - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // #11217 - WebKit loses check when the name is after the checked attribute - fragment.appendChild( div ); - - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input = document.createElement( "input" ); - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 - // old WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<9 - // Cloned elements keep attachEvent handlers, we use addEventListener on IE9+ - support.noCloneEvent = !!div.addEventListener; - - // Support: IE<9 - // Since attributes and properties are the same in IE, - // cleanData must set properties to undefined rather than use removeAttribute - div[ jQuery.expando ] = 1; - support.attributes = !div.getAttribute( jQuery.expando ); -} )(); - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - option: [ 1, "" ], - legend: [ 1, "
            ", "
            " ], - area: [ 1, "", "" ], - - // Support: IE8 - param: [ 1, "", "" ], - thead: [ 1, "", "
            " ], - tr: [ 2, "", "
            " ], - col: [ 2, "", "
            " ], - td: [ 3, "", "
            " ], - - // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, - // unless wrapped in a div with non-breaking characters in front of it. - _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
            ", "
            " ] -}; - -// Support: IE8-IE9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - - -function getAll( context, tag ) { - var elems, elem, - i = 0, - found = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== "undefined" ? - context.querySelectorAll( tag || "*" ) : - undefined; - - if ( !found ) { - for ( found = [], elems = context.childNodes || context; - ( elem = elems[ i ] ) != null; - i++ - ) { - if ( !tag || jQuery.nodeName( elem, tag ) ) { - found.push( elem ); - } else { - jQuery.merge( found, getAll( elem, tag ) ); - } - } - } - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], found ) : - found; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var elem, - i = 0; - for ( ; ( elem = elems[ i ] ) != null; i++ ) { - jQuery._data( - elem, - "globalEval", - !refElements || jQuery._data( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/, - rtbody = / from table fragments - if ( !support.tbody ) { - - // String was a , *may* have spurious - elem = tag === "table" && !rtbody.test( elem ) ? - tmp.firstChild : - - // String was a bare or - wrap[ 1 ] === "
            " && !rtbody.test( elem ) ? - tmp : - 0; - - j = elem && elem.childNodes.length; - while ( j-- ) { - if ( jQuery.nodeName( ( tbody = elem.childNodes[ j ] ), "tbody" ) && - !tbody.childNodes.length ) { - - elem.removeChild( tbody ); - } - } - } - - jQuery.merge( nodes, tmp.childNodes ); - - // Fix #12392 for WebKit and IE > 9 - tmp.textContent = ""; - - // Fix #12392 for oldIE - while ( tmp.firstChild ) { - tmp.removeChild( tmp.firstChild ); - } - - // Remember the top-level container for proper cleanup - tmp = safe.lastChild; - } - } - } - - // Fix #11356: Clear elements from fragment - if ( tmp ) { - safe.removeChild( tmp ); - } - - // Reset defaultChecked for any radios and checkboxes - // about to be appended to the DOM in IE 6/7 (#8060) - if ( !support.appendChecked ) { - jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); - } - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( safe.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - tmp = null; - - return safe; -} - - -( function() { - var i, eventName, - div = document.createElement( "div" ); - - // Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events) - for ( i in { submit: true, change: true, focusin: true } ) { - eventName = "on" + i; - - if ( !( support[ i ] = eventName in window ) ) { - - // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) - div.setAttribute( eventName, "t" ); - support[ i ] = div.attributes[ eventName ].expando === false; - } - } - - // Null elements to avoid leaks in IE. - div = null; -} )(); - - -var rformElems = /^(?:input|select|textarea)$/i, - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE9 -// See #13393 for more info -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - var tmp, events, t, handleObjIn, - special, eventHandle, handleObj, - handlers, type, namespaces, origType, - elemData = jQuery._data( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && - ( !e || jQuery.event.triggered !== e.type ) ? - jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : - undefined; - }; - - // Add elem as a property of the handle fn to prevent a memory leak - // with IE non-native events - eventHandle.elem = elem; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener/attachEvent if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - var j, handleObj, tmp, - origCount, t, events, - special, handlers, type, - namespaces, origType, - elemData = jQuery.hasData( elem ) && jQuery._data( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - - // removeData also checks for emptiness and clears the expando if empty - // so use it instead of delete - jQuery._removeData( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - var handle, ontype, cur, - bubbleType, special, tmp, i, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && - jQuery._data( cur, "handle" ); - - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( - ( !special._default || - special._default.apply( eventPath.pop(), data ) === false - ) && acceptData( elem ) - ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction() check here because IE6/7 fails that test. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - try { - elem[ type ](); - } catch ( e ) { - - // IE<9 dies on focus/blur to hidden element (#1486,#12518) - // only reproducible on winXP IE8 native, not IE9 in IE8 mode - } - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Support (at least): Chrome, IE9 - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // - // Support: Firefox<=42+ - // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) - if ( delegateCount && cur.nodeType && - ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { - - /* jshint eqeqeq: false */ - for ( ; cur != this; cur = cur.parentNode || this ) { - /* jshint eqeqeq: true */ - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push( { elem: cur, handlers: matches } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: IE<9 - // Fix target property (#1925) - if ( !event.target ) { - event.target = originalEvent.srcElement || document; - } - - // Support: Safari 6-8+ - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Support: IE<9 - // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) - event.metaKey = !!event.metaKey; - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + - "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split( " " ), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: ( "button buttons clientX clientY fromElement offsetX offsetY " + - "pageX pageY screenX screenY toElement" ).split( " " ), - filter: function( event, original ) { - var body, eventDoc, doc, - button = original.button, - fromElement = original.fromElement; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + - ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + - ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && fromElement ) { - event.relatedTarget = fromElement === event.target ? - original.toElement : - fromElement; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - try { - this.focus(); - return false; - } catch ( e ) { - - // Support: IE<9 - // If we error on focus to hidden element (#1486, #12518), - // let .trigger() run the handlers - } - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - // Piggyback on a donor event to simulate a different one - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - - // Previously, `originalEvent: {}` was set here, so stopPropagation call - // would not be triggered on donor event, since in our own - // jQuery.event.stopPropagation function we had a check for existence of - // originalEvent.stopPropagation method, so, consequently it would be a noop. - // - // Guard for simulated events was moved to jQuery.event.stopPropagation function - // since `originalEvent` should point to the original event for the - // constancy with other events and for more focused logic - } - ); - - jQuery.event.trigger( e, null, elem ); - - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } - } : - function( elem, type, handle ) { - var name = "on" + type; - - if ( elem.detachEvent ) { - - // #8545, #7054, preventing memory leaks for custom events in IE6-8 - // detachEvent needed property on element, by name of that event, - // to properly expose it to GC - if ( typeof elem[ name ] === "undefined" ) { - elem[ name ] = null; - } - - elem.detachEvent( name, handle ); - } - }; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: IE < 9, Android < 4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - if ( !e ) { - return; - } - - // If preventDefault exists, run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // Support: IE - // Otherwise set the returnValue property of the original event to false - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( !e || this.isSimulated ) { - return; - } - - // If stopPropagation exists, run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - - // Support: IE - // Set the cancelBubble property of the original event to true - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && e.stopImmediatePropagation ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://code.google.com/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -// IE submit delegation -if ( !support.submit ) { - - jQuery.event.special.submit = { - setup: function() { - - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Lazy-add a submit handler when a descendant form may potentially be submitted - jQuery.event.add( this, "click._submit keypress._submit", function( e ) { - - // Node name check avoids a VML-related crash in IE (#9807) - var elem = e.target, - form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? - - // Support: IE <=8 - // We use jQuery.prop instead of elem.form - // to allow fixing the IE8 delegated submit issue (gh-2332) - // by 3rd party polyfills/workarounds. - jQuery.prop( elem, "form" ) : - undefined; - - if ( form && !jQuery._data( form, "submit" ) ) { - jQuery.event.add( form, "submit._submit", function( event ) { - event._submitBubble = true; - } ); - jQuery._data( form, "submit", true ); - } - } ); - - // return undefined since we don't need an event listener - }, - - postDispatch: function( event ) { - - // If form was submitted by the user, bubble the event up the tree - if ( event._submitBubble ) { - delete event._submitBubble; - if ( this.parentNode && !event.isTrigger ) { - jQuery.event.simulate( "submit", this.parentNode, event ); - } - } - }, - - teardown: function() { - - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Remove delegated handlers; cleanData eventually reaps submit handlers attached above - jQuery.event.remove( this, "._submit" ); - } - }; -} - -// IE change delegation and checkbox/radio fix -if ( !support.change ) { - - jQuery.event.special.change = { - - setup: function() { - - if ( rformElems.test( this.nodeName ) ) { - - // IE doesn't fire change on a check/radio until blur; trigger it on click - // after a propertychange. Eat the blur-change in special.change.handle. - // This still fires onchange a second time for check/radio after blur. - if ( this.type === "checkbox" || this.type === "radio" ) { - jQuery.event.add( this, "propertychange._change", function( event ) { - if ( event.originalEvent.propertyName === "checked" ) { - this._justChanged = true; - } - } ); - jQuery.event.add( this, "click._change", function( event ) { - if ( this._justChanged && !event.isTrigger ) { - this._justChanged = false; - } - - // Allow triggered, simulated change events (#11500) - jQuery.event.simulate( "change", this, event ); - } ); - } - return false; - } - - // Delegated event; lazy-add a change handler on descendant inputs - jQuery.event.add( this, "beforeactivate._change", function( e ) { - var elem = e.target; - - if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "change" ) ) { - jQuery.event.add( elem, "change._change", function( event ) { - if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { - jQuery.event.simulate( "change", this.parentNode, event ); - } - } ); - jQuery._data( elem, "change", true ); - } - } ); - }, - - handle: function( event ) { - var elem = event.target; - - // Swallow native change events from checkbox/radio, we already triggered them above - if ( this !== elem || event.isSimulated || event.isTrigger || - ( elem.type !== "radio" && elem.type !== "checkbox" ) ) { - - return event.handleObj.handler.apply( this, arguments ); - } - }, - - teardown: function() { - jQuery.event.remove( this, "._change" ); - - return !rformElems.test( this.nodeName ); - } - }; -} - -// Support: Firefox -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome, Safari -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - jQuery._removeData( doc, fix ); - } else { - jQuery._data( doc, fix, attaches ); - } - } - }; - } ); -} - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - }, - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -var rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, - rnoshimcache = new RegExp( "<(?:" + nodeNames + ")[\\s/>]", "i" ), - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, - - // Support: IE 10-11, Edge 10240+ - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g, - safeFragment = createSafeFragment( document ), - fragmentDiv = safeFragment.appendChild( document.createElement( "div" ) ); - -// Support: IE<8 -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName( "tbody" )[ 0 ] || - elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( jQuery.find.attr( elem, "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute( "type" ); - } - return elem; -} - -function cloneCopyEvent( src, dest ) { - if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { - return; - } - - var type, i, l, - oldData = jQuery._data( src ), - curData = jQuery._data( dest, oldData ), - events = oldData.events; - - if ( events ) { - delete curData.handle; - curData.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - - // make the cloned public data object a copy from the original - if ( curData.data ) { - curData.data = jQuery.extend( {}, curData.data ); - } -} - -function fixCloneNodeIssues( src, dest ) { - var nodeName, e, data; - - // We do not need to do anything for non-Elements - if ( dest.nodeType !== 1 ) { - return; - } - - nodeName = dest.nodeName.toLowerCase(); - - // IE6-8 copies events bound via attachEvent when using cloneNode. - if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { - data = jQuery._data( dest ); - - for ( e in data.events ) { - jQuery.removeEvent( dest, e, data.handle ); - } - - // Event data gets referenced instead of copied if the expando gets copied too - dest.removeAttribute( jQuery.expando ); - } - - // IE blanks contents when cloning scripts, and tries to evaluate newly-set text - if ( nodeName === "script" && dest.text !== src.text ) { - disableScript( dest ).text = src.text; - restoreScript( dest ); - - // IE6-10 improperly clones children of object elements using classid. - // IE10 throws NoModificationAllowedError if parent is null, #12132. - } else if ( nodeName === "object" ) { - if ( dest.parentNode ) { - dest.outerHTML = src.outerHTML; - } - - // This path appears unavoidable for IE9. When cloning an object - // element in IE9, the outerHTML strategy above is not sufficient. - // If the src has innerHTML and the destination does not, - // copy the src.innerHTML into the dest.innerHTML. #10324 - if ( support.html5Clone && ( src.innerHTML && !jQuery.trim( dest.innerHTML ) ) ) { - dest.innerHTML = src.innerHTML; - } - - } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - - // IE6-8 fails to persist the checked state of a cloned checkbox - // or radio button. Worse, IE6-7 fail to give the cloned element - // a checked appearance if the defaultChecked value isn't also set - - dest.defaultChecked = dest.checked = src.checked; - - // IE6-7 get confused and end up setting the value of a cloned - // checkbox/radio button to an empty string instead of "on" - if ( dest.value !== src.value ) { - dest.value = src.value; - } - - // IE6-8 fails to return the selected option to the default selected - // state when cloning options - } else if ( nodeName === "option" ) { - dest.defaultSelected = dest.selected = src.defaultSelected; - - // IE6-8 fails to set the defaultValue to the correct value when - // cloning other types of input fields - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var first, node, hasScripts, - scripts, doc, fragment, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !jQuery._data( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( - ( node.text || node.textContent || node.innerHTML || "" ) - .replace( rcleanScript, "" ) - ); - } - } - } - } - - // Fix #11809: Avoid leaking memory - fragment = first = null; - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - elems = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = elems[ i ] ) != null; i++ ) { - - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var destElements, node, clone, i, srcElements, - inPage = jQuery.contains( elem.ownerDocument, elem ); - - if ( support.html5Clone || jQuery.isXMLDoc( elem ) || - !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { - - clone = elem.cloneNode( true ); - - // IE<=8 does not properly clone detached, unknown element nodes - } else { - fragmentDiv.innerHTML = elem.outerHTML; - fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); - } - - if ( ( !support.noCloneEvent || !support.noCloneChecked ) && - ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - // Fix all IE cloning issues - for ( i = 0; ( node = srcElements[ i ] ) != null; ++i ) { - - // Ensure that the destination node is not null; Fixes #9587 - if ( destElements[ i ] ) { - fixCloneNodeIssues( node, destElements[ i ] ); - } - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0; ( node = srcElements[ i ] ) != null; i++ ) { - cloneCopyEvent( node, destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - destElements = srcElements = node = null; - - // Return the cloned set - return clone; - }, - - cleanData: function( elems, /* internal */ forceAcceptData ) { - var elem, type, id, data, - i = 0, - internalKey = jQuery.expando, - cache = jQuery.cache, - attributes = support.attributes, - special = jQuery.event.special; - - for ( ; ( elem = elems[ i ] ) != null; i++ ) { - if ( forceAcceptData || acceptData( elem ) ) { - - id = elem[ internalKey ]; - data = id && cache[ id ]; - - if ( data ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Remove cache only if it was not already removed by jQuery.event.remove - if ( cache[ id ] ) { - - delete cache[ id ]; - - // Support: IE<9 - // IE does not allow us to delete expando properties from nodes - // IE creates expando attributes along with the property - // IE does not have a removeAttribute function on Document nodes - if ( !attributes && typeof elem.removeAttribute !== "undefined" ) { - elem.removeAttribute( internalKey ); - - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://code.google.com/p/chromium/issues/detail?id=378607 - } else { - elem[ internalKey ] = undefined; - } - - deletedIds.push( id ); - } - } - } - } - } -} ); - -jQuery.fn.extend( { - - // Keep domManip exposed until 3.0 (gh-2225) - domManip: domManip, - - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().append( - ( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value ) - ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - } - - // Remove any remaining nodes - while ( elem.firstChild ) { - elem.removeChild( elem.firstChild ); - } - - // If this is a select, ensure that it displays empty (#12336) - // Support: IE<9 - if ( elem.options && jQuery.nodeName( elem, "select" ) ) { - elem.options.length = 0; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined ) { - return elem.nodeType === 1 ? - elem.innerHTML.replace( rinlinejQuery, "" ) : - undefined; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - ( support.htmlSerialize || !rnoshimcache.test( value ) ) && - ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - - // Remove element nodes and prevent memory leaks - elem = this[ i ] || {}; - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - i = 0, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); - - -var iframe, - elemdisplay = { - - // Support: Firefox - // We have to pre-define these values for FF (#10227) - HTML: "block", - BODY: "block" - }; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ - -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - display = jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = ( iframe || jQuery( " - - diff --git a/miniwob-sandbox/turk-server/static/flight/flight-common/inject.js b/miniwob-sandbox/turk-server/static/flight/flight-common/inject.js deleted file mode 100644 index 30aa624..0000000 --- a/miniwob-sandbox/turk-server/static/flight/flight-common/inject.js +++ /dev/null @@ -1,368 +0,0 @@ -// Utilities for the child page -var $miniwob = {}; - -// ################################################ -// FAKE DATE (before anything else loads) - -// Inspired by https://stackoverflow.com/a/44497384 -// Shift the date by a certain offset -(function (year, month, day) { - var startTime = Date.now(); - var fakeTime = new Date(year, month, day).getTime(); - var __Date = Date; - Date = function() { - if (arguments.length > 0) { - return new __Date(...arguments); - } else { - return new __Date(__Date.now() - startTime + fakeTime); - } - } - Date.prototype = __Date.prototype; -})( - // 2 is actually March - 2017, 2, 1 -); - -// ################################################ -// Intercept events - -window.addEventListener('load', function () { - - // Intercept form submission - // The form must have class name 'miniwob-main-form' - // Inspired by https://code.google.com/archive/p/form-serialize/ - var form = document.getElementsByClassName('miniwob-main-form')[0]; - form.addEventListener('submit', function (event) { - var data = []; - [].forEach.call(form.elements, function (elt, i) { - if (!elt.name) return; - switch (elt.tagName) { - case 'INPUT': - switch (elt.type) { - case 'checkbox': - case 'radio': - if (elt.checked) { - data.push([elt.tagName, elt.type, elt.name, elt.value]); - } - break; - default: - data.push([elt.tagName, elt.type, elt.name, elt.value]); - break; - } - break; - case 'TEXTAREA': - data.push([elt.tagName, elt.type, elt.name, elt.value]); - break; - case 'SELECT': - switch (elt.type) { - case 'select-multiple': - [].forEach.call(elt.options, function (opt) { - if (opt.selected) - data.push([elt.tagName, elt.type, elt.name, opt.value]); - }); - break; - default: - data.push([elt.tagName, elt.type, elt.name, elt.value]); - } - break; - case 'BUTTON': - switch (elt.type) { - case 'reset': - case 'submit': - case 'button': - data.push([elt.tagName, elt.type, elt.name, elt.value]); - break; - } - break; - } - }); - window.parent.core.flightSubmit(data, $miniwob.recorder.data); - event.preventDefault(); - return false; - }); - - // Loaded! - window.parent.WOB_TASK_READY = true; - -}); - -// ################################################ -// getDOMInfo reimplemented here - -$miniwob.previousDOMInfo = {}; -$miniwob.nextRefCode = 1; -$miniwob.nextTextRefCode = -1; -$miniwob.resetRefCode = function () { - $miniwob.nextRefCode = 1; - $miniwob.nextTextRefCode = -1; -} - -/* Returns a nested object (dict) with all visible DOM element information. - - Special handling for Text nodes: - - Text nodes with only whitespaces are discarded. - - If the Text node is the only child, discard that Text node - and reassign its text to the parent Element. - - If the Text node is not the only child, it is broken into - pseudo-Elements with tag "t". - - Assume that the page is refreshed before each episode. -*/ -$miniwob.getDOMInfo = function (baseElement) { - $miniwob.previousDOMInfo = {} - - function getDOMInfoOfElement(element) { - var rect = element.getBoundingClientRect(); - if (rect.width == 0 || rect.height == 0) return; - var answer = { - tag: element.tagName, - left: rect.left, top: rect.top, - width: rect.width, height: rect.height, - children: [], - id: element.id, - classes: element.className, - }; - // Assign ref code - if (element.dataset.wob_ref !== undefined) { - answer.ref = +element.dataset.wob_ref; - } else { - element.dataset.wob_ref = answer.ref = $miniwob.nextRefCode++; - } - // Record styles - var computedStyle = window.getComputedStyle(element); - answer.bgColor = computedStyle.backgroundColor; - answer.fgColor = computedStyle.color; - // Indicate if the element is being focused on - if (document.activeElement === element) { - answer.focused = true; - } - // Indicate if the element is tampered with in this episode - if (element.dataset.tampered !== undefined) { - answer.tampered = true; - } - // For recording demonstrations: Record the target - if (element.dataset.recording_target) { - answer.recordingTarget = true; - } - // For , also add input type and value - if (element instanceof HTMLInputElement) { - var inputType = element.type; - answer.tag += '_' + inputType; - if (inputType === 'checkbox' || inputType === 'radio') { - answer.value = element.checked; - } else { - answer.value = element.value; - } - } else if (element instanceof HTMLTextAreaElement) { - answer.value = element.value; - } - $miniwob.previousDOMInfo[answer.ref] = element; - // Read the children - var filteredChildNodes = [], textOnly = true; - element.childNodes.forEach(function (child) { - if (child instanceof Text) { - if (!/^\s*$/.test(child.data)) { - filteredChildNodes.push(child); - } - } else if (child instanceof Element) { - filteredChildNodes.push(child); - textOnly = false; - } - }); - if (textOnly) { - answer.text = filteredChildNodes.map(function (x) { - return x.data.trim(); - }).join(' '); - } else { - filteredChildNodes.forEach(function (child) { - if (child instanceof Text) { - addDOMInfosOfTextNode(child, answer.children); - } else { - child = getDOMInfoOfElement(child); - if (child !== undefined) - answer.children.push(child); - } - }); - } - return answer; - } - - function addDOMInfosOfTextNode(textNode, collection) { - // Break the text node into multiple nodes - // Each node only occupies a single rectangle boundary - var range = document.createRange(); - range.selectNodeContents(textNode); - var absolute_start = range.startOffset, absolute_end = range.endOffset; - var start = absolute_start; - var itr = 0; - while (start < absolute_end) { - // Binary search on the next end point - var end_lower_bound = start + 1, - end_upper_bound = absolute_end, - l = range.getClientRects().length, - end = Math.floor((end_lower_bound * (l-1) + end_upper_bound) / l); - while (end_lower_bound <= end_upper_bound) { - range.setEnd(textNode, end); - if (range.getClientRects().length == 1) { - end_lower_bound = end + 1; - end = Math.min(end_lower_bound + 5, Math.floor((end_lower_bound + end_upper_bound) / 2)); - } else { - end_upper_bound = end - 1; - end = Math.max(end_upper_bound - 5, Math.floor((end_lower_bound + end_upper_bound) / 2)); - } - if (itr++ > 1000) throwTextNodeError('Text node computation stuck in an infinite loop'); - } - range.setEnd(textNode, end); - var rects = range.getClientRects(); - if (rects.length !== 1) throwTextNodeError('Text node computation incorrect'); - var rect = rects[0], text = textNode.data.substring(start, end).trim(); - if (rect.width > 0 && rect.height > 0 && text) { - var answer = { - tag: "t", - left: rect.left, top: rect.top, - width: rect.width, height: rect.height, - ref: $miniwob.nextTextRefCode--, - children: [], - text: text, - }; - collection.push(answer); - } - start = end; - range.setEnd(textNode, absolute_end); - range.setStart(textNode, start); - if (itr++ > 1000) throwTextNodeError('Text node computation stuck in an infinite loop'); - } - } - - function throwTextNodeError(message) { - alert(message); - throw message; - } - - return getDOMInfoOfElement(baseElement || document.body); -} - -/* Click on an element regardless of its location or visibility. - - Args: - ref: The ref value generated by the previous call to getDOMInfo -*/ -$miniwob.elementClick = function (ref) { - try { - var element = $miniwob.previousDOMInfo[ref]; - element.click(); - element.focus(); - return true; - } catch (err) { - return err.message; - } -} - -// ################################################ -// Record demonstrations - -// Add event listeners -$miniwob.recorder = {} -$miniwob.recorder.LISTENERS = [ - 'click', - 'dblclick', - 'mousedown', - 'mouseup', - 'keypress', - 'keydown', - 'keyup', - 'scroll', -]; -$miniwob.recorder.setup = function () { - $miniwob.recorder.startTime = new Date().getTime(); - $miniwob.recorder.data = {states: []}; - $miniwob.recorder.LISTENERS.forEach(function (name) { - document.addEventListener(name, $miniwob.recorder['on' + name], true); - document.addEventListener(name, $miniwob.recorder['on' + name], false); - }); - $miniwob.recorder.isRecording = true; - $miniwob.recorder.addState(null, null); -} - -// Add a state to the recording data -$miniwob.recorder.addState = function (event, action) { - if (!$miniwob.recorder.isRecording) return; - if (event && action) - action.timing = event.eventPhase; - console.log('Adding state', action); - var state = { - 'time': new Date().getTime() - $miniwob.recorder.startTime, - 'action': action, - }; - if (event && event.target && event.target.dataset) - event.target.dataset.recording_target = true; - state.dom = $miniwob.getDOMInfo(); - if (event && event.target && event.target.dataset) - delete event.target.dataset.recording_target; - $miniwob.recorder.data.states.push(state); -} - -// Actions -$miniwob.recorder.ondblclick = function (event) { - $miniwob.recorder.addState(event, { - 'type': 'dblclick', - 'x': event.pageX, 'cx': event.clientX, - 'y': event.pageY, 'cy': event.clientY, - }); -} -$miniwob.recorder.onclick = function (event) { - $miniwob.recorder.addState(event, { - 'type': 'click', - 'x': event.pageX, 'cx': event.clientX, - 'y': event.pageY, 'cy': event.clientY, - }); -} -$miniwob.recorder.onmousedown = function (event) { - $miniwob.recorder.addState(event, { - 'type': 'mousedown', - 'x': event.pageX, 'cx': event.clientX, - 'y': event.pageY, 'cy': event.clientY, - }); -} -$miniwob.recorder.onmouseup = function (event) { - $miniwob.recorder.addState(event, { - 'type': 'mouseup', - 'x': event.pageX, 'cx': event.clientX, - 'y': event.pageY, 'cy': event.clientY, - }); -} - -$miniwob.recorder.onkeypress = function (event) { - $miniwob.recorder.addState(event, { - 'type': 'keypress', - 'keyCode': event.keyCode, - 'charCode': event.charCode, - }); -} -$miniwob.recorder.onkeydown = function (event) { - $miniwob.recorder.addState(event, { - 'type': 'keydown', - 'keyCode': event.keyCode, - 'charCode': event.charCode, - }); -} -$miniwob.recorder.onkeyup = function (event) { - $miniwob.recorder.addState(event, { - 'type': 'keyup', - 'keyCode': event.keyCode, - 'charCode': event.charCode, - }); -} - -$miniwob.recorder.onscroll = function (event) { - // Scroll is super redundant; only keep the first one - if ($miniwob.recorder.data.states.length) { - var lastState = $miniwob.recorder.data.states[$miniwob.recorder.data.states.length - 1]; - if (lastState.action && lastState.action.type === 'scroll') - return; - //$miniwob.recorder.data.states.pop(); // <-- use this for keeping the last one - } - $miniwob.recorder.addState(event, { - 'type': 'scroll', - }); -} diff --git a/miniwob-sandbox/turk-server/static/flight/flight-common/wrapper.css b/miniwob-sandbox/turk-server/static/flight/flight-common/wrapper.css deleted file mode 100644 index d0f6a7c..0000000 --- a/miniwob-sandbox/turk-server/static/flight/flight-common/wrapper.css +++ /dev/null @@ -1,61 +0,0 @@ -/* ################ SIZING ################ */ - -#wrap, #sync-task-cover { - height: 667px; - width: 375px; -} -#sync-task-cover { - font-size: 200%; -} - -#wrap { - overflow-x: auto; - overflow-y: auto; - border: 0; -} - -#reward-display { - position: static; - height: auto; - width: auto; - margin: 0; - padding: 5px; -} -#reward-display .info { - margin: 5px 0; -} - -#query-wrap { - position: absolute; - top: 0; - left: 380px; - width: 260px; - height: auto; -} -#query { - height: auto; - display: none; -} -#query-pretty { - background-color: #EFF; - font-size: 14px; - padding: 3px; -} -#query-pretty .mode { - font-weight: bold; - display: none; -} -#query-pretty table { - border-collapse: collapse; -} -#query-pretty th, #query-pretty td { - border: 1px solid #ddd; - padding: 2px 8px; - width: 50%; - text-align: left; -} -#reward-reason { - background-color: #FEF; - font-size: 14px; - padding: 3px; -} diff --git a/miniwob-sandbox/turk-server/static/flight/flight-common/wrapper.js b/miniwob-sandbox/turk-server/static/flight/flight-common/wrapper.js deleted file mode 100644 index cf06038..0000000 --- a/miniwob-sandbox/turk-server/static/flight/flight-common/wrapper.js +++ /dev/null @@ -1,140 +0,0 @@ -// ################################################ -// Additional methods for flight domain - -core.flightChildWindow = function () { - return document.getElementById('wrap').contentWindow; -} - -window.addEventListener('load', function () { - var correctLocation = null; - - document.getElementById('wrap').addEventListener('load', function (event) { - var currentLocation = this.contentWindow.location.href; - if (correctLocation === null) { - correctLocation = currentLocation; - } else if (correctLocation != currentLocation) { - if (core.EP_TIMER !== null) { - document.getElementById('reward-reason').innerHTML = ( - 'BAD: Navigated away to ' + currentLocation); - } - core.endEpisode(-1, false, 'BAD: Navigated away to ' + currentLocation); - return; - } - if (recorder.isRecording) { - // Tell the child to register event listeners - core.flightChildWindow().$miniwob.recorder.setup(); - } - }); - -}); - -// ################################################ -// Dataset and validation - -// The child page should call this method on form submit -core.flightSubmit = function (data, recorder_data) { - var reward = core.validateForm(data); - var reason = document.getElementById('reward-reason').textContent; - core.endEpisode(reward, false, reason, recorder_data); -} - -/** - Overrides genProblem. - Set core.currentQuestion as a sampled problem. Also starts the task. - Does not return anything. - */ -var genProblem = function () { - core.currentQuestion = core.sampleQuestion(); - var instruction = core.currentQuestion.instruction; - document.getElementById('query').textContent = JSON.stringify(instruction); - var queryPretty = []; - Object.keys(instruction).forEach(function (key) { - queryPretty.push(''); - }); - document.getElementById('query-pretty').innerHTML = ( - '
            Mode: ' + WOB_DATA_MODE + '
            ' + - '
            ' + key + '' + instruction[key] + '
            ' + queryPretty.join('') + '
            '); - document.getElementById('reward-reason').innerHTML = ''; - WOB_TASK_READY = false; // The child page must set this to true - document.getElementById('wrap').src = 'index.html'; -} - -/** - Return an object that looks like this: - { - "instruction": {"key1", "value1", ...} - "request": {"key1", "value1", ...} - } -*/ -core.sampleQuestion = function () { - if (WOB_DATA_MODE == 'train' || WOB_DATA_MODE == 'default') - return core.sample(DATA_TRAIN); - else if (WOB_DATA_MODE == 'test') - return core.sample(DATA_TEST); - else - throw 'Incorrect WOB_DATA_MODE'; -} - -// List of required fields -// The reward is -1 if any of these fields is not filled -core.requiredFields = []; - -/** - Validate the form and return the reward. - data format: list of [tag, type, name, value] -*/ -core.validateForm = function(data) { - // Convert to a dict - var dataDict = {}; - data.forEach(function (datum) { - dataDict[datum[2]] = datum[3]; - }); - // Compute accuracy - var target = core.currentQuestion.request; - var score = 0., n = 0., wrongFields = []; - for (var key in target) { - n++; - var expected = target[key], predicted = dataDict[key], - check = (expected == predicted); - console.log([check, key, expected, predicted]); - if (!check) { - wrongFields.push( - '' + key + '
            Correct: ' + expected + '
            Entered: ' + predicted); - } - score += check; - } - // Validate the required fields - if (!core.validateRequiredFields(dataDict)) return -1; - // Display reasons - if (score == n) { - document.getElementById('reward-reason').innerHTML = 'GOOD'; - } else { - document.getElementById('reward-reason').innerHTML = ( - 'PARTIAL: Incorrect fields:
            ' + wrongFields.join('
            ')); - } - return score / n; -} - -core.validateRequiredFields = function(dataDict) { - for (var i = 0; i < core.requiredFields.length; i++) { - var key = core.requiredFields[i]; - if (!(dataDict[key] || '').length) { - console.log(['missing required field', key]); - document.getElementById('reward-reason').innerHTML = ( - 'BAD: Missing required field ' + key); - return false; - } - } - return true; -} - -// ################################################ -// Function overrides (delegate to the iframe) - -core.getDOMInfo = function () { - return core.flightChildWindow().$miniwob.getDOMInfo(); -} - -core.elementClick = function (ref) { - return core.flightChildWindow().$miniwob.elementClick(ref); -} diff --git a/miniwob-sandbox/turk-server/task.py b/miniwob-sandbox/turk-server/task.py deleted file mode 100755 index e342d88..0000000 --- a/miniwob-sandbox/turk-server/task.py +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env python -import argparse -import logging -import os -import random -import shutil -import sys -import time - -from bottle import route, run, debug, request, static_file - - -################################ -# Static files - -@route('/flight/') -def static_flight(path): - """Return any static file in the files directory.""" - return static_file(path, root='static/flight') - -@route('/core/') -def static_core(path): - """Return any static file in the files directory.""" - return static_file(path, root='static/core') - - -################################ -# Recording demo - -def get_filename(): - return (time.strftime('%m%d%H%M%S', time.gmtime()) + - '{:.6f}'.format(random.random()) + - '{:.6f}'.format(random.random())) - -@route('/record', method='POST') -def record_demo(): - """Record demonstrations.""" - submission = request.POST - filename = get_filename() - with open(os.path.join('demos', filename), 'w') as fout: - shutil.copyfileobj(request.body, fout) - print 'Saved to {}'.format(filename) - return filename - - -################################ -# Launch the server - -def launch(): - parser = argparse.ArgumentParser() - parser.add_argument('-p', '--port', default=8080, type=int) - parser.add_argument('-d', '--debug', action='store_true', default=False) - parser.add_argument('-s', '--ssl', action='store_true', default=False) - args = parser.parse_args() - debug(args.debug) - if args.ssl: - import server - run(host='0.0.0.0', port=args.port, server=server.SSLCherryPyServer) - else: - run(host='0.0.0.0', port=args.port) - -if __name__ == '__main__': - launch() diff --git a/miniwob-sandbox/turk-www-flight/core/core.css b/miniwob-sandbox/turk-www-flight/core/core.css deleted file mode 100644 index c9aa117..0000000 --- a/miniwob-sandbox/turk-www-flight/core/core.css +++ /dev/null @@ -1,128 +0,0 @@ -body { - background-color: #555; - font-family: Arial; - font-size: 14px; - margin: 0; - padding: 0; -} - -#wrap { - height:210px; - background-color: white; - width:160px; -} - -#query { - background-color: #FF0; - font-size: 10px; - height: 44px; - padding: 3px; -} - -#area { - font-size: 10px; - padding: 2px; -} - -#area input[type=text] { - width: 120px; -} - -#area textarea { - height: 25px; - width: 120px; -} - -#query .bold, #area .bold { font-weight: bold; } - -/* reward display CSS below */ -#reward-display { - font-size: 14px; - height: 210px; - width: 160px; - position: absolute; - left: 165px; - top: 0px; - background-color: white; -} - -#reward-display .info { - display: block; - margin: 10px 5px; -} - -#reward-display #preview-mode-wrapper { - display: none; - color: #C00; - font-size: 200%; -} - -#reward-display span { - font-weight: bold; -} - -#reward-avg { - display: inline-block; -} - -#area button.secondary-action { - padding: 6px 25px; -} - -/* task cover for synchronization */ -#sync-task-cover { - position: absolute; - left: 0; - top: 0; - width: 160px; - height: 210px; - background-color: #111; - color: #eee; - text-align: center; - line-height: 210px; - font-size: 20px; - cursor: pointer; - z-index: 9999; -} -#sync-task-cover.cover-submit { - background-color: #050; -} -#sync-task-cover.cover-transparent { - background-color: transparent; - color: transparent; - cursor: not-allowed; -} - -/* Instructions */ -#instructions { - position: absolute; - width: 350px; - padding: 0 10px 10px; - left: 645px; - top: 0px; - background-color: white; - line-height: 1.3; -} - -#instructions .red { - color: #A00; -} - -#instructions p, #Instructions h1 { - margin: .4em 0; -} -#instructions h1 { - font-size: 115%; -} - -#submitButton { - width: 80%; - text-align: center; -} - -#warning { - padding: 10px; - background-color: white; - color: #a00; - text-align: center; -} diff --git a/miniwob-sandbox/turk-www-flight/core/core.js b/miniwob-sandbox/turk-www-flight/core/core.js deleted file mode 100644 index e26a7ad..0000000 --- a/miniwob-sandbox/turk-www-flight/core/core.js +++ /dev/null @@ -1,629 +0,0 @@ -var core = {}; - -// Warning right off the bat -window.addEventListener("load", function () { - var warningDiv = document.createElement('div'); - warningDiv.setAttribute('id','warning'); - warningDiv.innerHTML = "

            Important: Please use Google Chrome on desktop. The task may not work correctly on other browsers!
            Please report any problem to the requester.

            "; - document.body.appendChild(warningDiv); -}); - -// various common utilities - -// seedrandom.min.js -- https://github.com/davidbau/seedrandom -// Usage: Math.seedrandom('hello.'); -- Set the seed -// Usage: Math.seedrandom(); -- Automatically set a random seed -!function(a,b){function c(c,j,k){var n=[];j=1==j?{entropy:!0}:j||{};var s=g(f(j.entropy?[c,i(a)]:null==c?h():c,3),n),t=new d(n),u=function(){for(var a=t.g(m),b=p,c=0;a=r;)a/=2,b/=2,c>>>=1;return(a+c)/b};return u.int32=function(){return 0|t.g(4)},u.quick=function(){return t.g(4)/4294967296},u.double=u,g(i(t.S),a),(j.pass||k||function(a,c,d,f){return f&&(f.S&&e(f,t),a.state=function(){return e(t,{})}),d?(b[o]=a,c):a})(u,s,"global"in j?j.global:this==b,j.state)}function d(a){var b,c=a.length,d=this,e=0,f=d.i=d.j=0,g=d.S=[];for(c||(a=[c++]);e 0 ? Math.floor(WOB_RAW_REWARD_GLOBAL * 10) / 10 : 0); - core.clearTimer(); - core.startEpisode(); -} - -// returns parameters passed in the url. -// e.g. ?topic=123&name=query+string in the url would return -// QueryString["topic"]; // 123 -// QueryString["name"]; // query string -// QueryString["nothere"]; // undefined (object) -core.QueryString = (function(a) { - if (a == "") return {}; - var b = {}; - for (var i = 0; i < a.length; ++i) - { - var p=a[i].split('=', 2); - if (p.length == 1) - b[p[0]] = ""; - else - b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " ")); - } - return b; -})(window.location.search.substr(1).split('&')); - -core.getTaskName = function () { - // TODO: Make this thing more generic - return 'flight.Alaska-auto'; - //var url = window.location.pathname; - //return url.substr(url.lastIndexOf('/') + 1).replace(/\.html/, ''); -} - -core.getOpt = function(d, k, def) { - var v = d[k] - return typeof v === 'undefined' ? def : v; -} - -core.DISPLAY_HTML = ` -
            - - 0 / 2 -
            -
            - - - -
            -
            - - - -
            -
            - -
            -
            - Preview mode. - You must ACCEPT the HIT before you can submit the results. -
            -`; - -core.INSTRUCTION_HTML = ` -

            Important: Please use Google Chrome on desktop. The task may not work correctly on other browsers!

            -

            Instructions

            -

            In each task, please demonstrate how to fill the search form to search for flights based on the given criteria.

            -

            You can submit the HIT after successfully completing 2 tasks.

            -

            Details

            -

            Required fields: You must fill in all city and date fields. If the flight is one-way, be sure to select the "One-way" option to disable the return date field.

            -

            If all required fields are filled but some fields are wrong, you will get partial credit.

            -

            Cities: Please use autocomplete to select the cities. For ambiguous airports, use the following:

            -

                Portland → Portland, OR (not MD)

            -

                Dallas → Dallas, TX (not Ft. Worth)

            -

                New York → the "All Airports" option

            -

                Baltimore → Baltimore, MD (not Washington DC)

            -

            Ticket Type: "Return flight" means round-trip flight (i.e., "One-way" option left unchecked)

            -

            Dates: Use the default month and year (which should be March 2017).

            -

            Seat type: Expand the "More search options" section to select the seat type.

            -

            Problems: If the interface gets stuck, try pressing the Reset button. If the problem persists, please contact the requester.

            -`; - -core.MTURK_FORM_HTML = ` - - -`; - -// create element via JS; appending the HTML template -// directly to the body will cause jQuery UI elements -// to freak out. -core.createDisplay = function(){ - var display = document.getElementById('reward-display'); - if(display === null) { - // Instruction - var instructionDiv = document.createElement('div'); - instructionDiv.setAttribute('id','instructions'); - instructionDiv.innerHTML = core.INSTRUCTION_HTML; - document.body.appendChild(instructionDiv); - // On-screen text - document.getElementById('query-pretty').textContent = - '(Flight criteria will appear here)'; - document.getElementById('reward-reason').textContent = - '(Feedback will appear here)'; - core.EPISODE_MAX_TIME = 120000; // OVERRIDE! - // Reward display - var rewardDiv = document.createElement('div'); - rewardDiv.setAttribute('id','reward-display'); - rewardDiv.innerHTML = core.DISPLAY_HTML; - document.getElementById('query-wrap').insertBefore( - rewardDiv, document.getElementById('query-pretty')); - document.getElementById('resetButton').onclick = function (e) { - core.endEpisode(-1, false, 'RESET'); - }; - // Turk form - var newForm = document.createElement('form'); - newForm.setAttribute('id','mturk_form'); - newForm.setAttribute('method','POST'); - newForm.innerHTML = core.MTURK_FORM_HTML; - document.body.appendChild(newForm); - if ((core.QueryString.turkSubmitTo || '').indexOf('workersandbox') !== -1) { - // Sandbox mode - newForm.setAttribute('action', "https://workersandbox.mturk.com/mturk/externalSubmit"); - } else if (core.QueryString.debug === 'true') { - // Debug mode - newForm.setAttribute('action', "javascript:alert('debug!')"); - } else { - // Real mode - newForm.setAttribute('action', "https://www.mturk.com/mturk/externalSubmit"); - } - document.getElementById('assignmentId').value = core.QueryString.assignmentId || 'ASSIGNMENT_ID_NOT_AVAILABLE'; - document.getElementById('mturkTaskName').value = core.getTaskName(); - } - core.updateDisplay(); -} - -core.updateDisplay = function(reward){ - core.wob_latest = core.wob_latest || '-'; - core.wob_scores = core.wob_scores || 0; - if (typeof reward !== 'undefined') { - core.wob_latest = +reward; - core.wob_scores += +reward; - } - - if(core.wob_latest !== '-'){ - var latestText = (core.wob_latest == 1 ? 'success' : core.wob_latest > 0 ? 'partial' : 'failure'); - var latestColor = (core.wob_latest == 1 ? 'green' : core.wob_latest > 0 ? 'orange' : 'red'); - document.getElementById('reward-last').setAttribute('style', 'color: ' + latestColor); - document.getElementById('reward-last').innerHTML = latestText; - } - - var total = core.wob_scores; - var totalColor = (total >= core.EPISODES_NEEDED ? 'green' : 'red'); - document.getElementById('reward-total').setAttribute('style', 'color: ' + totalColor); - document.getElementById('reward-total').innerHTML = total; -} - -core.countdownTimer = function(et){ - core.clearTimer(); - var episodeTime = et/1000; - var currentTime = et/1000; - var intervalTime = 1000; - // update the timer immediately to display the total episode - // time on start, eg. "10 / 10s" - updateTimer(); - // set an interval so that the timer text will be updated - // based on the intervalTime (ie. every 1sec) - core.CD_TIMER = setInterval(updateTimer, intervalTime); - - function updateTimer(){ - var cd = document.getElementById('timer-countdown'); - if (currentTime <= 0){ - cd.setAttribute('style', 'color: red'); - cd.innerHTML = '0 / ' + episodeTime + 's'; - window.clearInterval(core.CD_TIMER); - return; - } else { - var frac = currentTime / episodeTime; - if(frac > 0.75) { var col = 'green'; } - else if(frac > 0.5) { var col = 'orange'; } - else if(frac > 0.25) { var col = 'brown'; } - else { var col = 'red'; } - cd.setAttribute('style', 'color:' + col); - cd.innerHTML = currentTime + ' / ' + episodeTime + 'sec'; - currentTime-=intervalTime/1000; - } - } -}; - -core.clearTimer = function(){ - window.clearInterval(core.CD_TIMER); - var cd = document.getElementById('timer-countdown'); - cd.setAttribute('style', 'color: black'); - cd.innerHTML = '-'; -} - -// ################################ -// Custom getter - -core.getUtterance = function () { - var query = document.getElementById('query'); - return query.textContent.replace(/\s+/g, ' ').trim(); -} - -var previousDOMInfo = {}; -var nextRefCode = 1, nextTextRefCode = -1; -function resetRefCode() { - nextRefCode = 1; - nextTextRefCode = -1; -} - -/* Returns a nested object (dict) with all visible DOM element information. - - Special handling for Text nodes: - - Text nodes with only whitespaces are discarded. - - If the Text node is the only child, discard that Text node - and reassign its text to the parent Element. - - If the Text node is not the only child, it is broken into - pseudo-Elements with tag "t". -*/ -function getDOMInfo() { - previousDOMInfo = {} - - function getDOMInfoOfElement(element) { - if (element.id === 'reward-display' - || element.id === 'sync-task-cover' - || element.id === 'instructions' - || element.id === 'query') return; - var rect = element.getBoundingClientRect(); - if (rect.width == 0 || rect.height == 0) return; - var answer = { - tag: element.tagName, - left: rect.left, top: rect.top, - width: rect.width, height: rect.height, - children: [], - id: element.id, - classes: element.className, - }; - // Assign ref code - if (element.dataset.wob_ref !== undefined - && element.dataset.wob_eps === 'e' + WOB_EPISODE_ID) { - answer.ref = +element.dataset.wob_ref; - } else { - element.dataset.wob_ref = answer.ref = nextRefCode++; - element.dataset.wob_eps = 'e' + WOB_EPISODE_ID; - } - // Record styles - var computedStyle = window.getComputedStyle(element); - answer.bgColor = computedStyle.backgroundColor; - answer.fgColor = computedStyle.color; - // Indicate if the element is being focused on - if (document.activeElement === element) { - answer.focused = true; - } - // Indicate if the element is tampered with in this episode - if (element.dataset.tampered !== undefined - && element.dataset.tampered == 'e' + WOB_EPISODE_ID) { - answer.tampered = true; - } - // For recording demonstrations: Record the target - if (element.dataset.recording_target) { - answer.recordingTarget = true; - } - // For , also add input type and value - if (element instanceof HTMLInputElement) { - var inputType = element.type; - answer.tag += '_' + inputType; - if (inputType === 'checkbox' || inputType === 'radio') { - answer.value = element.checked; - } else { - answer.value = element.value; - } - } else if (element instanceof HTMLTextAreaElement) { - answer.value = element.value; - } - previousDOMInfo[answer.ref] = element; - // Read the children - var filteredChildNodes = [], textOnly = true; - element.childNodes.forEach(function (child) { - if (child instanceof Text) { - if (!/^\s*$/.test(child.data)) { - filteredChildNodes.push(child); - } - } else if (child instanceof Element) { - filteredChildNodes.push(child); - textOnly = false; - } - }); - if (textOnly) { - answer.text = filteredChildNodes.map(function (x) { - return x.data.trim(); - }).join(' '); - } else { - filteredChildNodes.forEach(function (child) { - if (child instanceof Text) { - addDOMInfosOfTextNode(child, answer.children); - } else { - child = getDOMInfoOfElement(child); - if (child !== undefined) - answer.children.push(child); - } - }); - } - return answer; - } - - function addDOMInfosOfTextNode(textNode, collection) { - // Break the text node into multiple nodes - // Each node only occupies a single rectangle boundary - var range = document.createRange(); - range.selectNodeContents(textNode); - var absolute_start = range.startOffset, absolute_end = range.endOffset; - var start = absolute_start; - var itr = 0; - while (start < absolute_end) { - // Binary search on the next end point - var end_lower_bound = start + 1, - end_upper_bound = absolute_end, - l = range.getClientRects().length, - end = Math.floor((end_lower_bound * (l-1) + end_upper_bound) / l); - while (end_lower_bound <= end_upper_bound) { - range.setEnd(textNode, end); - if (range.getClientRects().length == 1) { - end_lower_bound = end + 1; - end = Math.min(end_lower_bound + 5, Math.floor((end_lower_bound + end_upper_bound) / 2)); - } else { - end_upper_bound = end - 1; - end = Math.max(end_upper_bound - 5, Math.floor((end_lower_bound + end_upper_bound) / 2)); - } - if (itr++ > 1000) throwTextNodeError('Text node computation stuck in an infinite loop'); - } - range.setEnd(textNode, end); - var rects = range.getClientRects(); - if (rects.length !== 1) throwTextNodeError('Text node computation incorrect'); - var rect = rects[0], text = textNode.data.substring(start, end).trim(); - if (rect.width > 0 && rect.height > 0 && text) { - var answer = { - tag: "t", - left: rect.left, top: rect.top, - width: rect.width, height: rect.height, - ref: nextTextRefCode--, - children: [], - text: text, - }; - collection.push(answer); - } - start = end; - range.setEnd(textNode, absolute_end); - range.setStart(textNode, start); - if (itr++ > 1000) throwTextNodeError('Text node computation stuck in an infinite loop'); - } - } - - function throwTextNodeError(message) { - alert(message); - throw message; - } - - return getDOMInfoOfElement(document.body); -} - - -/* Debug: return a mapping from ref to its DOMInfo */ -function flattenDOMInfo(rootDomInfo, flattened) { - if (flattened == undefined) flattened = {}; - flattened[rootDomInfo.ref] = rootDomInfo; - rootDomInfo.children.forEach(function (x) { flattenDOMInfo(x, flattened); }); - return flattened; -} - -// ################################################ -// Record demonstrations - -/* POST submit format - -* utterance -* states: array of objects with the following keys: - - time: time elapsed - - dom: DOM structure - - action: action performed at that moment -* reward - -*/ - -var recorder = {}; - -recorder.setup = function () { - if (recorder.isSetup) return; - recorder.isSetup = true; -} - -// Start recording the episode -recorder.startRecording = function (startEpisodeReal) { - recorder.data = {}; - recorder.data.taskName = core.getTaskName(); - recorder.data.states = []; - recorder.isRecording = true; - startEpisodeReal(); - var utterance = core.getUtterance(); - if (typeof utterance === 'string') { - recorder.data.utterance = utterance; - } else { - recorder.data.utterance = utterance.utterance; - recorder.data.fields = utterance.fields; - } -} - -recorder.server = '/record'; - -// End recording the episode -recorder.endRecording = function () { - recorder.data.reward = WOB_REWARD_GLOBAL; - recorder.data.rawReward = WOB_RAW_REWARD_GLOBAL; - recorder.isRecording = false; - var data = recorder.data; - recorder.data = {}; // Prevent future addition - //console.log(data); - data = recorder.compress(data); - var dumped = document.createElement("input"); - dumped.setAttribute("type", "hidden"); - dumped.setAttribute("name", "d" + WOB_EPISODE_ID); - dumped.setAttribute("value", data); - document.getElementById('mturk_form').appendChild(dumped); - // Make it ready for the next episode - core.cover_div.classList.remove('cover-transparent'); - if (core.wob_scores >= core.EPISODES_NEEDED) { - core.cover_div.classList.add('cover-submit'); - core.cover_div.innerHTML = 'SUBMIT'; - core.cover_div.onclick = function () { - document.getElementById('mturk_form').submit(); - } - } -} - -recorder.compress = function (data) { - data = JSON.stringify(data); - data = pako.deflate(data, {to:'string'}) - data = btoa(data); - return data; -} - -// ################################ -// Wrappers - -// Wrap startEpisodeReal -core.startEpisodeReal = (function(startEpisodeReal) { - return function () { - if (core.cover_div.classList.contains('cover-transparent')) return; - recorder.setup(); - recorder.startRecording(startEpisodeReal); - } -})(core.startEpisodeReal); - -// Wrap endEpisode -core.endEpisode = (function(endEpisode) { - return function (reward, time_proportional, reason, recorder_data) { - if (core.EP_TIMER === null) return; - core.cover_div.classList.add('cover-transparent'); - endEpisode(reward, time_proportional, reason); - // Delay to allow the last action to be recorded - if (recorder_data) { - recorder.data.states = recorder_data.states; - } - setTimeout(recorder.endRecording, 500); - } -})(core.endEpisode); - -// ################################ -// Initial setup for MTurk - -core.checkPreviewMode = function () { - if (core.QueryString.assignmentId != "ASSIGNMENT_ID_NOT_AVAILABLE") return; - document.getElementById('preview-mode-wrapper').style.display = 'block'; -}; - -(function () { - // Pako for compression - var script = document.createElement('script'); - script.type = 'text/javascript'; - script.src = 'https://cdnjs.cloudflare.com/ajax/libs/pako/1.0.6/pako.min.js'; - document.head.appendChild(script); -})(); diff --git a/miniwob-sandbox/turk-www-flight/core/d3.v3.min.js b/miniwob-sandbox/turk-www-flight/core/d3.v3.min.js deleted file mode 100644 index ca05c71..0000000 --- a/miniwob-sandbox/turk-www-flight/core/d3.v3.min.js +++ /dev/null @@ -1,5 +0,0 @@ -!function(){function n(n){return n&&(n.ownerDocument||n.document||n).documentElement}function t(n){return n&&(n.ownerDocument&&n.ownerDocument.defaultView||n.document&&n||n.defaultView)}function e(n,t){return t>n?-1:n>t?1:n>=t?0:NaN}function r(n){return null===n?NaN:+n}function u(n){return!isNaN(n)}function i(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)<0?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)>0?u=i:r=i+1}return r}}}function a(n){return n.length}function o(n){for(var t=1;n*t%1;)t*=10;return t}function l(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function c(){this._=Object.create(null)}function s(n){return(n+="")===xa||n[0]===ba?ba+n:n}function f(n){return(n+="")[0]===ba?n.slice(1):n}function h(n){return s(n)in this._}function g(n){return(n=s(n))in this._&&delete this._[n]}function p(){var n=[];for(var t in this._)n.push(f(t));return n}function v(){var n=0;for(var t in this._)++n;return n}function d(){for(var n in this._)return!1;return!0}function m(){this._=Object.create(null)}function y(n){return n}function M(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function x(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=_a.length;r>e;++e){var u=_a[e]+t;if(u in n)return u}}function b(){}function _(){}function w(n){function t(){for(var t,r=e,u=-1,i=r.length;++ue;e++)for(var u,i=n[e],a=0,o=i.length;o>a;a++)(u=i[a])&&t(u,a,e);return n}function Z(n){return Sa(n,za),n}function V(n){var t,e;return function(r,u,i){var a,o=n[i].update,l=o.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(a=o[t])&&++t0&&(n=n.slice(0,o));var c=La.get(n);return c&&(n=c,l=B),o?t?u:r:t?b:i}function $(n,t){return function(e){var r=oa.event;oa.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{oa.event=r}}}function B(n,t){var e=$(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function W(e){var r=".dragsuppress-"+ ++Ta,u="click"+r,i=oa.select(t(e)).on("touchmove"+r,S).on("dragstart"+r,S).on("selectstart"+r,S);if(null==qa&&(qa="onselectstart"in e?!1:x(e.style,"userSelect")),qa){var a=n(e).style,o=a[qa];a[qa]="none"}return function(n){if(i.on(r,null),qa&&(a[qa]=o),n){var t=function(){i.on(u,null)};i.on(u,function(){S(),t()},!0),setTimeout(t,0)}}}function J(n,e){e.changedTouches&&(e=e.changedTouches[0]);var r=n.ownerSVGElement||n;if(r.createSVGPoint){var u=r.createSVGPoint();if(0>Ra){var i=t(n);if(i.scrollX||i.scrollY){r=oa.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var a=r[0][0].getScreenCTM();Ra=!(a.f||a.e),r.remove()}}return Ra?(u.x=e.pageX,u.y=e.pageY):(u.x=e.clientX,u.y=e.clientY),u=u.matrixTransform(n.getScreenCTM().inverse()),[u.x,u.y]}var o=n.getBoundingClientRect();return[e.clientX-o.left-n.clientLeft,e.clientY-o.top-n.clientTop]}function G(){return oa.event.changedTouches[0].identifier}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nn(n){return n>1?0:-1>n?ja:Math.acos(n)}function tn(n){return n>1?Ha:-1>n?-Ha:Math.asin(n)}function en(n){return((n=Math.exp(n))-1/n)/2}function rn(n){return((n=Math.exp(n))+1/n)/2}function un(n){return((n=Math.exp(2*n))-1)/(n+1)}function an(n){return(n=Math.sin(n/2))*n}function on(){}function ln(n,t,e){return this instanceof ln?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof ln?new ln(n.h,n.s,n.l):_n(""+n,wn,ln):new ln(n,t,e)}function cn(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(a-i)*n/60:180>n?a:240>n?i+(a-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,a;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,a=.5>=e?e*(1+t):e+t-e*t,i=2*e-a,new yn(u(n+120),u(n),u(n-120))}function sn(n,t,e){return this instanceof sn?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof sn?new sn(n.h,n.c,n.l):n instanceof hn?pn(n.l,n.a,n.b):pn((n=Sn((n=oa.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new sn(n,t,e)}function fn(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new hn(e,Math.cos(n*=Oa)*t,Math.sin(n)*t)}function hn(n,t,e){return this instanceof hn?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof hn?new hn(n.l,n.a,n.b):n instanceof sn?fn(n.h,n.c,n.l):Sn((n=yn(n)).r,n.g,n.b):new hn(n,t,e)}function gn(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=vn(u)*Ka,r=vn(r)*Qa,i=vn(i)*no,new yn(mn(3.2404542*u-1.5371385*r-.4985314*i),mn(-.969266*u+1.8760108*r+.041556*i),mn(.0556434*u-.2040259*r+1.0572252*i))}function pn(n,t,e){return n>0?new sn(Math.atan2(e,t)*Ia,Math.sqrt(t*t+e*e),n):new sn(NaN,NaN,n)}function vn(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function dn(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function mn(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function yn(n,t,e){return this instanceof yn?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof yn?new yn(n.r,n.g,n.b):_n(""+n,yn,cn):new yn(n,t,e)}function Mn(n){return new yn(n>>16,n>>8&255,255&n)}function xn(n){return Mn(n)+""}function bn(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function _n(n,t,e){var r,u,i,a=0,o=0,l=0;if(r=/([a-z]+)\((.*)\)/.exec(n=n.toLowerCase()))switch(u=r[2].split(","),r[1]){case"hsl":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(Nn(u[0]),Nn(u[1]),Nn(u[2]))}return(i=ro.get(n))?t(i.r,i.g,i.b):(null==n||"#"!==n.charAt(0)||isNaN(i=parseInt(n.slice(1),16))||(4===n.length?(a=(3840&i)>>4,a=a>>4|a,o=240&i,o=o>>4|o,l=15&i,l=l<<4|l):7===n.length&&(a=(16711680&i)>>16,o=(65280&i)>>8,l=255&i)),t(a,o,l))}function wn(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),a=Math.max(n,t,e),o=a-i,l=(a+i)/2;return o?(u=.5>l?o/(a+i):o/(2-a-i),r=n==a?(t-e)/o+(e>t?6:0):t==a?(e-n)/o+2:(n-t)/o+4,r*=60):(r=NaN,u=l>0&&1>l?0:r),new ln(r,u,l)}function Sn(n,t,e){n=kn(n),t=kn(t),e=kn(e);var r=dn((.4124564*n+.3575761*t+.1804375*e)/Ka),u=dn((.2126729*n+.7151522*t+.072175*e)/Qa),i=dn((.0193339*n+.119192*t+.9503041*e)/no);return hn(116*u-16,500*(r-u),200*(u-i))}function kn(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function Nn(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function En(n){return"function"==typeof n?n:function(){return n}}function An(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Cn(t,e,n,r)}}function Cn(n,t,e,r){function u(){var n,t=l.status;if(!t&&Ln(l)||t>=200&&300>t||304===t){try{n=e.call(i,l)}catch(r){return void a.error.call(i,r)}a.load.call(i,n)}else a.error.call(i,l)}var i={},a=oa.dispatch("beforesend","progress","load","error"),o={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(n)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=u:l.onreadystatechange=function(){l.readyState>3&&u()},l.onprogress=function(n){var t=oa.event;oa.event=n;try{a.progress.call(i,l)}finally{oa.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?o[n]:(null==t?delete o[n]:o[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(c=n,i):c},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(ca(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),l.open(e,n,!0),null==t||"accept"in o||(o.accept=t+",*/*"),l.setRequestHeader)for(var s in o)l.setRequestHeader(s,o[s]);return null!=t&&l.overrideMimeType&&l.overrideMimeType(t),null!=c&&(l.responseType=c),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),a.beforesend.call(i,l),l.send(null==r?null:r),i},i.abort=function(){return l.abort(),i},oa.rebind(i,a,"on"),null==r?i:i.get(zn(r))}function zn(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Ln(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function qn(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,n:null};return io?io.n=i:uo=i,io=i,ao||(oo=clearTimeout(oo),ao=1,lo(Tn)),i}function Tn(){var n=Rn(),t=Dn()-n;t>24?(isFinite(t)&&(clearTimeout(oo),oo=setTimeout(Tn,t)),ao=0):(ao=1,lo(Tn))}function Rn(){for(var n=Date.now(),t=uo;t;)n>=t.t&&t.c(n-t.t)&&(t.c=null),t=t.n;return n}function Dn(){for(var n,t=uo,e=1/0;t;)t.c?(t.t8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Un(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r&&e?function(n,t){for(var u=n.length,i=[],a=0,o=r[0],l=0;u>0&&o>0&&(l+o+1>t&&(o=Math.max(1,t-l)),i.push(n.substring(u-=o,u+o)),!((l+=o+1)>t));)o=r[a=(a+1)%r.length];return i.reverse().join(e)}:y;return function(n){var e=so.exec(n),r=e[1]||" ",a=e[2]||">",o=e[3]||"-",l=e[4]||"",c=e[5],s=+e[6],f=e[7],h=e[8],g=e[9],p=1,v="",d="",m=!1,y=!0;switch(h&&(h=+h.substring(1)),(c||"0"===r&&"="===a)&&(c=r="0",a="="),g){case"n":f=!0,g="g";break;case"%":p=100,d="%",g="f";break;case"p":p=100,d="%",g="r";break;case"b":case"o":case"x":case"X":"#"===l&&(v="0"+g.toLowerCase());case"c":y=!1;case"d":m=!0,h=0;break;case"s":p=-1,g="r"}"$"===l&&(v=u[0],d=u[1]),"r"!=g||h||(g="g"),null!=h&&("g"==g?h=Math.max(1,Math.min(21,h)):("e"==g||"f"==g)&&(h=Math.max(0,Math.min(20,h)))),g=fo.get(g)||Fn;var M=c&&f;return function(n){var e=d;if(m&&n%1)return"";var u=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===o?"":o;if(0>p){var l=oa.formatPrefix(n,h);n=l.scale(n),e=l.symbol+d}else n*=p;n=g(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=y?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!c&&f&&(x=i(x,1/0));var S=v.length+x.length+b.length+(M?0:u.length),k=s>S?new Array(S=s-S+1).join(r):"";return M&&(x=i(k+x,k.length?s-b.length:1/0)),u+=v,n=x+b,("<"===a?u+n+k:">"===a?k+u+n:"^"===a?k.substring(0,S>>=1)+u+n+k.substring(S):u+(M?n:k+n))+e}}}function Fn(n){return n+""}function Hn(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function On(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new go(e-1)),1),e}function i(n,e){return t(n=new go(+n),e),n}function a(n,r,i){var a=u(n),o=[];if(i>1)for(;r>a;)e(a)%i||o.push(new Date(+a)),t(a,1);else for(;r>a;)o.push(new Date(+a)),t(a,1);return o}function o(n,t,e){try{go=Hn;var r=new Hn;return r._=n,a(r,t,e)}finally{go=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=a;var l=n.utc=In(n);return l.floor=l,l.round=In(r),l.ceil=In(u),l.offset=In(i),l.range=o,n}function In(n){return function(t,e){try{go=Hn;var r=new Hn;return r._=t,n(r,e)._}finally{go=Date}}}function Yn(n){function t(n){function t(t){for(var e,u,i,a=[],o=-1,l=0;++oo;){if(r>=c)return-1;if(u=t.charCodeAt(o++),37===u){if(a=t.charAt(o++),i=C[a in vo?t.charAt(o++):a],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){N.lastIndex=0;var r=N.exec(t.slice(e));return r?(n.m=E.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,r){return e(n,A.c.toString(),t,r)}function l(n,t,r){return e(n,A.x.toString(),t,r)}function c(n,t,r){return e(n,A.X.toString(),t,r)}function s(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,v=n.days,d=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{go=Hn;var t=new go;return t._=n,r(t)}finally{go=Date}}var r=t(n);return e.parse=function(n){try{go=Hn;var t=r.parse(n);return t&&t._}finally{go=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ct;var M=oa.map(),x=Vn(v),b=Xn(v),_=Vn(d),w=Xn(d),S=Vn(m),k=Xn(m),N=Vn(y),E=Xn(y);p.forEach(function(n,t){M.set(n.toLowerCase(),t)});var A={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return Zn(n.getDate(),t,2)},e:function(n,t){return Zn(n.getDate(),t,2)},H:function(n,t){return Zn(n.getHours(),t,2)},I:function(n,t){return Zn(n.getHours()%12||12,t,2)},j:function(n,t){return Zn(1+ho.dayOfYear(n),t,3)},L:function(n,t){return Zn(n.getMilliseconds(),t,3)},m:function(n,t){return Zn(n.getMonth()+1,t,2)},M:function(n,t){return Zn(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return Zn(n.getSeconds(),t,2)},U:function(n,t){return Zn(ho.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Zn(ho.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return Zn(n.getFullYear()%100,t,2)},Y:function(n,t){return Zn(n.getFullYear()%1e4,t,4)},Z:ot,"%":function(){return"%"}},C={a:r,A:u,b:i,B:a,c:o,d:tt,e:tt,H:rt,I:rt,j:et,L:at,m:nt,M:ut,p:s,S:it,U:Bn,w:$n,W:Wn,x:l,X:c,y:Gn,Y:Jn,Z:Kn,"%":lt};return t}function Zn(n,t,e){var r=0>n?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function Vn(n){return new RegExp("^(?:"+n.map(oa.requote).join("|")+")","i")}function Xn(n){for(var t=new c,e=-1,r=n.length;++e68?1900:2e3)}function nt(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function tt(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function et(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function rt(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function ut(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function it(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function at(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function ot(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=Ma(t)/60|0,u=Ma(t)%60;return e+Zn(r,"0",2)+Zn(u,"0",2)}function lt(n,t,e){yo.lastIndex=0;var r=yo.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ct(n){for(var t=n.length,e=-1;++e=0?1:-1,o=a*e,l=Math.cos(t),c=Math.sin(t),s=i*c,f=u*l+s*Math.cos(o),h=s*a*Math.sin(o);So.add(Math.atan2(h,f)),r=n,u=l,i=c}var t,e,r,u,i;ko.point=function(a,o){ko.point=n,r=(t=a)*Oa,u=Math.cos(o=(e=o)*Oa/2+ja/4),i=Math.sin(o)},ko.lineEnd=function(){n(t,e)}}function dt(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function mt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function yt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function Mt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function xt(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function bt(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function _t(n){return[Math.atan2(n[1],n[0]),tn(n[2])]}function wt(n,t){return Ma(n[0]-t[0])o;++o)u.point((e=n[o])[0],e[1]);return void u.lineEnd()}var l=new Tt(e,n,null,!0),c=new Tt(e,null,l,!1);l.o=c,i.push(l),a.push(c),l=new Tt(r,n,null,!1),c=new Tt(r,null,l,!0),l.o=c,i.push(l),a.push(c)}}),a.sort(t),qt(i),qt(a),i.length){for(var o=0,l=e,c=a.length;c>o;++o)a[o].e=l=!l;for(var s,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;s=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var o=0,c=s.length;c>o;++o)u.point((f=s[o])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){s=g.p.z;for(var o=s.length-1;o>=0;--o)u.point((f=s[o])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,s=g.z,p=!p}while(!g.v);u.lineEnd()}}}function qt(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r0){for(b||(i.polygonStart(),b=!0),i.lineStart();++a1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Dt))}var g,p,v,d=t(i),m=u.invert(r[0],r[1]),y={point:a,lineStart:l,lineEnd:c,polygonStart:function(){y.point=s,y.lineStart=f,y.lineEnd=h,g=[],p=[]},polygonEnd:function(){y.point=a,y.lineStart=l,y.lineEnd=c,g=oa.merge(g);var n=Ot(m,p);g.length?(b||(i.polygonStart(),b=!0),Lt(g,jt,n,e,i)):n&&(b||(i.polygonStart(),b=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),b&&(i.polygonEnd(),b=!1),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},M=Pt(),x=t(M),b=!1;return y}}function Dt(n){return n.length>1}function Pt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:b,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function jt(n,t){return((n=n.x)[0]<0?n[1]-Ha-Da:Ha-n[1])-((t=t.x)[0]<0?t[1]-Ha-Da:Ha-t[1])}function Ut(n){var t,e=NaN,r=NaN,u=NaN;return{lineStart:function(){n.lineStart(),t=1},point:function(i,a){var o=i>0?ja:-ja,l=Ma(i-e);Ma(l-ja)0?Ha:-Ha),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(o,r),n.point(i,r),t=0):u!==o&&l>=ja&&(Ma(e-u)Da?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*a)):(t+r)/2}function Ht(n,t,e,r){var u;if(null==n)u=e*Ha,r.point(-ja,u),r.point(0,u),r.point(ja,u),r.point(ja,0),r.point(ja,-u),r.point(0,-u),r.point(-ja,-u),r.point(-ja,0),r.point(-ja,u);else if(Ma(n[0]-t[0])>Da){var i=n[0]o;++o){var c=t[o],s=c.length;if(s)for(var f=c[0],h=f[0],g=f[1]/2+ja/4,p=Math.sin(g),v=Math.cos(g),d=1;;){d===s&&(d=0),n=c[d];var m=n[0],y=n[1]/2+ja/4,M=Math.sin(y),x=Math.cos(y),b=m-h,_=b>=0?1:-1,w=_*b,S=w>ja,k=p*M;if(So.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),i+=S?b+_*Ua:b,S^h>=e^m>=e){var N=yt(dt(f),dt(n));bt(N);var E=yt(u,N);bt(E);var A=(S^b>=0?-1:1)*tn(E[2]);(r>A||r===A&&(N[0]||N[1]))&&(a+=S^b>=0?1:-1)}if(!d++)break;h=m,p=M,v=x,f=n}}return(-Da>i||Da>i&&0>So)^1&a}function It(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function e(n){var e,i,l,c,s;return{lineStart:function(){c=l=!1,s=1},point:function(f,h){var g,p=[f,h],v=t(f,h),d=a?v?0:u(f,h):v?u(f+(0>f?ja:-ja),h):0;if(!e&&(c=l=v)&&n.lineStart(),v!==l&&(g=r(e,p),(wt(e,g)||wt(p,g))&&(p[0]+=Da,p[1]+=Da,v=t(p[0],p[1]))),v!==l)s=0,v?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(o&&e&&a^v){var m;d&i||!(m=r(p,e,!0))||(s=0,a?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!v||e&&wt(e,p)||n.point(p[0],p[1]),e=p,l=v,i=d},lineEnd:function(){l&&n.lineEnd(),e=null},clean:function(){return s|(c&&l)<<1}}}function r(n,t,e){var r=dt(n),u=dt(t),a=[1,0,0],o=yt(r,u),l=mt(o,o),c=o[0],s=l-c*c;if(!s)return!e&&n;var f=i*l/s,h=-i*c/s,g=yt(a,o),p=xt(a,f),v=xt(o,h);Mt(p,v);var d=g,m=mt(p,d),y=mt(d,d),M=m*m-y*(mt(p,p)-1);if(!(0>M)){var x=Math.sqrt(M),b=xt(d,(-m-x)/y);if(Mt(b,p),b=_t(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],N=t[1];w>S&&(_=w,w=S,S=_);var E=S-w,A=Ma(E-ja)E;if(!A&&k>N&&(_=k,k=N,N=_),C?A?k+N>0^b[1]<(Ma(b[0]-w)ja^(w<=b[0]&&b[0]<=S)){var z=xt(d,(-m+x)/y);return Mt(z,p),[b,_t(z)]}}}function u(t,e){var r=a?n:ja-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),a=i>0,o=Ma(i)>Da,l=ve(n,6*Oa);return Rt(t,e,l,a?[0,-n]:[-ja,n-ja])}function Yt(n,t,e,r){return function(u){var i,a=u.a,o=u.b,l=a.x,c=a.y,s=o.x,f=o.y,h=0,g=1,p=s-l,v=f-c;if(i=n-l,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-l,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-c,v||!(i>0)){if(i/=v,0>v){if(h>i)return;g>i&&(g=i)}else if(v>0){if(i>g)return;i>h&&(h=i)}if(i=r-c,v||!(0>i)){if(i/=v,0>v){if(i>g)return;i>h&&(h=i)}else if(v>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:l+h*p,y:c+h*v}),1>g&&(u.b={x:l+g*p,y:c+g*v}),u}}}}}}function Zt(n,t,e,r){function u(r,u){return Ma(r[0]-n)0?0:3:Ma(r[0]-e)0?2:1:Ma(r[1]-t)0?1:0:u>0?3:2}function i(n,t){return a(n.x,t.x)}function a(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(o){function l(n){for(var t=0,e=d.length,r=n[1],u=0;e>u;++u)for(var i,a=1,o=d[u],l=o.length,c=o[0];l>a;++a)i=o[a],c[1]<=r?i[1]>r&&Q(c,i,n)>0&&++t:i[1]<=r&&Q(c,i,n)<0&&--t,c=i;return 0!==t}function c(i,o,l,c){var s=0,f=0;if(null==i||(s=u(i,l))!==(f=u(o,l))||a(i,o)<0^l>0){do c.point(0===s||3===s?n:e,s>1?r:t);while((s=(s+l+4)%4)!==f)}else c.point(o[0],o[1])}function s(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){s(n,t)&&o.point(n,t)}function h(){C.point=p,d&&d.push(m=[]),S=!0,w=!1,b=_=NaN}function g(){v&&(p(y,M),x&&w&&E.rejoin(),v.push(E.buffer())),C.point=f,w&&o.lineEnd()}function p(n,t){n=Math.max(-Fo,Math.min(Fo,n)),t=Math.max(-Fo,Math.min(Fo,t));var e=s(n,t);if(d&&m.push([n,t]),S)y=n,M=t,x=e,S=!1,e&&(o.lineStart(),o.point(n,t));else if(e&&w)o.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};A(r)?(w||(o.lineStart(),o.point(r.a.x,r.a.y)),o.point(r.b.x,r.b.y),e||o.lineEnd(),k=!1):e&&(o.lineStart(),o.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,m,y,M,x,b,_,w,S,k,N=o,E=Pt(),A=Yt(n,t,e,r),C={point:f,lineStart:h,lineEnd:g,polygonStart:function(){o=E,v=[],d=[],k=!0},polygonEnd:function(){o=N,v=oa.merge(v);var t=l([n,r]),e=k&&t,u=v.length;(e||u)&&(o.polygonStart(),e&&(o.lineStart(),c(null,null,1,o),o.lineEnd()),u&&Lt(v,i,t,c,o),o.polygonEnd()),v=d=m=null}};return C}}function Vt(n){var t=0,e=ja/3,r=oe(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*ja/180,e=n[1]*ja/180):[t/ja*180,e/ja*180]},u}function Xt(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),a-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),a=Math.sqrt(i)/u;return e.invert=function(n,t){var e=a-t;return[Math.atan2(n,e)/u,tn((i-(n*n+e*e)*u*u)/(2*u))]},e}function $t(){function n(n,t){Oo+=u*n-r*t,r=n,u=t}var t,e,r,u;Xo.point=function(i,a){Xo.point=n,t=r=i,e=u=a},Xo.lineEnd=function(){n(t,e)}}function Bt(n,t){Io>n&&(Io=n),n>Zo&&(Zo=n),Yo>t&&(Yo=t),t>Vo&&(Vo=t)}function Wt(){function n(n,t){a.push("M",n,",",t,i)}function t(n,t){a.push("M",n,",",t),o.point=e}function e(n,t){a.push("L",n,",",t)}function r(){o.point=n}function u(){a.push("Z")}var i=Jt(4.5),a=[],o={point:n,lineStart:function(){o.point=t},lineEnd:r,polygonStart:function(){o.lineEnd=u},polygonEnd:function(){o.lineEnd=r,o.point=n},pointRadius:function(n){return i=Jt(n),o},result:function(){if(a.length){var n=a.join("");return a=[],n}}};return o}function Jt(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Gt(n,t){Ao+=n,Co+=t,++zo}function Kt(){function n(n,r){var u=n-t,i=r-e,a=Math.sqrt(u*u+i*i);Lo+=a*(t+n)/2,qo+=a*(e+r)/2,To+=a,Gt(t=n,e=r)}var t,e;Bo.point=function(r,u){Bo.point=n,Gt(t=r,e=u)}}function Qt(){Bo.point=Gt}function ne(){function n(n,t){var e=n-r,i=t-u,a=Math.sqrt(e*e+i*i);Lo+=a*(r+n)/2,qo+=a*(u+t)/2,To+=a,a=u*n-r*t,Ro+=a*(r+n),Do+=a*(u+t),Po+=3*a,Gt(r=n,u=t)}var t,e,r,u;Bo.point=function(i,a){Bo.point=n,Gt(t=r=i,e=u=a)},Bo.lineEnd=function(){n(t,e)}}function te(n){function t(t,e){n.moveTo(t+a,e),n.arc(t,e,a,0,Ua)}function e(t,e){n.moveTo(t,e),o.point=r}function r(t,e){n.lineTo(t,e)}function u(){o.point=t}function i(){n.closePath()}var a=4.5,o={point:t,lineStart:function(){o.point=e},lineEnd:u,polygonStart:function(){o.lineEnd=i},polygonEnd:function(){o.lineEnd=u,o.point=t},pointRadius:function(n){return a=n,o},result:b};return o}function ee(n){function t(n){return(o?r:e)(n)}function e(t){return ie(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=NaN,S.point=i,t.lineStart()}function i(e,r){var i=dt([e,r]),a=n(e,r);u(M,x,y,b,_,w,M=a[0],x=a[1],y=e,b=i[0],_=i[1],w=i[2],o,t),t.point(M,x)}function a(){S.point=e,t.lineEnd()}function l(){r(),S.point=c,S.lineEnd=s}function c(n,t){ -i(f=n,h=t),g=M,p=x,v=b,d=_,m=w,S.point=i}function s(){u(M,x,y,b,_,w,g,p,f,v,d,m,o,t),S.lineEnd=a,a()}var f,h,g,p,v,d,m,y,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:a,polygonStart:function(){t.polygonStart(),S.lineStart=l},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,o,l,c,s,f,h,g,p,v,d,m){var y=s-t,M=f-e,x=y*y+M*M;if(x>4*i&&d--){var b=o+g,_=l+p,w=c+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),N=Ma(Ma(w)-1)i||Ma((y*z+M*L)/x-.5)>.3||a>o*g+l*p+c*v)&&(u(t,e,r,o,l,c,A,C,N,b/=S,_/=S,w,d,m),m.point(A,C),u(A,C,N,b,_,w,s,f,h,g,p,v,d,m))}}var i=.5,a=Math.cos(30*Oa),o=16;return t.precision=function(n){return arguments.length?(o=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function re(n){var t=ee(function(t,e){return n([t*Ia,e*Ia])});return function(n){return le(t(n))}}function ue(n){this.stream=n}function ie(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function ae(n){return oe(function(){return n})()}function oe(n){function t(n){return n=o(n[0]*Oa,n[1]*Oa),[n[0]*h+l,c-n[1]*h]}function e(n){return n=o.invert((n[0]-l)/h,(c-n[1])/h),n&&[n[0]*Ia,n[1]*Ia]}function r(){o=Ct(a=fe(m,M,x),i);var n=i(v,d);return l=g-n[0]*h,c=p+n[1]*h,u()}function u(){return s&&(s.valid=!1,s=null),t}var i,a,o,l,c,s,f=ee(function(n,t){return n=i(n,t),[n[0]*h+l,c-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,M=0,x=0,b=Uo,_=y,w=null,S=null;return t.stream=function(n){return s&&(s.valid=!1),s=le(b(a,f(_(n)))),s.valid=!0,s},t.clipAngle=function(n){return arguments.length?(b=null==n?(w=n,Uo):It((w=+n)*Oa),u()):w},t.clipExtent=function(n){return arguments.length?(S=n,_=n?Zt(n[0][0],n[0][1],n[1][0],n[1][1]):y,u()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*Oa,d=n[1]%360*Oa,r()):[v*Ia,d*Ia]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Oa,M=n[1]%360*Oa,x=n.length>2?n[2]%360*Oa:0,r()):[m*Ia,M*Ia,x*Ia]},oa.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function le(n){return ie(n,function(t,e){n.point(t*Oa,e*Oa)})}function ce(n,t){return[n,t]}function se(n,t){return[n>ja?n-Ua:-ja>n?n+Ua:n,t]}function fe(n,t,e){return n?t||e?Ct(ge(n),pe(t,e)):ge(n):t||e?pe(t,e):se}function he(n){return function(t,e){return t+=n,[t>ja?t-Ua:-ja>t?t+Ua:t,e]}}function ge(n){var t=he(n);return t.invert=he(-n),t}function pe(n,t){function e(n,t){var e=Math.cos(t),o=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),s=c*r+o*u;return[Math.atan2(l*i-s*a,o*r-c*u),tn(s*i+l*a)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),a=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),o=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),s=c*i-l*a;return[Math.atan2(l*i+c*a,o*r+s*u),tn(s*r-o*u)]},e}function ve(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,a,o){var l=a*t;null!=u?(u=de(e,u),i=de(e,i),(a>0?i>u:u>i)&&(u+=a*Ua)):(u=n+a*Ua,i=n-.5*l);for(var c,s=u;a>0?s>i:i>s;s-=l)o.point((c=_t([e,-r*Math.cos(s),-r*Math.sin(s)]))[0],c[1])}}function de(n,t){var e=dt(t);e[0]-=n,bt(e);var r=nn(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Da)%(2*Math.PI)}function me(n,t,e){var r=oa.range(n,t-Da,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function ye(n,t,e){var r=oa.range(n,t-Da,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function Me(n){return n.source}function xe(n){return n.target}function be(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),a=Math.cos(r),o=Math.sin(r),l=u*Math.cos(n),c=u*Math.sin(n),s=a*Math.cos(e),f=a*Math.sin(e),h=2*Math.asin(Math.sqrt(an(r-t)+u*a*an(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*l+t*s,u=e*c+t*f,a=e*i+t*o;return[Math.atan2(u,r)*Ia,Math.atan2(a,Math.sqrt(r*r+u*u))*Ia]}:function(){return[n*Ia,t*Ia]};return p.distance=h,p}function _e(){function n(n,u){var i=Math.sin(u*=Oa),a=Math.cos(u),o=Ma((n*=Oa)-t),l=Math.cos(o);Wo+=Math.atan2(Math.sqrt((o=a*Math.sin(o))*o+(o=r*i-e*a*l)*o),e*i+r*a*l),t=n,e=i,r=a}var t,e,r;Jo.point=function(u,i){t=u*Oa,e=Math.sin(i*=Oa),r=Math.cos(i),Jo.point=n},Jo.lineEnd=function(){Jo.point=Jo.lineEnd=b}}function we(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),a=Math.cos(u);return[Math.atan2(n*i,r*a),Math.asin(r&&e*i/r)]},e}function Se(n,t){function e(n,t){a>0?-Ha+Da>t&&(t=-Ha+Da):t>Ha-Da&&(t=Ha-Da);var e=a/Math.pow(u(t),i);return[e*Math.sin(i*n),a-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(ja/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),a=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=a-t,r=K(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(a/r,1/i))-Ha]},e):Ne}function ke(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return Ma(u)u;u++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function qe(n,t){return n[0]-t[0]||n[1]-t[1]}function Te(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Re(n,t,e,r){var u=n[0],i=e[0],a=t[0]-u,o=r[0]-i,l=n[1],c=e[1],s=t[1]-l,f=r[1]-c,h=(o*(l-c)-f*(u-i))/(f*a-o*s);return[u+h*a,l+h*s]}function De(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Pe(){rr(this),this.edge=this.site=this.circle=null}function je(n){var t=ll.pop()||new Pe;return t.site=n,t}function Ue(n){Be(n),il.remove(n),ll.push(n),rr(n)}function Fe(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,a=n.N,o=[n];Ue(n);for(var l=i;l.circle&&Ma(e-l.circle.x)s;++s)c=o[s],l=o[s-1],nr(c.edge,l.site,c.site,u);l=o[0],c=o[f-1],c.edge=Ke(l.site,c.site,null,u),$e(l),$e(c)}function He(n){for(var t,e,r,u,i=n.x,a=n.y,o=il._;o;)if(r=Oe(o,a)-i,r>Da)o=o.L;else{if(u=i-Ie(o,a),!(u>Da)){r>-Da?(t=o.P,e=o):u>-Da?(t=o,e=o.N):t=e=o;break}if(!o.R){t=o;break}o=o.R}var l=je(n);if(il.insert(t,l),t||e){if(t===e)return Be(t),e=je(t.site),il.insert(l,e),l.edge=e.edge=Ke(t.site,l.site),$e(t),void $e(e);if(!e)return void(l.edge=Ke(t.site,l.site));Be(t),Be(e);var c=t.site,s=c.x,f=c.y,h=n.x-s,g=n.y-f,p=e.site,v=p.x-s,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,M=v*v+d*d,x={x:(d*y-g*M)/m+s,y:(h*M-v*y)/m+f};nr(e.edge,c,p,x),l.edge=Ke(c,n,null,x),e.edge=Ke(n,p,null,x),$e(t),$e(e)}}function Oe(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var a=n.P;if(!a)return-(1/0);e=a.site;var o=e.x,l=e.y,c=l-t;if(!c)return o;var s=o-r,f=1/i-1/c,h=s/c;return f?(-h+Math.sqrt(h*h-2*f*(s*s/(-2*c)-l+c/2+u-i/2)))/f+r:(r+o)/2}function Ie(n,t){var e=n.N;if(e)return Oe(e,t);var r=n.site;return r.y===t?r.x:1/0}function Ye(n){this.site=n,this.edges=[]}function Ze(n){for(var t,e,r,u,i,a,o,l,c,s,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=ul,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(o=i.edges,l=o.length,a=0;l>a;)s=o[a].end(),r=s.x,u=s.y,c=o[++a%l].start(),t=c.x,e=c.y,(Ma(r-t)>Da||Ma(u-e)>Da)&&(o.splice(a,0,new tr(Qe(i.site,s,Ma(r-f)Da?{x:f,y:Ma(t-f)Da?{x:Ma(e-p)Da?{x:h,y:Ma(t-h)Da?{x:Ma(e-g)=-Pa)){var g=l*l+c*c,p=s*s+f*f,v=(f*g-c*p)/h,d=(l*p-s*g)/h,f=d+o,m=cl.pop()||new Xe;m.arc=n,m.site=u,m.x=v+a,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,M=ol._;M;)if(m.yd||d>=o)return;if(h>p){if(i){if(i.y>=c)return}else i={x:d,y:l};e={x:d,y:c}}else{if(i){if(i.yr||r>1)if(h>p){if(i){if(i.y>=c)return}else i={x:(l-u)/r,y:l};e={x:(c-u)/r,y:c}}else{if(i){if(i.yg){if(i){if(i.x>=o)return}else i={x:a,y:r*a+u};e={x:o,y:r*o+u}}else{if(i){if(i.xi||f>a||r>h||u>g)){if(p=n.point){var p,v=t-n.x,d=e-n.y,m=v*v+d*d;if(l>m){var y=Math.sqrt(l=m);r=t-y,u=e-y,i=t+y,a=e+y,o=p}}for(var M=n.nodes,x=.5*(s+h),b=.5*(f+g),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:c(n,s,f,x,b);break;case 1:c(n,x,f,h,b);break;case 2:c(n,s,b,x,g);break;case 3:c(n,x,b,h,g)}}}(n,r,u,i,a),o}function vr(n,t){n=oa.rgb(n),t=oa.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,a=t.g-r,o=t.b-u;return function(n){return"#"+bn(Math.round(e+i*n))+bn(Math.round(r+a*n))+bn(Math.round(u+o*n))}}function dr(n,t){var e,r={},u={};for(e in n)e in t?r[e]=Mr(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function mr(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function yr(n,t){var e,r,u,i=fl.lastIndex=hl.lastIndex=0,a=-1,o=[],l=[];for(n+="",t+="";(e=fl.exec(n))&&(r=hl.exec(t));)(u=r.index)>i&&(u=t.slice(i,u),o[a]?o[a]+=u:o[++a]=u),(e=e[0])===(r=r[0])?o[a]?o[a]+=r:o[++a]=r:(o[++a]=null,l.push({i:a,x:mr(e,r)})),i=hl.lastIndex;return ir;++r)o[(e=l[r]).i]=e.x(n);return o.join("")})}function Mr(n,t){for(var e,r=oa.interpolators.length;--r>=0&&!(e=oa.interpolators[r](n,t)););return e}function xr(n,t){var e,r=[],u=[],i=n.length,a=t.length,o=Math.min(n.length,t.length);for(e=0;o>e;++e)r.push(Mr(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;a>e;++e)u[e]=t[e];return function(n){for(e=0;o>e;++e)u[e]=r[e](n);return u}}function br(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function _r(n){return function(t){return 1-n(1-t)}}function wr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function Sr(n){return n*n}function kr(n){return n*n*n}function Nr(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Er(n){return function(t){return Math.pow(t,n)}}function Ar(n){return 1-Math.cos(n*Ha)}function Cr(n){return Math.pow(2,10*(n-1))}function zr(n){return 1-Math.sqrt(1-n*n)}function Lr(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Ua*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Ua/t)}}function qr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Tr(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Rr(n,t){n=oa.hcl(n),t=oa.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,a=t.c-r,o=t.l-u;return isNaN(a)&&(a=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return fn(e+i*n,r+a*n,u+o*n)+""}}function Dr(n,t){n=oa.hsl(n),t=oa.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,a=t.s-r,o=t.l-u;return isNaN(a)&&(a=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return cn(e+i*n,r+a*n,u+o*n)+""}}function Pr(n,t){n=oa.lab(n),t=oa.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,a=t.a-r,o=t.b-u;return function(n){return gn(e+i*n,r+a*n,u+o*n)+""}}function jr(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Ur(n){var t=[n.a,n.b],e=[n.c,n.d],r=Hr(t),u=Fr(t,e),i=Hr(Or(e,t,-u))||0;t[0]*e[1]180?t+=360:t-n>180&&(n+=360),r.push({i:e.push(Ir(e)+"rotate(",null,")")-2,x:mr(n,t)})):t&&e.push(Ir(e)+"rotate("+t+")")}function Vr(n,t,e,r){n!==t?r.push({i:e.push(Ir(e)+"skewX(",null,")")-2,x:mr(n,t)}):t&&e.push(Ir(e)+"skewX("+t+")")}function Xr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var u=e.push(Ir(e)+"scale(",null,",",null,")");r.push({i:u-4,x:mr(n[0],t[0])},{i:u-2,x:mr(n[1],t[1])})}else(1!==t[0]||1!==t[1])&&e.push(Ir(e)+"scale("+t+")")}function $r(n,t){var e=[],r=[];return n=oa.transform(n),t=oa.transform(t),Yr(n.translate,t.translate,e,r),Zr(n.rotate,t.rotate,e,r),Vr(n.skew,t.skew,e,r),Xr(n.scale,t.scale,e,r),n=t=null,function(n){for(var t,u=-1,i=r.length;++u=0;)e.push(u[r])}function au(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(i=n.children)&&(u=i.length))for(var u,i,a=-1;++ae;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function mu(n){return n.reduce(yu,0)}function yu(n,t){return n+t[1]}function Mu(n,t){return xu(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function xu(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function bu(n){return[oa.min(n),oa.max(n)]}function _u(n,t){return n.value-t.value}function wu(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function Su(n,t){n._pack_next=t,t._pack_prev=n}function ku(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function Nu(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(c=e.length)){var e,r,u,i,a,o,l,c,s=1/0,f=-(1/0),h=1/0,g=-(1/0);if(e.forEach(Eu),r=e[0],r.x=-r.r,r.y=0,t(r),c>1&&(u=e[1],u.x=u.r,u.y=0,t(u),c>2))for(i=e[2],zu(r,u,i),t(i),wu(r,i),r._pack_prev=i,wu(i,u),u=r._pack_next,a=3;c>a;a++){zu(r,u,i=e[a]);var p=0,v=1,d=1;for(o=u._pack_next;o!==u;o=o._pack_next,v++)if(ku(o,i)){p=1;break}if(1==p)for(l=r._pack_prev;l!==o._pack_prev&&!ku(l,i);l=l._pack_prev,d++);p?(d>v||v==d&&u.ra;a++)i=e[a],i.x-=m,i.y-=y,M=Math.max(M,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=M,e.forEach(Au)}}function Eu(n){n._pack_next=n._pack_prev=n}function Au(n){delete n._pack_next,delete n._pack_prev}function Cu(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,a=u.length;++i=0;)t=u[i],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function Pu(n,t,e){return n.a.parent===t.parent?n.a:e}function ju(n){return 1+oa.max(n,function(n){return n.y})}function Uu(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Fu(n){var t=n.children;return t&&t.length?Fu(t[0]):n}function Hu(n){var t,e=n.children;return e&&(t=e.length)?Hu(e[t-1]):n}function Ou(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Iu(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function Yu(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Zu(n){return n.rangeExtent?n.rangeExtent():Yu(n.range())}function Vu(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Xu(n,t){var e,r=0,u=n.length-1,i=n[r],a=n[u];return i>a&&(e=r,r=u,u=e,e=i,i=a,a=e),n[r]=t.floor(i),n[u]=t.ceil(a),n}function $u(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:wl}function Bu(n,t,e,r){var u=[],i=[],a=0,o=Math.min(n.length,t.length)-1;for(n[o]2?Bu:Vu,l=r?Wr:Br;return a=u(n,t,l,e),o=u(t,n,l,Mr),i}function i(n){return a(n)}var a,o;return i.invert=function(n){return o(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(jr)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return Qu(n,t)},i.tickFormat=function(t,e){return ni(n,t,e)},i.nice=function(t){return Gu(n,t),u()},i.copy=function(){return Wu(n,t,e,r)},u()}function Ju(n,t){return oa.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Gu(n,t){return Xu(n,$u(Ku(n,t)[2])),Xu(n,$u(Ku(n,t)[2])),n}function Ku(n,t){null==t&&(t=10);var e=Yu(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function Qu(n,t){return oa.range.apply(oa,Ku(n,t))}function ni(n,t,e){var r=Ku(n,t);if(e){var u=so.exec(e);if(u.shift(),"s"===u[8]){var i=oa.formatPrefix(Math.max(Ma(r[0]),Ma(r[1])));return u[7]||(u[7]="."+ti(i.scale(r[2]))),u[8]="f",e=oa.format(u.join("")),function(n){return e(i.scale(n))+i.symbol}}u[7]||(u[7]="."+ei(u[8],r)),e=u.join("")}else e=",."+ti(r[2])+"f";return oa.format(e)}function ti(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function ei(n,t){var e=ti(t[2]);return n in Sl?Math.abs(e-ti(Math.max(Ma(t[0]),Ma(t[1]))))+ +("e"!==n):e-2*("%"===n)}function ri(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function a(t){return n(u(t))}return a.invert=function(t){return i(n.invert(t))},a.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),a):r},a.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),a):t},a.nice=function(){var t=Xu(r.map(u),e?Math:Nl);return n.domain(t),r=t.map(i),a},a.ticks=function(){var n=Yu(r),a=[],o=n[0],l=n[1],c=Math.floor(u(o)),s=Math.ceil(u(l)),f=t%1?2:t;if(isFinite(s-c)){if(e){for(;s>c;c++)for(var h=1;f>h;h++)a.push(i(c)*h);a.push(i(c))}else for(a.push(i(c));c++0;h--)a.push(i(c)*h);for(c=0;a[c]l;s--);a=a.slice(c,s)}return a},a.tickFormat=function(n,e){if(!arguments.length)return kl;arguments.length<2?e=kl:"function"!=typeof e&&(e=oa.format(e));var r=Math.max(1,t*n/a.ticks().length);return function(n){var a=n/i(Math.round(u(n)));return t-.5>a*t&&(a*=t),r>=a?e(n):""}},a.copy=function(){return ri(n.copy(),t,e,r)},Ju(a,n)}function ui(n,t,e){function r(t){return n(u(t))}var u=ii(t),i=ii(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return Qu(e,n)},r.tickFormat=function(n,t){return ni(e,n,t)},r.nice=function(n){return r.domain(Gu(e,n))},r.exponent=function(a){return arguments.length?(u=ii(t=a),i=ii(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return ui(n.copy(),t,e)},Ju(r,n)}function ii(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function ai(n,t){function e(e){return i[((u.get(e)||("range"===t.t?u.set(e,n.push(e)):NaN))-1)%i.length]}function r(t,e){return oa.range(n.length).map(function(n){return t+e*n})}var u,i,a;return e.domain=function(r){if(!arguments.length)return n;n=[],u=new c;for(var i,a=-1,o=r.length;++ae?[NaN,NaN]:[e>0?o[e-1]:n[0],et?NaN:t/i+n,[t,t+1/i]},r.copy=function(){return li(n,t,e)},u()}function ci(n,t){function e(e){return e>=e?t[oa.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return ci(n,t)},e}function si(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Qu(n,t)},t.tickFormat=function(t,e){return ni(n,t,e)},t.copy=function(){return si(n)},t}function fi(){return 0}function hi(n){return n.innerRadius}function gi(n){return n.outerRadius}function pi(n){return n.startAngle}function vi(n){return n.endAngle}function di(n){return n&&n.padAngle}function mi(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function yi(n,t,e,r,u){var i=n[0]-t[0],a=n[1]-t[1],o=(u?r:-r)/Math.sqrt(i*i+a*a),l=o*a,c=-o*i,s=n[0]+l,f=n[1]+c,h=t[0]+l,g=t[1]+c,p=(s+h)/2,v=(f+g)/2,d=h-s,m=g-f,y=d*d+m*m,M=e-r,x=s*g-h*f,b=(0>m?-1:1)*Math.sqrt(Math.max(0,M*M*y-x*x)),_=(x*m-d*b)/y,w=(-x*d-m*b)/y,S=(x*m+d*b)/y,k=(-x*d+m*b)/y,N=_-p,E=w-v,A=S-p,C=k-v;return N*N+E*E>A*A+C*C&&(_=S,w=k),[[_-l,w-c],[_*e/M,w*e/M]]}function Mi(n){function t(t){function a(){c.push("M",i(n(s),o))}for(var l,c=[],s=[],f=-1,h=t.length,g=En(e),p=En(r);++f1?n.join("L"):n+"Z"}function bi(n){return n.join("L")+"Z"}function _i(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t1&&u.push("H",r[0]),u.join("")}function wi(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t1){o=t[1],i=n[l],l++,r+="C"+(u[0]+a[0])+","+(u[1]+a[1])+","+(i[0]-o[0])+","+(i[1]-o[1])+","+i[0]+","+i[1];for(var c=2;c9&&(u=3*t/Math.sqrt(u),a[o]=u*e,a[o+1]=u*r));for(o=-1;++o<=l;)u=(n[Math.min(l,o+1)][0]-n[Math.max(0,o-1)][0])/(6*(1+a[o]*a[o])),i.push([u||0,a[o]*u||0]);return i}function Fi(n){return n.length<3?xi(n):n[0]+Ai(n,Ui(n))}function Hi(n){for(var t,e,r,u=-1,i=n.length;++u=t?a(n-t):void(s.c=a)}function a(e){var u=p.active,i=p[u];i&&(i.timer.c=null,i.timer.t=NaN,--p.count,delete p[u],i.event&&i.event.interrupt.call(n,n.__data__,i.index));for(var a in p)if(r>+a){var c=p[a];c.timer.c=null,c.timer.t=NaN,--p.count,delete p[a]}s.c=o,qn(function(){return s.c&&o(e||1)&&(s.c=null,s.t=NaN),1},0,l),p.active=r,v.event&&v.event.start.call(n,n.__data__,t),g=[],v.tween.forEach(function(e,r){(r=r.call(n,n.__data__,t))&&g.push(r)}),h=v.ease,f=v.duration}function o(u){for(var i=u/f,a=h(i),o=g.length;o>0;)g[--o].call(n,a);return i>=1?(v.event&&v.event.end.call(n,n.__data__,t),--p.count?delete p[r]:delete n[e],1):void 0}var l,s,f,h,g,p=n[e]||(n[e]={active:0,count:0}),v=p[r];v||(l=u.time,s=qn(i,0,l),v=p[r]={tween:new c,time:l,timer:s,delay:u.delay,duration:u.duration,ease:u.ease,index:t},u=null,++p.count)}function na(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function ta(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function ea(n){return n.toISOString()}function ra(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=oa.bisect(Gl,u);return i==Gl.length?[t.year,Ku(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/Gl[i-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=ua(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=ua(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Yu(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],ua(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return ra(n.copy(),t,e)},Ju(r,n)}function ua(n){return new Date(n)}function ia(n){return JSON.parse(n.responseText)}function aa(n){var t=sa.createRange();return t.selectNode(sa.body),t.createContextualFragment(n.responseText)}var oa={version:"3.5.12"},la=[].slice,ca=function(n){return la.call(n)},sa=this.document;if(sa)try{ca(sa.documentElement.childNodes)[0].nodeType}catch(fa){ca=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),sa)try{sa.createElement("DIV").style.setProperty("opacity",0,"")}catch(ha){var ga=this.Element.prototype,pa=ga.setAttribute,va=ga.setAttributeNS,da=this.CSSStyleDeclaration.prototype,ma=da.setProperty;ga.setAttribute=function(n,t){pa.call(this,n,t+"")},ga.setAttributeNS=function(n,t,e){va.call(this,n,t,e+"")},da.setProperty=function(n,t,e){ma.call(this,n,t+"",e)}}oa.ascending=e,oa.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:NaN},oa.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=r){e=r;break}for(;++ur&&(e=r)}else{for(;++u=r){e=r;break}for(;++ur&&(e=r)}return e},oa.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=r){e=r;break}for(;++ue&&(e=r)}else{for(;++u=r){e=r;break}for(;++ue&&(e=r)}return e},oa.extent=function(n,t){var e,r,u,i=-1,a=n.length;if(1===arguments.length){for(;++i=r){e=u=r;break}for(;++ir&&(e=r),r>u&&(u=r))}else{for(;++i=r){e=u=r;break}for(;++ir&&(e=r),r>u&&(u=r))}return[e,u]},oa.sum=function(n,t){var e,r=0,i=n.length,a=-1;if(1===arguments.length)for(;++a1?l/(s-1):void 0},oa.deviation=function(){var n=oa.variance.apply(this,arguments);return n?Math.sqrt(n):n};var ya=i(e);oa.bisectLeft=ya.left,oa.bisect=oa.bisectRight=ya.right,oa.bisector=function(n){return i(1===n.length?function(t,r){return e(n(t),r)}:n)},oa.shuffle=function(n,t,e){(i=arguments.length)<3&&(e=n.length,2>i&&(t=0));for(var r,u,i=e-t;i;)u=Math.random()*i--|0,r=n[i+t],n[i+t]=n[u+t],n[u+t]=r;return n},oa.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},oa.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},oa.zip=function(){if(!(r=arguments.length))return[];for(var n=-1,t=oa.min(arguments,a),e=new Array(t);++n=0;)for(r=n[u],t=r.length;--t>=0;)e[--a]=r[t];return e};var Ma=Math.abs;oa.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e===1/0)throw new Error("infinite range");var r,u=[],i=o(Ma(e)),a=-1;if(n*=i,t*=i,e*=i,0>e)for(;(r=n+e*++a)>t;)u.push(r/i);else for(;(r=n+e*++a)=i.length)return r?r.call(u,a):e?a.sort(e):a;for(var l,s,f,h,g=-1,p=a.length,v=i[o++],d=new c;++g=i.length)return n;var r=[],u=a[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,u={},i=[],a=[];return u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return t(n(oa.map,e,0),0)},u.key=function(n){return i.push(n),u},u.sortKeys=function(n){return a[i.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return r=n,u},u},oa.set=function(n){var t=new m;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},l(m,{has:h,add:function(n){return this._[s(n+="")]=!0,n},remove:g,values:p,size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,f(t))}}),oa.behavior={},oa.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},oa.event=null,oa.requote=function(n){return n.replace(wa,"\\$&")};var wa=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,Sa={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},ka=function(n,t){return t.querySelector(n)},Na=function(n,t){return t.querySelectorAll(n)},Ea=function(n,t){var e=n.matches||n[x(n,"matchesSelector")];return(Ea=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(ka=function(n,t){return Sizzle(n,t)[0]||null},Na=Sizzle,Ea=Sizzle.matchesSelector),oa.selection=function(){return oa.select(sa.documentElement)};var Aa=oa.selection.prototype=[];Aa.select=function(n){var t,e,r,u,i=[];n=A(n);for(var a=-1,o=this.length;++a=0&&"xmlns"!==(e=n.slice(0,t))&&(n=n.slice(t+1)),Ca.hasOwnProperty(e)?{space:Ca[e],local:n}:n}},Aa.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=oa.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},Aa.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=T(n)).length,u=-1;if(t=e.classList){for(;++uu){if("string"!=typeof n){2>u&&(e="");for(r in n)this.each(P(r,n[r],e));return this}if(2>u){var i=this.node();return t(i).getComputedStyle(i,null).getPropertyValue(n)}r=""}return this.each(P(n,e,r))},Aa.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(j(t,n[t]));return this}return this.each(j(n,t))},Aa.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},Aa.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},Aa.append=function(n){return n=U(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},Aa.insert=function(n,t){return n=U(n),t=A(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},Aa.remove=function(){return this.each(F)},Aa.data=function(n,t){function e(n,e){var r,u,i,a=n.length,f=e.length,h=Math.min(a,f),g=new Array(f),p=new Array(f),v=new Array(a);if(t){var d,m=new c,y=new Array(a);for(r=-1;++rr;++r)p[r]=H(e[r]);for(;a>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,o.push(p),l.push(g),s.push(v)}var r,u,i=-1,a=this.length;if(!arguments.length){for(n=new Array(a=(r=this[0]).length);++ii;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var o=0,l=e.length;l>o;o++)(r=e[o])&&n.call(r,r.__data__,o,i)&&t.push(r)}return E(u)},Aa.order=function(){for(var n=-1,t=this.length;++n=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},Aa.sort=function(n){n=I.apply(this,arguments);for(var t=-1,e=this.length;++tn;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},Aa.size=function(){var n=0;return Y(this,function(){++n}),n};var za=[];oa.selection.enter=Z,oa.selection.enter.prototype=za,za.append=Aa.append,za.empty=Aa.empty,za.node=Aa.node,za.call=Aa.call,za.size=Aa.size,za.select=function(n){for(var t,e,r,u,i,a=[],o=-1,l=this.length;++or){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(X(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(X(n,t,e))};var La=oa.map({mouseenter:"mouseover",mouseleave:"mouseout"});sa&&La.forEach(function(n){"on"+n in sa&&La.remove(n)});var qa,Ta=0;oa.mouse=function(n){return J(n,k())};var Ra=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;oa.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=k().changedTouches),t)for(var r,u=0,i=t.length;i>u;++u)if((r=t[u]).identifier===e)return J(n,r)},oa.behavior.drag=function(){function n(){this.on("mousedown.drag",i).on("touchstart.drag",a)}function e(n,t,e,i,a){return function(){function o(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],p|=n|e,M=r,g({type:"drag",x:r[0]+c[0],y:r[1]+c[1],dx:n,dy:e}))}function l(){t(h,v)&&(m.on(i+d,null).on(a+d,null),y(p),g({type:"dragend"}))}var c,s=this,f=oa.event.target,h=s.parentNode,g=r.of(s,arguments),p=0,v=n(),d=".drag"+(null==v?"":"-"+v),m=oa.select(e(f)).on(i+d,o).on(a+d,l),y=W(f),M=t(h,v);u?(c=u.apply(s,arguments),c=[c.x-M[0],c.y-M[1]]):c=[0,0],g({type:"dragstart"})}}var r=N(n,"drag","dragstart","dragend"),u=null,i=e(b,oa.mouse,t,"mousemove","mouseup"),a=e(G,oa.touch,y,"touchmove","touchend");return n.origin=function(t){return arguments.length?(u=t,n):u},oa.rebind(n,r,"on")},oa.touches=function(n,t){return arguments.length<2&&(t=k().touches),t?ca(t).map(function(t){var e=J(n,t);return e.identifier=t.identifier,e}):[]};var Da=1e-6,Pa=Da*Da,ja=Math.PI,Ua=2*ja,Fa=Ua-Da,Ha=ja/2,Oa=ja/180,Ia=180/ja,Ya=Math.SQRT2,Za=2,Va=4;oa.interpolateZoom=function(n,t){var e,r,u=n[0],i=n[1],a=n[2],o=t[0],l=t[1],c=t[2],s=o-u,f=l-i,h=s*s+f*f;if(Pa>h)r=Math.log(c/a)/Ya,e=function(n){return[u+n*s,i+n*f,a*Math.exp(Ya*n*r)]};else{var g=Math.sqrt(h),p=(c*c-a*a+Va*h)/(2*a*Za*g),v=(c*c-a*a-Va*h)/(2*c*Za*g),d=Math.log(Math.sqrt(p*p+1)-p),m=Math.log(Math.sqrt(v*v+1)-v);r=(m-d)/Ya,e=function(n){var t=n*r,e=rn(d),o=a/(Za*g)*(e*un(Ya*t+d)-en(d));return[u+o*s,i+o*f,a*e/rn(Ya*t+d)]}}return e.duration=1e3*r,e},oa.behavior.zoom=function(){function n(n){n.on(L,f).on($a+".zoom",g).on("dblclick.zoom",p).on(R,h)}function e(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function r(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function u(n){k.k=Math.max(A[0],Math.min(A[1],n))}function i(n,t){t=r(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function a(t,e,r,a){t.__chart__={x:k.x,y:k.y,k:k.k},u(Math.pow(2,a)),i(d=e,r),t=oa.select(t),C>0&&(t=t.transition().duration(C)),t.call(n.event)}function o(){b&&b.domain(x.range().map(function(n){return(n-k.x)/k.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function l(n){z++||n({type:"zoomstart"})}function c(n){o(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function s(n){--z||(n({type:"zoomend"}),d=null)}function f(){function n(){o=1,i(oa.mouse(u),h),c(a)}function r(){f.on(q,null).on(T,null),g(o),s(a)}var u=this,a=D.of(u,arguments),o=0,f=oa.select(t(u)).on(q,n).on(T,r),h=e(oa.mouse(u)),g=W(u);Ol.call(u),l(a)}function h(){function n(){var n=oa.touches(p);return g=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=e(n))}),n}function t(){var t=oa.event.target;oa.select(t).on(x,r).on(b,o),_.push(t);for(var e=oa.event.changedTouches,u=0,i=e.length;i>u;++u)d[e[u].identifier]=null;var l=n(),c=Date.now();if(1===l.length){if(500>c-M){var s=l[0];a(p,s,d[s.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),S()}M=c}else if(l.length>1){var s=l[0],f=l[1],h=s[0]-f[0],g=s[1]-f[1];m=h*h+g*g}}function r(){var n,t,e,r,a=oa.touches(p);Ol.call(p);for(var o=0,l=a.length;l>o;++o,r=null)if(e=a[o],r=d[e.identifier]){if(t)break;n=e,t=r}if(r){var s=(s=e[0]-n[0])*s+(s=e[1]-n[1])*s,f=m&&Math.sqrt(s/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+r[0])/2,(t[1]+r[1])/2],u(f*g)}M=null,i(n,t),c(v)}function o(){if(oa.event.touches.length){for(var t=oa.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var u in d)return void n()}oa.selectAll(_).on(y,null),w.on(L,f).on(R,h),N(),s(v)}var g,p=this,v=D.of(p,arguments),d={},m=0,y=".zoom-"+oa.event.changedTouches[0].identifier,x="touchmove"+y,b="touchend"+y,_=[],w=oa.select(p),N=W(p);t(),l(v),w.on(L,null).on(R,t)}function g(){var n=D.of(this,arguments);y?clearTimeout(y):(Ol.call(this),v=e(d=m||oa.mouse(this)),l(n)),y=setTimeout(function(){y=null,s(n)},50),S(),u(Math.pow(2,.002*Xa())*k.k),i(d,v),c(n)}function p(){var n=oa.mouse(this),t=Math.log(k.k)/Math.LN2;a(this,n,e(n),oa.event.shiftKey?Math.ceil(t)-1:Math.floor(t)+1)}var v,d,m,y,M,x,b,_,w,k={x:0,y:0,k:1},E=[960,500],A=Ba,C=250,z=0,L="mousedown.zoom",q="mousemove.zoom",T="mouseup.zoom",R="touchstart.zoom",D=N(n,"zoomstart","zoom","zoomend");return $a||($a="onwheel"in sa?(Xa=function(){return-oa.event.deltaY*(oa.event.deltaMode?120:1)},"wheel"):"onmousewheel"in sa?(Xa=function(){return oa.event.wheelDelta},"mousewheel"):(Xa=function(){return-oa.event.detail},"MozMousePixelScroll")),n.event=function(n){n.each(function(){var n=D.of(this,arguments),t=k;Fl?oa.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},l(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],u=d?d[0]:e/2,i=d?d[1]:r/2,a=oa.interpolateZoom([(u-k.x)/k.k,(i-k.y)/k.k,e/k.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=a(t),o=e/r[2];this.__chart__=k={x:u-r[0]*o,y:i-r[1]*o,k:o},c(n)}}).each("interrupt.zoom",function(){s(n)}).each("end.zoom",function(){s(n)}):(this.__chart__=k,l(n),c(n),s(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},o(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:null},u(+t),o(),n):k.k},n.scaleExtent=function(t){return arguments.length?(A=null==t?Ba:[+t[0],+t[1]],n):A},n.center=function(t){return arguments.length?(m=t&&[+t[0],+t[1]],n):m},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.duration=function(t){return arguments.length?(C=+t,n):C},n.x=function(t){return arguments.length?(b=t,x=t.copy(),k={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),k={x:0,y:0,k:1},n):w},oa.rebind(n,D,"on")};var Xa,$a,Ba=[0,1/0];oa.color=on,on.prototype.toString=function(){return this.rgb()+""},oa.hsl=ln;var Wa=ln.prototype=new on;Wa.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,this.l/n)},Wa.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,n*this.l)},Wa.rgb=function(){return cn(this.h,this.s,this.l)},oa.hcl=sn;var Ja=sn.prototype=new on;Ja.brighter=function(n){return new sn(this.h,this.c,Math.min(100,this.l+Ga*(arguments.length?n:1)))},Ja.darker=function(n){return new sn(this.h,this.c,Math.max(0,this.l-Ga*(arguments.length?n:1)))},Ja.rgb=function(){return fn(this.h,this.c,this.l).rgb()},oa.lab=hn;var Ga=18,Ka=.95047,Qa=1,no=1.08883,to=hn.prototype=new on;to.brighter=function(n){return new hn(Math.min(100,this.l+Ga*(arguments.length?n:1)),this.a,this.b)},to.darker=function(n){return new hn(Math.max(0,this.l-Ga*(arguments.length?n:1)),this.a,this.b)},to.rgb=function(){return gn(this.l,this.a,this.b)},oa.rgb=yn;var eo=yn.prototype=new on;eo.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),new yn(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new yn(u,u,u)},eo.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new yn(n*this.r,n*this.g,n*this.b)},eo.hsl=function(){return wn(this.r,this.g,this.b)},eo.toString=function(){return"#"+bn(this.r)+bn(this.g)+bn(this.b)};var ro=oa.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});ro.forEach(function(n,t){ro.set(n,Mn(t))}),oa.functor=En,oa.xhr=An(y),oa.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var a=Cn(n,t,null==e?r:u(e),i);return a.row=function(n){return arguments.length?a.response(null==(e=n)?r:u(n)):e},a}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(a).join(n)}function a(n){return o.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var o=new RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(s>=c)return a;if(u)return u=!1,i;var t=s;if(34===n.charCodeAt(t)){for(var e=t;e++s;){var r=n.charCodeAt(s++),o=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(s)&&(++s,++o);else if(r!==l)continue;return n.slice(t,s-o)}return n.slice(t)}for(var r,u,i={},a={},o=[],c=n.length,s=0,f=0;(r=e())!==a;){for(var h=[];r!==i&&r!==a;)h.push(r),r=e();t&&null==(h=t(h,f++))||o.push(h)}return o},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new m,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(a).join(n)].concat(t.map(function(t){return u.map(function(n){return a(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(i).join("\n")},e},oa.csv=oa.dsv(",","text/csv"),oa.tsv=oa.dsv(" ","text/tab-separated-values");var uo,io,ao,oo,lo=this[x(this,"requestAnimationFrame")]||function(n){setTimeout(n,17)};oa.timer=function(){qn.apply(this,arguments)},oa.timer.flush=function(){Rn(),Dn()},oa.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var co=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(jn);oa.formatPrefix=function(n,t){var e=0;return(n=+n)&&(0>n&&(n*=-1),t&&(n=oa.round(n,Pn(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),co[8+e/3]};var so=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,fo=oa.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=oa.round(n,Pn(n,t))).toFixed(Math.max(0,Math.min(20,Pn(n*(1+1e-15),t))))}}),ho=oa.time={},go=Date;Hn.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){po.setUTCDate.apply(this._,arguments)},setDay:function(){po.setUTCDay.apply(this._,arguments)},setFullYear:function(){po.setUTCFullYear.apply(this._,arguments)},setHours:function(){po.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){po.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){po.setUTCMinutes.apply(this._,arguments)},setMonth:function(){po.setUTCMonth.apply(this._,arguments)},setSeconds:function(){po.setUTCSeconds.apply(this._,arguments)},setTime:function(){po.setTime.apply(this._,arguments)}};var po=Date.prototype;ho.year=On(function(n){return n=ho.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),ho.years=ho.year.range,ho.years.utc=ho.year.utc.range,ho.day=On(function(n){var t=new go(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),ho.days=ho.day.range,ho.days.utc=ho.day.utc.range,ho.dayOfYear=function(n){var t=ho.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=ho[n]=On(function(n){return(n=ho.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=ho.year(n).getDay();return Math.floor((ho.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ho[n+"s"]=e.range,ho[n+"s"].utc=e.utc.range,ho[n+"OfYear"]=function(n){var e=ho.year(n).getDay();return Math.floor((ho.dayOfYear(n)+(e+t)%7)/7)}}),ho.week=ho.sunday,ho.weeks=ho.sunday.range,ho.weeks.utc=ho.sunday.utc.range,ho.weekOfYear=ho.sundayOfYear;var vo={"-":"",_:" ",0:"0"},mo=/^\s*\d+/,yo=/^%/;oa.locale=function(n){return{numberFormat:Un(n),timeFormat:Yn(n)}};var Mo=oa.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"], -shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});oa.format=Mo.numberFormat,oa.geo={},st.prototype={s:0,t:0,add:function(n){ft(n,this.t,xo),ft(xo.s,this.s,this),this.s?this.t+=xo.t:this.s=xo.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var xo=new st;oa.geo.stream=function(n,t){n&&bo.hasOwnProperty(n.type)?bo[n.type](n,t):ht(n,t)};var bo={Feature:function(n,t){ht(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++rn?4*ja+n:n,ko.lineStart=ko.lineEnd=ko.point=b}};oa.geo.bounds=function(){function n(n,t){M.push(x=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=dt([t*Oa,e*Oa]);if(m){var u=yt(m,r),i=[u[1],-u[0],0],a=yt(i,u);bt(a),a=_t(a);var l=t-p,c=l>0?1:-1,v=a[0]*Ia*c,d=Ma(l)>180;if(d^(v>c*p&&c*t>v)){var y=a[1]*Ia;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>c*p&&c*t>v)){var y=-a[1]*Ia;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?o(s,t)>o(s,h)&&(h=t):o(t,h)>o(s,h)&&(s=t):h>=s?(s>t&&(s=t),t>h&&(h=t)):t>p?o(s,t)>o(s,h)&&(h=t):o(t,h)>o(s,h)&&(s=t)}else n(t,e);m=r,p=t}function e(){b.point=t}function r(){x[0]=s,x[1]=h,b.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=Ma(r)>180?r+(r>0?360:-360):r}else v=n,d=e;ko.point(n,e),t(n,e)}function i(){ko.lineStart()}function a(){u(v,d),ko.lineEnd(),Ma(y)>Da&&(s=-(h=180)),x[0]=s,x[1]=h,m=null}function o(n,t){return(t-=n)<0?t+360:t}function l(n,t){return n[0]-t[0]}function c(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nSo?(s=-(h=180),f=-(g=90)):y>Da?g=90:-Da>y&&(f=-90),x[0]=s,x[1]=h}};return function(n){g=h=-(s=f=1/0),M=[],oa.geo.stream(n,b);var t=M.length;if(t){M.sort(l);for(var e,r=1,u=M[0],i=[u];t>r;++r)e=M[r],c(e[0],u)||c(e[1],u)?(o(u[0],e[1])>o(u[0],u[1])&&(u[1]=e[1]),o(e[0],u[1])>o(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var a,e,p=-(1/0),t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(a=o(u[1],e[0]))>p&&(p=a,s=e[0],h=u[1])}return M=x=null,s===1/0||f===1/0?[[NaN,NaN],[NaN,NaN]]:[[s,f],[h,g]]}}(),oa.geo.centroid=function(n){No=Eo=Ao=Co=zo=Lo=qo=To=Ro=Do=Po=0,oa.geo.stream(n,jo);var t=Ro,e=Do,r=Po,u=t*t+e*e+r*r;return Pa>u&&(t=Lo,e=qo,r=To,Da>Eo&&(t=Ao,e=Co,r=zo),u=t*t+e*e+r*r,Pa>u)?[NaN,NaN]:[Math.atan2(e,t)*Ia,tn(r/Math.sqrt(u))*Ia]};var No,Eo,Ao,Co,zo,Lo,qo,To,Ro,Do,Po,jo={sphere:b,point:St,lineStart:Nt,lineEnd:Et,polygonStart:function(){jo.lineStart=At},polygonEnd:function(){jo.lineStart=Nt}},Uo=Rt(zt,Ut,Ht,[-ja,-ja/2]),Fo=1e9;oa.geo.clipExtent=function(){var n,t,e,r,u,i,a={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(o){return arguments.length?(i=Zt(n=+o[0][0],t=+o[0][1],e=+o[1][0],r=+o[1][1]),u&&(u.valid=!1,u=null),a):[[n,t],[e,r]]}};return a.extent([[0,0],[960,500]])},(oa.geo.conicEqualArea=function(){return Vt(Xt)}).raw=Xt,oa.geo.albers=function(){return oa.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},oa.geo.albersUsa=function(){function n(n){var i=n[0],a=n[1];return t=null,e(i,a),t||(r(i,a),t)||u(i,a),t}var t,e,r,u,i=oa.geo.albers(),a=oa.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),o=oa.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?a:u>=.166&&.234>u&&r>=-.214&&-.115>r?o:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=a.stream(n),r=o.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),a.precision(t),o.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),a.scale(.35*t),o.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var c=i.scale(),s=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[s-.455*c,f-.238*c],[s+.455*c,f+.238*c]]).stream(l).point,r=a.translate([s-.307*c,f+.201*c]).clipExtent([[s-.425*c+Da,f+.12*c+Da],[s-.214*c-Da,f+.234*c-Da]]).stream(l).point,u=o.translate([s-.205*c,f+.212*c]).clipExtent([[s-.214*c+Da,f+.166*c+Da],[s-.115*c-Da,f+.234*c-Da]]).stream(l).point,n},n.scale(1070)};var Ho,Oo,Io,Yo,Zo,Vo,Xo={point:b,lineStart:b,lineEnd:b,polygonStart:function(){Oo=0,Xo.lineStart=$t},polygonEnd:function(){Xo.lineStart=Xo.lineEnd=Xo.point=b,Ho+=Ma(Oo/2)}},$o={point:Bt,lineStart:b,lineEnd:b,polygonStart:b,polygonEnd:b},Bo={point:Gt,lineStart:Kt,lineEnd:Qt,polygonStart:function(){Bo.lineStart=ne},polygonEnd:function(){Bo.point=Gt,Bo.lineStart=Kt,Bo.lineEnd=Qt}};oa.geo.path=function(){function n(n){return n&&("function"==typeof o&&i.pointRadius(+o.apply(this,arguments)),a&&a.valid||(a=u(i)),oa.geo.stream(n,a)),i.result()}function t(){return a=null,n}var e,r,u,i,a,o=4.5;return n.area=function(n){return Ho=0,oa.geo.stream(n,u(Xo)),Ho},n.centroid=function(n){return Ao=Co=zo=Lo=qo=To=Ro=Do=Po=0,oa.geo.stream(n,u(Bo)),Po?[Ro/Po,Do/Po]:To?[Lo/To,qo/To]:zo?[Ao/zo,Co/zo]:[NaN,NaN]},n.bounds=function(n){return Zo=Vo=-(Io=Yo=1/0),oa.geo.stream(n,u($o)),[[Io,Yo],[Zo,Vo]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||re(n):y,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new Wt:new te(n),"function"!=typeof o&&i.pointRadius(o),t()):r},n.pointRadius=function(t){return arguments.length?(o="function"==typeof t?t:(i.pointRadius(+t),+t),n):o},n.projection(oa.geo.albersUsa()).context(null)},oa.geo.transform=function(n){return{stream:function(t){var e=new ue(t);for(var r in n)e[r]=n[r];return e}}},ue.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},oa.geo.projection=ae,oa.geo.projectionMutator=oe,(oa.geo.equirectangular=function(){return ae(ce)}).raw=ce.invert=ce,oa.geo.rotation=function(n){function t(t){return t=n(t[0]*Oa,t[1]*Oa),t[0]*=Ia,t[1]*=Ia,t}return n=fe(n[0]%360*Oa,n[1]*Oa,n.length>2?n[2]*Oa:0),t.invert=function(t){return t=n.invert(t[0]*Oa,t[1]*Oa),t[0]*=Ia,t[1]*=Ia,t},t},se.invert=ce,oa.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=fe(-n[0]*Oa,-n[1]*Oa,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=Ia,n[1]*=Ia}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=ve((t=+r)*Oa,u*Oa),n):t},n.precision=function(r){return arguments.length?(e=ve(t*Oa,(u=+r)*Oa),n):u},n.angle(90)},oa.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Oa,u=n[1]*Oa,i=t[1]*Oa,a=Math.sin(r),o=Math.cos(r),l=Math.sin(u),c=Math.cos(u),s=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*a)*e+(e=c*s-l*f*o)*e),l*s+c*f*o)},oa.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return oa.range(Math.ceil(i/d)*d,u,d).map(h).concat(oa.range(Math.ceil(c/m)*m,l,m).map(g)).concat(oa.range(Math.ceil(r/p)*p,e,p).filter(function(n){return Ma(n%d)>Da}).map(s)).concat(oa.range(Math.ceil(o/v)*v,a,v).filter(function(n){return Ma(n%m)>Da}).map(f))}var e,r,u,i,a,o,l,c,s,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(l).slice(1),h(u).reverse().slice(1),g(c).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],c=+t[0][1],l=+t[1][1],i>u&&(t=i,i=u,u=t),c>l&&(t=c,c=l,l=t),n.precision(y)):[[i,c],[u,l]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],o=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),o>a&&(t=o,o=a,a=t),n.precision(y)):[[r,o],[e,a]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,s=me(o,a,90),f=ye(r,e,y),h=me(c,l,90),g=ye(i,u,y),n):y},n.majorExtent([[-180,-90+Da],[180,90-Da]]).minorExtent([[-180,-80-Da],[180,80+Da]])},oa.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=Me,u=xe;return n.distance=function(){return oa.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},oa.geo.interpolate=function(n,t){return be(n[0]*Oa,n[1]*Oa,t[0]*Oa,t[1]*Oa)},oa.geo.length=function(n){return Wo=0,oa.geo.stream(n,Jo),Wo};var Wo,Jo={sphere:b,point:b,lineStart:_e,lineEnd:b,polygonStart:b,polygonEnd:b},Go=we(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(oa.geo.azimuthalEqualArea=function(){return ae(Go)}).raw=Go;var Ko=we(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},y);(oa.geo.azimuthalEquidistant=function(){return ae(Ko)}).raw=Ko,(oa.geo.conicConformal=function(){return Vt(Se)}).raw=Se,(oa.geo.conicEquidistant=function(){return Vt(ke)}).raw=ke;var Qo=we(function(n){return 1/n},Math.atan);(oa.geo.gnomonic=function(){return ae(Qo)}).raw=Qo,Ne.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Ha]},(oa.geo.mercator=function(){return Ee(Ne)}).raw=Ne;var nl=we(function(){return 1},Math.asin);(oa.geo.orthographic=function(){return ae(nl)}).raw=nl;var tl=we(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(oa.geo.stereographic=function(){return ae(tl)}).raw=tl,Ae.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Ha]},(oa.geo.transverseMercator=function(){var n=Ee(Ae),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ae,oa.geom={},oa.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=En(e),i=En(r),a=n.length,o=[],l=[];for(t=0;a>t;t++)o.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(o.sort(qe),t=0;a>t;t++)l.push([o[t][0],-o[t][1]]);var c=Le(o),s=Le(l),f=s[0]===c[0],h=s[s.length-1]===c[c.length-1],g=[];for(t=c.length-1;t>=0;--t)g.push(n[o[c[t]][2]]);for(t=+f;t=r&&c.x<=i&&c.y>=u&&c.y<=a?[[r,a],[i,a],[i,u],[r,u]]:[];s.point=n[o]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Da)*Da,y:Math.round(a(n,t)/Da)*Da,i:t}})}var r=Ce,u=ze,i=r,a=u,o=sl;return n?t(n):(t.links=function(n){return or(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return or(e(n)).cells.forEach(function(e,r){for(var u,i,a=e.site,o=e.edges.sort(Ve),l=-1,c=o.length,s=o[c-1].edge,f=s.l===a?s.r:s.l;++l=c,h=r>=s,g=h<<1|f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=hr()),f?u=c:o=c,h?a=s:l=s,i(n,t,e,r,u,a,o,l)}var s,f,h,g,p,v,d,m,y,M=En(o),x=En(l);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,a)for(g=0;p>g;++g)s=n[g],s.xm&&(m=s.x),s.y>y&&(y=s.y),f.push(s.x),h.push(s.y);else for(g=0;p>g;++g){var b=+M(s=n[g],g),_=+x(s,g);v>b&&(v=b),d>_&&(d=_),b>m&&(m=b),_>y&&(y=_),f.push(b),h.push(_)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=hr();if(k.add=function(n){i(k,n,+M(n,++g),+x(n,g),v,d,m,y)},k.visit=function(n){gr(n,k,v,d,m,y)},k.find=function(n){return pr(k,n[0],n[1],v,d,m,y)},g=-1,null==t){for(;++g=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=pl.get(e)||gl,r=vl.get(r)||y,br(r(e.apply(null,la.call(arguments,1))))},oa.interpolateHcl=Rr,oa.interpolateHsl=Dr,oa.interpolateLab=Pr,oa.interpolateRound=jr,oa.transform=function(n){var t=sa.createElementNS(oa.ns.prefix.svg,"g");return(oa.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Ur(e?e.matrix:dl)})(n)},Ur.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var dl={a:1,b:0,c:0,d:1,e:0,f:0};oa.interpolateTransform=$r,oa.layout={},oa.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++eo*o/m){if(v>l){var c=t.charge/l;n.px-=i*c,n.py-=a*c}return!0}if(t.point&&l&&v>l){var c=t.pointCharge/l;n.px-=i*c,n.py-=a*c}}return!t.charge}}function t(n){n.px=oa.event.x,n.py=oa.event.y,l.resume()}var e,r,u,i,a,o,l={},c=oa.dispatch("start","tick","end"),s=[1,1],f=.9,h=ml,g=yl,p=-30,v=Ml,d=.1,m=.64,M=[],x=[];return l.tick=function(){if((u*=.99)<.005)return e=null,c.end({type:"end",alpha:u=0}),!0;var t,r,l,h,g,v,m,y,b,_=M.length,w=x.length;for(r=0;w>r;++r)l=x[r],h=l.source,g=l.target,y=g.x-h.x,b=g.y-h.y,(v=y*y+b*b)&&(v=u*a[r]*((v=Math.sqrt(v))-i[r])/v,y*=v,b*=v,g.x-=y*(m=h.weight+g.weight?h.weight/(h.weight+g.weight):.5),g.y-=b*m,h.x+=y*(m=1-m),h.y+=b*m);if((m=u*d)&&(y=s[0]/2,b=s[1]/2,r=-1,m))for(;++r<_;)l=M[r],l.x+=(y-l.x)*m,l.y+=(b-l.y)*m;if(p)for(ru(t=oa.geom.quadtree(M),u,o),r=-1;++r<_;)(l=M[r]).fixed||t.visit(n(l));for(r=-1;++r<_;)l=M[r],l.fixed?(l.x=l.px,l.y=l.py):(l.x-=(l.px-(l.px=l.x))*f,l.y-=(l.py-(l.py=l.y))*f);c.tick({type:"tick",alpha:u})},l.nodes=function(n){return arguments.length?(M=n,l):M},l.links=function(n){return arguments.length?(x=n,l):x},l.size=function(n){return arguments.length?(s=n,l):s},l.linkDistance=function(n){return arguments.length?(h="function"==typeof n?n:+n,l):h},l.distance=l.linkDistance,l.linkStrength=function(n){return arguments.length?(g="function"==typeof n?n:+n,l):g},l.friction=function(n){return arguments.length?(f=+n,l):f},l.charge=function(n){return arguments.length?(p="function"==typeof n?n:+n,l):p},l.chargeDistance=function(n){return arguments.length?(v=n*n,l):Math.sqrt(v)},l.gravity=function(n){return arguments.length?(d=+n,l):d},l.theta=function(n){return arguments.length?(m=n*n,l):Math.sqrt(m)},l.alpha=function(n){return arguments.length?(n=+n,u?n>0?u=n:(e.c=null,e.t=NaN,e=null,c.end({type:"end",alpha:u=0})):n>0&&(c.start({type:"start",alpha:u=n}),e=qn(l.tick)),l):u},l.start=function(){function n(n,r){if(!e){for(e=new Array(u),l=0;u>l;++l)e[l]=[];for(l=0;c>l;++l){var i=x[l];e[i.source.index].push(i.target),e[i.target.index].push(i.source)}}for(var a,o=e[t],l=-1,s=o.length;++lt;++t)(r=M[t]).index=t,r.weight=0;for(t=0;c>t;++t)r=x[t],"number"==typeof r.source&&(r.source=M[r.source]),"number"==typeof r.target&&(r.target=M[r.target]),++r.source.weight,++r.target.weight;for(t=0;u>t;++t)r=M[t],isNaN(r.x)&&(r.x=n("x",f)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(i=[],"function"==typeof h)for(t=0;c>t;++t)i[t]=+h.call(this,x[t],t);else for(t=0;c>t;++t)i[t]=h;if(a=[],"function"==typeof g)for(t=0;c>t;++t)a[t]=+g.call(this,x[t],t);else for(t=0;c>t;++t)a[t]=g;if(o=[],"function"==typeof p)for(t=0;u>t;++t)o[t]=+p.call(this,M[t],t);else for(t=0;u>t;++t)o[t]=p;return l.resume()},l.resume=function(){return l.alpha(.1)},l.stop=function(){return l.alpha(0)},l.drag=function(){return r||(r=oa.behavior.drag().origin(y).on("dragstart.force",Qr).on("drag.force",t).on("dragend.force",nu)),arguments.length?void this.on("mouseover.force",tu).on("mouseout.force",eu).call(r):r},oa.rebind(l,c,"on")};var ml=20,yl=1,Ml=1/0;oa.layout.hierarchy=function(){function n(u){var i,a=[u],o=[];for(u.depth=0;null!=(i=a.pop());)if(o.push(i),(c=e.call(n,i,i.depth))&&(l=c.length)){for(var l,c,s;--l>=0;)a.push(s=c[l]),s.parent=i,s.depth=i.depth+1;r&&(i.value=0),i.children=c}else r&&(i.value=+r.call(n,i,i.depth)||0),delete i.children;return au(u,function(n){var e,u;t&&(e=n.children)&&e.sort(t),r&&(u=n.parent)&&(u.value+=n.value)}),o}var t=cu,e=ou,r=lu;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(iu(t,function(n){n.children&&(n.value=0)}),au(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},oa.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(a=i.length)){var a,o,l,c=-1;for(r=t.value?r/t.value:0;++cf?-1:1),p=oa.sum(c),v=p?(f-l*g)/p:0,d=oa.range(l),m=[];return null!=e&&d.sort(e===xl?function(n,t){return c[t]-c[n]}:function(n,t){return e(a[n],a[t])}),d.forEach(function(n){m[n]={data:a[n],value:o=c[n],startAngle:s,endAngle:s+=o*v+g,padAngle:h}}),m}var t=Number,e=xl,r=0,u=Ua,i=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(u=t,n):u},n.padAngle=function(t){return arguments.length?(i=t,n):i},n};var xl={};oa.layout.stack=function(){function n(o,l){if(!(h=o.length))return o;var c=o.map(function(e,r){return t.call(n,e,r)}),s=c.map(function(t){return t.map(function(t,e){return[i.call(n,t,e),a.call(n,t,e)]})}),f=e.call(n,s,l);c=oa.permute(c,f),s=oa.permute(s,f);var h,g,p,v,d=r.call(n,s,l),m=c[0].length;for(p=0;m>p;++p)for(u.call(n,c[0][p],v=d[p],s[0][p][1]),g=1;h>g;++g)u.call(n,c[g][p],v+=s[g-1][p][1],s[g][p][1]);return o}var t=y,e=pu,r=vu,u=gu,i=fu,a=hu;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:bl.get(t)||pu,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:_l.get(t)||vu,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(a=t,n):a},n.out=function(t){return arguments.length?(u=t,n):u},n};var bl=oa.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(du),i=n.map(mu),a=oa.range(r).sort(function(n,t){return u[n]-u[t]}),o=0,l=0,c=[],s=[];for(t=0;r>t;++t)e=a[t],l>o?(o+=i[e],c.push(e)):(l+=i[e],s.push(e));return s.reverse().concat(c)},reverse:function(n){return oa.range(n.length).reverse()},"default":pu}),_l=oa.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,a=[],o=0,l=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>o&&(o=r),a.push(r)}for(e=0;i>e;++e)l[e]=(o-a[e])/2;return l},wiggle:function(n){var t,e,r,u,i,a,o,l,c,s=n.length,f=n[0],h=f.length,g=[];for(g[0]=l=c=0,e=1;h>e;++e){for(t=0,u=0;s>t;++t)u+=n[t][e][1];for(t=0,i=0,o=f[e][0]-f[e-1][0];s>t;++t){for(r=0,a=(n[t][e][1]-n[t][e-1][1])/(2*o);t>r;++r)a+=(n[r][e][1]-n[r][e-1][1])/o;i+=a*n[t][e][1]}g[e]=l-=u?i/u*o:0,c>l&&(c=l)}for(e=0;h>e;++e)g[e]-=c;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,a=1/u,o=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=a}for(e=0;i>e;++e)o[e]=0;return o},zero:vu});oa.layout.histogram=function(){function n(n,i){for(var a,o,l=[],c=n.map(e,this),s=r.call(this,c,i),f=u.call(this,s,c,i),i=-1,h=c.length,g=f.length-1,p=t?1:1/h;++i0)for(i=-1;++i=s[0]&&o<=s[1]&&(a=l[oa.bisect(f,o,1,g)-1],a.y+=p,a.push(n[i]));return l}var t=!0,e=Number,r=bu,u=Mu;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=En(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return xu(n,t)}:En(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},oa.layout.pack=function(){function n(n,i){var a=e.call(this,n,i),o=a[0],l=u[0],c=u[1],s=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(o.x=o.y=0,au(o,function(n){n.r=+s(n.value)}),au(o,Nu),r){var f=r*(t?1:Math.max(2*o.r/l,2*o.r/c))/2;au(o,function(n){n.r+=f}),au(o,Nu),au(o,function(n){n.r-=f})}return Cu(o,l/2,c/2,t?1:1/Math.max(2*o.r/l,2*o.r/c)),a}var t,e=oa.layout.hierarchy().sort(_u),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},uu(n,e)},oa.layout.tree=function(){function n(n,u){var s=a.call(this,n,u),f=s[0],h=t(f);if(au(h,e),h.parent.m=-h.z,iu(h,r),c)iu(f,i);else{var g=f,p=f,v=f;iu(f,function(n){n.xp.x&&(p=n),n.depth>v.depth&&(v=n)});var d=o(g,p)/2-g.x,m=l[0]/(p.x+o(p,g)/2+d),y=l[1]/(v.depth||1);iu(f,function(n){n.x=(n.x+d)*m,n.y=n.depth*y})}return s}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var u,i=t.children,a=0,o=i.length;o>a;++a)r.push((i[a]=u={_:i[a],parent:t,children:(u=i[a].children)&&u.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:a}).a=u);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Du(n);var i=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+o(n._,r._),n.m=n.z-i):n.z=i}else r&&(n.z=r.z+o(n._,r._));n.parent.A=u(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function u(n,t,e){if(t){for(var r,u=n,i=n,a=t,l=u.parent.children[0],c=u.m,s=i.m,f=a.m,h=l.m;a=Tu(a),u=qu(u),a&&u;)l=qu(l),i=Tu(i),i.a=n,r=a.z+f-u.z-c+o(a._,u._),r>0&&(Ru(Pu(a,n,e),n,r),c+=r,s+=r),f+=a.m,c+=u.m,h+=l.m,s+=i.m;a&&!Tu(i)&&(i.t=a,i.m+=f-s),u&&!qu(l)&&(l.t=u,l.m+=c-h,e=n)}return e}function i(n){n.x*=l[0],n.y=n.depth*l[1]}var a=oa.layout.hierarchy().sort(null).value(null),o=Lu,l=[1,1],c=null;return n.separation=function(t){return arguments.length?(o=t,n):o},n.size=function(t){return arguments.length?(c=null==(l=t)?i:null,n):c?null:l},n.nodeSize=function(t){return arguments.length?(c=null==(l=t)?null:i,n):c?l:null},uu(n,a)},oa.layout.cluster=function(){function n(n,i){var a,o=t.call(this,n,i),l=o[0],c=0;au(l,function(n){var t=n.children;t&&t.length?(n.x=Uu(t),n.y=ju(t)):(n.x=a?c+=e(n,a):0,n.y=0,a=n)});var s=Fu(l),f=Hu(l),h=s.x-e(s,f)/2,g=f.x+e(f,s)/2;return au(l,u?function(n){n.x=(n.x-l.x)*r[0],n.y=(l.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(l.y?n.y/l.y:1))*r[1]}),o}var t=oa.layout.hierarchy().sort(null).value(null),e=Lu,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},uu(n,t)},oa.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++ut?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var a,o,l,c=f(e),s=[],h=i.slice(),p=1/0,v="slice"===g?c.dx:"dice"===g?c.dy:"slice-dice"===g?1&e.depth?c.dy:c.dx:Math.min(c.dx,c.dy);for(n(h,c.dx*c.dy/e.value),s.area=0;(l=h.length)>0;)s.push(a=h[l-1]),s.area+=a.area,"squarify"!==g||(o=r(s,v))<=p?(h.pop(),p=o):(s.area-=s.pop().area,u(s,v,c,!1),v=Math.min(c.dx,c.dy),s.length=s.area=0,p=1/0);s.length&&(u(s,v,c,!0),s.length=s.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,a=f(t),o=r.slice(),l=[];for(n(o,a.dx*a.dy/t.value),l.area=0;i=o.pop();)l.push(i),l.area+=i.area,null!=i.z&&(u(l,i.z?a.dx:a.dy,a,!o.length),l.length=l.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,a=-1,o=n.length;++ae&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,a=n.length,o=e.x,c=e.y,s=t?l(n.area/t):0; -if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++ie.dx)&&(s=e.dx);++ie&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=oa.random.normal.apply(oa,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=oa.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},oa.scale={};var wl={floor:y,ceil:y};oa.scale.linear=function(){return Wu([0,1],[0,1],Mr,!1)};var Sl={s:1,g:1,p:1,r:1,e:1};oa.scale.log=function(){return ri(oa.scale.linear().domain([0,1]),10,!0,[1,10])};var kl=oa.format(".0e"),Nl={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};oa.scale.pow=function(){return ui(oa.scale.linear(),1,[0,1])},oa.scale.sqrt=function(){return oa.scale.pow().exponent(.5)},oa.scale.ordinal=function(){return ai([],{t:"range",a:[[]]})},oa.scale.category10=function(){return oa.scale.ordinal().range(El)},oa.scale.category20=function(){return oa.scale.ordinal().range(Al)},oa.scale.category20b=function(){return oa.scale.ordinal().range(Cl)},oa.scale.category20c=function(){return oa.scale.ordinal().range(zl)};var El=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(xn),Al=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(xn),Cl=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(xn),zl=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(xn);oa.scale.quantile=function(){return oi([],[])},oa.scale.quantize=function(){return li(0,1,[0,1])},oa.scale.threshold=function(){return ci([.5],[0,1])},oa.scale.identity=function(){return si([0,1])},oa.svg={},oa.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),c=Math.max(0,+r.apply(this,arguments)),s=a.apply(this,arguments)-Ha,f=o.apply(this,arguments)-Ha,h=Math.abs(f-s),g=s>f?0:1;if(n>c&&(p=c,c=n,n=p),h>=Fa)return t(c,g)+(n?t(n,1-g):"")+"Z";var p,v,d,m,y,M,x,b,_,w,S,k,N=0,E=0,A=[];if((m=(+l.apply(this,arguments)||0)/2)&&(d=i===Ll?Math.sqrt(n*n+c*c):+i.apply(this,arguments),g||(E*=-1),c&&(E=tn(d/c*Math.sin(m))),n&&(N=tn(d/n*Math.sin(m)))),c){y=c*Math.cos(s+E),M=c*Math.sin(s+E),x=c*Math.cos(f-E),b=c*Math.sin(f-E);var C=Math.abs(f-s-2*E)<=ja?0:1;if(E&&mi(y,M,x,b)===g^C){var z=(s+f)/2;y=c*Math.cos(z),M=c*Math.sin(z),x=b=null}}else y=M=0;if(n){_=n*Math.cos(f-N),w=n*Math.sin(f-N),S=n*Math.cos(s+N),k=n*Math.sin(s+N);var L=Math.abs(s-f+2*N)<=ja?0:1;if(N&&mi(_,w,S,k)===1-g^L){var q=(s+f)/2;_=n*Math.cos(q),w=n*Math.sin(q),S=k=null}}else _=w=0;if(h>Da&&(p=Math.min(Math.abs(c-n)/2,+u.apply(this,arguments)))>.001){v=c>n^g?0:1;var T=p,R=p;if(ja>h){var D=null==S?[_,w]:null==x?[y,M]:Re([y,M],[S,k],[x,b],[_,w]),P=y-D[0],j=M-D[1],U=x-D[0],F=b-D[1],H=1/Math.sin(Math.acos((P*U+j*F)/(Math.sqrt(P*P+j*j)*Math.sqrt(U*U+F*F)))/2),O=Math.sqrt(D[0]*D[0]+D[1]*D[1]);R=Math.min(p,(n-O)/(H-1)),T=Math.min(p,(c-O)/(H+1))}if(null!=x){var I=yi(null==S?[_,w]:[S,k],[y,M],c,T,g),Y=yi([x,b],[_,w],c,T,g);p===T?A.push("M",I[0],"A",T,",",T," 0 0,",v," ",I[1],"A",c,",",c," 0 ",1-g^mi(I[1][0],I[1][1],Y[1][0],Y[1][1]),",",g," ",Y[1],"A",T,",",T," 0 0,",v," ",Y[0]):A.push("M",I[0],"A",T,",",T," 0 1,",v," ",Y[0])}else A.push("M",y,",",M);if(null!=S){var Z=yi([y,M],[S,k],n,-R,g),V=yi([_,w],null==x?[y,M]:[x,b],n,-R,g);p===R?A.push("L",V[0],"A",R,",",R," 0 0,",v," ",V[1],"A",n,",",n," 0 ",g^mi(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-g," ",Z[1],"A",R,",",R," 0 0,",v," ",Z[0]):A.push("L",V[0],"A",R,",",R," 0 0,",v," ",Z[0])}else A.push("L",_,",",w)}else A.push("M",y,",",M),null!=x&&A.push("A",c,",",c," 0 ",C,",",g," ",x,",",b),A.push("L",_,",",w),null!=S&&A.push("A",n,",",n," 0 ",L,",",1-g," ",S,",",k);return A.push("Z"),A.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=hi,r=gi,u=fi,i=Ll,a=pi,o=vi,l=di;return n.innerRadius=function(t){return arguments.length?(e=En(t),n):e},n.outerRadius=function(t){return arguments.length?(r=En(t),n):r},n.cornerRadius=function(t){return arguments.length?(u=En(t),n):u},n.padRadius=function(t){return arguments.length?(i=t==Ll?Ll:En(t),n):i},n.startAngle=function(t){return arguments.length?(a=En(t),n):a},n.endAngle=function(t){return arguments.length?(o=En(t),n):o},n.padAngle=function(t){return arguments.length?(l=En(t),n):l},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+a.apply(this,arguments)+ +o.apply(this,arguments))/2-Ha;return[Math.cos(t)*n,Math.sin(t)*n]},n};var Ll="auto";oa.svg.line=function(){return Mi(y)};var ql=oa.map({linear:xi,"linear-closed":bi,step:_i,"step-before":wi,"step-after":Si,basis:zi,"basis-open":Li,"basis-closed":qi,bundle:Ti,cardinal:Ei,"cardinal-open":ki,"cardinal-closed":Ni,monotone:Fi});ql.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var Tl=[0,2/3,1/3,0],Rl=[0,1/3,2/3,0],Dl=[0,1/6,2/3,1/6];oa.svg.line.radial=function(){var n=Mi(Hi);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},wi.reverse=Si,Si.reverse=wi,oa.svg.area=function(){return Oi(y)},oa.svg.area.radial=function(){var n=Oi(Hi);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},oa.svg.chord=function(){function n(n,o){var l=t(this,i,n,o),c=t(this,a,n,o);return"M"+l.p0+r(l.r,l.p1,l.a1-l.a0)+(e(l,c)?u(l.r,l.p1,l.r,l.p0):u(l.r,l.p1,c.r,c.p0)+r(c.r,c.p1,c.a1-c.a0)+u(c.r,c.p1,l.r,l.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=o.call(n,u,r),a=l.call(n,u,r)-Ha,s=c.call(n,u,r)-Ha;return{r:i,a0:a,a1:s,p0:[i*Math.cos(a),i*Math.sin(a)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>ja)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=Me,a=xe,o=Ii,l=pi,c=vi;return n.radius=function(t){return arguments.length?(o=En(t),n):o},n.source=function(t){return arguments.length?(i=En(t),n):i},n.target=function(t){return arguments.length?(a=En(t),n):a},n.startAngle=function(t){return arguments.length?(l=En(t),n):l},n.endAngle=function(t){return arguments.length?(c=En(t),n):c},n},oa.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),a=e.call(this,n,u),o=(i.y+a.y)/2,l=[i,{x:i.x,y:o},{x:a.x,y:o},a];return l=l.map(r),"M"+l[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var t=Me,e=xe,r=Yi;return n.source=function(e){return arguments.length?(t=En(e),n):t},n.target=function(t){return arguments.length?(e=En(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},oa.svg.diagonal.radial=function(){var n=oa.svg.diagonal(),t=Yi,e=n.projection;return n.projection=function(n){return arguments.length?e(Zi(t=n)):t},n},oa.svg.symbol=function(){function n(n,r){return(Pl.get(t.call(this,n,r))||$i)(e.call(this,n,r))}var t=Xi,e=Vi;return n.type=function(e){return arguments.length?(t=En(e),n):t},n.size=function(t){return arguments.length?(e=En(t),n):e},n};var Pl=oa.map({circle:$i,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Ul)),e=t*Ul;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});oa.svg.symbolTypes=Pl.keys();var jl=Math.sqrt(3),Ul=Math.tan(30*Oa);Aa.transition=function(n){for(var t,e,r=Fl||++Yl,u=Ki(n),i=[],a=Hl||{time:Date.now(),ease:Nr,delay:0,duration:250},o=-1,l=this.length;++oi;i++){u.push(t=[]);for(var e=this[i],o=0,l=e.length;l>o;o++)(r=e[o])&&n.call(r,r.__data__,o,i)&&t.push(r)}return Wi(u,this.namespace,this.id)},Il.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):Y(this,null==t?function(t){t[r][e].tween.remove(n)}:function(u){u[r][e].tween.set(n,t)})},Il.attr=function(n,t){function e(){this.removeAttribute(o)}function r(){this.removeAttributeNS(o.space,o.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(o);return e!==n&&(t=a(e,n),function(n){this.setAttribute(o,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(o.space,o.local);return e!==n&&(t=a(e,n),function(n){this.setAttributeNS(o.space,o.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var a="transform"==n?$r:Mr,o=oa.ns.qualify(n);return Ji(this,"attr."+n,t,o.local?i:u)},Il.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=oa.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Il.style=function(n,e,r){function u(){this.style.removeProperty(n)}function i(e){return null==e?u:(e+="",function(){var u,i=t(this).getComputedStyle(this,null).getPropertyValue(n);return i!==e&&(u=Mr(i,e),function(t){this.style.setProperty(n,u(t),r)})})}var a=arguments.length;if(3>a){if("string"!=typeof n){2>a&&(e="");for(r in n)this.style(r,n[r],e);return this}r=""}return Ji(this,"style."+n,e,i)},Il.styleTween=function(n,e,r){function u(u,i){var a=e.call(this,u,i,t(this).getComputedStyle(this,null).getPropertyValue(n));return a&&function(t){this.style.setProperty(n,a(t),r)}}return arguments.length<3&&(r=""),this.tween("style."+n,u)},Il.text=function(n){return Ji(this,"text",n,Gi)},Il.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Il.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=oa.ease.apply(oa,arguments)),Y(this,function(r){r[e][t].ease=n}))},Il.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:Y(this,"function"==typeof n?function(r,u,i){r[e][t].delay=+n.call(r,r.__data__,u,i)}:(n=+n,function(r){r[e][t].delay=n}))},Il.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:Y(this,"function"==typeof n?function(r,u,i){r[e][t].duration=Math.max(1,n.call(r,r.__data__,u,i))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Il.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var u=Hl,i=Fl;try{Fl=e,Y(this,function(t,u,i){Hl=t[r][e],n.call(t,t.__data__,u,i)})}finally{Hl=u,Fl=i}}else Y(this,function(u){var i=u[r][e];(i.event||(i.event=oa.dispatch("start","end","interrupt"))).on(n,t)});return this},Il.transition=function(){for(var n,t,e,r,u=this.id,i=++Yl,a=this.namespace,o=[],l=0,c=this.length;c>l;l++){o.push(n=[]);for(var t=this[l],s=0,f=t.length;f>s;s++)(e=t[s])&&(r=e[a][u],Qi(e,s,a,i,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Wi(o,a,i)},oa.svg.axis=function(){function n(n){n.each(function(){var n,c=oa.select(this),s=this.__chart__||e,f=this.__chart__=e.copy(),h=null==l?f.ticks?f.ticks.apply(f,o):f.domain():l,g=null==t?f.tickFormat?f.tickFormat.apply(f,o):y:t,p=c.selectAll(".tick").data(h,f),v=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Da),d=oa.transition(p.exit()).style("opacity",Da).remove(),m=oa.transition(p.order()).style("opacity",1),M=Math.max(u,0)+a,x=Zu(f),b=c.selectAll(".domain").data([0]),_=(b.enter().append("path").attr("class","domain"),oa.transition(b));v.append("line"),v.append("text");var w,S,k,N,E=v.select("line"),A=m.select("line"),C=p.select("text").text(g),z=v.select("text"),L=m.select("text"),q="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=na,w="x",k="y",S="x2",N="y2",C.attr("dy",0>q?"0em":".71em").style("text-anchor","middle"),_.attr("d","M"+x[0]+","+q*i+"V0H"+x[1]+"V"+q*i)):(n=ta,w="y",k="x",S="y2",N="x2",C.attr("dy",".32em").style("text-anchor",0>q?"end":"start"),_.attr("d","M"+q*i+","+x[0]+"H0V"+x[1]+"H"+q*i)),E.attr(N,q*u),z.attr(k,q*M),A.attr(S,0).attr(N,q*u),L.attr(w,0).attr(k,q*M),f.rangeBand){var T=f,R=T.rangeBand()/2;s=f=function(n){return T(n)+R}}else s.rangeBand?s=f:d.call(n,f,s);v.call(n,s,f),m.call(n,f,f)})}var t,e=oa.scale.linear(),r=Zl,u=6,i=6,a=3,o=[10],l=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Vl?t+"":Zl,n):r},n.ticks=function(){return arguments.length?(o=ca(arguments),n):o},n.tickValues=function(t){return arguments.length?(l=t,n):l},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(a=+t,n):a},n.tickSubdivide=function(){return arguments.length&&n},n};var Zl="bottom",Vl={top:1,right:1,bottom:1,left:1};oa.svg.brush=function(){function n(t){t.each(function(){var t=oa.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",i).on("touchstart.brush",i),a=t.selectAll(".background").data([0]);a.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),t.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var o=t.selectAll(".resize").data(v,y);o.exit().remove(),o.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return Xl[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),o.style("display",n.empty()?"none":null);var l,f=oa.transition(t),h=oa.transition(a);c&&(l=Zu(c),h.attr("x",l[0]).attr("width",l[1]-l[0]),r(f)),s&&(l=Zu(s),h.attr("y",l[0]).attr("height",l[1]-l[0]),u(f)),e(f)})}function e(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+f[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function r(n){n.select(".extent").attr("x",f[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",f[1]-f[0])}function u(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function i(){function i(){32==oa.event.keyCode&&(C||(M=null,L[0]-=f[1],L[1]-=h[1],C=2),S())}function v(){32==oa.event.keyCode&&2==C&&(L[0]+=f[1],L[1]+=h[1],C=0,S())}function d(){var n=oa.mouse(b),t=!1;x&&(n[0]+=x[0],n[1]+=x[1]),C||(oa.event.altKey?(M||(M=[(f[0]+f[1])/2,(h[0]+h[1])/2]),L[0]=f[+(n[0]s?(u=r,r=s):u=s),v[0]!=r||v[1]!=u?(e?o=null:a=null,v[0]=r,v[1]=u,!0):void 0}function y(){d(),k.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),oa.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),z(),w({type:"brushend"})}var M,x,b=this,_=oa.select(oa.event.target),w=l.of(b,arguments),k=oa.select(b),N=_.datum(),E=!/^(n|s)$/.test(N)&&c,A=!/^(e|w)$/.test(N)&&s,C=_.classed("extent"),z=W(b),L=oa.mouse(b),q=oa.select(t(b)).on("keydown.brush",i).on("keyup.brush",v);if(oa.event.changedTouches?q.on("touchmove.brush",d).on("touchend.brush",y):q.on("mousemove.brush",d).on("mouseup.brush",y),k.interrupt().selectAll("*").interrupt(),C)L[0]=f[0]-L[0],L[1]=h[0]-L[1];else if(N){var T=+/w$/.test(N),R=+/^n/.test(N);x=[f[1-T]-L[0],h[1-R]-L[1]],L[0]=f[T],L[1]=h[R]}else oa.event.altKey&&(M=L.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),oa.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),d()}var a,o,l=N(n,"brushstart","brush","brushend"),c=null,s=null,f=[0,0],h=[0,0],g=!0,p=!0,v=$l[0];return n.event=function(n){n.each(function(){var n=l.of(this,arguments),t={x:f,y:h,i:a,j:o},e=this.__chart__||t;this.__chart__=t,Fl?oa.select(this).transition().each("start.brush",function(){a=e.i,o=e.j,f=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=xr(f,t.x),r=xr(h,t.y);return a=o=null,function(u){f=t.x=e(u),h=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){a=t.i,o=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,v=$l[!c<<1|!s],n):c},n.y=function(t){return arguments.length?(s=t,v=$l[!c<<1|!s],n):s},n.clamp=function(t){return arguments.length?(c&&s?(g=!!t[0],p=!!t[1]):c?g=!!t:s&&(p=!!t),n):c&&s?[g,p]:c?g:s?p:null},n.extent=function(t){var e,r,u,i,l;return arguments.length?(c&&(e=t[0],r=t[1],s&&(e=e[0],r=r[0]),a=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(l=e,e=r,r=l),(e!=f[0]||r!=f[1])&&(f=[e,r])),s&&(u=t[0],i=t[1],c&&(u=u[1],i=i[1]),o=[u,i],s.invert&&(u=s(u),i=s(i)),u>i&&(l=u,u=i,i=l),(u!=h[0]||i!=h[1])&&(h=[u,i])),n):(c&&(a?(e=a[0],r=a[1]):(e=f[0],r=f[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(l=e,e=r,r=l))),s&&(o?(u=o[0],i=o[1]):(u=h[0],i=h[1],s.invert&&(u=s.invert(u),i=s.invert(i)),u>i&&(l=u,u=i,i=l))),c&&s?[[e,u],[r,i]]:c?[e,r]:s&&[u,i])},n.clear=function(){return n.empty()||(f=[0,0],h=[0,0],a=o=null),n},n.empty=function(){return!!c&&f[0]==f[1]||!!s&&h[0]==h[1]},oa.rebind(n,l,"on")};var Xl={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},$l=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Bl=ho.format=Mo.timeFormat,Wl=Bl.utc,Jl=Wl("%Y-%m-%dT%H:%M:%S.%LZ");Bl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?ea:Jl,ea.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},ea.toString=Jl.toString,ho.second=On(function(n){return new go(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),ho.seconds=ho.second.range,ho.seconds.utc=ho.second.utc.range,ho.minute=On(function(n){return new go(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),ho.minutes=ho.minute.range,ho.minutes.utc=ho.minute.utc.range,ho.hour=On(function(n){var t=n.getTimezoneOffset()/60;return new go(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),ho.hours=ho.hour.range,ho.hours.utc=ho.hour.utc.range,ho.month=On(function(n){return n=ho.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),ho.months=ho.month.range,ho.months.utc=ho.month.utc.range;var Gl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Kl=[[ho.second,1],[ho.second,5],[ho.second,15],[ho.second,30],[ho.minute,1],[ho.minute,5],[ho.minute,15],[ho.minute,30],[ho.hour,1],[ho.hour,3],[ho.hour,6],[ho.hour,12],[ho.day,1],[ho.day,2],[ho.week,1],[ho.month,1],[ho.month,3],[ho.year,1]],Ql=Bl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",zt]]),nc={range:function(n,t,e){return oa.range(Math.ceil(n/e)*e,+t,e).map(ua)},floor:y,ceil:y};Kl.year=ho.year,ho.scale=function(){return ra(oa.scale.linear(),Kl,Ql)};var tc=Kl.map(function(n){return[n[0].utc,n[1]]}),ec=Wl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",zt]]);tc.year=ho.year.utc,ho.scale.utc=function(){return ra(oa.scale.linear(),tc,ec)},oa.text=An(function(n){return n.responseText}),oa.json=function(n,t){return Cn(n,"application/json",ia,t)},oa.html=function(n,t){return Cn(n,"text/html",aa,t)},oa.xml=An(function(n){return n.responseXML}),"function"==typeof define&&define.amd?(this.d3=oa,define(oa)):"object"==typeof module&&module.exports?module.exports=oa:this.d3=oa}(); \ No newline at end of file diff --git a/miniwob-sandbox/turk-www-flight/core/jquery-ui/external/jquery/jquery.js b/miniwob-sandbox/turk-www-flight/core/jquery-ui/external/jquery/jquery.js deleted file mode 100644 index 7fc60fc..0000000 --- a/miniwob-sandbox/turk-www-flight/core/jquery-ui/external/jquery/jquery.js +++ /dev/null @@ -1,11008 +0,0 @@ -/*! - * jQuery JavaScript Library v1.12.4 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-05-20T17:17Z - */ - -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Support: Firefox 18+ -// Can't be in strict mode, several libs including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -//"use strict"; -var deletedIds = []; - -var document = window.document; - -var slice = deletedIds.slice; - -var concat = deletedIds.concat; - -var push = deletedIds.push; - -var indexOf = deletedIds.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - version = "1.12.4", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1, IE<9 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: deletedIds.sort, - splice: deletedIds.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var src, copyIsArray, copy, name, options, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = jQuery.isArray( copy ) ) ) ) { - - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray( src ) ? src : []; - - } else { - clone = src && jQuery.isPlainObject( src ) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type( obj ) === "function"; - }, - - isArray: Array.isArray || function( obj ) { - return jQuery.type( obj ) === "array"; - }, - - isWindow: function( obj ) { - /* jshint eqeqeq: false */ - return obj != null && obj == obj.window; - }, - - isNumeric: function( obj ) { - - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - var realStringObj = obj && obj.toString(); - return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - isPlainObject: function( obj ) { - var key; - - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - try { - - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call( obj, "constructor" ) && - !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { - return false; - } - } catch ( e ) { - - // IE8,9 Will throw exceptions on certain host objects #9897 - return false; - } - - // Support: IE<9 - // Handle iteration over inherited properties before own properties. - if ( !support.ownFirst ) { - for ( key in obj ) { - return hasOwn.call( obj, key ); - } - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; - }, - - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function( data ) { - if ( data && jQuery.trim( data ) ) { - - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); // jscs:ignore requireDotNotation - } )( data ); - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android<4.1, IE<9 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - var len; - - if ( arr ) { - if ( indexOf ) { - return indexOf.call( arr, elem, i ); - } - - len = arr.length; - i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; - - for ( ; i < len; i++ ) { - - // Skip accessing in sparse arrays - if ( i in arr && arr[ i ] === elem ) { - return i; - } - } - } - - return -1; - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - while ( j < len ) { - first[ i++ ] = second[ j++ ]; - } - - // Support: IE<9 - // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) - if ( len !== len ) { - while ( second[ j ] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var args, proxy, tmp; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: function() { - return +( new Date() ); - }, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -// JSHint would error on this code due to the Symbol not being defined in ES5. -// Defining this global in .jshintrc would create a danger of using the global -// unguarded in another place, it seems safer to just disable JSHint for these -// three lines. -/* jshint ignore: start */ -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = deletedIds[ Symbol.iterator ]; -} -/* jshint ignore: end */ - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: iOS 8.2 (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.2.1 - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-10-17 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, nidselect, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - - // ID selector - if ( (m = match[1]) ) { - - // Document context - if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !compilerCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - - if ( nodeType !== 1 ) { - newContext = context; - newSelector = selector; - - // qSA looks outside Element context, which is not what we want - // Thanks to Andrew Dupont for this workaround technique - // Support: IE <=8 - // Exclude object elements - } else if ( context.nodeName.toLowerCase() !== "object" ) { - - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", (nid = expando) ); - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; - while ( i-- ) { - groups[i] = nidselect + " " + toSelector( groups[i] ); - } - newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9-11, Edge - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( (parent = document.defaultView) && parent.top !== parent ) { - // Support: IE 11 - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( document.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - return m ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - !compilerCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - // Use previously-cached element index if available - if ( useCache ) { - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); - - if ( (oldCache = uniqueCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context === document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - if ( !context && elem.ownerDocument !== document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - } ); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( jQuery.inArray( elem, qualifier ) > -1 ) !== not; - } ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, - ret = [], - self = this, - len = self.length; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // init accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector.charAt( 0 ) === "<" && - selector.charAt( selector.length - 1 ) === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[ 2 ] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[ 0 ] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return typeof root.ready !== "undefined" ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var i, - targets = jQuery( target, this ), - len = targets.length; - - return this.filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( pos ? - pos.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return jQuery.inArray( this[ 0 ], jQuery( elem ) ); - } - - // Locate the position of the desired element - return jQuery.inArray( - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem, this ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - do { - cur = cur[ dir ]; - } while ( cur && cur.nodeType !== 1 ); - - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - ret = jQuery.uniqueSort( ret ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - } - - return this.pushStack( ret ); - }; -} ); -var rnotwhite = ( /\S+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( jQuery.isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = true; - if ( !memory ) { - self.disable(); - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], - [ "notify", "progress", jQuery.Callbacks( "memory" ) ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this === promise ? newDefer.promise() : this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( function() { - - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || - ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. - // If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .progress( updateFunc( i, progressContexts, progressValues ) ) - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ); - } else { - --remaining; - } - } - } - - // if we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -} ); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -} ); - -/** - * Clean-up method for dom ready events - */ -function detach() { - if ( document.addEventListener ) { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - - } else { - document.detachEvent( "onreadystatechange", completed ); - window.detachEvent( "onload", completed ); - } -} - -/** - * The ready event handler and self cleanup method - */ -function completed() { - - // readyState === "complete" is good enough for us to call the dom ready in oldIE - if ( document.addEventListener || - window.event.type === "load" || - document.readyState === "complete" ) { - - detach(); - jQuery.ready(); - } -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called - // after the browser event has already occurred. - // Support: IE6-10 - // Older IE sometimes signals "interactive" too soon - if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - - // Standards-based browsers support DOMContentLoaded - } else if ( document.addEventListener ) { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); - - // If IE event model is used - } else { - - // Ensure firing before onload, maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", completed ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", completed ); - - // If IE and not a frame - // continually check to see if the document is ready - var top = false; - - try { - top = window.frameElement == null && document.documentElement; - } catch ( e ) {} - - if ( top && top.doScroll ) { - ( function doScrollCheck() { - if ( !jQuery.isReady ) { - - try { - - // Use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - top.doScroll( "left" ); - } catch ( e ) { - return window.setTimeout( doScrollCheck, 50 ); - } - - // detach all dom ready events - detach(); - - // and execute any waiting functions - jQuery.ready(); - } - } )(); - } - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); - - - - -// Support: IE<9 -// Iteration over object's inherited properties before its own -var i; -for ( i in jQuery( support ) ) { - break; -} -support.ownFirst = i === "0"; - -// Note: most support tests are defined in their respective modules. -// false until the test is run -support.inlineBlockNeedsLayout = false; - -// Execute ASAP in case we need to set body.style.zoom -jQuery( function() { - - // Minified: var a,b,c,d - var val, div, body, container; - - body = document.getElementsByTagName( "body" )[ 0 ]; - if ( !body || !body.style ) { - - // Return for frameset docs that don't have a body - return; - } - - // Setup - div = document.createElement( "div" ); - container = document.createElement( "div" ); - container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; - body.appendChild( container ).appendChild( div ); - - if ( typeof div.style.zoom !== "undefined" ) { - - // Support: IE<8 - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; - - support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; - if ( val ) { - - // Prevent IE 6 from affecting layout for positioned elements #11048 - // Prevent IE from shrinking the body in IE 7 mode #12869 - // Support: IE<8 - body.style.zoom = 1; - } - } - - body.removeChild( container ); -} ); - - -( function() { - var div = document.createElement( "div" ); - - // Support: IE<9 - support.deleteExpando = true; - try { - delete div.test; - } catch ( e ) { - support.deleteExpando = false; - } - - // Null elements to avoid leaks in IE. - div = null; -} )(); -var acceptData = function( elem ) { - var noData = jQuery.noData[ ( elem.nodeName + " " ).toLowerCase() ], - nodeType = +elem.nodeType || 1; - - // Do not set data on non-element DOM nodes because it will not be cleared (#8335). - return nodeType !== 1 && nodeType !== 9 ? - false : - - // Nodes accept data unless otherwise specified; rejection can be conditional - !noData || noData !== true && elem.getAttribute( "classid" ) === noData; -}; - - - - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /([A-Z])/g; - -function dataAttr( elem, key, data ) { - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - - var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// checks a cache object for emptiness -function isEmptyDataObject( obj ) { - var name; - for ( name in obj ) { - - // if the public data object is empty, the private is still empty - if ( name === "data" && jQuery.isEmptyObject( obj[ name ] ) ) { - continue; - } - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} - -function internalData( elem, name, data, pvt /* Internal Use Only */ ) { - if ( !acceptData( elem ) ) { - return; - } - - var ret, thisCache, - internalKey = jQuery.expando, - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( ( !id || !cache[ id ] || ( !pvt && !cache[ id ].data ) ) && - data === undefined && typeof name === "string" ) { - return; - } - - if ( !id ) { - - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; - } else { - id = internalKey; - } - } - - if ( !cache[ id ] ) { - - // Avoid exposing jQuery metadata on plain JS objects when the object - // is serialized using JSON.stringify - cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ] = jQuery.extend( cache[ id ], name ); - } else { - cache[ id ].data = jQuery.extend( cache[ id ].data, name ); - } - } - - thisCache = cache[ id ]; - - // jQuery data() is stored in a separate object inside the object's internal data - // cache in order to avoid key collisions between internal data and user-defined - // data. - if ( !pvt ) { - if ( !thisCache.data ) { - thisCache.data = {}; - } - - thisCache = thisCache.data; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // Check for both converted-to-camel and non-converted data property names - // If a data property was specified - if ( typeof name === "string" ) { - - // First Try to find as-is property data - ret = thisCache[ name ]; - - // Test for null|undefined property data - if ( ret == null ) { - - // Try to find the camelCased property - ret = thisCache[ jQuery.camelCase( name ) ]; - } - } else { - ret = thisCache; - } - - return ret; -} - -function internalRemoveData( elem, name, pvt ) { - if ( !acceptData( elem ) ) { - return; - } - - var thisCache, i, - isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - id = isNode ? elem[ jQuery.expando ] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - - thisCache = pvt ? cache[ id ] : cache[ id ].data; - - if ( thisCache ) { - - // Support array or space separated string names for data keys - if ( !jQuery.isArray( name ) ) { - - // try the string as a key before any manipulation - if ( name in thisCache ) { - name = [ name ]; - } else { - - // split the camel cased version by spaces unless a key with the spaces exists - name = jQuery.camelCase( name ); - if ( name in thisCache ) { - name = [ name ]; - } else { - name = name.split( " " ); - } - } - } else { - - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = name.concat( jQuery.map( name, jQuery.camelCase ) ); - } - - i = name.length; - while ( i-- ) { - delete thisCache[ name[ i ] ]; - } - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( pvt ? !isEmptyDataObject( thisCache ) : !jQuery.isEmptyObject( thisCache ) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( !pvt ) { - delete cache[ id ].data; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject( cache[ id ] ) ) { - return; - } - } - - // Destroy the cache - if ( isNode ) { - jQuery.cleanData( [ elem ], true ); - - // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) - /* jshint eqeqeq: false */ - } else if ( support.deleteExpando || cache != cache.window ) { - /* jshint eqeqeq: true */ - delete cache[ id ]; - - // When all else fails, undefined - } else { - cache[ id ] = undefined; - } -} - -jQuery.extend( { - cache: {}, - - // The following elements (space-suffixed to avoid Object.prototype collisions) - // throw uncatchable exceptions if you attempt to set expando properties - noData: { - "applet ": true, - "embed ": true, - - // ...but Flash objects (which have this classid) *can* handle expandos - "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[ jQuery.expando ] ] : elem[ jQuery.expando ]; - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data ) { - return internalData( elem, name, data ); - }, - - removeData: function( elem, name ) { - return internalRemoveData( elem, name ); - }, - - // For internal use only. - _data: function( elem, name, data ) { - return internalData( elem, name, data, true ); - }, - - _removeData: function( elem, name ) { - return internalRemoveData( elem, name, true ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Special expections of .data basically thwart jQuery.access, - // so implement the relevant behavior ourselves - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = jQuery.data( elem ); - - if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - jQuery._data( elem, "parsedAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - jQuery.data( this, key ); - } ); - } - - return arguments.length > 1 ? - - // Sets one value - this.each( function() { - jQuery.data( this, key, value ); - } ) : - - // Gets one value - // Try to fetch any internally stored data first - elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; - }, - - removeData: function( key ) { - return this.each( function() { - jQuery.removeData( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = jQuery._data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = jQuery._data( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // not intended for public consumption - generates a queueHooks object, - // or returns the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return jQuery._data( elem, key ) || jQuery._data( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - jQuery._removeData( elem, type + "queue" ); - jQuery._removeData( elem, key ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = jQuery._data( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); - - -( function() { - var shrinkWrapBlocksVal; - - support.shrinkWrapBlocks = function() { - if ( shrinkWrapBlocksVal != null ) { - return shrinkWrapBlocksVal; - } - - // Will be changed later if needed. - shrinkWrapBlocksVal = false; - - // Minified: var b,c,d - var div, body, container; - - body = document.getElementsByTagName( "body" )[ 0 ]; - if ( !body || !body.style ) { - - // Test fired too early or in an unsupported environment, exit. - return; - } - - // Setup - div = document.createElement( "div" ); - container = document.createElement( "div" ); - container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; - body.appendChild( container ).appendChild( div ); - - // Support: IE6 - // Check if elements with layout shrink-wrap their children - if ( typeof div.style.zoom !== "undefined" ) { - - // Reset CSS: box-sizing; display; margin; border - div.style.cssText = - - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + - "box-sizing:content-box;display:block;margin:0;border:0;" + - "padding:1px;width:1px;zoom:1"; - div.appendChild( document.createElement( "div" ) ).style.width = "5px"; - shrinkWrapBlocksVal = div.offsetWidth !== 3; - } - - body.removeChild( container ); - - return shrinkWrapBlocksVal; - }; - -} )(); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || - !jQuery.contains( elem.ownerDocument, elem ); - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, - scale = 1, - maxIterations = 20, - currentValue = tween ? - function() { return tween.cur(); } : - function() { return jQuery.css( elem, prop, "" ); }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - do { - - // If previous iteration zeroed out, double until we get *something*. - // Use string for doubling so we don't accidentally see scale as unchanged below - scale = scale || ".5"; - - // Adjust and apply - initialInUnit = initialInUnit / scale; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Update scale, tolerating zero or NaN from tween.cur() - // Break the loop if scale is unchanged or perfect, or if we've just had enough. - } while ( - scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations - ); - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - length = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < length; i++ ) { - fn( - elems[ i ], - key, - raw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - length ? fn( elems[ 0 ], key ) : emptyGet; -}; -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([\w:-]+)/ ); - -var rscriptType = ( /^$|\/(?:java|ecma)script/i ); - -var rleadingWhitespace = ( /^\s+/ ); - -var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|" + - "details|dialog|figcaption|figure|footer|header|hgroup|main|" + - "mark|meter|nav|output|picture|progress|section|summary|template|time|video"; - - - -function createSafeFragment( document ) { - var list = nodeNames.split( "|" ), - safeFrag = document.createDocumentFragment(); - - if ( safeFrag.createElement ) { - while ( list.length ) { - safeFrag.createElement( - list.pop() - ); - } - } - return safeFrag; -} - - -( function() { - var div = document.createElement( "div" ), - fragment = document.createDocumentFragment(), - input = document.createElement( "input" ); - - // Setup - div.innerHTML = "
            a"; - - // IE strips leading whitespace when .innerHTML is used - support.leadingWhitespace = div.firstChild.nodeType === 3; - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - support.tbody = !div.getElementsByTagName( "tbody" ).length; - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; - - // Makes sure cloning an html5 element does not cause problems - // Where outerHTML is undefined, this still works - support.html5Clone = - document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - input.type = "checkbox"; - input.checked = true; - fragment.appendChild( input ); - support.appendChecked = input.checked; - - // Make sure textarea (and checkbox) defaultValue is properly cloned - // Support: IE6-IE11+ - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // #11217 - WebKit loses check when the name is after the checked attribute - fragment.appendChild( div ); - - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input = document.createElement( "input" ); - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 - // old WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<9 - // Cloned elements keep attachEvent handlers, we use addEventListener on IE9+ - support.noCloneEvent = !!div.addEventListener; - - // Support: IE<9 - // Since attributes and properties are the same in IE, - // cleanData must set properties to undefined rather than use removeAttribute - div[ jQuery.expando ] = 1; - support.attributes = !div.getAttribute( jQuery.expando ); -} )(); - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - option: [ 1, "" ], - legend: [ 1, "
            ", "
            " ], - area: [ 1, "", "" ], - - // Support: IE8 - param: [ 1, "", "" ], - thead: [ 1, "", "
            " ], - tr: [ 2, "", "
            " ], - col: [ 2, "", "
            " ], - td: [ 3, "", "
            " ], - - // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, - // unless wrapped in a div with non-breaking characters in front of it. - _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
            ", "
            " ] -}; - -// Support: IE8-IE9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - - -function getAll( context, tag ) { - var elems, elem, - i = 0, - found = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== "undefined" ? - context.querySelectorAll( tag || "*" ) : - undefined; - - if ( !found ) { - for ( found = [], elems = context.childNodes || context; - ( elem = elems[ i ] ) != null; - i++ - ) { - if ( !tag || jQuery.nodeName( elem, tag ) ) { - found.push( elem ); - } else { - jQuery.merge( found, getAll( elem, tag ) ); - } - } - } - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], found ) : - found; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var elem, - i = 0; - for ( ; ( elem = elems[ i ] ) != null; i++ ) { - jQuery._data( - elem, - "globalEval", - !refElements || jQuery._data( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/, - rtbody = / from table fragments - if ( !support.tbody ) { - - // String was a , *may* have spurious - elem = tag === "table" && !rtbody.test( elem ) ? - tmp.firstChild : - - // String was a bare or - wrap[ 1 ] === "
            " && !rtbody.test( elem ) ? - tmp : - 0; - - j = elem && elem.childNodes.length; - while ( j-- ) { - if ( jQuery.nodeName( ( tbody = elem.childNodes[ j ] ), "tbody" ) && - !tbody.childNodes.length ) { - - elem.removeChild( tbody ); - } - } - } - - jQuery.merge( nodes, tmp.childNodes ); - - // Fix #12392 for WebKit and IE > 9 - tmp.textContent = ""; - - // Fix #12392 for oldIE - while ( tmp.firstChild ) { - tmp.removeChild( tmp.firstChild ); - } - - // Remember the top-level container for proper cleanup - tmp = safe.lastChild; - } - } - } - - // Fix #11356: Clear elements from fragment - if ( tmp ) { - safe.removeChild( tmp ); - } - - // Reset defaultChecked for any radios and checkboxes - // about to be appended to the DOM in IE 6/7 (#8060) - if ( !support.appendChecked ) { - jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); - } - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( safe.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - tmp = null; - - return safe; -} - - -( function() { - var i, eventName, - div = document.createElement( "div" ); - - // Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events) - for ( i in { submit: true, change: true, focusin: true } ) { - eventName = "on" + i; - - if ( !( support[ i ] = eventName in window ) ) { - - // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) - div.setAttribute( eventName, "t" ); - support[ i ] = div.attributes[ eventName ].expando === false; - } - } - - // Null elements to avoid leaks in IE. - div = null; -} )(); - - -var rformElems = /^(?:input|select|textarea)$/i, - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE9 -// See #13393 for more info -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - var tmp, events, t, handleObjIn, - special, eventHandle, handleObj, - handlers, type, namespaces, origType, - elemData = jQuery._data( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && - ( !e || jQuery.event.triggered !== e.type ) ? - jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : - undefined; - }; - - // Add elem as a property of the handle fn to prevent a memory leak - // with IE non-native events - eventHandle.elem = elem; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener/attachEvent if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - var j, handleObj, tmp, - origCount, t, events, - special, handlers, type, - namespaces, origType, - elemData = jQuery.hasData( elem ) && jQuery._data( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - - // removeData also checks for emptiness and clears the expando if empty - // so use it instead of delete - jQuery._removeData( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - var handle, ontype, cur, - bubbleType, special, tmp, i, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && - jQuery._data( cur, "handle" ); - - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( - ( !special._default || - special._default.apply( eventPath.pop(), data ) === false - ) && acceptData( elem ) - ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction() check here because IE6/7 fails that test. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - try { - elem[ type ](); - } catch ( e ) { - - // IE<9 dies on focus/blur to hidden element (#1486,#12518) - // only reproducible on winXP IE8 native, not IE9 in IE8 mode - } - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Support (at least): Chrome, IE9 - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // - // Support: Firefox<=42+ - // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) - if ( delegateCount && cur.nodeType && - ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { - - /* jshint eqeqeq: false */ - for ( ; cur != this; cur = cur.parentNode || this ) { - /* jshint eqeqeq: true */ - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push( { elem: cur, handlers: matches } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: IE<9 - // Fix target property (#1925) - if ( !event.target ) { - event.target = originalEvent.srcElement || document; - } - - // Support: Safari 6-8+ - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Support: IE<9 - // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) - event.metaKey = !!event.metaKey; - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + - "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split( " " ), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: ( "button buttons clientX clientY fromElement offsetX offsetY " + - "pageX pageY screenX screenY toElement" ).split( " " ), - filter: function( event, original ) { - var body, eventDoc, doc, - button = original.button, - fromElement = original.fromElement; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + - ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + - ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && fromElement ) { - event.relatedTarget = fromElement === event.target ? - original.toElement : - fromElement; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - try { - this.focus(); - return false; - } catch ( e ) { - - // Support: IE<9 - // If we error on focus to hidden element (#1486, #12518), - // let .trigger() run the handlers - } - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - // Piggyback on a donor event to simulate a different one - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - - // Previously, `originalEvent: {}` was set here, so stopPropagation call - // would not be triggered on donor event, since in our own - // jQuery.event.stopPropagation function we had a check for existence of - // originalEvent.stopPropagation method, so, consequently it would be a noop. - // - // Guard for simulated events was moved to jQuery.event.stopPropagation function - // since `originalEvent` should point to the original event for the - // constancy with other events and for more focused logic - } - ); - - jQuery.event.trigger( e, null, elem ); - - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } - } : - function( elem, type, handle ) { - var name = "on" + type; - - if ( elem.detachEvent ) { - - // #8545, #7054, preventing memory leaks for custom events in IE6-8 - // detachEvent needed property on element, by name of that event, - // to properly expose it to GC - if ( typeof elem[ name ] === "undefined" ) { - elem[ name ] = null; - } - - elem.detachEvent( name, handle ); - } - }; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: IE < 9, Android < 4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - if ( !e ) { - return; - } - - // If preventDefault exists, run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // Support: IE - // Otherwise set the returnValue property of the original event to false - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( !e || this.isSimulated ) { - return; - } - - // If stopPropagation exists, run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - - // Support: IE - // Set the cancelBubble property of the original event to true - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && e.stopImmediatePropagation ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://code.google.com/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -// IE submit delegation -if ( !support.submit ) { - - jQuery.event.special.submit = { - setup: function() { - - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Lazy-add a submit handler when a descendant form may potentially be submitted - jQuery.event.add( this, "click._submit keypress._submit", function( e ) { - - // Node name check avoids a VML-related crash in IE (#9807) - var elem = e.target, - form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? - - // Support: IE <=8 - // We use jQuery.prop instead of elem.form - // to allow fixing the IE8 delegated submit issue (gh-2332) - // by 3rd party polyfills/workarounds. - jQuery.prop( elem, "form" ) : - undefined; - - if ( form && !jQuery._data( form, "submit" ) ) { - jQuery.event.add( form, "submit._submit", function( event ) { - event._submitBubble = true; - } ); - jQuery._data( form, "submit", true ); - } - } ); - - // return undefined since we don't need an event listener - }, - - postDispatch: function( event ) { - - // If form was submitted by the user, bubble the event up the tree - if ( event._submitBubble ) { - delete event._submitBubble; - if ( this.parentNode && !event.isTrigger ) { - jQuery.event.simulate( "submit", this.parentNode, event ); - } - } - }, - - teardown: function() { - - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Remove delegated handlers; cleanData eventually reaps submit handlers attached above - jQuery.event.remove( this, "._submit" ); - } - }; -} - -// IE change delegation and checkbox/radio fix -if ( !support.change ) { - - jQuery.event.special.change = { - - setup: function() { - - if ( rformElems.test( this.nodeName ) ) { - - // IE doesn't fire change on a check/radio until blur; trigger it on click - // after a propertychange. Eat the blur-change in special.change.handle. - // This still fires onchange a second time for check/radio after blur. - if ( this.type === "checkbox" || this.type === "radio" ) { - jQuery.event.add( this, "propertychange._change", function( event ) { - if ( event.originalEvent.propertyName === "checked" ) { - this._justChanged = true; - } - } ); - jQuery.event.add( this, "click._change", function( event ) { - if ( this._justChanged && !event.isTrigger ) { - this._justChanged = false; - } - - // Allow triggered, simulated change events (#11500) - jQuery.event.simulate( "change", this, event ); - } ); - } - return false; - } - - // Delegated event; lazy-add a change handler on descendant inputs - jQuery.event.add( this, "beforeactivate._change", function( e ) { - var elem = e.target; - - if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "change" ) ) { - jQuery.event.add( elem, "change._change", function( event ) { - if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { - jQuery.event.simulate( "change", this.parentNode, event ); - } - } ); - jQuery._data( elem, "change", true ); - } - } ); - }, - - handle: function( event ) { - var elem = event.target; - - // Swallow native change events from checkbox/radio, we already triggered them above - if ( this !== elem || event.isSimulated || event.isTrigger || - ( elem.type !== "radio" && elem.type !== "checkbox" ) ) { - - return event.handleObj.handler.apply( this, arguments ); - } - }, - - teardown: function() { - jQuery.event.remove( this, "._change" ); - - return !rformElems.test( this.nodeName ); - } - }; -} - -// Support: Firefox -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome, Safari -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - jQuery._removeData( doc, fix ); - } else { - jQuery._data( doc, fix, attaches ); - } - } - }; - } ); -} - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - }, - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -var rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, - rnoshimcache = new RegExp( "<(?:" + nodeNames + ")[\\s/>]", "i" ), - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, - - // Support: IE 10-11, Edge 10240+ - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g, - safeFragment = createSafeFragment( document ), - fragmentDiv = safeFragment.appendChild( document.createElement( "div" ) ); - -// Support: IE<8 -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName( "tbody" )[ 0 ] || - elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( jQuery.find.attr( elem, "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute( "type" ); - } - return elem; -} - -function cloneCopyEvent( src, dest ) { - if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { - return; - } - - var type, i, l, - oldData = jQuery._data( src ), - curData = jQuery._data( dest, oldData ), - events = oldData.events; - - if ( events ) { - delete curData.handle; - curData.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - - // make the cloned public data object a copy from the original - if ( curData.data ) { - curData.data = jQuery.extend( {}, curData.data ); - } -} - -function fixCloneNodeIssues( src, dest ) { - var nodeName, e, data; - - // We do not need to do anything for non-Elements - if ( dest.nodeType !== 1 ) { - return; - } - - nodeName = dest.nodeName.toLowerCase(); - - // IE6-8 copies events bound via attachEvent when using cloneNode. - if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { - data = jQuery._data( dest ); - - for ( e in data.events ) { - jQuery.removeEvent( dest, e, data.handle ); - } - - // Event data gets referenced instead of copied if the expando gets copied too - dest.removeAttribute( jQuery.expando ); - } - - // IE blanks contents when cloning scripts, and tries to evaluate newly-set text - if ( nodeName === "script" && dest.text !== src.text ) { - disableScript( dest ).text = src.text; - restoreScript( dest ); - - // IE6-10 improperly clones children of object elements using classid. - // IE10 throws NoModificationAllowedError if parent is null, #12132. - } else if ( nodeName === "object" ) { - if ( dest.parentNode ) { - dest.outerHTML = src.outerHTML; - } - - // This path appears unavoidable for IE9. When cloning an object - // element in IE9, the outerHTML strategy above is not sufficient. - // If the src has innerHTML and the destination does not, - // copy the src.innerHTML into the dest.innerHTML. #10324 - if ( support.html5Clone && ( src.innerHTML && !jQuery.trim( dest.innerHTML ) ) ) { - dest.innerHTML = src.innerHTML; - } - - } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - - // IE6-8 fails to persist the checked state of a cloned checkbox - // or radio button. Worse, IE6-7 fail to give the cloned element - // a checked appearance if the defaultChecked value isn't also set - - dest.defaultChecked = dest.checked = src.checked; - - // IE6-7 get confused and end up setting the value of a cloned - // checkbox/radio button to an empty string instead of "on" - if ( dest.value !== src.value ) { - dest.value = src.value; - } - - // IE6-8 fails to return the selected option to the default selected - // state when cloning options - } else if ( nodeName === "option" ) { - dest.defaultSelected = dest.selected = src.defaultSelected; - - // IE6-8 fails to set the defaultValue to the correct value when - // cloning other types of input fields - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var first, node, hasScripts, - scripts, doc, fragment, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !jQuery._data( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( - ( node.text || node.textContent || node.innerHTML || "" ) - .replace( rcleanScript, "" ) - ); - } - } - } - } - - // Fix #11809: Avoid leaking memory - fragment = first = null; - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - elems = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = elems[ i ] ) != null; i++ ) { - - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var destElements, node, clone, i, srcElements, - inPage = jQuery.contains( elem.ownerDocument, elem ); - - if ( support.html5Clone || jQuery.isXMLDoc( elem ) || - !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { - - clone = elem.cloneNode( true ); - - // IE<=8 does not properly clone detached, unknown element nodes - } else { - fragmentDiv.innerHTML = elem.outerHTML; - fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); - } - - if ( ( !support.noCloneEvent || !support.noCloneChecked ) && - ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - // Fix all IE cloning issues - for ( i = 0; ( node = srcElements[ i ] ) != null; ++i ) { - - // Ensure that the destination node is not null; Fixes #9587 - if ( destElements[ i ] ) { - fixCloneNodeIssues( node, destElements[ i ] ); - } - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0; ( node = srcElements[ i ] ) != null; i++ ) { - cloneCopyEvent( node, destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - destElements = srcElements = node = null; - - // Return the cloned set - return clone; - }, - - cleanData: function( elems, /* internal */ forceAcceptData ) { - var elem, type, id, data, - i = 0, - internalKey = jQuery.expando, - cache = jQuery.cache, - attributes = support.attributes, - special = jQuery.event.special; - - for ( ; ( elem = elems[ i ] ) != null; i++ ) { - if ( forceAcceptData || acceptData( elem ) ) { - - id = elem[ internalKey ]; - data = id && cache[ id ]; - - if ( data ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Remove cache only if it was not already removed by jQuery.event.remove - if ( cache[ id ] ) { - - delete cache[ id ]; - - // Support: IE<9 - // IE does not allow us to delete expando properties from nodes - // IE creates expando attributes along with the property - // IE does not have a removeAttribute function on Document nodes - if ( !attributes && typeof elem.removeAttribute !== "undefined" ) { - elem.removeAttribute( internalKey ); - - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://code.google.com/p/chromium/issues/detail?id=378607 - } else { - elem[ internalKey ] = undefined; - } - - deletedIds.push( id ); - } - } - } - } - } -} ); - -jQuery.fn.extend( { - - // Keep domManip exposed until 3.0 (gh-2225) - domManip: domManip, - - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().append( - ( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value ) - ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - } - - // Remove any remaining nodes - while ( elem.firstChild ) { - elem.removeChild( elem.firstChild ); - } - - // If this is a select, ensure that it displays empty (#12336) - // Support: IE<9 - if ( elem.options && jQuery.nodeName( elem, "select" ) ) { - elem.options.length = 0; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined ) { - return elem.nodeType === 1 ? - elem.innerHTML.replace( rinlinejQuery, "" ) : - undefined; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - ( support.htmlSerialize || !rnoshimcache.test( value ) ) && - ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - - // Remove element nodes and prevent memory leaks - elem = this[ i ] || {}; - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - i = 0, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); - - -var iframe, - elemdisplay = { - - // Support: Firefox - // We have to pre-define these values for FF (#10227) - HTML: "block", - BODY: "block" - }; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ - -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - display = jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = ( iframe || jQuery( " - - diff --git a/miniwob-sandbox/turk-www-flight/flight/flight-common/inject.js b/miniwob-sandbox/turk-www-flight/flight/flight-common/inject.js deleted file mode 100644 index 30aa624..0000000 --- a/miniwob-sandbox/turk-www-flight/flight/flight-common/inject.js +++ /dev/null @@ -1,368 +0,0 @@ -// Utilities for the child page -var $miniwob = {}; - -// ################################################ -// FAKE DATE (before anything else loads) - -// Inspired by https://stackoverflow.com/a/44497384 -// Shift the date by a certain offset -(function (year, month, day) { - var startTime = Date.now(); - var fakeTime = new Date(year, month, day).getTime(); - var __Date = Date; - Date = function() { - if (arguments.length > 0) { - return new __Date(...arguments); - } else { - return new __Date(__Date.now() - startTime + fakeTime); - } - } - Date.prototype = __Date.prototype; -})( - // 2 is actually March - 2017, 2, 1 -); - -// ################################################ -// Intercept events - -window.addEventListener('load', function () { - - // Intercept form submission - // The form must have class name 'miniwob-main-form' - // Inspired by https://code.google.com/archive/p/form-serialize/ - var form = document.getElementsByClassName('miniwob-main-form')[0]; - form.addEventListener('submit', function (event) { - var data = []; - [].forEach.call(form.elements, function (elt, i) { - if (!elt.name) return; - switch (elt.tagName) { - case 'INPUT': - switch (elt.type) { - case 'checkbox': - case 'radio': - if (elt.checked) { - data.push([elt.tagName, elt.type, elt.name, elt.value]); - } - break; - default: - data.push([elt.tagName, elt.type, elt.name, elt.value]); - break; - } - break; - case 'TEXTAREA': - data.push([elt.tagName, elt.type, elt.name, elt.value]); - break; - case 'SELECT': - switch (elt.type) { - case 'select-multiple': - [].forEach.call(elt.options, function (opt) { - if (opt.selected) - data.push([elt.tagName, elt.type, elt.name, opt.value]); - }); - break; - default: - data.push([elt.tagName, elt.type, elt.name, elt.value]); - } - break; - case 'BUTTON': - switch (elt.type) { - case 'reset': - case 'submit': - case 'button': - data.push([elt.tagName, elt.type, elt.name, elt.value]); - break; - } - break; - } - }); - window.parent.core.flightSubmit(data, $miniwob.recorder.data); - event.preventDefault(); - return false; - }); - - // Loaded! - window.parent.WOB_TASK_READY = true; - -}); - -// ################################################ -// getDOMInfo reimplemented here - -$miniwob.previousDOMInfo = {}; -$miniwob.nextRefCode = 1; -$miniwob.nextTextRefCode = -1; -$miniwob.resetRefCode = function () { - $miniwob.nextRefCode = 1; - $miniwob.nextTextRefCode = -1; -} - -/* Returns a nested object (dict) with all visible DOM element information. - - Special handling for Text nodes: - - Text nodes with only whitespaces are discarded. - - If the Text node is the only child, discard that Text node - and reassign its text to the parent Element. - - If the Text node is not the only child, it is broken into - pseudo-Elements with tag "t". - - Assume that the page is refreshed before each episode. -*/ -$miniwob.getDOMInfo = function (baseElement) { - $miniwob.previousDOMInfo = {} - - function getDOMInfoOfElement(element) { - var rect = element.getBoundingClientRect(); - if (rect.width == 0 || rect.height == 0) return; - var answer = { - tag: element.tagName, - left: rect.left, top: rect.top, - width: rect.width, height: rect.height, - children: [], - id: element.id, - classes: element.className, - }; - // Assign ref code - if (element.dataset.wob_ref !== undefined) { - answer.ref = +element.dataset.wob_ref; - } else { - element.dataset.wob_ref = answer.ref = $miniwob.nextRefCode++; - } - // Record styles - var computedStyle = window.getComputedStyle(element); - answer.bgColor = computedStyle.backgroundColor; - answer.fgColor = computedStyle.color; - // Indicate if the element is being focused on - if (document.activeElement === element) { - answer.focused = true; - } - // Indicate if the element is tampered with in this episode - if (element.dataset.tampered !== undefined) { - answer.tampered = true; - } - // For recording demonstrations: Record the target - if (element.dataset.recording_target) { - answer.recordingTarget = true; - } - // For , also add input type and value - if (element instanceof HTMLInputElement) { - var inputType = element.type; - answer.tag += '_' + inputType; - if (inputType === 'checkbox' || inputType === 'radio') { - answer.value = element.checked; - } else { - answer.value = element.value; - } - } else if (element instanceof HTMLTextAreaElement) { - answer.value = element.value; - } - $miniwob.previousDOMInfo[answer.ref] = element; - // Read the children - var filteredChildNodes = [], textOnly = true; - element.childNodes.forEach(function (child) { - if (child instanceof Text) { - if (!/^\s*$/.test(child.data)) { - filteredChildNodes.push(child); - } - } else if (child instanceof Element) { - filteredChildNodes.push(child); - textOnly = false; - } - }); - if (textOnly) { - answer.text = filteredChildNodes.map(function (x) { - return x.data.trim(); - }).join(' '); - } else { - filteredChildNodes.forEach(function (child) { - if (child instanceof Text) { - addDOMInfosOfTextNode(child, answer.children); - } else { - child = getDOMInfoOfElement(child); - if (child !== undefined) - answer.children.push(child); - } - }); - } - return answer; - } - - function addDOMInfosOfTextNode(textNode, collection) { - // Break the text node into multiple nodes - // Each node only occupies a single rectangle boundary - var range = document.createRange(); - range.selectNodeContents(textNode); - var absolute_start = range.startOffset, absolute_end = range.endOffset; - var start = absolute_start; - var itr = 0; - while (start < absolute_end) { - // Binary search on the next end point - var end_lower_bound = start + 1, - end_upper_bound = absolute_end, - l = range.getClientRects().length, - end = Math.floor((end_lower_bound * (l-1) + end_upper_bound) / l); - while (end_lower_bound <= end_upper_bound) { - range.setEnd(textNode, end); - if (range.getClientRects().length == 1) { - end_lower_bound = end + 1; - end = Math.min(end_lower_bound + 5, Math.floor((end_lower_bound + end_upper_bound) / 2)); - } else { - end_upper_bound = end - 1; - end = Math.max(end_upper_bound - 5, Math.floor((end_lower_bound + end_upper_bound) / 2)); - } - if (itr++ > 1000) throwTextNodeError('Text node computation stuck in an infinite loop'); - } - range.setEnd(textNode, end); - var rects = range.getClientRects(); - if (rects.length !== 1) throwTextNodeError('Text node computation incorrect'); - var rect = rects[0], text = textNode.data.substring(start, end).trim(); - if (rect.width > 0 && rect.height > 0 && text) { - var answer = { - tag: "t", - left: rect.left, top: rect.top, - width: rect.width, height: rect.height, - ref: $miniwob.nextTextRefCode--, - children: [], - text: text, - }; - collection.push(answer); - } - start = end; - range.setEnd(textNode, absolute_end); - range.setStart(textNode, start); - if (itr++ > 1000) throwTextNodeError('Text node computation stuck in an infinite loop'); - } - } - - function throwTextNodeError(message) { - alert(message); - throw message; - } - - return getDOMInfoOfElement(baseElement || document.body); -} - -/* Click on an element regardless of its location or visibility. - - Args: - ref: The ref value generated by the previous call to getDOMInfo -*/ -$miniwob.elementClick = function (ref) { - try { - var element = $miniwob.previousDOMInfo[ref]; - element.click(); - element.focus(); - return true; - } catch (err) { - return err.message; - } -} - -// ################################################ -// Record demonstrations - -// Add event listeners -$miniwob.recorder = {} -$miniwob.recorder.LISTENERS = [ - 'click', - 'dblclick', - 'mousedown', - 'mouseup', - 'keypress', - 'keydown', - 'keyup', - 'scroll', -]; -$miniwob.recorder.setup = function () { - $miniwob.recorder.startTime = new Date().getTime(); - $miniwob.recorder.data = {states: []}; - $miniwob.recorder.LISTENERS.forEach(function (name) { - document.addEventListener(name, $miniwob.recorder['on' + name], true); - document.addEventListener(name, $miniwob.recorder['on' + name], false); - }); - $miniwob.recorder.isRecording = true; - $miniwob.recorder.addState(null, null); -} - -// Add a state to the recording data -$miniwob.recorder.addState = function (event, action) { - if (!$miniwob.recorder.isRecording) return; - if (event && action) - action.timing = event.eventPhase; - console.log('Adding state', action); - var state = { - 'time': new Date().getTime() - $miniwob.recorder.startTime, - 'action': action, - }; - if (event && event.target && event.target.dataset) - event.target.dataset.recording_target = true; - state.dom = $miniwob.getDOMInfo(); - if (event && event.target && event.target.dataset) - delete event.target.dataset.recording_target; - $miniwob.recorder.data.states.push(state); -} - -// Actions -$miniwob.recorder.ondblclick = function (event) { - $miniwob.recorder.addState(event, { - 'type': 'dblclick', - 'x': event.pageX, 'cx': event.clientX, - 'y': event.pageY, 'cy': event.clientY, - }); -} -$miniwob.recorder.onclick = function (event) { - $miniwob.recorder.addState(event, { - 'type': 'click', - 'x': event.pageX, 'cx': event.clientX, - 'y': event.pageY, 'cy': event.clientY, - }); -} -$miniwob.recorder.onmousedown = function (event) { - $miniwob.recorder.addState(event, { - 'type': 'mousedown', - 'x': event.pageX, 'cx': event.clientX, - 'y': event.pageY, 'cy': event.clientY, - }); -} -$miniwob.recorder.onmouseup = function (event) { - $miniwob.recorder.addState(event, { - 'type': 'mouseup', - 'x': event.pageX, 'cx': event.clientX, - 'y': event.pageY, 'cy': event.clientY, - }); -} - -$miniwob.recorder.onkeypress = function (event) { - $miniwob.recorder.addState(event, { - 'type': 'keypress', - 'keyCode': event.keyCode, - 'charCode': event.charCode, - }); -} -$miniwob.recorder.onkeydown = function (event) { - $miniwob.recorder.addState(event, { - 'type': 'keydown', - 'keyCode': event.keyCode, - 'charCode': event.charCode, - }); -} -$miniwob.recorder.onkeyup = function (event) { - $miniwob.recorder.addState(event, { - 'type': 'keyup', - 'keyCode': event.keyCode, - 'charCode': event.charCode, - }); -} - -$miniwob.recorder.onscroll = function (event) { - // Scroll is super redundant; only keep the first one - if ($miniwob.recorder.data.states.length) { - var lastState = $miniwob.recorder.data.states[$miniwob.recorder.data.states.length - 1]; - if (lastState.action && lastState.action.type === 'scroll') - return; - //$miniwob.recorder.data.states.pop(); // <-- use this for keeping the last one - } - $miniwob.recorder.addState(event, { - 'type': 'scroll', - }); -} diff --git a/miniwob-sandbox/turk-www-flight/flight/flight-common/wrapper.css b/miniwob-sandbox/turk-www-flight/flight/flight-common/wrapper.css deleted file mode 100644 index d0f6a7c..0000000 --- a/miniwob-sandbox/turk-www-flight/flight/flight-common/wrapper.css +++ /dev/null @@ -1,61 +0,0 @@ -/* ################ SIZING ################ */ - -#wrap, #sync-task-cover { - height: 667px; - width: 375px; -} -#sync-task-cover { - font-size: 200%; -} - -#wrap { - overflow-x: auto; - overflow-y: auto; - border: 0; -} - -#reward-display { - position: static; - height: auto; - width: auto; - margin: 0; - padding: 5px; -} -#reward-display .info { - margin: 5px 0; -} - -#query-wrap { - position: absolute; - top: 0; - left: 380px; - width: 260px; - height: auto; -} -#query { - height: auto; - display: none; -} -#query-pretty { - background-color: #EFF; - font-size: 14px; - padding: 3px; -} -#query-pretty .mode { - font-weight: bold; - display: none; -} -#query-pretty table { - border-collapse: collapse; -} -#query-pretty th, #query-pretty td { - border: 1px solid #ddd; - padding: 2px 8px; - width: 50%; - text-align: left; -} -#reward-reason { - background-color: #FEF; - font-size: 14px; - padding: 3px; -} diff --git a/miniwob-sandbox/turk-www-flight/flight/flight-common/wrapper.js b/miniwob-sandbox/turk-www-flight/flight/flight-common/wrapper.js deleted file mode 100644 index aa3ba18..0000000 --- a/miniwob-sandbox/turk-www-flight/flight/flight-common/wrapper.js +++ /dev/null @@ -1,140 +0,0 @@ -// ################################################ -// Additional methods for flight domain - -core.flightChildWindow = function () { - return document.getElementById('wrap').contentWindow; -} - -window.addEventListener('load', function () { - var correctLocation = null; - - document.getElementById('wrap').addEventListener('load', function (event) { - var currentLocation = this.contentWindow.location.href; - if (correctLocation === null) { - correctLocation = currentLocation; - } else if (correctLocation != currentLocation) { - if (core.EP_TIMER !== null) { - document.getElementById('reward-reason').innerHTML = ( - 'BAD: Navigated away to a different web page'); - } - core.endEpisode(-1, false, 'BAD: Navigated away to a different web page'); - return; - } - if (recorder.isRecording) { - // Tell the child to register event listeners - core.flightChildWindow().$miniwob.recorder.setup(); - } - }); - -}); - -// ################################################ -// Dataset and validation - -// The child page should call this method on form submit -core.flightSubmit = function (data, recorder_data) { - var reward = core.validateForm(data); - var reason = document.getElementById('reward-reason').textContent; - core.endEpisode(reward, false, reason, recorder_data); -} - -/** - Overrides genProblem. - Set core.currentQuestion as a sampled problem. Also starts the task. - Does not return anything. - */ -var genProblem = function () { - core.currentQuestion = core.sampleQuestion(); - var instruction = core.currentQuestion.instruction; - document.getElementById('query').textContent = JSON.stringify(instruction); - var queryPretty = []; - Object.keys(instruction).forEach(function (key) { - queryPretty.push(''); - }); - document.getElementById('query-pretty').innerHTML = ( - '
            Mode: ' + WOB_DATA_MODE + '
            ' + - '
            ' + key + '' + instruction[key] + '
            ' + queryPretty.join('') + '
            '); - document.getElementById('reward-reason').innerHTML = ''; - WOB_TASK_READY = false; // The child page must set this to true - document.getElementById('wrap').src = 'index.html'; -} - -/** - Return an object that looks like this: - { - "instruction": {"key1", "value1", ...} - "request": {"key1", "value1", ...} - } -*/ -core.sampleQuestion = function () { - if (WOB_DATA_MODE == 'train' || WOB_DATA_MODE == 'default') - return core.sample(DATA_TRAIN); - else if (WOB_DATA_MODE == 'test') - return core.sample(DATA_TEST); - else - throw 'Incorrect WOB_DATA_MODE'; -} - -// List of required fields -// The reward is -1 if any of these fields is not filled -core.requiredFields = []; - -/** - Validate the form and return the reward. - data format: list of [tag, type, name, value] -*/ -core.validateForm = function(data) { - // Convert to a dict - var dataDict = {}; - data.forEach(function (datum) { - dataDict[datum[2]] = datum[3]; - }); - // Compute accuracy - var target = core.currentQuestion.request; - var score = 0., n = 0., wrongFields = []; - for (var key in target) { - n++; - var expected = target[key], predicted = dataDict[key], - check = (expected == predicted); - console.log([check, key, expected, predicted]); - if (!check) { - wrongFields.push( - '' + key + '
            Correct: ' + expected + '
            Entered: ' + predicted); - } - score += check; - } - // Validate the required fields - if (!core.validateRequiredFields(dataDict)) return -1; - // Display reasons - if (score == n) { - document.getElementById('reward-reason').innerHTML = 'GOOD'; - } else { - document.getElementById('reward-reason').innerHTML = ( - 'PARTIAL: Incorrect fields:
            ' + wrongFields.join('
            ')); - } - return score / n; -} - -core.validateRequiredFields = function(dataDict) { - for (var i = 0; i < core.requiredFields.length; i++) { - var key = core.requiredFields[i]; - if (!(dataDict[key] || '').length) { - console.log(['missing required field', key]); - document.getElementById('reward-reason').innerHTML = ( - 'BAD: Missing required field ' + key); - return false; - } - } - return true; -} - -// ################################################ -// Function overrides (delegate to the iframe) - -core.getDOMInfo = function () { - return core.flightChildWindow().$miniwob.getDOMInfo(); -} - -core.elementClick = function (ref) { - return core.flightChildWindow().$miniwob.elementClick(ref); -} diff --git a/miniwob-sandbox/turk-www/common/shapes.js b/miniwob-sandbox/turk-www/common/shapes.js deleted file mode 100644 index 1b761a3..0000000 --- a/miniwob-sandbox/turk-www/common/shapes.js +++ /dev/null @@ -1,235 +0,0 @@ -/* -Utilities for generating and describing shapes/digits/letters in a grid -that have various properties. -*/ - -var shapes = {}; - -// env variables -shapes.SZ_X = 7; // number of bins for shapes -shapes.SZ_Y = 7; -shapes.MAX_SIZE = 20; // max render size of shapes in pixels. Note by default grid is 160x160, so 8*20=160. - -shapes.MAX_NUM_SHAPES = 20; -shapes.MIN_NUM_SHAPES = 3; -shapes.COLORS = ['red', 'green', 'blue', 'aqua', 'black', 'magenta', 'yellow']; -shapes.LETTERS = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'; -shapes.DIGITS = '1234567890'; -shapes.SHAPES = ['circle', 'rectangle', 'triangle']; - -// helper function that creates a grid of shapes -shapes.genGrid = function(n) { - - var grid = {}; - grid.shapes = []; - - var taken_positions = []; - var num_shapes = typeof n !== 'undefined' ? n : core.randi(shapes.MIN_NUM_SHAPES, shapes.MAX_NUM_SHAPES); - for(var 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 ZtQiLjsxpQs*FU~TB{_9ym5fEi{{g8hc~JlW diff --git a/miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_1.png b/miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_1.png deleted file mode 100644 index d8d717065488ed08f18a7862d00d9137b7053f2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7031 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 diff --git a/miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_2.png b/miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_2.png deleted file mode 100644 index d7d2519a5ee181e2f48185454a2b90f9f3948d80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7065 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 af-riQUp{`)*L3sO+oLS64y}=W8Sy{NP*3Lo diff --git a/miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_4.png b/miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_4.png deleted file mode 100644 index 8bc996c609d3f9d18ef2b6edb867ef486bceca3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7019 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 G;{N~&y;Pn6 diff --git a/miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_6.png b/miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_6.png deleted file mode 100644 index 89e4135e708b8dcfd63cb856cad76878f78a8794..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7079 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 L2CPc!+onm| diff --git a/miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_7.png b/miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_7.png deleted file mode 100644 index d9afd3bf68bb9de47761efc653afd6fc784583fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7052 zcmZX3bx<7Z()Z$7f=hs43j}9z2)fv!SvR{j>YJ*W>3RAm-Tli`7j3|jjPYib^Jqtsv=C9QIsQHC?9n4qN?5|eri{k^R z1=uAdDCO~`mF&Gs8Y6_8;qL^VyV97WNlK%kn}Y)6W1I{Ov(Zcb1l(QL@#7U%?RcGl zjqVNZyPrIDD`4XRfL>q*1u6!_fLe$Ff}iyKtpx#@XwV4?3fiui3?dkP0ud(QMN`bJ zFE8rJ1)@i5S*&SZ?9n_{c#<@u{0*8kqHdD*U@LBsA(qLfp=cGYDBe*la<21_@+zR# zmr*Q8R<^eZi5?jvc|VY{7FNG^y}**Nc}a1cWYhk74;vbT^N!@MVCEz&=98XO^p589W~9?SrChtoZ9okht@Q+eN!s{O zby`S-`SzJ%pPr|Q#uE~}mOwBE?1Ab-t0~{ zt-9n8(>b?(A}lxu3fHb?*|jim%x|kN+f6BjAC6;4P$}^@A=U|Nq7{w4AGyoHBiO&8 zwS`mngECkjVMKrm!@6wft{b)Cgi0WiD>Qmg7w7d%uSGixS?h8*6iFom0qwhqA08Ug z6TKRKey8Gh^z(~fyRdJ&JkeGB4-8f%U7~PofurS8ygD14jkNTd6?SL;iTg#q;=!gw$0-A~B0~ z;2X5iyD5a>aLTVf7qWfk&v8ZyDu!s`RktB_s4LgbPB*zE_4_y1FpOG?1dr2*FzX0b zw6a6=aCQ`ZR^ej+R}i4(Vw{tO-&Zkqwao%Rr@_D(h2@S80VO3VW3vHt3V~z6>J&!l$4d{mL2JeQXjcO$!G$mh}r!dTljqevFUlQ)%qmB5JzJ3dSUinN8 z80m+{2IBO*ocdhvi8-Tnpz|L{g^6;aB@@AY^H#?eIG?o_ZD!&bZ^NFbyjRhM>b~%e`$e_HS|{Y`=!xb@?)li$?G*FW z`1J9n%clB>)a#mc2c)dOPzM-7R1hhZT+`>bu6VM>&c^1?p2l9uhR#Nynft-M&>zYt z^I4^kIiAG(QFSzBuZOJAI^8&}`LY)*{zjDGXE*Qdd<2D^YJrq1UG=Uqq~Vti*8%S=gCi<@}GoqU9DLa~Aq$kj>INgM(SA-L7K z3BAF>HpCXi4vO`UC5c_e+eqStgW$wgyjI*BK7$s6W-uCT!O^3Bc_s3Yqnnt-t6GpCw^U{OZ z)mhzG!k}Gpp>i^s3|d8M77B07rsO`q^nfOqj%e+bO*7df)irt6dA6TcBu1(K49ELuueS}mZK>@xup!Vl(C%#TEa3e1jOT!da+vxV6+)n& zGMjRnDuvR6GJtB15=_bYl%DrUkRfw1GnX$*kX$HP&_zHliz+8ikXnd>mr%&RdpXK`eNYtz{AStv2XjK z+LoGU_j<&MJF@ItpVi5PeUNr71!G+HB|X^ z-dWDc0+Q#nfbbhogtV5@o>HIgifNd!Ow3+jk)Z_=&DGDeY0KtfuVHUTX{R5&Xx^gl zuW;obtpc^^mn~7Y)*&Nn9N-jeS$u7gLu2rh_TRUT# zX8QZI=rm!eI<2rsuxL~!aTcE^^js-`MN9xxFZDwBlgNQzlb^3!%1brPi5txtc;`?_ zY96F10CDLbRxNw9M7l^?#2Wis@RWONW|MVWJx@@4$@q)OYm?fSyQYiU&-7k~;)Zc- z&t5sq%v25h8DLFZn7k^W;+Wzt=dt1W%5kf?ZF2Fea(k)GGvze*)NBWRqO+2>%)Xke zl1nUAl0N8e0}J(dg(97M{^e)gt(Pt@<8)Ka>bhnP;QHFyW2QMlR6e5Hr{m-coEUmO zHBIvg3p%p`^E-m!v6-<;PIL>gH95w|Ek)k&YR$sW4GGok?Np9x_NMkHZd7hQjHND8}gf+0uG1^tp=SvHA38f zCu^`CHR)3z6>M?#^W^pQw;#1D$T8xDHzygZJRi-lx($PAQGthFi!{gWFO2q^<*j~M zr5{6A=TbS7*7CpQ?dCLO1q*Bm30*?=Z*StxQq$;PK|De#vfgL87EBdTW%^{@@=`#W zg$quyw!QW!)_Ic6gt{-lBHY3HNydmjzGvcNm;21Er71RJTc6Wkr#I3sNg0Hi8tNDx z-fbZdW(*NxuD55g!wSo8@7CZs3^_ULB}&s5p8!e5Y-VPFE*%W%Jxl=Y+oAOY@#_WG zh@z?n3_y?)VJQ}8Q5K&+7nNG#c!C6eSVnm1Gh(B%6TzN_&a+dzQdqcXd})Dd#4Y9! zO$Lh}_aulu-^}2PGOrRFbWsOtlqTn``D;Dj@&p7FQdSx9(>kAyv#zubu$CHINt3EH zFCDJFk||dcHI;usUUL)dR-WB_LwD}>6r7D}Y-j|2KlVP_o!?L2+o7Tnd`9I!DL~DW zeU>$!m7b-i-(aL>VCAguY;ah1Xo2#H6Jq@VJCgM-MZ~Q({}SGV{P0Ni?yDdDv?#vJ z+Ose@Id3K|&8;CA&zi{`%|S+Bf}4X!AKyYAz_9P{?FmzG)|L?KVLe$5b(cmKs?<#} zWTa)zZaBp3DaUOQsM~DPeI6$pE*{1fErSaVMW=q+$u4jo_L}g6?CG1E*&A8=jQ(j* z{@g=#NOG>V#lKYlbE|l#gagJgGm&a0Ska~>sVAq+>27e7xUaJ!Rv#FLed%ZYpR z;N??ZEJKnhMV?>niw-;h=(S=-J+$~=FIc$WI`o7!Nwmk+z z^n(TON+iAtNengic!bRGyVStBW=Z$k7b}({&Z6$68#`~zz|?Iy zIqi2Du~SIAKpKG<6HwF$Ir5IIG}@z>O^4=O&hSYa<_$#>KdgM*&0uSZe-TH-pp~Ze zxBvG5#q0OidYHCY1&{J5QphwZm`Otzbh}tJj7|SE_sflJXc0^sPZwD4TU%|-ZZceR z$2iMBW)>^8*s>(2&>@)9e1>a0XE3WMsOHdS4|J?@Alx&ak*wH(cQ1qw{(xJwYZiG_ zCZv{s%<2xvl#eg{m>$zukz5AOp`D_$>Hdiv@mSo8@XC9U;B?UiZ3g%$5}Ld%VXddw z6grUHoY`C6)Y~#6dre3AWRt9tijhnu0on__((l(IQ*Q`@dHlL<$vDvl{!aLWVkdB? zBU9UkL`$A=m$C~z2lKBS)|$j_ya^v~sI2?-NmNxaCsl~9`+d+kRCRUWj~D9;T-?WA zuj{Wdbu(~h5iNO`lh~8HquHyf1iN=u+V75cAeKbO zAII?~rp8}{yuW9>O5Z=2j7fdPv=-RCW?Z4KX8QS_;mm5w4(0fhXHKZM?Pzek`kuK^ z^d;4=*e5+dcwa42A-I;FT{B|kgQUyly+5cFb;$}SwJY;{DIB64_Reh0Eq&AY>W~;E zmtvGlZhV6Hj_CI1MrI=?PHavepZGm$0aoHZd87`QD)V3-v(y$!DePtWXo`?YHNp_fYXz`3FHQz86DwB;>gfxd|7aK{v9O` zR;K-ETFmf~uQID_pnR^vrRY{=$jnZ=S!+_O!1z9*Csa)+dF)~-|f2G2CBZ8eCeE$ z8`}_KUwyamo4GFa3PpLval?+H#(Iq|7pc_qlwp1bz(fbNRWwi#fOaRa zr=F*fCZQ<9gk^Xv1o=b~AbZz$MmR?_zhI&6yS6H-j+%ysfr}Oyc%4keS()P$1_MhI zqJKo46o*nJMMDKH5eZQN+}9ke2I|#M@F+}q#C-M__x}7$6nL&e_r8lON3z{Fr7p5v z>!M>FYvGlJ4$h}~ZrUo*moM5X{bT&MmggpYKH*0@I<_72?^gj>vU1A>IQ!* z>O8-w5|{MLIHvYS{A$=UJmTJea~Lw^SGi{OWjAa7@!|Rpz5c1zk-Md>(mC+`@gKrw zomwT|Kz^(d4FN#y3;wM`)H99EJg&aX$+sc5%-h-Ng46M{9m4 zV|z*UcE^P=z=SK9^e$Ogx&W$fY0a0F>8DTb%;$?gQX4ozHc~ONH2fP$cEyD&F#ts8 zEXvkOsmm)LG-Nv$Hzt6tl$m3oCb%Jj}QCNKf3VwqHuz_*MaVsty{U!b7 zMa1IB(z2+f=$1&gm&s1b=9?XZox^R;pO+MioJwRg6m1N->_6Enm|0rlTI^K+yy_1c zVJK(Wd-x1x@h!nb16pfNt8lLqfhwz`A2_rsU_l9vB>T+SmWD$OLEc^aZ}tQzYboof zPpHSTGIJC%^MsEZu51VF4$Zv~P0MtLg$J4Ivpc=J`>i$ehn+a@p&JS3#uqm~B=-dl z6t~<+G$^mw{oRygb~D^J;=i-WdPBz#L~gIwA^bOcZyMjec)RdZ9;wH+$#z7-1=LPEfqGgpkQ3@)yzTBPN`TvxxD?fY zM8U$s(I(xqHFG~_uqS0DT+_V(a7rFXHu3s~UTCIRswr~YR_h^bBvw1Lg2Ruo?rkEx zW%L+CpJn8b?~!&!*9Le%%F5xA9O|R#|K3fW_F8PXW}SMt<%5C_Y8gkJ3A~ zdI$(kv%rxFT~rCdn zY~YAqgsmW$AqLzCq74&aw}QM&6Uut$596Tl`RQ`k7`e#Us=bz2lir_Jo_p(4U7@ud zycDCZBRhAO@zgPkJHu4x6AGabY;vs-Mp_J;eq8QwATyJ(at-}G#Q zRo$|{5~r?!IA4#TH8rynH&pxfVn$@4WDAv+>Svp|trkpd?0?#6zO`F1l|6p5lziDu z;dh&gy&3-0;8sE!j}1U;4nz>G(M#)wV%cM+exa;80=@>701uS4$UsYitu;9@tz=cE!lDs83 z_G-3u&Hx2R{aBrOqiWMo)hVsL1eJMHR-dFn;8!0P(mcWbDDcf8wjUlUc^(FX<$Pu4 zs@7N5f4;oGh%X*3vYuDd^1Xe^U&FsGsQs$rQu}-octvSVi=c3Pa>3Qh>?tP3{$9Y9 zYu#eH6T@c2H!iePw`AGQoz`HuEzj#L)2&*D?#0~(`dV+gw!?s+9mfmu(fl-&u5@}S zMH)AO&d_Y_9Hi~7vE4UNfJrxBYipfQ^Vjmcy^GV)_yo1G+qCKub6MxCF3`K7X!u^fJw=q$KqyJfe(L5#zfmIB7@E_k%ed?;w1 zD6e&N8*!g-gL&wUEX>Mpi~ekkr_L1+Nag5J=`rc$=q-dg+^O8p)hig+8;Caw*QzyD zx6*Zox`fz9+4VUvg~9!-Hk!}ej@LehO5NQCX$Q{O{XVl@dw&lPwy|kSC5$h`2iQ7$ z{cZ;VT7m(>r^3${IG#U$KEX6H$OgEK^y@lwE)bdpq`8J{pmj_Yng`;^f$!YNs>`tRRbjF=4k^G;uhrQWrW~@Kp+WEYg;ibsKP(=hbKu!dv9-d zF&-X2KR<3i0d6->J03n!QBfXVeja{)@B;$u72xV^;SYB8V)~EB|I>lmcv*QmxO+Re zxq|-EwXk&a@s?y{{LARS$A9Xy@pt&2ldIQ1Z9O!|^H+w4kDHh0zuFH}iN99GG#vbG zob{m&E;g=S4;~OUO zE5Y;M$wP3*hd0a~_9;LaD)Z7G?QlsmB~qG5UQ?)^WD$4Fma|g+v8h(@mDLB;+=L-Q zXHq3(pxKgo&5Ym*kJ(*I$Tdo874j$s4U>o;FZ9%#uGvN0tfMx2r*-lsb>Zka4*>{j z$-)}}WcY%~!dnE4j}mFXy8y=g+*c%DS&xqvA&YI+-Lo+WTA|iEupV(JWKF#Fg{~*iFix$0t!4mFHWG>4~ne>2r^iUbh z9=%bc^l@a35)lcmPBxIQ=ifRw9`;nfNc$Q1%cf!R58fXBPU&~EQe$`NDN}Na9&Ev& z@YiH~4=Rt){%TWInkG^<-BuP>YrsKJ(I65p_m9O-5CJ&q>syhB0SHDImQ7>zm}4>& cnLp?O?#0dVrCYz4|Mf~J%d0`FWz8f153sQ`H~;_u diff --git a/miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_8.png b/miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_8.png deleted file mode 100644 index 5c664b63dc08426d1f0d3fff921c2c96bf5f5803..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7047 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 I?2Cy11182^lK=n! diff --git a/miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_9.png b/miniwob-sandbox/turk-www/common/special/checkbox-numbers/ch_9.png deleted file mode 100644 index 5a07eec58bcd287d6d2e64050cb76818a867f444..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7092 zcmZX3cQjn@_WtN0(TUC=y3q-P(MD&q=q-BhW%S;oq!7IhiB9w`qL&bzXc3)Yh(5tj z?!Di8KWqKYTJL%H+535(UEX!p`QyZE!W8lGsPO;*0KT#kRQq9O71fCRB?RcGl zjPDKayPs0K<+JkwfU1~*0gC?7z!qYFP=&sqwGbc!4LVLiLDvVPlO3jZHm72 zJ9_x;Ihq4j&$^Q`fkmlVf|HtnzXu%Xd7??~?Qr%yuDU;oIE3Pv(f z^hiy83ve16>M+H_6I}d)iP;<*kYxz z6?dH{6O7T4oZFeyMo~Dl^V(uMDWI09j~b%sf{SR?@7<9Xle0_ffIw8#_e0OfH@j0! zt1j8Z^vyLy2Z6Kb)&;ewMdok0 zzRMg9J$8F_-kofx4_65Z>0j*4h7~xb$)VP0ht%gxc5$|yt9%>!V zhE{rr9>#%U$Sima;0^?|T#RwC3iv9cAT9a7I$(J98dw>G7e#n6(1nxGtDy*NSIhH zK<_g(ri^GDNl~N$kVgqX5@`)&QKFlQRAY1+!aWW9Q=rL?{hhExMobgpja?q*Sm5+c zeHSu=fiGKAfNPI^gMBO8!;YRn-yco_RW3@^G-4-B1vxT|5R!+hKuZwG2pED>OJDPA zDXMg^lyOGXk)ZJjMh3cVl>bW)1KhcA&`Y}oisUH5FN^NPCb;uGE^#&ay&Fi0j)Z}t zy>H9*9?u~7lfL%6-k3MQ8}^$gHzaLTEAb)8dD6TEp;qktzbN?=@dh4k#GUl^SqSjS zXK<>Ket2vs&cMfI!2O<>D@qqS_kmP|C_73r0n|HZb!>t2NoT=^mS8Y~w6|=X+x?k| z5D$iaVtYjUtH2mk7)n_|WPNGiYU|=x8 zt?o_84HmW$witF`j9&~%%+iyML_P!%L2Sim#k1ivU@>5>MyqC|22nFq^HH0~2;r;e zcM?GH*$K`I67t_$uG>yp;aUz`Iav6QCfJhOG+HKENsfN+2Tv$Wd>Gm8fB)4t_fS|o z!8COxOEUgeB9H+kfWsDxrYNe&KZud+4^x1tk4ulEkBjFBns}S+o1mFsnZR3ZTd7(a zTOwOEyx^X^$lBkOr+vs5$g|&-CwM2{Pd=Q^{qEZ8{mpT5eM*k>L4uH8C)p>*JKbaV zMqwt>%Ad`Dq)In`CX`{6!RcX+07Xp8j>#&>#>=KhD@1cd3r8_WaYdWQy_8RdMnFfP z*ifya)1tc~mLiRQO-npWG)o)H$Uwfp)XS)&vSmRg7|}dQ3VAm-gt3R+g7XdMB-4rf zTk|PH0gXE2)8^EU7qv53WzVM?rUs_Urd+1htf4j?)+*L!L)s(zqpYJ%BRnJV!`DN( zX@MLXY;LTf&@Q=w%dS)0N((+vw<`J^V>7t176A@nrBqY zf_;=(l-pFvlpd7+RI`*IN-k;!z9S*VjD?IG{!Afq;Upm!LAgw->|7xlVG2G%VYg3! zrwUKmK&wW0h6)C&bzh7OjnWK)8{Rjqx~;g#*=@M$IMrKLxMVw_24D+31J%8GBdfDr z19!2J)pA|EEr{X`w824GB@7K#H7;rwxWl<)Lm`CZ!3D+^NECM;^QJAki@m139i^Q?(89|W z13!f;zbF-`MW1Z3vb8Q5StD<`a2CD)?A|NlWHDMn;tG0W5|rRL9-Dfq$$+r?HoeK@xZ(vOiBJi$%EpsNXnB;XYW29WVHj+bzLqoen`?pT| z6z$aaDX}TS5)C>L(IBzN4B||FPw2UlKPy-eSTCh2QXzT(Z-V=}CBJ}ajo)b1AUX$& zQ*t3q{>ztsq1CcSi=+#rg={gug-&_4rZ?HPHFAZ-7fn8!zBa9Wv1_)V^GyFm2wo`X z_RN*T^mJAKpMJK4`H8E1D$YrsGF}_rubj79+ol)4Dz_KgJd;mzPR)1F$2%+eO6{x3 zD!IWak_>@&8(65vD->xwb1y#WZM|@L5v!MCUe`5ah%nI688yoer1BBlJ{=>U=fcqU zscD*vpVyrcoZAr!i^+&tbfTY+smV4uZYlIeRBIJ{YKX7qXs2?7*_+v)xKX+JIMQ`E z1l1$d8>{x-_f_rt=3Ts9deZE5{NuQIZLuTU4}NWS)p?Byx%>!T7GITc4?-4Am)CcX z79UK?-Nq8OHMSi?v;${W5mR3E`en^qpT2BtL$13%u$^jT-H_j8=W{|_=rrl=X_m$P zb}|R*Q4>D-Qb87HKTlp?fBR9pf*d8De{+()%KOnAtJ^4u4i#|twNPu!{=#^_S>EcG zRoXFhbvA`7aV_s#?rwHNW{}{Pu<#{h|Mn*KEG3oU6~rUBJo9~~YyM zStS1?bK7f=Vx2e1T)6uJB+3(HkZ7{}$M;Np^m3o2wItbQbn8>v>$FCOMJdA&Gb3H2 z!@Diy!L-pb*!A`-W=LVl?cEw8n=w0ky;y1Lq5_a;!ftL3=+ecI-opgYy&YVS7r&l& z4KJ)}zyJg)5td+a6=w4LaZ|w(#^NRLL({`bo)H_Do(T0cbe^3)DNzd(iz~@j55L76 zq)lgq^GpC4^2`lCEAuI_Ll<g9c-mp_Q|Nv*BUsp#{n(R+#OF+L5ex$#U#!^DmJ-$PbSc@80^6iUsi{ zwx0Qki8*s|X&z0XIJOLyC{8j0Q@rda3~?>w{*3#6-kxd-&N>p{9=4O!5O-;0flA#Z zV|r@F%!Whso^tFKfriZ{{iiXqp`sydu~LN4U{p%QPFBAAkk>dIvS;wp+}_yQXXH`SM+`Chj^ zVR~m37s&G4#Vjwu<|?F~L*VS;fVe4K@hEAH;ixq9$I|ffb!o+}g-P=WND}f+lIyuR1nvMisb8n4;}tf??}CAH%oFdoFIFsvoyFWsHg?{agJ{~a zv)k{|VWNc3s+YIisg-m^T!O0%~PrZiZWn0t+~zhOM-% zzx}@ZD_+09*2lEP%72tgkxZsV!9p6$sMp1&X=3)Lxle9*Lz`gAWGdf!-`Z+xW|Q%n zC)!#5F$=iFV#|`8LYH7x>lvQOtl^BJ5X_;?9@nwTfpE`cTC#ix(LEnF@B?Adu2tw! z8J|-2F|*r0Lq4wLV_I}$c~U7Tn{JZcru!#y*kfTY+$&c#-sz$X+6;gz5}Lj(W~-;z z6h4sLoZeg7)Za2EdreRIbd#)-iiu1m9{L4(WzeThrqK|n=JD&cCH+JP_jh~+ii5zN zo(#4PiIP0yDd7-)4iZ>7tTm0BzeDvUH5)zZaS6Y@D)^2AT zm0cGh10Qj)S0Prx)hAzkhu~M=hWgVr%t4)nbmXB<;HP&-GgnpdcJHio-W~5iEQyXk zjy)Nl98(Q`f6sK4wtp}Yo$`u#EueeNq}%{z_UWGS%xcRH<@l3#R`^TX(ZE>sJxhVu z3#wl+PkVmwy;`7J=3abu&4iT)lrEF^{-9FWB`c`ZuFU(nV32aiJEJwHO% zvT+W%$;tBf66;NvzV3@r19eX zP5(+rRd!9MDC0FW%$cnbQ4Ssb_ENI;j|;$JA6Rj?Yi9ht3I24?wphx z-4NzjeK-G`r7q?O&0BcxN5Kub}0M?KW3&y_gASDcAVF5Ia09bY(Yeqo;WomyUrGT3aJ?MDS7#V03 zMCjVmSi?!6FhQie=TEZNkH;gx?l=-yq%U!YX%`tCh5(+iKMN#w@y;II#C<7>()v)! z{(|c5jti5&DR&U*U6P1&K2*cfnm;oGZb0tL?~6ZN8!${ZTt2)w^czWb#f>M?kBiP# zn5CUums_gfjLlXp?NjbY7tpLM~R%d-OP1l;Y+XOrX~8rf`g3pnVm1Y`>i!|hn+a@p&Rk%CKoq9B=-dm z6t~<+G%2q*{M?jecGKNA;=Z%XdPBz!L~pO=peM!U7|S@S1pFU1OV+1#2zVKA$8tu; z#i%_yI8wHsIrZ!mWlbO1QL18(B&X5j7*~&VN{8~-J8o%fer+CQtKOfT7UDL$Ul3i9 zn7=7=DGxs3nGVjyaW$o15s{=$Vabn^(4~A5eCLIEn-$dXhi;`Wm#}Z|*2^gWpu0L) z$6(65=U()p9`189AKR#ZkVL~466mVpa?D_SH;9H_fW;k#6NheCfc+#Kgaj}GajnBG zH8ETx27iDI!uW`|o;4ocVwM6N!)^*E*f~?VN2t4sxFioGoA`V~F0_&@VTwGq)%wde6005BL1D*O_cr0) zGWv{S&(gEW_eeX#b1YkbI*_1P5G5VO!ZwctZtE63Sx?nYU*Xk|wWnpJap@+PvmPbs zj%vHjUKO%b99F$U7?;dfhK~MtzwUyd-*_l2v$VCd-(vJ>g+EP*F}z&>#jj}gQF_N# ze;I<)EO=x}A6ZN=L0zME3}A3Fmy=?k0*9RG$5QT%YJ^@U|>6a z)_=qx%AOy@7!7I!(uIn0SV7*U3TM9aQ{$xY`RQ`k7_q?As2_SD?59aPVJbYOMQOPPbg$>J;Gi3DGhAyKsa#&+Kf2 zO~W$Z5~nVoI8UFTH6^1HFGT0|Vp?>*cng)90=LcBh6NFu_?>pX+}bUl%o@8{OuFo* zfZwKIZ-!AD-bzS6VF%E?#9by@W02Mh!Lr9p`Ak`Ng!>v;jC&aQwt!?;L@1m|u>&Sc zUWEM;djY2_$ySj;cEU1;PooyRup}zH94w$y*Sx9a#~FkXEs4h3ps7Gq5-(NOR{F}p z(mr=LaW{#ok}@fiEK}ZK({N>xWC0;2A?DIL*80_N%uoG#?5YZD84D4Wj60toL6W;D z$5G9`&gHM*Xb_`2XIyO-qCTm;7q2pB#^#eafcw?Qg)~>FFA{Wfhz);&N}5wsQ_KF! z!d-2kZ18+(e*s@SN_0K9rsaG4q@Si=TVVTD$ED8s1nw23HQh3Wh7q5&{mBEmy;sNS zv|%_Dc^ZWH$(x-d0j3w*m&To+e!)}NN?8v-jCbZ=v)^*q-z<+I78m`;>@Ik<&3!0n zpDM3)bQ|-W@PK$3j4jN|ZVUfxjHS%x6G&z2Q|UA7XY0?0INYh+&(sAyRj@fjR-xcE8VT*WTYFf^2M>QV8P;@By~Y zUccLcfR-SD$f?NldCuq0pN}&S53mC+Bj8Wt!{wr`GEQB zgKbLy04>Mig@Lz$x*FKZ&4tIp+Rf62$Ir$6;g13UAmImoFkNiCEr5P5&aPfyKS`#4 zA;1szUpFrk@Lv#bCrKs)bxok0o2Ly>m`8|*j|qYY1Og>It!=^DP=)`{AD$$c?7h9+ z!Mwb1IGhJA$m8Z|$ICA!CdSJrz$+jCdO(1@{9U~*{6MZ=%>NeoKOLxzmzAf3ySIaz zEAX$bg{7O1wn~e{{sI@_z$At|A_qj{QqSBBk~`n1n=Ma|IyFChxIS-!?YlH z61@MNJOod48+!e4PKC-)nHPR&hndEXz0yRO8?WCf>7RV^A}tzV&uX2ev8Si$peQ z3{NV}3QSElh7}Sbwo+a6(swDYxN)R2j6`*R3A6zV&YQ_3DfD#Fpn09||P`CvTLM%X-W`#!v_ z4eg#fR$QxX+KHB6B050|om#WN_QfmAL~1*kL`*U@npq|^#DF1DB->|ElZVLTyGJHJ z-Pw$MnOy$%D1k=Jx39nz_a-dD0b%s)<&5ZK%Vz~Izn4D6r4$~IpxkipY0v^)iT@yp zJx(aeRa#mUd?<<12SMJaB>gu;!snQS#ZRKi=kk9^JzD=1e3&&delete f[e.shift()],e.push(u),f[u]=n[v](t,o),i?i(f[u]):f[u])}return r}function oi(){return this.hex}function br(n,t){for(var i,f=[],r=0,u=n.length;u-2*!t>r;r+=2)i=[{x:+n[r-2],y:+n[r-1]},{x:+n[r],y:+n[r+1]},{x:+n[r+2],y:+n[r+3]},{x:+n[r+4],y:+n[r+5]}],t?r?u-4==r?i[3]={x:+n[0],y:+n[1]}:u-2==r&&(i[2]={x:+n[0],y:+n[1]},i[3]={x:+n[2],y:+n[3]}):i[0]={x:+n[u-2],y:+n[u-1]}:u-4==r?i[3]=i[2]:r||(i[0]={x:+n[r],y:+n[r+1]}),f.push(["C",(-i[0].x+6*i[1].x+i[2].x)/6,(-i[0].y+6*i[1].y+i[2].y)/6,(i[1].x+6*i[2].x-i[3].x)/6,(i[1].y+6*i[2].y-i[3].y)/6,i[2].x,i[2].y]);return f}function kr(n,t,i,r,u){var f=-3*t+9*i-9*r+3*u,e=n*f+6*t-12*i+6*r;return n*e-3*t+3*i}function vt(n,t,i,r,f,e,o,s,h){var c;h==null&&(h=1);h=h>1?1:h<0?0:h;var l=h/2,w=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],b=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],a=0;for(c=0;c<12;c++){var v=l*w[c]+l,y=kr(v,n,i,f,o),p=kr(v,t,r,e,s),k=y*y+p*p;a+=b[c]*u.sqrt(k)}return l*a}function cf(n,t,i,r,u,f,e,o,s){if(!(s<0)&&!(vt(n,t,i,r,u,f,e,o).01;)l/=2,h+=(co(u,e))&&!(o(t,r)o(f,s))){var p=(n*r-t*i)*(u-e)-(n-i)*(u*s-f*e),w=(n*r-t*i)*(f-s)-(t-r)*(u*s-f*e),a=(n-i)*(f-s)-(t-r)*(u-e);if(a){var v=p/a,y=w/a,h=+v.toFixed(2),c=+y.toFixed(2);if(!(h<+l(n,i).toFixed(2))&&!(h>+o(n,i).toFixed(2))&&!(h<+l(u,e).toFixed(2))&&!(h>+o(u,e).toFixed(2))&&!(c<+l(t,r).toFixed(2))&&!(c>+o(t,r).toFixed(2))&&!(c<+l(f,s).toFixed(2))&&!(c>+o(f,s).toFixed(2)))return{x:v,y:y}}}}function di(n,t,r){var ut=i.bezierBBox(n),ft=i.bezierBBox(t),u,h,c,d,g;if(!i.isBBoxIntersect(ut,ft))return r?0:[];var et=vt.apply(0,n),ot=vt.apply(0,t),p=o(~~(et/5),1),w=o(~~(ot/5),1),nt=[],tt=[],rt={},it=r?0:[];for(u=0;u=0&&d<=1.001&&g>=0&&g<=1.001&&(r?it++:it.push({x:f.x,y:f.y,t1:l(d,1),t2:l(g,1)}))}}return it}function gi(n,t,r){var e,o,s,h,b,k,d,g,c,l,y,p,nt,a,w,tt,v,u,f,it;for(n=i._path2curve(n),t=i._path2curve(t),y=r?0:[],p=0,nt=n.length;pu)return u;while(rf?r=i:u=i;i=(u-r)/2+r}return i}var e=3*t,o=3*(r-t)-e,h=1-e-o,s=3*i,c=3*(u-i)-s,a=1-s-c;return v(n,1/(200*f))}function ft(n,t){var i=[],u={},r;if(this.ms=t,this.times=1,n){for(r in n)n[a](r)&&(u[h(r)]=n[r],i.push(h(r)));i.sort(tf)}this.anim=u;this.top=i[i.length-1];this.percents=i}function kt(n,r,u,e,o,c){var nt,v,et,l,at,dt,ii,tt,vt,gt,yt,d,rt,st,ct,ni,ft,lt;u=h(u);var it,ot,pt,ti,bt,kt,w=n.ms,y={},g={},k={};if(e){for(v=0,et=f.length;ve*n.top){u=n.percents[v];bt=n.percents[v-1]||0;w=w/n.top*(u-bt);ti=n.percents[v+1];it=n.anim[u];break}else e&&r.attr(n.anim[n.percents[v]]);if(it){if(ot)ot.initstatus=e,ot.start=new Date-ot.ms*e;else{for(l in it)if(it[a](l)&&(wi[a](l)||r.paper.customAttributes[a](l))){y[l]=r.attr(l);y[l]==null&&(y[l]=bu[l]);g[l]=it[l];switch(wi[l]){case p:k[l]=(g[l]-y[l])/w;break;case"colour":y[l]=i.getRGB(y[l]);at=i.getRGB(g[l]);k[l]={r:(at.r-y[l].r)/w,g:(at.g-y[l].g)/w,b:(at.b-y[l].b)/w};break;case"path":for(dt=wt(y[l],g[l]),ii=dt[1],y[l]=dt[0],k[l]=[],v=0,et=y[l].length;v',fi=ui.firstChild,fi.style.behavior="url(#default#VML)",!(fi&&typeof fi.adj=="object"))return i.type=d;ui=null}i.svg=!(i.vml=i.type=="VML");i._Paper=hr;i.fn=c=hr.prototype=i.prototype;i._id=0;i._oid=0;i.is=function(n,t){return(t=ni.call(t),t=="finite")?!pu[a](+n):t=="array"?n instanceof Array:t=="null"&&n===null||t==typeof n&&n!==null||t=="object"&&n===Object(n)||t=="array"&&Array.isArray&&Array.isArray(n)||vu.call(n).slice(8,-1).toLowerCase()==t};i.angle=function(n,t,r,f,e,o){if(e==null){var s=n-r,h=t-f;return!s&&!h?0:(180+u.atan2(-h,-s)*180/k+360)%360}return i.angle(n,t,e,o)-i.angle(r,f,e,o)};i.rad=function(n){return n%360*k/180};i.deg=function(n){return n*180/k%360};i.snapTo=function(n,t,r){var f,u;if(r=i.is(r,"finite")?r:10,i.is(n,tt)){for(f=n.length;f--;)if(y(n[f]-t)<=r)return n[f]}else{if(n=+n,u=t%n,un-r)return t-u+n}return t};ff=i.createUUID=function(n,t){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(n,t).toUpperCase()}}(/[xy]/g,function(n){var t=u.random()*16|0,i=n=="x"?t:t&3|8;return i.toString(16)});i.setWindow=function(n){t("raphael.setWindow",i,r.win,n);r.win=n;r.doc=r.win.document;i._engine.initWin&&i._engine.initWin(r.win)};var ei=function(n){var e,u,f,o,t;if(i.vml){e=/^\s+|\s+$/g;try{f=new ActiveXObject("htmlfile");f.write("");f.close();u=f.body}catch(s){u=createPopup().document.body}o=u.createTextRange();ei=it(function(n){try{u.style.color=b(n).replace(e,d);var t=o.queryCommandValue("ForeColor");return t=(t&255)<<16|t&65280|(t&16711680)>>>16,"#"+("000000"+t.toString(16)).slice(-6)}catch(i){return"none"}})}else t=r.doc.createElement("i"),t.title="Raphaël Colour Picker",t.style.display="none",r.doc.body.appendChild(t),ei=it(function(n){return t.style.color=n,r.doc.defaultView.getComputedStyle(t,d).getPropertyValue("color")});return ei(n)},ef=function(){return"hsb("+[this.h,this.s,this.b]+")"},of=function(){return"hsl("+[this.h,this.s,this.l]+")"},yr=function(){return this.hex},pr=function(n,t,r){if(t==null&&i.is(n,"object")&&"r"in n&&"g"in n&&"b"in n&&(r=n.b,t=n.g,n=n.r),t==null&&i.is(n,ti)){var u=i.getRGB(n);n=u.r;t=u.g;r=u.b}return(n>1||t>1||r>1)&&(n/=255,t/=255,r/=255),[n,t,r]},wr=function(n,t,r,u){n*=255;t*=255;r*=255;var f={r:n,g:t,b:r,hex:i.rgb(n,t,r),toString:yr};return i.is(u,"finite")&&(f.opacity=u),f};i.color=function(n){var t;return i.is(n,"object")&&"h"in n&&"s"in n&&"b"in n?(t=i.hsb2rgb(n),n.r=t.r,n.g=t.g,n.b=t.b,n.hex=t.hex):i.is(n,"object")&&"h"in n&&"s"in n&&"l"in n?(t=i.hsl2rgb(n),n.r=t.r,n.g=t.g,n.b=t.b,n.hex=t.hex):(i.is(n,"string")&&(n=i.getRGB(n)),i.is(n,"object")&&"r"in n&&"g"in n&&"b"in n?(t=i.rgb2hsl(n),n.h=t.h,n.s=t.s,n.l=t.l,t=i.rgb2hsb(n),n.v=t.b):(n={hex:"none"},n.r=n.g=n.b=n.h=n.s=n.v=n.l=-1)),n.toString=yr,n};i.hsb2rgb=function(n,t,i,r){this.is(n,"object")&&"h"in n&&"s"in n&&"b"in n&&(i=n.b,t=n.s,n=n.h,r=n.o);n*=360;var e,o,s,f,u;return n=n%360/60,u=i*t,f=u*(1-y(n%2-1)),e=o=s=i-u,n=~~n,e+=[u,f,0,0,f,u][n],o+=[f,u,u,f,0,0][n],s+=[0,0,f,u,u,f][n],wr(e,o,s,r)};i.hsl2rgb=function(n,t,i,r){this.is(n,"object")&&"h"in n&&"s"in n&&"l"in n&&(i=n.l,t=n.s,n=n.h);(n>1||t>1||i>1)&&(n/=360,t/=100,i/=100);n*=360;var e,o,s,f,u;return n=n%360/60,u=2*t*(i<.5?i:1-i),f=u*(1-y(n%2-1)),e=o=s=i-u/2,n=~~n,e+=[u,f,0,0,f,u][n],o+=[f,u,u,f,0,0][n],s+=[0,0,f,u,u,f][n],wr(e,o,s,r)};i.rgb2hsb=function(n,t,i){i=pr(n,t,i);n=i[0];t=i[1];i=i[2];var f,e,u,r;return u=o(n,t,i),r=u-l(n,t,i),f=r==0?null:u==n?(t-i)/r:u==t?(i-n)/r+2:(n-t)/r+4,f=(f+360)%6/6,e=r==0?0:r/u,{h:f,s:e,b:u,toString:ef}};i.rgb2hsl=function(n,t,i){i=pr(n,t,i);n=i[0];t=i[1];i=i[2];var e,h,u,f,s,r;return f=o(n,t,i),s=l(n,t,i),r=f-s,e=r==0?null:f==n?(t-i)/r:f==t?(i-n)/r+2:(n-t)/r+4,e=(e+360)%6/6,u=(f+s)/2,h=r==0?0:u<.5?r/(2*u):r/(2-2*u),{h:e,s:h,l:u,toString:of}};i._path2string=function(){return this.join(",").replace(du,"$1")};hf=i._preload=function(n,t){var i=r.doc.createElement("img");i.style.cssText="position:absolute;left:-9999em;top:-9999em";i.onload=function(){t.call(this);this.onload=null;r.doc.body.removeChild(this)};i.onerror=function(){r.doc.body.removeChild(this)};r.doc.body.appendChild(i);i.src=n};i.getRGB=it(function(n){if(!n||!!((n=b(n)).indexOf("-")+1))return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:oi};if(n=="none")return{r:-1,g:-1,b:-1,hex:"none",toString:oi};ku[a](n.toLowerCase().substring(0,2))||n.charAt()=="#"||(n=ei(n));var u,f,e,o,s,t,r=n.match(yu);return r?(r[2]&&(e=st(r[2].substring(5),16),f=st(r[2].substring(3,5),16),u=st(r[2].substring(1,3),16)),r[3]&&(e=st((s=r[3].charAt(3))+s,16),f=st((s=r[3].charAt(2))+s,16),u=st((s=r[3].charAt(1))+s,16)),r[4]&&(t=r[4][ut](bi),u=h(t[0]),t[0].slice(-1)=="%"&&(u*=2.55),f=h(t[1]),t[1].slice(-1)=="%"&&(f*=2.55),e=h(t[2]),t[2].slice(-1)=="%"&&(e*=2.55),r[1].toLowerCase().slice(0,4)=="rgba"&&(o=h(t[3])),t[3]&&t[3].slice(-1)=="%"&&(o/=100)),r[5])?(t=r[5][ut](bi),u=h(t[0]),t[0].slice(-1)=="%"&&(u*=2.55),f=h(t[1]),t[1].slice(-1)=="%"&&(f*=2.55),e=h(t[2]),t[2].slice(-1)=="%"&&(e*=2.55),(t[0].slice(-3)=="deg"||t[0].slice(-1)=="°")&&(u/=360),r[1].toLowerCase().slice(0,4)=="hsba"&&(o=h(t[3])),t[3]&&t[3].slice(-1)=="%"&&(o/=100),i.hsb2rgb(u,f,e,o)):r[6]?(t=r[6][ut](bi),u=h(t[0]),t[0].slice(-1)=="%"&&(u*=2.55),f=h(t[1]),t[1].slice(-1)=="%"&&(f*=2.55),e=h(t[2]),t[2].slice(-1)=="%"&&(e*=2.55),(t[0].slice(-3)=="deg"||t[0].slice(-1)=="°")&&(u/=360),r[1].toLowerCase().slice(0,4)=="hsla"&&(o=h(t[3])),t[3]&&t[3].slice(-1)=="%"&&(o/=100),i.hsl2rgb(u,f,e,o)):(r={r:u,g:f,b:e,toString:oi},r.hex="#"+(16777216|e|f<<8|u<<16).toString(16).slice(1),i.is(o,"finite")&&(r.opacity=o),r):{r:-1,g:-1,b:-1,hex:"none",error:1,toString:oi}},i);i.hsb=it(function(n,t,r){return i.hsb2rgb(n,t,r).hex});i.hsl=it(function(n,t,r){return i.hsl2rgb(n,t,r).hex});i.rgb=it(function(n,t,i){return"#"+(16777216|i|t<<8|n<<16).toString(16).slice(1)});i.getColor=function(n){var t=this.getColor.start=this.getColor.start||{h:0,s:1,b:n||.75},i=this.hsb2rgb(t.h,t.s,t.b);return t.h+=.075,t.h>1&&(t.h=0,t.s-=.2,t.s<=0&&(this.getColor.start={h:0,s:1,b:t.b})),i.hex};i.getColor.reset=function(){delete this.start};i.parsePathString=function(n){var r,u,t;return n?(r=et(n),r.arr)?rt(r.arr):(u={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},t=[],i.is(n,tt)&&i.is(n[0],tt)&&(t=rt(n)),t.length||b(n).replace(gu,function(n,i,r){var f=[],e=i.toLowerCase();if(r.replace(ar,function(n,t){t&&f.push(+t)}),e=="m"&&f.length>2&&(t.push([i][s](f.splice(0,2))),e="l",i=i=="m"?"l":"L"),e=="r")t.push([i][s](f));else while(f.length>=u[e])if(t.push([i][s](f.splice(0,u[e]))),!u[e])break}),t.toString=i._path2string,r.arr=rt(t),t):null};i.parseTransformString=it(function(n){if(!n)return null;var t=[];return i.is(n,tt)&&i.is(n[0],tt)&&(t=rt(n)),t.length||b(n).replace(nf,function(n,i,r){var u=[],f=ni.call(i);r.replace(ar,function(n,t){t&&u.push(+t)});t.push([i][s](u))}),t.toString=i._path2string,t});et=function(n){var t=et.ps=et.ps||{};return t[n]?t[n].sleep=100:t[n]={sleep:100},setTimeout(function(){for(var i in t)t[a](i)&&i!=n&&(t[i].sleep--,t[i].sleep||delete t[i])}),t[n]};i.findDotsAtSegment=function(n,t,i,r,f,e,o,s,h){var c=1-h,w=nt(c,3),b=nt(c,2),l=h*h,d=l*h,tt=w*n+b*3*h*i+c*3*h*h*f+d*o,it=w*t+b*3*h*r+c*3*h*h*e+d*s,a=n+2*h*(i-n)+l*(f-2*i+n),v=t+2*h*(r-t)+l*(e-2*r+t),y=i+2*h*(f-i)+l*(o-2*f+i),p=r+2*h*(e-r)+l*(s-2*e+r),rt=c*n+h*i,ut=c*t+h*r,ft=c*f+h*o,et=c*e+h*s,g=90-u.atan2(a-y,v-p)*180/k;return(a>y||v=n.x&&t<=n.x2&&i>=n.y&&i<=n.y2};i.isBBoxIntersect=function(n,t){var r=i.isPointInsideBBox;return r(t,n.x,n.y)||r(t,n.x2,n.y)||r(t,n.x,n.y2)||r(t,n.x2,n.y2)||r(n,t.x,t.y)||r(n,t.x2,t.y)||r(n,t.x,t.y2)||r(n,t.x2,t.y2)||(n.xt.x||t.xn.x)&&(n.yt.y||t.yn.y)};i.pathIntersection=function(n,t){return gi(n,t)};i.pathIntersectionNumber=function(n,t){return gi(n,t,1)};i.isPointInsidePath=function(n,t,r){var u=i.pathBBox(n);return i.isPointInsideBBox(u,t,r)&&gi(n,[["M",t,r],["H",u.x2+10]],1)%2==1};i._removedFactory=function(n){return function(){t("raphael.log",null,"Raphaël: you are calling to method “"+n+"” of removed object",n)}};var nr=i.pathBBox=function(n){var c=et(n),h,p,u;if(c.bbox)return pt(c.bbox);if(!n)return{x:0,y:0,width:0,height:0,x2:0,y2:0};n=wt(n);var f=0,e=0,i=[],r=[],t;for(h=0,p=n.length;h1&&(tt=u.sqrt(tt),i=tt*i,r=tt*r);var ht=i*i,ct=r*r,vt=(e==o?-1:1)*u.sqrt(y((ht*ct-ht*d*d-ct*b*b)/(ht*d*d+ct*b*b))),rt=vt*i*d/r+(n+h)/2,ft=vt*-r*b/i+(t+c)/2,v=u.asin(((t-ft)/r).toFixed(9)),a=u.asin(((c-ft)/r).toFixed(9));v=na&&(v=v-k*2);!o&&a>v&&(a=a-k*2)}if(st=a-v,y(st)>at){var ni=a,ti=h,ii=c;a=v+at*(o&&a>v?1:-1);h=rt+i*u.cos(a);c=ft+r*u.sin(a);p=nu(h,c,i,r,f,0,o,ti,ii,[a,ni,rt,ft])}st=a-v;var ri=u.cos(v),ui=u.sin(v),fi=u.cos(a),ei=u.sin(a),yt=u.tan(st/4),pt=4/3*i*yt,wt=4/3*r*yt,bt=[n,t],nt=[n+pt*ui,t-wt*ri],kt=[h+pt*ei,c-wt*fi],dt=[h,c];if(nt[0]=2*bt[0]-nt[0],nt[1]=2*bt[1]-nt[1],l)return[nt,kt,dt][s](p);for(p=[nt,kt,dt][s](p).join()[ut](","),lt=[],w=0,gt=p.length;w"1e12"&&(p=.5),y(w)>"1e12"&&(w=.5),p>0&&p<1&&(a=hi(n,t,i,r,f,e,s,h,p),d.push(a.x),k.push(a.y)),w>0&&w<1&&(a=hi(n,t,i,r,f,e,s,h,w),d.push(a.x),k.push(a.y)),b=e-2*r+t-(h-2*e+r),c=2*(r-t)-2*(e-r),g=t-r,p=(-c+u.sqrt(c*c-4*b*g))/2/b,w=(-c-u.sqrt(c*c-4*b*g))/2/b,y(p)>"1e12"&&(p=.5),y(w)>"1e12"&&(w=.5),p>0&&p<1&&(a=hi(n,t,i,r,f,e,s,h,p),d.push(a.x),k.push(a.y)),w>0&&w<1&&(a=hi(n,t,i,r,f,e,s,h,w),d.push(a.x),k.push(a.y)),{min:{x:l[v](0,d),y:l[v](0,k)},max:{x:o[v](0,d),y:o[v](0,k)}}}),wt=i._path2curve=it(function(n,t){var w=!t&&et(n),r,a;if(!t&&w.curve)return rt(w.curve);var u=dr(n),i=t&&dr(t),f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},e={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},b=function(n,t,i){var r,u;if(!n)return["C",t.x,t.y,t.x,t.y,t.x,t.y];n[0]in{T:1,Q:1}||(t.qx=t.qy=null);switch(n[0]){case"M":t.X=n[1];t.Y=n[2];break;case"A":n=["C"][s](nu[v](0,[t.x,t.y][s](n.slice(1))));break;case"S":i=="C"||i=="S"?(r=t.x*2-t.bx,u=t.y*2-t.by):(r=t.x,u=t.y);n=["C",r,u][s](n.slice(1));break;case"T":i=="Q"||i=="T"?(t.qx=t.x*2-t.qx,t.qy=t.y*2-t.qy):(t.qx=t.x,t.qy=t.y);n=["C"][s](gr(t.x,t.y,t.qx,t.qy,n[1],n[2]));break;case"Q":t.qx=n[1];t.qy=n[2];n=["C"][s](gr(t.x,t.y,n[1],n[2],n[3],n[4]));break;case"L":n=["C"][s](si(t.x,t.y,n[1],n[2]));break;case"H":n=["C"][s](si(t.x,t.y,n[1],t.y));break;case"V":n=["C"][s](si(t.x,t.y,t.x,n[1]));break;case"Z":n=["C"][s](si(t.x,t.y,t.X,t.Y))}return n},k=function(n,t){if(n[t].length>7){n[t].shift();for(var r=n[t];r.length;)n.splice(t++,0,["C"][s](r.splice(0,6)));n.splice(t,1);a=o(u.length,i&&i.length||0)}},d=function(n,t,r,f,e){n&&t&&n[e][0]=="M"&&t[e][0]!="M"&&(t.splice(e,0,["M",f.x,f.y]),r.bx=0,r.by=0,r.x=n[e][1],r.y=n[e][2],a=o(u.length,i&&i.length||0))};for(r=0,a=o(u.length,i&&i.length||0);ru){if(t&&!v.start){if(o=ur(s,h,e[1],e[2],e[3],e[4],e[5],e[6],u-l),c+=["C"+o.start.x,o.start.y,o.m.x,o.m.y,o.x,o.y],f)return c;v.start=c;c=["M"+o.x,o.y+"C"+o.n.x,o.n.y,o.end.x,o.end.y,e[5],e[6]].join();l+=a;s=+e[5];h=+e[6];continue}if(!n&&!t)return o=ur(s,h,e[1],e[2],e[3],e[4],e[5],e[6],u-l),{x:o.x,y:o.y,alpha:o.alpha}}l+=a;s=+e[5];h=+e[6]}c+=e.shift()+e}return v.end=c,o=n?l:t?v:i.findDotsAtSegment(s,h,e[0],e[1],e[2],e[3],e[4],e[5],1),o.alpha&&(o={x:o.x,y:o.y,alpha:o.alpha}),o}},ou=fr(1),su=fr(),er=fr(0,1);i.getTotalLength=ou;i.getPointAtLength=su;i.getSubpath=function(n,t,i){if(this.getTotalLength(n)-i<1e-6)return er(n,t).end;var r=er(n,i,1);return t?er(r,t).end:r};e.getTotalLength=function(){var n=this.getPath();if(n)return this.node.getTotalLength?this.node.getTotalLength():ou(n)};e.getPointAtLength=function(n){var t=this.getPath();if(t)return su(t,n)};e.getPath=function(){var n,t=i._getPath[this.type];if(this.type!="text"&&this.type!="set")return t&&(n=t(this)),n};e.getSubpath=function(n,t){var r=this.getPath();if(r)return i.getSubpath(r,n,t)};g=i.easing_formulas={linear:function(n){return n},"<":function(n){return nt(n,1.7)},">":function(n){return nt(n,.48)},"<>":function(n){var i=.48-n/1.04,r=u.sqrt(.1734+i*i),f=r-i,o=nt(y(f),1/3)*(f<0?-1:1),e=-r-i,s=nt(y(e),1/3)*(e<0?-1:1),t=o+s+.5;return(1-t)*3*t*t+t*t*t},backIn:function(n){var t=1.70158;return n*n*((t+1)*n-t)},backOut:function(n){n=n-1;var t=1.70158;return n*n*((t+1)*n+t)+1},elastic:function(n){return n==!!n?n:nt(2,-10*n)*u.sin((n-.075)*2*k/.3)+1},bounce:function(n){var r=7.5625,t=2.75,i;return n<1/t?i=r*n*n:n<2/t?(n-=1.5/t,i=r*n*n+.75):n<2.5/t?(n-=2.25/t,i=r*n*n+.9375):(n-=2.625/t,i=r*n*n+.984375),i}};g.easeIn=g["ease-in"]=g["<"];g.easeOut=g["ease-out"]=g[">"];g.easeInOut=g["ease-in-out"]=g["<>"];g["back-in"]=g.backIn;g["back-out"]=g.backOut;var f=[],hu=n.requestAnimationFrame||n.webkitRequestAnimationFrame||n.mozRequestAnimationFrame||n.oRequestAnimationFrame||n.msRequestAnimationFrame||function(n){setTimeout(n,16)},or=function(){for(var ft=+new Date,b=0,n,v,r,u,g,c,nt,w,ut;b1&&!n.next){for(d in tt)tt[a](d)&&(rt[d]=n.totalOrigin[d]);n.el.attr(rt);kt(n.anim,n.el,n.anim.percents[0],null,n.totalOrigin,n.repeat-1)}n.next&&!n.stop&&kt(n.anim,n.el,n.next,null,n.totalOrigin,n.repeat)}}i.svg&&y&&y.paper&&y.paper.safari();f.length&&hu(or)},sr=function(n){return n>255?255:n<0?0:n};e.animateWith=function(n,t,r,u,e,o){var s=this,c,h,l;if(s.removed)return o&&o.call(s),s;for(c=r instanceof ft?r:i.animation(r,u,e,o),kt(c,s,c.percents[0],null,s.attr()),h=0,l=f.length;h.5)*2-1;d(b-.5,2)+d(s-.5,2)>.25&&(s=c.sqrt(.25-d(b-.5,2))*r+.5)&&s!=.5&&(s=s.toFixed(5)-1e-5*r)}return o}),r=r.split(/\s*\-\s*/),w=="linear"){if(v=r.shift(),v=-f(v),isNaN(v))return null;e=[0,0,c.cos(i.rad(v)),c.sin(i.rad(v))];nt=1/(k(y(e[2]),y(e[3]))||1);e[2]*=nt;e[3]*=nt;e[2]<0&&(e[0]=-e[2],e[2]=0);e[3]<0&&(e[1]=-e[3],e[3]=0)}if(p=i._parseDots(r),!p)return null;if(l=l.replace(/[\(\)\s,\xb0#]/g,"_"),t.gradient&&l!=t.gradient.id&&(it.defs.removeChild(t.gradient),delete t.gradient),!t.gradient)for(a=n(w+"Gradient",{id:l}),t.gradient=a,n(a,w=="radial"?{fx:b,fy:s}:{x1:e[0],y1:e[1],x2:e[2],y2:e[3],gradientTransform:t.matrix.invert()}),it.defs.appendChild(a),h=0,rt=p.length;h1?w.opacity/100:w.opacity});case"stroke":w=i.getRGB(e);h.setAttribute(v,w.hex);v=="stroke"&&w[t]("opacity")&&n(h,{"stroke-opacity":w.opacity>1?w.opacity/100:w.opacity});v=="stroke"&&r._.arrows&&("startString"in r._.arrows&&s(r,r._.arrows.startString),"endString"in r._.arrows&&s(r,r._.arrows.endString,1));break;case"gradient":(r.type=="circle"||r.type=="ellipse"||u(e).charAt()!="r")&&it(r,e);break;case"opacity":c.gradient&&!c[t]("stroke-opacity")&&n(h,{"stroke-opacity":e>1?e/100:e});case"fill-opacity":if(c.gradient){ut=i._g.doc.getElementById(h.getAttribute("fill").replace(/^url\(#|\)$/g,o));ut&&(ft=ut.getElementsByTagName("stop"),n(ft[ft.length-1],{"stop-opacity":e}));break}default:v=="font-size"&&(e=tt(e,10)+"px");yt=v.replace(/(\-.)/g,function(n){return n.substring(1).toUpperCase()});h.style[yt]=e;r._.dirty=1;h.setAttribute(v,e)}}ot(r,f);h.style.visibility=pt},ut=1.2,ot=function(r,f){var y,h,l,e,a,p,v;if(r.type=="text"&&(f[t]("text")||f[t]("font")||f[t]("font-size")||f[t]("x")||f[t]("y"))){var c=r.attrs,s=r.node,w=s.firstChild?tt(i._g.doc.defaultView.getComputedStyle(s.firstChild,o).getPropertyValue("font-size"),10):10;if(f[t]("text")){for(c.text=f.text;s.firstChild;)s.removeChild(s.firstChild);for(y=u(f.text).split("\n"),h=[],e=0,a=y.length;e")),vt=ti.getBoundingClientRect(),p.W=v.w=(vt.right-vt.left)/ii,p.H=v.h=(vt.bottom-vt.top)/ii,p.X=v.x,p.Y=v.y+p.H/2,(("x"in c)||("y"in c))&&(p.path.v=i.format("m{0},{1}l{2},{1}",e(v.x*n),e(v.y*n),e(v.x*n)+1)),ri=["x","y","text","font","font-family","font-weight","font-style","font-size"],bt=0,hi=ri.length;bt.25&&(i=c.sqrt(.25-v(t-.5,2))*((i>.5)*2-1)+.5),p=t+o+i),u}),r=r.split(/\s*\-\s*/),y=="linear"&&(l=r.shift(),l=-f(l),isNaN(l)))||(s=i._parseDots(r),!s))return null;if(n=n.shape||n.node,s.length){for(n.removeChild(e),e.on=!0,e.method="none",e.color=s[0].color,e.color2=s[s.length-1].color,a=[],h=0,w=s.length;h')}}catch(i){s=function(n){return t.createElement("<"+n+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}};i._engine.initWin(i._g.win);i._engine.create=function(){var e=i._getContainer.apply(0,arguments),f=e.container,r=e.height,u=e.width,c=e.x,l=e.y;if(!f)throw new Error("VML container not found.");var t=new i._Paper,s=t.canvas=i._g.doc.createElement("div"),h=s.style;return c=c||0,l=l||0,u=u||512,r=r||342,t.width=u,t.height=r,u==+u&&(u+="px"),r==+r&&(r+="px"),t.coordsize=n*1e3+o+n*1e3,t.coordorigin="0 0",t.span=i._g.doc.createElement("span"),t.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",s.appendChild(t.span),h.cssText=i.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",u,r),f==1?(i._g.doc.body.appendChild(s),h.left=c+"px",h.top=l+"px",h.position="absolute"):f.firstChild?f.insertBefore(s,f.firstChild):f.appendChild(s),t.renderfix=function(){},t};i.prototype.clear=function(){i.eve("raphael.clear",this);this.canvas.innerHTML=u;this.span=i._g.doc.createElement("span");this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;";this.canvas.appendChild(this.span);this.bottom=this.top=null};i.prototype.remove=function(){i.eve("raphael.remove",this);this.canvas.parentNode.removeChild(this.canvas);for(var n in this)this[n]=typeof this[n]=="function"?i._removedFactory(n):null;return!0};d=i.st;for(y in r)r[h](y)&&!d[h](y)&&(d[y]=function(n){return function(){var t=arguments;return this.forEach(function(i){i[n].apply(i,t)})}}(y))}}(),yi.was?r.win.Raphael=i:Raphael=i,i}); -//# sourceMappingURL=raphael.min.js.map - diff --git a/miniwob-sandbox/turk-www/common/special/click-pie/wheelnav.min.js b/miniwob-sandbox/turk-www/common/special/click-pie/wheelnav.min.js deleted file mode 100644 index e387d8d..0000000 --- a/miniwob-sandbox/turk-www/common/special/click-pie/wheelnav.min.js +++ /dev/null @@ -1,2 +0,0 @@ -var sliceTransform,sliceTransformCustomization,colorpalette;wheelnav=function(n,t,i,r){var u,e,s,o,f;if(this.holderId="wheel",n!==undefined&&n!==null&&(this.holderId=n),u=document.getElementById(n),(u===null||u===undefined)&&(t===undefined||t===null))return this;if(s=!0,t===undefined||t===null){for(o=[],f=0;f-1&&n.preventDefault();t=null;(i===r.keynavigateUpCode||i===r.keynavigateUpCodeAlt)&&(t=r.currentClick===r.navItemCount-1?0:r.currentClick+1);(i===r.keynavigateDownCode||i===r.keynavigateDownCodeAlt)&&(t=r.currentClick===0?r.navItemCount-1:r.currentClick-1);t!==null&&(r.navItems[t].navigateFunction!==null&&r.navItems[t].navigateFunction(),r.navigateWheel(t))})}return this.spreader=new spreader(this),this.marker=new marker(this),this.refreshWheel(),t!==undefined&&this.spreadWheel(),this};wheelnav.prototype.removeWheel=function(){if(this.raphael.remove(),this.keynavigateEnabled){var n=window;this.keynavigateOnlyFocus&&(n=document.getElementById(this.holderId),n.hasAttribute("tabindex")&&n.removeAttribute("tabindex"));n.removeEventListener("keydown",this.keyNavigateFunction)}};wheelnav.prototype.refreshWheel=function(n){for(i=0;i0&&(r=r-360)),t.currentRotateAngle-=r,u=this.animatetime!=null?this.animatetime:1500,this.animatetimeCalculated&&n!==this.currentClick&&(t.animatetime=u*(Math.abs(r)/360)),this.rotateRoundCount>0&&(this.clockwise?t.currentRotateAngle-=this.rotateRoundCount*360:t.currentRotateAngle+=this.rotateRoundCount*360,t.animatetime=u*(this.rotateRoundCount+1)));for(i=0;i0){for(this.initWheel(i),t=0;t-1||n.indexOf(" ")>-1)?!0:!1},this.isImageTitle=function(n){return n===undefined&&(n=this.title),n!==null&&n.substr(0,7)==="imgsrc:"?!0:!1},this};wheelnavTitle.prototype.getTitlePercentAttr=function(n,t,i,r){var u={},f,e;return this.relativePath!==undefined?(f=n+(this.startX-this.centerX),e=t+(this.startY-this.centerY),this.relativePath[0][1]=f,this.relativePath[0][2]=e,u={path:this.relativePath,title:this.title}):u=this.isImageTitle()?{x:n-i/2,y:t-r/2,width:i,height:r,title:this.title,src:this.title.substr(7,this.title.length)}:{x:n,y:t,title:this.title},u};wheelnavTitle.prototype.getTitleSizeTransform=function(n,t){var i="";return n!==null&&t!==null&&(i="s",this.height>this.width?(i+=(n/this.height).toString()+",",i+=(t/this.height).toString()):(i+=(n/this.width).toString()+",",i+=(t/this.width).toString())),i};wheelnav.prototype.styleWheel=function(){this.cssMode?(this.spreaderPathInAttr={"class":this.getSpreaderCssClass("in")},this.spreaderPathOutAttr={"class":this.getSpreaderCssClass("out")},this.spreaderTitleInAttr={"class":this.getSpreaderTitleCssClass("in")},this.spreaderTitleOutAttr={"class":this.getSpreaderTitleCssClass("out")},this.markerAttr={"class":this.getMarkerCssClass()}):((this.spreaderPathInAttr===undefined||this.spreaderPathInAttr===null)&&(this.spreaderPathInAttr={fill:"#444",stroke:"#444","stroke-width":2,cursor:"pointer"}),(this.spreaderPathOutAttr===undefined||this.spreaderPathOutAttr===null)&&(this.spreaderPathOutAttr={fill:"#444",stroke:"#444","stroke-width":2,cursor:"pointer"}),(this.spreaderTitleInAttr===undefined||this.spreaderTitleInAttr===null)&&(this.spreaderTitleInAttr={fill:"#eee",stroke:"#444",cursor:"pointer"}),(this.spreaderTitleOutAttr===undefined||this.spreaderTitleOutAttr===null)&&(this.spreaderTitleOutAttr={fill:"#eee",stroke:"#444",cursor:"pointer"}),(this.markerAttr===undefined||this.markerAttr===null)&&(this.markerAttr={stroke:"#444","stroke-width":2}))};wheelnavItem.prototype.styleNavItem=function(){this.wheelnav.cssMode?(this.slicePathAttr={"class":this.wheelnav.getSliceCssClass(this.wheelItemIndex,"basic")},this.sliceHoverAttr={"class":this.wheelnav.getSliceCssClass(this.wheelItemIndex,"hover")},this.sliceSelectedAttr={"class":this.wheelnav.getSliceCssClass(this.wheelItemIndex,"selected")},this.titleAttr={"class":this.wheelnav.getTitleCssClass(this.wheelItemIndex,"basic")},this.titleHoverAttr={"class":this.wheelnav.getTitleCssClass(this.wheelItemIndex,"hover")},this.titleSelectedAttr={"class":this.wheelnav.getTitleCssClass(this.wheelItemIndex,"selected")},this.linePathAttr={"class":this.wheelnav.getLineCssClass(this.wheelItemIndex,"basic")},this.lineHoverAttr={"class":this.wheelnav.getLineCssClass(this.wheelItemIndex,"hover")},this.lineSelectedAttr={"class":this.wheelnav.getLineCssClass(this.wheelItemIndex,"selected")}):(this.slicePathAttr={stroke:"#333","stroke-width":0,cursor:"pointer","fill-opacity":1},this.sliceHoverAttr={stroke:"#222","stroke-width":0,cursor:"pointer","fill-opacity":.77},this.sliceSelectedAttr={stroke:"#111","stroke-width":0,cursor:"default","fill-opacity":1},this.titleAttr={font:this.titleFont,fill:"#333",stroke:"none",cursor:"pointer"},this.titleHoverAttr={font:this.titleFont,fill:"#222",cursor:"pointer",stroke:"none"},this.titleSelectedAttr={font:this.titleFont,fill:"#fff",cursor:"default"},this.linePathAttr={stroke:"#444","stroke-width":1,cursor:"pointer"},this.lineHoverAttr={stroke:"#222","stroke-width":2,cursor:"pointer"},this.lineSelectedAttr={stroke:"#444","stroke-width":1,cursor:"default"});this.sliceClickablePathAttr={fill:"#FFF",stroke:"#FFF","stroke-width":0,cursor:"pointer","fill-opacity":.01};this.sliceClickableHoverAttr={stroke:"#FFF","stroke-width":0,cursor:"pointer"};this.sliceClickableSelectedAttr={stroke:"#FFF","stroke-width":0,cursor:"default"}};wheelnav.prototype.getSliceCssClass=function(n,t){return"wheelnav-"+this.holderId+"-slice-"+t+"-"+n};wheelnav.prototype.getTitleCssClass=function(n,t){return"wheelnav-"+this.holderId+"-title-"+t+"-"+n};wheelnav.prototype.getLineCssClass=function(n,t){return"wheelnav-"+this.holderId+"-line-"+t+"-"+n};wheelnav.prototype.getSpreaderCssClass=function(n){return"wheelnav-"+this.holderId+"-spreader-"+n};wheelnav.prototype.getSpreaderTitleCssClass=function(n){return"wheelnav-"+this.holderId+"-spreadertitle-"+n};wheelnav.prototype.getMarkerCssClass=function(){return"wheelnav-"+this.holderId+"-marker"};var pathHelper=function(){return this.sliceRadius=0,this.startAngle=0,this.middleAngle=0,this.endAngle=0,this.sliceAngle=0,this.startTheta=0,this.middleTheta=0,this.endTheta=0,this.titlePosX=0,this.titlePosY=0,this.titleRadius=0,this.titleTheta=0,this.custom=null,this.centerX=0,this.centerY=0,this.wheelRadius=0,this.itemIndex=0,this.navItemCount=0,this.navAngle=0,this.setBaseValue=function(n,t){t===null?t=new slicePathCustomization:this.custom=t;this.sliceRadius=this.wheelRadius*n*.9;this.middleAngle=this.startAngle+this.sliceAngle/2;this.endAngle=this.startAngle+this.sliceAngle;this.startTheta=this.getTheta(this.startAngle);this.middleTheta=this.getTheta(this.middleAngle);this.endTheta=this.getTheta(this.endAngle);t!==null?(t.titleRadiusPercent!==null&&(this.titleRadius=this.sliceRadius*t.titleRadiusPercent),t.titleSliceAnglePercent!==null&&(this.titleTheta=this.getTheta(this.startAngle+this.sliceAngle*t.titleSliceAnglePercent))):(this.titleRadius=this.sliceRadius*.5,this.titleTheta=this.middleTheta);this.setTitlePos()},this.setTitlePos=function(){this.titlePosX=this.titleRadius*Math.cos(this.titleTheta)+this.centerX;this.titlePosY=this.titleRadius*Math.sin(this.titleTheta)+this.centerY},this.getX=function(n,t){return t*Math.cos(this.getTheta(n))+this.centerX},this.getY=function(n,t){return t*Math.sin(this.getTheta(n))+this.centerY},this.MoveTo=function(n,t){return["M",this.getX(n,t),this.getY(n,t)]},this.MoveToCenter=function(){return["M",this.centerX,this.centerY]},this.LineTo=function(n,t,i,r){return i===undefined&&(i=n),r===undefined&&(r=t),["L",this.getX(n,t),this.getY(i,r)]},this.ArcTo=function(n,t,i){return["A",n,n,0,0,1,this.getX(t,i),this.getY(t,i)]},this.ArcBackTo=function(n,t,i){return["A",n,n,0,0,0,this.getX(t,i),this.getY(t,i)]},this.StartSpreader=function(n,t,i){this.endAngle-this.startAngle==360?n.push(this.MoveTo(t,i)):(n.push(this.MoveToCenter()),n.push(this.LineTo(t,i)))},this.Close=function(){return["z"]},this.getTheta=function(n){return n%360*Math.PI/180},this},slicePathCustomization=function(){return this.titleRadiusPercent=.5,this.titleSliceAnglePercent=.5,this},spreaderPathCustomization=function(){return this.titleRadiusPercent=0,this.titleSliceAnglePercent=.5,this.spreaderPercent=1,this},markerPathCustomization=function(){return this.titleRadiusPercent=1,this.titleSliceAnglePercent=.5,this.markerPercent=1.05,this};slicePath=function(){return this.NullSlice=function(n,t,i){return n.setBaseValue(t,i),{slicePathString:"",linePathString:"",titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.NullInitSlice=function(n,t,i){return n.setBaseValue(t,i),slicePathString=[n.MoveToCenter(),n.Close()],{slicePathString:slicePathString,linePathString:slicePathString,titlePosX:n.centerX,titlePosY:n.centerY}},this.PieSliceCustomization=function(){var n=new slicePathCustomization;return n.titleRadiusPercent=.6,n.arcBaseRadiusPercent=1,n.arcRadiusPercent=1,n.startRadiusPercent=0,n},this.PieSlice=function(n,t,i){i===null&&(i=PieSliceCustomization());n.setBaseValue(t,i);var r=n.sliceRadius*i.arcBaseRadiusPercent,u=n.sliceRadius*i.arcRadiusPercent;return slicePathString=[n.MoveTo(n.middleAngle,i.startRadiusPercent*n.sliceRadius),n.LineTo(n.startAngle,r),n.ArcTo(u,n.endAngle,r),n.Close()],{slicePathString:slicePathString,linePathString:"",titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.FlowerSlice=function(n,t,i){i===null&&(i=PieSliceCustomization(),i.titleRadiusPercent=.5,i.arcBaseRadiusPercent=.65,i.arcRadiusPercent=.14);var r=PieSlice(n,t,i);return{slicePathString:r.slicePathString,linePathString:"",titlePosX:r.titlePosX,titlePosY:r.titlePosY}},this.PieArrowSliceCustomization=function(){var n=new slicePathCustomization;return n.titleRadiusPercent=.6,n.arrowRadiusPercent=1.1,n},this.PieArrowSlice=function(n,t,i){i===null&&(i=PieArrowSliceCustomization());n.setBaseValue(t,i);r=n.sliceRadius;arrowAngleStart=n.startAngle+n.sliceAngle*.45;arrowAngleEnd=n.startAngle+n.sliceAngle*.55;var u=r*i.arrowRadiusPercent;return slicePathString=[n.MoveToCenter(),n.LineTo(n.startAngle,r),n.ArcTo(r,arrowAngleStart,r),n.LineTo(n.middleAngle,u),n.LineTo(arrowAngleEnd,r),n.ArcTo(r,n.endAngle,r),n.Close()],{slicePathString:slicePathString,linePathString:"",titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.PieArrowBasePieSlice=function(n,t,i){i===null&&(i=PieArrowSliceCustomization());i.arrowRadiusPercent=1;var r=PieArrowSlice(n,t,i);return{slicePathString:r.slicePathString,linePathString:"",titlePosX:r.titlePosX,titlePosY:r.titlePosY}},this.DonutSliceCustomization=function(){var n=new slicePathCustomization;return n.minRadiusPercent=.37,n.maxRadiusPercent=.9,n},this.DonutSlice=function(n,t,i){return i===null&&(i=DonutSliceCustomization()),maxRadius=n.wheelRadius*t*i.maxRadiusPercent,minRadius=n.wheelRadius*t*i.minRadiusPercent,n.setBaseValue(t,i),n.titleRadius=(maxRadius+minRadius)/2,n.setTitlePos(),slicePathString=[n.MoveTo(n.startAngle,minRadius),n.LineTo(n.startAngle,maxRadius),n.ArcTo(maxRadius,n.endAngle,maxRadius),n.LineTo(n.endAngle,minRadius),n.ArcBackTo(minRadius,n.startAngle,minRadius),n.Close()],{slicePathString:slicePathString,linePathString:"",titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.CogSliceCustomization=function(){var n=new slicePathCustomization;return n.titleRadiusPercent=.55,n.isBasePieSlice=!1,n},this.CogSlice=function(n,t,i){return i===null&&(i=CogSliceCustomization()),n.setBaseValue(t,i),r=n.sliceRadius,rbase=n.wheelRadius*t*.83,percentAngle0625=n.startAngle+n.sliceAngle*.0625,percentAngle1250=n.startAngle+n.sliceAngle*.125,percentAngle1875=n.startAngle+n.sliceAngle*.1875,percentAngle2500=n.startAngle+n.sliceAngle*.25,percentAngle3125=n.startAngle+n.sliceAngle*.3125,percentAngle3750=n.startAngle+n.sliceAngle*.375,percentAngle4375=n.startAngle+n.sliceAngle*.4375,percentAngle5000=n.startAngle+n.sliceAngle*.5,percentAngle5625=n.startAngle+n.sliceAngle*.5625,percentAngle6250=n.startAngle+n.sliceAngle*.625,percentAngle6875=n.startAngle+n.sliceAngle*.6875,percentAngle7500=n.startAngle+n.sliceAngle*.75,percentAngle8125=n.startAngle+n.sliceAngle*.8125,percentAngle8750=n.startAngle+n.sliceAngle*.875,percentAngle9375=n.startAngle+n.sliceAngle*.9375,percentAngle9687=n.startAngle+n.sliceAngle*.96875,i.isBasePieSlice?(r=rbase,slicePathString=[n.MoveToCenter(),n.LineTo(n.startAngle,r),n.ArcTo(r,percentAngle0625,r),n.ArcTo(r,percentAngle1250,r),n.ArcTo(r,percentAngle1875,r),n.ArcTo(r,percentAngle2500,r),n.ArcTo(r,percentAngle3125,r),n.ArcTo(r,percentAngle3750,r),n.ArcTo(r,percentAngle4375,r),n.ArcTo(r,percentAngle5000,r),n.ArcTo(r,percentAngle5625,r),n.ArcTo(r,percentAngle6250,r),n.ArcTo(r,percentAngle6875,r),n.ArcTo(r,percentAngle7500,r),n.ArcTo(r,percentAngle8125,r),n.ArcTo(r,percentAngle8750,r),n.ArcTo(r,percentAngle9375,r),n.ArcTo(r,percentAngle9687,r),n.ArcTo(r,n.endAngle,r),n.Close()]):slicePathString=[n.MoveToCenter(),n.LineTo(n.startAngle,r),n.ArcTo(r,percentAngle0625,r),n.LineTo(percentAngle0625,rbase),n.ArcTo(rbase,percentAngle1875,rbase),n.LineTo(percentAngle1875,r),n.ArcTo(r,percentAngle3125,r),n.LineTo(percentAngle3125,rbase),n.ArcTo(rbase,percentAngle4375,rbase),n.LineTo(percentAngle4375,r),n.ArcTo(r,percentAngle5625,r),n.LineTo(percentAngle5625,rbase),n.ArcTo(rbase,percentAngle6875,rbase),n.LineTo(percentAngle6875,r),n.ArcTo(r,percentAngle8125,r),n.LineTo(percentAngle8125,rbase),n.ArcTo(rbase,percentAngle9375,rbase),n.LineTo(percentAngle9375,r),n.ArcTo(r,n.endAngle,r),n.Close()],{slicePathString:slicePathString,linePathString:"",titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.CogBasePieSlice=function(n,t,i){i===null&&(i=CogSliceCustomization());i.isBasePieSlice=!0;var r=CogSlice(n,t,i);return{slicePathString:r.slicePathString,linePathString:"",titlePosX:r.titlePosX,titlePosY:r.titlePosY}},this.StarSliceCustomization=function(){var n=new slicePathCustomization;return n.titleRadiusPercent=.44,n.minRadiusPercent=.5,n.isBasePieSlice=!1,n},this.StarSlice=function(n,t,i){return i===null&&(i=StarSliceCustomization()),n.setBaseValue(t,i),r=n.wheelRadius*t,rbase=r*i.minRadiusPercent,i.isBasePieSlice?(r=n.sliceRadius,slicePathString=[n.MoveToCenter(),n.LineTo(n.startAngle,r),n.ArcTo(r,n.middleAngle,r),n.ArcTo(r,n.endAngle,r),n.Close()]):slicePathString=[n.MoveToCenter(),n.LineTo(n.startAngle,rbase),n.LineTo(n.middleAngle,r),n.LineTo(n.endAngle,rbase),n.Close()],{slicePathString:slicePathString,linePathString:"",titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.StarBasePieSlice=function(n,t,i){i===null&&(i=StarSliceCustomization());i.titleRadiusPercent=.6;i.isBasePieSlice=!0;var r=StarSlice(n,t,i);return{slicePathString:r.slicePathString,linePathString:"",titlePosX:r.titlePosX,titlePosY:r.titlePosY}},this.MenuSliceCustomization=function(){var n=new slicePathCustomization;return n.menuRadius=35,n.titleRadiusPercent=.63,n.isSelectedLine=!1,n.lineBaseRadiusPercent=0,n},this.MenuSlice=function(n,t,i){var u,r;return i===null&&(i=MenuSliceCustomization()),n.setBaseValue(t,i),x=n.centerX,y=n.centerY,u=n.wheelRadius*t,n.titleRadius=u*i.titleRadiusPercent,n.setTitlePos(),r=t*i.menuRadius,t<=.05&&(r=10),middleTheta=n.middleTheta,slicePathString=[["M",n.titlePosX-r*Math.cos(middleTheta),n.titlePosY-r*Math.sin(middleTheta)],["A",r,r,0,0,1,n.titlePosX+r*Math.cos(middleTheta),n.titlePosY+r*Math.sin(middleTheta)],["A",r,r,0,0,1,n.titlePosX-r*Math.cos(middleTheta),n.titlePosY-r*Math.sin(middleTheta)],["z"]],linePathString=t<=.05?[["M",x,y],["A",1,1,0,0,1,x+1,y+1]]:i.isSelectedLine?[n.MoveTo(n.middleAngle,i.lineBaseRadiusPercent*u),n.ArcTo(u/3,n.middleAngle,n.titleRadius-r)]:[n.MoveTo(n.middleAngle,i.lineBaseRadiusPercent*u),n.ArcTo(u/2,n.middleAngle,n.titleRadius-r)],{slicePathString:slicePathString,linePathString:linePathString,titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.MenuSliceSelectedLine=function(n,t,i){i===null&&(i=MenuSliceCustomization());i.isSelectedLine=!0;var r=MenuSlice(n,t,i);return{slicePathString:r.slicePathString,linePathString:r.linePathString,titlePosX:r.titlePosX,titlePosY:r.titlePosY}},this.MenuSliceWithoutLine=function(n,t,i){var r=MenuSlice(n,t,i);return{slicePathString:r.slicePathString,linePathString:"",titlePosX:r.titlePosX,titlePosY:r.titlePosY}},this.LineSlice=function(n,t,i){return n.setBaseValue(t,i),r=n.sliceRadius,n.sliceAngle>60&&n.sliceAngle<180?(n.titleRadius=r*(36/n.sliceAngle),n.setTitlePos()):(n.titleRadius=r*.55,n.setTitlePos()),slicePathString=n.sliceAngle<180?[n.MoveToCenter(),n.LineTo(n.startAngle,r),n.LineTo(n.endAngle,r),n.Close()]:n.startAngle===180||n.startAngle===0||n.startAngle===-180||n.startAngle===360?[n.MoveToCenter(),n.LineTo(n.startAngle,r),n.LineTo(n.startAngle,r,n.middleAngle,r),n.LineTo(n.endAngle,r,n.middleAngle,r),n.LineTo(n.endAngle,r),n.Close()]:[n.MoveToCenter(),n.LineTo(n.startAngle,r),n.LineTo(n.middleAngle,r,n.startAngle,r),n.LineTo(n.middleAngle,r,n.endAngle,r),n.LineTo(n.endAngle,r),n.Close()],{slicePathString:slicePathString,linePathString:"",titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.EyeSliceCustomization=function(){var n=new slicePathCustomization;return n.titleRadiusPercent=.68,n},this.EyeSlice=function(n,t,i){return i===null&&(i=EyeSliceCustomization()),n.setBaseValue(t,i),r=n.wheelRadius*t*.7,t===0&&(r=.01),startAngle=n.startAngle,endAngle=n.endAngle,n.sliceAngle===180&&(startAngle=n.startAngle+n.sliceAngle/4,endAngle=n.startAngle+n.sliceAngle-n.sliceAngle/4),slicePathString=[n.MoveTo(endAngle,r),n.ArcTo(r,startAngle,r),n.ArcTo(r,endAngle,r),n.Close()],{slicePathString:slicePathString,linePathString:"",titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.WheelSlice=function(n,t,i){n.setBaseValue(t,i);x=n.centerX;y=n.centerY;r=n.sliceRadius;startTheta=n.startTheta;middleTheta=n.middleTheta;endTheta=n.endTheta;var u;return n.sliceAngle<120?(n.titleRadius=r*.57,u=.9):n.sliceAngle<180?(n.titleRadius=r*.52,u=.91):(n.titleRadius=r*.45,u=.873),slicePathString=[n.MoveTo(n.middleAngle,r*.07),["L",r*.07*Math.cos(middleTheta)+r*.87*Math.cos(startTheta)+x,r*.07*Math.sin(middleTheta)+r*.87*Math.sin(startTheta)+y],["A",r*u,r*u,0,0,1,r*.07*Math.cos(middleTheta)+r*.87*Math.cos(endTheta)+x,r*.07*Math.sin(middleTheta)+r*.87*Math.sin(endTheta)+y],n.Close()],linePathString=[n.MoveTo(n.startAngle,r),n.ArcTo(r,n.endAngle,r),n.ArcBackTo(r,n.startAngle,r)],n.setTitlePos(),{slicePathString:slicePathString,linePathString:linePathString,titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.OuterStrokeSlice=function(n,t,i){return n.setBaseValue(t,i),x=n.centerX,y=n.centerY,r=n.sliceRadius,innerRadius=r/4,n.titleRadius=n.sliceAngle<120?r*.57:n.sliceAngle<180?r*.52:r*.45,linePathString=[n.MoveTo(n.startAngle,innerRadius),n.LineTo(n.startAngle,r),n.MoveTo(n.endAngle,innerRadius),n.LineTo(n.endAngle,r)],slicePathString=[n.MoveTo(n.startAngle,r),n.ArcTo(r,n.endAngle,r),n.ArcBackTo(r,n.startAngle,r),n.MoveTo(n.startAngle,innerRadius),n.ArcTo(innerRadius,n.endAngle,innerRadius),n.ArcBackTo(innerRadius,n.startAngle,innerRadius)],n.setTitlePos(),{slicePathString:slicePathString,linePathString:linePathString,titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.TabSlice=function(n){var i=n.wheelRadius*.9,r=360/n.sliceAngle,t=2*i/r;return x=n.centerX,y=n.centerY,itemIndex=n.itemIndex,titlePosX=x,titlePosY=itemIndex*t+y+t/2-i,slicePathString=[["M",x-t/2,itemIndex*t+y-i],["L",t/2+x,itemIndex*t+y-i],["L",t/2+x,(itemIndex+1)*t+y-i],["L",x-t/2,(itemIndex+1)*t+y-i],["z"]],{slicePathString:slicePathString,linePathString:"",titlePosX:titlePosX,titlePosY:titlePosY}},this.YinYangSlice=function(n,t,i){return n.setBaseValue(t,i),r=n.sliceRadius,slicePathString=[n.MoveToCenter(),n.ArcTo(r/2,n.startAngle,r),n.ArcTo(r,n.endAngle,r),n.ArcBackTo(r/2,0,0),n.Close()],titlePosX=n.getX(n.startAngle,r/2),titlePosY=n.getY(n.startAngle,r/2),{slicePathString:slicePathString,linePathString:slicePathString,titlePosX:titlePosX,titlePosY:titlePosY}},this.WebSlice=function(n,t,i){return n.setBaseValue(t,i),r=n.sliceRadius,n.titleRadius=r*.55,n.setTitlePos(),linePathString=[n.MoveToCenter(),n.LineTo(n.startAngle,r*1.1),n.MoveToCenter(),n.LineTo(n.endAngle,r*1.1),n.MoveTo(n.startAngle,r*.15),n.LineTo(n.endAngle,r*.15),n.MoveTo(n.startAngle,r*.35),n.LineTo(n.endAngle,r*.35),n.MoveTo(n.startAngle,r*.55),n.LineTo(n.endAngle,r*.55),n.MoveTo(n.startAngle,r*.75),n.LineTo(n.endAngle,r*.75),n.MoveTo(n.startAngle,r*.95),n.LineTo(n.endAngle,r*.95),n.Close()],{slicePathString:"",linePathString:linePathString,titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.WinterSliceCustomization=function(){var n=new slicePathCustomization;return n.titleRadiusPercent=.85,n.arcRadiusPercent=1,n},this.WinterSlice=function(n,t,i){i===null&&(i=WinterSliceCustomization());n.setBaseValue(t,i);sliceAngle=n.sliceAngle;parallelAngle=n.startAngle+sliceAngle/4;parallelAngle2=n.startAngle+sliceAngle/4*3;borderAngle1=n.startAngle+sliceAngle/200;borderAngle2=n.startAngle+sliceAngle/2-sliceAngle/200;borderAngle3=n.startAngle+sliceAngle/2+sliceAngle/200;borderAngle4=n.startAngle+sliceAngle-sliceAngle/200;var r=n.sliceRadius*i.arcRadiusPercent;return slicePathString=[n.MoveToCenter(),n.MoveTo(parallelAngle,r/100),n.LineTo(borderAngle1,r/2),n.LineTo(parallelAngle,r-r/100),n.LineTo(borderAngle2,r/2),n.LineTo(parallelAngle,r/100),n.MoveTo(parallelAngle2,r/100),n.LineTo(borderAngle4,r/2),n.LineTo(parallelAngle2,r-r/100),n.LineTo(borderAngle3,r/2),n.LineTo(parallelAngle2,r/100),n.Close()],linePathString=[n.MoveTo(parallelAngle,r),n.LineTo(borderAngle2,r/2),n.MoveTo(borderAngle3,r/2),n.LineTo(parallelAngle2,r)],{slicePathString:slicePathString,linePathString:linePathString,titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.TutorialSliceCustomization=function(){var n=new slicePathCustomization;return n.titleRadiusPercent=.6,n.isMoveTo=!1,n.isLineTo=!1,n.isArcTo=!1,n.isArcBackTo=!1,n},this.TutorialSlice=function(n,t,i){return i===null&&(i=TutorialSliceCustomization()),n.setBaseValue(t,i),slicePathString=[],slicePathString.push(n.MoveToCenter()),i.isMoveTo===!0&&slicePathString.push(n.MoveTo(n.middleAngle,n.sliceRadius/4)),i.isLineTo&&slicePathString.push(n.LineTo(n.startAngle,n.sliceRadius)),i.isArcTo&&slicePathString.push(n.ArcTo(n.sliceRadius,n.middleAngle,n.sliceRadius)),i.isArcBackTo&&slicePathString.push(n.ArcBackTo(n.sliceRadius,n.endAngle,n.sliceRadius)),slicePathString.push(n.Close()),linePathString=[n.MoveToCenter(),n.LineTo(n.startAngle,n.sliceRadius),n.ArcTo(n.sliceRadius,n.endAngle,n.sliceRadius),n.Close()],{slicePathString:slicePathString,linePathString:linePathString,titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this};sliceTransform=function(){this.startAngle=0;this.startTheta=0;this.middleTheta=0;this.endTheta=0;var t=function(t,i,r,u,f){this.startAngle=u;this.startTheta=n(startAngle);this.middleTheta=n(startAngle+f/2);this.endTheta=n(startAngle+f)},n=function(n){return n%360*Math.PI/180};return this.NullTransform=function(){return{sliceTransformString:"",lineTransformString:"",titleTransformString:""}},this.MoveMiddleTransform=function(i,r,u,f,e,o,s){var c,h,l,a;return t(i,r,u,f,e,o,s),c="t"+(u/10*Math.cos(middleTheta)).toString()+","+(u/10*Math.sin(middleTheta)).toString(),o!==null?h=n(-o):(l=f-s*e,h=n(l+e/2)),a="s1,r0,t"+(u/10*Math.cos(h)).toString()+","+(u/10*Math.sin(h)).toString(),{sliceTransformString:c,lineTransformString:c,titleTransformString:a}},this.RotateTransform=function(){var n="s1,r360";return{sliceTransformString:n,lineTransformString:n,titleTransformString:n}},this.RotateHalfTransform=function(){var n="s1,r90";return{sliceTransformString:n,lineTransformString:n,titleTransformString:n}},this.RotateTitleTransform=function(){return{sliceTransformString:"",lineTransformString:"",titleTransformString:"s1,r360"}},this.ScaleTransform=function(){var n="s1.2";return{sliceTransformString:n,lineTransformString:"",titleTransformString:n}},this.ScaleTitleTransform=function(){return{sliceTransformString:"",lineTransformString:"",titleTransformString:"s1.3"}},this.RotateScaleTransform=function(){var n="r360,s1.3";return{sliceTransformString:n,lineTransformString:"",titleTransformString:n}},this.CustomTransform=function(n,t,i,r,u,f,e,o){var s=o.scaleString+","+o.rotateString;return{sliceTransformString:s,lineTransformString:s,titleTransformString:s}},this.CustomTitleTransform=function(n,t,i,r,u,f,e,o){var s=o.scaleString+","+o.rotateString;return{sliceTransformString:"",lineTransformString:"",titleTransformString:s}},this};sliceTransformCustomization=function(){return this.scaleString="s1",this.rotateString="r0",this};spreader=function(n){var t,i;if(this.wheelnav=n,this.wheelnav.spreaderEnable){this.spreaderHelper=new pathHelper;this.spreaderHelper.centerX=this.wheelnav.centerX;this.spreaderHelper.centerY=this.wheelnav.centerY;this.spreaderHelper.navItemCount=this.wheelnav.navItemCount;this.spreaderHelper.navAngle=this.wheelnav.navAngle;this.spreaderHelper.wheelRadius=this.wheelnav.spreaderRadius;this.spreaderHelper.startAngle=this.wheelnav.spreaderStartAngle;this.spreaderHelper.sliceAngle=this.wheelnav.spreaderSliceAngle;t=this.wheelnav;this.animateeffect="bounce";this.animatetime=1500;this.wheelnav.animateeffect!==null&&(this.animateeffect=this.wheelnav.animateeffect);this.wheelnav.animatetime!==null&&(this.animatetime=this.wheelnav.animatetime);this.fontAttr=this.wheelnav.spreaderTitleFont!==null?{font:this.wheelnav.spreaderTitleFont}:{font:"100 32px Impact, Charcoal, sans-serif"};this.spreaderPathIn=this.wheelnav.spreaderPathFunction(this.spreaderHelper,this.wheelnav.spreaderInPercent,this.wheelnav.spreaderPathCustom);this.spreaderPathOut=this.wheelnav.spreaderPathFunction(this.spreaderHelper,this.wheelnav.spreaderOutPercent,this.wheelnav.spreaderPathCustom);i=this.spreaderPathOut;t.initPercentthis.wheelnav.minPercent?this.spreaderPathOut.spreaderPathString:this.spreaderPathIn.spreaderPathString;spreaderTransformAttr={path:currentPath};this.spreaderPath.animate(spreaderTransformAttr,this.animatetime,this.animateeffect);var t,i,r;this.wheelnav.currentPercent===this.wheelnav.maxPercent?(t=this.outTitle,i=this.wheelnav.spreaderTitleOutAttr,this.spreaderPath.attr(this.wheelnav.spreaderPathOutAttr),r=this.outTitleSizeTransform):(t=this.inTitle,i=this.wheelnav.spreaderTitleInAttr,this.spreaderPath.attr(this.wheelnav.spreaderPathInAttr),r=this.inTitleSizeTransform);wheelnavTitle().isPathTitle(t.title)?(i.path=t.path,i.transform=r):wheelnavTitle().isImageTitle(t.title)?(i.x=t.x,i.y=t.y,i.width=t.width,i.height=t.height,this.spreaderTitle.attr({src:t.src})):(offYOffset=0,t.title==="-"&&(offYOffset=3),i.x=t.x,i.y=t.y-offYOffset,t.title!==null&&this.spreaderTitle.attr({text:t.title}));this.spreaderTitle.animate(i,this.animatetime,this.animateeffect)}this.spreaderPath.toFront();this.spreaderTitle.toFront()}};spreaderPath=function(){return this.NullSpreader=function(n,t){return t===null&&(t=new spreaderPathCustomization),n.setBaseValue(t.spreaderPercent,t),{spreaderPathString:"",titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.PieSpreaderCustomization=function(){var n=new spreaderPathCustomization;return n.spreaderRadius=25,n.arcBaseRadiusPercent=1,n.arcRadiusPercent=1,n.startRadiusPercent=0,n},this.PieSpreader=function(n,t,i){i===null&&(i=PieSpreaderCustomization());n.setBaseValue(i.spreaderPercent*t,i);var r=n.sliceRadius*i.arcBaseRadiusPercent,u=n.sliceRadius*i.arcRadiusPercent;return spreaderPathString=[],n.StartSpreader(spreaderPathString,n.startAngle,r),spreaderPathString.push(n.ArcTo(u,n.middleAngle,r)),spreaderPathString.push(n.ArcTo(u,n.endAngle,r)),spreaderPathString.push(n.Close()),{spreaderPathString:spreaderPathString,titlePosX:n.titlePosX,titlePosY:n.titlePosY}},this.StarSpreaderCustomization=function(){var n=new spreaderPathCustomization;return n.minRadiusPercent=.5,n},this.StarSpreader=function(n,t,i){i===null&&(i=StarSpreaderCustomization());n.setBaseValue(i.spreaderPercent*t,i);rbase=n.wheelRadius*i.spreaderPercent*i.minRadiusPercent*t;r=n.sliceRadius;spreaderPathString=[];sliceAngle=n.sliceAngle/n.navItemCount;baseAngle=n.navAngle;n.endAngle-n.startAngle<360&&(baseAngle=n.startAngle);n.StartSpreader(spreaderPathString,baseAngle,r);for(var u=0;uIyobTLo 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%0DWzWW6uiZq5LY=35Fc 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 z z35ro#Npt5UHxuR`2bTz|*%NYTW(oQD#CZH@1y$wju-Pm-KBK{MvB;{wIH#|?DmCLJ zihL7S@*Cpru(I)w81l@i+6o%DZc*ShE4`%e(rZZ1;;#EdDgaw%-4U}R+J~)}Ba(8(1_*$a~?p9r@MXjBa*iGLp z!$GJ6AcE?MO!7+puPd|8m_`3#j$;#PxS7*ZVUJ0ba^k#Six&ygU>D{E(`u0PWl|+Q zOk>6K%s}30DI@yg;DsMqy#;L&H%P*BM+1(d*=snJzCR<^Y8|U*MNQn{Dgw+hSqDJE##BS2X zoK|0X^yjjSp362-Z{&lim)|HRFsU8DZ0eSBl zlUgL%P&tQLth4GZo*8xN1z&OYKhI9Jm~G6b4dpqUc4Jp^x7N_4kh#_o7yT0NQ8tYS zd5*pi!9MDowfNQ;=@22rB|9Xm&a$!s#GHZ#$8E;jI!?0Rco*z>o{Xa1!-+*ucI<;U v_w|%D$@dh`WHC4wHK=`c1MzsG3SF>PHn97iE2d|CKii=L=0>@OXU_ctL(L*? diff --git a/miniwob-sandbox/turk-www/common/special/drag-cube/cube.css b/miniwob-sandbox/turk-www/common/special/drag-cube/cube.css deleted file mode 100644 index 1948261..0000000 --- a/miniwob-sandbox/turk-www/common/special/drag-cube/cube.css +++ /dev/null @@ -1,132 +0,0 @@ -.viewport { - -webkit-perspective: 800px; - -moz-perspective: 800px; - -ms-perspective: 800px; - -o-perspective: 800px; - perspective: 800px; - -webkit-perspective-origin: 50% 80px; - -moz-perspective-origin: 50% 80px; - -ms-perspective-origin: 50% 80px; - -o-perspective-origin: 50% 80px; - perspective-origin: 50% 80px; - -webkit-transform: scale(0.8, 0.8); - -moz-transform: scale(0.8, 0.8); - -ms-transform: scale(0.8, 0.8); - -o-transform: scale(0.8, 0.8); - transform: scale(0.8, 0.8); -} - -.cube { - position: relative; - margin: 20px auto; - height: 80px; - width: 80px; - -webkit-transform-style: preserve-3d; - -moz-transform-style: preserve-3d; - -ms-transform-style: preserve-3d; - -o-transform-style: preserve-3d; - transform-style: preserve-3d; - -webkit-transform: rotateX(136deg) rotateY(1122deg); - -moz-transform: rotateX(136deg) rotateY(1122deg); - -ms-transform: rotateX(136deg) rotateY(1122deg); - -o-transform: rotateX(136deg) rotateY(1122deg); - transform: rotateX(136deg) rotateY(1122deg); } - -.cube > div { - overflow: hidden; - position: absolute; - opacity: 0.9; - height: 80px; - width: 80px; - background-image: url("blank.png"); - -webkit-touch-callout: none; - -moz-touch-callout: none; - -ms-touch-callout: none; - -o-touch-callout: none; - touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - -o-user-select: none; - user-select: none; } - -.cube > div > div.cube-image { - width: 80px; - height: 80px; - -webkit-transform: rotate(180deg); - -moz-transform: rotate(180deg); - -ms-transform: rotate(180deg); - -o-transform: rotate(180deg); - transform: rotate(180deg); - line-height: 80px; - font-size: 80px; - text-align: center; - color: #1b9bd8; - -webkit-transition: color 600ms; - -moz-transition: color 600ms; - -ms-transition: color 600ms; - -o-transition: color 600ms; - transition: color 600ms; } - .cube > div > div.cube-image.active { - color: red; } - -.cube > div:hover { - cursor: pointer; } - -.cube > div:active { - cursor: pointer; } - -.cube > div:first-child { - -webkit-transform: rotateX(90deg) translateZ(40px); - -moz-transform: rotateX(90deg) translateZ(40px); - -ms-transform: rotateX(90deg) translateZ(40px); - -o-transform: rotateX(90deg) translateZ(40px); - transform: rotateX(90deg) translateZ(40px); - outline: 1px solid transparent; } - -.cube > div:nth-child(2) { - -webkit-transform: translateZ(40px); - -moz-transform: translateZ(40px); - -ms-transform: translateZ(40px); - -o-transform: translateZ(40px); - transform: translateZ(40px); - outline: 1px solid transparent; } - -.cube > div:nth-child(3) { - -webkit-transform: rotateY(90deg) translateZ(40px); - -moz-transform: rotateY(90deg) translateZ(40px); - -ms-transform: rotateY(90deg) translateZ(40px); - -o-transform: rotateY(90deg) translateZ(40px); - transform: rotateY(90deg) translateZ(40px); - outline: 1px solid transparent; } - -.cube > div:nth-child(4) { - -webkit-transform: rotateY(180deg) translateZ(40px); - -moz-transform: rotateY(180deg) translateZ(40px); - -ms-transform: rotateY(180deg) translateZ(40px); - -o-transform: rotateY(180deg) translateZ(40px); - transform: rotateY(180deg) translateZ(40px); - outline: 1px solid transparent; } - -.cube > div:nth-child(5) { - -webkit-transform: rotateY(-90deg) translateZ(40px); - -moz-transform: rotateY(-90deg) translateZ(40px); - -ms-transform: rotateY(-90deg) translateZ(40px); - -o-transform: rotateY(-90deg) translateZ(40px); - transform: rotateY(-90deg) translateZ(40px); - outline: 1px solid transparent; } - -.cube > div:nth-child(6) { - -webkit-transform: rotateX(-90deg) rotate(180deg) translateZ(40px); - -moz-transform: rotateX(-90deg) rotate(180deg) translateZ(40px); - -ms-transform: rotateX(-90deg) rotate(180deg) translateZ(40px); - -o-transform: rotateX(-90deg) rotate(180deg) translateZ(40px); - transform: rotateX(-90deg) rotate(180deg) translateZ(40px); - outline: 1px solid transparent; } - -object { - opacity: 0.5; } - -object:hover { - opacity: 1; -} diff --git a/miniwob-sandbox/turk-www/common/special/drag-cube/cube.js b/miniwob-sandbox/turk-www/common/special/drag-cube/cube.js deleted file mode 100644 index c1715f1..0000000 --- a/miniwob-sandbox/turk-www/common/special/drag-cube/cube.js +++ /dev/null @@ -1,358 +0,0 @@ -var cubePuzzle = {}; - -// reset the cube back to its default position. -cubePuzzle.reset = function(){ - document.getElementsByClassName('active')[0].setAttribute('class','cube-image'); - document.getElementsByClassName('cube-image')[2].removeAttribute('style'); - document.getElementsByClassName('cube-image')[3].removeAttribute('style'); - document.getElementsByClassName('cube-image')[5].setAttribute('class','cube-image active'); - cube.viewport.positionX = 1122; - cube.viewport.positionY = 136; -} - -// setup the cube on the screen. -cubePuzzle.setup = function() { - var events = new Events(); - events.add = function(obj) { - obj.events = { }; - } - events.implement = function(fn) { - fn.prototype = Object.create(Events.prototype); - } - - function Events() { - this.events = { }; - } - Events.prototype.on = function(name, fn) { - var events = this.events[name]; - if (events == undefined) { - this.events[name] = [ fn ]; - this.emit('event:on', fn); - } else { - if (events.indexOf(fn) == -1) { - events.push(fn); - this.emit('event:on', fn); - } - } - return this; - } - Events.prototype.once = function(name, fn) { - var events = this.events[name]; - fn.once = true; - if (!events) { - this.events[name] = [ fn ]; - this.emit('event:once', fn); - } else { - if (events.indexOf(fn) == -1) { - events.push(fn); - this.emit('event:once', fn); - } - } - return this; - } - Events.prototype.emit = function(name, args) { - var events = this.events[name]; - if (events) { - var i = events.length; - while(i--) { - if (events[i]) { - events[i].call(this, args); - if (events[i].once) { - delete events[i]; - } - } - } - } - return this; - } - Events.prototype.unbind = function(name, fn) { - if (name) { - var events = this.events[name]; - if (events) { - if (fn) { - var i = events.indexOf(fn); - if (i != -1) { - delete events[i]; - } - } else { - delete this.events[name]; - } - } - } else { - delete this.events; - this.events = { }; - } - return this; - } - - var userPrefix; - - var prefix = (function () { - var styles = window.getComputedStyle(document.documentElement, ''), - pre = (Array.prototype.slice - .call(styles) - .join('') - .match(/-(moz|webkit|ms)-/) || (styles.OLink === '' && ['', 'o']) - )[1], - dom = ('WebKit|Moz|MS|O').match(new RegExp('(' + pre + ')', 'i'))[1]; - userPrefix = { - dom: dom, - lowercase: pre, - css: '-' + pre + '-', - js: pre[0].toUpperCase() + pre.substr(1) - }; - })(); - - function bindEvent(element, type, handler) { - if(element.addEventListener) { - element.addEventListener(type, handler, false); - } else { - element.attachEvent('on' + type, handler); - } - } - - function Viewport(data) { - events.add(this); - - var self = this; - - this.element = data.element; - this.fps = data.fps; - this.sensivity = data.sensivity; - this.sensivityFade = data.sensivityFade; - this.touchSensivity = data.touchSensivity; - this.speed = data.speed; - - this.lastX = 0; - this.lastY = 0; - this.mouseX = 0; - this.mouseY = 0; - this.distanceX = 0; - this.distanceY = 0; - this.positionX = 1122; - this.positionY = 136; - this.torqueX = 0; - this.torqueY = 0; - - this.down = false; - this.upsideDown = false; - - this.previousPositionX = 0; - this.previousPositionY = 0; - - this.currentSide = 0; - this.calculatedSide = 0; - - - bindEvent(document, 'mousedown', function() { - self.down = true; - }); - - bindEvent(document, 'mouseup', function() { - self.down = false; - }); - - bindEvent(document, 'keyup', function() { - self.down = false; - }); - - bindEvent(document, 'mousemove', function(e) { - self.mouseX = e.pageX; - self.mouseY = e.pageY; - }); - - bindEvent(document, 'touchstart', function(e) { - - self.down = true; - e.touches ? e = e.touches[0] : null; - self.mouseX = e.pageX / self.touchSensivity; - self.mouseY = e.pageY / self.touchSensivity; - self.lastX = self.mouseX; - self.lastY = self.mouseY; - }); - - bindEvent(document, 'touchmove', function(e) { - if(e.preventDefault) { - e.preventDefault(); - } - - if(e.touches.length == 1) { - - e.touches ? e = e.touches[0] : null; - - self.mouseX = e.pageX / self.touchSensivity; - self.mouseY = e.pageY / self.touchSensivity; - - } - }); - - bindEvent(document, 'touchend', function(e) { - self.down = false; - }); - - setInterval(this.animate.bind(this), this.fps); - - } - events.implement(Viewport); - Viewport.prototype.animate = function() { - - this.distanceX = (this.mouseX - this.lastX); - this.distanceY = (this.mouseY - this.lastY); - - this.lastX = this.mouseX; - this.lastY = this.mouseY; - - if(this.down) { - this.torqueX = this.torqueX * this.sensivityFade + (this.distanceX * this.speed - this.torqueX) * this.sensivity; - this.torqueY = this.torqueY * this.sensivityFade + (this.distanceY * this.speed - this.torqueY) * this.sensivity; - } - - if(Math.abs(this.torqueX) > 1.0 || Math.abs(this.torqueY) > 1.0) { - if(!this.down) { - this.torqueX *= this.sensivityFade; - this.torqueY *= this.sensivityFade; - } - - this.positionY -= this.torqueY; - - if(this.positionY > 360) { - this.positionY -= 360; - } else if(this.positionY < 0) { - this.positionY += 360; - } - - if(this.positionY > 90 && this.positionY < 270) { - this.positionX -= this.torqueX; - - if(!this.upsideDown) { - this.upsideDown = true; - this.emit('upsideDown', { upsideDown: this.upsideDown }); - } - - } else { - - this.positionX += this.torqueX; - - if(this.upsideDown) { - this.upsideDown = false; - this.emit('upsideDown', { upsideDown: this.upsideDown }); - } - } - - if(this.positionX > 360) { - this.positionX -= 360; - } else if(this.positionX < 0) { - this.positionX += 360; - } - - if(!(this.positionY >= 46 && this.positionY <= 130) && !(this.positionY >= 220 && this.positionY <= 308)) { - if(this.upsideDown) { - if(this.positionX >= 42 && this.positionX <= 130) { - this.calculatedSide = 3; - } else if(this.positionX >= 131 && this.positionX <= 223) { - this.calculatedSide = 2; - } else if(this.positionX >= 224 && this.positionX <= 314) { - this.calculatedSide = 5; - } else { - this.calculatedSide = 4; - } - } else { - if(this.positionX >= 42 && this.positionX <= 130) { - this.calculatedSide = 5; - } else if(this.positionX >= 131 && this.positionX <= 223) { - this.calculatedSide = 4; - } else if(this.positionX >= 224 && this.positionX <= 314) { - this.calculatedSide = 3; - } else { - this.calculatedSide = 2; - } - } - } else { - if(this.positionY >= 46 && this.positionY <= 130) { - this.calculatedSide = 6; - } - - if(this.positionY >= 220 && this.positionY <= 308) { - this.calculatedSide = 1; - } - } - - if(this.calculatedSide !== this.currentSide) { - this.currentSide = this.calculatedSide; - this.emit('sideChange'); - } - - } - - this.element.style[userPrefix.js + 'Transform'] = 'rotateX(' + this.positionY + 'deg) rotateY(' + this.positionX + 'deg)'; - - if(this.positionY != this.previousPositionY || this.positionX != this.previousPositionX) { - this.previousPositionY = this.positionY; - this.previousPositionX = this.positionX; - - this.emit('rotate'); - - } - - } - var viewport = new Viewport({ - element: document.getElementsByClassName('cube')[0], - fps: 20, - sensivity: .1, - sensivityFade: .93, - speed: 2, - touchSensivity: 1.5 - }); - - function Cube(data) { - var self = this; - - this.element = data.element; - this.sides = this.element.getElementsByClassName('side'); - - this.viewport = data.viewport; - this.viewport.on('rotate', function() { - self.rotateSides(); - }); - this.viewport.on('upsideDown', function(obj) { - self.upsideDown(obj); - }); - this.viewport.on('sideChange', function() { - self.sideChange(); - }); - } - Cube.prototype.rotateSides = function() { - var viewport = this.viewport; - if(viewport.positionY > 90 && viewport.positionY < 270) { - this.sides[0].getElementsByClassName('cube-image')[0].style[userPrefix.js + 'Transform'] = 'rotate(' + (viewport.positionX + viewport.torqueX) + 'deg)'; - this.sides[5].getElementsByClassName('cube-image')[0].style[userPrefix.js + 'Transform'] = 'rotate(' + -(viewport.positionX + 180 + viewport.torqueX) + 'deg)'; - } else { - this.sides[0].getElementsByClassName('cube-image')[0].style[userPrefix.js + 'Transform'] = 'rotate(' + (viewport.positionX - viewport.torqueX) + 'deg)'; - this.sides[5].getElementsByClassName('cube-image')[0].style[userPrefix.js + 'Transform'] = 'rotate(' + -(viewport.positionX + 180 - viewport.torqueX) + 'deg)'; - } - } - Cube.prototype.upsideDown = function(obj) { - - var deg = (obj.upsideDown == true) ? '180deg' : '0deg'; - var i = 5; - - while(i > 0 && --i) { - this.sides[i].getElementsByClassName('cube-image')[0].style[userPrefix.js + 'Transform'] = 'rotate(' + deg + ')'; - } - - } - Cube.prototype.sideChange = function() { - - for(var i = 0; i < this.sides.length; ++i) { - this.sides[i].getElementsByClassName('cube-image')[0].className = 'cube-image'; - } - - this.sides[this.viewport.currentSide - 1].getElementsByClassName('cube-image')[0].className = 'cube-image active'; - - } - - cube = new Cube({ - viewport: viewport, - element: document.getElementsByClassName('cube')[0] - }); -} diff --git a/miniwob-sandbox/turk-www/common/special/email-inbox-nl/templates.js b/miniwob-sandbox/turk-www/common/special/email-inbox-nl/templates.js deleted file mode 100644 index c871856..0000000 --- a/miniwob-sandbox/turk-www/common/special/email-inbox-nl/templates.js +++ /dev/null @@ -1,515 +0,0 @@ -var TEMPLATES = { - "forward":{ - "train":[ - "Ask NAME to forward her messages to DEST.", - "Automatically forward all emails from NAME to DEST.", - "Can you forward the email from NAME to DEST please?", - "Can you please retrieve an email I received from NAME and forward it to DEST?", - "Copy the email from NAME and send it to DEST.", - "Could you find NAME's email, then forward it to DEST?", - "Could you forward NAME's email to DEST?", - "DEST must be forwarded email from NAME.", - "FOrward to DEST the email that NAME sent to me today.", - "Find NAME's e-mail and send it along to DEST.", - "Find NAME's email and forward it to DEST, please.", - "Find NAME's email and forward to DEST.", - "Find NAME's email and send it to DEST.", - "Find NAME's email, forward to DEST", - "Find NAME's last email and forward it to DEST.", - "Find an email from NAME and send it to DEST", - "Find the NAME email and forward it to DEST.", - "Find the e-mail from NAME and send it to DEST.", - "Find the email by NAME and forward it to DEST.", - "Find the email by NAME and send it on to DEST.", - "Find the email from DEST and forward it to NAME.", - "Find the email from NAME and forward it to DEST.", - "Find the email from NAME and give it to DEST.", - "Find the email from NAME and send it to DEST.", - "Find the email that NAME sent and forward it to DEST.", - "Find the first email from NAME and forward it to DEST.", - "Find the last email NAME sent and forward it to DEST.", - "Find yesterday's emails from DEST and forward them to NAME.", - "Forward DEST NAME's latest email.", - "Forward DEST a copy of NAME's e-mail.", - "Forward DEST all of NAME's emails.", - "Forward DEST email from NAME.", - "Forward DEST the email from NAME.", - "Forward DEST the latest email from NAME.", - "Forward DEST's email from yesterday to NAME.", - "Forward NAME's e-mail to DEST.", - "Forward NAME's email that is in the email app to DEST.", - "Forward NAME's email to DEST", - "Forward NAME's email to DEST.", - "Forward all messages from DEST to NAME.", - "Forward email from NAME to DEST", - "Forward email from NAME to DEST.", - "Forward email to DEST from NAME.", - "Forward most recent email from NAME to DEST.", - "Forward the email from NAME in the email app to DEST.", - "Forward the email from NAME to DEST.", - "Forward the email in the inbox app from NAME to DEST.", - "Forward the last email from NAME to DEST.", - "Foward the email by NAME to DEST please.", - "Give DEST NAME's Email", - "Give DEST the email from NAME.", - "Go ahead and forward to DEST the e-mail that I received from NAME.", - "Go ahead and send DEST the e-mail I got from NAME.", - "I command you to give DEST the email from NAME.", - "I need an email written to me by NAME sent to DEST", - "I need to forward NAME's e-mail to DEST.", - "I need to forward NAME's message to DEST", - "I need you to forward the email to DEST from NAME.", - "I need you to take NAME's email and give it to DEST.", - "I want DEST to be forwarded email from NAME.", - "I want to forward NAME's email to DEST.", - "I want to forward the email from NAME over to DEST.", - "I want to send DEST the e-mail that I got from NAME.", - "I want to send NAME's email to DEST.", - "I want to send the email I got from NAME over to DEST.", - "I would like you to send NAME's email to DEST.", - "I'd like to email DEST the email I got from NAME.", - "I'd like to send DEST the email I got from NAME.", - "I'd like to send the email from NAME to DEST's email.", - "In my inbox, there should be an email from NAME, it needs to be forwarded to DEST.", - "Let DEST receive the email message by NAME.", - "Let me send NAME's email to DEST.", - "Let me send the email that I received from NAME over to DEST.", - "Locate NAME's email and forward it to DEST.", - "Locate email from NAME and forward it to DEST.", - "Locate email from NAME and send to DEST.", - "Look for the email that NAME wrote in this email app and forward it to DEST", - "Make sure DEST recieve emails from NAME in primary.", - "Make sure the email written by NAME is forwarded to DEST.", - "NAME wrote an email in this app that needs to be forwarded to DEST.", - "NAME's email, will you forward that to DEST?", - "Open NAME's email and forward it to DEST", - "Open NAME's latest email and forward it to DEST.", - "Open email, forward message from NAME to DEST", - "Open primary email folder, forward NAME's message to DEST.", - "Open the e-mail from NAME and forward it to DEST.", - "Please find my email from NAME and forward it to DEST.", - "Please find that email from NAME and forward to by email to DEST.", - "Please forward NAME's email to DEST.", - "Please forward the email NAME sent today to DEST", - "Please locate NAME's email and put a copy in DEST's inbox.", - "Please search for the email from NAME and give it to DEST.", - "Please send DEST NAME's email.", - "Please send NAME's email to DEST.", - "Pull up the e-mail from NAME and forward it to DEST.", - "Pull up the email from NAME and forward it to DEST.", - "Pull up the email from NAME and let me send it to DEST.", - "Remind me to forward the email from NAME to DEST.", - "Resend NAME's e-mail back to DEST", - "Search for NAME's email and forward to DEST.", - "Search for an email written by NAME and send that email to DEST.", - "Search todays email and send the one from NAME, to DEST.", - "Select email from NAME and send to DEST", - "Send DEST NAME's email.", - "Send DEST the email from NAME.", - "Send DEST the email that NAME sent yesterday.", - "Send DEST the email written by NAME.", - "Send DEST the last email from NAME", - "Send Email in primary from NAME to DEST.", - "Send NAME the message from DEST.", - "Send NAME's email DEST.", - "Send NAME's email to DEST.", - "Send email from NAME to DEST.", - "Send my email from NAME to DEST.", - "Send the email from NAME to DEST.", - "Send to DEST NAME's email.", - "Send to DEST an email found in the app that is written by NAME.", - "Send to DEST the email from NAME.", - "Send to DEST the email in this app that is written by NAME.", - "Take NAME's email and give it to DEST.", - "The email that is found in the email app and written by NAME needs to be forwarded to DEST.", - "Will you find the email from NAME and forward it to DEST?", - "find the email from NAME and forward it to DEST", - "forward NAME's email to DEST", - "forward NAME's last email to DEST", - "forward any email from NAME to DEST", - "forward the email from NAME to DEST.", - "please forward NAMEs last email to DEST", - "pull up NAME's email and send to to DEST", - "pull up NAME's last email and send it to DEST", - "put DEST on the list of people to send NAME's email to", - "send DEST the email from NAME", - "send NAME's email to DEST", - "send NAME's latest email to DEST" - ], - "test":[ - "DEST needs the email in the inbox app written by NAME forwarded to him.", - "DEST needs to receive the email that NAME sent.", - "Email DEST the forward from NAME in Primary inbox.", - "Find NAME's email and forward it to DEST.", - "Find email from NAME and send to DEST.", - "Find emails from NAME in primary inbox and forward them to DEST.", - "Find the last email from NAME and forward it to DEST.", - "Forward all mail from NAME to DEST.", - "Forward email by NAME and forward to DEST.", - "Forward the last email from NAME to DEST", - "Forward to DEST an email in this application from NAME.", - "Forward to DEST email from NAME.", - "Highlight NAME's email and forward to DEST.", - "I want to find the email from NAME and then send to DEST.", - "I want to forward DEST email from NAME.", - "NAME's email should be forwarded to DEST.", - "NAME's email that is in this app needs to be forwarded to DEST.", - "Please find the email from NAME and forward it to DEST.", - "Please forward to DEST the e-mail that NAME sent me.", - "Please take the e-mail that NAME sent me and forward it to DEST.", - "Search through the emaiol app for an email written by NAME and send that email to DEST.", - "Send the email NAME sent to me to DEST.", - "Send the email by NAME in the inbox app to DEST.", - "Send the latest email from NAME to DEST by way of forward." - ] - }, - "reply":{ - "train":[ - "\"MSG\" is my reply to NAME's most recent email.", - "Answer NAME's email with \"MSG\"", - "Answer the new email from NAME with \"MSG\"", - "AnswerNAME's email with \"MSG\"", - "Can you email NAME and tell her \"MSG\"", - "Can you please respond in my primary email box to NAME and write \"MSG\"", - "Create a reply email to NAME saying \"MSG\".", - "Email \"MSG\" to NAME.", - "Email NAME back to tell her \"MSG\"", - "Email NAME the message, \"MSG\"", - "Email NAME, \"MSG\"", - "Find NAME's e-mail and reply with the words \"MSG\"", - "Find NAME's email and reply \"MSG\".", - "Find NAME's email and reply saying \"MSG\"", - "Find NAME's email and respond with \"MSG\"", - "Find email from NAME and reply with \"MSG\".", - "Find email from NAME, then reply to NAME \"MSG\"", - "Find the NAME email and reply, \"MSG\"", - "Find the NAME email and tell her, \"MSG\"", - "Find the email from NAME in this email app and respond by saying \"MSG\".", - "First, find the most recent email from NAME; then, send him a message saying \"MSG\"", - "Go ahead and reply to NAME with the words \"MSG\"", - "Hi NAME, I'll \"MSG\".", - "I need to reply to NAME's email with the message \"MSG\"", - "I need to respond to NAME's last email sent to me and tell her, \"MSG\".", - "I need to see NAME's email, please reply \"MSG\"", - "I need to send an email to NAME letting her know I will \"MSG\".", - "I want to reply to NAME by saying \"MSG\"", - "I want you to reply to NAME and send \"MSG\"", - "I would like to create the message \"MSG\" and use it to reply to NAME's email.", - "I'll \"MSG\", NAME.", - "I'm almost done here, NAME. I'll \"MSG\".", - "In my inbox, there should be an email from NAME, respond and tell her \"MSG\".", - "In my inbox, there should be an email from NAME, respond and tell him \"MSG\".", - "Let NAME know I think it \"MSG\"", - "Locate NAME's email from today and send back \"MSG\".", - "NAME's email needs to be responded to with \"MSG\".", - "Open email and go to my inbox. Find the last email from NAME. please reply back, \"MSG\".", - "Open the email by NAME and reply \"MSG\"", - "Please find NAME's last email and send him the answer, \"MSG\".", - "Please find NAME's recent e-mail to me and respond to her with \"MSG\"", - "Please open my inbox and search for the email that NAME sent me. Please write her back, \"MSG\".", - "Please reply \"MSG\" to the most recent email from NAME.", - "Please reply to NAME by saying \"MSG\".", - "Please reply to NAME's email, \"MSG\"", - "Please reply to the email from NAME with \"MSG\".", - "Please send NAME a reply of \"MSG\".", - "Pull up NAME's e-mail to me and reply with \"MSG\".", - "Replay to email from NAME with text, \"MSG\".", - "Reply \"MSG\" to the email from NAME", - "Reply to NAME with a text, \"MSG\".", - "Reply to NAME's email \"MSG\"", - "Reply to NAME's email \"MSG\",", - "Reply to NAME's email with \"MSG\"", - "Reply to NAME's email with \"MSG\".", - "Reply to NAME's email with the text, \"MSG\".", - "Reply to NAME's email with, \"MSG\".", - "Reply to NAME's email, \"MSG\".", - "Reply to NAME's email: \"MSG\"", - "Reply to NAME's most recent email \"MSG\"", - "Reply to the email from NAME with, \"MSG\".", - "Reply with the message \"MSG\" to NAME's email.", - "Respond \"MSG\" to the email in the email app sent by NAME.", - "Respond to NAME's email with the text, \"MSG\".", - "Respond to NAME's most recent email with \"MSG\"", - "Respond with \"MSG\" to NAME's email from Tuesday.", - "Say \"MSG\" as a reply to the email from NAME.", - "Say to NAME \"MSG\"", - "Send \"MSG\" to NAME.", - "Send NAME a text, \"MSG\"", - "Send NAME an email saying, \"MSG\"", - "Send NAME email saying \"MSG\"", - "Send a reply saying \"MSG\" to NAME's email.", - "Send a reply to NAME saying \"MSG\".", - "Send a reply to NAME's email with the words, \"MSG\".", - "Send a text to NAME, \"MSG\".", - "Send an email in response to the email from NAME by sayhing \"MSG\".", - "Send email to NAME saying, \"MSG\"", - "Send, \"MSG\" as a response to NAME's email.", - "Send, \"MSG\", to NAME.", - "Simply tell NAME \"MSG\"", - "Siri please reply \"MSG\" to NAME's message.", - "Siri, Email NAME, \"MSG\".", - "Take NAME's email and reply with \"MSG\".", - "Tell NAME \"MSG\"", - "Tell NAME \"MSG\" as a response to her email in this email app.", - "Tell NAME \"MSG\" in an email.", - "Tell NAME I said \"MSG\"", - "Tell NAME i said \"MSG\"", - "Tell NAME it \"MSG\" in response to his email.", - "Tell NAME that \"MSG\"", - "Text \"MSG\" to NAME", - "Text NAME \"MSG\"", - "Text NAME, \"MSG\"", - "Thanks NAME, I'll \"MSG\".", - "To NAME respond \"MSG\"", - "Will you respond to NAME's email and tell her that it \"MSG\"?", - "Will you respond to NAME's email and tell him that it \"MSG\"?", - "email NAME and reply with \"MSG\"", - "find NAME mail and reply with a \"MSG\"", - "please send a reply email to NAME with \"\"MSG\" \"", - "pull up NAME email and responds with \"MSG\"", - "pull up NAME's last email and write back \"MSG\"", - "reply \"MSG\" to NAME", - "reply to NAME mail with \"MSG\"", - "reply to NAME saying \"MSG\"", - "reply to NAME's last email \"MSG\"", - "reply to NAME, \"MSG\"", - "respond to NAME with \"MSG\"", - "search contact NAME and text him \"MSG\"", - "send \"MSG\" to NAME", - "send \"MSG\" to contact NAME", - "tell NAME \"MSG\"", - "write to NAME \"MSG\"", - "write to NAME replying with \"MSG\"" - ], - "test":[ - "Alexa please email NAME \"MSG\" in reply to his last message.", - "Email NAME and say \"MSG\".", - "Find NAME's email and reply with \"MSG\".", - "Find NAME's email and say \"MSG\"", - "Find NAME's email and text him \"MSG\"", - "Find NAME's email, and reply by text with \"MSG\".", - "Find the email from NAME and simply reply \"MSG\"", - "For the email from NAME, answer it \"MSG\"", - "Go to email and find the last email NAME sent to me. Respond back that I will \"MSG\".", - "NAME, I;ll \"MSG\", Just have to finish up here.", - "Open an email for NAME and say \"MSG\" and send", - "Please reply to my NAME's most recent email with \"MSG\"", - "Respond to NAME's email by texting \"MSG\".", - "Respond to NAME's email with, \"MSG\".", - "Search NAME in my contacts and send her a text saying \"MSG\"", - "Search for the last email from NAME and respond with \"MSG\"", - "Send \"MSG\" in an email to NAME.", - "Send \"MSG\" to NAME's most recent email", - "Tell NAME I'll \"MSG\" in response to her email.", - "find email from NAME and respond with \"MSG\"", - "please reply to NAME's last email with \"MSG\"" - ] - }, - "important":{ - "train":[ - "Can you find the email from NAME and label it as important?", - "Can you mark the email from NAME as important, please?", - "Find NAME's email and flag it for importance.", - "Find NAME's email and make important.", - "Find NAME's email and mark it as important.", - "Find NAME's email and mark it important", - "Find NAME's email and mark it was important.", - "Find an email by NAME and mark it as important.", - "Find email from NAME and mark as important.", - "Find email from NAME in primary and mark as important.", - "Find email in primary inbox from NAME and mark as important.", - "Find me the email from NAME that is important.", - "Find the email from NAME and mark it important", - "Find the email from NAME and mark it important.", - "Find the email from NAME so that you can mark it as important.", - "Find the email from NAME that is marked as important.", - "Find the important email from NAME", - "Flag email from NAME as important.", - "I need the email from NAME to be found and marked important.", - "I need to find the email from NAME and classify it as important", - "I need you to Mark all the emails from or by NAME and mark them as important.", - "I want to make the email I received from NAME an important message.", - "I want to set the message from NAME as an important email.", - "I want to star NAME's email as important.", - "I would like to see the important email NAME sent me.", - "I'm looking for an email from NAME and I need it to be marked important", - "Important mark on emails by NAME please.", - "In my inbox, find the email from NAME and mark it as important please.", - "In my inbox, find the email from NAME and mark it as please.", - "In the email app, the email from NAME in the inbox should be marked important.", - "Just mark all the emails by NAME as important.", - "Locate NAME's email and mark as important.", - "Locate NAME's email and mark it important.", - "Locate NAME's email from today and mark it important.", - "Look for email sent by NAME and mark it as important.", - "Make NAME's latest email important", - "Mark NAME's email as imporant.", - "Mark NAME's email as important in the email app.", - "Mark NAME's email as important.", - "Mark NAME's email important.", - "Mark all emails written by NAME as important.", - "Mark all of the important emails from NAME as unread.", - "Mark an email from NAME as important", - "Mark email from NAME as important.", - "Mark emails from NAME as important.", - "Mark the email from NAME as important.", - "Mark the email from NAME in this email app as important.", - "Mark the email that I sent to NAME this morning as important.", - "Mark the last email NAME sent as imiportant.", - "Mark the unread email from NAME as important.", - "NAME's appontment needs to be marked important.", - "NAME's email needs to be found in the email app and marked important.", - "NAME's email needs to be marked important.", - "NAME's email needs to be set as an important message.", - "NAME's email should be marked as important.", - "Please find the email NAME sent me and file it as important", - "Please find the email from NAME and mark it as important.", - "Please flag NAME's email as important.", - "Please hunt for NAME's important email.", - "Please mark all emails by NAME as important.", - "Please mark email from NAME as important.", - "Please mark the email by NAME as important.", - "Please mark the email from NAME as important.", - "Pull up NAME's email and mark it important.", - "Pull up the email by NAME and mark it important.", - "Save NAME's email as important.", - "Search for an email from NAME and tag it as important", - "Search for an email from NAME in this email app and mark it as important.", - "Set the email from NAME as an important email.", - "Star the email from NAME.", - "Tag NAME's email as important.", - "The email from NAME in the inbox of the app needs to be marked important.", - "The email from NAME needs to marked as important.", - "You can find NAME's email in the email inbox app and mark it important.", - "You must find NAME's email and mark it important.", - "change NAME's email to being important", - "change the email from NAME to important", - "find NAMEs email and mark it as important", - "find the email from NAME and mark it important", - "in my email there is a message from NAME that needs to be marked as importnat", - "in my inbox mark the email from NAME as important", - "mark NAME's email as important", - "mark NAME's last email as important", - "mark all emails in primary with NAME", - "mark any of NAME's incoming emails as important", - "mark the email from NAME as important", - "mark the email from NAME with a star", - "please put important on NAME's email", - "search for NAME in my primary and mark important", - "show NAME's email as important", - "the email from NAME is important please mark it that way" - ], - "test":[ - "Find the email NAME sent yesterday and mark it as important.", - "Find the email by NAME and mark it as important.", - "Flag NAME's email as important.", - "Make NAME's email important.", - "Make NAME's emails marked important.", - "Make the email from NAME an important message.", - "Mark emails in Primary from NAME as important.", - "Mark the email I sent to NAME this morning as important.", - "Mark the emails from NAME as important.", - "Search and find NAME's important email.", - "The email from NAME needs to be marked important.", - "There is an email from NAME in my inbox, will you mark it as important?", - "find NAME's email and mark it as important", - "important email in primary inbox are from NAME.", - "mark the last email from NAME important", - "put a star on NAME's email", - "star NAME's email" - ] - }, - "delete":{ - "train":[ - "Can you go to my email account and delete emails from NAME?", - "Can you please list emails from NAME and then delete them?", - "Delete NAME's email.", - "Delete NAME's message.", - "Delete all emails by NAME.", - "Delete all emails that I have sent to NAME", - "Delete all messages from NAME.", - "Delete all read messages from NAME.", - "Delete message NAME from email inbox.", - "Delete the email I received from NAME.", - "Delete the email NAME sent me.", - "Delete the email from NAME", - "Delete the email from NAME, please.", - "Delete the email from NAME.", - "Delete the email that NAME sent yesterday.", - "Delete the emails from NAME that are not marked as important.", - "Delete the message from NAME.", - "Find NAME's email and delete it", - "Find NAME's email and delete it.", - "Find NAME's email to delete it.", - "Find NAME's email to me and delete it.", - "Find and remove the email from NAME.", - "Find email from NAME and delete it.", - "Find my email from NAME and delete it.", - "Find the email from NAME and delete it.", - "Find the email from NAME in my inbox and delete it.", - "Find the new email from NAME and delete it.", - "Find today's email from NAME and get rid of it.", - "Get rid of NAME's email.", - "Get rid of my message from NAME.", - "Get rid of the email I got from NAME.", - "Get rid of the email from NAME.", - "I don't want NAME's email in my inbox.", - "I don't want the email from NAME anymore.", - "In my inbox, there is an email from NAME and it needs to be deleted.", - "Jend the email from NAME to the trash.", - "Locate NAME's email and delete it.", - "Locate NAME's email from today and delete it.", - "Locate NAME's recent email and delete it.", - "Locate and delete the email from NAME.", - "Locate the email from NAME and delete it.", - "NAME's email should be deleted from the inbox.", - "Please delete NAME's email", - "Please delete NAME's emails.", - "Please find NAME's email in the inbox and delete it.", - "Please find the email from NAME and delete it.", - "Please get rid of the email from NAME.", - "Please pull up email and then delete NAME's email to me?", - "Put the email from NAME in the trash.", - "Search for NAME's email and delete it", - "Search for email from NAME and delete it.", - "Search for the email from NAME now and delete it", - "Search for the last email NAME sent and delete it.", - "Search my inbox for emails from NAME and delete all of them.", - "Select NAME's email and delete.", - "Take NAME's email out of my inbox.", - "There is an email that needs to be deleted by NAME.", - "Throw away NAME's email.", - "Trash that email from NAME.", - "WiIl you please find the email from NAME and delete it?", - "delete the last email from NAME", - "delete the message from NAME in my email", - "delete the most recent email from NAME", - "delete this email from NAME", - "find NAME's email and delete it", - "find NAME's last email and delete it", - "find the email from NAME in my inbox and delete it", - "get rid of this email from NAME", - "open email and delete the message from NAME", - "please delete the email from NAME in my inbox", - "pull up NAME's last email and delete it", - "put this email from NAME in the recycling bin", - "there is a message from NAME in my email that needs to be deleted" - ], - "test":[ - "Can you please find and then delete the email from NAME?", - "Delete NAME's email from today.", - "Delete email from NAME.", - "Delete email message from NAME.", - "Find NAME's email and delete.", - "Find and delete the email from NAME.", - "I want you to delete NAME's email.", - "If NAME sent me an email, delete it.", - "May you delete all emails from NAME?", - "Please delete the email from NAME", - "Please delete the email from NAME.", - "Search for and find the email from NAME and delete it.", - "Select the email with the author NAME and sent it to trash.", - "The email from NAME needs to be deleted." - ] - } -}; diff --git a/miniwob-sandbox/turk-www/common/special/email-inbox/delete.png b/miniwob-sandbox/turk-www/common/special/email-inbox/delete.png deleted file mode 100644 index ddf909afd706ce98f37b3c1ab000c0cfd943a993..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1713 zcmZ`&dpJ~S82`>7L|MwMtjaz~VPZs@)ih>jGPA-MGt89{W*Wt~OwS;Xrm~xK@f3D# zA+{7MX|YPTQMp7(OA`1F{k9>v=}UbBd;vIG68rGA=MxN zo816-AqIe00DyHuVMDMF062Z-IyMaw!gxG%ak*i9J`6&+TrL*qaG0UhF!(?(xN$IC z$AK-Oumy{CB#uY~Q>IvqiJcC53~&5KzO@BQP?0{C~Bh@iZdPi9kP4 z5_JWSz~hn0WDJ2c)TE9K5spA05{Xbvod=;%$bnW-H(YF}SS&_Gu-6D}U~Aeu?1C3Y z!2Doc&^bC~dIg7vf3AKxsjkEk3Q@k!A>=a{42%Y+V-De2&{#*t-Uj?YgK4|M;8v+% z1%`mZghK8}x@xTUEcuGRssPt}q$Uc1Hea^mK)4B}NPjPoA-bS{hRNCD) z^EYNy=-Uu$u6B>kSZ4L<*lJsk^?{^ZqxpN*Tqqy!dZty=?C+g!%Da|)B=f+7IotZH z62(tHEZHAa)NFXAPw~rdv%}h-{I&Fs-z0R6toQe$f-Hlt=`b-)p!1U9-{n4fBNV4Y zDG)SNFal_XeI}OH_?2Qd3G#3a45}}idv!Q}B0@v9X$~s=J7PhX|7D_3Cl#w zM0wtDc`d#~m2HyfoSl6nzUP~*WvN=c46nRiwx+G+`OlY9Ulq%jE9DlM-T^Fbz*=7H zc94{`OBjfR^w_4}Wfqqf$J(^llv3@8Y-MuxT~>4*eW~T%pf&)N{!N zQv`LAaS3^b5gk1BdLVAf&Obr1AeY5ls3h(wEMIFEAv)h2Y*$)$B|W<6syF2&Ep^z_ zZeM(BMK@R59j(`OqvfKYwewz_`_0&{aG61QAF?+^+!EN_Q`e2F-r25g$`~irT#iWp z)$qof+4eZWSiu6T-e&VRwT=n9Go{IFeQ(LZyQa^zOJ2%vKMWn!I09+_n6ij(DQkb^ zd$VI;34Ke^6XbYT`bOb+pvH%i*_lsfP|BYpQm&de(&78`^>@aZVAIx7p91TKRb(?0 zm6mzhx-!qqoU(v)DPy!VFHwb9B?Q;u_aCsp4@{NpEC};fbF2~q>Z+Vg5yg&Y`HM2< z@b^rzDVyV$NhqJHB@g?N`n{@e`+9DUyn4KJV*EmXKVnuOP?0jqBgSvP)piz9>_@V? zubB@!l&m2UAG@2iMuFfzQYkO-g+YYOV0*VVP%Pme@z^$TYrwNS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Sk<_qw#P}GO)!+Tgz`$tZ>EalYaqsBO)4a_F0xSX6 znVMeyOFA8dw@khhEMlo}9}Yvu|Tw_p0(5+ZO&=t1CXRt$VzX!OKR# zp}U=N#YY7OTREl&N0=G*R1`Cq-;+4dZ_euRh?j9wg>i$)Jr0F_^BH-U{@I83nf>EG zR#0!Zd}Y@JV9=_TxJHzuB$lLFB^RXvDF!10Lo;1NLtR6Q5F;ZiLlY|lLu~^?D+2>b zm5vK28glbfGSez?YsjcH$N_4Q1lbUrpH@mmtT}V`<;yx PP!WTttDnm{r-UW|DHh3I diff --git a/miniwob-sandbox/turk-www/common/special/email-inbox/left-arrow-white.png b/miniwob-sandbox/turk-www/common/special/email-inbox/left-arrow-white.png deleted file mode 100644 index 966d968ac69678536d3365a9dbb180947941028a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Sk<_qw#8erUa|kd2h1PnyIEG~0dwX*??;!^f*1&G9 zA4{Hie9;eN+dpBBSQ`U7hvepy`?xRVFwT3-`<>6Z{qQvA*>drDXYV&;cNjcl)LS$8 zC(A=!{sKJ}pC|KMLXG$fv=q)f(dLN%#Na;dq|Ke1sh_JqKRY|yJpbOF%Foa0&Gx_e z!v4R6T}Z`af`Vfc3#X7uh+vg%n7L4u-F0(;L$f_y>)HZLqiPjG&Xozbd?=fBV!uGp zgcy VqV(DCY(R<_JYD@<);T3K0RT=0nO*<@ diff --git a/miniwob-sandbox/turk-www/common/special/email-inbox/left-arrow.png b/miniwob-sandbox/turk-www/common/special/email-inbox/left-arrow.png deleted file mode 100644 index 9c16b9b9ebf78ab8c944c52fd7d337d859ad5ebf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 693 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Sk<_qwgmq=PWK1j=7#N#9T^vI)?p>Yf?RVHfppCuV zddl@l$4wt~T~?Uz!ZV8VNZ|?I2@%^;BIRNWo78laR8(Z_AN?;+%2&ViJyS+~o}}QR zs5$pTyMy2F-}{AiG0UTmflM4VEeve-5e%*J8V!f}g&ZESb0mB`$dpmDfI&`P<-h@U zj)D*Om~{3mXW)OYdf-SkN5MxwMzed02aZRx20hSa%KWgGY2}9pw*+Q1UfixQ_t2F7 zM5)%5^<6)?EdTWF+X}3{G78%s>8_Ku%i9O^(xhQka~zU);H{U_<7X z+9Hcz4~o8A)ZJtC&sH!uHp6`07N=w1?ROuwx*Bj=<~cBiR7+eVN>UO_QmvAUQh^kM zk%6I^uA!l>p+$(HrIm@Pm64^kfuWUwLGI-_=TJ1{=BH$)RpQnl)2C7d)F276Aviy+ pq&%@Gm7%=6TrV>(yEr+qAXP8FD1G)j8!4b722WQ%mvv4FO#m#w0@MHi diff --git a/miniwob-sandbox/turk-www/common/special/email-inbox/reply.png b/miniwob-sandbox/turk-www/common/special/email-inbox/reply.png deleted file mode 100644 index 48183ebd24d35cbf07e4a9d566f6cb81f343eb18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1137 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Sk<_qw#CX*-BCLTnGTVE)IEG~0dppD5LnKh<`2Kvg zySj==`fZWy#scf#vIz>wa+&CyXfAz`a^l>t?cLL@Duj2<$a}Y+DR|M6qYHMqv^(73 z%T0c&I(b2_PEoN}fwA`OO4)Dyeb&a-ug~q<`NMYa{p$XobwAGje*5np!|hEGdp71e z^}fFJaO%q)KN;pI{*K#o-1J@V@~c7&{`_pgzcY5TGR%{!vXy?5%(q~JerE~eox4l7 zU1u#QpS&>WHna5>u@*gp4cE^!Txd-c`zFQk=1nN$ow;w`Fiy($-!p4>^2uerivB-c zVz~aB3Oc+v(AzYBVgpO3P7tS%iqc7;xyy|gZq;STIT;tby25dOv7k$hJumZ&jQ#6G zeJ))*Ad(Ts(BIxSBX53S4@=IygQ2nwlWr|H@n6sK?nzn`LqoKJ^3Jab`(9{Q8U8S1 zZ_SG8dozsxbPxIVEJ`tZkIhy&SDMH z7uH>zw327?TlOI5e^2Lpmd;G7;0jvxVAW9rh7S!IQB48wYgF`>=&LQNND*8v$t)10 zdoT5C@S3Go|6{gs)!3C7v0E(FaQ@Fx+%ox@iAr?%qDz4x-fUB*uf17ez42sO)^nLJ z0xPFxpLBd<bo}SHc zZoVfc6!OXiKN5IdT&6v?IN0a$`4jJ5w-;*L{>=aQwPMXy zFWFi1Gmfk%?#wyo(mC_S2e==dxV!CI*k%ie?$Zp)nQ%0UV>nrw<1lkQwM$X=lOnfIYl3WLJJN1GJ< zbLK7F%ywH~A)D@}%MW}C8TMBHI}*5V#;fEz?410CZW9~Rj>Q`8UEh2Q25z4lVNnV#}fha@6?3ot%&+~SzV)zxwm+tf} z-GOaK<5&HYXN(=rou2xy^U?gxx|hGmtGF;75PE#y9GJUQOI#yLQW8s2t&)pUffR$0 zfuWhMp`os!MTn7+m7%efv4ysQp_PHbgZCF_qG-s?PsvQH#I0fCrc70!21$?&!TD(= p<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6cwc)I$ztaD0e0su>e+WG(h diff --git a/miniwob-sandbox/turk-www/common/special/email-inbox/search.png b/miniwob-sandbox/turk-www/common/special/email-inbox/search.png deleted file mode 100644 index e5386cfff01c47651d92b5653d0e4b9abe3d03df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1183 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Sk<_qwm~_q0IGe0wU|`Pmba4#Hxc4@~(PN6EMD71o z7pFa4Sae&=)2h;QItypl3g_uAClBb|`*P#x_lbvzU| zI-$@U+4ErUcF8mRjMp~IetajvFvapfw9bF?M^|eOna+A3ef#CxwH2z>J5yBl_44o8 zSpLa#+1ex9Cng<@J8}PM*JK+{zYjhZh5dieJ&N|&e9tfVrp=qwf35k;HvdzOXPEZ#8XX?P zq*c3RS6oVe{{Mk0bDE_5&xneI>;>W6hLKj~t#=RZNmy@?ryRd_>s(K{tzHk*uDiBO z;r-hgR`d8xdD5NB-~8ulZgui;)F2V5(7< zqF|0guEgSd?*rJ}j#zAv^<*|)_@t5N3dX`=H%NcFE&iEUvzhpUF06g3y;|y&wpMv^-r;Gt96;= zoeNBBKF=%s_|^K6_iiqxgf6RjtlL%1va|jDtYiEm7s@J4ib<1S-Bq;iN6{yrsME|0 z=S3=Koh+Ua>m%|n!RXZK8jW3XjGvE{E1h8Ps_Jds;c=d*{~AIU@UaM=(gFuR0>U z_Q-Ol+ZTCuL@`7h7iXLLi!1z{|`1@`)(k?mt*TK?#9v#b8Uekj86AAi2u*-LZFXFLSvMb#45h?11Vl2ohYqEsNoU}Ruu zrfX=ZYiJQ-U}R-tYGrDwZD43+U~sEoVHt{s-29Zxv`X9>R_jWh0&0*1*$|wcR#Ki= ml*&+EUaps!mtCBkSdglhUz9%kosASw5re0zpUXO@geCyd2K)s8 diff --git a/miniwob-sandbox/turk-www/common/special/email-inbox/send.png b/miniwob-sandbox/turk-www/common/special/email-inbox/send.png deleted file mode 100644 index d8d87e35271ff67c77338b732f1a683e54f95683..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 772 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Sk<_qw8CWG6zl#JiFfd;7ba4#HxcBy^zuzGT5w;Kc zS>kQNE3DhRU+`Y35ElM_=YX`pGPO&}9+oZMto#q|wLWmVDZ$xmBW~)l;e^lgvpzk0 zR5`y)|30x-Zn%EmqUMghmBf3yJ2fqg9b$|Ow%sLFrT;{D7#L2hlwLXc zb^*{Wce%e-)f#fLF);9GF5NcY;S^)Tc86)qU9Xf2rB7%vJg^XuWq4p95bF?F8?=}& zUm=a5!Bzn1qbDa^4heghIt1!8-e6#8bI4(2n4qj&S|-jH5OUPv2LpqFi*=qn{~<<( z#|}RjUB7Bv+dlm?GC|tbLsp>h&$;m0{G~;6RE8byp9T9&N*7mBN z^awh*a`V^phAlb*AAfJ3@q6-O=aV%Ghu(-^x)p7k74a=yPr&&=QoY{x z7NZaDW!pJtcmo4jwZt`|BqgyV)hf9t6-Y4{85o-B8XD>vT80=HSQ(gF8JTDs7+M(^ zaOi(&M$wR)pOTqYiCaTuk&iu4gCxj?;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xh Rq=1STJYD@<);T3K0RR>N7hnJY diff --git a/miniwob-sandbox/turk-www/common/special/email-inbox/star-clicked.png b/miniwob-sandbox/turk-www/common/special/email-inbox/star-clicked.png deleted file mode 100644 index f28d87bef62f6f952c453e57acf92a052a3142d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1116 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 E0EoQSDgXcg diff --git a/miniwob-sandbox/turk-www/common/special/navigate-tree/images/file.gif b/miniwob-sandbox/turk-www/common/special/navigate-tree/images/file.gif deleted file mode 100644 index d1a7d325bb06b87abad107285151b88360196d12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109 zcmZ?wbh9u|e$hLqR7;@J|!)0`7wu!G@<#922l1_o;Y D7Ck34 diff --git a/miniwob-sandbox/turk-www/common/special/navigate-tree/images/folder.gif b/miniwob-sandbox/turk-www/common/special/navigate-tree/images/folder.gif deleted file mode 100644 index 2b31631ca2bfec3a8afb1bfdd4f8ed4c5bcc3a18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106 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 diff --git a/miniwob-sandbox/turk-www/common/special/navigate-tree/images/treeview-famfamfam.gif b/miniwob-sandbox/turk-www/common/special/navigate-tree/images/treeview-famfamfam.gif deleted file mode 100644 index c568d36eaa8595968792893ac7a24182889c2bd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 545 zcmV++0^a>cNk%w1VPF7-0Q4RJ|I)QFYZy6mAwqK@QiL&coMXL00KG~8)>;V0S|Q$R zA@_3t_j?$GwPTFEW0bXf?}S44t#g#MjHSJtwbqoi#;v*1q~4{3=dFzAwUqC*l-B3H z|Ns900000000000A^8La0015UEC2ui0AK)x000I5peK%GX`X1RuB_L+oeH;fZQo>! z?|g6TzMxPD92$?vq;kn@I-k&}bSknG3WN!Do2oP@8wcUREt3co3di9PnBQoQoDz7O z2aX1((YBW*1P&BpWPV%{0|5gPhK-Jokdcy;l$BIPmQ9$MH8V0VoI9JLNTZ~usHv)} ztgVh22?hxlt~?nE8UPUr8MQbG8W0Q&5DC6F1^{v#3nx_Vo+_WAnz{QY)TShVo-0)`MjG-}wm*%xO{oqc%p z@L8x2kRXHn5Gi8hucOD0AVZG8*N)^W81?3!VKb?YWjdGWV2Yec^Blk|{RoB`b1==C zJ`B}3MS{ZYIX6t j8*ErHesty7bt{dUHGX}o{pDwwvg_BdW6Pd>A_M?CkIn!l diff --git a/miniwob-sandbox/turk-www/common/special/navigate-tree/images/treeview-gray-line.gif b/miniwob-sandbox/turk-www/common/special/navigate-tree/images/treeview-gray-line.gif deleted file mode 100644 index 170382cd94f66273625d0a261f6031c1b7bd5442..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1010 zcmV_vme;WqnScE{mod7YlN=ke>g|NgfZ*auiBXh?Xdn8+CO z<){X!*JvXp$#*%JiMYAgNr@9#`8X;XI{BGein@x~s`<(p>p2U`Lwf3(3%e`ZOZ#hk zgnMgR%o?nkT&sMn>&y%7D-BF7JcBHwz0KY2{S6*oJ#0*#ZT^fNtv<~@j-3v_F5gc7 zZe)Lrzi-LxzYNe?Gk5y>1td5yUqXJw5dIVR(BVOa5h+e&Sk5BEi~j~UdX)H4Bgl~= zOJY1{vLnfp@mS7tSr6ttl_?w6%qX*<&72Eq@~rri<4&JMhZ@CM6zNfvK|?lOnUrbN zmQ!C=jd^wEQmR|6cE$QttJ1Mj!|Ei<6|GmbVA+Z->-H?%xoPRHwc8f&+q!)3_Rafu zuiwFd2@5Wa_^@KRff*ZioEY-ro@Ob>wX9dNX3UK_KlU6M^kkq}H`f}>bqD>1` z{hIaa&a*$)4t;xcY}&hR_s0EOx6{(Ci|2Md9CdKyP?aZ#{ap5P!x{{6(Q`~R;FAbHohr(b^o5;$Of z3G(M0g8vElpo0f07$JodG8mqP5MF5Dh8{}zp@txiC}N2io@Zi*B%T-_i}SfyAB^{@ zm|}x9W+-EUHs-h>jXYNPBZoWsNaT=4;#ee-N1_;Hh)u4TB$H9LIOU5~#(3q7OH#R| zm0e=_rIt#LDP@>ClF22SUaAQun_`yf=9zHLnI@fU+Sw+aZ`R4@oqgu{=bnBJ3Miq1 z7K-Shipm)%qlP+~D5Q(_XeOm`TB@g{nqt~0r;mCXDX5bIndPRWR(k5Csb(swsY0sy zDyyq@I_sykhI;F$vC_J$t-a#ErLxJw`mC(W8awT=)JDrI zw!Uf$EVsfo3oW?PdduvM=d7x%lo&thN4D3oyCY zx~p%$0TVoMz6tZ|EW-Z^{IJ6ZD;zP!6EhsH#SmX?@WviX{ISL$k1TS@7@uo$$0VN| zFU#|~TrbS`s+@AeHD@ey!8Yf-FwHzy{4>Wp`%LuEM&n#G(nq5lbjVGwoHWx>w>6T$45OcsIB zs$yz@TBW(I_c`;5v*R+^Jl3MQ>u=lr-leE<+x%S5TrACNepI6Nw{SOTc!<~rMw57= zCD^F(7?rk*bQp+PVrGD2quO@=9BXE34bO*YJz5 z`&TIGYm1z$yqtx~Y?(0Jiskg|XJBLkh%b)-NJDpF#h5!Hn diff --git a/miniwob-sandbox/turk-www/common/special/navigate-tree/images/treeview-red-line.gif b/miniwob-sandbox/turk-www/common/special/navigate-tree/images/treeview-red-line.gif deleted file mode 100644 index 8602e2d981d62149ff675cc0b77dc95bcc42cb12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1010 zcmV%gu001HR1O)&90RSuj0000G0PqF?0{@I3fXm9C z;BykuYA)85OAi6!I8K;#9-x^_vme;WqnScE{mod7YlN=ke>g|NgfZ*auiBXh?Xdn8+CO z<){X!*JvXp$#*%JiMYAgNr@9#`8X;XI{BGein@x~s`<(p>p2U`Lwf3(3%e`ZOZ#hk zgnMgR%o?nkT&sMn>&y%7D-BF7JcBHwz0KY2{S6*oJ#0*#ZT^fNtv<~@j-3v_F5gc7 zZe)Lrzi-LxzYNe?Gk5y>1td5yUqXJw5dIVR(BVOa5h+e&Sk5BEi~j~UdX)H4Bgl~= zOJY1{vLnfp@mS7tSr6ttl_?w6%qX*<&72Eq@~rri<4&JMhZ@CM6zNfvK|?lOnUrbN zmQ!C=jd^wEQmR|6cE$QttJ1Mj!|Ei<6|GmbVA+Z->-H?%xoPRHwc8f&+q!)3_Rafu zuiwFd2@5Wa_^@KRff*ZioEY-ro@Ob>wX9dNX3UK_KlU6M^kkq}H`f}>bqD>1` z{hIaa&a*$)4t;xcY}&hR_s0EOx6{(Ci|2Md9CdKyP?aZ#{ap5P!x{{6(Q`~R;FAbHohr(b^o5;$Of z3G(M0g8vElpo0f07$JodG8mqP5MF5Dh8{}zp@txiC}N2io@Zi*B%T-_i}SfyAB^{@ zm|}x9W+-EUHs-h>jXYNPBZoWsNaT=4;#ee-N1_;Hh)u4TB$H9LIOU5~#(3q7OH#R| zm0e=_rIt#LDP@>ClF22SUaAQun_`yf=9zHLnI@fU+Sw+aZ`R4@oqgu{=bnBJ3Miq1 z7K-Shipm)%qlP+~D5Q(_XeOm`TB@g{nqt~0r;mCXDX5bIndPRWR(k5Csb(swsY0sy zDyyq@I_sykhI;F$vC_J$t-a#ErLxJw`mC(W8awT=)JDrI zw!Uf$EVsfo3oW?PdduvM=d7x%lo&thN4D3oyCY zx~p%$0TVoMz6tZ|EW-Z^{IJ6ZD;zP!6EhsH#SmX?@WviX{ISL$k1TS@7@uo$$0VN| zFU#|~TrbS`s+@AeHD@ey!8Yf-FwHzy{4>Wp`%LuEM&n#G(nq5lbjVGwoHWx>w>8B>(^b diff --git a/miniwob-sandbox/turk-www/common/special/navigate-tree/images/treeview-red.gif b/miniwob-sandbox/turk-www/common/special/navigate-tree/images/treeview-red.gif deleted file mode 100644 index 68fc9f1c7af7bdcd3c47fbf4df33a9cda9f66cc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmV;50d@XINk%w1VPF7-0Pq3;0002>c6K581O)&90st%k0001B0EGYm0{@hcsmtvT z1(?9mh_l|P@(+fZCzhs3p6bfB?i$3h{MKf$;P(FM(&6I?BR*1ah-Ba>6T$45OcsIB zs$yz@TBW(I_c`;5v*R+^Jl3MQ>u=lr-leE<+x%S5TrACNepI6Nw{SOTc!<~rMw57= zCD^F(7?rk*bQp+PVrGD2quO@=9BXE34bO*YJz5 z`&TIGYm1z$yqtx~Y?(0Jiskg|XJBLkh%b)-NJ1n-r=Kufz diff --git a/miniwob-sandbox/turk-www/common/special/navigate-tree/jquery.treeview.css b/miniwob-sandbox/turk-www/common/special/navigate-tree/jquery.treeview.css deleted file mode 100644 index 022c513..0000000 --- a/miniwob-sandbox/turk-www/common/special/navigate-tree/jquery.treeview.css +++ /dev/null @@ -1,68 +0,0 @@ -.treeview, .treeview ul { - padding: 0; - margin: 0; - list-style: none; -} - -.treeview ul { - background-color: white; - margin-top: 1px; -} - -.treeview .hitarea { - background: url(images/treeview-default.gif) -64px -25px no-repeat; - height: 16px; - width: 16px; - margin-left: -16px; - float: left; - cursor: pointer; -} -/* fix for IE6 */ -* html .hitarea { - display: inline; - float:none; -} - -.treeview li { - margin: 0; - padding: 3px 0pt 3px 16px; -} - -.treeview a.selected { - background-color: #eee; -} - -#treecontrol { margin: 1em 0; display: none; } - -.treeview .hover { color: red; cursor: pointer; } - -.treeview li { background: url(images/treeview-default-line.gif) 0 0 no-repeat; } -.treeview li.collapsable, .treeview li.expandable { background-position: 0 -176px; } - -.treeview .expandable-hitarea { background-position: -80px -3px; } - -.treeview li.last { background-position: 0 -1766px } -.treeview li.lastCollapsable, .treeview li.lastExpandable { background-image: url(images/treeview-default.gif); } -.treeview li.lastCollapsable { background-position: 0 -111px } -.treeview li.lastExpandable { background-position: -32px -67px } - -.treeview div.lastCollapsable-hitarea, .treeview div.lastExpandable-hitarea { background-position: 0; } - -.treeview-red li { background-image: url(images/treeview-red-line.gif); } -.treeview-red .hitarea, .treeview-red li.lastCollapsable, .treeview-red li.lastExpandable { background-image: url(images/treeview-red.gif); } - -.treeview-black li { background-image: url(images/treeview-black-line.gif); } -.treeview-black .hitarea, .treeview-black li.lastCollapsable, .treeview-black li.lastExpandable { background-image: url(images/treeview-black.gif); } - -.treeview-gray li { background-image: url(images/treeview-gray-line.gif); } -.treeview-gray .hitarea, .treeview-gray li.lastCollapsable, .treeview-gray li.lastExpandable { background-image: url(images/treeview-gray.gif); } - -.treeview-famfamfam li { background-image: url(images/treeview-famfamfam-line.gif); } -.treeview-famfamfam .hitarea, .treeview-famfamfam li.lastCollapsable, .treeview-famfamfam li.lastExpandable { background-image: url(images/treeview-famfamfam.gif); } - - -.filetree li { padding: 1px 0 1px 16px; } -.filetree span.folder, .filetree span.file { padding: 1px 0 1px 16px; display: block; } -.filetree span.folder { background: url(images/folder.gif) 0 0 no-repeat; } -.filetree li.expandable span.folder { background: url(images/folder-closed.gif) 0 0 no-repeat; } -.filetree span.file { background: url(images/file.gif) 0 0 no-repeat; } diff --git a/miniwob-sandbox/turk-www/common/special/navigate-tree/jquery.treeview.min.js b/miniwob-sandbox/turk-www/common/special/navigate-tree/jquery.treeview.min.js deleted file mode 100644 index 96202d9..0000000 --- a/miniwob-sandbox/turk-www/common/special/navigate-tree/jquery.treeview.min.js +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Treeview 1.4 - jQuery plugin to hide and show branches of a tree - * - * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ - * http://docs.jquery.com/Plugins/Treeview - * - * Copyright (c) 2007 Jörn Zaefferer - * - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - * - * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $ - * - */;(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").addClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event){toggler.apply($(this).next());}).add($("a",this)).hoverClass();if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend(" -
            - - - -
            -
            - - 0 / 5 -
            -
            - Preview mode. - You must ACCEPT the HIT before you can submit the results. -
            -`; - -core.INSTRUCTION_HTML = ` -

            Instructions

            -

            Please perform the specified user interface tasks within the time limit.

            -

            You can submit the HIT after successfully completing 5 tasks.

            -

            Note: The tasks were designed for Google Chrome on desktop and will not work correctly on other browsers.

            -`; - -core.MTURK_FORM_HTML = ` - - -`; - -// create element via JS; appending the HTML template -// directly to the body will cause jQuery UI elements -// to freak out. -core.createDisplay = function(){ - var display = document.getElementById('reward-display'); - if(display === null) { - // Reward display - var newDiv = document.createElement('div'); - newDiv.setAttribute('id','reward-display'); - newDiv.innerHTML = core.DISPLAY_HTML; - document.body.appendChild(newDiv); - // Instruction - var newDiv = document.createElement('div'); - newDiv.setAttribute('id','instructions'); - newDiv.innerHTML = core.INSTRUCTION_HTML; - document.body.appendChild(newDiv); - // Turk form - var newForm = document.createElement('form'); - newForm.setAttribute('id','mturk_form'); - newForm.setAttribute('method','POST'); - newForm.innerHTML = core.MTURK_FORM_HTML; - document.body.appendChild(newForm); - if ((core.QueryString.turkSubmitTo || '').indexOf('workersandbox') !== -1) { - // Sandbox mode - newForm.setAttribute('action', "https://workersandbox.mturk.com/mturk/externalSubmit"); - } else if (core.QueryString.debug === 'true') { - // Debug mode - newForm.setAttribute('action', "javascript:alert('debug!')"); - } else { - // Real mode - newForm.setAttribute('action', "https://www.mturk.com/mturk/externalSubmit"); - } - document.getElementById('assignmentId').value = core.QueryString.assignmentId || 'ASSIGNMENT_ID_NOT_AVAILABLE'; - document.getElementById('mturkTaskName').value = core.getTaskName(); - } - core.updateDisplay(); -} - -core.updateDisplay = function(reward){ - core.wob_latest = core.wob_latest || '-'; - core.wob_scores = core.wob_scores || 0; - if (typeof reward !== 'undefined') { - core.wob_latest = +reward; - core.wob_scores += +reward; - } - - if(core.wob_latest !== '-'){ - var latestText = (core.wob_latest == 1 ? 'success' : 'failure'); - var latestColor = (core.wob_latest == 1 ? 'green' : 'red'); - document.getElementById('reward-last').setAttribute('style', 'color: ' + latestColor); - document.getElementById('reward-last').innerHTML = latestText; - } - - var total = core.wob_scores; - var totalColor = (total >= core.EPISODES_NEEDED ? 'green' : 'red'); - document.getElementById('reward-total').setAttribute('style', 'color: ' + totalColor); - document.getElementById('reward-total').innerHTML = total; -} - -core.countdownTimer = function(et){ - core.clearTimer(); - var episodeTime = et/1000; - var currentTime = et/1000; - var intervalTime = 1000; - // update the timer immediately to display the total episode - // time on start, eg. "10 / 10s" - updateTimer(); - // set an interval so that the timer text will be updated - // based on the intervalTime (ie. every 1sec) - core.CD_TIMER = setInterval(updateTimer, intervalTime); - - function updateTimer(){ - var cd = document.getElementById('timer-countdown'); - if (currentTime <= 0){ - cd.setAttribute('style', 'color: red'); - cd.innerHTML = '0 / ' + episodeTime + 's'; - window.clearInterval(core.CD_TIMER); - return; - } else { - var frac = currentTime / episodeTime; - if(frac > 0.75) { var col = 'green'; } - else if(frac > 0.5) { var col = 'orange'; } - else if(frac > 0.25) { var col = 'brown'; } - else { var col = 'red'; } - cd.setAttribute('style', 'color:' + col); - cd.innerHTML = currentTime + ' / ' + episodeTime + 'sec'; - currentTime-=intervalTime/1000; - } - } -}; - -core.clearTimer = function(){ - window.clearInterval(core.CD_TIMER); - var cd = document.getElementById('timer-countdown'); - cd.setAttribute('style', 'color: black'); - cd.innerHTML = '-'; -} - -// ################################ -// Custom getter - -core.getUtterance = function () { - var query = document.getElementById('query'); - return query.textContent.replace(/\s+/g, ' ').trim(); -} - -var previousDOMInfo = {}; -var nextRefCode = 1, nextTextRefCode = -1; -function resetRefCode() { - nextRefCode = 1; - nextTextRefCode = -1; -} - -/* Returns a nested object (dict) with all visible DOM element information. - - Special handling for Text nodes: - - Text nodes with only whitespaces are discarded. - - If the Text node is the only child, discard that Text node - and reassign its text to the parent Element. - - If the Text node is not the only child, it is broken into - pseudo-Elements with tag "t". -*/ -function getDOMInfo() { - previousDOMInfo = {} - - function getDOMInfoOfElement(element) { - if (element.id === 'reward-display' - || element.id === 'sync-task-cover' - || element.id === 'instructions' - || element.id === 'query') return; - var rect = element.getBoundingClientRect(); - if (rect.width == 0 || rect.height == 0) return; - var answer = { - tag: element.tagName, - left: rect.left, top: rect.top, - width: rect.width, height: rect.height, - children: [], - id: element.id, - classes: element.className, - }; - // Assign ref code - if (element.dataset.wob_ref !== undefined - && element.dataset.wob_eps === 'e' + WOB_EPISODE_ID) { - answer.ref = +element.dataset.wob_ref; - } else { - element.dataset.wob_ref = answer.ref = nextRefCode++; - element.dataset.wob_eps = 'e' + WOB_EPISODE_ID; - } - // Record styles - var computedStyle = window.getComputedStyle(element); - answer.bgColor = computedStyle.backgroundColor; - answer.fgColor = computedStyle.color; - // Indicate if the element is being focused on - if (document.activeElement === element) { - answer.focused = true; - } - // Indicate if the element is tampered with in this episode - if (element.dataset.tampered !== undefined - && element.dataset.tampered == 'e' + WOB_EPISODE_ID) { - answer.tampered = true; - } - // For recording demonstrations: Record the target - if (element.dataset.recording_target) { - answer.recordingTarget = true; - } - // For , also add input type and value - if (element instanceof HTMLInputElement) { - var inputType = element.type; - answer.tag += '_' + inputType; - if (inputType === 'checkbox' || inputType === 'radio') { - answer.value = element.checked; - } else { - answer.value = element.value; - } - } else if (element instanceof HTMLTextAreaElement) { - answer.value = element.value; - } - previousDOMInfo[answer.ref] = element; - // Read the children - var filteredChildNodes = [], textOnly = true; - element.childNodes.forEach(function (child) { - if (child instanceof Text) { - if (!/^\s*$/.test(child.data)) { - filteredChildNodes.push(child); - } - } else if (child instanceof Element) { - filteredChildNodes.push(child); - textOnly = false; - } - }); - if (textOnly) { - answer.text = filteredChildNodes.map(function (x) { - return x.data.trim(); - }).join(' '); - } else { - filteredChildNodes.forEach(function (child) { - if (child instanceof Text) { - addDOMInfosOfTextNode(child, answer.children); - } else { - child = getDOMInfoOfElement(child); - if (child !== undefined) - answer.children.push(child); - } - }); - } - return answer; - } - - function addDOMInfosOfTextNode(textNode, collection) { - // Break the text node into multiple nodes - // Each node only occupies a single rectangle boundary - var range = document.createRange(); - range.selectNodeContents(textNode); - var absolute_start = range.startOffset, absolute_end = range.endOffset; - var start = absolute_start; - var itr = 0; - while (start < absolute_end) { - // Binary search on the next end point - var end_lower_bound = start + 1, - end_upper_bound = absolute_end, - l = range.getClientRects().length, - end = Math.floor((end_lower_bound * (l-1) + end_upper_bound) / l); - while (end_lower_bound <= end_upper_bound) { - range.setEnd(textNode, end); - if (range.getClientRects().length == 1) { - end_lower_bound = end + 1; - end = Math.min(end_lower_bound + 5, Math.floor((end_lower_bound + end_upper_bound) / 2)); - } else { - end_upper_bound = end - 1; - end = Math.max(end_upper_bound - 5, Math.floor((end_lower_bound + end_upper_bound) / 2)); - } - if (itr++ > 1000) throwTextNodeError('Text node computation stuck in an infinite loop'); - } - range.setEnd(textNode, end); - var rects = range.getClientRects(); - if (rects.length !== 1) throwTextNodeError('Text node computation incorrect'); - var rect = rects[0], text = textNode.data.substring(start, end).trim(); - if (rect.width > 0 && rect.height > 0 && text) { - var answer = { - tag: "t", - left: rect.left, top: rect.top, - width: rect.width, height: rect.height, - ref: nextTextRefCode--, - children: [], - text: text, - }; - collection.push(answer); - } - start = end; - range.setEnd(textNode, absolute_end); - range.setStart(textNode, start); - if (itr++ > 1000) throwTextNodeError('Text node computation stuck in an infinite loop'); - } - } - - function throwTextNodeError(message) { - alert(message); - throw message; - } - - return getDOMInfoOfElement(document.body); -} - - -/* Debug: return a mapping from ref to its DOMInfo */ -function flattenDOMInfo(rootDomInfo, flattened) { - if (flattened == undefined) flattened = {}; - flattened[rootDomInfo.ref] = rootDomInfo; - rootDomInfo.children.forEach(function (x) { flattenDOMInfo(x, flattened); }); - return flattened; -} - -// ################################################ -// Record demonstrations - -/* POST submit format - -* utterance -* states: array of objects with the following keys: - - time: time elapsed - - dom: DOM structure - - action: action performed at that moment -* reward - -*/ - -var recorder = {}; - -// Add event listeners -recorder.LISTENERS = [ - 'click', - 'dblclick', - 'mousedown', - 'mouseup', - 'keypress', - 'keydown', - 'keyup', - 'scroll', -]; -recorder.setup = function () { - if (recorder.isSetup) return; - recorder.LISTENERS.forEach(function (name) { - document.addEventListener(name, recorder['on' + name], true); - document.addEventListener(name, recorder['on' + name], false); - }); - recorder.isSetup = true; -} - -// Start recording the episode -recorder.startRecording = function () { - recorder.data = {}; - recorder.data.taskName = core.getTaskName(); - var utterance = core.getUtterance(); - if (typeof utterance === 'string') { - recorder.data.utterance = utterance; - } else { - recorder.data.utterance = utterance.utterance; - recorder.data.fields = utterance.fields; - } - recorder.data.states = []; - recorder.isRecording = true; - recorder.addState(null, null); -} - -// Add a state to the recording data -recorder.addState = function (event, action) { - if (!recorder.isRecording) return; - if (event && action) - action.timing = event.eventPhase; - //console.log('Adding state', action); - var state = { - 'time': new Date().getTime() - core.ept0, - 'action': action, - }; - if (event) - event.target.dataset.recording_target = true; - state.dom = getDOMInfo(); - if (event) - delete event.target.dataset.recording_target; - recorder.data.states.push(state); -} - -// Actions -recorder.ondblclick = function (event) { - if (event.target === core.cover_div - || event.pageX >= 160 || event.pageY >= 210) - return; - recorder.addState(event, { - 'type': 'dblclick', - 'x': event.pageX, - 'y': event.pageY, - }); -} -recorder.onclick = function (event) { - if (event.target === core.cover_div - || event.pageX >= 160 || event.pageY >= 210) - return; - recorder.addState(event, { - 'type': 'click', - 'x': event.pageX, - 'y': event.pageY, - }); -} -recorder.onmousedown = function (event) { - if (event.target === core.cover_div - || event.pageX >= 160 || event.pageY >= 210) - return; - recorder.addState(event, { - 'type': 'mousedown', - 'x': event.pageX, - 'y': event.pageY, - }); -} -recorder.onmouseup = function (event) { - if (event.target === core.cover_div - || event.pageX >= 160 || event.pageY >= 210) - return; - recorder.addState(event, { - 'type': 'mouseup', - 'x': event.pageX, - 'y': event.pageY, - }); -} - -recorder.onkeypress = function (event) { - recorder.addState(event, { - 'type': 'keypress', - 'keyCode': event.keyCode, - 'charCode': event.charCode, - }); -} -recorder.onkeydown = function (event) { - recorder.addState(event, { - 'type': 'keydown', - 'keyCode': event.keyCode, - 'charCode': event.charCode, - }); -} -recorder.onkeyup = function (event) { - recorder.addState(event, { - 'type': 'keyup', - 'keyCode': event.keyCode, - 'charCode': event.charCode, - }); -} - -recorder.onscroll = function (event) { - // Scroll is super redundant; only keep the first one - if (recorder.data.states.length) { - var lastState = recorder.data.states[recorder.data.states.length - 1]; - if (lastState.action && lastState.action.type === 'scroll') - return; - //recorder.data.states.pop(); // <-- use this for keeping the last one - } - recorder.addState(event, { - 'type': 'scroll', - }); -} - -recorder.recordedEpisodes = 0; - -// End recording the episode -recorder.endRecording = function () { - recorder.data.reward = WOB_REWARD_GLOBAL; - recorder.data.rawReward = WOB_RAW_REWARD_GLOBAL; - // Add data to an input - recorder.isRecording = false; - var data = recorder.data; - recorder.data = {}; // Prevent future addition - //console.log(data); - data = recorder.compress(data); - var dumped = document.createElement("input"); - dumped.setAttribute("type", "hidden"); - dumped.setAttribute("name", "d" + WOB_EPISODE_ID); - dumped.setAttribute("value", data); - document.getElementById('mturk_form').appendChild(dumped); - if (WOB_RAW_REWARD_GLOBAL == 1) recorder.recordedEpisodes++; - // Make it ready for the next episode - core.cover_div.classList.remove('cover-transparent'); - if (recorder.recordedEpisodes >= core.EPISODES_NEEDED) { - core.cover_div.classList.add('cover-submit'); - core.cover_div.innerHTML = 'SUBMIT'; - core.cover_div.onclick = function () { - document.getElementById('mturk_form').submit(); - } - } -} - -recorder.compress = function (data) { - data = JSON.stringify(data); - data = pako.deflate(data, {to:'string'}) - data = btoa(data); - return data; -} - -// ################################ -// Wrappers - -// Wrap startEpisodeReal -core.startEpisodeReal = (function(startEpisodeReal) { - return function () { - if (core.cover_div.classList.contains('cover-transparent')) return; - recorder.setup(); - startEpisodeReal(); - recorder.startRecording(); - } -})(core.startEpisodeReal); - -// Wrap endEpisode -core.endEpisode = (function(endEpisode) { - return function (reward, time_proportional) { - if (core.EP_TIMER === null) return; - core.cover_div.classList.add('cover-transparent'); - endEpisode(reward, time_proportional); - // Delay to allow the last action to be recorded - setTimeout(recorder.endRecording, 500); - } -})(core.endEpisode); - -// ################################ -// Initial setup for MTurk - -core.checkPreviewMode = function () { - if (core.QueryString.assignmentId != "ASSIGNMENT_ID_NOT_AVAILABLE") return; - document.getElementById('preview-mode-wrapper').style.display = 'block'; -}; - -(function () { - // Pako for compression - var script = document.createElement('script'); - script.type = 'text/javascript'; - script.src = 'https://cdnjs.cloudflare.com/ajax/libs/pako/1.0.6/pako.min.js'; - document.head.appendChild(script); -})(); diff --git a/miniwob-sandbox/turk-www/core/d3.v3.min.js b/miniwob-sandbox/turk-www/core/d3.v3.min.js deleted file mode 100644 index ca05c71..0000000 --- a/miniwob-sandbox/turk-www/core/d3.v3.min.js +++ /dev/null @@ -1,5 +0,0 @@ -!function(){function n(n){return n&&(n.ownerDocument||n.document||n).documentElement}function t(n){return n&&(n.ownerDocument&&n.ownerDocument.defaultView||n.document&&n||n.defaultView)}function e(n,t){return t>n?-1:n>t?1:n>=t?0:NaN}function r(n){return null===n?NaN:+n}function u(n){return!isNaN(n)}function i(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)<0?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)>0?u=i:r=i+1}return r}}}function a(n){return n.length}function o(n){for(var t=1;n*t%1;)t*=10;return t}function l(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function c(){this._=Object.create(null)}function s(n){return(n+="")===xa||n[0]===ba?ba+n:n}function f(n){return(n+="")[0]===ba?n.slice(1):n}function h(n){return s(n)in this._}function g(n){return(n=s(n))in this._&&delete this._[n]}function p(){var n=[];for(var t in this._)n.push(f(t));return n}function v(){var n=0;for(var t in this._)++n;return n}function d(){for(var n in this._)return!1;return!0}function m(){this._=Object.create(null)}function y(n){return n}function M(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function x(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=_a.length;r>e;++e){var u=_a[e]+t;if(u in n)return u}}function b(){}function _(){}function w(n){function t(){for(var t,r=e,u=-1,i=r.length;++ue;e++)for(var u,i=n[e],a=0,o=i.length;o>a;a++)(u=i[a])&&t(u,a,e);return n}function Z(n){return Sa(n,za),n}function V(n){var t,e;return function(r,u,i){var a,o=n[i].update,l=o.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(a=o[t])&&++t0&&(n=n.slice(0,o));var c=La.get(n);return c&&(n=c,l=B),o?t?u:r:t?b:i}function $(n,t){return function(e){var r=oa.event;oa.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{oa.event=r}}}function B(n,t){var e=$(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function W(e){var r=".dragsuppress-"+ ++Ta,u="click"+r,i=oa.select(t(e)).on("touchmove"+r,S).on("dragstart"+r,S).on("selectstart"+r,S);if(null==qa&&(qa="onselectstart"in e?!1:x(e.style,"userSelect")),qa){var a=n(e).style,o=a[qa];a[qa]="none"}return function(n){if(i.on(r,null),qa&&(a[qa]=o),n){var t=function(){i.on(u,null)};i.on(u,function(){S(),t()},!0),setTimeout(t,0)}}}function J(n,e){e.changedTouches&&(e=e.changedTouches[0]);var r=n.ownerSVGElement||n;if(r.createSVGPoint){var u=r.createSVGPoint();if(0>Ra){var i=t(n);if(i.scrollX||i.scrollY){r=oa.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var a=r[0][0].getScreenCTM();Ra=!(a.f||a.e),r.remove()}}return Ra?(u.x=e.pageX,u.y=e.pageY):(u.x=e.clientX,u.y=e.clientY),u=u.matrixTransform(n.getScreenCTM().inverse()),[u.x,u.y]}var o=n.getBoundingClientRect();return[e.clientX-o.left-n.clientLeft,e.clientY-o.top-n.clientTop]}function G(){return oa.event.changedTouches[0].identifier}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nn(n){return n>1?0:-1>n?ja:Math.acos(n)}function tn(n){return n>1?Ha:-1>n?-Ha:Math.asin(n)}function en(n){return((n=Math.exp(n))-1/n)/2}function rn(n){return((n=Math.exp(n))+1/n)/2}function un(n){return((n=Math.exp(2*n))-1)/(n+1)}function an(n){return(n=Math.sin(n/2))*n}function on(){}function ln(n,t,e){return this instanceof ln?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof ln?new ln(n.h,n.s,n.l):_n(""+n,wn,ln):new ln(n,t,e)}function cn(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(a-i)*n/60:180>n?a:240>n?i+(a-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,a;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,a=.5>=e?e*(1+t):e+t-e*t,i=2*e-a,new yn(u(n+120),u(n),u(n-120))}function sn(n,t,e){return this instanceof sn?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof sn?new sn(n.h,n.c,n.l):n instanceof hn?pn(n.l,n.a,n.b):pn((n=Sn((n=oa.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new sn(n,t,e)}function fn(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new hn(e,Math.cos(n*=Oa)*t,Math.sin(n)*t)}function hn(n,t,e){return this instanceof hn?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof hn?new hn(n.l,n.a,n.b):n instanceof sn?fn(n.h,n.c,n.l):Sn((n=yn(n)).r,n.g,n.b):new hn(n,t,e)}function gn(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=vn(u)*Ka,r=vn(r)*Qa,i=vn(i)*no,new yn(mn(3.2404542*u-1.5371385*r-.4985314*i),mn(-.969266*u+1.8760108*r+.041556*i),mn(.0556434*u-.2040259*r+1.0572252*i))}function pn(n,t,e){return n>0?new sn(Math.atan2(e,t)*Ia,Math.sqrt(t*t+e*e),n):new sn(NaN,NaN,n)}function vn(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function dn(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function mn(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function yn(n,t,e){return this instanceof yn?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof yn?new yn(n.r,n.g,n.b):_n(""+n,yn,cn):new yn(n,t,e)}function Mn(n){return new yn(n>>16,n>>8&255,255&n)}function xn(n){return Mn(n)+""}function bn(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function _n(n,t,e){var r,u,i,a=0,o=0,l=0;if(r=/([a-z]+)\((.*)\)/.exec(n=n.toLowerCase()))switch(u=r[2].split(","),r[1]){case"hsl":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(Nn(u[0]),Nn(u[1]),Nn(u[2]))}return(i=ro.get(n))?t(i.r,i.g,i.b):(null==n||"#"!==n.charAt(0)||isNaN(i=parseInt(n.slice(1),16))||(4===n.length?(a=(3840&i)>>4,a=a>>4|a,o=240&i,o=o>>4|o,l=15&i,l=l<<4|l):7===n.length&&(a=(16711680&i)>>16,o=(65280&i)>>8,l=255&i)),t(a,o,l))}function wn(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),a=Math.max(n,t,e),o=a-i,l=(a+i)/2;return o?(u=.5>l?o/(a+i):o/(2-a-i),r=n==a?(t-e)/o+(e>t?6:0):t==a?(e-n)/o+2:(n-t)/o+4,r*=60):(r=NaN,u=l>0&&1>l?0:r),new ln(r,u,l)}function Sn(n,t,e){n=kn(n),t=kn(t),e=kn(e);var r=dn((.4124564*n+.3575761*t+.1804375*e)/Ka),u=dn((.2126729*n+.7151522*t+.072175*e)/Qa),i=dn((.0193339*n+.119192*t+.9503041*e)/no);return hn(116*u-16,500*(r-u),200*(u-i))}function kn(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function Nn(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function En(n){return"function"==typeof n?n:function(){return n}}function An(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Cn(t,e,n,r)}}function Cn(n,t,e,r){function u(){var n,t=l.status;if(!t&&Ln(l)||t>=200&&300>t||304===t){try{n=e.call(i,l)}catch(r){return void a.error.call(i,r)}a.load.call(i,n)}else a.error.call(i,l)}var i={},a=oa.dispatch("beforesend","progress","load","error"),o={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(n)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=u:l.onreadystatechange=function(){l.readyState>3&&u()},l.onprogress=function(n){var t=oa.event;oa.event=n;try{a.progress.call(i,l)}finally{oa.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?o[n]:(null==t?delete o[n]:o[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(c=n,i):c},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(ca(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),l.open(e,n,!0),null==t||"accept"in o||(o.accept=t+",*/*"),l.setRequestHeader)for(var s in o)l.setRequestHeader(s,o[s]);return null!=t&&l.overrideMimeType&&l.overrideMimeType(t),null!=c&&(l.responseType=c),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),a.beforesend.call(i,l),l.send(null==r?null:r),i},i.abort=function(){return l.abort(),i},oa.rebind(i,a,"on"),null==r?i:i.get(zn(r))}function zn(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Ln(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function qn(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,n:null};return io?io.n=i:uo=i,io=i,ao||(oo=clearTimeout(oo),ao=1,lo(Tn)),i}function Tn(){var n=Rn(),t=Dn()-n;t>24?(isFinite(t)&&(clearTimeout(oo),oo=setTimeout(Tn,t)),ao=0):(ao=1,lo(Tn))}function Rn(){for(var n=Date.now(),t=uo;t;)n>=t.t&&t.c(n-t.t)&&(t.c=null),t=t.n;return n}function Dn(){for(var n,t=uo,e=1/0;t;)t.c?(t.t8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Un(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r&&e?function(n,t){for(var u=n.length,i=[],a=0,o=r[0],l=0;u>0&&o>0&&(l+o+1>t&&(o=Math.max(1,t-l)),i.push(n.substring(u-=o,u+o)),!((l+=o+1)>t));)o=r[a=(a+1)%r.length];return i.reverse().join(e)}:y;return function(n){var e=so.exec(n),r=e[1]||" ",a=e[2]||">",o=e[3]||"-",l=e[4]||"",c=e[5],s=+e[6],f=e[7],h=e[8],g=e[9],p=1,v="",d="",m=!1,y=!0;switch(h&&(h=+h.substring(1)),(c||"0"===r&&"="===a)&&(c=r="0",a="="),g){case"n":f=!0,g="g";break;case"%":p=100,d="%",g="f";break;case"p":p=100,d="%",g="r";break;case"b":case"o":case"x":case"X":"#"===l&&(v="0"+g.toLowerCase());case"c":y=!1;case"d":m=!0,h=0;break;case"s":p=-1,g="r"}"$"===l&&(v=u[0],d=u[1]),"r"!=g||h||(g="g"),null!=h&&("g"==g?h=Math.max(1,Math.min(21,h)):("e"==g||"f"==g)&&(h=Math.max(0,Math.min(20,h)))),g=fo.get(g)||Fn;var M=c&&f;return function(n){var e=d;if(m&&n%1)return"";var u=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===o?"":o;if(0>p){var l=oa.formatPrefix(n,h);n=l.scale(n),e=l.symbol+d}else n*=p;n=g(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=y?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!c&&f&&(x=i(x,1/0));var S=v.length+x.length+b.length+(M?0:u.length),k=s>S?new Array(S=s-S+1).join(r):"";return M&&(x=i(k+x,k.length?s-b.length:1/0)),u+=v,n=x+b,("<"===a?u+n+k:">"===a?k+u+n:"^"===a?k.substring(0,S>>=1)+u+n+k.substring(S):u+(M?n:k+n))+e}}}function Fn(n){return n+""}function Hn(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function On(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new go(e-1)),1),e}function i(n,e){return t(n=new go(+n),e),n}function a(n,r,i){var a=u(n),o=[];if(i>1)for(;r>a;)e(a)%i||o.push(new Date(+a)),t(a,1);else for(;r>a;)o.push(new Date(+a)),t(a,1);return o}function o(n,t,e){try{go=Hn;var r=new Hn;return r._=n,a(r,t,e)}finally{go=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=a;var l=n.utc=In(n);return l.floor=l,l.round=In(r),l.ceil=In(u),l.offset=In(i),l.range=o,n}function In(n){return function(t,e){try{go=Hn;var r=new Hn;return r._=t,n(r,e)._}finally{go=Date}}}function Yn(n){function t(n){function t(t){for(var e,u,i,a=[],o=-1,l=0;++oo;){if(r>=c)return-1;if(u=t.charCodeAt(o++),37===u){if(a=t.charAt(o++),i=C[a in vo?t.charAt(o++):a],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){N.lastIndex=0;var r=N.exec(t.slice(e));return r?(n.m=E.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,r){return e(n,A.c.toString(),t,r)}function l(n,t,r){return e(n,A.x.toString(),t,r)}function c(n,t,r){return e(n,A.X.toString(),t,r)}function s(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,v=n.days,d=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{go=Hn;var t=new go;return t._=n,r(t)}finally{go=Date}}var r=t(n);return e.parse=function(n){try{go=Hn;var t=r.parse(n);return t&&t._}finally{go=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ct;var M=oa.map(),x=Vn(v),b=Xn(v),_=Vn(d),w=Xn(d),S=Vn(m),k=Xn(m),N=Vn(y),E=Xn(y);p.forEach(function(n,t){M.set(n.toLowerCase(),t)});var A={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return Zn(n.getDate(),t,2)},e:function(n,t){return Zn(n.getDate(),t,2)},H:function(n,t){return Zn(n.getHours(),t,2)},I:function(n,t){return Zn(n.getHours()%12||12,t,2)},j:function(n,t){return Zn(1+ho.dayOfYear(n),t,3)},L:function(n,t){return Zn(n.getMilliseconds(),t,3)},m:function(n,t){return Zn(n.getMonth()+1,t,2)},M:function(n,t){return Zn(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return Zn(n.getSeconds(),t,2)},U:function(n,t){return Zn(ho.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Zn(ho.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return Zn(n.getFullYear()%100,t,2)},Y:function(n,t){return Zn(n.getFullYear()%1e4,t,4)},Z:ot,"%":function(){return"%"}},C={a:r,A:u,b:i,B:a,c:o,d:tt,e:tt,H:rt,I:rt,j:et,L:at,m:nt,M:ut,p:s,S:it,U:Bn,w:$n,W:Wn,x:l,X:c,y:Gn,Y:Jn,Z:Kn,"%":lt};return t}function Zn(n,t,e){var r=0>n?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function Vn(n){return new RegExp("^(?:"+n.map(oa.requote).join("|")+")","i")}function Xn(n){for(var t=new c,e=-1,r=n.length;++e68?1900:2e3)}function nt(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function tt(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function et(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function rt(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function ut(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function it(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function at(n,t,e){mo.lastIndex=0;var r=mo.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function ot(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=Ma(t)/60|0,u=Ma(t)%60;return e+Zn(r,"0",2)+Zn(u,"0",2)}function lt(n,t,e){yo.lastIndex=0;var r=yo.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ct(n){for(var t=n.length,e=-1;++e=0?1:-1,o=a*e,l=Math.cos(t),c=Math.sin(t),s=i*c,f=u*l+s*Math.cos(o),h=s*a*Math.sin(o);So.add(Math.atan2(h,f)),r=n,u=l,i=c}var t,e,r,u,i;ko.point=function(a,o){ko.point=n,r=(t=a)*Oa,u=Math.cos(o=(e=o)*Oa/2+ja/4),i=Math.sin(o)},ko.lineEnd=function(){n(t,e)}}function dt(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function mt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function yt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function Mt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function xt(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function bt(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function _t(n){return[Math.atan2(n[1],n[0]),tn(n[2])]}function wt(n,t){return Ma(n[0]-t[0])o;++o)u.point((e=n[o])[0],e[1]);return void u.lineEnd()}var l=new Tt(e,n,null,!0),c=new Tt(e,null,l,!1);l.o=c,i.push(l),a.push(c),l=new Tt(r,n,null,!1),c=new Tt(r,null,l,!0),l.o=c,i.push(l),a.push(c)}}),a.sort(t),qt(i),qt(a),i.length){for(var o=0,l=e,c=a.length;c>o;++o)a[o].e=l=!l;for(var s,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;s=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var o=0,c=s.length;c>o;++o)u.point((f=s[o])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){s=g.p.z;for(var o=s.length-1;o>=0;--o)u.point((f=s[o])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,s=g.z,p=!p}while(!g.v);u.lineEnd()}}}function qt(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r0){for(b||(i.polygonStart(),b=!0),i.lineStart();++a1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Dt))}var g,p,v,d=t(i),m=u.invert(r[0],r[1]),y={point:a,lineStart:l,lineEnd:c,polygonStart:function(){y.point=s,y.lineStart=f,y.lineEnd=h,g=[],p=[]},polygonEnd:function(){y.point=a,y.lineStart=l,y.lineEnd=c,g=oa.merge(g);var n=Ot(m,p);g.length?(b||(i.polygonStart(),b=!0),Lt(g,jt,n,e,i)):n&&(b||(i.polygonStart(),b=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),b&&(i.polygonEnd(),b=!1),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},M=Pt(),x=t(M),b=!1;return y}}function Dt(n){return n.length>1}function Pt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:b,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function jt(n,t){return((n=n.x)[0]<0?n[1]-Ha-Da:Ha-n[1])-((t=t.x)[0]<0?t[1]-Ha-Da:Ha-t[1])}function Ut(n){var t,e=NaN,r=NaN,u=NaN;return{lineStart:function(){n.lineStart(),t=1},point:function(i,a){var o=i>0?ja:-ja,l=Ma(i-e);Ma(l-ja)0?Ha:-Ha),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(o,r),n.point(i,r),t=0):u!==o&&l>=ja&&(Ma(e-u)Da?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*a)):(t+r)/2}function Ht(n,t,e,r){var u;if(null==n)u=e*Ha,r.point(-ja,u),r.point(0,u),r.point(ja,u),r.point(ja,0),r.point(ja,-u),r.point(0,-u),r.point(-ja,-u),r.point(-ja,0),r.point(-ja,u);else if(Ma(n[0]-t[0])>Da){var i=n[0]o;++o){var c=t[o],s=c.length;if(s)for(var f=c[0],h=f[0],g=f[1]/2+ja/4,p=Math.sin(g),v=Math.cos(g),d=1;;){d===s&&(d=0),n=c[d];var m=n[0],y=n[1]/2+ja/4,M=Math.sin(y),x=Math.cos(y),b=m-h,_=b>=0?1:-1,w=_*b,S=w>ja,k=p*M;if(So.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),i+=S?b+_*Ua:b,S^h>=e^m>=e){var N=yt(dt(f),dt(n));bt(N);var E=yt(u,N);bt(E);var A=(S^b>=0?-1:1)*tn(E[2]);(r>A||r===A&&(N[0]||N[1]))&&(a+=S^b>=0?1:-1)}if(!d++)break;h=m,p=M,v=x,f=n}}return(-Da>i||Da>i&&0>So)^1&a}function It(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function e(n){var e,i,l,c,s;return{lineStart:function(){c=l=!1,s=1},point:function(f,h){var g,p=[f,h],v=t(f,h),d=a?v?0:u(f,h):v?u(f+(0>f?ja:-ja),h):0;if(!e&&(c=l=v)&&n.lineStart(),v!==l&&(g=r(e,p),(wt(e,g)||wt(p,g))&&(p[0]+=Da,p[1]+=Da,v=t(p[0],p[1]))),v!==l)s=0,v?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(o&&e&&a^v){var m;d&i||!(m=r(p,e,!0))||(s=0,a?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!v||e&&wt(e,p)||n.point(p[0],p[1]),e=p,l=v,i=d},lineEnd:function(){l&&n.lineEnd(),e=null},clean:function(){return s|(c&&l)<<1}}}function r(n,t,e){var r=dt(n),u=dt(t),a=[1,0,0],o=yt(r,u),l=mt(o,o),c=o[0],s=l-c*c;if(!s)return!e&&n;var f=i*l/s,h=-i*c/s,g=yt(a,o),p=xt(a,f),v=xt(o,h);Mt(p,v);var d=g,m=mt(p,d),y=mt(d,d),M=m*m-y*(mt(p,p)-1);if(!(0>M)){var x=Math.sqrt(M),b=xt(d,(-m-x)/y);if(Mt(b,p),b=_t(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],N=t[1];w>S&&(_=w,w=S,S=_);var E=S-w,A=Ma(E-ja)E;if(!A&&k>N&&(_=k,k=N,N=_),C?A?k+N>0^b[1]<(Ma(b[0]-w)ja^(w<=b[0]&&b[0]<=S)){var z=xt(d,(-m+x)/y);return Mt(z,p),[b,_t(z)]}}}function u(t,e){var r=a?n:ja-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),a=i>0,o=Ma(i)>Da,l=ve(n,6*Oa);return Rt(t,e,l,a?[0,-n]:[-ja,n-ja])}function Yt(n,t,e,r){return function(u){var i,a=u.a,o=u.b,l=a.x,c=a.y,s=o.x,f=o.y,h=0,g=1,p=s-l,v=f-c;if(i=n-l,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-l,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-c,v||!(i>0)){if(i/=v,0>v){if(h>i)return;g>i&&(g=i)}else if(v>0){if(i>g)return;i>h&&(h=i)}if(i=r-c,v||!(0>i)){if(i/=v,0>v){if(i>g)return;i>h&&(h=i)}else if(v>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:l+h*p,y:c+h*v}),1>g&&(u.b={x:l+g*p,y:c+g*v}),u}}}}}}function Zt(n,t,e,r){function u(r,u){return Ma(r[0]-n)0?0:3:Ma(r[0]-e)0?2:1:Ma(r[1]-t)0?1:0:u>0?3:2}function i(n,t){return a(n.x,t.x)}function a(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(o){function l(n){for(var t=0,e=d.length,r=n[1],u=0;e>u;++u)for(var i,a=1,o=d[u],l=o.length,c=o[0];l>a;++a)i=o[a],c[1]<=r?i[1]>r&&Q(c,i,n)>0&&++t:i[1]<=r&&Q(c,i,n)<0&&--t,c=i;return 0!==t}function c(i,o,l,c){var s=0,f=0;if(null==i||(s=u(i,l))!==(f=u(o,l))||a(i,o)<0^l>0){do c.point(0===s||3===s?n:e,s>1?r:t);while((s=(s+l+4)%4)!==f)}else c.point(o[0],o[1])}function s(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){s(n,t)&&o.point(n,t)}function h(){C.point=p,d&&d.push(m=[]),S=!0,w=!1,b=_=NaN}function g(){v&&(p(y,M),x&&w&&E.rejoin(),v.push(E.buffer())),C.point=f,w&&o.lineEnd()}function p(n,t){n=Math.max(-Fo,Math.min(Fo,n)),t=Math.max(-Fo,Math.min(Fo,t));var e=s(n,t);if(d&&m.push([n,t]),S)y=n,M=t,x=e,S=!1,e&&(o.lineStart(),o.point(n,t));else if(e&&w)o.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};A(r)?(w||(o.lineStart(),o.point(r.a.x,r.a.y)),o.point(r.b.x,r.b.y),e||o.lineEnd(),k=!1):e&&(o.lineStart(),o.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,m,y,M,x,b,_,w,S,k,N=o,E=Pt(),A=Yt(n,t,e,r),C={point:f,lineStart:h,lineEnd:g,polygonStart:function(){o=E,v=[],d=[],k=!0},polygonEnd:function(){o=N,v=oa.merge(v);var t=l([n,r]),e=k&&t,u=v.length;(e||u)&&(o.polygonStart(),e&&(o.lineStart(),c(null,null,1,o),o.lineEnd()),u&&Lt(v,i,t,c,o),o.polygonEnd()),v=d=m=null}};return C}}function Vt(n){var t=0,e=ja/3,r=oe(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*ja/180,e=n[1]*ja/180):[t/ja*180,e/ja*180]},u}function Xt(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),a-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),a=Math.sqrt(i)/u;return e.invert=function(n,t){var e=a-t;return[Math.atan2(n,e)/u,tn((i-(n*n+e*e)*u*u)/(2*u))]},e}function $t(){function n(n,t){Oo+=u*n-r*t,r=n,u=t}var t,e,r,u;Xo.point=function(i,a){Xo.point=n,t=r=i,e=u=a},Xo.lineEnd=function(){n(t,e)}}function Bt(n,t){Io>n&&(Io=n),n>Zo&&(Zo=n),Yo>t&&(Yo=t),t>Vo&&(Vo=t)}function Wt(){function n(n,t){a.push("M",n,",",t,i)}function t(n,t){a.push("M",n,",",t),o.point=e}function e(n,t){a.push("L",n,",",t)}function r(){o.point=n}function u(){a.push("Z")}var i=Jt(4.5),a=[],o={point:n,lineStart:function(){o.point=t},lineEnd:r,polygonStart:function(){o.lineEnd=u},polygonEnd:function(){o.lineEnd=r,o.point=n},pointRadius:function(n){return i=Jt(n),o},result:function(){if(a.length){var n=a.join("");return a=[],n}}};return o}function Jt(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Gt(n,t){Ao+=n,Co+=t,++zo}function Kt(){function n(n,r){var u=n-t,i=r-e,a=Math.sqrt(u*u+i*i);Lo+=a*(t+n)/2,qo+=a*(e+r)/2,To+=a,Gt(t=n,e=r)}var t,e;Bo.point=function(r,u){Bo.point=n,Gt(t=r,e=u)}}function Qt(){Bo.point=Gt}function ne(){function n(n,t){var e=n-r,i=t-u,a=Math.sqrt(e*e+i*i);Lo+=a*(r+n)/2,qo+=a*(u+t)/2,To+=a,a=u*n-r*t,Ro+=a*(r+n),Do+=a*(u+t),Po+=3*a,Gt(r=n,u=t)}var t,e,r,u;Bo.point=function(i,a){Bo.point=n,Gt(t=r=i,e=u=a)},Bo.lineEnd=function(){n(t,e)}}function te(n){function t(t,e){n.moveTo(t+a,e),n.arc(t,e,a,0,Ua)}function e(t,e){n.moveTo(t,e),o.point=r}function r(t,e){n.lineTo(t,e)}function u(){o.point=t}function i(){n.closePath()}var a=4.5,o={point:t,lineStart:function(){o.point=e},lineEnd:u,polygonStart:function(){o.lineEnd=i},polygonEnd:function(){o.lineEnd=u,o.point=t},pointRadius:function(n){return a=n,o},result:b};return o}function ee(n){function t(n){return(o?r:e)(n)}function e(t){return ie(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=NaN,S.point=i,t.lineStart()}function i(e,r){var i=dt([e,r]),a=n(e,r);u(M,x,y,b,_,w,M=a[0],x=a[1],y=e,b=i[0],_=i[1],w=i[2],o,t),t.point(M,x)}function a(){S.point=e,t.lineEnd()}function l(){r(),S.point=c,S.lineEnd=s}function c(n,t){ -i(f=n,h=t),g=M,p=x,v=b,d=_,m=w,S.point=i}function s(){u(M,x,y,b,_,w,g,p,f,v,d,m,o,t),S.lineEnd=a,a()}var f,h,g,p,v,d,m,y,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:a,polygonStart:function(){t.polygonStart(),S.lineStart=l},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,o,l,c,s,f,h,g,p,v,d,m){var y=s-t,M=f-e,x=y*y+M*M;if(x>4*i&&d--){var b=o+g,_=l+p,w=c+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),N=Ma(Ma(w)-1)i||Ma((y*z+M*L)/x-.5)>.3||a>o*g+l*p+c*v)&&(u(t,e,r,o,l,c,A,C,N,b/=S,_/=S,w,d,m),m.point(A,C),u(A,C,N,b,_,w,s,f,h,g,p,v,d,m))}}var i=.5,a=Math.cos(30*Oa),o=16;return t.precision=function(n){return arguments.length?(o=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function re(n){var t=ee(function(t,e){return n([t*Ia,e*Ia])});return function(n){return le(t(n))}}function ue(n){this.stream=n}function ie(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function ae(n){return oe(function(){return n})()}function oe(n){function t(n){return n=o(n[0]*Oa,n[1]*Oa),[n[0]*h+l,c-n[1]*h]}function e(n){return n=o.invert((n[0]-l)/h,(c-n[1])/h),n&&[n[0]*Ia,n[1]*Ia]}function r(){o=Ct(a=fe(m,M,x),i);var n=i(v,d);return l=g-n[0]*h,c=p+n[1]*h,u()}function u(){return s&&(s.valid=!1,s=null),t}var i,a,o,l,c,s,f=ee(function(n,t){return n=i(n,t),[n[0]*h+l,c-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,M=0,x=0,b=Uo,_=y,w=null,S=null;return t.stream=function(n){return s&&(s.valid=!1),s=le(b(a,f(_(n)))),s.valid=!0,s},t.clipAngle=function(n){return arguments.length?(b=null==n?(w=n,Uo):It((w=+n)*Oa),u()):w},t.clipExtent=function(n){return arguments.length?(S=n,_=n?Zt(n[0][0],n[0][1],n[1][0],n[1][1]):y,u()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*Oa,d=n[1]%360*Oa,r()):[v*Ia,d*Ia]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Oa,M=n[1]%360*Oa,x=n.length>2?n[2]%360*Oa:0,r()):[m*Ia,M*Ia,x*Ia]},oa.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function le(n){return ie(n,function(t,e){n.point(t*Oa,e*Oa)})}function ce(n,t){return[n,t]}function se(n,t){return[n>ja?n-Ua:-ja>n?n+Ua:n,t]}function fe(n,t,e){return n?t||e?Ct(ge(n),pe(t,e)):ge(n):t||e?pe(t,e):se}function he(n){return function(t,e){return t+=n,[t>ja?t-Ua:-ja>t?t+Ua:t,e]}}function ge(n){var t=he(n);return t.invert=he(-n),t}function pe(n,t){function e(n,t){var e=Math.cos(t),o=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),s=c*r+o*u;return[Math.atan2(l*i-s*a,o*r-c*u),tn(s*i+l*a)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),a=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),o=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),s=c*i-l*a;return[Math.atan2(l*i+c*a,o*r+s*u),tn(s*r-o*u)]},e}function ve(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,a,o){var l=a*t;null!=u?(u=de(e,u),i=de(e,i),(a>0?i>u:u>i)&&(u+=a*Ua)):(u=n+a*Ua,i=n-.5*l);for(var c,s=u;a>0?s>i:i>s;s-=l)o.point((c=_t([e,-r*Math.cos(s),-r*Math.sin(s)]))[0],c[1])}}function de(n,t){var e=dt(t);e[0]-=n,bt(e);var r=nn(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Da)%(2*Math.PI)}function me(n,t,e){var r=oa.range(n,t-Da,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function ye(n,t,e){var r=oa.range(n,t-Da,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function Me(n){return n.source}function xe(n){return n.target}function be(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),a=Math.cos(r),o=Math.sin(r),l=u*Math.cos(n),c=u*Math.sin(n),s=a*Math.cos(e),f=a*Math.sin(e),h=2*Math.asin(Math.sqrt(an(r-t)+u*a*an(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*l+t*s,u=e*c+t*f,a=e*i+t*o;return[Math.atan2(u,r)*Ia,Math.atan2(a,Math.sqrt(r*r+u*u))*Ia]}:function(){return[n*Ia,t*Ia]};return p.distance=h,p}function _e(){function n(n,u){var i=Math.sin(u*=Oa),a=Math.cos(u),o=Ma((n*=Oa)-t),l=Math.cos(o);Wo+=Math.atan2(Math.sqrt((o=a*Math.sin(o))*o+(o=r*i-e*a*l)*o),e*i+r*a*l),t=n,e=i,r=a}var t,e,r;Jo.point=function(u,i){t=u*Oa,e=Math.sin(i*=Oa),r=Math.cos(i),Jo.point=n},Jo.lineEnd=function(){Jo.point=Jo.lineEnd=b}}function we(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),a=Math.cos(u);return[Math.atan2(n*i,r*a),Math.asin(r&&e*i/r)]},e}function Se(n,t){function e(n,t){a>0?-Ha+Da>t&&(t=-Ha+Da):t>Ha-Da&&(t=Ha-Da);var e=a/Math.pow(u(t),i);return[e*Math.sin(i*n),a-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(ja/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),a=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=a-t,r=K(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(a/r,1/i))-Ha]},e):Ne}function ke(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return Ma(u)u;u++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function qe(n,t){return n[0]-t[0]||n[1]-t[1]}function Te(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Re(n,t,e,r){var u=n[0],i=e[0],a=t[0]-u,o=r[0]-i,l=n[1],c=e[1],s=t[1]-l,f=r[1]-c,h=(o*(l-c)-f*(u-i))/(f*a-o*s);return[u+h*a,l+h*s]}function De(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Pe(){rr(this),this.edge=this.site=this.circle=null}function je(n){var t=ll.pop()||new Pe;return t.site=n,t}function Ue(n){Be(n),il.remove(n),ll.push(n),rr(n)}function Fe(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,a=n.N,o=[n];Ue(n);for(var l=i;l.circle&&Ma(e-l.circle.x)s;++s)c=o[s],l=o[s-1],nr(c.edge,l.site,c.site,u);l=o[0],c=o[f-1],c.edge=Ke(l.site,c.site,null,u),$e(l),$e(c)}function He(n){for(var t,e,r,u,i=n.x,a=n.y,o=il._;o;)if(r=Oe(o,a)-i,r>Da)o=o.L;else{if(u=i-Ie(o,a),!(u>Da)){r>-Da?(t=o.P,e=o):u>-Da?(t=o,e=o.N):t=e=o;break}if(!o.R){t=o;break}o=o.R}var l=je(n);if(il.insert(t,l),t||e){if(t===e)return Be(t),e=je(t.site),il.insert(l,e),l.edge=e.edge=Ke(t.site,l.site),$e(t),void $e(e);if(!e)return void(l.edge=Ke(t.site,l.site));Be(t),Be(e);var c=t.site,s=c.x,f=c.y,h=n.x-s,g=n.y-f,p=e.site,v=p.x-s,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,M=v*v+d*d,x={x:(d*y-g*M)/m+s,y:(h*M-v*y)/m+f};nr(e.edge,c,p,x),l.edge=Ke(c,n,null,x),e.edge=Ke(n,p,null,x),$e(t),$e(e)}}function Oe(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var a=n.P;if(!a)return-(1/0);e=a.site;var o=e.x,l=e.y,c=l-t;if(!c)return o;var s=o-r,f=1/i-1/c,h=s/c;return f?(-h+Math.sqrt(h*h-2*f*(s*s/(-2*c)-l+c/2+u-i/2)))/f+r:(r+o)/2}function Ie(n,t){var e=n.N;if(e)return Oe(e,t);var r=n.site;return r.y===t?r.x:1/0}function Ye(n){this.site=n,this.edges=[]}function Ze(n){for(var t,e,r,u,i,a,o,l,c,s,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=ul,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(o=i.edges,l=o.length,a=0;l>a;)s=o[a].end(),r=s.x,u=s.y,c=o[++a%l].start(),t=c.x,e=c.y,(Ma(r-t)>Da||Ma(u-e)>Da)&&(o.splice(a,0,new tr(Qe(i.site,s,Ma(r-f)Da?{x:f,y:Ma(t-f)Da?{x:Ma(e-p)Da?{x:h,y:Ma(t-h)Da?{x:Ma(e-g)=-Pa)){var g=l*l+c*c,p=s*s+f*f,v=(f*g-c*p)/h,d=(l*p-s*g)/h,f=d+o,m=cl.pop()||new Xe;m.arc=n,m.site=u,m.x=v+a,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,M=ol._;M;)if(m.yd||d>=o)return;if(h>p){if(i){if(i.y>=c)return}else i={x:d,y:l};e={x:d,y:c}}else{if(i){if(i.yr||r>1)if(h>p){if(i){if(i.y>=c)return}else i={x:(l-u)/r,y:l};e={x:(c-u)/r,y:c}}else{if(i){if(i.yg){if(i){if(i.x>=o)return}else i={x:a,y:r*a+u};e={x:o,y:r*o+u}}else{if(i){if(i.xi||f>a||r>h||u>g)){if(p=n.point){var p,v=t-n.x,d=e-n.y,m=v*v+d*d;if(l>m){var y=Math.sqrt(l=m);r=t-y,u=e-y,i=t+y,a=e+y,o=p}}for(var M=n.nodes,x=.5*(s+h),b=.5*(f+g),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:c(n,s,f,x,b);break;case 1:c(n,x,f,h,b);break;case 2:c(n,s,b,x,g);break;case 3:c(n,x,b,h,g)}}}(n,r,u,i,a),o}function vr(n,t){n=oa.rgb(n),t=oa.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,a=t.g-r,o=t.b-u;return function(n){return"#"+bn(Math.round(e+i*n))+bn(Math.round(r+a*n))+bn(Math.round(u+o*n))}}function dr(n,t){var e,r={},u={};for(e in n)e in t?r[e]=Mr(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function mr(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function yr(n,t){var e,r,u,i=fl.lastIndex=hl.lastIndex=0,a=-1,o=[],l=[];for(n+="",t+="";(e=fl.exec(n))&&(r=hl.exec(t));)(u=r.index)>i&&(u=t.slice(i,u),o[a]?o[a]+=u:o[++a]=u),(e=e[0])===(r=r[0])?o[a]?o[a]+=r:o[++a]=r:(o[++a]=null,l.push({i:a,x:mr(e,r)})),i=hl.lastIndex;return ir;++r)o[(e=l[r]).i]=e.x(n);return o.join("")})}function Mr(n,t){for(var e,r=oa.interpolators.length;--r>=0&&!(e=oa.interpolators[r](n,t)););return e}function xr(n,t){var e,r=[],u=[],i=n.length,a=t.length,o=Math.min(n.length,t.length);for(e=0;o>e;++e)r.push(Mr(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;a>e;++e)u[e]=t[e];return function(n){for(e=0;o>e;++e)u[e]=r[e](n);return u}}function br(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function _r(n){return function(t){return 1-n(1-t)}}function wr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function Sr(n){return n*n}function kr(n){return n*n*n}function Nr(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Er(n){return function(t){return Math.pow(t,n)}}function Ar(n){return 1-Math.cos(n*Ha)}function Cr(n){return Math.pow(2,10*(n-1))}function zr(n){return 1-Math.sqrt(1-n*n)}function Lr(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Ua*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Ua/t)}}function qr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Tr(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Rr(n,t){n=oa.hcl(n),t=oa.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,a=t.c-r,o=t.l-u;return isNaN(a)&&(a=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return fn(e+i*n,r+a*n,u+o*n)+""}}function Dr(n,t){n=oa.hsl(n),t=oa.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,a=t.s-r,o=t.l-u;return isNaN(a)&&(a=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return cn(e+i*n,r+a*n,u+o*n)+""}}function Pr(n,t){n=oa.lab(n),t=oa.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,a=t.a-r,o=t.b-u;return function(n){return gn(e+i*n,r+a*n,u+o*n)+""}}function jr(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Ur(n){var t=[n.a,n.b],e=[n.c,n.d],r=Hr(t),u=Fr(t,e),i=Hr(Or(e,t,-u))||0;t[0]*e[1]180?t+=360:t-n>180&&(n+=360),r.push({i:e.push(Ir(e)+"rotate(",null,")")-2,x:mr(n,t)})):t&&e.push(Ir(e)+"rotate("+t+")")}function Vr(n,t,e,r){n!==t?r.push({i:e.push(Ir(e)+"skewX(",null,")")-2,x:mr(n,t)}):t&&e.push(Ir(e)+"skewX("+t+")")}function Xr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var u=e.push(Ir(e)+"scale(",null,",",null,")");r.push({i:u-4,x:mr(n[0],t[0])},{i:u-2,x:mr(n[1],t[1])})}else(1!==t[0]||1!==t[1])&&e.push(Ir(e)+"scale("+t+")")}function $r(n,t){var e=[],r=[];return n=oa.transform(n),t=oa.transform(t),Yr(n.translate,t.translate,e,r),Zr(n.rotate,t.rotate,e,r),Vr(n.skew,t.skew,e,r),Xr(n.scale,t.scale,e,r),n=t=null,function(n){for(var t,u=-1,i=r.length;++u=0;)e.push(u[r])}function au(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(i=n.children)&&(u=i.length))for(var u,i,a=-1;++ae;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function mu(n){return n.reduce(yu,0)}function yu(n,t){return n+t[1]}function Mu(n,t){return xu(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function xu(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function bu(n){return[oa.min(n),oa.max(n)]}function _u(n,t){return n.value-t.value}function wu(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function Su(n,t){n._pack_next=t,t._pack_prev=n}function ku(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function Nu(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(c=e.length)){var e,r,u,i,a,o,l,c,s=1/0,f=-(1/0),h=1/0,g=-(1/0);if(e.forEach(Eu),r=e[0],r.x=-r.r,r.y=0,t(r),c>1&&(u=e[1],u.x=u.r,u.y=0,t(u),c>2))for(i=e[2],zu(r,u,i),t(i),wu(r,i),r._pack_prev=i,wu(i,u),u=r._pack_next,a=3;c>a;a++){zu(r,u,i=e[a]);var p=0,v=1,d=1;for(o=u._pack_next;o!==u;o=o._pack_next,v++)if(ku(o,i)){p=1;break}if(1==p)for(l=r._pack_prev;l!==o._pack_prev&&!ku(l,i);l=l._pack_prev,d++);p?(d>v||v==d&&u.ra;a++)i=e[a],i.x-=m,i.y-=y,M=Math.max(M,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=M,e.forEach(Au)}}function Eu(n){n._pack_next=n._pack_prev=n}function Au(n){delete n._pack_next,delete n._pack_prev}function Cu(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,a=u.length;++i=0;)t=u[i],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function Pu(n,t,e){return n.a.parent===t.parent?n.a:e}function ju(n){return 1+oa.max(n,function(n){return n.y})}function Uu(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Fu(n){var t=n.children;return t&&t.length?Fu(t[0]):n}function Hu(n){var t,e=n.children;return e&&(t=e.length)?Hu(e[t-1]):n}function Ou(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Iu(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function Yu(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Zu(n){return n.rangeExtent?n.rangeExtent():Yu(n.range())}function Vu(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Xu(n,t){var e,r=0,u=n.length-1,i=n[r],a=n[u];return i>a&&(e=r,r=u,u=e,e=i,i=a,a=e),n[r]=t.floor(i),n[u]=t.ceil(a),n}function $u(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:wl}function Bu(n,t,e,r){var u=[],i=[],a=0,o=Math.min(n.length,t.length)-1;for(n[o]2?Bu:Vu,l=r?Wr:Br;return a=u(n,t,l,e),o=u(t,n,l,Mr),i}function i(n){return a(n)}var a,o;return i.invert=function(n){return o(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(jr)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return Qu(n,t)},i.tickFormat=function(t,e){return ni(n,t,e)},i.nice=function(t){return Gu(n,t),u()},i.copy=function(){return Wu(n,t,e,r)},u()}function Ju(n,t){return oa.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Gu(n,t){return Xu(n,$u(Ku(n,t)[2])),Xu(n,$u(Ku(n,t)[2])),n}function Ku(n,t){null==t&&(t=10);var e=Yu(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function Qu(n,t){return oa.range.apply(oa,Ku(n,t))}function ni(n,t,e){var r=Ku(n,t);if(e){var u=so.exec(e);if(u.shift(),"s"===u[8]){var i=oa.formatPrefix(Math.max(Ma(r[0]),Ma(r[1])));return u[7]||(u[7]="."+ti(i.scale(r[2]))),u[8]="f",e=oa.format(u.join("")),function(n){return e(i.scale(n))+i.symbol}}u[7]||(u[7]="."+ei(u[8],r)),e=u.join("")}else e=",."+ti(r[2])+"f";return oa.format(e)}function ti(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function ei(n,t){var e=ti(t[2]);return n in Sl?Math.abs(e-ti(Math.max(Ma(t[0]),Ma(t[1]))))+ +("e"!==n):e-2*("%"===n)}function ri(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function a(t){return n(u(t))}return a.invert=function(t){return i(n.invert(t))},a.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),a):r},a.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),a):t},a.nice=function(){var t=Xu(r.map(u),e?Math:Nl);return n.domain(t),r=t.map(i),a},a.ticks=function(){var n=Yu(r),a=[],o=n[0],l=n[1],c=Math.floor(u(o)),s=Math.ceil(u(l)),f=t%1?2:t;if(isFinite(s-c)){if(e){for(;s>c;c++)for(var h=1;f>h;h++)a.push(i(c)*h);a.push(i(c))}else for(a.push(i(c));c++0;h--)a.push(i(c)*h);for(c=0;a[c]l;s--);a=a.slice(c,s)}return a},a.tickFormat=function(n,e){if(!arguments.length)return kl;arguments.length<2?e=kl:"function"!=typeof e&&(e=oa.format(e));var r=Math.max(1,t*n/a.ticks().length);return function(n){var a=n/i(Math.round(u(n)));return t-.5>a*t&&(a*=t),r>=a?e(n):""}},a.copy=function(){return ri(n.copy(),t,e,r)},Ju(a,n)}function ui(n,t,e){function r(t){return n(u(t))}var u=ii(t),i=ii(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return Qu(e,n)},r.tickFormat=function(n,t){return ni(e,n,t)},r.nice=function(n){return r.domain(Gu(e,n))},r.exponent=function(a){return arguments.length?(u=ii(t=a),i=ii(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return ui(n.copy(),t,e)},Ju(r,n)}function ii(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function ai(n,t){function e(e){return i[((u.get(e)||("range"===t.t?u.set(e,n.push(e)):NaN))-1)%i.length]}function r(t,e){return oa.range(n.length).map(function(n){return t+e*n})}var u,i,a;return e.domain=function(r){if(!arguments.length)return n;n=[],u=new c;for(var i,a=-1,o=r.length;++ae?[NaN,NaN]:[e>0?o[e-1]:n[0],et?NaN:t/i+n,[t,t+1/i]},r.copy=function(){return li(n,t,e)},u()}function ci(n,t){function e(e){return e>=e?t[oa.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return ci(n,t)},e}function si(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Qu(n,t)},t.tickFormat=function(t,e){return ni(n,t,e)},t.copy=function(){return si(n)},t}function fi(){return 0}function hi(n){return n.innerRadius}function gi(n){return n.outerRadius}function pi(n){return n.startAngle}function vi(n){return n.endAngle}function di(n){return n&&n.padAngle}function mi(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function yi(n,t,e,r,u){var i=n[0]-t[0],a=n[1]-t[1],o=(u?r:-r)/Math.sqrt(i*i+a*a),l=o*a,c=-o*i,s=n[0]+l,f=n[1]+c,h=t[0]+l,g=t[1]+c,p=(s+h)/2,v=(f+g)/2,d=h-s,m=g-f,y=d*d+m*m,M=e-r,x=s*g-h*f,b=(0>m?-1:1)*Math.sqrt(Math.max(0,M*M*y-x*x)),_=(x*m-d*b)/y,w=(-x*d-m*b)/y,S=(x*m+d*b)/y,k=(-x*d+m*b)/y,N=_-p,E=w-v,A=S-p,C=k-v;return N*N+E*E>A*A+C*C&&(_=S,w=k),[[_-l,w-c],[_*e/M,w*e/M]]}function Mi(n){function t(t){function a(){c.push("M",i(n(s),o))}for(var l,c=[],s=[],f=-1,h=t.length,g=En(e),p=En(r);++f1?n.join("L"):n+"Z"}function bi(n){return n.join("L")+"Z"}function _i(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t1&&u.push("H",r[0]),u.join("")}function wi(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t1){o=t[1],i=n[l],l++,r+="C"+(u[0]+a[0])+","+(u[1]+a[1])+","+(i[0]-o[0])+","+(i[1]-o[1])+","+i[0]+","+i[1];for(var c=2;c9&&(u=3*t/Math.sqrt(u),a[o]=u*e,a[o+1]=u*r));for(o=-1;++o<=l;)u=(n[Math.min(l,o+1)][0]-n[Math.max(0,o-1)][0])/(6*(1+a[o]*a[o])),i.push([u||0,a[o]*u||0]);return i}function Fi(n){return n.length<3?xi(n):n[0]+Ai(n,Ui(n))}function Hi(n){for(var t,e,r,u=-1,i=n.length;++u=t?a(n-t):void(s.c=a)}function a(e){var u=p.active,i=p[u];i&&(i.timer.c=null,i.timer.t=NaN,--p.count,delete p[u],i.event&&i.event.interrupt.call(n,n.__data__,i.index));for(var a in p)if(r>+a){var c=p[a];c.timer.c=null,c.timer.t=NaN,--p.count,delete p[a]}s.c=o,qn(function(){return s.c&&o(e||1)&&(s.c=null,s.t=NaN),1},0,l),p.active=r,v.event&&v.event.start.call(n,n.__data__,t),g=[],v.tween.forEach(function(e,r){(r=r.call(n,n.__data__,t))&&g.push(r)}),h=v.ease,f=v.duration}function o(u){for(var i=u/f,a=h(i),o=g.length;o>0;)g[--o].call(n,a);return i>=1?(v.event&&v.event.end.call(n,n.__data__,t),--p.count?delete p[r]:delete n[e],1):void 0}var l,s,f,h,g,p=n[e]||(n[e]={active:0,count:0}),v=p[r];v||(l=u.time,s=qn(i,0,l),v=p[r]={tween:new c,time:l,timer:s,delay:u.delay,duration:u.duration,ease:u.ease,index:t},u=null,++p.count)}function na(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function ta(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function ea(n){return n.toISOString()}function ra(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=oa.bisect(Gl,u);return i==Gl.length?[t.year,Ku(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/Gl[i-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=ua(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=ua(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Yu(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],ua(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return ra(n.copy(),t,e)},Ju(r,n)}function ua(n){return new Date(n)}function ia(n){return JSON.parse(n.responseText)}function aa(n){var t=sa.createRange();return t.selectNode(sa.body),t.createContextualFragment(n.responseText)}var oa={version:"3.5.12"},la=[].slice,ca=function(n){return la.call(n)},sa=this.document;if(sa)try{ca(sa.documentElement.childNodes)[0].nodeType}catch(fa){ca=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),sa)try{sa.createElement("DIV").style.setProperty("opacity",0,"")}catch(ha){var ga=this.Element.prototype,pa=ga.setAttribute,va=ga.setAttributeNS,da=this.CSSStyleDeclaration.prototype,ma=da.setProperty;ga.setAttribute=function(n,t){pa.call(this,n,t+"")},ga.setAttributeNS=function(n,t,e){va.call(this,n,t,e+"")},da.setProperty=function(n,t,e){ma.call(this,n,t+"",e)}}oa.ascending=e,oa.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:NaN},oa.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=r){e=r;break}for(;++ur&&(e=r)}else{for(;++u=r){e=r;break}for(;++ur&&(e=r)}return e},oa.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=r){e=r;break}for(;++ue&&(e=r)}else{for(;++u=r){e=r;break}for(;++ue&&(e=r)}return e},oa.extent=function(n,t){var e,r,u,i=-1,a=n.length;if(1===arguments.length){for(;++i=r){e=u=r;break}for(;++ir&&(e=r),r>u&&(u=r))}else{for(;++i=r){e=u=r;break}for(;++ir&&(e=r),r>u&&(u=r))}return[e,u]},oa.sum=function(n,t){var e,r=0,i=n.length,a=-1;if(1===arguments.length)for(;++a1?l/(s-1):void 0},oa.deviation=function(){var n=oa.variance.apply(this,arguments);return n?Math.sqrt(n):n};var ya=i(e);oa.bisectLeft=ya.left,oa.bisect=oa.bisectRight=ya.right,oa.bisector=function(n){return i(1===n.length?function(t,r){return e(n(t),r)}:n)},oa.shuffle=function(n,t,e){(i=arguments.length)<3&&(e=n.length,2>i&&(t=0));for(var r,u,i=e-t;i;)u=Math.random()*i--|0,r=n[i+t],n[i+t]=n[u+t],n[u+t]=r;return n},oa.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},oa.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},oa.zip=function(){if(!(r=arguments.length))return[];for(var n=-1,t=oa.min(arguments,a),e=new Array(t);++n=0;)for(r=n[u],t=r.length;--t>=0;)e[--a]=r[t];return e};var Ma=Math.abs;oa.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e===1/0)throw new Error("infinite range");var r,u=[],i=o(Ma(e)),a=-1;if(n*=i,t*=i,e*=i,0>e)for(;(r=n+e*++a)>t;)u.push(r/i);else for(;(r=n+e*++a)=i.length)return r?r.call(u,a):e?a.sort(e):a;for(var l,s,f,h,g=-1,p=a.length,v=i[o++],d=new c;++g=i.length)return n;var r=[],u=a[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,u={},i=[],a=[];return u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return t(n(oa.map,e,0),0)},u.key=function(n){return i.push(n),u},u.sortKeys=function(n){return a[i.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return r=n,u},u},oa.set=function(n){var t=new m;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},l(m,{has:h,add:function(n){return this._[s(n+="")]=!0,n},remove:g,values:p,size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,f(t))}}),oa.behavior={},oa.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},oa.event=null,oa.requote=function(n){return n.replace(wa,"\\$&")};var wa=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,Sa={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},ka=function(n,t){return t.querySelector(n)},Na=function(n,t){return t.querySelectorAll(n)},Ea=function(n,t){var e=n.matches||n[x(n,"matchesSelector")];return(Ea=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(ka=function(n,t){return Sizzle(n,t)[0]||null},Na=Sizzle,Ea=Sizzle.matchesSelector),oa.selection=function(){return oa.select(sa.documentElement)};var Aa=oa.selection.prototype=[];Aa.select=function(n){var t,e,r,u,i=[];n=A(n);for(var a=-1,o=this.length;++a=0&&"xmlns"!==(e=n.slice(0,t))&&(n=n.slice(t+1)),Ca.hasOwnProperty(e)?{space:Ca[e],local:n}:n}},Aa.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=oa.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},Aa.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=T(n)).length,u=-1;if(t=e.classList){for(;++uu){if("string"!=typeof n){2>u&&(e="");for(r in n)this.each(P(r,n[r],e));return this}if(2>u){var i=this.node();return t(i).getComputedStyle(i,null).getPropertyValue(n)}r=""}return this.each(P(n,e,r))},Aa.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(j(t,n[t]));return this}return this.each(j(n,t))},Aa.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},Aa.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},Aa.append=function(n){return n=U(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},Aa.insert=function(n,t){return n=U(n),t=A(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},Aa.remove=function(){return this.each(F)},Aa.data=function(n,t){function e(n,e){var r,u,i,a=n.length,f=e.length,h=Math.min(a,f),g=new Array(f),p=new Array(f),v=new Array(a);if(t){var d,m=new c,y=new Array(a);for(r=-1;++rr;++r)p[r]=H(e[r]);for(;a>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,o.push(p),l.push(g),s.push(v)}var r,u,i=-1,a=this.length;if(!arguments.length){for(n=new Array(a=(r=this[0]).length);++ii;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var o=0,l=e.length;l>o;o++)(r=e[o])&&n.call(r,r.__data__,o,i)&&t.push(r)}return E(u)},Aa.order=function(){for(var n=-1,t=this.length;++n=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},Aa.sort=function(n){n=I.apply(this,arguments);for(var t=-1,e=this.length;++tn;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},Aa.size=function(){var n=0;return Y(this,function(){++n}),n};var za=[];oa.selection.enter=Z,oa.selection.enter.prototype=za,za.append=Aa.append,za.empty=Aa.empty,za.node=Aa.node,za.call=Aa.call,za.size=Aa.size,za.select=function(n){for(var t,e,r,u,i,a=[],o=-1,l=this.length;++or){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(X(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(X(n,t,e))};var La=oa.map({mouseenter:"mouseover",mouseleave:"mouseout"});sa&&La.forEach(function(n){"on"+n in sa&&La.remove(n)});var qa,Ta=0;oa.mouse=function(n){return J(n,k())};var Ra=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;oa.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=k().changedTouches),t)for(var r,u=0,i=t.length;i>u;++u)if((r=t[u]).identifier===e)return J(n,r)},oa.behavior.drag=function(){function n(){this.on("mousedown.drag",i).on("touchstart.drag",a)}function e(n,t,e,i,a){return function(){function o(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],p|=n|e,M=r,g({type:"drag",x:r[0]+c[0],y:r[1]+c[1],dx:n,dy:e}))}function l(){t(h,v)&&(m.on(i+d,null).on(a+d,null),y(p),g({type:"dragend"}))}var c,s=this,f=oa.event.target,h=s.parentNode,g=r.of(s,arguments),p=0,v=n(),d=".drag"+(null==v?"":"-"+v),m=oa.select(e(f)).on(i+d,o).on(a+d,l),y=W(f),M=t(h,v);u?(c=u.apply(s,arguments),c=[c.x-M[0],c.y-M[1]]):c=[0,0],g({type:"dragstart"})}}var r=N(n,"drag","dragstart","dragend"),u=null,i=e(b,oa.mouse,t,"mousemove","mouseup"),a=e(G,oa.touch,y,"touchmove","touchend");return n.origin=function(t){return arguments.length?(u=t,n):u},oa.rebind(n,r,"on")},oa.touches=function(n,t){return arguments.length<2&&(t=k().touches),t?ca(t).map(function(t){var e=J(n,t);return e.identifier=t.identifier,e}):[]};var Da=1e-6,Pa=Da*Da,ja=Math.PI,Ua=2*ja,Fa=Ua-Da,Ha=ja/2,Oa=ja/180,Ia=180/ja,Ya=Math.SQRT2,Za=2,Va=4;oa.interpolateZoom=function(n,t){var e,r,u=n[0],i=n[1],a=n[2],o=t[0],l=t[1],c=t[2],s=o-u,f=l-i,h=s*s+f*f;if(Pa>h)r=Math.log(c/a)/Ya,e=function(n){return[u+n*s,i+n*f,a*Math.exp(Ya*n*r)]};else{var g=Math.sqrt(h),p=(c*c-a*a+Va*h)/(2*a*Za*g),v=(c*c-a*a-Va*h)/(2*c*Za*g),d=Math.log(Math.sqrt(p*p+1)-p),m=Math.log(Math.sqrt(v*v+1)-v);r=(m-d)/Ya,e=function(n){var t=n*r,e=rn(d),o=a/(Za*g)*(e*un(Ya*t+d)-en(d));return[u+o*s,i+o*f,a*e/rn(Ya*t+d)]}}return e.duration=1e3*r,e},oa.behavior.zoom=function(){function n(n){n.on(L,f).on($a+".zoom",g).on("dblclick.zoom",p).on(R,h)}function e(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function r(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function u(n){k.k=Math.max(A[0],Math.min(A[1],n))}function i(n,t){t=r(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function a(t,e,r,a){t.__chart__={x:k.x,y:k.y,k:k.k},u(Math.pow(2,a)),i(d=e,r),t=oa.select(t),C>0&&(t=t.transition().duration(C)),t.call(n.event)}function o(){b&&b.domain(x.range().map(function(n){return(n-k.x)/k.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function l(n){z++||n({type:"zoomstart"})}function c(n){o(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function s(n){--z||(n({type:"zoomend"}),d=null)}function f(){function n(){o=1,i(oa.mouse(u),h),c(a)}function r(){f.on(q,null).on(T,null),g(o),s(a)}var u=this,a=D.of(u,arguments),o=0,f=oa.select(t(u)).on(q,n).on(T,r),h=e(oa.mouse(u)),g=W(u);Ol.call(u),l(a)}function h(){function n(){var n=oa.touches(p);return g=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=e(n))}),n}function t(){var t=oa.event.target;oa.select(t).on(x,r).on(b,o),_.push(t);for(var e=oa.event.changedTouches,u=0,i=e.length;i>u;++u)d[e[u].identifier]=null;var l=n(),c=Date.now();if(1===l.length){if(500>c-M){var s=l[0];a(p,s,d[s.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),S()}M=c}else if(l.length>1){var s=l[0],f=l[1],h=s[0]-f[0],g=s[1]-f[1];m=h*h+g*g}}function r(){var n,t,e,r,a=oa.touches(p);Ol.call(p);for(var o=0,l=a.length;l>o;++o,r=null)if(e=a[o],r=d[e.identifier]){if(t)break;n=e,t=r}if(r){var s=(s=e[0]-n[0])*s+(s=e[1]-n[1])*s,f=m&&Math.sqrt(s/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+r[0])/2,(t[1]+r[1])/2],u(f*g)}M=null,i(n,t),c(v)}function o(){if(oa.event.touches.length){for(var t=oa.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var u in d)return void n()}oa.selectAll(_).on(y,null),w.on(L,f).on(R,h),N(),s(v)}var g,p=this,v=D.of(p,arguments),d={},m=0,y=".zoom-"+oa.event.changedTouches[0].identifier,x="touchmove"+y,b="touchend"+y,_=[],w=oa.select(p),N=W(p);t(),l(v),w.on(L,null).on(R,t)}function g(){var n=D.of(this,arguments);y?clearTimeout(y):(Ol.call(this),v=e(d=m||oa.mouse(this)),l(n)),y=setTimeout(function(){y=null,s(n)},50),S(),u(Math.pow(2,.002*Xa())*k.k),i(d,v),c(n)}function p(){var n=oa.mouse(this),t=Math.log(k.k)/Math.LN2;a(this,n,e(n),oa.event.shiftKey?Math.ceil(t)-1:Math.floor(t)+1)}var v,d,m,y,M,x,b,_,w,k={x:0,y:0,k:1},E=[960,500],A=Ba,C=250,z=0,L="mousedown.zoom",q="mousemove.zoom",T="mouseup.zoom",R="touchstart.zoom",D=N(n,"zoomstart","zoom","zoomend");return $a||($a="onwheel"in sa?(Xa=function(){return-oa.event.deltaY*(oa.event.deltaMode?120:1)},"wheel"):"onmousewheel"in sa?(Xa=function(){return oa.event.wheelDelta},"mousewheel"):(Xa=function(){return-oa.event.detail},"MozMousePixelScroll")),n.event=function(n){n.each(function(){var n=D.of(this,arguments),t=k;Fl?oa.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},l(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],u=d?d[0]:e/2,i=d?d[1]:r/2,a=oa.interpolateZoom([(u-k.x)/k.k,(i-k.y)/k.k,e/k.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=a(t),o=e/r[2];this.__chart__=k={x:u-r[0]*o,y:i-r[1]*o,k:o},c(n)}}).each("interrupt.zoom",function(){s(n)}).each("end.zoom",function(){s(n)}):(this.__chart__=k,l(n),c(n),s(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},o(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:null},u(+t),o(),n):k.k},n.scaleExtent=function(t){return arguments.length?(A=null==t?Ba:[+t[0],+t[1]],n):A},n.center=function(t){return arguments.length?(m=t&&[+t[0],+t[1]],n):m},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.duration=function(t){return arguments.length?(C=+t,n):C},n.x=function(t){return arguments.length?(b=t,x=t.copy(),k={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),k={x:0,y:0,k:1},n):w},oa.rebind(n,D,"on")};var Xa,$a,Ba=[0,1/0];oa.color=on,on.prototype.toString=function(){return this.rgb()+""},oa.hsl=ln;var Wa=ln.prototype=new on;Wa.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,this.l/n)},Wa.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,n*this.l)},Wa.rgb=function(){return cn(this.h,this.s,this.l)},oa.hcl=sn;var Ja=sn.prototype=new on;Ja.brighter=function(n){return new sn(this.h,this.c,Math.min(100,this.l+Ga*(arguments.length?n:1)))},Ja.darker=function(n){return new sn(this.h,this.c,Math.max(0,this.l-Ga*(arguments.length?n:1)))},Ja.rgb=function(){return fn(this.h,this.c,this.l).rgb()},oa.lab=hn;var Ga=18,Ka=.95047,Qa=1,no=1.08883,to=hn.prototype=new on;to.brighter=function(n){return new hn(Math.min(100,this.l+Ga*(arguments.length?n:1)),this.a,this.b)},to.darker=function(n){return new hn(Math.max(0,this.l-Ga*(arguments.length?n:1)),this.a,this.b)},to.rgb=function(){return gn(this.l,this.a,this.b)},oa.rgb=yn;var eo=yn.prototype=new on;eo.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),new yn(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new yn(u,u,u)},eo.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new yn(n*this.r,n*this.g,n*this.b)},eo.hsl=function(){return wn(this.r,this.g,this.b)},eo.toString=function(){return"#"+bn(this.r)+bn(this.g)+bn(this.b)};var ro=oa.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});ro.forEach(function(n,t){ro.set(n,Mn(t))}),oa.functor=En,oa.xhr=An(y),oa.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var a=Cn(n,t,null==e?r:u(e),i);return a.row=function(n){return arguments.length?a.response(null==(e=n)?r:u(n)):e},a}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(a).join(n)}function a(n){return o.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var o=new RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(s>=c)return a;if(u)return u=!1,i;var t=s;if(34===n.charCodeAt(t)){for(var e=t;e++s;){var r=n.charCodeAt(s++),o=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(s)&&(++s,++o);else if(r!==l)continue;return n.slice(t,s-o)}return n.slice(t)}for(var r,u,i={},a={},o=[],c=n.length,s=0,f=0;(r=e())!==a;){for(var h=[];r!==i&&r!==a;)h.push(r),r=e();t&&null==(h=t(h,f++))||o.push(h)}return o},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new m,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(a).join(n)].concat(t.map(function(t){return u.map(function(n){return a(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(i).join("\n")},e},oa.csv=oa.dsv(",","text/csv"),oa.tsv=oa.dsv(" ","text/tab-separated-values");var uo,io,ao,oo,lo=this[x(this,"requestAnimationFrame")]||function(n){setTimeout(n,17)};oa.timer=function(){qn.apply(this,arguments)},oa.timer.flush=function(){Rn(),Dn()},oa.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var co=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(jn);oa.formatPrefix=function(n,t){var e=0;return(n=+n)&&(0>n&&(n*=-1),t&&(n=oa.round(n,Pn(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),co[8+e/3]};var so=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,fo=oa.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=oa.round(n,Pn(n,t))).toFixed(Math.max(0,Math.min(20,Pn(n*(1+1e-15),t))))}}),ho=oa.time={},go=Date;Hn.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){po.setUTCDate.apply(this._,arguments)},setDay:function(){po.setUTCDay.apply(this._,arguments)},setFullYear:function(){po.setUTCFullYear.apply(this._,arguments)},setHours:function(){po.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){po.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){po.setUTCMinutes.apply(this._,arguments)},setMonth:function(){po.setUTCMonth.apply(this._,arguments)},setSeconds:function(){po.setUTCSeconds.apply(this._,arguments)},setTime:function(){po.setTime.apply(this._,arguments)}};var po=Date.prototype;ho.year=On(function(n){return n=ho.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),ho.years=ho.year.range,ho.years.utc=ho.year.utc.range,ho.day=On(function(n){var t=new go(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),ho.days=ho.day.range,ho.days.utc=ho.day.utc.range,ho.dayOfYear=function(n){var t=ho.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=ho[n]=On(function(n){return(n=ho.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=ho.year(n).getDay();return Math.floor((ho.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ho[n+"s"]=e.range,ho[n+"s"].utc=e.utc.range,ho[n+"OfYear"]=function(n){var e=ho.year(n).getDay();return Math.floor((ho.dayOfYear(n)+(e+t)%7)/7)}}),ho.week=ho.sunday,ho.weeks=ho.sunday.range,ho.weeks.utc=ho.sunday.utc.range,ho.weekOfYear=ho.sundayOfYear;var vo={"-":"",_:" ",0:"0"},mo=/^\s*\d+/,yo=/^%/;oa.locale=function(n){return{numberFormat:Un(n),timeFormat:Yn(n)}};var Mo=oa.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"], -shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});oa.format=Mo.numberFormat,oa.geo={},st.prototype={s:0,t:0,add:function(n){ft(n,this.t,xo),ft(xo.s,this.s,this),this.s?this.t+=xo.t:this.s=xo.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var xo=new st;oa.geo.stream=function(n,t){n&&bo.hasOwnProperty(n.type)?bo[n.type](n,t):ht(n,t)};var bo={Feature:function(n,t){ht(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++rn?4*ja+n:n,ko.lineStart=ko.lineEnd=ko.point=b}};oa.geo.bounds=function(){function n(n,t){M.push(x=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=dt([t*Oa,e*Oa]);if(m){var u=yt(m,r),i=[u[1],-u[0],0],a=yt(i,u);bt(a),a=_t(a);var l=t-p,c=l>0?1:-1,v=a[0]*Ia*c,d=Ma(l)>180;if(d^(v>c*p&&c*t>v)){var y=a[1]*Ia;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>c*p&&c*t>v)){var y=-a[1]*Ia;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?o(s,t)>o(s,h)&&(h=t):o(t,h)>o(s,h)&&(s=t):h>=s?(s>t&&(s=t),t>h&&(h=t)):t>p?o(s,t)>o(s,h)&&(h=t):o(t,h)>o(s,h)&&(s=t)}else n(t,e);m=r,p=t}function e(){b.point=t}function r(){x[0]=s,x[1]=h,b.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=Ma(r)>180?r+(r>0?360:-360):r}else v=n,d=e;ko.point(n,e),t(n,e)}function i(){ko.lineStart()}function a(){u(v,d),ko.lineEnd(),Ma(y)>Da&&(s=-(h=180)),x[0]=s,x[1]=h,m=null}function o(n,t){return(t-=n)<0?t+360:t}function l(n,t){return n[0]-t[0]}function c(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nSo?(s=-(h=180),f=-(g=90)):y>Da?g=90:-Da>y&&(f=-90),x[0]=s,x[1]=h}};return function(n){g=h=-(s=f=1/0),M=[],oa.geo.stream(n,b);var t=M.length;if(t){M.sort(l);for(var e,r=1,u=M[0],i=[u];t>r;++r)e=M[r],c(e[0],u)||c(e[1],u)?(o(u[0],e[1])>o(u[0],u[1])&&(u[1]=e[1]),o(e[0],u[1])>o(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var a,e,p=-(1/0),t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(a=o(u[1],e[0]))>p&&(p=a,s=e[0],h=u[1])}return M=x=null,s===1/0||f===1/0?[[NaN,NaN],[NaN,NaN]]:[[s,f],[h,g]]}}(),oa.geo.centroid=function(n){No=Eo=Ao=Co=zo=Lo=qo=To=Ro=Do=Po=0,oa.geo.stream(n,jo);var t=Ro,e=Do,r=Po,u=t*t+e*e+r*r;return Pa>u&&(t=Lo,e=qo,r=To,Da>Eo&&(t=Ao,e=Co,r=zo),u=t*t+e*e+r*r,Pa>u)?[NaN,NaN]:[Math.atan2(e,t)*Ia,tn(r/Math.sqrt(u))*Ia]};var No,Eo,Ao,Co,zo,Lo,qo,To,Ro,Do,Po,jo={sphere:b,point:St,lineStart:Nt,lineEnd:Et,polygonStart:function(){jo.lineStart=At},polygonEnd:function(){jo.lineStart=Nt}},Uo=Rt(zt,Ut,Ht,[-ja,-ja/2]),Fo=1e9;oa.geo.clipExtent=function(){var n,t,e,r,u,i,a={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(o){return arguments.length?(i=Zt(n=+o[0][0],t=+o[0][1],e=+o[1][0],r=+o[1][1]),u&&(u.valid=!1,u=null),a):[[n,t],[e,r]]}};return a.extent([[0,0],[960,500]])},(oa.geo.conicEqualArea=function(){return Vt(Xt)}).raw=Xt,oa.geo.albers=function(){return oa.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},oa.geo.albersUsa=function(){function n(n){var i=n[0],a=n[1];return t=null,e(i,a),t||(r(i,a),t)||u(i,a),t}var t,e,r,u,i=oa.geo.albers(),a=oa.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),o=oa.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?a:u>=.166&&.234>u&&r>=-.214&&-.115>r?o:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=a.stream(n),r=o.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),a.precision(t),o.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),a.scale(.35*t),o.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var c=i.scale(),s=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[s-.455*c,f-.238*c],[s+.455*c,f+.238*c]]).stream(l).point,r=a.translate([s-.307*c,f+.201*c]).clipExtent([[s-.425*c+Da,f+.12*c+Da],[s-.214*c-Da,f+.234*c-Da]]).stream(l).point,u=o.translate([s-.205*c,f+.212*c]).clipExtent([[s-.214*c+Da,f+.166*c+Da],[s-.115*c-Da,f+.234*c-Da]]).stream(l).point,n},n.scale(1070)};var Ho,Oo,Io,Yo,Zo,Vo,Xo={point:b,lineStart:b,lineEnd:b,polygonStart:function(){Oo=0,Xo.lineStart=$t},polygonEnd:function(){Xo.lineStart=Xo.lineEnd=Xo.point=b,Ho+=Ma(Oo/2)}},$o={point:Bt,lineStart:b,lineEnd:b,polygonStart:b,polygonEnd:b},Bo={point:Gt,lineStart:Kt,lineEnd:Qt,polygonStart:function(){Bo.lineStart=ne},polygonEnd:function(){Bo.point=Gt,Bo.lineStart=Kt,Bo.lineEnd=Qt}};oa.geo.path=function(){function n(n){return n&&("function"==typeof o&&i.pointRadius(+o.apply(this,arguments)),a&&a.valid||(a=u(i)),oa.geo.stream(n,a)),i.result()}function t(){return a=null,n}var e,r,u,i,a,o=4.5;return n.area=function(n){return Ho=0,oa.geo.stream(n,u(Xo)),Ho},n.centroid=function(n){return Ao=Co=zo=Lo=qo=To=Ro=Do=Po=0,oa.geo.stream(n,u(Bo)),Po?[Ro/Po,Do/Po]:To?[Lo/To,qo/To]:zo?[Ao/zo,Co/zo]:[NaN,NaN]},n.bounds=function(n){return Zo=Vo=-(Io=Yo=1/0),oa.geo.stream(n,u($o)),[[Io,Yo],[Zo,Vo]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||re(n):y,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new Wt:new te(n),"function"!=typeof o&&i.pointRadius(o),t()):r},n.pointRadius=function(t){return arguments.length?(o="function"==typeof t?t:(i.pointRadius(+t),+t),n):o},n.projection(oa.geo.albersUsa()).context(null)},oa.geo.transform=function(n){return{stream:function(t){var e=new ue(t);for(var r in n)e[r]=n[r];return e}}},ue.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},oa.geo.projection=ae,oa.geo.projectionMutator=oe,(oa.geo.equirectangular=function(){return ae(ce)}).raw=ce.invert=ce,oa.geo.rotation=function(n){function t(t){return t=n(t[0]*Oa,t[1]*Oa),t[0]*=Ia,t[1]*=Ia,t}return n=fe(n[0]%360*Oa,n[1]*Oa,n.length>2?n[2]*Oa:0),t.invert=function(t){return t=n.invert(t[0]*Oa,t[1]*Oa),t[0]*=Ia,t[1]*=Ia,t},t},se.invert=ce,oa.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=fe(-n[0]*Oa,-n[1]*Oa,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=Ia,n[1]*=Ia}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=ve((t=+r)*Oa,u*Oa),n):t},n.precision=function(r){return arguments.length?(e=ve(t*Oa,(u=+r)*Oa),n):u},n.angle(90)},oa.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Oa,u=n[1]*Oa,i=t[1]*Oa,a=Math.sin(r),o=Math.cos(r),l=Math.sin(u),c=Math.cos(u),s=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*a)*e+(e=c*s-l*f*o)*e),l*s+c*f*o)},oa.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return oa.range(Math.ceil(i/d)*d,u,d).map(h).concat(oa.range(Math.ceil(c/m)*m,l,m).map(g)).concat(oa.range(Math.ceil(r/p)*p,e,p).filter(function(n){return Ma(n%d)>Da}).map(s)).concat(oa.range(Math.ceil(o/v)*v,a,v).filter(function(n){return Ma(n%m)>Da}).map(f))}var e,r,u,i,a,o,l,c,s,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(l).slice(1),h(u).reverse().slice(1),g(c).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],c=+t[0][1],l=+t[1][1],i>u&&(t=i,i=u,u=t),c>l&&(t=c,c=l,l=t),n.precision(y)):[[i,c],[u,l]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],o=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),o>a&&(t=o,o=a,a=t),n.precision(y)):[[r,o],[e,a]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,s=me(o,a,90),f=ye(r,e,y),h=me(c,l,90),g=ye(i,u,y),n):y},n.majorExtent([[-180,-90+Da],[180,90-Da]]).minorExtent([[-180,-80-Da],[180,80+Da]])},oa.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=Me,u=xe;return n.distance=function(){return oa.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},oa.geo.interpolate=function(n,t){return be(n[0]*Oa,n[1]*Oa,t[0]*Oa,t[1]*Oa)},oa.geo.length=function(n){return Wo=0,oa.geo.stream(n,Jo),Wo};var Wo,Jo={sphere:b,point:b,lineStart:_e,lineEnd:b,polygonStart:b,polygonEnd:b},Go=we(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(oa.geo.azimuthalEqualArea=function(){return ae(Go)}).raw=Go;var Ko=we(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},y);(oa.geo.azimuthalEquidistant=function(){return ae(Ko)}).raw=Ko,(oa.geo.conicConformal=function(){return Vt(Se)}).raw=Se,(oa.geo.conicEquidistant=function(){return Vt(ke)}).raw=ke;var Qo=we(function(n){return 1/n},Math.atan);(oa.geo.gnomonic=function(){return ae(Qo)}).raw=Qo,Ne.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Ha]},(oa.geo.mercator=function(){return Ee(Ne)}).raw=Ne;var nl=we(function(){return 1},Math.asin);(oa.geo.orthographic=function(){return ae(nl)}).raw=nl;var tl=we(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(oa.geo.stereographic=function(){return ae(tl)}).raw=tl,Ae.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Ha]},(oa.geo.transverseMercator=function(){var n=Ee(Ae),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ae,oa.geom={},oa.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=En(e),i=En(r),a=n.length,o=[],l=[];for(t=0;a>t;t++)o.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(o.sort(qe),t=0;a>t;t++)l.push([o[t][0],-o[t][1]]);var c=Le(o),s=Le(l),f=s[0]===c[0],h=s[s.length-1]===c[c.length-1],g=[];for(t=c.length-1;t>=0;--t)g.push(n[o[c[t]][2]]);for(t=+f;t=r&&c.x<=i&&c.y>=u&&c.y<=a?[[r,a],[i,a],[i,u],[r,u]]:[];s.point=n[o]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Da)*Da,y:Math.round(a(n,t)/Da)*Da,i:t}})}var r=Ce,u=ze,i=r,a=u,o=sl;return n?t(n):(t.links=function(n){return or(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return or(e(n)).cells.forEach(function(e,r){for(var u,i,a=e.site,o=e.edges.sort(Ve),l=-1,c=o.length,s=o[c-1].edge,f=s.l===a?s.r:s.l;++l=c,h=r>=s,g=h<<1|f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=hr()),f?u=c:o=c,h?a=s:l=s,i(n,t,e,r,u,a,o,l)}var s,f,h,g,p,v,d,m,y,M=En(o),x=En(l);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,a)for(g=0;p>g;++g)s=n[g],s.xm&&(m=s.x),s.y>y&&(y=s.y),f.push(s.x),h.push(s.y);else for(g=0;p>g;++g){var b=+M(s=n[g],g),_=+x(s,g);v>b&&(v=b),d>_&&(d=_),b>m&&(m=b),_>y&&(y=_),f.push(b),h.push(_)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=hr();if(k.add=function(n){i(k,n,+M(n,++g),+x(n,g),v,d,m,y)},k.visit=function(n){gr(n,k,v,d,m,y)},k.find=function(n){return pr(k,n[0],n[1],v,d,m,y)},g=-1,null==t){for(;++g=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=pl.get(e)||gl,r=vl.get(r)||y,br(r(e.apply(null,la.call(arguments,1))))},oa.interpolateHcl=Rr,oa.interpolateHsl=Dr,oa.interpolateLab=Pr,oa.interpolateRound=jr,oa.transform=function(n){var t=sa.createElementNS(oa.ns.prefix.svg,"g");return(oa.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Ur(e?e.matrix:dl)})(n)},Ur.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var dl={a:1,b:0,c:0,d:1,e:0,f:0};oa.interpolateTransform=$r,oa.layout={},oa.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++eo*o/m){if(v>l){var c=t.charge/l;n.px-=i*c,n.py-=a*c}return!0}if(t.point&&l&&v>l){var c=t.pointCharge/l;n.px-=i*c,n.py-=a*c}}return!t.charge}}function t(n){n.px=oa.event.x,n.py=oa.event.y,l.resume()}var e,r,u,i,a,o,l={},c=oa.dispatch("start","tick","end"),s=[1,1],f=.9,h=ml,g=yl,p=-30,v=Ml,d=.1,m=.64,M=[],x=[];return l.tick=function(){if((u*=.99)<.005)return e=null,c.end({type:"end",alpha:u=0}),!0;var t,r,l,h,g,v,m,y,b,_=M.length,w=x.length;for(r=0;w>r;++r)l=x[r],h=l.source,g=l.target,y=g.x-h.x,b=g.y-h.y,(v=y*y+b*b)&&(v=u*a[r]*((v=Math.sqrt(v))-i[r])/v,y*=v,b*=v,g.x-=y*(m=h.weight+g.weight?h.weight/(h.weight+g.weight):.5),g.y-=b*m,h.x+=y*(m=1-m),h.y+=b*m);if((m=u*d)&&(y=s[0]/2,b=s[1]/2,r=-1,m))for(;++r<_;)l=M[r],l.x+=(y-l.x)*m,l.y+=(b-l.y)*m;if(p)for(ru(t=oa.geom.quadtree(M),u,o),r=-1;++r<_;)(l=M[r]).fixed||t.visit(n(l));for(r=-1;++r<_;)l=M[r],l.fixed?(l.x=l.px,l.y=l.py):(l.x-=(l.px-(l.px=l.x))*f,l.y-=(l.py-(l.py=l.y))*f);c.tick({type:"tick",alpha:u})},l.nodes=function(n){return arguments.length?(M=n,l):M},l.links=function(n){return arguments.length?(x=n,l):x},l.size=function(n){return arguments.length?(s=n,l):s},l.linkDistance=function(n){return arguments.length?(h="function"==typeof n?n:+n,l):h},l.distance=l.linkDistance,l.linkStrength=function(n){return arguments.length?(g="function"==typeof n?n:+n,l):g},l.friction=function(n){return arguments.length?(f=+n,l):f},l.charge=function(n){return arguments.length?(p="function"==typeof n?n:+n,l):p},l.chargeDistance=function(n){return arguments.length?(v=n*n,l):Math.sqrt(v)},l.gravity=function(n){return arguments.length?(d=+n,l):d},l.theta=function(n){return arguments.length?(m=n*n,l):Math.sqrt(m)},l.alpha=function(n){return arguments.length?(n=+n,u?n>0?u=n:(e.c=null,e.t=NaN,e=null,c.end({type:"end",alpha:u=0})):n>0&&(c.start({type:"start",alpha:u=n}),e=qn(l.tick)),l):u},l.start=function(){function n(n,r){if(!e){for(e=new Array(u),l=0;u>l;++l)e[l]=[];for(l=0;c>l;++l){var i=x[l];e[i.source.index].push(i.target),e[i.target.index].push(i.source)}}for(var a,o=e[t],l=-1,s=o.length;++lt;++t)(r=M[t]).index=t,r.weight=0;for(t=0;c>t;++t)r=x[t],"number"==typeof r.source&&(r.source=M[r.source]),"number"==typeof r.target&&(r.target=M[r.target]),++r.source.weight,++r.target.weight;for(t=0;u>t;++t)r=M[t],isNaN(r.x)&&(r.x=n("x",f)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(i=[],"function"==typeof h)for(t=0;c>t;++t)i[t]=+h.call(this,x[t],t);else for(t=0;c>t;++t)i[t]=h;if(a=[],"function"==typeof g)for(t=0;c>t;++t)a[t]=+g.call(this,x[t],t);else for(t=0;c>t;++t)a[t]=g;if(o=[],"function"==typeof p)for(t=0;u>t;++t)o[t]=+p.call(this,M[t],t);else for(t=0;u>t;++t)o[t]=p;return l.resume()},l.resume=function(){return l.alpha(.1)},l.stop=function(){return l.alpha(0)},l.drag=function(){return r||(r=oa.behavior.drag().origin(y).on("dragstart.force",Qr).on("drag.force",t).on("dragend.force",nu)),arguments.length?void this.on("mouseover.force",tu).on("mouseout.force",eu).call(r):r},oa.rebind(l,c,"on")};var ml=20,yl=1,Ml=1/0;oa.layout.hierarchy=function(){function n(u){var i,a=[u],o=[];for(u.depth=0;null!=(i=a.pop());)if(o.push(i),(c=e.call(n,i,i.depth))&&(l=c.length)){for(var l,c,s;--l>=0;)a.push(s=c[l]),s.parent=i,s.depth=i.depth+1;r&&(i.value=0),i.children=c}else r&&(i.value=+r.call(n,i,i.depth)||0),delete i.children;return au(u,function(n){var e,u;t&&(e=n.children)&&e.sort(t),r&&(u=n.parent)&&(u.value+=n.value)}),o}var t=cu,e=ou,r=lu;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(iu(t,function(n){n.children&&(n.value=0)}),au(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},oa.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(a=i.length)){var a,o,l,c=-1;for(r=t.value?r/t.value:0;++cf?-1:1),p=oa.sum(c),v=p?(f-l*g)/p:0,d=oa.range(l),m=[];return null!=e&&d.sort(e===xl?function(n,t){return c[t]-c[n]}:function(n,t){return e(a[n],a[t])}),d.forEach(function(n){m[n]={data:a[n],value:o=c[n],startAngle:s,endAngle:s+=o*v+g,padAngle:h}}),m}var t=Number,e=xl,r=0,u=Ua,i=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(u=t,n):u},n.padAngle=function(t){return arguments.length?(i=t,n):i},n};var xl={};oa.layout.stack=function(){function n(o,l){if(!(h=o.length))return o;var c=o.map(function(e,r){return t.call(n,e,r)}),s=c.map(function(t){return t.map(function(t,e){return[i.call(n,t,e),a.call(n,t,e)]})}),f=e.call(n,s,l);c=oa.permute(c,f),s=oa.permute(s,f);var h,g,p,v,d=r.call(n,s,l),m=c[0].length;for(p=0;m>p;++p)for(u.call(n,c[0][p],v=d[p],s[0][p][1]),g=1;h>g;++g)u.call(n,c[g][p],v+=s[g-1][p][1],s[g][p][1]);return o}var t=y,e=pu,r=vu,u=gu,i=fu,a=hu;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:bl.get(t)||pu,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:_l.get(t)||vu,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(a=t,n):a},n.out=function(t){return arguments.length?(u=t,n):u},n};var bl=oa.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(du),i=n.map(mu),a=oa.range(r).sort(function(n,t){return u[n]-u[t]}),o=0,l=0,c=[],s=[];for(t=0;r>t;++t)e=a[t],l>o?(o+=i[e],c.push(e)):(l+=i[e],s.push(e));return s.reverse().concat(c)},reverse:function(n){return oa.range(n.length).reverse()},"default":pu}),_l=oa.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,a=[],o=0,l=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>o&&(o=r),a.push(r)}for(e=0;i>e;++e)l[e]=(o-a[e])/2;return l},wiggle:function(n){var t,e,r,u,i,a,o,l,c,s=n.length,f=n[0],h=f.length,g=[];for(g[0]=l=c=0,e=1;h>e;++e){for(t=0,u=0;s>t;++t)u+=n[t][e][1];for(t=0,i=0,o=f[e][0]-f[e-1][0];s>t;++t){for(r=0,a=(n[t][e][1]-n[t][e-1][1])/(2*o);t>r;++r)a+=(n[r][e][1]-n[r][e-1][1])/o;i+=a*n[t][e][1]}g[e]=l-=u?i/u*o:0,c>l&&(c=l)}for(e=0;h>e;++e)g[e]-=c;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,a=1/u,o=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=a}for(e=0;i>e;++e)o[e]=0;return o},zero:vu});oa.layout.histogram=function(){function n(n,i){for(var a,o,l=[],c=n.map(e,this),s=r.call(this,c,i),f=u.call(this,s,c,i),i=-1,h=c.length,g=f.length-1,p=t?1:1/h;++i0)for(i=-1;++i=s[0]&&o<=s[1]&&(a=l[oa.bisect(f,o,1,g)-1],a.y+=p,a.push(n[i]));return l}var t=!0,e=Number,r=bu,u=Mu;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=En(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return xu(n,t)}:En(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},oa.layout.pack=function(){function n(n,i){var a=e.call(this,n,i),o=a[0],l=u[0],c=u[1],s=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(o.x=o.y=0,au(o,function(n){n.r=+s(n.value)}),au(o,Nu),r){var f=r*(t?1:Math.max(2*o.r/l,2*o.r/c))/2;au(o,function(n){n.r+=f}),au(o,Nu),au(o,function(n){n.r-=f})}return Cu(o,l/2,c/2,t?1:1/Math.max(2*o.r/l,2*o.r/c)),a}var t,e=oa.layout.hierarchy().sort(_u),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},uu(n,e)},oa.layout.tree=function(){function n(n,u){var s=a.call(this,n,u),f=s[0],h=t(f);if(au(h,e),h.parent.m=-h.z,iu(h,r),c)iu(f,i);else{var g=f,p=f,v=f;iu(f,function(n){n.xp.x&&(p=n),n.depth>v.depth&&(v=n)});var d=o(g,p)/2-g.x,m=l[0]/(p.x+o(p,g)/2+d),y=l[1]/(v.depth||1);iu(f,function(n){n.x=(n.x+d)*m,n.y=n.depth*y})}return s}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var u,i=t.children,a=0,o=i.length;o>a;++a)r.push((i[a]=u={_:i[a],parent:t,children:(u=i[a].children)&&u.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:a}).a=u);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Du(n);var i=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+o(n._,r._),n.m=n.z-i):n.z=i}else r&&(n.z=r.z+o(n._,r._));n.parent.A=u(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function u(n,t,e){if(t){for(var r,u=n,i=n,a=t,l=u.parent.children[0],c=u.m,s=i.m,f=a.m,h=l.m;a=Tu(a),u=qu(u),a&&u;)l=qu(l),i=Tu(i),i.a=n,r=a.z+f-u.z-c+o(a._,u._),r>0&&(Ru(Pu(a,n,e),n,r),c+=r,s+=r),f+=a.m,c+=u.m,h+=l.m,s+=i.m;a&&!Tu(i)&&(i.t=a,i.m+=f-s),u&&!qu(l)&&(l.t=u,l.m+=c-h,e=n)}return e}function i(n){n.x*=l[0],n.y=n.depth*l[1]}var a=oa.layout.hierarchy().sort(null).value(null),o=Lu,l=[1,1],c=null;return n.separation=function(t){return arguments.length?(o=t,n):o},n.size=function(t){return arguments.length?(c=null==(l=t)?i:null,n):c?null:l},n.nodeSize=function(t){return arguments.length?(c=null==(l=t)?null:i,n):c?l:null},uu(n,a)},oa.layout.cluster=function(){function n(n,i){var a,o=t.call(this,n,i),l=o[0],c=0;au(l,function(n){var t=n.children;t&&t.length?(n.x=Uu(t),n.y=ju(t)):(n.x=a?c+=e(n,a):0,n.y=0,a=n)});var s=Fu(l),f=Hu(l),h=s.x-e(s,f)/2,g=f.x+e(f,s)/2;return au(l,u?function(n){n.x=(n.x-l.x)*r[0],n.y=(l.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(l.y?n.y/l.y:1))*r[1]}),o}var t=oa.layout.hierarchy().sort(null).value(null),e=Lu,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},uu(n,t)},oa.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++ut?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var a,o,l,c=f(e),s=[],h=i.slice(),p=1/0,v="slice"===g?c.dx:"dice"===g?c.dy:"slice-dice"===g?1&e.depth?c.dy:c.dx:Math.min(c.dx,c.dy);for(n(h,c.dx*c.dy/e.value),s.area=0;(l=h.length)>0;)s.push(a=h[l-1]),s.area+=a.area,"squarify"!==g||(o=r(s,v))<=p?(h.pop(),p=o):(s.area-=s.pop().area,u(s,v,c,!1),v=Math.min(c.dx,c.dy),s.length=s.area=0,p=1/0);s.length&&(u(s,v,c,!0),s.length=s.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,a=f(t),o=r.slice(),l=[];for(n(o,a.dx*a.dy/t.value),l.area=0;i=o.pop();)l.push(i),l.area+=i.area,null!=i.z&&(u(l,i.z?a.dx:a.dy,a,!o.length),l.length=l.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,a=-1,o=n.length;++ae&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,a=n.length,o=e.x,c=e.y,s=t?l(n.area/t):0; -if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++ie.dx)&&(s=e.dx);++ie&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=oa.random.normal.apply(oa,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=oa.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},oa.scale={};var wl={floor:y,ceil:y};oa.scale.linear=function(){return Wu([0,1],[0,1],Mr,!1)};var Sl={s:1,g:1,p:1,r:1,e:1};oa.scale.log=function(){return ri(oa.scale.linear().domain([0,1]),10,!0,[1,10])};var kl=oa.format(".0e"),Nl={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};oa.scale.pow=function(){return ui(oa.scale.linear(),1,[0,1])},oa.scale.sqrt=function(){return oa.scale.pow().exponent(.5)},oa.scale.ordinal=function(){return ai([],{t:"range",a:[[]]})},oa.scale.category10=function(){return oa.scale.ordinal().range(El)},oa.scale.category20=function(){return oa.scale.ordinal().range(Al)},oa.scale.category20b=function(){return oa.scale.ordinal().range(Cl)},oa.scale.category20c=function(){return oa.scale.ordinal().range(zl)};var El=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(xn),Al=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(xn),Cl=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(xn),zl=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(xn);oa.scale.quantile=function(){return oi([],[])},oa.scale.quantize=function(){return li(0,1,[0,1])},oa.scale.threshold=function(){return ci([.5],[0,1])},oa.scale.identity=function(){return si([0,1])},oa.svg={},oa.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),c=Math.max(0,+r.apply(this,arguments)),s=a.apply(this,arguments)-Ha,f=o.apply(this,arguments)-Ha,h=Math.abs(f-s),g=s>f?0:1;if(n>c&&(p=c,c=n,n=p),h>=Fa)return t(c,g)+(n?t(n,1-g):"")+"Z";var p,v,d,m,y,M,x,b,_,w,S,k,N=0,E=0,A=[];if((m=(+l.apply(this,arguments)||0)/2)&&(d=i===Ll?Math.sqrt(n*n+c*c):+i.apply(this,arguments),g||(E*=-1),c&&(E=tn(d/c*Math.sin(m))),n&&(N=tn(d/n*Math.sin(m)))),c){y=c*Math.cos(s+E),M=c*Math.sin(s+E),x=c*Math.cos(f-E),b=c*Math.sin(f-E);var C=Math.abs(f-s-2*E)<=ja?0:1;if(E&&mi(y,M,x,b)===g^C){var z=(s+f)/2;y=c*Math.cos(z),M=c*Math.sin(z),x=b=null}}else y=M=0;if(n){_=n*Math.cos(f-N),w=n*Math.sin(f-N),S=n*Math.cos(s+N),k=n*Math.sin(s+N);var L=Math.abs(s-f+2*N)<=ja?0:1;if(N&&mi(_,w,S,k)===1-g^L){var q=(s+f)/2;_=n*Math.cos(q),w=n*Math.sin(q),S=k=null}}else _=w=0;if(h>Da&&(p=Math.min(Math.abs(c-n)/2,+u.apply(this,arguments)))>.001){v=c>n^g?0:1;var T=p,R=p;if(ja>h){var D=null==S?[_,w]:null==x?[y,M]:Re([y,M],[S,k],[x,b],[_,w]),P=y-D[0],j=M-D[1],U=x-D[0],F=b-D[1],H=1/Math.sin(Math.acos((P*U+j*F)/(Math.sqrt(P*P+j*j)*Math.sqrt(U*U+F*F)))/2),O=Math.sqrt(D[0]*D[0]+D[1]*D[1]);R=Math.min(p,(n-O)/(H-1)),T=Math.min(p,(c-O)/(H+1))}if(null!=x){var I=yi(null==S?[_,w]:[S,k],[y,M],c,T,g),Y=yi([x,b],[_,w],c,T,g);p===T?A.push("M",I[0],"A",T,",",T," 0 0,",v," ",I[1],"A",c,",",c," 0 ",1-g^mi(I[1][0],I[1][1],Y[1][0],Y[1][1]),",",g," ",Y[1],"A",T,",",T," 0 0,",v," ",Y[0]):A.push("M",I[0],"A",T,",",T," 0 1,",v," ",Y[0])}else A.push("M",y,",",M);if(null!=S){var Z=yi([y,M],[S,k],n,-R,g),V=yi([_,w],null==x?[y,M]:[x,b],n,-R,g);p===R?A.push("L",V[0],"A",R,",",R," 0 0,",v," ",V[1],"A",n,",",n," 0 ",g^mi(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-g," ",Z[1],"A",R,",",R," 0 0,",v," ",Z[0]):A.push("L",V[0],"A",R,",",R," 0 0,",v," ",Z[0])}else A.push("L",_,",",w)}else A.push("M",y,",",M),null!=x&&A.push("A",c,",",c," 0 ",C,",",g," ",x,",",b),A.push("L",_,",",w),null!=S&&A.push("A",n,",",n," 0 ",L,",",1-g," ",S,",",k);return A.push("Z"),A.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=hi,r=gi,u=fi,i=Ll,a=pi,o=vi,l=di;return n.innerRadius=function(t){return arguments.length?(e=En(t),n):e},n.outerRadius=function(t){return arguments.length?(r=En(t),n):r},n.cornerRadius=function(t){return arguments.length?(u=En(t),n):u},n.padRadius=function(t){return arguments.length?(i=t==Ll?Ll:En(t),n):i},n.startAngle=function(t){return arguments.length?(a=En(t),n):a},n.endAngle=function(t){return arguments.length?(o=En(t),n):o},n.padAngle=function(t){return arguments.length?(l=En(t),n):l},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+a.apply(this,arguments)+ +o.apply(this,arguments))/2-Ha;return[Math.cos(t)*n,Math.sin(t)*n]},n};var Ll="auto";oa.svg.line=function(){return Mi(y)};var ql=oa.map({linear:xi,"linear-closed":bi,step:_i,"step-before":wi,"step-after":Si,basis:zi,"basis-open":Li,"basis-closed":qi,bundle:Ti,cardinal:Ei,"cardinal-open":ki,"cardinal-closed":Ni,monotone:Fi});ql.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var Tl=[0,2/3,1/3,0],Rl=[0,1/3,2/3,0],Dl=[0,1/6,2/3,1/6];oa.svg.line.radial=function(){var n=Mi(Hi);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},wi.reverse=Si,Si.reverse=wi,oa.svg.area=function(){return Oi(y)},oa.svg.area.radial=function(){var n=Oi(Hi);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},oa.svg.chord=function(){function n(n,o){var l=t(this,i,n,o),c=t(this,a,n,o);return"M"+l.p0+r(l.r,l.p1,l.a1-l.a0)+(e(l,c)?u(l.r,l.p1,l.r,l.p0):u(l.r,l.p1,c.r,c.p0)+r(c.r,c.p1,c.a1-c.a0)+u(c.r,c.p1,l.r,l.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=o.call(n,u,r),a=l.call(n,u,r)-Ha,s=c.call(n,u,r)-Ha;return{r:i,a0:a,a1:s,p0:[i*Math.cos(a),i*Math.sin(a)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>ja)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=Me,a=xe,o=Ii,l=pi,c=vi;return n.radius=function(t){return arguments.length?(o=En(t),n):o},n.source=function(t){return arguments.length?(i=En(t),n):i},n.target=function(t){return arguments.length?(a=En(t),n):a},n.startAngle=function(t){return arguments.length?(l=En(t),n):l},n.endAngle=function(t){return arguments.length?(c=En(t),n):c},n},oa.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),a=e.call(this,n,u),o=(i.y+a.y)/2,l=[i,{x:i.x,y:o},{x:a.x,y:o},a];return l=l.map(r),"M"+l[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var t=Me,e=xe,r=Yi;return n.source=function(e){return arguments.length?(t=En(e),n):t},n.target=function(t){return arguments.length?(e=En(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},oa.svg.diagonal.radial=function(){var n=oa.svg.diagonal(),t=Yi,e=n.projection;return n.projection=function(n){return arguments.length?e(Zi(t=n)):t},n},oa.svg.symbol=function(){function n(n,r){return(Pl.get(t.call(this,n,r))||$i)(e.call(this,n,r))}var t=Xi,e=Vi;return n.type=function(e){return arguments.length?(t=En(e),n):t},n.size=function(t){return arguments.length?(e=En(t),n):e},n};var Pl=oa.map({circle:$i,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Ul)),e=t*Ul;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});oa.svg.symbolTypes=Pl.keys();var jl=Math.sqrt(3),Ul=Math.tan(30*Oa);Aa.transition=function(n){for(var t,e,r=Fl||++Yl,u=Ki(n),i=[],a=Hl||{time:Date.now(),ease:Nr,delay:0,duration:250},o=-1,l=this.length;++oi;i++){u.push(t=[]);for(var e=this[i],o=0,l=e.length;l>o;o++)(r=e[o])&&n.call(r,r.__data__,o,i)&&t.push(r)}return Wi(u,this.namespace,this.id)},Il.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):Y(this,null==t?function(t){t[r][e].tween.remove(n)}:function(u){u[r][e].tween.set(n,t)})},Il.attr=function(n,t){function e(){this.removeAttribute(o)}function r(){this.removeAttributeNS(o.space,o.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(o);return e!==n&&(t=a(e,n),function(n){this.setAttribute(o,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(o.space,o.local);return e!==n&&(t=a(e,n),function(n){this.setAttributeNS(o.space,o.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var a="transform"==n?$r:Mr,o=oa.ns.qualify(n);return Ji(this,"attr."+n,t,o.local?i:u)},Il.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=oa.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Il.style=function(n,e,r){function u(){this.style.removeProperty(n)}function i(e){return null==e?u:(e+="",function(){var u,i=t(this).getComputedStyle(this,null).getPropertyValue(n);return i!==e&&(u=Mr(i,e),function(t){this.style.setProperty(n,u(t),r)})})}var a=arguments.length;if(3>a){if("string"!=typeof n){2>a&&(e="");for(r in n)this.style(r,n[r],e);return this}r=""}return Ji(this,"style."+n,e,i)},Il.styleTween=function(n,e,r){function u(u,i){var a=e.call(this,u,i,t(this).getComputedStyle(this,null).getPropertyValue(n));return a&&function(t){this.style.setProperty(n,a(t),r)}}return arguments.length<3&&(r=""),this.tween("style."+n,u)},Il.text=function(n){return Ji(this,"text",n,Gi)},Il.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Il.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=oa.ease.apply(oa,arguments)),Y(this,function(r){r[e][t].ease=n}))},Il.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:Y(this,"function"==typeof n?function(r,u,i){r[e][t].delay=+n.call(r,r.__data__,u,i)}:(n=+n,function(r){r[e][t].delay=n}))},Il.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:Y(this,"function"==typeof n?function(r,u,i){r[e][t].duration=Math.max(1,n.call(r,r.__data__,u,i))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Il.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var u=Hl,i=Fl;try{Fl=e,Y(this,function(t,u,i){Hl=t[r][e],n.call(t,t.__data__,u,i)})}finally{Hl=u,Fl=i}}else Y(this,function(u){var i=u[r][e];(i.event||(i.event=oa.dispatch("start","end","interrupt"))).on(n,t)});return this},Il.transition=function(){for(var n,t,e,r,u=this.id,i=++Yl,a=this.namespace,o=[],l=0,c=this.length;c>l;l++){o.push(n=[]);for(var t=this[l],s=0,f=t.length;f>s;s++)(e=t[s])&&(r=e[a][u],Qi(e,s,a,i,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Wi(o,a,i)},oa.svg.axis=function(){function n(n){n.each(function(){var n,c=oa.select(this),s=this.__chart__||e,f=this.__chart__=e.copy(),h=null==l?f.ticks?f.ticks.apply(f,o):f.domain():l,g=null==t?f.tickFormat?f.tickFormat.apply(f,o):y:t,p=c.selectAll(".tick").data(h,f),v=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Da),d=oa.transition(p.exit()).style("opacity",Da).remove(),m=oa.transition(p.order()).style("opacity",1),M=Math.max(u,0)+a,x=Zu(f),b=c.selectAll(".domain").data([0]),_=(b.enter().append("path").attr("class","domain"),oa.transition(b));v.append("line"),v.append("text");var w,S,k,N,E=v.select("line"),A=m.select("line"),C=p.select("text").text(g),z=v.select("text"),L=m.select("text"),q="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=na,w="x",k="y",S="x2",N="y2",C.attr("dy",0>q?"0em":".71em").style("text-anchor","middle"),_.attr("d","M"+x[0]+","+q*i+"V0H"+x[1]+"V"+q*i)):(n=ta,w="y",k="x",S="y2",N="x2",C.attr("dy",".32em").style("text-anchor",0>q?"end":"start"),_.attr("d","M"+q*i+","+x[0]+"H0V"+x[1]+"H"+q*i)),E.attr(N,q*u),z.attr(k,q*M),A.attr(S,0).attr(N,q*u),L.attr(w,0).attr(k,q*M),f.rangeBand){var T=f,R=T.rangeBand()/2;s=f=function(n){return T(n)+R}}else s.rangeBand?s=f:d.call(n,f,s);v.call(n,s,f),m.call(n,f,f)})}var t,e=oa.scale.linear(),r=Zl,u=6,i=6,a=3,o=[10],l=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Vl?t+"":Zl,n):r},n.ticks=function(){return arguments.length?(o=ca(arguments),n):o},n.tickValues=function(t){return arguments.length?(l=t,n):l},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(a=+t,n):a},n.tickSubdivide=function(){return arguments.length&&n},n};var Zl="bottom",Vl={top:1,right:1,bottom:1,left:1};oa.svg.brush=function(){function n(t){t.each(function(){var t=oa.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",i).on("touchstart.brush",i),a=t.selectAll(".background").data([0]);a.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),t.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var o=t.selectAll(".resize").data(v,y);o.exit().remove(),o.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return Xl[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),o.style("display",n.empty()?"none":null);var l,f=oa.transition(t),h=oa.transition(a);c&&(l=Zu(c),h.attr("x",l[0]).attr("width",l[1]-l[0]),r(f)),s&&(l=Zu(s),h.attr("y",l[0]).attr("height",l[1]-l[0]),u(f)),e(f)})}function e(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+f[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function r(n){n.select(".extent").attr("x",f[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",f[1]-f[0])}function u(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function i(){function i(){32==oa.event.keyCode&&(C||(M=null,L[0]-=f[1],L[1]-=h[1],C=2),S())}function v(){32==oa.event.keyCode&&2==C&&(L[0]+=f[1],L[1]+=h[1],C=0,S())}function d(){var n=oa.mouse(b),t=!1;x&&(n[0]+=x[0],n[1]+=x[1]),C||(oa.event.altKey?(M||(M=[(f[0]+f[1])/2,(h[0]+h[1])/2]),L[0]=f[+(n[0]s?(u=r,r=s):u=s),v[0]!=r||v[1]!=u?(e?o=null:a=null,v[0]=r,v[1]=u,!0):void 0}function y(){d(),k.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),oa.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),z(),w({type:"brushend"})}var M,x,b=this,_=oa.select(oa.event.target),w=l.of(b,arguments),k=oa.select(b),N=_.datum(),E=!/^(n|s)$/.test(N)&&c,A=!/^(e|w)$/.test(N)&&s,C=_.classed("extent"),z=W(b),L=oa.mouse(b),q=oa.select(t(b)).on("keydown.brush",i).on("keyup.brush",v);if(oa.event.changedTouches?q.on("touchmove.brush",d).on("touchend.brush",y):q.on("mousemove.brush",d).on("mouseup.brush",y),k.interrupt().selectAll("*").interrupt(),C)L[0]=f[0]-L[0],L[1]=h[0]-L[1];else if(N){var T=+/w$/.test(N),R=+/^n/.test(N);x=[f[1-T]-L[0],h[1-R]-L[1]],L[0]=f[T],L[1]=h[R]}else oa.event.altKey&&(M=L.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),oa.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),d()}var a,o,l=N(n,"brushstart","brush","brushend"),c=null,s=null,f=[0,0],h=[0,0],g=!0,p=!0,v=$l[0];return n.event=function(n){n.each(function(){var n=l.of(this,arguments),t={x:f,y:h,i:a,j:o},e=this.__chart__||t;this.__chart__=t,Fl?oa.select(this).transition().each("start.brush",function(){a=e.i,o=e.j,f=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=xr(f,t.x),r=xr(h,t.y);return a=o=null,function(u){f=t.x=e(u),h=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){a=t.i,o=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,v=$l[!c<<1|!s],n):c},n.y=function(t){return arguments.length?(s=t,v=$l[!c<<1|!s],n):s},n.clamp=function(t){return arguments.length?(c&&s?(g=!!t[0],p=!!t[1]):c?g=!!t:s&&(p=!!t),n):c&&s?[g,p]:c?g:s?p:null},n.extent=function(t){var e,r,u,i,l;return arguments.length?(c&&(e=t[0],r=t[1],s&&(e=e[0],r=r[0]),a=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(l=e,e=r,r=l),(e!=f[0]||r!=f[1])&&(f=[e,r])),s&&(u=t[0],i=t[1],c&&(u=u[1],i=i[1]),o=[u,i],s.invert&&(u=s(u),i=s(i)),u>i&&(l=u,u=i,i=l),(u!=h[0]||i!=h[1])&&(h=[u,i])),n):(c&&(a?(e=a[0],r=a[1]):(e=f[0],r=f[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(l=e,e=r,r=l))),s&&(o?(u=o[0],i=o[1]):(u=h[0],i=h[1],s.invert&&(u=s.invert(u),i=s.invert(i)),u>i&&(l=u,u=i,i=l))),c&&s?[[e,u],[r,i]]:c?[e,r]:s&&[u,i])},n.clear=function(){return n.empty()||(f=[0,0],h=[0,0],a=o=null),n},n.empty=function(){return!!c&&f[0]==f[1]||!!s&&h[0]==h[1]},oa.rebind(n,l,"on")};var Xl={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},$l=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Bl=ho.format=Mo.timeFormat,Wl=Bl.utc,Jl=Wl("%Y-%m-%dT%H:%M:%S.%LZ");Bl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?ea:Jl,ea.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},ea.toString=Jl.toString,ho.second=On(function(n){return new go(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),ho.seconds=ho.second.range,ho.seconds.utc=ho.second.utc.range,ho.minute=On(function(n){return new go(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),ho.minutes=ho.minute.range,ho.minutes.utc=ho.minute.utc.range,ho.hour=On(function(n){var t=n.getTimezoneOffset()/60;return new go(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),ho.hours=ho.hour.range,ho.hours.utc=ho.hour.utc.range,ho.month=On(function(n){return n=ho.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),ho.months=ho.month.range,ho.months.utc=ho.month.utc.range;var Gl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Kl=[[ho.second,1],[ho.second,5],[ho.second,15],[ho.second,30],[ho.minute,1],[ho.minute,5],[ho.minute,15],[ho.minute,30],[ho.hour,1],[ho.hour,3],[ho.hour,6],[ho.hour,12],[ho.day,1],[ho.day,2],[ho.week,1],[ho.month,1],[ho.month,3],[ho.year,1]],Ql=Bl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",zt]]),nc={range:function(n,t,e){return oa.range(Math.ceil(n/e)*e,+t,e).map(ua)},floor:y,ceil:y};Kl.year=ho.year,ho.scale=function(){return ra(oa.scale.linear(),Kl,Ql)};var tc=Kl.map(function(n){return[n[0].utc,n[1]]}),ec=Wl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",zt]]);tc.year=ho.year.utc,ho.scale.utc=function(){return ra(oa.scale.linear(),tc,ec)},oa.text=An(function(n){return n.responseText}),oa.json=function(n,t){return Cn(n,"application/json",ia,t)},oa.html=function(n,t){return Cn(n,"text/html",aa,t)},oa.xml=An(function(n){return n.responseXML}),"function"==typeof define&&define.amd?(this.d3=oa,define(oa)):"object"==typeof module&&module.exports?module.exports=oa:this.d3=oa}(); \ No newline at end of file diff --git a/miniwob-sandbox/turk-www/core/jquery-ui/external/jquery/jquery.js b/miniwob-sandbox/turk-www/core/jquery-ui/external/jquery/jquery.js deleted file mode 100644 index 7fc60fc..0000000 --- a/miniwob-sandbox/turk-www/core/jquery-ui/external/jquery/jquery.js +++ /dev/null @@ -1,11008 +0,0 @@ -/*! - * jQuery JavaScript Library v1.12.4 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-05-20T17:17Z - */ - -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Support: Firefox 18+ -// Can't be in strict mode, several libs including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -//"use strict"; -var deletedIds = []; - -var document = window.document; - -var slice = deletedIds.slice; - -var concat = deletedIds.concat; - -var push = deletedIds.push; - -var indexOf = deletedIds.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - version = "1.12.4", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1, IE<9 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: deletedIds.sort, - splice: deletedIds.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var src, copyIsArray, copy, name, options, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = jQuery.isArray( copy ) ) ) ) { - - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray( src ) ? src : []; - - } else { - clone = src && jQuery.isPlainObject( src ) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type( obj ) === "function"; - }, - - isArray: Array.isArray || function( obj ) { - return jQuery.type( obj ) === "array"; - }, - - isWindow: function( obj ) { - /* jshint eqeqeq: false */ - return obj != null && obj == obj.window; - }, - - isNumeric: function( obj ) { - - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - var realStringObj = obj && obj.toString(); - return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - isPlainObject: function( obj ) { - var key; - - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - try { - - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call( obj, "constructor" ) && - !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { - return false; - } - } catch ( e ) { - - // IE8,9 Will throw exceptions on certain host objects #9897 - return false; - } - - // Support: IE<9 - // Handle iteration over inherited properties before own properties. - if ( !support.ownFirst ) { - for ( key in obj ) { - return hasOwn.call( obj, key ); - } - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; - }, - - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function( data ) { - if ( data && jQuery.trim( data ) ) { - - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); // jscs:ignore requireDotNotation - } )( data ); - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android<4.1, IE<9 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - var len; - - if ( arr ) { - if ( indexOf ) { - return indexOf.call( arr, elem, i ); - } - - len = arr.length; - i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; - - for ( ; i < len; i++ ) { - - // Skip accessing in sparse arrays - if ( i in arr && arr[ i ] === elem ) { - return i; - } - } - } - - return -1; - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - while ( j < len ) { - first[ i++ ] = second[ j++ ]; - } - - // Support: IE<9 - // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) - if ( len !== len ) { - while ( second[ j ] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var args, proxy, tmp; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: function() { - return +( new Date() ); - }, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -// JSHint would error on this code due to the Symbol not being defined in ES5. -// Defining this global in .jshintrc would create a danger of using the global -// unguarded in another place, it seems safer to just disable JSHint for these -// three lines. -/* jshint ignore: start */ -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = deletedIds[ Symbol.iterator ]; -} -/* jshint ignore: end */ - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: iOS 8.2 (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.2.1 - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-10-17 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, nidselect, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - - // ID selector - if ( (m = match[1]) ) { - - // Document context - if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !compilerCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - - if ( nodeType !== 1 ) { - newContext = context; - newSelector = selector; - - // qSA looks outside Element context, which is not what we want - // Thanks to Andrew Dupont for this workaround technique - // Support: IE <=8 - // Exclude object elements - } else if ( context.nodeName.toLowerCase() !== "object" ) { - - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", (nid = expando) ); - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; - while ( i-- ) { - groups[i] = nidselect + " " + toSelector( groups[i] ); - } - newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9-11, Edge - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( (parent = document.defaultView) && parent.top !== parent ) { - // Support: IE 11 - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); - } - } - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( document.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - return m ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - !compilerCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - // Use previously-cached element index if available - if ( useCache ) { - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); - - if ( (oldCache = uniqueCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context === document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - if ( !context && elem.ownerDocument !== document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - } ); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( jQuery.inArray( elem, qualifier ) > -1 ) !== not; - } ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, - ret = [], - self = this, - len = self.length; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // init accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector.charAt( 0 ) === "<" && - selector.charAt( selector.length - 1 ) === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[ 2 ] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[ 0 ] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return typeof root.ready !== "undefined" ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var i, - targets = jQuery( target, this ), - len = targets.length; - - return this.filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( pos ? - pos.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return jQuery.inArray( this[ 0 ], jQuery( elem ) ); - } - - // Locate the position of the desired element - return jQuery.inArray( - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem, this ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - do { - cur = cur[ dir ]; - } while ( cur && cur.nodeType !== 1 ); - - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - ret = jQuery.uniqueSort( ret ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - } - - return this.pushStack( ret ); - }; -} ); -var rnotwhite = ( /\S+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( jQuery.isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = true; - if ( !memory ) { - self.disable(); - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], - [ "notify", "progress", jQuery.Callbacks( "memory" ) ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this === promise ? newDefer.promise() : this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( function() { - - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || - ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. - // If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .progress( updateFunc( i, progressContexts, progressValues ) ) - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ); - } else { - --remaining; - } - } - } - - // if we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -} ); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -} ); - -/** - * Clean-up method for dom ready events - */ -function detach() { - if ( document.addEventListener ) { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - - } else { - document.detachEvent( "onreadystatechange", completed ); - window.detachEvent( "onload", completed ); - } -} - -/** - * The ready event handler and self cleanup method - */ -function completed() { - - // readyState === "complete" is good enough for us to call the dom ready in oldIE - if ( document.addEventListener || - window.event.type === "load" || - document.readyState === "complete" ) { - - detach(); - jQuery.ready(); - } -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called - // after the browser event has already occurred. - // Support: IE6-10 - // Older IE sometimes signals "interactive" too soon - if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - - // Standards-based browsers support DOMContentLoaded - } else if ( document.addEventListener ) { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); - - // If IE event model is used - } else { - - // Ensure firing before onload, maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", completed ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", completed ); - - // If IE and not a frame - // continually check to see if the document is ready - var top = false; - - try { - top = window.frameElement == null && document.documentElement; - } catch ( e ) {} - - if ( top && top.doScroll ) { - ( function doScrollCheck() { - if ( !jQuery.isReady ) { - - try { - - // Use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - top.doScroll( "left" ); - } catch ( e ) { - return window.setTimeout( doScrollCheck, 50 ); - } - - // detach all dom ready events - detach(); - - // and execute any waiting functions - jQuery.ready(); - } - } )(); - } - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); - - - - -// Support: IE<9 -// Iteration over object's inherited properties before its own -var i; -for ( i in jQuery( support ) ) { - break; -} -support.ownFirst = i === "0"; - -// Note: most support tests are defined in their respective modules. -// false until the test is run -support.inlineBlockNeedsLayout = false; - -// Execute ASAP in case we need to set body.style.zoom -jQuery( function() { - - // Minified: var a,b,c,d - var val, div, body, container; - - body = document.getElementsByTagName( "body" )[ 0 ]; - if ( !body || !body.style ) { - - // Return for frameset docs that don't have a body - return; - } - - // Setup - div = document.createElement( "div" ); - container = document.createElement( "div" ); - container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; - body.appendChild( container ).appendChild( div ); - - if ( typeof div.style.zoom !== "undefined" ) { - - // Support: IE<8 - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; - - support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; - if ( val ) { - - // Prevent IE 6 from affecting layout for positioned elements #11048 - // Prevent IE from shrinking the body in IE 7 mode #12869 - // Support: IE<8 - body.style.zoom = 1; - } - } - - body.removeChild( container ); -} ); - - -( function() { - var div = document.createElement( "div" ); - - // Support: IE<9 - support.deleteExpando = true; - try { - delete div.test; - } catch ( e ) { - support.deleteExpando = false; - } - - // Null elements to avoid leaks in IE. - div = null; -} )(); -var acceptData = function( elem ) { - var noData = jQuery.noData[ ( elem.nodeName + " " ).toLowerCase() ], - nodeType = +elem.nodeType || 1; - - // Do not set data on non-element DOM nodes because it will not be cleared (#8335). - return nodeType !== 1 && nodeType !== 9 ? - false : - - // Nodes accept data unless otherwise specified; rejection can be conditional - !noData || noData !== true && elem.getAttribute( "classid" ) === noData; -}; - - - - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /([A-Z])/g; - -function dataAttr( elem, key, data ) { - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - - var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// checks a cache object for emptiness -function isEmptyDataObject( obj ) { - var name; - for ( name in obj ) { - - // if the public data object is empty, the private is still empty - if ( name === "data" && jQuery.isEmptyObject( obj[ name ] ) ) { - continue; - } - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} - -function internalData( elem, name, data, pvt /* Internal Use Only */ ) { - if ( !acceptData( elem ) ) { - return; - } - - var ret, thisCache, - internalKey = jQuery.expando, - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( ( !id || !cache[ id ] || ( !pvt && !cache[ id ].data ) ) && - data === undefined && typeof name === "string" ) { - return; - } - - if ( !id ) { - - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; - } else { - id = internalKey; - } - } - - if ( !cache[ id ] ) { - - // Avoid exposing jQuery metadata on plain JS objects when the object - // is serialized using JSON.stringify - cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ] = jQuery.extend( cache[ id ], name ); - } else { - cache[ id ].data = jQuery.extend( cache[ id ].data, name ); - } - } - - thisCache = cache[ id ]; - - // jQuery data() is stored in a separate object inside the object's internal data - // cache in order to avoid key collisions between internal data and user-defined - // data. - if ( !pvt ) { - if ( !thisCache.data ) { - thisCache.data = {}; - } - - thisCache = thisCache.data; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // Check for both converted-to-camel and non-converted data property names - // If a data property was specified - if ( typeof name === "string" ) { - - // First Try to find as-is property data - ret = thisCache[ name ]; - - // Test for null|undefined property data - if ( ret == null ) { - - // Try to find the camelCased property - ret = thisCache[ jQuery.camelCase( name ) ]; - } - } else { - ret = thisCache; - } - - return ret; -} - -function internalRemoveData( elem, name, pvt ) { - if ( !acceptData( elem ) ) { - return; - } - - var thisCache, i, - isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - id = isNode ? elem[ jQuery.expando ] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - - thisCache = pvt ? cache[ id ] : cache[ id ].data; - - if ( thisCache ) { - - // Support array or space separated string names for data keys - if ( !jQuery.isArray( name ) ) { - - // try the string as a key before any manipulation - if ( name in thisCache ) { - name = [ name ]; - } else { - - // split the camel cased version by spaces unless a key with the spaces exists - name = jQuery.camelCase( name ); - if ( name in thisCache ) { - name = [ name ]; - } else { - name = name.split( " " ); - } - } - } else { - - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = name.concat( jQuery.map( name, jQuery.camelCase ) ); - } - - i = name.length; - while ( i-- ) { - delete thisCache[ name[ i ] ]; - } - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( pvt ? !isEmptyDataObject( thisCache ) : !jQuery.isEmptyObject( thisCache ) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( !pvt ) { - delete cache[ id ].data; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject( cache[ id ] ) ) { - return; - } - } - - // Destroy the cache - if ( isNode ) { - jQuery.cleanData( [ elem ], true ); - - // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) - /* jshint eqeqeq: false */ - } else if ( support.deleteExpando || cache != cache.window ) { - /* jshint eqeqeq: true */ - delete cache[ id ]; - - // When all else fails, undefined - } else { - cache[ id ] = undefined; - } -} - -jQuery.extend( { - cache: {}, - - // The following elements (space-suffixed to avoid Object.prototype collisions) - // throw uncatchable exceptions if you attempt to set expando properties - noData: { - "applet ": true, - "embed ": true, - - // ...but Flash objects (which have this classid) *can* handle expandos - "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[ jQuery.expando ] ] : elem[ jQuery.expando ]; - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data ) { - return internalData( elem, name, data ); - }, - - removeData: function( elem, name ) { - return internalRemoveData( elem, name ); - }, - - // For internal use only. - _data: function( elem, name, data ) { - return internalData( elem, name, data, true ); - }, - - _removeData: function( elem, name ) { - return internalRemoveData( elem, name, true ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Special expections of .data basically thwart jQuery.access, - // so implement the relevant behavior ourselves - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = jQuery.data( elem ); - - if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - jQuery._data( elem, "parsedAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - jQuery.data( this, key ); - } ); - } - - return arguments.length > 1 ? - - // Sets one value - this.each( function() { - jQuery.data( this, key, value ); - } ) : - - // Gets one value - // Try to fetch any internally stored data first - elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; - }, - - removeData: function( key ) { - return this.each( function() { - jQuery.removeData( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = jQuery._data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = jQuery._data( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // not intended for public consumption - generates a queueHooks object, - // or returns the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return jQuery._data( elem, key ) || jQuery._data( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - jQuery._removeData( elem, type + "queue" ); - jQuery._removeData( elem, key ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = jQuery._data( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); - - -( function() { - var shrinkWrapBlocksVal; - - support.shrinkWrapBlocks = function() { - if ( shrinkWrapBlocksVal != null ) { - return shrinkWrapBlocksVal; - } - - // Will be changed later if needed. - shrinkWrapBlocksVal = false; - - // Minified: var b,c,d - var div, body, container; - - body = document.getElementsByTagName( "body" )[ 0 ]; - if ( !body || !body.style ) { - - // Test fired too early or in an unsupported environment, exit. - return; - } - - // Setup - div = document.createElement( "div" ); - container = document.createElement( "div" ); - container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; - body.appendChild( container ).appendChild( div ); - - // Support: IE6 - // Check if elements with layout shrink-wrap their children - if ( typeof div.style.zoom !== "undefined" ) { - - // Reset CSS: box-sizing; display; margin; border - div.style.cssText = - - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + - "box-sizing:content-box;display:block;margin:0;border:0;" + - "padding:1px;width:1px;zoom:1"; - div.appendChild( document.createElement( "div" ) ).style.width = "5px"; - shrinkWrapBlocksVal = div.offsetWidth !== 3; - } - - body.removeChild( container ); - - return shrinkWrapBlocksVal; - }; - -} )(); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || - !jQuery.contains( elem.ownerDocument, elem ); - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, - scale = 1, - maxIterations = 20, - currentValue = tween ? - function() { return tween.cur(); } : - function() { return jQuery.css( elem, prop, "" ); }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - do { - - // If previous iteration zeroed out, double until we get *something*. - // Use string for doubling so we don't accidentally see scale as unchanged below - scale = scale || ".5"; - - // Adjust and apply - initialInUnit = initialInUnit / scale; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Update scale, tolerating zero or NaN from tween.cur() - // Break the loop if scale is unchanged or perfect, or if we've just had enough. - } while ( - scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations - ); - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - length = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < length; i++ ) { - fn( - elems[ i ], - key, - raw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - length ? fn( elems[ 0 ], key ) : emptyGet; -}; -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([\w:-]+)/ ); - -var rscriptType = ( /^$|\/(?:java|ecma)script/i ); - -var rleadingWhitespace = ( /^\s+/ ); - -var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|" + - "details|dialog|figcaption|figure|footer|header|hgroup|main|" + - "mark|meter|nav|output|picture|progress|section|summary|template|time|video"; - - - -function createSafeFragment( document ) { - var list = nodeNames.split( "|" ), - safeFrag = document.createDocumentFragment(); - - if ( safeFrag.createElement ) { - while ( list.length ) { - safeFrag.createElement( - list.pop() - ); - } - } - return safeFrag; -} - - -( function() { - var div = document.createElement( "div" ), - fragment = document.createDocumentFragment(), - input = document.createElement( "input" ); - - // Setup - div.innerHTML = "
            a"; - - // IE strips leading whitespace when .innerHTML is used - support.leadingWhitespace = div.firstChild.nodeType === 3; - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - support.tbody = !div.getElementsByTagName( "tbody" ).length; - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; - - // Makes sure cloning an html5 element does not cause problems - // Where outerHTML is undefined, this still works - support.html5Clone = - document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - input.type = "checkbox"; - input.checked = true; - fragment.appendChild( input ); - support.appendChecked = input.checked; - - // Make sure textarea (and checkbox) defaultValue is properly cloned - // Support: IE6-IE11+ - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // #11217 - WebKit loses check when the name is after the checked attribute - fragment.appendChild( div ); - - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input = document.createElement( "input" ); - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 - // old WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<9 - // Cloned elements keep attachEvent handlers, we use addEventListener on IE9+ - support.noCloneEvent = !!div.addEventListener; - - // Support: IE<9 - // Since attributes and properties are the same in IE, - // cleanData must set properties to undefined rather than use removeAttribute - div[ jQuery.expando ] = 1; - support.attributes = !div.getAttribute( jQuery.expando ); -} )(); - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - option: [ 1, "" ], - legend: [ 1, "
            ", "
            " ], - area: [ 1, "", "" ], - - // Support: IE8 - param: [ 1, "", "" ], - thead: [ 1, "", "
            " ], - tr: [ 2, "", "
            " ], - col: [ 2, "", "
            " ], - td: [ 3, "", "
            " ], - - // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, - // unless wrapped in a div with non-breaking characters in front of it. - _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
            ", "
            " ] -}; - -// Support: IE8-IE9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - - -function getAll( context, tag ) { - var elems, elem, - i = 0, - found = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== "undefined" ? - context.querySelectorAll( tag || "*" ) : - undefined; - - if ( !found ) { - for ( found = [], elems = context.childNodes || context; - ( elem = elems[ i ] ) != null; - i++ - ) { - if ( !tag || jQuery.nodeName( elem, tag ) ) { - found.push( elem ); - } else { - jQuery.merge( found, getAll( elem, tag ) ); - } - } - } - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], found ) : - found; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var elem, - i = 0; - for ( ; ( elem = elems[ i ] ) != null; i++ ) { - jQuery._data( - elem, - "globalEval", - !refElements || jQuery._data( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/, - rtbody = / from table fragments - if ( !support.tbody ) { - - // String was a , *may* have spurious - elem = tag === "table" && !rtbody.test( elem ) ? - tmp.firstChild : - - // String was a bare or - wrap[ 1 ] === "
            " && !rtbody.test( elem ) ? - tmp : - 0; - - j = elem && elem.childNodes.length; - while ( j-- ) { - if ( jQuery.nodeName( ( tbody = elem.childNodes[ j ] ), "tbody" ) && - !tbody.childNodes.length ) { - - elem.removeChild( tbody ); - } - } - } - - jQuery.merge( nodes, tmp.childNodes ); - - // Fix #12392 for WebKit and IE > 9 - tmp.textContent = ""; - - // Fix #12392 for oldIE - while ( tmp.firstChild ) { - tmp.removeChild( tmp.firstChild ); - } - - // Remember the top-level container for proper cleanup - tmp = safe.lastChild; - } - } - } - - // Fix #11356: Clear elements from fragment - if ( tmp ) { - safe.removeChild( tmp ); - } - - // Reset defaultChecked for any radios and checkboxes - // about to be appended to the DOM in IE 6/7 (#8060) - if ( !support.appendChecked ) { - jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); - } - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( safe.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - tmp = null; - - return safe; -} - - -( function() { - var i, eventName, - div = document.createElement( "div" ); - - // Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events) - for ( i in { submit: true, change: true, focusin: true } ) { - eventName = "on" + i; - - if ( !( support[ i ] = eventName in window ) ) { - - // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) - div.setAttribute( eventName, "t" ); - support[ i ] = div.attributes[ eventName ].expando === false; - } - } - - // Null elements to avoid leaks in IE. - div = null; -} )(); - - -var rformElems = /^(?:input|select|textarea)$/i, - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE9 -// See #13393 for more info -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - var tmp, events, t, handleObjIn, - special, eventHandle, handleObj, - handlers, type, namespaces, origType, - elemData = jQuery._data( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && - ( !e || jQuery.event.triggered !== e.type ) ? - jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : - undefined; - }; - - // Add elem as a property of the handle fn to prevent a memory leak - // with IE non-native events - eventHandle.elem = elem; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener/attachEvent if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - var j, handleObj, tmp, - origCount, t, events, - special, handlers, type, - namespaces, origType, - elemData = jQuery.hasData( elem ) && jQuery._data( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - - // removeData also checks for emptiness and clears the expando if empty - // so use it instead of delete - jQuery._removeData( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - var handle, ontype, cur, - bubbleType, special, tmp, i, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && - jQuery._data( cur, "handle" ); - - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( - ( !special._default || - special._default.apply( eventPath.pop(), data ) === false - ) && acceptData( elem ) - ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction() check here because IE6/7 fails that test. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - try { - elem[ type ](); - } catch ( e ) { - - // IE<9 dies on focus/blur to hidden element (#1486,#12518) - // only reproducible on winXP IE8 native, not IE9 in IE8 mode - } - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Support (at least): Chrome, IE9 - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // - // Support: Firefox<=42+ - // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) - if ( delegateCount && cur.nodeType && - ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { - - /* jshint eqeqeq: false */ - for ( ; cur != this; cur = cur.parentNode || this ) { - /* jshint eqeqeq: true */ - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push( { elem: cur, handlers: matches } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: IE<9 - // Fix target property (#1925) - if ( !event.target ) { - event.target = originalEvent.srcElement || document; - } - - // Support: Safari 6-8+ - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Support: IE<9 - // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) - event.metaKey = !!event.metaKey; - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + - "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split( " " ), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: ( "button buttons clientX clientY fromElement offsetX offsetY " + - "pageX pageY screenX screenY toElement" ).split( " " ), - filter: function( event, original ) { - var body, eventDoc, doc, - button = original.button, - fromElement = original.fromElement; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + - ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + - ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && fromElement ) { - event.relatedTarget = fromElement === event.target ? - original.toElement : - fromElement; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - try { - this.focus(); - return false; - } catch ( e ) { - - // Support: IE<9 - // If we error on focus to hidden element (#1486, #12518), - // let .trigger() run the handlers - } - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - // Piggyback on a donor event to simulate a different one - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - - // Previously, `originalEvent: {}` was set here, so stopPropagation call - // would not be triggered on donor event, since in our own - // jQuery.event.stopPropagation function we had a check for existence of - // originalEvent.stopPropagation method, so, consequently it would be a noop. - // - // Guard for simulated events was moved to jQuery.event.stopPropagation function - // since `originalEvent` should point to the original event for the - // constancy with other events and for more focused logic - } - ); - - jQuery.event.trigger( e, null, elem ); - - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } - } : - function( elem, type, handle ) { - var name = "on" + type; - - if ( elem.detachEvent ) { - - // #8545, #7054, preventing memory leaks for custom events in IE6-8 - // detachEvent needed property on element, by name of that event, - // to properly expose it to GC - if ( typeof elem[ name ] === "undefined" ) { - elem[ name ] = null; - } - - elem.detachEvent( name, handle ); - } - }; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: IE < 9, Android < 4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - if ( !e ) { - return; - } - - // If preventDefault exists, run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // Support: IE - // Otherwise set the returnValue property of the original event to false - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( !e || this.isSimulated ) { - return; - } - - // If stopPropagation exists, run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - - // Support: IE - // Set the cancelBubble property of the original event to true - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && e.stopImmediatePropagation ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://code.google.com/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -// IE submit delegation -if ( !support.submit ) { - - jQuery.event.special.submit = { - setup: function() { - - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Lazy-add a submit handler when a descendant form may potentially be submitted - jQuery.event.add( this, "click._submit keypress._submit", function( e ) { - - // Node name check avoids a VML-related crash in IE (#9807) - var elem = e.target, - form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? - - // Support: IE <=8 - // We use jQuery.prop instead of elem.form - // to allow fixing the IE8 delegated submit issue (gh-2332) - // by 3rd party polyfills/workarounds. - jQuery.prop( elem, "form" ) : - undefined; - - if ( form && !jQuery._data( form, "submit" ) ) { - jQuery.event.add( form, "submit._submit", function( event ) { - event._submitBubble = true; - } ); - jQuery._data( form, "submit", true ); - } - } ); - - // return undefined since we don't need an event listener - }, - - postDispatch: function( event ) { - - // If form was submitted by the user, bubble the event up the tree - if ( event._submitBubble ) { - delete event._submitBubble; - if ( this.parentNode && !event.isTrigger ) { - jQuery.event.simulate( "submit", this.parentNode, event ); - } - } - }, - - teardown: function() { - - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Remove delegated handlers; cleanData eventually reaps submit handlers attached above - jQuery.event.remove( this, "._submit" ); - } - }; -} - -// IE change delegation and checkbox/radio fix -if ( !support.change ) { - - jQuery.event.special.change = { - - setup: function() { - - if ( rformElems.test( this.nodeName ) ) { - - // IE doesn't fire change on a check/radio until blur; trigger it on click - // after a propertychange. Eat the blur-change in special.change.handle. - // This still fires onchange a second time for check/radio after blur. - if ( this.type === "checkbox" || this.type === "radio" ) { - jQuery.event.add( this, "propertychange._change", function( event ) { - if ( event.originalEvent.propertyName === "checked" ) { - this._justChanged = true; - } - } ); - jQuery.event.add( this, "click._change", function( event ) { - if ( this._justChanged && !event.isTrigger ) { - this._justChanged = false; - } - - // Allow triggered, simulated change events (#11500) - jQuery.event.simulate( "change", this, event ); - } ); - } - return false; - } - - // Delegated event; lazy-add a change handler on descendant inputs - jQuery.event.add( this, "beforeactivate._change", function( e ) { - var elem = e.target; - - if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "change" ) ) { - jQuery.event.add( elem, "change._change", function( event ) { - if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { - jQuery.event.simulate( "change", this.parentNode, event ); - } - } ); - jQuery._data( elem, "change", true ); - } - } ); - }, - - handle: function( event ) { - var elem = event.target; - - // Swallow native change events from checkbox/radio, we already triggered them above - if ( this !== elem || event.isSimulated || event.isTrigger || - ( elem.type !== "radio" && elem.type !== "checkbox" ) ) { - - return event.handleObj.handler.apply( this, arguments ); - } - }, - - teardown: function() { - jQuery.event.remove( this, "._change" ); - - return !rformElems.test( this.nodeName ); - } - }; -} - -// Support: Firefox -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome, Safari -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - jQuery._removeData( doc, fix ); - } else { - jQuery._data( doc, fix, attaches ); - } - } - }; - } ); -} - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - }, - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -var rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, - rnoshimcache = new RegExp( "<(?:" + nodeNames + ")[\\s/>]", "i" ), - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, - - // Support: IE 10-11, Edge 10240+ - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g, - safeFragment = createSafeFragment( document ), - fragmentDiv = safeFragment.appendChild( document.createElement( "div" ) ); - -// Support: IE<8 -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName( "tbody" )[ 0 ] || - elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( jQuery.find.attr( elem, "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute( "type" ); - } - return elem; -} - -function cloneCopyEvent( src, dest ) { - if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { - return; - } - - var type, i, l, - oldData = jQuery._data( src ), - curData = jQuery._data( dest, oldData ), - events = oldData.events; - - if ( events ) { - delete curData.handle; - curData.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - - // make the cloned public data object a copy from the original - if ( curData.data ) { - curData.data = jQuery.extend( {}, curData.data ); - } -} - -function fixCloneNodeIssues( src, dest ) { - var nodeName, e, data; - - // We do not need to do anything for non-Elements - if ( dest.nodeType !== 1 ) { - return; - } - - nodeName = dest.nodeName.toLowerCase(); - - // IE6-8 copies events bound via attachEvent when using cloneNode. - if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { - data = jQuery._data( dest ); - - for ( e in data.events ) { - jQuery.removeEvent( dest, e, data.handle ); - } - - // Event data gets referenced instead of copied if the expando gets copied too - dest.removeAttribute( jQuery.expando ); - } - - // IE blanks contents when cloning scripts, and tries to evaluate newly-set text - if ( nodeName === "script" && dest.text !== src.text ) { - disableScript( dest ).text = src.text; - restoreScript( dest ); - - // IE6-10 improperly clones children of object elements using classid. - // IE10 throws NoModificationAllowedError if parent is null, #12132. - } else if ( nodeName === "object" ) { - if ( dest.parentNode ) { - dest.outerHTML = src.outerHTML; - } - - // This path appears unavoidable for IE9. When cloning an object - // element in IE9, the outerHTML strategy above is not sufficient. - // If the src has innerHTML and the destination does not, - // copy the src.innerHTML into the dest.innerHTML. #10324 - if ( support.html5Clone && ( src.innerHTML && !jQuery.trim( dest.innerHTML ) ) ) { - dest.innerHTML = src.innerHTML; - } - - } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - - // IE6-8 fails to persist the checked state of a cloned checkbox - // or radio button. Worse, IE6-7 fail to give the cloned element - // a checked appearance if the defaultChecked value isn't also set - - dest.defaultChecked = dest.checked = src.checked; - - // IE6-7 get confused and end up setting the value of a cloned - // checkbox/radio button to an empty string instead of "on" - if ( dest.value !== src.value ) { - dest.value = src.value; - } - - // IE6-8 fails to return the selected option to the default selected - // state when cloning options - } else if ( nodeName === "option" ) { - dest.defaultSelected = dest.selected = src.defaultSelected; - - // IE6-8 fails to set the defaultValue to the correct value when - // cloning other types of input fields - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var first, node, hasScripts, - scripts, doc, fragment, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android<4.1, PhantomJS<2 - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !jQuery._data( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( - ( node.text || node.textContent || node.innerHTML || "" ) - .replace( rcleanScript, "" ) - ); - } - } - } - } - - // Fix #11809: Avoid leaking memory - fragment = first = null; - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - elems = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = elems[ i ] ) != null; i++ ) { - - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var destElements, node, clone, i, srcElements, - inPage = jQuery.contains( elem.ownerDocument, elem ); - - if ( support.html5Clone || jQuery.isXMLDoc( elem ) || - !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { - - clone = elem.cloneNode( true ); - - // IE<=8 does not properly clone detached, unknown element nodes - } else { - fragmentDiv.innerHTML = elem.outerHTML; - fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); - } - - if ( ( !support.noCloneEvent || !support.noCloneChecked ) && - ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - // Fix all IE cloning issues - for ( i = 0; ( node = srcElements[ i ] ) != null; ++i ) { - - // Ensure that the destination node is not null; Fixes #9587 - if ( destElements[ i ] ) { - fixCloneNodeIssues( node, destElements[ i ] ); - } - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0; ( node = srcElements[ i ] ) != null; i++ ) { - cloneCopyEvent( node, destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - destElements = srcElements = node = null; - - // Return the cloned set - return clone; - }, - - cleanData: function( elems, /* internal */ forceAcceptData ) { - var elem, type, id, data, - i = 0, - internalKey = jQuery.expando, - cache = jQuery.cache, - attributes = support.attributes, - special = jQuery.event.special; - - for ( ; ( elem = elems[ i ] ) != null; i++ ) { - if ( forceAcceptData || acceptData( elem ) ) { - - id = elem[ internalKey ]; - data = id && cache[ id ]; - - if ( data ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Remove cache only if it was not already removed by jQuery.event.remove - if ( cache[ id ] ) { - - delete cache[ id ]; - - // Support: IE<9 - // IE does not allow us to delete expando properties from nodes - // IE creates expando attributes along with the property - // IE does not have a removeAttribute function on Document nodes - if ( !attributes && typeof elem.removeAttribute !== "undefined" ) { - elem.removeAttribute( internalKey ); - - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://code.google.com/p/chromium/issues/detail?id=378607 - } else { - elem[ internalKey ] = undefined; - } - - deletedIds.push( id ); - } - } - } - } - } -} ); - -jQuery.fn.extend( { - - // Keep domManip exposed until 3.0 (gh-2225) - domManip: domManip, - - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().append( - ( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value ) - ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - } - - // Remove any remaining nodes - while ( elem.firstChild ) { - elem.removeChild( elem.firstChild ); - } - - // If this is a select, ensure that it displays empty (#12336) - // Support: IE<9 - if ( elem.options && jQuery.nodeName( elem, "select" ) ) { - elem.options.length = 0; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined ) { - return elem.nodeType === 1 ? - elem.innerHTML.replace( rinlinejQuery, "" ) : - undefined; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - ( support.htmlSerialize || !rnoshimcache.test( value ) ) && - ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - - // Remove element nodes and prevent memory leaks - elem = this[ i ] || {}; - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - i = 0, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); - - -var iframe, - elemdisplay = { - - // Support: Firefox - // We have to pre-define these values for FF (#10227) - HTML: "block", - BODY: "block" - }; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ - -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - display = jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = ( iframe || jQuery( "
            ").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){settings=$.extend({cookieId:"treeview"},settings);if(settings.add){return this.trigger("add",[settings.add]);}if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}function toggler(){$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}function serialize(){function binary(arg){return arg?1:0;}var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}break;}branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery); \ No newline at end of file diff --git a/miniwob-sandbox/turk-www/common/special/search-engine/jquery.twbsPagination.min.js b/miniwob-sandbox/turk-www/common/special/search-engine/jquery.twbsPagination.min.js deleted file mode 100644 index 8ad0ed1..0000000 --- a/miniwob-sandbox/turk-www/common/special/search-engine/jquery.twbsPagination.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - * jQuery Bootstrap Pagination v1.4.1 - * https://github.com/esimakin/twbs-pagination - * - * Copyright 2014-2016, Eugene Simakin - * Released under Apache-2.0 license - * http://apache.org/licenses/LICENSE-2.0.html - */ -!function(a,b,c,d){"use strict";var e=a.fn.twbsPagination,f=function(b,c){if(this.$element=a(b),this.options=a.extend({},a.fn.twbsPagination.defaults,c),this.options.startPage<1||this.options.startPage>this.options.totalPages)throw new Error("Start page option is incorrect");if(this.options.totalPages=parseInt(this.options.totalPages),isNaN(this.options.totalPages))throw new Error("Total pages option is not correct!");if(this.options.visiblePages=parseInt(this.options.visiblePages),isNaN(this.options.visiblePages))throw new Error("Visible pages option is not correct!");if(this.options.onPageClick instanceof Function&&this.$element.first().on("page",this.options.onPageClick),this.options.hideOnlyOnePage&&1==this.options.totalPages)return this.$element.trigger("page",1),this;this.options.totalPages"),this.$listContainer.addClass(this.options.paginationClass),"UL"!==d&&this.$element.append(this.$listContainer),this.options.initiateStartPageClick?this.show(this.options.startPage):(this.currentPage=this.options.startPage,this.render(this.getPages(this.options.startPage)),this.setupEvents()),this};f.prototype={constructor:f,destroy:function(){return this.$element.empty(),this.$element.removeData("twbs-pagination"),this.$element.off("page"),this},show:function(a){if(a<1||a>this.options.totalPages)throw new Error("Page is incorrect.");return this.currentPage=a,this.render(this.getPages(a)),this.setupEvents(),this.$element.trigger("page",a),this},enable:function(){this.show(this.currentPage)},disable:function(){var b=this;this.$listContainer.off("click").on("click","li",function(a){a.preventDefault()}),this.$listContainer.children().each(function(){var c=a(this);c.hasClass(b.options.activeClass)||a(this).addClass(b.options.disabledClass)})},buildListItems:function(a){var b=[];if(this.options.first&&b.push(this.buildItem("first",1)),this.options.prev){var c=a.currentPage>1?a.currentPage-1:this.options.loop?this.options.totalPages:1;b.push(this.buildItem("prev",c))}for(var d=0;d"),e=a(""),f=this.options[b]?this.makeText(this.options[b],c):c;return d.addClass(this.options[b+"Class"]),d.data("page",c),d.data("page-type",b),d.append(e.attr("href",this.makeHref(c)).addClass(this.options.anchorClass).html(f)),d},getPages:function(a){var b=[],c=Math.floor(this.options.visiblePages/2),d=a-c+1-this.options.visiblePages%2,e=a+c;d<=0&&(d=1,e=this.options.visiblePages),e>this.options.totalPages&&(d=this.options.totalPages-this.options.visiblePages+1,e=this.options.totalPages);for(var f=d;f<=e;)b.push(f),f++;return{currentPage:a,numeric:b}},render:function(b){var c=this;this.$listContainer.children().remove();var d=this.buildListItems(b);a.each(d,function(a,b){c.$listContainer.append(b)}),this.$listContainer.children().each(function(){var d=a(this),e=d.data("page-type");switch(e){case"page":d.data("page")===b.currentPage&&d.addClass(c.options.activeClass);break;case"first":d.toggleClass(c.options.disabledClass,1===b.currentPage);break;case"last":d.toggleClass(c.options.disabledClass,b.currentPage===c.options.totalPages);break;case"prev":d.toggleClass(c.options.disabledClass,!c.options.loop&&1===b.currentPage);break;case"next":d.toggleClass(c.options.disabledClass,!c.options.loop&&b.currentPage===c.options.totalPages)}})},setupEvents:function(){var b=this;this.$listContainer.off("click").on("click","li",function(c){var d=a(this);return!d.hasClass(b.options.disabledClass)&&!d.hasClass(b.options.activeClass)&&(!b.options.href&&c.preventDefault(),void b.show(parseInt(d.data("page"))))})},makeHref:function(a){return this.options.href?this.generateQueryString(a):"#"},makeText:function(a,b){return a.replace(this.options.pageVariable,b).replace(this.options.totalPagesVariable,this.options.totalPages)},getPageFromQueryString:function(a){var b=this.getSearchString(a),c=new RegExp(this.options.pageVariable+"(=([^&#]*)|&|#|$)"),d=c.exec(b);return d&&d[2]?(d=decodeURIComponent(d[2]),d=parseInt(d),isNaN(d)?null:d):null},generateQueryString:function(a,b){var c=this.getSearchString(b),d=new RegExp(this.options.pageVariable+"=*[^&#]*");return c?"?"+c.replace(d,this.options.pageVariable+"="+a):""},getSearchString:function(a){var c=a||b.location.search;return""===c?null:(0===c.indexOf("?")&&(c=c.substr(1)),c)},getCurrentPage:function(){return this.currentPage}},a.fn.twbsPagination=function(b){var c,e=Array.prototype.slice.call(arguments,1),g=a(this),h=g.data("twbs-pagination"),i="object"==typeof b?b:{};return h||g.data("twbs-pagination",h=new f(this,i)),"string"==typeof b&&(c=h[b].apply(h,e)),c===d?g:c},a.fn.twbsPagination.defaults={totalPages:1,startPage:1,visiblePages:5,initiateStartPageClick:!0,hideOnlyOnePage:!1,href:!1,pageVariable:"{{page}}",totalPagesVariable:"{{total_pages}}",page:null,first:"First",prev:"Previous",next:"Next",last:"Last",loop:!1,onPageClick:null,paginationClass:"pagination",nextClass:"page-item next",prevClass:"page-item prev",lastClass:"page-item last",firstClass:"page-item first",pageClass:"page-item",activeClass:"active",disabledClass:"disabled",anchorClass:"page-link"},a.fn.twbsPagination.Constructor=f,a.fn.twbsPagination.noConflict=function(){return a.fn.twbsPagination=e,this},a.fn.twbsPagination.version="1.4.1"}(window.jQuery,window,document); \ No newline at end of file diff --git a/miniwob-sandbox/turk-www/common/special/social-media/like-hover.png b/miniwob-sandbox/turk-www/common/special/social-media/like-hover.png deleted file mode 100644 index 35afcca0d9e653056cb26a1081bf337d8ac36814..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1424 zcmZ`%X;4#F82y08uti2fMVMj{2rz}=*_Aax})78lw&1#tlt4cQQaLVDkeI@2GWxyyIYJ>U7xT_oY50W?!v zQvjd^a{VLGypia}Mrf>SKlB_;@9pvn@dIcnHG9pcptXG>H!=hu#~I+@R{(PeI`{-2 z69agb0Kl#SuuiY-itqt2s0k0|aS%ZVpaf49tW*K6Bu3OQG^zpDfG65jfQOpgMK}WA z#pDv31Q!*sP^=`fh^7W?99YwU>!nC>0#^W&%tcJJ^@jg83&|27Sr;jIkTI@B=t-M1Q{V5p%;GyGu*#|89PNpv=5;ALT@>zW^(d zxlAHU2A>55_`^38J1$z7q;t0k(H9*iy1^#bnk)oTMS&q4>U}c{>vim<8oDijAtTV= zj~CNFSgDP+j96BYgyZH?@kN7$Q(1fV{Mr-OJ)b$9-^!Pb^!CjA3Q~&$@>hFPs;i9#ndM2> z4x~4ldwZEG!c(fsU555G@itquNB=l>_xtkFOf2O=fK>IQl# z5jJx7iSBAl(zPi&GPYH2Ihx2lBdIkkD=V>C?>u_XrMs}sSLn@PzRGE*%m>#CCsJ=L zIBe)`V};+R7HKFS7sO)CGM2ZL;%L=pjIlQ_Ib7_pdCca!zA*YM9!fv#7)t*Q_oD~f zhtL~-IBw!u)nMX`bLheRBhFP<%tNq(Ccm*_S1f3WR5hGk;!yQ4Kl|H+9_&`@T<*)M z@WH2M8JAm{_nZCoLdain{Hn`R>Cd|(!p?OFy~is>vnO(&isIrUCZa0_WHV8ZH?*~E z@8mm0Q35AR=;05I?tEG?l+aCpf>oWgT?=!x zKOc=VU3`~+otiezukV+8FgS^X(Rui3zeLRD^Sahp1z9TxDi@4x7_)a3=$QGIh)X~Sr2AB8qZ zIiWjQq|SZyyY{w4YW;z8=Uc9Y8Oqd?tBZA1t$9)gTrHF6*HZvg^1q5fw!CFK7LHqA(F diff --git a/miniwob-sandbox/turk-www/common/special/social-media/like.png b/miniwob-sandbox/turk-www/common/special/social-media/like.png deleted file mode 100644 index 6b548c358a3c898bff52c055b3ebbb7cbcd09548..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1307 zcmZ`(dpOg382`?OtSmY%jojsS5UDw#(`1@iZkbDA84Wwj+*YoK6_qkM(y`IBWYU&Z zv}AdzMOsdb;-m|mb(Sc{W!UX@&#<=o5l) zJ0Qe<&t(Xxf<$Q)R1vBEA^rfgRV~+0w4vELIcP@+00j;Ju*v}V3{k8p0QPwR@Fo!e zA1(lG4~HV# z`V|29YXZ)nl=gh0E+Ne*#z_8c5+!`7kI_z7H@T#1+nm!ur#hHvSVl=!t-B;?GTn+* z$11lj?=`9ar2b9!fv)+XgW*I%`h_-=zbi*Q@!ZeV#N+hhcknRouw^8=aJWI)uLNiz8(D z1&tZG(Rb{~vmynvd@Z7LLIbN!N~%@)T=Ub23S?H67W}-GAGoI{rsP!;d8Zi`%PdMV z$6()4R}2-ag_igC^BPDG*-@)i=5;dDr>UR$`P!XVHTr)bqot9q{4ewr&J8Z=@8*Nm zCBwg{Cf}o~4`e8lVe>L`@<{P?R!!exS*VT-PA%$BpBJ)*%kBc_!~LpUae(mN*H}kG zy}cVxwId$S4J|AU;zG??jOSo%K^o|SN+i=P6b6};+EhE+IvwU>qcG|$d~JJm=ekyD z4C}=vM^8ulgqvkmTqZ6#+X9;S73_#C;h4vAon^RBwsuxJ}y z=D`3jx`qd*lavSS>q4u3UCL!g+AGQbPz`qqR;*-KxUTYxLtBDDlk?%u!1x;s7I_lM zwG9`MutFKUS<7oUdidcM@c2PM)7F6>n!Hj5~rg z5e~{_)<7I$yqgY3oLM-Vpm!@_&f=-Dx3l38LV(~#Xm3pOZtBqjj52RgUR9)Ab`nh6 z?msSKH9YEldE~{g^3Tax{^X{nfEHr4=0mn*SG0Lw!TW8xllIEO?$G4Swwzi)JbY$A zLVVjHxSaoZPx0v{2Pxk7LYDPNZz=z4z`kt?&gr=Y$zOtwmJaHz9-{b)G$9{3GxgJP zy)alw4JUR~!|UFnV81QWL~pq1MV_d_HwsM}xS#ZTdHgW?{SRG>I^`O5!L1Gh3(9Ne zWeH}>%|vZ*rm%mvSYnGP;iwIb_y(MydYq zv2(lviBY{5V0Arj7kT+#33lt8MKT879lZE3sEo-_-ktPO~rdymId5j*X*y7u-jjSS#yp^odF3 z-*!K?v)N#VwjWq!1^t1w%)nUY9txA{lblV30Ic`$#JG8Sx_M$q9v(hWcwv6@@Pr!Q zCxqbt2+}k5&{FdMUl3fT{s;-s-yI?|Qkc1vY%0jj&2^_S=sC%hOsacEcIv5FKQrhE N5CTJS7q=!J{1@NlI2`~0 diff --git a/miniwob-sandbox/turk-www/common/special/social-media/more-hover.png b/miniwob-sandbox/turk-www/common/special/social-media/more-hover.png deleted file mode 100644 index dea7d186cacb4570c2e283c87eb5cc85740ffa8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 695 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP@*WnC&U#tz-?Q1Kc&D>Ei=zO`PPx93g^^wMxp~hD zenmX`9?_{XReEOJ>~7!gnE5%|j$cj@bJgTu^-E%XW~IrMsmo43%8#oG*!TS>cWig9 zXuk44r6-4ZmG^6%@Hso>->g~n9?4QSSN+{ywbQEmT9^5f%|83tl)X=9eBHa$+9)Dz z&NPLs+%Fa_zj%px55pdo4{A;Qf;AH#giHRJ@!)*r%GO#9jwXc@p+6XPPsDc0t`|}U z`cbvSHKHUXu_VKdAc7#UlcT3Q*HYa19^85q3gzsG{2AvZrI zGp!Q0hFL*rJAfJ_K{f>ErERK(!v>gTe~ HDWM4fcaj6N diff --git a/miniwob-sandbox/turk-www/common/special/social-media/more.png b/miniwob-sandbox/turk-www/common/special/social-media/more.png deleted file mode 100644 index 764e0ce3e97dfd5fd88390014bdc0d5868104127..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 850 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Sk<_s4#jUi2B8=>TniM=;978hhy`6SGTi8+L_2lU81(E;l|4y9suKE<@r5|@IX3x&{$`T5?NL+6-S90kDWjD#3ZmS@`L_BTm) zV)mvet=f{?d+89{4Dozj-bFbFv-qDGDXH$`%-_0NV!^&v^Bv|V|EK)!zyGS;B6^0l z68AszFM*QJudVxXcK;rs-#e^5{~XAEUYpQx?C*WmJsej<|DJuY#{A0mzyotvrpQ+= zU$QCNvyR7nir(>U;rp0*cI>$NdBX~sy}w^itX`Y(-*5BPxgR*L{=6MOG33_Vmbp?z z3(6N{@~f;}{Ndr^1=d+2=fsu;Uz@nhcEb&8hKO3$uP1khe7s^g_1k~J^E}_wpYKeu zKbYS9_VB};!#Cs}r5a>KpO}@Ca(mi7E0%QWn3Nu_8DDCqnDukpdA(jOdi!+2jWpKN zN*97$Zcb9Pn5JAZJNZ~ah2SyE&-qMZsord#3*{D8&oMpQHeufJ=nuWS(yEr+qAXP8FD1G)j8!4b722WQ%mvv4FO#t~jSU>;( diff --git a/miniwob-sandbox/turk-www/common/special/social-media/reply-hover.png b/miniwob-sandbox/turk-www/common/special/social-media/reply-hover.png deleted file mode 100644 index e73751332c19cdd475acefbdeff245553c41dec7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1235 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#N0|R4HfKP}kPyt892llFW ztmW_7tKYI$y=4QF?3Exkd-WUksyATrEnDRq_L|pRWv>|;{(}Uo-g1Bxyk)C;2UN^f z^@amTR=;7be$9{uRPdI)@*M|Is^Tp}!z+;Dn%4{r|JkeGu~oifD0~bO0UB8O4y3XQ zCNSK74BisK^jjdRB*-tAL8(-~;BR>T-Wz$j zIrlWwrP#7Ro!Yvvw=y-*g!SA077v~;4vbl4oR4BN|DDzP=>O+L`Y+p8a;prtY+}*1 zarO@GT6gKIRmQI0)k5)yW~6-BbDsI3$mgW_0zWtUL@OJAXOi9>^OEbr+#Rd$)+rpj z81?$GV?=}R4G*CGj7i?^E({&4vLFs;fk$L9Fj-v(VMZs7*%d%R_7YEDSM~?o0t}3r z%RbaK0`+Y1ba4!cIDGe7c=#a)0oDhi(p@61jx2(rIT}q$953i#ME<~f;Rc3v=Tlp_de}Vc8&5}c6bN7D z43=}&x>xwb?UYK>-L9Dur|V`GDdn+k5pdmeVbhFcRkvA*hwLm(ZIfruogE(_B6gKO zv^+y|-yHTe9_s=OuZ3T~R@}h5Oh-iS_3UUPg)>uHmF}|!hj8Vb7Qb2>vsNgfU6b3j zF*aAsgk zE48_wx-j@{JTQ}CPI4pnzWT~m)^(K+*lwpA)=jy;h;f<^{}OAPg858xA8NnNU}|D{ z(D~YaH>X1ja~wzQv9m1iwOK2e3xa;Vk$uq2Qgdi}GmFYW=U1EG%SZj^e=1(hmw7$x zq3Ri6l&Y4vMwFx^mZVxG7o`Fz1|tJQGhIVNT|=`F0|P4qLn{+QZ6Il2AYCc?7)3*F zeoAIqC2kE_Dr@6`8YDqB1m~xflqVLYGL)B>>t*I;7bhncr0V4trO$q6BL!5%;OXk; Jvd$@?2>_ph^l$(G diff --git a/miniwob-sandbox/turk-www/common/special/social-media/reply.png b/miniwob-sandbox/turk-www/common/special/social-media/reply.png deleted file mode 100644 index 40a525c5c6997cc165026420426a96d6a3810fec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1094 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Sk<_pF7#KNT&CI*cz`!ix>EalYaqsO6UmsydiMIPU zr^LN*H1X4w2^n_#0&mVf z!Jcq5P9QhMHuAe*I}_{WfCUqjG?qNrZ1F7q1fzob?=Q2GjrJx?oaynRKbb-N?R3*- z$G3R}GXmWjZdkr5y<6uwdB?)G)z5MmxU$y2HjbSjH^aS&(cz8GS1VoLPlDBp=W^^b zW&E&-o#9U!Z{u>dh8Ke0X3Vx_SdlS3XrBp__4%uE0vC1Xdon)A+P7pw%v_cQegSs1 zPnRh1^u38-;o#fo#xG#Ddiodfb*C>V2x)1#i$8aGV3qyIj?HKH3>n6T)7vkoEZkG1 zw3CbJddF{#jCS7B1~*R2KAd39>iMqg{4by4``c7zi)8okb}DUb@oE*)S{iiFeRtro zQyJpdEL9VJ`c8fw zXUJ`}yFRc7(8sw4PE>f|SzZ}i*&ro@-$4$0Y^lwz20Xw6mG7Uug) ztYWtPD4cw@Oy)%yH{*{Rjn5eyyL@(?!`C1 zKe^pde~r80X=DNa2PTDmKWgMVDwsEf)d$S4i+wE0aIx0*3r7R*``-^l4^%NMxb3Z2 z->{ZpUkCF&#teqnG5b8vRg@J*m&imf`S<5{h3djyr{-AvZrIGp!Q0hU#z6%77Xq vK{f>ErERK(!v>gTe~DWM4ftlY_+ diff --git a/miniwob-sandbox/turk-www/common/special/social-media/retweet-hover.png b/miniwob-sandbox/turk-www/common/special/social-media/retweet-hover.png deleted file mode 100644 index 9f4d16ce353aba775572b75eb91aa463f3ba0975..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 991 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP~u*IPlzj!X86C1;s0`m z|4YCO2zx2R|3ye#px`Qo|1%l>1I2-CAObRgr~$@Z0h0m>0*wMHSPW)BlmSf!G9Vg( z<^UBy)NF3JKU~UWpdK53KfPN<8u13jm7BG zVn)@M{gU@91uk(O{u8k2yM6nMFUlR|Qh%;oodz_MG0EHAg`tC0)&t1lEbxdd21e6$ z5N34Jm|X!BWH0gbb!C6R%`a}j@s&?75~!!Z)5S3);_%yP*NYB0@VHJ->QdYi;QapT zmwVBZ{{GiLC9q+lG>C#Bm1TAm7t2JE{% zRm&vH#6dPLd~v2#^J_iD1y{}fI=Kt;M6ta1CU@?Jd;}AZyZ`^999DywO5aTuGe6@l zx#p>ru=CLM(!C2Ax9EyzY*%OGbB|pH> zyH)Qne-P7m+<%jya_hMkh80pdE5hEn&AiBPr=%^(QUAH5=z-!5stO#U zmFta+)60p#=ujy9k+6IPJ1_p0@ zz9yh($jwj5OsmALVXmO>9iRqDkPX54X(i=}MX3zs<>h*rdD+Fui3O>8`9NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Sk<_s4#m)7v&)M-8sOh(-i(^Q}y|**sJwzO3j_)t7 zj#}8->eA>Y5XiCD#nVxsW$q1oSC!WS5BJ1|AJI_ZU{3a4F>lL@3D;)tZZ_6YcG+N} zFStl<(Sqr5T>^{vel>@LNW8r3$3L-h`{wf9ccb)w*Y5iHZ=dn+o404)+{r9sS@h(@ z#Kr%0l463oS^F&xtYN8F0VsU&lXFy@wXtk9M`S5UcNmC7NboS6FMl?^A{%-WttUgF(SJ(1zc){_#^b8Y?nF7&xF zbcpOcw((v{|7XShXBo_=tGb^M`y4yND?5iJ;7&Z-#?wLajMoqEe#=xay=-IA9{*zQ zzzLW9);kAZ{rhQ(F2g^*7t2KVb_8?Zek8T~UAVq>ehK>l#t4x}%bRHvb~)~7UUWvX zXwtS9dpdj>K7~YFdzX}XEWq*BJEopJFSooEG`V{`P(`=2a>t@L&l?u(M-r80`)^J^ zbnx)~+<7hk1pH?A?7O5@JD>4(cwPgzU)Y)c+aWtpT2K< z%g}PPR^qh4kAqpW=Kaf@71dTUBip}&ao$>$D^`h2);nuWt||EHnVfmc{O5D6=~?0G z3f9UtxdY5o3cc1|S{tIg-Ti{^?H{Zkl~*5mT{3;H;MEfS>y`zoR}SfW6h1mw(j_`! z*O#4h)D>TwTB-hy&-nczcVDG)-JI!8c`cPPt{o1sHhTJ+t0$ry%9 z{M!2&V|ASN{+U$LZ|ZdT@t>&5a}D$J+qJit?)FK#IZ0z|c(B&`{UVG{nf*%GA`##9Z6J z(8|D|w9=peMMG|WN@iLmZVfCd9cO?VBtbR==ckpFCl;kLl$V$5W#(lUCnpx9>g5-u U&wghk1ysb~>FVdQ&MBb@0A2062mk;8 diff --git a/miniwob-sandbox/turk-www/common/special/social-media/share-hover.png b/miniwob-sandbox/turk-www/common/special/social-media/share-hover.png deleted file mode 100644 index 0a6db26aad11e69c9e70cc341ffd396c59939549..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1508 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.append.apply(this,t.slice(1))},t.prototype.contains=function(t){for(var e,n=this.iterator();e=n();)if(e===t)return!0;return!1},t.prototype.insertBefore=function(t,e){t.next=e,null!=e?(t.prev=e.prev,null!=e.prev&&(e.prev.next=t),e.prev=t,e===this.head&&(this.head=t)):null!=this.tail?(this.tail.next=t,t.prev=this.tail,this.tail=t):(t.prev=void 0,this.head=this.tail=t),this.length+=1},t.prototype.offset=function(t){for(var e=0,n=this.head;null!=n;){if(n===t)return e;e+=n.length(),n=n.next}return-1},t.prototype.remove=function(t){this.contains(t)&&(null!=t.prev&&(t.prev.next=t.next),null!=t.next&&(t.next.prev=t.prev),t===this.head&&(this.head=t.next),t===this.tail&&(this.tail=t.prev),this.length-=1)},t.prototype.iterator=function(t){return void 0===t&&(t=this.head),function(){var e=t;return null!=t&&(t=t.next),e}},t.prototype.find=function(t,e){void 0===e&&(e=!1);for(var n,r=this.iterator();n=r();){var o=n.length();if(ta?n(r,t-a,Math.min(e,a+u-t)):n(r,0,Math.min(u,t+e-a)),a+=u}},t.prototype.map=function(t){return this.reduce(function(e,n){return e.push(t(n)),e},[])},t.prototype.reduce=function(t,e){for(var n,r=this.iterator();n=r();)e=t(e,n);return e},t}();Object.defineProperty(e,"__esModule",{value:!0}),e.default=n},function(t,e,n){"use strict";var r=n(6),o=function(){function t(t){this.domNode=t,this.attach()}return Object.defineProperty(t.prototype,"statics",{get:function(){return this.constructor},enumerable:!0,configurable:!0}),t.create=function(t){if(null==this.tagName)throw new r.ParchmentError("Blot definition missing tagName");var e;return Array.isArray(this.tagName)?("string"==typeof t&&(t=t.toUpperCase(),parseInt(t).toString()===t&&(t=parseInt(t))),e="number"==typeof t?document.createElement(this.tagName[t-1]):this.tagName.indexOf(t)>-1?document.createElement(t):document.createElement(this.tagName[0])):e=document.createElement(this.tagName),this.className&&e.classList.add(this.className),e},t.prototype.attach=function(){this.domNode[r.DATA_KEY]={blot:this}},t.prototype.clone=function(){var t=this.domNode.cloneNode();return r.create(t)},t.prototype.detach=function(){null!=this.parent&&this.parent.removeChild(this),delete this.domNode[r.DATA_KEY]},t.prototype.deleteAt=function(t,e){var n=this.isolate(t,e);n.remove()},t.prototype.formatAt=function(t,e,n,o){var i=this.isolate(t,e);if(null!=r.query(n,r.Scope.BLOT)&&o)i.wrap(n,o);else if(null!=r.query(n,r.Scope.ATTRIBUTE)){var l=r.create(this.statics.scope);i.wrap(l),l.format(n,o)}},t.prototype.insertAt=function(t,e,n){var o=null==n?r.create("text",e):r.create(e,n),i=this.split(t);this.parent.insertBefore(o,i)},t.prototype.insertInto=function(t,e){if(null!=this.parent&&this.parent.children.remove(this),t.children.insertBefore(this,e),null!=e)var n=e.domNode;null!=this.next&&this.domNode.nextSibling==n||t.domNode.insertBefore(this.domNode,n),this.parent=t},t.prototype.isolate=function(t,e){var n=this.split(t);return n.split(e),n},t.prototype.length=function(){return 1},t.prototype.offset=function(t){return void 0===t&&(t=this.parent),null==this.parent||this==t?0:this.parent.children.offset(this)+this.parent.offset(t)},t.prototype.optimize=function(){null!=this.domNode[r.DATA_KEY]&&delete this.domNode[r.DATA_KEY].mutations},t.prototype.remove=function(){null!=this.domNode.parentNode&&this.domNode.parentNode.removeChild(this.domNode),this.detach()},t.prototype.replace=function(t){null!=t.parent&&(t.parent.insertBefore(this,t.next),t.remove())},t.prototype.replaceWith=function(t,e){var n="string"==typeof t?r.create(t,e):t;return n.replace(this),n},t.prototype.split=function(t,e){return 0===t?this:this.next},t.prototype.update=function(t){void 0===t&&(t=[])},t.prototype.wrap=function(t,e){var n="string"==typeof t?r.create(t,e):t;return null!=this.parent&&this.parent.insertBefore(n,this.next),n.appendChild(this),n},t.blotName="abstract",t}();Object.defineProperty(e,"__esModule",{value:!0}),e.default=o},function(t,e){"use strict";function n(t,e){var n=o(t);if(null==n)throw new a("Unable to create "+t+" blot");var r=n,i=t instanceof Node?t:r.create(e);return new r(i,e)}function r(t,n){return void 0===n&&(n=!1),null==t?null:null!=t[e.DATA_KEY]?t[e.DATA_KEY].blot:n?r(t.parentNode,n):null}function o(t,e){void 0===e&&(e=p.ANY);var n;if("string"==typeof t)n=f[t]||s[t];else if(t instanceof Text)n=f.text;else if("number"==typeof t)t&p.LEVEL&p.BLOCK?n=f.block:t&p.LEVEL&p.INLINE&&(n=f.inline);else if(t instanceof HTMLElement){var r=(t.getAttribute("class")||"").split(/\s+/);for(var o in r)if(n=u[r[o]])break;n=n||c[t.tagName]}return null==n&&t instanceof Node&&console.log(t.nodeType),null==n?null:e&p.LEVEL&n.scope&&e&p.TYPE&n.scope?n:null}function i(){for(var t=[],e=0;e1)return t.map(function(t){return i(t)});var n=t[0];if("string"!=typeof n.blotName&&"string"!=typeof n.attrName)throw new a("Invalid definition");if("abstract"===n.blotName)throw new a("Cannot register abstract class");if(f[n.blotName||n.attrName]=n,"string"==typeof n.keyName)s[n.keyName]=n;else if(null!=n.className&&(u[n.className]=n),null!=n.tagName){Array.isArray(n.tagName)?n.tagName=n.tagName.map(function(t){return t.toUpperCase()}):n.tagName=n.tagName.toUpperCase();var r=Array.isArray(n.tagName)?n.tagName:[n.tagName];r.forEach(function(t){null!=c[t]&&null!=n.className||(c[t]=n)})}return n}var l=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},a=function(t){function e(e){e="[Parchment] "+e,t.call(this,e),this.message=e,this.name=this.constructor.name}return l(e,t),e}(Error);e.ParchmentError=a;var s={},u={},c={},f={};e.DATA_KEY="__blot",function(t){t[t.TYPE=3]="TYPE",t[t.LEVEL=12]="LEVEL",t[t.ATTRIBUTE=13]="ATTRIBUTE",t[t.BLOT=14]="BLOT",t[t.INLINE=7]="INLINE",t[t.BLOCK=11]="BLOCK",t[t.BLOCK_BLOT=10]="BLOCK_BLOT",t[t.INLINE_BLOT=6]="INLINE_BLOT",t[t.BLOCK_ATTRIBUTE=9]="BLOCK_ATTRIBUTE",t[t.INLINE_ATTRIBUTE=5]="INLINE_ATTRIBUTE",t[t.ANY=15]="ANY"}(e.Scope||(e.Scope={}));var p=e.Scope;e.create=n,e.find=r,e.query=o,e.register=i},function(t,e,n){"use strict";var r=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},o=n(8),i=n(9),l=n(3),a=n(6),s=function(t){function e(){t.apply(this,arguments)}return r(e,t),e.formats=function(t){return"string"==typeof this.tagName||(Array.isArray(this.tagName)?t.tagName.toLowerCase():void 0)},e.prototype.attach=function(){t.prototype.attach.call(this),this.attributes=new i.default(this.domNode)},e.prototype.format=function(t,e){var n=a.query(t);n instanceof o.default?this.attributes.attribute(n,e):e&&(null==n||t===this.statics.blotName&&this.formats()[t]===e||this.replaceWith(t,e))},e.prototype.formats=function(){var t=this.attributes.values(),e=this.statics.formats(this.domNode);return null!=e&&(t[this.statics.blotName]=e),t},e.prototype.replaceWith=function(e,n){var r=t.prototype.replaceWith.call(this,e,n);return this.attributes.copy(r),r},e.prototype.update=function(e){var n=this;t.prototype.update.call(this,e),e.some(function(t){return t.target===n.domNode&&"attributes"===t.type})&&this.attributes.build()},e.prototype.wrap=function(n,r){var o=t.prototype.wrap.call(this,n,r);return o instanceof e&&o.statics.scope===this.statics.scope&&this.attributes.move(o),o},e}(l.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=s},function(t,e,n){"use strict";var r=n(6),o=function(){function t(t,e,n){void 0===n&&(n={}),this.attrName=t,this.keyName=e;var o=r.Scope.TYPE&r.Scope.ATTRIBUTE;null!=n.scope?this.scope=n.scope&r.Scope.LEVEL|o:this.scope=r.Scope.ATTRIBUTE,null!=n.whitelist&&(this.whitelist=n.whitelist)}return t.keys=function(t){return[].map.call(t.attributes,function(t){return t.name})},t.prototype.add=function(t,e){return!!this.canAdd(t,e)&&(t.setAttribute(this.keyName,e),!0)},t.prototype.canAdd=function(t,e){var n=r.query(t,r.Scope.BLOT&(this.scope|r.Scope.TYPE));return null!=n&&(null==this.whitelist||this.whitelist.indexOf(e)>-1)},t.prototype.remove=function(t){t.removeAttribute(this.keyName)},t.prototype.value=function(t){return t.getAttribute(this.keyName)},t}();Object.defineProperty(e,"__esModule",{value:!0}),e.default=o},function(t,e,n){"use strict";var r=n(8),o=n(10),i=n(11),l=n(6),a=function(){function t(t){this.attributes={},this.domNode=t,this.build()}return t.prototype.attribute=function(t,e){e?t.add(this.domNode,e)&&(null!=t.value(this.domNode)?this.attributes[t.attrName]=t:delete this.attributes[t.attrName]):(t.remove(this.domNode),delete this.attributes[t.attrName])},t.prototype.build=function(){var t=this;this.attributes={};var e=r.default.keys(this.domNode),n=o.default.keys(this.domNode),a=i.default.keys(this.domNode);e.concat(n).concat(a).forEach(function(e){var n=l.query(e,l.Scope.ATTRIBUTE);n instanceof r.default&&(t.attributes[n.attrName]=n)})},t.prototype.copy=function(t){var e=this;Object.keys(this.attributes).forEach(function(n){var r=e.attributes[n].value(e.domNode);t.format(n,r)})},t.prototype.move=function(t){var e=this;this.copy(t),Object.keys(this.attributes).forEach(function(t){e.attributes[t].remove(e.domNode)}),this.attributes={}},t.prototype.values=function(){var t=this;return Object.keys(this.attributes).reduce(function(e,n){return e[n]=t.attributes[n].value(t.domNode),e},{})},t}();Object.defineProperty(e,"__esModule",{value:!0}),e.default=a},function(t,e,n){"use strict";function r(t,e){var n=t.getAttribute("class")||"";return n.split(/\s+/).filter(function(t){return 0===t.indexOf(e+"-")})}var o=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},i=n(8),l=function(t){function e(){t.apply(this,arguments)}return o(e,t),e.keys=function(t){return(t.getAttribute("class")||"").split(/\s+/).map(function(t){return t.split("-").slice(0,-1).join("-")})},e.prototype.add=function(t,e){return!!this.canAdd(t,e)&&(this.remove(t),t.classList.add(this.keyName+"-"+e),!0)},e.prototype.remove=function(t){var e=r(t,this.keyName);e.forEach(function(e){t.classList.remove(e)}),0===t.classList.length&&t.removeAttribute("class")},e.prototype.value=function(t){var e=r(t,this.keyName)[0]||"";return e.slice(this.keyName.length+1)},e}(i.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=l},function(t,e,n){"use strict";function r(t){var e=t.split("-"),n=e.slice(1).map(function(t){return t[0].toUpperCase()+t.slice(1)}).join("");return e[0]+n}var o=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},i=n(8),l=function(t){function e(){t.apply(this,arguments)}return o(e,t),e.keys=function(t){return(t.getAttribute("style")||"").split(";").map(function(t){var e=t.split(":");return e[0].trim()})},e.prototype.add=function(t,e){return!!this.canAdd(t,e)&&(t.style[r(this.keyName)]=e,!0)},e.prototype.remove=function(t){t.style[r(this.keyName)]="",t.getAttribute("style")||t.removeAttribute("style")},e.prototype.value=function(t){return t.style[r(this.keyName)]},e}(i.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=l},function(t,e,n){"use strict";var r=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},o=n(5),i=n(6),l=function(t){function e(){t.apply(this,arguments)}return r(e,t),e.value=function(t){return!0},e.prototype.index=function(t,e){return t!==this.domNode?-1:Math.min(e,1)},e.prototype.position=function(t,e){var n=[].indexOf.call(this.parent.domNode.childNodes,this.domNode);return t>0&&(n+=1),[this.parent.domNode,n]},e.prototype.value=function(){return t={},t[this.statics.blotName]=this.statics.value(this.domNode)||!0,t;var t},e.scope=i.Scope.INLINE_BLOT,e}(o.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=l},function(t,e,n){"use strict";var r=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},o=n(3),i=n(6),l={attributes:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0},a=100,s=function(t){function e(e){var n=this;t.call(this,e),this.parent=null,this.observer=new MutationObserver(function(t){n.update(t)}),this.observer.observe(this.domNode,l)}return r(e,t),e.prototype.detach=function(){t.prototype.detach.call(this),this.observer.disconnect()},e.prototype.deleteAt=function(e,n){this.update(),0===e&&n===this.length()?this.children.forEach(function(t){t.remove()}):t.prototype.deleteAt.call(this,e,n)},e.prototype.formatAt=function(e,n,r,o){this.update(),t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.insertAt=function(e,n,r){this.update(),t.prototype.insertAt.call(this,e,n,r)},e.prototype.optimize=function(e){var n=this;void 0===e&&(e=[]),t.prototype.optimize.call(this),e.push.apply(e,this.observer.takeRecords());for(var r=function(t,e){void 0===e&&(e=!0),null!=t&&t!==n&&null!=t.domNode.parentNode&&(null==t.domNode[i.DATA_KEY].mutations&&(t.domNode[i.DATA_KEY].mutations=[]),e&&r(t.parent))},l=function(t){null!=t.domNode[i.DATA_KEY]&&null!=t.domNode[i.DATA_KEY].mutations&&(t instanceof o.default&&t.children.forEach(l),t.optimize())},s=e,u=0;s.length>0;u+=1){if(u>=a)throw new Error("[Parchment] Maximum optimize iterations reached");s.forEach(function(t){var e=i.find(t.target,!0);null!=e&&(e.domNode===t.target&&("childList"===t.type?(r(i.find(t.previousSibling,!1)),[].forEach.call(t.addedNodes,function(t){var e=i.find(t,!1);r(e,!1),e instanceof o.default&&e.children.forEach(function(t){r(t,!1)})})):"attributes"===t.type&&r(e.prev)),r(e))}),this.children.forEach(l),s=this.observer.takeRecords(),e.push.apply(e,s)}},e.prototype.update=function(e){var n=this;e=e||this.observer.takeRecords(),e.map(function(t){var e=i.find(t.target,!0);if(null!=e)return null==e.domNode[i.DATA_KEY].mutations?(e.domNode[i.DATA_KEY].mutations=[t],e):(e.domNode[i.DATA_KEY].mutations.push(t),null)}).forEach(function(t){null!=t&&t!==n&&null!=t.domNode[i.DATA_KEY]&&t.update(t.domNode[i.DATA_KEY].mutations||[])}),null!=this.domNode[i.DATA_KEY].mutations&&t.prototype.update.call(this,this.domNode[i.DATA_KEY].mutations),this.optimize(e)},e.blotName="scroll",e.defaultChild="block",e.scope=i.Scope.BLOCK_BLOT,e.tagName="DIV",e}(o.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=s},function(t,e,n){"use strict";function r(t,e){if(Object.keys(t).length!==Object.keys(e).length)return!1;for(var n in t)if(t[n]!==e[n])return!1;return!0}var o=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},i=n(7),l=n(6),a=function(t){function e(){t.apply(this,arguments)}return o(e,t),e.formats=function(n){if(n.tagName!==e.tagName)return t.formats.call(this,n)},e.prototype.format=function(n,r){var o=this;n!==this.statics.blotName||r?t.prototype.format.call(this,n,r):(this.children.forEach(function(t){t instanceof i.default||(t=t.wrap(e.blotName,!0)),o.attributes.copy(t)}),this.unwrap())},e.prototype.formatAt=function(e,n,r,o){if(null!=this.formats()[r]||l.query(r,l.Scope.ATTRIBUTE)){var i=this.isolate(e,n);i.format(r,o)}else t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.optimize=function(){t.prototype.optimize.call(this);var n=this.formats();if(0===Object.keys(n).length)return this.unwrap();var o=this.next;o instanceof e&&o.prev===this&&r(n,o.formats())&&(o.moveChildren(this),o.remove())},e.blotName="inline",e.scope=l.Scope.INLINE_BLOT,e.tagName="SPAN",e}(i.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=a},function(t,e,n){"use strict";var r=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},o=n(7),i=n(6),l=function(t){function e(){t.apply(this,arguments)}return r(e,t),e.formats=function(n){var r=i.query(e.blotName).tagName;if(n.tagName!==r)return t.formats.call(this,n)},e.prototype.format=function(n,r){null!=i.query(n,i.Scope.BLOCK)&&(n!==this.statics.blotName||r?t.prototype.format.call(this,n,r):this.replaceWith(e.blotName))},e.prototype.formatAt=function(e,n,r,o){null!=i.query(r,i.Scope.BLOCK)?this.format(r,o):t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.insertAt=function(e,n,r){if(null==r||null!=i.query(n,i.Scope.INLINE))t.prototype.insertAt.call(this,e,n,r);else{var o=this.split(e),l=i.create(n,r);o.parent.insertBefore(l,o)}},e.blotName="block",e.scope=i.Scope.BLOCK_BLOT,e.tagName="P",e}(o.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=l},function(t,e,n){"use strict";var r=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},o=n(12),i=function(t){function e(){t.apply(this,arguments)}return r(e,t),e.formats=function(t){},e.prototype.format=function(e,n){t.prototype.formatAt.call(this,0,this.length(),e,n)},e.prototype.formatAt=function(e,n,r,o){0===e&&n===this.length()?this.format(r,o):t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.formats=function(){return this.statics.formats(this.domNode)},e}(o.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=i},function(t,e,n){"use strict";var r=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},o=n(12),i=n(6),l=function(t){function e(e){t.call(this,e),this.text=this.statics.value(this.domNode)}return r(e,t),e.create=function(t){return document.createTextNode(t)},e.value=function(t){return t.data},e.prototype.deleteAt=function(t,e){this.domNode.data=this.text=this.text.slice(0,t)+this.text.slice(t+e)},e.prototype.index=function(t,e){return this.domNode===t?e:-1},e.prototype.insertAt=function(e,n,r){null==r?(this.text=this.text.slice(0,e)+n+this.text.slice(e),this.domNode.data=this.text):t.prototype.insertAt.call(this,e,n,r)},e.prototype.length=function(){return this.text.length},e.prototype.optimize=function(){t.prototype.optimize.call(this),this.text=this.statics.value(this.domNode),0===this.text.length?this.remove():this.next instanceof e&&this.next.prev===this&&(this.insertAt(this.length(),this.next.value()),this.next.remove())},e.prototype.position=function(t,e){return void 0===e&&(e=!1),[this.domNode,t]},e.prototype.split=function(t,e){if(void 0===e&&(e=!1),!e){if(0===t)return this;if(t===this.length())return this.next}var n=i.create(this.domNode.splitText(t));return this.parent.insertBefore(n,this.next),this.text=this.statics.value(this.domNode),n},e.prototype.update=function(t){var e=this;t.some(function(t){return"characterData"===t.type&&t.target===e.domNode})&&(this.text=this.statics.value(this.domNode))},e.prototype.value=function(){return this.text},e.blotName="text",e.scope=i.Scope.INLINE_BLOT,e}(o.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=l},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){if(e=(0,j.default)(!0,{container:t,modules:{clipboard:!0,keyboard:!0,history:!0}},e),e.theme&&e.theme!==S.DEFAULTS.theme){if(e.theme=S.import("themes/"+e.theme),null==e.theme)throw new Error("Invalid theme "+e.theme+". Did you register it?")}else e.theme=T.default;var n=(0,j.default)(!0,{},e.theme.DEFAULTS);[n,e].forEach(function(t){t.modules=t.modules||{},Object.keys(t.modules).forEach(function(e){t.modules[e]===!0&&(t.modules[e]={})})});var r=Object.keys(n.modules).concat(Object.keys(e.modules)),o=r.reduce(function(t,e){var n=S.import("modules/"+e);return null==n?P.error("Cannot load "+e+" module. Are you sure you registered it?"):t[e]=n.DEFAULTS||{},t},{});return null!=e.modules&&e.modules.toolbar&&e.modules.toolbar.constructor!==Object&&(e.modules.toolbar={container:e.modules.toolbar}),e=(0,j.default)(!0,{},S.DEFAULTS,{modules:o},n,e),["bounds","container"].forEach(function(t){"string"==typeof e[t]&&(e[t]=document.querySelector(e[t]))}),e.modules=Object.keys(e.modules).reduce(function(t,n){return e.modules[n]&&(t[n]=e.modules[n]),t},{}),e}function a(t,e,n,r){if(!this.options.strict&&!this.isEnabled()&&e===g.default.sources.USER)return new d.default;var o=null==n?null:this.getSelection(),i=this.editor.delta,l=t();if(null!=o&&(n===!0&&(n=o.index),null==r?o=u(o,l,e):0!==r&&(o=u(o,n,r,e)),this.setSelection(o,g.default.sources.SILENT)),l.length()>0){var a,s=[g.default.events.TEXT_CHANGE,l,i,e];if((a=this.emitter).emit.apply(a,[g.default.events.EDITOR_CHANGE].concat(s)),e!==g.default.sources.SILENT){var c;(c=this.emitter).emit.apply(c,s)}}return l}function s(t,e,n,r,o){var i={};return"number"==typeof t.index&&"number"==typeof t.length?"number"!=typeof e?(o=r,r=n,n=e,e=t.length,t=t.index):(e=t.length,t=t.index):"number"!=typeof e&&(o=r,r=n,n=e,e=0),"object"===("undefined"==typeof n?"undefined":c(n))?(i=n,o=r):"string"==typeof n&&(null!=r?i[n]=r:o=n),o=o||g.default.sources.API,[t,e,i,o]}function u(t,e,n,r){if(null==t)return null;var o=void 0,i=void 0;if(e instanceof d.default){var l=[t.index,t.index+t.length].map(function(t){return e.transformPosition(t,r===g.default.sources.USER)}),a=f(l,2);o=a[0],i=a[1]}else{var s=[t.index,t.index+t.length].map(function(t){return t=0?t+n:Math.max(e,t+n)}),u=f(s,2);o=u[0],i=u[1]}return new x.Range(o,i-o)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.overload=e.expandConfig=void 0;var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),p=function(){function t(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};if(i(this,t),this.options=l(e,r),this.container=this.options.container,null==this.container)return P.error("Invalid Quill container",e);this.options.debug&&t.debug(this.options.debug);var o=this.container.innerHTML.trim(); -this.container.classList.add("ql-container"),this.container.innerHTML="",this.root=this.addContainer("ql-editor"),this.root.classList.add("ql-blank"),this.emitter=new g.default,this.scroll=w.default.create(this.root,{emitter:this.emitter,whitelist:this.options.formats}),this.editor=new v.default(this.scroll),this.selection=new k.default(this.scroll,this.emitter),this.theme=new this.options.theme(this,this.options),this.keyboard=this.theme.addModule("keyboard"),this.clipboard=this.theme.addModule("clipboard"),this.history=this.theme.addModule("history"),this.theme.init(),this.emitter.on(g.default.events.EDITOR_CHANGE,function(t){t===g.default.events.TEXT_CHANGE&&n.root.classList.toggle("ql-blank",n.editor.isBlank())}),this.emitter.on(g.default.events.SCROLL_UPDATE,function(t,e){var r=n.selection.lastRange,o=r&&0===r.length?r.index:void 0;a.call(n,function(){return n.editor.update(null,e,o)},t)});var s=this.clipboard.convert("
            "+o+"


            ");this.setContents(s),this.history.clear(),this.options.placeholder&&this.root.setAttribute("data-placeholder",this.options.placeholder),this.options.readOnly&&this.disable()}return p(t,null,[{key:"debug",value:function(t){t===!0&&(t="log"),N.default.level(t)}},{key:"import",value:function(t){return null==this.imports[t]&&P.error("Cannot import "+t+". Are you sure it was registered?"),this.imports[t]}},{key:"register",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"!=typeof t){var o=t.attrName||t.blotName;"string"==typeof o?this.register("formats/"+o,t,e):Object.keys(t).forEach(function(r){n.register(r,t[r],e)})}else null==this.imports[t]||r||P.warn("Overwriting "+t+" with",e),this.imports[t]=e,(t.startsWith("blots/")||t.startsWith("formats/"))&&"abstract"!==e.blotName&&w.default.register(e)}}]),p(t,[{key:"addContainer",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof t){var n=t;t=document.createElement("div"),t.classList.add(n)}return this.container.insertBefore(t,e),t}},{key:"blur",value:function(){this.selection.setRange(null)}},{key:"deleteText",value:function(t,e,n){var r=this,o=s(t,e,n),i=f(o,4);return t=i[0],e=i[1],n=i[3],a.call(this,function(){return r.editor.deleteText(t,e)},n,t,-1*e)}},{key:"disable",value:function(){this.enable(!1)}},{key:"enable",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.scroll.enable(t),this.container.classList.toggle("ql-disabled",!t),t||this.blur()}},{key:"focus",value:function(){this.selection.focus(),this.selection.scrollIntoView()}},{key:"format",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:g.default.sources.API;return a.call(this,function(){var r=n.getSelection(!0),i=new d.default;if(null==r)return i;if(w.default.query(t,w.default.Scope.BLOCK))i=n.editor.formatLine(r.index,r.length,o({},t,e));else{if(0===r.length)return n.selection.format(t,e),i;i=n.editor.formatText(r.index,r.length,o({},t,e))}return n.setSelection(r,g.default.sources.SILENT),i},r)}},{key:"formatLine",value:function(t,e,n,r,o){var i=this,l=void 0,u=s(t,e,n,r,o),c=f(u,4);return t=c[0],e=c[1],l=c[2],o=c[3],a.call(this,function(){return i.editor.formatLine(t,e,l)},o,t,0)}},{key:"formatText",value:function(t,e,n,r,o){var i=this,l=void 0,u=s(t,e,n,r,o),c=f(u,4);return t=c[0],e=c[1],l=c[2],o=c[3],a.call(this,function(){return i.editor.formatText(t,e,l)},o,t,0)}},{key:"getBounds",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return"number"==typeof t?this.selection.getBounds(t,e):this.selection.getBounds(t.index,t.length)}},{key:"getContents",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getLength()-t,n=s(t,e),r=f(n,2);return t=r[0],e=r[1],this.editor.getContents(t,e)}},{key:"getFormat",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.getSelection(),e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return"number"==typeof t?this.editor.getFormat(t,e):this.editor.getFormat(t.index,t.length)}},{key:"getLength",value:function(){return this.scroll.length()}},{key:"getModule",value:function(t){return this.theme.modules[t]}},{key:"getSelection",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t&&this.focus(),this.update(),this.selection.getRange()[0]}},{key:"getText",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getLength()-t,n=s(t,e),r=f(n,2);return t=r[0],e=r[1],this.editor.getText(t,e)}},{key:"hasFocus",value:function(){return this.selection.hasFocus()}},{key:"insertEmbed",value:function(e,n,r){var o=this,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.sources.API;return a.call(this,function(){return o.editor.insertEmbed(e,n,r)},i,e)}},{key:"insertText",value:function(t,e,n,r,o){var i=this,l=void 0,u=s(t,0,n,r,o),c=f(u,4);return t=c[0],l=c[2],o=c[3],a.call(this,function(){return i.editor.insertText(t,e,l)},o,t,e.length)}},{key:"isEnabled",value:function(){return!this.container.classList.contains("ql-disabled")}},{key:"off",value:function(){return this.emitter.off.apply(this.emitter,arguments)}},{key:"on",value:function(){return this.emitter.on.apply(this.emitter,arguments)}},{key:"once",value:function(){return this.emitter.once.apply(this.emitter,arguments)}},{key:"pasteHTML",value:function(t,e,n){this.clipboard.dangerouslyPasteHTML(t,e,n)}},{key:"removeFormat",value:function(t,e,n){var r=this,o=s(t,e,n),i=f(o,4);return t=i[0],e=i[1],n=i[3],a.call(this,function(){return r.editor.removeFormat(t,e)},n,t)}},{key:"setContents",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g.default.sources.API;return a.call(this,function(){t=new d.default(t);var n=e.getLength(),r=e.editor.deleteText(0,n),o=e.editor.applyDelta(t),i=o.ops[o.ops.length-1];null!=i&&"string"==typeof i.insert&&"\n"===i.insert[i.insert.length-1]&&(e.editor.deleteText(e.getLength()-1,1),o.delete(1));var l=r.compose(o);return l},n)}},{key:"setSelection",value:function(e,n,r){if(null==e)this.selection.setRange(null,n||t.sources.API);else{var o=s(e,n,r),i=f(o,4);e=i[0],n=i[1],r=i[3],this.selection.setRange(new x.Range(e,n),r)}this.selection.scrollIntoView()}},{key:"setText",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g.default.sources.API,n=(new d.default).insert(t);return this.setContents(n,e)}},{key:"update",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g.default.sources.USER,e=this.scroll.update(t);return this.selection.update(t),e}},{key:"updateContents",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g.default.sources.API;return a.call(this,function(){return t=new d.default(t),e.editor.applyDelta(t,n)},n,!0)}}]),t}();S.DEFAULTS={bounds:null,formats:null,modules:{},placeholder:"",readOnly:!1,strict:!0,theme:"default"},S.events=g.default.events,S.sources=g.default.sources,S.version="1.1.5",S.imports={delta:d.default,parchment:w.default,"core/module":_.default,"core/theme":T.default},e.expandConfig=l,e.overload=s,e.default=S},function(t,e){"use strict";var n=document.createElement("div");n.classList.toggle("test-class",!1),n.classList.contains("test-class")&&!function(){var t=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,n){return arguments.length>1&&!this.contains(e)==!n?n:t.call(this,e)}}(),String.prototype.startsWith||(String.prototype.startsWith=function(t,e){return e=e||0,this.substr(e,t.length)===t}),String.prototype.endsWith||(String.prototype.endsWith=function(t,e){var n=this.toString();("number"!=typeof e||!isFinite(e)||Math.floor(e)!==e||e>n.length)&&(e=n.length),e-=t.length;var r=n.indexOf(t,e);return r!==-1&&r===e}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function t(e){if(null===this)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var t,n=Object(this),r=n.length>>>0,o=arguments[1],i=0;i0&&(n.attributes=e),this.push(n))},s.prototype.delete=function(t){return t<=0?this:this.push({delete:t})},s.prototype.retain=function(t,e){if(t<=0)return this;var n={retain:t};return null!=e&&"object"==typeof e&&Object.keys(e).length>0&&(n.attributes=e),this.push(n)},s.prototype.push=function(t){var e=this.ops.length,n=this.ops[e-1];if(t=i(!0,{},t),"object"==typeof n){if("number"==typeof t.delete&&"number"==typeof n.delete)return this.ops[e-1]={delete:n.delete+t.delete},this;if("number"==typeof n.delete&&null!=t.insert&&(e-=1,n=this.ops[e-1],"object"!=typeof n))return this.ops.unshift(t),this;if(o(t.attributes,n.attributes)){if("string"==typeof t.insert&&"string"==typeof n.insert)return this.ops[e-1]={insert:n.insert+t.insert},"object"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this;if("number"==typeof t.retain&&"number"==typeof n.retain)return this.ops[e-1]={retain:n.retain+t.retain},"object"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this}}return e===this.ops.length?this.ops.push(t):this.ops.splice(e,0,t),this},s.prototype.filter=function(t){return this.ops.filter(t)},s.prototype.forEach=function(t){this.ops.forEach(t)},s.prototype.map=function(t){return this.ops.map(t)},s.prototype.partition=function(t){var e=[],n=[];return this.forEach(function(r){var o=t(r)?e:n;o.push(r)}),[e,n]},s.prototype.reduce=function(t,e){return this.ops.reduce(t,e)},s.prototype.chop=function(){var t=this.ops[this.ops.length-1];return t&&t.retain&&!t.attributes&&this.ops.pop(),this},s.prototype.length=function(){return this.reduce(function(t,e){return t+l.length(e)},0)},s.prototype.slice=function(t,e){t=t||0,"number"!=typeof e&&(e=1/0);for(var n=[],r=l.iterator(this.ops),o=0;o0&&(e.push(t.ops[0]),e.ops=e.ops.concat(t.ops.slice(1))),e},s.prototype.diff=function(t,e){if(this.ops===t.ops)return new s;var n=[this,t].map(function(e){return e.map(function(n){if(null!=n.insert)return"string"==typeof n.insert?n.insert:a;var r=e===t?"on":"with";throw new Error("diff() called "+r+" non-document")}).join("")}),i=new s,u=r(n[0],n[1],e),c=l.iterator(this.ops),f=l.iterator(t.ops);return u.forEach(function(t){for(var e=t[1].length;e>0;){var n=0;switch(t[0]){case r.INSERT:n=Math.min(f.peekLength(),e),i.push(f.next(n));break;case r.DELETE:n=Math.min(e,c.peekLength()),c.next(n),i.delete(n);break;case r.EQUAL:n=Math.min(c.peekLength(),f.peekLength(),e);var a=c.next(n),s=f.next(n);o(a.insert,s.insert)?i.retain(n,l.attributes.diff(a.attributes,s.attributes)):i.push(s).delete(n)}e-=n}}),i.chop()},s.prototype.eachLine=function(t,e){e=e||"\n";for(var n=l.iterator(this.ops),r=new s;n.hasNext();){if("insert"!==n.peekType())return;var o=n.peek(),i=l.length(o)-n.peekLength(),a="string"==typeof o.insert?o.insert.indexOf(e,i)-i:-1;a<0?r.push(n.next()):a>0?r.push(n.next(a)):(t(r,n.next(1).attributes||{}),r=new s)}r.length()>0&&t(r,{})},s.prototype.transform=function(t,e){if(e=!!e,"number"==typeof t)return this.transformPosition(t,e);for(var n=l.iterator(this.ops),r=l.iterator(t.ops),o=new s;n.hasNext()||r.hasNext();)if("insert"!==n.peekType()||!e&&"insert"===r.peekType())if("insert"===r.peekType())o.push(r.next());else{var i=Math.min(n.peekLength(),r.peekLength()),a=n.next(i),u=r.next(i);if(a.delete)continue;u.delete?o.push(u):o.retain(i,l.attributes.transform(a.attributes,u.attributes,e))}else o.retain(l.length(n.next()));return o.chop()},s.prototype.transformPosition=function(t,e){e=!!e;for(var n=l.iterator(this.ops),r=0;n.hasNext()&&r<=t;){var o=n.peekLength(),i=n.peekType();n.next(),"delete"!==i?("insert"===i&&(re.length?t:e,l=t.length>e.length?e:t,a=i.indexOf(l);if(a!=-1)return r=[[d,i.substring(0,a)],[y,l],[d,i.substring(a+l.length)]],t.length>e.length&&(r[0][0]=r[2][0]=h),r;if(1==l.length)return[[h,t],[d,e]];var u=s(t,e);if(u){var c=u[0],f=u[1],p=u[2],v=u[3],b=u[4],g=n(c,p),m=n(f,v);return g.concat([[y,b]],m)}return o(t,e)}function o(t,e){for(var n=t.length,r=e.length,o=Math.ceil((n+r)/2),l=o,a=2*o,s=new Array(a),u=new Array(a),c=0;cn)v+=2;else if(x>r)y+=2;else if(p){var k=l+f-_;if(k>=0&&k=E)return i(t,e,O,x)}}}for(var j=-m+b;j<=m-g;j+=2){var E,k=l+j;E=j==-m||j!=m&&u[k-1]n)g+=2;else if(A>r)b+=2;else if(!p){var w=l+f-j;if(w>=0&&w=E)return i(t,e,O,x)}}}}return[[h,t],[d,e]]}function i(t,e,r,o){var i=t.substring(0,r),l=e.substring(0,o),a=t.substring(r),s=e.substring(o),u=n(i,l),c=n(a,s);return u.concat(c)}function l(t,e){if(!t||!e||t.charAt(0)!=e.charAt(0))return 0;for(var n=0,r=Math.min(t.length,e.length),o=r,i=0;n=t.length?[r,o,i,s,f]:null}var r=t.length>e.length?t:e,o=t.length>e.length?e:t;if(r.length<4||2*o.lengthu[4].length?s:u:s;var c,f,p,h;t.length>e.length?(c=i[0],f=i[1],p=i[2],h=i[3]):(p=i[0],h=i[1],c=i[2],f=i[3]);var d=i[4];return[c,f,p,h,d]}function u(t){t.push([y,""]);for(var e,n=0,r=0,o=0,i="",s="";n1?(0!==r&&0!==o&&(e=l(s,i),0!==e&&(n-r-o>0&&t[n-r-o-1][0]==y?t[n-r-o-1][1]+=s.substring(0,e):(t.splice(0,0,[y,s.substring(0,e)]),n++),s=s.substring(e),i=i.substring(e)),e=a(s,i),0!==e&&(t[n][1]=s.substring(s.length-e)+t[n][1],s=s.substring(0,s.length-e),i=i.substring(0,i.length-e))),0===r?t.splice(n-o,r+o,[d,s]):0===o?t.splice(n-r,r+o,[h,i]):t.splice(n-r-o,r+o,[h,i],[d,s]),n=n-r-o+(r?1:0)+(o?1:0)+1):0!==n&&t[n-1][0]==y?(t[n-1][1]+=t[n][1],t.splice(n,1)):n++,o=0,r=0,i="",s=""}""===t[t.length-1][1]&&t.pop();var c=!1;for(n=1;n0&&r.splice(o+2,0,[l[0],a]),p(r,o,3)}return t}function p(t,e,n){for(var r=e+n-1;r>=0&&r>=e-1;r--)if(r+10?r:void 0},diff:function(t,e){"object"!=typeof t&&(t={}),"object"!=typeof e&&(e={});var n=Object.keys(t).concat(Object.keys(e)).reduce(function(n,r){return o(t[r],e[r])||(n[r]=void 0===e[r]?null:e[r]),n},{});return Object.keys(n).length>0?n:void 0},transform:function(t,e,n){if("object"!=typeof t)return e;if("object"==typeof e){if(!n)return e;var r=Object.keys(e).reduce(function(n,r){return void 0===t[r]&&(n[r]=e[r]),n},{});return Object.keys(r).length>0?r:void 0}}},iterator:function(t){return new r(t)},length:function(t){return"number"==typeof t.delete?t.delete:"number"==typeof t.retain?t.retain:"string"==typeof t.insert?t.insert.length:1}};r.prototype.hasNext=function(){return this.peekLength()<1/0},r.prototype.next=function(t){t||(t=1/0);var e=this.ops[this.index];if(e){var n=this.offset,r=l.length(e);if(t>=r-n?(t=r-n,this.index+=1,this.offset=0):this.offset+=t,"number"==typeof e.delete)return{delete:t};var o={};return e.attributes&&(o.attributes=e.attributes),"number"==typeof e.retain?o.retain=t:"string"==typeof e.insert?o.insert=e.insert.substr(n,t):o.insert=e.insert,o}return{retain:1/0}},r.prototype.peek=function(){return this.ops[this.index]},r.prototype.peekLength=function(){return this.ops[this.index]?l.length(this.ops[this.index])-this.offset:1/0},r.prototype.peekType=function(){return this.ops[this.index]?"number"==typeof this.ops[this.index].delete?"delete":"number"==typeof this.ops[this.index].retain?"retain":"insert":"retain"},t.exports=l},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){return Object.keys(e).reduce(function(n,r){return null==t[r]?n:(e[r]===t[r]?n[r]=e[r]:Array.isArray(e[r])?e[r].indexOf(t[r])<0&&(n[r]=e[r].concat([t[r]])):n[r]=[e[r],t[r]],n)},{})}function a(t){return t.reduce(function(t,e){if(1===e.insert){var n=(0,k.default)(e.attributes);return delete n.image,t.insert({image:e.attributes.image},n)}if(null==e.attributes||e.attributes.list!==!0&&e.attributes.bullet!==!0||(e=(0,k.default)(e),e.attributes.list?e.attributes.list="ordered":(e.attributes.list="bullet",delete e.attributes.bullet)),"string"==typeof e.insert){var r=e.insert.replace(/\r\n/g,"\n").replace(/\r/g,"\n");return t.insert(r,e.attributes)}return t.push(e)},new p.default)}Object.defineProperty(e,"__esModule",{value:!0});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=function(){function t(t,e){for(var n=0;n=r&&!a.endsWith("\n")&&(n=!0),e.scroll.insertAt(t,a);var c=e.scroll.line(t),f=u(c,2),p=f[0],h=f[1],y=(0,N.default)({},(0,O.bubbleFormats)(p));if(p instanceof w.default){var b=p.descendant(v.default.Leaf,h),g=u(b,1),m=g[0];y=(0,N.default)(y,(0,O.bubbleFormats)(m))}l=d.default.attributes.diff(y,l)||{}}else if("object"===s(o.insert)){var _=Object.keys(o.insert)[0];if(null==_)return t;e.scroll.insertAt(t,_,o.insert[_])}r+=i}return Object.keys(l).forEach(function(n){e.scroll.formatAt(t,i,n,l[n])}),t+i},0),t.reduce(function(t,n){return"number"==typeof n.delete?(e.scroll.deleteAt(t,n.delete),t):t+(n.retain||n.insert.length||1)},0),this.scroll.batch=!1,this.scroll.optimize(),this.update(t)}},{key:"deleteText",value:function(t,e){return this.scroll.deleteAt(t,e),this.update((new p.default).retain(t).delete(e))}},{key:"formatLine",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.scroll.update(),Object.keys(r).forEach(function(o){var i=n.scroll.lines(t,Math.max(e,1)),l=e;i.forEach(function(e){var i=e.length();if(e instanceof g.default){var a=t-e.offset(n.scroll),s=e.newlineIndex(a+l)-a+1;e.formatAt(a,s,o,r[o])}else e.format(o,r[o]);l-=i})}),this.scroll.optimize(),this.update((new p.default).retain(t).retain(e,(0,k.default)(r)))}},{key:"formatText",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return Object.keys(r).forEach(function(o){n.scroll.formatAt(t,e,o,r[o])}),this.update((new p.default).retain(t).retain(e,(0,k.default)(r)))}},{key:"getContents",value:function(t,e){return this.delta.slice(t,t+e)}},{key:"getDelta",value:function(){return this.scroll.lines().reduce(function(t,e){return t.concat(e.delta())},new p.default)}},{key:"getFormat",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=[],r=[];0===e?this.scroll.path(t).forEach(function(t){var e=u(t,1),o=e[0];o instanceof w.default?n.push(o):o instanceof v.default.Leaf&&r.push(o)}):(n=this.scroll.lines(t,e),r=this.scroll.descendants(v.default.Leaf,t,e));var o=[n,r].map(function(t){if(0===t.length)return{};for(var e=(0,O.bubbleFormats)(t.shift());Object.keys(e).length>0;){var n=t.shift();if(null==n)return e;e=l((0,O.bubbleFormats)(n),e)}return e});return N.default.apply(N.default,o)}},{key:"getText",value:function(t,e){return this.getContents(t,e).filter(function(t){return"string"==typeof t.insert}).map(function(t){return t.insert}).join("")}},{key:"insertEmbed",value:function(t,e,n){return this.scroll.insertAt(t,e,n),this.update((new p.default).retain(t).insert(o({},e,n)))}},{key:"insertText",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return e=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n"),this.scroll.insertAt(t,e),Object.keys(r).forEach(function(o){n.scroll.formatAt(t,e.length,o,r[o])}),this.update((new p.default).retain(t).insert(e,(0,k.default)(r)))}},{key:"isBlank",value:function(){if(0==this.scroll.children.length)return!0;if(this.scroll.children.length>1)return!1;var t=this.scroll.children.head;return t.length()<=1&&0==Object.keys(t.formats()).length}},{key:"removeFormat",value:function(t,e){var n=this.getText(t,e),r=this.scroll.line(t+e),o=u(r,2),i=o[0],l=o[1],a=0,s=new p.default;null!=i&&(a=i instanceof g.default?i.newlineIndex(l)-l+1:i.length()-l,s=i.delta().slice(l,l+a-1).insert("\n"));var c=this.getContents(t,e+a),f=c.diff((new p.default).insert(n).concat(s)),h=(new p.default).retain(t).concat(f);return this.applyDelta(h)}},{key:"update",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,o=this.delta;return 1===n.length&&"characterData"===n[0].type&&v.default.find(n[0].target)?!function(){var i=v.default.find(n[0].target),l=(0,O.bubbleFormats)(i),a=i.offset(e.scroll),s=n[0].oldValue.replace(_.default.CONTENTS,""),u=(new p.default).insert(s),c=(new p.default).insert(i.value()),f=(new p.default).retain(a).concat(u.diff(c,r));t=f.reduce(function(t,e){return e.insert?t.insert(e.insert,l):t.push(e)},new p.default),e.delta=o.compose(t)}():(this.delta=this.getDelta(),t&&(0,j.default)(o.compose(t),this.delta)||(t=o.diff(this.delta,r))),t}}]),t}();e.default=q},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.Code=void 0;var a=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function(){function t(t,e){for(var n=0;n=t+n)){var l=this.newlineIndex(t,!0)+1,a=i-l+1,s=this.isolate(l,a),u=s.next;s.format(r,o),u instanceof e&&u.formatAt(0,t-l+n-a,r,o)}}}},{key:"insertAt",value:function(t,e,n){if(null==n){var r=this.descendant(m.default,t),o=a(r,2),i=o[0],l=o[1];i.insertAt(l,e)}}},{key:"length",value:function t(){var t=this.domNode.textContent.length;return this.domNode.textContent.endsWith("\n")?t:t+1}},{key:"newlineIndex",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(e)return this.domNode.textContent.slice(0,t).lastIndexOf("\n");var n=this.domNode.textContent.slice(t).indexOf("\n");return n>-1?t+n:-1}},{key:"optimize",value:function(){this.domNode.textContent.endsWith("\n")||this.appendChild(h.default.create("text","\n")),u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this);var t=this.next;null!=t&&t.prev===this&&t.statics.blotName===this.statics.blotName&&this.statics.formats(this.domNode)===t.statics.formats(t.domNode)&&(t.optimize(),t.moveChildren(this),t.remove())}},{key:"replace",value:function(t){u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"replace",this).call(this,t),[].slice.call(this.domNode.querySelectorAll("*")).forEach(function(t){var e=h.default.find(t);null==e?t.parentNode.removeChild(t):e instanceof h.default.Embed?e.remove():e.unwrap()})}}],[{key:"create",value:function(t){var n=u(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t); -return n.setAttribute("spellcheck",!1),n}},{key:"formats",value:function(){return!0}}]),e}(y.default);O.blotName="code-block",O.tagName="PRE",O.TAB=" ",e.Code=_,e.default=O},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return null==t?e:("function"==typeof t.formats&&(e=(0,f.default)(e,t.formats())),null==t.parent||"scroll"==t.parent.blotName||t.parent.statics.scope!==t.statics.scope?e:a(t.parent,e))}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.BlockEmbed=e.bubbleFormats=void 0;var s=function(){function t(t,e){for(var n=0;n0&&(t1&&void 0!==arguments[1]&&arguments[1];if(n&&(0===t||t>=this.length()-k)){var r=this.clone();return 0===t?(this.parent.insertBefore(r,this),this):(this.parent.insertBefore(r,this.next),r)}var o=u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"split",this).call(this,t,n);return this.cache={},o}}]),e}(y.default.Block);j.blotName="block",j.tagName="P",j.defaultChild="break",j.allowedChildren=[O.default,m.default,x.default],e.bubbleFormats=a,e.BlockEmbed=E,e.default=j},25,function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var n=0;n0){var t=this.parent.isolate(this.offset(),this.length());this.moveChildren(t),t.wrap(this)}}}],[{key:"compare",value:function(t,n){var r=e.order.indexOf(t),o=e.order.indexOf(n);return r>=0||o>=0?r-o:t===n?0:t1?e-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:{};n(this,t),this.quill=e,this.options=r};r.DEFAULTS={},e.default=r},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e1&&void 0!==arguments[1]?arguments[1]:0;i(this,t),this.index=e,this.length=n},O=function(){function t(e,n){var r=this;i(this,t),this.emitter=n,this.scroll=e,this.composing=!1,this.root=this.scroll.domNode,this.root.addEventListener("compositionstart",function(){r.composing=!0}),this.root.addEventListener("compositionend",function(){r.composing=!1}),this.cursor=c.default.create("cursor",this),this.lastRange=this.savedRange=new _(0,0),["keyup","mouseup","mouseleave","touchend","touchleave","focus","blur"].forEach(function(t){r.root.addEventListener(t,function(){setTimeout(r.update.bind(r,v.default.sources.USER),100)})}),this.emitter.on(v.default.events.EDITOR_CHANGE,function(t,e){t===v.default.events.TEXT_CHANGE&&e.length()>0&&r.update(v.default.sources.SILENT)}),this.emitter.on(v.default.events.SCROLL_BEFORE_UPDATE,function(){var t=r.getNativeRange();null!=t&&t.start.node!==r.cursor.textNode&&r.emitter.once(v.default.events.SCROLL_UPDATE,function(){try{r.setNativeRange(t.start.node,t.start.offset,t.end.node,t.end.offset)}catch(t){}})}),this.update(v.default.sources.SILENT)}return s(t,[{key:"focus",value:function(){if(!this.hasFocus()){var t=document.body.scrollTop;this.root.focus(),document.body.scrollTop=t,this.setRange(this.savedRange)}}},{key:"format",value:function(t,e){this.scroll.update();var n=this.getNativeRange();if(null!=n&&n.native.collapsed&&!c.default.query(t,c.default.Scope.BLOCK)){if(n.start.node!==this.cursor.textNode){var r=c.default.find(n.start.node,!1);if(null==r)return;if(r instanceof c.default.Leaf){var o=r.split(n.start.offset);r.parent.insertBefore(this.cursor,o)}else r.insertBefore(this.cursor,n.start.node);this.cursor.attach()}this.cursor.format(t,e),this.scroll.optimize(),this.setNativeRange(this.cursor.textNode,this.cursor.textNode.data.length),this.update()}}},{key:"getBounds",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.scroll.length();t=Math.min(t,n-1),e=Math.min(t+e,n-1)-t;var r=void 0,o=void 0,i=this.scroll.leaf(t),l=a(i,2),s=l[0],u=l[1];if(null==s)return null;var c=s.position(u,!0),f=a(c,2);o=f[0],u=f[1];var p=document.createRange();if(e>0){p.setStart(o,u);var h=this.scroll.leaf(t+e),d=a(h,2);if(s=d[0],u=d[1],null==s)return null;var y=s.position(u,!0),v=a(y,2);o=v[0],u=v[1],p.setEnd(o,u),r=p.getBoundingClientRect()}else{var b="left",g=void 0;o instanceof Text?(u0&&(b="right")),r={height:g.height,left:g[b],width:0,top:g.top}}var m=this.root.parentNode.getBoundingClientRect();return{left:r.left-m.left,right:r.left+r.width-m.left,top:r.top-m.top,bottom:r.top+r.height-m.top,height:r.height,width:r.width}}},{key:"getNativeRange",value:function(){var t=document.getSelection();if(null==t||t.rangeCount<=0)return null;var e=t.getRangeAt(0);if(null==e)return null;if(!l(this.root,e.startContainer)||!e.collapsed&&!l(this.root,e.endContainer))return null;var n={start:{node:e.startContainer,offset:e.startOffset},end:{node:e.endContainer,offset:e.endOffset},native:e};return[n.start,n.end].forEach(function(t){for(var e=t.node,n=t.offset;!(e instanceof Text)&&e.childNodes.length>0;)if(e.childNodes.length>n)e=e.childNodes[n],n=0;else{if(e.childNodes.length!==n)break;e=e.lastChild,n=e instanceof Text?e.data.length:e.childNodes.length+1}t.node=e,t.offset=n}),m.info("getNativeRange",n),n}},{key:"getRange",value:function(){var t=this,e=this.getNativeRange();if(null==e)return[null,null];var n=[[e.start.node,e.start.offset]];e.native.collapsed||n.push([e.end.node,e.end.offset]);var r=n.map(function(e){var n=a(e,2),r=n[0],o=n[1],i=c.default.find(r,!0),l=i.offset(t.scroll);return 0===o?l:i instanceof c.default.Container?l+i.length():l+i.index(r,o)}),i=Math.min.apply(Math,o(r)),l=Math.max.apply(Math,o(r));return[new _(i,l-i),e]}},{key:"hasFocus",value:function(){return document.activeElement===this.root}},{key:"scrollIntoView",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.lastRange;if(null!=t){var e=this.getBounds(t.index,t.length);if(null!=e)if(this.root.offsetHeight2&&void 0!==arguments[2]?arguments[2]:t,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e,o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(m.info("setNativeRange",t,e,n,r),null==t||null!=this.root.parentNode&&null!=t.parentNode&&null!=n.parentNode){var i=document.getSelection();if(null!=i)if(null!=t){this.hasFocus()||this.root.focus();var l=this.getNativeRange();if(null==l||o||t!==l.start.node||e!==l.start.offset||n!==l.end.node||r!==l.end.offset){var a=document.createRange();a.setStart(t,e),a.setEnd(n,r),i.removeAllRanges(),i.addRange(a)}}else i.removeAllRanges(),this.root.blur(),document.body.focus()}}},{key:"setRange",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:v.default.sources.API;"string"==typeof n&&(r=n,n=!1),m.info("setRange",t),null!=t?!function(){var r=t.collapsed?[t.index]:[t.index,t.index+t.length],i=[],l=e.scroll.length();r.forEach(function(t,n){t=Math.min(l-1,t);var r=void 0,o=e.scroll.leaf(t),s=a(o,2),u=s[0],c=s[1],f=u.position(c,0!==n),p=a(f,2);r=p[0],c=p[1],i.push(r,c)}),i.length<2&&(i=i.concat(i)),e.setNativeRange.apply(e,o(i).concat([n]))}():this.setNativeRange(null),this.update(r)}},{key:"update",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:v.default.sources.USER,e=void 0,n=this.lastRange,r=this.getRange(),o=a(r,2);if(this.lastRange=o[0],e=o[1],null!=this.lastRange&&(this.savedRange=this.lastRange),!(0,d.default)(n,this.lastRange)){var i;!this.composing&&null!=e&&e.native.collapsed&&e.start.node!==this.cursor.textNode&&this.cursor.restore();var l=[v.default.events.SELECTION_CHANGE,(0,p.default)(this.lastRange),(0,p.default)(n),t];if((i=this.emitter).emit.apply(i,[v.default.events.EDITOR_CHANGE].concat(l)),t!==v.default.sources.SILENT){var s;(s=this.emitter).emit.apply(s,l)}}}}]),t}();e.Range=_,e.default=O},function(t,e){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n0&&!(i instanceof y.BlockEmbed)&&!(f instanceof y.BlockEmbed)){f instanceof w.default&&f.deleteAt(f.length()-1,1);var p=f.children.head instanceof g.default?null:f.children.head;i.moveChildren(f,p),i.remove()}this.optimize()}},{key:"enable",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.domNode.setAttribute("contenteditable",t)}},{key:"formatAt",value:function(t,n,r,o){(null==this.whitelist||this.whitelist[r])&&(c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"formatAt",this).call(this,t,n,r,o),this.optimize())}},{key:"insertAt",value:function(t,n,r){if(null==r||null==this.whitelist||this.whitelist[n]){if(t>=this.length())if(null==r||null==p.default.query(n,p.default.Scope.BLOCK)){var o=p.default.create(this.statics.defaultChild);this.appendChild(o),null==r&&n.endsWith("\n")&&(n=n.slice(0,-1)),o.insertAt(0,n,r)}else{var i=p.default.create(n,r);this.appendChild(i)}else c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertAt",this).call(this,t,n,r);this.optimize()}}},{key:"insertBefore",value:function(t,n){if(t.statics.scope===p.default.Scope.INLINE_BLOT){var r=p.default.create(this.statics.defaultChild);r.appendChild(t),t=r}c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertBefore",this).call(this,t,n)}},{key:"leaf",value:function(t){return this.path(t).pop()||[null,-1]}},{key:"line",value:function(t){return t===this.length()?this.line(t-1):this.descendant(a,t)}},{key:"lines",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE,n=function t(e,n,r){var o=[],i=r;return e.children.forEachAt(n,r,function(e,n,r){a(e)?o.push(e):e instanceof p.default.Container&&(o=o.concat(t(e,n,i))),i-=r}),o};return n(this,t,e)}},{key:"optimize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.batch!==!0&&(c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this,t),t.length>0&&this.emitter.emit(d.default.events.SCROLL_OPTIMIZE,t))}},{key:"path",value:function(t){return c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"path",this).call(this,t).slice(1)}},{key:"update",value:function(t){if(this.batch!==!0){var n=d.default.sources.USER;"string"==typeof t&&(n=t),Array.isArray(t)||(t=this.observer.takeRecords()),t.length>0&&this.emitter.emit(d.default.events.SCROLL_BEFORE_UPDATE,n,t),c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"update",this).call(this,t.concat([])),t.length>0&&this.emitter.emit(d.default.events.SCROLL_UPDATE,n,t)}}}]),e}(p.default.Scroll);x.blotName="scroll",x.className="ql-editor",x.tagName="DIV",x.defaultChild="block",x.allowedChildren=[v.default,y.BlockEmbed,_.default],e.default=x},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e=0&&n.length-1}function p(t,e,n){return n.compose((new k.default).retain(n.length(),o({},t,!0)))}function h(t,e){var n=j.default.Attributor.Attribute.keys(t),r=j.default.Attributor.Class.keys(t),o=j.default.Attributor.Style.keys(t),i={};return n.concat(r).concat(o).forEach(function(e){var n=j.default.query(e,j.default.Scope.ATTRIBUTE);null!=n&&(i[n.attrName]=n.value(t),i[n.attrName])||(null!=H[e]&&(n=H[e],i[n.attrName]=n.value(t)),null!=F[e]&&(n=F[e],i[n.attrName]=n.value(t)))}),Object.keys(i).length>0&&(e=e.compose((new k.default).retain(e.length(),i))),e}function d(t,e){var n=j.default.query(t);if(null==n)return e;if(n.prototype instanceof j.default.Embed){var r={},i=n.value(t);null!=i&&(r[n.blotName]=i,e=(new k.default).insert(r,n.formats(t)))}else if("function"==typeof n.formats){var l=o({},n.blotName,n.formats(t));e=e.compose((new k.default).retain(e.length(),l))}return e}function y(t,e){return c(e,"\n")||e.insert("\n"),e}function v(){return new k.default}function b(t,e){return f(t)&&!c(e,"\n")&&e.insert("\n"),e}function g(t,e){if(f(t)&&null!=t.nextElementSibling&&!c(e,"\n\n")){var n=t.offsetHeight+parseFloat(u(t).marginTop)+parseFloat(u(t).marginBottom);t.nextElementSibling.offsetTop>t.offsetTop+1.5*n&&e.insert("\n")}return e}function m(t,e){var n={},r=t.style||{};return r.fontWeight&&"bold"===u(t).fontWeight&&(n.bold=!0),Object.keys(n).length>0&&(e=e.compose((new k.default).retain(e.length(),n))),parseFloat(r.textIndent||0)>0&&(e=(new k.default).insert("\t").concat(e)),e}function _(t,e){var n=t.data;if("O:P"===t.parentNode.tagName)return e.insert(n.trim());if(!u(t.parentNode).whiteSpace.startsWith("pre")){var r=function(t,e){return e=e.replace(/[^\u00a0]/g,""),e.length<1&&t?" ":e};n=n.replace(/\r\n/g," ").replace(/\n/g," "),n=n.replace(/\s\s+/g,r.bind(r,!0)),(null==t.previousSibling&&f(t.parentNode)||null!=t.previousSibling&&f(t.previousSibling))&&(n=n.replace(/^\s+/,r.bind(r,!1))),(null==t.nextSibling&&f(t.parentNode)||null!=t.nextSibling&&f(t.nextSibling))&&(n=n.replace(/\s+$/,r.bind(r,!1)))}return e.insert(n)}Object.defineProperty(e,"__esModule",{value:!0}),e.matchText=e.matchSpacing=e.matchNewline=e.matchBlot=e.matchAttributor=e.default=void 0;var O=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),w=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:N.default.sources.API;if("string"==typeof t)return this.quill.setContents(this.convert(t),e);var r=this.convert(e);return this.quill.updateContents((new k.default).retain(t).concat(r),n)}},{key:"onPaste",value:function(t){var e=this;if(!t.defaultPrevented&&this.quill.isEnabled()){var n=this.quill.getSelection(),r=(new k.default).retain(n.index).delete(n.length),o=document.body.scrollTop;this.container.focus(),setTimeout(function(){e.quill.selection.update(N.default.sources.SILENT),r=r.concat(e.convert()),e.quill.updateContents(r,N.default.sources.USER),e.quill.setSelection(r.length()-n.length,N.default.sources.SILENT),document.body.scrollTop=o,e.quill.selection.scrollIntoView()},1)}}}]),e}(S.default);K.DEFAULTS={matchers:[]},e.default=K,e.matchAttributor=h,e.matchBlot=d,e.matchNewline=b,e.matchSpacing=g,e.matchText=_},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),e.AlignStyle=e.AlignClass=e.AlignAttribute=void 0;var o=n(2),i=r(o),l={scope:i.default.Scope.BLOCK,whitelist:["right","center","justify"]},a=new i.default.Attributor.Attribute("align","align",l),s=new i.default.Attributor.Class("align","ql-align",l),u=new i.default.Attributor.Style("align","text-align",l);e.AlignAttribute=a,e.AlignClass=s,e.AlignStyle=u},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),e.BackgroundStyle=e.BackgroundClass=void 0;var o=n(2),i=r(o),l=n(51),a=new i.default.Attributor.Class("background","ql-bg",{scope:i.default.Scope.INLINE}),s=new l.ColorAttributor("background","background-color",{scope:i.default.Scope.INLINE});e.BackgroundClass=a,e.BackgroundStyle=s},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.ColorStyle=e.ColorClass=e.ColorAttributor=void 0;var a=function(){function t(t,e){for(var n=0;nr&&this.stack.undo.length>0){var o=this.stack.undo.pop();n=n.compose(o.undo),t=o.redo.compose(t)}else this.lastRecorded=r;this.stack.undo.push({redo:t,undo:n}),this.stack.undo.length>this.options.maxStack&&this.stack.undo.shift()}}},{key:"redo",value:function(){this.change("redo","undo")}},{key:"transform",value:function(t){this.stack.undo.forEach(function(e){e.undo=t.transform(e.undo,!0),e.redo=t.transform(e.redo,!0)}),this.stack.redo.forEach(function(e){e.undo=t.transform(e.undo,!0),e.redo=t.transform(e.redo,!0)})}},{key:"undo",value:function(){this.change("undo","redo")}}]),e}(y.default);v.DEFAULTS={delay:1e3,maxStack:100,userOnly:!1},e.default=v,e.getLastChangeIndex=s},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t,e){if(0!==t.index){var n=this.quill.scroll.line(t.index),r=y(n,1),o=r[0],i={};if(0===e.offset){var l=o.formats(),a=this.quill.getFormat(t.index-1,1);i=k.default.attributes.diff(l,a)||{}}this.quill.deleteText(t.index-1,1,N.default.sources.USER),Object.keys(i).length>0&&this.quill.formatLine(t.index-1,1,i,N.default.sources.USER),this.quill.selection.scrollIntoView()}}function s(t){t.index>=this.quill.getLength()-1||this.quill.deleteText(t.index,1,N.default.sources.USER)}function u(t){this.quill.deleteText(t,N.default.sources.USER),this.quill.setSelection(t.index,N.default.sources.SILENT),this.quill.selection.scrollIntoView()}function c(t,e){var n=this;t.length>0&&this.quill.scroll.deleteAt(t.index,t.length);var r=Object.keys(e.format).reduce(function(t,n){return j.default.query(n,j.default.Scope.BLOCK)&&!Array.isArray(e.format[n])&&(t[n]=e.format[n]),t},{});this.quill.insertText(t.index,"\n",r,N.default.sources.USER),this.quill.selection.scrollIntoView(),Object.keys(e.format).forEach(function(t){null==r[t]&&(Array.isArray(e.format[t])||"link"!==t&&n.quill.format(t,e.format[t],N.default.sources.USER))})}function f(t){return{key:M.keys.TAB,shiftKey:!t,format:{"code-block":!0},handler:function(e){var n=j.default.query("code-block"),r=e.index,o=e.length,i=this.quill.scroll.descendant(n,r),l=y(i,2),a=l[0],s=l[1];if(null!=a){var u=this.quill.scroll.offset(a),c=a.newlineIndex(s,!0)+1,f=a.newlineIndex(u+s+o),p=a.domNode.textContent.slice(c,f).split("\n");s=0,p.forEach(function(e,i){t?(a.insertAt(c+s,n.TAB),s+=n.TAB.length,0===i?r+=n.TAB.length:o+=n.TAB.length):e.startsWith(n.TAB)&&(a.deleteAt(c+s,n.TAB.length),s-=n.TAB.length,0===i?r-=n.TAB.length:o-=n.TAB.length),s+=e.length+1}),this.quill.update(N.default.sources.USER),this.quill.setSelection(r,o,N.default.sources.SILENT)}}}}function p(t){return{key:t[0].toUpperCase(),shortKey:!0,handler:function(e,n){this.quill.format(t,!n.format[t],N.default.sources.USER)}}}function h(t){if("string"==typeof t||"number"==typeof t)return h({key:t});if("object"===("undefined"==typeof t?"undefined":d(t))&&(t=(0,g.default)(t,!1)),"string"==typeof t.key)if(null!=M.keys[t.key.toUpperCase()])t.key=M.keys[t.key.toUpperCase()];else{if(1!==t.key.length)return null;t.key=t.key.toUpperCase().charCodeAt(0)}return t}Object.defineProperty(e,"__esModule",{value:!0});var d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},y=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),v=function(){function t(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=h(t);return null==r||null==r.key?L.warn("Attempted to add invalid keyboard binding",r):("function"==typeof e&&(e={handler:e}),"function"==typeof n&&(n={handler:n}),r=(0,w.default)(r,e,n),this.bindings[r.key]=this.bindings[r.key]||[],void this.bindings[r.key].push(r))}},{key:"listen",value:function(){var t=this;this.quill.root.addEventListener("keydown",function(n){if(!n.defaultPrevented){var r=n.which||n.keyCode,o=(t.bindings[r]||[]).filter(function(t){return e.match(n,t)});if(0!==o.length){var i=t.quill.getSelection();if(null!=i&&t.quill.hasFocus()){var l=t.quill.scroll.line(i.index),a=y(l,2),s=a[0],u=a[1],c=t.quill.scroll.leaf(i.index),f=y(c,2),p=f[0],h=f[1],v=0===i.length?[p,h]:t.quill.scroll.leaf(i.index+i.length),b=y(v,2),g=b[0],m=b[1],O=p instanceof j.default.Text?p.value().slice(0,h):"",w=g instanceof j.default.Text?g.value().slice(m):"",x={collapsed:0===i.length,empty:0===i.length&&s.length()<=1,format:t.quill.getFormat(i),offset:u,prefix:O,suffix:w},k=o.some(function(e){if(null!=e.collapsed&&e.collapsed!==x.collapsed)return!1;if(null!=e.empty&&e.empty!==x.empty)return!1;if(null!=e.offset&&e.offset!==x.offset)return!1;if(Array.isArray(e.format)){if(e.format.every(function(t){return null==x.format[t]}))return!1}else if("object"===d(e.format)&&!Object.keys(e.format).every(function(t){return e.format[t]===!0?null!=x.format[t]:e.format[t]===!1?null==x.format[t]:(0,_.default)(e.format[t],x.format[t])}))return!1;return!(null!=e.prefix&&!e.prefix.test(x.prefix))&&(!(null!=e.suffix&&!e.suffix.test(x.suffix))&&e.handler.call(t,i,x)!==!0)});k&&n.preventDefault()}}}})}}]),e}(S.default);M.keys={BACKSPACE:8,TAB:9,ENTER:13,ESCAPE:27,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46},M.DEFAULTS={bindings:{bold:p("bold"),italic:p("italic"),underline:p("underline"),indent:{key:M.keys.TAB,format:["blockquote","indent","list"],handler:function(t,e){return!(!e.collapsed||0===e.offset)||void this.quill.format("indent","+1",N.default.sources.USER)}},outdent:{key:M.keys.TAB,shiftKey:!0,format:["blockquote","indent","list"],handler:function(t,e){return!(!e.collapsed||0===e.offset)||void this.quill.format("indent","-1",N.default.sources.USER)}},"outdent backspace":{key:M.keys.BACKSPACE,collapsed:!0,format:["blockquote","indent","list"],offset:0,handler:function(t,e){null!=e.format.indent?this.quill.format("indent","-1",N.default.sources.USER):null!=e.format.blockquote?this.quill.format("blockquote",!1,N.default.sources.USER):null!=e.format.list&&this.quill.format("list",!1,N.default.sources.USER)}},"indent code-block":f(!0),"outdent code-block":f(!1),"remove tab":{key:M.keys.TAB,shiftKey:!0,collapsed:!0,prefix:/\t$/,handler:function(t){this.quill.deleteText(t.index-1,1,N.default.sources.USER)}},tab:{key:M.keys.TAB,handler:function(t,e){e.collapsed||this.quill.scroll.deleteAt(t.index,t.length),this.quill.insertText(t.index,"\t",N.default.sources.USER),this.quill.setSelection(t.index+1,N.default.sources.SILENT)}},"list empty enter":{key:M.keys.ENTER,collapsed:!0,format:["list"],empty:!0,handler:function(t,e){this.quill.format("list",!1,N.default.sources.USER),e.format.indent&&this.quill.format("indent",!1,N.default.sources.USER)}},"header enter":{key:M.keys.ENTER,collapsed:!0,format:["header"],suffix:/^$/,handler:function(t){this.quill.scroll.insertAt(t.index,"\n"),this.quill.formatText(t.index+1,1,"header",!1,N.default.sources.USER),this.quill.setSelection(t.index+1,N.default.sources.SILENT),this.quill.selection.scrollIntoView()}},"list autofill":{key:" ",collapsed:!0,format:{list:!1},prefix:/^(1\.|-)$/,handler:function(t,e){var n=e.prefix.length;this.quill.scroll.deleteAt(t.index-n,n),this.quill.formatLine(t.index-n,1,"list",1===n?"bullet":"ordered",N.default.sources.USER),this.quill.setSelection(t.index-n,N.default.sources.SILENT)}}}},e.default=M},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.IndentClass=void 0;var a=function(){function t(t,e){for(var n=0;n0&&this.children.tail.format(t,e)}},{key:"formats",value:function(){return o({},this.statics.blotName,this.statics.formats(this.domNode))}},{key:"insertBefore",value:function(t,n){if(t instanceof v)u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertBefore",this).call(this,t,n);else{var r=null==n?this.length():n.offset(this),o=this.split(r);o.parent.insertBefore(t,o)}}},{key:"optimize",value:function(){u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this);var t=this.next;null!=t&&t.prev===this&&t.statics.blotName===this.statics.blotName&&t.domNode.tagName===this.domNode.tagName&&(t.moveChildren(this),t.remove())}},{key:"replace",value:function(t){if(t.statics.blotName!==this.statics.blotName){var n=f.default.create(this.statics.defaultChild);t.moveChildren(n),this.appendChild(n)}u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"replace",this).call(this,t)}}],[{key:"create",value:function(t){return"ordered"===t?t="OL":"bullet"===t&&(t="UL"),u(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t)}},{key:"formats",value:function(t){return"OL"===t.tagName?"ordered":"UL"===t.tagName?"bullet":void 0}}]),e}(y.default);b.blotName="list",b.scope=f.default.Scope.BLOCK_BLOT,b.tagName=["OL","UL"],b.defaultChild="list-item",b.allowedChildren=[v],e.ListItem=v,e.default=b},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var n=0;n-1}Object.defineProperty(e,"__esModule",{value:!0}),e.sanitize=e.default=void 0;var s=function(){function t(t,e){for(var n=0;n-1?n?this.domNode.setAttribute(t,n):this.domNode.removeAttribute(t):s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"format",this).call(this,t,n)}}],[{key:"create",value:function(t){var n=s(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t);return"string"==typeof t&&n.setAttribute("src",this.sanitize(t)),n}},{key:"formats",value:function(t){return p.reduce(function(e,n){return t.hasAttribute(n)&&(e[n]=t.getAttribute(n)),e},{})}},{key:"match",value:function(t){return/\.(jpe?g|gif|png)$/.test(t)||/^data:image\/.+;base64/.test(t)}},{key:"sanitize",value:function(t){return(0,f.sanitize)(t,["http","https","data"])?t:"//:0"}},{key:"value",value:function(t){return t.getAttribute("src")}}]),e}(c.default);h.blotName="image",h.tagName="IMG",e.default=h},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var n=0;n-1?n?this.domNode.setAttribute(t,n):this.domNode.removeAttribute(t):s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"format",this).call(this,t,n)}}],[{key:"create",value:function(t){var n=s(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t);return n.setAttribute("frameborder","0"),n.setAttribute("allowfullscreen",!0),n.setAttribute("src",this.sanitize(t)),n}},{key:"formats",value:function(t){return p.reduce(function(e,n){return t.hasAttribute(n)&&(e[n]=t.getAttribute(n)),e},{})}},{key:"sanitize",value:function(t){return f.default.sanitize(t)}},{key:"value",value:function(t){return t.getAttribute("src")}}]),e}(u.BlockEmbed);h.blotName="video",h.className="ql-video",h.tagName="IFRAME",e.default=h},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(){if(null==window.katex)throw new Error("Formula module requires KaTeX.");h.default.register(d,!0)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.FormulaBlot=void 0;var s=function(){function t(t,e){for(var n=0;n0||null==this.cachedHTML)&&(this.domNode.innerHTML=t(e),this.attach()),this.cachedHTML=this.domNode.innerHTML}}}]),e}(v.default);b.className="ql-syntax";var g=new c.default.Attributor.Class("token","hljs",{scope:c.default.Scope.INLINE}),m=function(t){function e(t,n){o(this,e);var r=i(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));if("function"!=typeof r.options.highlight)throw new Error("Syntax module requires highlight.js. Please include the library on the page before Quill.");p.default.register(g,!0),p.default.register(b,!0);var l=null;return r.quill.on(p.default.events.SCROLL_OPTIMIZE,function(){null==l&&(l=setTimeout(function(){r.highlight(),l=null},100))}),r.highlight(),r}return l(e,t),a(e,[{key:"highlight",value:function(){var t=this;if(!this.quill.selection.composing){var e=this.quill.getSelection();this.quill.scroll.descendants(b).forEach(function(e){e.highlight(t.options.highlight)}),this.quill.update(p.default.sources.SILENT),null!=e&&this.quill.setSelection(e,p.default.sources.SILENT)}}}]),e}(d.default);m.DEFAULTS={highlight:function(){return null==window.hljs?null:function(t){var e=window.hljs.highlightAuto(t);return e.value}}()},e.CodeBlock=b,e.CodeToken=g,e.default=m},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function s(t,e,n){var r=document.createElement("button");r.setAttribute("type","button"),r.classList.add("ql-"+e),null!=n&&(r.value=n),t.appendChild(r)}function u(t,e){Array.isArray(e[0])||(e=[e]),e.forEach(function(e){var n=document.createElement("span");n.classList.add("ql-formats"),e.forEach(function(t){if("string"==typeof t)s(n,t);else{var e=Object.keys(t)[0],r=t[e];Array.isArray(r)?c(n,e,r):s(n,e,r)}}),t.appendChild(n)})}function c(t,e,n){var r=document.createElement("select");r.classList.add("ql-"+e),n.forEach(function(t){var e=document.createElement("option");t!==!1?e.setAttribute("value",t):e.setAttribute("selected","selected"),r.appendChild(e)}),t.appendChild(r)}Object.defineProperty(e,"__esModule",{value:!0}),e.addControls=e.default=void 0;var f=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),p=function(){function t(t,e){for(var n=0;n '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '; -},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e){t.exports=' '},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l=function(){function t(t,e){for(var n=0;n1&&void 0!==arguments[1]&&arguments[1],n=this.container.querySelector(".ql-selected");if(t!==n)if(null!=n&&n.classList.remove("ql-selected"),null!=t){if(t.classList.add("ql-selected"),this.select.selectedIndex=[].indexOf.call(t.parentNode.children,t),t.hasAttribute("data-value")?this.label.setAttribute("data-value",t.getAttribute("data-value")):this.label.removeAttribute("data-value"),t.hasAttribute("data-label")?this.label.setAttribute("data-label",t.getAttribute("data-label")):this.label.removeAttribute("data-label"),e){if("function"==typeof Event)this.select.dispatchEvent(new Event("change"));else if("object"===("undefined"==typeof Event?"undefined":i(Event))){var r=document.createEvent("Event");r.initEvent("change",!0,!0),this.select.dispatchEvent(r)}this.close()}}else this.label.removeAttribute("data-value"),this.label.removeAttribute("data-label")}},{key:"update",value:function(){var t=void 0;if(this.select.selectedIndex>-1){var e=this.container.querySelector(".ql-picker-options").children[this.select.selectedIndex];t=this.select.options[this.select.selectedIndex],this.selectItem(e)}else this.selectItem(null);var n=null!=t&&t!==this.select.querySelector("option[selected]");this.label.classList.toggle("ql-active",n)}}]),t}();e.default=u},function(t,e){t.exports=' '},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var n=0;n=this.quill.root.offsetHeight)}},{key:"hide",value:function(){this.root.classList.add("ql-hidden")}},{key:"position",value:function(t){var e=t.left+t.width/2-this.root.offsetWidth/2,n=t.bottom+this.quill.root.scrollTop;this.root.style.left=e+"px",this.root.style.top=n+"px";var r=this.boundsContainer.getBoundingClientRect(),o=this.root.getBoundingClientRect(),i=0;return o.right>r.right&&(i=r.right-o.right,this.root.style.left=e+i+"px"),o.left0){r.show(),r.root.style.left="0px",r.root.style.width="",r.root.style.width=r.root.offsetWidth+"px";var n=r.quill.scroll.lines(e.index,e.length);if(1===n.length)r.position(r.quill.getBounds(e));else{var o=n[n.length-1],i=o.offset(r.quill.scroll),l=Math.min(o.length()-1,e.index+e.length-i),a=r.quill.getBounds(new y.Range(i,l));r.position(a)}}else document.activeElement!==r.textbox&&r.quill.hasFocus()&&r.hide()}),r}return l(e,t),s(e,[{key:"listen",value:function(){var t=this;a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"listen",this).call(this),this.root.querySelector(".ql-close").addEventListener("click",function(){t.root.classList.remove("ql-editing")}),this.quill.on(p.default.events.SCROLL_OPTIMIZE,function(){setTimeout(function(){if(!t.root.classList.contains("ql-hidden")){var e=t.quill.getSelection();null!=e&&t.position(t.quill.getBounds(e))}},1)})}},{key:"cancel",value:function(){this.show()}},{key:"position",value:function(t){var n=a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"position",this).call(this,t),r=this.root.querySelector(".ql-tooltip-arrow");return r.style.marginLeft="",0===n?n:void(r.style.marginLeft=-1*n-r.offsetWidth/2+"px")}}]),e}(h.BaseTooltip);_.TEMPLATE=['','
            ','','',"
            "].join(""),e.BubbleTooltip=_,e.default=m},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];e.forEach(function(e){var r=document.createElement("option");e===n?r.setAttribute("selected","selected"):r.setAttribute("value",e),t.appendChild(r)})}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.BaseTooltip=void 0;var s=function(){function t(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:"link",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.root.classList.remove("ql-hidden"),this.root.classList.add("ql-editing"),null!=e?this.textbox.value=e:t!==this.root.getAttribute("data-mode")&&(this.textbox.value=""),this.position(this.quill.getBounds(this.quill.selection.savedRange)),this.textbox.select(),this.textbox.setAttribute("placeholder",this.textbox.getAttribute("data-"+t)||""),this.root.setAttribute("data-mode",t)}},{key:"restoreFocus",value:function(){var t=this.quill.root.scrollTop;this.quill.focus(),this.quill.root.scrollTop=t}},{key:"save",value:function(){var t=this.textbox.value;switch(this.root.getAttribute("data-mode")){case"link":var e=this.quill.root.scrollTop;this.linkRange?(this.quill.formatText(this.linkRange,"link",t,y.default.sources.USER),delete this.linkRange):(this.restoreFocus(),this.quill.format("link",t,y.default.sources.USER)),this.quill.root.scrollTop=e;break;case"video":var n=t.match(/^(https?):\/\/(www\.)?youtube\.com\/watch.*v=([a-zA-Z0-9_-]+)/)||t.match(/^(https?):\/\/(www\.)?youtu\.be\/([a-zA-Z0-9_-]+)/);n?t=n[1]+"://www.youtube.com/embed/"+n[3]+"?showinfo=0":(n=t.match(/^(https?):\/\/(www\.)?vimeo\.com\/(\d+)/))&&(t=n[1]+"://player.vimeo.com/video/"+n[3]+"/");case"formula":var r=this.quill.getSelection(!0),o=r.index+r.length;null!=r&&(this.quill.insertEmbed(o,this.root.getAttribute("data-mode"),t,y.default.sources.USER),"formula"===this.root.getAttribute("data-mode")&&this.quill.insertText(o+1," ",y.default.sources.USER),this.quill.setSelection(o+2,y.default.sources.USER))}this.textbox.value="",this.hide()}}]),e}(A.default);e.BaseTooltip=C,e.default=L},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0); -}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},u=function(){function t(t,e){for(var n=0;n','','',''].join(""),e.default=w},function(t,e,n,r,o){function i(t){return null===t||void 0===t}function l(t){return!(!t||"object"!=typeof t||"number"!=typeof t.length)&&("function"==typeof t.copy&&"function"==typeof t.slice&&!(t.length>0&&"number"!=typeof t[0]))}function a(t,e,n){var r,o;if(i(t)||i(e))return!1;if(t.prototype!==e.prototype)return!1;if(c(t))return!!c(e)&&(t=s.call(t),e=s.call(e),f(t,e,n));if(l(t)){if(!l(e))return!1;if(t.length!==e.length)return!1;for(r=0;r=0;r--)if(a[r]!=p[r])return!1;for(r=a.length-1;r>=0;r--)if(o=a[r],!f(t[o],e[o],n))return!1;return typeof t==typeof e}var s=Array.prototype.slice,u=n(r),c=n(o),f=t.exports=function(t,e,n){return n||(n={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||"object"!=typeof t&&"object"!=typeof e?n.strict?t===e:t==e:a(t,e,n))}}]))}); -//# sourceMappingURL=quill.min.js.map \ No newline at end of file diff --git a/miniwob-sandbox/turk-www/common/special/text-editor/quill.snow.css b/miniwob-sandbox/turk-www/common/special/text-editor/quill.snow.css deleted file mode 100644 index 34ef5f1..0000000 --- a/miniwob-sandbox/turk-www/common/special/text-editor/quill.snow.css +++ /dev/null @@ -1,881 +0,0 @@ -/*! - * Quill Editor v1.1.5 - * https://quilljs.com/ - * Copyright (c) 2014, Jason Chen - * Copyright (c) 2013, salesforce.com - */ -.ql-container { - box-sizing: border-box; - font-family: Helvetica, Arial, sans-serif; - font-size: 13px; - height: 100%; - margin: 0px; - position: relative; -} -.ql-container.ql-disabled .ql-tooltip { - visibility: hidden; -} -.ql-clipboard { - left: -100000px; - height: 1px; - overflow-y: hidden; - position: absolute; - top: 50%; -} -.ql-clipboard p { - margin: 0; - padding: 0; -} -.ql-editor { - box-sizing: border-box; - cursor: text; - line-height: 1.42; - height: 100%; - outline: none; - overflow-y: auto; - padding: 12px 15px; - tab-size: 4; - -moz-tab-size: 4; - text-align: left; - white-space: pre-wrap; - word-wrap: break-word; -} -.ql-editor p, -.ql-editor ol, -.ql-editor ul, -.ql-editor pre, -.ql-editor blockquote, -.ql-editor h1, -.ql-editor h2, -.ql-editor h3, -.ql-editor h4, -.ql-editor h5, -.ql-editor h6 { - margin: 0; - padding: 0; - counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol, -.ql-editor ul { - padding-left: 1.5em; -} -.ql-editor ol > li, -.ql-editor ul > li { - list-style-type: none; -} -.ql-editor ul > li::before { - content: '\25CF'; -} -.ql-editor li::before { - display: inline-block; - margin-right: 0.3em; - text-align: right; - white-space: nowrap; - width: 1.2em; -} -.ql-editor li:not(.ql-direction-rtl)::before { - margin-left: -1.5em; -} -.ql-editor ol li, -.ql-editor ul li { - padding-left: 1.5em; -} -.ql-editor ol li { - counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; - counter-increment: list-num; -} -.ql-editor ol li:before { - content: counter(list-num, decimal) '. '; -} -.ql-editor ol li.ql-indent-1 { - counter-increment: list-1; -} -.ql-editor ol li.ql-indent-1:before { - content: counter(list-1, lower-alpha) '. '; -} -.ql-editor ol li.ql-indent-1 { - counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-2 { - counter-increment: list-2; -} -.ql-editor ol li.ql-indent-2:before { - content: counter(list-2, lower-roman) '. '; -} -.ql-editor ol li.ql-indent-2 { - counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-3 { - counter-increment: list-3; -} -.ql-editor ol li.ql-indent-3:before { - content: counter(list-3, decimal) '. '; -} -.ql-editor ol li.ql-indent-3 { - counter-reset: list-4 list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-4 { - counter-increment: list-4; -} -.ql-editor ol li.ql-indent-4:before { - content: counter(list-4, lower-alpha) '. '; -} -.ql-editor ol li.ql-indent-4 { - counter-reset: list-5 list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-5 { - counter-increment: list-5; -} -.ql-editor ol li.ql-indent-5:before { - content: counter(list-5, lower-roman) '. '; -} -.ql-editor ol li.ql-indent-5 { - counter-reset: list-6 list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-6 { - counter-increment: list-6; -} -.ql-editor ol li.ql-indent-6:before { - content: counter(list-6, decimal) '. '; -} -.ql-editor ol li.ql-indent-6 { - counter-reset: list-7 list-8 list-9; -} -.ql-editor ol li.ql-indent-7 { - counter-increment: list-7; -} -.ql-editor ol li.ql-indent-7:before { - content: counter(list-7, lower-alpha) '. '; -} -.ql-editor ol li.ql-indent-7 { - counter-reset: list-8 list-9; -} -.ql-editor ol li.ql-indent-8 { - counter-increment: list-8; -} -.ql-editor ol li.ql-indent-8:before { - content: counter(list-8, lower-roman) '. '; -} -.ql-editor ol li.ql-indent-8 { - counter-reset: list-9; -} -.ql-editor ol li.ql-indent-9 { - counter-increment: list-9; -} -.ql-editor ol li.ql-indent-9:before { - content: counter(list-9, decimal) '. '; -} -.ql-editor .ql-indent-1:not(.ql-direction-rtl) { - padding-left: 3em; -} -.ql-editor li.ql-indent-1:not(.ql-direction-rtl) { - padding-left: 4.5em; -} -.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right { - padding-right: 3em; -} -.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right { - padding-right: 4.5em; -} -.ql-editor .ql-indent-2:not(.ql-direction-rtl) { - padding-left: 6em; -} -.ql-editor li.ql-indent-2:not(.ql-direction-rtl) { - padding-left: 7.5em; -} -.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right { - padding-right: 6em; -} -.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right { - padding-right: 7.5em; -} -.ql-editor .ql-indent-3:not(.ql-direction-rtl) { - padding-left: 9em; -} -.ql-editor li.ql-indent-3:not(.ql-direction-rtl) { - padding-left: 10.5em; -} -.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right { - padding-right: 9em; -} -.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right { - padding-right: 10.5em; -} -.ql-editor .ql-indent-4:not(.ql-direction-rtl) { - padding-left: 12em; -} -.ql-editor li.ql-indent-4:not(.ql-direction-rtl) { - padding-left: 13.5em; -} -.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right { - padding-right: 12em; -} -.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right { - padding-right: 13.5em; -} -.ql-editor .ql-indent-5:not(.ql-direction-rtl) { - padding-left: 15em; -} -.ql-editor li.ql-indent-5:not(.ql-direction-rtl) { - padding-left: 16.5em; -} -.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right { - padding-right: 15em; -} -.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right { - padding-right: 16.5em; -} -.ql-editor .ql-indent-6:not(.ql-direction-rtl) { - padding-left: 18em; -} -.ql-editor li.ql-indent-6:not(.ql-direction-rtl) { - padding-left: 19.5em; -} -.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right { - padding-right: 18em; -} -.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right { - padding-right: 19.5em; -} -.ql-editor .ql-indent-7:not(.ql-direction-rtl) { - padding-left: 21em; -} -.ql-editor li.ql-indent-7:not(.ql-direction-rtl) { - padding-left: 22.5em; -} -.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right { - padding-right: 21em; -} -.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right { - padding-right: 22.5em; -} -.ql-editor .ql-indent-8:not(.ql-direction-rtl) { - padding-left: 24em; -} -.ql-editor li.ql-indent-8:not(.ql-direction-rtl) { - padding-left: 25.5em; -} -.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right { - padding-right: 24em; -} -.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right { - padding-right: 25.5em; -} -.ql-editor .ql-indent-9:not(.ql-direction-rtl) { - padding-left: 27em; -} -.ql-editor li.ql-indent-9:not(.ql-direction-rtl) { - padding-left: 28.5em; -} -.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right { - padding-right: 27em; -} -.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right { - padding-right: 28.5em; -} -.ql-editor .ql-video { - display: block; - max-width: 100%; -} -.ql-editor .ql-video.ql-align-center { - margin: 0 auto; -} -.ql-editor .ql-video.ql-align-right { - margin: 0 0 0 auto; -} -.ql-editor .ql-bg-black { - background-color: #000; -} -.ql-editor .ql-bg-red { - background-color: #e60000; -} -.ql-editor .ql-bg-orange { - background-color: #f90; -} -.ql-editor .ql-bg-yellow { - background-color: #ff0; -} -.ql-editor .ql-bg-green { - background-color: #008a00; -} -.ql-editor .ql-bg-blue { - background-color: #06c; -} -.ql-editor .ql-bg-purple { - background-color: #93f; -} -.ql-editor .ql-color-white { - color: #fff; -} -.ql-editor .ql-color-red { - color: #e60000; -} -.ql-editor .ql-color-orange { - color: #f90; -} -.ql-editor .ql-color-yellow { - color: #ff0; -} -.ql-editor .ql-color-green { - color: #008a00; -} -.ql-editor .ql-color-blue { - color: #06c; -} -.ql-editor .ql-color-purple { - color: #93f; -} -.ql-editor .ql-font-serif { - font-family: Georgia, Times New Roman, serif; -} -.ql-editor .ql-font-monospace { - font-family: Monaco, Courier New, monospace; -} -.ql-editor .ql-size-small { - font-size: 0.75em; -} -.ql-editor .ql-size-large { - font-size: 1.5em; -} -.ql-editor .ql-size-huge { - font-size: 2.5em; -} -.ql-editor .ql-direction-rtl { - direction: rtl; - text-align: inherit; -} -.ql-editor .ql-align-center { - text-align: center; -} -.ql-editor .ql-align-justify { - text-align: justify; -} -.ql-editor .ql-align-right { - text-align: right; -} -.ql-editor.ql-blank::before { - color: rgba(0,0,0,0.6); - content: attr(data-placeholder); - font-style: italic; - pointer-events: none; - position: absolute; -} -.ql-snow.ql-toolbar:after, -.ql-snow .ql-toolbar:after { - clear: both; - content: ''; - display: table; -} -.ql-snow.ql-toolbar button, -.ql-snow .ql-toolbar button { - background: none; - border: none; - cursor: pointer; - display: inline-block; - float: left; - height: 24px; - padding: 3px 5px; - width: 28px; -} -.ql-snow.ql-toolbar button svg, -.ql-snow .ql-toolbar button svg { - float: left; - height: 100%; -} -.ql-snow.ql-toolbar input.ql-image[type=file], -.ql-snow .ql-toolbar input.ql-image[type=file] { - display: none; -} -.ql-snow.ql-toolbar button:hover, -.ql-snow .ql-toolbar button:hover, -.ql-snow.ql-toolbar button.ql-active, -.ql-snow .ql-toolbar button.ql-active, -.ql-snow.ql-toolbar .ql-picker-label:hover, -.ql-snow .ql-toolbar .ql-picker-label:hover, -.ql-snow.ql-toolbar .ql-picker-label.ql-active, -.ql-snow .ql-toolbar .ql-picker-label.ql-active, -.ql-snow.ql-toolbar .ql-picker-item:hover, -.ql-snow .ql-toolbar .ql-picker-item:hover, -.ql-snow.ql-toolbar .ql-picker-item.ql-selected, -.ql-snow .ql-toolbar .ql-picker-item.ql-selected { - color: #06c; -} -.ql-snow.ql-toolbar button:hover .ql-fill, -.ql-snow .ql-toolbar button:hover .ql-fill, -.ql-snow.ql-toolbar button.ql-active .ql-fill, -.ql-snow .ql-toolbar button.ql-active .ql-fill, -.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill, -.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill, -.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill, -.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill, -.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill, -.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill, -.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill, -.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill, -.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill, -.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill, -.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill, -.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill, -.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, -.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, -.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, -.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, -.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, -.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, -.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill, -.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill { - fill: #06c; -} -.ql-snow.ql-toolbar button:hover .ql-stroke, -.ql-snow .ql-toolbar button:hover .ql-stroke, -.ql-snow.ql-toolbar button.ql-active .ql-stroke, -.ql-snow .ql-toolbar button.ql-active .ql-stroke, -.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke, -.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke, -.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke, -.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke, -.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke, -.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke, -.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke, -.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke, -.ql-snow.ql-toolbar button:hover .ql-stroke-miter, -.ql-snow .ql-toolbar button:hover .ql-stroke-miter, -.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter, -.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter, -.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter, -.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter, -.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, -.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, -.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter, -.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter, -.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter, -.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter { - stroke: #06c; -} -.ql-snow { - box-sizing: border-box; -} -.ql-snow * { - box-sizing: border-box; -} -.ql-snow .ql-hidden { - display: none; -} -.ql-snow .ql-out-bottom, -.ql-snow .ql-out-top { - visibility: hidden; -} -.ql-snow .ql-tooltip { - position: absolute; -} -.ql-snow .ql-tooltip a { - cursor: pointer; - text-decoration: none; -} -.ql-snow .ql-formats { - display: inline-block; - vertical-align: middle; -} -.ql-snow .ql-formats:after { - clear: both; - content: ''; - display: table; -} -.ql-snow .ql-stroke { - fill: none; - stroke: #444; - stroke-linecap: round; - stroke-linejoin: round; - stroke-width: 2; -} -.ql-snow .ql-stroke-miter { - fill: none; - stroke: #444; - stroke-miterlimit: 10; - stroke-width: 2; -} -.ql-snow .ql-fill, -.ql-snow .ql-stroke.ql-fill { - fill: #444; -} -.ql-snow .ql-empty { - fill: none; -} -.ql-snow .ql-even { - fill-rule: evenodd; -} -.ql-snow .ql-thin, -.ql-snow .ql-stroke.ql-thin { - stroke-width: 1; -} -.ql-snow .ql-transparent { - opacity: 0.4; -} -.ql-snow .ql-direction svg:last-child { - display: none; -} -.ql-snow .ql-direction.ql-active svg:last-child { - display: inline; -} -.ql-snow .ql-direction.ql-active svg:first-child { - display: none; -} -.ql-snow .ql-editor h1 { - font-size: 2em; -} -.ql-snow .ql-editor h2 { - font-size: 1.5em; -} -.ql-snow .ql-editor h3 { - font-size: 1.17em; -} -.ql-snow .ql-editor h4 { - font-size: 1em; -} -.ql-snow .ql-editor h5 { - font-size: 0.83em; -} -.ql-snow .ql-editor h6 { - font-size: 0.67em; -} -.ql-snow .ql-editor a { - text-decoration: underline; -} -.ql-snow .ql-editor blockquote { - border-left: 4px solid #ccc; - margin-bottom: 5px; - margin-top: 5px; - padding-left: 16px; -} -.ql-snow .ql-editor code, -.ql-snow .ql-editor pre { - background-color: #f0f0f0; - border-radius: 3px; -} -.ql-snow .ql-editor pre { - white-space: pre-wrap; - margin-bottom: 5px; - margin-top: 5px; - padding: 5px 10px; -} -.ql-snow .ql-editor code { - font-size: 85%; - padding-bottom: 2px; - padding-top: 2px; -} -.ql-snow .ql-editor code:before, -.ql-snow .ql-editor code:after { - content: "\A0"; - letter-spacing: -2px; -} -.ql-snow .ql-editor pre.ql-syntax { - background-color: #23241f; - color: #f8f8f2; - overflow: visible; -} -.ql-snow .ql-editor img { - max-width: 100%; -} -.ql-snow .ql-picker { - color: #444; - display: inline-block; - float: left; - font-size: 14px; - font-weight: 500; - height: 24px; - position: relative; - vertical-align: middle; -} -.ql-snow .ql-picker-label { - cursor: pointer; - display: inline-block; - height: 100%; - padding-left: 8px; - padding-right: 2px; - position: relative; - width: 100%; -} -.ql-snow .ql-picker-label::before { - display: inline-block; - line-height: 22px; -} -.ql-snow .ql-picker-options { - background-color: #fff; - display: none; - min-width: 100%; - padding: 4px 8px; - position: absolute; - white-space: nowrap; -} -.ql-snow .ql-picker-options .ql-picker-item { - cursor: pointer; - display: block; - padding-bottom: 5px; - padding-top: 5px; -} -.ql-snow .ql-picker.ql-expanded .ql-picker-label { - color: #ccc; - z-index: 2; -} -.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill { - fill: #ccc; -} -.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke { - stroke: #ccc; -} -.ql-snow .ql-picker.ql-expanded .ql-picker-options { - display: block; - margin-top: -1px; - top: 100%; - z-index: 1; -} -.ql-snow .ql-color-picker, -.ql-snow .ql-icon-picker { - width: 28px; -} -.ql-snow .ql-color-picker .ql-picker-label, -.ql-snow .ql-icon-picker .ql-picker-label { - padding: 2px 4px; -} -.ql-snow .ql-color-picker .ql-picker-label svg, -.ql-snow .ql-icon-picker .ql-picker-label svg { - right: 4px; -} -.ql-snow .ql-icon-picker .ql-picker-options { - padding: 4px 0px; -} -.ql-snow .ql-icon-picker .ql-picker-item { - height: 24px; - width: 24px; - padding: 2px 4px; -} -.ql-snow .ql-color-picker .ql-picker-options { - padding: 3px 5px; - width: 152px; -} -.ql-snow .ql-color-picker .ql-picker-item { - border: 1px solid transparent; - float: left; - height: 16px; - margin: 2px; - padding: 0px; - width: 16px; -} -.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg { - position: absolute; - margin-top: -9px; - right: 0; - top: 50%; - width: 18px; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before, -.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before, -.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before, -.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before, -.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before { - content: attr(data-label); -} -.ql-snow .ql-picker.ql-header { - width: 98px; -} -.ql-snow .ql-picker.ql-header .ql-picker-label::before, -.ql-snow .ql-picker.ql-header .ql-picker-item::before { - content: 'Normal'; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before { - content: 'Heading 1'; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { - content: 'Heading 2'; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { - content: 'Heading 3'; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before { - content: 'Heading 4'; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before { - content: 'Heading 5'; -} -.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before, -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before { - content: 'Heading 6'; -} -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before { - font-size: 2em; -} -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { - font-size: 1.5em; -} -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { - font-size: 1.17em; -} -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before { - font-size: 1em; -} -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before { - font-size: 0.83em; -} -.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before { - font-size: 0.67em; -} -.ql-snow .ql-picker.ql-font { - width: 108px; -} -.ql-snow .ql-picker.ql-font .ql-picker-label::before, -.ql-snow .ql-picker.ql-font .ql-picker-item::before { - content: 'Sans Serif'; -} -.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]::before, -.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before { - content: 'Serif'; -} -.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before, -.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before { - content: 'Monospace'; -} -.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before { - font-family: Georgia, Times New Roman, serif; -} -.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before { - font-family: Monaco, Courier New, monospace; -} -.ql-snow .ql-picker.ql-size { - width: 98px; -} -.ql-snow .ql-picker.ql-size .ql-picker-label::before, -.ql-snow .ql-picker.ql-size .ql-picker-item::before { - content: 'Normal'; -} -.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]::before, -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before { - content: 'Small'; -} -.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]::before, -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before { - content: 'Large'; -} -.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]::before, -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before { - content: 'Huge'; -} -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before { - font-size: 10px; -} -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before { - font-size: 18px; -} -.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before { - font-size: 32px; -} -.ql-snow .ql-color-picker.ql-background .ql-picker-item { - background-color: #fff; -} -.ql-snow .ql-color-picker.ql-color .ql-picker-item { - background-color: #000; -} -.ql-toolbar.ql-snow { - border: 1px solid #ccc; - box-sizing: border-box; - font-family: 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif; - padding: 8px; -} -.ql-toolbar.ql-snow .ql-formats { - margin-right: 15px; -} -.ql-toolbar.ql-snow .ql-picker-label { - border: 1px solid transparent; -} -.ql-toolbar.ql-snow .ql-picker-options { - border: 1px solid transparent; - box-shadow: rgba(0,0,0,0.2) 0 2px 8px; -} -.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label { - border-color: #ccc; -} -.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options { - border-color: #ccc; -} -.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected, -.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover { - border-color: #000; -} -.ql-toolbar.ql-snow + .ql-container.ql-snow { - border-top: 0px; -} -.ql-snow .ql-tooltip { - background-color: #fff; - border: 1px solid #ccc; - box-shadow: 0px 0px 5px #ddd; - color: #444; - margin-top: 10px; - padding: 5px 12px; - white-space: nowrap; -} -.ql-snow .ql-tooltip::before { - content: "Visit URL:"; - line-height: 26px; - margin-right: 8px; -} -.ql-snow .ql-tooltip input[type=text] { - display: none; - border: 1px solid #ccc; - font-size: 13px; - height: 26px; - margin: 0px; - padding: 3px 5px; - width: 170px; -} -.ql-snow .ql-tooltip a.ql-preview { - display: inline-block; - max-width: 200px; - overflow-x: hidden; - text-overflow: ellipsis; - vertical-align: top; -} -.ql-snow .ql-tooltip a.ql-action::after { - border-right: 1px solid #ccc; - content: 'Edit'; - margin-left: 16px; - padding-right: 8px; -} -.ql-snow .ql-tooltip a.ql-remove::before { - content: 'Remove'; - margin-left: 8px; -} -.ql-snow .ql-tooltip a { - line-height: 26px; -} -.ql-snow .ql-tooltip.ql-editing a.ql-preview, -.ql-snow .ql-tooltip.ql-editing a.ql-remove { - display: none; -} -.ql-snow .ql-tooltip.ql-editing input[type=text] { - display: inline-block; -} -.ql-snow .ql-tooltip.ql-editing a.ql-action::after { - border-right: 0px; - content: 'Save'; - padding-right: 0px; -} -.ql-snow .ql-tooltip[data-mode=link]::before { - content: "Enter link:"; -} -.ql-snow .ql-tooltip[data-mode=formula]::before { - content: "Enter formula:"; -} -.ql-snow .ql-tooltip[data-mode=video]::before { - content: "Enter video:"; -} -.ql-snow a { - color: #06c; -} -.ql-container.ql-snow { - border: 1px solid #ccc; -} diff --git a/miniwob-sandbox/turk-www/common/special/tic-tac-toe/o.png b/miniwob-sandbox/turk-www/common/special/tic-tac-toe/o.png deleted file mode 100644 index 259a8a7404c3705f87496861df51601886193303..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2803 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 diff --git a/miniwob-sandbox/turk-www/common/special/tic-tac-toe/x.png b/miniwob-sandbox/turk-www/common/special/tic-tac-toe/x.png deleted file mode 100644 index d6a3263be56ba94cc2b3f855ae7d8f3032209e32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 993 zcmWlY4NMbf7=W+sX>S-NH()7k8MckGxB+!TI%WqubEQ_&b}k~;pSJEtCpaPE5VfnN z%e2L7scvfhMK==&6^>yRFhoknb|nMnuu-5BsyU1qbz_~;oD*R$mweB6-}}Dz-QDx% zbAMpaCMSuL5Cloqtsy^z*)cz`g~0xzZG$kOHLG>&F}Q5lCoWjORK3PjgCL7i=LZit zb54XHg0FNWvA*uyUw@QVNQktO`;vp=`#Fr2mJ1elUUh_g?~P@=t}5t^zG!*g+WMF< z_Mmfw!2Jr(as4&T<<7cKnQ}6v`7YOh&78=z;Pp-aLat-v1_U1MRY67VxR-X_>;5}jPIknUkR09J zok+*8NNQ~wbntMN1rP0rP*5_y7n1%u+sYa=(nxQo9ErT4G#;Dhm+=|PiajV59CqQ# zS%X5;#|b?tJXSST$Y)fyK1QjkE6tcFrdy0Fd$0bAEA74pK*w6Z@gzX!5GD$`D1d(e z(BcBTa}zU@lZ}y{jF@i+O2yn}xz(nBp+P(^|pJLr-#p3zpwq%Lv!8sRS_$keL9yF~E1r z0nQ4*#a4i0icPKm-ppk4g%{Z3Rl&2EShFSCQY}j_CnrW_&X3+|ufz%b^u8yqC8n>B zo*{jge*(A8GO-0Gd<~$idc%G&X*eJP`#)TOc33ZmL2&-md|2pFLJ!WDKy|1@0iCe^ zG62tPRQAIrxkLGoJhWYE(PxE**uYNs@qH1{+oVqg@sc7Cui6FT$E!iSy`Svk!e3Dpbz~+CV(j zhWjb{4zy)sCGPjqC*e+7ig#0VE`0lzQ+T(R&WCpr3M|7izKAW~b3D&JvA_|Z=r;)a/=2,b/=2,c>>>=1;return(a+c)/b};return u.int32=function(){return 0|t.g(4)},u.quick=function(){return t.g(4)/4294967296},u.double=u,g(i(t.S),a),(j.pass||k||function(a,c,d,f){return f&&(f.S&&e(f,t),a.state=function(){return e(t,{})}),d?(b[o]=a,c):a})(u,s,"global"in j?j.global:this==b,j.state)}function d(a){var b,c=a.length,d=this,e=0,f=d.i=d.j=0,g=d.S=[];for(c||(a=[c++]);e - - - -