UNPKG

ngx-mat-cdk

Version:

Extra Components for Angular Material including Filters,Drag Drop File, MatSelect Mobile Version

387 lines 132 kB
import { Component, EventEmitter, forwardRef, HostBinding, HostListener, Input, Output, ViewChild } from '@angular/core';
import { coerceBooleanProperty } from '@angular/cdk/coercion';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { v4 as uuid } from 'uuid';
import * as mime from 'mime';
import { map } from "rxjs/operators";
import { HttpClient, HttpEventType } from "@angular/common/http";
const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = {
    provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgxMatDragDropFileComponent),
    multi: true
};
export class NgxMatDragDropFileComponent {
    constructor(http) {
        this.http = http;
        this.additionalData = {};
        this.addImageStringBase64 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AABg70lEQVR42u2dCZRlRZH3a6O7AdmR9WuBppVhiq6uVzf+ke9VFVi0oNi4ANIIgjAu4DA6ICKDuCuIjjJu4+i4oI7I6LC0giyKDiAqiBvDbqsgjQiyiSDKjt+J9nZZFNXV71W9yJv3vv87J87nmY/+1c0bkRlxMyMjurr4448//vjjjz/+ZvLbY4+x7tVCHnnkkUceeeSVkzejP9yOByCPPPLII4888uLzZvLHeyZIN3nkkUceeeSRVy5eq3+8Z7KQRx555JFHHnnl4s3kj/dOkB7yyCOPPPLII69cvFb/eO9kIY888sgjjzzyysVr5Q9353+wb4L0zvTcgTzyyCOPPPLIi8+bwOxu9j/sm0JmMxjyyCOPPPLIIy8ir6uVa4MT/vg6E6QdgyGPPPLII4888iLxup6aQNhUANA7xQPMZjDrTCHkkUceeeSRR54Tr+vptweadv59fNnkkUceeeSRV1re+K2BtQYAE64atOsMg8ojjzzyyCOPvOKcf28rzr+Xzp888sgjjzzySsubeGtg+roBE8oLTowY+LLJI4888sgjr5zOv68V599D508eeeSRRx55peeNBwDN/KNZ1xam8sgjjzzyyCMvCV7Tzr+bzp888sgjjzzyKsPra7bgT3cbqgtReeSRRx555JFXBuff1UpdYL5s8sgjjzzyyKt00SC+HPLII4888sij8+fLIY888sgjjzw6f75s8sgjjzzyyKPz58smjzzyyCOPPDp/8sgjjzzyyCOPzp888sgjjzzyyKPzJ4888sgjjzzy6PzJI4888sgjj7x4zr/p2j8TugrxZZNHHnnkkUdeBZx/syWC6fzJI4888sgjr/zOf3XDv6YCgN4pAgC+bPLII4888sgrp/PvacX59/Flk0ceeeSRR15peb25rD0AyP+DiQFAH182eeSRRx555JXW+fe24vx76fzJI4888sgjr7S81T58PABY2z/omRQx8GWTRx555JFHXjmdf18rzr+Hzp888sgjjzzySs8bDwCa+UfjWYJdM/xReeSRRx555JGXBK9p599N508eeeSRRx55leH1NVvwp7sN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';
        this.deleteFileLabel = 'Delete File';
        this.maximumFileLimitLabel = 'Maximum file upload limit is ';
        this.maxFilePickCount = 6;
        this.addImageIcon = 'add-camera.png';
        this.maxFilePickCountError = false;
        this.errors = [];
        this.valueChanged = new EventEmitter();
        // does no validation, just sets the hidden file input
        this.accept = 'image/*';
        this._disabled = false;
        this._multiple = false;
        this.emptyPlaceholder = `Drop file${this.multiple ? 's' : ''} or click to select`;
        this._displayFileSize = false;
        this._activeBorderColor = 'purple';
        this._files = [];
        this._isDragOver = false;
        // https://angular.io/api/forms/ControlValueAccessor
        this._onChange = (val) => {
        };
        this._onTouched = () => {
        };
    }
    get disabled() {
        return this._disabled;
    }
    set disabled(val) {
        this._disabled = coerceBooleanProperty(val);
    }
    set multiple(value) {
        this._multiple = coerceBooleanProperty(value);
    }
    get multiple() {
        return this._multiple;
    }
    set displayFileSize(value) {
        this._displayFileSize = coerceBooleanProperty(value);
    }
    get displayFileSize() {
        return this._displayFileSize;
    }
    set borderColor(color) {
        this._activeBorderColor = color;
    }
    get borderColor() {
        return this.isDragover ? this._activeBorderColor : '#ccc';
    }
    get files() {
        return this._files;
    }
    get isEmpty() {
        var _a;
        return !((_a = this.files) === null || _a === void 0 ? void 0 : _a.length);
    }
    // @HostBinding('class.drag-over')
    get isDragover() {
        return this._isDragOver;
    }
    set isDragover(value) {
        if (!this.disabled) {
            this._isDragOver = value;
        }
    }
    writeValue(files) {
        const fileArray = this.convertToArray(files);
        if (fileArray.length < 2 || this.multiple) {
            this._files = fileArray;
            this.emitChanges(this._files);
        }
        else {
            throw Error('Multiple files not allowed');
        }
    }
    registerOnChange(fn) {
        this._onChange = fn;
    }
    registerOnTouched(fn) {
        this._onTouched = fn;
    }
    setDisabledState(isDisabled) {
        this.disabled = isDisabled;
    }
    emitChanges(files) {
        const filesS = files.map(r => {
            let avatar = {
                fileContentType: r.type || r['mimeType'],
                fileName: r.name,
                fileSize: r.size,
                tempId: r['tempId'],
                id: r['id'],
                status: r['status'],
                type: this.fileType
            };
            return avatar;
        });
        this.valueChanged.emit(filesS);
        this._onChange(filesS);
    }
    addFiles(files) {
        // this._onTouched();
        const fileArray = this.convertToArray(files);
        if (this.multiple) {
            // this.errorOnEqualFilenames(fileArray);
            const merged = this.files.concat(fileArray);
            this.writeValue(merged);
        }
        else {
            this.writeValue(fileArray);
        }
    }
    removeFile(file) {
        const fileIndex = this.files.indexOf(file);
        if (fileIndex >= 0) {
            const currentFiles = this.files.slice();
            currentFiles.splice(fileIndex, 1);
            this.writeValue(currentFiles);
        }
    }
    clear() {
        this.writeValue([]);
    }
    change(event) {
        event.stopPropagation();
        this._onTouched();
        const fileList = event.target.files;
        this.removeDirectories(fileList).then((files) => {
            if (files === null || files === void 0 ? void 0 : files.length) {
                this.addFiles(files);
            }
        });
        // clear it so change is triggered if same file is selected again
        event.target.value = '';
    }
    activate(e) {
        e.preventDefault();
        this.isDragover = true;
    }
    deactivate(e) {
        e.preventDefault();
        this.isDragover = false;
    }
    handleDrop(e) {
        this.deactivate(e);
        if (!this.disabled) {
            const fileList = e.dataTransfer.files;
            this.removeDirectories(fileList).then((files) => {
                if (files === null || files === void 0 ? void 0 : files.length) {
                    this.addFiles(files);
                }
                this._onTouched();
            });
        }
    }
    // @HostListener('click')
    open() {
        var _a;
        if (!this.disabled) {
            (_a = this.fileInputEl) === null || _a === void 0 ? void 0 : _a.nativeElement.click();
        }
    }
    // @HostListener('focusout')
    // blur() {
    //   console.log('blurred')
    //   this._onTouched();
    // }
    // private errorOnEqualFilenames(files: File[]) {
    //   if (this.files.some(file => files.some(file2 => file.name === file2.name))) {
    //     throw Error('one of the provided filenames already exists')
    //   }
    //   for (let i = 0; i < files.length; i++) {
    //     for (let j = i + 1; j < files.length; j++) {
    //       if (files[i].name === files[j].name) {
    //         throw Error(`can't add multiple files with same name`)
    //       }
    //     }
    //   }
    // }
    removeDirectories(files) {
        return new Promise((resolve, reject) => {
            this.maxFilePickCountError = false;
            let fileArray = this.convertToArray(files);
            const uploadedFiles = this.files.filter(z => z['status'] !== 'error');
            const uploadedFilesLength = uploadedFiles.length;
            const fileTotalCount = uploadedFilesLength + fileArray.length;
            if (fileTotalCount > this.maxFilePickCount) {
                this.maxFilePickCountError = true;
                if (uploadedFilesLength < this.maxFilePickCount) {
                    fileArray = fileArray.slice(0, this.maxFilePickCount - uploadedFilesLength);
                }
                else {
                    return;
                }
            }
            if (fileArray.length) 
            // add tempId into files
            {
                fileArray.forEach(item => item['tempId'] = uuid());
            }
            const dirnames = [];
            const readerList = [];
            for (let i = 0; i < fileArray.length; i++) {
                const file = fileArray[i];
                const reader = new FileReader();
                reader.onerror = () => {
                    dirnames.push(fileArray[i].name);
                };
                let thumbnailAble = false;
                let mimeType = file.type;
                file['message'] = 10;
                if (!file.type) {
                    mimeType = mime.getType(this.getLasIndexType(file.name));
                    file['mimeType'] = mimeType;
                }
                if (mimeType.includes('image') || mimeType.includes('video')) {
                    thumbnailAble = true;
                }
                reader.onloadend = () => {
                    var _a;
                    readerList.push(i);
                    if (this.uploader) {
                        const formData = new FormData();
                        const blob = file.slice(0, file.size, mimeType);
                        const newFile = new File([blob], `temp_${file['tempId']}`, { type: mimeType });
                        formData.append('file', newFile);
                        (_a = this._getUploader(formData, file['tempId'])) === null || _a === void 0 ? void 0 : _a.subscribe((res) => {
                            if (res && res.message) {
                                file['message'] = res === null || res === void 0 ? void 0 : res.message;
                            }
                            else {
                                file['message'] = 1;
                            }
                        }, err => {
                            file['status'] = 'error';
                            file['message'] = err === null || err === void 0 ? void 0 : err.error;
                            if (!this.errors) {
                                this.errors = [];
                            }
                            this.errors.push({ message: file['message'], name: file.name });
                            const fileDeleteIndex = this.files.findIndex(z => z['tempId'] === file['tempId']);
                            if (fileDeleteIndex !== -1) {
                                this.files.splice(fileDeleteIndex, 1);
                                const ff = this.files.slice();
                                this.emitChanges(ff);
                            }
                        }, () => {
                            setTimeout(() => {
                                if (file['message'] && file['message'] == 100) {
                                    file['status'] = 'complete';
                                }
                            }, 500);
                        });
                    }
                    if (readerList.length === fileArray.length) {
                        resolve(fileArray.filter((file) => !dirnames.includes(file.name)));
                    }
                    if (thumbnailAble) {
                        file['imageUrl'] = reader.result;
                    }
                };
                if (thumbnailAble) {
                    reader.readAsDataURL(file);
                }
                else {
                    reader.readAsArrayBuffer(file);
                }
            }
        });
    }
    getLasIndexType(fileName) {
        try {
            return fileName.substr(fileName.lastIndexOf('.') + 1, fileName.length - fileName.lastIndexOf('.'));
        }
        catch (error) {
            return '';
        }
    }
    convertToArray(files) {
        if (files) {
            if (files instanceof File) {
                return [files];
            }
            else if (Array.isArray(files)) {
                return files;
            }
            else {
                return Array.prototype.slice.call(files);
            }
        }
        return [];
    }
    _getUploader(formDate, tempId) {
        if (this.uploader) {
            if (typeof (this.uploader.uploaderFunc) === 'function') {
                return this.uploader.uploaderFunc(formDate, tempId);
            }
            return this._uploader(formDate, tempId);
        }
        return null;
    }
    _uploader(body, tempId) {
        var _a, _b;
        let url_ = ((_a = this.uploader) === null || _a === void 0 ? void 0 : _a.uploaderUrl) + '?';
        if (tempId !== undefined && tempId !== null) {
            url_ += 'tempId=' + encodeURIComponent('' + tempId) + '&';
        }
        url_ = url_.replace(/[?&]$/, '');
        const content_ = body;
        let options_ = {
            observe: 'events',
            reportProgress: true,
            headers: (_b = this.uploader) === null || _b === void 0 ? void 0 : _b.uploaderHttpHeaders
        };
        return this.http.post(url_, content_, options_)
            .pipe(map((event) => {
            switch (event.type) {
                case HttpEventType.UploadProgress:
                    const progress = Math.round(100 * event.loaded / event.total);
                    return { status: 'progress', message: progress };
                case HttpEventType.Response:
                    return { status: 'completed', message: '100' };
                default:
                    return { status: 'error', message: `Unhandled event: ${event.type}` };
            }
        }));
    }
}
NgxMatDragDropFileComponent.decorators = [
    { type: Component, args: [{
                selector: 'ngx-mat-drag-drop-file',
                template: "<div [class.dragging]=\"isDragover\" class=\"ngx-mat-drag-drop-file-wrapper\">\r\n  <div *ngIf=\"maxFilePickCountError\" class=\"ngx-mat-drag-drop-file-error-maxFileCount\">\r\n    {{maximumFileLimitLabel}}: {{maxFilePickCount}}\r\n  </div>\r\n  <div class=\"ngx-mat-drag-drop-file-items\" selectable=\"false\">\r\n    <ng-container *ngFor=\"let file of files\">\r\n      <ng-container *ngIf=\"file['status']!=='error'\">\r\n        <div [class.success]=\"file['status']==='complete' ||file['status']==='uploaded'\"\r\n             class=\"ngx-mat-drag-drop-file-item\" [matTooltip]=\"file.size|byte\" matTooltipPosition=\"below\"\r\n             [matTooltipDisabled]=\"displayFileSize\"\r\n             selected\r\n\r\n        >\r\n          <!--    [disabled]=\"disabled\"-->\r\n          <!--    color=\"''\" disableRipple=\"true\"-->\r\n          <!--    [removable]=\"!disabled\"-->\r\n          <!--    (removed)=\"removeFile(file)\"-->\r\n          <div [title]=\"deleteFileLabel\" *ngIf=\"file['status']==='complete' || file['status']==='uploaded'\"\r\n               class=\"ngx-mat-drag-drop-file-item-trash\" (click)=\"removeFile(file)\">\r\n            <i class=\"fal fa-trash-alt\"></i>\r\n          </div>\r\n          <div *ngIf=\"file['status']==='complete'\" class=\"ngx-mat-drag-drop-file-avatar-check\">\r\n            <mat-icon>check</mat-icon>\r\n          </div>\r\n          <mat-progress-bar *ngIf=\"file['status']!=='complete' &&  file['status']!=='uploaded'\" color=\"warn\"\r\n                            [value]=\"file['message']\">\r\n\r\n          </mat-progress-bar>\r\n          <div *ngIf=\"!file['imageUrl']\" [class]=\"file.name | fileIcon\"></div>\r\n\r\n          <img *ngIf=\"file['imageUrl']\" [src]=\"file['imageUrl']\"/>\r\n\r\n          <!--                    <mat-progress-bar *ngIf=\"file['status']!=='complete'\"-->\r\n          <!--                                      [value]=\"file['message']\"></mat-progress-bar>-->\r\n          <div class=\"ngx-mat-drag-drop-file-avatar-icon\">\r\n\r\n          </div>\r\n\r\n        </div>\r\n      </ng-container>\r\n\r\n    </ng-container>\r\n    <div class=\"ngx-mat-drag-drop-file-item ngx-mat-drag-drop-file-selector\" (click)=\"open()\">\r\n      <div class=\"ngx-mat-drag-drop-image\" [style.backgroundImage]=\"'url('+addImageStringBase64+')'\">\r\n      </div>\r\n\r\n    </div>\r\n    <div *ngIf=\"errors && errors.length >0\" class=\"ngx-mat-drag-drop-file-error-items\">\r\n      <ng-container *ngFor=\"let err of errors\">\r\n        <div class=\"ngx-mat-drag-drop-file-error-item\">\r\n          <span> {{err.name}} </span>\r\n          <span> : {{err['message']}} </span>\r\n\r\n\r\n        </div>\r\n      </ng-container>\r\n    </div>\r\n    <!--    <span class=\"placeholder\" *ngIf=\"!files.length\">{{emptyPlaceholder}}</span>-->\r\n    <input [maxLength]=\"maxFilePickCount\" #fileInputEl class=\"hidden\" type=\"file\" [attr.multiple]=\"multiple? '' : null\"\r\n           [attr.accept]=\"accept\">\r\n\r\n  </div>\r\n",
                providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR],
                styles: ["ngx-mat-drag-drop-file input{height:0;opacity:0;overflow:hidden;position:absolute;width:0;z-index:-1}ngx-mat-drag-drop-file :host{border:2px dashed;border-radius:20px;cursor:pointer;display:block;margin:10px auto;max-width:500px;min-height:50px;padding:20px}ngx-mat-drag-drop-file :host.disabled{cursor:unset;opacity:.5}ngx-mat-drag-drop-file .placeholder{color:grey;margin:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ngx-mat-drag-drop-file mat-chip{max-width:100%}ngx-mat-drag-drop-file .filename{max-width:calc(100% - 1em);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ngx-mat-drag-drop-file :host.empty-input{align-items:center;display:flex;justify-content:center}ngx-mat-drag-drop-file .mat-chip.mat-standard-chip.mat-focus-indicator{box-shadow:none}ngx-mat-drag-drop-file .mat-chip.mat-standard-chip:after{background:unset}ngx-mat-drag-drop-file .mat-chip{border:1px solid #757575!important}ngx-mat-drag-drop-file .filename{padding-right:30px!important}ngx-mat-drag-drop-file .mat-chip-list-wrapper{border:1px dashed;padding:50px}.ngx-mat-drag-drop-file-items{display:flex;flex-wrap:wrap;grid-gap:15px;padding:8px;width:100%}.attachment-image__icon{font-size:50px!important;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.ngx-mat-drag-drop-file-item{border:1px dashed #bdbdbd;border-radius:8px;height:96px;padding:2px;position:relative;transition:box-shadow .2s ease;width:96px}.ngx-mat-drag-drop-file-item mat-progress-bar{left:8px;position:absolute;top:50%;width:80px;z-index:111}.ngx-mat-drag-drop-file-item img{height:100%;object-fit:contain;width:100%}.ngx-mat-drag-drop-file-item:hover{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.ngx-mat-drag-drop-file-item.error{border-color:#e53935}.ngx-mat-drag-drop-file-avatar-icon{position:absolute}.ngx-mat-drag-drop-file-avatar-check,.ngx-mat-drag-drop-file-avatar-error{background:#aed581;border-radius:50%;color:#fff;font-size:-1px;height:24px;position:absolute;right:-10px;top:-10px;width:24px;z-index:11}.ngx-mat-drag-drop-file-avatar-error{background:#ef5350}.ngx-mat-drag-drop-file-wrapper{display:flex;flex-direction:column;grid-gap:15px;min-height:105px;padding:25px}.ngx-mat-drag-drop-file-error-items{display:flex;flex-direction:column;grid-gap:8px}.ngx-mat-drag-drop-file-error-item{color:#d32f2f;font-size:11px;max-width:100%;white-space:pre-line}.ngx-mat-drag-drop-file-wrapper.dragging{border-color:#f57c00!important}.ngx-mat-drag-drop-file-selector{background-color:#fff;position:relative}.ngx-mat-drag-drop-file-selector img{height:20px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:20px}.ngx-mat-drag-drop-file-item-trash{background:#e0e0e0;border:1px solid #e0e0e0;border-radius:2px;cursor:pointer;height:20px;left:4px;opacity:.95;position:absolute;top:4px;transition:opacity .26s ease-in-out;width:20px;z-index:11}.ngx-mat-drag-drop-file-item-trash i{left:50%;margin:0;position:absolute;top:50%;transform:translate(-50%,-50%)}.ngx-mat-drag-drop-file-item-trash:hover{opacity:1}.ngx-mat-drag-drop-file-error-maxFileCount{color:#d32f2f;font-size:11px;max-width:100%;white-space:pre-line}.ngx-mat-drag-drop-image{background-repeat:no-repeat;background-size:cover;height:38px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:38px}.hidden{display:none!important}"]
            },] }
];
NgxMatDragDropFileComponent.ctorParameters = () => [
    { type: HttpClient }
];
NgxMatDragDropFileComponent.propDecorators = {
    additionalData: [{ type: Input }],
    addImageStringBase64: [{ type: Input }],
    uploader: [{ type: Input }],
    deleteFileLabel: [{ type: Input }],
    maximumFileLimitLabel: [{ type: Input }],
    maxFilePickCount: [{ type: Input }],
    addImageIcon: [{ type: Input }],
    fileType: [{ type: Input }],
    disabled: [{ type: HostBinding, args: ['class.disabled',] }, { type: Input }],
    multiple: [{ type: Input }],
    displayFileSize: [{ type: Input }],
    borderColor: [{ type: Input, args: ['activeBorderColor',] }, { type: HostBinding, args: ['style.border-color',] }],
    isEmpty: [{ type: HostBinding, args: ['class.empty-input',] }],
    valueChanged: [{ type: Output }],
    fileInputEl: [{ type: ViewChild, args: ['fileInputEl',] }],
    accept: [{ type: Input }],
    emptyPlaceholder: [{ type: Input }],
    change: [{ type: HostListener, args: ['change', ['$event'],] }],
    activate: [{ type: HostListener, args: ['dragenter', ['$event'],] }, { type: HostListener, args: ['dragover', ['$event'],] }],
    deactivate: [{ type: HostListener, args: ['dragleave', ['$event'],] }],
    handleDrop: [{ type: HostListener, args: ['drop', ['$event'],] }]
};
export class NgxMatDragDropFileDto {
    constructor() {
        this.addresses = [];
    }
}
export var FileTypes;
(function (FileTypes) {
    FileTypes[FileTypes["User"] = 0] = "User";
})(FileTypes || (FileTypes = {}));
export class NgxMatCdkUploader {
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hdC1kcmFnLWRyb3AtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvQWxpcmV6YSBNb2hhbW1hZGkvc291cmNlL3JlcG9zL015TGlicmFyeS9Bbmd1bGFyLkxpYnJhcnkvbGlicy9wcm9qZWN0cy9uZ3gtbWF0LWNkay9zcmMvIiwic291cmNlcyI6WyJsaWIvbmd4LW1hdC1kcmFnLWRyb3AtZmlsZS9uZ3gtbWF0LWRyYWctZHJvcC1maWxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQXVCLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUFDLEVBQUUsSUFBSSxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25DLE9BQU8sRUFBQyxVQUFVLEVBQUUsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFFNUUsTUFBTSxtQ0FBbUMsR0FBRztJQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztJQUN0RixLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFRRixNQUFNLE9BQU8sMkJBQTJCO0lBRXRDLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFHM0IsbUJBQWMsR0FBUSxFQUFFLENBQUM7UUFDekIseUJBQW9CLEdBQUcsby9nQ0FBby9nQyxDQUFDO1FBRTVnaEMsb0JBQWUsR0FBRyxhQUFhLENBQUM7UUFDaEMsMEJBQXFCLEdBQUcsK0JBQStCLENBQUM7UUFDeEQscUJBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLGlCQUFZLEdBQVcsZ0JBQWdCLENBQUM7UUFDakQsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLFdBQU0sR0FBVSxFQUFFLENBQUM7UUErRFgsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBMkIsQ0FBQztRQU9uRSxzREFBc0Q7UUFDN0MsV0FBTSxHQUFHLFNBQVMsQ0FBQztRQUVwQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRTFCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFVCxxQkFBZ0IsR0FBRyxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxxQkFBcUIsQ0FBQztRQUU5RSxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFHekIsdUJBQWtCLEdBQUcsUUFBUSxDQUFDO1FBRzlCLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFNUIsb0RBQW9EO1FBQzVDLGNBQVMsR0FBRyxDQUFDLEdBQTRCLEVBQUUsRUFBRTtRQUNyRCxDQUFDLENBQUM7UUFDTSxlQUFVLEdBQUcsR0FBRyxFQUFFO1FBQzFCLENBQUMsQ0FBQztJQXRHRixDQUFDO0lBYUQsSUFFSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBQyxHQUFZO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQ0ksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUNJLGVBQWUsQ0FBQyxLQUFjO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUVJLFdBQVcsQ0FBQyxLQUFhO1FBQzNCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFDSSxPQUFPOztRQUNULE9BQU8sUUFBQyxJQUFJLENBQUMsS0FBSywwQ0FBRSxNQUFNLENBQUEsQ0FBQztJQUM3QixDQUFDO0lBR0Qsa0NBQWtDO0lBQ2xDLElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsS0FBYztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztTQUMxQjtJQUNILENBQUM7SUFrQ0QsVUFBVSxDQUFDLEtBQWE7UUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7WUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDL0I7YUFBTTtZQUNMLE1BQU0sS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDM0M7SUFFSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsZ0JBQWdCLENBQUUsVUFBbUI7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFhO1FBQy9CLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDM0IsSUFBSSxNQUFNLEdBQTBCO2dCQUNsQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDO2dCQUN4QyxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUk7Z0JBQ2hCLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSTtnQkFDaEIsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUM7Z0JBQ25CLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNYLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDO2dCQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVE7YUFDcEIsQ0FBQztZQUNGLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQStCO1FBRXRDLHFCQUFxQjtRQUVyQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQix5Q0FBeUM7WUFDekMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN6QjthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM1QjtJQUdILENBQUM7SUFHRCxVQUFVLENBQUMsSUFBVTtRQUNuQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLFNBQVMsSUFBSSxDQUFDLEVBQUU7WUFDbEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4QyxZQUFZLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFHRCxNQUFNLENBQUMsS0FBWTtRQUNqQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sUUFBUSxHQUFjLEtBQUssQ0FBQyxNQUEyQixDQUFDLEtBQUssQ0FBQztRQUNwRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUU7WUFDdEQsSUFBSSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsTUFBTSxFQUFFO2dCQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3RCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxpRUFBaUU7UUFDaEUsS0FBSyxDQUFDLE1BQTJCLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBSUQsUUFBUSxDQUFDLENBQUM7UUFDUixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUdELFVBQVUsQ0FBQyxDQUFDO1FBQ1YsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFHRCxVQUFVLENBQUMsQ0FBQztRQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDdEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFO2dCQUN0RCxJQUFJLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxNQUFNLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3RCO2dCQUNELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixJQUFJOztRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLE1BQUEsSUFBSSxDQUFDLFdBQVcsMENBQUUsYUFBYSxDQUFDLEtBQUssR0FBRztTQUN6QztJQUNILENBQUM7SUFHRCw0QkFBNEI7SUFDNUIsV0FBVztJQUNYLDJCQUEyQjtJQUMzQix1QkFBdUI7SUFDdkIsSUFBSTtJQUVKLGlEQUFpRDtJQUNqRCxrRkFBa0Y7SUFDbEYsa0VBQWtFO0lBQ2xFLE1BQU07SUFFTiw2Q0FBNkM7SUFDN0MsbURBQW1EO0lBQ25ELCtDQUErQztJQUMvQyxpRUFBaUU7SUFDakUsVUFBVTtJQUNWLFFBQVE7SUFDUixNQUFNO0lBQ04sSUFBSTtJQUVJLGlCQUFpQixDQUFDLEtBQWU7UUFFdkMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1lBRW5DLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFM0MsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUM7WUFDdEUsTUFBTSxtQkFBbUIsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ2pELE1BQU0sY0FBYyxHQUFHLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDOUQsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUMxQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO2dCQUVsQyxJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtvQkFDL0MsU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDO2lCQUM3RTtxQkFBTTtvQkFDTCxPQUFPO2lCQUNSO2FBQ0Y7WUFHRCxJQUFJLFNBQVMsQ0FBQyxNQUFNO1lBQ2xCLHdCQUF3QjtZQUMxQjtnQkFDRSxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7YUFDcEQ7WUFFRCxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFFcEIsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO1lBRXRCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUV6QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRTFCLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBR2hDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFO29CQUNwQixRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbkMsQ0FBQyxDQUFDO2dCQUNGLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztnQkFDMUIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7b0JBQ2QsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztpQkFDN0I7Z0JBRUQsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQzVELGFBQWEsR0FBRyxJQUFJLENBQUM7aUJBQ3RCO2dCQUVELE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFOztvQkFFdEIsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDbkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO3dCQUNqQixNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO3dCQUNoQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO3dCQUNoRCxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQzt3QkFDN0UsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBRWpDLE1BQUEsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLDBDQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFOzRCQUM3RCxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO2dDQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLE9BQU8sQ0FBQzs2QkFDaEM7aUNBQU07Z0NBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQzs2QkFDckI7d0JBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFOzRCQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUM7NEJBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsS0FBSyxDQUFDOzRCQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQ0FDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7NkJBQ2xCOzRCQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUM7NEJBQzlELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDOzRCQUNsRixJQUFJLGVBQWUsS0FBSyxDQUFDLENBQUMsRUFBRTtnQ0FDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dDQUN0QyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2dDQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDOzZCQUN0Qjt3QkFFSCxDQUFDLEVBQUUsR0FBRyxFQUFFOzRCQUNOLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0NBQ2QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsRUFBRTtvQ0FDN0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFVBQVUsQ0FBQztpQ0FDN0I7NEJBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUNWLENBQUMsRUFBQztxQkFDSDtvQkFDRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLE1BQU0sRUFBRTt3QkFDMUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUMxRTtvQkFFRCxJQUFJLGFBQWEsRUFBRTt3QkFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7cUJBQ2xDO2dCQUVILENBQUMsQ0FBQztnQkFDRixJQUFJLGFBQWEsRUFBRTtvQkFDakIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDNUI7cUJBQU07b0JBQ0wsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNoQzthQUNGO1FBR0gsQ0FBQyxDQUFDLENBQUM7SUFHTCxDQUFDO0lBRU8sZUFBZSxDQUFDLFFBQWdCO1FBQ3RDLElBQUk7WUFDRixPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQ3BCLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUM3QixRQUFRLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQzVDLENBQUM7U0FDSDtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsT0FBTyxFQUFFLENBQUM7U0FDWDtJQUNILENBQUM7SUFFTyxjQUFjLENBQUMsS0FBa0Q7UUFDdkUsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLEtBQUssWUFBWSxJQUFJLEVBQUU7Z0JBQ3pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNoQjtpQkFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQy9CLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7aUJBQU07Z0JBQ0wsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDMUM7U0FDRjtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUdPLFlBQVksQ0FBQyxRQUFrQixFQUFFLE1BQWM7UUFDckQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssVUFBVSxFQUFFO2dCQUN0RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNyRDtZQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDekM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxTQUFTLENBQUMsSUFBaUMsRUFBRSxNQUFpQzs7UUFDcEYsSUFBSSxJQUFJLEdBQUcsT0FBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxXQUFXLElBQUcsR0FBRyxDQUFDO1FBQzVDLElBQUksTUFBTSxLQUFLLFNBQVMsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQzNDLElBQUksSUFBSSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUMzRDtRQUNELElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxRQUFRLEdBQVE7WUFDbEIsT0FBTyxFQUFFLFFBQVE7WUFDakIsY0FBYyxFQUFFLElBQUk7WUFDcEIsT0FBTyxRQUFFLElBQUksQ0FBQyxRQUFRLDBDQUFFLG1CQUFtQjtTQUM1QyxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQzthQUM1QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDckIsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUNsQixLQUFLLGFBQWEsQ0FBQyxjQUFjO29CQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDOUQsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBQyxDQUFDO2dCQUVqRCxLQUFLLGFBQWEsQ0FBQyxRQUFRO29CQUN6QixPQUFPLEVBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUM7Z0JBQy9DO29CQUNFLE9BQU8sRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFDLENBQUM7YUFDdkU7UUFDSCxDQUFDLENBQ0EsQ0FDRixDQUFDO0lBQ04sQ0FBQzs7O1lBM2FGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQywrOUZBQXNEO2dCQUV0RCxTQUFTLEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQzs7YUFDakQ7OztZQVpPLFVBQVU7Ozs2QkFrQmYsS0FBSzttQ0FDTCxLQUFLO3VCQUNMLEtBQUs7OEJBQ0wsS0FBSztvQ0FDTCxLQUFLOytCQUNMLEtBQUs7MkJBQ0wsS0FBSzt1QkFHTCxLQUFLO3VCQUVMLFdBQVcsU0FBQyxnQkFBZ0IsY0FDNUIsS0FBSzt1QkFTTCxLQUFLOzhCQVNMLEtBQUs7MEJBU0wsS0FBSyxTQUFDLG1CQUFtQixjQUN6QixXQUFXLFNBQUMsb0JBQW9CO3NCQWFoQyxXQUFXLFNBQUMsbUJBQW1COzJCQWlCL0IsTUFBTTswQkFJTixTQUFTLFNBQUMsYUFBYTtxQkFLdkIsS0FBSzsrQkFNTCxLQUFLO3FCQXdGTCxZQUFZLFNBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO3VCQWNqQyxZQUFZLFNBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQ3BDLFlBQVksU0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUM7eUJBTW5DLFlBQVksU0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7eUJBTXBDLFlBQVksU0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBMk5sQyxNQUFNLE9BQU8scUJBQXFCO0lBQWxDO1FBT0UsY0FBUyxHQUFjLEVBQUUsQ0FBQztJQUc1QixDQUFDO0NBQUE7QUFFRCxNQUFNLENBQU4sSUFBWSxTQUVYO0FBRkQsV0FBWSxTQUFTO0lBQ25CLHlDQUFJLENBQUE7QUFDTixDQUFDLEVBRlcsU0FBUyxLQUFULFNBQVMsUUFFcEI7QUFFRCxNQUFNLE9BQU8saUJBQWlCO0NBSTdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBIb3N0QmluZGluZyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge2NvZXJjZUJvb2xlYW5Qcm9wZXJ0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHt2NCBhcyB1dWlkfSBmcm9tICd1dWlkJztcclxuaW1wb3J0ICogYXMgbWltZSBmcm9tICdtaW1lJztcclxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge21hcH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEV2ZW50VHlwZSwgSHR0cEhlYWRlcnN9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5cclxuY29uc3QgQ1VTVE9NX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1IgPSB7XHJcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE5neE1hdERyYWdEcm9wRmlsZUNvbXBvbmVudCksXHJcbiAgbXVsdGk6IHRydWVcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmd4LW1hdC1kcmFnLWRyb3AtZmlsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25neC1tYXQtZHJhZy1kcm9wLWZpbGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25neC1tYXQtZHJhZy1kcm9wLWZpbGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtDVVNUT01fSU5QVVRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hNYXREcmFnRHJvcEZpbGVDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgYWRkaXRpb25hbERhdGE6IGFueSA9IHt9O1xyXG4gIEBJbnB1dCgpIGFkZEltYWdlU3RyaW5nQmFzZTY0ID0gJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBZ0FBQUFJQUNBWUFBQUQwZU5UNkFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFDQmpTRkpOQUFCNkpnQUFnSVFBQVBvQUFBQ0E2QUFBZFRBQUFPcGdBQUE2bUFBQUYzQ2N1bEU4QUFCZzcwbEVRVlI0MnUyZENaUmxSWkgzYTZPN0FkbVI5V3VCcHBWaGlxNnVWemYra2U5VkZWaTBvTmk0QU5JSWdqQXU0REE2SUNLRHVDdUlqakp1NCtpNG9JN0k2TEMwZ2l5S0RpQXFpQnZEYnFzZ2pRaXlpU0RLanQrSjluWlpGTlhWNzFXOXlKdjN2djg3Sjg3bm1ZLysxYzBia1JseE15TWp1cnI0NDQ4Ly92ampqei8rWnZMYlk0K3g3dFZDSG5ua2tVY2VlZVNWa3plalA5eU9CeUNQUFBMSUk0ODg4dUx6WnZMSGV5WklOM25ra1VjZWVlU1JWeTVlcTMrOFo3S1FSeDU1NUpGSEhubmw0czNrai9kT2tCN3l5Q09QUFBMSUk2OWN2RmIvZU85a0lZODg4c2dqanp6eXlzVnI1UTkzNTMrd2I0TDB6dlRjZ1R6eXlDT1BQUExJaTgrYndPeHU5ai9zbTBKbU14anl5Q09QUFBMSUl5OGlyNnVWYTRNVC92ZzZFNlFkZ3lHUFBQTElJNDg4OGlMeHVwNmFRTmhVQU5BN3hRUE1aakRyVENIa2tVY2VlZVNSUjU0VHIrdnB0d2VhZHY1OWZObmtrVWNlZWVTUlYxcmUrSzJCdFFZQUU2NGF0T3NNZzhvamp6enl5Q09Qdk9LY2YyOHJ6citYenA4ODhzZ2pqenp5U3N1YmVHdGcrcm9CRThvTFRvd1krTExKSTQ4ODhzZ2pyNXpPdjY4VjU5OUQ1MDhlZWVTUlJ4NTVwZWVOQndETi9LTloxeGFtOHNnamp6enl5Q012Q1Y3VHpyK2J6cDg4OHNnamp6enlLc1ByYTdiZ1QzY2JxZ3RSZWVTUlJ4NTU1SkZYQnVmZjFVcGRZTDVzOHNnamp6enl5S3QwMFNDK0hQTElJNDg4OHNpajgrZkxJWTg4OHNnamp6dzZmNzVzOHNnamp6enl5S1B6NThzbWp6enl5Q09QUERwLzhzZ2pqenp5eUNPUHpwODg4c2dqanp6eXlLUHpKNDg4OHNnamp6enk2UHpKSTQ4ODhzZ2pqN3g0enIvcDJqOFR1Z3J4WlpOSEhubmtrVWRlQlp4L3N5V0M2ZnpKSTQ4ODhzZ2pyL3pPZjNYRHY2WUNnTjRwQWdDK2JQTElJNDg4OHNncnAvUHZhY1g1OS9GbGswY2VlZVNSUjE1cGViMjVyRDBBeVArRGlRRkFIMTgyZWVTUlJ4NTU1SlhXK2ZlMjR2eDc2ZnpKSTQ4ODhzZ2pyN1M4MVQ1OFBBQlkyei9vbVJReDhHV1RSeDU1NUpGSFhqbWRmMThyenIrSHpwODg4c2dqanp6eVNzOGJEd0NhK1VmaldZSmRNL3hSZWVTUlJ4NTU1SkdYQks5cDU5OU41MDhlZWVTUlJ4NTVsZUgxTlZ2d3A3c04xWVdvUFBMSUk0ODg4c2dyZy9QdmFxVXVNRjgyZWVTUlJ4NTU1TEZSRUY4MmVlU1JSeDU1NU5INTgyV1RSeDU1NUpGSEhwMC9lZVNSUng1NTVKRkg1MDhlZWVTUlJ4NTU1Tkg1azBjZWVlU1JSeDU1ZFA3a2tVY2VlZVNSUng2ZFAzbmtrVWNlZWVTUlIrZFBIbm5ra1VjZWVlUzF4ZmszWGZ0blFsY2h2bXp5eUNPUFBQTElxNER6YjdaRU1KMC9lZVNSUng1NTVKWGYrYTl1K05kVUFOQTdSUURBbDAwZWVlU1JSeDU1NVhUK1BhMDQvejYrYlBMSUk0ODg4c2dyTGE4M2w3VUhBUGwvTURFQTZPUExKbzg4OHNnamo3elNPdi9lVnB4L0w1MC9lYW55VkhWdkFHYzFJV2NEV0Q1QnptN3kzNUZIWGxNOHMwWE9YL0lTNWEzMjRlTUJ3TnIrUWMra2lJRXZtN3lrZU11V0xlc0Y4SE1BZjZGUUVwQWJ6U1k1ZjhsTDFQbjN0ZUw4ZStqOHlVdVpKeUlIMGVsUVVoSVJPWkR6bDd3RWVlTUJRRFAvYUR4THNHdUdQeXFQUEU5ZS92Vi9JNTBPSmJFQTRBYXpUYzVmOGhMak5lMzh1K244eVV1ZFoxOWFkRGlVUk9YbG5ML2tKY2JyYTdiZ1QzY2JxZ3RSZWVTNThmS3YvK3ZwYUNpSnlnMjEyc0JjemwveVN1UDh1MXFwQzh5WFRWNkJQUHZDb3BPaHBDeXFlaERuTDNsbDV2SGxrSmNjajEvL2xMTHNBZ3dPTHByTCtVc2VuVDk1NUxXSng2OS9Tb25rQU01Zjh1ajh5U092RFR4Ky9WTktKdGQzZFhYMWNQNlNSK2RQSG5tejVQSHJuMUxsWFFDdUIrVFIrWk5ISHIvK0tSMjJDOEQxZ0R3NmYvTEk0OWMvcGNOMkFiZ2VrRWZuVHg1NS9QcW5kTmd1QU5jRDh1ajh5U09QWC8rVUR0c0Y0SHBBWHRIT3YrbmFQeE82Q3ZGbGt4ZU54NjkvU2hWM0FiZ2VrSmVLODIrMlJEQ2RQM25SZWF6NVQ2bFNqd0N1QitRbDR2eFhOL3hyS2dEb25TSUE0TXNtejVWblgvL1dYWTJPZzFLVlhZRDk5dHUzaitzQmVZazQvNTVXbkg4Zlh6WjVNWG44K3FkVXNFZkFLN2dla0ZjZ3J6ZVh0UWNBK1g4d01RRG80OHNtTHdiUHZwUkU1RVk2RFVyVmVnUXNYYnJYUEs0SDVCWG8vSHRiY2Y2OWRQN2t4ZVlCT0pqT2dsTHhYUUN1QitURjRxMzI0ZU1Cd05yK1FjK2tpSUV2bTd3b3ZMMzMzbXVlOTllL2lGd000S3daeXRrQWxrK1FzMmZCSWk4eG5vaGM0cjBMWUR0Y1hBL0lpK3o4KzFweC9qMTAvdVFWd1l2dzlmOWU2b084NlhpcWVGK01Hd0hVQjNtUmVPTUJRRFAvYUR4THNHdUdQeXFQdkpudzdIelUrZXYvL2thanNTbjFRZDUwdkpHUmtTMEJQT0I1SThCdXVWQWY1RVhpTmUzOHUrbjh5U3VLbCtMWFAvWGJtVHdBSjZhd0MwQjlrTmNHWGwrekJYKzYyMUJkaU1vanIyVmVpbC8vMUcvbjhzeFdpdDRGb0Q3SWkrTDh1MXFwQzh5WFRaNERMN1d2ZitxWHZDSjNBYWdQOG9yazhlV1FGNDFuWC84QWZwN0sxei8xUzU3OXZIY0JyTkxsVkxzQTFBZDVkUDdrZFF3UHdDR3BmUDFUSCtSTi9IbnZBbGpGUytxRFBEcC84anFTWi9mK0FTUng5azk5a0RmNUYzTVhnUG9najg2ZnZJN2lpY2hCS1h6OVV4L2tyZWtYWXhlQStpQ1B6cCs4anVKWlJiUVV2djZwRC9LbSs4WFlCYkNkTU9xRFBEci9BbmdBemxpTFRGVTI5SXhaeUl4NEluSk1sZlNSd3RjL0Z3L3ltdmxGdUJGd01QVkJIcDEvQWJ3U05SUDVuNnJvdzg0OWkvNzY1K0pCWHJPL0NMc0FOMDdvRkVoOWtFZm5IL0dNcjNRQlFObjFVZlRYUHhjUDhscmxSZWdSY0REMVFWNHM1OTkwN1o4SlhZVXErWExLRmdDVTNWaUwvdnJuNGtIZVRIamVQUUxXVkJlQStpRFB5L2szV3lLNHI4b3ZwMHdCUUJXTXRjaXZmeTRlNU0yRzU3MExNTGt1QVBWQm5vUHpYOTN3cjZrQW9IZUtBS0JxQ1Q1bENnQktiYXdSdnY0ZldOUFhQeGNQOG1iTEd4a1ozaUtWWFFEcWc3eFpPUCtlVnB4L1g1VmZUb2tDZ0RQTGJxeXErZ3JuZDNRaUp6dDV6cmRYVG5MZUJUaUkraURQZ2RlYnk5b0RnUHcvbUJnQTlGWDE1WlE0QUNpVlB2S3YvNS9IL3ZybjRrRmVPM21xdXBsenA4QWJwOXNGb0Q3SW00WHo3MjNGK2ZkVzNmbmJ2eXRwQUZBNmZSVHg5Yy9GZ3p3UFhsRzdBTlFIZVRQZ3JmYmg0d0hBMnY1Qno2U0lvZEl2dTRRQlFPbjBVY1RYUHhjUDhoeUQyZWk3QU5RSGViTncvbjJ0T1ArZVRuSCtKUXdBU3FtUDJGLy9YRHpJOCtiRjNBV2dQc2liQlc4OEFHam1INDFuQ1hiTjhEZlZZRUxRelZUMXhYWkZDOEJ5QU5jQXVBdkFZeVZ5d0pRMDVTbGYvMXc4eUl2Qmk3QUxRT2tjTVQ5NE40RHJWUFZjdTI0cUlpOFpIUjNkcEEzMjNMVHo3MjZuOHc5QnR3WndOSUR2QW5pY1NxWjRmLzNUZVpFWGsrZTlDMERwZUhrQ3dHWG1SNGVIaDdlWW9UMzNOVnZ3cDdzTjFZWFdxZGZyQWNCWEFEeENCVkppZmYzVGVaRVhtOGRkQUVya1hZS3Zpb2kyMWZsM3RWSVhlSnAvWDYvWGgwVGtmQ3FLRXZ2cm44Nkx2S0o0M0FXZ0ZDRGZGSkdhMS94bzZkZG9OQ3dLL2l5QUo2a1lTdXl2ZnpvdjhvcmtoYUNiY3hlQVVwQjhYaVI3Wm1IT1gwUmVDdUIzVkFTbGlLOS9PaS95VXVBQmNqTG5JNlVnc2VUQmwwZDEvbU5qWS9ORTVGTjgrWlFDdi80M28vTWlMd1ZlbzFIZmlyc0FsQ0pGVmI5UXI0Y04zWjEvclZiYkJzQ1ZmT21VZ3IvKzZieklTNGJIWFFCS0F2SXpBUFBkbkQrQWZnQzM4a1ZUaXZ6NnQ2NXNkRjdrcGNSakxnQWxFYmxkVlJlMzNmbUhFRElBOS9JRlU0cmQ2c0w3Nkx6SVM1SEhHd0dVUk9RUElZUjZPNVA5YWdEdTQ0dWxGUC8xUDdJbG5RMTVLZkpZRjRDUzBscTVwcG9CTGYyeUxOc1J3SjE4b1pRRXYvN3B2TWhMaXNkZEFFcENjcStJN0RTTlRVOC9Id1lIQnpkMjd1SkdvY3owNjUvT2k3emtlTndGb0NRbU41bE5UdVg4MXpZbmVrVGtQTDVBU29KZi8zUTI1Q1hMNHk0QUpUSDU5dXIyMGhNYS9rMGZBQUE0bGkrT2t1RFhQNTBOZVVuenVBdEFTYkJPd05zbWR2dGRtL1B2WnpNZlNqb2lKOVBaa0ZjbUhuY0JLSW1KTlJQSzFob0FyTHZ1dkI1Vi9TRmZHQ1d4ZS85ME51U1Zoc2RkQUVxS2hZSjIzMzFzenJTMkxDS3Y0WXVpSkhiMlQyZERYdWw0M0FXZ0pDaXZuMjdyZjMwQXYrVkxvaVFpOTF2TmZ6b2I4c3JJczUwcjdnSlFFcE83UmtaR05walNZRldWaVgrVWxPUzlkRGJrbFpsbk8xaWN4NVNVUkVUZStqU2pYYng0WUM2Ly9pbUpmZjF2U21kRFhwbDVkbnVGdXdDVTFIWUJyS1B2VTR4V1JBNktsSWw0R1lDUEFEZ0t3Q0dxdWt4RTlsK1RXSy9qeVRMZGY3ODJJYThjUEZWdDBObVFWd1dlcWc1elBTQnZLZ2toSEtpcWg0V2diMVRWaitiKzhkRUkxd0lQZTRyaFdyRUF4ejk0bjRnY043a2lFUmNQOHNnamp6enl5UHNiYjNSMGRCTlZmUk9BZXh3RGdPK05QMHdJd2JhcG5uVDZZeitxMVdyYjBCaklJNDg4OHNnanJ6bGU3cGQvNEJVRVpGbjJyRlYvU0ZXOXJ2NnRzSDRDTkFieXlDT1BQUExJYTQxbkdmc0Fybk5LQnZ6cmxVQUFaemdGQU1NMEJ2TElJNDg4OHNpYkdVOVZ4Y2svbjdNNkFQREkvcitVeWlPUFBQTElJNCs4MmZGRTVGc09QdnJ1cnVIaFZjVXFQTFlYWGtmbGtVY2VlZVNSUjk3c2VKYTE3K0duN2V0L053OXdDT0h2cVR6eXlDT1BQUExJbXgwUHdBS3ZBT0FRQi9EalkyTmpmVlFlZWVTUlJ4NTU1TTJhMXdQZ29iWUhBQ0x5Um9jQTRBNHFqenp5eUNPUFBQTGF3d053UzlzREFGVjltME9SZ1Y5U2VlU1JSeDU1NUpIWEhoNkE2ejJPQU43dXNBUHdjeXFQUFBKOGVWYlBPOHV5SFMyUFIwUU90TjA4VmJYbU01OVcxVE1CWEFUZ1NnQTNxT3BLQUxjRHVEZXZUZitnaWFyK0VjQWZMQ01Zd0swV3ZGdmZjS3NVQnVBYnF2b2xLOTF0SHdxcStscFZmVEVBTkJyMXJSb05uVU45a0VkZUhCNkFxMHNkQU5BWXlDT3ZOZDdJU0dQZExNdDJWdFY5cllzWGdDOEMrSDd1ekl0dUt2Sm5DeTRzVUFCZ2RjeVBGSkV4cTJEVzFkWFZUZjJTUjE3N2VLVU9BR2dNNUpFM1BhOWVEeHNDZUs0cXJBNzRmd0g0UHdDUGxMVGoyTjBpY3JHcWZoakF3Zm10b0I3YUMzbmt6WXhYMmdDQXlpT1B2S2YvQUd4bDNjUlU5ZDl0MnozdmxsbmxOcVIyMUhDUnFyNWJWVitRWmJWTmFDL2trZGNjTC84Z0tGY0FRT1dSUjk1ZmYxbVdiUVJnUHdDZnREbkN2dVI0SE1BUEFUazVoTEJrNGNLRmMya3Y1SkUzTmE5MEFRQ1ZSMTZIODJ6UzlxdnE4UUMrbXp1OHYxRFdLQS9taVlmL0NHQSs3WTg4OHY3R0sxVUFRT1dSMTZHODdpekxncXArTU0rb3AyT2Z1ZGl4eURzdGlLTDlrZGZwdkxJRkFGUWVlUjNEeTdKc0VZQVBBUGcxSGJlTDNHaTVBeUt5RSsyUHZFN2tsU2tBV0VIbGtWZDFubDEzVTlVM2VVeE15bHAzQm80RlpCdmFNM21kd2l0ekFFQmpJSzhTdk1IQlJYTkRDQzhBc0x3RHN2WlRsOGRFNU9zaXN2ZXlaY3Q2YWMva1ZabFgxZ0NBeWlPdjlEeXJmQWVJSmZQZFRNZWJwUHpHcWhYbVJZaG96K1MxeEJzZUh0NEN3TENJdkZSRTloZVJwUUFHc3l4Ykw1WHhsakVBb0hHUlYycWU2cW9zL3Mva1ZlL29hTk9YUndHY2J1V0thYy9rVGNPelpOM1IvRXJ1ZEhrN2o2dXFYVlY5dXlvV0ZEbmVzZ1VBTkZieVNzdXppbndBenFkRExhOVlQd1A3b21NRlF2SW04dkt2KzUvT3NHN0ZmOWZyNGRsRmpMZVVoWUJvck9TVmhUZC8vclk5SVFSYkhMNUhCMXE1R3dTSEFaakQrZEc1UEZYZERNQlpiYkNuaHl6NWQySmdHV084bFE0QWFLemtGY2l6alA0WHFPcVZkSmFWM2hGWUdZSytQZ1Nzei9uUldiejhtdTdLZHRxVGlIeHRkWTVBalBGV05nQ2dzWkpYRk05YTZlYmQ5ZWdrTzBkdVZZVlZHNXpEK1ZGOW5valVBUHpleVpZdVhWc1EwTWJlSWRVTEFHaXM1QlhCc3k4Q0VUbVB6ckNqZHdSK0tTSUh0cktWeS9sV3V2SzU4d0g4enRPT2JDZGdUVGJVNW8rVmFnVUFORmJ5WXZQeURueWZCZkFFblNBbGx4K0p5QmpuUjdWNFZoc0N3QThpQlpOdjhoNXZwUUlBR2l0NU1YbjkvZjF6Uk9RNEFBL1E0VkhXc0loL1BjdXlIVG5mcXNGVDFYK09hRCtXR0xpRDUzZ0JYRjJKQUlER1NsNU1YZ2poK1hZMWxVNk8wbVFkZ1EvMDkvYy9nL090dkx5UmtaRU5BTndiMlhhKzNPVjdOYm44QVFDTmxieFl2Q3pMdGdid1ZUbzF5Z3prTmdBSDJOVlF6cmRTTnM0NXVnQ2JlVHpMc3UyOHhsdjZBSURHU2w0a1hvK0l2QTdBSHpyTWFWbGV3KzE1a1pNTEFKd0c0T09xT0VrVi93TGduK3crZkY3cTlDVjVRWlM5VEZSMWJ5dWFZMDR2LzI5ZXI2ckhxK3I3Uk9SVEFQNEh3Q1VpY2lPQSt6dm9uVjZZRjM3aGZDc1JUMFN1THNaZTVPMWU0eTExQUVCakpTOEdiMmhvYUNHQTcxYllJVmtPdzVXNWMzK0hxcjVDUkVZczIzbHNiS3d2bGo1MjIyMTAwM3E5UG1DTmVPeXNWVVErTGlMZnNpdDJGWHpuZjFiRjhVdVdqTTNqZkV1ZmwyWFpzd3JNSTduU2E3eWxEUUJvck9SRjRQWGtTVDlWcXRsL2MxNjU3QVFSZWFFdGJGYTBLSFY5aEJBMnREcnIrUzdDcVFDdUJmQmtGVzRMaEJEK252TXRiWjRGeFFYYXlPT05SdGpJWTd5bHZBVkFZeVhQbXhkQytIOEF2bDF5NS9LSVhWbFN4UWRWZForaG9kb1dWZEp2bnBUMVBCRjVGNER2V05aMFdmVmtSeVBOdGgvbS9JM1BzMk9yZ20rVGlNZDRTeGNBMEZqSjgrWlpJUmNBOTVYUWtkZ1g4VTlWOFFGVmZjR3V1NDV1MkVuNlhiSmt6QUtDUFZUMS9RQitWa0w5WFdKSnBweS82ZkVBZkxGSTI3QmpNWS94bGlvQW9MR1M1OGtiR0JoWVA5OWVMdHNWczNOVjlWRDd3cWQrLzhack5CcmJXdUptWHAzeGtaTG8weXJNUFkvek55MmVxcDVaY0FDd3Y4ZDR5eFlBMEZqSmMrR0p5QzdXNGExRW1mbmZVZFhYTmhxTlRhbmY1bklJQUJ5c3F1ZVhvR0xqazNhc01mRklnUG90bGdmZzlJSURnSmQ2akxkTUFjQUtHaXQ1VGdrK2g1WWswZS95UENseEsrcDNWa1djTEwvam5lM3U1T1lnM3c0aGJFbjlKbEh1KzZNRjI4S3d4M2pMSEFEUVdNbWJGUyt2Ni8yaHhKM0FOUURlVXEvWHQ2ZCsyOHN6L2VkMUM3NW1tZGFKNnY4T1ZWMUMvUmJMczlzblJkckI4UER3Rmg3akxXc0FRR01sYjFZOEs4c0s0SnhVdDREekd2S2owMTNSbzM3YngxUEZzMVJYclZzM3AzamtFNEsrczFZYm1FdjlGc096TFB3QzlmOXJyL0dXTVFDZ3NaSTMyMjJ2K1I2RzM0N21IMVloVDFXZlEvMFd3OXQwMDAxc1YyZ1BxOWFYb0gxOHEycFhPY3ZDMjIrL2Zmc0EzRldRM2ovcE5kNnlCUUEwVnZKbTYvenRkMGRpQzdzdExPK3MxV3JQcEg3VDRhbHFJNjlFbUZRL0FSR3BVYi94ZVlCOG9naWQ1enVCTHVPdFZEdGdHaXQ1YTNIK0J5UldMT1pHeStRZkd4dWJSLzJteTh2TEluOG5vUmJEZjdSZEN1bzNMcTllRDM5ZndBMlNuM29lQTFZNkFLRHhrNWYvdXAxc2NxWUwrQzlGNUdWV2FwajZMUThQd0c1V3JDZVYrZzlXbnBiNmpjc0Q4RitSci84dDlSeHZaUU1BR2l0NTlyT3ZhK3VwbmNpaS9YdHJLZHJmM3orSCtpMHZUMFRHRW1vT2RTejFHNDgzUER5OEpZQzdJK24yTE8veFZqSUFvTEdTMS9YWFNuQ2JXaTM4QkJicHh3QjhyTkZvYkViOVZvTlhyMk1PZ1AwQS9DYUJIYVVQVDl4Tm9uNTllZGJtT2tJanFwV3F1cG4zZUNzWEFOQll5WnZnL0ZPb0IvLzFlcjIrTS9WYlRWNlcxVFlCNUNNSlZCZjh5c0tGQytkU3YzRjRJdkpHejUzQ0xNc1d4Umh2cFFJQUdpdDVDVG4vbjZucTg2aVB6dUJsV1RZRTRNY0ZsNHU5T0FUZGpQcUlWajc4alE0N0FiOWIweTBQai9FQ3VMb1NBUUNObGJ4RW5QOERJZWpyV0xTbDgzaFdXVEF2MWZ4QWdVSEFOU0t5SGZVUmg1Y2ZCN1FySjhDT0srZkhIRzhsQWdBYUszbUpPUC92RGc4M0ZsSWZuYzNMZXcyY1hXQk93RW9lTzhYaldabGVBRitZeFRIUXZSWTRUbXorRkd1OHBROEFhS3prSmVEOEh3NUJqNXZ3MVUvOWttZGJ4Qzhwc0hyY2I1dXBLRW45dHJWYzhITkU1T1BONmx4RXpQa2VQVEl5c2tGUjR5MTFBRUJqSlM4QjUzOVZDTHE0azdMZkxmRXRoTERBeG0xZHlnQThOeStmdTBxc2VZMnE3bW9sRisxTDFMNklCd1lHMXU5RWUyNDBHdHVxNnZlS0NnS0dob1lXY24ySnkxdTZkSzk1SVlRNmdLTUFXRUJ3dXFxZUNlQ0xxdm8rcTkrUVpkbXpVaGh2YVFNQUdpdDVCVHYveDFWeFVnaFl2Mkw2c0lTMlo0bklubmtIdEZOczhWTFZIK1pYM2g2ZXhUdjdjMzY5eVZobkFmaXdmUUdGRVBhMm81UEJ3VVZ6cTJqUFkyTmpWa2YrQXdVRkFiZXVxWk1rMXhmeVNua0xnTW9qcjJEbi93c3JEMXNCZmZTSXlFNnFlaGdBcTNOK2VaRUpiQUQrWkpuMEl2STVBRWZhRGtJelJaUEtZczhoaEgzeVlsQ3gzK3ROdFZwdEc2NHY1RTNtbFM0QW9QTEk2L3BiTzkrZkZKQmdkU2FRYlZUUzk5Y3RJcnZZVjdlMUd3WndUNkx0a0ovU0lSSEFaYloxYXNjTFdaYXRWMlo3RnNsMkJQQ2pBdDdqOVJZd2MzMGhieUt2VkFFQWxVZmU2aS9YM0lIRmR2N3Z6cmVwUy9QK2R0MTFaSU04R2UwektWU3RhNE04a2pmbU9UYkxzcDB0SjZGczlqd3dzR2d1Z0k4VzhPNnVtSmlMd2ZXRnZMSUZBRlFlZVpaZC9hOEZmSVVlVUpiM056UTArSXdRd3Y0QUxQSG93UW80L1duYmhLdmlnNEJvSGd5VXhwNUZaUC84MkNQbSs3b2d5N0oxdUw2UVY3WUFZQVdWUng2QVZ4VnduUXBseU02djErdWpBT3o4L0w2S08vMDFkbGtFOEo0c3kzWXNpejFuV1JaaUg4Vllqa1VaZDA3SWMxbFBTeHNBMEJnNnoxanR1dG1qRVJmTEh3ME4xYlpOK2YzVjYyRWpRSTYyTTk1T2RQclRGV1VDY0loMWcweDlmbVJaOW5lV3JSODNXTUs3dWI2UVY5WUFnTXJyTUo3ZFo3YUtXVEdicXd3UEQ2K1g2dnNEc01ET2tWWDFqM1QyYTIzQi9DRjdYeW5Qajd4NjRIVXgzMDBJNFVDdUw1M05LMk1BUU9WMUdHOTBkSFFUeXdHSnVFWDZydm56dCsxSjhmM2xYNHRmU2FEN1hObkVtcmFjSFVMSXV0SXRHaFM3ZmZWREloSzRYblV1cjJ3QkFKWFhZVHhMV01xenZtTXRpc2VtK1A1cXRkcDJBRDVQeDk4V09VZEVOTVg1WWRjY0FYd2pabzVMbG1WYmM3M3FURjZsMmdIVEdDckg2MWJWLzR5WVJQYW0xTjVmQ0dITHZMNzRJM1RjYmRmM3Vhb3FxYzJQSlV2RzVnSDRyNGp2NGdmTkZGemllbFU5WHFVREFCcEQ2Uk5Vam9xNDdYOU1TdS9QamozeTRqZC9vck4ybCtVaGhJR1U1a2Vqb1hOVTlhTVI3ZjlUWEs4NmoxZlpBSURHVUc2ZWxkcTFldnNkNlB5dFBPL3JPdlVxWDhIeWxlbEs1c2FlSDNaVlQxVlBqVGorUTdoZWRSYXZrZ0VBamFIY1BGWGRMRmJWT2hGNVl5cnZMMC93dTR5T3VGQ3hYZ2hIV3dPZkZPYUhQWWVJZkMzUzJLMVpVei9YcTg3aFZTNEFvREdVbnRjZE1RbnFxQlRlbjUyL0FuZ0h6L21Ua3F1c3BXc0s4OE5xR1FDNE5OSzRyNXZZYjRIclZiVjVsUW9BYUF5VnVKZDZWS1FFc0g5T1lieDUzL0RyNkhDVGxjL1lqbFJYOGJkaE5yS2dKTktZUDh2MXFqTjRBSzZ1UkFCQVl5Zy9MOHV5UlpHK2drOHVlcno1VjkzSDh2dnBkTFJweTkwaWNsQUN3ZUtXZWJuakdFZGpMK042VlgxZUpRSUFHa1A1ZVFzWExwd3JJbGRIV055V2I3cnBKcjFGanRkcTFVZjhtcU8wVDc2VVpiVk5pcHh2cXJvRGdOdGpWRkFVa2UyNFhsV2JWL29BZ01aUURWNmtEbjlYTFY2OCtCa0ZYMjNjRDhEOWRLYWxsVi9XNi9WUTVIekxkOHBpM0JMNXBsMUg1SHBWWFY2cEF3QWFRelY0cXRxSVVPSHVqaERDL0tMR215ZjZmWVFPdEJMeXFCV05zaXViQldadjd4SHArT2lmdUY1VmwxZmFBSURLcXdZdlB3djNydk8vcXVaNWdRbGN6d0p3UllVZDR1UDVGK2x2QWR4c1pidHorVlhlNWU3dWl0NXd1TkRPNVl1YWI2cDRWNFJrMlQ5YUdXcXVWOVhrbGZJV0FKVlhxVnJVNzQrd1VMKzhxUEdHRUhhUDNNWFF3N24vd3E1bXF1TGpxbmlUcWk2cjErdWpxcm9naExDaFhkMXM0clYxTnhxTmRhM3JuYXBDVmZmNTY0MFBzVjJSODFUMVZ5WHRjL0M3TE10Q0VmT3RWaHVZQytCYkVSSUN2OVdranJuK2xZeFh1Z0NBeXF1VTh4LzBydlpubmYyS0dxOEZIclpkWENKbjloaUFId1A0QklCWGlVaHRiR3hzM1ZqdnorNmZXNU1lMjNaVzFTL2xPd2hsZUcrMnc3Ui9FZk10Qk4wYXdHMFJkZ0lPNWZwWFBWNnBBZ0FxcnpxOFpjdVc5UUs0MG5uaE9zUEtxUll4WHFzd1dBTEg5WVNxL2hEQWlRQ2VOekF3c0g1cTlwTHZHQndHNFBUVWQxSlU5VjhtZmluSGVuOGhoRVlldkhtTzc5NHN5emJuK2xjdFh0a0NBQ3F2T2wyby9zbDV3Vm9aZ201V3dIaDdWUFdEQ1R1cFB3TDRINnY3dnJyQVRWbnN6OHJpQW5odVhqL2g5a1RmOFdldGhYVUJYM0l4Q21oOWdldGZ0WGhsQ2dCV1VIblY0QTBQRDIvaGZZMnBYcS92RVh1OGVhYi9seE4wU3BhQWQ3WVZkNWxZNXJYTTlyZjMzbnRaOHVnTEFmeTNiY0VuOXI2L1hVRHdhZWU1WjBUSUJ4amgrbGNkWHBrREFCcERTWG4rSGM3a0k3SEhPekl5c2dHQWl4SnpSRlppK09qcHZ2U3JZSDhqSThOYjJMVzh4SElHYnBoVVNDZEd3dW1HZWNLbWF5ME5PNzdqK2xlWmx1dWxEQUNvdlBJNmYzRmVvSzVmc21Sc2c1amp0YS9xaU0xYTFpWlA1dDNqbnR0SzVuWVY3TThjazZydW0rYzFwS0NMWDZoaWZ1UmVHb1BlK1FEV3JwcnJYMlY2cjVRdUFLRHl5c3V6YmNvZk9CZG9rUUsyL1M5SVpKdi9jeUdFNTlEK1Z0blpIczYyMXF6Y0NHQ3JtTzhQd0FlOGV5UFVhazhwaWN6MXI2UzhzZ1VBVkY2SmVYWi8zSE5oQ2tIZkduTzhlVkxhV1VWZjNWUFZ6NFFRZHFEOVBUMFFVTlc5QVZ4YnBJNUU1SVptQ3dhMTQvM2xPMUkzT1NlVG5zTDFyeEpYc2F2VERwakdrQzR2LzFMK2xlT0M5UDJsUy9lYUZ6UGJYMFQrcTJEbmI4SEhUclMvNlg4V3FObTJOWUI3aXN6SHNPVFhXTzlQUlBaMEhzL0RJdG1PWFAvS3phdDBBRUJqU0ljbklxLzN2TnBXcjRkblJ4eXZiVEgvUjRITzVHZXF1aHZ0cjdWZkNMbzVnRk1MMU5zMTA5MmxiL2Q0STl4SStSTHRyOXk4eWdZQU5JWjBlRlpnQnNCZGpndlJteU5mblhsL1FRN0V1Z2dlRlhtbm8zSThWVjJTbHg0dUpIaWJYSERKYTd5am95UGJPQmRQZWlLRTBFLzdLeSt2a2dFQWpTRXRub2k4MVRQVE9nU3NIOUg1djZvZ3gvR05rWkhoN1dsLzdlSFY2NnV1ekJXMWk3TjhZaWRCNTJEbnRkN0hVTFMvOHZJcUZ3RFFHTkxpMWV0aEk4K3ZrQkRDUGhHNytvVUN1dG85RUlLK2VrSmZkdHBmRzNsNWt1RGRCU1FHbmhSanZHWTNFYTZvRHRMK3lzbXJWQUJBWTBpUEI4amJIUmVlYitlMS9tTTQvNjN6ZHJjeEhjV1ZJZWh6YUgrK3ZFYWpzUzJBN3hld0UzQndqUEdxNms2V3RPZThvMEg3SytYNmpLc3JFUURRR05MajdicnI2Q2FPWC85UHFHSXd4bmdYTGx4b2JWZXZpRnl6LzhPcXNoN3RMdzdQNnZmblhSQmpCZ0FQVzF2bFNMMENUblllU3ovdHIzeThTZ1FBTklZMGVhcjRGOGNGNXo5akZaVVJrYzlGZEFwL0VwRURhWCtGM1lzK1BFSm52WW55TzFVczhCNXZvOUhZTkU4aTlSckhsMmwvNWVPVlBnQ2dNYVRKR3hvYWZJWmp4N1kvREEzVnRvZ3hYcy9yaTFQSWI3TXN5MmgveGZMeU8vUVBSTlQ3LzQyTmphM3JQVjVWZmJmakdCNnYxK3ZiMC83S3hTdDFBRUJqU0RxeVBOeHhlL3hOa1p4L0xlTFg0UDgxR28zL1IvdExwbTZGNmY1M0VaTUMveTNDTVljbDVQN2VjUndmcGYyVmkxZmFBSURLUzVkWHF3M1ltZmtOVHM3L2wxWlYwSHU4K2JuL3RaRVcvNHZ0dGdUdEx5MWV2VjdmR2NCdkl1WjlMUEVlTDRBVEhNZnc0T0RnNE1hMHYvTHdTbmtMZ01wTG0xZXYxNWM2THBLSHhoaXZpUHhycElYL1hOditwZjJseWJOeXQ2cTZNcEl0M0xyYWdYcU50NysvL3huT1JibU9wZjJWaDFlNkFJREtLOFcyMGplZEZwZmJXdjM2bjZIekg3RzJ1akVLd2d3TUxKcEwrMHViTnp6Y1dHak9PVklROEdYdjhacVRkbnorbS9iZSt5bVZLbWwvQ2ZOS0ZRQlFlV1dvc0xacTI5U3Q1Sy8zZVBNdnBCaGxZcytsOHk4UFQxV2ZBK0RPU0VIQXl6M0htM2NMdk1PeE9OZExhWC9sNEpVdEFLRHkwajlUT3NXcklwNGxNVVU0SS8xa2hBWCtmN250WHo1ZWxtVkRrVzRIM0dmRmlUekhxNnIvN1BqODU5TmV5c0VyVXdDd2dzcExtMmRPelRITCtFUGU0NDNRUW5WVk14Z20vSldYRjBKNHZsMTVpMkFuNTNpT3QxWmJ2TDVqWmNzbkdvMzY5clNYOUhsbERnQm9ET2x0azc3Q2FVR3hxM2p6UGNlYlY0SmI0Ynlvcjh5eWJCdmFTN2w1QUk2TWRCU3doMitqSUhqV0JYZzc3U1Y5WGxrREFDb3Z6WVNTLzNYSy9QK1M5M2dCSE8xZDRVOVZCMmt2bGFrWUdLT1Q0SFZMbG95NUpkU0p5SGFPdXhrM1RleDRTUHRMTnBndFhRQkE1U1hJc3lwZ1hwbnpxcnJZYzd5cXVwbWR1enJmOVg4WjdhVTZQTHVOQXVBSEVXb0QvTE56enM1eXgrZmZqZmFTTnE5c0FRQ1ZseWpQU2VmbU9ML2xQVjRSK2JpejgvOVgya3YxZUhrWFFlOVd3dmZzdHR1dVczaU5OODlwOEhyMno5QmVrdC9KcWs0N1lCcERZYnh1ci9OekVYbWg1M2p6YTR1ZVNWM2Y5OXpHSmE5WW5vanNIZUVvNEdPTzQrMng3WHF2Mnd4V1VaUDJraTZ2MGdFQWpTRU9MNzhlNWJHQTNEazJOdGJuT1Y0QUZ6Z3UzUGRuV2JZajdhWHFMVlhGdTQzd1kxbVcvWjNYZUZYMWVNY2pqQmZSWHRMbFZUWUFvREhFNDNtVnpiV3RlV2ZqMzh0ejRRNUJYMGw3cVQ1djExMUhONHh3ZytRc3IvRU9Edzl2QWVCUnArYytqZmFTTHErU0FRQ05JU3JQcnYvZDR2VDEwSEFjcngxYlhPRzRZSCt0MGRBNXRKZk80TlhyOVZIbjh0RlBoaENlN1RWZUFGLzEyZ1diWEw2YjlwSU9yM0lCQUkwaExpK0VrRGt0SEw4MkorMFkrZTdtV2NtdFhnL3phUytkeFFQd0VlY2JBZi9wTmQ0UXd1Nk96NzRYN1NWTlhxVUNBQnBEZko2cXZzOXBzWHVmNTNoVjlYekhoZnBJMmt2bjhVSUlkaFJ3bTZNamZUaUVzS1hUZUxzZGp6RStTWHRKa3dmZzZrb0VBRFNHd3U2Ulh1KzBhUFI3alRlRU1PQzRTUCs0Vmh1WVMzdnBUQjZBQTV4ekFVNTB6SWw1cDlNei8yYisvRzE3YUM4cEpyQldJQUNnTVJURFU5VWRuQmFNYTV5M3ZVNzNXcUR0TEpqMjB0azVNUUMrNnhnQS9ONDZWbnFNMTNJTUhIZkZoUGFTSHEvMEFRQ05vVGllaUx6QmFjRjRpOWQ0VlhXQjQ3My8vNkc5a0pkZmkvVk1DRHlxVEdmQytZMllFMmd2NmZGS0hRRFFHQW92SW5HQjAxZjA5bzVuWGw3dGZoOExRWjlEZXlFdm54dGZkdnlhdm1YWnNtVzlIdU5WeGJ1Y252dGkya3Q2dk5JR0FGUmVzVHlyOEdVTmJoejBmS1hYZUVOWVZmUC9UejRMbkh5YTlrTGVoQUJnUWQ3RjBxbkdSRmppTWQ1NnZlNVYxT3VSWFhjZDJZRDJraGF2bExjQXFMemllWTdYaHQ3dU5WNVZIT1AwekZaRVpRSHRoYnhKUWNCbi9JNEI1R1NQOFZydENnQzNPRDMzR08wbExWN3BBZ0FxTDVuRjdiMGVpMFNXWlpuSGVQT0Z6ZVY4VTBRK1Qzc2hiNHA4a3gwYzgwMis1cmd0L0Vtbm80dC9wTDJreFN0VkFFRGxKVlZCNmpJSEhkODlPTGhvcnNkNFZRSEhibjkvUjNzaGJ5cWVpSnptWkhmLzZ6VmV4d1pIYjZHOXBNVXJXd0JBNVNYQWF6UWE2OXFabm9PT3ovQWFyeW8rNXJTb25VdDdJVzlOUEVCcVRrSG4rVjdqemJKc1BTczY1UERNYjZTOXBNVXJVd0N3Z3NwTGc2ZXF1M2x0RVhxTWQrblN2ZVlCdU4wcEdldjV0QmZ5cHVNQitJNkQ3WDNLK2N2d0VvZjV2US90SlMxZW1RTUFHa05CUEZXODFTY0FRTC9UbWViem5MNytmMlg5MUdrdjVFM0hNOGZuWUhzSGU0NVhSRHptK0ZhMGw3UjRBTDVmeGdDQXlpdVFwNnJuT3VqM3pnbmQ4OXA5MWVVL25BS0FFMmd2NUsyTnQ5OSsrL1lCV05sR3UzdG9jSEJ3WTgveFpsbjJkMjJlSzVmUlh0TGpBZmhDMlFJQUtxOUFYcDVOZjRlRGZyL3VNVjZyUVE3Z3R4N3RXUnVOeHJhMEYvSzZtc3UyUHJxTlcrbi9Ic2s1ZktPTjUvOHZwYjJreDFQVnc5cThMajdoR1FCUWVRWHpSa2FHdDNlNjEzeTh4M2dkMnhWL2gvWkNYck84dkhCV094cG4zVjJyMVo0Wlk3ejFlbjNuTmlVRGZudXExdDYwbCtKNXRwUFU1dUpvRnhiV0Rwakc0TThMSWV4VHBpSWhYaDNPVlBVMXRCZnlXdUdKeUM0QUhwaUYzVDNlYXRMcGJNY3JJcStlNVZ5NXJWYXJiVU43U1pjSDRFTnRYQnQzU3lZQW9ERjRKRFQ1MUFvZkdSblp3R084QUg3ZzhMeFBaRm0yT2UyRnZGWjVJaklDNEw2WmxOSlYxV1ZGak5ldTc4MXdudHhxdVFTMGw3UjVJWVFOcmI5RUc5YkZMNnhlZEFzUEFHZ01icldqejNEUTdTODh4bXRCaFZNbHR1L1NYc2liUmFPZ0JTMFcwcktqQXhRNTNoRENDOHlodDNEbS83WHBqaXBvTDJueHJBTHJMSGVuZmp3d01MQitFZ0VBamNHMWR2U05EdHZwWjNxTVYwUmU2SFJjOFdiYUMzbXo1SFdyNm92c3pEVHZKZkcwSkZPN29pVWlyeHdiRyt0TFlieU5SdGdvVDJhOGFnM3o0czhBemxxMURVejlsbzRYUXRnVndGMHpXTCsvMTJnME5wMFk0UllXQU5BWS9IajkvZjF6UERxY3FlcmJQTWFycWg5MHFzSzJDKzJGdkhieDZ2V3dZYjFlSHcwaDdBL2dnQkRDV0sxVzJ5VGw4UTROMWJZUWtURVIyZC9xSEdSWk5tU0pqdFJ2dVhraXNoMkE1VTJ1aFJid3ZTUExzblVtYjNFVkVnRFFHSHg1ZVZhd1IwTGR2aDdqOVNoeVlWY2cxNVRSVEhzaGp6enlLckxUTzJqWFRlMzJYYjRidFhyOXMxc2hWMWhmaCtIaDRTM1dkTVlWUFFDZzh2eDVJdklTcHkvcW5kbzkzbnkzNG1HSFlPVy9hUy9ra1VkZXAvREd4c2JtV2MyVEVNS1d5NVl0NjEwTHN6dDZBRURseGVHcDZwdWNNdXJYYWZkNEhlLy9IMGw3SVk4ODhzaDd1dk9QSGdCUWVWRWJSM3pDUWE4M2U0eFhWVi9yRkFBTTBsN0lJNDg4OHNhWlBibkVEUUNvdkxnOEVUblBRYThYZVl6WEtWajU4OFNNYk5vTGVlU1JSK2YvdHdCZzllTHJIZ0JRZVlVMGpyaldRYStmOWhpdjNkVjNlTllyYUMva2tVY2VlYXQ0dmJuRURRQ292R0o0QUg0ZjR3cGdtOHBiM3VYd3JQOUpleUdQUFBMSUczZit2VTl4L3Q0QkFKVlhESy9SYUt6cmRBWHdzSGFQMTRwU09OMVdlQVB0aFR6eXlPdHdYbDh1NHdIQTVLOHZsd0NBeWl1T1Y2L1h0M2R5cW51MmU3ejQ2OC9qV1o5UGV5R1BQUExvL01jRGdKNnBGbUN2QUlES0s0Z1hRcWc3WmRYM3QzdThWazNONlZrWDBGN0lJNCs4RHVlTkJ3QnJXb0E5QW9BVlZGNXh2THh1dVlkVDNhcmQ0N1ZhL1E3UCtlalNwWHZObzcyUVYzVmVYa1JyUVFoaGR3Q0hpTWh4QUU0QmNGcCtFK2h5QU5mbHpZSHVBZkNnZFN1Y1ZESHV5ZnovOW1EKzM5eWEvNXZMYzhacHhzelpoK1IvYTRIOWJlb2plZDZhblgvRUFJREtpOGl6cGlRZUFjRHV1MC81YkxNYUw0Q1BlZFFyb0wyUVZ4VmVvNkZ6VlBFc0FDOVV4VEVpOGlrUnVUaDMxRTg2QmZ2TmlQM3QzNGpJSllCODJwNE53RjVabG0yenBoTGMxRzkwWHQrMHZBZ0JBSlVYbVFmZ0tBZWQvc0ZqdkFEK3grRlpMNk85a0ZkV1hwWmxXMXZQRFZWOFFFUXVBbkJuZ1U1K3BuS25pSHdMd01rMkZoc1Q5WnVZODQ4UUFGQjVCZkNjZEhxcngzZ0IvSy9EczU1SmV5R3ZKTHp1b2FHaGhRQ09zSzEyVmIybGhNNisyVnRFdCtUSENVZlltRmZ2RXRCZUN1UTVCZ0I4MlFYeEFQbVFnMDZ2OVJqdk5QM0taN1BRL0FmdGhieFVlVm1XYlpTMzVqMDEzOGIvUzRmS3JmazdlSGtJdWpudHBRQmVVZTJBcVR3L25qbEFqOHA2SHVPMTgzcUhaMzBQN1lXOGxIaXF1b09JMkJuNUpRQWU2MkNudnlheGQzSXBJRzlXMVFXMHYwaThWQUlBS3ErZDIrcnllWWQ3OVpkNGpOZXBDdUNiYUMva0ZjM0w2M0djQU9DbmRQQXRpNzJ6RSt3ZDB2NGNlU2tFQUZSZTI3ZlZUM2R3cWhkNGpGZFYvK2hnZjBmUVhzZ3JncGRYdGp3eXYzNUhSOTRlc1hkNXBMMWIybCtiZVVVSEFGU2V5N2I2R1E0N0FGL3pHSy9kMlhjSVZnNmx2WkFYaXpjNHVHaXVWWjdNNTkwamROaHVZdS8yakx3aWFRL3RydzFkQW9zTUFLZzhIeDZBcnpybzlDeVA4VHJkWTM0NTdZVThiMTZqVWQ4S2tPTUIzRVRuSEYxdXNzSkVqVVo5UzlyenpGc0VGeFlBY0RIeTQzbnNBQmpUWTd4T2ZRRDJwNzJRNThVTFFSY0RzT3oxaCtpSUN4ZlR3YW1tRTlwelNRSUFMa2ErUEk4ZEFGVTkwMk84QUI2UEhRRFFYc2hybFZldlkwNjlYdDhUd0RmcGRKT1ZDNjFNY2F0VkNEdlIrZWZNN3VnQkFCY2pmeDZBcnpqbzlHeVA4UUo0T09ZUkFPMkZ2RlorOCtkdjI2T3ErNmpxbFhTd3BTazQ5RU1BTDI0bUVPaGs1eDg5QU9CaUZJZW5xbDl5ME9rNUh1TUZjTC9ERHNBcmFTL2t6WkpuUjJrdjhTaFVSWWttUDVzdUVPaFE1OStUUzl3QWdJdFJQQjZBejNwc3IzbU1GOER0RGdIQTYyZ3Y1TTJpbDhZZUFINUVCMW9aTVYzdVFlYy83dng3eGpreEFnQXVSbkY1VGgzMkx2VVlyOW1LdzdPK21mWkNYcXM4MVZYSmZSZlJZVlpXTGpJZGQrajg2TTBsYmdEQXhTZytEOEQ3SFhSNnBjZDQ4L082ZGovcmliUVg4cHBsV0tjNkFKOHZ1TFV1SlY0TDR5OWFlK1VPZFA2OVQzSCszZ0VBRjZOaWVDTHlWb2R0OVJzOHhxdXE1enZZM3lkcEwrU3Q3ZGZmM3o5SFZlMGUvNE4wakIwbkQ0YWdiMVdWOVNvK1AvcHlHUThBSm44dHVnUUFYSXlLNDRuSTZ4MTArbHVQOFFMNGdrZlJJdG9MZVUyYzg2K2dJK3g0V1RFNVA2Q0N6cjl2U3VmdkhBQndNU3FJcDZxdmNORHBuNTBTcms1MmVOWWYwRjdJbStvM1BEeThoVWV2REVycDVYU3pqUXJPai9FQVlFMExzRWNBc0lLTFVYRThWWDJCeHlRWkd4dWIxKzd4NW8xVDJ0NW5uUFpDM3FSZnQxMFBCWEF2blIxbERYSnZmb1c0dTBMelk4M09QMklBd01Vb0lpL0xzaUduQ2ZLc2RvODNoUEJTaCtkOFluUjBlRDNhQzNuMmF6UWEyd0s0b0VNUzNPN01XK2xlbE85MGZNS1NZaTNYUVVUZUVJSWVBZUFmQUJ3U1FqalFSRVFPTXNlbnFxK3gveWJQaXpneC83ZW41NnlmNXV4T1NKUzh3R3ltSXZPamIxcGVoQUNBaTFGa0hvRDVIaE9qWHErSGRvKzNYcThQZUR4cm8xSGZtZmJTOFR3cjVuTXdnUHNxNUp5c2UrYTExcHREVmQ4bklxOEc4TnhhcmJaZGxtWHJSUGk0V01mK0ZvQXhBSWVIb0hiajZDd0ExM2wwOWl4UXpHWU9YcjBiVUVubkh5RUE0R0pVQUc5Z1lORmNweEtiKzdaN3ZFdVdqRzNnOFZWaE93dTBsODdsalk2T2J1TFVGVE4ybzVzZnFPSmpxbnFZaUN5YXpza1hyUThBYzBSa0Y5dGRBUEFSQU4rdlFNT2tyNDZPam01YTJmbm1HQUJ3TVNxUUIrQXVod0RnRFI3akJYQ0x3N1ArQysybE0za2lNZ0pnWlVtL09zOEI1RmhWYlZUaEdNc0NGZ0FRa1RmK2RXeWwzSTI1MVhaWktqbmZpbW9Iek1YTmwrZFJ3MXdWSC9BWXIxTXRnQy9UWGpxT1o0MTczdWJSWWRMeHpQNXlBTzhRRWQxdnYzMzdxcTdmWmN1VzlkcFliY3o1Mk11U1UvQjRDUHJPd2NGRmN5czEzMUlKQUxpNHRaY25JdWM0NlBVckh1TjFxbHg0SGUybGMzaFpsbTFla2xhOWo0akllWFoyWDZ2Vm5zbWRTdG5HY2dsRXhENENIaW1CL3I1cHRsWVpmYVFRQUhCeGM5bFcvN2pIL1hxUDhWcjdYbyt2cTVHUmtRMW9MOVhucWFva3Z1WC9SRjZIL3JEQndjR05xZCtwZWJWYWJSTjdSL210Z3ljUzF1ZEtzN2xLNktQb0FJREc3NWFRYzVTRFh1LzBHSytxUHNjcGFYRUo3YVh5enQ4Y3hzT3BWcG16SzNWVFhTbWpmcWZuMlR2THJ5T21XcTN4WWJPOXN1dWowQUNBeHUvSEU1RVhlaGkrWlZjN2pMZkhLVG5vbmJTWGF2THNMRmxWUDV5Z1kzaE1WYzhVa2JIcENzcFF2ODFmNWJSM2FlL1UzbTFxK2pZYk5Gc3NwZk12TWdDZzhmdnlzaXpiMGNQZ1F3aDFqL0U2bmQvK0wrMmxlanc3Mm5GS0hKMXRGYm1UYXJYYU50U3ZEOC9lcmIzajFLbzVtaTFPUG00c2hmTXZLZ0NnOGZ2ekxDcjEyQnExNUNXUDhUclo0Y05abHExSGU2a096NHBjaWNqVkNTMyt0MWoxdklHQmdmV3Azemk4eFlzWFB3T1FvMVUxbWJ5UDNDYm5sOFg1NTh6dTZBRUFqVDhlejJtaC9JakhlRlYxVjZlSitVTGFTelY0cXJyWXVsSW1zdWpmWkNWMVd5M01RLzIyajJkMUVxeDhNWUNiRTdHSjM2cnFZRm1jZi9RQWdNWWZsMmQzNFIwYzZzVWU0MTI0Y0tGVkwveXpneTErZ3ZaU2lXRFdTcy9lbjhBaS94dFZmVzNLRmZrNk1PRjVqdWtrTDloVHRIMllqZTZSc1BQdnlTVnVBRUJqamMvTHMyamJyZHZmVDVYYzFJN3hBcmpRbzRxWFBTL3RwZFJmL3Zza2tPbi9zQ3BPSEI0ZVhvLzZUWlBYYURUV0JmQ2VGR3dsaFBDeWhKMS96emduUmdCQVl5MkdGMEo0dnRPNTV3NGU0ODNMaFhvY0F3VGFTMm1kLzJFSjNBbTNoTU9kcUk5eThQSUU2RzhVWGZ1aG1XdUNFZDlmYnk1eEF3QWFhM0U4cXpUbTVGQVA5Qml2VnowQVFENUNleWxsd3QvaEJaZUt2VG1Fc0EvMVVVNGVnQmNYbkI5Z3RudDRRczYvOXluTzN6c0FvTEVXejdNc1pRZjlmdFJqdlBQbmI5dmpWUGpqOXFWTDk1cEhleW5WbWY4Yml1ekNwNHIzV0tkSzZxUGNQRHNXRUpGM0ZkbVYwR3k1d1BmWGw4dDRBREE1U25JSkFHaXNhZkR5QWhydDF1K1ZqclhCUCtRMEVWOUNlNkh6YitKNDY5eDZQVHliK3FnV1QxVVhBRGczMVNEQTJmbjNUZW44blFNQUdtc0NQQURIZW5UR0docXFiZXd4WGlzMDVEUUpsOU5lU3JQdFg4UWkvUWNBQjFBZjFlYVpqbk5kRjJGamh4Zncvc1lEZ0RVNUNJOEFZQVdOTlExZWxtVXVEclZlcnkvMUdHK2pvWE9jenUwZW42NG1PKzJsZUY2ZThQZGtBVi85Vnc0UE54WlNINTNCc3gwZVZmMWhFVGtCcW5wbzVQR3UyZmxIREFCb3JBWHhWR1U5ai92MXF2aUE0NzNlRTUwbTRIdHBMOGs2LzMyS3lmYVhEMWxCR2VxanMzaFd4MEZWUDFqUTdZQjlJbzYzYjFwZWhBQ0F4bG93VDBRdWNkRHhqeDBuNTk4NVRiNTdwaW9OVEh0Sm9zaFA3THZiZHdONEVmWFIyYnk4YWRyZHNlc0VpTWp1aFR2L0NBRUFqVFVCbm1VMGUyeG5oYUNiZTQwWHdCVk9rKytmYUM5SmZma3ZMcURDMzZVakk4UGJVUi9rZGVXdGh3RjhOM2JGd0JCQ1Z2ajdjd3dBYUZ5SjhGUjFONmZNMW9POHhwdlgrSFpwM3RMZjN6K0g5bEk4ejVxblJLN3RiMmV3Nzk1Nzc2ZGNDYVUreU9zYUd4dnJ5NnNJeHN4QnVUMkVzS0RROTFkVU8yQWFhL1JhMlg5MGNLWmY4aHF2ZFZjRDhJQlQ0UEk2Mmt2eExYMWpkdlV6KzFmVnZhZ1A4cWI3cWVvTEFEd1k4WHJnTlNNakl4c1c5djVTQ1FCb3JMNDhWZjI2Unc5MGk1eTl4Z3ZnWTA0VDc3YXhzYkY1dEpkaWVOYXEybnFvUi96U3VpdUVJTlFIZVUwR0FXSTJFekU0UGQvbVJDSGpUU0VBb0xINjgxVDFIejJNTjRTd3U5ZDRhN1hhZG5aOXoyblNIVTk3S1lhbnFoK09YTTczT2RRSGVhM3c2dlg2emdCK0hURUkrSEFoNHkwNkFLQ3h4dUhsNTYwZWh2dnZudU8xWXdhdkpKemg0ZUV0YUMvUm5mOWhFWjMvVlFDMnBqN0ltd212WGcrMlpzWThwam9zOW5nTERRQm9ySEY1QVA3UFFkZDNyR243cWgzakZaRmRITS9mUGtkN2llcjhKZFoxUHhHNXVGNFBHMUVmNU0yR0Y0SnVCdUNTV05jRGJZNUVjLzVGQmdBMHJ2aThQTXZWdzNEMzhoeXZaMnRQdXlGQmUvSG5aVm0yT1lDVmtSYlNNM2JhYWFkNTFBZDU3ZUF0WExod3JsTlBsYWxrcGMyVktNNi9xQUNBeGxVTUQ4Q2drOUdlNVRuZUxNdDJkWnh3MTRXQTlXa3ZyanpyOHZqTlNBdm9KL2JiYjk4KzZvTzhkdkpzbDlOc0s1SU5mOVBtaktmeno1bmQwUU1BR2xlaHZHNEF2M0xROTJOMm51NDVYZ0EvY053RmVDL3R4WStucW0rTDVmeXRwVFQxUVo0VHJ6dFdFR0J6eHR2NVJ3OEFhRnpGOHdDODM4bG8zK3c1M2hEQ1BvNFQ3akVBb0wyMG55Y2lJMTQzT1NadisvUExuenh2WG42Rk5jWnh3T01pTXVyZy9IdHlpUnNBMExqUzREa2VBL3k4WHNjY3IvSG1YUUl2YzV4d04xcnhJZHBMKzNpam82T2J4RGozdDRRL252bVRGNHRuTlVRaUpRYmV1dHR1dTI3aDRQeDd4amt4QWdBYVYxSzhiaEc1d2FzbWdPZDRzeXpMUEV0MTJxMEEya3ZiZUxaZCt0VVlWLzFFWkdQcWc3eVl2Q3pMTm5LNlZmVzBuUzM3K0duRGVIdHppUnNBMExqUzR3SHlkaDlqbGRNaVZEUTgxZm5zN1ZEYXkreDVBQTZPVWVTSDkvekpLNHFYWmRuV01Zb0YyWnJVSnVmZit4VG43eDBBMExqUzVLbGlnZE9YOUo5RlpIUFA4UUxZeXFPdndRUjVLTXV5SWRyTHpIbDVkN1g3SXBUM1pZVy9GbmlEZzRNYmk4anJBVnhnOVR2eU5lREovSDlmQ09BbzcvbGJOVjVlTWRDN2JQQjlOcWRtT042K1hNWURnTW1SdWtzQXdNVXliUjZBN3hUVmJuZTI0d1h3RnUrN3VCWm8wRjVteE92T0hZeHJZeC9XOW0rZWwyWFpPaUx5MWlhYmF6MWcvNjM5Rzc2LzVuZ2hoSHFFQmtJWDJOeWFvZlB2bTlMNU93Y0FuSnhwdHdnK3lNbFFyMm5GVUdjeTNqd0p4M3ZyN2Nvc3k5YWp2YlRHRTVGWFJtanB5NjUrVGZMc2VpNkF5MmZ3bmk5ZmZiV1g2K25hZVNHRXBSRmFDUjh5ZytjYkR3RFdkRmJuRVFDczRPUk1tMmRaMHdEdWNVcW1lNm4zZUVWay93aG5iMS9mZmZjcG40MzJ0MlpuYzYrelR0NU5mVFRIYXpRYW13SzRmaGJ2KzNwamNEMXRqdWRZYVhXOCsrcmFncklwbm0vTnpqOWlBTURKbVNBUHdDbGVtZG5ON0FLMG9halI4Z2hYekQ0L0lRdVg5amZORDhEcHp2cTRkTys5OTVySCtkdmMvQkNSODlwZy8rZXRhUzV6UFgwcXoxcWpBL2l1OHh3NHZjWG42NXQydkJFQ0FFN09SSGtoaEdjN09zNlhlbzgzLytLOHkzOG5BUC9lcHFzNFZYYitlempyNGU2UmtlSHRPSCtiMXNjQmJYejNCM0E5Ylk2WEo4RGU0endYOW1pTDg0OFFBSEJ5SnM1enJORitWWXd2QjFYZE4xSnB6bzlhbVZuYTM5Ti8vZjM5VnFScGhiTU9Yc1Q1MnpUUGRzZXU4Y3JyNFhvNlBVOUVsanJQaFJVMjU5b3lYc2NBZ01iUTRjWTYxUzZBeDNoVjljdVJhczEvY21LVER0cmZlQkIydkhQd2RRcm5iMHZsdmoycWZRNXlQVzJwRHNhSG5PZkU4VzBaYjFIdGdPbXNrK0ZacDdZYm5RejFaekcrSEFCNUpvRGZSZ29DdnR6c0Zha09xWWkydGZNVnFCK09qZzZ2eC9uYi9FOUVqbkVJNW8vaGV0bzh6NzdRVmZXSG5sZGhzeXpiWnRialRTVUFvSEVWeHdOd2hPTXV3RXRpakxkZXJ5K05GQUNZWEJSQzJKRDJ0OHAyUHU5WkFHVjR1TEdRODdlMUg0RFBPT2ppTTF4UFcrUFY2L1h0QWZ6QmNYNThjZGJqVFNFQW9MTXVscGZmcTcvVGF4Y2dWb3RXRWZsNHhDRGdXcHZnbld4L3FyclkrZTd6QVp5L3JmK2N1dFdkeGZXMGRaN3pkZVVuUXdqWnJNWmJkQUJBWjUzTVl1NTJqaHRDZUZtTThlYkphSmRGREFMdXRnWklIZnlsZVpIakZ1ZTVuTDh6NHdFNDIwRW55Nm1QR2V2alhNYzE2TnV6NmhKWVpBQkFaNTFVWTR1TkhMZXJmdDFvaEkxaWpEZS9HbmhyeENEZzhUd2hwNmZEbkwvbnRiK0hKbTM5Yy82MmxCUGpVaDlqT2ZVeE0xNjl2dXE2OVVPTzgyWFBycG4raWdvQTZLelQ0Nm5pSk1lNzlCK0lOVjVyNXVNODRhYXMxUzBpVzNkS1Mya0FQM0swbGZkdy9zNmM1eHdBVUI4ejRBSHlYc2UxNTBldGxsOHZOQUNnczA2VE56SXlzaVdBKzUyTTlERUF1OFFhcjRnY0ZEa0FNUGtkZ0pkVTNWNXNqSjR0ZnBjc0dkdUE4M2MyenNZbEFEaWIrcGc1YjlkZFJ6YkkyMWQ3elpzWHorQVp1Nk1IQURTR2pvNVVML051RkRRcHIrR0RCUVFCZG43OWhWcXR0a2tWN2NVU09xM0lrMk8reUQ2Y3Y3UGpPZVVBbkVWOXpJNW5UdHB4M2ZsWnMydnJhdWNmUFFDZ01aU2hxNVZ1QnVEM2pvYjZEN0hHdTJ6WnN0Njh6L2xmQ3BBNzhoS3EzVld5RjFYZHgvR2RuYy81TzN1ZU9lc1VBZ0RxNCttOGR2Um5tT2JENDBWTlBHTlBMbkVEQUJwRGVYZ2ljcHpqSW4rUHFtNFdhN3o5L2YzUEFIQkZRVUhBcXBvQjlYcDk1eXJZUzcwT0syNXlwZE43ZWpnRWZRN25iMXUrTkFzUEFLaVBxWGxabHUxb3R1NDBoNjZZN29Oamd2UHZHWCt1R0FFQWphRmN2RWFqc2E1bkpyMklmQzdtZUVkSFI2MHQ2dFVGQmdHUEEvakVtbHA1bGllYnViNm5ZK0xmaVp5LzdlRVZIUUJRSDlQekFMelg4UWh0OXpVOFgyOHVjUU1BR2tNNWVhcDZtS2RUekxKc05PWjRSMGRIdG8zUXNHWnRZaVZ6M3pzNk9ycEpHZTNGc1hIVWI0YUhoOWZqL0cwUHI4Z0FnUHBZT3kvTHN2WE01cDNtMG9YVE9QL2VwemgvN3dDQXhsQmVYbjUrZnBYakxzQU5OaEZpanJmUnFPK2dxaXNMRGdKTTdoZVJrNGFHYWx1VXhWNUNXRlgxeit2czhyV2N2KzNqRlJVQVVCOHRsVjgvM0hGOTZaL3dmSDI1akFjQWt4L0VKUUNnTVpTZkIyQTM1Mno1VTJPUE44dXloUUJ1VHlBSU1Qa3pJSjhHWkpjU1hDMDcxZWtkM05Sc2N5WE8zNlpiZkVjUEFLaVAxbmhtODJiN1RuUHFzNU9jZjkrVXp0ODVBS0F4VklEblZGZDhZaEJ3YUFGbnBQMEE3a29rQ0JndjZXbDF3eWYyK1U3RlhocU4rbGFPaFpYK2dmT3Q3V2ZNVVFNQTZtUEdqYlJlNVZWSnM5R29iNWsvMDNnQXNLYUg4QWdBVnRBWUtoT3BQZ3ZBbnh3ZDM1OGFqY2FpMk9NZEdocXluWUJmSlJZRXJPb3ZBT0NqcWlyTlhDR01jNjljam5jSy9tNXA5ZXVmODdlcG5idG9BUUQxTWF2eTYrdllISEJhUjk0eUlRRG9uUzRLaVJFQTBCaktIYW0reGRucFhSK3JWOERFWHdqQktoLytKTUVnWUxWWWdQSitBTEJlQTBYWXkrRGdvcmxlVzVVaThnYk90L2J6WWdVQTFFYzdHZ1hKMFY0Vk5XM3U1Z0ZBZDVFQkFJMmg1RHpibHJha1BWOW5KNTh2WXJ4V0owQkV2cFZ3RURDeHpQQVhST1JBdTA0WXkxNUU1UGxPNDdsM1lHQmdmYzQzbHdRejl3Q0ErbWhYNHliWjJPYUMwdzdiQzliNmZNNEJBSTJoSXJ3UXdwaTNreE9SVnhZeFhndHdWUFZMSlFnQ3h2dUFBL2d1Z1AwYURaM2pYRlRtRENkZG44VDU1c1B6RGdDb2o3YVhYei9aYVowNG94bGo4UW9BYUF3VjR3SDRuTE5qKzFNelZmT2N4bXZPN2dNbENnTEdrd2RWTWQvRFhocU5oaFZRZXNTak1WU3RWdHVHODgySDV4a0FVQi90NTRtc3lyTjZ6RUZuajlnY0xpSUErRG1Ob1hxOEVIUnpBTDkxZG1qWGhSQTJMRzZuUTEvOTErdDVwUW9DYmhPUm5kcHRMd0NPZE5xYVBKUHp6VFZueHlVQW9ENzhlSTYzclk0c1JRQkFZeWdIVDFWZkhNR2hmV2Zod29Weml4cXZLZ2JOaGtzV0JLeXMxV3JQYktlOUFMamNhZnQvalBQTmorY1lBRkFmVGp3cjRldTBMbHllZkFCQVl5aGRyZkV2UkhCb1g1MHE4ejNXZUllR2FwYWM4K1dTQlFGbnQ4dGU2dlg2OWs3UHVHSnQxeHM1MzJiSGN3b0F6cVkrWEhuZFhxWEtiUzRuR3dEUUdNckhHeHdjM05qeC91cEUrZWhrWnhGNXZOMTV5YzZIeXhJRXFPcXU3YkFYQUNjNFBkL3huRysrUEhQV0RycGJUbjM0OGh5dlc1K1FaQUJBWXlndlQwUVV3S01SSE5xL0ZEMWVBSU9xK3N1U0JBRm50R2t4K3FuRHN6M1JhRFMyNVh6ejVabXpkZzRBcUE4SG5zME5teU1PdXZ0SmNnRUFqYUVTRmNlT2p2UlZlMmpSNDdVNzZ3Qk9jWnFnYmUwdk1GWCtSQ3ZqVmRVZG5KN3RJczQzZjU1ekFFQjlPUEpzamppdG9Uc2tFd0RRR0NyRDg5cHVuQ3lQQTNoUkN1OHZ5N0locDYvamRyWmFIcHJOZUVYa0dLZEY2RERPdHlpTm01WTc1UUJRSDg0OHJ6YnNOcWVuZU1idTZBRUFqYUZhUE1zSHNMS1RFUnliOVNNWVR1SDlqWTJOOWVWTzhrOHBCZ0FpOHRKWjd1eGM0bkVuMld5Rjh5MUc3d2FYb1B3czZpUGFldXBSZStPU3ljNC9lZ0JBWTZnbUw0U1FPUm50WlBsOXZWNGZUZVg5MWV0MTJ5cS9NTUVBWVArWmpqZkxzbzA4aXBLSXlIbWNiM0Y0UmJRRHBqN2F4N081NGxGOHkrYTJ0UVRPSlc0QVFHT29OazlFWGgvSndUMG9JbnVtOHY2c0ZDK0FBMUtxRzJCM2ltYzZYZ3NlbklLU1YzTyt4ZUdsRUFCUUh6UG4yVnh4bW9NSFRBd0FvdVVBMEJpcXo2dlhNY2RwNFpsS0hsMzlsWnZLKzl0Nzc3M21XYkppcE9PUWFXVjRlSGpMV1p4Qm51clJ1MkJpa1NMT04vYzZIWVVHQU5USDdIaERRN1V0OG40ZjdjN0IrWHowQUlERzBEbThrWkhHWnFyNnEwaU83Z2xWZlcxcTd5L3ZuUGc2Szg5YlVBQncxU3pHYTErUHQzcFdJK044OCtjVkdRQlFIMjI3eW5tRlI3WFFnWUgrM3FjOG0yY0FRR1BvUEo2cVNzekNPUlByQktUMC9ocU54cnA1b3VCZGNRc0I0Wmlaam5kb2FHaWgwM085Zy9NamF0MktRZ0lBNnFPdDVjamY3WFFNOE95dVNjYmlFZ0RRR0RyNkRQS1F5RWx2LzFwd3hjQTEvcXgrZ0tyK000Q2JZalFGYWpUQ1JyUG9JbmVFazM2VTh5TnFSYm5vQVFEMTBmYXJuTU5PYThRUnNRSUFHa01IODZ6a2ErU3Q3ODh1Vzdhc045WDNaODhHd0JvcGZkUGpmQzlQL3R0N2xsM2tUbk40cnZ2MjIyL2ZQczZQZUx6WUFRRDE0Wk5UWkhQSFFZK254UWdBVnRBWU9wN1hMU0lmajd3VDhDMlI3Sm1wdjcvaDRjWkNWWnlrcWl2YjUvejF1TmsrbjFOL2gzTTRQNkpYNkl3V0FGQWZyanVwNXpqbzhkZEZCQUEwaGc3azJWZXZZNS9yTmNsdlJHU2tETyt2Vmh1WXE2cTdpOGluWnBFcjhFZ0llc1JzbnkvTHNxMTk5Q0hIY241RUx5Y2JKUUNnUG54NUl2SkdwMHFoVzhjTUFHZ01IY3diR3h1enJheExJd2NCMXFUb2FMdWFXSmIzWjhHU2lJeUp5TDgxMnhaVVZTOW9OQnFMMnZGOHFycXZVNUptZy9NakxpOUdBRUI5UkxuTkFhYzV1VStzQUlER1FON3E4cGJYRkhBbDdpdjkvZjNQS09rMjdvTDhPdUhwZWUrQlh3TzRFY0FGTm1lbmNQeXplajVWZk1EaC9UODBPanE4SHVkSFhKNTNBRUI5eE9GbFdXYkpnQTg1NlBMa0dBRUFqWUc4OFYvZTZ2TFcyRUdBaU54UXI5ZDNwajZtNTRtSVJ4ZXlIM0IreE9kNUJnRFVSL1NFenU5NzVFcDVCd0EvcC9MSW0vd0xJZlJiUGY4Q2RnS3NmUENCMU1mVXZMeWM4VjBPTlFrK3h2a1JuK2NWQUZBZmhld0Vmc1JCbDNlT1g1dE9KUUNnTVhSTWhhdm5PbTFyTlhWVmNLcU9kRjBzT3ZJc3IvYS9uQi94ZVk0QkFQVVJQNkhUcTZiS1Zza0VBRFNHenVLRkVQYUpXUzF3a3R3T1lEL3E0eWxGUjE3b2RQeXlpUE1qUHM4cEFEaWIrb2pQRTVGZG5PYm1ua2tFQURTR2ptMVp1b2R0elJmWU12ZHJscGRBZmF6YUFUakc0eWFHSlRGeGZzVG5tYk4yME9keTZpTStMMDhFZk5SQm4wY1ZIZ0RRR0RxYmwyVlpLQ2duWUxYY3I0bzMySDM4VHRaSFhvZWczZS8yV3M2UHdvN1psanNIQU5SSDNKeU9heDArZ0Q1VmFBQkFZeUF2RHdJV0FiaWo0QmE2UDVod3JhN2o5Q0VpRnp1ODB6TTRQNHJoT1FjQTFFZjhuSTR6SEFLQWl3c0xBR2dNNUUzOFdSYzZwekswTFZYVUU1RjNMVnk0Y0c2bjZjUGplcWFxdm8vem83Q2NqdVZPT1FEVVJ6RTVIU2M3NlBQV1ZjOFRPd0NnTVpBMzFTK0U4UC95UWpkL0tWaHVWZFhYTm50K1hYWjk5UGYzei9Gb1RpUWlyK2I4S0libmxBTndGdlZSV0U3SDRRNzZmSExSb2tWem9nWUFOQWJ5cHZ2VmFyVm41bFh2aWc0QzdBdjJsNnI2aXRVZEJxdXFENnM0NlBRT244djVVUXl2aUhiQTFJY2ZUMVdmNXpSSEYwUUxBR2dNNURYenk3SnNJMVg5WGdwQlFDN1hXWjM4OGNJWkZkTkhDR0Yzai9kV3E5VzJvejBYdzBzaEFLQSsyc2NUeVhaMHVnazFGaVVBb0RHUTE4cFBSTllIY0dGQ1FZREpUd0RzWllGQWxmVGhWR2preWVtT1VEZy8zSE02Q2cwQXFJLzI4cXlmaHNjeG5jMTk5d0NBeGtEZVRIaExsb3l0cTZxZlNTd0lNTGxNVlo5djVYT3JvQThST2M2cDFDanR1YmhqbmNJQ0FPckQ3VmpuVG9jZGdPTmNBd0Fxajd6WjhQNWFvMTZPQmZCRWdvR0F0ZXg5ODhqSThCWWxyelYraXNPNytXbEo3TSsyeXdkRnhBb2hmVVpWejh3VDZKWlBrTE56aHpwVGljNVQxZHNjY21KdVMzVzhyWWlxMnIvL25NMWRWWld5dEF3SDhET0hlWHFLV3dCQVowaGV1M2doaE9jWFhEQm8ycGEzQUw0WVFxaFB6aE1vZ3o0QW5PYndUaTVLM1A1c1FUMmdvQmJWbExURWJPQ0FWdVp1UWNjNkh0MDZUL01NQU9pOHlHc2J6Mm9GbEdEQnZrcEVYamN5TXJKQldmUWhJdWM1dklmVFV4MXZvOUhZMUduTWxCS0wyWVRaUnNMSE9xZDdqTmtyQUZoQjUwVmV1M2tEQXdQcmUwd0VoKzNTUDFxcHpTekxobEsvUFFEZ2NvZDM4SWtVeHpzOFBMd0ZnT3ZwOENocmtPdk5SbEpjLzJ4T09ZejM4bGdCQUowaGVlM2lkYXZxUHhiWVRiRFZLUHNHVlgwM2dQNzU4N2Z0U1UwZmRzM1JZZHducG1aL2VWT1Z5K25rS0d0emltdTZ3Vkx3YlowVFBhNDR4d2dBNkx6STgvaHlIY3dUOGNxMHVQd1NrQS9aM1h1NzVaQklveEdQTXNESHAyWXZJdkpXT2pkS2swSDdXMU5iLzJ4T09ZeDFwWGNBUU9kRm5odXZ2Ny8vR2FwNmFra1htbnNBZk5WSzVxNnRhSTZuUHZMbmFQY0Mrb2FVN0dWd2NIQmpBQS9RdVZHYWxBZk1abEphLzJ4T2VheEJuZ0VBblJkNVVYaDVSdmU5SlY5MGJySmdSbFVQczRUSE5XVWxPelFhZWJEZFl3bEJqMGpKWGtUazlYUnFsQmFEMk5lbnRQNnA2bXNjeHZsZ1llMkE2YnpJYXlldlhnL3pSZVQ4Q2kxQ2Q2dnErWG4rd0l0dGw4QWpoOEM2SURvOCt6OGsxay85QWpvMVNvdHlRV0szZFY3cDBRRTFtUUNBenBDODJmS3NxQWVBVndINFEwVVhKUnZYOXl5UFFGVWI3U2hpNGxWaU5MRis2bmZRb1ZGYWxEc1N5MkU1eUtOa2R4SUJBSjBYZWUza05ScU5iUUdjVS9WRnlwb21oUkN5MmJ3L2orY0tJUnlZV0QvMUorblFLSzA2eDVUV1AxVmQ1akhPd2dNQU9pL3l2SGdBOWdOd2U4VVhxc2RGNUkwemZYK09BVUJLT1NJTUFDaXpEUUFLdGVkS0JnQjBYdVI1ODZ3cUg0Q1BKTnBQb0ozeWpwbThQdy9uYU51Vktka0xqd0Fvc3p3Q0tIejlxOXdSQUowWGVaSFAwSFlSa1lzcm5ybjgwbGJmbjBjU29DVXNwV1F2Q2JhV3BxUXZGeWJXSXIwNlNZQjBYdVFWeE92T2p3VnVxdXBYaTlWR2FPWDllVndEdEN0TEtka0xnS1BvMENpdGlSeVYwdnBuVjJzcmNRMlF6b3U4b25tMTJtTHJLZkRtaERzTXprYU9iZVg5ZVJVQ1NzbGVSR1J6RmdLaXRGSUlxRmFyYlpMWU1kYlJaU29FOUhNNkcvSlM1d0h5VEFEL0N1RFBGVnE4cm12bC9YbVZBazdOWGxnS21ES2JVc0JGMjNNSTZtRy9LNk1GQUhSZTVLWEtDeUZzQ2VDakFCNnF5Q0syVlF0ZHh0eWFBYVZrTDJ3R1JKbHRNNkFpN1ZrVjd5dFRNNkNmMDltUVZ6WmVsbVZiNXpjR1NyMGpvS3JQYStHcXBHczc0SlQweTNiQWxObTJBeTdLbmdGOHNrenRnSDlPWjBOZVdYbTFXdTJaSW5KU2lYTUVYdDdzZUVYa1BJZS9mM3FxK20wMEdwczZqWmxTN20zLzg4dzJVbDJ2YkU1NWpOazFBS0N6SWEvTXZMemI0RDhEK0ZYSkZyVDltaDB2Z05NYy92NUZpZXQzZFFPcGErajhPbDZ1TlZ0WVUvT3RWTllybTFNT1l6L05MUUNnc3lHdktyeGx5NWIxMmgxN0FOOHV5UkdBTkR0ZUFLYzRQTU5QUzZKZlcxZ0hSZVFZQUo4QmNCYUE1UlBrN1B6L05sTTV1d2llcXQ3bVlGTzNwVHJlRm5uMi8zN09iZ0haUExFR1cyVllyd0Q4ekdHZW51SVpBTkRaa0ZjNW5pcjZWZFVTQnU5TzFQbi9jWFIwZUwwV3Vvd2Q1L0FjZDlKZWl1UGxUcTdkT2oyTCtpaU9aM1BLNFFqZ09LOEFZQVdWUjE2VmVUdnR0Tk84dkQ3M2hTbVZHVmJWcjdZeVh1dmM1MUZpZEhVbU5lMGxQaTltQUVCOStQUHlHeXd1WFR0akJRQTBCdklxeTdOcmQ2cjZKZ0EvTGpvQXFOZnJvNjJNTjRTd3U4ZHoxR3ExN1dndnhmQmlCUURVUnh5ZXpTV254TWV4R0FFQWpZRzhqdUZsV2JZamdCTUtDZ2ErMHVwNEFTeHdlcFl4MmtzeHZCZ0JBUFVSdGF2cGM1M202QUx2QUlER1FGN0g4Z0RNRjVIWGk4aTNQSnJ1VE5yNi85WG82R2pMMTVqNisvdm5PRzB2SGs1N0tZYm5IUUJRSDNGNUl2SnFqMk02bS91ZUFRQ1ZSeDU1NDdXOFpXTUFMMWJGeHh5cTc5MVVyOWQzbU9uekFmaE51OWVBRVBUOXRKZGllSjRCQVBWUlNFN0h5UTc2dkhVMXZKQjJ3RFFHOGpxOS9MQWxFYXJxditkWGZCNmY0WmYvMlkxR1k3UFpQSitJWE9MaE1HZ3ZoZTA4bmVXa1QrcWptSnlPTXh6Ty95OU9LZ0NnTVpEWHlieUJnUUhyVUxpYmRmTlQxZjhHY09NMFcvT1BBamdmd1BQYThYeUFmTnFqempqMVd3elBNUUNnUG9ySjZialdJUUQ0VkRJQkFJMkJQUEtlL3N1eWJMMFFRcWFxcjFDRlZTUTh2RjZ2NzduYmJxT2J0cm5SeURFT2E0QUZLWE9vMy9nOHB3RGdiT29qUGkrL0F2aW9nejZQU2lJQW9ER1FSMTZ4UEFCN09WMHoyb1g2aU0vTEs5NjFXNS9McVkvNFBKdERUbk56ejhJREFCb0RlZVFWejh1eWJCdW4yd21IVUIveGVYblpYTThBZ1BxSXhITXExTFdxWlhpaEFRQ05nVHp5a3VGMWU1UWF0ZGJLMUVkOG5uTUFRSDFFNU9YdHlkdGVxbnZkZGVkMUZ4WUEwQmpJSXk4dFhsNnJvTjNyd1BlcGovZzhwd0RnYk9valBzL21rTVAyLzdmeVoreU9IZ0RRR01nakx6MmUwMTNqaDFiM0JLQSs0dkdjY2dET29qN2k4dklFd0ljY2RQbitRZ0lBR2dONTVLWEpVOVY5bmM0YVFYM0U1Y1h1QmtoOStQQUFxRlBWMEgyakJ3QTBCdkxJUzVlWFpkbldUdG5HYjZRKzR2SlNDQUNvajNiYzVwQmpuZWJrTnVQUEZTTUFvREdRUjE3NlBGVzl4V0V0T0lmNmlNc3JPZ0NnUHRwMm0rTWJEbnI4OVI1N2pQVkVDd0JvRE9TUlZ3NGVnTk1jMW9MN2xpMWIxa3Q5eE9NVkdRQlFIKzNoTFYyNjF6eWJPdzU2L1BKVG5zMHpBS0F4a0VkZWVYZ0FqbkRhY2xUcUkycENaeUVCQVBYUjFxdWN3MDQ1T2ErYlBPbGRBZ0FhQTNua2xZczNORFMwMEduUmVRZjFFYlYvZlBRQWdQcG9MMDhWNy9hWWkxbVc3UmdyQUtBeGtFZGV1WGlXUUhhcnczcHdPZlVSanhjN0FLQStYSzV5WHVHZ3c1VTJ4NS95eDFYMWJRN1hESDVGWXlDUHZQTHhWUFZVaDRYblNXQlY1akgxRVlFWE13Q2dQdHJQRTVHdHAra0VPaHUvZk9yVEhzQ3U2VGdZeXgwMEJ2TElLeDhQd011ZGpnRU9wejdpOEdJRkFOU0hEMDlFWHUyVWk3UC9WTWJpMFd6ZzhTVkx4dGFsTVpCSFhybDRJZWptQUI1eldIek9wejdpOEdJRUFOU0hIMDlFem5QUTMyTlpsbTAwbGJIczVoRnQxT3YxQVJvRGVlU1ZzcGI4cFE1cndpTzFXbTBUNnNPZjV4MEFVQjkrdk1IQndZMXRyampvNzVJcEgyWjRlSGdMcCsyRzE5RVl5Q092akFsSThtYW5FcVNIVVIvK1BNOEFnUHJ3NWRrY2NmTEh4MHhuTUw5MStLT1gwaGpJSTY5OFBGVmQ0SlFIY0JIMTRjL3pDZ0NvanloRm5DNXlDcjUzbU01Z3puQ2E4TU0wQnZMSUsyVTUyWjg2ckFkUE5CcU5iYWtQWDU1akFFQjlPUEpzYnRnY2NkRGRUNlo5T0ZWOWpWTUFzTUxPTkdnTTVKRlh1aStSRTV5K1JJNm5Qbng1VGdIQTJkU0hld1hIdHpqNTRST21mY0FRd3BZZTl3NXorVkd0VnR1R3hrQWVlZVhoMWV2MTdiMCtDcDVXaklUNmFQZFZ6ck1kOUxhYytuRGxtZDVXT0NYa2I5OU0xUGh0cHdtL3FpR0lpQnlucXB2UkdNZ2pyeHc4cStEbmxKQTBSbjI0ZHBGYjdod0FVQjl0NW9VUWRuZnl2WmMzOWJBaWNxQmpBREIrRnhIQVpRQStBdUFveTNnTUlSeVlGeDlaSlZhc1lLWXlrVU1lZVZYanFlbytXWllOakkyTjljVlkzQUFjNlhRTWNDYWRnMnNqR2M4QWdQcHc0Tm1jY1BLNVJ6YjF3UDM5L1hPY2JnTlFLSlQyeWg4QWZFRlZGM3N1Ym8xR1kxT25POG1QVFR3V3BITm9leDJINVU0NUFOU0hBOC9tZ2tmeExadTdOb2VuZWNhbjlRVjRFeGRYQ3FVMFluazduKzd2NzMrRzErTG1kVU5JUkU2aWMzQnJKT09SQTNBVzllSERzN25ndEQ2Y01aM3pmOW96WlZtMkhuY0JLSlRTeVZXV3lPdXh1SW5Jbms3UGZPL2l4WXVmUWVmUWZsNFI3WUNwajVueEJnWUcxcmU1NERUSDlwamlHWHR5Nlo3eXVid2FFVkFvRk44Z1lPSk9RQnNYdHg0QU4vazhzeHhONTlCK1hnb0JBUFhSSEU5RTN1QzBIdHhrYzNjTnpyOW51dWZxVWRVZmNrR2xVRW9ubi9aWTNPd0dqMU15NE1yUjBlSDE2QnpheXlzNkFLQSttdU5sV1daVk4yOXhPbUk3YnRMejllYXkxZ0RBY2dFV09TWC9VQ2dVeDV3QVZSMXM5K0xXYU5TdFRzaERUa0hBYStnYzJzc3JNZ0NnUGxycTJ2Z3FwM1hnb2RWWDdpYzUvOTYxT3YvOFArZ0ZjQndYVkFxbGRQSmZUbGZMVG5WNjNwc0J6S0Z6YUIrdnFBQ0ErbWllWjEvL2ZrZHIrT3lFNSt2TFpUd0FXTnVBVmdVQU8rKzgwenJXdzVzTEtvVlNyaXVDUzVhTXJkdnV4UzBFWGV6MXpLcjZXanFIOXZHS0NBQ29qNVp2MXh6dXVBYjBUM0wrZmEwNC81N1YwVUt0dHFvMzhjKzVxRklvWlJLcE9XV1hYK2owekxjMkdvMTE2UnphdzRzZEFGQWZyZkh5MjNhL2NacExGMDU2dnZFQW9KbEJqV2NKVG5qWUhRSGN5VVdWUWltSFdNVkFqOFhOc1Z5cHlYdm9ITnJEaXhrQVVCK3Q4d0M4MTJzZWhSQ1dUSHF1cHAxLzkyVG5QeUVMdUdiMS9MbTRVaWpwaTVVUmRscmN1aDF2Q0Qxc0h4dDAvclBueFFvQXFJL1dlZmtIOWNOT2MraUtlaDF6cGdnQXVwc05BTmI0SDRZUU1zZUNCUlFLcFgwQndKNk9DV1l2ZG56MmI5RDV0eVc3M0QwQW9ENW14aE9SOHh5Ly9sL2FzdlB2V2xOZDRLa05xOS9PNjdqSVVpaEp5M3pIeGMwS3pmek04ZmppUlhUK3MwNHdjdzBBcUkrWjhaeUQ1NnNhRFozVGp2Rk8rOHNiRjF6SlJaWkNTVkorRWVHTTJYTWh1MmxzYkd3ZW5jMnN6cGpkQWdEcVkyWThTM0xOcjd4NkJjNzd1anYvMVQrYm9DTHlLUzYyRkVweThvNElpNXZ0QXZ6SWNRenZwTE9aMVplbVN3QkFmY3ljSnlMdmNwd3ZQNTcwOWUvbi9DZStIQUQ3QWZnZEYxMEtKUW41L1pyYWZ6cHNNKy9oT0E2clpMYUF6bVptUE1jQWdQcVlBVTlWZC9DcXBKbC8vZThWM2Ztdi9vTWpJeU5XSnZTemVXdFNMc0lVU25IWC93Nk4vS1Y1a2VOWXpxR3ptUm5QS1FBNG0vcVlzVDdPY1p6MzN5N00rVCsxVWxoWTdKbmhTS0ZRcG5XWUh5N2d5MmF4YytCL0FKMU42enhWUFR2Q0RnRDEwZHpXLy82ZXZUL3NkbDdoem4vaUg4K3ZDNTdPWmtJVVNyUnJmeWZadVh3Uml5V0FMM3FXTlI0ZWJpeWtzMm1OQitCekRycjRISjEveXdIeUFyTmh4L254eGFTYy84UmZsbVdiNTcyT0x3WHdPQmRxQ3FYdGp2OEdPNHN2Y3JGVXhiTUFQT2k0cy9GRGE1eENaOU04RDhDYkhYVHhaanIvNW44REE0dm1laWJLcXVvZlZURS9TZWMvUlRDd2tkM3Z6VXNnTGdkd0RZQzdBRHpHaFp4Q2FUNDVEc0NOQUw0Z0lrdVhMVnZXbThKaUdZSysxZmw0NDROME5zM3pWRlVjZENCMC9pM3RqUDJiNTV3SVFVK1lqZk52dHZiUHhKYUNUQUFoanp6eW5zWlRGV3R1c3NKNXQrT0YxRWR6UENzSG0zOWt0ZXY5WHp0Ly9yWTluQjlOTy84WE8zOEkvTUoyR0dici9Kc3RFVXpuVHg1NTVFM0xjNzRXYUhKM285SFlsdnBvV2g4SHRETVprL09qT1Y2alVkOGV3RDNPYzJIUHJobitKalQ4YXlvQTZKMGlBT0JpU1I1NTVEMk5seWYvZWk1OGw2N3AySVA2ZUhyanBuYmN5akpHTXdtbTFNZFk5NUlsWS9NQVhPWThCMDV2Zy9QdmFjWDU5M0V5a1VjZWVXdmpEUThQYitIZE1FeFYzMDE5Tk1lem9sQUFycC9GKzc2KzJjSlMxTWVxaE5pVG5KMy92VGJIWnZoOHZibXNQUURJLzRPSkFVQWZGMHZ5eUNOdmJUd1JlYVh6SXZpa3FyNkErbWlPbHdkbGw4L2dQVjgrQzJmVGNmb0lJZXdkb1JqZUliTjAvcjJ0T1A5ZU9uL3l5Q092Ulo2ZFAxL2d2QXZ3eDlWWjZkVEgybmwyalZKRTdLYkdBMDI4M3dmc3YrWFZ5MWErL0xYaGVSVTJsd3RhUFlxWmtNUFhOekVBV05zLzZKa1VNWEF5a1VjZWVVM3pMRmtQd0gzT0MrSmQ5WHA5WitxamVkN2c0T0RHSXZMNlBFQzdJLzlpZlRMLzN4Y0NjbFN0VnR1RTc2OTVYcjBlL3Q0U1ZKMXQvYjYxSmNDdXhmbjN0ZUw4ZStqOHlTT1B2Rm0ycEQwNFFsMkVYOWZyWVQ3MVFWNHhYLzZyaW1EZEVzSE9ENTdGZU1jRGdHYiswWGlXWU5jTWZ6UXU4c2dqTHo4SytHcUV4ZkhxRUhRejZvTzhtTHdRZEhPenZRajIvZFZXdHY2bkdHL1R6citienA4ODhzaHJGMjkwZE5TeTBHK05zRWhlc25EaHdyblVCM2t4ZUV1V2pHMlFsN2ozdHV1Vm82T2ptOHh5dkgzTkZ2enBia05wUVJvWGVlU1JON0V4elhOajlBSlIxVE9iTFkxTS9aSTNVOTdTcFh2TmMrcTJPRmtlRjVFUmQrZmYxVXBkWUJvRGVlU1IxeUl2QkgxbnBGNEpueWlxS3lKNTFlYzFHanBIRlorSzFONzdiVVdObDhaQUhubmt0WTAzT0xpcU05bzNZd1VCMCswRVVCL2t6ZnpMUDQ3enQ3blMxZFhWVThSNGFRemtrVWRlMjNuV0h0ek9OQ045UFowNVZVNEE5VUhlVEhoMjVoOXAyMy9WdWIvTkZUcC84c2dqcjFLOHZFM3R3ekVXVWhHNTJOcVFVeC9rellhWFovdGZHc241UDJ4emhNNmZQUExJcXlSUFZRK0x0SmlhWEFWZ0srcUR2Sm53OG52K1Y4ZXlWNXNiZFA3a2tVZGVwWG1xK3VHSVFjRE5yQmhJWHF1OFJxTytjNlFpUDZ1ZC80ZnAvTWtqajd6Szh5eEpUMVhQanhnRTNCVkNxRk1mNURXMzdSL3Faak1SbmYvNXpWeGhwZk1uanp6eUtzRWJHUm5aUUVTdWpoZ0VQQmhDV0VwOWtMY1c1NzkzaE1ZK0UzTlZycmE1UU9kUEhubmtkUlFQd0h3QXY0MFlCRmpqbS9lMFVqQ0krdTBNM3BJbFkzYk43NlFJTFgwbnltMDJCNHB3L2szWC9wblFWWWpHUlI1NTVMV1ZwNnFEQU82UHVPaWFYTnBzZHpYcXQvcThrWkhoN1FCY0Z0a0c3MWZWeFVVNi8yWkxCTlA1azBjZWVaN2xndmVJZFQxd2d0d3RJa3Vwajg3bUFYZ3hnSHNpMjk3RElqSldrUE5mM2ZDdnFRQ2dkNG9BZ01aRkhubmt0YmxjY0hnWmdDY2lMOFNXZ1BYQkxNdldvVDQ2aXpjd3NLbzY1Yi9GdGplemNWWGRwMkRuMzlPSzgrK2pjWkZISG5uZXZMeEd3Sk1GQkFFL3JOZnIyMU1mSFhQc3RBREFqd3B3L2srcTZxRUZ2Yi9lWE5ZZUFPVC93Y1FBb0kvR1JSNTU1SG56QUJ4ZXdNSnM4Z2NSMlovNnFEYlBkR3k2THNqR0RpL1krZmUyNHZ4NzZmekpJNCs4MkR3UmVVTkJDN1RKdWZWNmVEYjFVUzBlQVB2cVA3Y291ektiTHVqOXJmYmg0d0hBMnY1Qno2U0lnY1pGSG5ua1JlVVZIQVE4Qk1oN2Q5MTFaQVBxbzl5OFJxT3hycXErdTRBazA1U2NmMThyenIrSHpwODg4c2dybXBjZkJ6eFpZQ0J3czJXSlV4L2w1T1VaL2pjWGFEOVBGcmp0djVveEhnQTA4NC9Hc3dTN1p2aWpzWkpISG5udDRsblNWQkczQXlaOXdaMlhaZG1PMUVjNWVLWXIwMW1STnBObit4K2F3UHRyMnZsMzAvbVRSeDU1cWZIczJsU1JXN2lyNzI0RGVHK1daZXRSdjJueVREZW1veFJzcFlpcmZtdmc5VFZiOEtlN0RkV0ZhS3pra1VlZVIvYjI3Z1ZVREp4S2JyVnQzY20xQTZqZjRuaW1pL3k0NkRjSjJNZjlSUlQ1bWJIejcycWxMakNObFR6eXlDdUlGMExJQU55ZXdDSnZjaE9BVjVuem9YNkw0ZVdPLzFXNUxsS3dpZHVLS08vTFJrSGtrVWRlcDFRTVhDQWkxeVN5NEZzUm9Wc0FPUnFRamFuZk9MeUJnWUgxTGJQK3IrOCtEVHZJTzF2T0w3cythS3pra1VkZTByeVJrWkVOcllkNktvdC9MdmNDY3JKSTlpenExNGRYcTlXMkVaR1QvdnF1MDlHOTJXSVJMWDNwL01ramo3eU81RmxMWDFYOWNHSkJnTWxqcW5wbUNHSDNycTZ1YnVwMzFyeHVlNWYyVHUzZHBxWnZzOEZtMmt2VCtaTkhIbm5rdFptWDl3OTRPTUZBd0dRRmdMZXNyZlV3OWZ0MG5yMHplM2Y1TzB4UnQ1YnBmMWdWOU1IRmlEenl5Q3N0VDFVRndNcEVIY1ZmOGpvR0Y1bkRHQndjM0pqNm5acG43eVlQNkM0cXV2YkRXbVNsMlJ5ZFB4Y2o4c2dqTDQycllKc0QrR2JDVG1PMVBHSkZha1RrMVVORHRTMDZYYjhpc3JXOWk3eHd6eU1sME44M3pkYm8vTGtZa1VjZWVXbnhlbFQxYlFBZUw0RWpXVjBxOWdwVldLMzY0YjMzM210ZTFmVzdkT2xlODJ5cytaaXZLTGpVY3l2eXVObVcyUmlkUHhjajhzZ2pMOTJpUWFONXdaNi9sRXp1QTNDT2lMd1JBQ1lYR3lxalB2SzcrZ3JJc1FDK2tZK3hiSHBaS1NJalZaa2ZYYTNVL3BuUVZZaUxFWG5ra1ZjSzNtNjc3Ym9GZ0ROSzZHd21kU1hFOXdGOEJNQWhJckpMeWhVSTdkbnNHZTFaODJmK2ZqNkdNdXZncTZPam81dFUwZmszV3lLWXpwODg4c2dySGEvUjBEbDVNNkg3U3U2RUpzcWpBSzdOZzV1VHJRU3VxajVQSk50eGRIUjRQVzk5bUpPdjFXcmJBWGl1bmQzbnozQkcva3lQVnVnOW04MGNYS1dybkRsemRjTy9wZ0tBM2lrQ0FDNUc1SkZIWG1sNCtaV3lDeXJrbktiTEtiZ1R3TS95VFByVEFYd0N3SW1xZW54ZVBlODFJdkpLRVRsSVZaZVoyUCsyLzFzSWVnU0FvMFBRdDZyaWZRQSttVE11eXBsM2x1ak1malp5d2RxdWJwYmMrZmUwNHZ6N3VCaVJSeDU1SmVkMTUxdlQ5M2FBQTZQTXVKb2pEbW5scTc5RTg2TTNsN1VIQVBsL01ERUE2T05pUkI1NTVKV2ROenc4dkVYK1ZVdUhSNWtvcDV0dFZIUis5RTRLQUpweS9yMTAvdVNSUjE0VmVRRDJTTGpLSENXZS9BTEFuaFdlSDZ0OStIZ0FzTFovMERNcFl1RGlRUjU1NUZXTzE5L2ZiMG1DeDZ2cUgra0lPMHRNNXlIb0NRTURpK1oyZ1BQdmE4WDU5OUQ1azBjZWVaM0N5N0pzR3dCZjdKQUV0MDRYMC9FWFZURy9RK2JIZUFEUXpEOGF6eExzbXVHUGl4RjU1SkZYUmw0SUlRUHdiVHJKeXNxM1RjY2ROaithZHY3ZGRQN2trVWRlcC9Qc1RCakFqK2d3S3lNL1Z0VzlPdFNlKzVvdCtOUGRodXBDWEl6SUk0KzhLdkRzMnVDTDgvdnZkS0xsbEt0VWRWOHJDRVhuMzBRQVFPZFBIbm5ra2ZlVVg3ZXF2aWh2WEVPbldnNjVJb1R3MGttT24vYnM4ZVBpUVI1NTVIVUFyenVFc0R1QUMrbGdrNVVMUXdoTDZuWE1vVDNUK1pOSEhubmt0WjBIb0IvQVp5dlE2S1lLOGxDdWkzN2FNNTAvZWVTUlIxNFVYcU5SM3hMQVd3RGNURWNjWFc0U2tlTlVkVFBhY3pIT3YyOUdDUWZra1VjZWVSWGlEUTR1bXF1cUw4aTc0ajFDNSt3bWorVHZlSSt1cnE0ZTJsOTdlRFA5NDMxdDdCVkFIbm5ra1ZkNlhxUFIyQlRBa1FBdXA4TnVtOWk3UE5MZUxlMnZ2YnlaL1BIZUtVb01kcE5ISG5ua2tmZTNYNzFlM3g3QUNRQitRaWZlc3RnN084SGVJZTNQaHplVEIraWRMT1NSUng1NTVFMy9VOVVkUk9RWUFKY0FlSXdPL21saTcrUVNlMGYycm1oLy9yeFcvL2prSmtFOTVKRkhIbm5rdGZiTHNtd2pFVGxBVlQ4UFlHVUhPLzJWcW5xcWlPeHY3NFQyRXBYWGZPMmZpVDBDWmxzdW1Eenl5Q09QdkwvS3dFQi9yNGc4RzhBUkFFNEQ4T3NLTzN3YjI1Y0J2QzdMc2gydHRnTHRwUkJlODVWL0p6Y0ptdTE1QTNua2tVY2VlV3ZtWlZtMnRhcnVBK0JrRWZrV2dEdEw2T3p2ekovOS9WYU9WMFMyb1g2VDRuVzMxQ05ndHVXQ3lTT1BQUExJbXhIUCtoSnNKU0xXcE9nb0VmbVVpRndNNE5hQ1d4amIzNzdWbnNXZUtYODJlOGF0MWwxM1hqZjFtemF2dlZzRjdkNTZJSTg4OHNnamIxcmVva1dMNWdCWUlDSmpBQTZ4NGpnQVRySGpCQkU1TDc5Q2QxMmVhM0FQZ0FmeisvUlBUbkxraitUL2YvZmsvNjM5bTh0emhoMU5uSkt6RDhuLzFvTCsvdjQ1MUVlNWVmOGZOMHN3d0psTUxsd0FBQUFBU1VWT1JLNUNZSUk9JztcclxuICBASW5wdXQoKSB1cGxvYWRlcjogTmd4TWF0Q2RrVXBsb2FkZXI7XHJcbiAgQElucHV0KCkgZGVsZXRlRmlsZUxhYmVsID0gJ0RlbGV0ZSBGaWxlJztcclxuICBASW5wdXQoKSBtYXhpbXVtRmlsZUxpbWl0TGFiZWwgPSAnTWF4aW11bSBmaWxlIHVwbG9hZCBsaW1pdCBpcyAnO1xyXG4gIEBJbnB1dCgpIG1heEZpbGVQaWNrQ291bnQgPSA2O1xyXG4gIEBJbnB1dCgpIGFkZEltYWdlSWNvbjogc3RyaW5nID0gJ2FkZC1jYW1lcmEucG5nJztcclxuICBtYXhGaWxlUGlja0NvdW50RXJyb3IgPSBmYWxzZTtcclxuICBlcnJvcnM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgZmlsZVR5cGU6IG51bWJlciB8IEZpbGVUeXBlcztcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpXHJcbiAgQElucHV0KClcclxuICBnZXQgZGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBzZXQgZGlzYWJsZWQodmFsOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWwpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgbXVsdGlwbGUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX211bHRpcGxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldCBtdWx0aXBsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGRpc3BsYXlGaWxlU2l6ZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZGlzcGxheUZpbGVTaXplID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldCBkaXNwbGF5RmlsZVNpemUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheUZpbGVTaXplO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCdhY3RpdmVCb3JkZXJDb2xvcicpXHJcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5ib3JkZXItY29sb3InKVxyXG4gIHNldCBib3JkZXJDb2xvcihjb2xvcjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9hY3RpdmVCb3JkZXJDb2xvciA9IGNvbG9yO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGJvcmRlckNvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNEcmFnb3ZlciA/IHRoaXMuX2FjdGl2ZUJvcmRlckNvbG9yIDogJyNjY2MnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZpbGVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVzO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5lbXB0eS1pbnB1dCcpXHJcbiAgZ2V0IGlzRW1wdHkoKSB7XHJcbiAgICByZXR1cm4gIXRoaXMuZmlsZXM/Lmxlbmd0aDtcclxuICB9XHJcblxyXG5cclxuICAvLyBASG9zdEJpbmRpbmcoJ2NsYXNzLmRyYWctb3ZlcicpXHJcbiAgZ2V0IGlzRHJhZ292ZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNEcmFnT3ZlcjtcclxuICB9XHJcblxyXG4gIHNldCBpc0RyYWdvdmVyKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5faXNEcmFnT3ZlciA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHJpdmF0ZSB2YWx1ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE5neE1hdERyYWdEcm9wRmlsZUR0b1tdPigpO1xyXG5cclxuXHJcbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0RWwnKVxyXG4gIHByaXZhdGUgZmlsZUlucHV0RWw6IEVsZW1lbnRSZWY7XHJcblxyXG5cclxuICAvLyBkb2VzIG5vIHZhbGlkYXRpb24sIGp1c3Qgc2V0cyB0aGUgaGlkZGVuIGZpbGUgaW5wdXRcclxuICBASW5wdXQoKSBhY2NlcHQgPSAnaW1hZ2UvKic7XHJcblxyXG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gIF9tdWx0aXBsZSA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBlbXB0eVBsYWNlaG9sZGVyID0gYERyb3AgZmlsZSR7dGhpcy5tdWx0aXBsZSA/ICdzJyA6ICcnfSBvciBjbGljayB0byBzZWxlY3RgO1xyXG5cclxuICBwcml2YXRlIF9kaXNwbGF5RmlsZVNpemUgPSBmYWxzZTtcclxuXHJcblxyXG4gIHByaXZhdGUgX2FjdGl2ZUJvcmRlckNvbG9yID0gJ3B1cnBsZSc7XHJcblxyXG5cclxuICBwcml2YXRlIF9maWxlczogRmlsZVtdID0gW107XHJcbiAgcHJpdmF0ZSBfaXNEcmFnT3ZlciA9IGZhbHNlO1xyXG5cclxuICAvLyBodHRwczovL2FuZ3VsYXIuaW8vYXBpL2Zvcm1zL0NvbnRyb2xWYWx1ZUFjY2Vzc29yXHJcbiAgcHJpdmF0ZSBfb25DaGFuZ2UgPSAodmFsOiBOZ3hNYXREcmFnRHJvcEZpbGVEdG9bXSkgPT4ge1xyXG4gIH07XHJcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkID0gKCkgPT4ge1xyXG4gIH07XHJcblxyXG4gIHdyaXRlVmFsdWUoZmlsZXM6IEZpbGVbXSk6IHZvaWQge1xyXG4gICAgY29uc3QgZmlsZUFycmF5ID0gdGhpcy5jb252ZXJ0VG9BcnJheShmaWxlcyk7XHJcbiAgICBpZiAoZmlsZUFycmF5Lmxlbmd0aCA8IDIgfHwgdGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLl9maWxlcyA9IGZpbGVBcnJheTtcclxuICAgICAgdGhpcy5lbWl0Q2hhbmdlcyh0aGlzLl9maWxlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgZmlsZXMgbm90IGFsbG93ZWQnKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0Q2hhbmdlcyhmaWxlczogRmlsZVtdKSB7XHJcbiAgICBjb25zdCBmaWxlc1MgPSBmaWxlcy5tYXAociA9PiB7XHJcbiAgICAgIGxldCBhdmF0YXI6IE5neE1hdERyYWdEcm9wRmlsZUR0byA9IHtcclxuICAgICAgICBmaWxlQ29udGVudFR5cGU6IHIudHlwZSB8fCByWydtaW1lVHlwZSddLFxyXG4gICAgICAgIGZpbGVOYW1lOiByLm5hbWUsXHJcbiAgICAgICAgZmlsZVNpemU6IHIuc2l6ZSxcclxuICAgICAgICB0ZW1wSWQ6IHJbJ3RlbXBJZCddLFxyXG4gICAgICAgIGlkOiByWydpZCddLFxyXG4gICAgICAgIHN0YXR1czogclsnc3RhdHVzJ10sXHJcbiAgICAgICAgdHlwZTogdGhpcy5maWxlVHlwZVxyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gYXZhdGFyO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlZC5lbWl0KGZpbGVzUyk7XHJcbiAgICB0aGlzLl9vbkNoYW5nZShmaWxlc1MpO1xyXG4gIH1cclxuXHJcbiAgYWRkRmlsZXMoZmlsZXM6IEZpbGVbXSB8IEZpbGVMaXN0IHwgRmlsZSkge1xyXG5cclxuICAgIC8vIHRoaXMuX29uVG91Y2hlZCgpO1xyXG5cclxuICAgIGNvbnN0IGZpbGVBcnJheSA9IHRoaXMuY29udmVydFRvQXJyYXkoZmlsZXMpO1xyXG5cclxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIC8vIHRoaXMuZXJyb3JPbkVxdWFsRmlsZW5hbWVzKGZpbGVBcnJheSk7XHJcbiAgICAgIGNvbnN0IG1lcmdlZCA9IHRoaXMuZmlsZXMuY29uY2F0KGZpbGVBcnJheSk7XHJcbiAgICAgIHRoaXMud3JpdGVWYWx1ZShtZXJnZWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy53cml0ZVZhbHVlKGZpbGVBcnJheSk7XHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcblxyXG5cclxuICByZW1vdmVGaWxlKGZpbGU6IEZpbGUpIHtcclxuICAgIGNvbnN0IGZpbGVJbmRleCA9IHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlKTtcclxuICAgIGlmIChmaWxlSW5kZXggPj0gMCkge1xyXG4gICAgICBjb25zdCBjdXJyZW50RmlsZXMgPSB0aGlzLmZpbGVzLnNsaWNlKCk7XHJcbiAgICAgIGN1cnJlbnRGaWxlcy5zcGxpY2UoZmlsZUluZGV4LCAxKTtcclxuICAgICAgdGhpcy53cml0ZVZhbHVlKGN1cnJlbnRGaWxlcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhcigpIHtcclxuICAgIHRoaXMud3JpdGVWYWx1ZShbXSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdjaGFuZ2UnLCBbJyRldmVudCddKVxyXG4gIGNoYW5nZShldmVudDogRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkKCk7XHJcbiAgICBjb25zdCBmaWxlTGlzdDogRmlsZUxpc3QgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzO1xyXG4gICAgdGhpcy5yZW1vdmVEaXJlY3RvcmllcyhmaWxlTGlzdCkudGhlbigoZmlsZXM6IEZpbGVbXSkgPT4ge1xyXG4gICAgICBpZiAoZmlsZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuYWRkRmlsZXMoZmlsZXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIGNsZWFyIGl0IHNvIGNoYW5nZSBpcyB0cmlnZ2VyZWQgaWYgc2FtZSBmaWxlIGlzIHNlbGVjdGVkIGFnYWluXHJcbiAgICAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlID0gJyc7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkcmFnZW50ZXInLCBbJyRldmVudCddKVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSlcclxuICBhY3RpdmF0ZShlKSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmlzRHJhZ292ZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyckZXZlbnQnXSlcclxuICBkZWFjdGl2YXRlKGUpIHtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuaXNEcmFnb3ZlciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZHJvcCcsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlRHJvcChlKSB7XHJcbiAgICB0aGlzLmRlYWN0aXZhdGUoZSk7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgY29uc3QgZmlsZUxpc3QgPSBlLmRhdGFUcmFuc2Zlci5maWxlcztcclxuICAgICAgdGhpcy5yZW1vdmVEaXJlY3RvcmllcyhmaWxlTGlzdCkudGhlbigoZmlsZXM6IEZpbGVbXSkgPT4ge1xyXG4gICAgICAgIGlmIChmaWxlcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLmFkZEZpbGVzKGZpbGVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gQEhvc3RMaXN0ZW5lcignY2xpY2snKVxyXG4gIG9wZW4oKSB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5maWxlSW5wdXRFbD8ubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JylcclxuICAvLyBibHVyKCkge1xyXG4gIC8vICAgY29uc29sZS5sb2coJ2JsdXJyZWQnKVxyXG4gIC8vICAgdGhpcy5fb25Ub3VjaGVkKCk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBwcml2YXRlIGVycm9yT25FcXVhbEZpbGVuYW1lcyhmaWxlczogRmlsZVtdKSB7XHJcbiAgLy8gICBpZiAodGhpcy5maWxlcy5zb21lKGZpbGUgPT4gZmlsZXMuc29tZShmaWxlMiA9PiBmaWxlLm5hbWUgPT09IGZpbGUyLm5hbWUpKSkge1xyXG4gIC8vICAgICB0aHJvdyBFcnJvcignb25lIG9mIHRoZSBwcm92aWRlZCBmaWxlbmFtZXMgYWxyZWFkeSBleGlzdHMnKVxyXG4gIC8vICAgfVxyXG5cclxuICAvLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAvLyAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgZmlsZXMubGVuZ3RoOyBqKyspIHtcclxuICAvLyAgICAgICBpZiAoZmlsZXNbaV0ubmFtZSA9PT0gZmlsZXNbal0ubmFtZSkge1xyXG4gIC8vICAgICAgICAgdGhyb3cgRXJyb3IoYGNhbid0IGFkZCBtdWx0aXBsZSBmaWxlcyB3aXRoIHNhbWUgbmFtZWApXHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZURpcmVjdG9yaWVzKGZpbGVzOiBGaWxlTGlzdCk6IFByb21pc2U8YW55PiB7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdGhpcy5tYXhGaWxlUGlja0NvdW50RXJyb3IgPSBmYWxzZTtcclxuXHJcbiAgICAgIGxldCBmaWxlQXJyYXkgPSB0aGlzLmNvbnZlcnRUb0FycmF5KGZpbGVzKTtcclxuXHJcbiAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXMgPSB0aGlzLmZpbGVzLmZpbHRlcih6ID0+IHpbJ3N0YXR1cyddICE9PSAnZXJyb3InKTtcclxuICAgICAgY29uc3QgdXBsb2FkZWRGaWxlc0xlbmd0aCA9IHVwbG9hZGVkRmlsZXMubGVuZ3RoO1xyXG4gICAgICBjb25zdCBmaWxlVG90YWxDb3VudCA9IHVwbG9hZGVkRmlsZXNMZW5ndGggKyBmaWxlQXJyYXkubGVuZ3RoO1xyXG4gICAgICBpZiAoZmlsZVRvdGFsQ291bnQgPiB0aGlzLm1heEZpbGVQaWNrQ291bnQpIHtcclxuICAgICAgICB0aGlzLm1heEZpbGVQaWNrQ291bnRFcnJvciA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICh1cGxvYWRlZEZpbGVzTGVuZ3RoIDwgdGhpcy5tYXhGaWxlUGlja0NvdW50KSB7XHJcbiAgICAgICAgICBmaWxlQXJyYXkgPSBmaWxlQXJyYXkuc2xpY2UoMCwgdGhpcy5tYXhGaWxlUGlja0NvdW50IC0gdXBsb2FkZWRGaWxlc0xlbmd0aCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICBpZiAoZmlsZUFycmF5Lmxlbmd0aClcclxuICAgICAgICAvLyBhZGQgdGVtcElkIGludG8gZmlsZXNcclxuICAgICAge1xyXG4gICAgICAgIGZpbGVBcnJheS5mb3JFYWNoKGl0ZW0gPT4gaXRlbVsndGVtcElkJ10gPSB1dWlkKCkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBkaXJuYW1lcyA9IFtdO1xyXG5cclxuICAgICAgY29uc3QgcmVhZGVyTGlzdCA9IFtdO1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuXHJcbiAgICAgICAgY29uc3QgZmlsZSA9IGZpbGVBcnJheVtpXTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuXHJcblxyXG4gICAgICAgIHJlYWRlci5vbmVycm9yID0gKCkgPT4ge1xyXG4gICAgICAgICAgZGlybmFtZXMucHVzaChmaWxlQXJyYXlbaV0ubmFtZSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgdGh1bWJuYWlsQWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIGxldCBtaW1lVHlwZSA9IGZpbGUudHlwZTtcclxuICAgICAgICBmaWxlWydtZXNzYWdlJ10gPSAxMDtcclxuICAgICAgICBpZiAoIWZpbGUudHlwZSkge1xyXG4gICAgICAgICAgbWltZVR5cGUgPSBtaW1lLmdldFR5cGUodGhpcy5nZXRMYXNJbmRleFR5cGUoZmlsZS5uYW1lKSk7XHJcbiAgICAgICAgICBmaWxlWydtaW1lVHlwZSddID0gbWltZVR5cGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobWltZVR5cGUuaW5jbHVkZXMoJ2ltYWdlJykgfHwgbWltZVR5cGUuaW5jbHVkZXMoJ3ZpZGVvJykpIHtcclxuICAgICAgICAgIHRodW1ibmFpbEFibGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9ICgpID0+IHtcclxuXHJcbiAgICAgICAgICByZWFkZXJMaXN0LnB1c2goaSk7XHJcbiAgICAgICAgICBpZiAodGhpcy51cGxvYWRlcikge1xyXG4gICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICAgICAgICBjb25zdCBibG9iID0gZmlsZS5zbGljZSgwLCBmaWxlLnNpemUsIG1pbWVUeXBlKTtcclxuICAgICAgICAgICAgY29uc3QgbmV3RmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgYHRlbXBfJHtmaWxlWyd0ZW1wSWQnXX1gLCB7dHlwZTogbWltZVR5cGV9KTtcclxuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgbmV3RmlsZSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9nZXRVcGxvYWRlcihmb3JtRGF0YSwgZmlsZVsndGVtcElkJ10pPy5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMgJiYgcmVzLm1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgIGZpbGVbJ21lc3NhZ2UnXSA9IHJlcz8ubWVzc2FnZTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZmlsZVsnbWVzc2FnZSddID0gMTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgZmlsZVsnc3RhdHVzJ10gPSAnZXJyb3InO1xyXG4gICAgICAgICAgICAgIGZpbGVbJ21lc3NhZ2UnXSA9IGVycj8uZXJyb3I7XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmVycm9ycykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvcnMgPSBbXTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5lcnJvcnMucHVzaCh7bWVzc2FnZTogZmlsZVsnbWVzc2FnZSddLCBuYW1lOiBmaWxlLm5hbWV9KTtcclxuICAgICAgICAgICAgICBjb25zdCBmaWxlRGVsZXRlSW5kZXggPSB0aGlzLmZpbGVzLmZpbmRJbmRleCh6ID0+IHpbJ3RlbXBJZCddID09PSBmaWxlWyd0ZW1wSWQnXSk7XHJcbiAgICAgICAgICAgICAgaWYgKGZpbGVEZWxldGVJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKGZpbGVEZWxldGVJbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmZiA9IHRoaXMuZmlsZXMuc2xpY2UoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZW1pdENoYW5nZXMoZmYpO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChmaWxlWydtZXNzYWdlJ10gJiYgZmlsZVsnbWVzc2FnZSddID09IDEwMCkge1xyXG4gICAgICAgICAgICAgICAgICBmaWxlWydzdGF0dXMnXSA9ICdjb21wbGV0ZSc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZWFkZXJMaXN0Lmxlbmd0aCA9PT0gZmlsZUFycmF5Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXNvbHZlKGZpbGVBcnJheS5maWx0ZXIoKGZpbGU6IEZpbGUpID0+ICFkaXJuYW1lcy5pbmNsdWRlcyhmaWxlLm5hbWUpKSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRodW1ibmFpbEFibGUpIHtcclxuICAgICAgICAgICAgZmlsZVsnaW1hZ2VVcmwnXSA9IHJlYWRlci5yZXN1bHQ7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKHRodW1ibmFpbEFibGUpIHtcclxuICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG5cclxuICAgIH0pO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldExhc0luZGV4VHlwZShmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiBmaWxlTmFtZS5zdWJzdHIoXHJcbiAgICAgICAgZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEsXHJcbiAgICAgICAgZmlsZU5hbWUubGVuZ3RoIC0gZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKVxyXG4gICAgICApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0VG9BcnJheShmaWxlczogRmlsZUxpc3QgfCBGaWxlW10gfCBGaWxlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IEZpbGVbXSB7XHJcbiAgICBpZiAoZmlsZXMpIHtcclxuICAgICAgaWYgKGZpbGVzIGluc3RhbmNlb2YgRmlsZSkge1xyXG4gICAgICAgIHJldHVybiBbZmlsZXNdO1xyXG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZmlsZXMpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZpbGVzO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmaWxlcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIF9nZXRVcGxvYWRlcihmb3JtRGF0ZTogRm9ybURhdGEsIHRlbXBJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGlmICh0aGlzLnVwbG9hZGVyKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgKHRoaXMudXBsb2FkZXIudXBsb2FkZXJGdW5jKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZGVyLnVwbG9hZGVyRnVuYyhmb3JtRGF0ZSwgdGVtcElkKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5fdXBsb2FkZXIoZm9ybURhdGUsIHRlbXBJZCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VwbG9hZGVyKGJvZHk6IEZvcm1EYXRhIHwgbnVsbCB8IHVuZGVmaW5lZCwgdGVtcElkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCB1cmxfID0gdGhpcy51cGxvYWRlcj8udXBsb2FkZXJVcmwgKyAnPyc7XHJcbiAgICBpZiAodGVtcElkICE9PSB1bmRlZmluZWQgJiYgdGVtcElkICE9PSBudWxsKSB7XHJcbiAgICAgIHVybF8gKz0gJ3RlbXBJZD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KCcnICsgdGVtcElkKSArICcmJztcclxuICAgIH1cclxuICAgIHVybF8gPSB1cmxfLnJlcGxhY2UoL1s/Jl0kLywgJycpO1xyXG4gICAgY29uc3QgY29udGVudF8gPSBib2R5O1xyXG4gICAgbGV0IG9wdGlvbnNfOiBhbnkgPSB7XHJcbiAgICAgIG9ic2VydmU6ICdldmVudHMnLFxyXG4gICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcclxuICAgICAgaGVhZGVyczogdGhpcy51cGxvYWRlcj8udXBsb2FkZXJIdHRwSGVhZGVyc1xyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmxfLCBjb250ZW50Xywgb3B0aW9uc18pXHJcbiAgICAgIC5waXBlKG1hcCgoZXZlbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzczpcclxuICAgICAgICAgICAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGgucm91bmQoMTAwICogZXZlbnQubG9hZGVkIC8gZXZlbnQudG90YWwpO1xyXG4gICAgICAgICAgICAgIHJldHVybiB7c3RhdHVzOiAncHJvZ3Jlc3MnLCBtZXNzYWdlOiBwcm9ncmVzc307XHJcblxyXG4gICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuUmVzcG9uc2U6XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtzdGF0dXM6ICdjb21wbGV0ZWQnLCBtZXNzYWdlOiAnMTAwJ307XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtzdGF0dXM6ICdlcnJvcicsIG1lc3NhZ2U6IGBVbmhhbmRsZWQgZXZlbnQ6ICR7ZXZlbnQudHlwZX1gfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE5neE1hdERyYWdEcm9wRmlsZUR0byB7XHJcbiAgaWQ6IGFueTtcclxuICBmaWxlTmFtZTogc3RyaW5nO1xyXG4gIGZpbGVTaXplOiBudW1iZXI7XHJcbiAgZmlsZUNvbnRlbnRUeXBlOiBzdHJpbmc7XHJcbiAgdHlwZT86IG51bWJlciB8IEZpbGVUeXBlcztcclxuICB0ZW1wSWQ6IHN0cmluZztcclxuICBhZGRyZXNzZXM/OiBzdHJpbmdbXSA9IFtdO1xyXG4gIGltYWdlVXJsPzogc3RyaW5nO1xyXG4gIHN0YXR1cz86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRmlsZVR5cGVzIHtcclxuICBVc2VyLFxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTmd4TWF0Q2RrVXBsb2FkZXIge1xyXG4gIHVwbG9hZGVyRnVuYz86IChmb3JtRGF0ZTogRm9ybURhdGEsIHRlbXBJZDogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPGFueT47XHJcbiAgdXBsb2FkZXJVcmw/OiBzdHJpbmc7XHJcbiAgdXBsb2FkZXJIdHRwSGVhZGVycz86IEh0dHBIZWFkZXJzO1xyXG59XHJcbiJdfQ==