Wiuhh commited on
Commit
ac20df9
·
verified ·
1 Parent(s): ea15f6c

Upload 20 files

Browse files
README.md ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Photo Upscaler
3
+ emoji: 🏙️
4
+ colorFrom: indigo
5
+ colorTo: gray
6
+ sdk: static
7
+ pinned: true
8
+ short_description: Ai Image Upscaler
9
+ ---
10
+
11
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
all.min.css ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ /*!
2
+ * Font Awesome Free 6.0.0-beta3 by @fontawesome - https://fontawesome.com
3
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4
+ * Copyright 2021 Fonticons, Inc.
5
+ */
6
+ .fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-duotone,.fa-light,.fa-regular,.fa-solid,.fa-thin,.fab,.fad,.fal,.far,.fas,.fat{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-fade,.fa-flip,.fa-pulse,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-transition-delay:0s;transition-delay:0s;-webkit-transition-duration:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-a:before{content:"\41"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-anchor:before{content:"\f13d"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-ankh:before{content:"\f644"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-archway:before{content:"\f557"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-arrow-trend-down:before{content:"\e097"}.fa-arrow-trend-up:before{content:"\e098"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-asterisk:before{content:"\2a"}.fa-at:before{content:"\40"}.fa-atom:before{content:"\f5d2"}.fa-audio-description:before{content:"\f29e"}.fa-austral-sign:before{content:"\e0a9"}.fa-award:before{content:"\f559"}.fa-b:before{content:"\42"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-backward:before{content:"\f04a"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-bahai:before{content:"\f666"}.fa-baht-sign:before{content:"\e0ac"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-barcode:before{content:"\f02a"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-bell:before{content:"\f0f3"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bicycle:before{content:"\f206"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blog:before{content:"\f781"}.fa-bold:before{content:"\f032"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-bookmark:before{content:"\f02e"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broom:before{content:"\f51a"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-brush:before{content:"\f55d"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-c:before{content:"\43"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-week:before{content:"\f784"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-camera-rotate:before{content:"\e0d8"}.fa-campground:before{content:"\f6bb"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-cart-plus:before{content:"\f217"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cedi-sign:before{content:"\e0df"}.fa-cent-sign:before{content:"\e3f5"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-charging-station:before{content:"\f5e7"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-chart-column:before{content:"\e0e3"}.fa-chart-gantt:before{content:"\e0e4"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-double:before{content:"\f560"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-circle-notch:before{content:"\f1ce"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-city:before{content:"\f64f"}.fa-clapperboard:before{content:"\e131"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-clover:before{content:"\e139"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-code-commit:before{content:"\f386"}.fa-code-compare:before{content:"\e13a"}.fa-code-fork:before{content:"\e13b"}.fa-code-merge:before{content:"\f387"}.fa-code-pull-request:before{content:"\e13c"}.fa-coins:before{content:"\f51e"}.fa-colon-sign:before{content:"\e140"}.fa-comment:before{content:"\f075"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-compress:before{content:"\f066"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-d:before{content:"\44"}.fa-database:before{content:"\f1c0"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-democrat:before{content:"\f747"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-dharmachakra:before{content:"\f655"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-diamond:before{content:"\f219"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dna:before{content:"\f471"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-dong-sign:before{content:"\e169"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dove:before{content:"\f4ba"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-download:before{content:"\f019"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-e:before{content:"\45"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elevator:before{content:"\e16d"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-equals:before{content:"\3d"}.fa-eraser:before{content:"\f12d"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-exclamation:before{content:"\21"}.fa-expand:before{content:"\f065"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-eye-slash:before{content:"\f070"}.fa-f:before{content:"\46"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-fan:before{content:"\f863"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-file:before{content:"\f15b"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-excel:before{content:"\f1c3"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-file-medical:before{content:"\f477"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-video:before{content:"\f1c8"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-file-word:before{content:"\f1c2"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-extinguisher:before{content:"\f134"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-fish:before{content:"\f578"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-florin-sign:before{content:"\e184"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-folder-tree:before{content:"\f802"}.fa-font:before{content:"\f031"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-franc-sign:before{content:"\e18f"}.fa-frog:before{content:"\f52e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-g:before{content:"\47"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-dashboard:before,.fa-gauge-high:before,.fa-gauge:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-gauge-simple-high:before,.fa-gauge-simple:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-glasses:before{content:"\f530"}.fa-globe:before{content:"\f0ac"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-greater-than:before{content:"\3e"}.fa-greater-than-equal:before{content:"\f532"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-guarani-sign:before{content:"\e19a"}.fa-guitar:before{content:"\f7a6"}.fa-gun:before{content:"\e19b"}.fa-h:before{content:"\48"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-hands-clapping:before{content:"\e1a8"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-handshake:before{content:"\f2b5"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-hashtag:before{content:"\23"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-highlighter:before{content:"\f591"}.fa-hippo:before{content:"\f6ed"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hourglass-2:before,.fa-hourglass-half:before,.fa-hourglass:before{content:"\f254"}.fa-hourglass-empty:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-house-chimney-user:before{content:"\e065"}.fa-house-crack:before{content:"\e3b1"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-house-medical:before{content:"\e3b2"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-i:before{content:"\49"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-images:before{content:"\f302"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-italic:before{content:"\f033"}.fa-j:before{content:"\4a"}.fa-jedi:before{content:"\f669"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-joint:before{content:"\f595"}.fa-k:before{content:"\4b"}.fa-kaaba:before{content:"\f66b"}.fa-key:before{content:"\f084"}.fa-keyboard:before{content:"\f11c"}.fa-khanda:before{content:"\f66d"}.fa-kip-sign:before{content:"\e1c4"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-kiwi-bird:before{content:"\f535"}.fa-l:before{content:"\4c"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-lari-sign:before{content:"\e1c8"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-lemon:before{content:"\f094"}.fa-less-than:before{content:"\3c"}.fa-less-than-equal:before{content:"\f537"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-lira-sign:before{content:"\f195"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-location-arrow:before{content:"\f124"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-m:before{content:"\4d"}.fa-magnet:before{content:"\f076"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-manat-sign:before{content:"\e1d5"}.fa-map:before{content:"\f279"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-pin:before{content:"\f276"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-and-venus:before{content:"\f224"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-mask:before{content:"\f6fa"}.fa-mask-face:before{content:"\e1d7"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-medal:before{content:"\f5a2"}.fa-memory:before{content:"\f538"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-mill-sign:before{content:"\e1ed"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-mitten:before{content:"\f7b5"}.fa-mobile-button:before{content:"\f10b"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mug-hot:before{content:"\f7b6"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-music:before{content:"\f001"}.fa-n:before{content:"\4e"}.fa-naira-sign:before{content:"\e1f6"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-not-equal:before{content:"\f53e"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-notes-medical:before{content:"\f481"}.fa-o:before{content:"\4f"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-oil-can:before{content:"\f613"}.fa-om:before{content:"\f679"}.fa-otter:before{content:"\f700"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-p:before{content:"\50"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-pallet:before{content:"\f482"}.fa-panorama:before{content:"\e209"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-passport:before{content:"\f5ab"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-pause:before{content:"\f04c"}.fa-paw:before{content:"\f1b0"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-person-booth:before{content:"\f756"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-peseta-sign:before{content:"\e221"}.fa-peso-sign:before{content:"\e222"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-plug:before{content:"\f1e6"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-plus-minus:before{content:"\e43c"}.fa-podcast:before{content:"\f2ce"}.fa-poo:before{content:"\f2fe"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-power-off:before{content:"\f011"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-puzzle-piece:before{content:"\f12e"}.fa-q:before{content:"\51"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\3f"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-r:before{content:"\52"}.fa-radiation:before{content:"\f7b9"}.fa-rainbow:before{content:"\f75b"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-recycle:before{content:"\f1b8"}.fa-registered:before{content:"\f25d"}.fa-repeat:before{content:"\f363"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-republican:before{content:"\f75e"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-ribbon:before{content:"\f4d6"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-route:before{content:"\f4d7"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-rupiah-sign:before{content:"\e23d"}.fa-s:before{content:"\53"}.fa-sailboat:before{content:"\e445"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-school:before{content:"\f549"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-screwdriver:before{content:"\f54a"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-scroll:before{content:"\f70e"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-sd-card:before{content:"\f7c2"}.fa-section:before{content:"\e447"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-server:before{content:"\f233"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-shield:before{content:"\f132"}.fa-shield-alt:before,.fa-shield-blank:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-shoe-prints:before{content:"\f54b"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-shower:before{content:"\f2cc"}.fa-shrimp:before{content:"\e448"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-sim-card:before{content:"\f7c4"}.fa-sink:before{content:"\e06d"}.fa-sitemap:before{content:"\f0e8"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-spa:before{content:"\f5bb"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-spray-can:before{content:"\f5bd"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-square:before{content:"\f0c8"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-square-full:before{content:"\f45c"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-stairs:before{content:"\e289"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-stethoscope:before{content:"\f0f1"}.fa-stop:before{content:"\f04d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-slash:before{content:"\e071"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stroopwafel:before{content:"\f551"}.fa-subscript:before{content:"\f12c"}.fa-suitcase:before{content:"\f0f2"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superscript:before{content:"\f12b"}.fa-swatchbook:before{content:"\f5c3"}.fa-synagogue:before{content:"\f69b"}.fa-syringe:before{content:"\f48e"}.fa-t:before{content:"\54"}.fa-table:before{content:"\f0ce"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-tablet-button:before{content:"\f10a"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-text-width:before{content:"\f035"}.fa-thermometer:before{content:"\f491"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-ticket:before{content:"\f145"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-timeline:before{content:"\e29c"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tooth:before{content:"\f5c9"}.fa-torii-gate:before{content:"\f6a1"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-tractor:before{content:"\f722"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-train-tram:before,.fa-tram:before{content:"\f7da"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-u:before{content:"\55"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-universal-access:before{content:"\f29a"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-upload:before{content:"\f093"}.fa-user:before{content:"\f007"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-clock:before{content:"\f4fd"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-user-graduate:before{content:"\f501"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-user-injured:before{content:"\f728"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-user-lock:before{content:"\f502"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-v:before{content:"\56"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-vault:before{content:"\e2c5"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-volume-off:before{content:"\f026"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-vr-cardboard:before{content:"\f729"}.fa-w:before{content:"\57"}.fa-wallet:before{content:"\f555"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-wave-square:before{content:"\f83e"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-wheelchair:before{content:"\f193"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-wind:before{content:"\f72e"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-wrench:before{content:"\f0ad"}.fa-x:before{content:"\58"}.fa-x-ray:before{content:"\f497"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-y:before{content:"\59"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-z:before{content:"\5a"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-family:"Font Awesome 6 Brands";font-weight:400}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-alipay:before{content:"\f642"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-amilia:before{content:"\f36d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-pay:before{content:"\f415"}.fa-artstation:before{content:"\f77a"}.fa-asymmetrik:before{content:"\f372"}.fa-atlassian:before{content:"\f77b"}.fa-audible:before{content:"\f373"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-aws:before{content:"\f375"}.fa-bandcamp:before{content:"\f2d5"}.fa-battle-net:before{content:"\f835"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bilibili:before{content:"\e3d9"}.fa-bimobject:before{content:"\f378"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bootstrap:before{content:"\f836"}.fa-bots:before{content:"\e340"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-buromobelexperte:before{content:"\f37f"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cmplid:before{content:"\e360"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cotton-bureau:before{content:"\f89e"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-critical-role:before{content:"\f6c9"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dhl:before{content:"\f790"}.fa-diaspora:before{content:"\f791"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-draft2digital:before{content:"\f396"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drupal:before{content:"\f1a9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-elementor:before{content:"\f430"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-evernote:before{content:"\f839"}.fa-expeditedssl:before{content:"\f23e"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-figma:before{content:"\f799"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-fly:before{content:"\f417"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-fulcrum:before{content:"\f50b"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-gofore:before{content:"\f3a7"}.fa-golang:before{content:"\e40f"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-gulp:before{content:"\f3ae"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-hive:before{content:"\e07f"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-hotjar:before{content:"\f3b1"}.fa-houzz:before{content:"\f27c"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-ideal:before{content:"\e013"}.fa-imdb:before{content:"\f2d8"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joomla:before{content:"\f1aa"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaggle:before{content:"\f5fa"}.fa-keybase:before{content:"\f4f5"}.fa-keycdn:before{content:"\f3ba"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-korvue:before{content:"\f42f"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-leanpub:before{content:"\f212"}.fa-less:before{content:"\f41d"}.fa-line:before{content:"\f3c0"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-mailchimp:before{content:"\f59e"}.fa-mandalorian:before{content:"\f50f"}.fa-markdown:before{content:"\f60f"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medapps:before{content:"\f3c6"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-mendeley:before{content:"\f7b3"}.fa-microblog:before{content:"\e01a"}.fa-microsoft:before{content:"\f3ca"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-old-republic:before{content:"\f510"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-palfed:before{content:"\f3d8"}.fa-patreon:before{content:"\f3d9"}.fa-paypal:before{content:"\f1ed"}.fa-penny-arcade:before{content:"\f704"}.fa-perbyte:before{content:"\e083"}.fa-periscope:before{content:"\f3da"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pix:before{content:"\e43a"}.fa-playstation:before{content:"\f3df"}.fa-product-hunt:before{content:"\f288"}.fa-pushed:before{content:"\f3e1"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-r-project:before{content:"\f4f7"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-renren:before{content:"\f18b"}.fa-replyd:before{content:"\f3e6"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-rev:before{content:"\f5b2"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-rust:before{content:"\e07a"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-schlix:before{content:"\f3ea"}.fa-scribd:before{content:"\f28a"}.fa-searchengin:before{content:"\f3eb"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-servicestack:before{content:"\f3ec"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shopify:before{content:"\e057"}.fa-shopware:before{content:"\f5b5"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sith:before{content:"\f512"}.fa-sitrox:before{content:"\e44a"}.fa-sketch:before{content:"\f7c6"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-slideshare:before{content:"\f1e7"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-square:before{content:"\f2ad"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spotify:before{content:"\f1bc"}.fa-square-font-awesome:before{content:"\f425"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-sticker-mule:before{content:"\f3f7"}.fa-strava:before{content:"\f428"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-superpowers:before{content:"\f2dd"}.fa-supple:before{content:"\f3f9"}.fa-suse:before{content:"\f7d6"}.fa-swift:before{content:"\f8e1"}.fa-symfony:before{content:"\f83d"}.fa-teamspeak:before{content:"\f4f9"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-the-red-yeti:before{content:"\f69d"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-think-peaks:before{content:"\f731"}.fa-tiktok:before{content:"\e07b"}.fa-trade-federation:before{content:"\f513"}.fa-trello:before{content:"\f181"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-uncharted:before{content:"\e084"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-vaadin:before{content:"\f408"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-viber:before{content:"\f409"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-vuejs:before{content:"\f41f"}.fa-watchman-monitoring:before{content:"\e087"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-whmcs:before{content:"\f40d"}.fa-wikipedia-w:before{content:"\f266"}.fa-windows:before{content:"\f17a"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-family:"Font Awesome 6 Free";font-weight:400}:host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-family:"Font Awesome 6 Free";font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:U+f003,U+f006,U+f014,U+f016-f017,U+f01a-f01b,U+f01d,U+f022,U+f03e,U+f044,U+f046,U+f05c-f05d,U+f06e,U+f070,U+f087-f088,U+f08a,U+f094,U+f096-f097,U+f09d,U+f0a0,U+f0a2,U+f0a4-f0a7,U+f0c5,U+f0c7,U+f0e5-f0e6,U+f0eb,U+f0f6-f0f8,U+f10c,U+f114-f115,U+f118-f11a,U+f11c-f11d,U+f133,U+f147,U+f14e,U+f150-f152,U+f185-f186,U+f18e,U+f190-f192,U+f196,U+f1c1-f1c9,U+f1d9,U+f1db,U+f1e3,U+f1ea,U+f1f7,U+f1f9,U+f20a,U+f247-f248,U+f24a,U+f24d,U+f255-f25b,U+f25d,U+f271-f274,U+f278,U+f27b,U+f28c,U+f28e,U+f29c,U+f2b5,U+f2b7,U+f2ba,U+f2bc,U+f2be,U+f2c0-f2c1,U+f2c3,U+f2d0,U+f2d2,U+f2d4,U+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:U+f041,U+f047,U+f065-f066,U+f07d-f07e,U+f080,U+f08b,U+f08e,U+f090,U+f09a,U+f0ac,U+f0ae,U+f0b2,U+f0d0,U+f0d6,U+f0e4,U+f0ec,U+f10a-f10b,U+f123,U+f13e,U+f148-f149,U+f14c,U+f156,U+f15e,U+f160-f161,U+f163,U+f175-f178,U+f195,U+f1f8,U+f219,U+f250,U+f252,U+f27a}
css.css ADDED
The diff for this file is too large to render. See raw diff
 
gitattributes (1).txt ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
gitattributes.txt ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
index.html ADDED
@@ -0,0 +1,438 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html class="dark" lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <meta http-equiv="X-UA-Compatible" content="ie=edge">
7
+ <title>AI Image Upscaler</title>
8
+ <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700&display=swap" rel="stylesheet"/>
9
+ <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined" rel="stylesheet"/>
10
+ <link rel="stylesheet" href="css.css">
11
+ <link rel="stylesheet" href="all.min.css">
12
+ <link rel="stylesheet" href="local.css">
13
+ <link rel="stylesheet" href="new-design.css">
14
+ <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1'>
15
+ <script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script>
16
+ <script>
17
+ tailwind.config = {
18
+ darkMode: "class",
19
+ theme: {
20
+ extend: {
21
+ colors: {
22
+ primary: "hsl(265, 100%, 61%)",
23
+ "background-light": "#f6f6f8",
24
+ "background-dark": "hsl(240, 14%, 5%)",
25
+ "card-dark": "hsl(240, 10%, 7%)",
26
+ "text-primary": "hsl(240, 5%, 90%)",
27
+ "text-muted": "hsl(240, 4%, 65%)",
28
+ },
29
+ fontFamily: {
30
+ display: ["Space Grotesk"],
31
+ },
32
+ borderRadius: {
33
+ DEFAULT: "0.25rem",
34
+ lg: "0.5rem",
35
+ xl: "0.75rem",
36
+ full: "9999px",
37
+ },
38
+ },
39
+ },
40
+ };
41
+ </script>
42
+ <style type="text/tailwindcss">
43
+ .form-select {
44
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='hsl(240, 4%, 65%)' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");
45
+ background-position: right 0.5rem center;
46
+ background-repeat: no-repeat;
47
+ background-size: 1.5em 1.5em;
48
+ padding-right: 2.5rem;
49
+ -webkit-print-color-adjust: exact;
50
+ print-color-adjust: exact;
51
+ }
52
+ .gradient-text {
53
+ background: linear-gradient(90deg, hsl(265, 100%, 61%) 0%, #ff4b8d 100%);
54
+ -webkit-background-clip: text;
55
+ -webkit-text-fill-color: transparent;
56
+ }
57
+ </style>
58
+ </head>
59
+
60
+ <body class="bg-background-dark font-display text-text-primary" data-rsssl="1">
61
+
62
+ <div class="image-loading-box noselect">
63
+ <div class="loading-box show-message-box">
64
+ <div class="loading-content">
65
+ <div class="modern-spinner"></div>
66
+ <div class="loading-text">Enhancing your image...</div>
67
+ <div class="loading-subtext">This may take a few moments</div>
68
+ </div>
69
+ <div class="cancel-upload">Cancel</div>
70
+ </div>
71
+
72
+ <div class="load-error-box show-message-box">
73
+ <img src="" alt="Fail">
74
+ <div class="error-text"></div>
75
+ <div class="button-group">
76
+ <div class="confirm">
77
+ <label for="upload">New Image</label>
78
+ </div>
79
+ <div class="cancel">Cancel</div>
80
+ </div>
81
+ <div class="feed-back-box"></div>
82
+ </div>
83
+
84
+ <div class="load-warning-boxx show-message-box">
85
+ <img src="redX.png" alt="Fail" height="20px" width="20px">
86
+ <div class="warning-text"></div>
87
+ <div class="button-group">
88
+ <div class="confirm">Retry</div>
89
+ <div class="cancel">Cancel</div>
90
+ </div>
91
+ <div class="feed-back-box"></div>
92
+ </div>
93
+
94
+ <div class="oversize-box show-message-box">
95
+ <img src="redX.png" alt="Fail" height="20px" width="20px">
96
+ <div class="warning-text"></div>
97
+ <div class="button-group">
98
+ <div class="confirm">Continue</div>
99
+ <div class="cancel">Cancel</div>
100
+ </div>
101
+ <div class="feed-back-box"></div>
102
+ </div>
103
+
104
+ <div class="load-alert-box show-message-box">
105
+ <img src="redX.png" alt="Fail" height="20px" width="20px">
106
+ <div class="alert-text"></div>
107
+ <div class="button-group">
108
+ <div class="confirm">
109
+ OK
110
+ </div>
111
+ </div>
112
+ <div class="feed-back-box"></div>
113
+ </div>
114
+ </div>
115
+
116
+ <!-- Preview Popup Modal -->
117
+ <div class="preview-popup-overlay" id="previewPopup">
118
+ <div class="preview-popup-content">
119
+ <div class="preview-popup-header">
120
+ <h3 class="preview-popup-title">Image Enhanced Successfully!</h3>
121
+ <button class="preview-popup-close" id="closePreviewPopup">&times;</button>
122
+ </div>
123
+
124
+ <div class="preview-comparison-container">
125
+ <div class="preview-side">
126
+ <div class="preview-label">Original</div>
127
+ <img src="" alt="Original" class="preview-original-img">
128
+ <div class="preview-resolution original-resolution"></div>
129
+ </div>
130
+
131
+ <div class="preview-divider"></div>
132
+
133
+ <div class="preview-side">
134
+ <div class="preview-label">Enhanced</div>
135
+ <img src="" alt="Enhanced" class="preview-enhanced-img">
136
+ <div class="preview-resolution enhanced-resolution"></div>
137
+ </div>
138
+ </div>
139
+
140
+ <div class="preview-popup-actions">
141
+ <button class="preview-btn preview-btn-secondary" id="newImageBtn">
142
+ <span class="material-symbols-outlined">add_photo_alternate</span>
143
+ New Image
144
+ </button>
145
+ <button class="preview-btn preview-btn-primary" id="downloadPreviewBtn">
146
+ <span class="material-symbols-outlined">download</span>
147
+ Download Enhanced Image
148
+ </button>
149
+ </div>
150
+ </div>
151
+ </div>
152
+
153
+ <div class="photo flex-box" id="bigPlantForm" onselectstart="return false">
154
+ <ul id="right-operate-box" style="position: relative;">
155
+ <li class="refinement active">
156
+ <div class="refinement_top">
157
+ <div class="scale_zoon" style="display: flex; align-items: center; gap: 10px; padding: 10px;">
158
+ <label for="magnification-select" style="color: #fff; font-weight: 500;">Magnification:</label>
159
+ <select id="magnification-select" class="form-select" style="background-color: hsl(240, 10%, 7%); border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 0.5rem; padding: 8px 12px; color: #fff; min-width: 100px;">
160
+ <option value="2">2x</option>
161
+ <option value="4" selected>4x</option>
162
+ <option value="6">6x</option>
163
+ <option value="8">8x</option>
164
+ </select>
165
+ </div>
166
+ </div>
167
+ </li>
168
+ <div class="canvas">
169
+ <div class="canvas_box flex-box">
170
+ <div class="left flex-box active">
171
+ <div class="old-box">
172
+ <img src="" alt="" class="left_img_show">
173
+ <div class="new-select-box"></div>
174
+ <div class="privew-box old-preview"></div>
175
+ <div class="event-box-left"></div>
176
+ </div>
177
+ </div>
178
+ <div class="right flex-box active">
179
+ <div class="img_compare">
180
+ <img src="" alt="" class="right_img_show">
181
+ <div class="new-select-box old-select-box"></div>
182
+ <div class="privew-box new-preview"></div>
183
+ <div class="event-box-right"></div>
184
+ </div>
185
+ </div>
186
+ </div>
187
+ <div class="refinement_bottom flex-box">
188
+ <div class="Original-continer">
189
+ <span class="Original-box">Original: </span>
190
+ </div>
191
+ <div class="icon-container"></div>
192
+ <div class="Output-continer">
193
+ <span class="Output-box">Upscaled: </span>
194
+ </div>
195
+ </div>
196
+ </div>
197
+ <div class="btn switch-menu">
198
+ <div class="flex-box active">
199
+ <div>
200
+ <label for="upload" style="display:none;">
201
+ <span class="click-upload">Upload</span>
202
+ </label>
203
+ <label>
204
+ <span id="drag-zone2" draggable="true" class="reloadImg hollowing" title="Drop Images on me!">Nu Image</span>
205
+ </label>
206
+
207
+ <span id="QueneDropzone" draggable="true" class="hollowing">Add To Quene</span>
208
+ <span id="nextFileButton" class="hollowing">Start Quene</span>
209
+ </div>
210
+ <div>
211
+ <span class="saveBtn">Download</span>
212
+ <canvas id="exportImgBoard" style="display: none;"></canvas>
213
+ <canvas id="temImgBoard" style="display: none;"></canvas>
214
+ </div>
215
+ </div>
216
+
217
+ <div class="flex-box">
218
+ <div>
219
+ <label>
220
+ <span class="reloadImg hollowing">New Image</span>
221
+ </label>
222
+ <span class="hollowing back-remove">Back</span>
223
+ </div>
224
+ <div>
225
+ <span class="crop-btn" style="margin-top: 11px;">Save</span>
226
+ </div>
227
+ </div>
228
+ <a href="" download="" id="exportImg"></a>
229
+ </div>
230
+ </ul>
231
+ </div>
232
+
233
+ <div class="mobile-save-image">
234
+ <div class="image-show-box">
235
+ <div class="show-long-press-save">
236
+ <img src="" alt="edit-image"> <span>Please long press on the image to save it</span>
237
+ </div>
238
+ </div>
239
+ <div style="width: 100%;height: 56px;"></div>
240
+ <div class="back-edit">Back</div>
241
+ </div>
242
+
243
+ <div class="mask"></div>
244
+ <div class="alert-mask"></div>
245
+ <div class="feedback-mask"></div>
246
+ <form action="javascript:;" class="feedback clearfloat" method="post" id="feedback" onsubmit="return checkForm()" name="feedback">
247
+ <div class="feedback_container clearfloat">
248
+ <p class="title">Thanks for your feedback. Please send us your problem or advice. We will reply you ASAP.</p>
249
+ <p>Email:</p>
250
+ <input name="email" type="email" class="form_email" id="mail" placeholder="Enter your email here!">
251
+ <p>Content:</p>
252
+ <textarea name="content" id="form_contents" cols="30" rows="10" form="feedback" placeholder="Please enter your problem or advice." required=""></textarea>
253
+ <input type="hidden" name="f_source" value="3"> <input type="hidden" name="product_id" value="70004">
254
+ <input type="submit" value="Submit" id="form_submit" name="submit" onclick="send_submit()">
255
+ </div>
256
+ </form>
257
+
258
+ <div class="flex flex-col min-h-screen">
259
+ <main class="flex-grow container mx-auto px-4 sm:px-6 lg:px-8 py-16">
260
+ <div class="max-w-4xl mx-auto text-center">
261
+ <h2 class="text-4xl sm:text-5xl font-bold text-white">
262
+ Enhance Your Images with <span class="gradient-text">AI</span>
263
+ </h2>
264
+ <p class="mt-4 text-lg text-text-muted">
265
+ Drag and drop your image, or browse files to upscale your photos to a higher resolution and quality.
266
+ </p>
267
+ </div>
268
+
269
+ <div class="mt-12 max-w-2xl mx-auto">
270
+ <div id="drag-zone" draggable="true" class="relative bg-card-dark border-2 border-dashed border-white/20 rounded-xl p-12 text-center cursor-pointer hover:border-primary/50 transition-colors">
271
+ <div class="flex flex-col items-center justify-center space-y-4 text-text-muted">
272
+ <div class="p-4 bg-gradient-to-r from-primary/10 to-[#ff4b8d]/10 rounded-full">
273
+ <span class="material-symbols-outlined text-6xl text-primary">
274
+ cloud_upload
275
+ </span>
276
+ </div>
277
+ <p class="text-lg font-semibold text-text-primary">
278
+ Drag and drop your image here
279
+ </p>
280
+ <p>or</p>
281
+ <label class="cursor-pointer bg-white/10 text-white font-bold py-2 px-4 rounded-lg text-sm hover:bg-white/20 transition-colors" for="upload" id="uploadBtn">
282
+ <span>Browse Files</span>
283
+ <input class="sr-only" id="upload" name="upload" type="file" accept=".jpg, .jpeg, .png, .bmp"/>
284
+ </label>
285
+ </div>
286
+ </div>
287
+ </div>
288
+
289
+ <div class="mt-12 max-w-2xl mx-auto bg-card-dark p-8 rounded-xl border border-white/10">
290
+ <h3 class="text-2xl font-bold text-white mb-6">
291
+ Upscale Options
292
+ </h3>
293
+ <div class="space-y-6">
294
+ <div class="scale_choose">
295
+ <label class="block text-sm font-medium text-text-muted mb-2">Resolution</label>
296
+ <select class="mt-2 block w-full form-select appearance-none bg-background-dark border border-white/20 rounded-lg shadow-sm py-3 px-4 focus:outline-none focus:ring-primary focus:border-primary sm:text-sm text-text-primary" id="resolution-select">
297
+ <option value="2">2x</option>
298
+ <option value="4" selected>4x</option>
299
+ <option value="6">6x</option>
300
+ <option value="8">8x</option>
301
+ </select>
302
+
303
+ <div class="hidden">
304
+ <input class="scale_change" type="radio" name="check_zoom" id="2X" value="2">
305
+ <input class="scale_change" type="radio" name="check_zoom" id="4X" value="4" checked>
306
+ <input class="scale_change" type="radio" name="check_zoom" id="6X" value="6">
307
+ <input class="scale_change" type="radio" name="check_zoom" id="8X" value="8">
308
+ </div>
309
+ </div>
310
+
311
+ <div>
312
+ <label class="block text-sm font-medium text-text-muted" for="format">File Format</label>
313
+ <select class="mt-2 block w-full form-select appearance-none bg-background-dark border border-white/20 rounded-lg shadow-sm py-3 px-4 focus:outline-none focus:ring-primary focus:border-primary sm:text-sm text-text-primary" id="format" name="format">
314
+ <option>PNG</option>
315
+ <option>JPEG</option>
316
+ <option>WEBP</option>
317
+ </select>
318
+ </div>
319
+
320
+ <div class="slider-option">
321
+ <div class="flex justify-between items-center mb-2">
322
+ <label class="block text-sm font-medium text-text-muted">AI Strength</label>
323
+ <span class="text-sm text-text-primary" id="ai-strength-value">50%</span>
324
+ </div>
325
+ <input type="range" min="0" max="100" value="50" class="upscale-slider" id="ai-strength">
326
+ </div>
327
+
328
+ <div class="slider-option">
329
+ <div class="flex justify-between items-center mb-2">
330
+ <label class="block text-sm font-medium text-text-muted">Clarity</label>
331
+ <span class="text-sm text-text-primary" id="clarity-value">50%</span>
332
+ </div>
333
+ <input type="range" min="0" max="100" value="50" class="upscale-slider" id="clarity">
334
+ </div>
335
+
336
+ <div class="slider-option">
337
+ <div class="flex justify-between items-center mb-2">
338
+ <label class="block text-sm font-medium text-text-muted">Sharpness</label>
339
+ <span class="text-sm text-text-primary" id="sharpness-value">50%</span>
340
+ </div>
341
+ <input type="range" min="0" max="100" value="50" class="upscale-slider" id="sharpness">
342
+ </div>
343
+
344
+ <div class="slider-option">
345
+ <div class="flex justify-between items-center mb-2">
346
+ <label class="block text-sm font-medium text-text-muted">Color Improvement</label>
347
+ <span class="text-sm text-text-primary" id="color-improve-value">50%</span>
348
+ </div>
349
+ <input type="range" min="0" max="100" value="50" class="upscale-slider" id="color-improve">
350
+ </div>
351
+
352
+ <div class="slider-option">
353
+ <div class="flex justify-between items-center mb-2">
354
+ <label class="block text-sm font-medium text-text-muted">Resemblance</label>
355
+ <span class="text-sm text-text-primary" id="resemblance-value">50%</span>
356
+ </div>
357
+ <input type="range" min="0" max="100" value="50" class="upscale-slider" id="resemblance">
358
+ </div>
359
+ </div>
360
+ </div>
361
+ </main>
362
+ </div>
363
+
364
+ <script>
365
+ document.getElementById('resolution-select').addEventListener('change', function() {
366
+ const value = this.value;
367
+ document.querySelectorAll('.scale_change').forEach(radio => {
368
+ if (radio.value === value) {
369
+ radio.checked = true;
370
+ radio.dispatchEvent(new Event('change', { bubbles: true }));
371
+ radio.click();
372
+ } else {
373
+ radio.checked = false;
374
+ }
375
+ });
376
+ });
377
+
378
+ // Magnification dropdown in comparison view
379
+ if (document.getElementById('magnification-select')) {
380
+ document.getElementById('magnification-select').addEventListener('change', function() {
381
+ const value = this.value;
382
+ document.querySelectorAll('.scale_change').forEach(radio => {
383
+ if (radio.value === value) {
384
+ radio.checked = true;
385
+ radio.dispatchEvent(new Event('change', { bubbles: true }));
386
+ radio.click();
387
+ } else {
388
+ radio.checked = false;
389
+ }
390
+ });
391
+ });
392
+ }
393
+
394
+ // Upscale option sliders
395
+ const sliders = [
396
+ { id: 'ai-strength', valueId: 'ai-strength-value' },
397
+ { id: 'clarity', valueId: 'clarity-value' },
398
+ { id: 'sharpness', valueId: 'sharpness-value' },
399
+ { id: 'color-improve', valueId: 'color-improve-value' },
400
+ { id: 'resemblance', valueId: 'resemblance-value' }
401
+ ];
402
+
403
+ sliders.forEach(slider => {
404
+ const sliderEl = document.getElementById(slider.id);
405
+ const valueEl = document.getElementById(slider.valueId);
406
+
407
+ // Initialize the track fill
408
+ sliderEl.style.setProperty('--slider-percent', sliderEl.value + '%');
409
+
410
+ sliderEl.addEventListener('input', function() {
411
+ valueEl.textContent = this.value + '%';
412
+ this.style.setProperty('--slider-percent', this.value + '%');
413
+ });
414
+ });
415
+
416
+ // Store slider values for potential future API use
417
+ window.upscaleOptions = {
418
+ getOptions: function() {
419
+ return {
420
+ aiStrength: document.getElementById('ai-strength').value,
421
+ clarity: document.getElementById('clarity').value,
422
+ sharpness: document.getElementById('sharpness').value,
423
+ colorImprove: document.getElementById('color-improve').value,
424
+ resemblance: document.getElementById('resemblance').value
425
+ };
426
+ }
427
+ };
428
+ </script>
429
+
430
+ <script src="jsnew_image-upscaler.js"></script>
431
+ <script src="js_aes.js"></script>
432
+ <script src="js_translation.js"></script>
433
+ <script src="js_spark-md5.min.js"></script>
434
+ <script src="js_FileSaver.js"></script>
435
+ <script src="js_free-online-image-upscaler.js"></script>
436
+ <script src="js_quene.js"></script>
437
+ </body>
438
+ </html>
js_FileSaver.js ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function(a, b) {
2
+ if ("function" == typeof define && define.amd) define([], b);
3
+ else if ("undefined" != typeof exports) b();
4
+ else {
5
+ b(), a.FileSaver = {
6
+ exports: {}
7
+ }.exports
8
+ }
9
+ })(this, function() {
10
+ "use strict";
11
+
12
+ function b(a, b) {
13
+ return "undefined" == typeof b ? b = {
14
+ autoBom: !1
15
+ } : "object" != typeof b && (console.warn("Deprecated: Expected third argument to be a object"), b = {
16
+ autoBom: !b
17
+ }), b.autoBom && /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type) ? new Blob(["\uFEFF", a], {
18
+ type: a.type
19
+ }) : a
20
+ }
21
+
22
+ function c(a, b, c) {
23
+ var d = new XMLHttpRequest;
24
+ d.open("GET", a), d.responseType = "blob", d.onload = function() {
25
+ g(d.response, b, c)
26
+ }, d.onerror = function() {
27
+ console.error("could not download file")
28
+ }, d.send()
29
+ }
30
+
31
+ function d(a) {
32
+ var b = new XMLHttpRequest;
33
+ b.open("HEAD", a, !1);
34
+ try {
35
+ b.send()
36
+ } catch (a) {}
37
+ return 200 <= b.status && 299 >= b.status
38
+ }
39
+
40
+ function e(a) {
41
+ try {
42
+ a.dispatchEvent(new MouseEvent("click"))
43
+ } catch (c) {
44
+ var b = document.createEvent("MouseEvents");
45
+ b.initMouseEvent("click", !0, !0, window, 0, 0, 0, 80, 20, !1, !1, !1, !1, 0, null), a.dispatchEvent(b)
46
+ }
47
+ }
48
+ var f = "object" == typeof window && window.window === window ? window : "object" == typeof self && self.self === self ? self : "object" == typeof global && global.global === global ? global : void 0,
49
+ a = /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent),
50
+ g = f.saveAs || ("object" != typeof window || window !== f ? function() {} : "download" in HTMLAnchorElement.prototype && !a ? function(b, g, h) {
51
+ var i = f.URL || f.webkitURL,
52
+ j = document.createElement("a");
53
+ g = g || b.name || "download", j.download = g, j.rel = "noopener", "string" == typeof b ? (j.href = b, j.origin === location.origin ? e(j) : d(j.href) ? c(b, g, h) : e(j, j.target = "_blank")) : (j.href = i.createObjectURL(b), setTimeout(function() {
54
+ i.revokeObjectURL(j.href)
55
+ }, 4E4), setTimeout(function() {
56
+ e(j)
57
+ }, 0))
58
+ } : "msSaveOrOpenBlob" in navigator ? function(f, g, h) {
59
+ if (g = g || f.name || "download", "string" != typeof f) navigator.msSaveOrOpenBlob(b(f, h), g);
60
+ else if (d(f)) c(f, g, h);
61
+ else {
62
+ var i = document.createElement("a");
63
+ i.href = f, i.target = "_blank", setTimeout(function() {
64
+ e(i)
65
+ })
66
+ }
67
+ } : function(b, d, e, g) {
68
+ if (g = g || open("", "_blank"), g && (g.document.title = g.document.body.innerText = "downloading..."), "string" == typeof b) return c(b, d, e);
69
+ var h = "application/octet-stream" === b.type,
70
+ i = /constructor/i.test(f.HTMLElement) || f.safari,
71
+ j = /CriOS\/[\d]+/.test(navigator.userAgent);
72
+ if ((j || h && i || a) && "undefined" != typeof FileReader) {
73
+ var k = new FileReader;
74
+ k.onloadend = function() {
75
+ var a = k.result;
76
+ a = j ? a : a.replace(/^data:[^;]*;/, "data:attachment/file;"), g ? g.location.href = a : location = a, g = null
77
+ }, k.readAsDataURL(b)
78
+ } else {
79
+ var l = f.URL || f.webkitURL,
80
+ m = l.createObjectURL(b);
81
+ g ? g.location = m : location.href = m, g = null, setTimeout(function() {
82
+ l.revokeObjectURL(m)
83
+ }, 4E4)
84
+ }
85
+ });
86
+ f.saveAs = g.saveAs = g, "undefined" != typeof module && (module.exports = g)
87
+ });
js_aes.js ADDED
@@ -0,0 +1,1880 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ! function(t, e) {
2
+ "object" == typeof exports ? module.exports = exports = e() : "function" == typeof define && define.amd ? define([], e) : t.CryptoJS = e()
3
+ }(this, function() {
4
+ var h, t, e, r, i, n, f, o, s, c, a, l, d, m, x, b, H, z, A, u, p, _, v, y, g, B, w, k, S, C, D, E, R, M, F, P, W, O, I, U, K, X, L, j, N, T, q, Z, V, G, J, $, Q, Y, tt, et, rt, it, nt, ot, st, ct, at, ht, lt, ft, dt, ut, pt, _t, vt, yt, gt, Bt, wt, kt, St, bt = bt || function(l) {
5
+ var t;
6
+ if ("undefined" != typeof window && window.crypto && (t = window.crypto), !t && "undefined" != typeof window && window.msCrypto && (t = window.msCrypto), !t && "undefined" != typeof global && global.crypto && (t = global.crypto), !t && "function" == typeof require) try {
7
+ t = require("crypto")
8
+ } catch (t) {}
9
+
10
+ function i() {
11
+ if (t) {
12
+ if ("function" == typeof t.getRandomValues) try {
13
+ return t.getRandomValues(new Uint32Array(1))[0]
14
+ } catch (t) {}
15
+ if ("function" == typeof t.randomBytes) try {
16
+ return t.randomBytes(4).readInt32LE()
17
+ } catch (t) {}
18
+ }
19
+ throw new Error("Native crypto module could not be used to get secure random number.")
20
+ }
21
+ var r = Object.create || function(t) {
22
+ var e;
23
+ return n.prototype = t, e = new n, n.prototype = null, e
24
+ };
25
+
26
+ function n() {}
27
+ var e = {},
28
+ o = e.lib = {},
29
+ s = o.Base = {
30
+ extend: function(t) {
31
+ var e = r(this);
32
+ return t && e.mixIn(t), e.hasOwnProperty("init") && this.init !== e.init || (e.init = function() {
33
+ e.$super.init.apply(this, arguments)
34
+ }), (e.init.prototype = e).$super = this, e
35
+ },
36
+ create: function() {
37
+ var t = this.extend();
38
+ return t.init.apply(t, arguments), t
39
+ },
40
+ init: function() {},
41
+ mixIn: function(t) {
42
+ for (var e in t) t.hasOwnProperty(e) && (this[e] = t[e]);
43
+ t.hasOwnProperty("toString") && (this.toString = t.toString)
44
+ },
45
+ clone: function() {
46
+ return this.init.prototype.extend(this)
47
+ }
48
+ },
49
+ f = o.WordArray = s.extend({
50
+ init: function(t, e) {
51
+ t = this.words = t || [], this.sigBytes = null != e ? e : 4 * t.length
52
+ },
53
+ toString: function(t) {
54
+ return (t || a).stringify(this)
55
+ },
56
+ concat: function(t) {
57
+ var e = this.words,
58
+ r = t.words,
59
+ i = this.sigBytes,
60
+ n = t.sigBytes;
61
+ if (this.clamp(), i % 4)
62
+ for (var o = 0; o < n; o++) {
63
+ var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255;
64
+ e[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8
65
+ } else
66
+ for (o = 0; o < n; o += 4) e[i + o >>> 2] = r[o >>> 2];
67
+ return this.sigBytes += n, this
68
+ },
69
+ clamp: function() {
70
+ var t = this.words,
71
+ e = this.sigBytes;
72
+ t[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, t.length = l.ceil(e / 4)
73
+ },
74
+ clone: function() {
75
+ var t = s.clone.call(this);
76
+ return t.words = this.words.slice(0), t
77
+ },
78
+ random: function(t) {
79
+ for (var e = [], r = 0; r < t; r += 4) e.push(i());
80
+ return new f.init(e, t)
81
+ }
82
+ }),
83
+ c = e.enc = {},
84
+ a = c.Hex = {
85
+ stringify: function(t) {
86
+ for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n++) {
87
+ var o = e[n >>> 2] >>> 24 - n % 4 * 8 & 255;
88
+ i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16))
89
+ }
90
+ return i.join("")
91
+ },
92
+ parse: function(t) {
93
+ for (var e = t.length, r = [], i = 0; i < e; i += 2) r[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4;
94
+ return new f.init(r, e / 2)
95
+ }
96
+ },
97
+ h = c.Latin1 = {
98
+ stringify: function(t) {
99
+ for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n++) {
100
+ var o = e[n >>> 2] >>> 24 - n % 4 * 8 & 255;
101
+ i.push(String.fromCharCode(o))
102
+ }
103
+ return i.join("")
104
+ },
105
+ parse: function(t) {
106
+ for (var e = t.length, r = [], i = 0; i < e; i++) r[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8;
107
+ return new f.init(r, e)
108
+ }
109
+ },
110
+ d = c.Utf8 = {
111
+ stringify: function(t) {
112
+ try {
113
+ return decodeURIComponent(escape(h.stringify(t)))
114
+ } catch (t) {
115
+ throw new Error("Malformed UTF-8 data")
116
+ }
117
+ },
118
+ parse: function(t) {
119
+ return h.parse(unescape(encodeURIComponent(t)))
120
+ }
121
+ },
122
+ u = o.BufferedBlockAlgorithm = s.extend({
123
+ reset: function() {
124
+ this._data = new f.init, this._nDataBytes = 0
125
+ },
126
+ _append: function(t) {
127
+ "string" == typeof t && (t = d.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes
128
+ },
129
+ _process: function(t) {
130
+ var e, r = this._data,
131
+ i = r.words,
132
+ n = r.sigBytes,
133
+ o = this.blockSize,
134
+ s = n / (4 * o),
135
+ c = (s = t ? l.ceil(s) : l.max((0 | s) - this._minBufferSize, 0)) * o,
136
+ a = l.min(4 * c, n);
137
+ if (c) {
138
+ for (var h = 0; h < c; h += o) this._doProcessBlock(i, h);
139
+ e = i.splice(0, c), r.sigBytes -= a
140
+ }
141
+ return new f.init(e, a)
142
+ },
143
+ clone: function() {
144
+ var t = s.clone.call(this);
145
+ return t._data = this._data.clone(), t
146
+ },
147
+ _minBufferSize: 0
148
+ }),
149
+ p = (o.Hasher = u.extend({
150
+ cfg: s.extend(),
151
+ init: function(t) {
152
+ this.cfg = this.cfg.extend(t), this.reset()
153
+ },
154
+ reset: function() {
155
+ u.reset.call(this), this._doReset()
156
+ },
157
+ update: function(t) {
158
+ return this._append(t), this._process(), this
159
+ },
160
+ finalize: function(t) {
161
+ return t && this._append(t), this._doFinalize()
162
+ },
163
+ blockSize: 16,
164
+ _createHelper: function(r) {
165
+ return function(t, e) {
166
+ return new r.init(e).finalize(t)
167
+ }
168
+ },
169
+ _createHmacHelper: function(r) {
170
+ return function(t, e) {
171
+ return new p.HMAC.init(r, e).finalize(t)
172
+ }
173
+ }
174
+ }), e.algo = {});
175
+ return e
176
+ }(Math);
177
+
178
+ function mt(t, e, r) {
179
+ return t ^ e ^ r
180
+ }
181
+
182
+ function xt(t, e, r) {
183
+ return t & e | ~t & r
184
+ }
185
+
186
+ function Ht(t, e, r) {
187
+ return (t | ~e) ^ r
188
+ }
189
+
190
+ function zt(t, e, r) {
191
+ return t & r | e & ~r
192
+ }
193
+
194
+ function At(t, e, r) {
195
+ return t ^ (e | ~r)
196
+ }
197
+
198
+ function Ct(t, e) {
199
+ return t << e | t >>> 32 - e
200
+ }
201
+
202
+ function Dt(t, e, r, i) {
203
+ var n, o = this._iv;
204
+ o ? (n = o.slice(0), this._iv = void 0) : n = this._prevBlock, i.encryptBlock(n, 0);
205
+ for (var s = 0; s < r; s++) t[e + s] ^= n[s]
206
+ }
207
+
208
+ function Et(t) {
209
+ if (255 == (t >> 24 & 255)) {
210
+ var e = t >> 16 & 255,
211
+ r = t >> 8 & 255,
212
+ i = 255 & t;
213
+ 255 === e ? (e = 0, 255 === r ? (r = 0, 255 === i ? i = 0 : ++i) : ++r) : ++e, t = 0, t += e << 16, t += r << 8, t += i
214
+ } else t += 1 << 24;
215
+ return t
216
+ }
217
+
218
+ function Rt() {
219
+ for (var t = this._X, e = this._C, r = 0; r < 8; r++) ft[r] = e[r];
220
+ e[0] = e[0] + 1295307597 + this._b | 0, e[1] = e[1] + 3545052371 + (e[0] >>> 0 < ft[0] >>> 0 ? 1 : 0) | 0, e[2] = e[2] + 886263092 + (e[1] >>> 0 < ft[1] >>> 0 ? 1 : 0) | 0, e[3] = e[3] + 1295307597 + (e[2] >>> 0 < ft[2] >>> 0 ? 1 : 0) | 0, e[4] = e[4] + 3545052371 + (e[3] >>> 0 < ft[3] >>> 0 ? 1 : 0) | 0, e[5] = e[5] + 886263092 + (e[4] >>> 0 < ft[4] >>> 0 ? 1 : 0) | 0, e[6] = e[6] + 1295307597 + (e[5] >>> 0 < ft[5] >>> 0 ? 1 : 0) | 0, e[7] = e[7] + 3545052371 + (e[6] >>> 0 < ft[6] >>> 0 ? 1 : 0) | 0, this._b = e[7] >>> 0 < ft[7] >>> 0 ? 1 : 0;
221
+ for (r = 0; r < 8; r++) {
222
+ var i = t[r] + e[r],
223
+ n = 65535 & i,
224
+ o = i >>> 16,
225
+ s = ((n * n >>> 17) + n * o >>> 15) + o * o,
226
+ c = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0);
227
+ dt[r] = s ^ c
228
+ }
229
+ t[0] = dt[0] + (dt[7] << 16 | dt[7] >>> 16) + (dt[6] << 16 | dt[6] >>> 16) | 0, t[1] = dt[1] + (dt[0] << 8 | dt[0] >>> 24) + dt[7] | 0, t[2] = dt[2] + (dt[1] << 16 | dt[1] >>> 16) + (dt[0] << 16 | dt[0] >>> 16) | 0, t[3] = dt[3] + (dt[2] << 8 | dt[2] >>> 24) + dt[1] | 0, t[4] = dt[4] + (dt[3] << 16 | dt[3] >>> 16) + (dt[2] << 16 | dt[2] >>> 16) | 0, t[5] = dt[5] + (dt[4] << 8 | dt[4] >>> 24) + dt[3] | 0, t[6] = dt[6] + (dt[5] << 16 | dt[5] >>> 16) + (dt[4] << 16 | dt[4] >>> 16) | 0, t[7] = dt[7] + (dt[6] << 8 | dt[6] >>> 24) + dt[5] | 0
230
+ }
231
+
232
+ function Mt() {
233
+ for (var t = this._X, e = this._C, r = 0; r < 8; r++) wt[r] = e[r];
234
+ e[0] = e[0] + 1295307597 + this._b | 0, e[1] = e[1] + 3545052371 + (e[0] >>> 0 < wt[0] >>> 0 ? 1 : 0) | 0, e[2] = e[2] + 886263092 + (e[1] >>> 0 < wt[1] >>> 0 ? 1 : 0) | 0, e[3] = e[3] + 1295307597 + (e[2] >>> 0 < wt[2] >>> 0 ? 1 : 0) | 0, e[4] = e[4] + 3545052371 + (e[3] >>> 0 < wt[3] >>> 0 ? 1 : 0) | 0, e[5] = e[5] + 886263092 + (e[4] >>> 0 < wt[4] >>> 0 ? 1 : 0) | 0, e[6] = e[6] + 1295307597 + (e[5] >>> 0 < wt[5] >>> 0 ? 1 : 0) | 0, e[7] = e[7] + 3545052371 + (e[6] >>> 0 < wt[6] >>> 0 ? 1 : 0) | 0, this._b = e[7] >>> 0 < wt[7] >>> 0 ? 1 : 0;
235
+ for (r = 0; r < 8; r++) {
236
+ var i = t[r] + e[r],
237
+ n = 65535 & i,
238
+ o = i >>> 16,
239
+ s = ((n * n >>> 17) + n * o >>> 15) + o * o,
240
+ c = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0);
241
+ kt[r] = s ^ c
242
+ }
243
+ t[0] = kt[0] + (kt[7] << 16 | kt[7] >>> 16) + (kt[6] << 16 | kt[6] >>> 16) | 0, t[1] = kt[1] + (kt[0] << 8 | kt[0] >>> 24) + kt[7] | 0, t[2] = kt[2] + (kt[1] << 16 | kt[1] >>> 16) + (kt[0] << 16 | kt[0] >>> 16) | 0, t[3] = kt[3] + (kt[2] << 8 | kt[2] >>> 24) + kt[1] | 0, t[4] = kt[4] + (kt[3] << 16 | kt[3] >>> 16) + (kt[2] << 16 | kt[2] >>> 16) | 0, t[5] = kt[5] + (kt[4] << 8 | kt[4] >>> 24) + kt[3] | 0, t[6] = kt[6] + (kt[5] << 16 | kt[5] >>> 16) + (kt[4] << 16 | kt[4] >>> 16) | 0, t[7] = kt[7] + (kt[6] << 8 | kt[6] >>> 24) + kt[5] | 0
244
+ }
245
+ return h = bt.lib.WordArray, bt.enc.Base64 = {
246
+ stringify: function(t) {
247
+ var e = t.words,
248
+ r = t.sigBytes,
249
+ i = this._map;
250
+ t.clamp();
251
+ for (var n = [], o = 0; o < r; o += 3)
252
+ for (var s = (e[o >>> 2] >>> 24 - o % 4 * 8 & 255) << 16 | (e[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255) << 8 | e[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, c = 0; c < 4 && o + .75 * c < r; c++) n.push(i.charAt(s >>> 6 * (3 - c) & 63));
253
+ var a = i.charAt(64);
254
+ if (a)
255
+ for (; n.length % 4;) n.push(a);
256
+ return n.join("")
257
+ },
258
+ parse: function(t) {
259
+ var e = t.length,
260
+ r = this._map,
261
+ i = this._reverseMap;
262
+ if (!i) {
263
+ i = this._reverseMap = [];
264
+ for (var n = 0; n < r.length; n++) i[r.charCodeAt(n)] = n
265
+ }
266
+ var o = r.charAt(64);
267
+ if (o) {
268
+ var s = t.indexOf(o); - 1 !== s && (e = s)
269
+ }
270
+ return function(t, e, r) {
271
+ for (var i = [], n = 0, o = 0; o < e; o++)
272
+ if (o % 4) {
273
+ var s = r[t.charCodeAt(o - 1)] << o % 4 * 2,
274
+ c = r[t.charCodeAt(o)] >>> 6 - o % 4 * 2,
275
+ a = s | c;
276
+ i[n >>> 2] |= a << 24 - n % 4 * 8, n++
277
+ } return h.create(i, n)
278
+ }(t, e, i)
279
+ },
280
+ _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
281
+ },
282
+ function(l) {
283
+ var t = bt,
284
+ e = t.lib,
285
+ r = e.WordArray,
286
+ i = e.Hasher,
287
+ n = t.algo,
288
+ H = [];
289
+ ! function() {
290
+ for (var t = 0; t < 64; t++) H[t] = 4294967296 * l.abs(l.sin(t + 1)) | 0
291
+ }();
292
+ var o = n.MD5 = i.extend({
293
+ _doReset: function() {
294
+ this._hash = new r.init([1732584193, 4023233417, 2562383102, 271733878])
295
+ },
296
+ _doProcessBlock: function(t, e) {
297
+ for (var r = 0; r < 16; r++) {
298
+ var i = e + r,
299
+ n = t[i];
300
+ t[i] = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8)
301
+ }
302
+ var o = this._hash.words,
303
+ s = t[e + 0],
304
+ c = t[e + 1],
305
+ a = t[e + 2],
306
+ h = t[e + 3],
307
+ l = t[e + 4],
308
+ f = t[e + 5],
309
+ d = t[e + 6],
310
+ u = t[e + 7],
311
+ p = t[e + 8],
312
+ _ = t[e + 9],
313
+ v = t[e + 10],
314
+ y = t[e + 11],
315
+ g = t[e + 12],
316
+ B = t[e + 13],
317
+ w = t[e + 14],
318
+ k = t[e + 15],
319
+ S = o[0],
320
+ m = o[1],
321
+ x = o[2],
322
+ b = o[3];
323
+ S = z(S, m, x, b, s, 7, H[0]), b = z(b, S, m, x, c, 12, H[1]), x = z(x, b, S, m, a, 17, H[2]), m = z(m, x, b, S, h, 22, H[3]), S = z(S, m, x, b, l, 7, H[4]), b = z(b, S, m, x, f, 12, H[5]), x = z(x, b, S, m, d, 17, H[6]), m = z(m, x, b, S, u, 22, H[7]), S = z(S, m, x, b, p, 7, H[8]), b = z(b, S, m, x, _, 12, H[9]), x = z(x, b, S, m, v, 17, H[10]), m = z(m, x, b, S, y, 22, H[11]), S = z(S, m, x, b, g, 7, H[12]), b = z(b, S, m, x, B, 12, H[13]), x = z(x, b, S, m, w, 17, H[14]), S = A(S, m = z(m, x, b, S, k, 22, H[15]), x, b, c, 5, H[16]), b = A(b, S, m, x, d, 9, H[17]), x = A(x, b, S, m, y, 14, H[18]), m = A(m, x, b, S, s, 20, H[19]), S = A(S, m, x, b, f, 5, H[20]), b = A(b, S, m, x, v, 9, H[21]), x = A(x, b, S, m, k, 14, H[22]), m = A(m, x, b, S, l, 20, H[23]), S = A(S, m, x, b, _, 5, H[24]), b = A(b, S, m, x, w, 9, H[25]), x = A(x, b, S, m, h, 14, H[26]), m = A(m, x, b, S, p, 20, H[27]), S = A(S, m, x, b, B, 5, H[28]), b = A(b, S, m, x, a, 9, H[29]), x = A(x, b, S, m, u, 14, H[30]), S = C(S, m = A(m, x, b, S, g, 20, H[31]), x, b, f, 4, H[32]), b = C(b, S, m, x, p, 11, H[33]), x = C(x, b, S, m, y, 16, H[34]), m = C(m, x, b, S, w, 23, H[35]), S = C(S, m, x, b, c, 4, H[36]), b = C(b, S, m, x, l, 11, H[37]), x = C(x, b, S, m, u, 16, H[38]), m = C(m, x, b, S, v, 23, H[39]), S = C(S, m, x, b, B, 4, H[40]), b = C(b, S, m, x, s, 11, H[41]), x = C(x, b, S, m, h, 16, H[42]), m = C(m, x, b, S, d, 23, H[43]), S = C(S, m, x, b, _, 4, H[44]), b = C(b, S, m, x, g, 11, H[45]), x = C(x, b, S, m, k, 16, H[46]), S = D(S, m = C(m, x, b, S, a, 23, H[47]), x, b, s, 6, H[48]), b = D(b, S, m, x, u, 10, H[49]), x = D(x, b, S, m, w, 15, H[50]), m = D(m, x, b, S, f, 21, H[51]), S = D(S, m, x, b, g, 6, H[52]), b = D(b, S, m, x, h, 10, H[53]), x = D(x, b, S, m, v, 15, H[54]), m = D(m, x, b, S, c, 21, H[55]), S = D(S, m, x, b, p, 6, H[56]), b = D(b, S, m, x, k, 10, H[57]), x = D(x, b, S, m, d, 15, H[58]), m = D(m, x, b, S, B, 21, H[59]), S = D(S, m, x, b, l, 6, H[60]), b = D(b, S, m, x, y, 10, H[61]), x = D(x, b, S, m, a, 15, H[62]), m = D(m, x, b, S, _, 21, H[63]), o[0] = o[0] + S | 0, o[1] = o[1] + m | 0, o[2] = o[2] + x | 0, o[3] = o[3] + b | 0
324
+ },
325
+ _doFinalize: function() {
326
+ var t = this._data,
327
+ e = t.words,
328
+ r = 8 * this._nDataBytes,
329
+ i = 8 * t.sigBytes;
330
+ e[i >>> 5] |= 128 << 24 - i % 32;
331
+ var n = l.floor(r / 4294967296),
332
+ o = r;
333
+ e[15 + (64 + i >>> 9 << 4)] = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8), e[14 + (64 + i >>> 9 << 4)] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), t.sigBytes = 4 * (e.length + 1), this._process();
334
+ for (var s = this._hash, c = s.words, a = 0; a < 4; a++) {
335
+ var h = c[a];
336
+ c[a] = 16711935 & (h << 8 | h >>> 24) | 4278255360 & (h << 24 | h >>> 8)
337
+ }
338
+ return s
339
+ },
340
+ clone: function() {
341
+ var t = i.clone.call(this);
342
+ return t._hash = this._hash.clone(), t
343
+ }
344
+ });
345
+
346
+ function z(t, e, r, i, n, o, s) {
347
+ var c = t + (e & r | ~e & i) + n + s;
348
+ return (c << o | c >>> 32 - o) + e
349
+ }
350
+
351
+ function A(t, e, r, i, n, o, s) {
352
+ var c = t + (e & i | r & ~i) + n + s;
353
+ return (c << o | c >>> 32 - o) + e
354
+ }
355
+
356
+ function C(t, e, r, i, n, o, s) {
357
+ var c = t + (e ^ r ^ i) + n + s;
358
+ return (c << o | c >>> 32 - o) + e
359
+ }
360
+
361
+ function D(t, e, r, i, n, o, s) {
362
+ var c = t + (r ^ (e | ~i)) + n + s;
363
+ return (c << o | c >>> 32 - o) + e
364
+ }
365
+ t.MD5 = i._createHelper(o), t.HmacMD5 = i._createHmacHelper(o)
366
+ }(Math), e = (t = bt).lib, r = e.WordArray, i = e.Hasher, n = t.algo, f = [], o = n.SHA1 = i.extend({
367
+ _doReset: function() {
368
+ this._hash = new r.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520])
369
+ },
370
+ _doProcessBlock: function(t, e) {
371
+ for (var r = this._hash.words, i = r[0], n = r[1], o = r[2], s = r[3], c = r[4], a = 0; a < 80; a++) {
372
+ if (a < 16) f[a] = 0 | t[e + a];
373
+ else {
374
+ var h = f[a - 3] ^ f[a - 8] ^ f[a - 14] ^ f[a - 16];
375
+ f[a] = h << 1 | h >>> 31
376
+ }
377
+ var l = (i << 5 | i >>> 27) + c + f[a];
378
+ l += a < 20 ? 1518500249 + (n & o | ~n & s) : a < 40 ? 1859775393 + (n ^ o ^ s) : a < 60 ? (n & o | n & s | o & s) - 1894007588 : (n ^ o ^ s) - 899497514, c = s, s = o, o = n << 30 | n >>> 2, n = i, i = l
379
+ }
380
+ r[0] = r[0] + i | 0, r[1] = r[1] + n | 0, r[2] = r[2] + o | 0, r[3] = r[3] + s | 0, r[4] = r[4] + c | 0
381
+ },
382
+ _doFinalize: function() {
383
+ var t = this._data,
384
+ e = t.words,
385
+ r = 8 * this._nDataBytes,
386
+ i = 8 * t.sigBytes;
387
+ return e[i >>> 5] |= 128 << 24 - i % 32, e[14 + (64 + i >>> 9 << 4)] = Math.floor(r / 4294967296), e[15 + (64 + i >>> 9 << 4)] = r, t.sigBytes = 4 * e.length, this._process(), this._hash
388
+ },
389
+ clone: function() {
390
+ var t = i.clone.call(this);
391
+ return t._hash = this._hash.clone(), t
392
+ }
393
+ }), t.SHA1 = i._createHelper(o), t.HmacSHA1 = i._createHmacHelper(o),
394
+ function(n) {
395
+ var t = bt,
396
+ e = t.lib,
397
+ r = e.WordArray,
398
+ i = e.Hasher,
399
+ o = t.algo,
400
+ s = [],
401
+ B = [];
402
+ ! function() {
403
+ function t(t) {
404
+ for (var e = n.sqrt(t), r = 2; r <= e; r++)
405
+ if (!(t % r)) return;
406
+ return 1
407
+ }
408
+
409
+ function e(t) {
410
+ return 4294967296 * (t - (0 | t)) | 0
411
+ }
412
+ for (var r = 2, i = 0; i < 64;) t(r) && (i < 8 && (s[i] = e(n.pow(r, .5))), B[i] = e(n.pow(r, 1 / 3)), i++), r++
413
+ }();
414
+ var w = [],
415
+ c = o.SHA256 = i.extend({
416
+ _doReset: function() {
417
+ this._hash = new r.init(s.slice(0))
418
+ },
419
+ _doProcessBlock: function(t, e) {
420
+ for (var r = this._hash.words, i = r[0], n = r[1], o = r[2], s = r[3], c = r[4], a = r[5], h = r[6], l = r[7], f = 0; f < 64; f++) {
421
+ if (f < 16) w[f] = 0 | t[e + f];
422
+ else {
423
+ var d = w[f - 15],
424
+ u = (d << 25 | d >>> 7) ^ (d << 14 | d >>> 18) ^ d >>> 3,
425
+ p = w[f - 2],
426
+ _ = (p << 15 | p >>> 17) ^ (p << 13 | p >>> 19) ^ p >>> 10;
427
+ w[f] = u + w[f - 7] + _ + w[f - 16]
428
+ }
429
+ var v = i & n ^ i & o ^ n & o,
430
+ y = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22),
431
+ g = l + ((c << 26 | c >>> 6) ^ (c << 21 | c >>> 11) ^ (c << 7 | c >>> 25)) + (c & a ^ ~c & h) + B[f] + w[f];
432
+ l = h, h = a, a = c, c = s + g | 0, s = o, o = n, n = i, i = g + (y + v) | 0
433
+ }
434
+ r[0] = r[0] + i | 0, r[1] = r[1] + n | 0, r[2] = r[2] + o | 0, r[3] = r[3] + s | 0, r[4] = r[4] + c | 0, r[5] = r[5] + a | 0, r[6] = r[6] + h | 0, r[7] = r[7] + l | 0
435
+ },
436
+ _doFinalize: function() {
437
+ var t = this._data,
438
+ e = t.words,
439
+ r = 8 * this._nDataBytes,
440
+ i = 8 * t.sigBytes;
441
+ return e[i >>> 5] |= 128 << 24 - i % 32, e[14 + (64 + i >>> 9 << 4)] = n.floor(r / 4294967296), e[15 + (64 + i >>> 9 << 4)] = r, t.sigBytes = 4 * e.length, this._process(), this._hash
442
+ },
443
+ clone: function() {
444
+ var t = i.clone.call(this);
445
+ return t._hash = this._hash.clone(), t
446
+ }
447
+ });
448
+ t.SHA256 = i._createHelper(c), t.HmacSHA256 = i._createHmacHelper(c)
449
+ }(Math),
450
+ function() {
451
+ var n = bt.lib.WordArray,
452
+ t = bt.enc;
453
+ t.Utf16 = t.Utf16BE = {
454
+ stringify: function(t) {
455
+ for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n += 2) {
456
+ var o = e[n >>> 2] >>> 16 - n % 4 * 8 & 65535;
457
+ i.push(String.fromCharCode(o))
458
+ }
459
+ return i.join("")
460
+ },
461
+ parse: function(t) {
462
+ for (var e = t.length, r = [], i = 0; i < e; i++) r[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16;
463
+ return n.create(r, 2 * e)
464
+ }
465
+ };
466
+
467
+ function s(t) {
468
+ return t << 8 & 4278255360 | t >>> 8 & 16711935
469
+ }
470
+ t.Utf16LE = {
471
+ stringify: function(t) {
472
+ for (var e = t.words, r = t.sigBytes, i = [], n = 0; n < r; n += 2) {
473
+ var o = s(e[n >>> 2] >>> 16 - n % 4 * 8 & 65535);
474
+ i.push(String.fromCharCode(o))
475
+ }
476
+ return i.join("")
477
+ },
478
+ parse: function(t) {
479
+ for (var e = t.length, r = [], i = 0; i < e; i++) r[i >>> 1] |= s(t.charCodeAt(i) << 16 - i % 2 * 16);
480
+ return n.create(r, 2 * e)
481
+ }
482
+ }
483
+ }(),
484
+ function() {
485
+ if ("function" == typeof ArrayBuffer) {
486
+ var t = bt.lib.WordArray,
487
+ n = t.init;
488
+ (t.init = function(t) {
489
+ if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) {
490
+ for (var e = t.byteLength, r = [], i = 0; i < e; i++) r[i >>> 2] |= t[i] << 24 - i % 4 * 8;
491
+ n.call(this, r, e)
492
+ } else n.apply(this, arguments)
493
+ }).prototype = t
494
+ }
495
+ }(), Math, c = (s = bt).lib, a = c.WordArray, l = c.Hasher, d = s.algo, m = a.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), x = a.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), b = a.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), H = a.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), z = a.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), A = a.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), u = d.RIPEMD160 = l.extend({
496
+ _doReset: function() {
497
+ this._hash = a.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520])
498
+ },
499
+ _doProcessBlock: function(t, e) {
500
+ for (var r = 0; r < 16; r++) {
501
+ var i = e + r,
502
+ n = t[i];
503
+ t[i] = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8)
504
+ }
505
+ var o, s, c, a, h, l, f, d, u, p, _, v = this._hash.words,
506
+ y = z.words,
507
+ g = A.words,
508
+ B = m.words,
509
+ w = x.words,
510
+ k = b.words,
511
+ S = H.words;
512
+ l = o = v[0], f = s = v[1], d = c = v[2], u = a = v[3], p = h = v[4];
513
+ for (r = 0; r < 80; r += 1) _ = o + t[e + B[r]] | 0, _ += r < 16 ? mt(s, c, a) + y[0] : r < 32 ? xt(s, c, a) + y[1] : r < 48 ? Ht(s, c, a) + y[2] : r < 64 ? zt(s, c, a) + y[3] : At(s, c, a) + y[4], _ = (_ = Ct(_ |= 0, k[r])) + h | 0, o = h, h = a, a = Ct(c, 10), c = s, s = _, _ = l + t[e + w[r]] | 0, _ += r < 16 ? At(f, d, u) + g[0] : r < 32 ? zt(f, d, u) + g[1] : r < 48 ? Ht(f, d, u) + g[2] : r < 64 ? xt(f, d, u) + g[3] : mt(f, d, u) + g[4], _ = (_ = Ct(_ |= 0, S[r])) + p | 0, l = p, p = u, u = Ct(d, 10), d = f, f = _;
514
+ _ = v[1] + c + u | 0, v[1] = v[2] + a + p | 0, v[2] = v[3] + h + l | 0, v[3] = v[4] + o + f | 0, v[4] = v[0] + s + d | 0, v[0] = _
515
+ },
516
+ _doFinalize: function() {
517
+ var t = this._data,
518
+ e = t.words,
519
+ r = 8 * this._nDataBytes,
520
+ i = 8 * t.sigBytes;
521
+ e[i >>> 5] |= 128 << 24 - i % 32, e[14 + (64 + i >>> 9 << 4)] = 16711935 & (r << 8 | r >>> 24) | 4278255360 & (r << 24 | r >>> 8), t.sigBytes = 4 * (e.length + 1), this._process();
522
+ for (var n = this._hash, o = n.words, s = 0; s < 5; s++) {
523
+ var c = o[s];
524
+ o[s] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8)
525
+ }
526
+ return n
527
+ },
528
+ clone: function() {
529
+ var t = l.clone.call(this);
530
+ return t._hash = this._hash.clone(), t
531
+ }
532
+ }), s.RIPEMD160 = l._createHelper(u), s.HmacRIPEMD160 = l._createHmacHelper(u), p = bt.lib.Base, _ = bt.enc.Utf8, bt.algo.HMAC = p.extend({
533
+ init: function(t, e) {
534
+ t = this._hasher = new t.init, "string" == typeof e && (e = _.parse(e));
535
+ var r = t.blockSize,
536
+ i = 4 * r;
537
+ e.sigBytes > i && (e = t.finalize(e)), e.clamp();
538
+ for (var n = this._oKey = e.clone(), o = this._iKey = e.clone(), s = n.words, c = o.words, a = 0; a < r; a++) s[a] ^= 1549556828, c[a] ^= 909522486;
539
+ n.sigBytes = o.sigBytes = i, this.reset()
540
+ },
541
+ reset: function() {
542
+ var t = this._hasher;
543
+ t.reset(), t.update(this._iKey)
544
+ },
545
+ update: function(t) {
546
+ return this._hasher.update(t), this
547
+ },
548
+ finalize: function(t) {
549
+ var e = this._hasher,
550
+ r = e.finalize(t);
551
+ return e.reset(), e.finalize(this._oKey.clone().concat(r))
552
+ }
553
+ }), y = (v = bt).lib, g = y.Base, B = y.WordArray, w = v.algo, k = w.SHA1, S = w.HMAC, C = w.PBKDF2 = g.extend({
554
+ cfg: g.extend({
555
+ keySize: 4,
556
+ hasher: k,
557
+ iterations: 1
558
+ }),
559
+ init: function(t) {
560
+ this.cfg = this.cfg.extend(t)
561
+ },
562
+ compute: function(t, e) {
563
+ for (var r = this.cfg, i = S.create(r.hasher, t), n = B.create(), o = B.create([1]), s = n.words, c = o.words, a = r.keySize, h = r.iterations; s.length < a;) {
564
+ var l = i.update(e).finalize(o);
565
+ i.reset();
566
+ for (var f = l.words, d = f.length, u = l, p = 1; p < h; p++) {
567
+ u = i.finalize(u), i.reset();
568
+ for (var _ = u.words, v = 0; v < d; v++) f[v] ^= _[v]
569
+ }
570
+ n.concat(l), c[0]++
571
+ }
572
+ return n.sigBytes = 4 * a, n
573
+ }
574
+ }), v.PBKDF2 = function(t, e, r) {
575
+ return C.create(r).compute(t, e)
576
+ }, E = (D = bt).lib, R = E.Base, M = E.WordArray, F = D.algo, P = F.MD5, W = F.EvpKDF = R.extend({
577
+ cfg: R.extend({
578
+ keySize: 4,
579
+ hasher: P,
580
+ iterations: 1
581
+ }),
582
+ init: function(t) {
583
+ this.cfg = this.cfg.extend(t)
584
+ },
585
+ compute: function(t, e) {
586
+ for (var r, i = this.cfg, n = i.hasher.create(), o = M.create(), s = o.words, c = i.keySize, a = i.iterations; s.length < c;) {
587
+ r && n.update(r), r = n.update(t).finalize(e), n.reset();
588
+ for (var h = 1; h < a; h++) r = n.finalize(r), n.reset();
589
+ o.concat(r)
590
+ }
591
+ return o.sigBytes = 4 * c, o
592
+ }
593
+ }), D.EvpKDF = function(t, e, r) {
594
+ return W.create(r).compute(t, e)
595
+ }, I = (O = bt).lib.WordArray, U = O.algo, K = U.SHA256, X = U.SHA224 = K.extend({
596
+ _doReset: function() {
597
+ this._hash = new I.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428])
598
+ },
599
+ _doFinalize: function() {
600
+ var t = K._doFinalize.call(this);
601
+ return t.sigBytes -= 4, t
602
+ }
603
+ }), O.SHA224 = K._createHelper(X), O.HmacSHA224 = K._createHmacHelper(X), L = bt.lib, j = L.Base, N = L.WordArray, (T = bt.x64 = {}).Word = j.extend({
604
+ init: function(t, e) {
605
+ this.high = t, this.low = e
606
+ }
607
+ }), T.WordArray = j.extend({
608
+ init: function(t, e) {
609
+ t = this.words = t || [], this.sigBytes = null != e ? e : 8 * t.length
610
+ },
611
+ toX32: function() {
612
+ for (var t = this.words, e = t.length, r = [], i = 0; i < e; i++) {
613
+ var n = t[i];
614
+ r.push(n.high), r.push(n.low)
615
+ }
616
+ return N.create(r, this.sigBytes)
617
+ },
618
+ clone: function() {
619
+ for (var t = j.clone.call(this), e = t.words = this.words.slice(0), r = e.length, i = 0; i < r; i++) e[i] = e[i].clone();
620
+ return t
621
+ }
622
+ }),
623
+ function(d) {
624
+ var t = bt,
625
+ e = t.lib,
626
+ u = e.WordArray,
627
+ i = e.Hasher,
628
+ l = t.x64.Word,
629
+ r = t.algo,
630
+ C = [],
631
+ D = [],
632
+ E = [];
633
+ ! function() {
634
+ for (var t = 1, e = 0, r = 0; r < 24; r++) {
635
+ C[t + 5 * e] = (r + 1) * (r + 2) / 2 % 64;
636
+ var i = (2 * t + 3 * e) % 5;
637
+ t = e % 5, e = i
638
+ }
639
+ for (t = 0; t < 5; t++)
640
+ for (e = 0; e < 5; e++) D[t + 5 * e] = e + (2 * t + 3 * e) % 5 * 5;
641
+ for (var n = 1, o = 0; o < 24; o++) {
642
+ for (var s = 0, c = 0, a = 0; a < 7; a++) {
643
+ if (1 & n) {
644
+ var h = (1 << a) - 1;
645
+ h < 32 ? c ^= 1 << h : s ^= 1 << h - 32
646
+ }
647
+ 128 & n ? n = n << 1 ^ 113 : n <<= 1
648
+ }
649
+ E[o] = l.create(s, c)
650
+ }
651
+ }();
652
+ var R = [];
653
+ ! function() {
654
+ for (var t = 0; t < 25; t++) R[t] = l.create()
655
+ }();
656
+ var n = r.SHA3 = i.extend({
657
+ cfg: i.cfg.extend({
658
+ outputLength: 512
659
+ }),
660
+ _doReset: function() {
661
+ for (var t = this._state = [], e = 0; e < 25; e++) t[e] = new l.init;
662
+ this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32
663
+ },
664
+ _doProcessBlock: function(t, e) {
665
+ for (var r = this._state, i = this.blockSize / 2, n = 0; n < i; n++) {
666
+ var o = t[e + 2 * n],
667
+ s = t[e + 2 * n + 1];
668
+ o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), (x = r[n]).high ^= s, x.low ^= o
669
+ }
670
+ for (var c = 0; c < 24; c++) {
671
+ for (var a = 0; a < 5; a++) {
672
+ for (var h = 0, l = 0, f = 0; f < 5; f++) {
673
+ h ^= (x = r[a + 5 * f]).high, l ^= x.low
674
+ }
675
+ var d = R[a];
676
+ d.high = h, d.low = l
677
+ }
678
+ for (a = 0; a < 5; a++) {
679
+ var u = R[(a + 4) % 5],
680
+ p = R[(a + 1) % 5],
681
+ _ = p.high,
682
+ v = p.low;
683
+ for (h = u.high ^ (_ << 1 | v >>> 31), l = u.low ^ (v << 1 | _ >>> 31), f = 0; f < 5; f++) {
684
+ (x = r[a + 5 * f]).high ^= h, x.low ^= l
685
+ }
686
+ }
687
+ for (var y = 1; y < 25; y++) {
688
+ var g = (x = r[y]).high,
689
+ B = x.low,
690
+ w = C[y];
691
+ l = w < 32 ? (h = g << w | B >>> 32 - w, B << w | g >>> 32 - w) : (h = B << w - 32 | g >>> 64 - w, g << w - 32 | B >>> 64 - w);
692
+ var k = R[D[y]];
693
+ k.high = h, k.low = l
694
+ }
695
+ var S = R[0],
696
+ m = r[0];
697
+ S.high = m.high, S.low = m.low;
698
+ for (a = 0; a < 5; a++)
699
+ for (f = 0; f < 5; f++) {
700
+ var x = r[y = a + 5 * f],
701
+ b = R[y],
702
+ H = R[(a + 1) % 5 + 5 * f],
703
+ z = R[(a + 2) % 5 + 5 * f];
704
+ x.high = b.high ^ ~H.high & z.high, x.low = b.low ^ ~H.low & z.low
705
+ }
706
+ x = r[0];
707
+ var A = E[c];
708
+ x.high ^= A.high, x.low ^= A.low
709
+ }
710
+ },
711
+ _doFinalize: function() {
712
+ var t = this._data,
713
+ e = t.words,
714
+ r = (this._nDataBytes, 8 * t.sigBytes),
715
+ i = 32 * this.blockSize;
716
+ e[r >>> 5] |= 1 << 24 - r % 32, e[(d.ceil((1 + r) / i) * i >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process();
717
+ for (var n = this._state, o = this.cfg.outputLength / 8, s = o / 8, c = [], a = 0; a < s; a++) {
718
+ var h = n[a],
719
+ l = h.high,
720
+ f = h.low;
721
+ l = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8), f = 16711935 & (f << 8 | f >>> 24) | 4278255360 & (f << 24 | f >>> 8), c.push(f), c.push(l)
722
+ }
723
+ return new u.init(c, o)
724
+ },
725
+ clone: function() {
726
+ for (var t = i.clone.call(this), e = t._state = this._state.slice(0), r = 0; r < 25; r++) e[r] = e[r].clone();
727
+ return t
728
+ }
729
+ });
730
+ t.SHA3 = i._createHelper(n), t.HmacSHA3 = i._createHmacHelper(n)
731
+ }(Math),
732
+ function() {
733
+ var t = bt,
734
+ e = t.lib.Hasher,
735
+ r = t.x64,
736
+ i = r.Word,
737
+ n = r.WordArray,
738
+ o = t.algo;
739
+
740
+ function s() {
741
+ return i.create.apply(i, arguments)
742
+ }
743
+ var mt = [s(1116352408, 3609767458), s(1899447441, 602891725), s(3049323471, 3964484399), s(3921009573, 2173295548), s(961987163, 4081628472), s(1508970993, 3053834265), s(2453635748, 2937671579), s(2870763221, 3664609560), s(3624381080, 2734883394), s(310598401, 1164996542), s(607225278, 1323610764), s(1426881987, 3590304994), s(1925078388, 4068182383), s(2162078206, 991336113), s(2614888103, 633803317), s(3248222580, 3479774868), s(3835390401, 2666613458), s(4022224774, 944711139), s(264347078, 2341262773), s(604807628, 2007800933), s(770255983, 1495990901), s(1249150122, 1856431235), s(1555081692, 3175218132), s(1996064986, 2198950837), s(2554220882, 3999719339), s(2821834349, 766784016), s(2952996808, 2566594879), s(3210313671, 3203337956), s(3336571891, 1034457026), s(3584528711, 2466948901), s(113926993, 3758326383), s(338241895, 168717936), s(666307205, 1188179964), s(773529912, 1546045734), s(1294757372, 1522805485), s(1396182291, 2643833823), s(1695183700, 2343527390), s(1986661051, 1014477480), s(2177026350, 1206759142), s(2456956037, 344077627), s(2730485921, 1290863460), s(2820302411, 3158454273), s(3259730800, 3505952657), s(3345764771, 106217008), s(3516065817, 3606008344), s(3600352804, 1432725776), s(4094571909, 1467031594), s(275423344, 851169720), s(430227734, 3100823752), s(506948616, 1363258195), s(659060556, 3750685593), s(883997877, 3785050280), s(958139571, 3318307427), s(1322822218, 3812723403), s(1537002063, 2003034995), s(1747873779, 3602036899), s(1955562222, 1575990012), s(2024104815, 1125592928), s(2227730452, 2716904306), s(2361852424, 442776044), s(2428436474, 593698344), s(2756734187, 3733110249), s(3204031479, 2999351573), s(3329325298, 3815920427), s(3391569614, 3928383900), s(3515267271, 566280711), s(3940187606, 3454069534), s(4118630271, 4000239992), s(116418474, 1914138554), s(174292421, 2731055270), s(289380356, 3203993006), s(460393269, 320620315), s(685471733, 587496836), s(852142971, 1086792851), s(1017036298, 365543100), s(1126000580, 2618297676), s(1288033470, 3409855158), s(1501505948, 4234509866), s(1607167915, 987167468), s(1816402316, 1246189591)],
744
+ xt = [];
745
+ ! function() {
746
+ for (var t = 0; t < 80; t++) xt[t] = s()
747
+ }();
748
+ var c = o.SHA512 = e.extend({
749
+ _doReset: function() {
750
+ this._hash = new n.init([new i.init(1779033703, 4089235720), new i.init(3144134277, 2227873595), new i.init(1013904242, 4271175723), new i.init(2773480762, 1595750129), new i.init(1359893119, 2917565137), new i.init(2600822924, 725511199), new i.init(528734635, 4215389547), new i.init(1541459225, 327033209)])
751
+ },
752
+ _doProcessBlock: function(t, e) {
753
+ for (var r = this._hash.words, i = r[0], n = r[1], o = r[2], s = r[3], c = r[4], a = r[5], h = r[6], l = r[7], f = i.high, d = i.low, u = n.high, p = n.low, _ = o.high, v = o.low, y = s.high, g = s.low, B = c.high, w = c.low, k = a.high, S = a.low, m = h.high, x = h.low, b = l.high, H = l.low, z = f, A = d, C = u, D = p, E = _, R = v, M = y, F = g, P = B, W = w, O = k, I = S, U = m, K = x, X = b, L = H, j = 0; j < 80; j++) {
754
+ var N, T, q = xt[j];
755
+ if (j < 16) T = q.high = 0 | t[e + 2 * j], N = q.low = 0 | t[e + 2 * j + 1];
756
+ else {
757
+ var Z = xt[j - 15],
758
+ V = Z.high,
759
+ G = Z.low,
760
+ J = (V >>> 1 | G << 31) ^ (V >>> 8 | G << 24) ^ V >>> 7,
761
+ $ = (G >>> 1 | V << 31) ^ (G >>> 8 | V << 24) ^ (G >>> 7 | V << 25),
762
+ Q = xt[j - 2],
763
+ Y = Q.high,
764
+ tt = Q.low,
765
+ et = (Y >>> 19 | tt << 13) ^ (Y << 3 | tt >>> 29) ^ Y >>> 6,
766
+ rt = (tt >>> 19 | Y << 13) ^ (tt << 3 | Y >>> 29) ^ (tt >>> 6 | Y << 26),
767
+ it = xt[j - 7],
768
+ nt = it.high,
769
+ ot = it.low,
770
+ st = xt[j - 16],
771
+ ct = st.high,
772
+ at = st.low;
773
+ T = (T = (T = J + nt + ((N = $ + ot) >>> 0 < $ >>> 0 ? 1 : 0)) + et + ((N += rt) >>> 0 < rt >>> 0 ? 1 : 0)) + ct + ((N += at) >>> 0 < at >>> 0 ? 1 : 0), q.high = T, q.low = N
774
+ }
775
+ var ht, lt = P & O ^ ~P & U,
776
+ ft = W & I ^ ~W & K,
777
+ dt = z & C ^ z & E ^ C & E,
778
+ ut = A & D ^ A & R ^ D & R,
779
+ pt = (z >>> 28 | A << 4) ^ (z << 30 | A >>> 2) ^ (z << 25 | A >>> 7),
780
+ _t = (A >>> 28 | z << 4) ^ (A << 30 | z >>> 2) ^ (A << 25 | z >>> 7),
781
+ vt = (P >>> 14 | W << 18) ^ (P >>> 18 | W << 14) ^ (P << 23 | W >>> 9),
782
+ yt = (W >>> 14 | P << 18) ^ (W >>> 18 | P << 14) ^ (W << 23 | P >>> 9),
783
+ gt = mt[j],
784
+ Bt = gt.high,
785
+ wt = gt.low,
786
+ kt = X + vt + ((ht = L + yt) >>> 0 < L >>> 0 ? 1 : 0),
787
+ St = _t + ut;
788
+ X = U, L = K, U = O, K = I, O = P, I = W, P = M + (kt = (kt = (kt = kt + lt + ((ht = ht + ft) >>> 0 < ft >>> 0 ? 1 : 0)) + Bt + ((ht = ht + wt) >>> 0 < wt >>> 0 ? 1 : 0)) + T + ((ht = ht + N) >>> 0 < N >>> 0 ? 1 : 0)) + ((W = F + ht | 0) >>> 0 < F >>> 0 ? 1 : 0) | 0, M = E, F = R, E = C, R = D, C = z, D = A, z = kt + (pt + dt + (St >>> 0 < _t >>> 0 ? 1 : 0)) + ((A = ht + St | 0) >>> 0 < ht >>> 0 ? 1 : 0) | 0
789
+ }
790
+ d = i.low = d + A, i.high = f + z + (d >>> 0 < A >>> 0 ? 1 : 0), p = n.low = p + D, n.high = u + C + (p >>> 0 < D >>> 0 ? 1 : 0), v = o.low = v + R, o.high = _ + E + (v >>> 0 < R >>> 0 ? 1 : 0), g = s.low = g + F, s.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = c.low = w + W, c.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + I, a.high = k + O + (S >>> 0 < I >>> 0 ? 1 : 0), x = h.low = x + K, h.high = m + U + (x >>> 0 < K >>> 0 ? 1 : 0), H = l.low = H + L, l.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0)
791
+ },
792
+ _doFinalize: function() {
793
+ var t = this._data,
794
+ e = t.words,
795
+ r = 8 * this._nDataBytes,
796
+ i = 8 * t.sigBytes;
797
+ return e[i >>> 5] |= 128 << 24 - i % 32, e[30 + (128 + i >>> 10 << 5)] = Math.floor(r / 4294967296), e[31 + (128 + i >>> 10 << 5)] = r, t.sigBytes = 4 * e.length, this._process(), this._hash.toX32()
798
+ },
799
+ clone: function() {
800
+ var t = e.clone.call(this);
801
+ return t._hash = this._hash.clone(), t
802
+ },
803
+ blockSize: 32
804
+ });
805
+ t.SHA512 = e._createHelper(c), t.HmacSHA512 = e._createHmacHelper(c)
806
+ }(), Z = (q = bt).x64, V = Z.Word, G = Z.WordArray, J = q.algo, $ = J.SHA512, Q = J.SHA384 = $.extend({
807
+ _doReset: function() {
808
+ this._hash = new G.init([new V.init(3418070365, 3238371032), new V.init(1654270250, 914150663), new V.init(2438529370, 812702999), new V.init(355462360, 4144912697), new V.init(1731405415, 4290775857), new V.init(2394180231, 1750603025), new V.init(3675008525, 1694076839), new V.init(1203062813, 3204075428)])
809
+ },
810
+ _doFinalize: function() {
811
+ var t = $._doFinalize.call(this);
812
+ return t.sigBytes -= 16, t
813
+ }
814
+ }), q.SHA384 = $._createHelper(Q), q.HmacSHA384 = $._createHmacHelper(Q), bt.lib.Cipher || function() {
815
+ var t = bt,
816
+ e = t.lib,
817
+ r = e.Base,
818
+ a = e.WordArray,
819
+ i = e.BufferedBlockAlgorithm,
820
+ n = t.enc,
821
+ o = (n.Utf8, n.Base64),
822
+ s = t.algo.EvpKDF,
823
+ c = e.Cipher = i.extend({
824
+ cfg: r.extend(),
825
+ createEncryptor: function(t, e) {
826
+ return this.create(this._ENC_XFORM_MODE, t, e)
827
+ },
828
+ createDecryptor: function(t, e) {
829
+ return this.create(this._DEC_XFORM_MODE, t, e)
830
+ },
831
+ init: function(t, e, r) {
832
+ this.cfg = this.cfg.extend(r), this._xformMode = t, this._key = e, this.reset()
833
+ },
834
+ reset: function() {
835
+ i.reset.call(this), this._doReset()
836
+ },
837
+ process: function(t) {
838
+ return this._append(t), this._process()
839
+ },
840
+ finalize: function(t) {
841
+ return t && this._append(t), this._doFinalize()
842
+ },
843
+ keySize: 4,
844
+ ivSize: 4,
845
+ _ENC_XFORM_MODE: 1,
846
+ _DEC_XFORM_MODE: 2,
847
+ _createHelper: function(i) {
848
+ return {
849
+ encrypt: function(t, e, r) {
850
+ return h(e).encrypt(i, t, e, r)
851
+ },
852
+ decrypt: function(t, e, r) {
853
+ return h(e).decrypt(i, t, e, r)
854
+ }
855
+ }
856
+ }
857
+ });
858
+
859
+ function h(t) {
860
+ return "string" == typeof t ? w : g
861
+ }
862
+ e.StreamCipher = c.extend({
863
+ _doFinalize: function() {
864
+ return this._process(!0)
865
+ },
866
+ blockSize: 1
867
+ });
868
+ var l, f = t.mode = {},
869
+ d = e.BlockCipherMode = r.extend({
870
+ createEncryptor: function(t, e) {
871
+ return this.Encryptor.create(t, e)
872
+ },
873
+ createDecryptor: function(t, e) {
874
+ return this.Decryptor.create(t, e)
875
+ },
876
+ init: function(t, e) {
877
+ this._cipher = t, this._iv = e
878
+ }
879
+ }),
880
+ u = f.CBC = ((l = d.extend()).Encryptor = l.extend({
881
+ processBlock: function(t, e) {
882
+ var r = this._cipher,
883
+ i = r.blockSize;
884
+ p.call(this, t, e, i), r.encryptBlock(t, e), this._prevBlock = t.slice(e, e + i)
885
+ }
886
+ }), l.Decryptor = l.extend({
887
+ processBlock: function(t, e) {
888
+ var r = this._cipher,
889
+ i = r.blockSize,
890
+ n = t.slice(e, e + i);
891
+ r.decryptBlock(t, e), p.call(this, t, e, i), this._prevBlock = n
892
+ }
893
+ }), l);
894
+
895
+ function p(t, e, r) {
896
+ var i, n = this._iv;
897
+ n ? (i = n, this._iv = void 0) : i = this._prevBlock;
898
+ for (var o = 0; o < r; o++) t[e + o] ^= i[o]
899
+ }
900
+ var _ = (t.pad = {}).Pkcs7 = {
901
+ pad: function(t, e) {
902
+ for (var r = 4 * e, i = r - t.sigBytes % r, n = i << 24 | i << 16 | i << 8 | i, o = [], s = 0; s < i; s += 4) o.push(n);
903
+ var c = a.create(o, i);
904
+ t.concat(c)
905
+ },
906
+ unpad: function(t) {
907
+ var e = 255 & t.words[t.sigBytes - 1 >>> 2];
908
+ t.sigBytes -= e
909
+ }
910
+ },
911
+ v = (e.BlockCipher = c.extend({
912
+ cfg: c.cfg.extend({
913
+ mode: u,
914
+ padding: _
915
+ }),
916
+ reset: function() {
917
+ var t;
918
+ c.reset.call(this);
919
+ var e = this.cfg,
920
+ r = e.iv,
921
+ i = e.mode;
922
+ this._xformMode == this._ENC_XFORM_MODE ? t = i.createEncryptor : (t = i.createDecryptor, this._minBufferSize = 1), this._mode && this._mode.__creator == t ? this._mode.init(this, r && r.words) : (this._mode = t.call(i, this, r && r.words), this._mode.__creator = t)
923
+ },
924
+ _doProcessBlock: function(t, e) {
925
+ this._mode.processBlock(t, e)
926
+ },
927
+ _doFinalize: function() {
928
+ var t, e = this.cfg.padding;
929
+ return this._xformMode == this._ENC_XFORM_MODE ? (e.pad(this._data, this.blockSize), t = this._process(!0)) : (t = this._process(!0), e.unpad(t)), t
930
+ },
931
+ blockSize: 4
932
+ }), e.CipherParams = r.extend({
933
+ init: function(t) {
934
+ this.mixIn(t)
935
+ },
936
+ toString: function(t) {
937
+ return (t || this.formatter).stringify(this)
938
+ }
939
+ })),
940
+ y = (t.format = {}).OpenSSL = {
941
+ stringify: function(t) {
942
+ var e = t.ciphertext,
943
+ r = t.salt;
944
+ return (r ? a.create([1398893684, 1701076831]).concat(r).concat(e) : e).toString(o)
945
+ },
946
+ parse: function(t) {
947
+ var e, r = o.parse(t),
948
+ i = r.words;
949
+ return 1398893684 == i[0] && 1701076831 == i[1] && (e = a.create(i.slice(2, 4)), i.splice(0, 4), r.sigBytes -= 16), v.create({
950
+ ciphertext: r,
951
+ salt: e
952
+ })
953
+ }
954
+ },
955
+ g = e.SerializableCipher = r.extend({
956
+ cfg: r.extend({
957
+ format: y
958
+ }),
959
+ encrypt: function(t, e, r, i) {
960
+ i = this.cfg.extend(i);
961
+ var n = t.createEncryptor(r, i),
962
+ o = n.finalize(e),
963
+ s = n.cfg;
964
+ return v.create({
965
+ ciphertext: o,
966
+ key: r,
967
+ iv: s.iv,
968
+ algorithm: t,
969
+ mode: s.mode,
970
+ padding: s.padding,
971
+ blockSize: t.blockSize,
972
+ formatter: i.format
973
+ })
974
+ },
975
+ decrypt: function(t, e, r, i) {
976
+ return i = this.cfg.extend(i), e = this._parse(e, i.format), t.createDecryptor(r, i).finalize(e.ciphertext)
977
+ },
978
+ _parse: function(t, e) {
979
+ return "string" == typeof t ? e.parse(t, this) : t
980
+ }
981
+ }),
982
+ B = (t.kdf = {}).OpenSSL = {
983
+ execute: function(t, e, r, i) {
984
+ i = i || a.random(8);
985
+ var n = s.create({
986
+ keySize: e + r
987
+ }).compute(t, i),
988
+ o = a.create(n.words.slice(e), 4 * r);
989
+ return n.sigBytes = 4 * e, v.create({
990
+ key: n,
991
+ iv: o,
992
+ salt: i
993
+ })
994
+ }
995
+ },
996
+ w = e.PasswordBasedCipher = g.extend({
997
+ cfg: g.cfg.extend({
998
+ kdf: B
999
+ }),
1000
+ encrypt: function(t, e, r, i) {
1001
+ var n = (i = this.cfg.extend(i)).kdf.execute(r, t.keySize, t.ivSize);
1002
+ i.iv = n.iv;
1003
+ var o = g.encrypt.call(this, t, e, n.key, i);
1004
+ return o.mixIn(n), o
1005
+ },
1006
+ decrypt: function(t, e, r, i) {
1007
+ i = this.cfg.extend(i), e = this._parse(e, i.format);
1008
+ var n = i.kdf.execute(r, t.keySize, t.ivSize, e.salt);
1009
+ return i.iv = n.iv, g.decrypt.call(this, t, e, n.key, i)
1010
+ }
1011
+ })
1012
+ }(), bt.mode.CFB = ((Y = bt.lib.BlockCipherMode.extend()).Encryptor = Y.extend({
1013
+ processBlock: function(t, e) {
1014
+ var r = this._cipher,
1015
+ i = r.blockSize;
1016
+ Dt.call(this, t, e, i, r), this._prevBlock = t.slice(e, e + i)
1017
+ }
1018
+ }), Y.Decryptor = Y.extend({
1019
+ processBlock: function(t, e) {
1020
+ var r = this._cipher,
1021
+ i = r.blockSize,
1022
+ n = t.slice(e, e + i);
1023
+ Dt.call(this, t, e, i, r), this._prevBlock = n
1024
+ }
1025
+ }), Y), bt.mode.ECB = ((tt = bt.lib.BlockCipherMode.extend()).Encryptor = tt.extend({
1026
+ processBlock: function(t, e) {
1027
+ this._cipher.encryptBlock(t, e)
1028
+ }
1029
+ }), tt.Decryptor = tt.extend({
1030
+ processBlock: function(t, e) {
1031
+ this._cipher.decryptBlock(t, e)
1032
+ }
1033
+ }), tt), bt.pad.AnsiX923 = {
1034
+ pad: function(t, e) {
1035
+ var r = t.sigBytes,
1036
+ i = 4 * e,
1037
+ n = i - r % i,
1038
+ o = r + n - 1;
1039
+ t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n
1040
+ },
1041
+ unpad: function(t) {
1042
+ var e = 255 & t.words[t.sigBytes - 1 >>> 2];
1043
+ t.sigBytes -= e
1044
+ }
1045
+ }, bt.pad.Iso10126 = {
1046
+ pad: function(t, e) {
1047
+ var r = 4 * e,
1048
+ i = r - t.sigBytes % r;
1049
+ t.concat(bt.lib.WordArray.random(i - 1)).concat(bt.lib.WordArray.create([i << 24], 1))
1050
+ },
1051
+ unpad: function(t) {
1052
+ var e = 255 & t.words[t.sigBytes - 1 >>> 2];
1053
+ t.sigBytes -= e
1054
+ }
1055
+ }, bt.pad.Iso97971 = {
1056
+ pad: function(t, e) {
1057
+ t.concat(bt.lib.WordArray.create([2147483648], 1)), bt.pad.ZeroPadding.pad(t, e)
1058
+ },
1059
+ unpad: function(t) {
1060
+ bt.pad.ZeroPadding.unpad(t), t.sigBytes--
1061
+ }
1062
+ }, bt.mode.OFB = (et = bt.lib.BlockCipherMode.extend(), rt = et.Encryptor = et.extend({
1063
+ processBlock: function(t, e) {
1064
+ var r = this._cipher,
1065
+ i = r.blockSize,
1066
+ n = this._iv,
1067
+ o = this._keystream;
1068
+ n && (o = this._keystream = n.slice(0), this._iv = void 0), r.encryptBlock(o, 0);
1069
+ for (var s = 0; s < i; s++) t[e + s] ^= o[s]
1070
+ }
1071
+ }), et.Decryptor = rt, et), bt.pad.NoPadding = {
1072
+ pad: function() {},
1073
+ unpad: function() {}
1074
+ }, it = bt.lib.CipherParams, nt = bt.enc.Hex, bt.format.Hex = {
1075
+ stringify: function(t) {
1076
+ return t.ciphertext.toString(nt)
1077
+ },
1078
+ parse: function(t) {
1079
+ var e = nt.parse(t);
1080
+ return it.create({
1081
+ ciphertext: e
1082
+ })
1083
+ }
1084
+ },
1085
+ function() {
1086
+ var t = bt,
1087
+ e = t.lib.BlockCipher,
1088
+ r = t.algo,
1089
+ h = [],
1090
+ l = [],
1091
+ f = [],
1092
+ d = [],
1093
+ u = [],
1094
+ p = [],
1095
+ _ = [],
1096
+ v = [],
1097
+ y = [],
1098
+ g = [];
1099
+ ! function() {
1100
+ for (var t = [], e = 0; e < 256; e++) t[e] = e < 128 ? e << 1 : e << 1 ^ 283;
1101
+ var r = 0,
1102
+ i = 0;
1103
+ for (e = 0; e < 256; e++) {
1104
+ var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4;
1105
+ n = n >>> 8 ^ 255 & n ^ 99, h[r] = n;
1106
+ var o = t[l[n] = r],
1107
+ s = t[o],
1108
+ c = t[s],
1109
+ a = 257 * t[n] ^ 16843008 * n;
1110
+ f[r] = a << 24 | a >>> 8, d[r] = a << 16 | a >>> 16, u[r] = a << 8 | a >>> 24, p[r] = a;
1111
+ a = 16843009 * c ^ 65537 * s ^ 257 * o ^ 16843008 * r;
1112
+ _[n] = a << 24 | a >>> 8, v[n] = a << 16 | a >>> 16, y[n] = a << 8 | a >>> 24, g[n] = a, r ? (r = o ^ t[t[t[c ^ o]]], i ^= t[t[i]]) : r = i = 1
1113
+ }
1114
+ }();
1115
+ var B = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54],
1116
+ i = r.AES = e.extend({
1117
+ _doReset: function() {
1118
+ if (!this._nRounds || this._keyPriorReset !== this._key) {
1119
+ for (var t = this._keyPriorReset = this._key, e = t.words, r = t.sigBytes / 4, i = 4 * (1 + (this._nRounds = 6 + r)), n = this._keySchedule = [], o = 0; o < i; o++) o < r ? n[o] = e[o] : (a = n[o - 1], o % r ? 6 < r && o % r == 4 && (a = h[a >>> 24] << 24 | h[a >>> 16 & 255] << 16 | h[a >>> 8 & 255] << 8 | h[255 & a]) : (a = h[(a = a << 8 | a >>> 24) >>> 24] << 24 | h[a >>> 16 & 255] << 16 | h[a >>> 8 & 255] << 8 | h[255 & a], a ^= B[o / r | 0] << 24), n[o] = n[o - r] ^ a);
1120
+ for (var s = this._invKeySchedule = [], c = 0; c < i; c++) {
1121
+ o = i - c;
1122
+ if (c % 4) var a = n[o];
1123
+ else a = n[o - 4];
1124
+ s[c] = c < 4 || o <= 4 ? a : _[h[a >>> 24]] ^ v[h[a >>> 16 & 255]] ^ y[h[a >>> 8 & 255]] ^ g[h[255 & a]]
1125
+ }
1126
+ }
1127
+ },
1128
+ encryptBlock: function(t, e) {
1129
+ this._doCryptBlock(t, e, this._keySchedule, f, d, u, p, h)
1130
+ },
1131
+ decryptBlock: function(t, e) {
1132
+ var r = t[e + 1];
1133
+ t[e + 1] = t[e + 3], t[e + 3] = r, this._doCryptBlock(t, e, this._invKeySchedule, _, v, y, g, l);
1134
+ r = t[e + 1];
1135
+ t[e + 1] = t[e + 3], t[e + 3] = r
1136
+ },
1137
+ _doCryptBlock: function(t, e, r, i, n, o, s, c) {
1138
+ for (var a = this._nRounds, h = t[e] ^ r[0], l = t[e + 1] ^ r[1], f = t[e + 2] ^ r[2], d = t[e + 3] ^ r[3], u = 4, p = 1; p < a; p++) {
1139
+ var _ = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & d] ^ r[u++],
1140
+ v = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[d >>> 8 & 255] ^ s[255 & h] ^ r[u++],
1141
+ y = i[f >>> 24] ^ n[d >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ r[u++],
1142
+ g = i[d >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ r[u++];
1143
+ h = _, l = v, f = y, d = g
1144
+ }
1145
+ _ = (c[h >>> 24] << 24 | c[l >>> 16 & 255] << 16 | c[f >>> 8 & 255] << 8 | c[255 & d]) ^ r[u++], v = (c[l >>> 24] << 24 | c[f >>> 16 & 255] << 16 | c[d >>> 8 & 255] << 8 | c[255 & h]) ^ r[u++], y = (c[f >>> 24] << 24 | c[d >>> 16 & 255] << 16 | c[h >>> 8 & 255] << 8 | c[255 & l]) ^ r[u++], g = (c[d >>> 24] << 24 | c[h >>> 16 & 255] << 16 | c[l >>> 8 & 255] << 8 | c[255 & f]) ^ r[u++];
1146
+ t[e] = _, t[e + 1] = v, t[e + 2] = y, t[e + 3] = g
1147
+ },
1148
+ keySize: 8
1149
+ });
1150
+ t.AES = e._createHelper(i)
1151
+ }(),
1152
+ function() {
1153
+ var t = bt,
1154
+ e = t.lib,
1155
+ n = e.WordArray,
1156
+ r = e.BlockCipher,
1157
+ i = t.algo,
1158
+ h = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4],
1159
+ l = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32],
1160
+ f = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28],
1161
+ d = [{
1162
+ 0: 8421888,
1163
+ 268435456: 32768,
1164
+ 536870912: 8421378,
1165
+ 805306368: 2,
1166
+ 1073741824: 512,
1167
+ 1342177280: 8421890,
1168
+ 1610612736: 8389122,
1169
+ 1879048192: 8388608,
1170
+ 2147483648: 514,
1171
+ 2415919104: 8389120,
1172
+ 2684354560: 33280,
1173
+ 2952790016: 8421376,
1174
+ 3221225472: 32770,
1175
+ 3489660928: 8388610,
1176
+ 3758096384: 0,
1177
+ 4026531840: 33282,
1178
+ 134217728: 0,
1179
+ 402653184: 8421890,
1180
+ 671088640: 33282,
1181
+ 939524096: 32768,
1182
+ 1207959552: 8421888,
1183
+ 1476395008: 512,
1184
+ 1744830464: 8421378,
1185
+ 2013265920: 2,
1186
+ 2281701376: 8389120,
1187
+ 2550136832: 33280,
1188
+ 2818572288: 8421376,
1189
+ 3087007744: 8389122,
1190
+ 3355443200: 8388610,
1191
+ 3623878656: 32770,
1192
+ 3892314112: 514,
1193
+ 4160749568: 8388608,
1194
+ 1: 32768,
1195
+ 268435457: 2,
1196
+ 536870913: 8421888,
1197
+ 805306369: 8388608,
1198
+ 1073741825: 8421378,
1199
+ 1342177281: 33280,
1200
+ 1610612737: 512,
1201
+ 1879048193: 8389122,
1202
+ 2147483649: 8421890,
1203
+ 2415919105: 8421376,
1204
+ 2684354561: 8388610,
1205
+ 2952790017: 33282,
1206
+ 3221225473: 514,
1207
+ 3489660929: 8389120,
1208
+ 3758096385: 32770,
1209
+ 4026531841: 0,
1210
+ 134217729: 8421890,
1211
+ 402653185: 8421376,
1212
+ 671088641: 8388608,
1213
+ 939524097: 512,
1214
+ 1207959553: 32768,
1215
+ 1476395009: 8388610,
1216
+ 1744830465: 2,
1217
+ 2013265921: 33282,
1218
+ 2281701377: 32770,
1219
+ 2550136833: 8389122,
1220
+ 2818572289: 514,
1221
+ 3087007745: 8421888,
1222
+ 3355443201: 8389120,
1223
+ 3623878657: 0,
1224
+ 3892314113: 33280,
1225
+ 4160749569: 8421378
1226
+ }, {
1227
+ 0: 1074282512,
1228
+ 16777216: 16384,
1229
+ 33554432: 524288,
1230
+ 50331648: 1074266128,
1231
+ 67108864: 1073741840,
1232
+ 83886080: 1074282496,
1233
+ 100663296: 1073758208,
1234
+ 117440512: 16,
1235
+ 134217728: 540672,
1236
+ 150994944: 1073758224,
1237
+ 167772160: 1073741824,
1238
+ 184549376: 540688,
1239
+ 201326592: 524304,
1240
+ 218103808: 0,
1241
+ 234881024: 16400,
1242
+ 251658240: 1074266112,
1243
+ 8388608: 1073758208,
1244
+ 25165824: 540688,
1245
+ 41943040: 16,
1246
+ 58720256: 1073758224,
1247
+ 75497472: 1074282512,
1248
+ 92274688: 1073741824,
1249
+ 109051904: 524288,
1250
+ 125829120: 1074266128,
1251
+ 142606336: 524304,
1252
+ 159383552: 0,
1253
+ 176160768: 16384,
1254
+ 192937984: 1074266112,
1255
+ 209715200: 1073741840,
1256
+ 226492416: 540672,
1257
+ 243269632: 1074282496,
1258
+ 260046848: 16400,
1259
+ 268435456: 0,
1260
+ 285212672: 1074266128,
1261
+ 301989888: 1073758224,
1262
+ 318767104: 1074282496,
1263
+ 335544320: 1074266112,
1264
+ 352321536: 16,
1265
+ 369098752: 540688,
1266
+ 385875968: 16384,
1267
+ 402653184: 16400,
1268
+ 419430400: 524288,
1269
+ 436207616: 524304,
1270
+ 452984832: 1073741840,
1271
+ 469762048: 540672,
1272
+ 486539264: 1073758208,
1273
+ 503316480: 1073741824,
1274
+ 520093696: 1074282512,
1275
+ 276824064: 540688,
1276
+ 293601280: 524288,
1277
+ 310378496: 1074266112,
1278
+ 327155712: 16384,
1279
+ 343932928: 1073758208,
1280
+ 360710144: 1074282512,
1281
+ 377487360: 16,
1282
+ 394264576: 1073741824,
1283
+ 411041792: 1074282496,
1284
+ 427819008: 1073741840,
1285
+ 444596224: 1073758224,
1286
+ 461373440: 524304,
1287
+ 478150656: 0,
1288
+ 494927872: 16400,
1289
+ 511705088: 1074266128,
1290
+ 528482304: 540672
1291
+ }, {
1292
+ 0: 260,
1293
+ 1048576: 0,
1294
+ 2097152: 67109120,
1295
+ 3145728: 65796,
1296
+ 4194304: 65540,
1297
+ 5242880: 67108868,
1298
+ 6291456: 67174660,
1299
+ 7340032: 67174400,
1300
+ 8388608: 67108864,
1301
+ 9437184: 67174656,
1302
+ 10485760: 65792,
1303
+ 11534336: 67174404,
1304
+ 12582912: 67109124,
1305
+ 13631488: 65536,
1306
+ 14680064: 4,
1307
+ 15728640: 256,
1308
+ 524288: 67174656,
1309
+ 1572864: 67174404,
1310
+ 2621440: 0,
1311
+ 3670016: 67109120,
1312
+ 4718592: 67108868,
1313
+ 5767168: 65536,
1314
+ 6815744: 65540,
1315
+ 7864320: 260,
1316
+ 8912896: 4,
1317
+ 9961472: 256,
1318
+ 11010048: 67174400,
1319
+ 12058624: 65796,
1320
+ 13107200: 65792,
1321
+ 14155776: 67109124,
1322
+ 15204352: 67174660,
1323
+ 16252928: 67108864,
1324
+ 16777216: 67174656,
1325
+ 17825792: 65540,
1326
+ 18874368: 65536,
1327
+ 19922944: 67109120,
1328
+ 20971520: 256,
1329
+ 22020096: 67174660,
1330
+ 23068672: 67108868,
1331
+ 24117248: 0,
1332
+ 25165824: 67109124,
1333
+ 26214400: 67108864,
1334
+ 27262976: 4,
1335
+ 28311552: 65792,
1336
+ 29360128: 67174400,
1337
+ 30408704: 260,
1338
+ 31457280: 65796,
1339
+ 32505856: 67174404,
1340
+ 17301504: 67108864,
1341
+ 18350080: 260,
1342
+ 19398656: 67174656,
1343
+ 20447232: 0,
1344
+ 21495808: 65540,
1345
+ 22544384: 67109120,
1346
+ 23592960: 256,
1347
+ 24641536: 67174404,
1348
+ 25690112: 65536,
1349
+ 26738688: 67174660,
1350
+ 27787264: 65796,
1351
+ 28835840: 67108868,
1352
+ 29884416: 67109124,
1353
+ 30932992: 67174400,
1354
+ 31981568: 4,
1355
+ 33030144: 65792
1356
+ }, {
1357
+ 0: 2151682048,
1358
+ 65536: 2147487808,
1359
+ 131072: 4198464,
1360
+ 196608: 2151677952,
1361
+ 262144: 0,
1362
+ 327680: 4198400,
1363
+ 393216: 2147483712,
1364
+ 458752: 4194368,
1365
+ 524288: 2147483648,
1366
+ 589824: 4194304,
1367
+ 655360: 64,
1368
+ 720896: 2147487744,
1369
+ 786432: 2151678016,
1370
+ 851968: 4160,
1371
+ 917504: 4096,
1372
+ 983040: 2151682112,
1373
+ 32768: 2147487808,
1374
+ 98304: 64,
1375
+ 163840: 2151678016,
1376
+ 229376: 2147487744,
1377
+ 294912: 4198400,
1378
+ 360448: 2151682112,
1379
+ 425984: 0,
1380
+ 491520: 2151677952,
1381
+ 557056: 4096,
1382
+ 622592: 2151682048,
1383
+ 688128: 4194304,
1384
+ 753664: 4160,
1385
+ 819200: 2147483648,
1386
+ 884736: 4194368,
1387
+ 950272: 4198464,
1388
+ 1015808: 2147483712,
1389
+ 1048576: 4194368,
1390
+ 1114112: 4198400,
1391
+ 1179648: 2147483712,
1392
+ 1245184: 0,
1393
+ 1310720: 4160,
1394
+ 1376256: 2151678016,
1395
+ 1441792: 2151682048,
1396
+ 1507328: 2147487808,
1397
+ 1572864: 2151682112,
1398
+ 1638400: 2147483648,
1399
+ 1703936: 2151677952,
1400
+ 1769472: 4198464,
1401
+ 1835008: 2147487744,
1402
+ 1900544: 4194304,
1403
+ 1966080: 64,
1404
+ 2031616: 4096,
1405
+ 1081344: 2151677952,
1406
+ 1146880: 2151682112,
1407
+ 1212416: 0,
1408
+ 1277952: 4198400,
1409
+ 1343488: 4194368,
1410
+ 1409024: 2147483648,
1411
+ 1474560: 2147487808,
1412
+ 1540096: 64,
1413
+ 1605632: 2147483712,
1414
+ 1671168: 4096,
1415
+ 1736704: 2147487744,
1416
+ 1802240: 2151678016,
1417
+ 1867776: 4160,
1418
+ 1933312: 2151682048,
1419
+ 1998848: 4194304,
1420
+ 2064384: 4198464
1421
+ }, {
1422
+ 0: 128,
1423
+ 4096: 17039360,
1424
+ 8192: 262144,
1425
+ 12288: 536870912,
1426
+ 16384: 537133184,
1427
+ 20480: 16777344,
1428
+ 24576: 553648256,
1429
+ 28672: 262272,
1430
+ 32768: 16777216,
1431
+ 36864: 537133056,
1432
+ 40960: 536871040,
1433
+ 45056: 553910400,
1434
+ 49152: 553910272,
1435
+ 53248: 0,
1436
+ 57344: 17039488,
1437
+ 61440: 553648128,
1438
+ 2048: 17039488,
1439
+ 6144: 553648256,
1440
+ 10240: 128,
1441
+ 14336: 17039360,
1442
+ 18432: 262144,
1443
+ 22528: 537133184,
1444
+ 26624: 553910272,
1445
+ 30720: 536870912,
1446
+ 34816: 537133056,
1447
+ 38912: 0,
1448
+ 43008: 553910400,
1449
+ 47104: 16777344,
1450
+ 51200: 536871040,
1451
+ 55296: 553648128,
1452
+ 59392: 16777216,
1453
+ 63488: 262272,
1454
+ 65536: 262144,
1455
+ 69632: 128,
1456
+ 73728: 536870912,
1457
+ 77824: 553648256,
1458
+ 81920: 16777344,
1459
+ 86016: 553910272,
1460
+ 90112: 537133184,
1461
+ 94208: 16777216,
1462
+ 98304: 553910400,
1463
+ 102400: 553648128,
1464
+ 106496: 17039360,
1465
+ 110592: 537133056,
1466
+ 114688: 262272,
1467
+ 118784: 536871040,
1468
+ 122880: 0,
1469
+ 126976: 17039488,
1470
+ 67584: 553648256,
1471
+ 71680: 16777216,
1472
+ 75776: 17039360,
1473
+ 79872: 537133184,
1474
+ 83968: 536870912,
1475
+ 88064: 17039488,
1476
+ 92160: 128,
1477
+ 96256: 553910272,
1478
+ 100352: 262272,
1479
+ 104448: 553910400,
1480
+ 108544: 0,
1481
+ 112640: 553648128,
1482
+ 116736: 16777344,
1483
+ 120832: 262144,
1484
+ 124928: 537133056,
1485
+ 129024: 536871040
1486
+ }, {
1487
+ 0: 268435464,
1488
+ 256: 8192,
1489
+ 512: 270532608,
1490
+ 768: 270540808,
1491
+ 1024: 268443648,
1492
+ 1280: 2097152,
1493
+ 1536: 2097160,
1494
+ 1792: 268435456,
1495
+ 2048: 0,
1496
+ 2304: 268443656,
1497
+ 2560: 2105344,
1498
+ 2816: 8,
1499
+ 3072: 270532616,
1500
+ 3328: 2105352,
1501
+ 3584: 8200,
1502
+ 3840: 270540800,
1503
+ 128: 270532608,
1504
+ 384: 270540808,
1505
+ 640: 8,
1506
+ 896: 2097152,
1507
+ 1152: 2105352,
1508
+ 1408: 268435464,
1509
+ 1664: 268443648,
1510
+ 1920: 8200,
1511
+ 2176: 2097160,
1512
+ 2432: 8192,
1513
+ 2688: 268443656,
1514
+ 2944: 270532616,
1515
+ 3200: 0,
1516
+ 3456: 270540800,
1517
+ 3712: 2105344,
1518
+ 3968: 268435456,
1519
+ 4096: 268443648,
1520
+ 4352: 270532616,
1521
+ 4608: 270540808,
1522
+ 4864: 8200,
1523
+ 5120: 2097152,
1524
+ 5376: 268435456,
1525
+ 5632: 268435464,
1526
+ 5888: 2105344,
1527
+ 6144: 2105352,
1528
+ 6400: 0,
1529
+ 6656: 8,
1530
+ 6912: 270532608,
1531
+ 7168: 8192,
1532
+ 7424: 268443656,
1533
+ 7680: 270540800,
1534
+ 7936: 2097160,
1535
+ 4224: 8,
1536
+ 4480: 2105344,
1537
+ 4736: 2097152,
1538
+ 4992: 268435464,
1539
+ 5248: 268443648,
1540
+ 5504: 8200,
1541
+ 5760: 270540808,
1542
+ 6016: 270532608,
1543
+ 6272: 270540800,
1544
+ 6528: 270532616,
1545
+ 6784: 8192,
1546
+ 7040: 2105352,
1547
+ 7296: 2097160,
1548
+ 7552: 0,
1549
+ 7808: 268435456,
1550
+ 8064: 268443656
1551
+ }, {
1552
+ 0: 1048576,
1553
+ 16: 33555457,
1554
+ 32: 1024,
1555
+ 48: 1049601,
1556
+ 64: 34604033,
1557
+ 80: 0,
1558
+ 96: 1,
1559
+ 112: 34603009,
1560
+ 128: 33555456,
1561
+ 144: 1048577,
1562
+ 160: 33554433,
1563
+ 176: 34604032,
1564
+ 192: 34603008,
1565
+ 208: 1025,
1566
+ 224: 1049600,
1567
+ 240: 33554432,
1568
+ 8: 34603009,
1569
+ 24: 0,
1570
+ 40: 33555457,
1571
+ 56: 34604032,
1572
+ 72: 1048576,
1573
+ 88: 33554433,
1574
+ 104: 33554432,
1575
+ 120: 1025,
1576
+ 136: 1049601,
1577
+ 152: 33555456,
1578
+ 168: 34603008,
1579
+ 184: 1048577,
1580
+ 200: 1024,
1581
+ 216: 34604033,
1582
+ 232: 1,
1583
+ 248: 1049600,
1584
+ 256: 33554432,
1585
+ 272: 1048576,
1586
+ 288: 33555457,
1587
+ 304: 34603009,
1588
+ 320: 1048577,
1589
+ 336: 33555456,
1590
+ 352: 34604032,
1591
+ 368: 1049601,
1592
+ 384: 1025,
1593
+ 400: 34604033,
1594
+ 416: 1049600,
1595
+ 432: 1,
1596
+ 448: 0,
1597
+ 464: 34603008,
1598
+ 480: 33554433,
1599
+ 496: 1024,
1600
+ 264: 1049600,
1601
+ 280: 33555457,
1602
+ 296: 34603009,
1603
+ 312: 1,
1604
+ 328: 33554432,
1605
+ 344: 1048576,
1606
+ 360: 1025,
1607
+ 376: 34604032,
1608
+ 392: 33554433,
1609
+ 408: 34603008,
1610
+ 424: 0,
1611
+ 440: 34604033,
1612
+ 456: 1049601,
1613
+ 472: 1024,
1614
+ 488: 33555456,
1615
+ 504: 1048577
1616
+ }, {
1617
+ 0: 134219808,
1618
+ 1: 131072,
1619
+ 2: 134217728,
1620
+ 3: 32,
1621
+ 4: 131104,
1622
+ 5: 134350880,
1623
+ 6: 134350848,
1624
+ 7: 2048,
1625
+ 8: 134348800,
1626
+ 9: 134219776,
1627
+ 10: 133120,
1628
+ 11: 134348832,
1629
+ 12: 2080,
1630
+ 13: 0,
1631
+ 14: 134217760,
1632
+ 15: 133152,
1633
+ 2147483648: 2048,
1634
+ 2147483649: 134350880,
1635
+ 2147483650: 134219808,
1636
+ 2147483651: 134217728,
1637
+ 2147483652: 134348800,
1638
+ 2147483653: 133120,
1639
+ 2147483654: 133152,
1640
+ 2147483655: 32,
1641
+ 2147483656: 134217760,
1642
+ 2147483657: 2080,
1643
+ 2147483658: 131104,
1644
+ 2147483659: 134350848,
1645
+ 2147483660: 0,
1646
+ 2147483661: 134348832,
1647
+ 2147483662: 134219776,
1648
+ 2147483663: 131072,
1649
+ 16: 133152,
1650
+ 17: 134350848,
1651
+ 18: 32,
1652
+ 19: 2048,
1653
+ 20: 134219776,
1654
+ 21: 134217760,
1655
+ 22: 134348832,
1656
+ 23: 131072,
1657
+ 24: 0,
1658
+ 25: 131104,
1659
+ 26: 134348800,
1660
+ 27: 134219808,
1661
+ 28: 134350880,
1662
+ 29: 133120,
1663
+ 30: 2080,
1664
+ 31: 134217728,
1665
+ 2147483664: 131072,
1666
+ 2147483665: 2048,
1667
+ 2147483666: 134348832,
1668
+ 2147483667: 133152,
1669
+ 2147483668: 32,
1670
+ 2147483669: 134348800,
1671
+ 2147483670: 134217728,
1672
+ 2147483671: 134219808,
1673
+ 2147483672: 134350880,
1674
+ 2147483673: 134217760,
1675
+ 2147483674: 134219776,
1676
+ 2147483675: 0,
1677
+ 2147483676: 133120,
1678
+ 2147483677: 2080,
1679
+ 2147483678: 131104,
1680
+ 2147483679: 134350848
1681
+ }],
1682
+ u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679],
1683
+ o = i.DES = r.extend({
1684
+ _doReset: function() {
1685
+ for (var t = this._key.words, e = [], r = 0; r < 56; r++) {
1686
+ var i = h[r] - 1;
1687
+ e[r] = t[i >>> 5] >>> 31 - i % 32 & 1
1688
+ }
1689
+ for (var n = this._subKeys = [], o = 0; o < 16; o++) {
1690
+ var s = n[o] = [],
1691
+ c = f[o];
1692
+ for (r = 0; r < 24; r++) s[r / 6 | 0] |= e[(l[r] - 1 + c) % 28] << 31 - r % 6, s[4 + (r / 6 | 0)] |= e[28 + (l[r + 24] - 1 + c) % 28] << 31 - r % 6;
1693
+ s[0] = s[0] << 1 | s[0] >>> 31;
1694
+ for (r = 1; r < 7; r++) s[r] = s[r] >>> 4 * (r - 1) + 3;
1695
+ s[7] = s[7] << 5 | s[7] >>> 27
1696
+ }
1697
+ var a = this._invSubKeys = [];
1698
+ for (r = 0; r < 16; r++) a[r] = n[15 - r]
1699
+ },
1700
+ encryptBlock: function(t, e) {
1701
+ this._doCryptBlock(t, e, this._subKeys)
1702
+ },
1703
+ decryptBlock: function(t, e) {
1704
+ this._doCryptBlock(t, e, this._invSubKeys)
1705
+ },
1706
+ _doCryptBlock: function(t, e, r) {
1707
+ this._lBlock = t[e], this._rBlock = t[e + 1], p.call(this, 4, 252645135), p.call(this, 16, 65535), _.call(this, 2, 858993459), _.call(this, 8, 16711935), p.call(this, 1, 1431655765);
1708
+ for (var i = 0; i < 16; i++) {
1709
+ for (var n = r[i], o = this._lBlock, s = this._rBlock, c = 0, a = 0; a < 8; a++) c |= d[a][((s ^ n[a]) & u[a]) >>> 0];
1710
+ this._lBlock = s, this._rBlock = o ^ c
1711
+ }
1712
+ var h = this._lBlock;
1713
+ this._lBlock = this._rBlock, this._rBlock = h, p.call(this, 1, 1431655765), _.call(this, 8, 16711935), _.call(this, 2, 858993459), p.call(this, 16, 65535), p.call(this, 4, 252645135), t[e] = this._lBlock, t[e + 1] = this._rBlock
1714
+ },
1715
+ keySize: 2,
1716
+ ivSize: 2,
1717
+ blockSize: 2
1718
+ });
1719
+
1720
+ function p(t, e) {
1721
+ var r = (this._lBlock >>> t ^ this._rBlock) & e;
1722
+ this._rBlock ^= r, this._lBlock ^= r << t
1723
+ }
1724
+
1725
+ function _(t, e) {
1726
+ var r = (this._rBlock >>> t ^ this._lBlock) & e;
1727
+ this._lBlock ^= r, this._rBlock ^= r << t
1728
+ }
1729
+ t.DES = r._createHelper(o);
1730
+ var s = i.TripleDES = r.extend({
1731
+ _doReset: function() {
1732
+ var t = this._key.words;
1733
+ if (2 !== t.length && 4 !== t.length && t.length < 6) throw new Error("Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.");
1734
+ var e = t.slice(0, 2),
1735
+ r = t.length < 4 ? t.slice(0, 2) : t.slice(2, 4),
1736
+ i = t.length < 6 ? t.slice(0, 2) : t.slice(4, 6);
1737
+ this._des1 = o.createEncryptor(n.create(e)), this._des2 = o.createEncryptor(n.create(r)), this._des3 = o.createEncryptor(n.create(i))
1738
+ },
1739
+ encryptBlock: function(t, e) {
1740
+ this._des1.encryptBlock(t, e), this._des2.decryptBlock(t, e), this._des3.encryptBlock(t, e)
1741
+ },
1742
+ decryptBlock: function(t, e) {
1743
+ this._des3.decryptBlock(t, e), this._des2.encryptBlock(t, e), this._des1.decryptBlock(t, e)
1744
+ },
1745
+ keySize: 6,
1746
+ ivSize: 2,
1747
+ blockSize: 2
1748
+ });
1749
+ t.TripleDES = r._createHelper(s)
1750
+ }(),
1751
+ function() {
1752
+ var t = bt,
1753
+ e = t.lib.StreamCipher,
1754
+ r = t.algo,
1755
+ i = r.RC4 = e.extend({
1756
+ _doReset: function() {
1757
+ for (var t = this._key, e = t.words, r = t.sigBytes, i = this._S = [], n = 0; n < 256; n++) i[n] = n;
1758
+ n = 0;
1759
+ for (var o = 0; n < 256; n++) {
1760
+ var s = n % r,
1761
+ c = e[s >>> 2] >>> 24 - s % 4 * 8 & 255;
1762
+ o = (o + i[n] + c) % 256;
1763
+ var a = i[n];
1764
+ i[n] = i[o], i[o] = a
1765
+ }
1766
+ this._i = this._j = 0
1767
+ },
1768
+ _doProcessBlock: function(t, e) {
1769
+ t[e] ^= n.call(this)
1770
+ },
1771
+ keySize: 8,
1772
+ ivSize: 0
1773
+ });
1774
+
1775
+ function n() {
1776
+ for (var t = this._S, e = this._i, r = this._j, i = 0, n = 0; n < 4; n++) {
1777
+ r = (r + t[e = (e + 1) % 256]) % 256;
1778
+ var o = t[e];
1779
+ t[e] = t[r], t[r] = o, i |= t[(t[e] + t[r]) % 256] << 24 - 8 * n
1780
+ }
1781
+ return this._i = e, this._j = r, i
1782
+ }
1783
+ t.RC4 = e._createHelper(i);
1784
+ var o = r.RC4Drop = i.extend({
1785
+ cfg: i.cfg.extend({
1786
+ drop: 192
1787
+ }),
1788
+ _doReset: function() {
1789
+ i._doReset.call(this);
1790
+ for (var t = this.cfg.drop; 0 < t; t--) n.call(this)
1791
+ }
1792
+ });
1793
+ t.RC4Drop = e._createHelper(o)
1794
+ }(), bt.mode.CTRGladman = (ot = bt.lib.BlockCipherMode.extend(), st = ot.Encryptor = ot.extend({
1795
+ processBlock: function(t, e) {
1796
+ var r, i = this._cipher,
1797
+ n = i.blockSize,
1798
+ o = this._iv,
1799
+ s = this._counter;
1800
+ o && (s = this._counter = o.slice(0), this._iv = void 0), 0 === ((r = s)[0] = Et(r[0])) && (r[1] = Et(r[1]));
1801
+ var c = s.slice(0);
1802
+ i.encryptBlock(c, 0);
1803
+ for (var a = 0; a < n; a++) t[e + a] ^= c[a]
1804
+ }
1805
+ }), ot.Decryptor = st, ot), at = (ct = bt).lib.StreamCipher, ht = ct.algo, lt = [], ft = [], dt = [], ut = ht.Rabbit = at.extend({
1806
+ _doReset: function() {
1807
+ for (var t = this._key.words, e = this.cfg.iv, r = 0; r < 4; r++) t[r] = 16711935 & (t[r] << 8 | t[r] >>> 24) | 4278255360 & (t[r] << 24 | t[r] >>> 8);
1808
+ var i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16],
1809
+ n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]];
1810
+ for (r = this._b = 0; r < 4; r++) Rt.call(this);
1811
+ for (r = 0; r < 8; r++) n[r] ^= i[r + 4 & 7];
1812
+ if (e) {
1813
+ var o = e.words,
1814
+ s = o[0],
1815
+ c = o[1],
1816
+ a = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8),
1817
+ h = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8),
1818
+ l = a >>> 16 | 4294901760 & h,
1819
+ f = h << 16 | 65535 & a;
1820
+ n[0] ^= a, n[1] ^= l, n[2] ^= h, n[3] ^= f, n[4] ^= a, n[5] ^= l, n[6] ^= h, n[7] ^= f;
1821
+ for (r = 0; r < 4; r++) Rt.call(this)
1822
+ }
1823
+ },
1824
+ _doProcessBlock: function(t, e) {
1825
+ var r = this._X;
1826
+ Rt.call(this), lt[0] = r[0] ^ r[5] >>> 16 ^ r[3] << 16, lt[1] = r[2] ^ r[7] >>> 16 ^ r[5] << 16, lt[2] = r[4] ^ r[1] >>> 16 ^ r[7] << 16, lt[3] = r[6] ^ r[3] >>> 16 ^ r[1] << 16;
1827
+ for (var i = 0; i < 4; i++) lt[i] = 16711935 & (lt[i] << 8 | lt[i] >>> 24) | 4278255360 & (lt[i] << 24 | lt[i] >>> 8), t[e + i] ^= lt[i]
1828
+ },
1829
+ blockSize: 4,
1830
+ ivSize: 2
1831
+ }), ct.Rabbit = at._createHelper(ut), bt.mode.CTR = (pt = bt.lib.BlockCipherMode.extend(), _t = pt.Encryptor = pt.extend({
1832
+ processBlock: function(t, e) {
1833
+ var r = this._cipher,
1834
+ i = r.blockSize,
1835
+ n = this._iv,
1836
+ o = this._counter;
1837
+ n && (o = this._counter = n.slice(0), this._iv = void 0);
1838
+ var s = o.slice(0);
1839
+ r.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0;
1840
+ for (var c = 0; c < i; c++) t[e + c] ^= s[c]
1841
+ }
1842
+ }), pt.Decryptor = _t, pt), yt = (vt = bt).lib.StreamCipher, gt = vt.algo, Bt = [], wt = [], kt = [], St = gt.RabbitLegacy = yt.extend({
1843
+ _doReset: function() {
1844
+ for (var t = this._key.words, e = this.cfg.iv, r = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], i = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]], n = this._b = 0; n < 4; n++) Mt.call(this);
1845
+ for (n = 0; n < 8; n++) i[n] ^= r[n + 4 & 7];
1846
+ if (e) {
1847
+ var o = e.words,
1848
+ s = o[0],
1849
+ c = o[1],
1850
+ a = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8),
1851
+ h = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8),
1852
+ l = a >>> 16 | 4294901760 & h,
1853
+ f = h << 16 | 65535 & a;
1854
+ i[0] ^= a, i[1] ^= l, i[2] ^= h, i[3] ^= f, i[4] ^= a, i[5] ^= l, i[6] ^= h, i[7] ^= f;
1855
+ for (n = 0; n < 4; n++) Mt.call(this)
1856
+ }
1857
+ },
1858
+ _doProcessBlock: function(t, e) {
1859
+ var r = this._X;
1860
+ Mt.call(this), Bt[0] = r[0] ^ r[5] >>> 16 ^ r[3] << 16, Bt[1] = r[2] ^ r[7] >>> 16 ^ r[5] << 16, Bt[2] = r[4] ^ r[1] >>> 16 ^ r[7] << 16, Bt[3] = r[6] ^ r[3] >>> 16 ^ r[1] << 16;
1861
+ for (var i = 0; i < 4; i++) Bt[i] = 16711935 & (Bt[i] << 8 | Bt[i] >>> 24) | 4278255360 & (Bt[i] << 24 | Bt[i] >>> 8), t[e + i] ^= Bt[i]
1862
+ },
1863
+ blockSize: 4,
1864
+ ivSize: 2
1865
+ }), vt.RabbitLegacy = yt._createHelper(St), bt.pad.ZeroPadding = {
1866
+ pad: function(t, e) {
1867
+ var r = 4 * e;
1868
+ t.clamp(), t.sigBytes += r - (t.sigBytes % r || r)
1869
+ },
1870
+ unpad: function(t) {
1871
+ var e = t.words,
1872
+ r = t.sigBytes - 1;
1873
+ for (r = t.sigBytes - 1; 0 <= r; r--)
1874
+ if (e[r >>> 2] >>> 24 - r % 4 * 8 & 255) {
1875
+ t.sigBytes = r + 1;
1876
+ break
1877
+ }
1878
+ }
1879
+ }, bt
1880
+ });
js_free-online-image-upscaler.js ADDED
The diff for this file is too large to render. See raw diff
 
js_quene.js ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const queneDropZone = document.getElementById('QueneDropzone');
2
+ const nextFileButton = document.getElementById('nextFileButton');
3
+
4
+ let droppedFiles = [];
5
+ let currentIndex = 0;
6
+
7
+ ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
8
+ queneDropZone.addEventListener(eventName, e => {
9
+ e.preventDefault();
10
+ e.stopPropagation();
11
+ }, false);
12
+ });
13
+
14
+ queneDropZone.addEventListener('drop', (e) => {
15
+
16
+ const newFiles = Array.from(e.dataTransfer.files);
17
+ droppedFiles.push(...newFiles);
18
+
19
+ queneDropZone.innerHTML =`Filecount: ${droppedFiles.length}`;
20
+ console.log(`Added ${newFiles.length} new file(s). Total in queue: ${droppedFiles.length}.`);
21
+
22
+ });
23
+
24
+ function startNextImageInQuene(){
25
+
26
+ if (droppedFiles.length === 0) {
27
+ console.log('No files loaded. Drop some files first.');
28
+ queneDropZone.innerHTML ='Add To Quene';
29
+ return;
30
+ }
31
+
32
+ if (currentIndex >= droppedFiles.length) {
33
+ console.log('No more files. Queue is empty. Counter reset.');
34
+ queneDropZone.innerHTML ='Add To Quene';
35
+ currentIndex = 0;
36
+ droppedFiles = [];
37
+ return;
38
+ }
39
+
40
+ file = droppedFiles[currentIndex];
41
+
42
+ dataTransfer = new DataTransfer();
43
+ dataTransfer.items.add(file);
44
+
45
+ dropEvent = new DragEvent("drop", {
46
+ dataTransfer,
47
+ bubbles: true,
48
+ cancelable: true
49
+ });
50
+
51
+ dropZone = document.querySelector("#drag-zone2");
52
+ dropZone.dispatchEvent(dropEvent);
53
+
54
+ console.log(`File ${currentIndex + 1} of ${droppedFiles.length} Name: ${file.name}`);
55
+
56
+ currentIndex++;
57
+
58
+ queneDropZone.innerHTML =`Filecount: ${droppedFiles.length - currentIndex +1}`;
59
+ };
60
+
61
+ nextFileButton.addEventListener('click', () => {
62
+ startNextImageInQuene();
63
+ });
js_spark-md5.min.js ADDED
@@ -0,0 +1,473 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function(factory) {
2
+ if (typeof exports === "object") {
3
+ module.exports = factory()
4
+ } else if (typeof define === "function" && define.amd) {
5
+ define(factory)
6
+ } else {
7
+ var glob;
8
+ try {
9
+ glob = window
10
+ } catch (e) {
11
+ glob = self
12
+ }
13
+ glob.SparkMD5 = factory()
14
+ }
15
+ })(function(undefined) {
16
+ "use strict";
17
+ var add32 = function(a, b) {
18
+ return a + b & 4294967295
19
+ },
20
+ hex_chr = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
21
+
22
+ function cmn(q, a, b, x, s, t) {
23
+ a = add32(add32(a, q), add32(x, t));
24
+ return add32(a << s | a >>> 32 - s, b)
25
+ }
26
+
27
+ function md5cycle(x, k) {
28
+ var a = x[0],
29
+ b = x[1],
30
+ c = x[2],
31
+ d = x[3];
32
+ a += (b & c | ~b & d) + k[0] - 680876936 | 0;
33
+ a = (a << 7 | a >>> 25) + b | 0;
34
+ d += (a & b | ~a & c) + k[1] - 389564586 | 0;
35
+ d = (d << 12 | d >>> 20) + a | 0;
36
+ c += (d & a | ~d & b) + k[2] + 606105819 | 0;
37
+ c = (c << 17 | c >>> 15) + d | 0;
38
+ b += (c & d | ~c & a) + k[3] - 1044525330 | 0;
39
+ b = (b << 22 | b >>> 10) + c | 0;
40
+ a += (b & c | ~b & d) + k[4] - 176418897 | 0;
41
+ a = (a << 7 | a >>> 25) + b | 0;
42
+ d += (a & b | ~a & c) + k[5] + 1200080426 | 0;
43
+ d = (d << 12 | d >>> 20) + a | 0;
44
+ c += (d & a | ~d & b) + k[6] - 1473231341 | 0;
45
+ c = (c << 17 | c >>> 15) + d | 0;
46
+ b += (c & d | ~c & a) + k[7] - 45705983 | 0;
47
+ b = (b << 22 | b >>> 10) + c | 0;
48
+ a += (b & c | ~b & d) + k[8] + 1770035416 | 0;
49
+ a = (a << 7 | a >>> 25) + b | 0;
50
+ d += (a & b | ~a & c) + k[9] - 1958414417 | 0;
51
+ d = (d << 12 | d >>> 20) + a | 0;
52
+ c += (d & a | ~d & b) + k[10] - 42063 | 0;
53
+ c = (c << 17 | c >>> 15) + d | 0;
54
+ b += (c & d | ~c & a) + k[11] - 1990404162 | 0;
55
+ b = (b << 22 | b >>> 10) + c | 0;
56
+ a += (b & c | ~b & d) + k[12] + 1804603682 | 0;
57
+ a = (a << 7 | a >>> 25) + b | 0;
58
+ d += (a & b | ~a & c) + k[13] - 40341101 | 0;
59
+ d = (d << 12 | d >>> 20) + a | 0;
60
+ c += (d & a | ~d & b) + k[14] - 1502002290 | 0;
61
+ c = (c << 17 | c >>> 15) + d | 0;
62
+ b += (c & d | ~c & a) + k[15] + 1236535329 | 0;
63
+ b = (b << 22 | b >>> 10) + c | 0;
64
+ a += (b & d | c & ~d) + k[1] - 165796510 | 0;
65
+ a = (a << 5 | a >>> 27) + b | 0;
66
+ d += (a & c | b & ~c) + k[6] - 1069501632 | 0;
67
+ d = (d << 9 | d >>> 23) + a | 0;
68
+ c += (d & b | a & ~b) + k[11] + 643717713 | 0;
69
+ c = (c << 14 | c >>> 18) + d | 0;
70
+ b += (c & a | d & ~a) + k[0] - 373897302 | 0;
71
+ b = (b << 20 | b >>> 12) + c | 0;
72
+ a += (b & d | c & ~d) + k[5] - 701558691 | 0;
73
+ a = (a << 5 | a >>> 27) + b | 0;
74
+ d += (a & c | b & ~c) + k[10] + 38016083 | 0;
75
+ d = (d << 9 | d >>> 23) + a | 0;
76
+ c += (d & b | a & ~b) + k[15] - 660478335 | 0;
77
+ c = (c << 14 | c >>> 18) + d | 0;
78
+ b += (c & a | d & ~a) + k[4] - 405537848 | 0;
79
+ b = (b << 20 | b >>> 12) + c | 0;
80
+ a += (b & d | c & ~d) + k[9] + 568446438 | 0;
81
+ a = (a << 5 | a >>> 27) + b | 0;
82
+ d += (a & c | b & ~c) + k[14] - 1019803690 | 0;
83
+ d = (d << 9 | d >>> 23) + a | 0;
84
+ c += (d & b | a & ~b) + k[3] - 187363961 | 0;
85
+ c = (c << 14 | c >>> 18) + d | 0;
86
+ b += (c & a | d & ~a) + k[8] + 1163531501 | 0;
87
+ b = (b << 20 | b >>> 12) + c | 0;
88
+ a += (b & d | c & ~d) + k[13] - 1444681467 | 0;
89
+ a = (a << 5 | a >>> 27) + b | 0;
90
+ d += (a & c | b & ~c) + k[2] - 51403784 | 0;
91
+ d = (d << 9 | d >>> 23) + a | 0;
92
+ c += (d & b | a & ~b) + k[7] + 1735328473 | 0;
93
+ c = (c << 14 | c >>> 18) + d | 0;
94
+ b += (c & a | d & ~a) + k[12] - 1926607734 | 0;
95
+ b = (b << 20 | b >>> 12) + c | 0;
96
+ a += (b ^ c ^ d) + k[5] - 378558 | 0;
97
+ a = (a << 4 | a >>> 28) + b | 0;
98
+ d += (a ^ b ^ c) + k[8] - 2022574463 | 0;
99
+ d = (d << 11 | d >>> 21) + a | 0;
100
+ c += (d ^ a ^ b) + k[11] + 1839030562 | 0;
101
+ c = (c << 16 | c >>> 16) + d | 0;
102
+ b += (c ^ d ^ a) + k[14] - 35309556 | 0;
103
+ b = (b << 23 | b >>> 9) + c | 0;
104
+ a += (b ^ c ^ d) + k[1] - 1530992060 | 0;
105
+ a = (a << 4 | a >>> 28) + b | 0;
106
+ d += (a ^ b ^ c) + k[4] + 1272893353 | 0;
107
+ d = (d << 11 | d >>> 21) + a | 0;
108
+ c += (d ^ a ^ b) + k[7] - 155497632 | 0;
109
+ c = (c << 16 | c >>> 16) + d | 0;
110
+ b += (c ^ d ^ a) + k[10] - 1094730640 | 0;
111
+ b = (b << 23 | b >>> 9) + c | 0;
112
+ a += (b ^ c ^ d) + k[13] + 681279174 | 0;
113
+ a = (a << 4 | a >>> 28) + b | 0;
114
+ d += (a ^ b ^ c) + k[0] - 358537222 | 0;
115
+ d = (d << 11 | d >>> 21) + a | 0;
116
+ c += (d ^ a ^ b) + k[3] - 722521979 | 0;
117
+ c = (c << 16 | c >>> 16) + d | 0;
118
+ b += (c ^ d ^ a) + k[6] + 76029189 | 0;
119
+ b = (b << 23 | b >>> 9) + c | 0;
120
+ a += (b ^ c ^ d) + k[9] - 640364487 | 0;
121
+ a = (a << 4 | a >>> 28) + b | 0;
122
+ d += (a ^ b ^ c) + k[12] - 421815835 | 0;
123
+ d = (d << 11 | d >>> 21) + a | 0;
124
+ c += (d ^ a ^ b) + k[15] + 530742520 | 0;
125
+ c = (c << 16 | c >>> 16) + d | 0;
126
+ b += (c ^ d ^ a) + k[2] - 995338651 | 0;
127
+ b = (b << 23 | b >>> 9) + c | 0;
128
+ a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;
129
+ a = (a << 6 | a >>> 26) + b | 0;
130
+ d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;
131
+ d = (d << 10 | d >>> 22) + a | 0;
132
+ c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;
133
+ c = (c << 15 | c >>> 17) + d | 0;
134
+ b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;
135
+ b = (b << 21 | b >>> 11) + c | 0;
136
+ a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;
137
+ a = (a << 6 | a >>> 26) + b | 0;
138
+ d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;
139
+ d = (d << 10 | d >>> 22) + a | 0;
140
+ c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;
141
+ c = (c << 15 | c >>> 17) + d | 0;
142
+ b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;
143
+ b = (b << 21 | b >>> 11) + c | 0;
144
+ a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;
145
+ a = (a << 6 | a >>> 26) + b | 0;
146
+ d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;
147
+ d = (d << 10 | d >>> 22) + a | 0;
148
+ c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;
149
+ c = (c << 15 | c >>> 17) + d | 0;
150
+ b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;
151
+ b = (b << 21 | b >>> 11) + c | 0;
152
+ a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;
153
+ a = (a << 6 | a >>> 26) + b | 0;
154
+ d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;
155
+ d = (d << 10 | d >>> 22) + a | 0;
156
+ c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;
157
+ c = (c << 15 | c >>> 17) + d | 0;
158
+ b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;
159
+ b = (b << 21 | b >>> 11) + c | 0;
160
+ x[0] = a + x[0] | 0;
161
+ x[1] = b + x[1] | 0;
162
+ x[2] = c + x[2] | 0;
163
+ x[3] = d + x[3] | 0
164
+ }
165
+
166
+ function md5blk(s) {
167
+ var md5blks = [],
168
+ i;
169
+ for (i = 0; i < 64; i += 4) {
170
+ md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24)
171
+ }
172
+ return md5blks
173
+ }
174
+
175
+ function md5blk_array(a) {
176
+ var md5blks = [],
177
+ i;
178
+ for (i = 0; i < 64; i += 4) {
179
+ md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24)
180
+ }
181
+ return md5blks
182
+ }
183
+
184
+ function md51(s) {
185
+ var n = s.length,
186
+ state = [1732584193, -271733879, -1732584194, 271733878],
187
+ i, length, tail, tmp, lo, hi;
188
+ for (i = 64; i <= n; i += 64) {
189
+ md5cycle(state, md5blk(s.substring(i - 64, i)))
190
+ }
191
+ s = s.substring(i - 64);
192
+ length = s.length;
193
+ tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
194
+ for (i = 0; i < length; i += 1) {
195
+ tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3)
196
+ }
197
+ tail[i >> 2] |= 128 << (i % 4 << 3);
198
+ if (i > 55) {
199
+ md5cycle(state, tail);
200
+ for (i = 0; i < 16; i += 1) {
201
+ tail[i] = 0
202
+ }
203
+ }
204
+ tmp = n * 8;
205
+ tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);
206
+ lo = parseInt(tmp[2], 16);
207
+ hi = parseInt(tmp[1], 16) || 0;
208
+ tail[14] = lo;
209
+ tail[15] = hi;
210
+ md5cycle(state, tail);
211
+ return state
212
+ }
213
+
214
+ function md51_array(a) {
215
+ var n = a.length,
216
+ state = [1732584193, -271733879, -1732584194, 271733878],
217
+ i, length, tail, tmp, lo, hi;
218
+ for (i = 64; i <= n; i += 64) {
219
+ md5cycle(state, md5blk_array(a.subarray(i - 64, i)))
220
+ }
221
+ a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);
222
+ length = a.length;
223
+ tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
224
+ for (i = 0; i < length; i += 1) {
225
+ tail[i >> 2] |= a[i] << (i % 4 << 3)
226
+ }
227
+ tail[i >> 2] |= 128 << (i % 4 << 3);
228
+ if (i > 55) {
229
+ md5cycle(state, tail);
230
+ for (i = 0; i < 16; i += 1) {
231
+ tail[i] = 0
232
+ }
233
+ }
234
+ tmp = n * 8;
235
+ tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);
236
+ lo = parseInt(tmp[2], 16);
237
+ hi = parseInt(tmp[1], 16) || 0;
238
+ tail[14] = lo;
239
+ tail[15] = hi;
240
+ md5cycle(state, tail);
241
+ return state
242
+ }
243
+
244
+ function rhex(n) {
245
+ var s = "",
246
+ j;
247
+ for (j = 0; j < 4; j += 1) {
248
+ s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15]
249
+ }
250
+ return s
251
+ }
252
+
253
+ function hex(x) {
254
+ var i;
255
+ for (i = 0; i < x.length; i += 1) {
256
+ x[i] = rhex(x[i])
257
+ }
258
+ return x.join("")
259
+ }
260
+ if (hex(md51("hello")) !== "5d41402abc4b2a76b9719d911017c592") {
261
+ add32 = function(x, y) {
262
+ var lsw = (x & 65535) + (y & 65535),
263
+ msw = (x >> 16) + (y >> 16) + (lsw >> 16);
264
+ return msw << 16 | lsw & 65535
265
+ }
266
+ }
267
+ if (typeof ArrayBuffer !== "undefined" && !ArrayBuffer.prototype.slice) {
268
+ (function() {
269
+ function clamp(val, length) {
270
+ val = val | 0 || 0;
271
+ if (val < 0) {
272
+ return Math.max(val + length, 0)
273
+ }
274
+ return Math.min(val, length)
275
+ }
276
+ ArrayBuffer.prototype.slice = function(from, to) {
277
+ var length = this.byteLength,
278
+ begin = clamp(from, length),
279
+ end = length,
280
+ num, target, targetArray, sourceArray;
281
+ if (to !== undefined) {
282
+ end = clamp(to, length)
283
+ }
284
+ if (begin > end) {
285
+ return new ArrayBuffer(0)
286
+ }
287
+ num = end - begin;
288
+ target = new ArrayBuffer(num);
289
+ targetArray = new Uint8Array(target);
290
+ sourceArray = new Uint8Array(this, begin, num);
291
+ targetArray.set(sourceArray);
292
+ return target
293
+ }
294
+ })()
295
+ }
296
+
297
+ function toUtf8(str) {
298
+ if (/[\u0080-\uFFFF]/.test(str)) {
299
+ str = unescape(encodeURIComponent(str))
300
+ }
301
+ return str
302
+ }
303
+
304
+ function utf8Str2ArrayBuffer(str, returnUInt8Array) {
305
+ var length = str.length,
306
+ buff = new ArrayBuffer(length),
307
+ arr = new Uint8Array(buff),
308
+ i;
309
+ for (i = 0; i < length; i += 1) {
310
+ arr[i] = str.charCodeAt(i)
311
+ }
312
+ return returnUInt8Array ? arr : buff
313
+ }
314
+
315
+ function arrayBuffer2Utf8Str(buff) {
316
+ return String.fromCharCode.apply(null, new Uint8Array(buff))
317
+ }
318
+
319
+ function concatenateArrayBuffers(first, second, returnUInt8Array) {
320
+ var result = new Uint8Array(first.byteLength + second.byteLength);
321
+ result.set(new Uint8Array(first));
322
+ result.set(new Uint8Array(second), first.byteLength);
323
+ return returnUInt8Array ? result : result.buffer
324
+ }
325
+
326
+ function hexToBinaryString(hex) {
327
+ var bytes = [],
328
+ length = hex.length,
329
+ x;
330
+ for (x = 0; x < length - 1; x += 2) {
331
+ bytes.push(parseInt(hex.substr(x, 2), 16))
332
+ }
333
+ return String.fromCharCode.apply(String, bytes)
334
+ }
335
+
336
+ function SparkMD5() {
337
+ this.reset()
338
+ }
339
+ SparkMD5.prototype.append = function(str) {
340
+ this.appendBinary(toUtf8(str));
341
+ return this
342
+ };
343
+ SparkMD5.prototype.appendBinary = function(contents) {
344
+ this._buff += contents;
345
+ this._length += contents.length;
346
+ var length = this._buff.length,
347
+ i;
348
+ for (i = 64; i <= length; i += 64) {
349
+ md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)))
350
+ }
351
+ this._buff = this._buff.substring(i - 64);
352
+ return this
353
+ };
354
+ SparkMD5.prototype.end = function(raw) {
355
+ var buff = this._buff,
356
+ length = buff.length,
357
+ i, tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
358
+ ret;
359
+ for (i = 0; i < length; i += 1) {
360
+ tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3)
361
+ }
362
+ this._finish(tail, length);
363
+ ret = hex(this._hash);
364
+ if (raw) {
365
+ ret = hexToBinaryString(ret)
366
+ }
367
+ this.reset();
368
+ return ret
369
+ };
370
+ SparkMD5.prototype.reset = function() {
371
+ this._buff = "";
372
+ this._length = 0;
373
+ this._hash = [1732584193, -271733879, -1732584194, 271733878];
374
+ return this
375
+ };
376
+ SparkMD5.prototype.getState = function() {
377
+ return {
378
+ buff: this._buff,
379
+ length: this._length,
380
+ hash: this._hash.slice()
381
+ }
382
+ };
383
+ SparkMD5.prototype.setState = function(state) {
384
+ this._buff = state.buff;
385
+ this._length = state.length;
386
+ this._hash = state.hash;
387
+ return this
388
+ };
389
+ SparkMD5.prototype.destroy = function() {
390
+ delete this._hash;
391
+ delete this._buff;
392
+ delete this._length
393
+ };
394
+ SparkMD5.prototype._finish = function(tail, length) {
395
+ var i = length,
396
+ tmp, lo, hi;
397
+ tail[i >> 2] |= 128 << (i % 4 << 3);
398
+ if (i > 55) {
399
+ md5cycle(this._hash, tail);
400
+ for (i = 0; i < 16; i += 1) {
401
+ tail[i] = 0
402
+ }
403
+ }
404
+ tmp = this._length * 8;
405
+ tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);
406
+ lo = parseInt(tmp[2], 16);
407
+ hi = parseInt(tmp[1], 16) || 0;
408
+ tail[14] = lo;
409
+ tail[15] = hi;
410
+ md5cycle(this._hash, tail)
411
+ };
412
+ SparkMD5.hash = function(str, raw) {
413
+ return SparkMD5.hashBinary(toUtf8(str), raw)
414
+ };
415
+ SparkMD5.hashBinary = function(content, raw) {
416
+ var hash = md51(content),
417
+ ret = hex(hash);
418
+ return raw ? hexToBinaryString(ret) : ret
419
+ };
420
+ SparkMD5.ArrayBuffer = function() {
421
+ this.reset()
422
+ };
423
+ SparkMD5.ArrayBuffer.prototype.append = function(arr) {
424
+ var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),
425
+ length = buff.length,
426
+ i;
427
+ this._length += arr.byteLength;
428
+ for (i = 64; i <= length; i += 64) {
429
+ md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)))
430
+ }
431
+ this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);
432
+ return this
433
+ };
434
+ SparkMD5.ArrayBuffer.prototype.end = function(raw) {
435
+ var buff = this._buff,
436
+ length = buff.length,
437
+ tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
438
+ i, ret;
439
+ for (i = 0; i < length; i += 1) {
440
+ tail[i >> 2] |= buff[i] << (i % 4 << 3)
441
+ }
442
+ this._finish(tail, length);
443
+ ret = hex(this._hash);
444
+ if (raw) {
445
+ ret = hexToBinaryString(ret)
446
+ }
447
+ this.reset();
448
+ return ret
449
+ };
450
+ SparkMD5.ArrayBuffer.prototype.reset = function() {
451
+ this._buff = new Uint8Array(0);
452
+ this._length = 0;
453
+ this._hash = [1732584193, -271733879, -1732584194, 271733878];
454
+ return this
455
+ };
456
+ SparkMD5.ArrayBuffer.prototype.getState = function() {
457
+ var state = SparkMD5.prototype.getState.call(this);
458
+ state.buff = arrayBuffer2Utf8Str(state.buff);
459
+ return state
460
+ };
461
+ SparkMD5.ArrayBuffer.prototype.setState = function(state) {
462
+ state.buff = utf8Str2ArrayBuffer(state.buff, true);
463
+ return SparkMD5.prototype.setState.call(this, state)
464
+ };
465
+ SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;
466
+ SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;
467
+ SparkMD5.ArrayBuffer.hash = function(arr, raw) {
468
+ var hash = md51_array(new Uint8Array(arr)),
469
+ ret = hex(hash);
470
+ return raw ? hexToBinaryString(ret) : ret
471
+ };
472
+ return SparkMD5
473
+ });
js_translation.js ADDED
@@ -0,0 +1,747 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ !(function(global, jQuery) {
2
+ var $ = jQuery;
3
+ global.aiss || (global.aiss = {});
4
+ var tr = window.translation = global.aiss.i18n = {
5
+ langs: {
6
+ "en": {
7
+ "launcher_step_1": ["Step", "Please", " ", " first."],
8
+ "launcher_step_2": ["Step", "Install", "", "after downloading."],
9
+ "launcher_submit": "Submit",
10
+ "launcher_no_file": "No File Selected!",
11
+ "launcher_video_format": "Video Format",
12
+ "launcher_audio_format": "Audio Format",
13
+ "launcher_install_guide": "Install",
14
+ "launcher_feedback": "Feedback",
15
+ "launcher_retry": "Retry",
16
+ "launcher_download": "download",
17
+ "launcher_error_1010": "This service is not supported by the current browser or version (error code: 1010). Please upgrade your browser or try a different browser.",
18
+ "system_support": "This online service is only available on the computer. Please use desktop browser to access.",
19
+ "launching_agent": "Launching…",
20
+ "launcher_error_1011": "Communication is abnormally down (error code: 1011). Click Retry to try again, or you can send us feedback to solve the problem.",
21
+ "service_activated": "Service activated!",
22
+ "service_closed": "Service is closed!",
23
+ "launcher_proccess": "Updating...",
24
+ "launcher_error_1001": "An exception occurred during environment configuration (error code: 1001). Please refresh the page to try again, or give us feedback to resolve the issue.",
25
+ "launcher_error_1002": "An exception occurred during environment configuration (error code: 1002). Please refresh the page to try again, or give us feedback to resolve the issue.",
26
+ "launcher_error_1003": "Unstable network connection (error code: 1003). Click Retry to try again, or you can send us feedback to solve the problem.",
27
+ "launcher_error_1000": "An exception occurred during environment configuration (error code: 1000). Please refresh the page to try again, or give us feedback to resolve the issue.",
28
+ "launcher_error_1004": "Configuration failed (error code: 1004). Click Retry to reconfigure, or you can send us feedback to solve the problem.",
29
+ "launcher_updated": ["The service is updated, please click Update Now to download and install.", "Update Now"],
30
+ "launcher_launching": "Launching service...",
31
+ "launcher_error_1012": "The main process service failed to load (error code: 1012). Click Retry to reload, or you can send us feedback to solve the problem.",
32
+ "launcher_error_1005": "An exception occurred during environment configuration (error code: 1005). Please refresh the page to try again, or give us feedback to resolve the issue.",
33
+ "launcher_error_1007": "An exception occurred during environment configuration (error code: 1007). Please refresh the page to try again, or give us feedback to resolve the issue.",
34
+ "launcher_error_1006": "An exception occurred during environment configuration (error code: 1006). Please refresh the page to try again, or give us feedback to resolve the issue.",
35
+ "launcher_error_1008": "An exception occurred during environment configuration (error code: 1008). Please refresh the page to try again, or give us feedback to resolve the issue.",
36
+ "feedback_zoon": ["Thanks for your feedback. Please leave your problem and we will respond to you within 24 hours.", "Email:", "Enter your email here!", "Contents:", "Leave any problem or suggestion you encountered here.", "Thank You!", "Your Feedback has been submitted successfully.", "Start Recording", "Leave Your Comment"],
37
+ "launcher_feedbacktip": "Enter your email here!",
38
+ "screen_recorder_feedback": ["Email is empty!", "Please enter a valid email!", "Please Enter Content!"],
39
+ "video_converter_convert": "Convert",
40
+ "video_converter_add": "Add File",
41
+ "video_converter_stop": "Stop",
42
+ "video_converter_stop_info": "Are you sure to stop converting?",
43
+ "video_converter_complete": "Conversion complete!",
44
+ "video_converter_ok": "OK",
45
+ "video_converter_exit": "Are you sure you want to exit Video Converter?",
46
+ "audio_converter_exit": "Are you sure you want to exit Audio Converter?",
47
+ "video_converter_general_info": "General Info",
48
+ "video_converter_name_info": "Name:",
49
+ "video_converter_format_info": "Format:",
50
+ "video_converter_size_info": "Size:",
51
+ "video_converter_duration_info": "Duration:",
52
+ "video_converter_video_stream_info": "Video Stream",
53
+ "video_converter_encoder_info": "Encoder:",
54
+ "video_converter_video_bitrate_info": "Video Bitrate:",
55
+ "video_converter_resolution_info": "Resolution:",
56
+ "video_converter_frame_rate_info": "Frame Rate:",
57
+ "video_converter_audio_stream_info": "Audio Stream",
58
+ "video_converter_encoder_info": "Encoder:",
59
+ "video_converter_sample_rate_info": "Sample Rate:",
60
+ "video_converter_channel_info": "Channel:",
61
+ "video_converter_audio_bitrate_info": "Audio Bitrate:",
62
+ "video_converter_video_settings": "Video Settings",
63
+ "video_converter_audio_settings": "Audio Settings",
64
+ "video_converter_audio_encoder_settings": "Audio Encoder:",
65
+ "video_converter_video_encoder_settings": "Video Encoder:",
66
+ "video_converter_bitrate_settings": "Bitrate:",
67
+ "video_converter_default_settings": "Default",
68
+ "video_converter_cancel_settings": "Cancel",
69
+ "video_converter_same": "Same as resource",
70
+ "video_compressor_exit": "Are you sure you want to exit Video Compress?",
71
+ "video_joiner_exit": "Are you sure you want to exit Video merger?",
72
+ "video_joiner_comfirm_merge": "We don't support merging trackless video. After clicking \"OK\", we will automatically filter out the trackless video for you. You can also download the desktop version to merge the trackless video.",
73
+ "video_joiner_format_video": "Videos with Sound track",
74
+ "video_joiner_format_audio": "Videos without Sound track",
75
+ "video_compressor_add": "Add Files to Compress",
76
+ "video_compressor_change_file": "Change Source File",
77
+ "video_compressor_successfully": "Compression successfully!",
78
+ "video_compressor_failed": "Compression failed, please retry!",
79
+ "video_compressor_file_error": "An error has occurred while reading the uploaded file. Please try another one.",
80
+ "video_compressor_yes": "Yes",
81
+ "video_compressor_no": "No",
82
+ "video_compressor_source": "Source",
83
+ "video_compressor_output": "Output",
84
+ "video_compressor_oversize": "The uploaded video resolution exceeds the highest limit of 1920*1080. Download the desktop version and compress the videos with higher resolutions.",
85
+ "video_compressor_continue": "continue",
86
+ "video_compressor_desktop": "Download Desktop Version",
87
+ "video_compressor_replace": "Are you sure you want to replace current video to compress other?",
88
+ "video_compressor_stop_compress": "Are you sure you want to stop compress progress?",
89
+ "video_compressor_stop": "Stop",
90
+ "video_joiner_stop": "Are you sure you want to stop merging?",
91
+ "video_compressor_compress": "Compress",
92
+ "video_compressor_compressing": "Compressing",
93
+ "video_compressor_reload": "The file you uploaded is corrupted. Please select another one file for upload.",
94
+ "video_compressor_desktop_download": "Install Desktop Version",
95
+ "video_joiner_merging": "Merging videos",
96
+ "video_joiner_merge": "Merge Now",
97
+ "video_joiner_join_failed": "Join Failed",
98
+ "video_joiner_join_success": "Join Successfully",
99
+ "video_joiner_insert": "Insert new",
100
+ "video_joiner_to_merge": "Add files to Merge",
101
+ "video_joiner": "Online Video Merger",
102
+ "browser_support_image_compressor": "Your browser is to old. Please update it to support compress photo.",
103
+ "image_compressor_upload": "upload",
104
+ "image_compressor_finished": "Finished",
105
+ "image_compressor_error": "Error!",
106
+ "image_compressor_max-size": "Size large than 5 MB",
107
+ "image_compressor_max_number": "You can only upload 40 images today.",
108
+ "pdf_compressor_max_number": "You can only add up to 10 files today.",
109
+ "image_compressor_failed": "Fail",
110
+ "heic_converter_max_size": "You can only add up to 5 MB per file.",
111
+ "image_compressor_download": "Download",
112
+ "image_compressor_converting": "Converting",
113
+ "image_compressor_delete": "Delete",
114
+ "pdf_compressor_refreshing": "There may be an error,try refreshing?",
115
+ "pdf_compressor_try_again": "Error! Please refresh page and try again.",
116
+ "pdf_compressor_updata_error": "Upload process error",
117
+ "pdf_compressor_over_size": "File size too big",
118
+ "pdf_compressor__not_allowed": "This extension is not allowed",
119
+ "pdf_compressor_one_only": "Can only upload one",
120
+ "browser_support_pdf_compressor": "Your browser is to old. Please update it to support compress PDF Files.",
121
+ 'over_size_message': 'The image you uploaded is over 10M. We will compress your file for uploading. Please click “Confirm” to continue uploading.',
122
+ 'file_type_error': 'The file you uploaded is not an image! Please try to upload again.',
123
+ 'image_type_error': 'The image format is not supported. We only supports JPG, JPEG, PNG and GIF. We will covert your image format for recognition. Please click “Confirm” to continue uploading.',
124
+ 'upload_error': 'Upload Error! (Error Code: 2000) Please try again.',
125
+ 'network_error': 'Network Error! (Error Code: 2001) Please try again.',
126
+ 'recognition_error': 'Recognition Error! (Error Code: 2002) Please try again.',
127
+ 'image_compress_fail': 'The image is too large to compress!',
128
+ 'image_transfer_fail': 'Failed to convert the image. Please upload another one.',
129
+ 'original_image': 'Original',
130
+ 'preview_image': 'Preview',
131
+ "browser_support_heic_converter": "Your web browser is outdated. Please update the latest version.",
132
+ "video_converter_title": "Install desktop version to enjoy more output formats and power edit functions.",
133
+ "watermark_remove_over_size": "The image you uploaded is over 10M. It is recommended that you use our Free Online Image Compressor. Click to <a class='jump-link' href='/free-image-compressor/'>learn more</a>",
134
+ "watermark_remove_file_type_error": "The file you uploaded is not a picture, please upload again.",
135
+ "watermark_remove_image_type_error": "The Image format is not supported. We only support JPG, JPEG, PNG and BMP. ",
136
+ "watermark_remove_upload_error": "Recognition error (error code: 2001), please try again...",
137
+ "watermark_remove_processing": "Processing image...",
138
+ "watermark_remove_not_save": "You haven't removed the selected watermark yet. Are you sure to crop the picture without removing the watermark? If so, the currently selected watermark area will not be saved.",
139
+ "watermark_remove_back_home": "Current status will not be saved. Are you sure you want to go back to Home?",
140
+ "watermark_remove_new_image": "Current status will not be saved. Are you sure you want to choose a new image?",
141
+ "watermark_select": "Select",
142
+ "watermark_select_area": "Please select the watermark area you want to erase before clicking Remove",
143
+ "image_enhancer_oversize": "The image you uploaded is over 10M. It is recommended that you use our Free Online Image Compressor. Click to <a class='jump-link' href='/free-image-compressor/'>learn more</a>",
144
+ "image_enhancer_overresolution": "The uploaded image is over 3000*3000px. Please choose another image and try again.",
145
+ "image_enhancer_processing": "Loading...",
146
+ "image_enhancer_maxsolution": "Images can be upscaled up to 3000*3000px. Continue to upload?",
147
+ "image_enhancer_maxsolution_alert": "Max Rez 4096x4096",
148
+ "image_enhancer_change": "Switch display of original image",
149
+ "image_enhancer_show": "Original picture",
150
+ "image_enhancer_output": "Output",
151
+ "image_enhancer_zoom": "Magnification",
152
+ "image_enhancer_close": "Close window",
153
+ "frequently": "You upload images too frequently, please try again later."
154
+ },
155
+ "jp": {
156
+ "launcher_step_1": ["Step", "まず", " ", "をダウンロードしてください。"],
157
+ "launcher_step_2": ["Step", "", "", "をダウンロードしたらインストールします。"],
158
+ "launcher_submit": "提出",
159
+ "launcher_no_file": "ファイルは検出されません",
160
+ "launcher_video_format": "動画形式",
161
+ "launcher_audio_format": "音声形式",
162
+ "launcher_install_guide": "インストール",
163
+ "launcher_feedback": "フィードバック",
164
+ "launcher_retry": "再試行",
165
+ "launcher_download": "ダウンロード",
166
+ "launcher_error_1010": "サービスは現在のブラウザまたはバージョンではサポートされていません (エラーコード: 1010). ブラウザをアップグレードするか、別のブラウザをお試し��ださい。",
167
+ "system_support": "このオンラインサービスは、コンピューターしか利用できません。 デスクトップブラウザを使用してアクセスしてください。",
168
+ "launching_agent": "ロード中…",
169
+ "launcher_error_1011": "通信が異常停止しました (エラーコード: 1011)。再試行するか、フィードバックを送信して問題を解決してください。",
170
+ "service_activated": "サービスが有効になりました!",
171
+ "service_closed": "サービスは停止されています!",
172
+ "launcher_proccess": "アップデート...",
173
+ "launcher_error_1001": "環境設定にエラーが発生しました (エラーコード: 1001)。ページを更新して再試行するか、フィードバックを送信して問題を解決してください。",
174
+ "launcher_error_1002": ["環境設定にエラーが発生しました (エラーコード: 1002)。ページを更新して再試行するか、フィードバックを送信して問題を解決してください。", "フィードバック"],
175
+ "launcher_error_1003": "ネットワーク接続エラー (エラーコード: 1003)。再試行するか、フィードバックを送信して問題を解決してください。",
176
+ "launcher_error_1000": "環境設定にエラーが発生しました (エラーコード: 1000)。ページを更新して再試行するか、フィードバックを送信して問題を解決してください。",
177
+ "launcher_error_1004": "設定に失敗しました (エラーコード: 1004)。「再試行」をクリックして再構成するか、フィードバックを送信して問題を解決できます。",
178
+ "launcher_updated": ["サービスが更新されました。「すぐ更新」をクリックしてダウンロードしてインストールしてください。", "すぐ更新"],
179
+ "launcher_launching": "サービスロード中...",
180
+ "launcher_error_1012": "メインプロセスサービスをロードできません (エラーコード: 1012)。「再試行」をクリックしてロードするか、フィードバックを送信して問題を解決できます。",
181
+ "launcher_error_1005": "環境設定にエラーが発生しました (エラーコード: 1005)。ページを更新して再試行するか、フィードバックを送信して問題を解決してください。",
182
+ "launcher_error_1007": "環境設定にエラーが発生しました (エラーコード: 1007)。ペã��¼ã‚¸ã‚’更新して再試行するか、フィードバックを送信して問題を解決してください。",
183
+ "launcher_error_1006": "環境設定にエラーが発生しました (エラーコード: 1006)。ページを更新して再試行するか、フィードバックを送信して問題を解決してください。",
184
+ "launcher_error_1008": "環境設定にエラーが発生しました(エラーコード: 1008)。ページを更新して再試行するか、フィードバックを送信して問題を解決してください。",
185
+ "feedback_zoon": ["ãŠå•ã„åˆã‚ã›ã„ãŸã ãã¾ã—ã¦ã€èª ã«ã‚ã‚ŠãŒã¨ã†å¾¡åº§ã„ã¾ã™ã€‚ ãŠé€ã‚Šã„ãŸã ãã¾ã—ãŸå†…å®¹ã‚’ç¢ºèªã•ã›ã¦é ‚ãã€ã”é€£çµ¡ã‚’è‡´ã—ã¾ã™ã®ã§ã€ã‚‚ã†ã—ã°ã‚‰ããŠå¾…ã¡ä¸‹ã•ã„ã¾ã›ã€‚", "メールアドレス:", "ご利用のメールアドレスを入力してください。", "ご意見・ご感想:", "製品へのご意見・ご感想をここに書いていただけると助かります。", "ありがとうございます。", "フィードバックは正常に送信されました。", "録画スタート", "意見をいただけましょうか"],
186
+ "launcher_feedbacktip": "メールを入力してください!",
187
+ "screen_recorder_feedback": ["無効なメールです!", "有効なメールを入力してください!", "コンテンツを入力してください!"],
188
+ "video_converter_convert": "変換",
189
+ "video_converter_add": "ãƒ•ã‚¡ã‚¤ãƒ«ã‚’è¿½åŠ ",
190
+ "video_converter_stop": "停止",
191
+ "video_converter_stop_info": "変換を終了しますか?",
192
+ "video_converter_complete": "変換しました!",
193
+ "video_converter_ok": "OK",
194
+ "video_converter_exit": "動画変換から退出しますか?",
195
+ "audio_converter_exit": "オーディオ変換から退出しますか?",
196
+ "video_converter_general_info": "è©³ç´°æƒ…å ±",
197
+ "video_converter_name_info": "ファイル名:",
198
+ "video_converter_format_info": "フォーマット:",
199
+ "video_converter_size_info": "サイズ:",
200
+ "video_converter_duration_info": "再生時間:",
201
+ "video_converter_video_stream_info": "å‹•ç”»æƒ…å ±",
202
+ "video_converter_encoder_info": "エンコーダー:",
203
+ "video_converter_video_bitrate_info": "動画ビットレート:",
204
+ "video_converter_resolution_info": "解像度:",
205
+ "video_converter_frame_rate_info": "フレームレート:",
206
+ "video_converter_audio_stream_info": "éŸ³å£°æƒ…å ±",
207
+ "video_converter_encoder_info": "エンコーダー:",
208
+ "video_converter_sample_rate_info": "サンプリングレート:",
209
+ "video_converter_channel_info": "チャンネル:",
210
+ "video_converter_audio_bitrate_info": "音声ビットレート:",
211
+ "video_converter_video_settings": "動画設定",
212
+ "video_converter_audio_settings": "音声設定",
213
+ "video_converter_audio_encoder_settings": "音声エンコーダー:",
214
+ "video_converter_video_encoder_settings": "動画エンコーダー:",
215
+ "video_converter_bitrate_settings": "ビットレート:",
216
+ "video_converter_default_settings": "デフォルト",
217
+ "video_converter_cancel_settings": "取り消し",
218
+ "video_converter_same": "オリジナル維持",
219
+ "video_compressor_exit": "動画圧縮から退出しますか?",
220
+ "video_joiner_exit": "動画結合から退出しますか?",
221
+ "video_joiner_comfirm_merge": "オーディオトラックのないビデオの結合はサポートされていません。 「OK」をクリックすると、オーディオトラックのないビデオが自動的に除外されます。デスクトップ版をダウンロードして、オーディオトラックのないビデオを結合しましょう。",
222
+ "video_joiner_format_video": "Videos with Sound track",
223
+ "video_joiner_format_audio": "Videos without Sound track",
224
+ "video_compressor_add": "ãƒ—ãƒ­ã‚°ãƒ©ãƒ ã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’è¿½åŠ ã—ã¾ã™",
225
+ "video_compressor_change_file": "ソースファイルを変更します",
226
+ "video_compressor_successfully": "圧縮しました",
227
+ "video_compressor_failed": "圧縮に失敗しました",
228
+ "video_compressor_yes": "はい",
229
+ "video_compressor_no": "いいえ",
230
+ "video_compressor_source": "Source",
231
+ "video_compressor_output": "Output",
232
+ "video_compressor_oversize": "è¿½åŠ ã•ã‚Œã‚‹å‹•ç”»ãƒ•ã‚¡ã‚¤ãƒ«ã®è§£åƒåº¦ã¯1920*1080を超えます。1920*1080解像度以上の動画ファイルを圧縮するには、ディスクトップ版をダウンロードしてください。",
233
+ "video_compressor_continue": "continue",
234
+ "video_compressor_desktop": "Download Desktop Version",
235
+ "video_compressor_replace": "今の動画ファイルを置き換えますか?",
236
+ "video_compressor_stop_compress": "圧縮プロせースを停止してもよろしいですか?",
237
+ "video_compressor_stop": "停止",
238
+ "video_joiner_stop": "結合を停止してもよろしいですか?",
239
+ "video_compressor_compress": "圧縮する",
240
+ "video_compressor_compressing": "圧縮中",
241
+ "video_compressor_reload": "ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ãŒç ´æã—ã¦ã„ã¾ã™ã€‚ 別のファイルを選択してください。",
242
+ "video_compressor_file_error": "ファイルをロードする中にエラーが発生しました。再試行してください。",
243
+ "video_compressor_desktop_download": "ディスクトップ版をインストール",
244
+ "video_joiner_merging": "ファイルを結合中",
245
+ "video_joiner_merge": "すぐ結合",
246
+ "video_joiner_join_failed": "結合に失敗しました",
247
+ "video_joiner_join_success": "成功に結合しました",
248
+ "video_joiner_insert": "すぐ挿入",
249
+ "video_joiner_to_merge": "ファイルã‚��è¿½åŠ ",
250
+ "video_joiner": "オンライン 動画結合",
251
+ "browser_support_image_compressor": "ブラウザバージョンは低く、写真を圧縮するためにアップデートしてください。",
252
+ "image_compressor_upload": "アップデート",
253
+ "image_compressor_finished": "完了",
254
+ "image_compressor_error": "エラー!",
255
+ "image_compressor_max-size": "5 MBを超えました",
256
+ "image_compressor_max_number": "今日最大40写真だけサポートします。",
257
+ "pdf_compressor_max_number": "今日10å†™çœŸã ã‘è¿½åŠ ã§ãã¾ã™ã€‚",
258
+ "image_compressor_failed": "失敗",
259
+ "heic_converter_max_size": "ファイルごとに最大5 MBã¾ã§è¿½åŠ ã§ãã¾ã™ã€‚",
260
+ "image_compressor_download": "ダウンロード",
261
+ "image_compressor_converting": "変換",
262
+ "image_compressor_delete": "削除",
263
+ "pdf_compressor_refreshing": "不明エラーです。再試行しましょうか?",
264
+ "pdf_compressor_try_again": "エラー! ページを更新してもう一度お試しください。",
265
+ "pdf_compressor_updata_error": "アップロードプロセスエラー",
266
+ "pdf_compressor_over_size": "ファイルサイズが大きすぎます",
267
+ "pdf_compressor__not_allowed": "この拡張子はサポートされていません",
268
+ "pdf_compressor_one_only": "1つのみアップロードできます",
269
+ "browser_support_pdf_compressor": "お使いのブラウザバージョンは低いです。 PDFファイルの圧縮をサポートするように更新してください。",
270
+ 'over_size_message': '画像のサイズは10Mを超えましたので、こちらは自動的にファイルを圧縮して再度ロードします。「確認」をタップして続けます',
271
+ 'file_type_error': 'ロードするファイルは画像ではありません!もう一度ロードしてください',
272
+ 'image_type_error': 'サポートしていない画像形式です。JPG;JPEG;PNG;GIFだけに対応しますので、この画像を自動的に形式変換します。「確認」をタップして続けます',
273
+ 'upload_error': 'ロードにエラーは起こします(エラーコード: 2000)、再試行してください……',
274
+ 'network_error': 'ネットワークエラーです(エラーコード: 2001)、再試行してください……',
275
+ 'recognition_error': '認識エラーです(エラーコード: 2002)、再試行してください……',
276
+ 'image_compress_fail': '画像のサイズが多すぎて、圧縮に失敗しました',
277
+ 'image_transfer_fail': '画像形式を変換に失敗しました。画像を変換しましょう',
278
+ 'original_image': 'オリジナル',
279
+ 'preview_image': 'プレビュー',
280
+ "browser_support_heic_converter": "ブラウザバージョンは低いです。最新のバージョンにアップデートしてください。",
281
+ "video_converter_title": "デスクトップバージョンをインストールして、より多くの出力フォーマットとパワー編集機能をお楽しみください。",
282
+ "watermark_remove_over_size": "ロードする画像のサイズは最大10Mです。今の画像は10Mを超えますので、弊社のオンライン画像圧縮ツールを使って画像のサイズを小さくにするのをおススメします。<a class='jump-link' href='/free-image-compressor/'>すぐ体験</a>",
283
+ "watermark_remove_file_type_error": "ロードされたファイルは画像ではなく、もう一度選択してロードしましょう!",
284
+ "watermark_remove_image_type_error": "今この画像をサポートしていません。サポート画像の形式は:JPG;JPEG;PNG;BMP",
285
+ "watermark_remove_upload_error": "識別エラー(エラーコード:2001)、再試行してください...",
286
+ "watermark_remove_processing": "画像の認識をする中",
287
+ "watermark_remove_not_save": "変更は保存されません。トリミングしますか?",
288
+ "watermark_remove_back_home": "変更は保存されません。トップページに戻りますか?",
289
+ "watermark_remove_new_image": "変更は保存されません。新しい画像を選択しますか?",
290
+ "watermark_select": "選択してください",
291
+ "watermark_select_area": "処理したい範囲を選択してください",
292
+ "image_enhancer_oversize": "您ロードする画像のサイズは最大10Mです。今の画像は10Mを超えますので、弊社のオンライン画像圧縮ツールを使って画像のサイズを小さくにするのをおススメします。<a class='jump-link' href='/free-image-compressor/'>すぐ体験</a>",
293
+ "image_enhancer_overresolution": "画像は3000px*3000pxを超えますので、 画像を再度選択してロードしましょう。",
294
+ "image_enhancer_maxsolution": "画像のプレビューは3000x3000pxまで拡大できます。3000x3000px以下のサイズに縮小します。",
295
+ "image_enhancer_maxsolution_alert": "画像のプレビューは3000x3000pxまで拡大できます。3000x3000px以下のサイズに縮小します。",
296
+ "image_enhancer_processing": "ロード中...",
297
+ "image_enhancer_change": "オリジナルに切り替え",
298
+ "image_enhancer_show": "オリジナル",
299
+ "image_enhancer_output": "出力",
300
+ "image_enhancer_zoom": "拡大倍数",
301
+ "image_enhancer_close": "閉じる",
302
+ },
303
+ "fr": {
304
+ "launcher_step_1": ["Étape", "Veuillez d'abord", "", "."],
305
+ "launcher_step_2": ["Étape", "Installez", "", "après téléchargement"],
306
+ "launcher_submit": "Soumettre",
307
+ "launcher_no_file": "Aucun fichier sélectionné!",
308
+ "launcher_video_format": "Format Vidéo",
309
+ "launcher_audio_format": "Format Audio",
310
+ "launcher_install_guide": "Installez",
311
+ "launcher_feedback": "Commentaire",
312
+ "launcher_retry": "Réessayer",
313
+ "launcher_download": "Télécharger",
314
+ "launcher_error_1010": "Ce service n\'est pas pris en charge par le navigateur ou la version actuelle (code d\'erreur: 1010). Veuillez mettre à niveau votre navigateur ou essayer un autre navigateur.",
315
+ "system_support": "Ce service en ligne n\'est disponible que sur ordinateur. Veuillez utiliser un navigateur de bureau pour y accéder.",
316
+ "launching_agent": "Lancement…",
317
+ "launcher_error_1011": "La communication est anormalement interrompue (code d\'erreur: 1011). Veullez cliquer sur Réessayer, ou nous envoyer des commentaires pour résoudre le problème.",
318
+ "service_activated": "Le service est activé!",
319
+ "service_closed": "Le service est fermé!",
320
+ "launcher_proccess": "Mise à jour...",
321
+ "launcher_error_1001": "Une exception s\'est produite lors de la configuration de l\'environnement (code d\'erreur: 1001). Veuillez actualiser la page pour réessayer ou nous envoyer vos commentaires pour résoudre le problème.",
322
+ "launcher_error_1002": "Une exception s\'est produite lors de la configuration de l\'environnement (code d\'erreur: 1002). Veuillez actualiser la page pour réessayer ou nous envoyer vos commentaires pour résoudre le problème.",
323
+ "launcher_error_1003": "Connexion réseau instable (code d\'erreur: 1003). Veuillez cliquer sur Réessayer, ou nous envoyer vos commentaires pour résoudre le problème.",
324
+ "launcher_error_1000": "Une exception s\'est produite lors de la configuration de l\'environnement (code d\'erreur: 1000). Veuillez actualiser la page pour réessayer ou nous envoyer vos commentaires pour résoudre le problème.",
325
+ "launcher_error_1004": "Échec de la configuration (code d\'erreur: 1004). Veuillez cliquer sur Réessayer, ou nous envoyer vos commentaires pour résoudre le problème.",
326
+ "launcher_updated": ["Le service est mis à jour, veuillez cliquer sur Mettre à jour pour le télécharger et installer.", "Mettre à jour"],
327
+ "launcher_launching": "Lancement du service ...",
328
+ "launcher_error_1012": "Échec du chargement du service de processus principal (code d\'erreur: 1012). Cliquez sur Réessayer, ou nous envoyer des commentaires pour résoudre le problème.",
329
+ "launcher_error_1005": "Une exception s\'est produite lors de la configuration de l\'environnement (code d\'erreur: 1005). Veuillez actualiser la page pour réessayer ou nous envoyer vos commentaires pour résoudre le problème.",
330
+ "launcher_error_1007": "Une exception s\'est produite lors de la configuration de l\'environnement (code d\'erreur: 1007). Veuillez actualiser la page pour réessayer ou nous envoyer vos commentaires pour résoudre le problème.",
331
+ "launcher_error_1006": "Une exception s\'est produite lors de la configuration de l\'environnement (code d\'erreur: 1006). Veuillez actualiser la page pour réessayer ou nous envoyer vos commentaires pour résoudre le problème.",
332
+ "launcher_error_1008": "Une exception s\'est produite lors de la configuration de l\'environnement (code d\'erreur: 1008). Veuillez actualiser la page pour réessayer ou nous envoyer vos commentaires pour résoudre le problème.",
333
+ "feedback_zoon": ["Merci pour vos commentaires. Veuillez entrer votre problème et nous vous répondrons dans les 24 heures.", "E-mail:", "Entrez votre e-mail ici!", "Contenu:", "Laissez ici votre problème ou suggestion que vous avez rencontré.", "Merci!", "Vos commentaires ont été soumis avec succès.", "Commencer l\'enregistrement", "Laissez vos commentaires"],
334
+ "launcher_feedbacktip": "Entrez votre e-mail ici!",
335
+ "screen_recorder_feedback": ["L\'e-mail est invalide!", "Veuillez entrer un e-mail valide!", "Veuillez entrer le contenu!"],
336
+ "video_converter_convert": "Convertir",
337
+ "video_converter_add": "Ajouter un fichier",
338
+ "video_converter_stop": "Arrêter",
339
+ "video_converter_stop_info": "Êtes-vous sûr d'arrêter la conversion?",
340
+ "video_converter_complete": "Conversion terminée!",
341
+ "video_converter_ok": "OK",
342
+ "video_converter_exit": "Êtes-vous sûr de quitter Convertisseur Vidéo?",
343
+ "audio_converter_exit": "Êtes-vous sûr de quitter Convertisseur Audio?",
344
+ "video_converter_general_info": "Info Générale",
345
+ "video_converter_name_info": "Nom:",
346
+ "video_converter_format_info": "Format:",
347
+ "video_converter_size_info": "Taille:",
348
+ "video_converter_duration_info": "Durée:",
349
+ "video_converter_video_stream_info": "Vidéo",
350
+ "video_converter_encoder_info": "Encodeur:",
351
+ "video_converter_video_bitrate_info": "Bitrate Vidéo:",
352
+ "video_converter_resolution_info": "Résolution:",
353
+ "video_converter_frame_rate_info": "Cadence de Diffusion:",
354
+ "video_converter_audio_stream_info": "Audio",
355
+ "video_converter_encoder_info": "Encodeur:",
356
+ "video_converter_sample_rate_info": "Échantillonnage:",
357
+ "video_converter_channel_info": "Canal:",
358
+ "video_converter_audio_bitrate_info": "Bitrate Audio:",
359
+ "video_converter_video_settings": "Paramètres Vidéo",
360
+ "video_converter_audio_settings": "Paramètres Audio",
361
+ "video_converter_audio_encoder_settings": "Encodeur Audio:",
362
+ "video_converter_video_encoder_settings": "Encodeur Vidéo:",
363
+ "video_converter_bitrate_settings": "Bitrate Audio:",
364
+ "video_converter_default_settings": "Par défaut",
365
+ "video_converter_cancel_settings": "Annuler",
366
+ "video_converter_same": "Même que la source",
367
+ "video_compressor_exit": "Êtes-vous sûr de quitter Compresseur Vidéo?",
368
+ "video_joiner_exit": "Êtes-vous sûr de quitter Fusionneur Vidéo?",
369
+ "video_joiner_comfirm_merge": "Nous ne prenons pas en charge la fusion de vidéos sans pistes audio. Après avoir cliqué sur \"OK\", nous filtrerons automatiquement les vidéos sans pistes audio pour vous, vous pouvez également télécharger la version de bureau pour fusionner des vidéos sans pistes audio.",
370
+ "video_joiner_format_video": "Videos with Sound track",
371
+ "video_joiner_format_audio": "Videos without Sound track",
372
+ "video_compressor_add": "Ajouter Fichier(s) Ã Compresser",
373
+ "video_compressor_change_file": "Changer le fichier source",
374
+ "video_compressor_successfully": "Compression réussie!",
375
+ "video_compressor_failed": "La compression a échoué!",
376
+ "video_compressor_yes": "Oui",
377
+ "video_compressor_no": "Non",
378
+ "video_compressor_source": "Source",
379
+ "video_compressor_output": "Sortie",
380
+ "video_compressor_oversize": "La résolution de la vidéo ajoutée dépasse 1920*1080. La compression en ligne prend en charge la vidéo de résolution maximale de 1920*1080. Si vous souhaitez compresser une vidéo de résolution supérieure, veuillez télécharger la version de bureau.",
381
+ "video_compressor_continue": "continue",
382
+ "video_compressor_desktop": "Installer la Version de Bureau",
383
+ "video_compressor_replace": "Êtes-vous sûr de remplacer la vidéo actuelle pour compresser d'autres vidéos?",
384
+ "video_compressor_stop_compress": "Êtes-vous sûr d'arrêter le progrès de compression?",
385
+ "video_compressor_stop": "Arrêter",
386
+ "video_joiner_stop": "Voulez-vous vraiment arrêter la fusion?",
387
+ "video_compressor_compress": "Compresser",
388
+ "video_compressor_compressing": "Compression",
389
+ "video_compressor_reload": "Le fichier que vous avez chargé est endommagé. Veuillez sélectionner un autre fichier à uploader.",
390
+ "video_compressor_file_error": "Une erreur s'est produite lors de la lecture du fichier chargé. Veuillez en choisir un autre.",
391
+ "video_compressor_desktop_download": "Installer la Version de Bureau",
392
+ "video_joiner_merging": "Fusionner des vidéos",
393
+ "video_joiner_merge": "Fusionner maintenant",
394
+ "video_joiner_join_failed": "La fusion a échoué",
395
+ "video_joiner_join_success": "Fusionné avec succès",
396
+ "video_joiner_insert": "Insérer un nouveau",
397
+ "video_joiner_to_merge": "Ajouter Fichier(s) Ã Fusionner",
398
+ "video_joiner": "Fusionneur Vidéo en Ligne Gratuit",
399
+ "browser_support_image_compressor": "Votre navigateur est trop ancien. Veuillez le mettre à jour pour continuer la compression de photo.",
400
+ "image_compressor_upload": "Importer",
401
+ "image_compressor_finished": "Terminé",
402
+ "image_compressor_error": "Erreur!",
403
+ "image_compressor_max-size": "La taille est supérieure à 5 Mo",
404
+ "image_compressor_max_number": "Vous ne pouvez charger que 40 images aujourd'hui.",
405
+ "pdf_compressor_max_number": "Vous ne pouvez ajouter que 10 fichiers aujourd'hui.",
406
+ "image_compressor_failed": "Échec",
407
+ "heic_converter_max_size": "Vous ne pouvez ajouter que 5 Mo par fichier.",
408
+ "image_compressor_download": "Télécharger",
409
+ "image_compressor_converting": "Conversion",
410
+ "image_compressor_delete": "Supprimer",
411
+ "pdf_compressor_refreshing": "Il y a peut-être une erreur, essayez d'actualiser la page?",
412
+ "pdf_compressor_try_again": "Erreur! Veuillez actualiser la page et réessayer.",
413
+ "pdf_compressor_updata_error": "Erreur de processus d'upload",
414
+ "pdf_compressor_over_size": "Taille de fichier trop grande",
415
+ "pdf_compressor__not_allowed": "Cette extension n'est pas autorisée",
416
+ "pdf_compressor_one_only": "Ne peut en uploader qu'un",
417
+ "browser_support_pdf_compressor": "Votre navigateur est trop ancien. Veuillez le mettre à jour pour continuer la compression des fichiers PDF.",
418
+ 'over_size_message': 'La taille de l\'image que vous avez chargée dépasse 10 Mo, nous allons compresser votre fichier avant en charger, cliquez sur "OK" pour continuer',
419
+ 'file_type_error': 'Le fichier que vous avez chargé n\'est pas une image! Veuillez sélectionner une image à nouveau',
420
+ 'image_type_error': 'Le format d\'image que vous chargez n\'est pas pris en charge pour le moment. Les formats d\'image pris en charge incluent JPG; JPEG; PNG; GIF. Nous allons faire la conversion de votre fichier avant de l\'uploader. Cliquez sur "OK" pour continuer.',
421
+ 'upload_error': 'Erreur de chargement (code d\'erreur: 2000), veuillez réessayer...',
422
+ 'network_error': 'Le réseau est anormal (code d\'erreur: 2001), veuillez réessayer...',
423
+ 'recognition_error': 'Erreur de reconnaissance (code d\'erreur: 2002), veuillez réessayer...',
424
+ 'image_compress_fail': 'L\'image est trop grande, la compression a échoué',
425
+ 'image_transfer_fail': 'La conversion du format d\'image a échoué, veuillez remplacer l\'image',
426
+ 'original_image': 'Originale',
427
+ 'preview_image': 'Aperçu',
428
+ "browser_support_heic_converter": "Votre navigateur Web est obsolète. Veuillez mettre à jour à la dernière version.",
429
+ "video_converter_title": "Installer la version de bureau pour profiter de plus de formats de sortie et de fonctions d'édition de puissance.",
430
+ },
431
+ "de": {
432
+ "launcher_step_1": ["Schritt", "", "Sie bitte zuerst den ", "."],
433
+ "launcher_step_2": ["Schritt", "Installieren", "Sie bitte nach dem Download den ", ""],
434
+ "launcher_submit": "Senden",
435
+ "launcher_no_file": "Keine Datei ausgewählt!",
436
+ "launcher_video_format": "Video Format",
437
+ "launcher_audio_format": "Audio Format",
438
+ "launcher_install_guide": "Installieren",
439
+ "launcher_feedback": "Feedback",
440
+ "launcher_retry": "Wiederholen",
441
+ "launcher_download": "Downloaden",
442
+ "launcher_error_1010": "Dieser Dienst wird vom aktuellen Browser oder der aktuellen Version nicht unterstützt (Fehlercode: 1010). Aktualisieren Sie bitte Ihren Browser oder versuchen Sie einen anderen Browser.",
443
+ "system_support": "Dieser Online-Dienst ist nur auf dem Computer verfügbar. Verwenden Sie bitte für den Zugriff einen Desktop-Browser.",
444
+ "launching_agent": "Wird gestartet…",
445
+ "launcher_error_1011": "Kommunikation ist abnormal gestört (Fehlercode: 1011). Klicken Sie auf Wiederholen, um es erneut zu versuchen, oder Sie können uns Feedback zur Lösung des Problems senden.",
446
+ "service_activated": "Dienst aktiviert!",
447
+ "service_closed": "Dienst deaktiviert!",
448
+ "launcher_proccess": "Wird aktualisiert...",
449
+ "launcher_error_1001": "Während der Umgebungskonfiguration ist eine Ausnahme aufgetreten (Fehlercode: 1001). Aktualisieren Sie bitte die Seite, um es erneut zu versuchen, oder geben Sie uns Feedback, um das Problem zu lösen.",
450
+ "launcher_error_1002": "Während der Umgebungskonfiguration ist eine Ausnahme aufgetreten (Fehlercode: 1002). Aktualisieren Sie bitte die Seite, um es erneut zu versuchen, oder geben Sie uns Feedback, um das Problem zu lösen.",
451
+ "launcher_error_1003": "Instabile Netzwerkverbindung (Fehlercode: 1003). Klicken Sie auf Wiederholen, um es erneut zu versuchen, oder Sie können uns Feedback zur Lösung des Problems senden.",
452
+ "launcher_error_1000": "Während der Umgebungskonfiguration ist eine Ausnahme aufgetreten (Fehlercode: 1000). Aktualisieren Sie bitte die Seite, um es erneut zu versuchen, oder geben Sie uns Feedback, um das Problem zu lösen.",
453
+ "launcher_error_1004": "Konfiguration fehlgeschlagen (Fehlercode: 1004). Klicken Sie auf Wiederholen, um es erneut zu konfigurieren, oder senden Sie uns Feedback, um das Problem zu lösen.",
454
+ "launcher_updated": ["Der Dienst ist aktualisiert, klicken Sie bitte auf Jetzt aktualisieren, um ihn herunterzuladen und zu installieren.", "Jetzt aktualisieren"],
455
+ "launcher_launching": "Dienst wird gestartet...",
456
+ "launcher_error_1012": "Der Hauptprozessdienst konnte nicht geladen werden (Fehlercode: 1012). Klicken Sie auf Wiederholen, um erneut zu laden, oder senden Sie uns eine Rückmeldung, um das Problem zu lösen.",
457
+ "launcher_error_1005": "Während der Umgebungskonfiguration ist eine Ausnahme aufgetreten (Fehlercode: 1005). Aktualisieren Sie bitte die Seite, um es erneut zu versuchen, oder geben Sie uns Feedback, um das Problem zu lösen.",
458
+ "launcher_error_1007": "Während der Umgebungskonfiguration ist eine Ausnahme aufgetreten (Fehlercode: 1007). Aktualisieren Sie bitte die Seite, um es erneut zu versuchen, oder geben Sie uns Feedback, um das Problem zu lösen.",
459
+ "launcher_error_1006": "Während der Umgebungskonfiguration ist eine Ausnahme aufgetreten (Fehlercode: 1006). Aktualisieren Sie bitte die Seite, um es erneut zu versuchen, oder geben Sie uns Feedback, um das Problem zu lösen.",
460
+ "launcher_error_1008": "Während der Umgebungskonfiguration ist eine Ausnahme aufgetreten (Fehlercode: 1008). Aktualisieren Sie bitte die Seite, um es erneut zu versuchen, oder geben Sie uns Feedback, um das Problem zu lösen.",
461
+ "feedback_zoon": ["Vielen Dank für Ihr Feedback. Senden Sie uns bitte Ihr Problem und wir werden Sie innerhalb von 24 Stunden antworten.", "Email:", "Geben Sie bitte hier Ihre E-Mail-Adresse ein!", "Contents:", "Geben Sie bitte hier Ihre Probleme oder Vorschläge ein!", "Vielen Dank!", "Ihr Feedback wurde erfolgreich gesendet.", "Aufnahme starten", "Ihre Kommentare schreiben"],
462
+ "launcher_feedbacktip": "Geben Sie bitte hier Ihre E-Mail-Adresse ein!",
463
+ "screen_recorder_feedback": ["Keine E-Mail-Adresse!", "Geben Sie bitte eine gültige E-Mail-Adresse ein!", "Geben Sie bitte den Inhalt ein!"],
464
+ "video_converter_convert": "Konvertieren",
465
+ "video_converter_add": "Datei hinzufügen",
466
+ "video_converter_stop": "Stoppen",
467
+ "video_converter_stop_info": "Möchten Sie die Konvertierung wirklich beenden?",
468
+ "video_converter_complete": "Erfolgreich umgewandelt!",
469
+ "video_converter_ok": "OK",
470
+ "video_converter_exit": "Möchten Sie Video Converter wirklich beenden?",
471
+ "audio_converter_exit": "Möchten Sie Audio Converter wirklich beenden?",
472
+ "video_converter_general_info": "Allgemeine Informationen",
473
+ "video_converter_name_info": "Name:",
474
+ "video_converter_format_info": "Format:",
475
+ "video_converter_size_info": "Größe:",
476
+ "video_converter_duration_info": "Dauer:",
477
+ "video_converter_video_stream_info": "Video-Stream",
478
+ "video_converter_encoder_info": "Encoder:",
479
+ "video_converter_video_bitrate_info": "Video-Bitrate:",
480
+ "video_converter_resolution_info": "Auflösung:",
481
+ "video_converter_frame_rate_info": "Bildfrequenz:",
482
+ "video_converter_audio_stream_info": "Audio-Stream",
483
+ "video_converter_encoder_info": "Encoder:",
484
+ "video_converter_sample_rate_info": "Abtastrate:",
485
+ "video_converter_channel_info": "Kanal:",
486
+ "video_converter_audio_bitrate_info": "Audio-Bitrate:",
487
+ "video_converter_video_settings": "Video-Einstellungen",
488
+ "video_converter_audio_settings": "Audio-Einstellungen",
489
+ "video_converter_audio_encoder_settings": "Encoder:",
490
+ "video_converter_video_encoder_settings": "Video Encoder:",
491
+ "video_converter_bitrate_settings": "Bitrate:",
492
+ "video_converter_default_settings": "Zurücksetzen",
493
+ "video_converter_cancel_settings": "Stornieren",
494
+ "video_converter_same": "Gleich wie die Quelle",
495
+ "video_compressor_exit": "Möchten Sie den Video Compressor beenden?",
496
+ "video_joiner_exit": "Möchten Sie den Video merger wirklich verlassen?",
497
+ "video_joiner_comfirm_merge": "Das Zusammenführen von Videos ohne Audiospuren wird nicht unterstützt. Nachdem Sie auf \"OK\" geklickt haben, filtern wir automatisch Videos ohne Audiospuren für Sie heraus. Sie können auch die Desktop-Version herunterladen, um Videos ohne Audiospuren zusammenzuführen.",
498
+ "video_joiner_format_video": "Videos with Sound track",
499
+ "video_joiner_format_audio": "Videos without Sound track",
500
+ "video_compressor_add": "Dateien hinzufügen",
501
+ "video_compressor_change_file": "Originale Datei ändern",
502
+ "video_compressor_successfully": "Komprimierung abgeschlossen!",
503
+ "video_compressor_failed": "Komprimierung fehlgeschlagen!",
504
+ "video_compressor_yes": "Ja",
505
+ "video_compressor_no": "Nein",
506
+ "video_compressor_source": "Quelle",
507
+ "video_compressor_output": "Ausgabe",
508
+ "video_compressor_oversize": "Die Auflösung des hinzugefügten Videos überschreitet 1920x1080. Aber der Online Video Compressor unterstützt eine maximale Auflösung von 1920x1080. Wenn Sie eine größere Auflösung komprimieren möchten, laden Sie bitte die Desktop-Version herunter.",
509
+ "video_compressor_continue": "continue",
510
+ "video_compressor_desktop": "Download Desktop Version",
511
+ "video_compressor_replace": "Möchten Sie das aktuelle Video von einem anderen ersetzen?",
512
+ "video_compressor_stop_compress": "Möchten Sie den Komprimierungsvorgang beenden?",
513
+ "video_compressor_stop": "Konvertiert",
514
+ "video_joiner_stop": "Möchten Sie die Zusammenführung wirklich beenden?",
515
+ "video_compressor_compress": "Komprimieren",
516
+ "video_compressor_compressing": "Wird komprimiert",
517
+ "video_compressor_reload": "Die hinzugefügte Datei ist beschädigt. Wählen Sie bitte eine andere.",
518
+ "video_compressor_file_error": "Beim Lesen der Datei ist ein Fehler aufgetreten. Bitte versuchen Sie es mit einer anderen.",
519
+ "video_compressor_desktop_download": "Desktop-Version installieren",
520
+ "video_joiner_merging": "Videos werden zusammengefügt",
521
+ "video_joiner_merge": "zusammenfügen",
522
+ "video_joiner_join_failed": "Zusammenfügen fehlgeschlagen",
523
+ "video_joiner_join_success": "Zusammenfügen erfolgreich",
524
+ "video_joiner_insert": "Neu einfügen",
525
+ "video_joiner_to_merge": "Dateien hinzufügen",
526
+ "video_joiner": "Online Video Joiner",
527
+ "browser_support_image_compressor": "Ihr Browser ist zu alt. Aktualisieren Sie bitte den Browser, um Ihr Bild zu komprimieren.",
528
+ "image_compressor_upload": "Hochladen",
529
+ "image_compressor_finished": "Abgeschlossen",
530
+ "image_compressor_error": "Fehler!",
531
+ "image_compressor_max-size": "Größe über 5 MB",
532
+ "image_compressor_max_number": "Heute können Sie nur 40 Bilder hochladen",
533
+ "pdf_compressor_max_number": "Heute können Sie maximal von 10 Dateien hinzufügen.",
534
+ "image_compressor_failed": "Fehlgeschlagen",
535
+ "heic_converter_max_size": "Jede Datei sollte nicht über 5 MB sein.",
536
+ "image_compressor_download": "Downloaden",
537
+ "image_compressor_converting": "Wird konvertiert",
538
+ "image_compressor_delete": "Löschen",
539
+ "pdf_compressor_refreshing": "Vielleicht ist ein Fehler aufgetreten, möchten Sie erneut versuchen?",
540
+ "pdf_compressor_try_again": "Fehler! Aktualisieren Sie die Seite und versuchen Sie es bitte erneut.",
541
+ "pdf_compressor_updata_error": "Fehler beim Hochladen",
542
+ "pdf_compressor_over_size": "Dateigröße zu groß",
543
+ "pdf_compressor__not_allowed": "Diese Erweiterung ist nicht erlaubt",
544
+ "pdf_compressor_one_only": "Nur eine Datei kann hochgeladen werden",
545
+ "browser_support_pdf_compressor": "Ihr Browser ist zu alt. Aktualisieren Sie bitte den Browser, um PDF-Dateien zu komprimieren.",
546
+ 'over_size_message': 'Wenn die Größe Ihres hochgeladenen Bildes mehr als 10M beträgt, komprimieren wir Ihre Datei und laden sie hoch. Klicken Sie auf "OK", Sie können sie weiterhin hochladen',
547
+ 'file_type_error': 'Die von Ihnen hochgeladene Datei ist kein Bild! Bitte erneut hochladen',
548
+ 'image_type_error': 'Das Bildformat wird nicht unterstützt. Unterstützte Formate sind JPG, JPEG, PNG, GIF. Wir werden Ihr Bildformat nach der Umwandlung erkennen. Klicken Sie auf "OK", um mit dem Hochladen fortzufahren',
549
+ 'upload_error': 'Fehler beim Hochladen (Fehlercode: 2000), versuchen Sie bitte erneut...',
550
+ 'network_error': ' Netzwerkfehler (Fehlercode: 2001), versuchen Sie bitte erneut...',
551
+ 'recognition_error': 'Fehler beim Erkennen (Fehlercode: 2002), versuchen Sie bitte erneut...',
552
+ 'image_compress_fail': 'Datei zu groß, Fehler bei der komprimierung',
553
+ 'image_transfer_fail': 'Bildumwandlung fehlgeschlagen, ändern Sie bitte das Bild',
554
+ 'original_image': 'Original',
555
+ 'preview_image': 'Vorschau',
556
+ "browser_support_heic_converter": "Ihr Webbrowser ist veraltet. Aktualisieren Sie den bitte auf die neueste Version.",
557
+ "video_converter_title": "Installieren Sie die Desktop-Version, um mehr Funktionen zu genießen.",
558
+ },
559
+ "zh_CN": {
560
+ 'over_size_message': 'æ‚¨æ‰€ä¸Šä¼ çš„å›¾ç‰‡å¤§å°è¶…è¿‡10Mï¼Œæˆ‘ä»¬å°†ä¼šå¯¹æ‚¨çš„æ–‡ä»¶è¿›è¡Œç®€å•åŽ‹ç¼©åŽè¿›è¡Œä¸Šä¼ å¤„ç†ï¼Œç‚¹å‡»â€œç¡®å®šâ€å¯ç»§ç»­ä¸Šä¼ ',
561
+ 'file_type_error': 'æ‚¨ä¸Šä¼ çš„æ–‡ä»¶ä¸æ˜¯å›¾ç‰‡ï¼è¯·é‡æ–°ä¸Šä¼ ',
562
+ 'image_type_error': 'æš‚ä¸æ”¯æŒæ‚¨ä¸Šä¼ çš„å›¾ç‰‡æ ¼å¼ï¼Œæˆ‘ä»¬æ”¯æŒçš„å›¾ç‰‡æ ¼å¼æœ‰JPGï¼›JPEGï¼›PNGï¼›GIFï¼Œæˆ‘ä»¬å°†å¯¹æ‚¨çš„å›¾ç‰‡æ ¼å¼è¿›è¡Œè½¬æ¢åŽè¯†åˆ«å¤„ç†ï¼Œç‚¹å‡»â€œç¡®å®šâ€å¯ç»§ç»­ä¸Šä¼ ',
563
+ 'upload_error': 'ä¸Šä¼ å¼‚å¸¸ï¼ˆé”™è¯¯ç ï¼š2000),请重试……',
564
+ 'network_error': 'ç½‘ç»œå¼‚å¸¸ï¼ˆé”™è¯¯ç ï¼š2001),请重试……',
565
+ 'recognition_error': 'è¯†åˆ«å¼‚å¸¸ï¼ˆé”™è¯¯ç ï¼š2002),请重试……',
566
+ 'image_compress_fail': '图片过大,压缩失败',
567
+ 'image_transfer_fail': 'å›¾ç‰‡æ ¼å¼è½¬åŒ–å¤±è´¥ï¼Œè¯·æ›´æ¢å›¾ç‰‡',
568
+ 'original_image': '原图',
569
+ 'preview_image': '预览',
570
+ "launcher_step_1": ["Step", "Please", " ", " first."],
571
+ "launcher_step_2": ["Step", "Install", "", "after downloading."],
572
+ "launcher_submit": "Submit",
573
+ "launcher_no_file": "No File Selected!",
574
+ "launcher_video_format": "Video Format",
575
+ "launcher_audio_format": "Audio Format",
576
+ "launcher_install_guide": "Install",
577
+ "launcher_feedback": "Feedback",
578
+ "launcher_retry": "Retry",
579
+ "launcher_download": "Download Launcher",
580
+ "launcher_error_1010": "This service is not supported by the current browser or version (error code: 1010). Please upgrade your browser or try a different browser.",
581
+ "system_support": "This online service is only available on the computer. Please use desktop browser to access.",
582
+ "launching_agent": "Launching…",
583
+ "launcher_error_1011": "Communication is abnormally down (error code: 1011). Click Retry to try again, or you can send us feedback to solve the problem.",
584
+ "service_activated": "Service activated!",
585
+ "service_closed": "Service is closed!",
586
+ "launcher_proccess": "Updating...",
587
+ "launcher_error_1001": "An exception occurred during environment configuration (error code: 1001). Please refresh the page to try again, or give us feedback to resolve the issue.",
588
+ "launcher_error_1002": "An exception occurred during environment configuration (error code: 1002). Please refresh the page to try again, or give us feedback to resolve the issue.",
589
+ "launcher_error_1003": "Unstable network connection (error code: 1003). Click Retry to try again, or you can send us feedback to solve the problem.",
590
+ "launcher_error_1000": "An exception occurred during environment configuration (error code: 1000). Please refresh the page to try again, or give us feedback to resolve the issue.",
591
+ "launcher_error_1004": "Configuration failed (error code: 1004). Click Retry to reconfigure, or you can send us feedback to solve the problem.",
592
+ "launcher_updated": ["The service is updated, please click Update Now to download and install.", "Update Now"],
593
+ "launcher_launching": "Launching service...",
594
+ "launcher_error_1012": "The main process service failed to load (error code: 1012). Click Retry to reload, or you can send us feedback to solve the problem.",
595
+ "launcher_error_1005": "An exception occurred during environment configuration (error code: 1005). Please refresh the page to try again, or give us feedback to resolve the issue.",
596
+ "launcher_error_1007": "An exception occurred during environment configuration (error code: 1007). Please refresh the page to try again, or give us feedback to resolve the issue.",
597
+ "launcher_error_1006": "An exception occurred during environment configuration (error code: 1006). Please refresh the page to try again, or give us feedback to resolve the issue.",
598
+ "launcher_error_1008": "An exception occurred during environment configuration (error code: 1008). Please refresh the page to try again, or give us feedback to resolve the issue.",
599
+ "feedback_zoon": ["Thanks for your feedback. Please leave your problem and we will respond to you within 24 hours.", "Email:", "Enter your email here!", "Contents:", "Leave any problem or suggestion you encountered here.", "Thank You!", "Your Feedback has been submitted successfully.", "Start Recording", "Leave Your Comment"],
600
+ "launcher_feedbacktip": "Enter your email here!",
601
+ "screen_recorder_feedback": ["Email is empty!", "Please enter a valid email!", "Please Enter Content!"],
602
+ "video_converter_convert": "Convert",
603
+ "video_converter_add": "Add File",
604
+ "video_converter_stop": "Stop",
605
+ "video_converter_stop_info": "Are you sure to stop converting?",
606
+ "video_converter_complete": "Conversion complete!",
607
+ "video_converter_ok": "OK",
608
+ "video_converter_exit": "Are you sure you want to exit Video Converter?",
609
+ "audio_converter_exit": "Are you sure you want to exit Audio Converter?",
610
+ "video_converter_general_info": "General Info",
611
+ "video_converter_name_info": "Name:",
612
+ "video_converter_format_info": "Format:",
613
+ "video_converter_size_info": "Size:",
614
+ "video_converter_duration_info": "Duration:",
615
+ "video_converter_video_stream_info": "Video Stream",
616
+ "video_converter_encoder_info": "Encoder:",
617
+ "video_converter_video_bitrate_info": "Video Bitrate:",
618
+ "video_converter_resolution_info": "Resolution:",
619
+ "video_converter_frame_rate_info": "Frame Rate:",
620
+ "video_converter_audio_stream_info": "Audio Stream",
621
+ "video_converter_encoder_info": "Encoder:",
622
+ "video_converter_sample_rate_info": "Sample Rate:",
623
+ "video_converter_channel_info": "Channel:",
624
+ "video_converter_audio_bitrate_info": "Audio Bitrate:",
625
+ "video_converter_video_settings": "Video Settings",
626
+ "video_converter_audio_settings": "Audio Settings",
627
+ "video_converter_audio_encoder_settings": "Audio Encoder:",
628
+ "video_converter_video_encoder_settings": "Video Encoder:",
629
+ "video_converter_bitrate_settings": "Bitrate:",
630
+ "video_converter_default_settings": "Default",
631
+ "video_converter_cancel_settings": "Cancel",
632
+ "video_converter_same": "Same as resource",
633
+ "video_compressor_exit": "Are you sure you want to exit Video Compress?",
634
+ "video_joiner_exit": "Are you sure you want to exit Video merger?",
635
+ "video_joiner_comfirm_merge": "æˆ‘ä»¬ä¸æ”¯æŒåˆå¹¶æ— éŸ³è½¨è§†é¢‘ã€‚ç‚¹å‡»â€œOKâ€ä¹‹åŽæˆ‘ä»¬å°†è‡ªåŠ¨ä¸ºæ‚¨è¿‡æ»¤æŽ‰æ— éŸ³è½¨è§†é¢‘ï¼Œæ‚¨ä¹Ÿå¯ä»¥ä¸‹è½½æ¡Œé¢ç«¯å¯¹æ— éŸ³è½¨è§†é¢‘è¿›è¡Œåˆå¹¶ã€‚",
636
+ "video_joiner_format_video": "有音轨的视频",
637
+ "video_joiner_format_audio": "æ— éŸ³è½¨çš„è§†é¢‘",
638
+ "video_compressor_add": "Add Files to Compress",
639
+ "video_compressor_change_file": "Change Source File",
640
+ "video_compressor_successfully": "Compression successfully!",
641
+ "video_compressor_failed": "Compression failed, please retry!",
642
+ "video_compressor_yes": "Yes",
643
+ "video_compressor_no": "No",
644
+ "video_compressor_source": "Source",
645
+ "video_compressor_output": "Output",
646
+ "video_compressor_oversize": "The uploaded video resolution exceeds the highest limit of 1920*1080. Download the desktop version and compress the videos with higher resolutions.",
647
+ "video_compressor_continue": "continue",
648
+ "video_compressor_desktop": "Download Desktop Version",
649
+ "video_compressor_replace": "Are you sure you want to replace current video to compress other?",
650
+ "video_compressor_stop_compress": "Are you sure you want to stop compress progress?",
651
+ "video_compressor_stop": "Stop",
652
+ "video_joiner_stop": "Are you sure you want to stop merging?",
653
+ "video_compressor_compress": "Compress",
654
+ "video_compressor_compressing": "Compressing",
655
+ "video_compressor_reload": "The file you uploaded is corrupted. Please select another one file for upload.",
656
+ "video_compressor_file_error": "An error has occurred while reading the uploaded file. Please try another one.",
657
+ "video_compressor_desktop_download": "Install Desktop Version",
658
+ "video_joiner_merging": "Merging videos",
659
+ "video_joiner_merge": "Merge Now",
660
+ "video_joiner_join_failed": "Join Failed",
661
+ "video_joiner_join_success": "Join Successfully",
662
+ "video_joiner_insert": "Insert new",
663
+ "video_joiner_to_merge": "Add files to Merge",
664
+ "video_joiner": "Online Video Merger",
665
+ "browser_support_image_compressor": "Your browser is to old. Please update it to support compress photo.",
666
+ "image_compressor_upload": "upload",
667
+ "image_compressor_finished": "Finished",
668
+ "image_compressor_error": "Error!",
669
+ "image_compressor_max-size": "Size large than 5 MB",
670
+ "image_compressor_max_number": "You can only upload 40 images today.",
671
+ "pdf_compressor_max_number": "You can only add up to 10 files today.",
672
+ "image_compressor_failed": "Fail",
673
+ "heic_converter_max_size": "You can only add up to 5 MB per file.",
674
+ "image_compressor_download": "Download",
675
+ "image_compressor_converting": "Converting",
676
+ "image_compressor_delete": "Delete",
677
+ "pdf_compressor_refreshing": "There may be an error,try refreshing?",
678
+ "pdf_compressor_try_again": "Error! Please refresh page and try again.",
679
+ "pdf_compressor_updata_error": "Upload process error",
680
+ "pdf_compressor_over_size": "File size too big",
681
+ "pdf_compressor__not_allowed": "This extension is not allowed",
682
+ "pdf_compressor_one_only": "Can only upload one",
683
+ "browser_support_pdf_compressor": "Your browser is to old. Please update it to support compress PDF Files.",
684
+ 'over_size_message': 'The image you uploaded is over 10M. We will compress your file for uploading. Please click “Confirm” to continue uploading.',
685
+ 'file_type_error': 'The file you uploaded is not an image! Please try to upload again.',
686
+ 'image_type_error': 'The image format is not supported. We only supports JPG, JPEG, PNG and GIF. We will covert your image format for recognition. Please click “Confirm” to continue uploading.',
687
+ 'upload_error': 'Upload Error! (Error Code: 2000) Please try again.',
688
+ 'network_error': 'Network Error! (Error Code: 2001) Please try again.',
689
+ 'recognition_error': 'Recognition Error! (Error Code: 2002) Please try again.',
690
+ 'image_compress_fail': 'The image is too large to compress!',
691
+ 'image_transfer_fail': 'Failed to convert the image. Please upload another one.',
692
+ 'original_image': 'Original',
693
+ 'preview_image': 'Preview',
694
+ "browser_support_heic_converter": "Your web browser is outdated. Please update the latest version.",
695
+ "video_converter_title": "Install desktop version to enjoy more output formats and power edit functions.",
696
+ "watermark_remove_over_size": "æ‚¨æ‰€ä¸Šä¼ çš„å›¾ç‰‡å¤§å°è¶…è¿‡10M,推荐您使用我们的图片在线压缩产品,点击<a class='jump-link' href='/free-image-compressor/'>了解更多</a>",
697
+ "watermark_remove_file_type_error": "æ‚¨ä¸Šä¼ çš„æ–‡ä»¶ä¸æ˜¯å›¾ç‰‡ï¼è¯·é‡æ–°ä¸Šä¼ ",
698
+ "watermark_remove_image_type_error": "æš‚ä¸æ”¯æŒæ‚¨ä¸Šä¼ çš„å›¾ç‰‡æ ¼å¼ï¼Œæˆ‘ä»¬æ”¯æŒçš„å›¾ç‰‡æ ¼å¼æœ‰JPGï¼›JPEGï¼›PNGï¼›BMP",
699
+ "watermark_remove_upload_error": "è¯†åˆ«å¼‚å¸¸ï¼ˆé”™è¯¯ç ï¼š2001),请重试...",
700
+ "watermark_remove_processing": "图片正在识别中",
701
+ "watermark_remove_not_save": "您涂抹的区域将不会保留,是否裁剪?",
702
+ "watermark_remove_back_home": "您的操作将不会保留,是否回到首页?",
703
+ "watermark_remove_new_image": "您的操作将不会保留,是否选择新图片?",
704
+ "watermark_select": "请选择",
705
+ "watermark_select_area": "请先选择要去除的区域",
706
+ "image_enhancer_oversize": "æ‚¨æ‰€ä¸Šä¼ çš„å›¾ç‰‡å¤§å°è¶…è¿‡10M,推荐您使用我们的图片在线压缩产品,点击<a class='jump-link' href='/free-image-compressor/'>了解更多</a>",
707
+ "image_enhancer_overresolution": "æ‚¨æ‰€ä¸Šä¼ çš„å›¾ç‰‡è¶…å‡º3000px*3000px, è¯·é€‰æ‹©å›¾ç‰‡é‡æ–°ä¸Šä¼ ã€‚",
708
+ "image_enhancer_maxsolution": "图片可以放大到3000x3000px,我们将会把您的图片缩小到3000x3000px以内。",
709
+ "image_enhancer_maxsolution_alert": "图片可以放大到3000x3000px,我们已将您的图片缩小到3000x3000px以内。",
710
+ "image_enhancer_processing": "Loading...",
711
+ "image_enhancer_change": "切换显示原图",
712
+ "image_enhancer_show": "原图",
713
+ "image_enhancer_output": "输出",
714
+ "image_enhancer_zoom": "放大倍数",
715
+ "image_enhancer_close": "关闭窗口",
716
+ }
717
+ },
718
+ getCurrentLanguage: function() {
719
+ var str = window.location.href.match(/\/\/(\S*)\//)[1].split("/")[0].replace("aiseesoft", "").replace("apeaksoft", "").replace("anymp4", "").replace("videoconverter.net", "");
720
+ if (str.indexOf("\.fr") > -1 && str.indexOf("free-") < 0) {
721
+ return "fr"
722
+ } else if (str.indexOf("\.jp") > -1 && str.indexOf("free-") < 0) {
723
+ return "jp"
724
+ } else if (str.indexOf("\.de") > -1 && str.indexOf("free-") < 0) {
725
+ return "de"
726
+ } else if ((str.indexOf("cn") > -1 && str.indexOf("free-") < 0) || str.indexOf("drmfab.cn") > -1) {
727
+ return "zh_CN"
728
+ } else if (str.indexOf("tw") > -1 && str.indexOf("free-") < 0) {
729
+ return "zh_TW"
730
+ } else if (str.indexOf("tr") > -1 && str.indexOf("free-") < 0) {
731
+ return "tr"
732
+ } else {
733
+ return "en"
734
+ }
735
+ },
736
+ tr: function(msgKey) {
737
+ var curLang = this.getCurrentLanguage();
738
+ if (curLang in this.langs && msgKey in this.langs[curLang]) {
739
+ return this.langs[curLang][msgKey];
740
+ }
741
+ if (msgKey in this.langs['en']) {
742
+ return this.langs['en'][msgKey];
743
+ }
744
+ return msgKey;
745
+ }
746
+ };
747
+ })(window || {}, jQuery);
jsnew_image-upscaler.js ADDED
The diff for this file is too large to render. See raw diff
 
local.css ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ body {
2
+ font-family: 'Poppins', sans-serif;
3
+ background-color:#333;
4
+ }
5
+
6
+ #banner{
7
+ background: #333 center 0 !important;
8
+ }
9
+
10
+ h1, h2, h3, h4, h5, h6 {
11
+ font-family: 'Poppins', sans-serif;
12
+ font-weight: 600; /* Example weight */
13
+ }
14
+
15
+ p {
16
+ font-family: 'Poppins', sans-serif;
17
+ font-weight: 400; /* Regular weight */
18
+ }
19
+
20
+ .wp-block-button__link {
21
+ color:#fff;
22
+ background-color:#32373c;
23
+ border-radius:9999px;
24
+ box-shadow:none;
25
+ text-decoration:none;
26
+ padding:calc(.667em + 2px) calc(1.333em + 2px);
27
+ font-size:1.125em
28
+ }
29
+
30
+ .wp-block-file__button{
31
+ background:#32373c;
32
+ color:#fff;
33
+ text-decoration:none
34
+ }
35
+
36
+ .floating-button {
37
+ position: fixed;
38
+ bottom: 20px;
39
+ left: 20px;
40
+ background-color: #834aff;
41
+ color: white;
42
+ padding: 15px 25px;
43
+ border: none;
44
+ border-radius: 10px;
45
+ font-size: 14px;
46
+ font-weight: bold;
47
+ cursor: pointer;
48
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
49
+ transition: background-color 0.3s, box-shadow 0.3s;
50
+ text-decoration: none;
51
+ font-family: 'Poppins', sans-serif;
52
+ display: flex;
53
+ align-items: center;
54
+ justify-content: center;
55
+ }
56
+
57
+ .floating-button:hover {
58
+ background-color: darkviolet;
59
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3);
60
+ }
61
+
62
+ .floating-button i {
63
+ margin-right: 10px;
64
+ }
new-design.css ADDED
@@ -0,0 +1,485 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Hide old UI elements */
2
+ .header_bg,
3
+ #banner.heic_converter {
4
+ display: none !important;
5
+ }
6
+
7
+ /* Modern loading popup styles */
8
+ .image-loading-box .show-message-box {
9
+ background: hsl(240, 10%, 7%);
10
+ border: 1px solid rgba(255, 255, 255, 0.1);
11
+ border-radius: 0.75rem;
12
+ padding: 2.5rem;
13
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.5), 0 10px 10px -5px rgba(0, 0, 0, 0.4);
14
+ min-width: 320px;
15
+ }
16
+
17
+ .image-loading-box .loading-box {
18
+ background: hsl(240, 10%, 7%);
19
+ }
20
+
21
+ .image-loading-box .loading-content {
22
+ display: flex;
23
+ flex-direction: column;
24
+ align-items: center;
25
+ gap: 1.25rem;
26
+ }
27
+
28
+ .image-loading-box .loading-text {
29
+ color: hsl(240, 5%, 90%);
30
+ font-size: 1.125rem;
31
+ font-weight: 600;
32
+ margin: 0;
33
+ }
34
+
35
+ .image-loading-box .loading-subtext {
36
+ color: hsl(240, 4%, 65%);
37
+ font-size: 0.875rem;
38
+ font-weight: 400;
39
+ margin-top: -0.75rem;
40
+ }
41
+
42
+ /* Modern gradient spinner */
43
+ .modern-spinner {
44
+ width: 56px;
45
+ height: 56px;
46
+ border-radius: 50%;
47
+ background: conic-gradient(from 0deg, hsl(265, 100%, 61%), #ff4b8d, hsl(265, 100%, 61%));
48
+ animation: spin 1s linear infinite;
49
+ position: relative;
50
+ display: flex;
51
+ align-items: center;
52
+ justify-content: center;
53
+ }
54
+
55
+ .modern-spinner::before {
56
+ content: '';
57
+ position: absolute;
58
+ width: 44px;
59
+ height: 44px;
60
+ background: hsl(240, 10%, 7%);
61
+ border-radius: 50%;
62
+ }
63
+
64
+ @keyframes spin {
65
+ to {
66
+ transform: rotate(360deg);
67
+ }
68
+ }
69
+
70
+ .image-loading-box .cancel-upload {
71
+ margin-top: 1.5rem;
72
+ padding: 0.75rem 1.5rem;
73
+ background: rgba(255, 255, 255, 0.1);
74
+ color: hsl(240, 5%, 90%);
75
+ border-radius: 0.5rem;
76
+ cursor: pointer;
77
+ transition: all 0.3s;
78
+ text-align: center;
79
+ }
80
+
81
+ .image-loading-box .cancel-upload:hover {
82
+ background: rgba(255, 255, 255, 0.2);
83
+ }
84
+
85
+ .image-loading-box .error-text,
86
+ .image-loading-box .warning-text,
87
+ .image-loading-box .alert-text {
88
+ color: hsl(240, 5%, 90%);
89
+ margin: 1rem 0;
90
+ font-size: 1rem;
91
+ }
92
+
93
+ .image-loading-box .button-group {
94
+ display: flex;
95
+ gap: 1rem;
96
+ margin-top: 1.5rem;
97
+ }
98
+
99
+ .image-loading-box .button-group .confirm,
100
+ .image-loading-box .button-group .cancel {
101
+ flex: 1;
102
+ padding: 0.75rem 1.5rem;
103
+ border-radius: 0.5rem;
104
+ cursor: pointer;
105
+ transition: all 0.3s;
106
+ text-align: center;
107
+ font-weight: 500;
108
+ }
109
+
110
+ .image-loading-box .button-group .confirm {
111
+ background: linear-gradient(90deg, hsl(265, 100%, 61%) 0%, #ff4b8d 100%);
112
+ color: white;
113
+ }
114
+
115
+ .image-loading-box .button-group .confirm:hover {
116
+ opacity: 0.9;
117
+ }
118
+
119
+ .image-loading-box .button-group .cancel {
120
+ background: rgba(255, 255, 255, 0.1);
121
+ color: hsl(240, 5%, 90%);
122
+ }
123
+
124
+ .image-loading-box .button-group .cancel:hover {
125
+ background: rgba(255, 255, 255, 0.2);
126
+ }
127
+
128
+ /* Ensure the processing UI is on top */
129
+ .image-loading-box {
130
+ z-index: 9999;
131
+ }
132
+
133
+ /* Ensure mobile save image is properly styled */
134
+ .mobile-save-image {
135
+ background: hsl(240, 10%, 7%);
136
+ }
137
+
138
+ /* Style the feedback form to match new design */
139
+ .feedback {
140
+ background: hsl(240, 10%, 7%) !important;
141
+ background-color: hsl(240, 10%, 7%) !important;
142
+ border: 1px solid rgba(255, 255, 255, 0.1);
143
+ border-radius: 0.75rem;
144
+ }
145
+
146
+ .feedback_container {
147
+ color: hsl(240, 5%, 90%);
148
+ }
149
+
150
+ .feedback input[type="email"],
151
+ .feedback textarea {
152
+ background: hsl(240, 14%, 5%);
153
+ border: 1px solid rgba(255, 255, 255, 0.2);
154
+ color: hsl(240, 5%, 90%);
155
+ border-radius: 0.5rem;
156
+ padding: 0.75rem 1rem;
157
+ }
158
+
159
+ .feedback input[type="submit"] {
160
+ background: linear-gradient(90deg, hsl(265, 100%, 61%) 0%, #ff4b8d 100%);
161
+ color: white;
162
+ font-weight: bold;
163
+ padding: 1rem 2.5rem;
164
+ border-radius: 0.5rem;
165
+ border: none;
166
+ cursor: pointer;
167
+ transition: opacity 0.3s;
168
+ }
169
+
170
+ .feedback input[type="submit"]:hover {
171
+ opacity: 0.9;
172
+ }
173
+
174
+ /* Ensure masks match the dark theme */
175
+ .mask,
176
+ .alert-mask,
177
+ .feedback-mask {
178
+ background: rgba(0, 0, 0, 0.8);
179
+ }
180
+
181
+ /* Override all white backgrounds in loading popups */
182
+ .image-loading-box,
183
+ .show-message-box,
184
+ .load-error-box,
185
+ .load-warning-box,
186
+ .load-warning-boxx,
187
+ .oversize-box,
188
+ .load-alert-box,
189
+ .loading-box,
190
+ .loading-box-b {
191
+ background: hsl(240, 10%, 7%) !important;
192
+ background-color: hsl(240, 10%, 7%) !important;
193
+ }
194
+
195
+ /* Override all dark text to light text in popups */
196
+ .show-message-box .text,
197
+ .show-message-box p,
198
+ .loading-box .loading-text,
199
+ .loading-box-b .loading-b-text,
200
+ .loading-text,
201
+ .warning-text,
202
+ .error-text,
203
+ .alert-text {
204
+ color: hsl(240, 5%, 90%) !important;
205
+ }
206
+
207
+ /* Override button backgrounds */
208
+ .loading-box-b .button-group div {
209
+ background-color: rgba(255, 255, 255, 0.1) !important;
210
+ color: hsl(240, 5%, 90%) !important;
211
+ }
212
+
213
+ /* Override alert/feedback modal backgrounds */
214
+ .alert-modal-box {
215
+ background-color: hsl(240, 10%, 7%) !important;
216
+ border: 1px solid rgba(255, 255, 255, 0.1);
217
+ }
218
+
219
+ /* Override any nested light backgrounds */
220
+ .show-message-box .text .max_overresolution div {
221
+ background: rgba(255, 255, 255, 0.05) !important;
222
+ color: hsl(240, 5%, 90%) !important;
223
+ }
224
+
225
+ /* Preview Popup Modal Styles */
226
+ .preview-popup-overlay {
227
+ display: none;
228
+ position: fixed;
229
+ top: 0;
230
+ left: 0;
231
+ width: 100%;
232
+ height: 100%;
233
+ background: rgba(0, 0, 0, 0.9);
234
+ z-index: 10000;
235
+ align-items: center;
236
+ justify-content: center;
237
+ padding: 1rem;
238
+ backdrop-filter: blur(4px);
239
+ }
240
+
241
+ .preview-popup-overlay.active {
242
+ display: flex;
243
+ }
244
+
245
+ .preview-popup-content {
246
+ background: hsl(240, 10%, 7%);
247
+ border: 1px solid rgba(255, 255, 255, 0.1);
248
+ border-radius: 1rem;
249
+ max-width: 1200px;
250
+ width: 100%;
251
+ max-height: 90vh;
252
+ overflow-y: auto;
253
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
254
+ }
255
+
256
+ .preview-popup-header {
257
+ display: flex;
258
+ justify-content: space-between;
259
+ align-items: center;
260
+ padding: 1.5rem 2rem;
261
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
262
+ }
263
+
264
+ .preview-popup-title {
265
+ font-size: 1.5rem;
266
+ font-weight: 700;
267
+ margin: 0;
268
+ background: linear-gradient(90deg, hsl(265, 100%, 61%) 0%, #ff4b8d 100%);
269
+ -webkit-background-clip: text;
270
+ -webkit-text-fill-color: transparent;
271
+ }
272
+
273
+ .preview-popup-close {
274
+ background: none;
275
+ border: none;
276
+ color: hsl(240, 5%, 90%);
277
+ font-size: 2rem;
278
+ cursor: pointer;
279
+ width: 40px;
280
+ height: 40px;
281
+ display: flex;
282
+ align-items: center;
283
+ justify-content: center;
284
+ border-radius: 0.5rem;
285
+ transition: background 0.3s;
286
+ }
287
+
288
+ .preview-popup-close:hover {
289
+ background: rgba(255, 255, 255, 0.1);
290
+ }
291
+
292
+ .preview-comparison-container {
293
+ display: grid;
294
+ grid-template-columns: 1fr auto 1fr;
295
+ gap: 2rem;
296
+ padding: 2rem;
297
+ align-items: center;
298
+ }
299
+
300
+ .preview-side {
301
+ display: flex;
302
+ flex-direction: column;
303
+ align-items: center;
304
+ gap: 1rem;
305
+ }
306
+
307
+ .preview-label {
308
+ font-size: 1rem;
309
+ font-weight: 600;
310
+ color: hsl(240, 4%, 65%);
311
+ text-transform: uppercase;
312
+ letter-spacing: 0.05em;
313
+ }
314
+
315
+ .preview-original-img,
316
+ .preview-enhanced-img {
317
+ max-width: 100%;
318
+ max-height: 400px;
319
+ width: auto;
320
+ height: auto;
321
+ border-radius: 0.5rem;
322
+ border: 1px solid rgba(255, 255, 255, 0.1);
323
+ object-fit: contain;
324
+ }
325
+
326
+ .preview-resolution {
327
+ font-size: 0.875rem;
328
+ color: hsl(240, 4%, 65%);
329
+ padding: 0.5rem 1rem;
330
+ background: rgba(255, 255, 255, 0.05);
331
+ border-radius: 0.5rem;
332
+ }
333
+
334
+ .preview-divider {
335
+ width: 2px;
336
+ height: 300px;
337
+ background: linear-gradient(180deg, transparent, hsl(265, 100%, 61%), #ff4b8d, transparent);
338
+ }
339
+
340
+ .preview-popup-actions {
341
+ display: flex;
342
+ gap: 1rem;
343
+ padding: 1.5rem 2rem;
344
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
345
+ justify-content: flex-end;
346
+ }
347
+
348
+ .preview-btn {
349
+ display: flex;
350
+ align-items: center;
351
+ gap: 0.5rem;
352
+ padding: 0.875rem 1.75rem;
353
+ border-radius: 0.5rem;
354
+ border: none;
355
+ font-size: 1rem;
356
+ font-weight: 600;
357
+ cursor: pointer;
358
+ transition: all 0.3s;
359
+ font-family: 'Space Grotesk', sans-serif;
360
+ }
361
+
362
+ .preview-btn-primary {
363
+ background: linear-gradient(90deg, hsl(265, 100%, 61%) 0%, #ff4b8d 100%);
364
+ color: white;
365
+ }
366
+
367
+ .preview-btn-primary:hover {
368
+ opacity: 0.9;
369
+ transform: translateY(-1px);
370
+ }
371
+
372
+ .preview-btn-secondary {
373
+ background: rgba(255, 255, 255, 0.1);
374
+ color: hsl(240, 5%, 90%);
375
+ }
376
+
377
+ .preview-btn-secondary:hover {
378
+ background: rgba(255, 255, 255, 0.2);
379
+ }
380
+
381
+ .preview-btn .material-symbols-outlined {
382
+ font-size: 1.25rem;
383
+ }
384
+
385
+ /* Mobile responsive */
386
+ @media (max-width: 768px) {
387
+ .preview-comparison-container {
388
+ grid-template-columns: 1fr;
389
+ gap: 1.5rem;
390
+ }
391
+
392
+ .preview-divider {
393
+ display: none;
394
+ }
395
+
396
+ .preview-popup-actions {
397
+ flex-direction: column;
398
+ }
399
+
400
+ .preview-btn {
401
+ width: 100%;
402
+ justify-content: center;
403
+ }
404
+ }
405
+
406
+ /* Upscale Option Sliders */
407
+ .slider-option {
408
+ margin-top: 1.5rem;
409
+ }
410
+
411
+ .upscale-slider {
412
+ width: 100%;
413
+ height: 6px;
414
+ -webkit-appearance: none;
415
+ appearance: none;
416
+ background: rgba(255, 255, 255, 0.1);
417
+ border-radius: 3px;
418
+ outline: none;
419
+ cursor: pointer;
420
+ transition: all 0.3s ease;
421
+ }
422
+
423
+ .upscale-slider:hover {
424
+ background: rgba(255, 255, 255, 0.15);
425
+ }
426
+
427
+ /* Webkit browsers (Chrome, Safari) */
428
+ .upscale-slider::-webkit-slider-thumb {
429
+ -webkit-appearance: none;
430
+ appearance: none;
431
+ width: 20px;
432
+ height: 20px;
433
+ background: linear-gradient(135deg, hsl(265, 100%, 61%), #ff4b8d);
434
+ border-radius: 50%;
435
+ cursor: pointer;
436
+ transition: all 0.3s ease;
437
+ box-shadow: 0 2px 8px rgba(165, 60, 255, 0.4);
438
+ }
439
+
440
+ .upscale-slider::-webkit-slider-thumb:hover {
441
+ transform: scale(1.1);
442
+ box-shadow: 0 4px 12px rgba(165, 60, 255, 0.6);
443
+ }
444
+
445
+ /* Firefox */
446
+ .upscale-slider::-moz-range-thumb {
447
+ width: 20px;
448
+ height: 20px;
449
+ background: linear-gradient(135deg, hsl(265, 100%, 61%), #ff4b8d);
450
+ border-radius: 50%;
451
+ border: none;
452
+ cursor: pointer;
453
+ transition: all 0.3s ease;
454
+ box-shadow: 0 2px 8px rgba(165, 60, 255, 0.4);
455
+ }
456
+
457
+ .upscale-slider::-moz-range-thumb:hover {
458
+ transform: scale(1.1);
459
+ box-shadow: 0 4px 12px rgba(165, 60, 255, 0.6);
460
+ }
461
+
462
+ /* Track fill effect for webkit */
463
+ .upscale-slider::-webkit-slider-runnable-track {
464
+ background: linear-gradient(
465
+ to right,
466
+ hsl(265, 100%, 61%) 0%,
467
+ hsl(265, 100%, 61%) var(--slider-percent, 50%),
468
+ rgba(255, 255, 255, 0.1) var(--slider-percent, 50%)
469
+ );
470
+ height: 6px;
471
+ border-radius: 3px;
472
+ }
473
+
474
+ /* Track fill effect for Firefox */
475
+ .upscale-slider::-moz-range-track {
476
+ background: rgba(255, 255, 255, 0.1);
477
+ height: 6px;
478
+ border-radius: 3px;
479
+ }
480
+
481
+ .upscale-slider::-moz-range-progress {
482
+ background: linear-gradient(90deg, hsl(265, 100%, 61%), #ff4b8d);
483
+ height: 6px;
484
+ border-radius: 3px;
485
+ }
redX.png ADDED
replit.md ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Image Upscaler
2
+
3
+ ## Overview
4
+ This is an AI-powered image upscaling web application that allows users to upscale images by 2x, 4x, 6x, or 8x magnification. The application is a static HTML/CSS/JavaScript site based on the Qoc Upscaler.
5
+
6
+ ## Project Type
7
+ - **Type**: Static Website (Frontend Only)
8
+ - **Languages**: HTML, CSS, JavaScript
9
+ - **No Backend**: This is a pure client-side application with no server-side processing
10
+
11
+ ## Project Architecture
12
+ - **Server**: Python's built-in HTTP server
13
+ - **Port**: 5000 (configured to bind to 0.0.0.0)
14
+ - **Deployment**: Configured for autoscale deployment (static site)
15
+
16
+ ## Key Files
17
+ - `index.html` - Main application page with modern UI design
18
+ - `new-design.css` - Custom CSS for the redesigned interface
19
+ - `jsnew_image-upscaler.js` - Core image upscaling logic
20
+ - `js_free-online-image-upscaler.js` - Upscaler functionality
21
+ - `js_quene.js` - Queue management for batch processing
22
+ - CSS files: `css.css`, `style.css`, `local.css`, `all.min.css`
23
+
24
+ ## Features
25
+ - Drag and drop image upload
26
+ - Multiple magnification levels (2x, 4x, 6x, 8x)
27
+ - Advanced upscale options: AI Strength, Clarity, Sharpness, Color Improvement, Resemblance
28
+ - Side-by-side preview popup after enhancement
29
+ - Queue system for batch processing
30
+ - User-controlled download (preview first, download on button click)
31
+ - Mobile-friendly interface
32
+ - Modern gradient loading animation
33
+ - Interactive preview modal with comparison view
34
+
35
+ ## UI Design
36
+ - **Theme**: Modern dark theme with purple/pink gradient accents
37
+ - **Typography**: Space Grotesk font family
38
+ - **Styling**: Tailwind CSS with custom color palette
39
+ - **Upload Area**: Large drag-and-drop zone with cloud icon
40
+ - **Options**: Clean dropdown selectors for resolution and file format
41
+ - **No Header**: Streamlined design without navigation header
42
+ - **No Quality Option**: Simplified interface with resolution and format only
43
+
44
+ ## Recent Changes
45
+
46
+ ### September 30, 2025 - Added Advanced Upscale Options
47
+ - Added five new slider controls: AI Strength, Clarity, Sharpness, Color Improvement, and Resemblance
48
+ - Sliders feature purple/pink gradient styling matching the app theme
49
+ - Real-time value display updates as sliders move (0-100%)
50
+ - Gradient track fill animates with slider position for visual feedback
51
+ - JavaScript stores slider values via window.upscaleOptions.getOptions() for future API integration
52
+ - Current backend API only supports magnification, but UI is ready for enhanced functionality
53
+ - All changes reviewed and approved by architect
54
+
55
+ ### September 30, 2025 - Fixed Scrolling Bug After Popup Close
56
+ - Fixed critical bug where website became non-scrollable after closing preview popup
57
+ - Root cause: closeMessageBox() function was setting overflow='hidden' but never restoring it
58
+ - Added overflow='auto' restoration to closeMessageBox() function
59
+ - Added overflow restoration to all preview popup close handlers (close button, new image button, overlay click)
60
+ - Changes reviewed and approved by architect
61
+ - Website now properly restores scrolling functionality after all popup interactions
62
+
63
+ ### September 30, 2025 - Preview Popup Modal Implementation
64
+ - Created new popup modal that displays after image enhancement
65
+ - Side-by-side comparison shows original vs enhanced images
66
+ - Displays resolutions for both images
67
+ - Purple/pink gradient divider between images matching theme
68
+ - Download button with proper filename (enhanced_{magnification}x.png)
69
+ - New Image button to quickly upload another file
70
+ - Close button and overlay click to dismiss popup
71
+ - Mobile responsive design with stacked layout
72
+ - Event handlers properly initialized to prevent duplicates
73
+ - All changes reviewed and approved by architect
74
+
75
+ ### September 30, 2025 - Loading Popup Redesign & Download Behavior
76
+ - Redesigned loading popup with modern CSS gradient spinner (purple/pink theme)
77
+ - Replaced GIF spinner with animated conic-gradient CSS spinner
78
+ - Improved loading text with better typography and messaging
79
+ - Disabled automatic download after image enhancement
80
+ - Preview now shows first, user must click download button to save
81
+ - Verified side-by-side comparison preview displays correctly
82
+ - All changes reviewed and approved by architect
83
+
84
+ ### September 30, 2025 - Replit Environment Setup (Fresh GitHub Import)
85
+ - Python 3.11 module installed for serving static files
86
+ - Workflow configured to run HTTP server on port 5000 (bound to 0.0.0.0)
87
+ - Deployment configured for autoscale deployment (static site)
88
+ - .gitignore already includes Python-related files
89
+ - Application tested and verified working perfectly in Replit environment
90
+ - All resources loading correctly (HTML, CSS, JavaScript files)
91
+ - Modern dark theme UI displaying correctly with purple/pink gradient accents
spinner.gif ADDED
style.css ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ body {
2
+ padding: 2rem;
3
+ font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
4
+ }
5
+
6
+ h1 {
7
+ font-size: 16px;
8
+ margin-top: 0;
9
+ }
10
+
11
+ p {
12
+ color: rgb(107, 114, 128);
13
+ font-size: 15px;
14
+ margin-bottom: 10px;
15
+ margin-top: 5px;
16
+ }
17
+
18
+ .card {
19
+ max-width: 620px;
20
+ margin: 0 auto;
21
+ padding: 16px;
22
+ border: 1px solid lightgray;
23
+ border-radius: 16px;
24
+ }
25
+
26
+ .card p:last-child {
27
+ margin-bottom: 0;
28
+ }
trp-language-switcher.css ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Menu Language Switcher
3
+ */
4
+
5
+ .menu-item-object-language_switcher .trp-flag-image {
6
+ display: inline-block;
7
+ margin: -1px 5px;
8
+ vertical-align: baseline;
9
+ padding: 0;
10
+ border: 0;
11
+ border-radius:0;
12
+ }
13
+
14
+ /*
15
+ * Shortcode Language Switcher
16
+ */
17
+ .trp-language-switcher{
18
+ height: 42px;
19
+ position: relative;
20
+ box-sizing: border-box;
21
+ width: 200px;
22
+ text-overflow: ellipsis;
23
+ white-space: nowrap;
24
+ }
25
+
26
+
27
+ .trp-language-switcher > div {
28
+ box-sizing: border-box;
29
+ padding:4px 20px 3px 13px;
30
+ border: 1.5px solid #949494;
31
+ border-radius: 2px;
32
+ background-image: url(../../assets/images/arrow-down-3101.svg);
33
+ background-repeat: no-repeat;
34
+
35
+ background-position:
36
+ calc(100% - 20px) calc(1em + 2px),
37
+ calc(100% - 3px) calc(1em + 0px);
38
+
39
+ background-size:
40
+ 8px 8px,
41
+ 8px 8px;
42
+
43
+ background-repeat: no-repeat;
44
+
45
+ background-color: #fff;
46
+ }
47
+
48
+ .trp-language-switcher > div:hover {
49
+ background-image: none;
50
+ }
51
+
52
+
53
+ .trp-language-switcher > div > a {
54
+ display: block;
55
+ padding: 7px 12px;
56
+ border-radius: 3px;
57
+ text-decoration: none;
58
+ color: #1E1E1E;
59
+ font-style: normal;
60
+ font-weight: 400;
61
+ font-size: 16px;
62
+ }
63
+
64
+ .trp-language-switcher > div > a:hover {
65
+ background: #F0F0F0;
66
+ border-radius: 2px;
67
+ }
68
+ .trp-language-switcher > div > a.trp-ls-shortcode-disabled-language {
69
+ cursor: default;
70
+ }
71
+ .trp-language-switcher > div > a.trp-ls-shortcode-disabled-language:hover {
72
+ background: none;
73
+ }
74
+
75
+ .trp-language-switcher > div > a > img{
76
+ display: inline;
77
+ margin: 0 3px;
78
+ width: 18px;
79
+ height: 12px;
80
+ border-radius: 0;
81
+ }
82
+
83
+ .trp-language-switcher .trp-ls-shortcode-current-language{
84
+ display: inline-block;
85
+ }
86
+ .trp-language-switcher:focus .trp-ls-shortcode-current-language,
87
+ .trp-language-switcher:hover .trp-ls-shortcode-current-language{
88
+ visibility: hidden;
89
+ }
90
+
91
+ .trp-language-switcher .trp-ls-shortcode-language{
92
+ display: inline-block;
93
+ height: 1px;
94
+ overflow: hidden;
95
+ visibility: hidden;
96
+ z-index: 1;
97
+
98
+ max-height: 250px;
99
+ overflow-y: auto;
100
+ left: 0;
101
+ top: 0;
102
+ min-height: auto;
103
+ }
104
+
105
+ .trp-language-switcher:focus .trp-ls-shortcode-language,
106
+ .trp-language-switcher:hover .trp-ls-shortcode-language{
107
+ visibility: visible;
108
+ max-height: 250px;
109
+ padding: 4px 13px;
110
+ height: auto;
111
+ overflow-y: auto;
112
+ position: absolute;
113
+ left: 0;
114
+ top: 0;
115
+ display: inline-block !important;
116
+ min-height: auto;
117
+ }
118
+
119
+ /*
120
+ * Front-end Admin Bar Icon
121
+ */
122
+ #wpadminbar #wp-admin-bar-trp_edit_translation .ab-icon:before {
123
+ content: '\f326';
124
+ top: 3px;
125
+ }
126
+
127
+ @media screen and ( max-width: 782px ) {
128
+ #wpadminbar #wp-admin-bar-trp_edit_translation > .ab-item {
129
+ text-indent: 0;
130
+ }
131
+
132
+ #wpadminbar li#wp-admin-bar-trp_edit_translation {
133
+ display: block;
134
+ }
135
+ }
136
+
137
+ /*
138
+ * Fix Language Switcher Shortcode in Elementor Popup
139
+ */
140
+ .elementor-shortcode .trp-ls-shortcode-current-language,
141
+ .elementor-shortcode .trp-ls-shortcode-language {
142
+ width: 300px !important;
143
+ }