Socket
Socket
Sign inDemoInstall

ngx-dropzone

Package Overview
Dependencies
Maintainers
1
Versions
29
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ngx-dropzone - npm Package Compare versions

Comparing version 2.0.2 to 2.0.3

2

bundles/ngx-dropzone.umd.min.js

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/platform-browser"),require("@angular/common")):"function"==typeof define&&define.amd?define("ngx-dropzone",["exports","@angular/core","@angular/platform-browser","@angular/common"],t):t(e["ngx-dropzone"]={},e.ng.core,e.ng.platformBrowser,e.ng.common)}(this,function(e,o,r,t){"use strict";var n=function(){function e(){}return e.decorators=[{type:o.Directive,args:[{selector:"ngx-dropzone-label"}]}],e}(),i=function(e,t){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function s(e,t){function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function a(o,r){var i,s,a,e,p={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return e={next:t(0),"throw":t(1),"return":t(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(t){return function(e){return function n(e){if(i)throw new TypeError("Generator is already executing.");for(;p;)try{if(i=1,s&&(a=2&e[0]?s["return"]:e[0]?s["throw"]||((a=s["return"])&&a.call(s),0):s.next)&&!(a=a.call(s,e[1])).done)return a;switch(s=0,a&&(e=[2&e[0],a.value]),e[0]){case 0:case 1:a=e;break;case 4:return p.label++,{value:e[1],done:!1};case 5:p.label++,s=e[1],e=[0];continue;case 7:e=p.ops.pop(),p.trys.pop();continue;default:if(!(a=0<(a=p.trys).length&&a[a.length-1])&&(6===e[0]||2===e[0])){p=0;continue}if(3===e[0]&&(!a||e[1]>a[0]&&e[1]<a[3])){p.label=e[1];break}if(6===e[0]&&p.label<a[1]){p.label=a[1],a=e;break}if(a&&p.label<a[2]){p.label=a[2],p.ops.push(e);break}a[2]&&p.ops.pop(),p.trys.pop();continue}e=r.call(o,p)}catch(t){e=[6,t],s=0}finally{i=a=0}if(5&e[0])throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}([t,e])}}}function p(e){return null!=e&&""+e!="false"}var l={BACKSPACE:8,DELETE:46};l[l.BACKSPACE]="BACKSPACE",l[l.DELETE]="DELETE";var c=function(){function e(e){this.sanitizer=e,this._removable=!1,this.removed=new o.EventEmitter,this.tabIndex=0}return Object.defineProperty(e.prototype,"removable",{get:function(){return this._removable},set:function(e){this._removable=p(e)},enumerable:!0,configurable:!0}),e.prototype.keyEvent=function(e){switch(e.keyCode){case l.BACKSPACE:case l.DELETE:this.remove()}},Object.defineProperty(e.prototype,"hostStyle",{get:function(){return this.sanitizer.bypassSecurityTrustStyle("\n\t\t\tdisplay: flex;\n\t\t\theight: 140px;\n\t\t\tmin-height: 140px;\n\t\t\tmin-width: 180px;\n\t\t\tmax-width: 180px;\n\t\t\tjustify-content: center;\n\t\t\talign-items: center;\n\t\t\tpadding: 0 20px;\n\t\t\tmargin: 10px;\n\t\t\tborder-radius: 5px;\n\t\t\tposition: relative;\n\t\t")},enumerable:!0,configurable:!0}),e.prototype._remove=function(e){e.stopPropagation(),this.remove()},e.prototype.remove=function(){this._removable&&this.removed.next(this.file)},e.prototype.readFile=function(){return function e(t,s,a,p){return new(a||(a=Promise))(function(e,n){function o(e){try{i(p.next(e))}catch(t){n(t)}}function r(e){try{i(p["throw"](e))}catch(t){n(t)}}function i(t){t.done?e(t.value):new a(function(e){e(t.value)}).then(o,r)}i((p=p.apply(t,s||[])).next())})}(this,void 0,void 0,function(){var o=this;return a(this,function(e){return[2,new Promise(function(t,n){var e=new FileReader;if(e.onload=function(e){return t(e.target.result)},e.onerror=function(e){return console.error("FileReader failed on file "+o.file.name+"."),n(null)},!o.file)return console.error("No file to read. Please provide a file using the [file] Input property."),n(null);e.readAsDataURL(o.file)})]})})},e.decorators=[{type:o.Component,args:[{selector:"ngx-dropzone-preview",template:'\n\t\t<ng-content select="ngx-dropzone-label"></ng-content>\n\t\t<ngx-dropzone-remove-badge *ngIf="removable" (click)="_remove($event)">\n\t\t</ngx-dropzone-remove-badge>\n\t',styles:[":host(){background-image:linear-gradient(to top,#ededed,#efefef,#f1f1f1,#f4f4f4,#f6f6f6)}:host():focus,:host():hover{background-image:linear-gradient(to top,#e3e3e3,#ebeaea,#e8e7e7,#ebeaea,#f4f4f4);outline:0}:host():focus ngx-dropzone-remove-badge,:host():hover ngx-dropzone-remove-badge{opacity:1}:host() ngx-dropzone-remove-badge{opacity:0}:host() ::ng-deep ngx-dropzone-label{overflow-wrap:break-word}"]}]}],e.ctorParameters=function(){return[{type:r.DomSanitizer}]},e.propDecorators={file:[{type:o.Input}],removable:[{type:o.Input}],removed:[{type:o.Output}],keyEvent:[{type:o.HostListener,args:["keyup",["$event"]]}],hostStyle:[{type:o.HostBinding,args:["style"]}],tabIndex:[{type:o.HostBinding,args:["tabindex"]}]},e}(),d=function(){function e(){this.addedFiles=[],this.rejectedFiles=[]}return e.prototype.parseFileList=function(e,t,n,o){this.addedFiles=[],this.rejectedFiles=[];for(var r="*"!==t,i=t.endsWith("/*"),s=t.split("/")[0],a=0;a<e.length;a++){var p=e.item(a);if(r)if(i){if(s!==p.type.split("/")[0]){this.rejectedFiles.push(p);continue}}else{var l=!!p.type;if(!t.includes(p.type)||!l){this.rejectedFiles.push(p);continue}}n&&p.size>n?this.rejectedFiles.push(p):!o&&1<=this.addedFiles.length?this.rejectedFiles.push(p):this.addedFiles.push(p)}return{addedFiles:this.addedFiles,rejectedFiles:this.rejectedFiles}},e.decorators=[{type:o.Injectable}],e}(),u=function(){function e(e){this.service=e,this.change=new o.EventEmitter,this.accept="*",this._disabled=!1,this._multiple=!0,this._maxFileSize=undefined,this._expandable=!1,this._isHovered=!1}return Object.defineProperty(e.prototype,"_hasPreviews",{get:function(){return!!this._previewChildren.length},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"disabled",{get:function(){return this._disabled},set:function(e){this._disabled=p(e),this._isHovered&&(this._isHovered=!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"multiple",{get:function(){return this._multiple},set:function(e){this._multiple=p(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maxFileSize",{get:function(){return this._maxFileSize},set:function(e){this._maxFileSize=function t(e){return isNaN(parseFloat(e))||isNaN(Number(e))?null:Number(e)}(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"expandable",{get:function(){return this._expandable},set:function(e){this._expandable=p(e)},enumerable:!0,configurable:!0}),e.prototype.showFileSelector=function(){this.disabled||this._fileInput.nativeElement.click()},e.prototype._onDragOver=function(e){this.disabled||(this.preventDefault(e),this._isHovered=!0)},e.prototype._onDragLeave=function(){this._isHovered=!1},e.prototype._onDrop=function(e){this.disabled||(this.preventDefault(e),this._isHovered=!1,this.handleFileDrop(e.dataTransfer.files))},e.prototype._onFilesSelected=function(e){var t=e.target.files;this.handleFileDrop(t)},e.prototype.handleFileDrop=function(e){var t=this.service.parseFileList(e,this.accept,this.maxFileSize,this.multiple);this.change.next({addedFiles:t.addedFiles,rejectedFiles:t.rejectedFiles,source:this})},e.prototype.preventDefault=function(e){e.preventDefault(),e.stopPropagation()},e.decorators=[{type:o.Component,args:[{selector:"ngx-dropzone, [ngx-dropzone]",template:'<input #fileInput type="file" style="display: none;" [multiple]="multiple" [accept]="accept"\n (change)="_onFilesSelected($event)">\n<ng-content select="ngx-dropzone-label" *ngIf="!_hasPreviews"></ng-content>\n<ng-content select="ngx-dropzone-preview"></ng-content>\n',styles:[":host(){display:flex;align-items:center;height:180px;cursor:pointer;background:#fff;color:#717386;border:2px dashed #717386;border-radius:5px;font-size:16px;overflow-x:auto}:host().ngx-dz-hovered{border-style:solid}:host().ngx-dz-disabled{opacity:.5;cursor:no-drop;pointer-events:none}:host().expandable{overflow:hidden;height:unset;min-height:180px;flex-wrap:wrap}:host() ::ng-deep ngx-dropzone-label{text-align:center;z-index:10;margin:10px auto}"],providers:[d]}]}],e.ctorParameters=function(){return[{type:d,decorators:[{type:o.Self}]}]},e.propDecorators={_previewChildren:[{type:o.ContentChildren,args:[c,{descendants:!0}]}],_fileInput:[{type:o.ViewChild,args:["fileInput"]}],change:[{type:o.Output}],accept:[{type:o.Input}],disabled:[{type:o.Input},{type:o.HostBinding,args:["class.ngx-dz-disabled"]}],multiple:[{type:o.Input}],maxFileSize:[{type:o.Input}],expandable:[{type:o.Input},{type:o.HostBinding,args:["class.expandable"]}],_isHovered:[{type:o.HostBinding,args:["class.ngx-dz-hovered"]}],showFileSelector:[{type:o.HostListener,args:["click"]}],_onDragOver:[{type:o.HostListener,args:["dragover",["$event"]]}],_onDragLeave:[{type:o.HostListener,args:["dragleave"]}],_onDrop:[{type:o.HostListener,args:["drop",["$event"]]}]},e}(),f=function(n){function e(e){var t=n.call(this,e)||this;return t.imageSrc="",t}return s(e,n),e.prototype.ngOnInit=function(){var t=this;this.readFile().then(function(e){return t.imageSrc=e})["catch"](function(e){return console.error(e)})},e.decorators=[{type:o.Component,args:[{selector:"ngx-dropzone-image-preview",template:'\n <img [src]="imageSrc" />\n\t\t<ng-content select="ngx-dropzone-label"></ng-content>\n <ngx-dropzone-remove-badge *ngIf="removable" (click)="_remove($event)">\n </ngx-dropzone-remove-badge>\n\t',styles:[":host(){min-width:unset!important;max-width:unset!important;padding:0!important}:host():focus img,:host():hover img{opacity:.7}:host():focus ngx-dropzone-remove-badge,:host():hover ngx-dropzone-remove-badge{opacity:1}:host() ngx-dropzone-remove-badge{opacity:0}:host() img{max-height:100%;border-radius:5px;opacity:.8}:host() ::ng-deep ngx-dropzone-label{position:absolute;overflow-wrap:break-word}"],providers:[{provide:c,useExisting:e}]}]}],e.ctorParameters=function(){return[{type:r.DomSanitizer}]},e}(c),h=function(){function e(){}return e.decorators=[{type:o.Component,args:[{selector:"ngx-dropzone-remove-badge",template:'\n <svg>\n <line x1="0" y1="0" x2="10" y2="10" />\n <line x1="0" y1="10" x2="10" y2="0" />\n </svg>\n ',styles:[":host(){display:flex;justify-content:center;align-items:center;height:22px;width:22px;position:absolute;top:5px;right:5px;border-radius:50%;background:#bbb;color:#333;cursor:pointer}:host():hover{background:#aeaeae}:host()>svg{height:10px;width:10px}:host()>svg>line{stroke-width:2px;stroke:#fff}"]}]}],e}(),g=function(t){function e(e){return t.call(this,e)||this}return s(e,t),e.prototype.ngOnInit=function(){this.file?(this.videoSrc=URL.createObjectURL(this.file),this.sanitizedVideoSrc=this.sanitizer.bypassSecurityTrustUrl(this.videoSrc)):console.error("No file to read. Please provide a file using the [file] Input property.")},e.prototype.ngOnDestroy=function(){URL.revokeObjectURL(this.videoSrc)},e.decorators=[{type:o.Component,args:[{selector:"ngx-dropzone-video-preview",template:'\n <video *ngIf="sanitizedVideoSrc" controls (click)="$event.stopPropagation()">\n <source [src]="sanitizedVideoSrc" />\n </video>\n <ngx-dropzone-remove-badge *ngIf="removable" (click)="_remove($event)">\n </ngx-dropzone-remove-badge>\n\t',styles:[":host(){min-width:unset!important;max-width:unset!important;padding:0!important}:host():focus ngx-dropzone-remove-badge,:host():hover ngx-dropzone-remove-badge{opacity:1}:host() ngx-dropzone-remove-badge{opacity:0}:host() video{max-height:100%;border-radius:5px}"],providers:[{provide:c,useExisting:e}]}]}],e.ctorParameters=function(){return[{type:r.DomSanitizer}]},e}(c),v=function(){function e(){}return e.decorators=[{type:o.NgModule,args:[{imports:[t.CommonModule],declarations:[u,n,c,f,h,g],exports:[u,n,c,f,h,g]}]}],e}();e.NgxDropzoneModule=v,e.ɵd=n,e.ɵe=f,e.ɵc=c,e.ɵf=h,e.ɵg=g,e.ɵb=d,e.ɵa=u,Object.defineProperty(e,"__esModule",{value:!0})});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/platform-browser"),require("@angular/common")):"function"==typeof define&&define.amd?define("ngx-dropzone",["exports","@angular/core","@angular/platform-browser","@angular/common"],t):t(e["ngx-dropzone"]={},e.ng.core,e.ng.platformBrowser,e.ng.common)}(this,function(e,o,r,t){"use strict";var n=function(){function e(){}return e.decorators=[{type:o.Directive,args:[{selector:"ngx-dropzone-label"}]}],e}(),i=function(e,t){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function s(e,t){function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function a(o,r){var i,s,a,e,p={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return e={next:t(0),"throw":t(1),"return":t(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(t){return function(e){return function n(e){if(i)throw new TypeError("Generator is already executing.");for(;p;)try{if(i=1,s&&(a=2&e[0]?s["return"]:e[0]?s["throw"]||((a=s["return"])&&a.call(s),0):s.next)&&!(a=a.call(s,e[1])).done)return a;switch(s=0,a&&(e=[2&e[0],a.value]),e[0]){case 0:case 1:a=e;break;case 4:return p.label++,{value:e[1],done:!1};case 5:p.label++,s=e[1],e=[0];continue;case 7:e=p.ops.pop(),p.trys.pop();continue;default:if(!(a=0<(a=p.trys).length&&a[a.length-1])&&(6===e[0]||2===e[0])){p=0;continue}if(3===e[0]&&(!a||e[1]>a[0]&&e[1]<a[3])){p.label=e[1];break}if(6===e[0]&&p.label<a[1]){p.label=a[1],a=e;break}if(a&&p.label<a[2]){p.label=a[2],p.ops.push(e);break}a[2]&&p.ops.pop(),p.trys.pop();continue}e=r.call(o,p)}catch(t){e=[6,t],s=0}finally{i=a=0}if(5&e[0])throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}([t,e])}}}function p(e){return null!=e&&""+e!="false"}var l={BACKSPACE:8,DELETE:46};l[l.BACKSPACE]="BACKSPACE",l[l.DELETE]="DELETE";var c=function(){function e(e){this.sanitizer=e,this._removable=!1,this.removed=new o.EventEmitter,this.tabIndex=0}return Object.defineProperty(e.prototype,"removable",{get:function(){return this._removable},set:function(e){this._removable=p(e)},enumerable:!0,configurable:!0}),e.prototype.keyEvent=function(e){switch(e.keyCode){case l.BACKSPACE:case l.DELETE:this.remove()}},Object.defineProperty(e.prototype,"hostStyle",{get:function(){return this.sanitizer.bypassSecurityTrustStyle("\n\t\t\tdisplay: flex;\n\t\t\theight: 140px;\n\t\t\tmin-height: 140px;\n\t\t\tmin-width: 180px;\n\t\t\tmax-width: 180px;\n\t\t\tjustify-content: center;\n\t\t\talign-items: center;\n\t\t\tpadding: 0 20px;\n\t\t\tmargin: 10px;\n\t\t\tborder-radius: 5px;\n\t\t\tposition: relative;\n\t\t")},enumerable:!0,configurable:!0}),e.prototype._remove=function(e){e.stopPropagation(),this.remove()},e.prototype.remove=function(){this._removable&&this.removed.next(this.file)},e.prototype.readFile=function(){return function e(t,s,a,p){return new(a||(a=Promise))(function(e,n){function o(e){try{i(p.next(e))}catch(t){n(t)}}function r(e){try{i(p["throw"](e))}catch(t){n(t)}}function i(t){t.done?e(t.value):new a(function(e){e(t.value)}).then(o,r)}i((p=p.apply(t,s||[])).next())})}(this,void 0,void 0,function(){var o=this;return a(this,function(e){return[2,new Promise(function(t,n){var e=new FileReader;if(e.onload=function(e){return t(e.target.result)},e.onerror=function(e){return console.error("FileReader failed on file "+o.file.name+"."),n(null)},!o.file)return console.error("No file to read. Please provide a file using the [file] Input property."),n(null);e.readAsDataURL(o.file)})]})})},e.decorators=[{type:o.Component,args:[{selector:"ngx-dropzone-preview",template:'\n\t\t<ng-content select="ngx-dropzone-label"></ng-content>\n\t\t<ngx-dropzone-remove-badge *ngIf="removable" (click)="_remove($event)">\n\t\t</ngx-dropzone-remove-badge>\n\t',styles:[":host(){background-image:linear-gradient(to top,#ededed,#efefef,#f1f1f1,#f4f4f4,#f6f6f6)}:host():focus,:host():hover{background-image:linear-gradient(to top,#e3e3e3,#ebeaea,#e8e7e7,#ebeaea,#f4f4f4);outline:0}:host():focus ngx-dropzone-remove-badge,:host():hover ngx-dropzone-remove-badge{opacity:1}:host() ngx-dropzone-remove-badge{opacity:0}:host() ::ng-deep ngx-dropzone-label{overflow-wrap:break-word}"]}]}],e.ctorParameters=function(){return[{type:r.DomSanitizer}]},e.propDecorators={file:[{type:o.Input}],removable:[{type:o.Input}],removed:[{type:o.Output}],keyEvent:[{type:o.HostListener,args:["keyup",["$event"]]}],hostStyle:[{type:o.HostBinding,args:["style"]}],tabIndex:[{type:o.HostBinding,args:["tabindex"]}]},e}(),d=function(){function s(){this.addedFiles=[],this.rejectedFiles=[]}return s.prototype.parseFileList=function(e,t,n,o){this.addedFiles=[],this.rejectedFiles=[];for(var r=0;r<e.length;r++){var i=e.item(r);s.isAccepted(i,t)?n&&i.size>n?this.rejectedFiles.push(i):!o&&1<=this.addedFiles.length?this.rejectedFiles.push(i):this.addedFiles.push(i):this.rejectedFiles.push(i)}return{addedFiles:this.addedFiles,rejectedFiles:this.rejectedFiles}},s.isAccepted=function(e,t){if("*"===t)return!0;var n=t.split(",").map(function(e){return e.toLowerCase().trim()}),o=e.type.toLowerCase(),r=e.name.toLowerCase();return n.find(function(e){return e.endsWith("/*")?o.split("/")[0]===e.split("/")[0]:e.startsWith(".")?r.endsWith(e):e==o})!==undefined},s.decorators=[{type:o.Injectable}],s}(),u=function(){function e(e){this.service=e,this.change=new o.EventEmitter,this.accept="*",this._disabled=!1,this._multiple=!0,this._maxFileSize=undefined,this._expandable=!1,this._isHovered=!1}return Object.defineProperty(e.prototype,"_hasPreviews",{get:function(){return!!this._previewChildren.length},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"disabled",{get:function(){return this._disabled},set:function(e){this._disabled=p(e),this._isHovered&&(this._isHovered=!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"multiple",{get:function(){return this._multiple},set:function(e){this._multiple=p(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maxFileSize",{get:function(){return this._maxFileSize},set:function(e){this._maxFileSize=function t(e){return isNaN(parseFloat(e))||isNaN(Number(e))?null:Number(e)}(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"expandable",{get:function(){return this._expandable},set:function(e){this._expandable=p(e)},enumerable:!0,configurable:!0}),e.prototype.showFileSelector=function(){this.disabled||this._fileInput.nativeElement.click()},e.prototype._onDragOver=function(e){this.disabled||(this.preventDefault(e),this._isHovered=!0)},e.prototype._onDragLeave=function(){this._isHovered=!1},e.prototype._onDrop=function(e){this.disabled||(this.preventDefault(e),this._isHovered=!1,this.handleFileDrop(e.dataTransfer.files))},e.prototype._onFilesSelected=function(e){var t=e.target.files;this.handleFileDrop(t)},e.prototype.handleFileDrop=function(e){var t=this.service.parseFileList(e,this.accept,this.maxFileSize,this.multiple);this.change.next({addedFiles:t.addedFiles,rejectedFiles:t.rejectedFiles,source:this}),this._fileInput.nativeElement.value=""},e.prototype.preventDefault=function(e){e.preventDefault(),e.stopPropagation()},e.decorators=[{type:o.Component,args:[{selector:"ngx-dropzone, [ngx-dropzone]",template:'<input #fileInput type="file" style="display: none;" [multiple]="multiple" [accept]="accept"\n (change)="_onFilesSelected($event)">\n<ng-content select="ngx-dropzone-label" *ngIf="!_hasPreviews"></ng-content>\n<ng-content select="ngx-dropzone-preview"></ng-content>\n',styles:[":host(){display:flex;align-items:center;height:180px;cursor:pointer;background:#fff;color:#717386;border:2px dashed #717386;border-radius:5px;font-size:16px;overflow-x:auto}:host().ngx-dz-hovered{border-style:solid}:host().ngx-dz-disabled{opacity:.5;cursor:no-drop;pointer-events:none}:host().expandable{overflow:hidden;height:unset;min-height:180px;flex-wrap:wrap}:host() ::ng-deep ngx-dropzone-label{text-align:center;z-index:10;margin:10px auto}"],providers:[d]}]}],e.ctorParameters=function(){return[{type:d,decorators:[{type:o.Self}]}]},e.propDecorators={_previewChildren:[{type:o.ContentChildren,args:[c,{descendants:!0}]}],_fileInput:[{type:o.ViewChild,args:["fileInput"]}],change:[{type:o.Output}],accept:[{type:o.Input}],disabled:[{type:o.Input},{type:o.HostBinding,args:["class.ngx-dz-disabled"]}],multiple:[{type:o.Input}],maxFileSize:[{type:o.Input}],expandable:[{type:o.Input},{type:o.HostBinding,args:["class.expandable"]}],_isHovered:[{type:o.HostBinding,args:["class.ngx-dz-hovered"]}],showFileSelector:[{type:o.HostListener,args:["click"]}],_onDragOver:[{type:o.HostListener,args:["dragover",["$event"]]}],_onDragLeave:[{type:o.HostListener,args:["dragleave"]}],_onDrop:[{type:o.HostListener,args:["drop",["$event"]]}]},e}(),f=function(n){function e(e){var t=n.call(this,e)||this;return t.imageSrc="",t}return s(e,n),e.prototype.ngOnInit=function(){var t=this;this.readFile().then(function(e){return t.imageSrc=e})["catch"](function(e){return console.error(e)})},e.decorators=[{type:o.Component,args:[{selector:"ngx-dropzone-image-preview",template:'\n <img [src]="imageSrc" />\n\t\t<ng-content select="ngx-dropzone-label"></ng-content>\n <ngx-dropzone-remove-badge *ngIf="removable" (click)="_remove($event)">\n </ngx-dropzone-remove-badge>\n\t',styles:[":host(){min-width:unset!important;max-width:unset!important;padding:0!important}:host():focus img,:host():hover img{opacity:.7}:host():focus ngx-dropzone-remove-badge,:host():hover ngx-dropzone-remove-badge{opacity:1}:host() ngx-dropzone-remove-badge{opacity:0}:host() img{max-height:100%;border-radius:5px;opacity:.8}:host() ::ng-deep ngx-dropzone-label{position:absolute;overflow-wrap:break-word}"],providers:[{provide:c,useExisting:e}]}]}],e.ctorParameters=function(){return[{type:r.DomSanitizer}]},e}(c),h=function(){function e(){}return e.decorators=[{type:o.Component,args:[{selector:"ngx-dropzone-remove-badge",template:'\n <svg>\n <line x1="0" y1="0" x2="10" y2="10" />\n <line x1="0" y1="10" x2="10" y2="0" />\n </svg>\n ',styles:[":host(){display:flex;justify-content:center;align-items:center;height:22px;width:22px;position:absolute;top:5px;right:5px;border-radius:50%;background:#bbb;color:#333;cursor:pointer}:host():hover{background:#aeaeae}:host()>svg{height:10px;width:10px}:host()>svg>line{stroke-width:2px;stroke:#fff}"]}]}],e}(),g=function(t){function e(e){return t.call(this,e)||this}return s(e,t),e.prototype.ngOnInit=function(){this.file?(this.videoSrc=URL.createObjectURL(this.file),this.sanitizedVideoSrc=this.sanitizer.bypassSecurityTrustUrl(this.videoSrc)):console.error("No file to read. Please provide a file using the [file] Input property.")},e.prototype.ngOnDestroy=function(){URL.revokeObjectURL(this.videoSrc)},e.decorators=[{type:o.Component,args:[{selector:"ngx-dropzone-video-preview",template:'\n <video *ngIf="sanitizedVideoSrc" controls (click)="$event.stopPropagation()">\n <source [src]="sanitizedVideoSrc" />\n </video>\n <ngx-dropzone-remove-badge *ngIf="removable" (click)="_remove($event)">\n </ngx-dropzone-remove-badge>\n\t',styles:[":host(){min-width:unset!important;max-width:unset!important;padding:0!important}:host():focus ngx-dropzone-remove-badge,:host():hover ngx-dropzone-remove-badge{opacity:1}:host() ngx-dropzone-remove-badge{opacity:0}:host() video{max-height:100%;border-radius:5px}"],providers:[{provide:c,useExisting:e}]}]}],e.ctorParameters=function(){return[{type:r.DomSanitizer}]},e}(c),v=function(){function e(){}return e.decorators=[{type:o.NgModule,args:[{imports:[t.CommonModule],declarations:[u,n,c,f,h,g],exports:[u,n,c,f,h,g]}]}],e}();e.NgxDropzoneModule=v,e.ɵd=n,e.ɵe=f,e.ɵc=c,e.ɵf=h,e.ɵg=g,e.ɵb=d,e.ɵa=u,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=ngx-dropzone.umd.min.js.map

@@ -43,30 +43,8 @@ /**

this.rejectedFiles = [];
/** @type {?} */
const hasAcceptFilter = accept !== '*';
/** @type {?} */
const hasGenericAcceptFilter = accept.endsWith('/*');
/** @type {?} */
const acceptedGenericType = accept.split('/')[0];
for (let i = 0; i < files.length; i++) {
/** @type {?} */
const file = files.item(i);
if (hasAcceptFilter) {
if (hasGenericAcceptFilter) {
// If a generic file type is provided, we check for a match.
/** @type {?} */
const providedGenericType = file.type.split('/')[0];
if (acceptedGenericType !== providedGenericType) {
this.rejectedFiles.push(file);
continue;
}
}
else {
// Else an exact match is required.
/** @type {?} */
const hasFileType = !!file.type;
if (!accept.includes(file.type) || !hasFileType) {
this.rejectedFiles.push(file);
continue;
}
}
if (!NgxDropzoneService.isAccepted(file, accept)) {
this.rejectedFiles.push(file);
continue;
}

@@ -91,2 +69,41 @@ if (maxFileSize && file.size > maxFileSize) {

}
/**
* @private
* @param {?} file
* @param {?} accept
* @return {?}
*/
static isAccepted(file, accept) {
if (accept === '*') {
return true;
}
/** @type {?} */
const acceptFiletypes = accept.split(',').map((/**
* @param {?} it
* @return {?}
*/
it => it.toLowerCase().trim()));
/** @type {?} */
const filetype = file.type.toLowerCase();
/** @type {?} */
const filename = file.name.toLowerCase();
/** @type {?} */
const matchedFileType = acceptFiletypes.find((/**
* @param {?} acceptFiletype
* @return {?}
*/
acceptFiletype => {
// check for wildcard mimetype (e.g. image/*)
if (acceptFiletype.endsWith('/*')) {
return filetype.split('/')[0] === acceptFiletype.split('/')[0];
}
// check for file extension (e.g. .csv)
if (acceptFiletype.startsWith(".")) {
return filename.endsWith(acceptFiletype);
}
// check for exact mimetype match (e.g. image/jpeg)
return acceptFiletype == filetype;
}));
return matchedFileType !== undefined;
}
}

@@ -108,2 +125,2 @@ NgxDropzoneService.decorators = [

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRyb3B6b25lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtZHJvcHpvbmUvIiwic291cmNlcyI6WyJsaWIvbmd4LWRyb3B6b25lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFFM0Msc0NBT0M7Ozs7OztJQUpBLHNDQUFtQjs7Ozs7SUFHbkIseUNBQXNCOzs7Ozs7OztBQVV2QixNQUFNLE9BQU8sa0JBQWtCO0lBRC9CO1FBR1MsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixrQkFBYSxHQUFXLEVBQUUsQ0FBQztJQXVEcEMsQ0FBQzs7Ozs7Ozs7SUFyREEsYUFBYSxDQUFDLEtBQWUsRUFBRSxNQUFjLEVBQUUsV0FBbUIsRUFBRSxRQUFpQjtRQUVwRixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQzs7Y0FFbEIsZUFBZSxHQUFHLE1BQU0sS0FBSyxHQUFHOztjQUNoQyxzQkFBc0IsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzs7Y0FDOUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7O2tCQUNoQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFMUIsSUFBSSxlQUFlLEVBQUU7Z0JBQ3BCLElBQUksc0JBQXNCLEVBQUU7OzswQkFFckIsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUVuRCxJQUFJLG1CQUFtQixLQUFLLG1CQUFtQixFQUFFO3dCQUNoRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDOUIsU0FBUztxQkFDVDtpQkFDRDtxQkFBTTs7OzBCQUVBLFdBQVcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUk7b0JBRS9CLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTt3QkFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzlCLFNBQVM7cUJBQ1Q7aUJBQ0Q7YUFDRDtZQUVELElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxFQUFFO2dCQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUIsU0FBUzthQUNUO1lBRUQsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQzdDLDhEQUE4RDtnQkFDOUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLFNBQVM7YUFDVDtZQUVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNCOztjQUVLLE1BQU0sR0FBcUI7WUFDaEMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtTQUNqQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQzs7O1lBMURELFVBQVU7Ozs7Ozs7SUFHVix3Q0FBZ0M7Ozs7O0lBQ2hDLDJDQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBGaWxlU2VsZWN0UmVzdWx0IHtcblxuXHQvKiogVGhlIGFkZGVkIGZpbGVzLCBlbWl0dGVkIGluIHRoZSBmaWxlc0FkZGVkIGV2ZW50LiAqL1xuXHRhZGRlZEZpbGVzOiBGaWxlW107XG5cblx0LyoqIFRoZSByZWplY3RlZCBmaWxlcywgZW1pdHRlZCBpbiB0aGUgZmlsZXNSZWplY3RlZCBldmVudC4gKi9cblx0cmVqZWN0ZWRGaWxlczogRmlsZVtdO1xufVxuXG4vKipcbiAqIFRoaXMgc2VydmljZSBjb250YWlucyB0aGUgZmlsdGVyaW5nIGxvZ2ljIHRvIGJlIGFwcGxpZWQgdG9cbiAqIGFueSBkcm9wcGVkIG9yIHNlbGVjdGVkIGZpbGUuIElmIGEgZmlsZSBtYXRjaGVzIGFsbCBjcml0ZXJpYVxuICogbGlrZSBtYXhpbXVtIHNpemUgb3IgYWNjZXB0IHR5cGUsIGl0IHdpbGwgYmUgZW1pdHRlZCBpbiB0aGVcbiAqIGZpbGVzQWRkZWQgZXZlbnQsIG90aGVyd2lzZSBpbiB0aGUgZmlsZXNSZWplY3RlZCBldmVudC5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5neERyb3B6b25lU2VydmljZSB7XG5cblx0cHJpdmF0ZSBhZGRlZEZpbGVzOiBGaWxlW10gPSBbXTtcblx0cHJpdmF0ZSByZWplY3RlZEZpbGVzOiBGaWxlW10gPSBbXTtcblxuXHRwYXJzZUZpbGVMaXN0KGZpbGVzOiBGaWxlTGlzdCwgYWNjZXB0OiBzdHJpbmcsIG1heEZpbGVTaXplOiBudW1iZXIsIG11bHRpcGxlOiBib29sZWFuKTogRmlsZVNlbGVjdFJlc3VsdCB7XG5cblx0XHR0aGlzLmFkZGVkRmlsZXMgPSBbXTtcblx0XHR0aGlzLnJlamVjdGVkRmlsZXMgPSBbXTtcblxuXHRcdGNvbnN0IGhhc0FjY2VwdEZpbHRlciA9IGFjY2VwdCAhPT0gJyonO1xuXHRcdGNvbnN0IGhhc0dlbmVyaWNBY2NlcHRGaWx0ZXIgPSBhY2NlcHQuZW5kc1dpdGgoJy8qJyk7XG5cdFx0Y29uc3QgYWNjZXB0ZWRHZW5lcmljVHlwZSA9IGFjY2VwdC5zcGxpdCgnLycpWzBdO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgZmlsZSA9IGZpbGVzLml0ZW0oaSk7XG5cblx0XHRcdGlmIChoYXNBY2NlcHRGaWx0ZXIpIHtcblx0XHRcdFx0aWYgKGhhc0dlbmVyaWNBY2NlcHRGaWx0ZXIpIHtcblx0XHRcdFx0XHQvLyBJZiBhIGdlbmVyaWMgZmlsZSB0eXBlIGlzIHByb3ZpZGVkLCB3ZSBjaGVjayBmb3IgYSBtYXRjaC5cblx0XHRcdFx0XHRjb25zdCBwcm92aWRlZEdlbmVyaWNUeXBlID0gZmlsZS50eXBlLnNwbGl0KCcvJylbMF07XG5cblx0XHRcdFx0XHRpZiAoYWNjZXB0ZWRHZW5lcmljVHlwZSAhPT0gcHJvdmlkZWRHZW5lcmljVHlwZSkge1xuXHRcdFx0XHRcdFx0dGhpcy5yZWplY3RlZEZpbGVzLnB1c2goZmlsZSk7XG5cdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gRWxzZSBhbiBleGFjdCBtYXRjaCBpcyByZXF1aXJlZC5cblx0XHRcdFx0XHRjb25zdCBoYXNGaWxlVHlwZSA9ICEhZmlsZS50eXBlO1xuXG5cdFx0XHRcdFx0aWYgKCFhY2NlcHQuaW5jbHVkZXMoZmlsZS50eXBlKSB8fCAhaGFzRmlsZVR5cGUpIHtcblx0XHRcdFx0XHRcdHRoaXMucmVqZWN0ZWRGaWxlcy5wdXNoKGZpbGUpO1xuXHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmIChtYXhGaWxlU2l6ZSAmJiBmaWxlLnNpemUgPiBtYXhGaWxlU2l6ZSkge1xuXHRcdFx0XHR0aGlzLnJlamVjdGVkRmlsZXMucHVzaChmaWxlKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGlmICghbXVsdGlwbGUgJiYgdGhpcy5hZGRlZEZpbGVzLmxlbmd0aCA+PSAxKSB7XG5cdFx0XHRcdC8vIEFsd2F5cyBlbWl0IHRoZSBsYXRlc3QgZmlsZSBpZiBtdWx0aS1zZWxlY3Rpb24gaXMgZGlzYWJsZWQuXG5cdFx0XHRcdHRoaXMucmVqZWN0ZWRGaWxlcy5wdXNoKGZpbGUpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5hZGRlZEZpbGVzLnB1c2goZmlsZSk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgcmVzdWx0OiBGaWxlU2VsZWN0UmVzdWx0ID0ge1xuXHRcdFx0YWRkZWRGaWxlczogdGhpcy5hZGRlZEZpbGVzLFxuXHRcdFx0cmVqZWN0ZWRGaWxlczogdGhpcy5yZWplY3RlZEZpbGVzXG5cdFx0fTtcblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRyb3B6b25lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtZHJvcHpvbmUvIiwic291cmNlcyI6WyJsaWIvbmd4LWRyb3B6b25lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFFM0Msc0NBT0M7Ozs7OztJQUpBLHNDQUFtQjs7Ozs7SUFHbkIseUNBQXNCOzs7Ozs7OztBQVV2QixNQUFNLE9BQU8sa0JBQWtCO0lBRC9CO1FBR1MsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixrQkFBYSxHQUFXLEVBQUUsQ0FBQztJQTREcEMsQ0FBQzs7Ozs7Ozs7SUExREEsYUFBYSxDQUFDLEtBQWUsRUFBRSxNQUFjLEVBQUUsV0FBbUIsRUFBRSxRQUFpQjtRQUVwRixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUV4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTs7a0JBQ2hDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUUxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLFNBQVM7YUFDVjtZQUVELElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxFQUFFO2dCQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUIsU0FBUzthQUNUO1lBRUQsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQzdDLDhEQUE4RDtnQkFDOUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLFNBQVM7YUFDVDtZQUVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNCOztjQUVLLE1BQU0sR0FBcUI7WUFDaEMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtTQUNqQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQzs7Ozs7OztJQUVRLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBVSxFQUFFLE1BQWM7UUFDbEQsSUFBSSxNQUFNLEtBQUssR0FBRyxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7O2NBRUssZUFBZSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRzs7OztRQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFDOztjQUN0RSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7O2NBQ2xDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTs7Y0FDbEMsZUFBZSxHQUFHLGVBQWUsQ0FBQyxJQUFJOzs7O1FBQUMsY0FBYyxDQUFDLEVBQUU7WUFDNUQsNkNBQTZDO1lBQzdDLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDakMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEU7WUFDRCx1Q0FBdUM7WUFDdkMsSUFBSSxjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNsQyxPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDMUM7WUFDRCxtREFBbUQ7WUFDbkQsT0FBTyxjQUFjLElBQUksUUFBUSxDQUFDO1FBQ3BDLENBQUMsRUFBQztRQUVGLE9BQU8sZUFBZSxLQUFLLFNBQVMsQ0FBQztJQUN2QyxDQUFDOzs7WUEvREYsVUFBVTs7Ozs7OztJQUdWLHdDQUFnQzs7Ozs7SUFDaEMsMkNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVTZWxlY3RSZXN1bHQge1xuXG5cdC8qKiBUaGUgYWRkZWQgZmlsZXMsIGVtaXR0ZWQgaW4gdGhlIGZpbGVzQWRkZWQgZXZlbnQuICovXG5cdGFkZGVkRmlsZXM6IEZpbGVbXTtcblxuXHQvKiogVGhlIHJlamVjdGVkIGZpbGVzLCBlbWl0dGVkIGluIHRoZSBmaWxlc1JlamVjdGVkIGV2ZW50LiAqL1xuXHRyZWplY3RlZEZpbGVzOiBGaWxlW107XG59XG5cbi8qKlxuICogVGhpcyBzZXJ2aWNlIGNvbnRhaW5zIHRoZSBmaWx0ZXJpbmcgbG9naWMgdG8gYmUgYXBwbGllZCB0b1xuICogYW55IGRyb3BwZWQgb3Igc2VsZWN0ZWQgZmlsZS4gSWYgYSBmaWxlIG1hdGNoZXMgYWxsIGNyaXRlcmlhXG4gKiBsaWtlIG1heGltdW0gc2l6ZSBvciBhY2NlcHQgdHlwZSwgaXQgd2lsbCBiZSBlbWl0dGVkIGluIHRoZVxuICogZmlsZXNBZGRlZCBldmVudCwgb3RoZXJ3aXNlIGluIHRoZSBmaWxlc1JlamVjdGVkIGV2ZW50LlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmd4RHJvcHpvbmVTZXJ2aWNlIHtcblxuXHRwcml2YXRlIGFkZGVkRmlsZXM6IEZpbGVbXSA9IFtdO1xuXHRwcml2YXRlIHJlamVjdGVkRmlsZXM6IEZpbGVbXSA9IFtdO1xuXG5cdHBhcnNlRmlsZUxpc3QoZmlsZXM6IEZpbGVMaXN0LCBhY2NlcHQ6IHN0cmluZywgbWF4RmlsZVNpemU6IG51bWJlciwgbXVsdGlwbGU6IGJvb2xlYW4pOiBGaWxlU2VsZWN0UmVzdWx0IHtcblxuXHRcdHRoaXMuYWRkZWRGaWxlcyA9IFtdO1xuXHRcdHRoaXMucmVqZWN0ZWRGaWxlcyA9IFtdO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgZmlsZSA9IGZpbGVzLml0ZW0oaSk7XG5cblx0XHRcdGlmICghTmd4RHJvcHpvbmVTZXJ2aWNlLmlzQWNjZXB0ZWQoZmlsZSwgYWNjZXB0KSkge1xuXHRcdFx0ICB0aGlzLnJlamVjdGVkRmlsZXMucHVzaChmaWxlKTtcblx0XHRcdCAgY29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChtYXhGaWxlU2l6ZSAmJiBmaWxlLnNpemUgPiBtYXhGaWxlU2l6ZSkge1xuXHRcdFx0XHR0aGlzLnJlamVjdGVkRmlsZXMucHVzaChmaWxlKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGlmICghbXVsdGlwbGUgJiYgdGhpcy5hZGRlZEZpbGVzLmxlbmd0aCA+PSAxKSB7XG5cdFx0XHRcdC8vIEFsd2F5cyBlbWl0IHRoZSBsYXRlc3QgZmlsZSBpZiBtdWx0aS1zZWxlY3Rpb24gaXMgZGlzYWJsZWQuXG5cdFx0XHRcdHRoaXMucmVqZWN0ZWRGaWxlcy5wdXNoKGZpbGUpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5hZGRlZEZpbGVzLnB1c2goZmlsZSk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgcmVzdWx0OiBGaWxlU2VsZWN0UmVzdWx0ID0ge1xuXHRcdFx0YWRkZWRGaWxlczogdGhpcy5hZGRlZEZpbGVzLFxuXHRcdFx0cmVqZWN0ZWRGaWxlczogdGhpcy5yZWplY3RlZEZpbGVzXG5cdFx0fTtcblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuICBwcml2YXRlIHN0YXRpYyBpc0FjY2VwdGVkKGZpbGU6IEZpbGUsIGFjY2VwdDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGFjY2VwdCA9PT0gJyonKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBhY2NlcHRGaWxldHlwZXMgPSBhY2NlcHQuc3BsaXQoJywnKS5tYXAoaXQgPT4gaXQudG9Mb3dlckNhc2UoKS50cmltKCkpO1xuICAgIGNvbnN0IGZpbGV0eXBlID0gZmlsZS50eXBlLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgZmlsZW5hbWUgPSBmaWxlLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBtYXRjaGVkRmlsZVR5cGUgPSBhY2NlcHRGaWxldHlwZXMuZmluZChhY2NlcHRGaWxldHlwZSA9PiB7XG4gICAgICAvLyBjaGVjayBmb3Igd2lsZGNhcmQgbWltZXR5cGUgKGUuZy4gaW1hZ2UvKilcbiAgICAgIGlmIChhY2NlcHRGaWxldHlwZS5lbmRzV2l0aCgnLyonKSkge1xuICAgICAgICByZXR1cm4gZmlsZXR5cGUuc3BsaXQoJy8nKVswXSA9PT0gYWNjZXB0RmlsZXR5cGUuc3BsaXQoJy8nKVswXTtcbiAgICAgIH1cbiAgICAgIC8vIGNoZWNrIGZvciBmaWxlIGV4dGVuc2lvbiAoZS5nLiAuY3N2KVxuICAgICAgaWYgKGFjY2VwdEZpbGV0eXBlLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgICAgIHJldHVybiBmaWxlbmFtZS5lbmRzV2l0aChhY2NlcHRGaWxldHlwZSk7XG4gICAgICB9XG4gICAgICAvLyBjaGVjayBmb3IgZXhhY3QgbWltZXR5cGUgbWF0Y2ggKGUuZy4gaW1hZ2UvanBlZylcbiAgICAgIHJldHVybiBhY2NlcHRGaWxldHlwZSA9PSBmaWxldHlwZTtcbiAgICB9KTtcblxuICAgIHJldHVybiBtYXRjaGVkRmlsZVR5cGUgIT09IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19

@@ -166,2 +166,4 @@ /**

});
// Reset the native file input element to allow selecting the same file again
this._fileInput.nativeElement.value = '';
}

@@ -258,2 +260,2 @@ /**

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRyb3B6b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1kcm9wem9uZS8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtZHJvcHpvbmUvbmd4LWRyb3B6b25lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkssT0FBTyxFQUFFLGtCQUFrQixFQUFvQixNQUFNLHlCQUF5QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7OztBQUVyRyw0Q0FJQzs7O0lBSEMsd0NBQTZCOztJQUM3Qiw0Q0FBbUI7O0lBQ25CLCtDQUFzQjs7QUFheEIsTUFBTSxPQUFPLG9CQUFvQjs7OztJQUUvQixZQUNrQixPQUEyQjtRQUEzQixZQUFPLEdBQVAsT0FBTyxDQUFvQjs7OztRQWUxQixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7Ozs7UUFHOUQsV0FBTSxHQUFHLEdBQUcsQ0FBQztRQWVkLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFVbEIsY0FBUyxHQUFHLElBQUksQ0FBQztRQVVqQixpQkFBWSxHQUFXLFNBQVMsQ0FBQztRQVdqQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUdyQyxlQUFVLEdBQUcsS0FBSyxDQUFDO0lBbEVmLENBQUM7Ozs7SUFNTCxJQUFJLFlBQVk7UUFDZCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO0lBQ3hDLENBQUM7Ozs7O0lBWUQsSUFFSSxRQUFRO1FBQ1YsT0FB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Z0JBQ0MsTUFBTSxFQUFFLENBQUMsa2NBQWtjLENBQUM7Z0JBQzVjLFNBQVMsRUFBRSxDQUFDLGtCQUFrQixDQUFDO2FBQ2hDOzs7O1lBbkJRLGtCQUFrQix1QkF1QnRCLElBQUk7OzsrQkFJTixlQUFlLFNBQUMsMkJBQTJCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO3lCQVFsRSxTQUFTLFNBQUMsV0FBVztxQkFHckIsTUFBTTtxQkFHTixLQUFLO3VCQUdMLEtBQUssWUFDTCxXQUFXLFNBQUMsdUJBQXVCO3VCQWNuQyxLQUFLOzBCQVVMLEtBQUs7eUJBVUwsS0FBSyxZQUNMLFdBQVcsU0FBQyxrQkFBa0I7eUJBUzlCLFdBQVcsU0FBQyxzQkFBc0I7K0JBSWxDLFlBQVksU0FBQyxPQUFPOzBCQU9wQixZQUFZLFNBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDOzJCQVVuQyxZQUFZLFNBQUMsV0FBVztzQkFLeEIsWUFBWSxTQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQzs7Ozs7OztJQXhGaEMsZ0RBQ3lEOzs7OztJQU96RCwwQ0FBK0M7Ozs7O0lBRy9DLHNDQUF1RTs7Ozs7SUFHdkUsc0NBQXNCOzs7OztJQWV0Qix5Q0FBMEI7Ozs7O0lBVTFCLHlDQUF5Qjs7Ozs7SUFVekIsNENBQXlDOzs7OztJQVd6QywyQ0FBcUM7O0lBRXJDLDBDQUNtQjs7Ozs7SUFuRWpCLHVDQUEyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgSW5wdXQsIFZpZXdDaGlsZCwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIFNlbGYsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neERyb3B6b25lU2VydmljZSwgRmlsZVNlbGVjdFJlc3VsdCB9IGZyb20gJy4uL25neC1kcm9wem9uZS5zZXJ2aWNlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uL25neC1kcm9wem9uZS1wcmV2aWV3L25neC1kcm9wem9uZS1wcmV2aWV3LmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd4RHJvcHpvbmVDaGFuZ2VFdmVudCB7XG4gIHNvdXJjZTogTmd4RHJvcHpvbmVDb21wb25lbnQ7XG4gIGFkZGVkRmlsZXM6IEZpbGVbXTtcbiAgcmVqZWN0ZWRGaWxlczogRmlsZVtdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtZHJvcHpvbmUsIFtuZ3gtZHJvcHpvbmVdJyxcbiAgdGVtcGxhdGU6IGA8aW5wdXQgI2ZpbGVJbnB1dCB0eXBlPVwiZmlsZVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIiBbYWNjZXB0XT1cImFjY2VwdFwiXG4gIChjaGFuZ2UpPVwiX29uRmlsZXNTZWxlY3RlZCgkZXZlbnQpXCI+XG48bmctY29udGVudCBzZWxlY3Q9XCJuZ3gtZHJvcHpvbmUtbGFiZWxcIiAqbmdJZj1cIiFfaGFzUHJldmlld3NcIj48L25nLWNvbnRlbnQ+XG48bmctY29udGVudCBzZWxlY3Q9XCJuZ3gtZHJvcHpvbmUtcHJldmlld1wiPjwvbmctY29udGVudD5cbmAsXG4gIHN0eWxlczogW2A6aG9zdCgpe2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjE4MHB4O2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojNzE3Mzg2O2JvcmRlcjoycHggZGFzaGVkICM3MTczODY7Ym9yZGVyLXJhZGl1czo1cHg7Zm9udC1zaXplOjE2cHg7b3ZlcmZsb3cteDphdXRvfTpob3N0KCkubmd4LWR6LWhvdmVyZWR7Ym9yZGVyLXN0eWxlOnNvbGlkfTpob3N0KCkubmd4LWR6LWRpc2FibGVke29wYWNpdHk6LjU7Y3Vyc29yOm5vLWRyb3A7cG9pbnRlci1ldmVudHM6bm9uZX06aG9zdCgpLmV4cGFuZGFibGV7b3ZlcmZsb3c6aGlkZGVuO2hlaWdodDp1bnNldDttaW4taGVpZ2h0OjE4MHB4O2ZsZXgtd3JhcDp3cmFwfTpob3N0KCkgOjpuZy1kZWVwIG5neC1kcm9wem9uZS1sYWJlbHt0ZXh0LWFsaWduOmNlbnRlcjt6LWluZGV4OjEwO21hcmdpbjoxMHB4IGF1dG99YF0sXG4gIHByb3ZpZGVyczogW05neERyb3B6b25lU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgTmd4RHJvcHpvbmVDb21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgcHJpdmF0ZSBzZXJ2aWNlOiBOZ3hEcm9wem9uZVNlcnZpY2VcbiAgKSB7IH1cblxuICAvKiogQSBsaXN0IG9mIHRoZSBjb250ZW50LXByb2plY3RlZCBwcmV2aWV3IGNoaWxkcmVuLiAqL1xuICBAQ29udGVudENoaWxkcmVuKE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBfcHJldmlld0NoaWxkcmVuOiBRdWVyeUxpc3Q8Tmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50PjtcblxuICBnZXQgX2hhc1ByZXZpZXdzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX3ByZXZpZXdDaGlsZHJlbi5sZW5ndGg7XG4gIH1cblxuICAvKiogQSB0ZW1wbGF0ZSByZWZlcmVuY2UgdG8gdGhlIG5hdGl2ZSBmaWxlIGlucHV0IGVsZW1lbnQuICovXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIF9maWxlSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgLyoqIEVtaXR0ZWQgd2hlbiBhbnkgZmlsZXMgd2VyZSBhZGRlZCBvciByZWplY3RlZC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd4RHJvcHpvbmVDaGFuZ2VFdmVudD4oKTtcblxuICAvKiogU2V0IHRoZSBhY2NlcHRlZCBmaWxlIHR5cGVzLiBEZWZhdWx0cyB0byAnKicuICovXG4gIEBJbnB1dCgpIGFjY2VwdCA9ICcqJztcblxuICAvKiogRGlzYWJsZSBhbnkgdXNlciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBjb21wb25lbnQuICovXG4gIEBJbnB1dCgpXG4gIEBIb3N0QmluZGluZygnY2xhc3Mubmd4LWR6LWRpc2FibGVkJylcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5faXNIb3ZlcmVkKSB7XG4gICAgICB0aGlzLl9pc0hvdmVyZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKiogQWxsb3cgdGhlIHNlbGVjdGlvbiBvZiBtdWx0aXBsZSBmaWxlcy4gKi9cbiAgQElucHV0KClcbiAgZ2V0IG11bHRpcGxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZTtcbiAgfVxuICBzZXQgbXVsdGlwbGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfbXVsdGlwbGUgPSB0cnVlO1xuXG4gIC8qKiBTZXQgdGhlIG1heGltdW0gc2l6ZSBhIHNpbmdsZSBmaWxlIG1heSBoYXZlLiAqL1xuICBASW5wdXQoKVxuICBnZXQgbWF4RmlsZVNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4RmlsZVNpemU7XG4gIH1cbiAgc2V0IG1heEZpbGVTaXplKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9tYXhGaWxlU2l6ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9tYXhGaWxlU2l6ZTogbnVtYmVyID0gdW5kZWZpbmVkO1xuXG4gIC8qKiBBbGxvdyB0aGUgZHJvcHpvbmUgY29udGFpbmVyIHRvIGV4cGFuZCB2ZXJ0aWNhbGx5LiAqL1xuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmV4cGFuZGFibGUnKVxuICBnZXQgZXhwYW5kYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZXhwYW5kYWJsZTtcbiAgfVxuICBzZXQgZXhwYW5kYWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2V4cGFuZGFibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX2V4cGFuZGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5neC1kei1ob3ZlcmVkJylcbiAgX2lzSG92ZXJlZCA9IGZhbHNlO1xuXG4gIC8qKiBTaG93IHRoZSBuYXRpdmUgT1MgZmlsZSBleHBsb3JlciB0byBzZWxlY3QgZmlsZXMuICovXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgc2hvd0ZpbGVTZWxlY3RvcigpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICh0aGlzLl9maWxlSW5wdXQubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSlcbiAgX29uRHJhZ092ZXIoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJldmVudERlZmF1bHQoZXZlbnQpO1xuICAgIHRoaXMuX2lzSG92ZXJlZCA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnKVxuICBfb25EcmFnTGVhdmUoKSB7XG4gICAgdGhpcy5faXNIb3ZlcmVkID0gZmFsc2U7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcbiAgX29uRHJvcChldmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wcmV2ZW50RGVmYXVsdChldmVudCk7XG4gICAgdGhpcy5faXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgdGhpcy5oYW5kbGVGaWxlRHJvcChldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuICB9XG5cbiAgX29uRmlsZXNTZWxlY3RlZChldmVudCkge1xuICAgIGNvbnN0IGZpbGVzOiBGaWxlTGlzdCA9IGV2ZW50LnRhcmdldC5maWxlcztcbiAgICB0aGlzLmhhbmRsZUZpbGVEcm9wKGZpbGVzKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRmlsZURyb3AoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgY29uc3QgcmVzdWx0OiBGaWxlU2VsZWN0UmVzdWx0ID1cbiAgICAgIHRoaXMuc2VydmljZS5wYXJzZUZpbGVMaXN0KGZpbGVzLCB0aGlzLmFjY2VwdCwgdGhpcy5tYXhGaWxlU2l6ZSwgdGhpcy5tdWx0aXBsZSk7XG5cbiAgICB0aGlzLmNoYW5nZS5uZXh0KHtcbiAgICAgIGFkZGVkRmlsZXM6IHJlc3VsdC5hZGRlZEZpbGVzLFxuICAgICAgcmVqZWN0ZWRGaWxlczogcmVzdWx0LnJlamVjdGVkRmlsZXMsXG4gICAgICBzb3VyY2U6IHRoaXNcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJldmVudERlZmF1bHQoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRyb3B6b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1kcm9wem9uZS8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtZHJvcHpvbmUvbmd4LWRyb3B6b25lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkssT0FBTyxFQUFFLGtCQUFrQixFQUFvQixNQUFNLHlCQUF5QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7OztBQUVyRyw0Q0FJQzs7O0lBSEMsd0NBQTZCOztJQUM3Qiw0Q0FBbUI7O0lBQ25CLCtDQUFzQjs7QUFheEIsTUFBTSxPQUFPLG9CQUFvQjs7OztJQUUvQixZQUNrQixPQUEyQjtRQUEzQixZQUFPLEdBQVAsT0FBTyxDQUFvQjs7OztRQWUxQixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7Ozs7UUFHOUQsV0FBTSxHQUFHLEdBQUcsQ0FBQztRQWVkLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFVbEIsY0FBUyxHQUFHLElBQUksQ0FBQztRQVVqQixpQkFBWSxHQUFXLFNBQVMsQ0FBQztRQVdqQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUdyQyxlQUFVLEdBQUcsS0FBSyxDQUFDO0lBbEVmLENBQUM7Ozs7SUFNTCxJQUFJLFlBQVk7UUFDZCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO0lBQ3hDLENBQUM7Ozs7O0lBWUQsSUFFSSxRQUFRO1FBQ1YsT0FB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QUM7OztZQTFJRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDhCQUE4QjtnQkFDeEMsUUFBUSxFQUFFOzs7O0NBSVg7Z0JBQ0MsTUFBTSxFQUFFLENBQUMsa2NBQWtjLENBQUM7Z0JBQzVjLFNBQVMsRUFBRSxDQUFDLGtCQUFrQixDQUFDO2FBQ2hDOzs7O1lBbkJRLGtCQUFrQix1QkF1QnRCLElBQUk7OzsrQkFJTixlQUFlLFNBQUMsMkJBQTJCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO3lCQVFsRSxTQUFTLFNBQUMsV0FBVztxQkFHckIsTUFBTTtxQkFHTixLQUFLO3VCQUdMLEtBQUssWUFDTCxXQUFXLFNBQUMsdUJBQXVCO3VCQWNuQyxLQUFLOzBCQVVMLEtBQUs7eUJBVUwsS0FBSyxZQUNMLFdBQVcsU0FBQyxrQkFBa0I7eUJBUzlCLFdBQVcsU0FBQyxzQkFBc0I7K0JBSWxDLFlBQVksU0FBQyxPQUFPOzBCQU9wQixZQUFZLFNBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDOzJCQVVuQyxZQUFZLFNBQUMsV0FBVztzQkFLeEIsWUFBWSxTQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQzs7Ozs7OztJQXhGaEMsZ0RBQ3lEOzs7OztJQU96RCwwQ0FBK0M7Ozs7O0lBRy9DLHNDQUF1RTs7Ozs7SUFHdkUsc0NBQXNCOzs7OztJQWV0Qix5Q0FBMEI7Ozs7O0lBVTFCLHlDQUF5Qjs7Ozs7SUFVekIsNENBQXlDOzs7OztJQVd6QywyQ0FBcUM7O0lBRXJDLDBDQUNtQjs7Ozs7SUFuRWpCLHVDQUEyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgSW5wdXQsIFZpZXdDaGlsZCwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIFNlbGYsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neERyb3B6b25lU2VydmljZSwgRmlsZVNlbGVjdFJlc3VsdCB9IGZyb20gJy4uL25neC1kcm9wem9uZS5zZXJ2aWNlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uL25neC1kcm9wem9uZS1wcmV2aWV3L25neC1kcm9wem9uZS1wcmV2aWV3LmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd4RHJvcHpvbmVDaGFuZ2VFdmVudCB7XG4gIHNvdXJjZTogTmd4RHJvcHpvbmVDb21wb25lbnQ7XG4gIGFkZGVkRmlsZXM6IEZpbGVbXTtcbiAgcmVqZWN0ZWRGaWxlczogRmlsZVtdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtZHJvcHpvbmUsIFtuZ3gtZHJvcHpvbmVdJyxcbiAgdGVtcGxhdGU6IGA8aW5wdXQgI2ZpbGVJbnB1dCB0eXBlPVwiZmlsZVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIiBbYWNjZXB0XT1cImFjY2VwdFwiXG4gIChjaGFuZ2UpPVwiX29uRmlsZXNTZWxlY3RlZCgkZXZlbnQpXCI+XG48bmctY29udGVudCBzZWxlY3Q9XCJuZ3gtZHJvcHpvbmUtbGFiZWxcIiAqbmdJZj1cIiFfaGFzUHJldmlld3NcIj48L25nLWNvbnRlbnQ+XG48bmctY29udGVudCBzZWxlY3Q9XCJuZ3gtZHJvcHpvbmUtcHJldmlld1wiPjwvbmctY29udGVudD5cbmAsXG4gIHN0eWxlczogW2A6aG9zdCgpe2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjE4MHB4O2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojNzE3Mzg2O2JvcmRlcjoycHggZGFzaGVkICM3MTczODY7Ym9yZGVyLXJhZGl1czo1cHg7Zm9udC1zaXplOjE2cHg7b3ZlcmZsb3cteDphdXRvfTpob3N0KCkubmd4LWR6LWhvdmVyZWR7Ym9yZGVyLXN0eWxlOnNvbGlkfTpob3N0KCkubmd4LWR6LWRpc2FibGVke29wYWNpdHk6LjU7Y3Vyc29yOm5vLWRyb3A7cG9pbnRlci1ldmVudHM6bm9uZX06aG9zdCgpLmV4cGFuZGFibGV7b3ZlcmZsb3c6aGlkZGVuO2hlaWdodDp1bnNldDttaW4taGVpZ2h0OjE4MHB4O2ZsZXgtd3JhcDp3cmFwfTpob3N0KCkgOjpuZy1kZWVwIG5neC1kcm9wem9uZS1sYWJlbHt0ZXh0LWFsaWduOmNlbnRlcjt6LWluZGV4OjEwO21hcmdpbjoxMHB4IGF1dG99YF0sXG4gIHByb3ZpZGVyczogW05neERyb3B6b25lU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgTmd4RHJvcHpvbmVDb21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgcHJpdmF0ZSBzZXJ2aWNlOiBOZ3hEcm9wem9uZVNlcnZpY2VcbiAgKSB7IH1cblxuICAvKiogQSBsaXN0IG9mIHRoZSBjb250ZW50LXByb2plY3RlZCBwcmV2aWV3IGNoaWxkcmVuLiAqL1xuICBAQ29udGVudENoaWxkcmVuKE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBfcHJldmlld0NoaWxkcmVuOiBRdWVyeUxpc3Q8Tmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50PjtcblxuICBnZXQgX2hhc1ByZXZpZXdzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX3ByZXZpZXdDaGlsZHJlbi5sZW5ndGg7XG4gIH1cblxuICAvKiogQSB0ZW1wbGF0ZSByZWZlcmVuY2UgdG8gdGhlIG5hdGl2ZSBmaWxlIGlucHV0IGVsZW1lbnQuICovXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIF9maWxlSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgLyoqIEVtaXR0ZWQgd2hlbiBhbnkgZmlsZXMgd2VyZSBhZGRlZCBvciByZWplY3RlZC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd4RHJvcHpvbmVDaGFuZ2VFdmVudD4oKTtcblxuICAvKiogU2V0IHRoZSBhY2NlcHRlZCBmaWxlIHR5cGVzLiBEZWZhdWx0cyB0byAnKicuICovXG4gIEBJbnB1dCgpIGFjY2VwdCA9ICcqJztcblxuICAvKiogRGlzYWJsZSBhbnkgdXNlciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBjb21wb25lbnQuICovXG4gIEBJbnB1dCgpXG4gIEBIb3N0QmluZGluZygnY2xhc3Mubmd4LWR6LWRpc2FibGVkJylcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5faXNIb3ZlcmVkKSB7XG4gICAgICB0aGlzLl9pc0hvdmVyZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKiogQWxsb3cgdGhlIHNlbGVjdGlvbiBvZiBtdWx0aXBsZSBmaWxlcy4gKi9cbiAgQElucHV0KClcbiAgZ2V0IG11bHRpcGxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZTtcbiAgfVxuICBzZXQgbXVsdGlwbGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfbXVsdGlwbGUgPSB0cnVlO1xuXG4gIC8qKiBTZXQgdGhlIG1heGltdW0gc2l6ZSBhIHNpbmdsZSBmaWxlIG1heSBoYXZlLiAqL1xuICBASW5wdXQoKVxuICBnZXQgbWF4RmlsZVNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4RmlsZVNpemU7XG4gIH1cbiAgc2V0IG1heEZpbGVTaXplKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9tYXhGaWxlU2l6ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9tYXhGaWxlU2l6ZTogbnVtYmVyID0gdW5kZWZpbmVkO1xuXG4gIC8qKiBBbGxvdyB0aGUgZHJvcHpvbmUgY29udGFpbmVyIHRvIGV4cGFuZCB2ZXJ0aWNhbGx5LiAqL1xuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmV4cGFuZGFibGUnKVxuICBnZXQgZXhwYW5kYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZXhwYW5kYWJsZTtcbiAgfVxuICBzZXQgZXhwYW5kYWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2V4cGFuZGFibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX2V4cGFuZGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5neC1kei1ob3ZlcmVkJylcbiAgX2lzSG92ZXJlZCA9IGZhbHNlO1xuXG4gIC8qKiBTaG93IHRoZSBuYXRpdmUgT1MgZmlsZSBleHBsb3JlciB0byBzZWxlY3QgZmlsZXMuICovXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgc2hvd0ZpbGVTZWxlY3RvcigpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICh0aGlzLl9maWxlSW5wdXQubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSlcbiAgX29uRHJhZ092ZXIoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJldmVudERlZmF1bHQoZXZlbnQpO1xuICAgIHRoaXMuX2lzSG92ZXJlZCA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnKVxuICBfb25EcmFnTGVhdmUoKSB7XG4gICAgdGhpcy5faXNIb3ZlcmVkID0gZmFsc2U7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcbiAgX29uRHJvcChldmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wcmV2ZW50RGVmYXVsdChldmVudCk7XG4gICAgdGhpcy5faXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgdGhpcy5oYW5kbGVGaWxlRHJvcChldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuICB9XG5cbiAgX29uRmlsZXNTZWxlY3RlZChldmVudCkge1xuICAgIGNvbnN0IGZpbGVzOiBGaWxlTGlzdCA9IGV2ZW50LnRhcmdldC5maWxlcztcbiAgICB0aGlzLmhhbmRsZUZpbGVEcm9wKGZpbGVzKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRmlsZURyb3AoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgY29uc3QgcmVzdWx0OiBGaWxlU2VsZWN0UmVzdWx0ID1cbiAgICAgIHRoaXMuc2VydmljZS5wYXJzZUZpbGVMaXN0KGZpbGVzLCB0aGlzLmFjY2VwdCwgdGhpcy5tYXhGaWxlU2l6ZSwgdGhpcy5tdWx0aXBsZSk7XG5cbiAgICB0aGlzLmNoYW5nZS5uZXh0KHtcbiAgICAgIGFkZGVkRmlsZXM6IHJlc3VsdC5hZGRlZEZpbGVzLFxuICAgICAgcmVqZWN0ZWRGaWxlczogcmVzdWx0LnJlamVjdGVkRmlsZXMsXG4gICAgICBzb3VyY2U6IHRoaXNcbiAgICB9KTtcblxuICAgIC8vIFJlc2V0IHRoZSBuYXRpdmUgZmlsZSBpbnB1dCBlbGVtZW50IHRvIGFsbG93IHNlbGVjdGluZyB0aGUgc2FtZSBmaWxlIGFnYWluXG4gICAgdGhpcy5fZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgfVxuXG4gIHByaXZhdGUgcHJldmVudERlZmF1bHQoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cbn1cbiJdfQ==

@@ -50,30 +50,8 @@ /**

this.rejectedFiles = [];
/** @type {?} */
var hasAcceptFilter = accept !== '*';
/** @type {?} */
var hasGenericAcceptFilter = accept.endsWith('/*');
/** @type {?} */
var acceptedGenericType = accept.split('/')[0];
for (var i = 0; i < files.length; i++) {
/** @type {?} */
var file = files.item(i);
if (hasAcceptFilter) {
if (hasGenericAcceptFilter) {
// If a generic file type is provided, we check for a match.
/** @type {?} */
var providedGenericType = file.type.split('/')[0];
if (acceptedGenericType !== providedGenericType) {
this.rejectedFiles.push(file);
continue;
}
}
else {
// Else an exact match is required.
/** @type {?} */
var hasFileType = !!file.type;
if (!accept.includes(file.type) || !hasFileType) {
this.rejectedFiles.push(file);
continue;
}
}
if (!NgxDropzoneService.isAccepted(file, accept)) {
this.rejectedFiles.push(file);
continue;
}

@@ -98,2 +76,47 @@ if (maxFileSize && file.size > maxFileSize) {

};
/**
* @private
* @param {?} file
* @param {?} accept
* @return {?}
*/
NgxDropzoneService.isAccepted = /**
* @private
* @param {?} file
* @param {?} accept
* @return {?}
*/
function (file, accept) {
if (accept === '*') {
return true;
}
/** @type {?} */
var acceptFiletypes = accept.split(',').map((/**
* @param {?} it
* @return {?}
*/
function (it) { return it.toLowerCase().trim(); }));
/** @type {?} */
var filetype = file.type.toLowerCase();
/** @type {?} */
var filename = file.name.toLowerCase();
/** @type {?} */
var matchedFileType = acceptFiletypes.find((/**
* @param {?} acceptFiletype
* @return {?}
*/
function (acceptFiletype) {
// check for wildcard mimetype (e.g. image/*)
if (acceptFiletype.endsWith('/*')) {
return filetype.split('/')[0] === acceptFiletype.split('/')[0];
}
// check for file extension (e.g. .csv)
if (acceptFiletype.startsWith(".")) {
return filename.endsWith(acceptFiletype);
}
// check for exact mimetype match (e.g. image/jpeg)
return acceptFiletype == filetype;
}));
return matchedFileType !== undefined;
};
NgxDropzoneService.decorators = [

@@ -117,2 +140,2 @@ { type: Injectable },

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRyb3B6b25lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtZHJvcHpvbmUvIiwic291cmNlcyI6WyJsaWIvbmd4LWRyb3B6b25lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFFM0Msc0NBT0M7Ozs7OztJQUpBLHNDQUFtQjs7Ozs7SUFHbkIseUNBQXNCOzs7Ozs7OztBQVN2QjtJQUFBO1FBR1MsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixrQkFBYSxHQUFXLEVBQUUsQ0FBQztJQXVEcEMsQ0FBQzs7Ozs7Ozs7SUFyREEsMENBQWE7Ozs7Ozs7SUFBYixVQUFjLEtBQWUsRUFBRSxNQUFjLEVBQUUsV0FBbUIsRUFBRSxRQUFpQjtRQUVwRixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQzs7WUFFbEIsZUFBZSxHQUFHLE1BQU0sS0FBSyxHQUFHOztZQUNoQyxzQkFBc0IsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzs7WUFDOUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7O2dCQUNoQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFMUIsSUFBSSxlQUFlLEVBQUU7Z0JBQ3BCLElBQUksc0JBQXNCLEVBQUU7Ozt3QkFFckIsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUVuRCxJQUFJLG1CQUFtQixLQUFLLG1CQUFtQixFQUFFO3dCQUNoRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDOUIsU0FBUztxQkFDVDtpQkFDRDtxQkFBTTs7O3dCQUVBLFdBQVcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUk7b0JBRS9CLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTt3QkFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzlCLFNBQVM7cUJBQ1Q7aUJBQ0Q7YUFDRDtZQUVELElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxFQUFFO2dCQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUIsU0FBUzthQUNUO1lBRUQsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQzdDLDhEQUE4RDtnQkFDOUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLFNBQVM7YUFDVDtZQUVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNCOztZQUVLLE1BQU0sR0FBcUI7WUFDaEMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtTQUNqQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQzs7Z0JBMURELFVBQVU7O0lBMkRYLHlCQUFDO0NBQUEsQUEzREQsSUEyREM7U0ExRFksa0JBQWtCOzs7Ozs7SUFFOUIsd0NBQWdDOzs7OztJQUNoQywyQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVNlbGVjdFJlc3VsdCB7XG5cblx0LyoqIFRoZSBhZGRlZCBmaWxlcywgZW1pdHRlZCBpbiB0aGUgZmlsZXNBZGRlZCBldmVudC4gKi9cblx0YWRkZWRGaWxlczogRmlsZVtdO1xuXG5cdC8qKiBUaGUgcmVqZWN0ZWQgZmlsZXMsIGVtaXR0ZWQgaW4gdGhlIGZpbGVzUmVqZWN0ZWQgZXZlbnQuICovXG5cdHJlamVjdGVkRmlsZXM6IEZpbGVbXTtcbn1cblxuLyoqXG4gKiBUaGlzIHNlcnZpY2UgY29udGFpbnMgdGhlIGZpbHRlcmluZyBsb2dpYyB0byBiZSBhcHBsaWVkIHRvXG4gKiBhbnkgZHJvcHBlZCBvciBzZWxlY3RlZCBmaWxlLiBJZiBhIGZpbGUgbWF0Y2hlcyBhbGwgY3JpdGVyaWFcbiAqIGxpa2UgbWF4aW11bSBzaXplIG9yIGFjY2VwdCB0eXBlLCBpdCB3aWxsIGJlIGVtaXR0ZWQgaW4gdGhlXG4gKiBmaWxlc0FkZGVkIGV2ZW50LCBvdGhlcndpc2UgaW4gdGhlIGZpbGVzUmVqZWN0ZWQgZXZlbnQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ3hEcm9wem9uZVNlcnZpY2Uge1xuXG5cdHByaXZhdGUgYWRkZWRGaWxlczogRmlsZVtdID0gW107XG5cdHByaXZhdGUgcmVqZWN0ZWRGaWxlczogRmlsZVtdID0gW107XG5cblx0cGFyc2VGaWxlTGlzdChmaWxlczogRmlsZUxpc3QsIGFjY2VwdDogc3RyaW5nLCBtYXhGaWxlU2l6ZTogbnVtYmVyLCBtdWx0aXBsZTogYm9vbGVhbik6IEZpbGVTZWxlY3RSZXN1bHQge1xuXG5cdFx0dGhpcy5hZGRlZEZpbGVzID0gW107XG5cdFx0dGhpcy5yZWplY3RlZEZpbGVzID0gW107XG5cblx0XHRjb25zdCBoYXNBY2NlcHRGaWx0ZXIgPSBhY2NlcHQgIT09ICcqJztcblx0XHRjb25zdCBoYXNHZW5lcmljQWNjZXB0RmlsdGVyID0gYWNjZXB0LmVuZHNXaXRoKCcvKicpO1xuXHRcdGNvbnN0IGFjY2VwdGVkR2VuZXJpY1R5cGUgPSBhY2NlcHQuc3BsaXQoJy8nKVswXTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGZpbGUgPSBmaWxlcy5pdGVtKGkpO1xuXG5cdFx0XHRpZiAoaGFzQWNjZXB0RmlsdGVyKSB7XG5cdFx0XHRcdGlmIChoYXNHZW5lcmljQWNjZXB0RmlsdGVyKSB7XG5cdFx0XHRcdFx0Ly8gSWYgYSBnZW5lcmljIGZpbGUgdHlwZSBpcyBwcm92aWRlZCwgd2UgY2hlY2sgZm9yIGEgbWF0Y2guXG5cdFx0XHRcdFx0Y29uc3QgcHJvdmlkZWRHZW5lcmljVHlwZSA9IGZpbGUudHlwZS5zcGxpdCgnLycpWzBdO1xuXG5cdFx0XHRcdFx0aWYgKGFjY2VwdGVkR2VuZXJpY1R5cGUgIT09IHByb3ZpZGVkR2VuZXJpY1R5cGUpIHtcblx0XHRcdFx0XHRcdHRoaXMucmVqZWN0ZWRGaWxlcy5wdXNoKGZpbGUpO1xuXHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIEVsc2UgYW4gZXhhY3QgbWF0Y2ggaXMgcmVxdWlyZWQuXG5cdFx0XHRcdFx0Y29uc3QgaGFzRmlsZVR5cGUgPSAhIWZpbGUudHlwZTtcblxuXHRcdFx0XHRcdGlmICghYWNjZXB0LmluY2x1ZGVzKGZpbGUudHlwZSkgfHwgIWhhc0ZpbGVUeXBlKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnJlamVjdGVkRmlsZXMucHVzaChmaWxlKTtcblx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAobWF4RmlsZVNpemUgJiYgZmlsZS5zaXplID4gbWF4RmlsZVNpemUpIHtcblx0XHRcdFx0dGhpcy5yZWplY3RlZEZpbGVzLnB1c2goZmlsZSk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIW11bHRpcGxlICYmIHRoaXMuYWRkZWRGaWxlcy5sZW5ndGggPj0gMSkge1xuXHRcdFx0XHQvLyBBbHdheXMgZW1pdCB0aGUgbGF0ZXN0IGZpbGUgaWYgbXVsdGktc2VsZWN0aW9uIGlzIGRpc2FibGVkLlxuXHRcdFx0XHR0aGlzLnJlamVjdGVkRmlsZXMucHVzaChmaWxlKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuYWRkZWRGaWxlcy5wdXNoKGZpbGUpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHJlc3VsdDogRmlsZVNlbGVjdFJlc3VsdCA9IHtcblx0XHRcdGFkZGVkRmlsZXM6IHRoaXMuYWRkZWRGaWxlcyxcblx0XHRcdHJlamVjdGVkRmlsZXM6IHRoaXMucmVqZWN0ZWRGaWxlc1xuXHRcdH07XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRyb3B6b25lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtZHJvcHpvbmUvIiwic291cmNlcyI6WyJsaWIvbmd4LWRyb3B6b25lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFFM0Msc0NBT0M7Ozs7OztJQUpBLHNDQUFtQjs7Ozs7SUFHbkIseUNBQXNCOzs7Ozs7OztBQVN2QjtJQUFBO1FBR1MsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixrQkFBYSxHQUFXLEVBQUUsQ0FBQztJQTREcEMsQ0FBQzs7Ozs7Ozs7SUExREEsMENBQWE7Ozs7Ozs7SUFBYixVQUFjLEtBQWUsRUFBRSxNQUFjLEVBQUUsV0FBbUIsRUFBRSxRQUFpQjtRQUVwRixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUV4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTs7Z0JBQ2hDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUUxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLFNBQVM7YUFDVjtZQUVELElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxFQUFFO2dCQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUIsU0FBUzthQUNUO1lBRUQsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQzdDLDhEQUE4RDtnQkFDOUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLFNBQVM7YUFDVDtZQUVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNCOztZQUVLLE1BQU0sR0FBcUI7WUFDaEMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtTQUNqQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQzs7Ozs7OztJQUVlLDZCQUFVOzs7Ozs7SUFBekIsVUFBMEIsSUFBVSxFQUFFLE1BQWM7UUFDbEQsSUFBSSxNQUFNLEtBQUssR0FBRyxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7O1lBRUssZUFBZSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRzs7OztRQUFDLFVBQUEsRUFBRSxJQUFJLE9BQUEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUF2QixDQUF1QixFQUFDOztZQUN0RSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7O1lBQ2xDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTs7WUFDbEMsZUFBZSxHQUFHLGVBQWUsQ0FBQyxJQUFJOzs7O1FBQUMsVUFBQSxjQUFjO1lBQ3pELDZDQUE2QztZQUM3QyxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2pDLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2hFO1lBQ0QsdUNBQXVDO1lBQ3ZDLElBQUksY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDbEMsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQzFDO1lBQ0QsbURBQW1EO1lBQ25ELE9BQU8sY0FBYyxJQUFJLFFBQVEsQ0FBQztRQUNwQyxDQUFDLEVBQUM7UUFFRixPQUFPLGVBQWUsS0FBSyxTQUFTLENBQUM7SUFDdkMsQ0FBQzs7Z0JBL0RGLFVBQVU7O0lBZ0VYLHlCQUFDO0NBQUEsQUFoRUQsSUFnRUM7U0EvRFksa0JBQWtCOzs7Ozs7SUFFOUIsd0NBQWdDOzs7OztJQUNoQywyQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVNlbGVjdFJlc3VsdCB7XG5cblx0LyoqIFRoZSBhZGRlZCBmaWxlcywgZW1pdHRlZCBpbiB0aGUgZmlsZXNBZGRlZCBldmVudC4gKi9cblx0YWRkZWRGaWxlczogRmlsZVtdO1xuXG5cdC8qKiBUaGUgcmVqZWN0ZWQgZmlsZXMsIGVtaXR0ZWQgaW4gdGhlIGZpbGVzUmVqZWN0ZWQgZXZlbnQuICovXG5cdHJlamVjdGVkRmlsZXM6IEZpbGVbXTtcbn1cblxuLyoqXG4gKiBUaGlzIHNlcnZpY2UgY29udGFpbnMgdGhlIGZpbHRlcmluZyBsb2dpYyB0byBiZSBhcHBsaWVkIHRvXG4gKiBhbnkgZHJvcHBlZCBvciBzZWxlY3RlZCBmaWxlLiBJZiBhIGZpbGUgbWF0Y2hlcyBhbGwgY3JpdGVyaWFcbiAqIGxpa2UgbWF4aW11bSBzaXplIG9yIGFjY2VwdCB0eXBlLCBpdCB3aWxsIGJlIGVtaXR0ZWQgaW4gdGhlXG4gKiBmaWxlc0FkZGVkIGV2ZW50LCBvdGhlcndpc2UgaW4gdGhlIGZpbGVzUmVqZWN0ZWQgZXZlbnQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ3hEcm9wem9uZVNlcnZpY2Uge1xuXG5cdHByaXZhdGUgYWRkZWRGaWxlczogRmlsZVtdID0gW107XG5cdHByaXZhdGUgcmVqZWN0ZWRGaWxlczogRmlsZVtdID0gW107XG5cblx0cGFyc2VGaWxlTGlzdChmaWxlczogRmlsZUxpc3QsIGFjY2VwdDogc3RyaW5nLCBtYXhGaWxlU2l6ZTogbnVtYmVyLCBtdWx0aXBsZTogYm9vbGVhbik6IEZpbGVTZWxlY3RSZXN1bHQge1xuXG5cdFx0dGhpcy5hZGRlZEZpbGVzID0gW107XG5cdFx0dGhpcy5yZWplY3RlZEZpbGVzID0gW107XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBmaWxlID0gZmlsZXMuaXRlbShpKTtcblxuXHRcdFx0aWYgKCFOZ3hEcm9wem9uZVNlcnZpY2UuaXNBY2NlcHRlZChmaWxlLCBhY2NlcHQpKSB7XG5cdFx0XHQgIHRoaXMucmVqZWN0ZWRGaWxlcy5wdXNoKGZpbGUpO1xuXHRcdFx0ICBjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKG1heEZpbGVTaXplICYmIGZpbGUuc2l6ZSA+IG1heEZpbGVTaXplKSB7XG5cdFx0XHRcdHRoaXMucmVqZWN0ZWRGaWxlcy5wdXNoKGZpbGUpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCFtdWx0aXBsZSAmJiB0aGlzLmFkZGVkRmlsZXMubGVuZ3RoID49IDEpIHtcblx0XHRcdFx0Ly8gQWx3YXlzIGVtaXQgdGhlIGxhdGVzdCBmaWxlIGlmIG11bHRpLXNlbGVjdGlvbiBpcyBkaXNhYmxlZC5cblx0XHRcdFx0dGhpcy5yZWplY3RlZEZpbGVzLnB1c2goZmlsZSk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLmFkZGVkRmlsZXMucHVzaChmaWxlKTtcblx0XHR9XG5cblx0XHRjb25zdCByZXN1bHQ6IEZpbGVTZWxlY3RSZXN1bHQgPSB7XG5cdFx0XHRhZGRlZEZpbGVzOiB0aGlzLmFkZGVkRmlsZXMsXG5cdFx0XHRyZWplY3RlZEZpbGVzOiB0aGlzLnJlamVjdGVkRmlsZXNcblx0XHR9O1xuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG4gIHByaXZhdGUgc3RhdGljIGlzQWNjZXB0ZWQoZmlsZTogRmlsZSwgYWNjZXB0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoYWNjZXB0ID09PSAnKicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGFjY2VwdEZpbGV0eXBlcyA9IGFjY2VwdC5zcGxpdCgnLCcpLm1hcChpdCA9PiBpdC50b0xvd2VyQ2FzZSgpLnRyaW0oKSk7XG4gICAgY29uc3QgZmlsZXR5cGUgPSBmaWxlLnR5cGUudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBmaWxlbmFtZSA9IGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IG1hdGNoZWRGaWxlVHlwZSA9IGFjY2VwdEZpbGV0eXBlcy5maW5kKGFjY2VwdEZpbGV0eXBlID0+IHtcbiAgICAgIC8vIGNoZWNrIGZvciB3aWxkY2FyZCBtaW1ldHlwZSAoZS5nLiBpbWFnZS8qKVxuICAgICAgaWYgKGFjY2VwdEZpbGV0eXBlLmVuZHNXaXRoKCcvKicpKSB7XG4gICAgICAgIHJldHVybiBmaWxldHlwZS5zcGxpdCgnLycpWzBdID09PSBhY2NlcHRGaWxldHlwZS5zcGxpdCgnLycpWzBdO1xuICAgICAgfVxuICAgICAgLy8gY2hlY2sgZm9yIGZpbGUgZXh0ZW5zaW9uIChlLmcuIC5jc3YpXG4gICAgICBpZiAoYWNjZXB0RmlsZXR5cGUuc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgcmV0dXJuIGZpbGVuYW1lLmVuZHNXaXRoKGFjY2VwdEZpbGV0eXBlKTtcbiAgICAgIH1cbiAgICAgIC8vIGNoZWNrIGZvciBleGFjdCBtaW1ldHlwZSBtYXRjaCAoZS5nLiBpbWFnZS9qcGVnKVxuICAgICAgcmV0dXJuIGFjY2VwdEZpbGV0eXBlID09IGZpbGV0eXBlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1hdGNoZWRGaWxlVHlwZSAhPT0gdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=

@@ -212,2 +212,4 @@ /**

});
// Reset the native file input element to allow selecting the same file again
this._fileInput.nativeElement.value = '';
};

@@ -307,2 +309,2 @@ /**

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRyb3B6b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1kcm9wem9uZS8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtZHJvcHpvbmUvbmd4LWRyb3B6b25lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkssT0FBTyxFQUFFLGtCQUFrQixFQUFvQixNQUFNLHlCQUF5QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7OztBQUVyRyw0Q0FJQzs7O0lBSEMsd0NBQTZCOztJQUM3Qiw0Q0FBbUI7O0lBQ25CLCtDQUFzQjs7QUFHeEI7SUFZRSw4QkFDa0IsT0FBMkI7UUFBM0IsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7Ozs7UUFlMUIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDOzs7O1FBRzlELFdBQU0sR0FBRyxHQUFHLENBQUM7UUFlZCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBVWxCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFVakIsaUJBQVksR0FBVyxTQUFTLENBQUM7UUFXakMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFHckMsZUFBVSxHQUFHLEtBQUssQ0FBQztJQWxFZixDQUFDO0lBTUwsc0JBQUksOENBQVk7Ozs7UUFBaEI7WUFDRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1FBQ3hDLENBQUM7OztPQUFBO0lBWUQsc0JBRUksMENBQVE7UUFIWix1REFBdUQ7Ozs7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QixLQUFnQjtRQUNyQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFCLENBQUM7O2dCQXZJRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLDhCQUE4QjtvQkFDeEMsUUFBUSxFQUFFLDhSQUlYO29CQUNDLE1BQU0sRUFBRSxDQUFDLGtjQUFrYyxDQUFDO29CQUM1YyxTQUFTLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDaEM7Ozs7Z0JBbkJRLGtCQUFrQix1QkF1QnRCLElBQUk7OzttQ0FJTixlQUFlLFNBQUMsMkJBQTJCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFOzZCQVFsRSxTQUFTLFNBQUMsV0FBVzt5QkFHckIsTUFBTTt5QkFHTixLQUFLOzJCQUdMLEtBQUssWUFDTCxXQUFXLFNBQUMsdUJBQXVCOzJCQWNuQyxLQUFLOzhCQVVMLEtBQUs7NkJBVUwsS0FBSyxZQUNMLFdBQVcsU0FBQyxrQkFBa0I7NkJBUzlCLFdBQVcsU0FBQyxzQkFBc0I7bUNBSWxDLFlBQVksU0FBQyxPQUFPOzhCQU9wQixZQUFZLFNBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDOytCQVVuQyxZQUFZLFNBQUMsV0FBVzswQkFLeEIsWUFBWSxTQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQzs7SUErQmxDLDJCQUFDO0NBQUEsQUF4SUQsSUF3SUM7U0E5SFksb0JBQW9COzs7Ozs7SUFPL0IsZ0RBQ3lEOzs7OztJQU96RCwwQ0FBK0M7Ozs7O0lBRy9DLHNDQUF1RTs7Ozs7SUFHdkUsc0NBQXNCOzs7OztJQWV0Qix5Q0FBMEI7Ozs7O0lBVTFCLHlDQUF5Qjs7Ozs7SUFVekIsNENBQXlDOzs7OztJQVd6QywyQ0FBcUM7O0lBRXJDLDBDQUNtQjs7Ozs7SUFuRWpCLHVDQUEyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgSW5wdXQsIFZpZXdDaGlsZCwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIFNlbGYsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neERyb3B6b25lU2VydmljZSwgRmlsZVNlbGVjdFJlc3VsdCB9IGZyb20gJy4uL25neC1kcm9wem9uZS5zZXJ2aWNlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uL25neC1kcm9wem9uZS1wcmV2aWV3L25neC1kcm9wem9uZS1wcmV2aWV3LmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd4RHJvcHpvbmVDaGFuZ2VFdmVudCB7XG4gIHNvdXJjZTogTmd4RHJvcHpvbmVDb21wb25lbnQ7XG4gIGFkZGVkRmlsZXM6IEZpbGVbXTtcbiAgcmVqZWN0ZWRGaWxlczogRmlsZVtdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtZHJvcHpvbmUsIFtuZ3gtZHJvcHpvbmVdJyxcbiAgdGVtcGxhdGU6IGA8aW5wdXQgI2ZpbGVJbnB1dCB0eXBlPVwiZmlsZVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIiBbYWNjZXB0XT1cImFjY2VwdFwiXG4gIChjaGFuZ2UpPVwiX29uRmlsZXNTZWxlY3RlZCgkZXZlbnQpXCI+XG48bmctY29udGVudCBzZWxlY3Q9XCJuZ3gtZHJvcHpvbmUtbGFiZWxcIiAqbmdJZj1cIiFfaGFzUHJldmlld3NcIj48L25nLWNvbnRlbnQ+XG48bmctY29udGVudCBzZWxlY3Q9XCJuZ3gtZHJvcHpvbmUtcHJldmlld1wiPjwvbmctY29udGVudD5cbmAsXG4gIHN0eWxlczogW2A6aG9zdCgpe2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjE4MHB4O2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojNzE3Mzg2O2JvcmRlcjoycHggZGFzaGVkICM3MTczODY7Ym9yZGVyLXJhZGl1czo1cHg7Zm9udC1zaXplOjE2cHg7b3ZlcmZsb3cteDphdXRvfTpob3N0KCkubmd4LWR6LWhvdmVyZWR7Ym9yZGVyLXN0eWxlOnNvbGlkfTpob3N0KCkubmd4LWR6LWRpc2FibGVke29wYWNpdHk6LjU7Y3Vyc29yOm5vLWRyb3A7cG9pbnRlci1ldmVudHM6bm9uZX06aG9zdCgpLmV4cGFuZGFibGV7b3ZlcmZsb3c6aGlkZGVuO2hlaWdodDp1bnNldDttaW4taGVpZ2h0OjE4MHB4O2ZsZXgtd3JhcDp3cmFwfTpob3N0KCkgOjpuZy1kZWVwIG5neC1kcm9wem9uZS1sYWJlbHt0ZXh0LWFsaWduOmNlbnRlcjt6LWluZGV4OjEwO21hcmdpbjoxMHB4IGF1dG99YF0sXG4gIHByb3ZpZGVyczogW05neERyb3B6b25lU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgTmd4RHJvcHpvbmVDb21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgcHJpdmF0ZSBzZXJ2aWNlOiBOZ3hEcm9wem9uZVNlcnZpY2VcbiAgKSB7IH1cblxuICAvKiogQSBsaXN0IG9mIHRoZSBjb250ZW50LXByb2plY3RlZCBwcmV2aWV3IGNoaWxkcmVuLiAqL1xuICBAQ29udGVudENoaWxkcmVuKE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBfcHJldmlld0NoaWxkcmVuOiBRdWVyeUxpc3Q8Tmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50PjtcblxuICBnZXQgX2hhc1ByZXZpZXdzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX3ByZXZpZXdDaGlsZHJlbi5sZW5ndGg7XG4gIH1cblxuICAvKiogQSB0ZW1wbGF0ZSByZWZlcmVuY2UgdG8gdGhlIG5hdGl2ZSBmaWxlIGlucHV0IGVsZW1lbnQuICovXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIF9maWxlSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgLyoqIEVtaXR0ZWQgd2hlbiBhbnkgZmlsZXMgd2VyZSBhZGRlZCBvciByZWplY3RlZC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd4RHJvcHpvbmVDaGFuZ2VFdmVudD4oKTtcblxuICAvKiogU2V0IHRoZSBhY2NlcHRlZCBmaWxlIHR5cGVzLiBEZWZhdWx0cyB0byAnKicuICovXG4gIEBJbnB1dCgpIGFjY2VwdCA9ICcqJztcblxuICAvKiogRGlzYWJsZSBhbnkgdXNlciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBjb21wb25lbnQuICovXG4gIEBJbnB1dCgpXG4gIEBIb3N0QmluZGluZygnY2xhc3Mubmd4LWR6LWRpc2FibGVkJylcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5faXNIb3ZlcmVkKSB7XG4gICAgICB0aGlzLl9pc0hvdmVyZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKiogQWxsb3cgdGhlIHNlbGVjdGlvbiBvZiBtdWx0aXBsZSBmaWxlcy4gKi9cbiAgQElucHV0KClcbiAgZ2V0IG11bHRpcGxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZTtcbiAgfVxuICBzZXQgbXVsdGlwbGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfbXVsdGlwbGUgPSB0cnVlO1xuXG4gIC8qKiBTZXQgdGhlIG1heGltdW0gc2l6ZSBhIHNpbmdsZSBmaWxlIG1heSBoYXZlLiAqL1xuICBASW5wdXQoKVxuICBnZXQgbWF4RmlsZVNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4RmlsZVNpemU7XG4gIH1cbiAgc2V0IG1heEZpbGVTaXplKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9tYXhGaWxlU2l6ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9tYXhGaWxlU2l6ZTogbnVtYmVyID0gdW5kZWZpbmVkO1xuXG4gIC8qKiBBbGxvdyB0aGUgZHJvcHpvbmUgY29udGFpbmVyIHRvIGV4cGFuZCB2ZXJ0aWNhbGx5LiAqL1xuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmV4cGFuZGFibGUnKVxuICBnZXQgZXhwYW5kYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZXhwYW5kYWJsZTtcbiAgfVxuICBzZXQgZXhwYW5kYWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2V4cGFuZGFibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX2V4cGFuZGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5neC1kei1ob3ZlcmVkJylcbiAgX2lzSG92ZXJlZCA9IGZhbHNlO1xuXG4gIC8qKiBTaG93IHRoZSBuYXRpdmUgT1MgZmlsZSBleHBsb3JlciB0byBzZWxlY3QgZmlsZXMuICovXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgc2hvd0ZpbGVTZWxlY3RvcigpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICh0aGlzLl9maWxlSW5wdXQubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSlcbiAgX29uRHJhZ092ZXIoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJldmVudERlZmF1bHQoZXZlbnQpO1xuICAgIHRoaXMuX2lzSG92ZXJlZCA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnKVxuICBfb25EcmFnTGVhdmUoKSB7XG4gICAgdGhpcy5faXNIb3ZlcmVkID0gZmFsc2U7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcbiAgX29uRHJvcChldmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wcmV2ZW50RGVmYXVsdChldmVudCk7XG4gICAgdGhpcy5faXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgdGhpcy5oYW5kbGVGaWxlRHJvcChldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuICB9XG5cbiAgX29uRmlsZXNTZWxlY3RlZChldmVudCkge1xuICAgIGNvbnN0IGZpbGVzOiBGaWxlTGlzdCA9IGV2ZW50LnRhcmdldC5maWxlcztcbiAgICB0aGlzLmhhbmRsZUZpbGVEcm9wKGZpbGVzKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRmlsZURyb3AoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgY29uc3QgcmVzdWx0OiBGaWxlU2VsZWN0UmVzdWx0ID1cbiAgICAgIHRoaXMuc2VydmljZS5wYXJzZUZpbGVMaXN0KGZpbGVzLCB0aGlzLmFjY2VwdCwgdGhpcy5tYXhGaWxlU2l6ZSwgdGhpcy5tdWx0aXBsZSk7XG5cbiAgICB0aGlzLmNoYW5nZS5uZXh0KHtcbiAgICAgIGFkZGVkRmlsZXM6IHJlc3VsdC5hZGRlZEZpbGVzLFxuICAgICAgcmVqZWN0ZWRGaWxlczogcmVzdWx0LnJlamVjdGVkRmlsZXMsXG4gICAgICBzb3VyY2U6IHRoaXNcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJldmVudERlZmF1bHQoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRyb3B6b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1kcm9wem9uZS8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtZHJvcHpvbmUvbmd4LWRyb3B6b25lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkssT0FBTyxFQUFFLGtCQUFrQixFQUFvQixNQUFNLHlCQUF5QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7OztBQUVyRyw0Q0FJQzs7O0lBSEMsd0NBQTZCOztJQUM3Qiw0Q0FBbUI7O0lBQ25CLCtDQUFzQjs7QUFHeEI7SUFZRSw4QkFDa0IsT0FBMkI7UUFBM0IsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7Ozs7UUFlMUIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDOzs7O1FBRzlELFdBQU0sR0FBRyxHQUFHLENBQUM7UUFlZCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBVWxCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFVakIsaUJBQVksR0FBVyxTQUFTLENBQUM7UUFXakMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFHckMsZUFBVSxHQUFHLEtBQUssQ0FBQztJQWxFZixDQUFDO0lBTUwsc0JBQUksOENBQVk7Ozs7UUFBaEI7WUFDRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1FBQ3hDLENBQUM7OztPQUFBO0lBWUQsc0JBRUksMENBQVE7UUFIWix1REFBdUQ7Ozs7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IENvbXBvbmVudCwgT25Jbml0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgSW5wdXQsIFZpZXdDaGlsZCwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIFNlbGYsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neERyb3B6b25lU2VydmljZSwgRmlsZVNlbGVjdFJlc3VsdCB9IGZyb20gJy4uL25neC1kcm9wem9uZS5zZXJ2aWNlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uL25neC1kcm9wem9uZS1wcmV2aWV3L25neC1kcm9wem9uZS1wcmV2aWV3LmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd4RHJvcHpvbmVDaGFuZ2VFdmVudCB7XG4gIHNvdXJjZTogTmd4RHJvcHpvbmVDb21wb25lbnQ7XG4gIGFkZGVkRmlsZXM6IEZpbGVbXTtcbiAgcmVqZWN0ZWRGaWxlczogRmlsZVtdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtZHJvcHpvbmUsIFtuZ3gtZHJvcHpvbmVdJyxcbiAgdGVtcGxhdGU6IGA8aW5wdXQgI2ZpbGVJbnB1dCB0eXBlPVwiZmlsZVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIiBbYWNjZXB0XT1cImFjY2VwdFwiXG4gIChjaGFuZ2UpPVwiX29uRmlsZXNTZWxlY3RlZCgkZXZlbnQpXCI+XG48bmctY29udGVudCBzZWxlY3Q9XCJuZ3gtZHJvcHpvbmUtbGFiZWxcIiAqbmdJZj1cIiFfaGFzUHJldmlld3NcIj48L25nLWNvbnRlbnQ+XG48bmctY29udGVudCBzZWxlY3Q9XCJuZ3gtZHJvcHpvbmUtcHJldmlld1wiPjwvbmctY29udGVudD5cbmAsXG4gIHN0eWxlczogW2A6aG9zdCgpe2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjE4MHB4O2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojNzE3Mzg2O2JvcmRlcjoycHggZGFzaGVkICM3MTczODY7Ym9yZGVyLXJhZGl1czo1cHg7Zm9udC1zaXplOjE2cHg7b3ZlcmZsb3cteDphdXRvfTpob3N0KCkubmd4LWR6LWhvdmVyZWR7Ym9yZGVyLXN0eWxlOnNvbGlkfTpob3N0KCkubmd4LWR6LWRpc2FibGVke29wYWNpdHk6LjU7Y3Vyc29yOm5vLWRyb3A7cG9pbnRlci1ldmVudHM6bm9uZX06aG9zdCgpLmV4cGFuZGFibGV7b3ZlcmZsb3c6aGlkZGVuO2hlaWdodDp1bnNldDttaW4taGVpZ2h0OjE4MHB4O2ZsZXgtd3JhcDp3cmFwfTpob3N0KCkgOjpuZy1kZWVwIG5neC1kcm9wem9uZS1sYWJlbHt0ZXh0LWFsaWduOmNlbnRlcjt6LWluZGV4OjEwO21hcmdpbjoxMHB4IGF1dG99YF0sXG4gIHByb3ZpZGVyczogW05neERyb3B6b25lU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgTmd4RHJvcHpvbmVDb21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgcHJpdmF0ZSBzZXJ2aWNlOiBOZ3hEcm9wem9uZVNlcnZpY2VcbiAgKSB7IH1cblxuICAvKiogQSBsaXN0IG9mIHRoZSBjb250ZW50LXByb2plY3RlZCBwcmV2aWV3IGNoaWxkcmVuLiAqL1xuICBAQ29udGVudENoaWxkcmVuKE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBfcHJldmlld0NoaWxkcmVuOiBRdWVyeUxpc3Q8Tmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50PjtcblxuICBnZXQgX2hhc1ByZXZpZXdzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX3ByZXZpZXdDaGlsZHJlbi5sZW5ndGg7XG4gIH1cblxuICAvKiogQSB0ZW1wbGF0ZSByZWZlcmVuY2UgdG8gdGhlIG5hdGl2ZSBmaWxlIGlucHV0IGVsZW1lbnQuICovXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIF9maWxlSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgLyoqIEVtaXR0ZWQgd2hlbiBhbnkgZmlsZXMgd2VyZSBhZGRlZCBvciByZWplY3RlZC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Tmd4RHJvcHpvbmVDaGFuZ2VFdmVudD4oKTtcblxuICAvKiogU2V0IHRoZSBhY2NlcHRlZCBmaWxlIHR5cGVzLiBEZWZhdWx0cyB0byAnKicuICovXG4gIEBJbnB1dCgpIGFjY2VwdCA9ICcqJztcblxuICAvKiogRGlzYWJsZSBhbnkgdXNlciBpbnRlcmFjdGlvbiB3aXRoIHRoZSBjb21wb25lbnQuICovXG4gIEBJbnB1dCgpXG4gIEBIb3N0QmluZGluZygnY2xhc3Mubmd4LWR6LWRpc2FibGVkJylcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5faXNIb3ZlcmVkKSB7XG4gICAgICB0aGlzLl9pc0hvdmVyZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKiogQWxsb3cgdGhlIHNlbGVjdGlvbiBvZiBtdWx0aXBsZSBmaWxlcy4gKi9cbiAgQElucHV0KClcbiAgZ2V0IG11bHRpcGxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZTtcbiAgfVxuICBzZXQgbXVsdGlwbGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfbXVsdGlwbGUgPSB0cnVlO1xuXG4gIC8qKiBTZXQgdGhlIG1heGltdW0gc2l6ZSBhIHNpbmdsZSBmaWxlIG1heSBoYXZlLiAqL1xuICBASW5wdXQoKVxuICBnZXQgbWF4RmlsZVNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4RmlsZVNpemU7XG4gIH1cbiAgc2V0IG1heEZpbGVTaXplKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9tYXhGaWxlU2l6ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9tYXhGaWxlU2l6ZTogbnVtYmVyID0gdW5kZWZpbmVkO1xuXG4gIC8qKiBBbGxvdyB0aGUgZHJvcHpvbmUgY29udGFpbmVyIHRvIGV4cGFuZCB2ZXJ0aWNhbGx5LiAqL1xuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmV4cGFuZGFibGUnKVxuICBnZXQgZXhwYW5kYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZXhwYW5kYWJsZTtcbiAgfVxuICBzZXQgZXhwYW5kYWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2V4cGFuZGFibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX2V4cGFuZGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5neC1kei1ob3ZlcmVkJylcbiAgX2lzSG92ZXJlZCA9IGZhbHNlO1xuXG4gIC8qKiBTaG93IHRoZSBuYXRpdmUgT1MgZmlsZSBleHBsb3JlciB0byBzZWxlY3QgZmlsZXMuICovXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgc2hvd0ZpbGVTZWxlY3RvcigpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICh0aGlzLl9maWxlSW5wdXQubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSlcbiAgX29uRHJhZ092ZXIoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJldmVudERlZmF1bHQoZXZlbnQpO1xuICAgIHRoaXMuX2lzSG92ZXJlZCA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnKVxuICBfb25EcmFnTGVhdmUoKSB7XG4gICAgdGhpcy5faXNIb3ZlcmVkID0gZmFsc2U7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcbiAgX29uRHJvcChldmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wcmV2ZW50RGVmYXVsdChldmVudCk7XG4gICAgdGhpcy5faXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgdGhpcy5oYW5kbGVGaWxlRHJvcChldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuICB9XG5cbiAgX29uRmlsZXNTZWxlY3RlZChldmVudCkge1xuICAgIGNvbnN0IGZpbGVzOiBGaWxlTGlzdCA9IGV2ZW50LnRhcmdldC5maWxlcztcbiAgICB0aGlzLmhhbmRsZUZpbGVEcm9wKGZpbGVzKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRmlsZURyb3AoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgY29uc3QgcmVzdWx0OiBGaWxlU2VsZWN0UmVzdWx0ID1cbiAgICAgIHRoaXMuc2VydmljZS5wYXJzZUZpbGVMaXN0KGZpbGVzLCB0aGlzLmFjY2VwdCwgdGhpcy5tYXhGaWxlU2l6ZSwgdGhpcy5tdWx0aXBsZSk7XG5cbiAgICB0aGlzLmNoYW5nZS5uZXh0KHtcbiAgICAgIGFkZGVkRmlsZXM6IHJlc3VsdC5hZGRlZEZpbGVzLFxuICAgICAgcmVqZWN0ZWRGaWxlczogcmVzdWx0LnJlamVjdGVkRmlsZXMsXG4gICAgICBzb3VyY2U6IHRoaXNcbiAgICB9KTtcblxuICAgIC8vIFJlc2V0IHRoZSBuYXRpdmUgZmlsZSBpbnB1dCBlbGVtZW50IHRvIGFsbG93IHNlbGVjdGluZyB0aGUgc2FtZSBmaWxlIGFnYWluXG4gICAgdGhpcy5fZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgfVxuXG4gIHByaXZhdGUgcHJldmVudERlZmF1bHQoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cbn1cbiJdfQ==

@@ -225,30 +225,8 @@ import { Directive, Component, Input, Output, EventEmitter, HostBinding, HostListener, Injectable, ViewChild, ContentChildren, Self, NgModule } from '@angular/core';

this.rejectedFiles = [];
/** @type {?} */
const hasAcceptFilter = accept !== '*';
/** @type {?} */
const hasGenericAcceptFilter = accept.endsWith('/*');
/** @type {?} */
const acceptedGenericType = accept.split('/')[0];
for (let i = 0; i < files.length; i++) {
/** @type {?} */
const file = files.item(i);
if (hasAcceptFilter) {
if (hasGenericAcceptFilter) {
// If a generic file type is provided, we check for a match.
/** @type {?} */
const providedGenericType = file.type.split('/')[0];
if (acceptedGenericType !== providedGenericType) {
this.rejectedFiles.push(file);
continue;
}
}
else {
// Else an exact match is required.
/** @type {?} */
const hasFileType = !!file.type;
if (!accept.includes(file.type) || !hasFileType) {
this.rejectedFiles.push(file);
continue;
}
}
if (!NgxDropzoneService.isAccepted(file, accept)) {
this.rejectedFiles.push(file);
continue;
}

@@ -273,2 +251,41 @@ if (maxFileSize && file.size > maxFileSize) {

}
/**
* @private
* @param {?} file
* @param {?} accept
* @return {?}
*/
static isAccepted(file, accept) {
if (accept === '*') {
return true;
}
/** @type {?} */
const acceptFiletypes = accept.split(',').map((/**
* @param {?} it
* @return {?}
*/
it => it.toLowerCase().trim()));
/** @type {?} */
const filetype = file.type.toLowerCase();
/** @type {?} */
const filename = file.name.toLowerCase();
/** @type {?} */
const matchedFileType = acceptFiletypes.find((/**
* @param {?} acceptFiletype
* @return {?}
*/
acceptFiletype => {
// check for wildcard mimetype (e.g. image/*)
if (acceptFiletype.endsWith('/*')) {
return filetype.split('/')[0] === acceptFiletype.split('/')[0];
}
// check for file extension (e.g. .csv)
if (acceptFiletype.startsWith(".")) {
return filename.endsWith(acceptFiletype);
}
// check for exact mimetype match (e.g. image/jpeg)
return acceptFiletype == filetype;
}));
return matchedFileType !== undefined;
}
}

@@ -428,2 +445,4 @@ NgxDropzoneService.decorators = [

});
// Reset the native file input element to allow selecting the same file again
this._fileInput.nativeElement.value = '';
}

@@ -645,2 +664,2 @@ /**

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRyb3B6b25lLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9uZ3gtZHJvcHpvbmUvbGliL25neC1kcm9wem9uZS1sYWJlbC5kaXJlY3RpdmUudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvaGVscGVycy50cyIsIm5nOi8vbmd4LWRyb3B6b25lL2xpYi9uZ3gtZHJvcHpvbmUtcHJldmlldy9uZ3gtZHJvcHpvbmUtcHJldmlldy5jb21wb25lbnQudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvbmd4LWRyb3B6b25lLnNlcnZpY2UudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvbmd4LWRyb3B6b25lL25neC1kcm9wem9uZS5jb21wb25lbnQudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvbmd4LWRyb3B6b25lLXByZXZpZXcvbmd4LWRyb3B6b25lLWltYWdlLXByZXZpZXcvbmd4LWRyb3B6b25lLWltYWdlLXByZXZpZXcuY29tcG9uZW50LnRzIiwibmc6Ly9uZ3gtZHJvcHpvbmUvbGliL25neC1kcm9wem9uZS1wcmV2aWV3L25neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2Uvbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZS5jb21wb25lbnQudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvbmd4LWRyb3B6b25lLXByZXZpZXcvbmd4LWRyb3B6b25lLXZpZGVvLXByZXZpZXcvbmd4LWRyb3B6b25lLXZpZGVvLXByZXZpZXcuY29tcG9uZW50LnRzIiwibmc6Ly9uZ3gtZHJvcHpvbmUvbGliL25neC1kcm9wem9uZS5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ25neC1kcm9wem9uZS1sYWJlbCdcbn0pXG5leHBvcnQgY2xhc3MgTmd4RHJvcHpvbmVMYWJlbERpcmVjdGl2ZSB7IH1cbiIsIlxuLyoqXG4gKiBDb2VyY2VzIGEgZGF0YS1ib3VuZCB2YWx1ZSAodHlwaWNhbGx5IGEgc3RyaW5nKSB0byBhIGJvb2xlYW4uXG4gKiBUYWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYXN0ZXIvc3JjL2Nkay9jb2VyY2lvbi9ib29sZWFuLXByb3BlcnR5LnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWU6IGFueSk6IGJvb2xlYW5cbntcblx0cmV0dXJuIHZhbHVlICE9IG51bGwgJiYgYCR7dmFsdWV9YCAhPT0gJ2ZhbHNlJztcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBwcm92aWRlZCB2YWx1ZSBpcyBjb25zaWRlcmVkIGEgbnVtYmVyLlxuICogVGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2Jsb2IvbWFzdGVyL3NyYy9jZGsvY29lcmNpb24vbnVtYmVyLXByb3BlcnR5LnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZTogYW55KTogbnVtYmVyXG57XG5cdC8vIHBhcnNlRmxvYXQodmFsdWUpIGhhbmRsZXMgbW9zdCBvZiB0aGUgY2FzZXMgd2UncmUgaW50ZXJlc3RlZCBpbiAoaXQgdHJlYXRzIG51bGwsIGVtcHR5IHN0cmluZyxcblx0Ly8gYW5kIG90aGVyIG5vbi1udW1iZXIgdmFsdWVzIGFzIE5hTiwgd2hlcmUgTnVtYmVyIGp1c3QgdXNlcyAwKSBidXQgaXQgY29uc2lkZXJzIHRoZSBzdHJpbmdcblx0Ly8gJzEyM2hlbGxvJyB0byBiZSBhIHZhbGlkIG51bWJlci4gVGhlcmVmb3JlIHdlIGFsc28gY2hlY2sgaWYgTnVtYmVyKHZhbHVlKSBpcyBOYU4uXG5cdHJldHVybiAoIWlzTmFOKHBhcnNlRmxvYXQodmFsdWUgYXMgYW55KSkgJiYgIWlzTmFOKE51bWJlcih2YWx1ZSkpKSA/IE51bWJlcih2YWx1ZSkgOiBudWxsO1xufVxuIiwiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgU2FmZVN0eWxlLCBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuZW51bSBLRVlfQ09ERSB7XG5cdEJBQ0tTUEFDRSA9IDgsXG5cdERFTEVURSA9IDQ2XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25neC1kcm9wem9uZS1wcmV2aWV3Jyxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJuZ3gtZHJvcHpvbmUtbGFiZWxcIj48L25nLWNvbnRlbnQ+XG5cdFx0PG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2UgKm5nSWY9XCJyZW1vdmFibGVcIiAoY2xpY2spPVwiX3JlbW92ZSgkZXZlbnQpXCI+XG5cdFx0PC9uZ3gtZHJvcHpvbmUtcmVtb3ZlLWJhZGdlPlxuXHRgLFxuXHRzdHlsZXM6IFtgOmhvc3QoKXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byB0b3AsI2VkZWRlZCwjZWZlZmVmLCNmMWYxZjEsI2Y0ZjRmNCwjZjZmNmY2KX06aG9zdCgpOmZvY3VzLDpob3N0KCk6aG92ZXJ7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gdG9wLCNlM2UzZTMsI2ViZWFlYSwjZThlN2U3LCNlYmVhZWEsI2Y0ZjRmNCk7b3V0bGluZTowfTpob3N0KCk6Zm9jdXMgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZSw6aG9zdCgpOmhvdmVyIG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2V7b3BhY2l0eToxfTpob3N0KCkgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZXtvcGFjaXR5OjB9Omhvc3QoKSA6Om5nLWRlZXAgbmd4LWRyb3B6b25lLWxhYmVse292ZXJmbG93LXdyYXA6YnJlYWstd29yZH1gXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQge1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByb3RlY3RlZCBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuXHQpIHsgfVxuXG5cdC8qKiBUaGUgZmlsZSB0byBwcmV2aWV3LiAqL1xuXHRASW5wdXQoKSBmaWxlOiBGaWxlO1xuXG5cdC8qKiBBbGxvdyB0aGUgdXNlciB0byByZW1vdmUgZmlsZXMuICovXG5cdEBJbnB1dCgpXG5cdGdldCByZW1vdmFibGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuX3JlbW92YWJsZTtcblx0fVxuXHRzZXQgcmVtb3ZhYmxlKHZhbHVlOiBib29sZWFuKSB7XG5cdFx0dGhpcy5fcmVtb3ZhYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcblx0fVxuXHRwcm90ZWN0ZWQgX3JlbW92YWJsZSA9IGZhbHNlO1xuXG5cdC8qKiBFbWl0dGVkIHdoZW4gdGhlIGVsZW1lbnQgc2hvdWxkIGJlIHJlbW92ZWQuICovXG5cdEBPdXRwdXQoKSByZWFkb25seSByZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlPigpO1xuXG5cdEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcblx0a2V5RXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcblx0XHRzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcblx0XHRcdGNhc2UgS0VZX0NPREUuQkFDS1NQQUNFOlxuXHRcdFx0Y2FzZSBLRVlfQ09ERS5ERUxFVEU6XG5cdFx0XHRcdHRoaXMucmVtb3ZlKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0LyoqIFdlIHVzZSB0aGUgSG9zdEJpbmRpbmcgdG8gcGFzcyB0aGVzZSBjb21tb24gc3R5bGVzIHRvIGNoaWxkIGNvbXBvbmVudHMuICovXG5cdEBIb3N0QmluZGluZygnc3R5bGUnKVxuXHRnZXQgaG9zdFN0eWxlKCk6IFNhZmVTdHlsZSB7XG5cdFx0Y29uc3Qgc3R5bGVzID0gYFxuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGhlaWdodDogMTQwcHg7XG5cdFx0XHRtaW4taGVpZ2h0OiAxNDBweDtcblx0XHRcdG1pbi13aWR0aDogMTgwcHg7XG5cdFx0XHRtYXgtd2lkdGg6IDE4MHB4O1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0cGFkZGluZzogMCAyMHB4O1xuXHRcdFx0bWFyZ2luOiAxMHB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogNXB4O1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGA7XG5cblx0XHRyZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHN0eWxlcyk7XG5cdH1cblxuXHQvKiogTWFrZSB0aGUgcHJldmlldyBpdGVtIGZvY3VzYWJsZSB1c2luZyB0aGUgdGFiIGtleS4gKi9cblx0QEhvc3RCaW5kaW5nKCd0YWJpbmRleCcpIHRhYkluZGV4ID0gMDtcblxuXHQvKiogUmVtb3ZlIG1ldGhvZCB0byBiZSB1c2VkIGZyb20gdGhlIHRlbXBsYXRlLiAqL1xuXHRfcmVtb3ZlKGV2ZW50KSB7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0dGhpcy5yZW1vdmUoKTtcblx0fVxuXG5cdC8qKiBSZW1vdmUgdGhlIHByZXZpZXcgaXRlbSAodXNlIGZyb20gY29tcG9uZW50IGNvZGUpLiAqL1xuXHRyZW1vdmUoKSB7XG5cdFx0aWYgKHRoaXMuX3JlbW92YWJsZSkge1xuXHRcdFx0dGhpcy5yZW1vdmVkLm5leHQodGhpcy5maWxlKTtcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgYXN5bmMgcmVhZEZpbGUoKTogUHJvbWlzZTxzdHJpbmcgfCBBcnJheUJ1ZmZlcj4ge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmcgfCBBcnJheUJ1ZmZlcj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0Y29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuXHRcdFx0cmVhZGVyLm9ubG9hZCA9IGUgPT4ge1xuXHRcdFx0XHRyZXR1cm4gcmVzb2x2ZSgoZS50YXJnZXQgYXMgRmlsZVJlYWRlcikucmVzdWx0KTtcblx0XHRcdH07XG5cblx0XHRcdHJlYWRlci5vbmVycm9yID0gZSA9PiB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoYEZpbGVSZWFkZXIgZmFpbGVkIG9uIGZpbGUgJHt0aGlzLmZpbGUubmFtZX0uYCk7XG5cdFx0XHRcdHJldHVybiByZWplY3QobnVsbCk7XG5cdFx0XHR9O1xuXG5cdFx0XHRpZiAoIXRoaXMuZmlsZSkge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKCdObyBmaWxlIHRvIHJlYWQuIFBsZWFzZSBwcm92aWRlIGEgZmlsZSB1c2luZyB0aGUgW2ZpbGVdIElucHV0IHByb3BlcnR5LicpO1xuXHRcdFx0XHRyZXR1cm4gcmVqZWN0KG51bGwpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZWFkZXIucmVhZEFzRGF0YVVSTCh0aGlzLmZpbGUpO1xuXHRcdH0pO1xuXHR9XG59XG4iLCJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVNlbGVjdFJlc3VsdCB7XG5cblx0LyoqIFRoZSBhZGRlZCBmaWxlcywgZW1pdHRlZCBpbiB0aGUgZmlsZXNBZGRlZCBldmVudC4gKi9cblx0YWRkZWRGaWxlczogRmlsZVtdO1xuXG5cdC8qKiBUaGUgcmVqZWN0ZWQgZmlsZXMsIGVtaXR0ZWQgaW4gdGhlIGZpbGVzUmVqZWN0ZWQgZXZlbnQuICovXG5cdHJlamVjdGVkRmlsZXM6IEZpbGVbXTtcbn1cblxuLyoqXG4gKiBUaGlzIHNlcnZpY2UgY29udGFpbnMgdGhlIGZpbHRlcmluZyBsb2dpYyB0byBiZSBhcHBsaWVkIHRvXG4gKiBhbnkgZHJvcHBlZCBvciBzZWxlY3RlZCBmaWxlLiBJZiBhIGZpbGUgbWF0Y2hlcyBhbGwgY3JpdGVyaWFcbiAqIGxpa2UgbWF4aW11bSBzaXplIG9yIGFjY2VwdCB0eXBlLCBpdCB3aWxsIGJlIGVtaXR0ZWQgaW4gdGhlXG4gKiBmaWxlc0FkZGVkIGV2ZW50LCBvdGhlcndpc2UgaW4gdGhlIGZpbGVzUmVqZWN0ZWQgZXZlbnQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ3hEcm9wem9uZVNlcnZpY2Uge1xuXG5cdHByaXZhdGUgYWRkZWRGaWxlczogRmlsZVtdID0gW107XG5cdHByaXZhdGUgcmVqZWN0ZWRGaWxlczogRmlsZVtdID0gW107XG5cblx0cGFyc2VGaWxlTGlzdChmaWxlczogRmlsZUxpc3QsIGFjY2VwdDogc3RyaW5nLCBtYXhGaWxlU2l6ZTogbnVtYmVyLCBtdWx0aXBsZTogYm9vbGVhbik6IEZpbGVTZWxlY3RSZXN1bHQge1xuXG5cdFx0dGhpcy5hZGRlZEZpbGVzID0gW107XG5cdFx0dGhpcy5yZWplY3RlZEZpbGVzID0gW107XG5cblx0XHRjb25zdCBoYXNBY2NlcHRGaWx0ZXIgPSBhY2NlcHQgIT09ICcqJztcblx0XHRjb25zdCBoYXNHZW5lcmljQWNjZXB0RmlsdGVyID0gYWNjZXB0LmVuZHNXaXRoKCcvKicpO1xuXHRcdGNvbnN0IGFjY2VwdGVkR2VuZXJpY1R5cGUgPSBhY2NlcHQuc3BsaXQoJy8nKVswXTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGZpbGUgPSBmaWxlcy5pdGVtKGkpO1xuXG5cdFx0XHRpZiAoaGFzQWNjZXB0RmlsdGVyKSB7XG5cdFx0XHRcdGlmIChoYXNHZW5lcmljQWNjZXB0RmlsdGVyKSB7XG5cdFx0XHRcdFx0Ly8gSWYgYSBnZW5lcmljIGZpbGUgdHlwZSBpcyBwcm92aWRlZCwgd2UgY2hlY2sgZm9yIGEgbWF0Y2guXG5cdFx0XHRcdFx0Y29uc3QgcHJvdmlkZWRHZW5lcmljVHlwZSA9IGZpbGUudHlwZS5zcGxpdCgnLycpWzBdO1xuXG5cdFx0XHRcdFx0aWYgKGFjY2VwdGVkR2VuZXJpY1R5cGUgIT09IHByb3ZpZGVkR2VuZXJpY1R5cGUpIHtcblx0XHRcdFx0XHRcdHRoaXMucmVqZWN0ZWRGaWxlcy5wdXNoKGZpbGUpO1xuXHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIEVsc2UgYW4gZXhhY3QgbWF0Y2ggaXMgcmVxdWlyZWQuXG5cdFx0XHRcdFx0Y29uc3QgaGFzRmlsZVR5cGUgPSAhIWZpbGUudHlwZTtcblxuXHRcdFx0XHRcdGlmICghYWNjZXB0LmluY2x1ZGVzKGZpbGUudHlwZSkgfHwgIWhhc0ZpbGVUeXBlKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnJlamVjdGVkRmlsZXMucHVzaChmaWxlKTtcblx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAobWF4RmlsZVNpemUgJiYgZmlsZS5zaXplID4gbWF4RmlsZVNpemUpIHtcblx0XHRcdFx0dGhpcy5yZWplY3RlZEZpbGVzLnB1c2goZmlsZSk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIW11bHRpcGxlICYmIHRoaXMuYWRkZWRGaWxlcy5sZW5ndGggPj0gMSkge1xuXHRcdFx0XHQvLyBBbHdheXMgZW1pdCB0aGUgbGF0ZXN0IGZpbGUgaWYgbXVsdGktc2VsZWN0aW9uIGlzIGRpc2FibGVkLlxuXHRcdFx0XHR0aGlzLnJlamVjdGVkRmlsZXMucHVzaChmaWxlKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuYWRkZWRGaWxlcy5wdXNoKGZpbGUpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHJlc3VsdDogRmlsZVNlbGVjdFJlc3VsdCA9IHtcblx0XHRcdGFkZGVkRmlsZXM6IHRoaXMuYWRkZWRGaWxlcyxcblx0XHRcdHJlamVjdGVkRmlsZXM6IHRoaXMucmVqZWN0ZWRGaWxlc1xuXHRcdH07XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG59XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIElucHV0LCBWaWV3Q2hpbGQsIENvbnRlbnRDaGlsZHJlbiwgUXVlcnlMaXN0LCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBTZWxmLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVNlcnZpY2UsIEZpbGVTZWxlY3RSZXN1bHQgfSBmcm9tICcuLi9uZ3gtZHJvcHpvbmUuc2VydmljZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuLi9uZ3gtZHJvcHpvbmUtcHJldmlldy9uZ3gtZHJvcHpvbmUtcHJldmlldy5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5neERyb3B6b25lQ2hhbmdlRXZlbnQge1xuICBzb3VyY2U6IE5neERyb3B6b25lQ29tcG9uZW50O1xuICBhZGRlZEZpbGVzOiBGaWxlW107XG4gIHJlamVjdGVkRmlsZXM6IEZpbGVbXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LWRyb3B6b25lLCBbbmd4LWRyb3B6b25lXScsXG4gIHRlbXBsYXRlOiBgPGlucHV0ICNmaWxlSW5wdXQgdHlwZT1cImZpbGVcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgW211bHRpcGxlXT1cIm11bHRpcGxlXCIgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAoY2hhbmdlKT1cIl9vbkZpbGVzU2VsZWN0ZWQoJGV2ZW50KVwiPlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwibmd4LWRyb3B6b25lLWxhYmVsXCIgKm5nSWY9XCIhX2hhc1ByZXZpZXdzXCI+PC9uZy1jb250ZW50PlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwibmd4LWRyb3B6b25lLXByZXZpZXdcIj48L25nLWNvbnRlbnQ+XG5gLFxuICBzdHlsZXM6IFtgOmhvc3QoKXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDoxODBweDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzcxNzM4Njtib3JkZXI6MnB4IGRhc2hlZCAjNzE3Mzg2O2JvcmRlci1yYWRpdXM6NXB4O2ZvbnQtc2l6ZToxNnB4O292ZXJmbG93LXg6YXV0b306aG9zdCgpLm5neC1kei1ob3ZlcmVke2JvcmRlci1zdHlsZTpzb2xpZH06aG9zdCgpLm5neC1kei1kaXNhYmxlZHtvcGFjaXR5Oi41O2N1cnNvcjpuby1kcm9wO3BvaW50ZXItZXZlbnRzOm5vbmV9Omhvc3QoKS5leHBhbmRhYmxle292ZXJmbG93OmhpZGRlbjtoZWlnaHQ6dW5zZXQ7bWluLWhlaWdodDoxODBweDtmbGV4LXdyYXA6d3JhcH06aG9zdCgpIDo6bmctZGVlcCBuZ3gtZHJvcHpvbmUtbGFiZWx7dGV4dC1hbGlnbjpjZW50ZXI7ei1pbmRleDoxMDttYXJnaW46MTBweCBhdXRvfWBdLFxuICBwcm92aWRlcnM6IFtOZ3hEcm9wem9uZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIE5neERyb3B6b25lQ29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIHByaXZhdGUgc2VydmljZTogTmd4RHJvcHpvbmVTZXJ2aWNlXG4gICkgeyB9XG5cbiAgLyoqIEEgbGlzdCBvZiB0aGUgY29udGVudC1wcm9qZWN0ZWQgcHJldmlldyBjaGlsZHJlbi4gKi9cbiAgQENvbnRlbnRDaGlsZHJlbihOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgX3ByZXZpZXdDaGlsZHJlbjogUXVlcnlMaXN0PE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudD47XG5cbiAgZ2V0IF9oYXNQcmV2aWV3cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9wcmV2aWV3Q2hpbGRyZW4ubGVuZ3RoO1xuICB9XG5cbiAgLyoqIEEgdGVtcGxhdGUgcmVmZXJlbmNlIHRvIHRoZSBuYXRpdmUgZmlsZSBpbnB1dCBlbGVtZW50LiAqL1xuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBfZmlsZUlucHV0OiBFbGVtZW50UmVmO1xuXG4gIC8qKiBFbWl0dGVkIHdoZW4gYW55IGZpbGVzIHdlcmUgYWRkZWQgb3IgcmVqZWN0ZWQuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE5neERyb3B6b25lQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgLyoqIFNldCB0aGUgYWNjZXB0ZWQgZmlsZSB0eXBlcy4gRGVmYXVsdHMgdG8gJyonLiAqL1xuICBASW5wdXQoKSBhY2NlcHQgPSAnKic7XG5cbiAgLyoqIERpc2FibGUgYW55IHVzZXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgY29tcG9uZW50LiAqL1xuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5neC1kei1kaXNhYmxlZCcpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuX2lzSG92ZXJlZCkge1xuICAgICAgdGhpcy5faXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqIEFsbG93IHRoZSBzZWxlY3Rpb24gb2YgbXVsdGlwbGUgZmlsZXMuICovXG4gIEBJbnB1dCgpXG4gIGdldCBtdWx0aXBsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlwbGU7XG4gIH1cbiAgc2V0IG11bHRpcGxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbXVsdGlwbGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX211bHRpcGxlID0gdHJ1ZTtcblxuICAvKiogU2V0IHRoZSBtYXhpbXVtIHNpemUgYSBzaW5nbGUgZmlsZSBtYXkgaGF2ZS4gKi9cbiAgQElucHV0KClcbiAgZ2V0IG1heEZpbGVTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heEZpbGVTaXplO1xuICB9XG4gIHNldCBtYXhGaWxlU2l6ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWF4RmlsZVNpemUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfbWF4RmlsZVNpemU6IG51bWJlciA9IHVuZGVmaW5lZDtcblxuICAvKiogQWxsb3cgdGhlIGRyb3B6b25lIGNvbnRhaW5lciB0byBleHBhbmQgdmVydGljYWxseS4gKi9cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5leHBhbmRhYmxlJylcbiAgZ2V0IGV4cGFuZGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2V4cGFuZGFibGU7XG4gIH1cbiAgc2V0IGV4cGFuZGFibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9leHBhbmRhYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9leHBhbmRhYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5uZ3gtZHotaG92ZXJlZCcpXG4gIF9pc0hvdmVyZWQgPSBmYWxzZTtcblxuICAvKiogU2hvdyB0aGUgbmF0aXZlIE9TIGZpbGUgZXhwbG9yZXIgdG8gc2VsZWN0IGZpbGVzLiAqL1xuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHNob3dGaWxlU2VsZWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAodGhpcy5fZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudCkuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnb3ZlcicsIFsnJGV2ZW50J10pXG4gIF9vbkRyYWdPdmVyKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByZXZlbnREZWZhdWx0KGV2ZW50KTtcbiAgICB0aGlzLl9pc0hvdmVyZWQgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJylcbiAgX29uRHJhZ0xlYXZlKCkge1xuICAgIHRoaXMuX2lzSG92ZXJlZCA9IGZhbHNlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJvcCcsIFsnJGV2ZW50J10pXG4gIF9vbkRyb3AoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJldmVudERlZmF1bHQoZXZlbnQpO1xuICAgIHRoaXMuX2lzSG92ZXJlZCA9IGZhbHNlO1xuICAgIHRoaXMuaGFuZGxlRmlsZURyb3AoZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKTtcbiAgfVxuXG4gIF9vbkZpbGVzU2VsZWN0ZWQoZXZlbnQpIHtcbiAgICBjb25zdCBmaWxlczogRmlsZUxpc3QgPSBldmVudC50YXJnZXQuZmlsZXM7XG4gICAgdGhpcy5oYW5kbGVGaWxlRHJvcChmaWxlcyk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUZpbGVEcm9wKGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIGNvbnN0IHJlc3VsdDogRmlsZVNlbGVjdFJlc3VsdCA9XG4gICAgICB0aGlzLnNlcnZpY2UucGFyc2VGaWxlTGlzdChmaWxlcywgdGhpcy5hY2NlcHQsIHRoaXMubWF4RmlsZVNpemUsIHRoaXMubXVsdGlwbGUpO1xuXG4gICAgdGhpcy5jaGFuZ2UubmV4dCh7XG4gICAgICBhZGRlZEZpbGVzOiByZXN1bHQuYWRkZWRGaWxlcyxcbiAgICAgIHJlamVjdGVkRmlsZXM6IHJlc3VsdC5yZWplY3RlZEZpbGVzLFxuICAgICAgc291cmNlOiB0aGlzXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByZXZlbnREZWZhdWx0KGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uL25neC1kcm9wem9uZS1wcmV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtZHJvcHpvbmUtaW1hZ2UtcHJldmlldycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGltZyBbc3JjXT1cImltYWdlU3JjXCIgLz5cblx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJuZ3gtZHJvcHpvbmUtbGFiZWxcIj48L25nLWNvbnRlbnQ+XG4gICAgPG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2UgKm5nSWY9XCJyZW1vdmFibGVcIiAoY2xpY2spPVwiX3JlbW92ZSgkZXZlbnQpXCI+XG4gICAgPC9uZ3gtZHJvcHpvbmUtcmVtb3ZlLWJhZGdlPlxuXHRgLFxuICBzdHlsZXM6IFtgOmhvc3QoKXttaW4td2lkdGg6dW5zZXQhaW1wb3J0YW50O21heC13aWR0aDp1bnNldCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudH06aG9zdCgpOmZvY3VzIGltZyw6aG9zdCgpOmhvdmVyIGltZ3tvcGFjaXR5Oi43fTpob3N0KCk6Zm9jdXMgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZSw6aG9zdCgpOmhvdmVyIG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2V7b3BhY2l0eToxfTpob3N0KCkgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZXtvcGFjaXR5OjB9Omhvc3QoKSBpbWd7bWF4LWhlaWdodDoxMDAlO2JvcmRlci1yYWRpdXM6NXB4O29wYWNpdHk6Ljh9Omhvc3QoKSA6Om5nLWRlZXAgbmd4LWRyb3B6b25lLWxhYmVse3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93LXdyYXA6YnJlYWstd29yZH1gXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IE5neERyb3B6b25lSW1hZ2VQcmV2aWV3Q29tcG9uZW50XG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neERyb3B6b25lSW1hZ2VQcmV2aWV3Q29tcG9uZW50IGV4dGVuZHMgTmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuICApIHtcbiAgICBzdXBlcihzYW5pdGl6ZXIpO1xuICB9XG5cbiAgLyoqIFRoZSBpbWFnZSBkYXRhIHNvdXJjZS4gKi9cbiAgaW1hZ2VTcmM6IHN0cmluZyB8IEFycmF5QnVmZmVyID0gJyc7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZWFkRmlsZSgpXG4gICAgICAudGhlbihpbWcgPT4gdGhpcy5pbWFnZVNyYyA9IGltZylcbiAgICAgIC5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2UnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzdmc+XG4gICAgICA8bGluZSB4MT1cIjBcIiB5MT1cIjBcIiB4Mj1cIjEwXCIgeTI9XCIxMFwiIC8+XG4gICAgICA8bGluZSB4MT1cIjBcIiB5MT1cIjEwXCIgeDI9XCIxMFwiIHkyPVwiMFwiIC8+XG4gICAgPC9zdmc+XG4gIGAsXG4gIHN0eWxlczogW2A6aG9zdCgpe2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6MjJweDt3aWR0aDoyMnB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1cHg7cmlnaHQ6NXB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6I2JiYjtjb2xvcjojMzMzO2N1cnNvcjpwb2ludGVyfTpob3N0KCk6aG92ZXJ7YmFja2dyb3VuZDojYWVhZWFlfTpob3N0KCk+c3Zne2hlaWdodDoxMHB4O3dpZHRoOjEwcHh9Omhvc3QoKT5zdmc+bGluZXtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZTojZmZmfWBdXG59KVxuZXhwb3J0IGNsYXNzIE5neERyb3B6b25lUmVtb3ZlQmFkZ2VDb21wb25lbnQgeyB9XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuLi9uZ3gtZHJvcHpvbmUtcHJldmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1kcm9wem9uZS12aWRlby1wcmV2aWV3JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dmlkZW8gKm5nSWY9XCJzYW5pdGl6ZWRWaWRlb1NyY1wiIGNvbnRyb2xzIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgIDxzb3VyY2UgW3NyY109XCJzYW5pdGl6ZWRWaWRlb1NyY1wiIC8+XG4gICAgPC92aWRlbz5cbiAgICA8bmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZSAqbmdJZj1cInJlbW92YWJsZVwiIChjbGljayk9XCJfcmVtb3ZlKCRldmVudClcIj5cbiAgICA8L25neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2U+XG5cdGAsXG4gIHN0eWxlczogW2A6aG9zdCgpe21pbi13aWR0aDp1bnNldCFpbXBvcnRhbnQ7bWF4LXdpZHRoOnVuc2V0IWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50fTpob3N0KCk6Zm9jdXMgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZSw6aG9zdCgpOmhvdmVyIG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2V7b3BhY2l0eToxfTpob3N0KCkgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZXtvcGFjaXR5OjB9Omhvc3QoKSB2aWRlb3ttYXgtaGVpZ2h0OjEwMCU7Ym9yZGVyLXJhZGl1czo1cHh9YF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBOZ3hEcm9wem9uZVZpZGVvUHJldmlld0NvbXBvbmVudFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hEcm9wem9uZVZpZGVvUHJldmlld0NvbXBvbmVudCBleHRlbmRzIE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuICApIHtcbiAgICBzdXBlcihzYW5pdGl6ZXIpO1xuICB9XG5cbiAgLyoqIFRoZSB2aWRlbyBkYXRhIHNvdXJjZS4gKi9cbiAgc2FuaXRpemVkVmlkZW9TcmM6IFNhZmVVcmw7XG5cbiAgcHJpdmF0ZSB2aWRlb1NyYzogc3RyaW5nO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5maWxlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdObyBmaWxlIHRvIHJlYWQuIFBsZWFzZSBwcm92aWRlIGEgZmlsZSB1c2luZyB0aGUgW2ZpbGVdIElucHV0IHByb3BlcnR5LicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdlIHNhbml0aXplIHRoZSBVUkwgaGVyZSB0byBlbmFibGUgdGhlIHByZXZpZXcuXG4gICAgICogUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGNvdWxkIGNhdXNlIHNlY3VyaXR5IGlzc3VlcyFcbiAgICAgKiovXG4gICAgdGhpcy52aWRlb1NyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwodGhpcy5maWxlKTtcbiAgICB0aGlzLnNhbml0aXplZFZpZGVvU3JjID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCh0aGlzLnZpZGVvU3JjKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIFVSTC5yZXZva2VPYmplY3RVUkwodGhpcy52aWRlb1NyYyk7XG4gIH1cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmd4RHJvcHpvbmVMYWJlbERpcmVjdGl2ZSB9IGZyb20gJy4vbmd4LWRyb3B6b25lLWxhYmVsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL25neC1kcm9wem9uZS1wcmV2aWV3L25neC1kcm9wem9uZS1wcmV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZUNvbXBvbmVudCB9IGZyb20gJy4vbmd4LWRyb3B6b25lL25neC1kcm9wem9uZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4RHJvcHpvbmVJbWFnZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL25neC1kcm9wem9uZS1wcmV2aWV3L25neC1kcm9wem9uZS1pbWFnZS1wcmV2aWV3L25neC1kcm9wem9uZS1pbWFnZS1wcmV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVJlbW92ZUJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtZHJvcHpvbmUtcHJldmlldy9uZ3gtZHJvcHpvbmUtcmVtb3ZlLWJhZGdlL25neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IE5neERyb3B6b25lVmlkZW9QcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtZHJvcHpvbmUtcHJldmlldy9uZ3gtZHJvcHpvbmUtdmlkZW8tcHJldmlldy9uZ3gtZHJvcHpvbmUtdmlkZW8tcHJldmlldy5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuXHRpbXBvcnRzOiBbXG5cdFx0Q29tbW9uTW9kdWxlXG5cdF0sXG5cdGRlY2xhcmF0aW9uczogW1xuXHRcdE5neERyb3B6b25lQ29tcG9uZW50LFxuXHRcdE5neERyb3B6b25lTGFiZWxEaXJlY3RpdmUsXG5cdFx0Tmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50LFxuXHRcdE5neERyb3B6b25lSW1hZ2VQcmV2aWV3Q29tcG9uZW50LFxuXHRcdE5neERyb3B6b25lUmVtb3ZlQmFkZ2VDb21wb25lbnQsXG5cdFx0Tmd4RHJvcHpvbmVWaWRlb1ByZXZpZXdDb21wb25lbnQsXG5cdF0sXG5cdGV4cG9ydHM6IFtcblx0XHROZ3hEcm9wem9uZUNvbXBvbmVudCxcblx0XHROZ3hEcm9wem9uZUxhYmVsRGlyZWN0aXZlLFxuXHRcdE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCxcblx0XHROZ3hEcm9wem9uZUltYWdlUHJldmlld0NvbXBvbmVudCxcblx0XHROZ3hEcm9wem9uZVJlbW92ZUJhZGdlQ29tcG9uZW50LFxuXHRcdE5neERyb3B6b25lVmlkZW9QcmV2aWV3Q29tcG9uZW50LFxuXHRdXG59KVxuZXhwb3J0IGNsYXNzIE5neERyb3B6b25lTW9kdWxlIHsgfVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE1BS2EseUJBQXlCOzs7WUFIckMsU0FBUyxTQUFDO2dCQUNWLFFBQVEsRUFBRSxvQkFBb0I7YUFDOUI7Ozs7Ozs7Ozs7Ozs7QUNDRCxTQUFnQixxQkFBcUIsQ0FBQyxLQUFVO0lBRS9DLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEtBQUssRUFBRSxLQUFLLE9BQU8sQ0FBQztDQUMvQzs7Ozs7OztBQU1ELFNBQWdCLG9CQUFvQixDQUFDLEtBQVU7Ozs7SUFLOUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsb0JBQUMsS0FBSyxHQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO0NBQzFGOzs7Ozs7OztJQ2ZBLFlBQWE7SUFDYixVQUFXOzs7O0FBWVosTUFBYSwyQkFBMkI7Ozs7SUFFdkMsWUFDVyxTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBY3hCLGVBQVUsR0FBRyxLQUFLLENBQUM7Ozs7UUFHVixZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQzs7OztRQW1DN0IsYUFBUSxHQUFHLENBQUMsQ0FBQztLQW5EakM7Ozs7O0lBTUwsSUFDSSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0tBQ3ZCOzs7OztJQUNELElBQUksU0FBUyxDQUFDLEtBQWM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMvQzs7Ozs7SUFPRCxRQUFRLENBQUMsS0FBb0I7UUFDNUIsUUFBUSxLQUFLLENBQUMsT0FBTztZQUNwQixLQUFLLFFBQVEsQ0FBQyxTQUFTLENBQUM7WUFDeEIsS0FBSyxRQUFRLENBQUMsTUFBTTtnQkFDbkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNkLE1BQU07WUFDUDtnQkFDQyxNQUFNO1NBQ1A7S0FDRDs7Ozs7SUFHRCxJQUNJLFNBQVM7O2NBQ04sTUFBTSxHQUFHOzs7Ozs7Ozs7Ozs7R0FZZDtRQUVELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN2RDs7Ozs7O0lBTUQsT0FBTyxDQUFDLEtBQUs7UUFDWixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ2Q7Ozs7O0lBR0QsTUFBTTtRQUNMLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDN0I7S0FDRDs7Ozs7SUFFZSxRQUFROztZQUN2QixPQUFPLElBQUksT0FBTzs7Ozs7WUFBdUIsQ0FBQyxPQUFPLEVBQUUsTUFBTTs7c0JBQ2xELE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRTtnQkFFL0IsTUFBTSxDQUFDLE1BQU07Ozs7Z0JBQUcsQ0FBQztvQkFDaEIsT0FBTyxPQUFPLENBQUMsb0JBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBZ0IsTUFBTSxDQUFDLENBQUM7aUJBQ2hELENBQUEsQ0FBQztnQkFFRixNQUFNLENBQUMsT0FBTzs7OztnQkFBRyxDQUFDO29CQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLDZCQUE2QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7b0JBQzlELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNwQixDQUFBLENBQUM7Z0JBRUYsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7b0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyx5RUFBeUUsQ0FBQyxDQUFDO29CQUN6RixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDcEI7Z0JBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDaEMsRUFBQyxDQUFDO1NBQ0g7S0FBQTs7O1lBbkdELFNBQVMsU0FBQztnQkFDVixRQUFRLEVBQUUsc0JBQXNCO2dCQUNoQyxRQUFRLEVBQUU7Ozs7RUFJVDtnQkFDRCxNQUFNLEVBQUUsQ0FBQyxzWkFBc1osQ0FBQzthQUNoYTs7OztZQWZtQixZQUFZOzs7bUJBdUI5QixLQUFLO3dCQUdMLEtBQUs7c0JBVUwsTUFBTTt1QkFFTixZQUFZLFNBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO3dCQWFoQyxXQUFXLFNBQUMsT0FBTzt1QkFvQm5CLFdBQVcsU0FBQyxVQUFVOzs7Ozs7O0FDekV4Qjs7Ozs7O0FBa0JBLE1BQWEsa0JBQWtCO0lBRC9CO1FBR1MsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixrQkFBYSxHQUFXLEVBQUUsQ0FBQztLQXVEbkM7Ozs7Ozs7O0lBckRBLGFBQWEsQ0FBQyxLQUFlLEVBQUUsTUFBYyxFQUFFLFdBQW1CLEVBQUUsUUFBaUI7UUFFcEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7O2NBRWxCLGVBQWUsR0FBRyxNQUFNLEtBQUssR0FBRzs7Y0FDaEMsc0JBQXNCLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7O2NBQzlDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWhELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOztrQkFDaEMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBRTFCLElBQUksZUFBZSxFQUFFO2dCQUNwQixJQUFJLHNCQUFzQixFQUFFOzs7MEJBRXJCLG1CQUFtQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFFbkQsSUFBSSxtQkFBbUIsS0FBSyxtQkFBbUIsRUFBRTt3QkFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzlCLFNBQVM7cUJBQ1Q7aUJBQ0Q7cUJBQU07OzswQkFFQSxXQUFXLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJO29CQUUvQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7d0JBQ2hELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUM5QixTQUFTO3FCQUNUO2lCQUNEO2FBQ0Q7WUFFRCxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLFNBQVM7YUFDVDtZQUVELElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFOztnQkFFN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLFNBQVM7YUFDVDtZQUVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNCOztjQUVLLE1BQU0sR0FBcUI7WUFDaEMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtTQUNqQztRQUVELE9BQU8sTUFBTSxDQUFDO0tBQ2Q7OztZQTFERCxVQUFVOzs7Ozs7O0FDakJYLE1BcUJhLG9CQUFvQjs7OztJQUUvQixZQUNrQixPQUEyQjtRQUEzQixZQUFPLEdBQVAsT0FBTyxDQUFvQjs7OztRQWUxQixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7Ozs7UUFHOUQsV0FBTSxHQUFHLEdBQUcsQ0FBQztRQWVkLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFVbEIsY0FBUyxHQUFHLElBQUksQ0FBQztRQVVqQixpQkFBWSxHQUFXLFNBQVMsQ0FBQztRQVdqQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUdyQyxlQUFVLEdBQUcsS0FBSyxDQUFDO0tBbEVkOzs7O0lBTUwsSUFBSSxZQUFZO1FBQ2QsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztLQUN2Qzs7Ozs7SUFZRCxJQUVJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7S0FDdkI7Ozs7O0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztTQUN6QjtLQUNGOzs7OztJQUlELElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztLQUN2Qjs7Ozs7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDL0M7Ozs7O0lBSUQsSUFDSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0tBQzFCOzs7OztJQUNELElBQUksV0FBVyxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNqRDs7Ozs7SUFJRCxJQUVJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7S0FDekI7Ozs7O0lBQ0QsSUFBSSxVQUFVLENBQUMsS0FBYztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2pEOzs7OztJQVFELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLG9CQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxJQUFzQixLQUFLLEVBQUUsQ0FBQztTQUM3RDtLQUNGOzs7OztJQUdELFdBQVcsQ0FBQyxLQUFLO1FBQ2YsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7S0FDeEI7Ozs7SUFHRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7S0FDekI7Ozs7O0lBR0QsT0FBTyxDQUFDLEtBQUs7UUFDWCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDL0M7Ozs7O0lBRUQsZ0JBQWdCLENBQUMsS0FBSzs7Y0FDZCxLQUFLLEdBQWEsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLO1FBQzFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDNUI7Ozs7OztJQUVPLGNBQWMsQ0FBQyxLQUFlOztjQUM5QixNQUFNLEdBQ1YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRWpGLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2YsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1lBQzdCLGFBQWEsRUFBRSxNQUFNLENBQUMsYUFBYTtZQUNuQyxNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUMsQ0FBQztLQUNKOzs7Ozs7SUFFTyxjQUFjLENBQUMsS0FBZ0I7UUFDckMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztLQUN6Qjs7O1lBdklGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsOEJBQThCO2dCQUN4QyxRQUFRLEVBQUU7Ozs7Q0FJWDtnQkFDQyxNQUFNLEVBQUUsQ0FBQyxrY0FBa2MsQ0FBQztnQkFDNWMsU0FBUyxFQUFFLENBQUMsa0JBQWtCLENBQUM7YUFDaEM7Ozs7WUFuQlEsa0JBQWtCLHVCQXVCdEIsSUFBSTs7OytCQUlOLGVBQWUsU0FBQywyQkFBMkIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7eUJBUWxFLFNBQVMsU0FBQyxXQUFXO3FCQUdyQixNQUFNO3FCQUdOLEtBQUs7dUJBR0wsS0FBSyxZQUNMLFdBQVcsU0FBQyx1QkFBdUI7dUJBY25DLEtBQUs7MEJBVUwsS0FBSzt5QkFVTCxLQUFLLFlBQ0wsV0FBVyxTQUFDLGtCQUFrQjt5QkFTOUIsV0FBVyxTQUFDLHNCQUFzQjsrQkFJbEMsWUFBWSxTQUFDLE9BQU87MEJBT3BCLFlBQVksU0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUM7MkJBVW5DLFlBQVksU0FBQyxXQUFXO3NCQUt4QixZQUFZLFNBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDOzs7Ozs7O0FDcEhsQyxNQW9CYSxnQ0FBaUMsU0FBUSwyQkFBMkI7Ozs7SUFFL0UsWUFDRSxTQUF1QjtRQUV2QixLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7Ozs7UUFJbkIsYUFBUSxHQUF5QixFQUFFLENBQUM7S0FIbkM7Ozs7SUFLRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsRUFBRTthQUNaLElBQUk7Ozs7UUFBQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEVBQUM7YUFDaEMsS0FBSzs7OztRQUFDLEdBQUcsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUM7S0FDckM7OztZQS9CRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjtnQkFDdEMsUUFBUSxFQUFFOzs7OztFQUtWO2dCQUNBLE1BQU0sRUFBRSxDQUFDLGdaQUFnWixDQUFDO2dCQUMxWixTQUFTLEVBQUU7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLDJCQUEyQjt3QkFDcEMsV0FBVyxFQUFFLGdDQUFnQztxQkFDOUM7aUJBQ0Y7YUFDRjs7OztZQWpCUSxZQUFZOzs7Ozs7O0FDRnJCLE1BWWEsK0JBQStCOzs7WUFWM0MsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLFFBQVEsRUFBRTs7Ozs7R0FLVDtnQkFDRCxNQUFNLEVBQUUsQ0FBQywwU0FBMFMsQ0FBQzthQUNyVDs7Ozs7OztBQ1hELE1BcUJhLGdDQUFpQyxTQUFRLDJCQUEyQjs7OztJQUUvRSxZQUNFLFNBQXVCO1FBRXZCLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNsQjs7OztJQU9ELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMseUVBQXlFLENBQUMsQ0FBQztZQUN6RixPQUFPO1NBQ1I7Ozs7O1FBTUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDL0U7Ozs7SUFFRCxXQUFXO1FBQ1QsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDcEM7OztZQTlDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjtnQkFDdEMsUUFBUSxFQUFFOzs7Ozs7RUFNVjtnQkFDQSxNQUFNLEVBQUUsQ0FBQyx3UUFBd1EsQ0FBQztnQkFDbFIsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSwyQkFBMkI7d0JBQ3BDLFdBQVcsRUFBRSxnQ0FBZ0M7cUJBQzlDO2lCQUNGO2FBQ0Y7Ozs7WUFsQlEsWUFBWTs7Ozs7OztBQ0ZyQixNQThCYSxpQkFBaUI7OztZQXJCN0IsUUFBUSxTQUFDO2dCQUNULE9BQU8sRUFBRTtvQkFDUixZQUFZO2lCQUNaO2dCQUNELFlBQVksRUFBRTtvQkFDYixvQkFBb0I7b0JBQ3BCLHlCQUF5QjtvQkFDekIsMkJBQTJCO29CQUMzQixnQ0FBZ0M7b0JBQ2hDLCtCQUErQjtvQkFDL0IsZ0NBQWdDO2lCQUNoQztnQkFDRCxPQUFPLEVBQUU7b0JBQ1Isb0JBQW9CO29CQUNwQix5QkFBeUI7b0JBQ3pCLDJCQUEyQjtvQkFDM0IsZ0NBQWdDO29CQUNoQywrQkFBK0I7b0JBQy9CLGdDQUFnQztpQkFDaEM7YUFDRDs7Ozs7Ozs7Ozs7Ozs7OyJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRyb3B6b25lLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9uZ3gtZHJvcHpvbmUvbGliL25neC1kcm9wem9uZS1sYWJlbC5kaXJlY3RpdmUudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvaGVscGVycy50cyIsIm5nOi8vbmd4LWRyb3B6b25lL2xpYi9uZ3gtZHJvcHpvbmUtcHJldmlldy9uZ3gtZHJvcHpvbmUtcHJldmlldy5jb21wb25lbnQudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvbmd4LWRyb3B6b25lLnNlcnZpY2UudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvbmd4LWRyb3B6b25lL25neC1kcm9wem9uZS5jb21wb25lbnQudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvbmd4LWRyb3B6b25lLXByZXZpZXcvbmd4LWRyb3B6b25lLWltYWdlLXByZXZpZXcvbmd4LWRyb3B6b25lLWltYWdlLXByZXZpZXcuY29tcG9uZW50LnRzIiwibmc6Ly9uZ3gtZHJvcHpvbmUvbGliL25neC1kcm9wem9uZS1wcmV2aWV3L25neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2Uvbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZS5jb21wb25lbnQudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvbmd4LWRyb3B6b25lLXByZXZpZXcvbmd4LWRyb3B6b25lLXZpZGVvLXByZXZpZXcvbmd4LWRyb3B6b25lLXZpZGVvLXByZXZpZXcuY29tcG9uZW50LnRzIiwibmc6Ly9uZ3gtZHJvcHpvbmUvbGliL25neC1kcm9wem9uZS5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ25neC1kcm9wem9uZS1sYWJlbCdcbn0pXG5leHBvcnQgY2xhc3MgTmd4RHJvcHpvbmVMYWJlbERpcmVjdGl2ZSB7IH1cbiIsIlxuLyoqXG4gKiBDb2VyY2VzIGEgZGF0YS1ib3VuZCB2YWx1ZSAodHlwaWNhbGx5IGEgc3RyaW5nKSB0byBhIGJvb2xlYW4uXG4gKiBUYWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYXN0ZXIvc3JjL2Nkay9jb2VyY2lvbi9ib29sZWFuLXByb3BlcnR5LnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWU6IGFueSk6IGJvb2xlYW5cbntcblx0cmV0dXJuIHZhbHVlICE9IG51bGwgJiYgYCR7dmFsdWV9YCAhPT0gJ2ZhbHNlJztcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBwcm92aWRlZCB2YWx1ZSBpcyBjb25zaWRlcmVkIGEgbnVtYmVyLlxuICogVGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2Jsb2IvbWFzdGVyL3NyYy9jZGsvY29lcmNpb24vbnVtYmVyLXByb3BlcnR5LnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZTogYW55KTogbnVtYmVyXG57XG5cdC8vIHBhcnNlRmxvYXQodmFsdWUpIGhhbmRsZXMgbW9zdCBvZiB0aGUgY2FzZXMgd2UncmUgaW50ZXJlc3RlZCBpbiAoaXQgdHJlYXRzIG51bGwsIGVtcHR5IHN0cmluZyxcblx0Ly8gYW5kIG90aGVyIG5vbi1udW1iZXIgdmFsdWVzIGFzIE5hTiwgd2hlcmUgTnVtYmVyIGp1c3QgdXNlcyAwKSBidXQgaXQgY29uc2lkZXJzIHRoZSBzdHJpbmdcblx0Ly8gJzEyM2hlbGxvJyB0byBiZSBhIHZhbGlkIG51bWJlci4gVGhlcmVmb3JlIHdlIGFsc28gY2hlY2sgaWYgTnVtYmVyKHZhbHVlKSBpcyBOYU4uXG5cdHJldHVybiAoIWlzTmFOKHBhcnNlRmxvYXQodmFsdWUgYXMgYW55KSkgJiYgIWlzTmFOKE51bWJlcih2YWx1ZSkpKSA/IE51bWJlcih2YWx1ZSkgOiBudWxsO1xufVxuIiwiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgU2FmZVN0eWxlLCBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuZW51bSBLRVlfQ09ERSB7XG5cdEJBQ0tTUEFDRSA9IDgsXG5cdERFTEVURSA9IDQ2XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25neC1kcm9wem9uZS1wcmV2aWV3Jyxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJuZ3gtZHJvcHpvbmUtbGFiZWxcIj48L25nLWNvbnRlbnQ+XG5cdFx0PG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2UgKm5nSWY9XCJyZW1vdmFibGVcIiAoY2xpY2spPVwiX3JlbW92ZSgkZXZlbnQpXCI+XG5cdFx0PC9uZ3gtZHJvcHpvbmUtcmVtb3ZlLWJhZGdlPlxuXHRgLFxuXHRzdHlsZXM6IFtgOmhvc3QoKXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byB0b3AsI2VkZWRlZCwjZWZlZmVmLCNmMWYxZjEsI2Y0ZjRmNCwjZjZmNmY2KX06aG9zdCgpOmZvY3VzLDpob3N0KCk6aG92ZXJ7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gdG9wLCNlM2UzZTMsI2ViZWFlYSwjZThlN2U3LCNlYmVhZWEsI2Y0ZjRmNCk7b3V0bGluZTowfTpob3N0KCk6Zm9jdXMgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZSw6aG9zdCgpOmhvdmVyIG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2V7b3BhY2l0eToxfTpob3N0KCkgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZXtvcGFjaXR5OjB9Omhvc3QoKSA6Om5nLWRlZXAgbmd4LWRyb3B6b25lLWxhYmVse292ZXJmbG93LXdyYXA6YnJlYWstd29yZH1gXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQge1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByb3RlY3RlZCBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuXHQpIHsgfVxuXG5cdC8qKiBUaGUgZmlsZSB0byBwcmV2aWV3LiAqL1xuXHRASW5wdXQoKSBmaWxlOiBGaWxlO1xuXG5cdC8qKiBBbGxvdyB0aGUgdXNlciB0byByZW1vdmUgZmlsZXMuICovXG5cdEBJbnB1dCgpXG5cdGdldCByZW1vdmFibGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuX3JlbW92YWJsZTtcblx0fVxuXHRzZXQgcmVtb3ZhYmxlKHZhbHVlOiBib29sZWFuKSB7XG5cdFx0dGhpcy5fcmVtb3ZhYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcblx0fVxuXHRwcm90ZWN0ZWQgX3JlbW92YWJsZSA9IGZhbHNlO1xuXG5cdC8qKiBFbWl0dGVkIHdoZW4gdGhlIGVsZW1lbnQgc2hvdWxkIGJlIHJlbW92ZWQuICovXG5cdEBPdXRwdXQoKSByZWFkb25seSByZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlPigpO1xuXG5cdEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcblx0a2V5RXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcblx0XHRzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcblx0XHRcdGNhc2UgS0VZX0NPREUuQkFDS1NQQUNFOlxuXHRcdFx0Y2FzZSBLRVlfQ09ERS5ERUxFVEU6XG5cdFx0XHRcdHRoaXMucmVtb3ZlKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0LyoqIFdlIHVzZSB0aGUgSG9zdEJpbmRpbmcgdG8gcGFzcyB0aGVzZSBjb21tb24gc3R5bGVzIHRvIGNoaWxkIGNvbXBvbmVudHMuICovXG5cdEBIb3N0QmluZGluZygnc3R5bGUnKVxuXHRnZXQgaG9zdFN0eWxlKCk6IFNhZmVTdHlsZSB7XG5cdFx0Y29uc3Qgc3R5bGVzID0gYFxuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGhlaWdodDogMTQwcHg7XG5cdFx0XHRtaW4taGVpZ2h0OiAxNDBweDtcblx0XHRcdG1pbi13aWR0aDogMTgwcHg7XG5cdFx0XHRtYXgtd2lkdGg6IDE4MHB4O1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0cGFkZGluZzogMCAyMHB4O1xuXHRcdFx0bWFyZ2luOiAxMHB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogNXB4O1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGA7XG5cblx0XHRyZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHN0eWxlcyk7XG5cdH1cblxuXHQvKiogTWFrZSB0aGUgcHJldmlldyBpdGVtIGZvY3VzYWJsZSB1c2luZyB0aGUgdGFiIGtleS4gKi9cblx0QEhvc3RCaW5kaW5nKCd0YWJpbmRleCcpIHRhYkluZGV4ID0gMDtcblxuXHQvKiogUmVtb3ZlIG1ldGhvZCB0byBiZSB1c2VkIGZyb20gdGhlIHRlbXBsYXRlLiAqL1xuXHRfcmVtb3ZlKGV2ZW50KSB7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0dGhpcy5yZW1vdmUoKTtcblx0fVxuXG5cdC8qKiBSZW1vdmUgdGhlIHByZXZpZXcgaXRlbSAodXNlIGZyb20gY29tcG9uZW50IGNvZGUpLiAqL1xuXHRyZW1vdmUoKSB7XG5cdFx0aWYgKHRoaXMuX3JlbW92YWJsZSkge1xuXHRcdFx0dGhpcy5yZW1vdmVkLm5leHQodGhpcy5maWxlKTtcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgYXN5bmMgcmVhZEZpbGUoKTogUHJvbWlzZTxzdHJpbmcgfCBBcnJheUJ1ZmZlcj4ge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmcgfCBBcnJheUJ1ZmZlcj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0Y29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuXHRcdFx0cmVhZGVyLm9ubG9hZCA9IGUgPT4ge1xuXHRcdFx0XHRyZXR1cm4gcmVzb2x2ZSgoZS50YXJnZXQgYXMgRmlsZVJlYWRlcikucmVzdWx0KTtcblx0XHRcdH07XG5cblx0XHRcdHJlYWRlci5vbmVycm9yID0gZSA9PiB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoYEZpbGVSZWFkZXIgZmFpbGVkIG9uIGZpbGUgJHt0aGlzLmZpbGUubmFtZX0uYCk7XG5cdFx0XHRcdHJldHVybiByZWplY3QobnVsbCk7XG5cdFx0XHR9O1xuXG5cdFx0XHRpZiAoIXRoaXMuZmlsZSkge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKCdObyBmaWxlIHRvIHJlYWQuIFBsZWFzZSBwcm92aWRlIGEgZmlsZSB1c2luZyB0aGUgW2ZpbGVdIElucHV0IHByb3BlcnR5LicpO1xuXHRcdFx0XHRyZXR1cm4gcmVqZWN0KG51bGwpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZWFkZXIucmVhZEFzRGF0YVVSTCh0aGlzLmZpbGUpO1xuXHRcdH0pO1xuXHR9XG59XG4iLCJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVNlbGVjdFJlc3VsdCB7XG5cblx0LyoqIFRoZSBhZGRlZCBmaWxlcywgZW1pdHRlZCBpbiB0aGUgZmlsZXNBZGRlZCBldmVudC4gKi9cblx0YWRkZWRGaWxlczogRmlsZVtdO1xuXG5cdC8qKiBUaGUgcmVqZWN0ZWQgZmlsZXMsIGVtaXR0ZWQgaW4gdGhlIGZpbGVzUmVqZWN0ZWQgZXZlbnQuICovXG5cdHJlamVjdGVkRmlsZXM6IEZpbGVbXTtcbn1cblxuLyoqXG4gKiBUaGlzIHNlcnZpY2UgY29udGFpbnMgdGhlIGZpbHRlcmluZyBsb2dpYyB0byBiZSBhcHBsaWVkIHRvXG4gKiBhbnkgZHJvcHBlZCBvciBzZWxlY3RlZCBmaWxlLiBJZiBhIGZpbGUgbWF0Y2hlcyBhbGwgY3JpdGVyaWFcbiAqIGxpa2UgbWF4aW11bSBzaXplIG9yIGFjY2VwdCB0eXBlLCBpdCB3aWxsIGJlIGVtaXR0ZWQgaW4gdGhlXG4gKiBmaWxlc0FkZGVkIGV2ZW50LCBvdGhlcndpc2UgaW4gdGhlIGZpbGVzUmVqZWN0ZWQgZXZlbnQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ3hEcm9wem9uZVNlcnZpY2Uge1xuXG5cdHByaXZhdGUgYWRkZWRGaWxlczogRmlsZVtdID0gW107XG5cdHByaXZhdGUgcmVqZWN0ZWRGaWxlczogRmlsZVtdID0gW107XG5cblx0cGFyc2VGaWxlTGlzdChmaWxlczogRmlsZUxpc3QsIGFjY2VwdDogc3RyaW5nLCBtYXhGaWxlU2l6ZTogbnVtYmVyLCBtdWx0aXBsZTogYm9vbGVhbik6IEZpbGVTZWxlY3RSZXN1bHQge1xuXG5cdFx0dGhpcy5hZGRlZEZpbGVzID0gW107XG5cdFx0dGhpcy5yZWplY3RlZEZpbGVzID0gW107XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBmaWxlID0gZmlsZXMuaXRlbShpKTtcblxuXHRcdFx0aWYgKCFOZ3hEcm9wem9uZVNlcnZpY2UuaXNBY2NlcHRlZChmaWxlLCBhY2NlcHQpKSB7XG5cdFx0XHQgIHRoaXMucmVqZWN0ZWRGaWxlcy5wdXNoKGZpbGUpO1xuXHRcdFx0ICBjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKG1heEZpbGVTaXplICYmIGZpbGUuc2l6ZSA+IG1heEZpbGVTaXplKSB7XG5cdFx0XHRcdHRoaXMucmVqZWN0ZWRGaWxlcy5wdXNoKGZpbGUpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCFtdWx0aXBsZSAmJiB0aGlzLmFkZGVkRmlsZXMubGVuZ3RoID49IDEpIHtcblx0XHRcdFx0Ly8gQWx3YXlzIGVtaXQgdGhlIGxhdGVzdCBmaWxlIGlmIG11bHRpLXNlbGVjdGlvbiBpcyBkaXNhYmxlZC5cblx0XHRcdFx0dGhpcy5yZWplY3RlZEZpbGVzLnB1c2goZmlsZSk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLmFkZGVkRmlsZXMucHVzaChmaWxlKTtcblx0XHR9XG5cblx0XHRjb25zdCByZXN1bHQ6IEZpbGVTZWxlY3RSZXN1bHQgPSB7XG5cdFx0XHRhZGRlZEZpbGVzOiB0aGlzLmFkZGVkRmlsZXMsXG5cdFx0XHRyZWplY3RlZEZpbGVzOiB0aGlzLnJlamVjdGVkRmlsZXNcblx0XHR9O1xuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG4gIHByaXZhdGUgc3RhdGljIGlzQWNjZXB0ZWQoZmlsZTogRmlsZSwgYWNjZXB0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoYWNjZXB0ID09PSAnKicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGFjY2VwdEZpbGV0eXBlcyA9IGFjY2VwdC5zcGxpdCgnLCcpLm1hcChpdCA9PiBpdC50b0xvd2VyQ2FzZSgpLnRyaW0oKSk7XG4gICAgY29uc3QgZmlsZXR5cGUgPSBmaWxlLnR5cGUudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBmaWxlbmFtZSA9IGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IG1hdGNoZWRGaWxlVHlwZSA9IGFjY2VwdEZpbGV0eXBlcy5maW5kKGFjY2VwdEZpbGV0eXBlID0+IHtcbiAgICAgIC8vIGNoZWNrIGZvciB3aWxkY2FyZCBtaW1ldHlwZSAoZS5nLiBpbWFnZS8qKVxuICAgICAgaWYgKGFjY2VwdEZpbGV0eXBlLmVuZHNXaXRoKCcvKicpKSB7XG4gICAgICAgIHJldHVybiBmaWxldHlwZS5zcGxpdCgnLycpWzBdID09PSBhY2NlcHRGaWxldHlwZS5zcGxpdCgnLycpWzBdO1xuICAgICAgfVxuICAgICAgLy8gY2hlY2sgZm9yIGZpbGUgZXh0ZW5zaW9uIChlLmcuIC5jc3YpXG4gICAgICBpZiAoYWNjZXB0RmlsZXR5cGUuc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgcmV0dXJuIGZpbGVuYW1lLmVuZHNXaXRoKGFjY2VwdEZpbGV0eXBlKTtcbiAgICAgIH1cbiAgICAgIC8vIGNoZWNrIGZvciBleGFjdCBtaW1ldHlwZSBtYXRjaCAoZS5nLiBpbWFnZS9qcGVnKVxuICAgICAgcmV0dXJuIGFjY2VwdEZpbGV0eXBlID09IGZpbGV0eXBlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1hdGNoZWRGaWxlVHlwZSAhPT0gdW5kZWZpbmVkO1xuICB9XG59XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIElucHV0LCBWaWV3Q2hpbGQsIENvbnRlbnRDaGlsZHJlbiwgUXVlcnlMaXN0LCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBTZWxmLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVNlcnZpY2UsIEZpbGVTZWxlY3RSZXN1bHQgfSBmcm9tICcuLi9uZ3gtZHJvcHpvbmUuc2VydmljZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuLi9uZ3gtZHJvcHpvbmUtcHJldmlldy9uZ3gtZHJvcHpvbmUtcHJldmlldy5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5neERyb3B6b25lQ2hhbmdlRXZlbnQge1xuICBzb3VyY2U6IE5neERyb3B6b25lQ29tcG9uZW50O1xuICBhZGRlZEZpbGVzOiBGaWxlW107XG4gIHJlamVjdGVkRmlsZXM6IEZpbGVbXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LWRyb3B6b25lLCBbbmd4LWRyb3B6b25lXScsXG4gIHRlbXBsYXRlOiBgPGlucHV0ICNmaWxlSW5wdXQgdHlwZT1cImZpbGVcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgW211bHRpcGxlXT1cIm11bHRpcGxlXCIgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAoY2hhbmdlKT1cIl9vbkZpbGVzU2VsZWN0ZWQoJGV2ZW50KVwiPlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwibmd4LWRyb3B6b25lLWxhYmVsXCIgKm5nSWY9XCIhX2hhc1ByZXZpZXdzXCI+PC9uZy1jb250ZW50PlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwibmd4LWRyb3B6b25lLXByZXZpZXdcIj48L25nLWNvbnRlbnQ+XG5gLFxuICBzdHlsZXM6IFtgOmhvc3QoKXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDoxODBweDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzcxNzM4Njtib3JkZXI6MnB4IGRhc2hlZCAjNzE3Mzg2O2JvcmRlci1yYWRpdXM6NXB4O2ZvbnQtc2l6ZToxNnB4O292ZXJmbG93LXg6YXV0b306aG9zdCgpLm5neC1kei1ob3ZlcmVke2JvcmRlci1zdHlsZTpzb2xpZH06aG9zdCgpLm5neC1kei1kaXNhYmxlZHtvcGFjaXR5Oi41O2N1cnNvcjpuby1kcm9wO3BvaW50ZXItZXZlbnRzOm5vbmV9Omhvc3QoKS5leHBhbmRhYmxle292ZXJmbG93OmhpZGRlbjtoZWlnaHQ6dW5zZXQ7bWluLWhlaWdodDoxODBweDtmbGV4LXdyYXA6d3JhcH06aG9zdCgpIDo6bmctZGVlcCBuZ3gtZHJvcHpvbmUtbGFiZWx7dGV4dC1hbGlnbjpjZW50ZXI7ei1pbmRleDoxMDttYXJnaW46MTBweCBhdXRvfWBdLFxuICBwcm92aWRlcnM6IFtOZ3hEcm9wem9uZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIE5neERyb3B6b25lQ29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIHByaXZhdGUgc2VydmljZTogTmd4RHJvcHpvbmVTZXJ2aWNlXG4gICkgeyB9XG5cbiAgLyoqIEEgbGlzdCBvZiB0aGUgY29udGVudC1wcm9qZWN0ZWQgcHJldmlldyBjaGlsZHJlbi4gKi9cbiAgQENvbnRlbnRDaGlsZHJlbihOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgX3ByZXZpZXdDaGlsZHJlbjogUXVlcnlMaXN0PE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudD47XG5cbiAgZ2V0IF9oYXNQcmV2aWV3cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9wcmV2aWV3Q2hpbGRyZW4ubGVuZ3RoO1xuICB9XG5cbiAgLyoqIEEgdGVtcGxhdGUgcmVmZXJlbmNlIHRvIHRoZSBuYXRpdmUgZmlsZSBpbnB1dCBlbGVtZW50LiAqL1xuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBfZmlsZUlucHV0OiBFbGVtZW50UmVmO1xuXG4gIC8qKiBFbWl0dGVkIHdoZW4gYW55IGZpbGVzIHdlcmUgYWRkZWQgb3IgcmVqZWN0ZWQuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE5neERyb3B6b25lQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgLyoqIFNldCB0aGUgYWNjZXB0ZWQgZmlsZSB0eXBlcy4gRGVmYXVsdHMgdG8gJyonLiAqL1xuICBASW5wdXQoKSBhY2NlcHQgPSAnKic7XG5cbiAgLyoqIERpc2FibGUgYW55IHVzZXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgY29tcG9uZW50LiAqL1xuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5neC1kei1kaXNhYmxlZCcpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuX2lzSG92ZXJlZCkge1xuICAgICAgdGhpcy5faXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqIEFsbG93IHRoZSBzZWxlY3Rpb24gb2YgbXVsdGlwbGUgZmlsZXMuICovXG4gIEBJbnB1dCgpXG4gIGdldCBtdWx0aXBsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlwbGU7XG4gIH1cbiAgc2V0IG11bHRpcGxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbXVsdGlwbGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX211bHRpcGxlID0gdHJ1ZTtcblxuICAvKiogU2V0IHRoZSBtYXhpbXVtIHNpemUgYSBzaW5nbGUgZmlsZSBtYXkgaGF2ZS4gKi9cbiAgQElucHV0KClcbiAgZ2V0IG1heEZpbGVTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heEZpbGVTaXplO1xuICB9XG4gIHNldCBtYXhGaWxlU2l6ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWF4RmlsZVNpemUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfbWF4RmlsZVNpemU6IG51bWJlciA9IHVuZGVmaW5lZDtcblxuICAvKiogQWxsb3cgdGhlIGRyb3B6b25lIGNvbnRhaW5lciB0byBleHBhbmQgdmVydGljYWxseS4gKi9cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5leHBhbmRhYmxlJylcbiAgZ2V0IGV4cGFuZGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2V4cGFuZGFibGU7XG4gIH1cbiAgc2V0IGV4cGFuZGFibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9leHBhbmRhYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9leHBhbmRhYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5uZ3gtZHotaG92ZXJlZCcpXG4gIF9pc0hvdmVyZWQgPSBmYWxzZTtcblxuICAvKiogU2hvdyB0aGUgbmF0aXZlIE9TIGZpbGUgZXhwbG9yZXIgdG8gc2VsZWN0IGZpbGVzLiAqL1xuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHNob3dGaWxlU2VsZWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAodGhpcy5fZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudCkuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnb3ZlcicsIFsnJGV2ZW50J10pXG4gIF9vbkRyYWdPdmVyKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByZXZlbnREZWZhdWx0KGV2ZW50KTtcbiAgICB0aGlzLl9pc0hvdmVyZWQgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJylcbiAgX29uRHJhZ0xlYXZlKCkge1xuICAgIHRoaXMuX2lzSG92ZXJlZCA9IGZhbHNlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJvcCcsIFsnJGV2ZW50J10pXG4gIF9vbkRyb3AoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJldmVudERlZmF1bHQoZXZlbnQpO1xuICAgIHRoaXMuX2lzSG92ZXJlZCA9IGZhbHNlO1xuICAgIHRoaXMuaGFuZGxlRmlsZURyb3AoZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKTtcbiAgfVxuXG4gIF9vbkZpbGVzU2VsZWN0ZWQoZXZlbnQpIHtcbiAgICBjb25zdCBmaWxlczogRmlsZUxpc3QgPSBldmVudC50YXJnZXQuZmlsZXM7XG4gICAgdGhpcy5oYW5kbGVGaWxlRHJvcChmaWxlcyk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUZpbGVEcm9wKGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIGNvbnN0IHJlc3VsdDogRmlsZVNlbGVjdFJlc3VsdCA9XG4gICAgICB0aGlzLnNlcnZpY2UucGFyc2VGaWxlTGlzdChmaWxlcywgdGhpcy5hY2NlcHQsIHRoaXMubWF4RmlsZVNpemUsIHRoaXMubXVsdGlwbGUpO1xuXG4gICAgdGhpcy5jaGFuZ2UubmV4dCh7XG4gICAgICBhZGRlZEZpbGVzOiByZXN1bHQuYWRkZWRGaWxlcyxcbiAgICAgIHJlamVjdGVkRmlsZXM6IHJlc3VsdC5yZWplY3RlZEZpbGVzLFxuICAgICAgc291cmNlOiB0aGlzXG4gICAgfSk7XG5cbiAgICAvLyBSZXNldCB0aGUgbmF0aXZlIGZpbGUgaW5wdXQgZWxlbWVudCB0byBhbGxvdyBzZWxlY3RpbmcgdGhlIHNhbWUgZmlsZSBhZ2FpblxuICAgIHRoaXMuX2ZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gIH1cblxuICBwcml2YXRlIHByZXZlbnREZWZhdWx0KGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uL25neC1kcm9wem9uZS1wcmV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtZHJvcHpvbmUtaW1hZ2UtcHJldmlldycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGltZyBbc3JjXT1cImltYWdlU3JjXCIgLz5cblx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJuZ3gtZHJvcHpvbmUtbGFiZWxcIj48L25nLWNvbnRlbnQ+XG4gICAgPG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2UgKm5nSWY9XCJyZW1vdmFibGVcIiAoY2xpY2spPVwiX3JlbW92ZSgkZXZlbnQpXCI+XG4gICAgPC9uZ3gtZHJvcHpvbmUtcmVtb3ZlLWJhZGdlPlxuXHRgLFxuICBzdHlsZXM6IFtgOmhvc3QoKXttaW4td2lkdGg6dW5zZXQhaW1wb3J0YW50O21heC13aWR0aDp1bnNldCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudH06aG9zdCgpOmZvY3VzIGltZyw6aG9zdCgpOmhvdmVyIGltZ3tvcGFjaXR5Oi43fTpob3N0KCk6Zm9jdXMgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZSw6aG9zdCgpOmhvdmVyIG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2V7b3BhY2l0eToxfTpob3N0KCkgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZXtvcGFjaXR5OjB9Omhvc3QoKSBpbWd7bWF4LWhlaWdodDoxMDAlO2JvcmRlci1yYWRpdXM6NXB4O29wYWNpdHk6Ljh9Omhvc3QoKSA6Om5nLWRlZXAgbmd4LWRyb3B6b25lLWxhYmVse3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93LXdyYXA6YnJlYWstd29yZH1gXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IE5neERyb3B6b25lSW1hZ2VQcmV2aWV3Q29tcG9uZW50XG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neERyb3B6b25lSW1hZ2VQcmV2aWV3Q29tcG9uZW50IGV4dGVuZHMgTmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuICApIHtcbiAgICBzdXBlcihzYW5pdGl6ZXIpO1xuICB9XG5cbiAgLyoqIFRoZSBpbWFnZSBkYXRhIHNvdXJjZS4gKi9cbiAgaW1hZ2VTcmM6IHN0cmluZyB8IEFycmF5QnVmZmVyID0gJyc7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZWFkRmlsZSgpXG4gICAgICAudGhlbihpbWcgPT4gdGhpcy5pbWFnZVNyYyA9IGltZylcbiAgICAgIC5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2UnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzdmc+XG4gICAgICA8bGluZSB4MT1cIjBcIiB5MT1cIjBcIiB4Mj1cIjEwXCIgeTI9XCIxMFwiIC8+XG4gICAgICA8bGluZSB4MT1cIjBcIiB5MT1cIjEwXCIgeDI9XCIxMFwiIHkyPVwiMFwiIC8+XG4gICAgPC9zdmc+XG4gIGAsXG4gIHN0eWxlczogW2A6aG9zdCgpe2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6MjJweDt3aWR0aDoyMnB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1cHg7cmlnaHQ6NXB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6I2JiYjtjb2xvcjojMzMzO2N1cnNvcjpwb2ludGVyfTpob3N0KCk6aG92ZXJ7YmFja2dyb3VuZDojYWVhZWFlfTpob3N0KCk+c3Zne2hlaWdodDoxMHB4O3dpZHRoOjEwcHh9Omhvc3QoKT5zdmc+bGluZXtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZTojZmZmfWBdXG59KVxuZXhwb3J0IGNsYXNzIE5neERyb3B6b25lUmVtb3ZlQmFkZ2VDb21wb25lbnQgeyB9XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuLi9uZ3gtZHJvcHpvbmUtcHJldmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1kcm9wem9uZS12aWRlby1wcmV2aWV3JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dmlkZW8gKm5nSWY9XCJzYW5pdGl6ZWRWaWRlb1NyY1wiIGNvbnRyb2xzIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgIDxzb3VyY2UgW3NyY109XCJzYW5pdGl6ZWRWaWRlb1NyY1wiIC8+XG4gICAgPC92aWRlbz5cbiAgICA8bmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZSAqbmdJZj1cInJlbW92YWJsZVwiIChjbGljayk9XCJfcmVtb3ZlKCRldmVudClcIj5cbiAgICA8L25neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2U+XG5cdGAsXG4gIHN0eWxlczogW2A6aG9zdCgpe21pbi13aWR0aDp1bnNldCFpbXBvcnRhbnQ7bWF4LXdpZHRoOnVuc2V0IWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50fTpob3N0KCk6Zm9jdXMgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZSw6aG9zdCgpOmhvdmVyIG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2V7b3BhY2l0eToxfTpob3N0KCkgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZXtvcGFjaXR5OjB9Omhvc3QoKSB2aWRlb3ttYXgtaGVpZ2h0OjEwMCU7Ym9yZGVyLXJhZGl1czo1cHh9YF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBOZ3hEcm9wem9uZVZpZGVvUHJldmlld0NvbXBvbmVudFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hEcm9wem9uZVZpZGVvUHJldmlld0NvbXBvbmVudCBleHRlbmRzIE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuICApIHtcbiAgICBzdXBlcihzYW5pdGl6ZXIpO1xuICB9XG5cbiAgLyoqIFRoZSB2aWRlbyBkYXRhIHNvdXJjZS4gKi9cbiAgc2FuaXRpemVkVmlkZW9TcmM6IFNhZmVVcmw7XG5cbiAgcHJpdmF0ZSB2aWRlb1NyYzogc3RyaW5nO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5maWxlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdObyBmaWxlIHRvIHJlYWQuIFBsZWFzZSBwcm92aWRlIGEgZmlsZSB1c2luZyB0aGUgW2ZpbGVdIElucHV0IHByb3BlcnR5LicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdlIHNhbml0aXplIHRoZSBVUkwgaGVyZSB0byBlbmFibGUgdGhlIHByZXZpZXcuXG4gICAgICogUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGNvdWxkIGNhdXNlIHNlY3VyaXR5IGlzc3VlcyFcbiAgICAgKiovXG4gICAgdGhpcy52aWRlb1NyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwodGhpcy5maWxlKTtcbiAgICB0aGlzLnNhbml0aXplZFZpZGVvU3JjID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCh0aGlzLnZpZGVvU3JjKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIFVSTC5yZXZva2VPYmplY3RVUkwodGhpcy52aWRlb1NyYyk7XG4gIH1cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmd4RHJvcHpvbmVMYWJlbERpcmVjdGl2ZSB9IGZyb20gJy4vbmd4LWRyb3B6b25lLWxhYmVsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL25neC1kcm9wem9uZS1wcmV2aWV3L25neC1kcm9wem9uZS1wcmV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZUNvbXBvbmVudCB9IGZyb20gJy4vbmd4LWRyb3B6b25lL25neC1kcm9wem9uZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4RHJvcHpvbmVJbWFnZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL25neC1kcm9wem9uZS1wcmV2aWV3L25neC1kcm9wem9uZS1pbWFnZS1wcmV2aWV3L25neC1kcm9wem9uZS1pbWFnZS1wcmV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVJlbW92ZUJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtZHJvcHpvbmUtcHJldmlldy9uZ3gtZHJvcHpvbmUtcmVtb3ZlLWJhZGdlL25neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IE5neERyb3B6b25lVmlkZW9QcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtZHJvcHpvbmUtcHJldmlldy9uZ3gtZHJvcHpvbmUtdmlkZW8tcHJldmlldy9uZ3gtZHJvcHpvbmUtdmlkZW8tcHJldmlldy5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuXHRpbXBvcnRzOiBbXG5cdFx0Q29tbW9uTW9kdWxlXG5cdF0sXG5cdGRlY2xhcmF0aW9uczogW1xuXHRcdE5neERyb3B6b25lQ29tcG9uZW50LFxuXHRcdE5neERyb3B6b25lTGFiZWxEaXJlY3RpdmUsXG5cdFx0Tmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50LFxuXHRcdE5neERyb3B6b25lSW1hZ2VQcmV2aWV3Q29tcG9uZW50LFxuXHRcdE5neERyb3B6b25lUmVtb3ZlQmFkZ2VDb21wb25lbnQsXG5cdFx0Tmd4RHJvcHpvbmVWaWRlb1ByZXZpZXdDb21wb25lbnQsXG5cdF0sXG5cdGV4cG9ydHM6IFtcblx0XHROZ3hEcm9wem9uZUNvbXBvbmVudCxcblx0XHROZ3hEcm9wem9uZUxhYmVsRGlyZWN0aXZlLFxuXHRcdE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCxcblx0XHROZ3hEcm9wem9uZUltYWdlUHJldmlld0NvbXBvbmVudCxcblx0XHROZ3hEcm9wem9uZVJlbW92ZUJhZGdlQ29tcG9uZW50LFxuXHRcdE5neERyb3B6b25lVmlkZW9QcmV2aWV3Q29tcG9uZW50LFxuXHRdXG59KVxuZXhwb3J0IGNsYXNzIE5neERyb3B6b25lTW9kdWxlIHsgfVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE1BS2EseUJBQXlCOzs7WUFIckMsU0FBUyxTQUFDO2dCQUNWLFFBQVEsRUFBRSxvQkFBb0I7YUFDOUI7Ozs7Ozs7Ozs7Ozs7QUNDRCxTQUFnQixxQkFBcUIsQ0FBQyxLQUFVO0lBRS9DLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEtBQUssRUFBRSxLQUFLLE9BQU8sQ0FBQztDQUMvQzs7Ozs7OztBQU1ELFNBQWdCLG9CQUFvQixDQUFDLEtBQVU7Ozs7SUFLOUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsb0JBQUMsS0FBSyxHQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO0NBQzFGOzs7Ozs7OztJQ2ZBLFlBQWE7SUFDYixVQUFXOzs7O0FBWVosTUFBYSwyQkFBMkI7Ozs7SUFFdkMsWUFDVyxTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBY3hCLGVBQVUsR0FBRyxLQUFLLENBQUM7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

@@ -249,30 +249,8 @@ import { Directive, Component, Input, Output, EventEmitter, HostBinding, HostListener, Injectable, ViewChild, ContentChildren, Self, NgModule } from '@angular/core';

this.rejectedFiles = [];
/** @type {?} */
var hasAcceptFilter = accept !== '*';
/** @type {?} */
var hasGenericAcceptFilter = accept.endsWith('/*');
/** @type {?} */
var acceptedGenericType = accept.split('/')[0];
for (var i = 0; i < files.length; i++) {
/** @type {?} */
var file = files.item(i);
if (hasAcceptFilter) {
if (hasGenericAcceptFilter) {
// If a generic file type is provided, we check for a match.
/** @type {?} */
var providedGenericType = file.type.split('/')[0];
if (acceptedGenericType !== providedGenericType) {
this.rejectedFiles.push(file);
continue;
}
}
else {
// Else an exact match is required.
/** @type {?} */
var hasFileType = !!file.type;
if (!accept.includes(file.type) || !hasFileType) {
this.rejectedFiles.push(file);
continue;
}
}
if (!NgxDropzoneService.isAccepted(file, accept)) {
this.rejectedFiles.push(file);
continue;
}

@@ -297,2 +275,47 @@ if (maxFileSize && file.size > maxFileSize) {

};
/**
* @private
* @param {?} file
* @param {?} accept
* @return {?}
*/
NgxDropzoneService.isAccepted = /**
* @private
* @param {?} file
* @param {?} accept
* @return {?}
*/
function (file, accept) {
if (accept === '*') {
return true;
}
/** @type {?} */
var acceptFiletypes = accept.split(',').map((/**
* @param {?} it
* @return {?}
*/
function (it) { return it.toLowerCase().trim(); }));
/** @type {?} */
var filetype = file.type.toLowerCase();
/** @type {?} */
var filename = file.name.toLowerCase();
/** @type {?} */
var matchedFileType = acceptFiletypes.find((/**
* @param {?} acceptFiletype
* @return {?}
*/
function (acceptFiletype) {
// check for wildcard mimetype (e.g. image/*)
if (acceptFiletype.endsWith('/*')) {
return filetype.split('/')[0] === acceptFiletype.split('/')[0];
}
// check for file extension (e.g. .csv)
if (acceptFiletype.startsWith(".")) {
return filename.endsWith(acceptFiletype);
}
// check for exact mimetype match (e.g. image/jpeg)
return acceptFiletype == filetype;
}));
return matchedFileType !== undefined;
};
NgxDropzoneService.decorators = [

@@ -499,2 +522,4 @@ { type: Injectable },

});
// Reset the native file input element to allow selecting the same file again
this._fileInput.nativeElement.value = '';
};

@@ -717,2 +742,2 @@ /**

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRyb3B6b25lLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9uZ3gtZHJvcHpvbmUvbGliL25neC1kcm9wem9uZS1sYWJlbC5kaXJlY3RpdmUudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvaGVscGVycy50cyIsIm5nOi8vbmd4LWRyb3B6b25lL2xpYi9uZ3gtZHJvcHpvbmUtcHJldmlldy9uZ3gtZHJvcHpvbmUtcHJldmlldy5jb21wb25lbnQudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvbmd4LWRyb3B6b25lLnNlcnZpY2UudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvbmd4LWRyb3B6b25lL25neC1kcm9wem9uZS5jb21wb25lbnQudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvbmd4LWRyb3B6b25lLXByZXZpZXcvbmd4LWRyb3B6b25lLWltYWdlLXByZXZpZXcvbmd4LWRyb3B6b25lLWltYWdlLXByZXZpZXcuY29tcG9uZW50LnRzIiwibmc6Ly9uZ3gtZHJvcHpvbmUvbGliL25neC1kcm9wem9uZS1wcmV2aWV3L25neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2Uvbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZS5jb21wb25lbnQudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvbmd4LWRyb3B6b25lLXByZXZpZXcvbmd4LWRyb3B6b25lLXZpZGVvLXByZXZpZXcvbmd4LWRyb3B6b25lLXZpZGVvLXByZXZpZXcuY29tcG9uZW50LnRzIiwibmc6Ly9uZ3gtZHJvcHpvbmUvbGliL25neC1kcm9wem9uZS5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ25neC1kcm9wem9uZS1sYWJlbCdcbn0pXG5leHBvcnQgY2xhc3MgTmd4RHJvcHpvbmVMYWJlbERpcmVjdGl2ZSB7IH1cbiIsIlxuLyoqXG4gKiBDb2VyY2VzIGEgZGF0YS1ib3VuZCB2YWx1ZSAodHlwaWNhbGx5IGEgc3RyaW5nKSB0byBhIGJvb2xlYW4uXG4gKiBUYWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYXN0ZXIvc3JjL2Nkay9jb2VyY2lvbi9ib29sZWFuLXByb3BlcnR5LnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWU6IGFueSk6IGJvb2xlYW5cbntcblx0cmV0dXJuIHZhbHVlICE9IG51bGwgJiYgYCR7dmFsdWV9YCAhPT0gJ2ZhbHNlJztcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBwcm92aWRlZCB2YWx1ZSBpcyBjb25zaWRlcmVkIGEgbnVtYmVyLlxuICogVGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2Jsb2IvbWFzdGVyL3NyYy9jZGsvY29lcmNpb24vbnVtYmVyLXByb3BlcnR5LnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZTogYW55KTogbnVtYmVyXG57XG5cdC8vIHBhcnNlRmxvYXQodmFsdWUpIGhhbmRsZXMgbW9zdCBvZiB0aGUgY2FzZXMgd2UncmUgaW50ZXJlc3RlZCBpbiAoaXQgdHJlYXRzIG51bGwsIGVtcHR5IHN0cmluZyxcblx0Ly8gYW5kIG90aGVyIG5vbi1udW1iZXIgdmFsdWVzIGFzIE5hTiwgd2hlcmUgTnVtYmVyIGp1c3QgdXNlcyAwKSBidXQgaXQgY29uc2lkZXJzIHRoZSBzdHJpbmdcblx0Ly8gJzEyM2hlbGxvJyB0byBiZSBhIHZhbGlkIG51bWJlci4gVGhlcmVmb3JlIHdlIGFsc28gY2hlY2sgaWYgTnVtYmVyKHZhbHVlKSBpcyBOYU4uXG5cdHJldHVybiAoIWlzTmFOKHBhcnNlRmxvYXQodmFsdWUgYXMgYW55KSkgJiYgIWlzTmFOKE51bWJlcih2YWx1ZSkpKSA/IE51bWJlcih2YWx1ZSkgOiBudWxsO1xufVxuIiwiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgU2FmZVN0eWxlLCBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuZW51bSBLRVlfQ09ERSB7XG5cdEJBQ0tTUEFDRSA9IDgsXG5cdERFTEVURSA9IDQ2XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25neC1kcm9wem9uZS1wcmV2aWV3Jyxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJuZ3gtZHJvcHpvbmUtbGFiZWxcIj48L25nLWNvbnRlbnQ+XG5cdFx0PG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2UgKm5nSWY9XCJyZW1vdmFibGVcIiAoY2xpY2spPVwiX3JlbW92ZSgkZXZlbnQpXCI+XG5cdFx0PC9uZ3gtZHJvcHpvbmUtcmVtb3ZlLWJhZGdlPlxuXHRgLFxuXHRzdHlsZXM6IFtgOmhvc3QoKXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byB0b3AsI2VkZWRlZCwjZWZlZmVmLCNmMWYxZjEsI2Y0ZjRmNCwjZjZmNmY2KX06aG9zdCgpOmZvY3VzLDpob3N0KCk6aG92ZXJ7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gdG9wLCNlM2UzZTMsI2ViZWFlYSwjZThlN2U3LCNlYmVhZWEsI2Y0ZjRmNCk7b3V0bGluZTowfTpob3N0KCk6Zm9jdXMgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZSw6aG9zdCgpOmhvdmVyIG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2V7b3BhY2l0eToxfTpob3N0KCkgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZXtvcGFjaXR5OjB9Omhvc3QoKSA6Om5nLWRlZXAgbmd4LWRyb3B6b25lLWxhYmVse292ZXJmbG93LXdyYXA6YnJlYWstd29yZH1gXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQge1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByb3RlY3RlZCBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuXHQpIHsgfVxuXG5cdC8qKiBUaGUgZmlsZSB0byBwcmV2aWV3LiAqL1xuXHRASW5wdXQoKSBmaWxlOiBGaWxlO1xuXG5cdC8qKiBBbGxvdyB0aGUgdXNlciB0byByZW1vdmUgZmlsZXMuICovXG5cdEBJbnB1dCgpXG5cdGdldCByZW1vdmFibGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuX3JlbW92YWJsZTtcblx0fVxuXHRzZXQgcmVtb3ZhYmxlKHZhbHVlOiBib29sZWFuKSB7XG5cdFx0dGhpcy5fcmVtb3ZhYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcblx0fVxuXHRwcm90ZWN0ZWQgX3JlbW92YWJsZSA9IGZhbHNlO1xuXG5cdC8qKiBFbWl0dGVkIHdoZW4gdGhlIGVsZW1lbnQgc2hvdWxkIGJlIHJlbW92ZWQuICovXG5cdEBPdXRwdXQoKSByZWFkb25seSByZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlPigpO1xuXG5cdEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcblx0a2V5RXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcblx0XHRzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcblx0XHRcdGNhc2UgS0VZX0NPREUuQkFDS1NQQUNFOlxuXHRcdFx0Y2FzZSBLRVlfQ09ERS5ERUxFVEU6XG5cdFx0XHRcdHRoaXMucmVtb3ZlKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0LyoqIFdlIHVzZSB0aGUgSG9zdEJpbmRpbmcgdG8gcGFzcyB0aGVzZSBjb21tb24gc3R5bGVzIHRvIGNoaWxkIGNvbXBvbmVudHMuICovXG5cdEBIb3N0QmluZGluZygnc3R5bGUnKVxuXHRnZXQgaG9zdFN0eWxlKCk6IFNhZmVTdHlsZSB7XG5cdFx0Y29uc3Qgc3R5bGVzID0gYFxuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGhlaWdodDogMTQwcHg7XG5cdFx0XHRtaW4taGVpZ2h0OiAxNDBweDtcblx0XHRcdG1pbi13aWR0aDogMTgwcHg7XG5cdFx0XHRtYXgtd2lkdGg6IDE4MHB4O1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0cGFkZGluZzogMCAyMHB4O1xuXHRcdFx0bWFyZ2luOiAxMHB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogNXB4O1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGA7XG5cblx0XHRyZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHN0eWxlcyk7XG5cdH1cblxuXHQvKiogTWFrZSB0aGUgcHJldmlldyBpdGVtIGZvY3VzYWJsZSB1c2luZyB0aGUgdGFiIGtleS4gKi9cblx0QEhvc3RCaW5kaW5nKCd0YWJpbmRleCcpIHRhYkluZGV4ID0gMDtcblxuXHQvKiogUmVtb3ZlIG1ldGhvZCB0byBiZSB1c2VkIGZyb20gdGhlIHRlbXBsYXRlLiAqL1xuXHRfcmVtb3ZlKGV2ZW50KSB7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0dGhpcy5yZW1vdmUoKTtcblx0fVxuXG5cdC8qKiBSZW1vdmUgdGhlIHByZXZpZXcgaXRlbSAodXNlIGZyb20gY29tcG9uZW50IGNvZGUpLiAqL1xuXHRyZW1vdmUoKSB7XG5cdFx0aWYgKHRoaXMuX3JlbW92YWJsZSkge1xuXHRcdFx0dGhpcy5yZW1vdmVkLm5leHQodGhpcy5maWxlKTtcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgYXN5bmMgcmVhZEZpbGUoKTogUHJvbWlzZTxzdHJpbmcgfCBBcnJheUJ1ZmZlcj4ge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmcgfCBBcnJheUJ1ZmZlcj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0Y29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuXHRcdFx0cmVhZGVyLm9ubG9hZCA9IGUgPT4ge1xuXHRcdFx0XHRyZXR1cm4gcmVzb2x2ZSgoZS50YXJnZXQgYXMgRmlsZVJlYWRlcikucmVzdWx0KTtcblx0XHRcdH07XG5cblx0XHRcdHJlYWRlci5vbmVycm9yID0gZSA9PiB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoYEZpbGVSZWFkZXIgZmFpbGVkIG9uIGZpbGUgJHt0aGlzLmZpbGUubmFtZX0uYCk7XG5cdFx0XHRcdHJldHVybiByZWplY3QobnVsbCk7XG5cdFx0XHR9O1xuXG5cdFx0XHRpZiAoIXRoaXMuZmlsZSkge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKCdObyBmaWxlIHRvIHJlYWQuIFBsZWFzZSBwcm92aWRlIGEgZmlsZSB1c2luZyB0aGUgW2ZpbGVdIElucHV0IHByb3BlcnR5LicpO1xuXHRcdFx0XHRyZXR1cm4gcmVqZWN0KG51bGwpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZWFkZXIucmVhZEFzRGF0YVVSTCh0aGlzLmZpbGUpO1xuXHRcdH0pO1xuXHR9XG59XG4iLCJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVNlbGVjdFJlc3VsdCB7XG5cblx0LyoqIFRoZSBhZGRlZCBmaWxlcywgZW1pdHRlZCBpbiB0aGUgZmlsZXNBZGRlZCBldmVudC4gKi9cblx0YWRkZWRGaWxlczogRmlsZVtdO1xuXG5cdC8qKiBUaGUgcmVqZWN0ZWQgZmlsZXMsIGVtaXR0ZWQgaW4gdGhlIGZpbGVzUmVqZWN0ZWQgZXZlbnQuICovXG5cdHJlamVjdGVkRmlsZXM6IEZpbGVbXTtcbn1cblxuLyoqXG4gKiBUaGlzIHNlcnZpY2UgY29udGFpbnMgdGhlIGZpbHRlcmluZyBsb2dpYyB0byBiZSBhcHBsaWVkIHRvXG4gKiBhbnkgZHJvcHBlZCBvciBzZWxlY3RlZCBmaWxlLiBJZiBhIGZpbGUgbWF0Y2hlcyBhbGwgY3JpdGVyaWFcbiAqIGxpa2UgbWF4aW11bSBzaXplIG9yIGFjY2VwdCB0eXBlLCBpdCB3aWxsIGJlIGVtaXR0ZWQgaW4gdGhlXG4gKiBmaWxlc0FkZGVkIGV2ZW50LCBvdGhlcndpc2UgaW4gdGhlIGZpbGVzUmVqZWN0ZWQgZXZlbnQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ3hEcm9wem9uZVNlcnZpY2Uge1xuXG5cdHByaXZhdGUgYWRkZWRGaWxlczogRmlsZVtdID0gW107XG5cdHByaXZhdGUgcmVqZWN0ZWRGaWxlczogRmlsZVtdID0gW107XG5cblx0cGFyc2VGaWxlTGlzdChmaWxlczogRmlsZUxpc3QsIGFjY2VwdDogc3RyaW5nLCBtYXhGaWxlU2l6ZTogbnVtYmVyLCBtdWx0aXBsZTogYm9vbGVhbik6IEZpbGVTZWxlY3RSZXN1bHQge1xuXG5cdFx0dGhpcy5hZGRlZEZpbGVzID0gW107XG5cdFx0dGhpcy5yZWplY3RlZEZpbGVzID0gW107XG5cblx0XHRjb25zdCBoYXNBY2NlcHRGaWx0ZXIgPSBhY2NlcHQgIT09ICcqJztcblx0XHRjb25zdCBoYXNHZW5lcmljQWNjZXB0RmlsdGVyID0gYWNjZXB0LmVuZHNXaXRoKCcvKicpO1xuXHRcdGNvbnN0IGFjY2VwdGVkR2VuZXJpY1R5cGUgPSBhY2NlcHQuc3BsaXQoJy8nKVswXTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGZpbGUgPSBmaWxlcy5pdGVtKGkpO1xuXG5cdFx0XHRpZiAoaGFzQWNjZXB0RmlsdGVyKSB7XG5cdFx0XHRcdGlmIChoYXNHZW5lcmljQWNjZXB0RmlsdGVyKSB7XG5cdFx0XHRcdFx0Ly8gSWYgYSBnZW5lcmljIGZpbGUgdHlwZSBpcyBwcm92aWRlZCwgd2UgY2hlY2sgZm9yIGEgbWF0Y2guXG5cdFx0XHRcdFx0Y29uc3QgcHJvdmlkZWRHZW5lcmljVHlwZSA9IGZpbGUudHlwZS5zcGxpdCgnLycpWzBdO1xuXG5cdFx0XHRcdFx0aWYgKGFjY2VwdGVkR2VuZXJpY1R5cGUgIT09IHByb3ZpZGVkR2VuZXJpY1R5cGUpIHtcblx0XHRcdFx0XHRcdHRoaXMucmVqZWN0ZWRGaWxlcy5wdXNoKGZpbGUpO1xuXHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIEVsc2UgYW4gZXhhY3QgbWF0Y2ggaXMgcmVxdWlyZWQuXG5cdFx0XHRcdFx0Y29uc3QgaGFzRmlsZVR5cGUgPSAhIWZpbGUudHlwZTtcblxuXHRcdFx0XHRcdGlmICghYWNjZXB0LmluY2x1ZGVzKGZpbGUudHlwZSkgfHwgIWhhc0ZpbGVUeXBlKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnJlamVjdGVkRmlsZXMucHVzaChmaWxlKTtcblx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAobWF4RmlsZVNpemUgJiYgZmlsZS5zaXplID4gbWF4RmlsZVNpemUpIHtcblx0XHRcdFx0dGhpcy5yZWplY3RlZEZpbGVzLnB1c2goZmlsZSk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIW11bHRpcGxlICYmIHRoaXMuYWRkZWRGaWxlcy5sZW5ndGggPj0gMSkge1xuXHRcdFx0XHQvLyBBbHdheXMgZW1pdCB0aGUgbGF0ZXN0IGZpbGUgaWYgbXVsdGktc2VsZWN0aW9uIGlzIGRpc2FibGVkLlxuXHRcdFx0XHR0aGlzLnJlamVjdGVkRmlsZXMucHVzaChmaWxlKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuYWRkZWRGaWxlcy5wdXNoKGZpbGUpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHJlc3VsdDogRmlsZVNlbGVjdFJlc3VsdCA9IHtcblx0XHRcdGFkZGVkRmlsZXM6IHRoaXMuYWRkZWRGaWxlcyxcblx0XHRcdHJlamVjdGVkRmlsZXM6IHRoaXMucmVqZWN0ZWRGaWxlc1xuXHRcdH07XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG59XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIElucHV0LCBWaWV3Q2hpbGQsIENvbnRlbnRDaGlsZHJlbiwgUXVlcnlMaXN0LCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBTZWxmLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVNlcnZpY2UsIEZpbGVTZWxlY3RSZXN1bHQgfSBmcm9tICcuLi9uZ3gtZHJvcHpvbmUuc2VydmljZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuLi9uZ3gtZHJvcHpvbmUtcHJldmlldy9uZ3gtZHJvcHpvbmUtcHJldmlldy5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5neERyb3B6b25lQ2hhbmdlRXZlbnQge1xuICBzb3VyY2U6IE5neERyb3B6b25lQ29tcG9uZW50O1xuICBhZGRlZEZpbGVzOiBGaWxlW107XG4gIHJlamVjdGVkRmlsZXM6IEZpbGVbXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LWRyb3B6b25lLCBbbmd4LWRyb3B6b25lXScsXG4gIHRlbXBsYXRlOiBgPGlucHV0ICNmaWxlSW5wdXQgdHlwZT1cImZpbGVcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgW211bHRpcGxlXT1cIm11bHRpcGxlXCIgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAoY2hhbmdlKT1cIl9vbkZpbGVzU2VsZWN0ZWQoJGV2ZW50KVwiPlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwibmd4LWRyb3B6b25lLWxhYmVsXCIgKm5nSWY9XCIhX2hhc1ByZXZpZXdzXCI+PC9uZy1jb250ZW50PlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwibmd4LWRyb3B6b25lLXByZXZpZXdcIj48L25nLWNvbnRlbnQ+XG5gLFxuICBzdHlsZXM6IFtgOmhvc3QoKXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDoxODBweDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzcxNzM4Njtib3JkZXI6MnB4IGRhc2hlZCAjNzE3Mzg2O2JvcmRlci1yYWRpdXM6NXB4O2ZvbnQtc2l6ZToxNnB4O292ZXJmbG93LXg6YXV0b306aG9zdCgpLm5neC1kei1ob3ZlcmVke2JvcmRlci1zdHlsZTpzb2xpZH06aG9zdCgpLm5neC1kei1kaXNhYmxlZHtvcGFjaXR5Oi41O2N1cnNvcjpuby1kcm9wO3BvaW50ZXItZXZlbnRzOm5vbmV9Omhvc3QoKS5leHBhbmRhYmxle292ZXJmbG93OmhpZGRlbjtoZWlnaHQ6dW5zZXQ7bWluLWhlaWdodDoxODBweDtmbGV4LXdyYXA6d3JhcH06aG9zdCgpIDo6bmctZGVlcCBuZ3gtZHJvcHpvbmUtbGFiZWx7dGV4dC1hbGlnbjpjZW50ZXI7ei1pbmRleDoxMDttYXJnaW46MTBweCBhdXRvfWBdLFxuICBwcm92aWRlcnM6IFtOZ3hEcm9wem9uZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIE5neERyb3B6b25lQ29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIHByaXZhdGUgc2VydmljZTogTmd4RHJvcHpvbmVTZXJ2aWNlXG4gICkgeyB9XG5cbiAgLyoqIEEgbGlzdCBvZiB0aGUgY29udGVudC1wcm9qZWN0ZWQgcHJldmlldyBjaGlsZHJlbi4gKi9cbiAgQENvbnRlbnRDaGlsZHJlbihOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgX3ByZXZpZXdDaGlsZHJlbjogUXVlcnlMaXN0PE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudD47XG5cbiAgZ2V0IF9oYXNQcmV2aWV3cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9wcmV2aWV3Q2hpbGRyZW4ubGVuZ3RoO1xuICB9XG5cbiAgLyoqIEEgdGVtcGxhdGUgcmVmZXJlbmNlIHRvIHRoZSBuYXRpdmUgZmlsZSBpbnB1dCBlbGVtZW50LiAqL1xuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBfZmlsZUlucHV0OiBFbGVtZW50UmVmO1xuXG4gIC8qKiBFbWl0dGVkIHdoZW4gYW55IGZpbGVzIHdlcmUgYWRkZWQgb3IgcmVqZWN0ZWQuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE5neERyb3B6b25lQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgLyoqIFNldCB0aGUgYWNjZXB0ZWQgZmlsZSB0eXBlcy4gRGVmYXVsdHMgdG8gJyonLiAqL1xuICBASW5wdXQoKSBhY2NlcHQgPSAnKic7XG5cbiAgLyoqIERpc2FibGUgYW55IHVzZXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgY29tcG9uZW50LiAqL1xuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5neC1kei1kaXNhYmxlZCcpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuX2lzSG92ZXJlZCkge1xuICAgICAgdGhpcy5faXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqIEFsbG93IHRoZSBzZWxlY3Rpb24gb2YgbXVsdGlwbGUgZmlsZXMuICovXG4gIEBJbnB1dCgpXG4gIGdldCBtdWx0aXBsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlwbGU7XG4gIH1cbiAgc2V0IG11bHRpcGxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbXVsdGlwbGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX211bHRpcGxlID0gdHJ1ZTtcblxuICAvKiogU2V0IHRoZSBtYXhpbXVtIHNpemUgYSBzaW5nbGUgZmlsZSBtYXkgaGF2ZS4gKi9cbiAgQElucHV0KClcbiAgZ2V0IG1heEZpbGVTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heEZpbGVTaXplO1xuICB9XG4gIHNldCBtYXhGaWxlU2l6ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWF4RmlsZVNpemUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfbWF4RmlsZVNpemU6IG51bWJlciA9IHVuZGVmaW5lZDtcblxuICAvKiogQWxsb3cgdGhlIGRyb3B6b25lIGNvbnRhaW5lciB0byBleHBhbmQgdmVydGljYWxseS4gKi9cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5leHBhbmRhYmxlJylcbiAgZ2V0IGV4cGFuZGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2V4cGFuZGFibGU7XG4gIH1cbiAgc2V0IGV4cGFuZGFibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9leHBhbmRhYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9leHBhbmRhYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5uZ3gtZHotaG92ZXJlZCcpXG4gIF9pc0hvdmVyZWQgPSBmYWxzZTtcblxuICAvKiogU2hvdyB0aGUgbmF0aXZlIE9TIGZpbGUgZXhwbG9yZXIgdG8gc2VsZWN0IGZpbGVzLiAqL1xuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHNob3dGaWxlU2VsZWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAodGhpcy5fZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudCkuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnb3ZlcicsIFsnJGV2ZW50J10pXG4gIF9vbkRyYWdPdmVyKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByZXZlbnREZWZhdWx0KGV2ZW50KTtcbiAgICB0aGlzLl9pc0hvdmVyZWQgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJylcbiAgX29uRHJhZ0xlYXZlKCkge1xuICAgIHRoaXMuX2lzSG92ZXJlZCA9IGZhbHNlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJvcCcsIFsnJGV2ZW50J10pXG4gIF9vbkRyb3AoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJldmVudERlZmF1bHQoZXZlbnQpO1xuICAgIHRoaXMuX2lzSG92ZXJlZCA9IGZhbHNlO1xuICAgIHRoaXMuaGFuZGxlRmlsZURyb3AoZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKTtcbiAgfVxuXG4gIF9vbkZpbGVzU2VsZWN0ZWQoZXZlbnQpIHtcbiAgICBjb25zdCBmaWxlczogRmlsZUxpc3QgPSBldmVudC50YXJnZXQuZmlsZXM7XG4gICAgdGhpcy5oYW5kbGVGaWxlRHJvcChmaWxlcyk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUZpbGVEcm9wKGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIGNvbnN0IHJlc3VsdDogRmlsZVNlbGVjdFJlc3VsdCA9XG4gICAgICB0aGlzLnNlcnZpY2UucGFyc2VGaWxlTGlzdChmaWxlcywgdGhpcy5hY2NlcHQsIHRoaXMubWF4RmlsZVNpemUsIHRoaXMubXVsdGlwbGUpO1xuXG4gICAgdGhpcy5jaGFuZ2UubmV4dCh7XG4gICAgICBhZGRlZEZpbGVzOiByZXN1bHQuYWRkZWRGaWxlcyxcbiAgICAgIHJlamVjdGVkRmlsZXM6IHJlc3VsdC5yZWplY3RlZEZpbGVzLFxuICAgICAgc291cmNlOiB0aGlzXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByZXZlbnREZWZhdWx0KGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uL25neC1kcm9wem9uZS1wcmV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtZHJvcHpvbmUtaW1hZ2UtcHJldmlldycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGltZyBbc3JjXT1cImltYWdlU3JjXCIgLz5cblx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJuZ3gtZHJvcHpvbmUtbGFiZWxcIj48L25nLWNvbnRlbnQ+XG4gICAgPG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2UgKm5nSWY9XCJyZW1vdmFibGVcIiAoY2xpY2spPVwiX3JlbW92ZSgkZXZlbnQpXCI+XG4gICAgPC9uZ3gtZHJvcHpvbmUtcmVtb3ZlLWJhZGdlPlxuXHRgLFxuICBzdHlsZXM6IFtgOmhvc3QoKXttaW4td2lkdGg6dW5zZXQhaW1wb3J0YW50O21heC13aWR0aDp1bnNldCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudH06aG9zdCgpOmZvY3VzIGltZyw6aG9zdCgpOmhvdmVyIGltZ3tvcGFjaXR5Oi43fTpob3N0KCk6Zm9jdXMgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZSw6aG9zdCgpOmhvdmVyIG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2V7b3BhY2l0eToxfTpob3N0KCkgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZXtvcGFjaXR5OjB9Omhvc3QoKSBpbWd7bWF4LWhlaWdodDoxMDAlO2JvcmRlci1yYWRpdXM6NXB4O29wYWNpdHk6Ljh9Omhvc3QoKSA6Om5nLWRlZXAgbmd4LWRyb3B6b25lLWxhYmVse3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93LXdyYXA6YnJlYWstd29yZH1gXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IE5neERyb3B6b25lSW1hZ2VQcmV2aWV3Q29tcG9uZW50XG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neERyb3B6b25lSW1hZ2VQcmV2aWV3Q29tcG9uZW50IGV4dGVuZHMgTmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuICApIHtcbiAgICBzdXBlcihzYW5pdGl6ZXIpO1xuICB9XG5cbiAgLyoqIFRoZSBpbWFnZSBkYXRhIHNvdXJjZS4gKi9cbiAgaW1hZ2VTcmM6IHN0cmluZyB8IEFycmF5QnVmZmVyID0gJyc7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZWFkRmlsZSgpXG4gICAgICAudGhlbihpbWcgPT4gdGhpcy5pbWFnZVNyYyA9IGltZylcbiAgICAgIC5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2UnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzdmc+XG4gICAgICA8bGluZSB4MT1cIjBcIiB5MT1cIjBcIiB4Mj1cIjEwXCIgeTI9XCIxMFwiIC8+XG4gICAgICA8bGluZSB4MT1cIjBcIiB5MT1cIjEwXCIgeDI9XCIxMFwiIHkyPVwiMFwiIC8+XG4gICAgPC9zdmc+XG4gIGAsXG4gIHN0eWxlczogW2A6aG9zdCgpe2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6MjJweDt3aWR0aDoyMnB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1cHg7cmlnaHQ6NXB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6I2JiYjtjb2xvcjojMzMzO2N1cnNvcjpwb2ludGVyfTpob3N0KCk6aG92ZXJ7YmFja2dyb3VuZDojYWVhZWFlfTpob3N0KCk+c3Zne2hlaWdodDoxMHB4O3dpZHRoOjEwcHh9Omhvc3QoKT5zdmc+bGluZXtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZTojZmZmfWBdXG59KVxuZXhwb3J0IGNsYXNzIE5neERyb3B6b25lUmVtb3ZlQmFkZ2VDb21wb25lbnQgeyB9XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuLi9uZ3gtZHJvcHpvbmUtcHJldmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1kcm9wem9uZS12aWRlby1wcmV2aWV3JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dmlkZW8gKm5nSWY9XCJzYW5pdGl6ZWRWaWRlb1NyY1wiIGNvbnRyb2xzIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgIDxzb3VyY2UgW3NyY109XCJzYW5pdGl6ZWRWaWRlb1NyY1wiIC8+XG4gICAgPC92aWRlbz5cbiAgICA8bmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZSAqbmdJZj1cInJlbW92YWJsZVwiIChjbGljayk9XCJfcmVtb3ZlKCRldmVudClcIj5cbiAgICA8L25neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2U+XG5cdGAsXG4gIHN0eWxlczogW2A6aG9zdCgpe21pbi13aWR0aDp1bnNldCFpbXBvcnRhbnQ7bWF4LXdpZHRoOnVuc2V0IWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50fTpob3N0KCk6Zm9jdXMgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZSw6aG9zdCgpOmhvdmVyIG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2V7b3BhY2l0eToxfTpob3N0KCkgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZXtvcGFjaXR5OjB9Omhvc3QoKSB2aWRlb3ttYXgtaGVpZ2h0OjEwMCU7Ym9yZGVyLXJhZGl1czo1cHh9YF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBOZ3hEcm9wem9uZVZpZGVvUHJldmlld0NvbXBvbmVudFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hEcm9wem9uZVZpZGVvUHJldmlld0NvbXBvbmVudCBleHRlbmRzIE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuICApIHtcbiAgICBzdXBlcihzYW5pdGl6ZXIpO1xuICB9XG5cbiAgLyoqIFRoZSB2aWRlbyBkYXRhIHNvdXJjZS4gKi9cbiAgc2FuaXRpemVkVmlkZW9TcmM6IFNhZmVVcmw7XG5cbiAgcHJpdmF0ZSB2aWRlb1NyYzogc3RyaW5nO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5maWxlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdObyBmaWxlIHRvIHJlYWQuIFBsZWFzZSBwcm92aWRlIGEgZmlsZSB1c2luZyB0aGUgW2ZpbGVdIElucHV0IHByb3BlcnR5LicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdlIHNhbml0aXplIHRoZSBVUkwgaGVyZSB0byBlbmFibGUgdGhlIHByZXZpZXcuXG4gICAgICogUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGNvdWxkIGNhdXNlIHNlY3VyaXR5IGlzc3VlcyFcbiAgICAgKiovXG4gICAgdGhpcy52aWRlb1NyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwodGhpcy5maWxlKTtcbiAgICB0aGlzLnNhbml0aXplZFZpZGVvU3JjID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCh0aGlzLnZpZGVvU3JjKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIFVSTC5yZXZva2VPYmplY3RVUkwodGhpcy52aWRlb1NyYyk7XG4gIH1cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmd4RHJvcHpvbmVMYWJlbERpcmVjdGl2ZSB9IGZyb20gJy4vbmd4LWRyb3B6b25lLWxhYmVsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL25neC1kcm9wem9uZS1wcmV2aWV3L25neC1kcm9wem9uZS1wcmV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZUNvbXBvbmVudCB9IGZyb20gJy4vbmd4LWRyb3B6b25lL25neC1kcm9wem9uZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4RHJvcHpvbmVJbWFnZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL25neC1kcm9wem9uZS1wcmV2aWV3L25neC1kcm9wem9uZS1pbWFnZS1wcmV2aWV3L25neC1kcm9wem9uZS1pbWFnZS1wcmV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVJlbW92ZUJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtZHJvcHpvbmUtcHJldmlldy9uZ3gtZHJvcHpvbmUtcmVtb3ZlLWJhZGdlL25neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IE5neERyb3B6b25lVmlkZW9QcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtZHJvcHpvbmUtcHJldmlldy9uZ3gtZHJvcHpvbmUtdmlkZW8tcHJldmlldy9uZ3gtZHJvcHpvbmUtdmlkZW8tcHJldmlldy5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuXHRpbXBvcnRzOiBbXG5cdFx0Q29tbW9uTW9kdWxlXG5cdF0sXG5cdGRlY2xhcmF0aW9uczogW1xuXHRcdE5neERyb3B6b25lQ29tcG9uZW50LFxuXHRcdE5neERyb3B6b25lTGFiZWxEaXJlY3RpdmUsXG5cdFx0Tmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50LFxuXHRcdE5neERyb3B6b25lSW1hZ2VQcmV2aWV3Q29tcG9uZW50LFxuXHRcdE5neERyb3B6b25lUmVtb3ZlQmFkZ2VDb21wb25lbnQsXG5cdFx0Tmd4RHJvcHpvbmVWaWRlb1ByZXZpZXdDb21wb25lbnQsXG5cdF0sXG5cdGV4cG9ydHM6IFtcblx0XHROZ3hEcm9wem9uZUNvbXBvbmVudCxcblx0XHROZ3hEcm9wem9uZUxhYmVsRGlyZWN0aXZlLFxuXHRcdE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCxcblx0XHROZ3hEcm9wem9uZUltYWdlUHJldmlld0NvbXBvbmVudCxcblx0XHROZ3hEcm9wem9uZVJlbW92ZUJhZGdlQ29tcG9uZW50LFxuXHRcdE5neERyb3B6b25lVmlkZW9QcmV2aWV3Q29tcG9uZW50LFxuXHRdXG59KVxuZXhwb3J0IGNsYXNzIE5neERyb3B6b25lTW9kdWxlIHsgfVxuIl0sIm5hbWVzIjpbInRzbGliXzEuX19leHRlbmRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtJQUVBO0tBRzBDOztnQkFIekMsU0FBUyxTQUFDO29CQUNWLFFBQVEsRUFBRSxvQkFBb0I7aUJBQzlCOztJQUN3QyxnQ0FBQztDQUFBOzs7Ozs7Ozs7Ozs7QUNBMUMsU0FBZ0IscUJBQXFCLENBQUMsS0FBVTtJQUUvQyxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksS0FBRyxLQUFPLEtBQUssT0FBTyxDQUFDO0NBQy9DOzs7Ozs7O0FBTUQsU0FBZ0Isb0JBQW9CLENBQUMsS0FBVTs7OztJQUs5QyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxvQkFBQyxLQUFLLEdBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7Q0FDMUY7Ozs7Ozs7O0lDZkEsWUFBYTtJQUNiLFVBQVc7Ozs7QUFHWjtJQVdDLHFDQUNXLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFjeEIsZUFBVSxHQUFHLEtBQUssQ0FBQzs7OztRQUdWLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDOzs7O1FBbUM3QixhQUFRLEdBQUcsQ0FBQyxDQUFDO0tBbkRqQztJQU1MLHNCQUNJLGtEQUFTOzs7Ozs7UUFEYjtZQUVDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUN2Qjs7Ozs7UUFDRCxVQUFjLEtBQWM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMvQzs7O09BSEE7Ozs7O0lBVUQsOENBQVE7Ozs7SUFEUixVQUNTLEtBQW9CO1FBQzVCLFFBQVEsS0FBSyxDQUFDLE9BQU87WUFDcEIsS0FBSyxRQUFRLENBQUMsU0FBUyxDQUFDO1lBQ3hCLEtBQUssUUFBUSxDQUFDLE1BQU07Z0JBQ25CLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDZCxNQUFNO1lBQ1A7Z0JBQ0MsTUFBTTtTQUNQO0tBQ0Q7SUFHRCxzQkFDSSxrREFBUzs7Ozs7O1FBRGI7O2dCQUVPLE1BQU0sR0FBRywrUkFZZDtZQUVELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN2RDs7O09BQUE7Ozs7Ozs7SUFNRCw2Q0FBTzs7Ozs7SUFBUCxVQUFRLEtBQUs7UUFDWixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ2Q7Ozs7OztJQUdELDRDQUFNOzs7O0lBQU47UUFDQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzdCO0tBQ0Q7Ozs7O0lBRWUsOENBQVE7Ozs7SUFBeEI7Ozs7Z0JBQ0Msc0JBQU8sSUFBSSxPQUFPOzs7OztvQkFBdUIsVUFBQyxPQUFPLEVBQUUsTUFBTTs7NEJBQ2xELE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRTt3QkFFL0IsTUFBTSxDQUFDLE1BQU07Ozs7d0JBQUcsVUFBQSxDQUFDOzRCQUNoQixPQUFPLE9BQU8sQ0FBQyxvQkFBQyxDQUFDLENBQUMsTUFBTSxJQUFnQixNQUFNLENBQUMsQ0FBQzt5QkFDaEQsQ0FBQSxDQUFDO3dCQUVGLE1BQU0sQ0FBQyxPQUFPOzs7O3dCQUFHLFVBQUEsQ0FBQzs0QkFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQywrQkFBNkIsS0FBSSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQUcsQ0FBQyxDQUFDOzRCQUM5RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzt5QkFDcEIsQ0FBQSxDQUFDO3dCQUVGLElBQUksQ0FBQyxLQUFJLENBQUMsSUFBSSxFQUFFOzRCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMseUVBQXlFLENBQUMsQ0FBQzs0QkFDekYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQ3BCO3dCQUVELE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUNoQyxFQUFDLEVBQUM7OztLQUNIOztnQkFuR0QsU0FBUyxTQUFDO29CQUNWLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRSxzTEFJVDtvQkFDRCxNQUFNLEVBQUUsQ0FBQyxzWkFBc1osQ0FBQztpQkFDaGE7Ozs7Z0JBZm1CLFlBQVk7Ozt1QkF1QjlCLEtBQUs7NEJBR0wsS0FBSzswQkFVTCxNQUFNOzJCQUVOLFlBQVksU0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7NEJBYWhDLFdBQVcsU0FBQyxPQUFPOzJCQW9CbkIsV0FBVyxTQUFDLFVBQVU7O0lBb0N4QixrQ0FBQztDQUFBOzs7Ozs7QUM3R0Q7Ozs7OztBQWlCQTtJQUFBO1FBR1MsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixrQkFBYSxHQUFXLEVBQUUsQ0FBQztLQXVEbkM7Ozs7Ozs7O0lBckRBLDBDQUFhOzs7Ozs7O0lBQWIsVUFBYyxLQUFlLEVBQUUsTUFBYyxFQUFFLFdBQW1CLEVBQUUsUUFBaUI7UUFFcEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7O1lBRWxCLGVBQWUsR0FBRyxNQUFNLEtBQUssR0FBRzs7WUFDaEMsc0JBQXNCLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7O1lBQzlDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWhELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOztnQkFDaEMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBRTFCLElBQUksZUFBZSxFQUFFO2dCQUNwQixJQUFJLHNCQUFzQixFQUFFOzs7d0JBRXJCLG1CQUFtQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFFbkQsSUFBSSxtQkFBbUIsS0FBSyxtQkFBbUIsRUFBRTt3QkFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzlCLFNBQVM7cUJBQ1Q7aUJBQ0Q7cUJBQU07Ozt3QkFFQSxXQUFXLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJO29CQUUvQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7d0JBQ2hELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUM5QixTQUFTO3FCQUNUO2lCQUNEO2FBQ0Q7WUFFRCxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLFNBQVM7YUFDVDtZQUVELElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFOztnQkFFN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLFNBQVM7YUFDVDtZQUVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNCOztZQUVLLE1BQU0sR0FBcUI7WUFDaEMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtTQUNqQztRQUVELE9BQU8sTUFBTSxDQUFDO0tBQ2Q7O2dCQTFERCxVQUFVOztJQTJEWCx5QkFBQztDQUFBOzs7Ozs7QUM1RUQ7SUF1QkUsOEJBQ2tCLE9BQTJCO1FBQTNCLFlBQU8sR0FBUCxPQUFPLENBQW9COzs7O1FBZTFCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQzs7OztRQUc5RCxXQUFNLEdBQUcsR0FBRyxDQUFDO1FBZWQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQVVsQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBVWpCLGlCQUFZLEdBQVcsU0FBUyxDQUFDO1FBV2pDLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBR3JDLGVBQVUsR0FBRyxLQUFLLENBQUM7S0FsRWQ7SUFNTCxzQkFBSSw4Q0FBWTs7OztRQUFoQjtZQUNFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7U0FDdkM7OztPQUFBO0lBWUQsc0JBRUksMENBQVE7Ozs7OztRQUZaO1lBR0UsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ3ZCOzs7OztRQUNELFVBQWEsS0FBYztZQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTlDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7YUFDekI7U0FDRjs7O09BUEE7SUFXRCxzQkFDSSwwQ0FBUTs7Ozs7O1FBRFo7WUFFRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDdkI7Ozs7O1FBQ0QsVUFBYSxLQUFjO1lBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDL0M7OztPQUhBO0lBT0Qsc0JBQ0ksNkNBQVc7Ozs7OztRQURmO1lBRUUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzFCOzs7OztRQUNELFVBQWdCLEtBQWE7WUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNqRDs7O09BSEE7SUFPRCxzQkFFSSw0Q0FBVTs7Ozs7O1FBRmQ7WUFHRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDekI7Ozs7O1FBQ0QsVUFBZSxLQUFjO1lBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDakQ7OztPQUhBOzs7Ozs7SUFXRCwrQ0FBZ0I7Ozs7SUFEaEI7UUFFRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixvQkFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsSUFBc0IsS0FBSyxFQUFFLENBQUM7U0FDN0Q7S0FDRjs7Ozs7SUFHRCwwQ0FBVzs7OztJQURYLFVBQ1ksS0FBSztRQUNmLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0tBQ3hCOzs7O0lBR0QsMkNBQVk7OztJQURaO1FBRUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7S0FDekI7Ozs7O0lBR0Qsc0NBQU87Ozs7SUFEUCxVQUNRLEtBQUs7UUFDWCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDL0M7Ozs7O0lBRUQsK0NBQWdCOzs7O0lBQWhCLFVBQWlCLEtBQUs7O1lBQ2QsS0FBSyxHQUFhLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSztRQUMxQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzVCOzs7Ozs7SUFFTyw2Q0FBYzs7Ozs7SUFBdEIsVUFBdUIsS0FBZTs7WUFDOUIsTUFBTSxHQUNWLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUVqRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNmLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtZQUM3QixhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWE7WUFDbkMsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFDLENBQUM7S0FDSjs7Ozs7O0lBRU8sNkNBQWM7Ozs7O0lBQXRCLFVBQXVCLEtBQWdCO1FBQ3JDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7S0FDekI7O2dCQXZJRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLDhCQUE4QjtvQkFDeEMsUUFBUSxFQUFFLDhSQUlYO29CQUNDLE1BQU0sRUFBRSxDQUFDLGtjQUFrYyxDQUFDO29CQUM1YyxTQUFTLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDaEM7Ozs7Z0JBbkJRLGtCQUFrQix1QkF1QnRCLElBQUk7OzttQ0FJTixlQUFlLFNBQUMsMkJBQTJCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFOzZCQVFsRSxTQUFTLFNBQUMsV0FBVzt5QkFHckIsTUFBTTt5QkFHTixLQUFLOzJCQUdMLEtBQUssWUFDTCxXQUFXLFNBQUMsdUJBQXVCOzJCQWNuQyxLQUFLOzhCQVVMLEtBQUs7NkJBVUwsS0FBSyxZQUNMLFdBQVcsU0FBQyxrQkFBa0I7NkJBUzlCLFdBQVcsU0FBQyxzQkFBc0I7bUNBSWxDLFlBQVksU0FBQyxPQUFPOzhCQU9wQixZQUFZLFNBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDOytCQVVuQyxZQUFZLFNBQUMsV0FBVzswQkFLeEIsWUFBWSxTQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQzs7SUErQmxDLDJCQUFDO0NBQUE7Ozs7Ozs7SUMvSHFEQSxvREFBMkI7SUFFL0UsMENBQ0UsU0FBdUI7UUFEekIsWUFHRSxrQkFBTSxTQUFTLENBQUMsU0FDakI7Ozs7UUFHRCxjQUFRLEdBQXlCLEVBQUUsQ0FBQzs7S0FIbkM7Ozs7SUFLRCxtREFBUTs7O0lBQVI7UUFBQSxpQkFJQztRQUhDLElBQUksQ0FBQyxRQUFRLEVBQUU7YUFDWixJQUFJOzs7O1FBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxLQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBQSxFQUFDO2FBQ2hDLEtBQUs7Ozs7UUFBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUEsRUFBQyxDQUFDO0tBQ3JDOztnQkEvQkYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFFBQVEsRUFBRSxzTkFLVjtvQkFDQSxNQUFNLEVBQUUsQ0FBQyxnWkFBZ1osQ0FBQztvQkFDMVosU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwyQkFBMkI7NEJBQ3BDLFdBQVcsRUFBRSxnQ0FBZ0M7eUJBQzlDO3FCQUNGO2lCQUNGOzs7O2dCQWpCUSxZQUFZOztJQWtDckIsdUNBQUM7Q0FBQSxDQWhCcUQsMkJBQTJCOzs7Ozs7QUNwQmpGO0lBRUE7S0FVZ0Q7O2dCQVYvQyxTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsUUFBUSxFQUFFLHlJQUtUO29CQUNELE1BQU0sRUFBRSxDQUFDLDBTQUEwUyxDQUFDO2lCQUNyVDs7SUFDOEMsc0NBQUM7Q0FBQTs7Ozs7OztJQ1NNQSxvREFBMkI7SUFFL0UsMENBQ0UsU0FBdUI7ZUFFdkIsa0JBQU0sU0FBUyxDQUFDO0tBQ2pCOzs7O0lBT0QsbURBQVE7OztJQUFSO1FBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLHlFQUF5RSxDQUFDLENBQUM7WUFDekYsT0FBTztTQUNSOzs7OztRQU1ELElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQy9FOzs7O0lBRUQsc0RBQVc7OztJQUFYO1FBQ0UsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDcEM7O2dCQTlDRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsUUFBUSxFQUFFLDRRQU1WO29CQUNBLE1BQU0sRUFBRSxDQUFDLHdRQUF3USxDQUFDO29CQUNsUixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLDJCQUEyQjs0QkFDcEMsV0FBVyxFQUFFLGdDQUFnQzt5QkFDOUM7cUJBQ0Y7aUJBQ0Y7Ozs7Z0JBbEJRLFlBQVk7O0lBaURyQix1Q0FBQztDQUFBLENBOUJxRCwyQkFBMkI7Ozs7OztBQ3JCakY7SUFTQTtLQXFCa0M7O2dCQXJCakMsUUFBUSxTQUFDO29CQUNULE9BQU8sRUFBRTt3QkFDUixZQUFZO3FCQUNaO29CQUNELFlBQVksRUFBRTt3QkFDYixvQkFBb0I7d0JBQ3BCLHlCQUF5Qjt3QkFDekIsMkJBQTJCO3dCQUMzQixnQ0FBZ0M7d0JBQ2hDLCtCQUErQjt3QkFDL0IsZ0NBQWdDO3FCQUNoQztvQkFDRCxPQUFPLEVBQUU7d0JBQ1Isb0JBQW9CO3dCQUNwQix5QkFBeUI7d0JBQ3pCLDJCQUEyQjt3QkFDM0IsZ0NBQWdDO3dCQUNoQywrQkFBK0I7d0JBQy9CLGdDQUFnQztxQkFDaEM7aUJBQ0Q7O0lBQ2dDLHdCQUFDO0NBQUE7Ozs7Ozs7Ozs7Ozs7OyJ9
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRyb3B6b25lLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9uZ3gtZHJvcHpvbmUvbGliL25neC1kcm9wem9uZS1sYWJlbC5kaXJlY3RpdmUudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvaGVscGVycy50cyIsIm5nOi8vbmd4LWRyb3B6b25lL2xpYi9uZ3gtZHJvcHpvbmUtcHJldmlldy9uZ3gtZHJvcHpvbmUtcHJldmlldy5jb21wb25lbnQudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvbmd4LWRyb3B6b25lLnNlcnZpY2UudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvbmd4LWRyb3B6b25lL25neC1kcm9wem9uZS5jb21wb25lbnQudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvbmd4LWRyb3B6b25lLXByZXZpZXcvbmd4LWRyb3B6b25lLWltYWdlLXByZXZpZXcvbmd4LWRyb3B6b25lLWltYWdlLXByZXZpZXcuY29tcG9uZW50LnRzIiwibmc6Ly9uZ3gtZHJvcHpvbmUvbGliL25neC1kcm9wem9uZS1wcmV2aWV3L25neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2Uvbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZS5jb21wb25lbnQudHMiLCJuZzovL25neC1kcm9wem9uZS9saWIvbmd4LWRyb3B6b25lLXByZXZpZXcvbmd4LWRyb3B6b25lLXZpZGVvLXByZXZpZXcvbmd4LWRyb3B6b25lLXZpZGVvLXByZXZpZXcuY29tcG9uZW50LnRzIiwibmc6Ly9uZ3gtZHJvcHpvbmUvbGliL25neC1kcm9wem9uZS5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ25neC1kcm9wem9uZS1sYWJlbCdcbn0pXG5leHBvcnQgY2xhc3MgTmd4RHJvcHpvbmVMYWJlbERpcmVjdGl2ZSB7IH1cbiIsIlxuLyoqXG4gKiBDb2VyY2VzIGEgZGF0YS1ib3VuZCB2YWx1ZSAodHlwaWNhbGx5IGEgc3RyaW5nKSB0byBhIGJvb2xlYW4uXG4gKiBUYWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYXN0ZXIvc3JjL2Nkay9jb2VyY2lvbi9ib29sZWFuLXByb3BlcnR5LnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWU6IGFueSk6IGJvb2xlYW5cbntcblx0cmV0dXJuIHZhbHVlICE9IG51bGwgJiYgYCR7dmFsdWV9YCAhPT0gJ2ZhbHNlJztcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBwcm92aWRlZCB2YWx1ZSBpcyBjb25zaWRlcmVkIGEgbnVtYmVyLlxuICogVGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2Jsb2IvbWFzdGVyL3NyYy9jZGsvY29lcmNpb24vbnVtYmVyLXByb3BlcnR5LnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZTogYW55KTogbnVtYmVyXG57XG5cdC8vIHBhcnNlRmxvYXQodmFsdWUpIGhhbmRsZXMgbW9zdCBvZiB0aGUgY2FzZXMgd2UncmUgaW50ZXJlc3RlZCBpbiAoaXQgdHJlYXRzIG51bGwsIGVtcHR5IHN0cmluZyxcblx0Ly8gYW5kIG90aGVyIG5vbi1udW1iZXIgdmFsdWVzIGFzIE5hTiwgd2hlcmUgTnVtYmVyIGp1c3QgdXNlcyAwKSBidXQgaXQgY29uc2lkZXJzIHRoZSBzdHJpbmdcblx0Ly8gJzEyM2hlbGxvJyB0byBiZSBhIHZhbGlkIG51bWJlci4gVGhlcmVmb3JlIHdlIGFsc28gY2hlY2sgaWYgTnVtYmVyKHZhbHVlKSBpcyBOYU4uXG5cdHJldHVybiAoIWlzTmFOKHBhcnNlRmxvYXQodmFsdWUgYXMgYW55KSkgJiYgIWlzTmFOKE51bWJlcih2YWx1ZSkpKSA/IE51bWJlcih2YWx1ZSkgOiBudWxsO1xufVxuIiwiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgU2FmZVN0eWxlLCBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuZW51bSBLRVlfQ09ERSB7XG5cdEJBQ0tTUEFDRSA9IDgsXG5cdERFTEVURSA9IDQ2XG59XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25neC1kcm9wem9uZS1wcmV2aWV3Jyxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJuZ3gtZHJvcHpvbmUtbGFiZWxcIj48L25nLWNvbnRlbnQ+XG5cdFx0PG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2UgKm5nSWY9XCJyZW1vdmFibGVcIiAoY2xpY2spPVwiX3JlbW92ZSgkZXZlbnQpXCI+XG5cdFx0PC9uZ3gtZHJvcHpvbmUtcmVtb3ZlLWJhZGdlPlxuXHRgLFxuXHRzdHlsZXM6IFtgOmhvc3QoKXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byB0b3AsI2VkZWRlZCwjZWZlZmVmLCNmMWYxZjEsI2Y0ZjRmNCwjZjZmNmY2KX06aG9zdCgpOmZvY3VzLDpob3N0KCk6aG92ZXJ7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gdG9wLCNlM2UzZTMsI2ViZWFlYSwjZThlN2U3LCNlYmVhZWEsI2Y0ZjRmNCk7b3V0bGluZTowfTpob3N0KCk6Zm9jdXMgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZSw6aG9zdCgpOmhvdmVyIG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2V7b3BhY2l0eToxfTpob3N0KCkgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZXtvcGFjaXR5OjB9Omhvc3QoKSA6Om5nLWRlZXAgbmd4LWRyb3B6b25lLWxhYmVse292ZXJmbG93LXdyYXA6YnJlYWstd29yZH1gXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQge1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByb3RlY3RlZCBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuXHQpIHsgfVxuXG5cdC8qKiBUaGUgZmlsZSB0byBwcmV2aWV3LiAqL1xuXHRASW5wdXQoKSBmaWxlOiBGaWxlO1xuXG5cdC8qKiBBbGxvdyB0aGUgdXNlciB0byByZW1vdmUgZmlsZXMuICovXG5cdEBJbnB1dCgpXG5cdGdldCByZW1vdmFibGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuX3JlbW92YWJsZTtcblx0fVxuXHRzZXQgcmVtb3ZhYmxlKHZhbHVlOiBib29sZWFuKSB7XG5cdFx0dGhpcy5fcmVtb3ZhYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcblx0fVxuXHRwcm90ZWN0ZWQgX3JlbW92YWJsZSA9IGZhbHNlO1xuXG5cdC8qKiBFbWl0dGVkIHdoZW4gdGhlIGVsZW1lbnQgc2hvdWxkIGJlIHJlbW92ZWQuICovXG5cdEBPdXRwdXQoKSByZWFkb25seSByZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlPigpO1xuXG5cdEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcblx0a2V5RXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcblx0XHRzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcblx0XHRcdGNhc2UgS0VZX0NPREUuQkFDS1NQQUNFOlxuXHRcdFx0Y2FzZSBLRVlfQ09ERS5ERUxFVEU6XG5cdFx0XHRcdHRoaXMucmVtb3ZlKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0LyoqIFdlIHVzZSB0aGUgSG9zdEJpbmRpbmcgdG8gcGFzcyB0aGVzZSBjb21tb24gc3R5bGVzIHRvIGNoaWxkIGNvbXBvbmVudHMuICovXG5cdEBIb3N0QmluZGluZygnc3R5bGUnKVxuXHRnZXQgaG9zdFN0eWxlKCk6IFNhZmVTdHlsZSB7XG5cdFx0Y29uc3Qgc3R5bGVzID0gYFxuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGhlaWdodDogMTQwcHg7XG5cdFx0XHRtaW4taGVpZ2h0OiAxNDBweDtcblx0XHRcdG1pbi13aWR0aDogMTgwcHg7XG5cdFx0XHRtYXgtd2lkdGg6IDE4MHB4O1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0cGFkZGluZzogMCAyMHB4O1xuXHRcdFx0bWFyZ2luOiAxMHB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogNXB4O1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGA7XG5cblx0XHRyZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHN0eWxlcyk7XG5cdH1cblxuXHQvKiogTWFrZSB0aGUgcHJldmlldyBpdGVtIGZvY3VzYWJsZSB1c2luZyB0aGUgdGFiIGtleS4gKi9cblx0QEhvc3RCaW5kaW5nKCd0YWJpbmRleCcpIHRhYkluZGV4ID0gMDtcblxuXHQvKiogUmVtb3ZlIG1ldGhvZCB0byBiZSB1c2VkIGZyb20gdGhlIHRlbXBsYXRlLiAqL1xuXHRfcmVtb3ZlKGV2ZW50KSB7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0dGhpcy5yZW1vdmUoKTtcblx0fVxuXG5cdC8qKiBSZW1vdmUgdGhlIHByZXZpZXcgaXRlbSAodXNlIGZyb20gY29tcG9uZW50IGNvZGUpLiAqL1xuXHRyZW1vdmUoKSB7XG5cdFx0aWYgKHRoaXMuX3JlbW92YWJsZSkge1xuXHRcdFx0dGhpcy5yZW1vdmVkLm5leHQodGhpcy5maWxlKTtcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgYXN5bmMgcmVhZEZpbGUoKTogUHJvbWlzZTxzdHJpbmcgfCBBcnJheUJ1ZmZlcj4ge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmcgfCBBcnJheUJ1ZmZlcj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0Y29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuXHRcdFx0cmVhZGVyLm9ubG9hZCA9IGUgPT4ge1xuXHRcdFx0XHRyZXR1cm4gcmVzb2x2ZSgoZS50YXJnZXQgYXMgRmlsZVJlYWRlcikucmVzdWx0KTtcblx0XHRcdH07XG5cblx0XHRcdHJlYWRlci5vbmVycm9yID0gZSA9PiB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoYEZpbGVSZWFkZXIgZmFpbGVkIG9uIGZpbGUgJHt0aGlzLmZpbGUubmFtZX0uYCk7XG5cdFx0XHRcdHJldHVybiByZWplY3QobnVsbCk7XG5cdFx0XHR9O1xuXG5cdFx0XHRpZiAoIXRoaXMuZmlsZSkge1xuXHRcdFx0XHRjb25zb2xlLmVycm9yKCdObyBmaWxlIHRvIHJlYWQuIFBsZWFzZSBwcm92aWRlIGEgZmlsZSB1c2luZyB0aGUgW2ZpbGVdIElucHV0IHByb3BlcnR5LicpO1xuXHRcdFx0XHRyZXR1cm4gcmVqZWN0KG51bGwpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZWFkZXIucmVhZEFzRGF0YVVSTCh0aGlzLmZpbGUpO1xuXHRcdH0pO1xuXHR9XG59XG4iLCJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVNlbGVjdFJlc3VsdCB7XG5cblx0LyoqIFRoZSBhZGRlZCBmaWxlcywgZW1pdHRlZCBpbiB0aGUgZmlsZXNBZGRlZCBldmVudC4gKi9cblx0YWRkZWRGaWxlczogRmlsZVtdO1xuXG5cdC8qKiBUaGUgcmVqZWN0ZWQgZmlsZXMsIGVtaXR0ZWQgaW4gdGhlIGZpbGVzUmVqZWN0ZWQgZXZlbnQuICovXG5cdHJlamVjdGVkRmlsZXM6IEZpbGVbXTtcbn1cblxuLyoqXG4gKiBUaGlzIHNlcnZpY2UgY29udGFpbnMgdGhlIGZpbHRlcmluZyBsb2dpYyB0byBiZSBhcHBsaWVkIHRvXG4gKiBhbnkgZHJvcHBlZCBvciBzZWxlY3RlZCBmaWxlLiBJZiBhIGZpbGUgbWF0Y2hlcyBhbGwgY3JpdGVyaWFcbiAqIGxpa2UgbWF4aW11bSBzaXplIG9yIGFjY2VwdCB0eXBlLCBpdCB3aWxsIGJlIGVtaXR0ZWQgaW4gdGhlXG4gKiBmaWxlc0FkZGVkIGV2ZW50LCBvdGhlcndpc2UgaW4gdGhlIGZpbGVzUmVqZWN0ZWQgZXZlbnQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ3hEcm9wem9uZVNlcnZpY2Uge1xuXG5cdHByaXZhdGUgYWRkZWRGaWxlczogRmlsZVtdID0gW107XG5cdHByaXZhdGUgcmVqZWN0ZWRGaWxlczogRmlsZVtdID0gW107XG5cblx0cGFyc2VGaWxlTGlzdChmaWxlczogRmlsZUxpc3QsIGFjY2VwdDogc3RyaW5nLCBtYXhGaWxlU2l6ZTogbnVtYmVyLCBtdWx0aXBsZTogYm9vbGVhbik6IEZpbGVTZWxlY3RSZXN1bHQge1xuXG5cdFx0dGhpcy5hZGRlZEZpbGVzID0gW107XG5cdFx0dGhpcy5yZWplY3RlZEZpbGVzID0gW107XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBmaWxlID0gZmlsZXMuaXRlbShpKTtcblxuXHRcdFx0aWYgKCFOZ3hEcm9wem9uZVNlcnZpY2UuaXNBY2NlcHRlZChmaWxlLCBhY2NlcHQpKSB7XG5cdFx0XHQgIHRoaXMucmVqZWN0ZWRGaWxlcy5wdXNoKGZpbGUpO1xuXHRcdFx0ICBjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKG1heEZpbGVTaXplICYmIGZpbGUuc2l6ZSA+IG1heEZpbGVTaXplKSB7XG5cdFx0XHRcdHRoaXMucmVqZWN0ZWRGaWxlcy5wdXNoKGZpbGUpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCFtdWx0aXBsZSAmJiB0aGlzLmFkZGVkRmlsZXMubGVuZ3RoID49IDEpIHtcblx0XHRcdFx0Ly8gQWx3YXlzIGVtaXQgdGhlIGxhdGVzdCBmaWxlIGlmIG11bHRpLXNlbGVjdGlvbiBpcyBkaXNhYmxlZC5cblx0XHRcdFx0dGhpcy5yZWplY3RlZEZpbGVzLnB1c2goZmlsZSk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLmFkZGVkRmlsZXMucHVzaChmaWxlKTtcblx0XHR9XG5cblx0XHRjb25zdCByZXN1bHQ6IEZpbGVTZWxlY3RSZXN1bHQgPSB7XG5cdFx0XHRhZGRlZEZpbGVzOiB0aGlzLmFkZGVkRmlsZXMsXG5cdFx0XHRyZWplY3RlZEZpbGVzOiB0aGlzLnJlamVjdGVkRmlsZXNcblx0XHR9O1xuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG4gIHByaXZhdGUgc3RhdGljIGlzQWNjZXB0ZWQoZmlsZTogRmlsZSwgYWNjZXB0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoYWNjZXB0ID09PSAnKicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGFjY2VwdEZpbGV0eXBlcyA9IGFjY2VwdC5zcGxpdCgnLCcpLm1hcChpdCA9PiBpdC50b0xvd2VyQ2FzZSgpLnRyaW0oKSk7XG4gICAgY29uc3QgZmlsZXR5cGUgPSBmaWxlLnR5cGUudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBmaWxlbmFtZSA9IGZpbGUubmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IG1hdGNoZWRGaWxlVHlwZSA9IGFjY2VwdEZpbGV0eXBlcy5maW5kKGFjY2VwdEZpbGV0eXBlID0+IHtcbiAgICAgIC8vIGNoZWNrIGZvciB3aWxkY2FyZCBtaW1ldHlwZSAoZS5nLiBpbWFnZS8qKVxuICAgICAgaWYgKGFjY2VwdEZpbGV0eXBlLmVuZHNXaXRoKCcvKicpKSB7XG4gICAgICAgIHJldHVybiBmaWxldHlwZS5zcGxpdCgnLycpWzBdID09PSBhY2NlcHRGaWxldHlwZS5zcGxpdCgnLycpWzBdO1xuICAgICAgfVxuICAgICAgLy8gY2hlY2sgZm9yIGZpbGUgZXh0ZW5zaW9uIChlLmcuIC5jc3YpXG4gICAgICBpZiAoYWNjZXB0RmlsZXR5cGUuc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgcmV0dXJuIGZpbGVuYW1lLmVuZHNXaXRoKGFjY2VwdEZpbGV0eXBlKTtcbiAgICAgIH1cbiAgICAgIC8vIGNoZWNrIGZvciBleGFjdCBtaW1ldHlwZSBtYXRjaCAoZS5nLiBpbWFnZS9qcGVnKVxuICAgICAgcmV0dXJuIGFjY2VwdEZpbGV0eXBlID09IGZpbGV0eXBlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1hdGNoZWRGaWxlVHlwZSAhPT0gdW5kZWZpbmVkO1xuICB9XG59XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIElucHV0LCBWaWV3Q2hpbGQsIENvbnRlbnRDaGlsZHJlbiwgUXVlcnlMaXN0LCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBTZWxmLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVNlcnZpY2UsIEZpbGVTZWxlY3RSZXN1bHQgfSBmcm9tICcuLi9uZ3gtZHJvcHpvbmUuc2VydmljZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuLi9uZ3gtZHJvcHpvbmUtcHJldmlldy9uZ3gtZHJvcHpvbmUtcHJldmlldy5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5neERyb3B6b25lQ2hhbmdlRXZlbnQge1xuICBzb3VyY2U6IE5neERyb3B6b25lQ29tcG9uZW50O1xuICBhZGRlZEZpbGVzOiBGaWxlW107XG4gIHJlamVjdGVkRmlsZXM6IEZpbGVbXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LWRyb3B6b25lLCBbbmd4LWRyb3B6b25lXScsXG4gIHRlbXBsYXRlOiBgPGlucHV0ICNmaWxlSW5wdXQgdHlwZT1cImZpbGVcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgW211bHRpcGxlXT1cIm11bHRpcGxlXCIgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAoY2hhbmdlKT1cIl9vbkZpbGVzU2VsZWN0ZWQoJGV2ZW50KVwiPlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwibmd4LWRyb3B6b25lLWxhYmVsXCIgKm5nSWY9XCIhX2hhc1ByZXZpZXdzXCI+PC9uZy1jb250ZW50PlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwibmd4LWRyb3B6b25lLXByZXZpZXdcIj48L25nLWNvbnRlbnQ+XG5gLFxuICBzdHlsZXM6IFtgOmhvc3QoKXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDoxODBweDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzcxNzM4Njtib3JkZXI6MnB4IGRhc2hlZCAjNzE3Mzg2O2JvcmRlci1yYWRpdXM6NXB4O2ZvbnQtc2l6ZToxNnB4O292ZXJmbG93LXg6YXV0b306aG9zdCgpLm5neC1kei1ob3ZlcmVke2JvcmRlci1zdHlsZTpzb2xpZH06aG9zdCgpLm5neC1kei1kaXNhYmxlZHtvcGFjaXR5Oi41O2N1cnNvcjpuby1kcm9wO3BvaW50ZXItZXZlbnRzOm5vbmV9Omhvc3QoKS5leHBhbmRhYmxle292ZXJmbG93OmhpZGRlbjtoZWlnaHQ6dW5zZXQ7bWluLWhlaWdodDoxODBweDtmbGV4LXdyYXA6d3JhcH06aG9zdCgpIDo6bmctZGVlcCBuZ3gtZHJvcHpvbmUtbGFiZWx7dGV4dC1hbGlnbjpjZW50ZXI7ei1pbmRleDoxMDttYXJnaW46MTBweCBhdXRvfWBdLFxuICBwcm92aWRlcnM6IFtOZ3hEcm9wem9uZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIE5neERyb3B6b25lQ29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIHByaXZhdGUgc2VydmljZTogTmd4RHJvcHpvbmVTZXJ2aWNlXG4gICkgeyB9XG5cbiAgLyoqIEEgbGlzdCBvZiB0aGUgY29udGVudC1wcm9qZWN0ZWQgcHJldmlldyBjaGlsZHJlbi4gKi9cbiAgQENvbnRlbnRDaGlsZHJlbihOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgX3ByZXZpZXdDaGlsZHJlbjogUXVlcnlMaXN0PE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudD47XG5cbiAgZ2V0IF9oYXNQcmV2aWV3cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9wcmV2aWV3Q2hpbGRyZW4ubGVuZ3RoO1xuICB9XG5cbiAgLyoqIEEgdGVtcGxhdGUgcmVmZXJlbmNlIHRvIHRoZSBuYXRpdmUgZmlsZSBpbnB1dCBlbGVtZW50LiAqL1xuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBfZmlsZUlucHV0OiBFbGVtZW50UmVmO1xuXG4gIC8qKiBFbWl0dGVkIHdoZW4gYW55IGZpbGVzIHdlcmUgYWRkZWQgb3IgcmVqZWN0ZWQuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE5neERyb3B6b25lQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgLyoqIFNldCB0aGUgYWNjZXB0ZWQgZmlsZSB0eXBlcy4gRGVmYXVsdHMgdG8gJyonLiAqL1xuICBASW5wdXQoKSBhY2NlcHQgPSAnKic7XG5cbiAgLyoqIERpc2FibGUgYW55IHVzZXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgY29tcG9uZW50LiAqL1xuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5neC1kei1kaXNhYmxlZCcpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuX2lzSG92ZXJlZCkge1xuICAgICAgdGhpcy5faXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqIEFsbG93IHRoZSBzZWxlY3Rpb24gb2YgbXVsdGlwbGUgZmlsZXMuICovXG4gIEBJbnB1dCgpXG4gIGdldCBtdWx0aXBsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlwbGU7XG4gIH1cbiAgc2V0IG11bHRpcGxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbXVsdGlwbGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX211bHRpcGxlID0gdHJ1ZTtcblxuICAvKiogU2V0IHRoZSBtYXhpbXVtIHNpemUgYSBzaW5nbGUgZmlsZSBtYXkgaGF2ZS4gKi9cbiAgQElucHV0KClcbiAgZ2V0IG1heEZpbGVTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heEZpbGVTaXplO1xuICB9XG4gIHNldCBtYXhGaWxlU2l6ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWF4RmlsZVNpemUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfbWF4RmlsZVNpemU6IG51bWJlciA9IHVuZGVmaW5lZDtcblxuICAvKiogQWxsb3cgdGhlIGRyb3B6b25lIGNvbnRhaW5lciB0byBleHBhbmQgdmVydGljYWxseS4gKi9cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5leHBhbmRhYmxlJylcbiAgZ2V0IGV4cGFuZGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2V4cGFuZGFibGU7XG4gIH1cbiAgc2V0IGV4cGFuZGFibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9leHBhbmRhYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9leHBhbmRhYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5uZ3gtZHotaG92ZXJlZCcpXG4gIF9pc0hvdmVyZWQgPSBmYWxzZTtcblxuICAvKiogU2hvdyB0aGUgbmF0aXZlIE9TIGZpbGUgZXhwbG9yZXIgdG8gc2VsZWN0IGZpbGVzLiAqL1xuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHNob3dGaWxlU2VsZWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAodGhpcy5fZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudCkuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnb3ZlcicsIFsnJGV2ZW50J10pXG4gIF9vbkRyYWdPdmVyKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByZXZlbnREZWZhdWx0KGV2ZW50KTtcbiAgICB0aGlzLl9pc0hvdmVyZWQgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJylcbiAgX29uRHJhZ0xlYXZlKCkge1xuICAgIHRoaXMuX2lzSG92ZXJlZCA9IGZhbHNlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJvcCcsIFsnJGV2ZW50J10pXG4gIF9vbkRyb3AoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJldmVudERlZmF1bHQoZXZlbnQpO1xuICAgIHRoaXMuX2lzSG92ZXJlZCA9IGZhbHNlO1xuICAgIHRoaXMuaGFuZGxlRmlsZURyb3AoZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKTtcbiAgfVxuXG4gIF9vbkZpbGVzU2VsZWN0ZWQoZXZlbnQpIHtcbiAgICBjb25zdCBmaWxlczogRmlsZUxpc3QgPSBldmVudC50YXJnZXQuZmlsZXM7XG4gICAgdGhpcy5oYW5kbGVGaWxlRHJvcChmaWxlcyk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUZpbGVEcm9wKGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIGNvbnN0IHJlc3VsdDogRmlsZVNlbGVjdFJlc3VsdCA9XG4gICAgICB0aGlzLnNlcnZpY2UucGFyc2VGaWxlTGlzdChmaWxlcywgdGhpcy5hY2NlcHQsIHRoaXMubWF4RmlsZVNpemUsIHRoaXMubXVsdGlwbGUpO1xuXG4gICAgdGhpcy5jaGFuZ2UubmV4dCh7XG4gICAgICBhZGRlZEZpbGVzOiByZXN1bHQuYWRkZWRGaWxlcyxcbiAgICAgIHJlamVjdGVkRmlsZXM6IHJlc3VsdC5yZWplY3RlZEZpbGVzLFxuICAgICAgc291cmNlOiB0aGlzXG4gICAgfSk7XG5cbiAgICAvLyBSZXNldCB0aGUgbmF0aXZlIGZpbGUgaW5wdXQgZWxlbWVudCB0byBhbGxvdyBzZWxlY3RpbmcgdGhlIHNhbWUgZmlsZSBhZ2FpblxuICAgIHRoaXMuX2ZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gIH1cblxuICBwcml2YXRlIHByZXZlbnREZWZhdWx0KGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4uL25neC1kcm9wem9uZS1wcmV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtZHJvcHpvbmUtaW1hZ2UtcHJldmlldycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGltZyBbc3JjXT1cImltYWdlU3JjXCIgLz5cblx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJuZ3gtZHJvcHpvbmUtbGFiZWxcIj48L25nLWNvbnRlbnQ+XG4gICAgPG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2UgKm5nSWY9XCJyZW1vdmFibGVcIiAoY2xpY2spPVwiX3JlbW92ZSgkZXZlbnQpXCI+XG4gICAgPC9uZ3gtZHJvcHpvbmUtcmVtb3ZlLWJhZGdlPlxuXHRgLFxuICBzdHlsZXM6IFtgOmhvc3QoKXttaW4td2lkdGg6dW5zZXQhaW1wb3J0YW50O21heC13aWR0aDp1bnNldCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudH06aG9zdCgpOmZvY3VzIGltZyw6aG9zdCgpOmhvdmVyIGltZ3tvcGFjaXR5Oi43fTpob3N0KCk6Zm9jdXMgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZSw6aG9zdCgpOmhvdmVyIG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2V7b3BhY2l0eToxfTpob3N0KCkgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZXtvcGFjaXR5OjB9Omhvc3QoKSBpbWd7bWF4LWhlaWdodDoxMDAlO2JvcmRlci1yYWRpdXM6NXB4O29wYWNpdHk6Ljh9Omhvc3QoKSA6Om5nLWRlZXAgbmd4LWRyb3B6b25lLWxhYmVse3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93LXdyYXA6YnJlYWstd29yZH1gXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IE5neERyb3B6b25lSW1hZ2VQcmV2aWV3Q29tcG9uZW50XG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neERyb3B6b25lSW1hZ2VQcmV2aWV3Q29tcG9uZW50IGV4dGVuZHMgTmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuICApIHtcbiAgICBzdXBlcihzYW5pdGl6ZXIpO1xuICB9XG5cbiAgLyoqIFRoZSBpbWFnZSBkYXRhIHNvdXJjZS4gKi9cbiAgaW1hZ2VTcmM6IHN0cmluZyB8IEFycmF5QnVmZmVyID0gJyc7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZWFkRmlsZSgpXG4gICAgICAudGhlbihpbWcgPT4gdGhpcy5pbWFnZVNyYyA9IGltZylcbiAgICAgIC5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2UnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzdmc+XG4gICAgICA8bGluZSB4MT1cIjBcIiB5MT1cIjBcIiB4Mj1cIjEwXCIgeTI9XCIxMFwiIC8+XG4gICAgICA8bGluZSB4MT1cIjBcIiB5MT1cIjEwXCIgeDI9XCIxMFwiIHkyPVwiMFwiIC8+XG4gICAgPC9zdmc+XG4gIGAsXG4gIHN0eWxlczogW2A6aG9zdCgpe2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6MjJweDt3aWR0aDoyMnB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1cHg7cmlnaHQ6NXB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6I2JiYjtjb2xvcjojMzMzO2N1cnNvcjpwb2ludGVyfTpob3N0KCk6aG92ZXJ7YmFja2dyb3VuZDojYWVhZWFlfTpob3N0KCk+c3Zne2hlaWdodDoxMHB4O3dpZHRoOjEwcHh9Omhvc3QoKT5zdmc+bGluZXtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZTojZmZmfWBdXG59KVxuZXhwb3J0IGNsYXNzIE5neERyb3B6b25lUmVtb3ZlQmFkZ2VDb21wb25lbnQgeyB9XG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuLi9uZ3gtZHJvcHpvbmUtcHJldmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1kcm9wem9uZS12aWRlby1wcmV2aWV3JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dmlkZW8gKm5nSWY9XCJzYW5pdGl6ZWRWaWRlb1NyY1wiIGNvbnRyb2xzIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgIDxzb3VyY2UgW3NyY109XCJzYW5pdGl6ZWRWaWRlb1NyY1wiIC8+XG4gICAgPC92aWRlbz5cbiAgICA8bmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZSAqbmdJZj1cInJlbW92YWJsZVwiIChjbGljayk9XCJfcmVtb3ZlKCRldmVudClcIj5cbiAgICA8L25neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2U+XG5cdGAsXG4gIHN0eWxlczogW2A6aG9zdCgpe21pbi13aWR0aDp1bnNldCFpbXBvcnRhbnQ7bWF4LXdpZHRoOnVuc2V0IWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50fTpob3N0KCk6Zm9jdXMgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZSw6aG9zdCgpOmhvdmVyIG5neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2V7b3BhY2l0eToxfTpob3N0KCkgbmd4LWRyb3B6b25lLXJlbW92ZS1iYWRnZXtvcGFjaXR5OjB9Omhvc3QoKSB2aWRlb3ttYXgtaGVpZ2h0OjEwMCU7Ym9yZGVyLXJhZGl1czo1cHh9YF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBOZ3hEcm9wem9uZVZpZGVvUHJldmlld0NvbXBvbmVudFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hEcm9wem9uZVZpZGVvUHJldmlld0NvbXBvbmVudCBleHRlbmRzIE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuICApIHtcbiAgICBzdXBlcihzYW5pdGl6ZXIpO1xuICB9XG5cbiAgLyoqIFRoZSB2aWRlbyBkYXRhIHNvdXJjZS4gKi9cbiAgc2FuaXRpemVkVmlkZW9TcmM6IFNhZmVVcmw7XG5cbiAgcHJpdmF0ZSB2aWRlb1NyYzogc3RyaW5nO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5maWxlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdObyBmaWxlIHRvIHJlYWQuIFBsZWFzZSBwcm92aWRlIGEgZmlsZSB1c2luZyB0aGUgW2ZpbGVdIElucHV0IHByb3BlcnR5LicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdlIHNhbml0aXplIHRoZSBVUkwgaGVyZSB0byBlbmFibGUgdGhlIHByZXZpZXcuXG4gICAgICogUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGNvdWxkIGNhdXNlIHNlY3VyaXR5IGlzc3VlcyFcbiAgICAgKiovXG4gICAgdGhpcy52aWRlb1NyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwodGhpcy5maWxlKTtcbiAgICB0aGlzLnNhbml0aXplZFZpZGVvU3JjID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybCh0aGlzLnZpZGVvU3JjKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIFVSTC5yZXZva2VPYmplY3RVUkwodGhpcy52aWRlb1NyYyk7XG4gIH1cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmd4RHJvcHpvbmVMYWJlbERpcmVjdGl2ZSB9IGZyb20gJy4vbmd4LWRyb3B6b25lLWxhYmVsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL25neC1kcm9wem9uZS1wcmV2aWV3L25neC1kcm9wem9uZS1wcmV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZUNvbXBvbmVudCB9IGZyb20gJy4vbmd4LWRyb3B6b25lL25neC1kcm9wem9uZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4RHJvcHpvbmVJbWFnZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL25neC1kcm9wem9uZS1wcmV2aWV3L25neC1kcm9wem9uZS1pbWFnZS1wcmV2aWV3L25neC1kcm9wem9uZS1pbWFnZS1wcmV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hEcm9wem9uZVJlbW92ZUJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtZHJvcHpvbmUtcHJldmlldy9uZ3gtZHJvcHpvbmUtcmVtb3ZlLWJhZGdlL25neC1kcm9wem9uZS1yZW1vdmUtYmFkZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IE5neERyb3B6b25lVmlkZW9QcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtZHJvcHpvbmUtcHJldmlldy9uZ3gtZHJvcHpvbmUtdmlkZW8tcHJldmlldy9uZ3gtZHJvcHpvbmUtdmlkZW8tcHJldmlldy5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuXHRpbXBvcnRzOiBbXG5cdFx0Q29tbW9uTW9kdWxlXG5cdF0sXG5cdGRlY2xhcmF0aW9uczogW1xuXHRcdE5neERyb3B6b25lQ29tcG9uZW50LFxuXHRcdE5neERyb3B6b25lTGFiZWxEaXJlY3RpdmUsXG5cdFx0Tmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50LFxuXHRcdE5neERyb3B6b25lSW1hZ2VQcmV2aWV3Q29tcG9uZW50LFxuXHRcdE5neERyb3B6b25lUmVtb3ZlQmFkZ2VDb21wb25lbnQsXG5cdFx0Tmd4RHJvcHpvbmVWaWRlb1ByZXZpZXdDb21wb25lbnQsXG5cdF0sXG5cdGV4cG9ydHM6IFtcblx0XHROZ3hEcm9wem9uZUNvbXBvbmVudCxcblx0XHROZ3hEcm9wem9uZUxhYmVsRGlyZWN0aXZlLFxuXHRcdE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCxcblx0XHROZ3hEcm9wem9uZUltYWdlUHJldmlld0NvbXBvbmVudCxcblx0XHROZ3hEcm9wem9uZVJlbW92ZUJhZGdlQ29tcG9uZW50LFxuXHRcdE5neERyb3B6b25lVmlkZW9QcmV2aWV3Q29tcG9uZW50LFxuXHRdXG59KVxuZXhwb3J0IGNsYXNzIE5neERyb3B6b25lTW9kdWxlIHsgfVxuIl0sIm5hbWVzIjpbInRzbGliXzEuX19leHRlbmRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtJQUVBO0tBRzBDOztnQkFIekMsU0FBUyxTQUFDO29CQUNWLFFBQVEsRUFBRSxvQkFBb0I7aUJBQzlCOztJQUN3QyxnQ0FBQztDQUFBOzs7Ozs7Ozs7Ozs7QUNBMUMsU0FBZ0IscUJBQXFCLENBQUMsS0FBVTtJQUUvQyxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksS0FBRyxLQUFPLEtBQUssT0FBTyxDQUFDO0NBQy9DOzs7Ozs7O0FBTUQsU0FBZ0Isb0JBQW9CLENBQUMsS0FBVTs7OztJQUs5QyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxvQkFBQyxLQUFLLEdBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7Q0FDMUY7Ozs7Ozs7O0lDZkEsWUFBYTtJQUNiLFVBQVc7Ozs7QUFHWjtJQVdDLHFDQUNXLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFjeEIsZUFB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

@@ -17,2 +17,3 @@ export interface FileSelectResult {

parseFileList(files: FileList, accept: string, maxFileSize: number, multiple: boolean): FileSelectResult;
private static isAccepted;
}
{
"name": "ngx-dropzone",
"description": "A highly configurable dropzone component for Angular.",
"version": "2.0.2",
"version": "2.0.3",
"author": "Peter Freeman",

@@ -6,0 +6,0 @@ "keywords": [

@@ -91,3 +91,3 @@ # ngx-dropzone

* `[disabled]`: Disable any user interaction with the component. Defaults to `false`.
* `[expandable]`: Allow the dropzone container to expand vertically as the number of previewed files rises. Defaults to `false` which means that it will allow for horizontal scrolling.
* `[expandable]`: Allow the dropzone container to expand vertically as the number of previewed files increases. Defaults to `false` which means that it will allow for horizontal scrolling.

@@ -123,3 +123,3 @@ It has the following Output event:

The `ngx-dropzone-image-preview` and `ngx-dropzone-video-preview` components inherit from this component but expand the preview functionality to display either images or videos directly in the component. See the wiki on how to implement your own custom preview components.
The `ngx-dropzone-image-preview` and `ngx-dropzone-video-preview` components inherit from this component but expand the preview functionality to display either images or videos directly in the component. See the [wiki](https://github.com/peterfreeman/ngx-dropzone/wiki/How-to-create-a-custom-preview-component%3F) on how to implement your own custom preview components.

@@ -130,4 +130,8 @@ #### ngx-dropzone-remove-badge

## Other
[How to upload a file to a Web API?](https://github.com/peterfreeman/ngx-dropzone/wiki/How-to-upload-a-file-to-a-Web-service-API%3F)
## Licence
MIT © Peter Freeman

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc