New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@firestitch/file

Package Overview
Dependencies
Maintainers
6
Versions
221
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@firestitch/file - npm Package Compare versions

Comparing version 12.5.0 to 12.5.1

0

app/classes/file-processor.d.ts

@@ -0,0 +0,0 @@ import { Observable } from 'rxjs';

export * from './file-processor';
export * from './input-processor';

@@ -0,0 +0,0 @@ import { ElementRef, EventEmitter, NgZone } from '@angular/core';

@@ -0,0 +0,0 @@ import { OnInit } from '@angular/core';

@@ -0,0 +0,0 @@ import { OnDestroy } from '@angular/core';

@@ -0,0 +0,0 @@ import { OnInit } from '@angular/core';

@@ -0,0 +0,0 @@ import { ChangeDetectorRef, EventEmitter, NgZone } from '@angular/core';

@@ -0,0 +0,0 @@ import { EventEmitter, OnInit, NgZone, ChangeDetectorRef, QueryList, TemplateRef, OnDestroy } from '@angular/core';

@@ -0,0 +0,0 @@ import { QueryList, TemplateRef } from '@angular/core';

@@ -0,0 +0,0 @@ import { EventEmitter, AfterContentInit, ChangeDetectorRef } from '@angular/core';

@@ -0,0 +0,0 @@ import { EventEmitter } from '@angular/core';

@@ -0,0 +0,0 @@ import { ElementRef, EventEmitter, NgZone, OnDestroy, OnInit } from '@angular/core';

@@ -0,0 +0,0 @@ import * as i0 from "@angular/core";

@@ -0,0 +0,0 @@ import * as i0 from "@angular/core";

@@ -0,0 +0,0 @@ import { EventEmitter } from '@angular/core';

@@ -0,0 +0,0 @@ import { ModuleWithProviders } from '@angular/core';

import { InjectionToken } from '@angular/core';
export declare const FS_FILE_MODULE_CONFIG: InjectionToken<any[]>;
export declare function createBlob(data: any, name: any, type: any): any;
export declare function getCordovaCamera(): any;
export declare function getCordovaCapture(): any;
export declare function getCordovaResolveLocalFileSystemURL(): any;
export declare function hasCordovaCameraSupport(): any;
export declare function hasCordovaCaptureSupport(): any;

@@ -0,0 +0,0 @@ export * from './scale-exif-image';

export declare function isImageType(type: string): boolean;
export declare function ScaleExifImage(canvas: any, orientation: any, maxWidth?: any, maxHeight?: any): any;

