From 5a8bca82b700ef1060bd4fa9fcbf886bd6f6f2e6 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 16 Nov 2022 14:53:56 +0100 Subject: [PATCH] Whonix End of Year Banner --- .../end-of-year-banner/CodeSelect.css | 174 +++++++++++ .../end-of-year-banner/CodeSelect.js | 101 +++++++ .../end-of-year-banner/MiniModal.css | 62 ++++ .../end-of-year-banner/MiniModal.js | 55 ++++ .../end-of-year-banner/PayViaPaypal.css | 104 +++++++ .../end-of-year-banner/PayViaPaypal.js | 174 +++++++++++ .../Sitenotice_EndOfYear.css | 281 ++++++++++++++++++ .../Sitenotice_EndOfYear.js | 239 +++++++++++++++ .../end-of-year-banner/img/40px-BC_Logo_.png | Bin 0 -> 1727 bytes .../img/40px-Ethereumlogo.png | Bin 0 -> 1693 bytes .../img/40px-Monero-symbol-1280.png | Bin 0 -> 1737 bytes .../end-of-year-banner/img/blue.jpg | Bin 0 -> 9990 bytes .../end-of-year-banner/img/green.jpg | Bin 0 -> 9659 bytes .../end-of-year-banner/img/pause.png | Bin 0 -> 595 bytes .../end-of-year-banner/img/play.png | Bin 0 -> 899 bytes .../end-of-year-banner/img/times.png | Bin 0 -> 1027 bytes .../end-of-year-banner/img/yellow.jpg | Bin 0 -> 11032 bytes .../end-of-year-banner/jquery.cookie.js | 114 +++++++ .../end-of-year-banner/jquery.min.js | 2 + .../homepage/whonix-welcome-page/whonix.html | 151 ++++++++++ 20 files changed, 1457 insertions(+) create mode 100644 usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/CodeSelect.css create mode 100644 usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/CodeSelect.js create mode 100644 usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/MiniModal.css create mode 100644 usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/MiniModal.js create mode 100644 usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/PayViaPaypal.css create mode 100644 usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/PayViaPaypal.js create mode 100644 usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/Sitenotice_EndOfYear.css create mode 100644 usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/Sitenotice_EndOfYear.js create mode 100644 usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/40px-BC_Logo_.png create mode 100644 usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/40px-Ethereumlogo.png create mode 100644 usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/40px-Monero-symbol-1280.png create mode 100644 usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/blue.jpg create mode 100644 usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/green.jpg create mode 100644 usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/pause.png create mode 100644 usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/play.png create mode 100644 usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/times.png create mode 100644 usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/yellow.jpg create mode 100644 usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/jquery.cookie.js create mode 100644 usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/jquery.min.js diff --git a/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/CodeSelect.css b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/CodeSelect.css new file mode 100644 index 0000000..becda78 --- /dev/null +++ b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/CodeSelect.css @@ -0,0 +1,174 @@ +/* Documentation see Dev/mediawiki */ + +/* 1. General */ + +.code-select { + display: inline-block; + background: #f6f6f6; + border-radius: 7px; + box-shadow: inset 2px 2px 6px rgba(0,0,0,0.05); + border: 1px solid #e3e3e3; + padding: 5px 13px 0 40px; + position: relative; + max-width: 100%; + vertical-align: middle; + overflow: hidden; + min-height: 31px; +} +.code-select, .code-select > *:not(.cbutton) { + cursor: copy !important; +} +.code-select:hover { + border-color: #d8d8d8; + background: #f0f0f0; +} + +.code-select.js-fully-loaded { + overflow: visible; + padding-left: 38px; +} + +/* 2. Tooltip */ + +.code-select .tooltip2 { + position: absolute; + top: -39px; + left: 6px; + background: white; + color: #337cd9; + border: 1px solid #337cd9; + padding: 6px 10px; + border-radius: 6px; + z-index: 1010; + font-weight: bold; + font-size: 14px; + display: none; + white-space: nowrap; + font-family: Courier, monospace; +} +.code-select .tooltip2::after { + content: " "; + position: absolute; + top: 100%; + left: 7px; + border-width: 7px; + border-style: solid; + border-color: #337cd9 transparent transparent transparent; +} +.code-select .tooltip2 .copied { display: none; } +.code-select .tooltip2 .hover { display: inline-block; } +.code-select.copied .tooltip2 .copied { display: inline-block; } +.code-select.copied .tooltip2 .hover { display: none; } +.code-select.copied .tooltip2 { + display: inline-block; + background: #07c007; + border-color: #01b101; + color: white; +} +.code-select.copied .tooltip2::after { + border-top-color: #00a400; +} + +.code-select .tooltip2 .copied > i { + margin-right: 3px; + position: relative; + top: 1px; +} + +.code-select > .cbutton:hover ~ .tooltip2 { + display: inline-block; +} + +/* 3. Icon */ + +.code-select > .cbutton { + cursor: pointer; + display: inline-block; +} + +.code-select:not([data-button-image-src]) > .cbutton { + position: absolute; + left: 8px; + top: 2px; + height: 25px; + width: 27px; + text-align: center; + padding-top: 4px; + border-radius: 5px; + color: #5594c7; + font-size: 16px; +} + +.code-select > .cbutton.fa-check { + color: #00d400; +} + +.code-select:not(.copied) > .cbutton:hover { + color: #0054a8; +} + +/* 4. Text-Containers */ + +.code-select .code, .code-select { + font-family: 'Cousine', monospace, Courier; + font-size: 13px; + color: #0054a8; + line-height: 1.6em; + width: 100%; + white-space: pre; +} + +.code-select.inline-style .code, .code-select.inline-style { + width: auto; +} + +.code-select .code { + overflow: auto; + padding: 0 0 2px 2px; + display: block; +} + +/* 5. Variant : Image Button */ + +.code-select[data-button-image-src] { + border: none; + background: transparent; + padding: 0; + width: auto; + box-shadow: none; +} + +.code-select[data-button-image-src]:not(.js-fully-loaded) { + visibility: hidden; +} + +.code-select[data-button-image-src] .cbutton { + width: inherit; + height: auto; + transition: filter .3s; +} + +.code-select[data-button-image-src] .cbutton:hover { + filter: brightness( .97 ); +} + +.code-select[data-button-image-src] .tooltip2 { + top: -43px; + left: -1px; +} + +.code-select[data-button-image-src] .tooltip2::after { + left: 9px; +} + +.code-select[data-button-image-src] .code { + width: 2px; + height: 2px; + display: inline-block; + opacity: 0; + overflow: hidden; +} + +/* +[[Category:MultiWiki]] +*/ diff --git a/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/CodeSelect.js b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/CodeSelect.js new file mode 100644 index 0000000..8ef46d9 --- /dev/null +++ b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/CodeSelect.js @@ -0,0 +1,101 @@ +(function () { + /* For documentation see Dev/mediawiki + Activates all .code-select fields on the site + By clicking the icon the code is copied to clipboard and tooltip is changed + */ + + // Global + + var innerContent = $( "" + + '' + + '' + + '' + + 'Click = Copy' + + '' + + '' + + 'Copied to clipboard!' + + '' + + '' + + '' + ); + var cbuttonIcons = { normal: 'far fa-clone fa-rotate-90', copied: 'fas fa-check' }; + + // Private + + function markSelection( jqDom ) { + let selection = window.getSelection(); + selection.removeAllRanges(); + + let range = document.createRange(); + range.selectNodeContents( jqDom[0] ); + selection.addRange(range); + } + + // jQuery Extension + + $.fn.codeSelect = function( action ) { + + // Only allow 'init' at the moment (extendable later) + if( action != 'init' ) return; + + $(this).each( function() { + // Prevent double initialization + if( $(this).hasClass('js-fully-loaded') ) return; + + // Setup + + let codeSelect = $(this); + let htmlMode = codeSelect.hasClass('insert-mode-html'); + let content = codeSelect[ htmlMode ? 'html' : 'text' ](); + codeSelect + .empty() + .append( innerContent.clone() ) + .find('.code')[ htmlMode ? 'html' : 'text' ]( content ); + + let imageButton = false; + if( codeSelect.attr('data-button-image-src') ) { + $('').insertAfter( codeSelect.find('.cbutton') ); + codeSelect.find('i.cbutton').remove(); + imageButton = true; + } + + let cbutton = codeSelect.find('.cbutton'); + let tooltip = codeSelect.find('.tooltip2'); + + // Events + + cbutton.on('click', function() { + // copying + markSelection( codeSelect.find('.code') ); + document.execCommand("copy"); + + // feedback and closing + codeSelect.addClass('copied'); + if( ! imageButton ) cbutton.removeClass( cbuttonIcons.normal ).addClass( cbuttonIcons.copied ); + setTimeout(f1, 3000); + function f1() { tooltip.fadeOut( 600, f2 ); } + function f2() { + codeSelect.removeClass('copied'); + if( ! imageButton ) cbutton.removeClass( cbuttonIcons.copied ).addClass( cbuttonIcons.normal ); + setTimeout( f3, 200 ); + } + function f3() { tooltip.css( 'display', '' ); } + }); + + codeSelect.find('.code').on('click', function() { + markSelection( $(this).parent().find('.code') ); + }); + + codeSelect.addClass('js-fully-loaded'); + }); + }; + + // Enrich selection of standard elements + + $('.code-select').codeSelect('init'); + +})(); + +/* +[[Category:MultiWiki]] +*/ diff --git a/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/MiniModal.css b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/MiniModal.css new file mode 100644 index 0000000..6deb59a --- /dev/null +++ b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/MiniModal.css @@ -0,0 +1,62 @@ +.mini-modal { + width: 100%; + height: 100vh; + position: fixed; + left: 0; + top: 0; + z-index: 1000; +} + +.mini-modal:not(.active) { + display: none; +} + +.mini-modal .underlay { + background-color: rgba(0,0,0,.5); + width: 100%; + height:100%; + position: absolute; + cursor: pointer; + opacity: 1; + transition: opacity .5s; +} + +.mini-modal .underlay:hover { + opacity: .6; +} + +.mini-modal .underlay + .mm-close { + position: absolute; + right: 27px; + top: 16px; + font-size: 73px; + color: white; + text-shadow: 1px 2px 3px rgba(0,0,0,.4); + transition: color .3s; +} + +.mini-modal .underlay:hover + .mm-close { + color: #ff89a5; +} + +.mini-modal > .content { + position: absolute; + width: 100%; + max-width: 650px; + margin: 100px 0 30px; + left: calc( 50% - 325px ); + max-height: calc( 100% - 120px ); + overflow: auto; +} + +@media (max-width: 680px ) { + .mini-modal > .content { + width: calc( 100% - 30px ); + left: 0; + margin: 100px 15px 30px; + } +} + +/* +[[Category:MultiWiki]] +*/ diff --git a/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/MiniModal.js b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/MiniModal.js new file mode 100644 index 0000000..9be03cc --- /dev/null +++ b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/MiniModal.js @@ -0,0 +1,55 @@ +(function() { + + // Functions + + function init( $this ) { + $this.each( function() { + if( ! $this.hasClass('mini-modal') || ! $this.attr('id') || $this.hasClass('init-complete') ) { + return; + } else { + $this.addClass('init-complete'); + } + + let content = $this.children(); + + $this.empty().append('' + + '
' + + '' + + '
' + ); + + $this.children('.content').append( content ); + + // Events + + $this.children('.underlay, .mm-close').on( 'click', function() { + $this.miniModal('hide'); + }); + }); + } + + // Setup + + $.fn.miniModal = function(command) { + switch( command ) { + case 'show': + init($(this)); + $(this).addClass('active'); + $(this).trigger( 'shown.miniModal' ); + break; + case 'hide': + init($(this)); + $(this).removeClass('active'); + $(this).trigger( 'hidden.miniModal' ); + break; + case 'init': + init($(this)); + break; + } + } + +})(); + +/* +[[Category:MultiWiki]] +*/ diff --git a/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/PayViaPaypal.css b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/PayViaPaypal.css new file mode 100644 index 0000000..c778aa7 --- /dev/null +++ b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/PayViaPaypal.css @@ -0,0 +1,104 @@ +.pay-via-paypal-module { + display: none; +} + +.pay-via-paypal-module.js-fully-loaded { + display: block; +} + +.pay-via-paypal-module .amount, .pay-via-paypal-module .interval { + margin: 0 -5px; + font-size: 0; + margin-bottom: 15px; +} + +.pay-via-paypal-module span { + border: 1px solid #dedede; + background: linear-gradient( #f4f4f4, #f8f8f8 ); + width: calc( 33% - 10px ); + display: inline-block; + padding: 4px 0; + text-align: center; + border-radius: 6px; + margin: 5px; + font-size: 18px; + cursor: pointer; + color: #444; +} + +.pay-via-paypal-module span:hover { + background: #e8e8e8; + color: black; +} + +.pay-via-paypal-module span.active { + background: #8be176; + border-color: #5bb545; + color: black; +} + +.pay-via-paypal-module .amount span:before { + content: '$'; + display: inline-block; + margin-right: 4px; +} + +.pay-via-paypal-module .amount span input { + width: calc( 100% - 35px ); + text-align: center; + border-radius: 5px; + background: white; + border: 1px solid #ccc; +} + +.pay-via-paypal-module .amount .error, .pay-via-paypal-module .interval .error { + display: none; + font-size: 16px; + color: red; + text-align: center; +} + +.pay-via-paypal-module.paypal-amount-error .amount { + outline: 1px solid red; +} + +.pay-via-paypal-module.paypal-amount-error .amount .error { + display: block; +} + +.pay-via-paypal-module.paypal-interval-error .interval { + outline: 1px solid red; +} + +.pay-via-paypal-module.paypal-interval-error .interval .error { + display: block; +} + +.pay-via-paypal-module .interval span { + font-size: 16px; +} + +.pay-via-paypal-module .submit { + display: block; + width: 100%; + text-align: center; + padding: 4px 0; + border-radius: 6px; + margin: 18px 0; + background: #32b1ff; + color: white; + border-color: #22a7df; + font-weight: bold; + letter-spacing: 1px; + font-size: 20px; + cursor: pointer; + border: none; +} + +.pay-via-paypal-module .submit:hover { + background: #009eff; +} + +/* +[[Category:MultiWiki]] +*/ \ No newline at end of file diff --git a/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/PayViaPaypal.js b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/PayViaPaypal.js new file mode 100644 index 0000000..1b190ef --- /dev/null +++ b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/PayViaPaypal.js @@ -0,0 +1,174 @@ +/* Documentation see: Dev/mediawiki */ + +(function () { + + // 0. Data + + let standards = { + minimumDollars: 1, // in full dollars + }; + + let intervalModes = { + once: '_xclick', + subscription: '_xclick-subscriptions', + }; + + // 1. Elements + + let template = $('' + + '
' + + '5' + + '20' + + '50' + + '200' + + '1000' + + '' + + '' + + '' + + '
Please select an amount of min $1
' + + '
' + + + '
' + + 'once' + + 'monthly' + + 'yearly' + + '
Please select an interval
' + + '
' + + + '
' + + '' + + '' + + '' + + '' + + '' + + '
' + ); + + let elementTemplates = { + // Time parameters. Syntax: p3 times t3, e.g. p3=6&t3=M -> 6 months, p3=1&t3=Y -> 1 year + interval: { + monthly: $(''), + yearly: $(''), + }, + amount: { + once: $(''), + subscription: $(''), + }, + }; + + // 2. Methods + + function isCurrentAmountValid( amount ) { + let parsedAmount = Number.parseFloat( amount ); + return typeof parsedAmount == 'number' && Number.isNaN(parsedAmount) == false && parsedAmount >= standards.minimumDollars; + } + + // 3. jQuery Extension + + $.fn.payViaPaypal = function( action ) { + + // Only allow 'init' at the moment (extendable later) + if( action != 'init' ) return; + + $(this).each( function() { + // Prevent double initialization + if( $(this).hasClass('js-fully-loaded') ) return; + + let amount; + + $(this).html( template.clone() ); + + let elements = { + interval: { monthly: elementTemplates.interval.monthly.clone(), yearly: elementTemplates.interval.yearly.clone() }, + amount: { once: elementTemplates.amount.once.clone(), subscription: elementTemplates.amount.subscription.clone() }, + }; + + let root = $(this); + let form = root.children('form'); + let inputCmd = form.children('input[name=cmd]'); + + // 4. Events + + root.find('.amount span').on('click', function() { + $(this).siblings().removeClass('active'); + $(this).addClass('active'); + + if( $(this).hasClass('manual') ) { + amount = $(this).children('input').val(); + } else { + amount = $(this).text(); + } + + if( isCurrentAmountValid(amount) ) root.removeClass('paypal-amount-error'); + }); + + root.find('.amount span input').on('input', function() { + amount = $(this).val(); + + if( isCurrentAmountValid(amount) ) root.removeClass('paypal-amount-error'); + }); + + root.find('.interval span').on('click', function() { + $(this).siblings().removeClass('active'); + $(this).addClass('active'); + + let t = $(this).text(); + if( t == 'once' ) { + elements.interval.monthly.remove(); + elements.interval.yearly.remove(); + elements.amount.subscription.remove(); + form.prepend( elements.amount.once ); + inputCmd.val(intervalModes.once); + } else { + elements.amount.once.remove(); + form.prepend( elements.amount.subscription ); + if( t == 'montly' ) { + elements.interval.yearly.remove(); + form.prepend( elements.interval.monthly ); + } else { + elements.interval.monthly.remove(); + form.prepend( elements.interval.yearly ); + } + inputCmd.val(intervalModes.subscription); + } + root.removeClass('paypal-interval-error'); + }); + + form.on( 'submit', function(event) { + if( isCurrentAmountValid(amount) == false ) { + root.addClass('paypal-amount-error'); + return false; + } + + if( ! inputCmd.val() ) { + root.addClass('paypal-interval-error'); + return false; + } + + form.children('input[name=amount],input[name=a3]').val(Number.parseFloat(amount).toFixed(2)); + + return true; + }); + + // 6. Finalize Setup + + root.addClass('js-fully-loaded'); + + if( root.hasClass('smooth') ) { + root.css({ height: 0, overflow: 'hidden' }); + root.animate( { height: root.prop('scrollHeight') }, function() { root.css({ overflow: '' }); }); + } + + }); + + }; + + // 4. Auto-Initialization + + $('.pay-via-paypal-module').payViaPaypal('init'); + +})(); + +/* +[[Category:MultiWiki]] +*/ \ No newline at end of file diff --git a/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/Sitenotice_EndOfYear.css b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/Sitenotice_EndOfYear.css new file mode 100644 index 0000000..c2eb41d --- /dev/null +++ b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/Sitenotice_EndOfYear.css @@ -0,0 +1,281 @@ +/* See Dev/mediawiki for documentation */ + +html.client-nojs #siteNotice { + display: none !important; +} + +#siteNotice .mw-dismissable-notice { + display: none; +} + +#siteNotice, +#donate-end-of-year { + height: 415px; +} + +#donate-end-of-year { + border: 4px solid #fff; + border-radius: 15px; + max-width: 1000px; + margin: 0 auto; + background: #f6f5f4; + box-shadow: 2px 2px 4px rgb(0 0 0 / 10%); +} + +#donate-end-of-year .h1 { + text-align: center; + font-size: 21px; + margin-bottom: 15px; + color: white; + background-color: #0080cf; + padding: 10px 40px 10px 20px; + border-radius: 12px 12px 0 0; + position: relative; +} + +#donate-end-of-year .h1 .dismiss { + position: absolute; + right: 20px; + top: 12px; + color: white; + opacity: .7; + cursor: pointer; +} + +#donate-end-of-year .h1 .dismiss:hover { + opacity: 1; +} + +#donate-end-of-year .h2 { + font-size: 18px; + color: white; + font-weight: bold; + background: #c3c3c3; + text-align: center; + padding: 7px 0; + border-radius: 8px 0 0 8px; +} + +/* Slides */ + +#donate-end-of-year .slideshow { + width: calc( 100% - 260px ); + display: inline-block; + vertical-align: top; + margin-right: 9px; + padding: 0 50px 0; + text-align: justify; + color: #555; + position: relative; + font-size: 19px; +} + +#donate-end-of-year .slideshow .content { + display: table-cell; + vertical-align: middle; +} + +#donate-end-of-year .slideshow .content > :not(.active) { + display: none; +} + +#donate-end-of-year .slideshow .content i { + font-size: 64px; + float: left; + margin-right: 25px; + padding: 8px 12px; +} + +#donate-end-of-year .slideshow .control { + text-align: center; + width: fit-content; + margin: 5px auto 15px; +} + +#donate-end-of-year .slideshow .progress { + display: block; + height: 3px; + width: 0; + background: white; + box-shadow: 1px 1px 3px rgb(0 0 0 / 10%); + margin-bottom: 6px; +} + +#donate-end-of-year .slideshow .slide-buttons { + display: inline-block; +} + +#donate-end-of-year .slideshow .slide-buttons span { + display: inline-block; + width: 13px; + height: 13px; + background-color: #fff; + box-shadow: 1px 1px 3px rgb(0 0 0 / 20%); + border-radius: 100px; + margin: 0 8px; + cursor: pointer; +} + +#donate-end-of-year .slideshow .slide-buttons span:hover, +#donate-end-of-year .slideshow .slide-buttons span.active { + background-color: #32b1ff; +} + +#donate-end-of-year .slideshow .flow { + text-shadow: 2px 2px rgb(0 0 0 / 10%); + color: #32b1ff; + margin-left: 10px; + display: inline-block; +} + +#donate-end-of-year .slideshow .flow i:not(.active) { + display: none; +} + +#donate-end-of-year .slideshow .flow i { + cursor: pointer; +} + +#donate-end-of-year .slideshow .flow i:hover { + transform: scale(1.1); +} + +/* Payment */ + +#donate-end-of-year .payment { + width: 250px; + display: inline-block; + position: relative; +} + +#donate-end-of-year .pay-via-paypal-module span { + padding: 1px 0; +} + +#donate-end-of-year .pay-via-paypal-module .error { + font-size: 14px; +} + +#donate-end-of-year .pay-via-paypal-module .amount, +#donate-end-of-year .pay-via-paypal-module .interval { + margin-bottom: 5px; +} + +#donate-end-of-year .pay-via-paypal-module .submit { + margin: 0 0 12px; +} + +#donate-end-of-year .payment .h2.crypto { + display: inline-block; + font-weight: normal; + font-size: 14px; + line-height: 18px; + padding: 8px 7px; + position: absolute; + right: 0; +} + +#donate-end-of-year .payment .crypto-container { + text-align: center; + margin: 16px 73px 0 0; + height: 38px; +} + +#donate-end-of-year .payment .crypto-container > div { + margin: 0 5px; +} + +#donate-end-of-year .payment a { + color: #0080cf; + text-decoration: none; + padding: 3px 5px 4px; + display: block; + text-align: center; + border-radius: 5px; + font-size: 14px; + border: 1px solid #93b3cf; + margin: 20px auto 9px; + width: 100%; +} + +#donate-end-of-year .payment a:hover { + border-color: #024ca1; + color: #024ca1; +} + +/* Mobile */ + +#donate-end-of-year .content .mobile-donate-button { + display: block; + text-align: center; + background: #32b1ff; + color: white; + font-weight: bold; + width: fit-content; + margin: 20px auto; + padding: 2px 16px; + cursor: pointer; + border-radius: 3px; +} + +#donate-end-of-year .content .mobile-donate-button:hover { + background: #009eff; +} + +@media (max-width: 820px) { + #donate-end-of-year .slideshow .content { + font-size: 17px; + } +} + +@media (max-width: 730px) { + #donate-end-of-year .slideshow { + padding-top: 11px; + } +} + +@media (max-width: 660px ) { + #siteNotice, + #donate-end-of-year { + height: 335px; + } + #donate-end-of-year .h1 { + font-size: 18px; + } + #donate-end-of-year .h2 { + border-radius: 8px; + } + #donate-end-of-year .payment .h2.crypto { + margin-top: -5px; + } + #donate-end-of-year .slideshow { + width: 100%; + padding-left: 25px; + padding-right: 25px; + } + #donate-end-of-year .slideshow .content { + font-size: 16px; + } + #donate-end-of-year .payment { + width: 92%; + margin: 10px auto 20px; + display: none; + } +} + +@media (max-width: 550px ) { + #donate-end-of-year .slideshow .content { + font-size: 14px; + } +} + +@media (max-width: 450px ) { + #siteNotice, + #donate-end-of-year { + height: 380px; + } +} + +/* +[[Category:MultiWiki]] +*/ diff --git a/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/Sitenotice_EndOfYear.js b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/Sitenotice_EndOfYear.js new file mode 100644 index 0000000..d3a5007 --- /dev/null +++ b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/Sitenotice_EndOfYear.js @@ -0,0 +1,239 @@ +function initEndOfYearSitenotice( domElementToPrependTo, assetWikiUrl = '', contentForSlides = '' ) { + + // Will not be executed after 2022-31-12 23:59:59 + if( Date.now() > 1672527599000 ) { + return; + } + + // If the user has the dismiss Cookie on, it will not be executed + if( $.cookie('dismiss-end-of-year-sitenotice') === 'true' ) { + $('#siteNotice').addClass('hide-notice'); + return; + } + + let settings = { + durationSlide: 10000, // Milliseconds + durationProgressbar: 9500, // Milliseconds + mobileBreak: 660, // Pixels + paymentBottomBorderSpace: 15, // Pixels + }; + + let refs = { + playNextTimeout: null, + }; + + let states = { + slideIndex: null, + slideCount: 0, + isPlay: null, + content: { + slides: '', + payBitcoin: '', + payMonero: '', + payEthereum: '', + }, + }; + + // --- + // DOM + + $('#siteNotice').addClass('show-notice'); + + let endOfYear = $('' + + '' + + '' + + '' + ); + + let mobileDonateButtonTemplate = $('Donate'); + + let hiddenHelperContainer = $('
'); + + // ----- + // Setup + + $('body').append(hiddenHelperContainer); + hiddenHelperContainer.append( endOfYear ); + + // Other + + endOfYear.find('.pay-via-paypal-module').payViaPaypal('init'); + + endOfYear.find('.payment .crypto-container .code-select').codeSelect('init'); + + // --- + // FNs + + function switchSlide( slideButton ) { + endOfYear.find('.slideshow .content > div').removeClass('active'); + endOfYear.find('.slideshow .control > .slide-buttons span').removeClass('active'); + + endOfYear.find('.slideshow .slide-buttons span.active').removeClass('active'); + slideButton.addClass('active'); + states.slideIndex = slideButton.index(); + let slide = endOfYear.find('.slideshow .content > div').eq( states.slideIndex ); + slide.addClass('active'); + slide.css( 'opacity', 0 ); + slide.animate( { opacity: 1 }, 1000 ); + } + + function playNext( isPlay ) { + if( isPlay != 'auto' ) { + clearTimeout( refs.playNextTimeout ); + endOfYear.find('.slideshow .progress').stop( true ); + + if( isPlay != states.isPlay ) { + if( typeof isPlay == 'boolean' ) states.isPlay = isPlay; + else if( isPlay == 'toggle' ) states.isPlay = ! states.isPlay; + endOfYear.find('.slideshow .control .flow i').removeClass('active'); + endOfYear.find('.slideshow .control .flow i.is-' + ( states.isPlay ? 'play' : 'pause' ) ).addClass('active'); + } + + if( ! states.isPlay ) return; + } + + if( states.slideIndex == null || states.slideIndex >= states.slideCount - 1 ) states.slideIndex = 0; + else states.slideIndex++; + switchSlide( endOfYear.find( '.slideshow .slide-buttons span' ).eq( states.slideIndex ) ); + endOfYear.find('.slideshow .progress').css( 'width', '1%' ).stop( true ).animate( { width: '100%' }, settings.durationProgressbar ); + refs.playNextTimeout = setTimeout( () => playNext( 'auto' ), settings.durationSlide ); + } + + // ------------------------ + // Wait for content to load + + if( contentForSlides ) { + states.content.slides = contentForSlides; + step2(); + } else { + Promise.all([ + $.post( assetWikiUrl + '/wiki/Template:Pay_Bitcoin?action=raw', function(data) { states.content.payBitcoin = data } ), + $.post( assetWikiUrl + '/wiki/Template:Pay_Monero?action=raw', function(data) { states.content.payMonero = data } ), + $.post( assetWikiUrl + '/wiki/Template:Pay_Ethereum?action=raw', function(data) { states.content.payEthereum = data } ), + $.post( assetWikiUrl + '/wiki/MediaWiki:Sitenotice_EndOfYear?action=raw', function(data) { states.content.slides = data } ), + ]).then( step2 ); + } + + function step2() { + + let slides = $(states.content.slides); + endOfYear.find('.content').html( states.content.slides ); + + if( endOfYear.find('.content h1').length > 0 ) { + endOfYear.find( '.h1 span' ).html( endOfYear.find('.content h1').html() ); + endOfYear.find('.content h1').remove(); + } + + if( endOfYear.find('.content [data-crypto-addresses]').length > 0 ) { + let crypto = JSON.parse( endOfYear.find('.content [data-crypto-addresses]').attr('data-crypto-addresses') ); + endOfYear.find('.content [data-crypto-addresses]').remove(); + states.content = { ...crypto }; + } + + if( ! states.content.payBitcoin ) console.warn('Dev: payBitcoin is missing. Please check for errors'); + if( ! states.content.payMonero ) console.warn('Dev: payMonero is missing. Please check for errors'); + if( ! states.content.payEthereum ) console.warn('Dev: payEthereum is missing. Please check for errors'); + + endOfYear.find('.payment .btc .code').text( states.content.payBitcoin ); + endOfYear.find('.payment .xmr .code').text( states.content.payMonero ); + endOfYear.find('.payment .eth .code').text( states.content.payEthereum ); + + // Add Mobile donate link button + + if( $(window).width() <= settings.mobileBreak ) { + endOfYear.find('.content > div').append( mobileDonateButtonTemplate.clone() ); + } + + // Iterate over slides + + let maxHeight = 0; + + endOfYear.append + + endOfYear.find('.slideshow .content > div').each( function() { + $(this).css('display','block'); + if( $(this).outerHeight() > maxHeight ) maxHeight = $(this).outerHeight(); + $(this).css('display',''); + endOfYear.find('.slideshow .slide-buttons').append( '' ); + states.slideCount++; + }); + + // If not mobile include the height of payment + if( $(window).width() > settings.mobileBreak ) { + let paymentAdjustedHeight = endOfYear.find('.payment').outerHeight() - endOfYear.find('.slideshow .control').outerHeight() - settings.paymentBottomBorderSpace; + if( paymentAdjustedHeight > maxHeight ) maxHeight = paymentAdjustedHeight; + } + + endOfYear.find('.slideshow .content').height( maxHeight ); + + // Put endOfYear container in the right place before the events as bound + endOfYear.css( 'opacity', 0 ); + $(domElementToPrependTo).prepend(endOfYear); + hiddenHelperContainer.remove(); + + // ------ + // Events + + endOfYear.find('.slideshow .slide-buttons span').on( 'click', function() { + if( states.isPlay ) { + states.slideIndex = $(this).index() - 1; + playNext(); + } else { + switchSlide( $(this) ); + } + }); + + endOfYear.find('.dismiss').on('click', function() { + endOfYear.css('display','none'); + $.cookie('dismiss-end-of-year-sitenotice', true, { expires: 7 } ); + }); + + endOfYear.find('.slideshow .control .flow i').on( 'click', () => playNext( 'toggle' ) ); + + endOfYear.find('.content .mobile-donate-button').on( 'click', () => { + playNext( false ); + endOfYear.find('.slideshow').hide(); + endOfYear.find('.payment').show(); + endOfYear.css('height','auto'); + $('#siteNotice').css('height','auto'); + }); + + // ---- + // Init + + // FadeIn endOf year the start playing the slideshow + endOfYear.animate( { opacity: 1}, 1000, () => playNext( true ) ); + + } + +} + +/* +[[Category:MultiWiki]] +*/ diff --git a/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/40px-BC_Logo_.png b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/40px-BC_Logo_.png new file mode 100644 index 0000000000000000000000000000000000000000..73eebf19c825246cf3f4b33a9470b9c336485bc3 GIT binary patch literal 1727 zcmV;w20;0VP)`f9KBZ+G~4F>^P3Sse>WKO)!wQ)J{~1){R0d zh>}vN4I%^!g(#_sETA9Y3l#}bLFGd$VOeeqN|BWm$)!M49ub%}s@j6$^uZ${IJ9*f zvfemp;`+5-@9aH%*!5%A8+$fs`#x z#|GY4z_ISTs{;W!Ai{3IEd(r&JVg$9#{8gc`yXQ04Vd`lJv$KX04lE&ELS6lwikW* z&xaQ?x+~y}-yny=r){^8{{HO|>KUla7gwh)b zhwhcF&rdEGTL9PdKrrcD`n_U46u8;E*xn+yYD?}+nq0$a?^2g4n^8+aO@zRcRO==vH%m$wCqH67bt}`S+)jBs*%V>@Z#VU5xDO;+&dqEvWUMJ z*xiZ4ckRdvIM#i8HC8)NWyuz*!qk5rLMvwbqm127)NUU&nkya@n%;Y}39WPo+#Z8Y(o zpRhBk3>fzS&<2@@B>r?uy|~^Pd=_E1={uN)`|=NZljy~NA>leGt0ncHUy(Zb(?S4I z@KDx-T3;SC021)pKwZE0o7eXk)4#bNd*-)!=u42=W+|_!i!JWdx#T%P3wpN#Ncl$zY&$a7;Z33=@1!rc$+;Mb5xiG_ggyVN-{`TTxrbp2$XGov@oTRET z+izlcfz8!qpurW@$kL{HoLAnG-4P5E*zybP@ZZtVK~Tj+Hel-R$TCX}^kxdOFGXBb z%L@Ch&H&cjn$si5^0he2*Iw1fzVjz+|F7{ogQ}FdibZ^%&^*AEpUpb<{`M$RQjLjh zNWbQClsa{URNrF->u_)0gITj>*2HQ2 zDtMEmUhndqMq%85Mhh-4HTj<2)SS)eAl^&gC-u*#v+SJpyOHwMzViqgHK_LcD$3zH zO#Nmkt-*Zk?(8!iI+@qU_8-le6G5s!Q^3oB)2>+UQ={9Knr>(PF3cysly}Sy^^vcZ zO2v%}jgu33ZSzUh^tmbY1*3X!QOn{=%*VfY)nWI}N3cVE=*3g$*m=NWsv2=_c`(P) zVq7xebD0UrDm?272*&zwHlBh!vl& zt`mT%C)YiS@Lk`Tj7zZfui%!T?+qZ~RbT>(`%J``KDq-YFZj!${G@pAzrW|Ef16Ix z)I<3EV3mp+!7TwGd2BBvMhSlHWe^9w_zwt{BPA=+#}hH^xtB=2`4q%2`-1~dEnUn2 zh4!8roO+_+5W*fm-ln!G{bM2qqi2!Y4IoYi_(7QR4U$(1heB=r1G9htNliWMV(wQT zTO3Zf4gecHfmOxL0PB@A*!a8G1!rKyQ~U6|Uz)g6M?Lhag`Je6JrQrNzXUgxD1=q;`)Y0J}}C)tyclF3xys30H8{*0>jmbl4#Wp8xp&7)bT zp2pzR#qlnMT^}Tz2tO~bD%&U9Px;?|o3D7s>YXBVSi#q>gKse9GDg}%-#q)wVs;C5 zw{jI~A3W@dStn|rLe;yLMpx0)tZAGNOg}%m&nr^kW zGxV+KpkJ?RTF~i!+;~N#Swvbyw8_F+fe28RF&PJ<3jLzer>ZZ6u0&7BehU5@;{Pu+ Vs+aX%BSruK002ovPDHLkV1nxKX)^!- literal 0 HcmV?d00001 diff --git a/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/40px-Ethereumlogo.png b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/40px-Ethereumlogo.png new file mode 100644 index 0000000000000000000000000000000000000000..2bd9d255f3105956b95770c84a162b1f56c1aa03 GIT binary patch literal 1693 zcmV;O24eY%P)i)UV_MsTrWWwTv(wbrkLkaDRAN!COy#}LFNZQmZtwW4WyVhF97Nxe= zi);(A+C8TaxpzH#@9d8)9~frtcki6vIp@qZcuWjHu>~p=3a_rOuRnkL_U-Fi;o}lJ zYuO4TYwduD%+>4lbCZ*kgImyEz_JxhMl!VGVA2b-*1{O`J0i-cetv{ibtsieoqZa9ab4K+QQV4N*nU<00h09H z@$vCjpMqZ-7Afe??r`5FzO&W_L^Kz9j)>Yc6p^`nK0n~$*RR~f8I;)QMgrg`MD!v6 zs45~wqh})enla{=9$uY17ndt>1$~(W&l=X+=a{(=Z6u;L4@PSudV73)e5bp&3*Us? z_!)F9iCY@S-UBe|S{L_VNa<#?`FjsPc(81e_Ut+E zBr>A8m&+5FwKg!uoF^i7!q_%P6os9LV2qiYoSY0CUVX{$6yo^&*yYSW0`L;>I5FH2 zCkOv#wOajI2U(q-6NfU6wGC_S7XX}b%Zls04oTv!-^u6mJ3PGMSp#8`^xa9A`3w<# zF>a-goUY<}b~Ffr_qxf5W9^5g3t4L?i0EHL#I6F7cOE==Amwrymo8mujEsx~sZ^>{ zpBEzfcBxeQs2{nJg1&24l%MF8-&ZQCTB zPGfLzkmJdts*Bld_FD@J3z64+)r0{^;CYd-n3>;H)%}rD0I<5cD$C2us8*{j1w;fy z1QEf;#s+U}Y#;~%$z(DZ8X97t%9giM8Vh-!Pd)`)7Rzy`3JdH6jGBP5=!@~hHLshFm5bQ1%i`8!O10-D>5Ai$o zdVNQwQjr@sZg9O`Z+#ni%tv7_ZYkevHn~=-@!Hy&q|<3hr_-a2M&k^CE+dvC ziHtsW>{zZ=tNrKJty_beo15JXZPCigiijjSR2xM`4G#}*3=IvvaP8W)8=b!ORq|-& zTrO9uR4U(TG#VwBaVM|E74X%`$g8SaT3cIt%@}hRo$I2vleC_VG5Zc3I&@%SV&Y{0 zKULM%d2t2Ci?mDedZ?;ZRsH$k;NZ(+V`KXU1_t&yG8471)1{OFpxJC*WacmDa=GH+ z!-vZNb_4j6$DjmxyeI(voJyr$7#kb=_xA1EivXTqT3WgoliN0W)bNtGcD-Y2nN!$=8 zZnFSjt$he!T2&iF^gUzD)gwoaOddRV@D(DO2Jm0sZ91I)2jFNXlX)eV%N-Drt3>pM zsy3K;I#domx$uOz<8AuXsZ*aYb0JhDEh1-$s5mt>bu$Qp-2naopza810GJh#-ML(@ zJUTl1PXK=ekO|)x78e&k=_0>{MV-X0g|4exRy7)pca1TxMI8meH<URGD}1!Lgo6tZpFje^M64^E&%wzwa7`37l~-X&1#1}D3wYV`jO$zT|0>nv(}1; z90#!4tFt)oSA!rpj>l)c(``C|b?YP@Ltw4F%gjfC_7M7%3%@y9EEey^`1Jf~M;PM1 z|4H0&`t<1!0n9RUqUXkF_VVS+A9mp5lh=klQIf4sTr*O_@5?L|5Yc^$xXu~=O1m!A*wxfz}{V(S(*Gc)rkfRnC*VVF;rN~KS`?d=Ei z{j9iiUnC;404_S+;$k+No$Z5nUmom~AV7DIwy?1DyhTLS@V@s}_{SFK`830;SX`05 nutK5m`rf^JUw@jtov{A{m0@?d(-0eQ00000NkvXXu0mjflJhp+ literal 0 HcmV?d00001 diff --git a/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/40px-Monero-symbol-1280.png b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/40px-Monero-symbol-1280.png new file mode 100644 index 0000000000000000000000000000000000000000..2024c4358ac1c2afd9a44ed275bffdc5c7c6e202 GIT binary patch literal 1737 zcmV;)1~&PLP)y7=Nlpiu0ZUQ7uk_#{#=!XOXzcS3ahitCQb**ieL33@f4}*>TiGS=0~cQZ|cq1f4O+4&fO$pehDoXe@uR%5{Wc z$q-tkuaGK?Aq;`*?6J&@wO{r{*(BR^5zYd}r6b??Yy4;|D=6zCp5wAU zQrwo(>DnYs>pCM=+##JCExj5Q&az!T%E~4gV>&Ber8GH}WsRo@O9-C=Nt(k0m?TZ* zrwB`a1#zjDA|ta|eXkL8*Q2DhwYJG~!B!a}e2nmUlW}T>fX|8eSXLS04A3eR_U3sz zMa4`gZD58blUU)fo6IvwiJa>%t6}4W z3?Zx8cJL$H#lD#|eeQ5ok>W<_=BB8a#6=v(%ir_;F@$MFPVd1bmb|TPWxebMj>zO0~EUPI*LK zIcVhynkb5_h)jvda;MYzaDIM%0zhu?1J7CJIm?+Ln4h1Y=yWSf@ns-BO2^m@HtT3l1n184Ahl#@q(`r zekX>)*@hn(vWX{Li^4Hh*4YK_`xxbFV@IQrF{WI?RkbZ5OM}6{SZguHEM{2VM?@Hn zM)`x8!|ydNAd6Oogp2C0yZoDW6h+ph%PE-=nF5xLF{tXe1olYPBnJthY!VAFH#axc zYPEXCn69c;oTtAMk&85>&riSmoGoYwd?q6QD-jSe*4mxDy}f&P@7{e%#TPBgY8mgr z->T~Q+KNPss+y`o6*XO7|JnvF19=7j_gmiwziTZM~-ZW$ghESC?Dt& zN?!;IgaAfFjJMGHs(SIxojc!B&ZbhC7{9}_XV1Q|)?QK72UVr2@fz3zYweYjCr@r? z_qKAay_>1M{y1~y%x{b_E2?^`DXk$Q2k85iwf4&G+qeHy8^DWdC8@oenVp^eQdJj# zTTs+$2&c7bk^r`&s<%{iVRm-*%LY!x91RV%<6v%XZYqkRb0V?`%!o*7pe8lFb_;A8 zV?Np4-TfluSdT}J1x-TWt;^Qd)?i^_VdKe@CpWFN4@ATQhg9_~5otB3ITVp^fqw&k z9UB|_(}@!&zFJ#bO9&Vugt>DN%4rT&5_eC(-!~f@8{OUA-RUTbj#_JHj4_8*wX3Qa zV|J{ykBl*!qtWQ$`1ttt@#DvL`u+aTKB!$(e>{cSn)>bc>}$tMO%lKkI_{gq@`eMy fWq(P$F@paG&z&cqtlfEc00000NkvXXu0mjf-dsT0 literal 0 HcmV?d00001 diff --git a/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/blue.jpg b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/blue.jpg new file mode 100644 index 0000000000000000000000000000000000000000..038015aa10d8d83f480349164df3d9527cf22210 GIT binary patch literal 9990 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 literal 0 HcmV?d00001 diff --git a/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/green.jpg b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/green.jpg new file mode 100644 index 0000000000000000000000000000000000000000..98f6099a3b5a3d67489e6921c895bac140d2f82f GIT binary patch literal 9659 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 literal 0 HcmV?d00001 diff --git a/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/pause.png b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/pause.png new file mode 100644 index 0000000000000000000000000000000000000000..5a758def52509f6b6471c7ab1e635dfa42b3194a GIT binary patch literal 595 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nC-&H|6fVg?4rr6A0By>S0EprB-l zYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&K-CXCT^vI)8sE;^m?!Kg;(Go} zQip~{Skn{sOF11sm^TzSJ3A(F1`4<+DRPy2xaiqP?JV?c)o{>IEt<$>$tt4#pCM?` z58(qf4m#X7+#f1vd`LRIIjO7smU;F1b7!WV@8Dp#n^(SDqpS9T*@lCU<}e;V@LK2e zJ+s+o<-2RHy#GG=V#b#Umv0TP4?I=1+Rq^0IIs8}%YhD#d%u4lU@R!?+_2x!-Uprs_IbMozKLESXdtp6t!HPb(f*Tf)SNGE zIB@mA!j2PFCoA4%uRXAfHHYddKMLIr=t2TZ&{2HM~d=$IFordliZL(1x^gt49^ z`+MeN({4`l_1M?xVV57V`fAaG>Idie#a=Kjy=~+D>5`@S_iMM`ev_yW-H^}qWlizB zBNCgPC1!rloMrd_`a%=m`HamBwZRV-7QeglXJf^-(tVm&61G*OiSbx7+cD;E(y@*x u`uJvI#~UW|h? zK~!jg)tOId6iF0^ziKjdlAG*JOp=foOxYM3?>GQ zdQdzjh=)KBRun{3P+4XDv!FX0MTKP%MHEBGm~2M7JS2@_7}GtO?&+TISY7q__)*ob zsaD1q0Q&m+ewdt`++bPOmzI{6LRVK;krbjF$5{&W0>1!@XUE5ZbHFhX8Ba>C5*Ba? zIKVeqfFFUwz%$o%_bH`R5^|MLj^mgR^B!83mC5CDf5dJSfE9AyX3z8PYOM!*dU{sJ zY7{_NVE_f}DV0j2uIqMct?js^=A#;6pXJ7w0pO|DdPmekK`cbr=V#!m*82DE?(Q{F z2?Y`M&;>CGoCdl@WFmrk-=&s>=h6cF3jCwB-WyTPibR!gIX8h05qTPQ;iwWWXFKp% zYkjJ>w|7~Th2s(iuz`-Lsi~K)>vj$g4=;+MXq>`6D~vG%g+k%J)_QBL#p)sKvl+Nk zYqyN+&;?Nh`hgx1nXYDGJrkbG5d57CPv#D$DdBRqd7k%3Ydz54-@n8kOtUb|bj!|Sv3O5wy%N$d z?6VO#1L@ww<$P{#ZvLrJ5(coRr>EC8k}$wnBMH9(o;QlH0Xjv*YXspjV7G`|hIGHy z3^3Hx)U;kiM*P7H0LX~Qz48ZXOZY9YAJ|e!7SfY&2{;Sng6^Z!Abex?tL*PE zlamzw4>&3!gViibLiiJK0yr)rQ`Ii6xA0}#whv~r*?$*WpkBhG%yg=2wHAu|wf0dd zbqLrLg)GFEum@ZKy7Kw_yC@6CA^hj;AE)~<)Q(j64e*=eI77z&y&3~i?BNnK7a;3J zWH3%ys6FB9%$)v06f$90sPGG=)RBBXKOCt|2&xsH0FJe`ww}ynGXKXR6hv5I16;Ii z`*1d!eI2Jz5H|20SUJy}zh=LtZr90aUTn*^R85@)q_zKy`*(9d$R)E&{}^p8#<6S;xTY(K>P23X|44; zXFcwdHewYR8?f7R;HuX8D}aQ|2!KPtt1t`?TlY3484&>IfG1%X?g1!GOiYv-jm9#= z5hiD1KJm*QRiH8~I_qR;K1*QPvJohN zafkq@$sh<8X+1G*lNsX}u>mZ~_ORnL@YX@2V^I{n9`u}XjCc>6)mr~A0kqa1ff?Lj zQXiTg5S>wmG+TXRd?KJ{&yk)wj2Q^oWrRs4Oe*9zL6{81^o4ks>TV9*Yj_R; zFVgB}zf5&~R6BqO#|4evq0EkN#8=5?6m_!>#CP4vH%5Yggo#f~NeEGnz;)o+kORFhs>$)t z>>yz0t2cv5`8Px8}N2Sy$(%&|(0GAB{dIpVc%&ZXN4zLb<2eyE}fn%du xs|BrlCJ2J#z(4Iid6h literal 0 HcmV?d00001 diff --git a/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/yellow.jpg b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/img/yellow.jpg new file mode 100644 index 0000000000000000000000000000000000000000..65f98cf01b193711e75c16085cf0ecfaa292764a GIT binary patch literal 11032 zcmch7by!v1w)cWfhje$xrn`HCAl*oJBO%=&(xtS5bcduMsiX?hf=Gk3NP~#%Z-Kt& zyyxEUp67n&k8kd0>^b(VHOClhj6KJ1E%+>a8NgLhR8|BK5DB z5D9j`13ftDpIy$2y*cxnL}gIxU^BJJ@5Mt&>L z2y_f$5>hg9CT12^Hg*9)Az=|wF?j`;qS9Su6&+nYeFHaAPF@eaeSH1= z10o+qJ&ulvjeGJmEj=SMD?6vKsJNuGth}PKp|PpC$kmq{R4wT@7_;LPECKB znf*MsvbwhZbz^gDd*|@z_~i8L{Nl&uja)Z!{#AYp_Fv?}1LZeB4#0vSfX0L10n)%3Ics4zrzB5d94qkuhmODFU%^bpR=#o6#A{I0uJPIWq>qxi zY^Gk$s8e7X5J;)0>}4y%Oml_mSD#Vg#m)D-uk)BMROa0s^@NJ`t`a{jAJV1>oTj@M zv=!MUF6ftbEZ8>!4I_KKR-$CCbB8*=z)?746Iut|3KoZX<{?dgEXbc5q(@GH*3a=s zf5O}SZfY8o8^Bkjt^0L6SIgG`gSD`pm9;Pq_}>z{XsMwlKccM2YWdFPbW6Nj<9u;# z^$L)H=qW2XbW%rh$Q@rRA-++r^WpaW#l<|0} za{Ii{6#E_ik%!cj2f;HjXbu}uxJ4rKebf{*3xeBXdGQYlF9PP~P*bOwd-!lQ#FH(c zBmH)1CvHkAA???^!>tpWC7+bDT2fOY>CO9h?f9g*xU>L5`s{d}R48 zYWdbyJlikyrJ9xc#MX9a4(B_ZqUiBf6vgm^HEL`O7HmK3iQ#JJbbMq_H_3Z;$Ct~~ z<3h)wurm_(|LS%nuU-YlV$f;Ij0(;>hGIRaUBjO@HIA93L|b>+6xn}qf1}T8Yh`-p zeZL}?F(o}+>Py~9iJ4*tX{?0t>dUAxwD<0u>zm@8lcfl?YYGSbc~Rsw9gSUtb>B&; z(MK(yZe8|NFVsW!X<+l)QAo|Hl(;n=P<(v70Q(wizs74>kI)$pIFR4$_K753dYy#i zmoLpFra|mu-#X%-&+e^Ag@T$oDf;*y-j{}p%xV3l13mWVJt2=yx?ia^#L>y~A;@{{_yzGHb!77qLbIxZ3IXKX1M~O0ME7=tc)%iHM@}dh(xm3EKPrH_?iL#j;B zDh@j8`fecu^fkID%l}zhiX<1~%*Hg*<1nI2txc-vM-rCAVQ;wTd}FO_sqaU48dC2` z?#^*;8fOvfB0=qe)7`iqd7bhrWijN6*lHECJr6q;=bIMJ|V7|dwXbq6|o8jYS-X^tkc$8I6%($!Fux& zjP)uK%YV)JQ$s$5kcAF5g`U3E_(f(GYvz0K;aai?oQxm3_5MWV3JwUtfxzsAd&{yg zLW3M9P;B6ah@w_Ue<1h60n@?ji0O7iGY&YAVq$(eAG*b9N@~8QknIu#2f!)YO3#TV z{MhBG8+l1bKhJtyAI%7x&h)AY%scbF|B2=5G)qRi88Aa_DbkBA%+)_>@I*2xj{F9t3>3odP(j=WH5+Q;CIhMlKO^S-%A5F<__Kj(G*u^N%!NaNgHhLj3M z`>*BBCw-F!N;%+8dH(6pg<;~!C>OmNWAqBIA8!vOW}d5*J^8W!wq4|!X=~y+XEPjF zBM&{)TTL@ak9l`+y0N2jZdYH$TE(#R?aIi~>zuBQ(tbk^)aQJXEIX>n^5x8MI)^ad zmlmtwGSV$<|5HCtoaNju^8+Kb|LW4)Me#d4_Kh%EuTi^nZrP@YI0`4Rq5@>X3 z5%l`mVHjl%gi!}Sn>R>}eOE6)bj`HxOg^4EH-5L8%#+Reogl`)nsVXqcCJm}J}gvi z`O6mtn>271oEw|;C*-PeyT2QThso^W)C6`V7QZRlKD^&cDobh^)|X_M2M6x2UjNEK)rM*P{EktzHM(KvIdvu^@xW%dpPVGLt!V69?#xlBvg*HyaMgmz;unXa&N z>Pq6E+m#y*FyCISdg+b;GaS&fh#&R;3YzdZ6L-a28NASlR2@S1 z_Lqz&%B2H}iEl*rC7ov_gjaV>eFPKn*FK_s9HD1LLK(E)hrZd?i=(V~Q^!x0KHkq+ z!*zBwLZ{bv>G`t52oBJ;cJH>rfwB9obr@H&54BKA&k4RIChxDx@V6(c5439#@whV6 zOK;we=~7$XS@GaaRNpiZOLI#G4{y-#9|`_LSN?}f$F4qxmMSV;oq^F_f5F!I@J9xk z^me&)LCwqkX{&b`gC9?{U?ExlZ*EQ(<_dle2rEA|#XvW|B&*BaUAiLUX+6kIE0Pw@ zp1FQ481x;lY>yTUAo4{x?ZV}SaTmwcH!l5tDoC`%sZBVe%aMcPmo+!7b^S>l*C9!m z+rv%%p0f(KkL8t&o=P8{P6b3RcIL#L@c5?(LC;NRtVJgilC#R|To1X!T?KeT$J>1UYNF~N*aIZ z%N)})6W*3&CS1i1e6Ja@eP`mhy$Tf~qS9IwR~JwjhRH_%<%rm*Hp^uJJI*<*=6`od|Bt^gS-O9tWJb?ut zG+kC~mztv|p|R1SC7#WfX4I86DuN_BBTpJ%g3k9cqElxjsb-^cJ3B}o(j}A-T1|Bc z2Z;PljVDhr6NP+o=G2ltH09?tRaf)!<@w{R2vZ8t6VIm z)&cAGslO{T7|Pc^H$3(*ZM-RlBVCvDJopo%XW#kdr`!5H#j0gO=l|5FC{ zZ!<**{4)SwMSQ6&FK@1?t)Zx_3Ih=n5bel!v3B)B;sF3xw}+nEN^-Pd@=lAo0bl~S zAlM=b&{c>7x(5o7^EPhD+!P&Pu4r?vkZ zZ}m6c+QHKm93udZVYG2|1J_41{LS0k@Ig1ctBW_dx7%_9pFIzqBS@5h5}*vI z0h$0UUw5f`{(=z`2Zkt z3bv>GvyJfu0N^|VfR?_0wpnEYz^iBgApPua>1la;of}{b(GEo5j>-T4+Xw&%#sC1r z__yA`zMFoaXa)duL0zei06=yQ05IEwYn%KJa^Jvs|IpjN9rH(jw+P!`NY8&--y&@P z>EyrW!Qb8>Y?^=t1OWt>{zBNOz#AVC5d@=dRPno@p`&6zkWi2jL7<8X?D#L;C}_y2 z5F~U2MED=P2Nwe3j0mk73}^Yj7eGXsy*PEhpEdBd%X%*ifW)64<9rm;t9Q1>D|4~B zDz%TcSz>GP!*%MlVB0v7yPRJ_Wm$Q$8eGwC-uMaKX#M_=OZ!?M^`lIOkS=5mlZ#-V z`=qnPy{b%SEC$6z!?qXR4X5^o^ELR-)GmMI5gB-_3U)hL)7~?MX658yigG_pa(~P97Xb}cRqG{(kIjAcwaF%;8Iwj!gIA&LL!X9{=V{2Uc1HM%69&ehG>vn5CfH3XuJ^Ly&3Se-YC?b%wT(fU(nJhYO zNo*Z|mSVN;a(~*@Hgv0kP*8OYxFEKRfDC|m z<$*JjSBSvfolN$pTG1-V(>X8c=QyINvywg)HB|7C3^HAjzY(S@PiFjPSYp7}Cq>KB zc#<*rRlx(((PL595rQ_rA#Q-dLs2ZAPP)MCu3^8MQ8@wq^v$AFwNYa$zhGcFu4hHj zFw_^6Ui22gL_|hMK|=j4{tdv1hffC}6M)DpE+4;^rAKN5Exoo^_!AyEt9k|*9nXl~ z@mrmMx1%(|wT{tlQ&~SU8@@(c@nWi9AAZ@YR`f0G5 z#)yWJ#4m*FKE_m|!@j)Uvbcb#aG~_Q1lMH`RAr~kp!!77@Gg|yKurVXF%mF~cDAh(K^*97mN$p5< zvKW{ZDY7*n8)!oj0#Bbh70m17R$?0VpbwcBGns4fRoLlK%tlc&evyCo^zEyUc}x3Z z8s$(cq`}7LJ`9$j&3jVevHRoq3!fNQJV8&H{jNwgjB{rUmXwzBjh*fZMwOCi?Axxb zuOfHM3r6i>NxKwWDZj1p*?S2yYTBi{#YRO*x+69) z?*q$Fsl{ujIgEhyUiQyD=S*ff!G3j4&yzhyRp!vQYM zfc^j?`iQ8=D9FgS4gm&T@IeM1J^_G=hD%7tOD`zv-9$voz{sb?qiq@SgkL5+_06q2 zAl|qG9B`aA*D??!i5_+O+D#LYN1`_nsN9{2GsV25s6E*D!TPA#HpJmk^^B9ZdU}u1 zxM%{&XI-5{Me4n&+PL?II<5iLwt+L=A;SLY~P6+#VI@R!GQNj;KueK4hWAbWWhxcul z7I9aSC!E=8bHHTLpG%?)OrioS1VfTu6g4fx#kIi&RU^nT|aVsdWTH{W&#JWhXdMDoQw$_U$I$ya-LQMIo4g*LN13?vzIwLPA7`*!arO1tH`JG6zSfttz1#?F z=f1DHCTPnga){ZT)C^skTYud?#e#PjBS4xqxSdUPwo3K$a&jl;a;QC_qvK)~lR|CU zpC#eh%WLPhj-c6YeZ5!PD_gs`Q1V4yCAYnl(Neqd z8!5`Xg5Z=I9o1P9TUb`&21BS>u7$Jn+)piOaStuMp!|yDLKY5kU2VmC8hi@=)y#sm zfqrt>HBz|9J;1pmr|GkCqbR$V`pEh+w(9p3jr6}-r!wocWYK0Yt}AptMd9c(Eai+~ zA^kYn!YP(6>`+1#&kX~g>20KYv_;g?$*xorDt_%onq|B2xC*Q>#7M8cZ-42X@&)V5 zOgNO8cxjG*Ok9UcMKp)9CxnkYiPZdnDMDA{hmtCeLnnH=1p^})r_^LtlI;|Bj)cxO zHFIoR5yj=R$`b1xCA^OQ${b%qD^Y!egeg+vH+=-J-KJdp`vmWpq+vov!?$>yl83R> zg}18%V%kfOv*!1oMz0^pX5{Z0{#axcAs+T zJ)gPa_jbj>$aeL`Nh#v#KnkVmqx)EM($xniItU+(Gc=tYFo`|3WUP^xXeJb`tV=3a z+?wO6moja!Yezc$C>xAiyECqsB>67d4NXer@%)&44qtI-zvQO~Ve)wr6MYU@Su;{R zu#l7I<0n`sxa^$@z_>E%yPu(L*|*qdNY4?xaul&@1_vUo9}Af_9kdFCvsw8~1Q1k9 zO4l7OLJ9ZProw&|#k`bXb9nya0Rx5CPO3liTv5j8gnOB6u^?)zS19YdV2ZAD?bmN> z%f?A7`)y&FZ)UL6<(ggwDIwEEX*WZ&H}Ll+35UC*!>X~vR-YL8`ox7GUw&nZwW0{} zxNGK}9-|f_=<1M9Da%jb@oE(cxvI>KSwctT-&JNUW@B7Stw9-h?g^#j z7Z_<6nE6SCB-Fnb*^H4MuEM;R;V5wr3-7XWcmC~+hl?%+D&CO>D2kj@fX3 zr1!M?%yfzQV|>BU5%q?FZ_&w#GNmqay(kER->h@ID(XvBEj2n4HdO47v%ifYB?b55 z>%alLF(r!Wy_y&<&F%6jy=$nCrJnr70u{-FnsZr|M9i({&caP_z-s!Nh*PpWM#?tb z3*-_Kscfteu0n^2y0|X(+OS#3nf{K>j*I9aZyDnNaj6ZAUy@hR77_BKPyxn6PcNj$ z2jhQF&+vTsC}x`gEaZKIB3UokV$Xd}eOEHNoFtR#gVgKZkGh$!WM1oaW>m~uwz~fy zt5S>R(-tH%Rmb>J_B@V^>w=!$_ptQQxm9CGJTrd8@IAm---qd1oE2t?2OO5~bsUcHJKJqxe}LG!Q16U{PN1kIL$eetG+>K3((O`FBa z&SGAZh3=8q zV5uUSbj6qYZBp^vUy)sy6e_X%#sc=^kYpr@8aVn7pd!xo2@iN0*m*uwa+AcFdIUx^kun zHvaDUv<(_z@SHEsnBe|*DdluBu8vhH7Ws|zy}6pNi_kXm(J~^N?q3fDd2H0|WUQsE zEXD8IAIBz&(f0(Oh`M2i;wNE+RzECCD>dG=VK1D+{3Tp%geSE|<&*UzwlASi)klRd zeVH>%Rp&jeg4-0gT3OkrBJ)rBZeM9c6BFmg_dhdvI0?kJu1_#6a3Oh3u>5=mp{c2S zw~CtefrxgpFGxLl1UmOl!nuLh-#1S^J@IMJlACSIu56!s-?)=8ZmzE!6KXMfvb7TP z9aFxc)`K?|cQsyaOgQ%;a+PtVoPs2(+bqQfD+MNa56LHWo2hQQ8w@+N zxL^kVI|=`jq$A+b0lc_iw6WxossAg9l%@lpM!=SR8k$c6ti0;yD!fjK+lQL3FkopI z;(9=E9sOooG;4oItdvVKGBjt14?gjv#ff# z!8_*X)Fk=HiwqP%$?i3W;FjOzo5SD_<+BHokQ$J7+CBMvT|Ztan1sucSS2;GB&lP^~JUy7Ij2D6TMx8Hyaj11q>_!>AE~7 zE=gHT3&*$VMygKEEh+2s~P`tzO@aHj_V?&2aCQbkxG zApo=pG6a$NRLMaH03xk90Pyx$-2Q8THf6@U$@?Kl2$0{o0EnO5*i;LbR<^*>BRmzf z>zjjH%ig5IxW9@KGpT+uf3M)BCmq@)0BUSGAYqTbBgl~H0-n_ZZG&-L*jLLMw8+R7 zP)K=+f{hvl;VY`9c11kyds^S_I$GRgd%Rx$j5A-rRWJK1%)DwEEk3Mnc`^(V{%a~^ zd>rC%6%|eqM!UWV`|&x_JE(|Vv#_d^5!lHGc4`5>T8JDIxhR3nX4ivrQJ)2owekvu zW`%bR7Iz|3qYm0h-bQ$lHO|IiUDOSKY`G%%n1#<}v~O@3ze)ZKQLALg((*ZE@Lu^# zWX=d#JB#M*9RD;)6naCgtjgH&k^B%k64E#uSw$veJh=UMmR< z5=*N*;$5uRkXOKC|19j8X)(eY0NWdAg6sgK0Fp!v3hQ&B@-U&QYVVGn82daStqJtF z6z?YF=VYlwd@VTznUQ&@Cfu*_t8_J3k>#l)^Gw1pkYp4T%C^g^1>j`g+G=!FXE8<7sl0Lm=DqzH9zF4a}SSG8l091!Vf9EYao?@!-O-W z!C^#Z(gz3Lvy>KM?u29#3~6@8xjP}sTF7gS7ji|lHpS=sDAS`+@LFb7>S5^7;#TOp z3`RK-k5Ea;!YsRXkmRcyBlWEv_nLy06z8qEJ5|4qCCqC>8dzl>cc+Go1ijQ~O`UVF z{rVG1C*UqQ>PXqaeSVu@(|}>}CQ9Bq8SAA&K#hz{$O zrIqu4<(MNp_9-()wvs|EAL1NSbUgfl_cMlaBCXHk92uATO0x7BTcrVLmajKGmP7&4 zo4SE${2x)=W_oWctKJi*V&mcHhY>w|fNS%CGM;!GOFw*1TE3w6mA?C7slg6w5?bWoF4fe;1Mf0N7J{4co@|yZ^Wv(z}1$GLy zffcfM=ODJ(9WmdCFrqQ-sC$-aUByOU@oZo*%fh8nkTNS_5(9ZYVm76DhhuU`ltnQz zAyvRq31CMfK@R7?v!iVm)q)<*C*pY~RJeg>5brJ&*DU@(4LveXsj7hQ?3oxf_4>_X7Cm{{!o2S=0ak literal 0 HcmV?d00001 diff --git a/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/jquery.cookie.js b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/jquery.cookie.js new file mode 100644 index 0000000..8218817 --- /dev/null +++ b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/jquery.cookie.js @@ -0,0 +1,114 @@ +/*! + * jQuery Cookie Plugin v1.4.1 + * https://github.com/carhartl/jquery-cookie + * + * Copyright 2006, 2014 Klaus Hartl + * Released under the MIT license + */ +(function (factory) { + if (typeof define === 'function' && define.amd) { + // AMD (Register as an anonymous module) + define(['jquery'], factory); + } else if (typeof exports === 'object') { + // Node/CommonJS + module.exports = factory(require('jquery')); + } else { + // Browser globals + factory(jQuery); + } +}(function ($) { + + var pluses = /\+/g; + + function encode(s) { + return config.raw ? s : encodeURIComponent(s); + } + + function decode(s) { + return config.raw ? s : decodeURIComponent(s); + } + + function stringifyCookieValue(value) { + return encode(config.json ? JSON.stringify(value) : String(value)); + } + + function parseCookieValue(s) { + if (s.indexOf('"') === 0) { + // This is a quoted cookie as according to RFC2068, unescape... + s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); + } + + try { + // Replace server-side written pluses with spaces. + // If we can't decode the cookie, ignore it, it's unusable. + // If we can't parse the cookie, ignore it, it's unusable. + s = decodeURIComponent(s.replace(pluses, ' ')); + return config.json ? JSON.parse(s) : s; + } catch(e) {} + } + + function read(s, converter) { + var value = config.raw ? s : parseCookieValue(s); + return $.isFunction(converter) ? converter(value) : value; + } + + var config = $.cookie = function (key, value, options) { + + // Write + + if (arguments.length > 1 && !$.isFunction(value)) { + options = $.extend({}, config.defaults, options); + + if (typeof options.expires === 'number') { + var days = options.expires, t = options.expires = new Date(); + t.setMilliseconds(t.getMilliseconds() + days * 864e+5); + } + + return (document.cookie = [ + encode(key), '=', stringifyCookieValue(value), + options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE + options.path ? '; path=' + options.path : '', + options.domain ? '; domain=' + options.domain : '', + options.secure ? '; secure' : '' + ].join('')); + } + + // Read + + var result = key ? undefined : {}, + // To prevent the for loop in the first place assign an empty array + // in case there are no cookies at all. Also prevents odd result when + // calling $.cookie(). + cookies = document.cookie ? document.cookie.split('; ') : [], + i = 0, + l = cookies.length; + + for (; i < l; i++) { + var parts = cookies[i].split('='), + name = decode(parts.shift()), + cookie = parts.join('='); + + if (key === name) { + // If second argument (value) is a function it's a converter... + result = read(cookie, value); + break; + } + + // Prevent storing a cookie that we couldn't decode. + if (!key && (cookie = read(cookie)) !== undefined) { + result[name] = cookie; + } + } + + return result; + }; + + config.defaults = {}; + + $.removeCookie = function (key, options) { + // Must not alter options, thus extending a fresh object... + $.cookie(key, '', $.extend({}, options, { expires: -1 })); + return !$.cookie(key); + }; + +})); diff --git a/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/jquery.min.js b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/jquery.min.js new file mode 100644 index 0000000..2c69bc9 --- /dev/null +++ b/usr/share/doc/homepage/whonix-welcome-page/end-of-year-banner/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="
",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0Whonix Welcome Page + + + + + + + + + + + + + + + + + + + + +