solidus_nexio 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 61f3fcbac26957d33c4b2ee7180cd2281321eab0f24830fcfc8d6fb5efc60c6e
4
+ data.tar.gz: 10f8e6f1442cb03b3a3df79d6e19ac9ede054c802d8c7836371c6dc65966816a
5
+ SHA512:
6
+ metadata.gz: 94b0ba895640b8d7d490968a5e8a40a172a178a091c22cb8c6bc9f295fe90c39541d717e9ba1eeb011bafac195b3926e47bda6ae2cb4f67f3852421e157110d4
7
+ data.tar.gz: b2aa9cea065f1f41cbc24672bf80af58b6f300e6b59bc33f1f489d3e8909693b444c48f17465ae3a82b029b8ab7b8793f6e09a280a2aed86d047a757d1dc67d8
data/CHANGELOG ADDED
File without changes
data/Gemfile ADDED
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gem 'rake', '~> 12.0'
6
+
7
+ gem 'solidus', ENV['SOLIDUS_VERSION']
8
+ gem 'solidus_auth_devise'
9
+
10
+ case ENV['DB']
11
+ when 'mysql'
12
+ gem 'mysql2'
13
+ when 'postgresql'
14
+ gem 'pg'
15
+ else
16
+ gem 'sqlite3'
17
+ end
18
+
19
+ group :test do
20
+ gem 'rspec', '~> 3.0'
21
+ gem 'solidus_dev_support'
22
+ end
23
+
24
+ group :tools do
25
+ gem 'rubocop'
26
+ end
27
+
28
+ # Specify your gem's dependencies in solidus_nexio.gemspec
29
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021 Whitespectre
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,36 @@
1
+ # SolidusNexio
2
+
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/solidus_nexio`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+
5
+ TODO: Delete this and the text above, and describe your gem
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'solidus_nexio'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle install
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install solidus_nexio
22
+
23
+ ## Usage
24
+
25
+ TODO: Write usage instructions here
26
+
27
+ ## Development
28
+
29
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
+
31
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
+
33
+ ## Contributing
34
+
35
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/solidus_nexio.
36
+
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ task :build_webpack do
9
+ system('npm i')
10
+ system('npm run gem-build')
11
+ end
12
+ Rake::Task['build'].enhance([:build_webpack])
13
+
14
+ task default: :spec
@@ -0,0 +1,2 @@
1
+ /*! For license information please see checkout.js.LICENSE.txt */
2
+ (()=>{"use strict";(()=>{function t(t){return"0123456789abcdefghijklmnopqrstuvwxyz".charAt(t)}function e(t,e){return t&e}function r(t,e){return t|e}function i(t,e){return t^e}function n(t,e){return t&~e}function s(t){if(0==t)return-1;var e=0;return 0==(65535&t)&&(t>>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function o(t){for(var e=0;0!=t;)t&=t-1,++e;return e}var h,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function u(t){var e,r,i="";for(e=0;e+3<=t.length;e+=3)r=parseInt(t.substring(e,e+3),16),i+=a.charAt(r>>6)+a.charAt(63&r);for(e+1==t.length?(r=parseInt(t.substring(e,e+1),16),i+=a.charAt(r<<2)):e+2==t.length&&(r=parseInt(t.substring(e,e+2),16),i+=a.charAt(r>>2)+a.charAt((3&r)<<4));(3&i.length)>0;)i+="=";return i}function c(e){var r,i="",n=0,s=0;for(r=0;r<e.length&&"="!=e.charAt(r);++r){var o=a.indexOf(e.charAt(r));o<0||(0==n?(i+=t(o>>2),s=3&o,n=1):1==n?(i+=t(s<<2|o>>4),s=15&o,n=2):2==n?(i+=t(s),i+=t(o>>2),s=3&o,n=3):(i+=t(s<<2|o>>4),i+=t(15&o),n=0))}return 1==n&&(i+=t(s<<2)),i}var f,l={decode:function(t){var e;if(void 0===f){var r="= \f\n\r\t \u2028\u2029";for(f=Object.create(null),e=0;e<64;++e)f["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e)]=e;for(f["-"]=62,f._=63,e=0;e<r.length;++e)f[r.charAt(e)]=-1}var i=[],n=0,s=0;for(e=0;e<t.length;++e){var o=t.charAt(e);if("="==o)break;if(-1!=(o=f[o])){if(void 0===o)throw new Error("Illegal character at offset "+e);n|=o,++s>=4?(i[i.length]=n>>16,i[i.length]=n>>8&255,i[i.length]=255&n,n=0,s=0):n<<=6}}switch(s){case 1:throw new Error("Base64 encoding incomplete: at least 2 bits missing");case 2:i[i.length]=n>>10;break;case 3:i[i.length]=n>>16,i[i.length]=n>>8&255}return i},re:/-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----|begin-base64[^\n]+\n([A-Za-z0-9+\/=\s]+)====/,unarmor:function(t){var e=l.re.exec(t);if(e)if(e[1])t=e[1];else{if(!e[2])throw new Error("RegExp out of sync");t=e[2]}return l.decode(t)}},p=1e13,g=function(){function t(t){this.buf=[+t||0]}return t.prototype.mulAdd=function(t,e){var r,i,n=this.buf,s=n.length;for(r=0;r<s;++r)(i=n[r]*t+e)<p?e=0:i-=(e=0|i/p)*p,n[r]=i;e>0&&(n[r]=e)},t.prototype.sub=function(t){var e,r,i=this.buf,n=i.length;for(e=0;e<n;++e)(r=i[e]-t)<0?(r+=p,t=1):t=0,i[e]=r;for(;0===i[i.length-1];)i.pop()},t.prototype.toString=function(t){if(10!=(t||10))throw new Error("only base 10 is supported");for(var e=this.buf,r=e[e.length-1].toString(),i=e.length-2;i>=0;--i)r+=(p+e[i]).toString().substring(1);return r},t.prototype.valueOf=function(){for(var t=this.buf,e=0,r=t.length-1;r>=0;--r)e=e*p+t[r];return e},t.prototype.simplify=function(){var t=this.buf;return 1==t.length?t[0]:this},t}(),d=/^(\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/,v=/^(\d\d\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/;function m(t,e){return t.length>e&&(t=t.substring(0,e)+"…"),t}var y,b=function(){function t(e,r){this.hexDigits="0123456789ABCDEF",e instanceof t?(this.enc=e.enc,this.pos=e.pos):(this.enc=e,this.pos=r)}return t.prototype.get=function(t){if(void 0===t&&(t=this.pos++),t>=this.enc.length)throw new Error("Requesting byte offset "+t+" on a stream of length "+this.enc.length);return"string"==typeof this.enc?this.enc.charCodeAt(t):this.enc[t]},t.prototype.hexByte=function(t){return this.hexDigits.charAt(t>>4&15)+this.hexDigits.charAt(15&t)},t.prototype.hexDump=function(t,e,r){for(var i="",n=t;n<e;++n)if(i+=this.hexByte(this.get(n)),!0!==r)switch(15&n){case 7:i+=" ";break;case 15:i+="\n";break;default:i+=" "}return i},t.prototype.isASCII=function(t,e){for(var r=t;r<e;++r){var i=this.get(r);if(i<32||i>176)return!1}return!0},t.prototype.parseStringISO=function(t,e){for(var r="",i=t;i<e;++i)r+=String.fromCharCode(this.get(i));return r},t.prototype.parseStringUTF=function(t,e){for(var r="",i=t;i<e;){var n=this.get(i++);r+=n<128?String.fromCharCode(n):n>191&&n<224?String.fromCharCode((31&n)<<6|63&this.get(i++)):String.fromCharCode((15&n)<<12|(63&this.get(i++))<<6|63&this.get(i++))}return r},t.prototype.parseStringBMP=function(t,e){for(var r,i,n="",s=t;s<e;)r=this.get(s++),i=this.get(s++),n+=String.fromCharCode(r<<8|i);return n},t.prototype.parseTime=function(t,e,r){var i=this.parseStringISO(t,e),n=(r?d:v).exec(i);return n?(r&&(n[1]=+n[1],n[1]+=+n[1]<70?2e3:1900),i=n[1]+"-"+n[2]+"-"+n[3]+" "+n[4],n[5]&&(i+=":"+n[5],n[6]&&(i+=":"+n[6],n[7]&&(i+="."+n[7]))),n[8]&&(i+=" UTC","Z"!=n[8]&&(i+=n[8],n[9]&&(i+=":"+n[9]))),i):"Unrecognized time: "+i},t.prototype.parseInteger=function(t,e){for(var r,i=this.get(t),n=i>127,s=n?255:0,o="";i==s&&++t<e;)i=this.get(t);if(0==(r=e-t))return n?-1:0;if(r>4){for(o=i,r<<=3;0==(128&(+o^s));)o=+o<<1,--r;o="("+r+" bit)\n"}n&&(i-=256);for(var h=new g(i),a=t+1;a<e;++a)h.mulAdd(256,this.get(a));return o+h.toString()},t.prototype.parseBitString=function(t,e,r){for(var i=this.get(t),n="("+((e-t-1<<3)-i)+" bit)\n",s="",o=t+1;o<e;++o){for(var h=this.get(o),a=o==e-1?i:0,u=7;u>=a;--u)s+=h>>u&1?"1":"0";if(s.length>r)return n+m(s,r)}return n+s},t.prototype.parseOctetString=function(t,e,r){if(this.isASCII(t,e))return m(this.parseStringISO(t,e),r);var i=e-t,n="("+i+" byte)\n";i>(r/=2)&&(e=t+r);for(var s=t;s<e;++s)n+=this.hexByte(this.get(s));return i>r&&(n+="…"),n},t.prototype.parseOID=function(t,e,r){for(var i="",n=new g,s=0,o=t;o<e;++o){var h=this.get(o);if(n.mulAdd(128,127&h),s+=7,!(128&h)){if(""===i)if((n=n.simplify())instanceof g)n.sub(80),i="2."+n.toString();else{var a=n<80?n<40?0:1:2;i=a+"."+(n-40*a)}else i+="."+n.toString();if(i.length>r)return m(i,r);n=new g,s=0}}return s>0&&(i+=".incomplete"),i},t}(),T=function(){function t(t,e,r,i,n){if(!(i instanceof S))throw new Error("Invalid tag value.");this.stream=t,this.header=e,this.length=r,this.tag=i,this.sub=n}return t.prototype.typeName=function(){switch(this.tag.tagClass){case 0:switch(this.tag.tagNumber){case 0:return"EOC";case 1:return"BOOLEAN";case 2:return"INTEGER";case 3:return"BIT_STRING";case 4:return"OCTET_STRING";case 5:return"NULL";case 6:return"OBJECT_IDENTIFIER";case 7:return"ObjectDescriptor";case 8:return"EXTERNAL";case 9:return"REAL";case 10:return"ENUMERATED";case 11:return"EMBEDDED_PDV";case 12:return"UTF8String";case 16:return"SEQUENCE";case 17:return"SET";case 18:return"NumericString";case 19:return"PrintableString";case 20:return"TeletexString";case 21:return"VideotexString";case 22:return"IA5String";case 23:return"UTCTime";case 24:return"GeneralizedTime";case 25:return"GraphicString";case 26:return"VisibleString";case 27:return"GeneralString";case 28:return"UniversalString";case 30:return"BMPString"}return"Universal_"+this.tag.tagNumber.toString();case 1:return"Application_"+this.tag.tagNumber.toString();case 2:return"["+this.tag.tagNumber.toString()+"]";case 3:return"Private_"+this.tag.tagNumber.toString()}},t.prototype.content=function(t){if(void 0===this.tag)return null;void 0===t&&(t=1/0);var e=this.posContent(),r=Math.abs(this.length);if(!this.tag.isUniversal())return null!==this.sub?"("+this.sub.length+" elem)":this.stream.parseOctetString(e,e+r,t);switch(this.tag.tagNumber){case 1:return 0===this.stream.get(e)?"false":"true";case 2:return this.stream.parseInteger(e,e+r);case 3:return this.sub?"("+this.sub.length+" elem)":this.stream.parseBitString(e,e+r,t);case 4:return this.sub?"("+this.sub.length+" elem)":this.stream.parseOctetString(e,e+r,t);case 6:return this.stream.parseOID(e,e+r,t);case 16:case 17:return null!==this.sub?"("+this.sub.length+" elem)":"(no elem)";case 12:return m(this.stream.parseStringUTF(e,e+r),t);case 18:case 19:case 20:case 21:case 22:case 26:return m(this.stream.parseStringISO(e,e+r),t);case 30:return m(this.stream.parseStringBMP(e,e+r),t);case 23:case 24:return this.stream.parseTime(e,e+r,23==this.tag.tagNumber)}return null},t.prototype.toString=function(){return this.typeName()+"@"+this.stream.pos+"[header:"+this.header+",length:"+this.length+",sub:"+(null===this.sub?"null":this.sub.length)+"]"},t.prototype.toPrettyString=function(t){void 0===t&&(t="");var e=t+this.typeName()+" @"+this.stream.pos;if(this.length>=0&&(e+="+"),e+=this.length,this.tag.tagConstructed?e+=" (constructed)":!this.tag.isUniversal()||3!=this.tag.tagNumber&&4!=this.tag.tagNumber||null===this.sub||(e+=" (encapsulates)"),e+="\n",null!==this.sub){t+=" ";for(var r=0,i=this.sub.length;r<i;++r)e+=this.sub[r].toPrettyString(t)}return e},t.prototype.posStart=function(){return this.stream.pos},t.prototype.posContent=function(){return this.stream.pos+this.header},t.prototype.posEnd=function(){return this.stream.pos+this.header+Math.abs(this.length)},t.prototype.toHexString=function(){return this.stream.hexDump(this.posStart(),this.posEnd(),!0)},t.decodeLength=function(t){var e=t.get(),r=127&e;if(r==e)return r;if(r>6)throw new Error("Length over 48 bits not supported at position "+(t.pos-1));if(0===r)return null;e=0;for(var i=0;i<r;++i)e=256*e+t.get();return e},t.prototype.getHexStringValue=function(){var t=this.toHexString(),e=2*this.header,r=2*this.length;return t.substr(e,r)},t.decode=function(e){var r;r=e instanceof b?e:new b(e,0);var i=new b(r),n=new S(r),s=t.decodeLength(r),o=r.pos,h=o-i.pos,a=null,u=function(){var e=[];if(null!==s){for(var i=o+s;r.pos<i;)e[e.length]=t.decode(r);if(r.pos!=i)throw new Error("Content size is not correct for container starting at offset "+o)}else try{for(;;){var n=t.decode(r);if(n.tag.isEOC())break;e[e.length]=n}s=o-r.pos}catch(t){throw new Error("Exception while decoding undefined length content: "+t)}return e};if(n.tagConstructed)a=u();else if(n.isUniversal()&&(3==n.tagNumber||4==n.tagNumber))try{if(3==n.tagNumber&&0!=r.get())throw new Error("BIT STRINGs with unused bits cannot encapsulate.");a=u();for(var c=0;c<a.length;++c)if(a[c].tag.isEOC())throw new Error("EOC is not supposed to be actual content.")}catch(t){a=null}if(null===a){if(null===s)throw new Error("We can't skip over an invalid tag with undefined length at offset "+o);r.pos=o+Math.abs(s)}return new t(i,h,s,n,a)},t}(),S=function(){function t(t){var e=t.get();if(this.tagClass=e>>6,this.tagConstructed=0!=(32&e),this.tagNumber=31&e,31==this.tagNumber){var r=new g;do{e=t.get(),r.mulAdd(128,127&e)}while(128&e);this.tagNumber=r.simplify()}}return t.prototype.isUniversal=function(){return 0===this.tagClass},t.prototype.isEOC=function(){return 0===this.tagClass&&0===this.tagNumber},t}(),E=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],w=(1<<26)/E[E.length-1],D=function(){function h(t,e,r){null!=t&&("number"==typeof t?this.fromNumber(t,e,r):null==e&&"string"!=typeof t?this.fromString(t,256):this.fromString(t,e))}return h.prototype.toString=function(e){if(this.s<0)return"-"+this.negate().toString(e);var r;if(16==e)r=4;else if(8==e)r=3;else if(2==e)r=1;else if(32==e)r=5;else{if(4!=e)return this.toRadix(e);r=2}var i,n=(1<<r)-1,s=!1,o="",h=this.t,a=this.DB-h*this.DB%r;if(h-- >0)for(a<this.DB&&(i=this[h]>>a)>0&&(s=!0,o=t(i));h>=0;)a<r?(i=(this[h]&(1<<a)-1)<<r-a,i|=this[--h]>>(a+=this.DB-r)):(i=this[h]>>(a-=r)&n,a<=0&&(a+=this.DB,--h)),i>0&&(s=!0),s&&(o+=t(i));return s?o:"0"},h.prototype.negate=function(){var t=A();return h.ZERO.subTo(this,t),t},h.prototype.abs=function(){return this.s<0?this.negate():this},h.prototype.compareTo=function(t){var e=this.s-t.s;if(0!=e)return e;var r=this.t;if(0!=(e=r-t.t))return this.s<0?-e:e;for(;--r>=0;)if(0!=(e=this[r]-t[r]))return e;return 0},h.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+C(this[this.t-1]^this.s&this.DM)},h.prototype.mod=function(t){var e=A();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(h.ZERO)>0&&t.subTo(e,e),e},h.prototype.modPowInt=function(t,e){var r;return r=t<256||e.isEven()?new O(e):new R(e),this.exp(t,r)},h.prototype.clone=function(){var t=A();return this.copyTo(t),t},h.prototype.intValue=function(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]},h.prototype.byteValue=function(){return 0==this.t?this.s:this[0]<<24>>24},h.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},h.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},h.prototype.toByteArray=function(){var t=this.t,e=[];e[0]=this.s;var r,i=this.DB-t*this.DB%8,n=0;if(t-- >0)for(i<this.DB&&(r=this[t]>>i)!=(this.s&this.DM)>>i&&(e[n++]=r|this.s<<this.DB-i);t>=0;)i<8?(r=(this[t]&(1<<i)-1)<<8-i,r|=this[--t]>>(i+=this.DB-8)):(r=this[t]>>(i-=8)&255,i<=0&&(i+=this.DB,--t)),0!=(128&r)&&(r|=-256),0==n&&(128&this.s)!=(128&r)&&++n,(n>0||r!=this.s)&&(e[n++]=r);return e},h.prototype.equals=function(t){return 0==this.compareTo(t)},h.prototype.min=function(t){return this.compareTo(t)<0?this:t},h.prototype.max=function(t){return this.compareTo(t)>0?this:t},h.prototype.and=function(t){var r=A();return this.bitwiseTo(t,e,r),r},h.prototype.or=function(t){var e=A();return this.bitwiseTo(t,r,e),e},h.prototype.xor=function(t){var e=A();return this.bitwiseTo(t,i,e),e},h.prototype.andNot=function(t){var e=A();return this.bitwiseTo(t,n,e),e},h.prototype.not=function(){for(var t=A(),e=0;e<this.t;++e)t[e]=this.DM&~this[e];return t.t=this.t,t.s=~this.s,t},h.prototype.shiftLeft=function(t){var e=A();return t<0?this.rShiftTo(-t,e):this.lShiftTo(t,e),e},h.prototype.shiftRight=function(t){var e=A();return t<0?this.lShiftTo(-t,e):this.rShiftTo(t,e),e},h.prototype.getLowestSetBit=function(){for(var t=0;t<this.t;++t)if(0!=this[t])return t*this.DB+s(this[t]);return this.s<0?this.t*this.DB:-1},h.prototype.bitCount=function(){for(var t=0,e=this.s&this.DM,r=0;r<this.t;++r)t+=o(this[r]^e);return t},h.prototype.testBit=function(t){var e=Math.floor(t/this.DB);return e>=this.t?0!=this.s:0!=(this[e]&1<<t%this.DB)},h.prototype.setBit=function(t){return this.changeBit(t,r)},h.prototype.clearBit=function(t){return this.changeBit(t,n)},h.prototype.flipBit=function(t){return this.changeBit(t,i)},h.prototype.add=function(t){var e=A();return this.addTo(t,e),e},h.prototype.subtract=function(t){var e=A();return this.subTo(t,e),e},h.prototype.multiply=function(t){var e=A();return this.multiplyTo(t,e),e},h.prototype.divide=function(t){var e=A();return this.divRemTo(t,e,null),e},h.prototype.remainder=function(t){var e=A();return this.divRemTo(t,null,e),e},h.prototype.divideAndRemainder=function(t){var e=A(),r=A();return this.divRemTo(t,e,r),[e,r]},h.prototype.modPow=function(t,e){var r,i,n=t.bitLength(),s=q(1);if(n<=0)return s;r=n<18?1:n<48?3:n<144?4:n<768?5:6,i=n<8?new O(e):e.isEven()?new B(e):new R(e);var o=[],h=3,a=r-1,u=(1<<r)-1;if(o[1]=i.convert(this),r>1){var c=A();for(i.sqrTo(o[1],c);h<=u;)o[h]=A(),i.mulTo(c,o[h-2],o[h]),h+=2}var f,l,p=t.t-1,g=!0,d=A();for(n=C(t[p])-1;p>=0;){for(n>=a?f=t[p]>>n-a&u:(f=(t[p]&(1<<n+1)-1)<<a-n,p>0&&(f|=t[p-1]>>this.DB+n-a)),h=r;0==(1&f);)f>>=1,--h;if((n-=h)<0&&(n+=this.DB,--p),g)o[f].copyTo(s),g=!1;else{for(;h>1;)i.sqrTo(s,d),i.sqrTo(d,s),h-=2;h>0?i.sqrTo(s,d):(l=s,s=d,d=l),i.mulTo(d,o[f],s)}for(;p>=0&&0==(t[p]&1<<n);)i.sqrTo(s,d),l=s,s=d,d=l,--n<0&&(n=this.DB-1,--p)}return i.revert(s)},h.prototype.modInverse=function(t){var e=t.isEven();if(this.isEven()&&e||0==t.signum())return h.ZERO;for(var r=t.clone(),i=this.clone(),n=q(1),s=q(0),o=q(0),a=q(1);0!=r.signum();){for(;r.isEven();)r.rShiftTo(1,r),e?(n.isEven()&&s.isEven()||(n.addTo(this,n),s.subTo(t,s)),n.rShiftTo(1,n)):s.isEven()||s.subTo(t,s),s.rShiftTo(1,s);for(;i.isEven();)i.rShiftTo(1,i),e?(o.isEven()&&a.isEven()||(o.addTo(this,o),a.subTo(t,a)),o.rShiftTo(1,o)):a.isEven()||a.subTo(t,a),a.rShiftTo(1,a);r.compareTo(i)>=0?(r.subTo(i,r),e&&n.subTo(o,n),s.subTo(a,s)):(i.subTo(r,i),e&&o.subTo(n,o),a.subTo(s,a))}return 0!=i.compareTo(h.ONE)?h.ZERO:a.compareTo(t)>=0?a.subtract(t):a.signum()<0?(a.addTo(t,a),a.signum()<0?a.add(t):a):a},h.prototype.pow=function(t){return this.exp(t,new x)},h.prototype.gcd=function(t){var e=this.s<0?this.negate():this.clone(),r=t.s<0?t.negate():t.clone();if(e.compareTo(r)<0){var i=e;e=r,r=i}var n=e.getLowestSetBit(),s=r.getLowestSetBit();if(s<0)return e;for(n<s&&(s=n),s>0&&(e.rShiftTo(s,e),r.rShiftTo(s,r));e.signum()>0;)(n=e.getLowestSetBit())>0&&e.rShiftTo(n,e),(n=r.getLowestSetBit())>0&&r.rShiftTo(n,r),e.compareTo(r)>=0?(e.subTo(r,e),e.rShiftTo(1,e)):(r.subTo(e,r),r.rShiftTo(1,r));return s>0&&r.lShiftTo(s,r),r},h.prototype.isProbablePrime=function(t){var e,r=this.abs();if(1==r.t&&r[0]<=E[E.length-1]){for(e=0;e<E.length;++e)if(r[0]==E[e])return!0;return!1}if(r.isEven())return!1;for(e=1;e<E.length;){for(var i=E[e],n=e+1;n<E.length&&i<w;)i*=E[n++];for(i=r.modInt(i);e<n;)if(i%E[e++]==0)return!1}return r.millerRabin(t)},h.prototype.copyTo=function(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},h.prototype.fromInt=function(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0},h.prototype.fromString=function(t,e){var r;if(16==e)r=4;else if(8==e)r=3;else if(256==e)r=8;else if(2==e)r=1;else if(32==e)r=5;else{if(4!=e)return void this.fromRadix(t,e);r=2}this.t=0,this.s=0;for(var i=t.length,n=!1,s=0;--i>=0;){var o=8==r?255&+t[i]:M(t,i);o<0?"-"==t.charAt(i)&&(n=!0):(n=!1,0==s?this[this.t++]=o:s+r>this.DB?(this[this.t-1]|=(o&(1<<this.DB-s)-1)<<s,this[this.t++]=o>>this.DB-s):this[this.t-1]|=o<<s,(s+=r)>=this.DB&&(s-=this.DB))}8==r&&0!=(128&+t[0])&&(this.s=-1,s>0&&(this[this.t-1]|=(1<<this.DB-s)-1<<s)),this.clamp(),n&&h.ZERO.subTo(this,this)},h.prototype.clamp=function(){for(var t=this.s&this.DM;this.t>0&&this[this.t-1]==t;)--this.t},h.prototype.dlShiftTo=function(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s},h.prototype.drShiftTo=function(t,e){for(var r=t;r<this.t;++r)e[r-t]=this[r];e.t=Math.max(this.t-t,0),e.s=this.s},h.prototype.lShiftTo=function(t,e){for(var r=t%this.DB,i=this.DB-r,n=(1<<i)-1,s=Math.floor(t/this.DB),o=this.s<<r&this.DM,h=this.t-1;h>=0;--h)e[h+s+1]=this[h]>>i|o,o=(this[h]&n)<<r;for(h=s-1;h>=0;--h)e[h]=0;e[s]=o,e.t=this.t+s+1,e.s=this.s,e.clamp()},h.prototype.rShiftTo=function(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else{var i=t%this.DB,n=this.DB-i,s=(1<<i)-1;e[0]=this[r]>>i;for(var o=r+1;o<this.t;++o)e[o-r-1]|=(this[o]&s)<<n,e[o-r]=this[o]>>i;i>0&&(e[this.t-r-1]|=(this.s&s)<<n),e.t=this.t-r,e.clamp()}},h.prototype.subTo=function(t,e){for(var r=0,i=0,n=Math.min(t.t,this.t);r<n;)i+=this[r]-t[r],e[r++]=i&this.DM,i>>=this.DB;if(t.t<this.t){for(i-=t.s;r<this.t;)i+=this[r],e[r++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;r<t.t;)i-=t[r],e[r++]=i&this.DM,i>>=this.DB;i-=t.s}e.s=i<0?-1:0,i<-1?e[r++]=this.DV+i:i>0&&(e[r++]=i),e.t=r,e.clamp()},h.prototype.multiplyTo=function(t,e){var r=this.abs(),i=t.abs(),n=r.t;for(e.t=n+i.t;--n>=0;)e[n]=0;for(n=0;n<i.t;++n)e[n+r.t]=r.am(0,i[n],e,n,0,r.t);e.s=0,e.clamp(),this.s!=t.s&&h.ZERO.subTo(e,e)},h.prototype.squareTo=function(t){for(var e=this.abs(),r=t.t=2*e.t;--r>=0;)t[r]=0;for(r=0;r<e.t-1;++r){var i=e.am(r,e[r],t,2*r,0,1);(t[r+e.t]+=e.am(r+1,2*e[r],t,2*r+1,i,e.t-r-1))>=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp()},h.prototype.divRemTo=function(t,e,r){var i=t.abs();if(!(i.t<=0)){var n=this.abs();if(n.t<i.t)return null!=e&&e.fromInt(0),void(null!=r&&this.copyTo(r));null==r&&(r=A());var s=A(),o=this.s,a=t.s,u=this.DB-C(i[i.t-1]);u>0?(i.lShiftTo(u,s),n.lShiftTo(u,r)):(i.copyTo(s),n.copyTo(r));var c=s.t,f=s[c-1];if(0!=f){var l=f*(1<<this.F1)+(c>1?s[c-2]>>this.F2:0),p=this.FV/l,g=(1<<this.F1)/l,d=1<<this.F2,v=r.t,m=v-c,y=null==e?A():e;for(s.dlShiftTo(m,y),r.compareTo(y)>=0&&(r[r.t++]=1,r.subTo(y,r)),h.ONE.dlShiftTo(c,y),y.subTo(s,s);s.t<c;)s[s.t++]=0;for(;--m>=0;){var b=r[--v]==f?this.DM:Math.floor(r[v]*p+(r[v-1]+d)*g);if((r[v]+=s.am(0,b,r,m,0,c))<b)for(s.dlShiftTo(m,y),r.subTo(y,r);r[v]<--b;)r.subTo(y,r)}null!=e&&(r.drShiftTo(c,e),o!=a&&h.ZERO.subTo(e,e)),r.t=c,r.clamp(),u>0&&r.rShiftTo(u,r),o<0&&h.ZERO.subTo(r,r)}}},h.prototype.invDigit=function(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},h.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},h.prototype.exp=function(t,e){if(t>4294967295||t<1)return h.ONE;var r=A(),i=A(),n=e.convert(this),s=C(t)-1;for(n.copyTo(r);--s>=0;)if(e.sqrTo(r,i),(t&1<<s)>0)e.mulTo(i,n,r);else{var o=r;r=i,i=o}return e.revert(r)},h.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},h.prototype.toRadix=function(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return"0";var e=this.chunkSize(t),r=Math.pow(t,e),i=q(r),n=A(),s=A(),o="";for(this.divRemTo(i,n,s);n.signum()>0;)o=(r+s.intValue()).toString(t).substr(1)+o,n.divRemTo(i,n,s);return s.intValue().toString(t)+o},h.prototype.fromRadix=function(t,e){this.fromInt(0),null==e&&(e=10);for(var r=this.chunkSize(e),i=Math.pow(e,r),n=!1,s=0,o=0,a=0;a<t.length;++a){var u=M(t,a);u<0?"-"==t.charAt(a)&&0==this.signum()&&(n=!0):(o=e*o+u,++s>=r&&(this.dMultiply(i),this.dAddOffset(o,0),s=0,o=0))}s>0&&(this.dMultiply(Math.pow(e,s)),this.dAddOffset(o,0)),n&&h.ZERO.subTo(this,this)},h.prototype.fromNumber=function(t,e,i){if("number"==typeof e)if(t<2)this.fromInt(1);else for(this.fromNumber(t,i),this.testBit(t-1)||this.bitwiseTo(h.ONE.shiftLeft(t-1),r,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(h.ONE.shiftLeft(t-1),this);else{var n=[],s=7&t;n.length=1+(t>>3),e.nextBytes(n),s>0?n[0]&=(1<<s)-1:n[0]=0,this.fromString(n,256)}},h.prototype.bitwiseTo=function(t,e,r){var i,n,s=Math.min(t.t,this.t);for(i=0;i<s;++i)r[i]=e(this[i],t[i]);if(t.t<this.t){for(n=t.s&this.DM,i=s;i<this.t;++i)r[i]=e(this[i],n);r.t=this.t}else{for(n=this.s&this.DM,i=s;i<t.t;++i)r[i]=e(n,t[i]);r.t=t.t}r.s=e(this.s,t.s),r.clamp()},h.prototype.changeBit=function(t,e){var r=h.ONE.shiftLeft(t);return this.bitwiseTo(r,e,r),r},h.prototype.addTo=function(t,e){for(var r=0,i=0,n=Math.min(t.t,this.t);r<n;)i+=this[r]+t[r],e[r++]=i&this.DM,i>>=this.DB;if(t.t<this.t){for(i+=t.s;r<this.t;)i+=this[r],e[r++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;r<t.t;)i+=t[r],e[r++]=i&this.DM,i>>=this.DB;i+=t.s}e.s=i<0?-1:0,i>0?e[r++]=i:i<-1&&(e[r++]=this.DV+i),e.t=r,e.clamp()},h.prototype.dMultiply=function(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},h.prototype.dAddOffset=function(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},h.prototype.multiplyLowerTo=function(t,e,r){var i=Math.min(this.t+t.t,e);for(r.s=0,r.t=i;i>0;)r[--i]=0;for(var n=r.t-this.t;i<n;++i)r[i+this.t]=this.am(0,t[i],r,i,0,this.t);for(n=Math.min(t.t,e);i<n;++i)this.am(0,t[i],r,i,0,e-i);r.clamp()},h.prototype.multiplyUpperTo=function(t,e,r){--e;var i=r.t=this.t+t.t-e;for(r.s=0;--i>=0;)r[i]=0;for(i=Math.max(e-this.t,0);i<t.t;++i)r[this.t+i-e]=this.am(e-i,t[i],r,0,0,this.t+i-e);r.clamp(),r.drShiftTo(1,r)},h.prototype.modInt=function(t){if(t<=0)return 0;var e=this.DV%t,r=this.s<0?t-1:0;if(this.t>0)if(0==e)r=this[0]%t;else for(var i=this.t-1;i>=0;--i)r=(e*r+this[i])%t;return r},h.prototype.millerRabin=function(t){var e=this.subtract(h.ONE),r=e.getLowestSetBit();if(r<=0)return!1;var i=e.shiftRight(r);(t=t+1>>1)>E.length&&(t=E.length);for(var n=A(),s=0;s<t;++s){n.fromInt(E[Math.floor(Math.random()*E.length)]);var o=n.modPow(i,this);if(0!=o.compareTo(h.ONE)&&0!=o.compareTo(e)){for(var a=1;a++<r&&0!=o.compareTo(e);)if(0==(o=o.modPowInt(2,this)).compareTo(h.ONE))return!1;if(0!=o.compareTo(e))return!1}}return!0},h.prototype.square=function(){var t=A();return this.squareTo(t),t},h.prototype.gcda=function(t,e){var r=this.s<0?this.negate():this.clone(),i=t.s<0?t.negate():t.clone();if(r.compareTo(i)<0){var n=r;r=i,i=n}var s=r.getLowestSetBit(),o=i.getLowestSetBit();if(o<0)e(r);else{s<o&&(o=s),o>0&&(r.rShiftTo(o,r),i.rShiftTo(o,i));var h=function(){(s=r.getLowestSetBit())>0&&r.rShiftTo(s,r),(s=i.getLowestSetBit())>0&&i.rShiftTo(s,i),r.compareTo(i)>=0?(r.subTo(i,r),r.rShiftTo(1,r)):(i.subTo(r,i),i.rShiftTo(1,i)),r.signum()>0?setTimeout(h,0):(o>0&&i.lShiftTo(o,i),setTimeout((function(){e(i)}),0))};setTimeout(h,10)}},h.prototype.fromNumberAsync=function(t,e,i,n){if("number"==typeof e)if(t<2)this.fromInt(1);else{this.fromNumber(t,i),this.testBit(t-1)||this.bitwiseTo(h.ONE.shiftLeft(t-1),r,this),this.isEven()&&this.dAddOffset(1,0);var s=this,o=function(){s.dAddOffset(2,0),s.bitLength()>t&&s.subTo(h.ONE.shiftLeft(t-1),s),s.isProbablePrime(e)?setTimeout((function(){n()}),0):setTimeout(o,0)};setTimeout(o,0)}else{var a=[],u=7&t;a.length=1+(t>>3),e.nextBytes(a),u>0?a[0]&=(1<<u)-1:a[0]=0,this.fromString(a,256)}},h}(),x=function(){function t(){}return t.prototype.convert=function(t){return t},t.prototype.revert=function(t){return t},t.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r)},t.prototype.sqrTo=function(t,e){t.squareTo(e)},t}(),O=function(){function t(t){this.m=t}return t.prototype.convert=function(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},t.prototype.revert=function(t){return t},t.prototype.reduce=function(t){t.divRemTo(this.m,null,t)},t.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},t.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},t}(),R=function(){function t(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<t.DB-15)-1,this.mt2=2*t.t}return t.prototype.convert=function(t){var e=A();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(D.ZERO)>0&&this.m.subTo(e,e),e},t.prototype.revert=function(t){var e=A();return t.copyTo(e),this.reduce(e),e},t.prototype.reduce=function(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e<this.m.t;++e){var r=32767&t[e],i=r*this.mpl+((r*this.mph+(t[e]>>15)*this.mpl&this.um)<<15)&t.DM;for(t[r=e+this.m.t]+=this.m.am(0,i,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},t.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},t.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},t}(),B=function(){function t(t){this.m=t,this.r2=A(),this.q3=A(),D.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t)}return t.prototype.convert=function(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=A();return t.copyTo(e),this.reduce(e),e},t.prototype.revert=function(t){return t},t.prototype.reduce=function(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},t.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},t.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},t}();function A(){return new D(null)}function V(t,e){return new D(t,e)}var I="undefined"!=typeof navigator;I&&"Microsoft Internet Explorer"==navigator.appName?(D.prototype.am=function(t,e,r,i,n,s){for(var o=32767&e,h=e>>15;--s>=0;){var a=32767&this[t],u=this[t++]>>15,c=h*a+u*o;n=((a=o*a+((32767&c)<<15)+r[i]+(1073741823&n))>>>30)+(c>>>15)+h*u+(n>>>30),r[i++]=1073741823&a}return n},y=30):I&&"Netscape"!=navigator.appName?(D.prototype.am=function(t,e,r,i,n,s){for(;--s>=0;){var o=e*this[t++]+r[i]+n;n=Math.floor(o/67108864),r[i++]=67108863&o}return n},y=26):(D.prototype.am=function(t,e,r,i,n,s){for(var o=16383&e,h=e>>14;--s>=0;){var a=16383&this[t],u=this[t++]>>14,c=h*a+u*o;n=((a=o*a+((16383&c)<<14)+r[i]+n)>>28)+(c>>14)+h*u,r[i++]=268435455&a}return n},y=28),D.prototype.DB=y,D.prototype.DM=(1<<y)-1,D.prototype.DV=1<<y,D.prototype.FV=Math.pow(2,52),D.prototype.F1=52-y,D.prototype.F2=2*y-52;var N,P,j=[];for(N="0".charCodeAt(0),P=0;P<=9;++P)j[N++]=P;for(N="a".charCodeAt(0),P=10;P<36;++P)j[N++]=P;for(N="A".charCodeAt(0),P=10;P<36;++P)j[N++]=P;function M(t,e){var r=j[t.charCodeAt(e)];return null==r?-1:r}function q(t){var e=A();return e.fromInt(t),e}function C(t){var e,r=1;return 0!=(e=t>>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}D.ZERO=q(0),D.ONE=q(1);var L,H,_=function(){function t(){this.i=0,this.j=0,this.S=[]}return t.prototype.init=function(t){var e,r,i;for(e=0;e<256;++e)this.S[e]=e;for(r=0,e=0;e<256;++e)r=r+this.S[e]+t[e%t.length]&255,i=this.S[e],this.S[e]=this.S[r],this.S[r]=i;this.i=0,this.j=0},t.prototype.next=function(){var t;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,t=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=t,this.S[t+this.S[this.i]&255]},t}(),k=null;if(null==k){k=[],H=0;var F=void 0;if(window.crypto&&window.crypto.getRandomValues){var K=new Uint32Array(256);for(window.crypto.getRandomValues(K),F=0;F<K.length;++F)k[H++]=255&K[F]}var U=0,z=function(t){if((U=U||0)>=256||H>=256)window.removeEventListener?window.removeEventListener("mousemove",z,!1):window.detachEvent&&window.detachEvent("onmousemove",z);else try{var e=t.x+t.y;k[H++]=255&e,U+=1}catch(t){}};window.addEventListener?window.addEventListener("mousemove",z,!1):window.attachEvent&&window.attachEvent("onmousemove",z)}function Z(){if(null==L){for(L=new _;H<256;){var t=Math.floor(65536*Math.random());k[H++]=255&t}for(L.init(k),H=0;H<k.length;++H)k[H]=0;H=0}return L.next()}var $=function(){function t(){}return t.prototype.nextBytes=function(t){for(var e=0;e<t.length;++e)t[e]=Z()},t}(),G=function(){function t(){this.n=null,this.e=0,this.d=null,this.p=null,this.q=null,this.dmp1=null,this.dmq1=null,this.coeff=null}return t.prototype.doPublic=function(t){return t.modPowInt(this.e,this.n)},t.prototype.doPrivate=function(t){if(null==this.p||null==this.q)return t.modPow(this.d,this.n);for(var e=t.mod(this.p).modPow(this.dmp1,this.p),r=t.mod(this.q).modPow(this.dmq1,this.q);e.compareTo(r)<0;)e=e.add(this.p);return e.subtract(r).multiply(this.coeff).mod(this.p).multiply(this.q).add(r)},t.prototype.setPublic=function(t,e){null!=t&&null!=e&&t.length>0&&e.length>0?(this.n=V(t,16),this.e=parseInt(e,16)):console.error("Invalid RSA public key")},t.prototype.encrypt=function(t){var e=this.n.bitLength()+7>>3,r=function(t,e){if(e<t.length+11)return console.error("Message too long for RSA"),null;for(var r=[],i=t.length-1;i>=0&&e>0;){var n=t.charCodeAt(i--);n<128?r[--e]=n:n>127&&n<2048?(r[--e]=63&n|128,r[--e]=n>>6|192):(r[--e]=63&n|128,r[--e]=n>>6&63|128,r[--e]=n>>12|224)}r[--e]=0;for(var s=new $,o=[];e>2;){for(o[0]=0;0==o[0];)s.nextBytes(o);r[--e]=o[0]}return r[--e]=2,r[--e]=0,new D(r)}(t,e);if(null==r)return null;var i=this.doPublic(r);if(null==i)return null;for(var n=i.toString(16),s=n.length,o=0;o<2*e-s;o++)n="0"+n;return n},t.prototype.setPrivate=function(t,e,r){null!=t&&null!=e&&t.length>0&&e.length>0?(this.n=V(t,16),this.e=parseInt(e,16),this.d=V(r,16)):console.error("Invalid RSA private key")},t.prototype.setPrivateEx=function(t,e,r,i,n,s,o,h){null!=t&&null!=e&&t.length>0&&e.length>0?(this.n=V(t,16),this.e=parseInt(e,16),this.d=V(r,16),this.p=V(i,16),this.q=V(n,16),this.dmp1=V(s,16),this.dmq1=V(o,16),this.coeff=V(h,16)):console.error("Invalid RSA private key")},t.prototype.generate=function(t,e){var r=new $,i=t>>1;this.e=parseInt(e,16);for(var n=new D(e,16);;){for(;this.p=new D(t-i,1,r),0!=this.p.subtract(D.ONE).gcd(n).compareTo(D.ONE)||!this.p.isProbablePrime(10););for(;this.q=new D(i,1,r),0!=this.q.subtract(D.ONE).gcd(n).compareTo(D.ONE)||!this.q.isProbablePrime(10););if(this.p.compareTo(this.q)<=0){var s=this.p;this.p=this.q,this.q=s}var o=this.p.subtract(D.ONE),h=this.q.subtract(D.ONE),a=o.multiply(h);if(0==a.gcd(n).compareTo(D.ONE)){this.n=this.p.multiply(this.q),this.d=n.modInverse(a),this.dmp1=this.d.mod(o),this.dmq1=this.d.mod(h),this.coeff=this.q.modInverse(this.p);break}}},t.prototype.decrypt=function(t){var e=V(t,16),r=this.doPrivate(e);return null==r?null:function(t,e){for(var r=t.toByteArray(),i=0;i<r.length&&0==r[i];)++i;if(r.length-i!=e-1||2!=r[i])return null;for(++i;0!=r[i];)if(++i>=r.length)return null;for(var n="";++i<r.length;){var s=255&r[i];s<128?n+=String.fromCharCode(s):s>191&&s<224?(n+=String.fromCharCode((31&s)<<6|63&r[i+1]),++i):(n+=String.fromCharCode((15&s)<<12|(63&r[i+1])<<6|63&r[i+2]),i+=2)}return n}(r,this.n.bitLength()+7>>3)},t.prototype.generateAsync=function(t,e,r){var i=new $,n=t>>1;this.e=parseInt(e,16);var s=new D(e,16),o=this,h=function(){var e=function(){if(o.p.compareTo(o.q)<=0){var t=o.p;o.p=o.q,o.q=t}var e=o.p.subtract(D.ONE),i=o.q.subtract(D.ONE),n=e.multiply(i);0==n.gcd(s).compareTo(D.ONE)?(o.n=o.p.multiply(o.q),o.d=s.modInverse(n),o.dmp1=o.d.mod(e),o.dmq1=o.d.mod(i),o.coeff=o.q.modInverse(o.p),setTimeout((function(){r()}),0)):setTimeout(h,0)},a=function(){o.q=A(),o.q.fromNumberAsync(n,1,i,(function(){o.q.subtract(D.ONE).gcda(s,(function(t){0==t.compareTo(D.ONE)&&o.q.isProbablePrime(10)?setTimeout(e,0):setTimeout(a,0)}))}))},u=function(){o.p=A(),o.p.fromNumberAsync(t-n,1,i,(function(){o.p.subtract(D.ONE).gcda(s,(function(t){0==t.compareTo(D.ONE)&&o.p.isProbablePrime(10)?setTimeout(a,0):setTimeout(u,0)}))}))};setTimeout(u,0)};setTimeout(h,0)},t.prototype.sign=function(t,e,r){var i=function(t,e){if(e<t.length+22)return console.error("Message too long for RSA"),null;for(var r=e-t.length-6,i="",n=0;n<r;n+=2)i+="ff";return V("0001"+i+"00"+t,16)}((Y[r]||"")+e(t).toString(),this.n.bitLength()/4);if(null==i)return null;var n=this.doPrivate(i);if(null==n)return null;var s=n.toString(16);return 0==(1&s.length)?s:"0"+s},t.prototype.verify=function(t,e,r){var i=V(e,16),n=this.doPublic(i);return null==n?null:function(t){for(var e in Y)if(Y.hasOwnProperty(e)){var r=Y[e],i=r.length;if(t.substr(0,i)==r)return t.substr(i)}return t}(n.toString(16).replace(/^1f+00/,""))==r(t).toString()},t}(),Y={md2:"3020300c06082a864886f70d020205000410",md5:"3020300c06082a864886f70d020505000410",sha1:"3021300906052b0e03021a05000414",sha224:"302d300d06096086480165030402040500041c",sha256:"3031300d060960864801650304020105000420",sha384:"3041300d060960864801650304020205000430",sha512:"3051300d060960864801650304020305000440",ripemd160:"3021300906052b2403020105000414"},X={};X.lang={extend:function(t,e,r){if(!e||!t)throw new Error("YAHOO.lang.extend failed, please check that all dependencies are included.");var i=function(){};if(i.prototype=e.prototype,t.prototype=new i,t.prototype.constructor=t,t.superclass=e.prototype,e.prototype.constructor==Object.prototype.constructor&&(e.prototype.constructor=e),r){var n;for(n in r)t.prototype[n]=r[n];var s=function(){},o=["toString","valueOf"];try{/MSIE/.test(navigator.userAgent)&&(s=function(t,e){for(n=0;n<o.length;n+=1){var r=o[n],i=e[r];"function"==typeof i&&i!=Object.prototype[r]&&(t[r]=i)}})}catch(t){}s(t.prototype,r)}}};var J={};void 0!==J.asn1&&J.asn1||(J.asn1={}),J.asn1.ASN1Util=new function(){this.integerToByteHex=function(t){var e=t.toString(16);return e.length%2==1&&(e="0"+e),e},this.bigIntToMinTwosComplementsHex=function(t){var e=t.toString(16);if("-"!=e.substr(0,1))e.length%2==1?e="0"+e:e.match(/^[0-7]/)||(e="00"+e);else{var r=e.substr(1).length;r%2==1?r+=1:e.match(/^[0-7]/)||(r+=2);for(var i="",n=0;n<r;n++)i+="f";e=new D(i,16).xor(t).add(D.ONE).toString(16).replace(/^-/,"")}return e},this.getPEMStringFromHex=function(t,e){return hextopem(t,e)},this.newObject=function(t){var e=J.asn1,r=e.DERBoolean,i=e.DERInteger,n=e.DERBitString,s=e.DEROctetString,o=e.DERNull,h=e.DERObjectIdentifier,a=e.DEREnumerated,u=e.DERUTF8String,c=e.DERNumericString,f=e.DERPrintableString,l=e.DERTeletexString,p=e.DERIA5String,g=e.DERUTCTime,d=e.DERGeneralizedTime,v=e.DERSequence,m=e.DERSet,y=e.DERTaggedObject,b=e.ASN1Util.newObject,T=Object.keys(t);if(1!=T.length)throw"key of param shall be only one.";var S=T[0];if(-1==":bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:seq:set:tag:".indexOf(":"+S+":"))throw"undefined key: "+S;if("bool"==S)return new r(t[S]);if("int"==S)return new i(t[S]);if("bitstr"==S)return new n(t[S]);if("octstr"==S)return new s(t[S]);if("null"==S)return new o(t[S]);if("oid"==S)return new h(t[S]);if("enum"==S)return new a(t[S]);if("utf8str"==S)return new u(t[S]);if("numstr"==S)return new c(t[S]);if("prnstr"==S)return new f(t[S]);if("telstr"==S)return new l(t[S]);if("ia5str"==S)return new p(t[S]);if("utctime"==S)return new g(t[S]);if("gentime"==S)return new d(t[S]);if("seq"==S){for(var E=t[S],w=[],D=0;D<E.length;D++){var x=b(E[D]);w.push(x)}return new v({array:w})}if("set"==S){for(E=t[S],w=[],D=0;D<E.length;D++)x=b(E[D]),w.push(x);return new m({array:w})}if("tag"==S){var O=t[S];if("[object Array]"===Object.prototype.toString.call(O)&&3==O.length){var R=b(O[2]);return new y({tag:O[0],explicit:O[1],obj:R})}var B={};if(void 0!==O.explicit&&(B.explicit=O.explicit),void 0!==O.tag&&(B.tag=O.tag),void 0===O.obj)throw"obj shall be specified for 'tag'.";return B.obj=b(O.obj),new y(B)}},this.jsonToASN1HEX=function(t){return this.newObject(t).getEncodedHex()}},J.asn1.ASN1Util.oidHexToInt=function(t){for(var e="",r=parseInt(t.substr(0,2),16),i=(e=Math.floor(r/40)+"."+r%40,""),n=2;n<t.length;n+=2){var s=("00000000"+parseInt(t.substr(n,2),16).toString(2)).slice(-8);i+=s.substr(1,7),"0"==s.substr(0,1)&&(e=e+"."+new D(i,2).toString(10),i="")}return e},J.asn1.ASN1Util.oidIntToHex=function(t){var e=function(t){var e=t.toString(16);return 1==e.length&&(e="0"+e),e},r=function(t){var r="",i=new D(t,10).toString(2),n=7-i.length%7;7==n&&(n=0);for(var s="",o=0;o<n;o++)s+="0";for(i=s+i,o=0;o<i.length-1;o+=7){var h=i.substr(o,7);o!=i.length-7&&(h="1"+h),r+=e(parseInt(h,2))}return r};if(!t.match(/^[0-9.]+$/))throw"malformed oid string: "+t;var i="",n=t.split("."),s=40*parseInt(n[0])+parseInt(n[1]);i+=e(s),n.splice(0,2);for(var o=0;o<n.length;o++)i+=r(n[o]);return i},J.asn1.ASN1Object=function(){this.getLengthHexFromValue=function(){if(void 0===this.hV||null==this.hV)throw"this.hV is null or undefined.";if(this.hV.length%2==1)throw"value hex must be even length: n="+"".length+",v="+this.hV;var t=this.hV.length/2,e=t.toString(16);if(e.length%2==1&&(e="0"+e),t<128)return e;var r=e.length/2;if(r>15)throw"ASN.1 length too long to represent by 8x: n = "+t.toString(16);return(128+r).toString(16)+e},this.getEncodedHex=function(){return(null==this.hTLV||this.isModified)&&(this.hV=this.getFreshValueHex(),this.hL=this.getLengthHexFromValue(),this.hTLV=this.hT+this.hL+this.hV,this.isModified=!1),this.hTLV},this.getValueHex=function(){return this.getEncodedHex(),this.hV},this.getFreshValueHex=function(){return""}},J.asn1.DERAbstractString=function(t){J.asn1.DERAbstractString.superclass.constructor.call(this),this.getString=function(){return this.s},this.setString=function(t){this.hTLV=null,this.isModified=!0,this.s=t,this.hV=stohex(this.s)},this.setStringHex=function(t){this.hTLV=null,this.isModified=!0,this.s=null,this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&("string"==typeof t?this.setString(t):void 0!==t.str?this.setString(t.str):void 0!==t.hex&&this.setStringHex(t.hex))},X.lang.extend(J.asn1.DERAbstractString,J.asn1.ASN1Object),J.asn1.DERAbstractTime=function(t){J.asn1.DERAbstractTime.superclass.constructor.call(this),this.localDateToUTC=function(t){return utc=t.getTime()+6e4*t.getTimezoneOffset(),new Date(utc)},this.formatDate=function(t,e,r){var i=this.zeroPadding,n=this.localDateToUTC(t),s=String(n.getFullYear());"utc"==e&&(s=s.substr(2,2));var o=s+i(String(n.getMonth()+1),2)+i(String(n.getDate()),2)+i(String(n.getHours()),2)+i(String(n.getMinutes()),2)+i(String(n.getSeconds()),2);if(!0===r){var h=n.getMilliseconds();if(0!=h){var a=i(String(h),3);o=o+"."+(a=a.replace(/[0]+$/,""))}}return o+"Z"},this.zeroPadding=function(t,e){return t.length>=e?t:new Array(e-t.length+1).join("0")+t},this.getString=function(){return this.s},this.setString=function(t){this.hTLV=null,this.isModified=!0,this.s=t,this.hV=stohex(t)},this.setByDateValue=function(t,e,r,i,n,s){var o=new Date(Date.UTC(t,e-1,r,i,n,s,0));this.setByDate(o)},this.getFreshValueHex=function(){return this.hV}},X.lang.extend(J.asn1.DERAbstractTime,J.asn1.ASN1Object),J.asn1.DERAbstractStructured=function(t){J.asn1.DERAbstractString.superclass.constructor.call(this),this.setByASN1ObjectArray=function(t){this.hTLV=null,this.isModified=!0,this.asn1Array=t},this.appendASN1Object=function(t){this.hTLV=null,this.isModified=!0,this.asn1Array.push(t)},this.asn1Array=new Array,void 0!==t&&void 0!==t.array&&(this.asn1Array=t.array)},X.lang.extend(J.asn1.DERAbstractStructured,J.asn1.ASN1Object),J.asn1.DERBoolean=function(){J.asn1.DERBoolean.superclass.constructor.call(this),this.hT="01",this.hTLV="0101ff"},X.lang.extend(J.asn1.DERBoolean,J.asn1.ASN1Object),J.asn1.DERInteger=function(t){J.asn1.DERInteger.superclass.constructor.call(this),this.hT="02",this.setByBigInteger=function(t){this.hTLV=null,this.isModified=!0,this.hV=J.asn1.ASN1Util.bigIntToMinTwosComplementsHex(t)},this.setByInteger=function(t){var e=new D(String(t),10);this.setByBigInteger(e)},this.setValueHex=function(t){this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(void 0!==t.bigint?this.setByBigInteger(t.bigint):void 0!==t.int?this.setByInteger(t.int):"number"==typeof t?this.setByInteger(t):void 0!==t.hex&&this.setValueHex(t.hex))},X.lang.extend(J.asn1.DERInteger,J.asn1.ASN1Object),J.asn1.DERBitString=function(t){if(void 0!==t&&void 0!==t.obj){var e=J.asn1.ASN1Util.newObject(t.obj);t.hex="00"+e.getEncodedHex()}J.asn1.DERBitString.superclass.constructor.call(this),this.hT="03",this.setHexValueIncludingUnusedBits=function(t){this.hTLV=null,this.isModified=!0,this.hV=t},this.setUnusedBitsAndHexValue=function(t,e){if(t<0||7<t)throw"unused bits shall be from 0 to 7: u = "+t;var r="0"+t;this.hTLV=null,this.isModified=!0,this.hV=r+e},this.setByBinaryString=function(t){var e=8-(t=t.replace(/0+$/,"")).length%8;8==e&&(e=0);for(var r=0;r<=e;r++)t+="0";var i="";for(r=0;r<t.length-1;r+=8){var n=t.substr(r,8),s=parseInt(n,2).toString(16);1==s.length&&(s="0"+s),i+=s}this.hTLV=null,this.isModified=!0,this.hV="0"+e+i},this.setByBooleanArray=function(t){for(var e="",r=0;r<t.length;r++)1==t[r]?e+="1":e+="0";this.setByBinaryString(e)},this.newFalseArray=function(t){for(var e=new Array(t),r=0;r<t;r++)e[r]=!1;return e},this.getFreshValueHex=function(){return this.hV},void 0!==t&&("string"==typeof t&&t.toLowerCase().match(/^[0-9a-f]+$/)?this.setHexValueIncludingUnusedBits(t):void 0!==t.hex?this.setHexValueIncludingUnusedBits(t.hex):void 0!==t.bin?this.setByBinaryString(t.bin):void 0!==t.array&&this.setByBooleanArray(t.array))},X.lang.extend(J.asn1.DERBitString,J.asn1.ASN1Object),J.asn1.DEROctetString=function(t){if(void 0!==t&&void 0!==t.obj){var e=J.asn1.ASN1Util.newObject(t.obj);t.hex=e.getEncodedHex()}J.asn1.DEROctetString.superclass.constructor.call(this,t),this.hT="04"},X.lang.extend(J.asn1.DEROctetString,J.asn1.DERAbstractString),J.asn1.DERNull=function(){J.asn1.DERNull.superclass.constructor.call(this),this.hT="05",this.hTLV="0500"},X.lang.extend(J.asn1.DERNull,J.asn1.ASN1Object),J.asn1.DERObjectIdentifier=function(t){var e=function(t){var e=t.toString(16);return 1==e.length&&(e="0"+e),e},r=function(t){var r="",i=new D(t,10).toString(2),n=7-i.length%7;7==n&&(n=0);for(var s="",o=0;o<n;o++)s+="0";for(i=s+i,o=0;o<i.length-1;o+=7){var h=i.substr(o,7);o!=i.length-7&&(h="1"+h),r+=e(parseInt(h,2))}return r};J.asn1.DERObjectIdentifier.superclass.constructor.call(this),this.hT="06",this.setValueHex=function(t){this.hTLV=null,this.isModified=!0,this.s=null,this.hV=t},this.setValueOidString=function(t){if(!t.match(/^[0-9.]+$/))throw"malformed oid string: "+t;var i="",n=t.split("."),s=40*parseInt(n[0])+parseInt(n[1]);i+=e(s),n.splice(0,2);for(var o=0;o<n.length;o++)i+=r(n[o]);this.hTLV=null,this.isModified=!0,this.s=null,this.hV=i},this.setValueName=function(t){var e=J.asn1.x509.OID.name2oid(t);if(""===e)throw"DERObjectIdentifier oidName undefined: "+t;this.setValueOidString(e)},this.getFreshValueHex=function(){return this.hV},void 0!==t&&("string"==typeof t?t.match(/^[0-2].[0-9.]+$/)?this.setValueOidString(t):this.setValueName(t):void 0!==t.oid?this.setValueOidString(t.oid):void 0!==t.hex?this.setValueHex(t.hex):void 0!==t.name&&this.setValueName(t.name))},X.lang.extend(J.asn1.DERObjectIdentifier,J.asn1.ASN1Object),J.asn1.DEREnumerated=function(t){J.asn1.DEREnumerated.superclass.constructor.call(this),this.hT="0a",this.setByBigInteger=function(t){this.hTLV=null,this.isModified=!0,this.hV=J.asn1.ASN1Util.bigIntToMinTwosComplementsHex(t)},this.setByInteger=function(t){var e=new D(String(t),10);this.setByBigInteger(e)},this.setValueHex=function(t){this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(void 0!==t.int?this.setByInteger(t.int):"number"==typeof t?this.setByInteger(t):void 0!==t.hex&&this.setValueHex(t.hex))},X.lang.extend(J.asn1.DEREnumerated,J.asn1.ASN1Object),J.asn1.DERUTF8String=function(t){J.asn1.DERUTF8String.superclass.constructor.call(this,t),this.hT="0c"},X.lang.extend(J.asn1.DERUTF8String,J.asn1.DERAbstractString),J.asn1.DERNumericString=function(t){J.asn1.DERNumericString.superclass.constructor.call(this,t),this.hT="12"},X.lang.extend(J.asn1.DERNumericString,J.asn1.DERAbstractString),J.asn1.DERPrintableString=function(t){J.asn1.DERPrintableString.superclass.constructor.call(this,t),this.hT="13"},X.lang.extend(J.asn1.DERPrintableString,J.asn1.DERAbstractString),J.asn1.DERTeletexString=function(t){J.asn1.DERTeletexString.superclass.constructor.call(this,t),this.hT="14"},X.lang.extend(J.asn1.DERTeletexString,J.asn1.DERAbstractString),J.asn1.DERIA5String=function(t){J.asn1.DERIA5String.superclass.constructor.call(this,t),this.hT="16"},X.lang.extend(J.asn1.DERIA5String,J.asn1.DERAbstractString),J.asn1.DERUTCTime=function(t){J.asn1.DERUTCTime.superclass.constructor.call(this,t),this.hT="17",this.setByDate=function(t){this.hTLV=null,this.isModified=!0,this.date=t,this.s=this.formatDate(this.date,"utc"),this.hV=stohex(this.s)},this.getFreshValueHex=function(){return void 0===this.date&&void 0===this.s&&(this.date=new Date,this.s=this.formatDate(this.date,"utc"),this.hV=stohex(this.s)),this.hV},void 0!==t&&(void 0!==t.str?this.setString(t.str):"string"==typeof t&&t.match(/^[0-9]{12}Z$/)?this.setString(t):void 0!==t.hex?this.setStringHex(t.hex):void 0!==t.date&&this.setByDate(t.date))},X.lang.extend(J.asn1.DERUTCTime,J.asn1.DERAbstractTime),J.asn1.DERGeneralizedTime=function(t){J.asn1.DERGeneralizedTime.superclass.constructor.call(this,t),this.hT="18",this.withMillis=!1,this.setByDate=function(t){this.hTLV=null,this.isModified=!0,this.date=t,this.s=this.formatDate(this.date,"gen",this.withMillis),this.hV=stohex(this.s)},this.getFreshValueHex=function(){return void 0===this.date&&void 0===this.s&&(this.date=new Date,this.s=this.formatDate(this.date,"gen",this.withMillis),this.hV=stohex(this.s)),this.hV},void 0!==t&&(void 0!==t.str?this.setString(t.str):"string"==typeof t&&t.match(/^[0-9]{14}Z$/)?this.setString(t):void 0!==t.hex?this.setStringHex(t.hex):void 0!==t.date&&this.setByDate(t.date),!0===t.millis&&(this.withMillis=!0))},X.lang.extend(J.asn1.DERGeneralizedTime,J.asn1.DERAbstractTime),J.asn1.DERSequence=function(t){J.asn1.DERSequence.superclass.constructor.call(this,t),this.hT="30",this.getFreshValueHex=function(){for(var t="",e=0;e<this.asn1Array.length;e++)t+=this.asn1Array[e].getEncodedHex();return this.hV=t,this.hV}},X.lang.extend(J.asn1.DERSequence,J.asn1.DERAbstractStructured),J.asn1.DERSet=function(t){J.asn1.DERSet.superclass.constructor.call(this,t),this.hT="31",this.sortFlag=!0,this.getFreshValueHex=function(){for(var t=new Array,e=0;e<this.asn1Array.length;e++){var r=this.asn1Array[e];t.push(r.getEncodedHex())}return 1==this.sortFlag&&t.sort(),this.hV=t.join(""),this.hV},void 0!==t&&void 0!==t.sortflag&&0==t.sortflag&&(this.sortFlag=!1)},X.lang.extend(J.asn1.DERSet,J.asn1.DERAbstractStructured),J.asn1.DERTaggedObject=function(t){J.asn1.DERTaggedObject.superclass.constructor.call(this),this.hT="a0",this.hV="",this.isExplicit=!0,this.asn1Object=null,this.setASN1Object=function(t,e,r){this.hT=e,this.isExplicit=t,this.asn1Object=r,this.isExplicit?(this.hV=this.asn1Object.getEncodedHex(),this.hTLV=null,this.isModified=!0):(this.hV=null,this.hTLV=r.getEncodedHex(),this.hTLV=this.hTLV.replace(/^../,e),this.isModified=!1)},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(void 0!==t.tag&&(this.hT=t.tag),void 0!==t.explicit&&(this.isExplicit=t.explicit),void 0!==t.obj&&(this.asn1Object=t.obj,this.setASN1Object(this.isExplicit,this.hT,this.asn1Object)))},X.lang.extend(J.asn1.DERTaggedObject,J.asn1.ASN1Object);var Q,W=(Q=function(t,e){return(Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}Q(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),tt=function(t){function e(r){var i=t.call(this)||this;return r&&("string"==typeof r?i.parseKey(r):(e.hasPrivateKeyProperty(r)||e.hasPublicKeyProperty(r))&&i.parsePropertiesFrom(r)),i}return W(e,t),e.prototype.parseKey=function(t){try{var e=0,r=0,i=/^\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\s*)+$/.test(t)?function(t){var e;if(void 0===h){var r="0123456789ABCDEF",i=" \f\n\r\t \u2028\u2029";for(h={},e=0;e<16;++e)h[r.charAt(e)]=e;for(r=r.toLowerCase(),e=10;e<16;++e)h[r.charAt(e)]=e;for(e=0;e<i.length;++e)h[i.charAt(e)]=-1}var n=[],s=0,o=0;for(e=0;e<t.length;++e){var a=t.charAt(e);if("="==a)break;if(-1!=(a=h[a])){if(void 0===a)throw new Error("Illegal character at offset "+e);s|=a,++o>=2?(n[n.length]=s,s=0,o=0):s<<=4}}if(o)throw new Error("Hex encoding incomplete: 4 bits missing");return n}(t):l.unarmor(t),n=T.decode(i);if(3===n.sub.length&&(n=n.sub[2].sub[0]),9===n.sub.length){e=n.sub[1].getHexStringValue(),this.n=V(e,16),r=n.sub[2].getHexStringValue(),this.e=parseInt(r,16);var s=n.sub[3].getHexStringValue();this.d=V(s,16);var o=n.sub[4].getHexStringValue();this.p=V(o,16);var a=n.sub[5].getHexStringValue();this.q=V(a,16);var u=n.sub[6].getHexStringValue();this.dmp1=V(u,16);var c=n.sub[7].getHexStringValue();this.dmq1=V(c,16);var f=n.sub[8].getHexStringValue();this.coeff=V(f,16)}else{if(2!==n.sub.length)return!1;var p=n.sub[1].sub[0];e=p.sub[0].getHexStringValue(),this.n=V(e,16),r=p.sub[1].getHexStringValue(),this.e=parseInt(r,16)}return!0}catch(t){return!1}},e.prototype.getPrivateBaseKey=function(){var t={array:[new J.asn1.DERInteger({int:0}),new J.asn1.DERInteger({bigint:this.n}),new J.asn1.DERInteger({int:this.e}),new J.asn1.DERInteger({bigint:this.d}),new J.asn1.DERInteger({bigint:this.p}),new J.asn1.DERInteger({bigint:this.q}),new J.asn1.DERInteger({bigint:this.dmp1}),new J.asn1.DERInteger({bigint:this.dmq1}),new J.asn1.DERInteger({bigint:this.coeff})]};return new J.asn1.DERSequence(t).getEncodedHex()},e.prototype.getPrivateBaseKeyB64=function(){return u(this.getPrivateBaseKey())},e.prototype.getPublicBaseKey=function(){var t=new J.asn1.DERSequence({array:[new J.asn1.DERObjectIdentifier({oid:"1.2.840.113549.1.1.1"}),new J.asn1.DERNull]}),e=new J.asn1.DERSequence({array:[new J.asn1.DERInteger({bigint:this.n}),new J.asn1.DERInteger({int:this.e})]}),r=new J.asn1.DERBitString({hex:"00"+e.getEncodedHex()});return new J.asn1.DERSequence({array:[t,r]}).getEncodedHex()},e.prototype.getPublicBaseKeyB64=function(){return u(this.getPublicBaseKey())},e.wordwrap=function(t,e){if(!t)return t;var r="(.{1,"+(e=e||64)+"})( +|$\n?)|(.{1,"+e+"})";return t.match(RegExp(r,"g")).join("\n")},e.prototype.getPrivateKey=function(){var t="-----BEGIN RSA PRIVATE KEY-----\n";return(t+=e.wordwrap(this.getPrivateBaseKeyB64())+"\n")+"-----END RSA PRIVATE KEY-----"},e.prototype.getPublicKey=function(){var t="-----BEGIN PUBLIC KEY-----\n";return(t+=e.wordwrap(this.getPublicBaseKeyB64())+"\n")+"-----END PUBLIC KEY-----"},e.hasPublicKeyProperty=function(t){return(t=t||{}).hasOwnProperty("n")&&t.hasOwnProperty("e")},e.hasPrivateKeyProperty=function(t){return(t=t||{}).hasOwnProperty("n")&&t.hasOwnProperty("e")&&t.hasOwnProperty("d")&&t.hasOwnProperty("p")&&t.hasOwnProperty("q")&&t.hasOwnProperty("dmp1")&&t.hasOwnProperty("dmq1")&&t.hasOwnProperty("coeff")},e.prototype.parsePropertiesFrom=function(t){this.n=t.n,this.e=t.e,t.hasOwnProperty("d")&&(this.d=t.d,this.p=t.p,this.q=t.q,this.dmp1=t.dmp1,this.dmq1=t.dmq1,this.coeff=t.coeff)},e}(G);const et=function(){function t(t){t=t||{},this.default_key_size=t.default_key_size?parseInt(t.default_key_size,10):1024,this.default_public_exponent=t.default_public_exponent||"010001",this.log=t.log||!1,this.key=null}return t.prototype.setKey=function(t){this.log&&this.key&&console.warn("A key was already set, overriding existing."),this.key=new tt(t)},t.prototype.setPrivateKey=function(t){this.setKey(t)},t.prototype.setPublicKey=function(t){this.setKey(t)},t.prototype.decrypt=function(t){try{return this.getKey().decrypt(c(t))}catch(t){return!1}},t.prototype.encrypt=function(t){try{return u(this.getKey().encrypt(t))}catch(t){return!1}},t.prototype.sign=function(t,e,r){try{return u(this.getKey().sign(t,e,r))}catch(t){return!1}},t.prototype.verify=function(t,e,r){try{return this.getKey().verify(t,c(e),r)}catch(t){return!1}},t.prototype.getKey=function(t){if(!this.key){if(this.key=new tt,t&&"[object Function]"==={}.toString.call(t))return void this.key.generateAsync(this.default_key_size,this.default_public_exponent,t);this.key.generate(this.default_key_size,this.default_public_exponent)}return this.key},t.prototype.getPrivateKey=function(){return this.getKey().getPrivateKey()},t.prototype.getPrivateKeyB64=function(){return this.getKey().getPrivateBaseKeyB64()},t.prototype.getPublicKey=function(){return this.getKey().getPublicKey()},t.prototype.getPublicKeyB64=function(){return this.getKey().getPublicBaseKeyB64()},t.version="3.2.0",t}(),rt=window.Rails||window.$.rails;var it=function(t){var e=t.headers,r=t.status;return 404===r||500<=r?Promise.reject({headers:e,status:r}):-1!==(t.headers.get("Content-Type")+"").indexOf("json")&&204!==t.status?t.json().then((function(t){return{headers:e,status:r,json:t}}),(function(){return{headers:e,status:r,json:null}})):{headers:e,status:r,json:null}};const nt=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"GET",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i={method:e,credentials:"same-origin",headers:new Headers};return i.headers.append("X-CSRF-Token",rt.csrfToken()),i.headers.append("accept","application/json"),r.body&&(r.body instanceof FormData?i.body=r.body:(i.body=JSON.stringify(r.body),i.headers.append("content-type","application/json"))),window.fetch(t,i).then(it,(function(t){return Promise.reject(t)}))};var st,ot,ht,at=function(t){return t&&t.trim().length};window.$&&window.$.payment?(st=window.$.payment.validateCardNumber,ot=window.$.payment.validateCardCVC,ht=window.$.payment.validateCardExpiry):(ot=at,ht=function(t,e){return at(t)&&at(e)});var ut=function(t,e,r){t[e]||(t[e]=[]),t[e].push(r)},ct=["number"];function ft(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,i=new Array(e);r<e;r++)i[r]=t[r];return i}function lt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}function pt(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?lt(Object(r),!0).forEach((function(e){gt(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):lt(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function gt(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var dt={},vt=function(t){var e=t.slice(0,6),r=t.slice(t.length-4),i="*".repeat(t.length-10);return"".concat(e).concat(i).concat(r)},mt=function(t,e){},yt=function(t,e){},bt={number:"nexio_card_number",cc_type:"nexio_card_type",name:"nexio_card_name",month:"nexio_card_month",year:"nexio_card_year",verification_value:"nexio_verification_value"},Tt=function(){Object.keys(dt).forEach((function(t){var e=document.querySelector('[data-nexio-own-form-id="'.concat(t,'"]'));if(null!==e){var r=e.closest("form");if(null!==r){var i=function(){e.removeAttribute("disabled");var t=r.querySelector(rt.formEnableSelector);rt.enableElement(t),t.classList.remove("disabled")};e.setAttribute("disabled","disabled"),function(t){var e=dt[t],r=e.paths,i=e.data;return nt(r.oneTimeToken,"POST",{body:{data:i}}).then((function(e){if(201===e.status){var r=e.json.data;return dt[t].token=r.token,r}return Promise.reject(e)}),(function(t){return Promise.reject(t)}))}(t).then((function(n){return function(t,e){return new Promise((function(r){var i=document.createElement("script");i.onload=r,i.src=e,t.appendChild(i)}))}(e,n.fraud_url).then((function(){e.removeAttribute("disabled"),r.addEventListener("submit",(function(n){if(0!==e.clientHeight){n.preventDefault();var s=function(t){return Object.entries(bt).reduce((function(e,r){var i,n,s=(n=2,function(t){if(Array.isArray(t))return t}(i=r)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var i,n,s=[],o=!0,h=!1;try{for(r=r.call(t);!(o=(i=r.next()).done)&&(s.push(i.value),!e||s.length!==e);o=!0);}catch(t){h=!0,n=t}finally{try{o||null==r.return||r.return()}finally{if(h)throw n}}return s}}(i,n)||function(t,e){if(t){if("string"==typeof t)return ft(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ft(t,e):void 0}}(i,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=s[0],h=s[1],a=t.querySelector('[data-hook="'.concat(h,'"]'));return a&&(e[o]=a.value),e}),{})}(e),o=function(t){var e={};return["number","cc_type","name","month","year","verification_value"].forEach((function(r){return at(t[r])?null:ut(e,r,"blank")})),st(t.number)||ut(e,"number","blank"),ot(t.verification_value,t.cc_type)||ut(e,"verification_value","invalid"),ht(t.month,t.year)||(ut(e,"month","invalid"),ut(e,"year","invalid")),e}(s);if(0<Object.keys(o).length)return i(),function(t,e,r){var i=new CustomEvent("invalid_nexio_fields");i.data={errors:e,card:r},t.dispatchEvent(i)}(e,o,s);e.setAttribute("disabled","disabled"),function(t,e){var r=dt[t],i=e.number,n=function(t,e){if(null==t)return{};var r,i,n=function(t,e){if(null==t)return{};var r,i,n={},s=Object.keys(t);for(i=0;i<s.length;i++)r=s[i],e.indexOf(r)>=0||(n[r]=t[r]);return n}(t,e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);for(i=0;i<s.length;i++)r=s[i],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}(e,ct);i=i.replace(/\D+/g,"");var s=new et;s.setPublicKey(r.publicKey);var o=pt(pt({},r.data),{},{one_time_token:r.token,card:pt(pt({},n),{},{encrypted_number:s.encrypt(i),number:vt(i)})});return nt(r.paths.creditCard,"POST",{body:{data:o}}).then((function(t){return 201===t.status?t.json.data:Promise.reject(t)}),(function(t){return Promise.reject(t)}))}(t,s).then((function(t){e.querySelector('[data-hook="nexio_card_gateway_payment_profile_id"]').value=t.token,e.removeAttribute("disabled"),r.submit()}),yt.bind(null,e)).catch((function(){i()}))}}))}))}),mt.bind(null,e))}}}))};window.addNexioOwnForm=function(t,e){dt[t]=e},window.jQuery((function(){Tt()}))})()})();
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @fileOverview
3
+ * @name asn1-1.0.js
4
+ * @author Kenji Urushima kenji.urushima@gmail.com
5
+ * @version asn1 1.0.13 (2017-Jun-02)
6
+ * @since jsrsasign 2.1
7
+ * @license <a href="https://kjur.github.io/jsrsasign/license/">MIT License</a>
8
+ */
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusNexio
4
+ class BasePaymentController < ::Spree::Api::BaseController
5
+ skip_before_action :authenticate_user
6
+
7
+ before_action :payment_method
8
+
9
+ private
10
+
11
+ def payment_method
12
+ @payment_method ||= SolidusNexio::PaymentMethod.find(params[:payment_method_id])
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusNexio
4
+ class CreditCardsController < BasePaymentController
5
+ def create
6
+ token = payment_method.store(credit_card_params)
7
+ if token
8
+ render json: { data: { token: token } }, status: 201
9
+ else
10
+ head 422
11
+ end
12
+ end
13
+
14
+ private
15
+
16
+ def credit_card_params
17
+ params.require(:data).permit(:currency, :one_time_token,
18
+ address: %i[address1 address2 city country phone zip state],
19
+ billing_address: %i[address1 address2 city country phone zip state],
20
+ card: ::Spree::PermittedAttributes.source_attributes,
21
+ customer: %i[first_name last_name email],
22
+ order: %i[number date]).to_h.deep_symbolize_keys
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusNexio
4
+ class OneTimeTokensController < BasePaymentController
5
+ def create
6
+ result = payment_method.generate_token(one_time_token_params)
7
+ if result
8
+ render json: { data: result }, status: 201
9
+ else
10
+ head 422
11
+ end
12
+ end
13
+
14
+ private
15
+
16
+ def one_time_token_params
17
+ params.require(:data).permit(:currency,
18
+ address: %i[address1 address2 city country phone zip state],
19
+ billing_address: %i[address1 address2 city country phone zip state],
20
+ customer: %i[first_name last_name email],
21
+ order: %i[number date]).to_h.deep_symbolize_keys
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusNexio
4
+ module CheckoutHelper
5
+ def setup_nexio_own_form(payment_method, user:, order:)
6
+ # include js script only once per request
7
+ unless @__nexio_checkout_script
8
+ content_for(:head) { javascript_include_tag('solidus_nexio/checkout.js') }
9
+ @__nexio_checkout_script = true
10
+ end
11
+
12
+ config = {
13
+ publicKey: payment_method.preferred_public_key,
14
+ paths: {
15
+ oneTimeToken: solidus_nexio.payment_method_one_time_tokens_path(payment_method),
16
+ creditCard: solidus_nexio.payment_method_credit_cards_path(payment_method)
17
+ },
18
+ data: NexioData.one_time_token(user: user, order: order)
19
+ }
20
+ javascript_tag("window.addNexioOwnForm(#{payment_method.id}, #{config.to_json});")
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusNexio
4
+ class PaymentMethod < SolidusSupport.payment_method_parent_class(credit_card: true)
5
+ # Preferences for configuration of Braintree credentials
6
+ preference(:server, :string, default: 'test')
7
+ preference(:merchant_id, :string, default: nil)
8
+ preference(:auth_token, :string, default: nil)
9
+ preference(:public_key, :string, default: nil)
10
+ preference(:ui, :boolean, default: 'own_form') # in future add iframe
11
+
12
+ def partial_name
13
+ "nexio_#{preferred_ui}"
14
+ end
15
+ alias method_type partial_name
16
+
17
+ def generate_token(options)
18
+ gateway.generate_token(options)
19
+ end
20
+
21
+ def store(options)
22
+ card_attrs = options[:card]
23
+ .slice(:encrypted_number, :number, :name, :month, :year)
24
+ .merge!(
25
+ brand: options[:card][:cc_type],
26
+ one_time_token: options[:one_time_token],
27
+ own_form: preferred_ui == 'own_form'
28
+ )
29
+ card = ActiveMerchant::Billing::EncryptedNexioCard.new(card_attrs)
30
+ return unless card.valid?
31
+
32
+ gateway.store(card, options.except(:card, :one_time_token))
33
+ end
34
+
35
+ protected
36
+
37
+ def gateway_class
38
+ ActiveMerchant::Billing::NexioGateway
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusNexio
4
+ module NexioData
5
+ extend self
6
+
7
+ def one_time_token(order:, user:)
8
+ acc = { customer: {} }
9
+
10
+ if order
11
+ add_order_data(acc, order)
12
+ add_customer_data(acc, order.user || user)
13
+ else
14
+ acc[:total] = 0
15
+ add_customer_data(acc, user)
16
+ end
17
+
18
+ acc.delete(:customer) if acc[:customer].blank?
19
+
20
+ acc
21
+ end
22
+
23
+ private
24
+
25
+ def add_order_data(acc, order)
26
+ acc[:currency] = order.currency
27
+ acc[:customer].merge!(address_to_name(order.billing_address)).merge!(email: order.email)
28
+ acc[:address] = address_data(order.shipping_address)
29
+ acc[:billing_address] = address_data(order.billing_address)
30
+ acc[:order] = { number: order.number }
31
+ acc[:order][:date] = order.completed_at.to_date if order.completed_at
32
+ acc
33
+ end
34
+
35
+ def add_customer_data(acc, user)
36
+ return acc unless user
37
+
38
+ acc[:customer][:email] = user.email if user.respond_to?(:email)
39
+ acc[:customer][:first_name] = user.first_name if user.respond_to?(:first_name)
40
+ acc[:customer][:last_name] = user.last_name if user.respond_to?(:last_name)
41
+ acc
42
+ end
43
+
44
+ def address_data(address)
45
+ {
46
+ address1: address.address1,
47
+ address2: address.address2,
48
+ city: address.city,
49
+ country: address.country&.iso.to_s,
50
+ phone: address.phone,
51
+ zip: address.zipcode,
52
+ state: address.state_name
53
+ }
54
+ end
55
+
56
+ def line_item_data(line_item)
57
+ {
58
+ id: line_item.id,
59
+ description: line_item.product.name,
60
+ price: line_item.price,
61
+ quantity: line_item.quantity
62
+ }
63
+ end
64
+
65
+ if SolidusSupport.combined_first_and_last_name_in_address?
66
+ def address_to_name(address)
67
+ parts = address.name.split(' ')
68
+ { first_name: parts[0], last_name: parts[1..-1].join(' ') }
69
+ end
70
+ else
71
+ def address_to_name(address)
72
+ { first_name: address.firstname, last_name: address.lastname }
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,10 @@
1
+ <tr id="<%= dom_id(wallet_payment_source, 'spree')%>" class="<%= cycle('even', 'odd') %>">
2
+ <td>
3
+ <%= radio_button_tag "order[wallet_payment_source_id]",
4
+ wallet_payment_source.id,
5
+ default,
6
+ class: "existing-cc-radio" %>
7
+ </td>
8
+ <td><%= wallet_payment_source.payment_source.cc_type %></td>
9
+ <td><%= wallet_payment_source.payment_source.display_number %></td>
10
+ </tr>
@@ -0,0 +1,7 @@
1
+ <%= setup_nexio_own_form(payment_method, order: current_order, user: current_spree_user) %>
2
+
3
+ <h1><%= payment_method.name %></h1>
4
+
5
+ <fieldset class="nexio-own-form" data-hook="nexio_own_form" data-nexio-own-form-id="<%= payment_method.id %>">
6
+ <%= render "spree/shared/nexio_own_form", payment_method: payment_method %>
7
+ </fieldset>
@@ -0,0 +1,34 @@
1
+ <% id = payment_method.id %>
2
+
3
+ <div class="field field-required field--nexio-number" data-hook="nexio_card_number_field">
4
+ <label><%= t('spree.card_number') %></label>
5
+ <input name="payment_source[<%= id %>][number]" type="text" data-hook="nexio_card_number" class="cardNumber" />
6
+ <input name="payment_source[<%= id %>][gateway_payment_profile_id]" type="hidden" data-hook="nexio_card_gateway_payment_profile_id" />
7
+ </div>
8
+ <input name="payment_source[<%= id %>][cc_type]" type="hidden" data-hook="nexio_card_type" class="ccType" />
9
+
10
+ <div class="field field-required field--nexio-name" data-hook="nexio_card_name_field">
11
+ <label><%= t('spree.name_on_card') %></label>
12
+ <input name="payment_source[<%= id %>][name]" type="text" data-hook="nexio_card_name" />
13
+ </div>
14
+
15
+ <div class="fieldset fieldset--expirity">
16
+ <div class="field field-required field--nexio-month" data-hook="nexio_card_month_field">
17
+ <label><%= Spree::CreditCard.human_attribute_name(:month) %></label>
18
+ <input name="payment_source[<%= id %>][month]" type="text" data-hook="nexio_card_month" />
19
+ </div>
20
+
21
+ <div class="field field-required field--nexio-year" data-hook="nexio_card_year_field">
22
+ <label><%= Spree::CreditCard.human_attribute_name(:year) %></label>
23
+ <input name="payment_source[<%= id %>][year]" type="text" data-hook="nexio_card_year" />
24
+ </div>
25
+
26
+ <div class="field field-required field--nexio-verification_value" data-hook="nexio_verification_value_field">
27
+ <label><%= t('spree.card_code') %></label>
28
+ <input name="payment_source[<%= id %>][verification_value]" type="password" data-hook="nexio_verification_value" />
29
+
30
+ <a href="/content/cvv" class="info cvvLink" target="_blank">
31
+ (<%= I18n.t("spree.what_is_this") %>)
32
+ </a>
33
+ </div>
34
+ </div>
@@ -0,0 +1,4 @@
1
+ en:
2
+ activerecord:
3
+ models:
4
+ solidus_nexio/payment_method: Nexio
data/config/routes.rb ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ SolidusNexio::Engine.routes.draw do
4
+ resources :payment_methods, only: [] do
5
+ resources :one_time_tokens, only: %i[create]
6
+ resources :credit_cards, only: %i[create]
7
+ end
8
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'solidus_nexio/version'
4
+ require 'nexio_activemerchant'
5
+ require 'solidus_nexio/engine'
6
+
7
+ module SolidusNexio
8
+ class Error < StandardError; end
9
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'solidus_support'
4
+
5
+ module SolidusNexio
6
+ class Engine < Rails::Engine
7
+ include SolidusSupport::EngineExtensions
8
+
9
+ isolate_namespace SolidusNexio
10
+ engine_name 'solidus_nexio'
11
+
12
+ config.assets.precompile.push('solidus_nexio/checkout.js')
13
+
14
+ config.to_prepare do
15
+ if SolidusSupport.frontend_available?
16
+ ::Spree::CheckoutController.helper CheckoutHelper
17
+ ::Spree::OrdersController.helper CheckoutHelper
18
+ end
19
+
20
+ ::Spree::Admin::PaymentsController.helper CheckoutHelper if SolidusSupport.backend_available?
21
+ end
22
+
23
+ config.after_initialize do |app|
24
+ app.config.spree.payment_methods << SolidusNexio::PaymentMethod
25
+ ::Spree::PermittedAttributes.source_attributes.push(:encrypted_number)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusNexio
4
+ VERSION = '0.1.0'
5
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+ # desc "Explaining what the task does"
3
+ # task :solidus_nexio do
4
+ # # Task goes here
5
+ # end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/solidus_nexio/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'solidus_nexio'
7
+ spec.version = SolidusNexio::VERSION
8
+ spec.authors = %w[Whitespectre]
9
+ spec.email = %w[hello@whitespectre.com]
10
+
11
+ spec.summary = 'Solidus integration with Nexio'
12
+ spec.homepage = 'https://github.com/jalkoby/solidus_nexio'
13
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.3.0')
14
+
15
+ spec.metadata['homepage_uri'] = spec.homepage
16
+ spec.metadata['source_code_uri'] = 'https://github.com/jalkoby/solidus_nexio'
17
+ spec.metadata['changelog_uri'] = 'https://github.com/jalkoby/solidus_nexio/blob/master/CHANGELOG'
18
+
19
+ # Specify which files should be added to the gem when it is released.
20
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
21
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
22
+ list = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^((bin|spec|dist|src)/|(package|yarn|webpack|\.))}) }
23
+ # add ignored compiled js files for rubygems
24
+ list.concat(Dir.glob('app/assets/javascripts/**/*').select { |f| File.file?(f) })
25
+ end
26
+
27
+ spec.bindir = 'exe'
28
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
29
+ spec.require_paths = ['lib']
30
+
31
+ spec.add_dependency 'rails'
32
+ spec.add_dependency 'solidus_api', '>= 2.0'
33
+ spec.add_dependency 'solidus_core', '>= 2.0'
34
+ spec.add_dependency 'solidus_support', '~> 0.6'
35
+ spec.add_dependency 'nexio_activemerchant', '~> 0.1'
36
+ end
metadata ADDED
@@ -0,0 +1,139 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: solidus_nexio
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Whitespectre
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2021-07-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: solidus_api
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '2.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: solidus_core
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: solidus_support
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.6'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.6'
69
+ - !ruby/object:Gem::Dependency
70
+ name: nexio_activemerchant
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.1'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.1'
83
+ description:
84
+ email:
85
+ - hello@whitespectre.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - CHANGELOG
91
+ - Gemfile
92
+ - LICENSE
93
+ - README.md
94
+ - Rakefile
95
+ - app/assets/javascripts/solidus_nexio/checkout.js
96
+ - app/assets/javascripts/solidus_nexio/checkout.js.LICENSE.txt
97
+ - app/controllers/solidus_nexio/base_payment_controller.rb
98
+ - app/controllers/solidus_nexio/credit_cards_controller.rb
99
+ - app/controllers/solidus_nexio/one_time_tokens_controller.rb
100
+ - app/helpers/solidus_nexio/checkout_helper.rb
101
+ - app/models/solidus_nexio/payment_method.rb
102
+ - app/services/solidus_nexio/nexio_data.rb
103
+ - app/views/spree/admin/payments/source_forms/_nexio_own_form.html.erb
104
+ - app/views/spree/checkout/existing_payment/_nexio_own_form.html.erb
105
+ - app/views/spree/checkout/payment/_nexio_own_form.html.erb
106
+ - app/views/spree/shared/_nexio_own_form.html.erb
107
+ - config/locales/en.yml
108
+ - config/routes.rb
109
+ - lib/solidus_nexio.rb
110
+ - lib/solidus_nexio/engine.rb
111
+ - lib/solidus_nexio/version.rb
112
+ - lib/tasks/solidus_nexio_tasks.rake
113
+ - solidus_nexio.gemspec
114
+ homepage: https://github.com/jalkoby/solidus_nexio
115
+ licenses: []
116
+ metadata:
117
+ homepage_uri: https://github.com/jalkoby/solidus_nexio
118
+ source_code_uri: https://github.com/jalkoby/solidus_nexio
119
+ changelog_uri: https://github.com/jalkoby/solidus_nexio/blob/master/CHANGELOG
120
+ post_install_message:
121
+ rdoc_options: []
122
+ require_paths:
123
+ - lib
124
+ required_ruby_version: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: 2.3.0
129
+ required_rubygems_version: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ requirements: []
135
+ rubygems_version: 3.1.2
136
+ signing_key:
137
+ specification_version: 4
138
+ summary: Solidus integration with Nexio
139
+ test_files: []