@@ -0,0 +0,0 @@ export interface FsFileConfig {

export * from './file-config.interface';

@@ -0,0 +0,0 @@ export interface FsFileModuleConfig {

@@ -0,0 +0,0 @@ import { FsFileConfig } from '../interfaces';

export * from './process-config';
export * from './fs-file';

@@ -0,0 +0,0 @@ import { FsFileConfig } from '../interfaces';

@@ -0,0 +0,0 @@ import { Observable } from 'rxjs';

@@ -0,0 +0,0 @@ import { __awaiter } from "tslib";

export * from './file-processor';
export * from './input-processor';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2NsYXNzZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9maWxlLXByb2Nlc3Nvcic7XG5leHBvcnQgKiBmcm9tICcuL2lucHV0LXByb2Nlc3Nvcic7XG4iXX0=

@@ -0,0 +0,0 @@ import { EventEmitter } from '@angular/core';

@@ -0,0 +0,0 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';

@@ -0,0 +0,0 @@ import { ChangeDetectionStrategy, Component, HostBinding, HostListener } from '@angular/core';

@@ -0,0 +0,0 @@ import { ChangeDetectionStrategy, Component } from '@angular/core';

@@ -0,0 +0,0 @@ import { Component, Inject, ChangeDetectionStrategy } from '@angular/core';

@@ -0,0 +0,0 @@ import { EventEmitter, Component, Input, Output, ChangeDetectionStrategy, } from '@angular/core';

@@ -0,0 +0,0 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, NgZone, Output } from '@angular/core';

4

esm2015/app/components/fs-file-picker/fs-file-picker.component.js

@@ -164,3 +164,3 @@ import { EventEmitter, Component, Input, Output, ViewChild, Inject, Optional, NgZone, ChangeDetectionStrategy, forwardRef, ChangeDetectorRef, QueryList, ContentChildren } from '@angular/core';

}
], queries: [{ propertyName: "labels", predicate: FsFileLabelDirective }], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fs-label-field \n class=\"fs-form-wrapper fs-label\"\n [ngClass]=\"{ 'percent-preview': previewPercent }\">\n <ng-container *ngIf=\"label; else labelContent\">\n <fs-label>{{label}}</fs-label>\n </ng-container>\n <ng-template #labelContent>\n <fs-label *ngIf=\"labels.length\">\n <ng-content select=\"[fsFileLabel]\"></ng-content>\n </fs-label>\n </ng-template>\n <fs-file\n [accept]=\"accept\"\n (select)=\"selectFile($event)\"\n [imageWidth]=\"imageWidth\"\n [imageHeight]=\"imageHeight\"\n [imageQuality]=\"imageQuality\"\n [disabled]=\"disabled\">\n <div \n class=\"wrap\"\n [style.width]=\"previewWidth\"\n [style.height]=\"previewHeight\">\n <fs-file-preview\n class=\"preview\"\n *ngIf=\"file; else preview\"\n (remove)=\"removeFile()\"\n [file]=\"file\"\n [showFilename]=\"showFilename\"\n [previewHeight]=\"null\"\n [previewWidth]=\"null\">\n <ng-template\n fs-file-preview-action\n placement=\"top-right\"\n action=\"remove\"\n tooltip=\"Remove\"\n *ngIf=\"allowRemove\" \n (click)=\"actionClick($event)\">\n <mat-icon>close</mat-icon>\n </ng-template>\n <ng-template\n fs-file-preview-action\n placement=\"bottom-right\"\n tooltip=\"Reupload\"\n *ngIf=\"allowReupload\">\n <mat-icon>cloud_upload</mat-icon>\n </ng-template>\n <ng-template\n fs-file-preview-action\n placement=\"bottom-left\"\n action=\"download\"\n tooltip=\"Download\"\n [hide]=\"!(allowDownload && ((download.observers.length && file) || file.url))\"\n (click)=\"downloadClicked($event)\">\n <a \n [href]=\"file.url\" \n target=\"_blank\" \n tabindex=\"-1\" \n class=\"download\">\n <mat-icon>cloud_download</mat-icon>\n </a>\n </ng-template>\n </fs-file-preview>\n\n <ng-template #preview>\n <div class=\"select\">\n <mat-icon>cloud_upload</mat-icon>\n <div class=\"instruction\">{{instruction}}</div>\n <div class=\"mat-raised-button mat-primary\">Upload</div>\n </div>\n </ng-template>\n </div>\n </fs-file>\n <fs-label-message class=\"fs-form-message\">\n <span class=\"fs-form-hint\">\n <ng-content select=\"[fsFileHint]\"></ng-content>\n <ng-content select=\"[fsFileMessageLabel]\"></ng-content>\n </span>\n </fs-label-message>\n</fs-label-field>", styles: [":host .wrap{border:1px #efefef solid;border-radius:3px}:host .wrap:after{border-width:3px;border-style:dashed;border-radius:3px}:host.dragover .wrap{border-color:transparent}:host.dragover .wrap:after{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0}:host.dragover .wrap .select{border:none}:host.dragover .select button{display:none}:host.dragover .select .mat-icon{color:#07a8e6}:host ::ng-deep .percent-preview fs-file .file-label,:host ::ng-deep .percent-preview fs-file-preview{display:block}:host ::ng-deep fs-file .file-label{position:relative}:host ::ng-deep fs-file-preview{border:none;height:100%;width:100%}:host ::ng-deep fs-file-preview .preview-container{order:none;display:flex;justify-content:center;align-items:center;flex-grow:1;height:100%}:host .download{color:inherit}:host .select{text-align:center;width:100%;height:100%;vertical-align:middle;padding:0 10px;justify-content:center;flex-direction:column;box-sizing:border-box;display:flex;align-items:center}:host .select mat-icon{transform:scale(1.8);color:#ddd}:host .instruction{font-size:75%;padding:12px 0;line-height:normal}\n"], components: [{ type: i2.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i2.FsLabelComponent, selector: "fs-label" }, { type: i3.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "clicked", "declined"] }, { type: i4.FsFilePreviewComponent, selector: "fs-file-preview", inputs: ["showFilename", "setActions", "setActionsTemplate", "previewWidth", "previewHeight", "file"], outputs: ["remove"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.FsLabelMessageComponent, selector: "fs-label-message" }], directives: [{ type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.FsFilePreviewActionDirective, selector: "[fs-file-preview-action]", inputs: ["placement", "tooltip", "action", "hide", "for-types"], outputs: ["click"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
], queries: [{ propertyName: "labels", predicate: FsFileLabelDirective }], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fs-label-field\n class=\"fs-form-wrapper\"\n [ngClass]=\"{ 'percent-preview': previewPercent }\">\n <ng-container *ngIf=\"label; else labelContent\">\n <fs-label class=\"fs-form-label\">{{label}}</fs-label>\n </ng-container>\n <ng-template #labelContent>\n <fs-label *ngIf=\"labels.length\" class=\"fs-form-label\">\n <ng-content select=\"[fsFileLabel]\"></ng-content>\n </fs-label>\n </ng-template>\n <fs-file\n [accept]=\"accept\"\n (select)=\"selectFile($event)\"\n [imageWidth]=\"imageWidth\"\n [imageHeight]=\"imageHeight\"\n [imageQuality]=\"imageQuality\"\n [disabled]=\"disabled\">\n <div\n class=\"wrap\"\n [style.width]=\"previewWidth\"\n [style.height]=\"previewHeight\">\n <fs-file-preview\n class=\"preview\"\n *ngIf=\"file; else preview\"\n (remove)=\"removeFile()\"\n [file]=\"file\"\n [showFilename]=\"showFilename\"\n [previewHeight]=\"null\"\n [previewWidth]=\"null\">\n <ng-template\n fs-file-preview-action\n placement=\"top-right\"\n action=\"remove\"\n tooltip=\"Remove\"\n *ngIf=\"allowRemove\"\n (click)=\"actionClick($event)\">\n <mat-icon>close</mat-icon>\n </ng-template>\n <ng-template\n fs-file-preview-action\n placement=\"bottom-right\"\n tooltip=\"Reupload\"\n *ngIf=\"allowReupload\">\n <mat-icon>cloud_upload</mat-icon>\n </ng-template>\n <ng-template\n fs-file-preview-action\n placement=\"bottom-left\"\n action=\"download\"\n tooltip=\"Download\"\n [hide]=\"!(allowDownload && ((download.observers.length && file) || file.url))\"\n (click)=\"downloadClicked($event)\">\n <a\n [href]=\"file.url\"\n target=\"_blank\"\n tabindex=\"-1\"\n class=\"download\">\n <mat-icon>cloud_download</mat-icon>\n </a>\n </ng-template>\n </fs-file-preview>\n\n <ng-template #preview>\n <div class=\"select\">\n <mat-icon>cloud_upload</mat-icon>\n <div class=\"instruction\">{{instruction}}</div>\n <div class=\"mat-raised-button mat-primary\">Upload</div>\n </div>\n </ng-template>\n </div>\n </fs-file>\n <fs-label-message class=\"fs-form-message\">\n <span class=\"fs-form-hint\">\n <ng-content select=\"[fsFileHint]\"></ng-content>\n <ng-content select=\"[fsFileMessageLabel]\"></ng-content>\n </span>\n </fs-label-message>\n</fs-label-field>\n", styles: [":host .wrap{border:1px #efefef solid;border-radius:3px}:host .wrap:after{border-width:3px;border-style:dashed;border-radius:3px}:host.dragover .wrap{border-color:transparent}:host.dragover .wrap:after{content:\"\";position:absolute;top:0;right:0;bottom:0;left:0}:host.dragover .wrap .select{border:none}:host.dragover .select button{display:none}:host.dragover .select .mat-icon{color:#07a8e6}:host ::ng-deep .percent-preview fs-file .file-label,:host ::ng-deep .percent-preview fs-file-preview{display:block}:host ::ng-deep fs-file .file-label{position:relative}:host ::ng-deep fs-file-preview{border:none;height:100%;width:100%}:host ::ng-deep fs-file-preview .preview-container{order:none;display:flex;justify-content:center;align-items:center;flex-grow:1;height:100%}:host .download{color:inherit}:host .select{text-align:center;width:100%;height:100%;vertical-align:middle;padding:0 10px;justify-content:center;flex-direction:column;box-sizing:border-box;display:flex;align-items:center}:host .select mat-icon{transform:scale(1.8);color:#ddd}:host .instruction{font-size:75%;padding:12px 0;line-height:normal}\n"], components: [{ type: i2.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i2.FsLabelComponent, selector: "fs-label" }, { type: i3.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "clicked", "declined"] }, { type: i4.FsFilePreviewComponent, selector: "fs-file-preview", inputs: ["showFilename", "setActions", "setActionsTemplate", "previewWidth", "previewHeight", "file"], outputs: ["remove"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i2.FsLabelMessageComponent, selector: "fs-label-message" }], directives: [{ type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.FsFilePreviewActionDirective, selector: "[fs-file-preview-action]", inputs: ["placement", "tooltip", "action", "hide", "for-types"], outputs: ["click"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FsFilePickerComponent, decorators: [{

@@ -238,2 +238,2 @@ type: Component,

}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtZmlsZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2ZzLWZpbGUtcGlja2VyL2ZzLWZpbGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mcy1maWxlLXBpY2tlci9mcy1maWxlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxNQUFNLEVBQ04sUUFBUSxFQUVSLE1BQU0sRUFDTix1QkFBdUIsRUFDdkIsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUdoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXlELGFBQWEsRUFBRSxpQkFBaUIsRUFBK0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0SixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBTyxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQXFCM0QsTUFBTSxPQUFPLHFCQUFzQixTQUFRLHVC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LGFBQWE7NEJBQ3RCLFdBQVcsdUJBQXVCOzRCQUNsQyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDQTtpQkFDRjs7MEJBK0ZJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCOzhIQTNGcEMsU0FBUztzQkFEZixTQUFTO3VCQUFDLFdBQVc7Z0JBSWYsTUFBTTtzQkFEWixlQUFlO3VCQUFDLG9CQUFvQjtnQkFHckIsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFFWSxHQUFHO3NCQUFwQixLQUFLO3VCQUFDLEtBQUs7Z0JBSU8sSUFBSTtzQkFBdEIsS0FBSzt1QkFBQyxNQUFNO2dCQWNGLE1BQU07c0JBRGhCLEtBQUs7Z0JBY0ssUUFBUTtzQkFEbEIsS0FBSztnQkFVSyxZQUFZO3NCQUR0QixLQUFLO2dCQVVLLGFBQWE7c0JBRHZCLEtBQUs7Z0JBU1csTUFBTTtzQkFBdEIsTUFBTTtnQkFDVSxNQUFNO3NCQUF0QixNQUFNO2dCQUNVLFFBQVE7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFdmVudEVtaXR0ZXIsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBJbmplY3QsXG4gIE9wdGlvbmFsLFxuICBPbkluaXQsXG4gIE5nWm9uZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIGZvcndhcmRSZWYsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBRdWVyeUxpc3QsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgVGVtcGxhdGVSZWYsXG4gIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQXN5bmNWYWxpZGF0b3IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBGc0ZpbGVMYWJlbERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZnMtZmlsZS1sYWJlbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGaWxlRHJhZ0Jhc2VDb21wb25lbnQgfSBmcm9tICcuLi9mcy1maWxlLWRyYWctYmFzZS9mcy1maWxlLWRyYWctYmFzZSc7XG5pbXBvcnQgeyBJbnB1dFByb2Nlc3NvciB9IGZyb20gJy4uLy4uL2NsYXNzZXMnO1xuaW1wb3J0IHsgRnNGaWxlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZzLWZpbGUnO1xuaW1wb3J0IHsgQ29yZG92YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb3Jkb3ZhLnNlcnZpY2UnO1xuaW1wb3J0IHsgRlNfRklMRV9NT0RVTEVfQ09ORklHIH0gZnJvbSAnLi4vLi4vZnMtZmlsZS5wcm92aWRlcnMnO1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtZmlsZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJ2ZzLWZpbGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2ZzLWZpbGUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRnNGaWxlUGlja2VyQ29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZSxcbiAgfSxcbiAge1xuICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIFxuICAgIHVzZUV4aXN0aW5nOiBGc0ZpbGVQaWNrZXJDb21wb25lbnQsXG4gICAgbXVsdGk6IHRydWVcbiAgfVxuICBdLCAgXG59KVxuZXhwb3J0IGNsYXNzIEZzRmlsZVBpY2tlckNvbXBvbmVudCBleHRlbmRzIEZzRmlsZURyYWdCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQXN5bmNWYWxpZGF0b3IsIE9uRGVzdHJveSB7XG5cbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JykgXG4gIHB1YmxpYyBmaWxlSW5wdXQ6IGFueTtcblxuICBAQ29udGVudENoaWxkcmVuKEZzRmlsZUxhYmVsRGlyZWN0aXZlKVxuICBwdWJsaWMgbGFiZWxzOiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgQElucHV0KCkgcHVibGljIG1pbldpZHRoID0gMDtcbiAgQElucHV0KCkgcHVibGljIG1pbkhlaWdodCA9IDA7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbWFnZVdpZHRoO1xuICBASW5wdXQoKSBwdWJsaWMgaW1hZ2VIZWlnaHQ7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbWFnZVF1YWxpdHk7XG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbDtcbiAgQElucHV0KCkgcHVibGljIHNob3dGaWxlbmFtZSA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxvd0Rvd25sb2FkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxvd1JldXBsb2FkID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGFsbG93UmVtb3ZlID0gZmFsc2U7XG5cbiAgQElucHV0KCd1cmwnKSBzZXQgdXJsKHVybCkge1xuICAgIHRoaXMuZmlsZSA9IHVybCA/IG5ldyBGc0ZpbGUodXJsKSA6IG51bGw7XG4gIH1cblxuICBASW5wdXQoJ2ZpbGUnKSBzZXQgZmlsZShmaWxlKSB7XG4gICAgaWYoZmlsZSkge1xuICAgICAgaWYoZmlsZSBpbnN0YW5jZW9mIEZzRmlsZSkge1xuICAgICAgICB0aGlzLl9maWxlID0gZmlsZTtcbiAgICAgICAgICBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2ZpbGUgPSBuZXcgRnNGaWxlKGZpbGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9maWxlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFjY2VwdCh2YWx1ZSkge1xuICAgIHRoaXMuaW5wdXRQcm9jZXNzb3IuYWNjZXB0ID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjY2VwdCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dFByb2Nlc3Nvci5hY2NlcHQgfHwgJyonO1xuICB9XG4gIFxuICBwdWJsaWMgZ2V0IGZpbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIFxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHByZXZpZXdXaWR0aCh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgdGhpcy5fcHJldmlld1dpZHRoID0gTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSkgPyBgJHt2YWx1ZX1weGAgOiB2YWx1ZT8udG9TdHJpbmcoKSB8fCAnJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJldmlld1dpZHRoKCkge1xuICAgIHJldHVybiB0aGlzLl9wcmV2aWV3V2lkdGg7XG4gIH1cbiAgXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcHJldmlld0hlaWdodCh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgdGhpcy5fcHJldmlld0hlaWdodCA9IE51bWJlci5pc0ludGVnZXIodmFsdWUpID8gYCR7dmFsdWV9cHhgIDogdmFsdWU/LnRvU3RyaW5nKCkgfHwgJyc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHByZXZpZXdIZWlnaHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByZXZpZXdIZWlnaHQ7XG4gIH1cblxuICBAT3V0cHV0KCkgcHVibGljIHNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcHVibGljIHJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBkb3dubG9hZCA9IG5ldyBFdmVudEVtaXR0ZXI8RnNGaWxlPigpO1xuXG4gIHB1YmxpYyBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIHB1YmxpYyBvblRvdWNoOiBhbnkgPSAoKSA9PiB7fTtcbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm4pOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuOyB9XG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbik6IHZvaWQgeyB0aGlzLm9uVG91Y2ggPSBmbjsgfVxuICBwdWJsaWMgaW5wdXRQcm9jZXNzb3IgPSBudWxsO1xuICBwdWJsaWMgaW5zdHJ1Y3Rpb24gPSAnRHJhZyAmIERyb3AgeW91ciBmaWxlIG9yIHVzZSB0aGUgYnV0dG9uIGJlbG93JztcbiAgcHVibGljIF9maWxlOiBGc0ZpbGU7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbjsgIFxuICBwcml2YXRlIF9wcmV2aWV3V2lkdGggPSAnMTUwcHgnO1xuICBwcml2YXRlIF9wcmV2aWV3SGVpZ2h0ID0gJzE1MHB4JztcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChGU19GSUxFX01PRFVMRV9DT05GSUcpIHByaXZhdGUgX21vZHVsZUNvbmZpZyxcbiAgICBwcml2YXRlIF9jb3Jkb3ZhU2VydmljZTogQ29yZG92YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuaW5wdXRQcm9jZXNzb3IgPSBuZXcgSW5wdXRQcm9jZXNzb3IoX2NvcmRvdmFTZXJ2aWNlLCBfbmdab25lKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5fbW9kdWxlQ29uZmlnKSB7XG4gICAgICBpZiAodGhpcy5hbGxvd0Rvd25sb2FkID09PSB2b2lkIDApIHtcbiAgICAgICAgdGhpcy5hbGxvd0Rvd25sb2FkID0gdGhpcy5fbW9kdWxlQ29uZmlnLmFsbG93RG93bmxvYWRcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYWxsb3dSZW1vdmUgPT09IHZvaWQgMCkge1xuICAgICAgICB0aGlzLmFsbG93UmVtb3ZlID0gdGhpcy5fbW9kdWxlQ29uZmlnLmFsbG93UmVtb3ZlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+IHwgIG51bGwgeyBcbiAgICBpZih0aGlzLmZpbGU/LnR5cGVJbWFnZSAmJiAodGhpcy5taW5XaWR0aCB8fCB0aGlzLm1pbkhlaWdodCkpIHtcbiAgICAgIC8vIGlmKHRoaXMuZmlsZS5pbWFnZVdpZHRoIDwgdGhpcy5taW5XaWR0aCkge1xuICAgICAgLy8gICByZXR1cm4geyBtaW5XaWR0aDogYE1pbmltdW0gd2lkdGggJHt0aGlzLm1pbldpZHRofXB4YCB9O1xuICAgICAgLy8gfVxuXG4gICAgICAvLyBpZih0aGlzLmZpbGUuaW1hZ2VIZWlnaHQgPCB0aGlzLm1pbkhlaWdodCkge1xuICAgICAgLy8gICByZXR1cm4geyBtaW5XaWR0aDogYE1pbmltdW0gaGVpZ2h0ICR7dGhpcy5taW5IZWlnaHR9cHhgIH07XG4gICAgICAvLyB9ICAgICAgXG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH0gXG5cbiAgcHVibGljIGdldCBwcmV2aWV3UGVyY2VudCgpIHtcbiAgICByZXR1cm4gU3RyaW5nKHRoaXMuX3ByZXZpZXdXaWR0aCkubWF0Y2goLyUvKTtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKGZpbGUpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGUgPSBmaWxlO1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEZpbGUoZnNGaWxlOiBGc0ZpbGUpIHtcbiAgICBvZih0cnVlKSAgICBcbiAgICAucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbldpZHRoIHx8IHRoaXMubWluSGVpZ2h0ID8gZnJvbShmc0ZpbGUuaW1hZ2VJbmZvKSA6IG9mKHRydWUpO1xuICAgICAgfSksXG4gICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgIClcbiAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZmlsZSA9IGZzRmlsZTtcbiAgICAgIHRoaXMuc2VsZWN0LmVtaXQoZnNGaWxlKTtcbiAgICAgIHRoaXMub25DaGFuZ2UoZnNGaWxlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVGaWxlKCkge1xuICAgIHRoaXMuZmlsZSA9IHZvaWQgMDtcbiAgICB0aGlzLnJlbW92ZS5lbWl0KHRoaXMuZmlsZSk7XG4gICAgdGhpcy5vbkNoYW5nZShudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBhY3Rpb25DbGljayhldmVudDogeyBldmVudDogUG9pbnRlckV2ZW50IH0pIHtcbiAgICBldmVudC5ldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBkb3dubG9hZENsaWNrZWQoZXZlbnQ6IHsgZXZlbnQ6IFBvaW50ZXJFdmVudCB9KSB7XG4gICAgZXZlbnQuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZih0aGlzLmRvd25sb2FkLm9ic2VydmVycy5sZW5ndGgpIHtcbiAgICAgIGV2ZW50LmV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmRvd25sb2FkLmVtaXQodGhpcy5maWxlKTtcbiAgICB9XG4gIH1cbiAgXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzTnVtZXJpYyh2YWx1ZSkge1xuICAgIHJldHVybiAvXi0/XFxkKyQvLnRlc3QodmFsdWUpO1xuICB9XG5cbn1cbiIsIjxmcy1sYWJlbC1maWVsZCBcbiAgICBjbGFzcz1cImZzLWZvcm0td3JhcHBlciBmcy1sYWJlbFwiXG4gICAgW25nQ2xhc3NdPVwieyAncGVyY2VudC1wcmV2aWV3JzogcHJldmlld1BlcmNlbnQgfVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibGFiZWw7IGVsc2UgbGFiZWxDb250ZW50XCI+XG4gICAgPGZzLWxhYmVsPnt7bGFiZWx9fTwvZnMtbGFiZWw+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI2xhYmVsQ29udGVudD5cbiAgICA8ZnMtbGFiZWwgKm5nSWY9XCJsYWJlbHMubGVuZ3RoXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZnNGaWxlTGFiZWxdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZnMtbGFiZWw+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxmcy1maWxlXG4gICAgICBbYWNjZXB0XT1cImFjY2VwdFwiXG4gICAgICAoc2VsZWN0KT1cInNlbGVjdEZpbGUoJGV2ZW50KVwiXG4gICAgICBbaW1hZ2VXaWR0aF09XCJpbWFnZVdpZHRoXCJcbiAgICAgIFtpbWFnZUhlaWdodF09XCJpbWFnZUhlaWdodFwiXG4gICAgICBbaW1hZ2VRdWFsaXR5XT1cImltYWdlUXVhbGl0eVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICA8ZGl2IFxuICAgICAgICBjbGFzcz1cIndyYXBcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwicHJldmlld1dpZHRoXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJwcmV2aWV3SGVpZ2h0XCI+XG4gICAgICA8ZnMtZmlsZS1wcmV2aWV3XG4gICAgICAgICAgY2xhc3M9XCJwcmV2aWV3XCJcbiAgICAgICAgICAqbmdJZj1cImZpbGU7IGVsc2UgcHJldmlld1wiXG4gICAgICAgICAgKHJlbW92ZSk9XCJyZW1vdmVGaWxlKClcIlxuICAgICAgICAgIFtmaWxlXT1cImZpbGVcIlxuICAgICAgICAgIFtzaG93RmlsZW5hbWVdPVwic2hvd0ZpbGVuYW1lXCJcbiAgICAgICAgICBbcHJldmlld0hlaWdodF09XCJudWxsXCJcbiAgICAgICAgICBbcHJldmlld1dpZHRoXT1cIm51bGxcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBmcy1maWxlLXByZXZpZXctYWN0aW9uXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJ0b3AtcmlnaHRcIlxuICAgICAgICAgICAgYWN0aW9uPVwicmVtb3ZlXCJcbiAgICAgICAgICAgIHRvb2x0aXA9XCJSZW1vdmVcIlxuICAgICAgICAgICAgKm5nSWY9XCJhbGxvd1JlbW92ZVwiIFxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbkNsaWNrKCRldmVudClcIj5cbiAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIGZzLWZpbGUtcHJldmlldy1hY3Rpb25cbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICB0b29sdGlwPVwiUmV1cGxvYWRcIlxuICAgICAgICAgICAgKm5nSWY9XCJhbGxvd1JldXBsb2FkXCI+XG4gICAgICAgICAgPG1hdC1pY29uPmNsb3VkX3VwbG9hZDwvbWF0LWljb24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgZnMtZmlsZS1wcmV2aWV3LWFjdGlvblxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgYWN0aW9uPVwiZG93bmxvYWRcIlxuICAgICAgICAgICAgdG9vbHRpcD1cIkRvd25sb2FkXCJcbiAgICAgICAgICAgIFtoaWRlXT1cIiEoYWxsb3dEb3dubG9hZCAmJiAoKGRvd25sb2FkLm9ic2VydmVycy5sZW5ndGggJiYgZmlsZSkgfHwgZmlsZS51cmwpKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRDbGlja2VkKCRldmVudClcIj5cbiAgICAgICAgICA8YSBcbiAgICAgICAgICAgICAgW2hyZWZdPVwiZmlsZS51cmxcIiBcbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCIgXG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIiBcbiAgICAgICAgICAgICAgY2xhc3M9XCJkb3dubG9hZFwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3VkX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2ZzLWZpbGUtcHJldmlldz5cblxuICAgICAgPG5nLXRlbXBsYXRlICNwcmV2aWV3PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCI+XG4gICAgICAgICAgPG1hdC1pY29uPmNsb3VkX3VwbG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImluc3RydWN0aW9uXCI+e3tpbnN0cnVjdGlvbn19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC1yYWlzZWQtYnV0dG9uIG1hdC1wcmltYXJ5XCI+VXBsb2FkPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9mcy1maWxlPlxuICA8ZnMtbGFiZWwtbWVzc2FnZSBjbGFzcz1cImZzLWZvcm0tbWVzc2FnZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwiZnMtZm9ybS1oaW50XCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZnNGaWxlSGludF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZnNGaWxlTWVzc2FnZUxhYmVsXVwiPjwvbmctY29udGVudD5cbiAgICA8L3NwYW4+XG4gIDwvZnMtbGFiZWwtbWVzc2FnZT5cbjwvZnMtbGFiZWwtZmllbGQ+Il19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtZmlsZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2ZzLWZpbGUtcGlja2VyL2ZzLWZpbGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9mcy1maWxlLXBpY2tlci9mcy1maWxlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxNQUFNLEVBQ04sUUFBUSxFQUVSLE1BQU0sRUFDTix1QkFBdUIsRUFDdkIsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUdoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXlELGFBQWEsRUFBRSxpQkFBaUIsRUFBK0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0SixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBTyxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQXFCM0QsTUFBTSxPQUFPLHFCQUFzQixTQUFRLHVC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YUFBYTs0QkFDdEIsV0FBVyx1QkFBdUI7NEJBQ2xDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNBO2lCQUNGOzswQkErRkksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUI7OEhBM0ZwQyxTQUFTO3NCQURmLFNBQVM7dUJBQUMsV0FBVztnQkFJZixNQUFNO3NCQURaLGVBQWU7dUJBQUMsb0JBQW9CO2dCQUdyQixRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUVZLEdBQUc7c0JBQXBCLEtBQUs7dUJBQUMsS0FBSztnQkFJTyxJQUFJO3NCQUF0QixLQUFLO3VCQUFDLE1BQU07Z0JBY0YsTUFBTTtzQkFEaEIsS0FBSztnQkFjSyxRQUFRO3NCQURsQixLQUFLO2dCQVVLLFlBQVk7c0JBRHRCLEtBQUs7Z0JBVUssYUFBYTtzQkFEdkIsS0FBSztnQkFTVyxNQUFNO3NCQUF0QixNQUFNO2dCQUNVLE1BQU07c0JBQXRCLE1BQU07Z0JBQ1UsUUFBUTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEV2ZW50RW1pdHRlcixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIEluamVjdCxcbiAgT3B0aW9uYWwsXG4gIE9uSW5pdCxcbiAgTmdab25lLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgZm9yd2FyZFJlZixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIFF1ZXJ5TGlzdCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBUZW1wbGF0ZVJlZixcbiAgT25EZXN0cm95XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvciwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEZzRmlsZUxhYmVsRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9mcy1maWxlLWxhYmVsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0ZpbGVEcmFnQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2ZzLWZpbGUtZHJhZy1iYXNlL2ZzLWZpbGUtZHJhZy1iYXNlJztcbmltcG9ydCB7IElucHV0UHJvY2Vzc29yIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcyc7XG5pbXBvcnQgeyBGc0ZpbGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZnMtZmlsZSc7XG5pbXBvcnQgeyBDb3Jkb3ZhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvcmRvdmEuc2VydmljZSc7XG5pbXBvcnQgeyBGU19GSUxFX01PRFVMRV9DT05GSUcgfSBmcm9tICcuLi8uLi9mcy1maWxlLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1maWxlLXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnZnMtZmlsZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnZnMtZmlsZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGc0ZpbGVQaWNrZXJDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlLFxuICB9LFxuICB7XG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUywgXG4gICAgdXNlRXhpc3Rpbmc6IEZzRmlsZVBpY2tlckNvbXBvbmVudCxcbiAgICBtdWx0aTogdHJ1ZVxuICB9XG4gIF0sICBcbn0pXG5leHBvcnQgY2xhc3MgRnNGaWxlUGlja2VyQ29tcG9uZW50IGV4dGVuZHMgRnNGaWxlRHJhZ0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBc3luY1ZhbGlkYXRvciwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBcbiAgcHVibGljIGZpbGVJbnB1dDogYW55O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oRnNGaWxlTGFiZWxEaXJlY3RpdmUpXG4gIHB1YmxpYyBsYWJlbHM6IFF1ZXJ5TGlzdDxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICBASW5wdXQoKSBwdWJsaWMgbWluV2lkdGggPSAwO1xuICBASW5wdXQoKSBwdWJsaWMgbWluSGVpZ2h0ID0gMDtcbiAgQElucHV0KCkgcHVibGljIGltYWdlV2lkdGg7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbWFnZUhlaWdodDtcbiAgQElucHV0KCkgcHVibGljIGltYWdlUXVhbGl0eTtcbiAgQElucHV0KCkgcHVibGljIGxhYmVsO1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd0ZpbGVuYW1lID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGFsbG93RG93bmxvYWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGFsbG93UmV1cGxvYWQgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgYWxsb3dSZW1vdmUgPSBmYWxzZTtcblxuICBASW5wdXQoJ3VybCcpIHNldCB1cmwodXJsKSB7XG4gICAgdGhpcy5maWxlID0gdXJsID8gbmV3IEZzRmlsZSh1cmwpIDogbnVsbDtcbiAgfVxuXG4gIEBJbnB1dCgnZmlsZScpIHNldCBmaWxlKGZpbGUpIHtcbiAgICBpZihmaWxlKSB7XG4gICAgICBpZihmaWxlIGluc3RhbmNlb2YgRnNGaWxlKSB7XG4gICAgICAgIHRoaXMuX2ZpbGUgPSBmaWxlO1xuICAgICAgICAgIFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZmlsZSA9IG5ldyBGc0ZpbGUoZmlsZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2ZpbGUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYWNjZXB0KHZhbHVlKSB7XG4gICAgdGhpcy5pbnB1dFByb2Nlc3Nvci5hY2NlcHQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWNjZXB0KCkge1xuICAgIHJldHVybiB0aGlzLmlucHV0UHJvY2Vzc29yLmFjY2VwdCB8fCAnKic7XG4gIH1cbiAgXG4gIHB1YmxpYyBnZXQgZmlsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWUpIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcHJldmlld1dpZHRoKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICB0aGlzLl9wcmV2aWV3V2lkdGggPSBOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSA/IGAke3ZhbHVlfXB4YCA6IHZhbHVlPy50b1N0cmluZygpIHx8ICcnO1xuICB9XG5cbiAgcHVibGljIGdldCBwcmV2aWV3V2lkdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByZXZpZXdXaWR0aDtcbiAgfVxuICBcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwcmV2aWV3SGVpZ2h0KHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICB0aGlzLl9wcmV2aWV3SGVpZ2h0ID0gTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSkgPyBgJHt2YWx1ZX1weGAgOiB2YWx1ZT8udG9TdHJpbmcoKSB8fCAnJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJldmlld0hlaWdodCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcHJldmlld0hlaWdodDtcbiAgfVxuXG4gIEBPdXRwdXQoKSBwdWJsaWMgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIGRvd25sb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxGc0ZpbGU+KCk7XG5cbiAgcHVibGljIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgcHVibGljIG9uVG91Y2g6IGFueSA9ICgpID0+IHt9O1xuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbik6IHZvaWQgeyB0aGlzLm9uQ2hhbmdlID0gZm47IH1cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuKTogdm9pZCB7IHRoaXMub25Ub3VjaCA9IGZuOyB9XG4gIHB1YmxpYyBpbnB1dFByb2Nlc3NvciA9IG51bGw7XG4gIHB1YmxpYyBpbnN0cnVjdGlvbiA9ICdEcmFnICYgRHJvcCB5b3VyIGZpbGUgb3IgdXNlIHRoZSBidXR0b24gYmVsb3cnO1xuICBwdWJsaWMgX2ZpbGU6IEZzRmlsZTtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuOyAgXG4gIHByaXZhdGUgX3ByZXZpZXdXaWR0aCA9ICcxNTBweCc7XG4gIHByaXZhdGUgX3ByZXZpZXdIZWlnaHQgPSAnMTUwcHgnO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZTX0ZJTEVfTU9EVUxFX0NPTkZJRykgcHJpdmF0ZSBfbW9kdWxlQ29uZmlnLFxuICAgIHByaXZhdGUgX2NvcmRvdmFTZXJ2aWNlOiBDb3Jkb3ZhU2VydmljZSxcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5pbnB1dFByb2Nlc3NvciA9IG5ldyBJbnB1dFByb2Nlc3NvcihfY29yZG92YVNlcnZpY2UsIF9uZ1pvbmUpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLl9tb2R1bGVDb25maWcpIHtcbiAgICAgIGlmICh0aGlzLmFsbG93RG93bmxvYWQgPT09IHZvaWQgMCkge1xuICAgICAgICB0aGlzLmFsbG93RG93bmxvYWQgPSB0aGlzLl9tb2R1bGVDb25maWcuYWxsb3dEb3dubG9hZFxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5hbGxvd1JlbW92ZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgIHRoaXMuYWxsb3dSZW1vdmUgPSB0aGlzLl9tb2R1bGVDb25maWcuYWxsb3dSZW1vdmVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gfCAgbnVsbCB7IFxuICAgIGlmKHRoaXMuZmlsZT8udHlwZUltYWdlICYmICh0aGlzLm1pbldpZHRoIHx8IHRoaXMubWluSGVpZ2h0KSkge1xuICAgICAgLy8gaWYodGhpcy5maWxlLmltYWdlV2lkdGggPCB0aGlzLm1pbldpZHRoKSB7XG4gICAgICAvLyAgIHJldHVybiB7IG1pbldpZHRoOiBgTWluaW11bSB3aWR0aCAke3RoaXMubWluV2lkdGh9cHhgIH07XG4gICAgICAvLyB9XG5cbiAgICAgIC8vIGlmKHRoaXMuZmlsZS5pbWFnZUhlaWdodCA8IHRoaXMubWluSGVpZ2h0KSB7XG4gICAgICAvLyAgIHJldHVybiB7IG1pbldpZHRoOiBgTWluaW11bSBoZWlnaHQgJHt0aGlzLm1pbkhlaWdodH1weGAgfTtcbiAgICAgIC8vIH0gICAgICBcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfSBcblxuICBwdWJsaWMgZ2V0IHByZXZpZXdQZXJjZW50KCkge1xuICAgIHJldHVybiBTdHJpbmcodGhpcy5fcHJldmlld1dpZHRoKS5tYXRjaCgvJS8pO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUoZmlsZSk6IHZvaWQge1xuICAgIHRoaXMuZmlsZSA9IGZpbGU7XG4gICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0RmlsZShmc0ZpbGU6IEZzRmlsZSkge1xuICAgIG9mKHRydWUpICAgIFxuICAgIC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluV2lkdGggfHwgdGhpcy5taW5IZWlnaHQgPyBmcm9tKGZzRmlsZS5pbWFnZUluZm8pIDogb2YodHJ1ZSk7XG4gICAgICB9KSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5maWxlID0gZnNGaWxlO1xuICAgICAgdGhpcy5zZWxlY3QuZW1pdChmc0ZpbGUpO1xuICAgICAgdGhpcy5vbkNoYW5nZShmc0ZpbGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUZpbGUoKSB7XG4gICAgdGhpcy5maWxlID0gdm9pZCAwO1xuICAgIHRoaXMucmVtb3ZlLmVtaXQodGhpcy5maWxlKTtcbiAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICB9XG5cbiAgcHVibGljIGFjdGlvbkNsaWNrKGV2ZW50OiB7IGV2ZW50OiBQb2ludGVyRXZlbnQgfSkge1xuICAgIGV2ZW50LmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgcHVibGljIGRvd25sb2FkQ2xpY2tlZChldmVudDogeyBldmVudDogUG9pbnRlckV2ZW50IH0pIHtcbiAgICBldmVudC5ldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmKHRoaXMuZG93bmxvYWQub2JzZXJ2ZXJzLmxlbmd0aCkge1xuICAgICAgZXZlbnQuZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuZG93bmxvYWQuZW1pdCh0aGlzLmZpbGUpO1xuICAgIH1cbiAgfVxuICBcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNOdW1lcmljKHZhbHVlKSB7XG4gICAgcmV0dXJuIC9eLT9cXGQrJC8udGVzdCh2YWx1ZSk7XG4gIH1cblxufVxuIiwiPGZzLWxhYmVsLWZpZWxkXG4gICAgY2xhc3M9XCJmcy1mb3JtLXdyYXBwZXJcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3BlcmNlbnQtcHJldmlldyc6IHByZXZpZXdQZXJjZW50IH1cIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsOyBlbHNlIGxhYmVsQ29udGVudFwiPlxuICAgIDxmcy1sYWJlbCBjbGFzcz1cImZzLWZvcm0tbGFiZWxcIj57e2xhYmVsfX08L2ZzLWxhYmVsPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLXRlbXBsYXRlICNsYWJlbENvbnRlbnQ+XG4gICAgPGZzLWxhYmVsICpuZ0lmPVwibGFiZWxzLmxlbmd0aFwiIGNsYXNzPVwiZnMtZm9ybS1sYWJlbFwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ZzRmlsZUxhYmVsXVwiPjwvbmctY29udGVudD5cbiAgICA8L2ZzLWxhYmVsPlxuICA8L25nLXRlbXBsYXRlPlxuICA8ZnMtZmlsZVxuICAgICAgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAgICAgKHNlbGVjdCk9XCJzZWxlY3RGaWxlKCRldmVudClcIlxuICAgICAgW2ltYWdlV2lkdGhdPVwiaW1hZ2VXaWR0aFwiXG4gICAgICBbaW1hZ2VIZWlnaHRdPVwiaW1hZ2VIZWlnaHRcIlxuICAgICAgW2ltYWdlUXVhbGl0eV09XCJpbWFnZVF1YWxpdHlcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cIndyYXBcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwicHJldmlld1dpZHRoXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJwcmV2aWV3SGVpZ2h0XCI+XG4gICAgICA8ZnMtZmlsZS1wcmV2aWV3XG4gICAgICAgICAgY2xhc3M9XCJwcmV2aWV3XCJcbiAgICAgICAgICAqbmdJZj1cImZpbGU7IGVsc2UgcHJldmlld1wiXG4gICAgICAgICAgKHJlbW92ZSk9XCJyZW1vdmVGaWxlKClcIlxuICAgICAgICAgIFtmaWxlXT1cImZpbGVcIlxuICAgICAgICAgIFtzaG93RmlsZW5hbWVdPVwic2hvd0ZpbGVuYW1lXCJcbiAgICAgICAgICBbcHJldmlld0hlaWdodF09XCJudWxsXCJcbiAgICAgICAgICBbcHJldmlld1dpZHRoXT1cIm51bGxcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBmcy1maWxlLXByZXZpZXctYWN0aW9uXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJ0b3AtcmlnaHRcIlxuICAgICAgICAgICAgYWN0aW9uPVwicmVtb3ZlXCJcbiAgICAgICAgICAgIHRvb2x0aXA9XCJSZW1vdmVcIlxuICAgICAgICAgICAgKm5nSWY9XCJhbGxvd1JlbW92ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgZnMtZmlsZS1wcmV2aWV3LWFjdGlvblxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcbiAgICAgICAgICAgIHRvb2x0aXA9XCJSZXVwbG9hZFwiXG4gICAgICAgICAgICAqbmdJZj1cImFsbG93UmV1cGxvYWRcIj5cbiAgICAgICAgICA8bWF0LWljb24+Y2xvdWRfdXBsb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBmcy1maWxlLXByZXZpZXctYWN0aW9uXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICBhY3Rpb249XCJkb3dubG9hZFwiXG4gICAgICAgICAgICB0b29sdGlwPVwiRG93bmxvYWRcIlxuICAgICAgICAgICAgW2hpZGVdPVwiIShhbGxvd0Rvd25sb2FkICYmICgoZG93bmxvYWQub2JzZXJ2ZXJzLmxlbmd0aCAmJiBmaWxlKSB8fCBmaWxlLnVybCkpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZENsaWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIFtocmVmXT1cImZpbGUudXJsXCJcbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZG93bmxvYWRcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG91ZF9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9mcy1maWxlLXByZXZpZXc+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjcHJldmlldz5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5jbG91ZF91cGxvYWQ8L21hdC1pY29uPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnN0cnVjdGlvblwiPnt7aW5zdHJ1Y3Rpb259fTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtcmFpc2VkLWJ1dHRvbiBtYXQtcHJpbWFyeVwiPlVwbG9hZDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZnMtZmlsZT5cbiAgPGZzLWxhYmVsLW1lc3NhZ2UgY2xhc3M9XCJmcy1mb3JtLW1lc3NhZ2VcIj5cbiAgICA8c3BhbiBjbGFzcz1cImZzLWZvcm0taGludFwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ZzRmlsZUhpbnRdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ZzRmlsZU1lc3NhZ2VMYWJlbF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9zcGFuPlxuICA8L2ZzLWxhYmVsLW1lc3NhZ2U+XG48L2ZzLWxhYmVsLWZpZWxkPlxuIl19

@@ -0,0 +0,0 @@ import { ChangeDetectionStrategy, Component, ContentChildren, QueryList, TemplateRef, } from '@angular/core';

@@ -0,0 +0,0 @@ import { EventEmitter, Component, Input, Output, ChangeDetectionStrategy, ChangeDetectorRef, } from '@angular/core';

@@ -0,0 +0,0 @@ import { ChangeDetectionStrategy, Component, HostBinding, Input, Output, EventEmitter, } from '@angular/core';

@@ -0,0 +0,0 @@ import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Inject, Input, NgZone, Optional, Output, ViewChild } from '@angular/core';

@@ -0,0 +0,0 @@ import { Directive } from '@angular/core';

@@ -0,0 +0,0 @@ import { Directive } from '@angular/core';

@@ -0,0 +0,0 @@ import { Directive, EventEmitter, Input, Output } from '@angular/core';

@@ -0,0 +0,0 @@ import { NgModule } from '@angular/core';

import { InjectionToken } from '@angular/core';
export const FS_FILE_MODULE_CONFIG = new InjectionToken('fs-file.module-config');
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtZmlsZS5wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2ZzLWZpbGUucHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQVEsdUJBQXVCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBGU19GSUxFX01PRFVMRV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55W10+KCdmcy1maWxlLm1vZHVsZS1jb25maWcnKTtcbiJdfQ==

@@ -0,0 +0,0 @@ export function createBlob(data, name, type) {

@@ -0,0 +0,0 @@ export function getCordovaCamera() {

@@ -0,0 +0,0 @@ export function getCordovaCapture() {

@@ -0,0 +0,0 @@ export function getCordovaResolveLocalFileSystemURL() {

@@ -0,0 +0,0 @@ import { getCordovaCamera } from './get-cordova-camera';

@@ -0,0 +0,0 @@ import { getCordovaCapture } from './get-cordova-capture';

@@ -0,0 +0,0 @@ export * from './scale-exif-image';

@@ -0,0 +0,0 @@ export function isImageType(type) {

@@ -0,0 +0,0 @@ export function ScaleExifImage(canvas, orientation, maxWidth = null, maxHeight = null) {

export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1jb25maWcuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9pbnRlcmZhY2VzL2ZpbGUtY29uZmlnLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBGc0ZpbGVDb25maWcge1xuICAvLyBkaXNhYmxlZD86ICAgICAgICBib29sZWFuO1xuICAvLyBtdWx0aXBsZT86ICAgICAgICBib29sZWFuO1xuICAvLyBwcmV2aWV3PzogICAgICAgICBib29sZWFuO1xuICAvLyBhdXRvT3JpZW50YXRpb24/OiBib29sZWFuO1xuICAvLyByZXNpemU/OiAgICAgICAgICBib29sZWFuO1xuICAvLyBtaW5TaXplPzogICAgICAgICBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIC8vIG1heFNpemU/OiAgICAgICAgIG51bWJlciB8IHVuZGVmaW5lZCxcbiAgd2lkdGg/OiAgIG51bWJlciB8IHVuZGVmaW5lZDtcbiAgaGVpZ2h0PzogIG51bWJlciB8IHVuZGVmaW5lZDtcbiAgcXVhbGl0eT86ICAgIG51bWJlciB8IHVuZGVmaW5lZDtcbiAgZm9ybWF0PzogICAgIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbWluV2lkdGg/OiBudW1iZXI7XG4gIG1pbkhlaWdodD86IG51bWJlcjtcbiAgLy8gYWNjZXB0PzogICAgICAgICAgc3RyaW5nW107XG59XG4iXX0=
export * from './file-config.interface';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2ludGVyZmFjZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZmlsZS1jb25maWcuaW50ZXJmYWNlJztcbiJdfQ==
export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2ludGVyZmFjZXMvbW9kdWxlLWNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRnNGaWxlTW9kdWxlQ29uZmlnIHtcbiAgYWxsb3dEb3dubG9hZD86IGJvb2xlYW47XG4gIGFsbG93UmVtb3ZlPzogYm9vbGVhbjtcbiAgZHJhZ292ZXJNZXNzYWdlPzogYm9vbGVhbjtcbn1cbiJdfQ==

@@ -0,0 +0,0 @@ import * as EXIF from '@firestitch/exif-js';

export * from './process-config';
export * from './fs-file';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wcm9jZXNzLWNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2ZzLWZpbGUnO1xuIl19

@@ -0,0 +0,0 @@ export class ProcessConfig {

@@ -0,0 +0,0 @@ import { Injectable } from '@angular/core';

@@ -0,0 +0,0 @@ /**

@@ -0,0 +0,0 @@ /*

@@ -0,0 +0,0 @@ /**

{
"name": "@firestitch/file",
"version": "12.5.0",
"version": "12.5.1",
"repository": {

@@ -5,0 +5,0 @@ "type": "git",

@@ -0,0 +0,0 @@ export { FsFileModule } from './app/fs-file.module';

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 too big to display

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