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

ngx-text-diff

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ngx-text-diff - npm Package Compare versions

Comparing version 0.5.0 to 0.5.1

esm2015/lib/loader-spinner/loader-spinner.component.js

2

bundles/ngx-text-diff.umd.min.js

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

!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("@angular/core"),require("diff-match-patch"),require("@angular/common"),require("@angular/forms")):"function"==typeof define&&define.amd?define("ngx-text-diff",["exports","@angular/core","diff-match-patch","@angular/common","@angular/forms"],n):n(t["ngx-text-diff"]={},t.ng.core,t.diffMatchPatch,t.ng.common,t.ng.forms)}(this,function(t,n,g,e,r){"use strict";var u=function(t){return t===undefined||null===t},b=function(t){return null==t||!(Object.keys(t)||t).length||0===(Object.keys(t)||t).length},o=function(){function t(){this.initParser()}return t.prototype.initParser=function(){this.diffParser=new g.diff_match_patch},t.prototype.getDiffsByLines=function(s,f){var d=this;return new Promise(function(t,n){var e=d.diffParser.diff_linesToChars_(s,f),r=e.chars1,o=e.chars2,i=e.lineArray,l=d.diffParser.diff_main(r,o,!0);d.diffParser.diff_charsToLines_(l,i);var a=d.formatOutputNew(l,i);a||n("Error"),t(a)})},t.prototype.formatOutputNew=function(t,n){if(n)return this.formatDiffsFromLines(t,n)},t.prototype.formatDiffsFromLines=function(t,d){var c=this;d.splice(0,1);var p=1,h=1;return t.reduce(function(t,n){t||(t=[]);for(var e=n[1];!u(e)||!b(e)||0<e.length;){var r=d.findIndex(function(t){return e.includes(t)});if(!(0<=r))break;var o=d[r],i=null,l=null,a=null,s=null,f=null;switch(n[0]){case g.DIFF_EQUAL:f={leftContent:a={lineNumber:p,lineContent:o,lineDiffs:[],prefix:""},rightContent:s={lineNumber:h,lineContent:o,lineDiffs:[],prefix:""},belongTo:"both",hasDiffs:!1},t.push(f),h+=1,p+=1;break;case g.DIFF_INSERT:i=t.find(function(t){return t.leftContent&&!t.rightContent&&t.leftContent.lineNumber===h&&""!==t.leftContent.prefix}),s={lineNumber:h,lineContent:o,lineDiffs:[{content:o,isDiff:!0}],prefix:"+"},i?(i.rightContent=s,i.leftContent.lineDiffs=c.getDiffParts(i.leftContent.lineContent,i.rightContent.lineContent),i.rightContent.lineDiffs=c.getDiffParts(i.rightContent.lineContent,i.leftContent.lineContent),i.belongTo="both"):t.push({leftContent:null,rightContent:s,hasDiffs:!0,belongTo:"right"}),h+=1;break;case g.DIFF_DELETE:l=t.find(function(t){return!t.leftContent&&t.rightContent&&t.rightContent.lineNumber===p&&""!==t.rightContent.prefix}),a={lineNumber:p,lineContent:o,lineDiffs:[{content:o,isDiff:!0}],prefix:"-"},l?(l.leftContent=a,l.leftContent.lineDiffs=c.getDiffParts(l.leftContent.lineContent,l.rightContent.lineContent),l.rightContent.lineDiffs=c.getDiffParts(l.rightContent.lineContent,l.leftContent.lineContent),l.belongTo="both"):t.push({leftContent:a,rightContent:null,hasDiffs:!0,belongTo:"left"}),p+=1}e=e.replace(o,""),d.splice(r,1)}return t},[])},t.prototype.getDiffParts=function(t,n){for(var e=[],r=0,o=0,i="",l="";r<t.length;)t[r]===n[o]&&o<n.length?(""!==l&&(e.push({content:l,isDiff:!0}),l=""),i+=t[r]):(""!==i&&(e.push({content:i,isDiff:!1}),i=""),l+=t[r]),r++,o++;return""!==l?e.push({content:l,isDiff:!0}):""!==i&&e.push({content:i,isDiff:!1}),e},t.decorators=[{type:n.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[]},t.ngInjectableDef=n.defineInjectable({factory:function(){return new t},token:t,providedIn:"root"}),t}();function i(r,o){var i,l,a,t,s={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return t={next:n(0),"throw":n(1),"return":n(2)},"function"==typeof Symbol&&(t[Symbol.iterator]=function(){return this}),t;function n(n){return function(t){return function e(t){if(i)throw new TypeError("Generator is already executing.");for(;s;)try{if(i=1,l&&(a=2&t[0]?l["return"]:t[0]?l["throw"]||((a=l["return"])&&a.call(l),0):l.next)&&!(a=a.call(l,t[1])).done)return a;switch(l=0,a&&(t=[2&t[0],a.value]),t[0]){case 0:case 1:a=t;break;case 4:return s.label++,{value:t[1],done:!1};case 5:s.label++,l=t[1],t=[0];continue;case 7:t=s.ops.pop(),s.trys.pop();continue;default:if(!(a=0<(a=s.trys).length&&a[a.length-1])&&(6===t[0]||2===t[0])){s=0;continue}if(3===t[0]&&(!a||t[1]>a[0]&&t[1]<a[3])){s.label=t[1];break}if(6===t[0]&&s.label<a[1]){s.label=a[1],a=t;break}if(a&&s.label<a[2]){s.label=a[2],s.ops.push(t);break}a[2]&&s.ops.pop(),s.trys.pop();continue}t=o.call(r,s)}catch(n){t=[6,n],l=0}finally{i=a=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}([n,t])}}}var l=function(){function t(t,n){this.diff=t,this.cd=n,this.format="SideBySide",this.left="",this.right="",this.loading=!1,this.showBtnToolbar=!0,this.subscriptions=[],this.tableRows=[],this.filteredTableRows=[],this.tableRowsLineByLine=[],this.filteredTableRowsLineByLine=[],this.showLinesDiffs=!1,this.diffsCount=0,this.formatOptions=[{id:"side-by-side",name:"side-by-side",label:"Side by Side",value:"SideBySide",icon:"la-code"},{id:"line-by-line",name:"line-by-line",label:"Line by Line",value:"LineByLine",icon:"la-file-text"}]}return t.prototype.ngOnInit=function(){var n=this;this.diffContentObservable$&&this.subscriptions.push(this.diffContentObservable$.subscribe(function(t){n.left=t.leftContent,n.right=t.rightContent,n.renderDiffs().then(function(){n.cd.detectChanges()})})),this.renderDiffs().then()},t.prototype.showLinesDiffsChange=function(t){this.showLinesDiffs=t,this.showLinesDiffs?(this.filteredTableRows=this.tableRows.filter(function(t){return t.leftContent&&"-"===t.leftContent.prefix||t.rightContent&&"+"===t.rightContent.prefix}),this.filteredTableRowsLineByLine=this.tableRowsLineByLine.filter(function(t){return t.leftContent&&"-"===t.leftContent.prefix||t.rightContent&&"+"===t.rightContent.prefix})):(this.filteredTableRows=this.tableRows,this.filteredTableRowsLineByLine=this.tableRowsLineByLine)},t.prototype.setDiffTableFormat=function(t){this.format=t},t.prototype.renderDiffs=function(){return function t(n,l,a,s){return new(a||(a=Promise))(function(t,e){function r(t){try{i(s.next(t))}catch(n){e(n)}}function o(t){try{i(s["throw"](t))}catch(n){e(n)}}function i(n){n.done?t(n.value):new a(function(t){t(n.value)}).then(r,o)}i((s=s.apply(n,l||[])).next())})}(this,void 0,void 0,function(){var n;return i(this,function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),this.loading=!0,this.diffsCount=0,[4,(n=this).diff.getDiffsByLines(this.left,this.right)];case 1:return n.tableRows=t.sent(),this.tableRowsLineByLine=this.tableRows.reduce(function(t,n){return t||(t=[]),n.hasDiffs?(n.leftContent&&t.push({leftContent:n.leftContent,rightContent:null,belongTo:n.belongTo,hasDiffs:!0}),n.rightContent&&t.push({leftContent:null,rightContent:n.rightContent,belongTo:n.belongTo,hasDiffs:!0})):t.push(n),t},[]),this.diffsCount=this.tableRows.filter(function(t){return t.leftContent&&"-"===t.leftContent.prefix||t.rightContent&&"+"===t.rightContent.prefix}).length,this.filteredTableRows=this.tableRows,this.filteredTableRowsLineByLine=this.tableRowsLineByLine,this.loading=!1,[3,3];case 2:return t.sent(),[3,3];case 3:return[2]}})})},t.prototype.trackTableRows=function(t,n){return n&&n.leftContent?n.leftContent.lineContent:n&&n.rightContent?n.rightContent.lineContent:undefined},t.prototype.trackDiffs=function(t,n){return n&&n.content?n.content:undefined},t.decorators=[{type:n.Component,args:[{selector:"td-ngx-text-diff",template:'<td-loader-sppiner [active]="loading"></td-loader-sppiner>\r\n<div *ngIf="!loading">\r\n <div class="td-wrapper">\r\n <div class="td-toolbar-show-diff">\r\n <label class="td-checkbox-container">Show Lines with Diffs ({{diffsCount}})\r\n <input type="checkbox"\r\n id="showDiffs"\r\n [ngModel]="showLinesDiffs"\r\n (ngModelChange)="showLinesDiffsChange($event)"\r\n >\r\n <span class="checkmark"></span>\r\n </label>\r\n </div>\r\n <div class="td-toolbar-select-format" *ngIf="showBtnToolbar">\r\n <div class="td-btn-group td-btn-group-toggle" data-toggle="buttons">\r\n <button *ngFor="let option of formatOptions"\r\n [ngClass]="{\'active\': format === option.value, \'disabled\': !!option.disabled}"\r\n [name]="option.name"\r\n [id]="option.id"\r\n [disabled]="!!option.disabled"\r\n (click)="setDiffTableFormat(option.value)"\r\n >{{option.label}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class="td-table-wrapper">\r\n <div class="td-table-container side-by-side" *ngIf="format === \'SideBySide\'">\r\n <table class="td-table">\r\n <tbody>\r\n <tr *ngFor="let row of filteredTableRows; trackBy: trackTableRows">\r\n <td scope="row" class="fit-column line-number-col"\r\n [ngClass]="{\'delete-row\' : row.leftContent?.prefix === \'-\', \'empty-row\': !row.leftContent?.lineContent}">\r\n {{(row.leftContent?.lineNumber !== -1) ?\r\n row.leftContent?.lineNumber : \' \'}}\r\n </td>\r\n <td class="fit-column prefix-col"\r\n [ngClass]="{\'delete-row\' : row.leftContent?.prefix === \'-\', \'empty-row\': !row.leftContent?.lineContent}">\r\n <span>{{row.leftContent?.prefix || \' \'}}</span>\r\n </td>\r\n <td class="content-col"\r\n [ngClass]="{\'delete-row\' : row.leftContent?.prefix === \'-\', \'empty-row\': !row.leftContent?.lineContent}"\r\n *ngIf="!row.hasDiffs">\r\n <span [innerHTML]="row.leftContent?.lineContent | formatLine"></span>\r\n </td>\r\n <td class="content-col"\r\n [ngClass]="{\'delete-row\' : row.leftContent?.prefix === \'-\', \'empty-row\': !row.leftContent?.lineContent}"\r\n *ngIf="row.hasDiffs">\r\n <span [innerHTML]="diff.content | formatLine" [ngClass]="{\'highlight\': diff.isDiff}"\r\n *ngFor="let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class="td-table-container side-by-side" *ngIf="format === \'SideBySide\'">\r\n <table class="td-table">\r\n <tbody>\r\n <tr *ngFor="let row of filteredTableRows; trackBy: trackTableRows">\r\n <td scope="row" class="fit-column line-number-col"\r\n [ngClass]="{\'insert-row\' : row.rightContent?.prefix === \'+\', \'empty-row\': !row.rightContent?.lineContent}">\r\n {{(row.rightContent?.lineNumber !== -1) ?\r\n row.rightContent?.lineNumber : \' \'}}\r\n </td>\r\n <td class="fit-column prefix-col"\r\n [ngClass]="{\'insert-row\' : row.rightContent?.prefix === \'+\', \'empty-row\': !row.rightContent?.lineContent}">\r\n <span>{{row.rightContent?.prefix || \' \'}}</span>\r\n </td>\r\n <td class="content-col"\r\n [ngClass]="{\'insert-row\' : row.rightContent?.prefix === \'+\', \'empty-row\': !row.rightContent?.lineContent}"\r\n *ngIf="!row.hasDiffs">\r\n <span [innerHTML]="row.rightContent?.lineContent | formatLine"></span>\r\n </td>\r\n <td class="content-col"\r\n [ngClass]="{\'insert-row\' : row.rightContent?.prefix === \'+\', \'empty-row\': !row.rightContent?.lineContent}"\r\n *ngIf="row.hasDiffs">\r\n <span [innerHTML]="diff.content | formatLine" [ngClass]="{\'highlight\': diff.isDiff}"\r\n *ngFor="let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class="td-table-container line-by-line" *ngIf="format === \'LineByLine\'">\r\n <table class="td-table">\r\n <tbody>\r\n <tr *ngFor="let row of filteredTableRowsLineByLine; trackBy: trackTableRows">\r\n <td scope="row" class="fit-column line-number-col-left">{{row.leftContent?.lineNumber}}</td>\r\n <td scope="row" class="fit-column line-number-col">{{row.rightContent?.lineNumber}}</td>\r\n <td class="fit-column prefix-col"\r\n [ngClass]="{\'delete-row\' : row.leftContent?.prefix === \'-\', \'insert-row\' : row.rightContent?.prefix === \'+\'}">\r\n <span>{{row.leftContent?.prefix || row.rightContent?.prefix || \' \'}}</span>\r\n </td>\r\n <td class="content-col"\r\n [ngClass]="{\'delete-row\' : row.leftContent?.prefix === \'-\', \'insert-row\' : row.rightContent?.prefix === \'+\'}"\r\n *ngIf="!row.hasDiffs">\r\n <span [innerHTML]="row.leftContent?.lineContent | formatLine"></span>\r\n </td>\r\n <td class="content-col"\r\n [ngClass]="{\'delete-row\' : row.leftContent?.prefix === \'-\', \'insert-row\' : row.rightContent?.prefix === \'+\'}"\r\n *ngIf="row.hasDiffs && row.leftContent && row.leftContent?.lineDiffs.length !== 0">\r\n <span [innerHTML]="diff.content | formatLine" [ngClass]="{\'highlight\': diff.isDiff}"\r\n *ngFor="let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs"></span>\r\n </td>\r\n <td class="content-col"\r\n [ngClass]="{\'delete-row\' : row.leftContent?.prefix === \'-\', \'insert-row\' : row.rightContent?.prefix === \'+\'}"\r\n *ngIf="row.hasDiffs && row.rightContent && row.rightContent?.lineDiffs.length !== 0">\r\n <span [innerHTML]="diff.content | formatLine" [ngClass]="{\'highlight\': diff.isDiff}"\r\n *ngFor="let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n',styles:[".td-wrapper{display:-ms-grid;display:grid;width:100%;grid-row-gap:10px;-ms-grid-columns:([col] 50%)[2];grid-template-columns:repeat(2,[col] 50%);-ms-grid-rows:([row] auto)[2];grid-template-rows:repeat(2,[row] auto);background-color:#fff;color:#444}.td-toolbar-show-diff{-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1}.td-toolbar-select-format{margin-left:auto;-ms-grid-column:2;grid-column:2;-ms-grid-row:1;grid-row:1}.td-table-container{-ms-grid-column:1;-ms-grid-column-span:1;grid-column:1/2;-ms-grid-row:2;grid-row:2;width:100%;max-width:100%;overflow-x:auto}.td-table-wrapper{display:flex;width:200%}.td-table{border:1px solid #a9a9a9;max-height:50vh;width:100%;max-width:100%}.fit-column{width:1px;white-space:nowrap}.line-number-col{border-right:1px solid #ddd;color:#999;text-align:right;background-color:#f7f7f7;padding-left:10px;padding-right:10px;font-size:87.5%}.line-number-col-left{color:#999;padding-left:10px;padding-right:10px;text-align:right;background-color:#f7f7f7;font-size:87.5%}.insert-row,.insert-row>.line-number-col{background-color:#dfd;border-color:#b4e2b4}.delete-row,.delete-row>.line-number-col{background-color:#fee8e9;border-color:#e9aeae}.empty-row{background-color:#f7f7f7;height:24px}.td-table td{border-top:0;padding-top:0;padding-bottom:0;white-space:nowrap;max-width:50%}pre{margin-bottom:0}td.content-col{padding:0;margin:0;line-height:24px}td.prefix-col{padding-left:10px;padding-right:10px;line-height:24px}.td-btn-group{border-radius:4px}.td-btn-group button{background-color:rgba(23,162,184,.7);border:1px solid #17a2b8;color:#fff;cursor:pointer;float:left}.td-btn-group button:not(:last-child){border-right:none}.td-btn-group button:first-child{-webkit-border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-bottomleft:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.td-btn-group button:last-child{-webkit-border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;border-top-right-radius:4px;border-bottom-right-radius:4px}.td-btn-group:after{content:'';clear:both;display:table}.td-btn-group button.active,.td-btn-group button:hover{background-color:#17a2b8}.td-checkbox-container{display:block;position:relative;padding-left:21px;margin-bottom:0;cursor:pointer;font-size:16px;line-height:28px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.td-checkbox-container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.checkmark{position:absolute;top:7px;left:0;height:16px;width:16px;background-color:#eee}.td-checkbox-container:hover input~.checkmark{background-color:#ccc}.td-checkbox-container input:checked~.checkmark{background-color:#17a2b8}.checkmark:after{content:\"\";position:absolute;display:none}.td-checkbox-container input:checked~.checkmark:after{display:block}.td-checkbox-container .checkmark:after{left:5px;top:3px;width:5px;height:10px;border:solid #fff;border-width:0 3px 3px 0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.insert-row>.highlight{background-color:#acf2bd!important}.delete-row>.highlight{background-color:#fdb8c0!important}"]}]}],t.ctorParameters=function(){return[{type:o},{type:n.ChangeDetectorRef}]},t.propDecorators={format:[{type:n.Input}],left:[{type:n.Input}],right:[{type:n.Input}],loading:[{type:n.Input}],diffContentObservable$:[{type:n.Input}],showBtnToolbar:[{type:n.Input}]},t}(),a=function(){function t(){this.active=!1}return t.prototype.ngOnInit=function(){},t.decorators=[{type:n.Component,args:[{selector:"td-loader-sppiner",template:'<div class="td-loading-roller" *ngIf="active">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n</div>\n',styles:['.td-loading-roller{display:inline-block;position:relative;width:64px;height:64px}.td-loading-roller div{-webkit-animation:1.2s cubic-bezier(.5,0,.5,1) infinite lds-roller;animation:1.2s cubic-bezier(.5,0,.5,1) infinite lds-roller;-webkit-transform-origin:32px 32px;transform-origin:32px 32px}.td-loading-roller div:after{content:" ";display:block;position:absolute;width:6px;height:6px;border-radius:50%;background:#000;margin:-3px 0 0 -3px}.td-loading-roller div:nth-child(1){-webkit-animation-delay:-36ms;animation-delay:-36ms}.td-loading-roller div:nth-child(1):after{top:50px;left:50px}.td-loading-roller div:nth-child(2){-webkit-animation-delay:-72ms;animation-delay:-72ms}.td-loading-roller div:nth-child(2):after{top:54px;left:45px}.td-loading-roller div:nth-child(3){-webkit-animation-delay:-108ms;animation-delay:-108ms}.td-loading-roller div:nth-child(3):after{top:57px;left:39px}.td-loading-roller div:nth-child(4){-webkit-animation-delay:-144ms;animation-delay:-144ms}.td-loading-roller div:nth-child(4):after{top:58px;left:32px}.td-loading-roller div:nth-child(5){-webkit-animation-delay:-.18s;animation-delay:-.18s}.td-loading-roller div:nth-child(5):after{top:57px;left:25px}.td-loading-roller div:nth-child(6){-webkit-animation-delay:-216ms;animation-delay:-216ms}.td-loading-roller div:nth-child(6):after{top:54px;left:19px}.td-loading-roller div:nth-child(7){-webkit-animation-delay:-252ms;animation-delay:-252ms}.td-loading-roller div:nth-child(7):after{top:50px;left:14px}.td-loading-roller div:nth-child(8){-webkit-animation-delay:-288ms;animation-delay:-288ms}.td-loading-roller div:nth-child(8):after{top:45px;left:10px}@-webkit-keyframes lds-roller{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes lds-roller{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}']}]}],t.ctorParameters=function(){return[]},t.propDecorators={active:[{type:n.Input}]},t}(),s=function(){function t(){}return t.prototype.transform=function(t,n){return t?(n&&n.length,t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/ /g,"&nbsp;")):" "},t.decorators=[{type:n.Pipe,args:[{name:"formatLine"}]}],t}(),f=function(){function t(){}return t.decorators=[{type:n.NgModule,args:[{imports:[e.CommonModule,r.FormsModule],declarations:[l,a,s],exports:[l]}]}],t}();t.NgxTextDiffService=o,t.NgxTextDiffComponent=l,t.LoaderSppinerComponent=a,t.FormatLinePipe=s,t.isNil=u,t.isEmpty=b,t.NgxTextDiffModule=f,Object.defineProperty(t,"__esModule",{value:!0})});
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("@angular/core"),require("diff-match-patch"),require("@angular/common"),require("@angular/forms")):"function"==typeof define&&define.amd?define("ngx-text-diff",["exports","@angular/core","diff-match-patch","@angular/common","@angular/forms"],n):n(t["ngx-text-diff"]={},t.ng.core,t.diffMatchPatch,t.ng.common,t.ng.forms)}(this,function(t,n,b,e,r){"use strict";var o=function(){function t(){this.initParser()}return t.prototype.initParser=function(){this.diffParser=new b.diff_match_patch},t.prototype.getDiffsByLines=function(s,f){var d=this;return new Promise(function(t,n){var e=d.diffParser.diff_linesToChars_(s,f),r=e.chars1,o=e.chars2,i=e.lineArray,l=d.diffParser.diff_main(r,o,!0);d.diffParser.diff_charsToLines_(l,i);var a=d.formatOutputNew(l,i);a||n("Error"),t(a)})},t.prototype.formatOutputNew=function(t,n){if(n)return this.formatDiffsFromLines(t,n)},t.prototype.formatDiffsFromLines=function(t,p){var h=this;p.splice(0,1);var g=1,u=1;return t.reduce(function(t,n){t||(t=[]);for(var e,r,o=n[1];(r=o)!==undefined&&null!==r||null!=(e=o)&&(Object.keys(e)||e).length&&0!==(Object.keys(e)||e).length||0<o.length;){var i=p.findIndex(function(t){return o.includes(t)});if(!(0<=i))break;var l=p[i],a=null,s=null,f=null,d=null,c=null;switch(n[0]){case b.DIFF_EQUAL:c={leftContent:f={lineNumber:g,lineContent:l,lineDiffs:[],prefix:""},rightContent:d={lineNumber:u,lineContent:l,lineDiffs:[],prefix:""},belongTo:"both",hasDiffs:!1},t.push(c),u+=1,g+=1;break;case b.DIFF_INSERT:a=t.find(function(t){return t.leftContent&&!t.rightContent&&t.leftContent.lineNumber===u&&""!==t.leftContent.prefix}),d={lineNumber:u,lineContent:l,lineDiffs:[{content:l,isDiff:!0}],prefix:"+"},a?(a.rightContent=d,a.leftContent.lineDiffs=h.getDiffParts(a.leftContent.lineContent,a.rightContent.lineContent),a.rightContent.lineDiffs=h.getDiffParts(a.rightContent.lineContent,a.leftContent.lineContent),a.belongTo="both"):t.push({leftContent:null,rightContent:d,hasDiffs:!0,belongTo:"right"}),u+=1;break;case b.DIFF_DELETE:s=t.find(function(t){return!t.leftContent&&t.rightContent&&t.rightContent.lineNumber===g&&""!==t.rightContent.prefix}),f={lineNumber:g,lineContent:l,lineDiffs:[{content:l,isDiff:!0}],prefix:"-"},s?(s.leftContent=f,s.leftContent.lineDiffs=h.getDiffParts(s.leftContent.lineContent,s.rightContent.lineContent),s.rightContent.lineDiffs=h.getDiffParts(s.rightContent.lineContent,s.leftContent.lineContent),s.belongTo="both"):t.push({leftContent:f,rightContent:null,hasDiffs:!0,belongTo:"left"}),g+=1}o=o.replace(l,""),p.splice(i,1)}return t},[])},t.prototype.getDiffParts=function(t,n){for(var e=[],r=0,o=0,i="",l="";r<t.length;)t[r]===n[o]&&o<n.length?(""!==l&&(e.push({content:l,isDiff:!0}),l=""),i+=t[r]):(""!==i&&(e.push({content:i,isDiff:!1}),i=""),l+=t[r]),r++,o++;return""!==l?e.push({content:l,isDiff:!0}):""!==i&&e.push({content:i,isDiff:!1}),e},t.decorators=[{type:n.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[]},t.ngInjectableDef=n.defineInjectable({factory:function(){return new t},token:t,providedIn:"root"}),t}();function i(r,o){var i,l,a,t,s={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return t={next:n(0),"throw":n(1),"return":n(2)},"function"==typeof Symbol&&(t[Symbol.iterator]=function(){return this}),t;function n(n){return function(t){return function e(t){if(i)throw new TypeError("Generator is already executing.");for(;s;)try{if(i=1,l&&(a=2&t[0]?l["return"]:t[0]?l["throw"]||((a=l["return"])&&a.call(l),0):l.next)&&!(a=a.call(l,t[1])).done)return a;switch(l=0,a&&(t=[2&t[0],a.value]),t[0]){case 0:case 1:a=t;break;case 4:return s.label++,{value:t[1],done:!1};case 5:s.label++,l=t[1],t=[0];continue;case 7:t=s.ops.pop(),s.trys.pop();continue;default:if(!(a=0<(a=s.trys).length&&a[a.length-1])&&(6===t[0]||2===t[0])){s=0;continue}if(3===t[0]&&(!a||t[1]>a[0]&&t[1]<a[3])){s.label=t[1];break}if(6===t[0]&&s.label<a[1]){s.label=a[1],a=t;break}if(a&&s.label<a[2]){s.label=a[2],s.ops.push(t);break}a[2]&&s.ops.pop(),s.trys.pop();continue}t=o.call(r,s)}catch(n){t=[6,n],l=0}finally{i=a=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}([n,t])}}}var l=function(){function t(t,n){this.diff=t,this.cd=n,this.format="SideBySide",this.left="",this.right="",this.loading=!1,this.showBtnToolbar=!0,this.subscriptions=[],this.tableRows=[],this.filteredTableRows=[],this.tableRowsLineByLine=[],this.filteredTableRowsLineByLine=[],this.showLinesDiffs=!1,this.diffsCount=0,this.formatOptions=[{id:"side-by-side",name:"side-by-side",label:"Side by Side",value:"SideBySide",icon:"la-code"},{id:"line-by-line",name:"line-by-line",label:"Line by Line",value:"LineByLine",icon:"la-file-text"}]}return t.prototype.ngOnInit=function(){var n=this;this.diffContent&&this.subscriptions.push(this.diffContent.subscribe(function(t){n.left=t.leftContent,n.right=t.rightContent,n.renderDiffs().then(function(){n.cd.detectChanges()})})),this.renderDiffs().then()},t.prototype.showLinesDiffsChange=function(t){this.showLinesDiffs=t,this.showLinesDiffs?(this.filteredTableRows=this.tableRows.filter(function(t){return t.leftContent&&"-"===t.leftContent.prefix||t.rightContent&&"+"===t.rightContent.prefix}),this.filteredTableRowsLineByLine=this.tableRowsLineByLine.filter(function(t){return t.leftContent&&"-"===t.leftContent.prefix||t.rightContent&&"+"===t.rightContent.prefix})):(this.filteredTableRows=this.tableRows,this.filteredTableRowsLineByLine=this.tableRowsLineByLine)},t.prototype.setDiffTableFormat=function(t){this.format=t},t.prototype.renderDiffs=function(){return function t(n,l,a,s){return new(a||(a=Promise))(function(t,e){function r(t){try{i(s.next(t))}catch(n){e(n)}}function o(t){try{i(s["throw"](t))}catch(n){e(n)}}function i(n){n.done?t(n.value):new a(function(t){t(n.value)}).then(r,o)}i((s=s.apply(n,l||[])).next())})}(this,void 0,void 0,function(){var n;return i(this,function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),this.loading=!0,this.diffsCount=0,[4,(n=this).diff.getDiffsByLines(this.left,this.right)];case 1:return n.tableRows=t.sent(),this.tableRowsLineByLine=this.tableRows.reduce(function(t,n){return t||(t=[]),n.hasDiffs?(n.leftContent&&t.push({leftContent:n.leftContent,rightContent:null,belongTo:n.belongTo,hasDiffs:!0}),n.rightContent&&t.push({leftContent:null,rightContent:n.rightContent,belongTo:n.belongTo,hasDiffs:!0})):t.push(n),t},[]),this.diffsCount=this.tableRows.filter(function(t){return t.leftContent&&"-"===t.leftContent.prefix||t.rightContent&&"+"===t.rightContent.prefix}).length,this.filteredTableRows=this.tableRows,this.filteredTableRowsLineByLine=this.tableRowsLineByLine,this.loading=!1,[3,3];case 2:return t.sent(),[3,3];case 3:return[2]}})})},t.prototype.trackTableRows=function(t,n){return n&&n.leftContent?n.leftContent.lineContent:n&&n.rightContent?n.rightContent.lineContent:undefined},t.prototype.trackDiffs=function(t,n){return n&&n.content?n.content:undefined},t.decorators=[{type:n.Component,args:[{selector:"td-ngx-text-diff",template:'<td-loader-spinner [active]="loading"></td-loader-spinner>\r\n<div *ngIf="!loading">\r\n <div class="td-wrapper">\r\n <div class="td-toolbar-show-diff">\r\n <label class="td-checkbox-container">Show Lines with Diffs ({{diffsCount}})\r\n <input type="checkbox"\r\n id="showDiffs"\r\n [ngModel]="showLinesDiffs"\r\n (ngModelChange)="showLinesDiffsChange($event)"\r\n >\r\n <span class="checkmark"></span>\r\n </label>\r\n </div>\r\n <div class="td-toolbar-select-format" *ngIf="showBtnToolbar">\r\n <div class="td-btn-group td-btn-group-toggle" data-toggle="buttons">\r\n <button *ngFor="let option of formatOptions"\r\n [ngClass]="{\'active\': format === option.value, \'disabled\': !!option.disabled}"\r\n [name]="option.name"\r\n [id]="option.id"\r\n [disabled]="!!option.disabled"\r\n (click)="setDiffTableFormat(option.value)"\r\n >{{option.label}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class="td-table-wrapper">\r\n <div class="td-table-container side-by-side" *ngIf="format === \'SideBySide\'">\r\n <table class="td-table">\r\n <tbody>\r\n <tr *ngFor="let row of filteredTableRows; trackBy: trackTableRows">\r\n <td scope="row" class="fit-column line-number-col"\r\n [ngClass]="{\'delete-row\' : row.leftContent?.prefix === \'-\', \'empty-row\': !row.leftContent?.lineContent}">\r\n {{(row.leftContent?.lineNumber !== -1) ?\r\n row.leftContent?.lineNumber : \' \'}}\r\n </td>\r\n <td class="fit-column prefix-col"\r\n [ngClass]="{\'delete-row\' : row.leftContent?.prefix === \'-\', \'empty-row\': !row.leftContent?.lineContent}">\r\n <span>{{row.leftContent?.prefix || \' \'}}</span>\r\n </td>\r\n <td class="content-col"\r\n [ngClass]="{\'delete-row\' : row.leftContent?.prefix === \'-\', \'empty-row\': !row.leftContent?.lineContent}"\r\n *ngIf="!row.hasDiffs">\r\n <span [innerHTML]="row.leftContent?.lineContent | formatLine"></span>\r\n </td>\r\n <td class="content-col"\r\n [ngClass]="{\'delete-row\' : row.leftContent?.prefix === \'-\', \'empty-row\': !row.leftContent?.lineContent}"\r\n *ngIf="row.hasDiffs">\r\n <span [innerHTML]="diff.content | formatLine" [ngClass]="{\'highlight\': diff.isDiff}"\r\n *ngFor="let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class="td-table-container side-by-side" *ngIf="format === \'SideBySide\'">\r\n <table class="td-table">\r\n <tbody>\r\n <tr *ngFor="let row of filteredTableRows; trackBy: trackTableRows">\r\n <td scope="row" class="fit-column line-number-col"\r\n [ngClass]="{\'insert-row\' : row.rightContent?.prefix === \'+\', \'empty-row\': !row.rightContent?.lineContent}">\r\n {{(row.rightContent?.lineNumber !== -1) ?\r\n row.rightContent?.lineNumber : \' \'}}\r\n </td>\r\n <td class="fit-column prefix-col"\r\n [ngClass]="{\'insert-row\' : row.rightContent?.prefix === \'+\', \'empty-row\': !row.rightContent?.lineContent}">\r\n <span>{{row.rightContent?.prefix || \' \'}}</span>\r\n </td>\r\n <td class="content-col"\r\n [ngClass]="{\'insert-row\' : row.rightContent?.prefix === \'+\', \'empty-row\': !row.rightContent?.lineContent}"\r\n *ngIf="!row.hasDiffs">\r\n <span [innerHTML]="row.rightContent?.lineContent | formatLine"></span>\r\n </td>\r\n <td class="content-col"\r\n [ngClass]="{\'insert-row\' : row.rightContent?.prefix === \'+\', \'empty-row\': !row.rightContent?.lineContent}"\r\n *ngIf="row.hasDiffs">\r\n <span [innerHTML]="diff.content | formatLine" [ngClass]="{\'highlight\': diff.isDiff}"\r\n *ngFor="let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class="td-table-container line-by-line" *ngIf="format === \'LineByLine\'">\r\n <table class="td-table">\r\n <tbody>\r\n <tr *ngFor="let row of filteredTableRowsLineByLine; trackBy: trackTableRows">\r\n <td scope="row" class="fit-column line-number-col-left">{{row.leftContent?.lineNumber}}</td>\r\n <td scope="row" class="fit-column line-number-col">{{row.rightContent?.lineNumber}}</td>\r\n <td class="fit-column prefix-col"\r\n [ngClass]="{\'delete-row\' : row.leftContent?.prefix === \'-\', \'insert-row\' : row.rightContent?.prefix === \'+\'}">\r\n <span>{{row.leftContent?.prefix || row.rightContent?.prefix || \' \'}}</span>\r\n </td>\r\n <td class="content-col"\r\n [ngClass]="{\'delete-row\' : row.leftContent?.prefix === \'-\', \'insert-row\' : row.rightContent?.prefix === \'+\'}"\r\n *ngIf="!row.hasDiffs">\r\n <span [innerHTML]="row.leftContent?.lineContent | formatLine"></span>\r\n </td>\r\n <td class="content-col"\r\n [ngClass]="{\'delete-row\' : row.leftContent?.prefix === \'-\', \'insert-row\' : row.rightContent?.prefix === \'+\'}"\r\n *ngIf="row.hasDiffs && row.leftContent && row.leftContent?.lineDiffs.length !== 0">\r\n <span [innerHTML]="diff.content | formatLine" [ngClass]="{\'highlight\': diff.isDiff}"\r\n *ngFor="let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs"></span>\r\n </td>\r\n <td class="content-col"\r\n [ngClass]="{\'delete-row\' : row.leftContent?.prefix === \'-\', \'insert-row\' : row.rightContent?.prefix === \'+\'}"\r\n *ngIf="row.hasDiffs && row.rightContent && row.rightContent?.lineDiffs.length !== 0">\r\n <span [innerHTML]="diff.content | formatLine" [ngClass]="{\'highlight\': diff.isDiff}"\r\n *ngFor="let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n',styles:[".td-wrapper{display:-ms-grid;display:grid;width:100%;grid-row-gap:10px;-ms-grid-columns:([col] 50%)[2];grid-template-columns:repeat(2,[col] 50%);-ms-grid-rows:([row] auto)[2];grid-template-rows:repeat(2,[row] auto);background-color:#fff;color:#444}.td-toolbar-show-diff{-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1}.td-toolbar-select-format{margin-left:auto;-ms-grid-column:2;grid-column:2;-ms-grid-row:1;grid-row:1}.td-table-container{-ms-grid-column:1;-ms-grid-column-span:1;grid-column:1/2;-ms-grid-row:2;grid-row:2;width:100%;max-width:100%;overflow-x:auto}.td-table-wrapper{display:flex;width:200%}.td-table{border:1px solid #a9a9a9;max-height:50vh;width:100%;max-width:100%}.fit-column{width:1px;white-space:nowrap}.line-number-col{border-right:1px solid #ddd;color:#999;text-align:right;background-color:#f7f7f7;padding-left:10px;padding-right:10px;font-size:87.5%}.line-number-col-left{color:#999;padding-left:10px;padding-right:10px;text-align:right;background-color:#f7f7f7;font-size:87.5%}.insert-row,.insert-row>.line-number-col{background-color:#dfd;border-color:#b4e2b4}.delete-row,.delete-row>.line-number-col{background-color:#fee8e9;border-color:#e9aeae}.empty-row{background-color:#f7f7f7;height:24px}.td-table td{border-top:0;padding-top:0;padding-bottom:0;white-space:nowrap;max-width:50%}pre{margin-bottom:0}td.content-col{padding:0;margin:0;line-height:24px}td.prefix-col{padding-left:10px;padding-right:10px;line-height:24px}.td-btn-group{border-radius:4px}.td-btn-group button{background-color:rgba(23,162,184,.7);border:1px solid #17a2b8;color:#fff;cursor:pointer;float:left}.td-btn-group button:not(:last-child){border-right:none}.td-btn-group button:first-child{-webkit-border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-bottomleft:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.td-btn-group button:last-child{-webkit-border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;border-top-right-radius:4px;border-bottom-right-radius:4px}.td-btn-group:after{content:'';clear:both;display:table}.td-btn-group button.active,.td-btn-group button:hover{background-color:#17a2b8}.td-checkbox-container{display:block;position:relative;padding-left:21px;margin-bottom:0;cursor:pointer;font-size:16px;line-height:28px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.td-checkbox-container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.checkmark{position:absolute;top:7px;left:0;height:16px;width:16px;background-color:#eee}.td-checkbox-container:hover input~.checkmark{background-color:#ccc}.td-checkbox-container input:checked~.checkmark{background-color:#17a2b8}.checkmark:after{content:\"\";position:absolute;display:none}.td-checkbox-container input:checked~.checkmark:after{display:block}.td-checkbox-container .checkmark:after{left:5px;top:3px;width:5px;height:10px;border:solid #fff;border-width:0 3px 3px 0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.insert-row>.highlight{background-color:#acf2bd!important}.delete-row>.highlight{background-color:#fdb8c0!important}"]}]}],t.ctorParameters=function(){return[{type:o},{type:n.ChangeDetectorRef}]},t.propDecorators={format:[{type:n.Input}],left:[{type:n.Input}],right:[{type:n.Input}],diffContent:[{type:n.Input}],loading:[{type:n.Input}],showBtnToolbar:[{type:n.Input}]},t}(),a=function(){function t(){this.active=!1}return t.prototype.ngOnInit=function(){},t.decorators=[{type:n.Component,args:[{selector:"td-loader-spinner",template:'<div class="td-loading-roller" *ngIf="active">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n</div>\n',styles:['.td-loading-roller{display:inline-block;position:relative;width:64px;height:64px}.td-loading-roller div{-webkit-animation:1.2s cubic-bezier(.5,0,.5,1) infinite lds-roller;animation:1.2s cubic-bezier(.5,0,.5,1) infinite lds-roller;-webkit-transform-origin:32px 32px;transform-origin:32px 32px}.td-loading-roller div:after{content:" ";display:block;position:absolute;width:6px;height:6px;border-radius:50%;background:#000;margin:-3px 0 0 -3px}.td-loading-roller div:nth-child(1){-webkit-animation-delay:-36ms;animation-delay:-36ms}.td-loading-roller div:nth-child(1):after{top:50px;left:50px}.td-loading-roller div:nth-child(2){-webkit-animation-delay:-72ms;animation-delay:-72ms}.td-loading-roller div:nth-child(2):after{top:54px;left:45px}.td-loading-roller div:nth-child(3){-webkit-animation-delay:-108ms;animation-delay:-108ms}.td-loading-roller div:nth-child(3):after{top:57px;left:39px}.td-loading-roller div:nth-child(4){-webkit-animation-delay:-144ms;animation-delay:-144ms}.td-loading-roller div:nth-child(4):after{top:58px;left:32px}.td-loading-roller div:nth-child(5){-webkit-animation-delay:-.18s;animation-delay:-.18s}.td-loading-roller div:nth-child(5):after{top:57px;left:25px}.td-loading-roller div:nth-child(6){-webkit-animation-delay:-216ms;animation-delay:-216ms}.td-loading-roller div:nth-child(6):after{top:54px;left:19px}.td-loading-roller div:nth-child(7){-webkit-animation-delay:-252ms;animation-delay:-252ms}.td-loading-roller div:nth-child(7):after{top:50px;left:14px}.td-loading-roller div:nth-child(8){-webkit-animation-delay:-288ms;animation-delay:-288ms}.td-loading-roller div:nth-child(8):after{top:45px;left:10px}@-webkit-keyframes lds-roller{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes lds-roller{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}']}]}],t.ctorParameters=function(){return[]},t.propDecorators={active:[{type:n.Input}]},t}(),s=function(){function t(){}return t.prototype.transform=function(t,n){return t?(n&&n.length,t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/ /g,"&nbsp;")):" "},t.decorators=[{type:n.Pipe,args:[{name:"formatLine"}]}],t}(),f=function(){function t(){}return t.decorators=[{type:n.NgModule,args:[{imports:[e.CommonModule,r.FormsModule],declarations:[l,a,s],exports:[l]}]}],t}();t.NgxTextDiffService=o,t.NgxTextDiffComponent=l,t.NgxTextDiffModule=f,t.ɵb=s,t.ɵa=a,Object.defineProperty(t,"__esModule",{value:!0})});
//# sourceMappingURL=ngx-text-diff.umd.min.js.map

@@ -50,4 +50,4 @@ /**

ngOnInit() {
if (this.diffContentObservable$) {
this.subscriptions.push(this.diffContentObservable$.subscribe(content => {
if (this.diffContent) {
this.subscriptions.push(this.diffContent.subscribe(content => {
this.left = content.leftContent;

@@ -148,3 +148,3 @@ this.right = content.rightContent;

selector: 'td-ngx-text-diff',
template: "<td-loader-sppiner [active]=\"loading\"></td-loader-sppiner>\r\n<div *ngIf=\"!loading\">\r\n <div class=\"td-wrapper\">\r\n <div class=\"td-toolbar-show-diff\">\r\n <label class=\"td-checkbox-container\">Show Lines with Diffs ({{diffsCount}})\r\n <input type=\"checkbox\"\r\n id=\"showDiffs\"\r\n [ngModel]=\"showLinesDiffs\"\r\n (ngModelChange)=\"showLinesDiffsChange($event)\"\r\n >\r\n <span class=\"checkmark\"></span>\r\n </label>\r\n </div>\r\n <div class=\"td-toolbar-select-format\" *ngIf=\"showBtnToolbar\">\r\n <div class=\"td-btn-group td-btn-group-toggle\" data-toggle=\"buttons\">\r\n <button *ngFor=\"let option of formatOptions\"\r\n [ngClass]=\"{'active': format === option.value, 'disabled': !!option.disabled}\"\r\n [name]=\"option.name\"\r\n [id]=\"option.id\"\r\n [disabled]=\"!!option.disabled\"\r\n (click)=\"setDiffTableFormat(option.value)\"\r\n >{{option.label}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"td-table-wrapper\">\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n {{(row.leftContent?.lineNumber !== -1) ?\r\n row.leftContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n <span>{{row.leftContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n {{(row.rightContent?.lineNumber !== -1) ?\r\n row.rightContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n <span>{{row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.rightContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container line-by-line\" *ngIf=\"format === 'LineByLine'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRowsLineByLine; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col-left\">{{row.leftContent?.lineNumber}}</td>\r\n <td scope=\"row\" class=\"fit-column line-number-col\">{{row.rightContent?.lineNumber}}</td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\">\r\n <span>{{row.leftContent?.prefix || row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.leftContent && row.leftContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.rightContent && row.rightContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
template: "<td-loader-spinner [active]=\"loading\"></td-loader-spinner>\r\n<div *ngIf=\"!loading\">\r\n <div class=\"td-wrapper\">\r\n <div class=\"td-toolbar-show-diff\">\r\n <label class=\"td-checkbox-container\">Show Lines with Diffs ({{diffsCount}})\r\n <input type=\"checkbox\"\r\n id=\"showDiffs\"\r\n [ngModel]=\"showLinesDiffs\"\r\n (ngModelChange)=\"showLinesDiffsChange($event)\"\r\n >\r\n <span class=\"checkmark\"></span>\r\n </label>\r\n </div>\r\n <div class=\"td-toolbar-select-format\" *ngIf=\"showBtnToolbar\">\r\n <div class=\"td-btn-group td-btn-group-toggle\" data-toggle=\"buttons\">\r\n <button *ngFor=\"let option of formatOptions\"\r\n [ngClass]=\"{'active': format === option.value, 'disabled': !!option.disabled}\"\r\n [name]=\"option.name\"\r\n [id]=\"option.id\"\r\n [disabled]=\"!!option.disabled\"\r\n (click)=\"setDiffTableFormat(option.value)\"\r\n >{{option.label}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"td-table-wrapper\">\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n {{(row.leftContent?.lineNumber !== -1) ?\r\n row.leftContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n <span>{{row.leftContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n {{(row.rightContent?.lineNumber !== -1) ?\r\n row.rightContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n <span>{{row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.rightContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container line-by-line\" *ngIf=\"format === 'LineByLine'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRowsLineByLine; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col-left\">{{row.leftContent?.lineNumber}}</td>\r\n <td scope=\"row\" class=\"fit-column line-number-col\">{{row.rightContent?.lineNumber}}</td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\">\r\n <span>{{row.leftContent?.prefix || row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.leftContent && row.leftContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.rightContent && row.rightContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
styles: [".td-wrapper{display:-ms-grid;display:grid;width:100%;grid-row-gap:10px;-ms-grid-columns:([col] 50%)[2];grid-template-columns:repeat(2,[col] 50%);-ms-grid-rows:([row] auto)[2];grid-template-rows:repeat(2,[row] auto);background-color:#fff;color:#444}.td-toolbar-show-diff{-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1}.td-toolbar-select-format{margin-left:auto;-ms-grid-column:2;grid-column:2;-ms-grid-row:1;grid-row:1}.td-table-container{-ms-grid-column:1;-ms-grid-column-span:1;grid-column:1/2;-ms-grid-row:2;grid-row:2;width:100%;max-width:100%;overflow-x:auto}.td-table-wrapper{display:flex;width:200%}.td-table{border:1px solid #a9a9a9;max-height:50vh;width:100%;max-width:100%}.fit-column{width:1px;white-space:nowrap}.line-number-col{border-right:1px solid #ddd;color:#999;text-align:right;background-color:#f7f7f7;padding-left:10px;padding-right:10px;font-size:87.5%}.line-number-col-left{color:#999;padding-left:10px;padding-right:10px;text-align:right;background-color:#f7f7f7;font-size:87.5%}.insert-row,.insert-row>.line-number-col{background-color:#dfd;border-color:#b4e2b4}.delete-row,.delete-row>.line-number-col{background-color:#fee8e9;border-color:#e9aeae}.empty-row{background-color:#f7f7f7;height:24px}.td-table td{border-top:0;padding-top:0;padding-bottom:0;white-space:nowrap;max-width:50%}pre{margin-bottom:0}td.content-col{padding:0;margin:0;line-height:24px}td.prefix-col{padding-left:10px;padding-right:10px;line-height:24px}.td-btn-group{border-radius:4px}.td-btn-group button{background-color:rgba(23,162,184,.7);border:1px solid #17a2b8;color:#fff;cursor:pointer;float:left}.td-btn-group button:not(:last-child){border-right:none}.td-btn-group button:first-child{-webkit-border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-bottomleft:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.td-btn-group button:last-child{-webkit-border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;border-top-right-radius:4px;border-bottom-right-radius:4px}.td-btn-group:after{content:'';clear:both;display:table}.td-btn-group button.active,.td-btn-group button:hover{background-color:#17a2b8}.td-checkbox-container{display:block;position:relative;padding-left:21px;margin-bottom:0;cursor:pointer;font-size:16px;line-height:28px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.td-checkbox-container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.checkmark{position:absolute;top:7px;left:0;height:16px;width:16px;background-color:#eee}.td-checkbox-container:hover input~.checkmark{background-color:#ccc}.td-checkbox-container input:checked~.checkmark{background-color:#17a2b8}.checkmark:after{content:\"\";position:absolute;display:none}.td-checkbox-container input:checked~.checkmark:after{display:block}.td-checkbox-container .checkmark:after{left:5px;top:3px;width:5px;height:10px;border:solid #fff;border-width:0 3px 3px 0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.insert-row>.highlight{background-color:#acf2bd!important}.delete-row>.highlight{background-color:#fdb8c0!important}"]

@@ -162,4 +162,4 @@ }] }

right: [{ type: Input }],
diffContent: [{ type: Input }],
loading: [{ type: Input }],
diffContentObservable$: [{ type: Input }],
showBtnToolbar: [{ type: Input }]

@@ -175,6 +175,6 @@ };

/** @type {?} */
NgxTextDiffComponent.prototype.diffContent;
/** @type {?} */
NgxTextDiffComponent.prototype.loading;
/** @type {?} */
NgxTextDiffComponent.prototype.diffContentObservable$;
/** @type {?} */
NgxTextDiffComponent.prototype.showBtnToolbar;

@@ -203,2 +203,2 @@ /** @type {?} */

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdGV4dC1kaWZmLyIsInNvdXJjZXMiOlsibGliL25neC10ZXh0LWRpZmYuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFPaEQsTUFBTTs7Ozs7SUFnQ0osWUFBb0IsSUFBd0IsRUFBVSxFQUFxQjtRQUF2RCxTQUFJLEdBQUosSUFBSSxDQUFvQjtRQUFVLE9BQUUsR0FBRixFQUFFLENBQW1CO3NCQS9CeEMsWUFBWTtvQkFDL0IsRUFBRTtxQkFDRCxFQUFFO3VCQUNBLEtBQUs7OEJBRUUsSUFBSTs2QkFDRSxFQUFFO3lCQUNBLEVBQUU7aUNBQ00sRUFBRTttQ0FDQSxFQUFFOzJDQUNNLEVBQUU7OEJBQ3JDLEtBQUs7MEJBQ1QsQ0FBQzs2QkFFMkI7WUFDdkM7Z0JBQ0UsRUFBRSxFQUFFLGNBQWM7Z0JBQ2xCLElBQUksRUFBRSxjQUFjO2dCQUNwQixLQUFLLEVBQUUsY0FBYztnQkFDckIsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLElBQUksRUFBRSxTQUFTO2FBQ2hCO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLGNBQWM7Z0JBQ2xCLElBQUksRUFBRSxjQUFjO2dCQUNwQixLQUFLLEVBQUUsY0FBYztnQkFDckIsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLElBQUksRUFBRSxjQUFjO2FBQ3JCO1NBQ0Y7S0FFOEU7Ozs7SUFFL0UsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsc0JBQXNCLENB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USxFQUFFLGtCQUFrQjtnQkFDNUIsdWlOQUE2Qzs7YUFFOUM7Ozs7WUFQUSxrQkFBa0I7WUFGbEIsaUJBQWlCOzs7cUJBV3ZCLEtBQUs7bUJBQ0wsS0FBSztvQkFDTCxLQUFLO3NCQUNMLEtBQUs7cUNBQ0wsS0FBSzs2QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEaWZmQ29udGVudCwgRGlmZkxpbmVSZXN1bHQsIERpZmZQYXJ0LCBEaWZmVGFibGVGb3JtYXQsIERpZmZUYWJsZUZvcm1hdE9wdGlvbiwgRGlmZlRhYmxlUm93UmVzdWx0IH0gZnJvbSAnLi9uZ3gtdGV4dC1kaWZmLm1vZGVsJztcclxuaW1wb3J0IHsgTmd4VGV4dERpZmZTZXJ2aWNlIH0gZnJvbSAnLi9uZ3gtdGV4dC1kaWZmLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGQtbmd4LXRleHQtZGlmZicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25neC10ZXh0LWRpZmYuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25neC10ZXh0LWRpZmYuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hUZXh0RGlmZkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZm9ybWF0OiBEaWZmVGFibGVGb3JtYXQgPSAnU2lkZUJ5U2lkZSc7XHJcbiAgQElucHV0KCkgbGVmdCA9ICcnO1xyXG4gIEBJbnB1dCgpIHJpZ2h0ID0gJyc7XHJcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRpZmZDb250ZW50T2JzZXJ2YWJsZSQ6IE9ic2VydmFibGU8RGlmZkNvbnRlbnQ+O1xyXG4gIEBJbnB1dCgpIHNob3dCdG5Ub29sYmFyID0gdHJ1ZTtcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHRhYmxlUm93czogRGlmZlRhYmxlUm93UmVzdWx0W10gPSBbXTtcclxuICBmaWx0ZXJlZFRhYmxlUm93czogRGlmZlRhYmxlUm93UmVzdWx0W10gPSBbXTtcclxuICB0YWJsZVJvd3NMaW5lQnlMaW5lOiBEaWZmVGFibGVSb3dSZXN1bHRbXSA9IFtdO1xyXG4gIGZpbHRlcmVkVGFibGVSb3dzTGluZUJ5TGluZTogRGlmZlRhYmxlUm93UmVzdWx0W10gPSBbXTtcclxuICBzaG93TGluZXNEaWZmcyA9IGZhbHNlO1xyXG4gIGRpZmZzQ291bnQgPSAwO1xyXG5cclxuICBmb3JtYXRPcHRpb25zOiBEaWZmVGFibGVGb3JtYXRPcHRpb25bXSA9IFtcclxuICAgIHtcclxuICAgICAgaWQ6ICdzaWRlLWJ5LXNpZGUnLFxyXG4gICAgICBuYW1lOiAnc2lkZS1ieS1zaWRlJyxcclxuICAgICAgbGFiZWw6ICdTaWRlIGJ5IFNpZGUnLFxyXG4gICAgICB2YWx1ZTogJ1NpZGVCeVNpZGUnLFxyXG4gICAgICBpY29uOiAnbGEtY29kZSdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiAnbGluZS1ieS1saW5lJyxcclxuICAgICAgbmFtZTogJ2xpbmUtYnktbGluZScsXHJcbiAgICAgIGxhYmVsOiAnTGluZSBieSBMaW5lJyxcclxuICAgICAgdmFsdWU6ICdMaW5lQnlMaW5lJyxcclxuICAgICAgaWNvbjogJ2xhLWZpbGUtdGV4dCdcclxuICAgIH1cclxuICBdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpZmY6IE5neFRleHREaWZmU2VydmljZSwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZGlmZkNvbnRlbnRPYnNlcnZhYmxlJCkge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmRpZmZDb250ZW50T2JzZXJ2YWJsZSQuc3Vic2NyaWJlKGNvbnRlbnQgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sZWZ0ID0gY29udGVudC5sZWZ0Q29udGVudDtcclxuICAgICAgICAgIHRoaXMucmlnaHQgPSBjb250ZW50LnJpZ2h0Q29udGVudDtcclxuICAgICAgICAgIHRoaXMucmVuZGVyRGlmZnMoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZW5kZXJEaWZmcygpLnRoZW4oKTtcclxuICB9XHJcblxyXG4gIHNob3dMaW5lc0RpZmZzQ2hhbmdlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNob3dMaW5lc0RpZmZzID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5zaG93TGluZXNEaWZmcykge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkVGFibGVSb3dzID0gdGhpcy50YWJsZVJvd3MuZmlsdGVyKFxyXG4gICAgICAgIHJvdyA9PiAocm93LmxlZnRDb250ZW50ICYmIHJvdy5sZWZ0Q29udGVudC5wcmVmaXggPT09ICctJykgfHwgKHJvdy5yaWdodENvbnRlbnQgJiYgcm93LnJpZ2h0Q29udGVudC5wcmVmaXggPT09ICcrJylcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5maWx0ZXJlZFRhYmxlUm93c0xpbmVCeUxpbmUgPSB0aGlzLnRhYmxlUm93c0xpbmVCeUxpbmUuZmlsdGVyKFxyXG4gICAgICAgIHJvdyA9PiAocm93LmxlZnRDb250ZW50ICYmIHJvdy5sZWZ0Q29udGVudC5wcmVmaXggPT09ICctJykgfHwgKHJvdy5yaWdodENvbnRlbnQgJiYgcm93LnJpZ2h0Q29udGVudC5wcmVmaXggPT09ICcrJylcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3MgPSB0aGlzLnRhYmxlUm93cztcclxuICAgICAgdGhpcy5maWx0ZXJlZFRhYmxlUm93c0xpbmVCeUxpbmUgPSB0aGlzLnRhYmxlUm93c0xpbmVCeUxpbmU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREaWZmVGFibGVGb3JtYXQoZm9ybWF0OiBEaWZmVGFibGVGb3JtYXQpIHtcclxuICAgIHRoaXMuZm9ybWF0ID0gZm9ybWF0O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVuZGVyRGlmZnMoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRpZmZzQ291bnQgPSAwO1xyXG4gICAgICB0aGlzLnRhYmxlUm93cyA9IGF3YWl0IHRoaXMuZGlmZi5nZXREaWZmc0J5TGluZXModGhpcy5sZWZ0LCB0aGlzLnJpZ2h0KTtcclxuICAgICAgdGhpcy50YWJsZVJvd3NMaW5lQnlMaW5lID0gdGhpcy50YWJsZVJvd3MucmVkdWNlKCh0YWJsZUxpbmVCeUxpbmU6IERpZmZUYWJsZVJvd1Jlc3VsdFtdLCByb3c6IERpZmZUYWJsZVJvd1Jlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmICghdGFibGVMaW5lQnlMaW5lKSB7XHJcbiAgICAgICAgICB0YWJsZUxpbmVCeUxpbmUgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJvdy5oYXNEaWZmcykge1xyXG4gICAgICAgICAgaWYgKHJvdy5sZWZ0Q29udGVudCkge1xyXG4gICAgICAgICAgICB0YWJsZUxpbmVCeUxpbmUucHVzaCh7XHJcbiAgICAgICAgICAgICAgbGVmdENvbnRlbnQ6IHJvdy5sZWZ0Q29udGVudCxcclxuICAgICAgICAgICAgICByaWdodENvbnRlbnQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgYmVsb25nVG86IHJvdy5iZWxvbmdUbyxcclxuICAgICAgICAgICAgICBoYXNEaWZmczogdHJ1ZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyb3cucmlnaHRDb250ZW50KSB7XHJcbiAgICAgICAgICAgIHRhYmxlTGluZUJ5TGluZS5wdXNoKHtcclxuICAgICAgICAgICAgICBsZWZ0Q29udGVudDogbnVsbCxcclxuICAgICAgICAgICAgICByaWdodENvbnRlbnQ6IHJvdy5yaWdodENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgYmVsb25nVG86IHJvdy5iZWxvbmdUbyxcclxuICAgICAgICAgICAgICBoYXNEaWZmczogdHJ1ZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGFibGVMaW5lQnlMaW5lLnB1c2gocm93KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0YWJsZUxpbmVCeUxpbmU7XHJcbiAgICAgIH0sIFtdKTtcclxuICAgICAgdGhpcy5kaWZmc0NvdW50ID0gdGhpcy50YWJsZVJvd3MuZmlsdGVyKFxyXG4gICAgICAgIHJvdyA9PiAocm93LmxlZnRDb250ZW50ICYmIHJvdy5sZWZ0Q29udGVudC5wcmVmaXggPT09ICctJykgfHwgKHJvdy5yaWdodENvbnRlbnQgJiYgcm93LnJpZ2h0Q29udGVudC5wcmVmaXggPT09ICcrJylcclxuICAgICAgKS5sZW5ndGg7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3MgPSB0aGlzLnRhYmxlUm93cztcclxuICAgICAgdGhpcy5maWx0ZXJlZFRhYmxlUm93c0xpbmVCeUxpbmUgPSB0aGlzLnRhYmxlUm93c0xpbmVCeUxpbmU7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSBjYXRjaCAoZSkge31cclxuICB9XHJcblxyXG4gIHRyYWNrVGFibGVSb3dzKGluZGV4LCByb3c6IERpZmZUYWJsZVJvd1Jlc3VsdCkge1xyXG4gICAgcmV0dXJuIHJvdyAmJiByb3cubGVmdENvbnRlbnQgPyByb3cubGVmdENvbnRlbnQubGluZUNvbnRlbnQgOiByb3cgJiYgcm93LnJpZ2h0Q29udGVudCA/IHJvdy5yaWdodENvbnRlbnQubGluZUNvbnRlbnQgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICB0cmFja0RpZmZzKGluZGV4LCBkaWZmOiBEaWZmUGFydCkge1xyXG4gICAgcmV0dXJuIGRpZmYgJiYgZGlmZi5jb250ZW50ID8gZGlmZi5jb250ZW50IDogdW5kZWZpbmVkO1xyXG4gIH1cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdGV4dC1kaWZmLyIsInNvdXJjZXMiOlsibGliL25neC10ZXh0LWRpZmYuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFPaEQsTUFBTTs7Ozs7SUFnQ0osWUFBb0IsSUFBd0IsRUFBVSxFQUFxQjtRQUF2RCxTQUFJLEdBQUosSUFBSSxDQUFvQjtRQUFVLE9BQUUsR0FBRixFQUFFLENBQW1CO3NCQS9CeEMsWUFBWTtvQkFDL0IsRUFBRTtxQkFDRCxFQUFFO3VCQUVBLEtBQUs7OEJBQ0UsSUFBSTs2QkFDRSxFQUFFO3lCQUNBLEVBQUU7aUNBQ00sRUFBRTttQ0FDQSxFQUFFOzJDQUNNLEVBQUU7OEJBQ3JDLEtBQUs7MEJBQ1QsQ0FBQzs2QkFFMkI7WUFDdkM7Z0JBQ0UsRUFBRSxFQUFFLGNBQWM7Z0JBQ2xCLElBQUksRUFBRSxjQUFjO2dCQUNwQixLQUFLLEVBQUUsY0FBYztnQkFDckIsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLElBQUksRUFBRSxTQUFTO2FBQ2hCO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLGNBQWM7Z0JBQ2xCLElBQUksRUFBRSxjQUFjO2dCQUNwQixLQUFLLEVBQUUsY0FBYztnQkFDckIsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLElBQUksRUFBRSxjQUFjO2FBQ3JCO1NBQ0Y7S0FFOEU7Ozs7SUFFL0UsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxT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QUUsa0JBQWtCO2dCQUM1Qix1aU5BQTZDOzthQUU5Qzs7OztZQVBRLGtCQUFrQjtZQUZsQixpQkFBaUI7OztxQkFXdkIsS0FBSzttQkFDTCxLQUFLO29CQUNMLEtBQUs7MEJBQ0wsS0FBSztzQkFDTCxLQUFLOzZCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERpZmZDb250ZW50LCBEaWZmUGFydCwgRGlmZlRhYmxlRm9ybWF0LCBEaWZmVGFibGVGb3JtYXRPcHRpb24sIERpZmZUYWJsZVJvd1Jlc3VsdCB9IGZyb20gJy4vbmd4LXRleHQtZGlmZi5tb2RlbCc7XHJcbmltcG9ydCB7IE5neFRleHREaWZmU2VydmljZSB9IGZyb20gJy4vbmd4LXRleHQtZGlmZi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RkLW5neC10ZXh0LWRpZmYnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtdGV4dC1kaWZmLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9uZ3gtdGV4dC1kaWZmLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4VGV4dERpZmZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGZvcm1hdDogRGlmZlRhYmxlRm9ybWF0ID0gJ1NpZGVCeVNpZGUnO1xyXG4gIEBJbnB1dCgpIGxlZnQgPSAnJztcclxuICBASW5wdXQoKSByaWdodCA9ICcnO1xyXG4gIEBJbnB1dCgpIGRpZmZDb250ZW50OiBPYnNlcnZhYmxlPERpZmZDb250ZW50PjtcclxuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0J0blRvb2xiYXIgPSB0cnVlO1xyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgdGFibGVSb3dzOiBEaWZmVGFibGVSb3dSZXN1bHRbXSA9IFtdO1xyXG4gIGZpbHRlcmVkVGFibGVSb3dzOiBEaWZmVGFibGVSb3dSZXN1bHRbXSA9IFtdO1xyXG4gIHRhYmxlUm93c0xpbmVCeUxpbmU6IERpZmZUYWJsZVJvd1Jlc3VsdFtdID0gW107XHJcbiAgZmlsdGVyZWRUYWJsZVJvd3NMaW5lQnlMaW5lOiBEaWZmVGFibGVSb3dSZXN1bHRbXSA9IFtdO1xyXG4gIHNob3dMaW5lc0RpZmZzID0gZmFsc2U7XHJcbiAgZGlmZnNDb3VudCA9IDA7XHJcblxyXG4gIGZvcm1hdE9wdGlvbnM6IERpZmZUYWJsZUZvcm1hdE9wdGlvbltdID0gW1xyXG4gICAge1xyXG4gICAgICBpZDogJ3NpZGUtYnktc2lkZScsXHJcbiAgICAgIG5hbWU6ICdzaWRlLWJ5LXNpZGUnLFxyXG4gICAgICBsYWJlbDogJ1NpZGUgYnkgU2lkZScsXHJcbiAgICAgIHZhbHVlOiAnU2lkZUJ5U2lkZScsXHJcbiAgICAgIGljb246ICdsYS1jb2RlJ1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6ICdsaW5lLWJ5LWxpbmUnLFxyXG4gICAgICBuYW1lOiAnbGluZS1ieS1saW5lJyxcclxuICAgICAgbGFiZWw6ICdMaW5lIGJ5IExpbmUnLFxyXG4gICAgICB2YWx1ZTogJ0xpbmVCeUxpbmUnLFxyXG4gICAgICBpY29uOiAnbGEtZmlsZS10ZXh0J1xyXG4gICAgfVxyXG4gIF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlmZjogTmd4VGV4dERpZmZTZXJ2aWNlLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5kaWZmQ29udGVudCkge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmRpZmZDb250ZW50LnN1YnNjcmliZShjb250ZW50ID0+IHtcclxuICAgICAgICAgIHRoaXMubGVmdCA9IGNvbnRlbnQubGVmdENvbnRlbnQ7XHJcbiAgICAgICAgICB0aGlzLnJpZ2h0ID0gY29udGVudC5yaWdodENvbnRlbnQ7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckRpZmZzKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMucmVuZGVyRGlmZnMoKS50aGVuKCk7XHJcbiAgfVxyXG5cclxuICBzaG93TGluZXNEaWZmc0NoYW5nZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zaG93TGluZXNEaWZmcyA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMuc2hvd0xpbmVzRGlmZnMpIHtcclxuICAgICAgdGhpcy5maWx0ZXJlZFRhYmxlUm93cyA9IHRoaXMudGFibGVSb3dzLmZpbHRlcihcclxuICAgICAgICByb3cgPT4gKHJvdy5sZWZ0Q29udGVudCAmJiByb3cubGVmdENvbnRlbnQucHJlZml4ID09PSAnLScpIHx8IChyb3cucmlnaHRDb250ZW50ICYmIHJvdy5yaWdodENvbnRlbnQucHJlZml4ID09PSAnKycpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3NMaW5lQnlMaW5lID0gdGhpcy50YWJsZVJvd3NMaW5lQnlMaW5lLmZpbHRlcihcclxuICAgICAgICByb3cgPT4gKHJvdy5sZWZ0Q29udGVudCAmJiByb3cubGVmdENvbnRlbnQucHJlZml4ID09PSAnLScpIHx8IChyb3cucmlnaHRDb250ZW50ICYmIHJvdy5yaWdodENvbnRlbnQucHJlZml4ID09PSAnKycpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkVGFibGVSb3dzID0gdGhpcy50YWJsZVJvd3M7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3NMaW5lQnlMaW5lID0gdGhpcy50YWJsZVJvd3NMaW5lQnlMaW5lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGlmZlRhYmxlRm9ybWF0KGZvcm1hdDogRGlmZlRhYmxlRm9ybWF0KSB7XHJcbiAgICB0aGlzLmZvcm1hdCA9IGZvcm1hdDtcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlbmRlckRpZmZzKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaWZmc0NvdW50ID0gMDtcclxuICAgICAgdGhpcy50YWJsZVJvd3MgPSBhd2FpdCB0aGlzLmRpZmYuZ2V0RGlmZnNCeUxpbmVzKHRoaXMubGVmdCwgdGhpcy5yaWdodCk7XHJcbiAgICAgIHRoaXMudGFibGVSb3dzTGluZUJ5TGluZSA9IHRoaXMudGFibGVSb3dzLnJlZHVjZSgodGFibGVMaW5lQnlMaW5lOiBEaWZmVGFibGVSb3dSZXN1bHRbXSwgcm93OiBEaWZmVGFibGVSb3dSZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAoIXRhYmxlTGluZUJ5TGluZSkge1xyXG4gICAgICAgICAgdGFibGVMaW5lQnlMaW5lID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyb3cuaGFzRGlmZnMpIHtcclxuICAgICAgICAgIGlmIChyb3cubGVmdENvbnRlbnQpIHtcclxuICAgICAgICAgICAgdGFibGVMaW5lQnlMaW5lLnB1c2goe1xyXG4gICAgICAgICAgICAgIGxlZnRDb250ZW50OiByb3cubGVmdENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgcmlnaHRDb250ZW50OiBudWxsLFxyXG4gICAgICAgICAgICAgIGJlbG9uZ1RvOiByb3cuYmVsb25nVG8sXHJcbiAgICAgICAgICAgICAgaGFzRGlmZnM6IHRydWVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocm93LnJpZ2h0Q29udGVudCkge1xyXG4gICAgICAgICAgICB0YWJsZUxpbmVCeUxpbmUucHVzaCh7XHJcbiAgICAgICAgICAgICAgbGVmdENvbnRlbnQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgcmlnaHRDb250ZW50OiByb3cucmlnaHRDb250ZW50LFxyXG4gICAgICAgICAgICAgIGJlbG9uZ1RvOiByb3cuYmVsb25nVG8sXHJcbiAgICAgICAgICAgICAgaGFzRGlmZnM6IHRydWVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRhYmxlTGluZUJ5TGluZS5wdXNoKHJvdyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGFibGVMaW5lQnlMaW5lO1xyXG4gICAgICB9LCBbXSk7XHJcbiAgICAgIHRoaXMuZGlmZnNDb3VudCA9IHRoaXMudGFibGVSb3dzLmZpbHRlcihcclxuICAgICAgICByb3cgPT4gKHJvdy5sZWZ0Q29udGVudCAmJiByb3cubGVmdENvbnRlbnQucHJlZml4ID09PSAnLScpIHx8IChyb3cucmlnaHRDb250ZW50ICYmIHJvdy5yaWdodENvbnRlbnQucHJlZml4ID09PSAnKycpXHJcbiAgICAgICkubGVuZ3RoO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkVGFibGVSb3dzID0gdGhpcy50YWJsZVJvd3M7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3NMaW5lQnlMaW5lID0gdGhpcy50YWJsZVJvd3NMaW5lQnlMaW5lO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0gY2F0Y2ggKGUpIHt9XHJcbiAgfVxyXG5cclxuICB0cmFja1RhYmxlUm93cyhpbmRleCwgcm93OiBEaWZmVGFibGVSb3dSZXN1bHQpIHtcclxuICAgIHJldHVybiByb3cgJiYgcm93LmxlZnRDb250ZW50ID8gcm93LmxlZnRDb250ZW50LmxpbmVDb250ZW50IDogcm93ICYmIHJvdy5yaWdodENvbnRlbnQgPyByb3cucmlnaHRDb250ZW50LmxpbmVDb250ZW50IDogdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tEaWZmcyhpbmRleCwgZGlmZjogRGlmZlBhcnQpIHtcclxuICAgIHJldHVybiBkaWZmICYmIGRpZmYuY29udGVudCA/IGRpZmYuY29udGVudCA6IHVuZGVmaW5lZDtcclxuICB9XHJcbn1cclxuIl19

@@ -68,2 +68,2 @@ /**

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC10ZXh0LWRpZmYvIiwic291cmNlcyI6WyJsaWIvbmd4LXRleHQtZGlmZi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRGlmZlRhYmxlRm9ybWF0ID0gJ1NpZGVCeVNpZGUnIHwgJ0xpbmVCeUxpbmUnIHwgJ01lcmdlVmlldyc7XHJcbmV4cG9ydCB0eXBlIFNpZGVEaWZmID0gJ2JvdGgnIHwgJ2xlZnQnIHwgJ3JpZ2h0JztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlmZlRhYmxlRm9ybWF0T3B0aW9uIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHZhbHVlOiBEaWZmVGFibGVGb3JtYXQ7XHJcbiAgaWNvbj86IHN0cmluZztcclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlmZkNvbnRlbnQge1xyXG4gIGxlZnRDb250ZW50OiBzdHJpbmc7XHJcbiAgcmlnaHRDb250ZW50OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlmZlBhcnQge1xyXG4gIGNvbnRlbnQ6IHN0cmluZztcclxuICBpc0RpZmY6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlmZkxpbmVSZXN1bHQge1xyXG4gIGxpbmVOdW1iZXI6IG51bWJlcjtcclxuICBwcmVmaXg6IHN0cmluZztcclxuICBsaW5lQ29udGVudDogc3RyaW5nO1xyXG4gIGxpbmVEaWZmczogRGlmZlBhcnRbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaWZmVGFibGVSb3dSZXN1bHQge1xyXG4gIGxlZnRDb250ZW50OiBEaWZmTGluZVJlc3VsdDtcclxuICByaWdodENvbnRlbnQ6IERpZmZMaW5lUmVzdWx0O1xyXG4gIGJlbG9uZ1RvOiBTaWRlRGlmZjtcclxuICBoYXNEaWZmczogYm9vbGVhbjtcclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC10ZXh0LWRpZmYvIiwic291cmNlcyI6WyJsaWIvbmd4LXRleHQtZGlmZi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRGlmZlRhYmxlRm9ybWF0ID0gJ1NpZGVCeVNpZGUnIHwgJ0xpbmVCeUxpbmUnO1xyXG5leHBvcnQgdHlwZSBTaWRlRGlmZiA9ICdib3RoJyB8ICdsZWZ0JyB8ICdyaWdodCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpZmZUYWJsZUZvcm1hdE9wdGlvbiB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB2YWx1ZTogRGlmZlRhYmxlRm9ybWF0O1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpZmZDb250ZW50IHtcclxuICBsZWZ0Q29udGVudDogc3RyaW5nO1xyXG4gIHJpZ2h0Q29udGVudDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpZmZQYXJ0IHtcclxuICBjb250ZW50OiBzdHJpbmc7XHJcbiAgaXNEaWZmOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpZmZMaW5lUmVzdWx0IHtcclxuICBsaW5lTnVtYmVyOiBudW1iZXI7XHJcbiAgcHJlZml4OiBzdHJpbmc7XHJcbiAgbGluZUNvbnRlbnQ6IHN0cmluZztcclxuICBsaW5lRGlmZnM6IERpZmZQYXJ0W107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlmZlRhYmxlUm93UmVzdWx0IHtcclxuICBsZWZ0Q29udGVudDogRGlmZkxpbmVSZXN1bHQ7XHJcbiAgcmlnaHRDb250ZW50OiBEaWZmTGluZVJlc3VsdDtcclxuICBiZWxvbmdUbzogU2lkZURpZmY7XHJcbiAgaGFzRGlmZnM6IGJvb2xlYW47XHJcbn1cclxuIl19

@@ -9,3 +9,3 @@ /**

import { FormsModule } from '@angular/forms';
import { LoaderSppinerComponent } from './loader-sppiner/loader-sppiner.component';
import { LoaderSpinnerComponent } from './loader-spinner/loader-spinner.component';
import { FormatLinePipe } from './format-line.pipe';

@@ -17,3 +17,3 @@ export class NgxTextDiffModule {

imports: [CommonModule, FormsModule],
declarations: [NgxTextDiffComponent, LoaderSppinerComponent, FormatLinePipe],
declarations: [NgxTextDiffComponent, LoaderSpinnerComponent, FormatLinePipe],
exports: [NgxTextDiffComponent]

@@ -23,2 +23,2 @@ },] }

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdGV4dC1kaWZmLyIsInNvdXJjZXMiOlsibGliL25neC10ZXh0LWRpZmYubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBT3BELE1BQU07OztZQUxMLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO2dCQUNwQyxZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSxjQUFjLENBQUM7Z0JBQzVFLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO2FBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmd4VGV4dERpZmZDb21wb25lbnQgfSBmcm9tICcuL25neC10ZXh0LWRpZmYuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMb2FkZXJTcHBpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9sb2FkZXItc3BwaW5lci9sb2FkZXItc3BwaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybWF0TGluZVBpcGUgfSBmcm9tICcuL2Zvcm1hdC1saW5lLnBpcGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXHJcbiAgZGVjbGFyYXRpb25zOiBbTmd4VGV4dERpZmZDb21wb25lbnQsIExvYWRlclNwcGluZXJDb21wb25lbnQsIEZvcm1hdExpbmVQaXBlXSxcclxuICBleHBvcnRzOiBbTmd4VGV4dERpZmZDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hUZXh0RGlmZk1vZHVsZSB7fVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdGV4dC1kaWZmLyIsInNvdXJjZXMiOlsibGliL25neC10ZXh0LWRpZmYubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBT3BELE1BQU07OztZQUxMLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO2dCQUNwQyxZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSxjQUFjLENBQUM7Z0JBQzVFLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO2FBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmd4VGV4dERpZmZDb21wb25lbnQgfSBmcm9tICcuL25neC10ZXh0LWRpZmYuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IExvYWRlclNwaW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2xvYWRlci1zcGlubmVyL2xvYWRlci1zcGlubmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1hdExpbmVQaXBlIH0gZnJvbSAnLi9mb3JtYXQtbGluZS5waXBlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxyXG4gIGRlY2xhcmF0aW9uczogW05neFRleHREaWZmQ29tcG9uZW50LCBMb2FkZXJTcGlubmVyQ29tcG9uZW50LCBGb3JtYXRMaW5lUGlwZV0sXHJcbiAgZXhwb3J0czogW05neFRleHREaWZmQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4VGV4dERpZmZNb2R1bGUge31cclxuIl19

@@ -8,4 +8,6 @@ /**

*/
export { NgxTextDiffService, NgxTextDiffComponent, LoaderSppinerComponent, FormatLinePipe, isNil, isEmpty, NgxTextDiffModule } from './public_api';
export { NgxTextDiffService, NgxTextDiffComponent, NgxTextDiffModule } from './public_api';
export { FormatLinePipe as ɵb } from './lib/format-line.pipe';
export { LoaderSpinnerComponent as ɵa } from './lib/loader-spinner/loader-spinner.component';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC10ZXh0LWRpZmYvIiwic291cmNlcyI6WyJuZ3gtdGV4dC1kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSxvSUFBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC10ZXh0LWRpZmYvIiwic291cmNlcyI6WyJuZ3gtdGV4dC1kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSw0RUFBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsc0JBQXNCLElBQUksRUFBRSxFQUFDLE1BQU0sK0NBQStDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG5cbmV4cG9ydCB7Rm9ybWF0TGluZVBpcGUgYXMgybVifSBmcm9tICcuL2xpYi9mb3JtYXQtbGluZS5waXBlJztcbmV4cG9ydCB7TG9hZGVyU3Bpbm5lckNvbXBvbmVudCBhcyDJtWF9IGZyb20gJy4vbGliL2xvYWRlci1zcGlubmVyL2xvYWRlci1zcGlubmVyLmNvbXBvbmVudCc7Il19

@@ -10,7 +10,4 @@ /**

export { NgxTextDiffComponent } from './lib/ngx-text-diff.component';
export { LoaderSppinerComponent } from './lib/loader-sppiner/loader-sppiner.component';
export { FormatLinePipe } from './lib/format-line.pipe';
export { isNil, isEmpty } from './lib/ngx-text-diff.utils';
export { NgxTextDiffModule } from './lib/ngx-text-diff.module';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC10ZXh0LWRpZmYvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSxtQ0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxxQ0FBYywrQkFBK0IsQ0FBQztBQUM5Qyx1Q0FBYywrQ0FBK0MsQ0FBQztBQUM5RCwrQkFBYyx3QkFBd0IsQ0FBQztBQUV2QywrQkFBYywyQkFBMkIsQ0FBQztBQUMxQyxrQ0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LXRleHQtZGlmZlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL25neC10ZXh0LWRpZmYuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtdGV4dC1kaWZmLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2FkZXItc3BwaW5lci9sb2FkZXItc3BwaW5lci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybWF0LWxpbmUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtdGV4dC1kaWZmLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL25neC10ZXh0LWRpZmYudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LXRleHQtZGlmZi5tb2R1bGUnO1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC10ZXh0LWRpZmYvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSxtQ0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxxQ0FBYywrQkFBK0IsQ0FBQztBQUM5QyxrQ0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LXRleHQtZGlmZlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL25neC10ZXh0LWRpZmYuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtdGV4dC1kaWZmLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtdGV4dC1kaWZmLm1vZHVsZSc7XG4iXX0=

@@ -50,4 +50,4 @@ /**

var _this = this;
if (this.diffContentObservable$) {
this.subscriptions.push(this.diffContentObservable$.subscribe(function (content) {
if (this.diffContent) {
this.subscriptions.push(this.diffContent.subscribe(function (content) {
_this.left = content.leftContent;

@@ -180,3 +180,3 @@ _this.right = content.rightContent;

selector: 'td-ngx-text-diff',
template: "<td-loader-sppiner [active]=\"loading\"></td-loader-sppiner>\r\n<div *ngIf=\"!loading\">\r\n <div class=\"td-wrapper\">\r\n <div class=\"td-toolbar-show-diff\">\r\n <label class=\"td-checkbox-container\">Show Lines with Diffs ({{diffsCount}})\r\n <input type=\"checkbox\"\r\n id=\"showDiffs\"\r\n [ngModel]=\"showLinesDiffs\"\r\n (ngModelChange)=\"showLinesDiffsChange($event)\"\r\n >\r\n <span class=\"checkmark\"></span>\r\n </label>\r\n </div>\r\n <div class=\"td-toolbar-select-format\" *ngIf=\"showBtnToolbar\">\r\n <div class=\"td-btn-group td-btn-group-toggle\" data-toggle=\"buttons\">\r\n <button *ngFor=\"let option of formatOptions\"\r\n [ngClass]=\"{'active': format === option.value, 'disabled': !!option.disabled}\"\r\n [name]=\"option.name\"\r\n [id]=\"option.id\"\r\n [disabled]=\"!!option.disabled\"\r\n (click)=\"setDiffTableFormat(option.value)\"\r\n >{{option.label}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"td-table-wrapper\">\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n {{(row.leftContent?.lineNumber !== -1) ?\r\n row.leftContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n <span>{{row.leftContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n {{(row.rightContent?.lineNumber !== -1) ?\r\n row.rightContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n <span>{{row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.rightContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container line-by-line\" *ngIf=\"format === 'LineByLine'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRowsLineByLine; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col-left\">{{row.leftContent?.lineNumber}}</td>\r\n <td scope=\"row\" class=\"fit-column line-number-col\">{{row.rightContent?.lineNumber}}</td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\">\r\n <span>{{row.leftContent?.prefix || row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.leftContent && row.leftContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.rightContent && row.rightContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
template: "<td-loader-spinner [active]=\"loading\"></td-loader-spinner>\r\n<div *ngIf=\"!loading\">\r\n <div class=\"td-wrapper\">\r\n <div class=\"td-toolbar-show-diff\">\r\n <label class=\"td-checkbox-container\">Show Lines with Diffs ({{diffsCount}})\r\n <input type=\"checkbox\"\r\n id=\"showDiffs\"\r\n [ngModel]=\"showLinesDiffs\"\r\n (ngModelChange)=\"showLinesDiffsChange($event)\"\r\n >\r\n <span class=\"checkmark\"></span>\r\n </label>\r\n </div>\r\n <div class=\"td-toolbar-select-format\" *ngIf=\"showBtnToolbar\">\r\n <div class=\"td-btn-group td-btn-group-toggle\" data-toggle=\"buttons\">\r\n <button *ngFor=\"let option of formatOptions\"\r\n [ngClass]=\"{'active': format === option.value, 'disabled': !!option.disabled}\"\r\n [name]=\"option.name\"\r\n [id]=\"option.id\"\r\n [disabled]=\"!!option.disabled\"\r\n (click)=\"setDiffTableFormat(option.value)\"\r\n >{{option.label}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"td-table-wrapper\">\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n {{(row.leftContent?.lineNumber !== -1) ?\r\n row.leftContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n <span>{{row.leftContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n {{(row.rightContent?.lineNumber !== -1) ?\r\n row.rightContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n <span>{{row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.rightContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container line-by-line\" *ngIf=\"format === 'LineByLine'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRowsLineByLine; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col-left\">{{row.leftContent?.lineNumber}}</td>\r\n <td scope=\"row\" class=\"fit-column line-number-col\">{{row.rightContent?.lineNumber}}</td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\">\r\n <span>{{row.leftContent?.prefix || row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.leftContent && row.leftContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.rightContent && row.rightContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
styles: [".td-wrapper{display:-ms-grid;display:grid;width:100%;grid-row-gap:10px;-ms-grid-columns:([col] 50%)[2];grid-template-columns:repeat(2,[col] 50%);-ms-grid-rows:([row] auto)[2];grid-template-rows:repeat(2,[row] auto);background-color:#fff;color:#444}.td-toolbar-show-diff{-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1}.td-toolbar-select-format{margin-left:auto;-ms-grid-column:2;grid-column:2;-ms-grid-row:1;grid-row:1}.td-table-container{-ms-grid-column:1;-ms-grid-column-span:1;grid-column:1/2;-ms-grid-row:2;grid-row:2;width:100%;max-width:100%;overflow-x:auto}.td-table-wrapper{display:flex;width:200%}.td-table{border:1px solid #a9a9a9;max-height:50vh;width:100%;max-width:100%}.fit-column{width:1px;white-space:nowrap}.line-number-col{border-right:1px solid #ddd;color:#999;text-align:right;background-color:#f7f7f7;padding-left:10px;padding-right:10px;font-size:87.5%}.line-number-col-left{color:#999;padding-left:10px;padding-right:10px;text-align:right;background-color:#f7f7f7;font-size:87.5%}.insert-row,.insert-row>.line-number-col{background-color:#dfd;border-color:#b4e2b4}.delete-row,.delete-row>.line-number-col{background-color:#fee8e9;border-color:#e9aeae}.empty-row{background-color:#f7f7f7;height:24px}.td-table td{border-top:0;padding-top:0;padding-bottom:0;white-space:nowrap;max-width:50%}pre{margin-bottom:0}td.content-col{padding:0;margin:0;line-height:24px}td.prefix-col{padding-left:10px;padding-right:10px;line-height:24px}.td-btn-group{border-radius:4px}.td-btn-group button{background-color:rgba(23,162,184,.7);border:1px solid #17a2b8;color:#fff;cursor:pointer;float:left}.td-btn-group button:not(:last-child){border-right:none}.td-btn-group button:first-child{-webkit-border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-bottomleft:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.td-btn-group button:last-child{-webkit-border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;border-top-right-radius:4px;border-bottom-right-radius:4px}.td-btn-group:after{content:'';clear:both;display:table}.td-btn-group button.active,.td-btn-group button:hover{background-color:#17a2b8}.td-checkbox-container{display:block;position:relative;padding-left:21px;margin-bottom:0;cursor:pointer;font-size:16px;line-height:28px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.td-checkbox-container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.checkmark{position:absolute;top:7px;left:0;height:16px;width:16px;background-color:#eee}.td-checkbox-container:hover input~.checkmark{background-color:#ccc}.td-checkbox-container input:checked~.checkmark{background-color:#17a2b8}.checkmark:after{content:\"\";position:absolute;display:none}.td-checkbox-container input:checked~.checkmark:after{display:block}.td-checkbox-container .checkmark:after{left:5px;top:3px;width:5px;height:10px;border:solid #fff;border-width:0 3px 3px 0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.insert-row>.highlight{background-color:#acf2bd!important}.delete-row>.highlight{background-color:#fdb8c0!important}"]

@@ -194,4 +194,4 @@ }] }

right: [{ type: Input }],
diffContent: [{ type: Input }],
loading: [{ type: Input }],
diffContentObservable$: [{ type: Input }],
showBtnToolbar: [{ type: Input }]

@@ -210,6 +210,6 @@ };

/** @type {?} */
NgxTextDiffComponent.prototype.diffContent;
/** @type {?} */
NgxTextDiffComponent.prototype.loading;
/** @type {?} */
NgxTextDiffComponent.prototype.diffContentObservable$;
/** @type {?} */
NgxTextDiffComponent.prototype.showBtnToolbar;

@@ -238,2 +238,2 @@ /** @type {?} */

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdGV4dC1kaWZmLyIsInNvdXJjZXMiOlsibGliL25neC10ZXh0LWRpZmYuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7O0lBdUM5Qyw4QkFBb0IsSUFBd0IsRUFBVSxFQUFxQjtRQUF2RCxTQUFJLEdBQUosSUFBSSxDQUFvQjtRQUFVLE9BQUUsR0FBRixFQUFFLENBQW1CO3NCQS9CeEMsWUFBWTtvQkFDL0IsRUFBRTtxQkFDRCxFQUFFO3VCQUNBLEtBQUs7OEJBRUUsSUFBSTs2QkFDRSxFQUFFO3lCQUNBLEVBQUU7aUNBQ00sRUFBRTttQ0FDQSxFQUFFOzJDQUNNLEVBQUU7OEJBQ3JDLEtBQUs7MEJBQ1QsQ0FBQzs2QkFFMkI7WUFDdkM7Z0JBQ0UsRUFBRSxFQUFFLGNBQWM7Z0JBQ2xCLElBQUksRUFBRSxjQUFjO2dCQUNwQixLQUFLLEVBQUUsY0FBYztnQkFDckIsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLElBQUksRUFBRSxTQUFTO2FBQ2hCO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLGNBQWM7Z0JBQ2xCLElBQUksRUFBRSxjQUFjO2dCQUNwQixLQUFLLEVBQUUsY0FBYztnQkFDckIsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLElBQUksRUFBRSxjQUFjO2FBQ3JCO1NBQ0Y7S0FFOEU7Ozs7SUFFL0UsdUNBQVE7OztJQUFSO1FBQUEsaUJBYUM7UUFaQyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLHNC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QyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7S0FDeEQ7O2dCQXhIRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsdWlOQUE2Qzs7aUJBRTlDOzs7O2dCQVBRLGtCQUFrQjtnQkFGbEIsaUJBQWlCOzs7eUJBV3ZCLEtBQUs7dUJBQ0wsS0FBSzt3QkFDTCxLQUFLOzBCQUNMLEtBQUs7eUNBQ0wsS0FBSztpQ0FDTCxLQUFLOzsrQkFoQlI7O1NBVWEsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEaWZmQ29udGVudCwgRGlmZkxpbmVSZXN1bHQsIERpZmZQYXJ0LCBEaWZmVGFibGVGb3JtYXQsIERpZmZUYWJsZUZvcm1hdE9wdGlvbiwgRGlmZlRhYmxlUm93UmVzdWx0IH0gZnJvbSAnLi9uZ3gtdGV4dC1kaWZmLm1vZGVsJztcclxuaW1wb3J0IHsgTmd4VGV4dERpZmZTZXJ2aWNlIH0gZnJvbSAnLi9uZ3gtdGV4dC1kaWZmLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGQtbmd4LXRleHQtZGlmZicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25neC10ZXh0LWRpZmYuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25neC10ZXh0LWRpZmYuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hUZXh0RGlmZkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZm9ybWF0OiBEaWZmVGFibGVGb3JtYXQgPSAnU2lkZUJ5U2lkZSc7XHJcbiAgQElucHV0KCkgbGVmdCA9ICcnO1xyXG4gIEBJbnB1dCgpIHJpZ2h0ID0gJyc7XHJcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRpZmZDb250ZW50T2JzZXJ2YWJsZSQ6IE9ic2VydmFibGU8RGlmZkNvbnRlbnQ+O1xyXG4gIEBJbnB1dCgpIHNob3dCdG5Ub29sYmFyID0gdHJ1ZTtcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIHRhYmxlUm93czogRGlmZlRhYmxlUm93UmVzdWx0W10gPSBbXTtcclxuICBmaWx0ZXJlZFRhYmxlUm93czogRGlmZlRhYmxlUm93UmVzdWx0W10gPSBbXTtcclxuICB0YWJsZVJvd3NMaW5lQnlMaW5lOiBEaWZmVGFibGVSb3dSZXN1bHRbXSA9IFtdO1xyXG4gIGZpbHRlcmVkVGFibGVSb3dzTGluZUJ5TGluZTogRGlmZlRhYmxlUm93UmVzdWx0W10gPSBbXTtcclxuICBzaG93TGluZXNEaWZmcyA9IGZhbHNlO1xyXG4gIGRpZmZzQ291bnQgPSAwO1xyXG5cclxuICBmb3JtYXRPcHRpb25zOiBEaWZmVGFibGVGb3JtYXRPcHRpb25bXSA9IFtcclxuICAgIHtcclxuICAgICAgaWQ6ICdzaWRlLWJ5LXNpZGUnLFxyXG4gICAgICBuYW1lOiAnc2lkZS1ieS1zaWRlJyxcclxuICAgICAgbGFiZWw6ICdTaWRlIGJ5IFNpZGUnLFxyXG4gICAgICB2YWx1ZTogJ1NpZGVCeVNpZGUnLFxyXG4gICAgICBpY29uOiAnbGEtY29kZSdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiAnbGluZS1ieS1saW5lJyxcclxuICAgICAgbmFtZTogJ2xpbmUtYnktbGluZScsXHJcbiAgICAgIGxhYmVsOiAnTGluZSBieSBMaW5lJyxcclxuICAgICAgdmFsdWU6ICdMaW5lQnlMaW5lJyxcclxuICAgICAgaWNvbjogJ2xhLWZpbGUtdGV4dCdcclxuICAgIH1cclxuICBdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpZmY6IE5neFRleHREaWZmU2VydmljZSwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZGlmZkNvbnRlbnRPYnNlcnZhYmxlJCkge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmRpZmZDb250ZW50T2JzZXJ2YWJsZSQuc3Vic2NyaWJlKGNvbnRlbnQgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sZWZ0ID0gY29udGVudC5sZWZ0Q29udGVudDtcclxuICAgICAgICAgIHRoaXMucmlnaHQgPSBjb250ZW50LnJpZ2h0Q29udGVudDtcclxuICAgICAgICAgIHRoaXMucmVuZGVyRGlmZnMoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZW5kZXJEaWZmcygpLnRoZW4oKTtcclxuICB9XHJcblxyXG4gIHNob3dMaW5lc0RpZmZzQ2hhbmdlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNob3dMaW5lc0RpZmZzID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5zaG93TGluZXNEaWZmcykge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkVGFibGVSb3dzID0gdGhpcy50YWJsZVJvd3MuZmlsdGVyKFxyXG4gICAgICAgIHJvdyA9PiAocm93LmxlZnRDb250ZW50ICYmIHJvdy5sZWZ0Q29udGVudC5wcmVmaXggPT09ICctJykgfHwgKHJvdy5yaWdodENvbnRlbnQgJiYgcm93LnJpZ2h0Q29udGVudC5wcmVmaXggPT09ICcrJylcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5maWx0ZXJlZFRhYmxlUm93c0xpbmVCeUxpbmUgPSB0aGlzLnRhYmxlUm93c0xpbmVCeUxpbmUuZmlsdGVyKFxyXG4gICAgICAgIHJvdyA9PiAocm93LmxlZnRDb250ZW50ICYmIHJvdy5sZWZ0Q29udGVudC5wcmVmaXggPT09ICctJykgfHwgKHJvdy5yaWdodENvbnRlbnQgJiYgcm93LnJpZ2h0Q29udGVudC5wcmVmaXggPT09ICcrJylcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3MgPSB0aGlzLnRhYmxlUm93cztcclxuICAgICAgdGhpcy5maWx0ZXJlZFRhYmxlUm93c0xpbmVCeUxpbmUgPSB0aGlzLnRhYmxlUm93c0xpbmVCeUxpbmU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREaWZmVGFibGVGb3JtYXQoZm9ybWF0OiBEaWZmVGFibGVGb3JtYXQpIHtcclxuICAgIHRoaXMuZm9ybWF0ID0gZm9ybWF0O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVuZGVyRGlmZnMoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRpZmZzQ291bnQgPSAwO1xyXG4gICAgICB0aGlzLnRhYmxlUm93cyA9IGF3YWl0IHRoaXMuZGlmZi5nZXREaWZmc0J5TGluZXModGhpcy5sZWZ0LCB0aGlzLnJpZ2h0KTtcclxuICAgICAgdGhpcy50YWJsZVJvd3NMaW5lQnlMaW5lID0gdGhpcy50YWJsZVJvd3MucmVkdWNlKCh0YWJsZUxpbmVCeUxpbmU6IERpZmZUYWJsZVJvd1Jlc3VsdFtdLCByb3c6IERpZmZUYWJsZVJvd1Jlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmICghdGFibGVMaW5lQnlMaW5lKSB7XHJcbiAgICAgICAgICB0YWJsZUxpbmVCeUxpbmUgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJvdy5oYXNEaWZmcykge1xyXG4gICAgICAgICAgaWYgKHJvdy5sZWZ0Q29udGVudCkge1xyXG4gICAgICAgICAgICB0YWJsZUxpbmVCeUxpbmUucHVzaCh7XHJcbiAgICAgICAgICAgICAgbGVmdENvbnRlbnQ6IHJvdy5sZWZ0Q29udGVudCxcclxuICAgICAgICAgICAgICByaWdodENvbnRlbnQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgYmVsb25nVG86IHJvdy5iZWxvbmdUbyxcclxuICAgICAgICAgICAgICBoYXNEaWZmczogdHJ1ZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyb3cucmlnaHRDb250ZW50KSB7XHJcbiAgICAgICAgICAgIHRhYmxlTGluZUJ5TGluZS5wdXNoKHtcclxuICAgICAgICAgICAgICBsZWZ0Q29udGVudDogbnVsbCxcclxuICAgICAgICAgICAgICByaWdodENvbnRlbnQ6IHJvdy5yaWdodENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgYmVsb25nVG86IHJvdy5iZWxvbmdUbyxcclxuICAgICAgICAgICAgICBoYXNEaWZmczogdHJ1ZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGFibGVMaW5lQnlMaW5lLnB1c2gocm93KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0YWJsZUxpbmVCeUxpbmU7XHJcbiAgICAgIH0sIFtdKTtcclxuICAgICAgdGhpcy5kaWZmc0NvdW50ID0gdGhpcy50YWJsZVJvd3MuZmlsdGVyKFxyXG4gICAgICAgIHJvdyA9PiAocm93LmxlZnRDb250ZW50ICYmIHJvdy5sZWZ0Q29udGVudC5wcmVmaXggPT09ICctJykgfHwgKHJvdy5yaWdodENvbnRlbnQgJiYgcm93LnJpZ2h0Q29udGVudC5wcmVmaXggPT09ICcrJylcclxuICAgICAgKS5sZW5ndGg7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3MgPSB0aGlzLnRhYmxlUm93cztcclxuICAgICAgdGhpcy5maWx0ZXJlZFRhYmxlUm93c0xpbmVCeUxpbmUgPSB0aGlzLnRhYmxlUm93c0xpbmVCeUxpbmU7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSBjYXRjaCAoZSkge31cclxuICB9XHJcblxyXG4gIHRyYWNrVGFibGVSb3dzKGluZGV4LCByb3c6IERpZmZUYWJsZVJvd1Jlc3VsdCkge1xyXG4gICAgcmV0dXJuIHJvdyAmJiByb3cubGVmdENvbnRlbnQgPyByb3cubGVmdENvbnRlbnQubGluZUNvbnRlbnQgOiByb3cgJiYgcm93LnJpZ2h0Q29udGVudCA/IHJvdy5yaWdodENvbnRlbnQubGluZUNvbnRlbnQgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICB0cmFja0RpZmZzKGluZGV4LCBkaWZmOiBEaWZmUGFydCkge1xyXG4gICAgcmV0dXJuIGRpZmYgJiYgZGlmZi5jb250ZW50ID8gZGlmZi5jb250ZW50IDogdW5kZWZpbmVkO1xyXG4gIH1cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdGV4dC1kaWZmLyIsInNvdXJjZXMiOlsibGliL25neC10ZXh0LWRpZmYuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7O0lBdUM5Qyw4QkFBb0IsSUFBd0IsRUFBVSxFQUFxQjtRQUF2RCxTQUFJLEdBQUosSUFBSSxDQUFvQjtRQUFVLE9BQUUsR0FBRixFQUFFLENBQW1CO3NCQS9CeEMsWUFBWTtvQkFDL0IsRUFBRTtxQkFDRCxFQUFFO3VCQUVBLEtBQUs7OEJBQ0UsSUFBSTs2QkFDRSxFQUFFO3lCQUNBLEVBQUU7aUNBQ00sRUFBRTttQ0FDQSxFQUFFOzJDQUNNLEVBQUU7OEJBQ3JDLEtBQUs7MEJBQ1QsQ0FBQzs2QkFFMkI7WUFDdkM7Z0JBQ0UsRUFBRSxFQUFFLGNBQWM7Z0JBQ2xCLElBQUksRUFBRSxjQUFjO2dCQUNwQixLQUFLLEVBQUUsY0FBYztnQkFDckIsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLElBQUksRUFBRSxTQUFTO2FBQ2hCO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLGNBQWM7Z0JBQ2xCLElBQUksRUFBRSxjQUFjO2dCQUNwQixLQUFLLEVBQUUsY0FBYztnQkFDckIsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLElBQUksRUFBRSxjQUFjO2FBQ3JCO1NBQ0Y7S0FFOEU7Ozs7SUFFL0UsdUNBQVE7OztJQUFSO1FBQUEsaUJBYUM7UUFaQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxXQUFX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QUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztLQUN4RDs7Z0JBeEhGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1Qix1aU5BQTZDOztpQkFFOUM7Ozs7Z0JBUFEsa0JBQWtCO2dCQUZsQixpQkFBaUI7Ozt5QkFXdkIsS0FBSzt1QkFDTCxLQUFLO3dCQUNMLEtBQUs7OEJBQ0wsS0FBSzswQkFDTCxLQUFLO2lDQUNMLEtBQUs7OytCQWhCUjs7U0FVYSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERpZmZDb250ZW50LCBEaWZmUGFydCwgRGlmZlRhYmxlRm9ybWF0LCBEaWZmVGFibGVGb3JtYXRPcHRpb24sIERpZmZUYWJsZVJvd1Jlc3VsdCB9IGZyb20gJy4vbmd4LXRleHQtZGlmZi5tb2RlbCc7XHJcbmltcG9ydCB7IE5neFRleHREaWZmU2VydmljZSB9IGZyb20gJy4vbmd4LXRleHQtZGlmZi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RkLW5neC10ZXh0LWRpZmYnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtdGV4dC1kaWZmLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9uZ3gtdGV4dC1kaWZmLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4VGV4dERpZmZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGZvcm1hdDogRGlmZlRhYmxlRm9ybWF0ID0gJ1NpZGVCeVNpZGUnO1xyXG4gIEBJbnB1dCgpIGxlZnQgPSAnJztcclxuICBASW5wdXQoKSByaWdodCA9ICcnO1xyXG4gIEBJbnB1dCgpIGRpZmZDb250ZW50OiBPYnNlcnZhYmxlPERpZmZDb250ZW50PjtcclxuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0J0blRvb2xiYXIgPSB0cnVlO1xyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgdGFibGVSb3dzOiBEaWZmVGFibGVSb3dSZXN1bHRbXSA9IFtdO1xyXG4gIGZpbHRlcmVkVGFibGVSb3dzOiBEaWZmVGFibGVSb3dSZXN1bHRbXSA9IFtdO1xyXG4gIHRhYmxlUm93c0xpbmVCeUxpbmU6IERpZmZUYWJsZVJvd1Jlc3VsdFtdID0gW107XHJcbiAgZmlsdGVyZWRUYWJsZVJvd3NMaW5lQnlMaW5lOiBEaWZmVGFibGVSb3dSZXN1bHRbXSA9IFtdO1xyXG4gIHNob3dMaW5lc0RpZmZzID0gZmFsc2U7XHJcbiAgZGlmZnNDb3VudCA9IDA7XHJcblxyXG4gIGZvcm1hdE9wdGlvbnM6IERpZmZUYWJsZUZvcm1hdE9wdGlvbltdID0gW1xyXG4gICAge1xyXG4gICAgICBpZDogJ3NpZGUtYnktc2lkZScsXHJcbiAgICAgIG5hbWU6ICdzaWRlLWJ5LXNpZGUnLFxyXG4gICAgICBsYWJlbDogJ1NpZGUgYnkgU2lkZScsXHJcbiAgICAgIHZhbHVlOiAnU2lkZUJ5U2lkZScsXHJcbiAgICAgIGljb246ICdsYS1jb2RlJ1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6ICdsaW5lLWJ5LWxpbmUnLFxyXG4gICAgICBuYW1lOiAnbGluZS1ieS1saW5lJyxcclxuICAgICAgbGFiZWw6ICdMaW5lIGJ5IExpbmUnLFxyXG4gICAgICB2YWx1ZTogJ0xpbmVCeUxpbmUnLFxyXG4gICAgICBpY29uOiAnbGEtZmlsZS10ZXh0J1xyXG4gICAgfVxyXG4gIF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlmZjogTmd4VGV4dERpZmZTZXJ2aWNlLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5kaWZmQ29udGVudCkge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmRpZmZDb250ZW50LnN1YnNjcmliZShjb250ZW50ID0+IHtcclxuICAgICAgICAgIHRoaXMubGVmdCA9IGNvbnRlbnQubGVmdENvbnRlbnQ7XHJcbiAgICAgICAgICB0aGlzLnJpZ2h0ID0gY29udGVudC5yaWdodENvbnRlbnQ7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckRpZmZzKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMucmVuZGVyRGlmZnMoKS50aGVuKCk7XHJcbiAgfVxyXG5cclxuICBzaG93TGluZXNEaWZmc0NoYW5nZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zaG93TGluZXNEaWZmcyA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMuc2hvd0xpbmVzRGlmZnMpIHtcclxuICAgICAgdGhpcy5maWx0ZXJlZFRhYmxlUm93cyA9IHRoaXMudGFibGVSb3dzLmZpbHRlcihcclxuICAgICAgICByb3cgPT4gKHJvdy5sZWZ0Q29udGVudCAmJiByb3cubGVmdENvbnRlbnQucHJlZml4ID09PSAnLScpIHx8IChyb3cucmlnaHRDb250ZW50ICYmIHJvdy5yaWdodENvbnRlbnQucHJlZml4ID09PSAnKycpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3NMaW5lQnlMaW5lID0gdGhpcy50YWJsZVJvd3NMaW5lQnlMaW5lLmZpbHRlcihcclxuICAgICAgICByb3cgPT4gKHJvdy5sZWZ0Q29udGVudCAmJiByb3cubGVmdENvbnRlbnQucHJlZml4ID09PSAnLScpIHx8IChyb3cucmlnaHRDb250ZW50ICYmIHJvdy5yaWdodENvbnRlbnQucHJlZml4ID09PSAnKycpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkVGFibGVSb3dzID0gdGhpcy50YWJsZVJvd3M7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3NMaW5lQnlMaW5lID0gdGhpcy50YWJsZVJvd3NMaW5lQnlMaW5lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGlmZlRhYmxlRm9ybWF0KGZvcm1hdDogRGlmZlRhYmxlRm9ybWF0KSB7XHJcbiAgICB0aGlzLmZvcm1hdCA9IGZvcm1hdDtcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlbmRlckRpZmZzKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaWZmc0NvdW50ID0gMDtcclxuICAgICAgdGhpcy50YWJsZVJvd3MgPSBhd2FpdCB0aGlzLmRpZmYuZ2V0RGlmZnNCeUxpbmVzKHRoaXMubGVmdCwgdGhpcy5yaWdodCk7XHJcbiAgICAgIHRoaXMudGFibGVSb3dzTGluZUJ5TGluZSA9IHRoaXMudGFibGVSb3dzLnJlZHVjZSgodGFibGVMaW5lQnlMaW5lOiBEaWZmVGFibGVSb3dSZXN1bHRbXSwgcm93OiBEaWZmVGFibGVSb3dSZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAoIXRhYmxlTGluZUJ5TGluZSkge1xyXG4gICAgICAgICAgdGFibGVMaW5lQnlMaW5lID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyb3cuaGFzRGlmZnMpIHtcclxuICAgICAgICAgIGlmIChyb3cubGVmdENvbnRlbnQpIHtcclxuICAgICAgICAgICAgdGFibGVMaW5lQnlMaW5lLnB1c2goe1xyXG4gICAgICAgICAgICAgIGxlZnRDb250ZW50OiByb3cubGVmdENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgcmlnaHRDb250ZW50OiBudWxsLFxyXG4gICAgICAgICAgICAgIGJlbG9uZ1RvOiByb3cuYmVsb25nVG8sXHJcbiAgICAgICAgICAgICAgaGFzRGlmZnM6IHRydWVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocm93LnJpZ2h0Q29udGVudCkge1xyXG4gICAgICAgICAgICB0YWJsZUxpbmVCeUxpbmUucHVzaCh7XHJcbiAgICAgICAgICAgICAgbGVmdENvbnRlbnQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgcmlnaHRDb250ZW50OiByb3cucmlnaHRDb250ZW50LFxyXG4gICAgICAgICAgICAgIGJlbG9uZ1RvOiByb3cuYmVsb25nVG8sXHJcbiAgICAgICAgICAgICAgaGFzRGlmZnM6IHRydWVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRhYmxlTGluZUJ5TGluZS5wdXNoKHJvdyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGFibGVMaW5lQnlMaW5lO1xyXG4gICAgICB9LCBbXSk7XHJcbiAgICAgIHRoaXMuZGlmZnNDb3VudCA9IHRoaXMudGFibGVSb3dzLmZpbHRlcihcclxuICAgICAgICByb3cgPT4gKHJvdy5sZWZ0Q29udGVudCAmJiByb3cubGVmdENvbnRlbnQucHJlZml4ID09PSAnLScpIHx8IChyb3cucmlnaHRDb250ZW50ICYmIHJvdy5yaWdodENvbnRlbnQucHJlZml4ID09PSAnKycpXHJcbiAgICAgICkubGVuZ3RoO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkVGFibGVSb3dzID0gdGhpcy50YWJsZVJvd3M7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3NMaW5lQnlMaW5lID0gdGhpcy50YWJsZVJvd3NMaW5lQnlMaW5lO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0gY2F0Y2ggKGUpIHt9XHJcbiAgfVxyXG5cclxuICB0cmFja1RhYmxlUm93cyhpbmRleCwgcm93OiBEaWZmVGFibGVSb3dSZXN1bHQpIHtcclxuICAgIHJldHVybiByb3cgJiYgcm93LmxlZnRDb250ZW50ID8gcm93LmxlZnRDb250ZW50LmxpbmVDb250ZW50IDogcm93ICYmIHJvdy5yaWdodENvbnRlbnQgPyByb3cucmlnaHRDb250ZW50LmxpbmVDb250ZW50IDogdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tEaWZmcyhpbmRleCwgZGlmZjogRGlmZlBhcnQpIHtcclxuICAgIHJldHVybiBkaWZmICYmIGRpZmYuY29udGVudCA/IGRpZmYuY29udGVudCA6IHVuZGVmaW5lZDtcclxuICB9XHJcbn1cclxuIl19

@@ -68,2 +68,2 @@ /**

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC10ZXh0LWRpZmYvIiwic291cmNlcyI6WyJsaWIvbmd4LXRleHQtZGlmZi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRGlmZlRhYmxlRm9ybWF0ID0gJ1NpZGVCeVNpZGUnIHwgJ0xpbmVCeUxpbmUnIHwgJ01lcmdlVmlldyc7XHJcbmV4cG9ydCB0eXBlIFNpZGVEaWZmID0gJ2JvdGgnIHwgJ2xlZnQnIHwgJ3JpZ2h0JztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlmZlRhYmxlRm9ybWF0T3B0aW9uIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHZhbHVlOiBEaWZmVGFibGVGb3JtYXQ7XHJcbiAgaWNvbj86IHN0cmluZztcclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlmZkNvbnRlbnQge1xyXG4gIGxlZnRDb250ZW50OiBzdHJpbmc7XHJcbiAgcmlnaHRDb250ZW50OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlmZlBhcnQge1xyXG4gIGNvbnRlbnQ6IHN0cmluZztcclxuICBpc0RpZmY6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlmZkxpbmVSZXN1bHQge1xyXG4gIGxpbmVOdW1iZXI6IG51bWJlcjtcclxuICBwcmVmaXg6IHN0cmluZztcclxuICBsaW5lQ29udGVudDogc3RyaW5nO1xyXG4gIGxpbmVEaWZmczogRGlmZlBhcnRbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaWZmVGFibGVSb3dSZXN1bHQge1xyXG4gIGxlZnRDb250ZW50OiBEaWZmTGluZVJlc3VsdDtcclxuICByaWdodENvbnRlbnQ6IERpZmZMaW5lUmVzdWx0O1xyXG4gIGJlbG9uZ1RvOiBTaWRlRGlmZjtcclxuICBoYXNEaWZmczogYm9vbGVhbjtcclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC10ZXh0LWRpZmYvIiwic291cmNlcyI6WyJsaWIvbmd4LXRleHQtZGlmZi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRGlmZlRhYmxlRm9ybWF0ID0gJ1NpZGVCeVNpZGUnIHwgJ0xpbmVCeUxpbmUnO1xyXG5leHBvcnQgdHlwZSBTaWRlRGlmZiA9ICdib3RoJyB8ICdsZWZ0JyB8ICdyaWdodCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpZmZUYWJsZUZvcm1hdE9wdGlvbiB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB2YWx1ZTogRGlmZlRhYmxlRm9ybWF0O1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpZmZDb250ZW50IHtcclxuICBsZWZ0Q29udGVudDogc3RyaW5nO1xyXG4gIHJpZ2h0Q29udGVudDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpZmZQYXJ0IHtcclxuICBjb250ZW50OiBzdHJpbmc7XHJcbiAgaXNEaWZmOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpZmZMaW5lUmVzdWx0IHtcclxuICBsaW5lTnVtYmVyOiBudW1iZXI7XHJcbiAgcHJlZml4OiBzdHJpbmc7XHJcbiAgbGluZUNvbnRlbnQ6IHN0cmluZztcclxuICBsaW5lRGlmZnM6IERpZmZQYXJ0W107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlmZlRhYmxlUm93UmVzdWx0IHtcclxuICBsZWZ0Q29udGVudDogRGlmZkxpbmVSZXN1bHQ7XHJcbiAgcmlnaHRDb250ZW50OiBEaWZmTGluZVJlc3VsdDtcclxuICBiZWxvbmdUbzogU2lkZURpZmY7XHJcbiAgaGFzRGlmZnM6IGJvb2xlYW47XHJcbn1cclxuIl19

@@ -9,3 +9,3 @@ /**

import { FormsModule } from '@angular/forms';
import { LoaderSppinerComponent } from './loader-sppiner/loader-sppiner.component';
import { LoaderSpinnerComponent } from './loader-spinner/loader-spinner.component';
import { FormatLinePipe } from './format-line.pipe';

@@ -18,3 +18,3 @@ var NgxTextDiffModule = /** @class */ (function () {

imports: [CommonModule, FormsModule],
declarations: [NgxTextDiffComponent, LoaderSppinerComponent, FormatLinePipe],
declarations: [NgxTextDiffComponent, LoaderSpinnerComponent, FormatLinePipe],
exports: [NgxTextDiffComponent]

@@ -27,2 +27,2 @@ },] }

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdGV4dC1kaWZmLyIsInNvdXJjZXMiOlsibGliL25neC10ZXh0LWRpZmYubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztnQkFFbkQsUUFBUSxTQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7b0JBQ3BDLFlBQVksRUFBRSxDQUFDLG9CQUFvQixFQUFFLHNCQUFzQixFQUFFLGNBQWMsQ0FBQztvQkFDNUUsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7aUJBQ2hDOzs0QkFYRDs7U0FZYSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ3hUZXh0RGlmZkNvbXBvbmVudCB9IGZyb20gJy4vbmd4LXRleHQtZGlmZi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExvYWRlclNwcGluZXJDb21wb25lbnQgfSBmcm9tICcuL2xvYWRlci1zcHBpbmVyL2xvYWRlci1zcHBpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtYXRMaW5lUGlwZSB9IGZyb20gJy4vZm9ybWF0LWxpbmUucGlwZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXSxcclxuICBkZWNsYXJhdGlvbnM6IFtOZ3hUZXh0RGlmZkNvbXBvbmVudCwgTG9hZGVyU3BwaW5lckNvbXBvbmVudCwgRm9ybWF0TGluZVBpcGVdLFxyXG4gIGV4cG9ydHM6IFtOZ3hUZXh0RGlmZkNvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5neFRleHREaWZmTW9kdWxlIHt9XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtdGV4dC1kaWZmLyIsInNvdXJjZXMiOlsibGliL25neC10ZXh0LWRpZmYubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztnQkFFbkQsUUFBUSxTQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7b0JBQ3BDLFlBQVksRUFBRSxDQUFDLG9CQUFvQixFQUFFLHNCQUFzQixFQUFFLGNBQWMsQ0FBQztvQkFDNUUsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7aUJBQ2hDOzs0QkFYRDs7U0FZYSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ3hUZXh0RGlmZkNvbXBvbmVudCB9IGZyb20gJy4vbmd4LXRleHQtZGlmZi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTG9hZGVyU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJy4vbG9hZGVyLXNwaW5uZXIvbG9hZGVyLXNwaW5uZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybWF0TGluZVBpcGUgfSBmcm9tICcuL2Zvcm1hdC1saW5lLnBpcGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXHJcbiAgZGVjbGFyYXRpb25zOiBbTmd4VGV4dERpZmZDb21wb25lbnQsIExvYWRlclNwaW5uZXJDb21wb25lbnQsIEZvcm1hdExpbmVQaXBlXSxcclxuICBleHBvcnRzOiBbTmd4VGV4dERpZmZDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hUZXh0RGlmZk1vZHVsZSB7fVxyXG4iXX0=

@@ -8,4 +8,6 @@ /**

*/
export { NgxTextDiffService, NgxTextDiffComponent, LoaderSppinerComponent, FormatLinePipe, isNil, isEmpty, NgxTextDiffModule } from './public_api';
export { NgxTextDiffService, NgxTextDiffComponent, NgxTextDiffModule } from './public_api';
export { FormatLinePipe as ɵb } from './lib/format-line.pipe';
export { LoaderSpinnerComponent as ɵa } from './lib/loader-spinner/loader-spinner.component';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC10ZXh0LWRpZmYvIiwic291cmNlcyI6WyJuZ3gtdGV4dC1kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSxvSUFBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC10ZXh0LWRpZmYvIiwic291cmNlcyI6WyJuZ3gtdGV4dC1kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSw0RUFBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsc0JBQXNCLElBQUksRUFBRSxFQUFDLE1BQU0sK0NBQStDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG5cbmV4cG9ydCB7Rm9ybWF0TGluZVBpcGUgYXMgybVifSBmcm9tICcuL2xpYi9mb3JtYXQtbGluZS5waXBlJztcbmV4cG9ydCB7TG9hZGVyU3Bpbm5lckNvbXBvbmVudCBhcyDJtWF9IGZyb20gJy4vbGliL2xvYWRlci1zcGlubmVyL2xvYWRlci1zcGlubmVyLmNvbXBvbmVudCc7Il19

@@ -10,7 +10,4 @@ /**

export { NgxTextDiffComponent } from './lib/ngx-text-diff.component';
export { LoaderSppinerComponent } from './lib/loader-sppiner/loader-sppiner.component';
export { FormatLinePipe } from './lib/format-line.pipe';
export { isNil, isEmpty } from './lib/ngx-text-diff.utils';
export { NgxTextDiffModule } from './lib/ngx-text-diff.module';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC10ZXh0LWRpZmYvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSxtQ0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxxQ0FBYywrQkFBK0IsQ0FBQztBQUM5Qyx1Q0FBYywrQ0FBK0MsQ0FBQztBQUM5RCwrQkFBYyx3QkFBd0IsQ0FBQztBQUV2QywrQkFBYywyQkFBMkIsQ0FBQztBQUMxQyxrQ0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LXRleHQtZGlmZlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL25neC10ZXh0LWRpZmYuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtdGV4dC1kaWZmLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9sb2FkZXItc3BwaW5lci9sb2FkZXItc3BwaW5lci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybWF0LWxpbmUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtdGV4dC1kaWZmLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL25neC10ZXh0LWRpZmYudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LXRleHQtZGlmZi5tb2R1bGUnO1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC10ZXh0LWRpZmYvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSxtQ0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxxQ0FBYywrQkFBK0IsQ0FBQztBQUM5QyxrQ0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LXRleHQtZGlmZlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL25neC10ZXh0LWRpZmYuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtdGV4dC1kaWZmLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZ3gtdGV4dC1kaWZmLm1vZHVsZSc7XG4iXX0=

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

import { Injectable, Pipe, NgModule, Component, Input, defineInjectable, ChangeDetectorRef } from '@angular/core';
import { Injectable, Pipe, Component, Input, NgModule, defineInjectable, ChangeDetectorRef } from '@angular/core';
import { DIFF_DELETE, DIFF_EQUAL, DIFF_INSERT, diff_match_patch } from 'diff-match-patch';

@@ -284,4 +284,4 @@ import { __awaiter } from 'tslib';

ngOnInit() {
if (this.diffContentObservable$) {
this.subscriptions.push(this.diffContentObservable$.subscribe(content => {
if (this.diffContent) {
this.subscriptions.push(this.diffContent.subscribe(content => {
this.left = content.leftContent;

@@ -382,3 +382,3 @@ this.right = content.rightContent;

selector: 'td-ngx-text-diff',
template: "<td-loader-sppiner [active]=\"loading\"></td-loader-sppiner>\r\n<div *ngIf=\"!loading\">\r\n <div class=\"td-wrapper\">\r\n <div class=\"td-toolbar-show-diff\">\r\n <label class=\"td-checkbox-container\">Show Lines with Diffs ({{diffsCount}})\r\n <input type=\"checkbox\"\r\n id=\"showDiffs\"\r\n [ngModel]=\"showLinesDiffs\"\r\n (ngModelChange)=\"showLinesDiffsChange($event)\"\r\n >\r\n <span class=\"checkmark\"></span>\r\n </label>\r\n </div>\r\n <div class=\"td-toolbar-select-format\" *ngIf=\"showBtnToolbar\">\r\n <div class=\"td-btn-group td-btn-group-toggle\" data-toggle=\"buttons\">\r\n <button *ngFor=\"let option of formatOptions\"\r\n [ngClass]=\"{'active': format === option.value, 'disabled': !!option.disabled}\"\r\n [name]=\"option.name\"\r\n [id]=\"option.id\"\r\n [disabled]=\"!!option.disabled\"\r\n (click)=\"setDiffTableFormat(option.value)\"\r\n >{{option.label}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"td-table-wrapper\">\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n {{(row.leftContent?.lineNumber !== -1) ?\r\n row.leftContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n <span>{{row.leftContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n {{(row.rightContent?.lineNumber !== -1) ?\r\n row.rightContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n <span>{{row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.rightContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container line-by-line\" *ngIf=\"format === 'LineByLine'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRowsLineByLine; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col-left\">{{row.leftContent?.lineNumber}}</td>\r\n <td scope=\"row\" class=\"fit-column line-number-col\">{{row.rightContent?.lineNumber}}</td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\">\r\n <span>{{row.leftContent?.prefix || row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.leftContent && row.leftContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.rightContent && row.rightContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
template: "<td-loader-spinner [active]=\"loading\"></td-loader-spinner>\r\n<div *ngIf=\"!loading\">\r\n <div class=\"td-wrapper\">\r\n <div class=\"td-toolbar-show-diff\">\r\n <label class=\"td-checkbox-container\">Show Lines with Diffs ({{diffsCount}})\r\n <input type=\"checkbox\"\r\n id=\"showDiffs\"\r\n [ngModel]=\"showLinesDiffs\"\r\n (ngModelChange)=\"showLinesDiffsChange($event)\"\r\n >\r\n <span class=\"checkmark\"></span>\r\n </label>\r\n </div>\r\n <div class=\"td-toolbar-select-format\" *ngIf=\"showBtnToolbar\">\r\n <div class=\"td-btn-group td-btn-group-toggle\" data-toggle=\"buttons\">\r\n <button *ngFor=\"let option of formatOptions\"\r\n [ngClass]=\"{'active': format === option.value, 'disabled': !!option.disabled}\"\r\n [name]=\"option.name\"\r\n [id]=\"option.id\"\r\n [disabled]=\"!!option.disabled\"\r\n (click)=\"setDiffTableFormat(option.value)\"\r\n >{{option.label}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"td-table-wrapper\">\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n {{(row.leftContent?.lineNumber !== -1) ?\r\n row.leftContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n <span>{{row.leftContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n {{(row.rightContent?.lineNumber !== -1) ?\r\n row.rightContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n <span>{{row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.rightContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container line-by-line\" *ngIf=\"format === 'LineByLine'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRowsLineByLine; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col-left\">{{row.leftContent?.lineNumber}}</td>\r\n <td scope=\"row\" class=\"fit-column line-number-col\">{{row.rightContent?.lineNumber}}</td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\">\r\n <span>{{row.leftContent?.prefix || row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.leftContent && row.leftContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.rightContent && row.rightContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
styles: [".td-wrapper{display:-ms-grid;display:grid;width:100%;grid-row-gap:10px;-ms-grid-columns:([col] 50%)[2];grid-template-columns:repeat(2,[col] 50%);-ms-grid-rows:([row] auto)[2];grid-template-rows:repeat(2,[row] auto);background-color:#fff;color:#444}.td-toolbar-show-diff{-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1}.td-toolbar-select-format{margin-left:auto;-ms-grid-column:2;grid-column:2;-ms-grid-row:1;grid-row:1}.td-table-container{-ms-grid-column:1;-ms-grid-column-span:1;grid-column:1/2;-ms-grid-row:2;grid-row:2;width:100%;max-width:100%;overflow-x:auto}.td-table-wrapper{display:flex;width:200%}.td-table{border:1px solid #a9a9a9;max-height:50vh;width:100%;max-width:100%}.fit-column{width:1px;white-space:nowrap}.line-number-col{border-right:1px solid #ddd;color:#999;text-align:right;background-color:#f7f7f7;padding-left:10px;padding-right:10px;font-size:87.5%}.line-number-col-left{color:#999;padding-left:10px;padding-right:10px;text-align:right;background-color:#f7f7f7;font-size:87.5%}.insert-row,.insert-row>.line-number-col{background-color:#dfd;border-color:#b4e2b4}.delete-row,.delete-row>.line-number-col{background-color:#fee8e9;border-color:#e9aeae}.empty-row{background-color:#f7f7f7;height:24px}.td-table td{border-top:0;padding-top:0;padding-bottom:0;white-space:nowrap;max-width:50%}pre{margin-bottom:0}td.content-col{padding:0;margin:0;line-height:24px}td.prefix-col{padding-left:10px;padding-right:10px;line-height:24px}.td-btn-group{border-radius:4px}.td-btn-group button{background-color:rgba(23,162,184,.7);border:1px solid #17a2b8;color:#fff;cursor:pointer;float:left}.td-btn-group button:not(:last-child){border-right:none}.td-btn-group button:first-child{-webkit-border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-bottomleft:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.td-btn-group button:last-child{-webkit-border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;border-top-right-radius:4px;border-bottom-right-radius:4px}.td-btn-group:after{content:'';clear:both;display:table}.td-btn-group button.active,.td-btn-group button:hover{background-color:#17a2b8}.td-checkbox-container{display:block;position:relative;padding-left:21px;margin-bottom:0;cursor:pointer;font-size:16px;line-height:28px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.td-checkbox-container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.checkmark{position:absolute;top:7px;left:0;height:16px;width:16px;background-color:#eee}.td-checkbox-container:hover input~.checkmark{background-color:#ccc}.td-checkbox-container input:checked~.checkmark{background-color:#17a2b8}.checkmark:after{content:\"\";position:absolute;display:none}.td-checkbox-container input:checked~.checkmark:after{display:block}.td-checkbox-container .checkmark:after{left:5px;top:3px;width:5px;height:10px;border:solid #fff;border-width:0 3px 3px 0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.insert-row>.highlight{background-color:#acf2bd!important}.delete-row>.highlight{background-color:#fdb8c0!important}"]

@@ -396,4 +396,4 @@ }] }

right: [{ type: Input }],
diffContent: [{ type: Input }],
loading: [{ type: Input }],
diffContentObservable$: [{ type: Input }],
showBtnToolbar: [{ type: Input }]

@@ -406,3 +406,3 @@ };

*/
class LoaderSppinerComponent {
class LoaderSpinnerComponent {
constructor() {

@@ -416,5 +416,5 @@ this.active = false;

}
LoaderSppinerComponent.decorators = [
LoaderSpinnerComponent.decorators = [
{ type: Component, args: [{
selector: 'td-loader-sppiner',
selector: 'td-loader-spinner',
template: "<div class=\"td-loading-roller\" *ngIf=\"active\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n</div>\n",

@@ -425,4 +425,4 @@ styles: [".td-loading-roller{display:inline-block;position:relative;width:64px;height:64px}.td-loading-roller div{-webkit-animation:1.2s cubic-bezier(.5,0,.5,1) infinite lds-roller;animation:1.2s cubic-bezier(.5,0,.5,1) infinite lds-roller;-webkit-transform-origin:32px 32px;transform-origin:32px 32px}.td-loading-roller div:after{content:\" \";display:block;position:absolute;width:6px;height:6px;border-radius:50%;background:#000;margin:-3px 0 0 -3px}.td-loading-roller div:nth-child(1){-webkit-animation-delay:-36ms;animation-delay:-36ms}.td-loading-roller div:nth-child(1):after{top:50px;left:50px}.td-loading-roller div:nth-child(2){-webkit-animation-delay:-72ms;animation-delay:-72ms}.td-loading-roller div:nth-child(2):after{top:54px;left:45px}.td-loading-roller div:nth-child(3){-webkit-animation-delay:-108ms;animation-delay:-108ms}.td-loading-roller div:nth-child(3):after{top:57px;left:39px}.td-loading-roller div:nth-child(4){-webkit-animation-delay:-144ms;animation-delay:-144ms}.td-loading-roller div:nth-child(4):after{top:58px;left:32px}.td-loading-roller div:nth-child(5){-webkit-animation-delay:-.18s;animation-delay:-.18s}.td-loading-roller div:nth-child(5):after{top:57px;left:25px}.td-loading-roller div:nth-child(6){-webkit-animation-delay:-216ms;animation-delay:-216ms}.td-loading-roller div:nth-child(6):after{top:54px;left:19px}.td-loading-roller div:nth-child(7){-webkit-animation-delay:-252ms;animation-delay:-252ms}.td-loading-roller div:nth-child(7):after{top:50px;left:14px}.td-loading-roller div:nth-child(8){-webkit-animation-delay:-288ms;animation-delay:-288ms}.td-loading-roller div:nth-child(8):after{top:45px;left:10px}@-webkit-keyframes lds-roller{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes lds-roller{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}"]

/** @nocollapse */
LoaderSppinerComponent.ctorParameters = () => [];
LoaderSppinerComponent.propDecorators = {
LoaderSpinnerComponent.ctorParameters = () => [];
LoaderSpinnerComponent.propDecorators = {
active: [{ type: Input }]

@@ -469,3 +469,3 @@ };

imports: [CommonModule, FormsModule],
declarations: [NgxTextDiffComponent, LoaderSppinerComponent, FormatLinePipe],
declarations: [NgxTextDiffComponent, LoaderSpinnerComponent, FormatLinePipe],
exports: [NgxTextDiffComponent]

@@ -485,4 +485,4 @@ },] }

export { NgxTextDiffService, NgxTextDiffComponent, LoaderSppinerComponent, FormatLinePipe, isNil, isEmpty, NgxTextDiffModule };
export { NgxTextDiffService, NgxTextDiffComponent, NgxTextDiffModule, FormatLinePipe as ɵb, LoaderSpinnerComponent as ɵa };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vbmd4LXRleHQtZGlmZi9saWIvbmd4LXRleHQtZGlmZi51dGlscy50cyIsIm5nOi8vbmd4LXRleHQtZGlmZi9saWIvbmd4LXRleHQtZGlmZi5zZXJ2aWNlLnRzIiwibmc6Ly9uZ3gtdGV4dC1kaWZmL2xpYi9uZ3gtdGV4dC1kaWZmLmNvbXBvbmVudC50cyIsIm5nOi8vbmd4LXRleHQtZGlmZi9saWIvbG9hZGVyLXNwcGluZXIvbG9hZGVyLXNwcGluZXIuY29tcG9uZW50LnRzIiwibmc6Ly9uZ3gtdGV4dC1kaWZmL2xpYi9mb3JtYXQtbGluZS5waXBlLnRzIiwibmc6Ly9uZ3gtdGV4dC1kaWZmL2xpYi9uZ3gtdGV4dC1kaWZmLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgaXNOaWwgPSB2YWwgPT4gdmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSBudWxsO1xyXG5leHBvcnQgY29uc3QgaXNFbXB0eSA9IHZhbCA9PiB2YWwgPT0gbnVsbCB8fCAhKE9iamVjdC5rZXlzKHZhbCkgfHwgdmFsKS5sZW5ndGggfHwgKE9iamVjdC5rZXlzKHZhbCkgfHwgdmFsKS5sZW5ndGggPT09IDA7XHJcbiIsImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlmZiwgRElGRl9ERUxFVEUsIERJRkZfRVFVQUwsIERJRkZfSU5TRVJULCBkaWZmX21hdGNoX3BhdGNoIH0gZnJvbSAnZGlmZi1tYXRjaC1wYXRjaCc7XHJcbmltcG9ydCB7IERpZmZMaW5lUmVzdWx0LCBEaWZmUGFydCwgRGlmZlRhYmxlUm93UmVzdWx0IH0gZnJvbSAnLi9uZ3gtdGV4dC1kaWZmLm1vZGVsJztcclxuaW1wb3J0IHsgaXNFbXB0eSwgaXNOaWwgfSBmcm9tICcuL25neC10ZXh0LWRpZmYudXRpbHMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4VGV4dERpZmZTZXJ2aWNlIHtcclxuICBkaWZmUGFyc2VyOiBkaWZmX21hdGNoX3BhdGNoO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuaW5pdFBhcnNlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0UGFyc2VyKCkge1xyXG4gICAgdGhpcy5kaWZmUGFyc2VyID0gbmV3IGRpZmZfbWF0Y2hfcGF0Y2goKTtcclxuICB9XHJcblxyXG4gIGdldERpZmZzQnlMaW5lcyhsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcpOiBQcm9taXNlPERpZmZUYWJsZVJvd1Jlc3VsdFtdPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2U8RGlmZlRhYmxlUm93UmVzdWx0W10+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMuZGlmZlBhcnNlci5kaWZmX2xpbmVzVG9DaGFyc18obGVmdCwgcmlnaHQpO1xyXG4gICAgICBjb25zdCBsaW5lVGV4dDEgPSBhLmNoYXJzMTtcclxuICAgICAgY29uc3QgbGluZVRleHQyID0gYS5jaGFyczI7XHJcbiAgICAgIGNvbnN0IGxpbmVzQXJyYXkgPSBhLmxpbmVBcnJheTtcclxuICAgICAgY29uc3QgZGlmZnM6IERpZmZbXSA9IHRoaXMuZGlmZlBhcnNlci5kaWZmX21haW4obGluZVRleHQxLCBsaW5lVGV4dDIsIHRydWUpO1xyXG4gICAgICB0aGlzLmRpZmZQYXJzZXIuZGlmZl9jaGFyc1RvTGluZXNfKGRpZmZzLCBsaW5lc0FycmF5KTtcclxuICAgICAgY29uc3Qgcm93czogRGlmZlRhYmxlUm93UmVzdWx0W10gPSB0aGlzLmZvcm1hdE91dHB1dE5ldyhkaWZmcywgbGluZXNBcnJheSk7XHJcbiAgICAgIGlmICghcm93cykge1xyXG4gICAgICAgIHJlamVjdCgnRXJyb3InKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmVzb2x2ZShyb3dzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRPdXRwdXROZXcoZGlmZnM6IERpZmZbXSwgbGluZXM/OiBzdHJpbmdbXSk6IERpZmZUYWJsZVJvd1Jlc3VsdFtdIHtcclxuICAgIGlmIChsaW5lcykge1xyXG4gICAgICByZXR1cm4gdGhpcy5mb3JtYXREaWZmc0Zyb21MaW5lcyhkaWZmcywgbGluZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXREaWZmc0Zyb21MaW5lcyhkaWZmczogRGlmZltdLCBsaW5lczogc3RyaW5nW10pOiBEaWZmVGFibGVSb3dSZXN1bHRbXSB7XHJcbiAgICBsaW5lcy5zcGxpY2UoMCwgMSk7XHJcbiAgICBsZXQgbGluZUxlZnQgPSAxO1xyXG4gICAgbGV0IGxpbmVSaWdodCA9IDE7XHJcbiAgICBjb25zdCBkaWZmUm93c1Jlc3VsdCA9IGRpZmZzLnJlZHVjZSgocm93czogRGlmZlRhYmxlUm93UmVzdWx0W10sIGRpZmY6IERpZmYpID0+IHtcclxuICAgICAgaWYgKCFyb3dzKSB7XHJcbiAgICAgICAgcm93cyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBkaWZmVmFsdWVzID0gZGlmZlsxXTtcclxuICAgICAgd2hpbGUgKCFpc05pbChkaWZmVmFsdWVzKSB8fCAhaXNFbXB0eShkaWZmVmFsdWVzKSB8fCBkaWZmVmFsdWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCBmaW5kSW5kZXggPSBsaW5lcy5maW5kSW5kZXgobGluZSA9PiBkaWZmVmFsdWVzLmluY2x1ZGVzKGxpbmUpKTtcclxuICAgICAgICBpZiAoZmluZEluZGV4ID49IDApIHtcclxuICAgICAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1tmaW5kSW5kZXhdO1xyXG4gICAgICAgICAgbGV0IGxlZnREaWZmUm93OiBEaWZmVGFibGVSb3dSZXN1bHQgPSBudWxsO1xyXG4gICAgICAgICAgbGV0IHJpZ2h0RGlmZlJvdzogRGlmZlRhYmxlUm93UmVzdWx0ID0gbnVsbDtcclxuICAgICAgICAgIGxldCBsZWZ0Q29udGVudDogRGlmZkxpbmVSZXN1bHQgPSBudWxsO1xyXG4gICAgICAgICAgbGV0IHJpZ2h0Q29udGVudDogRGlmZkxpbmVSZXN1bHQgPSBudWxsO1xyXG4gICAgICAgICAgbGV0IHJvd1RlbXA6IERpZmZUYWJsZVJvd1Jlc3VsdCA9IG51bGw7XHJcbiAgICAgICAgICBzd2l0Y2ggKGRpZmZbMF0pIHtcclxuICAgICAgICAgICAgY2FzZSBESUZGX0VRVUFMOlxyXG4gICAgICAgICAgICAgIGxlZnRDb250ZW50ID0ge1xyXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZUxlZnQsXHJcbiAgICAgICAgICAgICAgICBsaW5lQ29udGVudDogbGluZSxcclxuICAgICAgICAgICAgICAgIGxpbmVEaWZmczogW10sXHJcbiAgICAgICAgICAgICAgICBwcmVmaXg6ICcnXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICByaWdodENvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lUmlnaHQsXHJcbiAgICAgICAgICAgICAgICBsaW5lQ29udGVudDogbGluZSxcclxuICAgICAgICAgICAgICAgIGxpbmVEaWZmczogW10sXHJcbiAgICAgICAgICAgICAgICBwcmVmaXg6ICcnXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICByb3dUZW1wID0ge1xyXG4gICAgICAgICAgICAgICAgbGVmdENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICByaWdodENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICBiZWxvbmdUbzogJ2JvdGgnLFxyXG4gICAgICAgICAgICAgICAgaGFzRGlmZnM6IGZhbHNlXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICByb3dzLnB1c2gocm93VGVtcCk7XHJcbiAgICAgICAgICAgICAgbGluZVJpZ2h0ID0gbGluZVJpZ2h0ICsgMTtcclxuICAgICAgICAgICAgICBsaW5lTGVmdCA9IGxpbmVMZWZ0ICsgMTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBESUZGX0lOU0VSVDpcclxuICAgICAgICAgICAgICBsZWZ0RGlmZlJvdyA9IHJvd3MuZmluZChcclxuICAgICAgICAgICAgICAgIHJvdyA9PiByb3cubGVmdENvbnRlbnQgJiYgIXJvdy5yaWdodENvbnRlbnQgJiYgcm93LmxlZnRDb250ZW50LmxpbmVOdW1iZXIgPT09IGxpbmVSaWdodCAmJiByb3cubGVmdENvbnRlbnQucHJlZml4ICE9PSAnJ1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgcmlnaHRDb250ZW50ID0ge1xyXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZVJpZ2h0LFxyXG4gICAgICAgICAgICAgICAgbGluZUNvbnRlbnQ6IGxpbmUsXHJcbiAgICAgICAgICAgICAgICBsaW5lRGlmZnM6IFt7IGNvbnRlbnQ6IGxpbmUsIGlzRGlmZjogdHJ1ZSB9XSxcclxuICAgICAgICAgICAgICAgIHByZWZpeDogJysnXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICBpZiAobGVmdERpZmZSb3cpIHtcclxuICAgICAgICAgICAgICAgIGxlZnREaWZmUm93LnJpZ2h0Q29udGVudCA9IHJpZ2h0Q29udGVudDtcclxuICAgICAgICAgICAgICAgIGxlZnREaWZmUm93LmxlZnRDb250ZW50LmxpbmVEaWZmcyA9IHRoaXMuZ2V0RGlmZlBhcnRzKFxyXG4gICAgICAgICAgICAgICAgICBsZWZ0RGlmZlJvdy5sZWZ0Q29udGVudC5saW5lQ29udGVudCxcclxuICAgICAgICAgICAgICAgICAgbGVmdERpZmZSb3cucmlnaHRDb250ZW50LmxpbmVDb250ZW50XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgbGVmdERpZmZSb3cucmlnaHRDb250ZW50LmxpbmVEaWZmcyA9IHRoaXMuZ2V0RGlmZlBhcnRzKFxyXG4gICAgICAgICAgICAgICAgICBsZWZ0RGlmZlJvdy5yaWdodENvbnRlbnQubGluZUNvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgIGxlZnREaWZmUm93LmxlZnRDb250ZW50LmxpbmVDb250ZW50XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgbGVmdERpZmZSb3cuYmVsb25nVG8gPSAnYm90aCc7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJvd3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIGxlZnRDb250ZW50OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICByaWdodENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgIGhhc0RpZmZzOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICBiZWxvbmdUbzogJ3JpZ2h0J1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGxpbmVSaWdodCA9IGxpbmVSaWdodCArIDE7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgRElGRl9ERUxFVEU6XHJcbiAgICAgICAgICAgICAgcmlnaHREaWZmUm93ID0gcm93cy5maW5kKFxyXG4gICAgICAgICAgICAgICAgcm93ID0+ICFyb3cubGVmdENvbnRlbnQgJiYgcm93LnJpZ2h0Q29udGVudCAmJiByb3cucmlnaHRDb250ZW50LmxpbmVOdW1iZXIgPT09IGxpbmVMZWZ0ICYmIHJvdy5yaWdodENvbnRlbnQucHJlZml4ICE9PSAnJ1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgbGVmdENvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTGVmdCxcclxuICAgICAgICAgICAgICAgIGxpbmVDb250ZW50OiBsaW5lLFxyXG4gICAgICAgICAgICAgICAgbGluZURpZmZzOiBbeyBjb250ZW50OiBsaW5lLCBpc0RpZmY6IHRydWUgfV0sXHJcbiAgICAgICAgICAgICAgICBwcmVmaXg6ICctJ1xyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgaWYgKHJpZ2h0RGlmZlJvdykge1xyXG4gICAgICAgICAgICAgICAgcmlnaHREaWZmUm93LmxlZnRDb250ZW50ID0gbGVmdENvbnRlbnQ7XHJcbiAgICAgICAgICAgICAgICByaWdodERpZmZSb3cubGVmdENvbnRlbnQubGluZURpZmZzID0gdGhpcy5nZXREaWZmUGFydHMoXHJcbiAgICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5sZWZ0Q29udGVudC5saW5lQ29udGVudCxcclxuICAgICAgICAgICAgICAgICAgcmlnaHREaWZmUm93LnJpZ2h0Q29udGVudC5saW5lQ29udGVudFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5yaWdodENvbnRlbnQubGluZURpZmZzID0gdGhpcy5nZXREaWZmUGFydHMoXHJcbiAgICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5yaWdodENvbnRlbnQubGluZUNvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5sZWZ0Q29udGVudC5saW5lQ29udGVudFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5iZWxvbmdUbyA9ICdib3RoJztcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcm93cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgbGVmdENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgIHJpZ2h0Q29udGVudDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgaGFzRGlmZnM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIGJlbG9uZ1RvOiAnbGVmdCdcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsaW5lTGVmdCA9IGxpbmVMZWZ0ICsgMTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBkaWZmVmFsdWVzID0gZGlmZlZhbHVlcy5yZXBsYWNlKGxpbmUsICcnKTtcclxuICAgICAgICAgIGxpbmVzLnNwbGljZShmaW5kSW5kZXgsIDEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiByb3dzO1xyXG4gICAgfSwgW10pO1xyXG5cclxuICAgIHJldHVybiBkaWZmUm93c1Jlc3VsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGlmZlBhcnRzKHZhbHVlOiBzdHJpbmcsIGNvbXBhcmVWYWx1ZTogc3RyaW5nKTogRGlmZlBhcnRbXSB7XHJcbiAgICBjb25zdCBkaWZmUGFydHM6IERpZmZQYXJ0W10gPSBbXTtcclxuICAgIGxldCBpID0gMDtcclxuICAgIGxldCBqID0gMDtcclxuICAgIGxldCBzaGFyZWQgPSAnJztcclxuICAgIGxldCBkaWZmID0gJyc7XHJcblxyXG4gICAgd2hpbGUgKGkgPCB2YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgaWYgKHZhbHVlW2ldID09PSBjb21wYXJlVmFsdWVbal0gJiYgaiA8IGNvbXBhcmVWYWx1ZS5sZW5ndGgpIHtcclxuICAgICAgICBpZiAoZGlmZiAhPT0gJycpIHtcclxuICAgICAgICAgIGRpZmZQYXJ0cy5wdXNoKHsgY29udGVudDogZGlmZiwgaXNEaWZmOiB0cnVlIH0pO1xyXG4gICAgICAgICAgZGlmZiA9ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzaGFyZWQgKz0gdmFsdWVbaV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHNoYXJlZCAhPT0gJycpIHtcclxuICAgICAgICAgIGRpZmZQYXJ0cy5wdXNoKHsgY29udGVudDogc2hhcmVkLCBpc0RpZmY6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgc2hhcmVkID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRpZmYgKz0gdmFsdWVbaV07XHJcbiAgICAgIH1cclxuICAgICAgaSsrO1xyXG4gICAgICBqKys7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRpZmYgIT09ICcnKSB7XHJcbiAgICAgIGRpZmZQYXJ0cy5wdXNoKHsgY29udGVudDogZGlmZiwgaXNEaWZmOiB0cnVlIH0pO1xyXG4gICAgfSBlbHNlIGlmIChzaGFyZWQgIT09ICcnKSB7XHJcbiAgICAgIGRpZmZQYXJ0cy5wdXNoKHsgY29udGVudDogc2hhcmVkLCBpc0RpZmY6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkaWZmUGFydHM7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlmZkNvbnRlbnQsIERpZmZMaW5lUmVzdWx0LCBEaWZmUGFydCwgRGlmZlRhYmxlRm9ybWF0LCBEaWZmVGFibGVGb3JtYXRPcHRpb24sIERpZmZUYWJsZVJvd1Jlc3VsdCB9IGZyb20gJy4vbmd4LXRleHQtZGlmZi5tb2RlbCc7XHJcbmltcG9ydCB7IE5neFRleHREaWZmU2VydmljZSB9IGZyb20gJy4vbmd4LXRleHQtZGlmZi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RkLW5neC10ZXh0LWRpZmYnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtdGV4dC1kaWZmLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9uZ3gtdGV4dC1kaWZmLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4VGV4dERpZmZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGZvcm1hdDogRGlmZlRhYmxlRm9ybWF0ID0gJ1NpZGVCeVNpZGUnO1xyXG4gIEBJbnB1dCgpIGxlZnQgPSAnJztcclxuICBASW5wdXQoKSByaWdodCA9ICcnO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcclxuICBASW5wdXQoKSBkaWZmQ29udGVudE9ic2VydmFibGUkOiBPYnNlcnZhYmxlPERpZmZDb250ZW50PjtcclxuICBASW5wdXQoKSBzaG93QnRuVG9vbGJhciA9IHRydWU7XHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICB0YWJsZVJvd3M6IERpZmZUYWJsZVJvd1Jlc3VsdFtdID0gW107XHJcbiAgZmlsdGVyZWRUYWJsZVJvd3M6IERpZmZUYWJsZVJvd1Jlc3VsdFtdID0gW107XHJcbiAgdGFibGVSb3dzTGluZUJ5TGluZTogRGlmZlRhYmxlUm93UmVzdWx0W10gPSBbXTtcclxuICBmaWx0ZXJlZFRhYmxlUm93c0xpbmVCeUxpbmU6IERpZmZUYWJsZVJvd1Jlc3VsdFtdID0gW107XHJcbiAgc2hvd0xpbmVzRGlmZnMgPSBmYWxzZTtcclxuICBkaWZmc0NvdW50ID0gMDtcclxuXHJcbiAgZm9ybWF0T3B0aW9uczogRGlmZlRhYmxlRm9ybWF0T3B0aW9uW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGlkOiAnc2lkZS1ieS1zaWRlJyxcclxuICAgICAgbmFtZTogJ3NpZGUtYnktc2lkZScsXHJcbiAgICAgIGxhYmVsOiAnU2lkZSBieSBTaWRlJyxcclxuICAgICAgdmFsdWU6ICdTaWRlQnlTaWRlJyxcclxuICAgICAgaWNvbjogJ2xhLWNvZGUnXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogJ2xpbmUtYnktbGluZScsXHJcbiAgICAgIG5hbWU6ICdsaW5lLWJ5LWxpbmUnLFxyXG4gICAgICBsYWJlbDogJ0xpbmUgYnkgTGluZScsXHJcbiAgICAgIHZhbHVlOiAnTGluZUJ5TGluZScsXHJcbiAgICAgIGljb246ICdsYS1maWxlLXRleHQnXHJcbiAgICB9XHJcbiAgXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWZmOiBOZ3hUZXh0RGlmZlNlcnZpY2UsIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmRpZmZDb250ZW50T2JzZXJ2YWJsZSQpIHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5kaWZmQ29udGVudE9ic2VydmFibGUkLnN1YnNjcmliZShjb250ZW50ID0+IHtcclxuICAgICAgICAgIHRoaXMubGVmdCA9IGNvbnRlbnQubGVmdENvbnRlbnQ7XHJcbiAgICAgICAgICB0aGlzLnJpZ2h0ID0gY29udGVudC5yaWdodENvbnRlbnQ7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckRpZmZzKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMucmVuZGVyRGlmZnMoKS50aGVuKCk7XHJcbiAgfVxyXG5cclxuICBzaG93TGluZXNEaWZmc0NoYW5nZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zaG93TGluZXNEaWZmcyA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMuc2hvd0xpbmVzRGlmZnMpIHtcclxuICAgICAgdGhpcy5maWx0ZXJlZFRhYmxlUm93cyA9IHRoaXMudGFibGVSb3dzLmZpbHRlcihcclxuICAgICAgICByb3cgPT4gKHJvdy5sZWZ0Q29udGVudCAmJiByb3cubGVmdENvbnRlbnQucHJlZml4ID09PSAnLScpIHx8IChyb3cucmlnaHRDb250ZW50ICYmIHJvdy5yaWdodENvbnRlbnQucHJlZml4ID09PSAnKycpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3NMaW5lQnlMaW5lID0gdGhpcy50YWJsZVJvd3NMaW5lQnlMaW5lLmZpbHRlcihcclxuICAgICAgICByb3cgPT4gKHJvdy5sZWZ0Q29udGVudCAmJiByb3cubGVmdENvbnRlbnQucHJlZml4ID09PSAnLScpIHx8IChyb3cucmlnaHRDb250ZW50ICYmIHJvdy5yaWdodENvbnRlbnQucHJlZml4ID09PSAnKycpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkVGFibGVSb3dzID0gdGhpcy50YWJsZVJvd3M7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3NMaW5lQnlMaW5lID0gdGhpcy50YWJsZVJvd3NMaW5lQnlMaW5lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGlmZlRhYmxlRm9ybWF0KGZvcm1hdDogRGlmZlRhYmxlRm9ybWF0KSB7XHJcbiAgICB0aGlzLmZvcm1hdCA9IGZvcm1hdDtcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlbmRlckRpZmZzKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaWZmc0NvdW50ID0gMDtcclxuICAgICAgdGhpcy50YWJsZVJvd3MgPSBhd2FpdCB0aGlzLmRpZmYuZ2V0RGlmZnNCeUxpbmVzKHRoaXMubGVmdCwgdGhpcy5yaWdodCk7XHJcbiAgICAgIHRoaXMudGFibGVSb3dzTGluZUJ5TGluZSA9IHRoaXMudGFibGVSb3dzLnJlZHVjZSgodGFibGVMaW5lQnlMaW5lOiBEaWZmVGFibGVSb3dSZXN1bHRbXSwgcm93OiBEaWZmVGFibGVSb3dSZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAoIXRhYmxlTGluZUJ5TGluZSkge1xyXG4gICAgICAgICAgdGFibGVMaW5lQnlMaW5lID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyb3cuaGFzRGlmZnMpIHtcclxuICAgICAgICAgIGlmIChyb3cubGVmdENvbnRlbnQpIHtcclxuICAgICAgICAgICAgdGFibGVMaW5lQnlMaW5lLnB1c2goe1xyXG4gICAgICAgICAgICAgIGxlZnRDb250ZW50OiByb3cubGVmdENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgcmlnaHRDb250ZW50OiBudWxsLFxyXG4gICAgICAgICAgICAgIGJlbG9uZ1RvOiByb3cuYmVsb25nVG8sXHJcbiAgICAgICAgICAgICAgaGFzRGlmZnM6IHRydWVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocm93LnJpZ2h0Q29udGVudCkge1xyXG4gICAgICAgICAgICB0YWJsZUxpbmVCeUxpbmUucHVzaCh7XHJcbiAgICAgICAgICAgICAgbGVmdENvbnRlbnQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgcmlnaHRDb250ZW50OiByb3cucmlnaHRDb250ZW50LFxyXG4gICAgICAgICAgICAgIGJlbG9uZ1RvOiByb3cuYmVsb25nVG8sXHJcbiAgICAgICAgICAgICAgaGFzRGlmZnM6IHRydWVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRhYmxlTGluZUJ5TGluZS5wdXNoKHJvdyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGFibGVMaW5lQnlMaW5lO1xyXG4gICAgICB9LCBbXSk7XHJcbiAgICAgIHRoaXMuZGlmZnNDb3VudCA9IHRoaXMudGFibGVSb3dzLmZpbHRlcihcclxuICAgICAgICByb3cgPT4gKHJvdy5sZWZ0Q29udGVudCAmJiByb3cubGVmdENvbnRlbnQucHJlZml4ID09PSAnLScpIHx8IChyb3cucmlnaHRDb250ZW50ICYmIHJvdy5yaWdodENvbnRlbnQucHJlZml4ID09PSAnKycpXHJcbiAgICAgICkubGVuZ3RoO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkVGFibGVSb3dzID0gdGhpcy50YWJsZVJvd3M7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3NMaW5lQnlMaW5lID0gdGhpcy50YWJsZVJvd3NMaW5lQnlMaW5lO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0gY2F0Y2ggKGUpIHt9XHJcbiAgfVxyXG5cclxuICB0cmFja1RhYmxlUm93cyhpbmRleCwgcm93OiBEaWZmVGFibGVSb3dSZXN1bHQpIHtcclxuICAgIHJldHVybiByb3cgJiYgcm93LmxlZnRDb250ZW50ID8gcm93LmxlZnRDb250ZW50LmxpbmVDb250ZW50IDogcm93ICYmIHJvdy5yaWdodENvbnRlbnQgPyByb3cucmlnaHRDb250ZW50LmxpbmVDb250ZW50IDogdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tEaWZmcyhpbmRleCwgZGlmZjogRGlmZlBhcnQpIHtcclxuICAgIHJldHVybiBkaWZmICYmIGRpZmYuY29udGVudCA/IGRpZmYuY29udGVudCA6IHVuZGVmaW5lZDtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RkLWxvYWRlci1zcHBpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvYWRlci1zcHBpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbG9hZGVyLXNwcGluZXIuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIExvYWRlclNwcGluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBhY3RpdmUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxufVxuIiwiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdmb3JtYXRMaW5lJ1xufSlcbmV4cG9ydCBjbGFzcyBGb3JtYXRMaW5lUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0obGluZTogc3RyaW5nLCBkaWZmcz86IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBpZiAoIWxpbmUpIHtcbiAgICAgIHJldHVybiAnICc7XG4gICAgfVxuICAgIGlmICghIWRpZmZzICYmIGRpZmZzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8qZGlmZnMuZm9yRWFjaChkaWZmID0+IHtcbiAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZShkaWZmLCBgPHNwYW4gY2xhc3M9XCJoaWdobGlcIj4ke2RpZmZ9PC9zcGFuPmApO1xuICAgICAgfSk7Ki9cbiAgICB9XG4gICAgcmV0dXJuIGxpbmVcbiAgICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpXG4gICAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpXG4gICAgICAucmVwbGFjZSgvPi9nLCAnJmd0OycpXG4gICAgICAucmVwbGFjZSgvXCIvZywgJyZxdW90OycpXG4gICAgICAucmVwbGFjZSgvIC9nLCAnJm5ic3A7Jyk7XG4gIH1cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5neFRleHREaWZmQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtdGV4dC1kaWZmLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTG9hZGVyU3BwaW5lckNvbXBvbmVudCB9IGZyb20gJy4vbG9hZGVyLXNwcGluZXIvbG9hZGVyLXNwcGluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1hdExpbmVQaXBlIH0gZnJvbSAnLi9mb3JtYXQtbGluZS5waXBlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxyXG4gIGRlY2xhcmF0aW9uczogW05neFRleHREaWZmQ29tcG9uZW50LCBMb2FkZXJTcHBpbmVyQ29tcG9uZW50LCBGb3JtYXRMaW5lUGlwZV0sXHJcbiAgZXhwb3J0czogW05neFRleHREaWZmQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4VGV4dERpZmZNb2R1bGUge31cclxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE1BQWEsS0FBSyxHQUFHLEdBQUcsSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUM7O0FBQzlELE1BQWEsT0FBTyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxNQUFNLEtBQUssQ0FBQzs7Ozs7O0FDRHhIO0lBV0U7UUFDRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7S0FDbkI7Ozs7SUFFTyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDOzs7Ozs7O0lBRzNDLGVBQWUsQ0FBQyxJQUFZLEVBQUUsS0FBYTtRQUN6QyxPQUFPLElBQUksT0FBTyxDQUF1QixDQUFDLE9BQU8sRUFBRSxNQUFNOztZQUN2RCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzs7WUFDMUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQzs7WUFDM0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQzs7WUFDM0IsTUFBTSxVQUFV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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vbmd4LXRleHQtZGlmZi9saWIvbmd4LXRleHQtZGlmZi51dGlscy50cyIsIm5nOi8vbmd4LXRleHQtZGlmZi9saWIvbmd4LXRleHQtZGlmZi5zZXJ2aWNlLnRzIiwibmc6Ly9uZ3gtdGV4dC1kaWZmL2xpYi9uZ3gtdGV4dC1kaWZmLmNvbXBvbmVudC50cyIsIm5nOi8vbmd4LXRleHQtZGlmZi9saWIvbG9hZGVyLXNwaW5uZXIvbG9hZGVyLXNwaW5uZXIuY29tcG9uZW50LnRzIiwibmc6Ly9uZ3gtdGV4dC1kaWZmL2xpYi9mb3JtYXQtbGluZS5waXBlLnRzIiwibmc6Ly9uZ3gtdGV4dC1kaWZmL2xpYi9uZ3gtdGV4dC1kaWZmLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgaXNOaWwgPSB2YWwgPT4gdmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSBudWxsO1xyXG5leHBvcnQgY29uc3QgaXNFbXB0eSA9IHZhbCA9PiB2YWwgPT0gbnVsbCB8fCAhKE9iamVjdC5rZXlzKHZhbCkgfHwgdmFsKS5sZW5ndGggfHwgKE9iamVjdC5rZXlzKHZhbCkgfHwgdmFsKS5sZW5ndGggPT09IDA7XHJcbiIsImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlmZiwgRElGRl9ERUxFVEUsIERJRkZfRVFVQUwsIERJRkZfSU5TRVJULCBkaWZmX21hdGNoX3BhdGNoIH0gZnJvbSAnZGlmZi1tYXRjaC1wYXRjaCc7XHJcbmltcG9ydCB7IERpZmZMaW5lUmVzdWx0LCBEaWZmUGFydCwgRGlmZlRhYmxlUm93UmVzdWx0IH0gZnJvbSAnLi9uZ3gtdGV4dC1kaWZmLm1vZGVsJztcclxuaW1wb3J0IHsgaXNFbXB0eSwgaXNOaWwgfSBmcm9tICcuL25neC10ZXh0LWRpZmYudXRpbHMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4VGV4dERpZmZTZXJ2aWNlIHtcclxuICBkaWZmUGFyc2VyOiBkaWZmX21hdGNoX3BhdGNoO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuaW5pdFBhcnNlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0UGFyc2VyKCkge1xyXG4gICAgdGhpcy5kaWZmUGFyc2VyID0gbmV3IGRpZmZfbWF0Y2hfcGF0Y2goKTtcclxuICB9XHJcblxyXG4gIGdldERpZmZzQnlMaW5lcyhsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcpOiBQcm9taXNlPERpZmZUYWJsZVJvd1Jlc3VsdFtdPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2U8RGlmZlRhYmxlUm93UmVzdWx0W10+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMuZGlmZlBhcnNlci5kaWZmX2xpbmVzVG9DaGFyc18obGVmdCwgcmlnaHQpO1xyXG4gICAgICBjb25zdCBsaW5lVGV4dDEgPSBhLmNoYXJzMTtcclxuICAgICAgY29uc3QgbGluZVRleHQyID0gYS5jaGFyczI7XHJcbiAgICAgIGNvbnN0IGxpbmVzQXJyYXkgPSBhLmxpbmVBcnJheTtcclxuICAgICAgY29uc3QgZGlmZnM6IERpZmZbXSA9IHRoaXMuZGlmZlBhcnNlci5kaWZmX21haW4obGluZVRleHQxLCBsaW5lVGV4dDIsIHRydWUpO1xyXG4gICAgICB0aGlzLmRpZmZQYXJzZXIuZGlmZl9jaGFyc1RvTGluZXNfKGRpZmZzLCBsaW5lc0FycmF5KTtcclxuICAgICAgY29uc3Qgcm93czogRGlmZlRhYmxlUm93UmVzdWx0W10gPSB0aGlzLmZvcm1hdE91dHB1dE5ldyhkaWZmcywgbGluZXNBcnJheSk7XHJcbiAgICAgIGlmICghcm93cykge1xyXG4gICAgICAgIHJlamVjdCgnRXJyb3InKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmVzb2x2ZShyb3dzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRPdXRwdXROZXcoZGlmZnM6IERpZmZbXSwgbGluZXM/OiBzdHJpbmdbXSk6IERpZmZUYWJsZVJvd1Jlc3VsdFtdIHtcclxuICAgIGlmIChsaW5lcykge1xyXG4gICAgICByZXR1cm4gdGhpcy5mb3JtYXREaWZmc0Zyb21MaW5lcyhkaWZmcywgbGluZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXREaWZmc0Zyb21MaW5lcyhkaWZmczogRGlmZltdLCBsaW5lczogc3RyaW5nW10pOiBEaWZmVGFibGVSb3dSZXN1bHRbXSB7XHJcbiAgICBsaW5lcy5zcGxpY2UoMCwgMSk7XHJcbiAgICBsZXQgbGluZUxlZnQgPSAxO1xyXG4gICAgbGV0IGxpbmVSaWdodCA9IDE7XHJcbiAgICBjb25zdCBkaWZmUm93c1Jlc3VsdCA9IGRpZmZzLnJlZHVjZSgocm93czogRGlmZlRhYmxlUm93UmVzdWx0W10sIGRpZmY6IERpZmYpID0+IHtcclxuICAgICAgaWYgKCFyb3dzKSB7XHJcbiAgICAgICAgcm93cyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBkaWZmVmFsdWVzID0gZGlmZlsxXTtcclxuICAgICAgd2hpbGUgKCFpc05pbChkaWZmVmFsdWVzKSB8fCAhaXNFbXB0eShkaWZmVmFsdWVzKSB8fCBkaWZmVmFsdWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCBmaW5kSW5kZXggPSBsaW5lcy5maW5kSW5kZXgobGluZSA9PiBkaWZmVmFsdWVzLmluY2x1ZGVzKGxpbmUpKTtcclxuICAgICAgICBpZiAoZmluZEluZGV4ID49IDApIHtcclxuICAgICAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1tmaW5kSW5kZXhdO1xyXG4gICAgICAgICAgbGV0IGxlZnREaWZmUm93OiBEaWZmVGFibGVSb3dSZXN1bHQgPSBudWxsO1xyXG4gICAgICAgICAgbGV0IHJpZ2h0RGlmZlJvdzogRGlmZlRhYmxlUm93UmVzdWx0ID0gbnVsbDtcclxuICAgICAgICAgIGxldCBsZWZ0Q29udGVudDogRGlmZkxpbmVSZXN1bHQgPSBudWxsO1xyXG4gICAgICAgICAgbGV0IHJpZ2h0Q29udGVudDogRGlmZkxpbmVSZXN1bHQgPSBudWxsO1xyXG4gICAgICAgICAgbGV0IHJvd1RlbXA6IERpZmZUYWJsZVJvd1Jlc3VsdCA9IG51bGw7XHJcbiAgICAgICAgICBzd2l0Y2ggKGRpZmZbMF0pIHtcclxuICAgICAgICAgICAgY2FzZSBESUZGX0VRVUFMOlxyXG4gICAgICAgICAgICAgIGxlZnRDb250ZW50ID0ge1xyXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZUxlZnQsXHJcbiAgICAgICAgICAgICAgICBsaW5lQ29udGVudDogbGluZSxcclxuICAgICAgICAgICAgICAgIGxpbmVEaWZmczogW10sXHJcbiAgICAgICAgICAgICAgICBwcmVmaXg6ICcnXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICByaWdodENvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lUmlnaHQsXHJcbiAgICAgICAgICAgICAgICBsaW5lQ29udGVudDogbGluZSxcclxuICAgICAgICAgICAgICAgIGxpbmVEaWZmczogW10sXHJcbiAgICAgICAgICAgICAgICBwcmVmaXg6ICcnXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICByb3dUZW1wID0ge1xyXG4gICAgICAgICAgICAgICAgbGVmdENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICByaWdodENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICBiZWxvbmdUbzogJ2JvdGgnLFxyXG4gICAgICAgICAgICAgICAgaGFzRGlmZnM6IGZhbHNlXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICByb3dzLnB1c2gocm93VGVtcCk7XHJcbiAgICAgICAgICAgICAgbGluZVJpZ2h0ID0gbGluZVJpZ2h0ICsgMTtcclxuICAgICAgICAgICAgICBsaW5lTGVmdCA9IGxpbmVMZWZ0ICsgMTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBESUZGX0lOU0VSVDpcclxuICAgICAgICAgICAgICBsZWZ0RGlmZlJvdyA9IHJvd3MuZmluZChcclxuICAgICAgICAgICAgICAgIHJvdyA9PiByb3cubGVmdENvbnRlbnQgJiYgIXJvdy5yaWdodENvbnRlbnQgJiYgcm93LmxlZnRDb250ZW50LmxpbmVOdW1iZXIgPT09IGxpbmVSaWdodCAmJiByb3cubGVmdENvbnRlbnQucHJlZml4ICE9PSAnJ1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgcmlnaHRDb250ZW50ID0ge1xyXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZVJpZ2h0LFxyXG4gICAgICAgICAgICAgICAgbGluZUNvbnRlbnQ6IGxpbmUsXHJcbiAgICAgICAgICAgICAgICBsaW5lRGlmZnM6IFt7IGNvbnRlbnQ6IGxpbmUsIGlzRGlmZjogdHJ1ZSB9XSxcclxuICAgICAgICAgICAgICAgIHByZWZpeDogJysnXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICBpZiAobGVmdERpZmZSb3cpIHtcclxuICAgICAgICAgICAgICAgIGxlZnREaWZmUm93LnJpZ2h0Q29udGVudCA9IHJpZ2h0Q29udGVudDtcclxuICAgICAgICAgICAgICAgIGxlZnREaWZmUm93LmxlZnRDb250ZW50LmxpbmVEaWZmcyA9IHRoaXMuZ2V0RGlmZlBhcnRzKFxyXG4gICAgICAgICAgICAgICAgICBsZWZ0RGlmZlJvdy5sZWZ0Q29udGVudC5saW5lQ29udGVudCxcclxuICAgICAgICAgICAgICAgICAgbGVmdERpZmZSb3cucmlnaHRDb250ZW50LmxpbmVDb250ZW50XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgbGVmdERpZmZSb3cucmlnaHRDb250ZW50LmxpbmVEaWZmcyA9IHRoaXMuZ2V0RGlmZlBhcnRzKFxyXG4gICAgICAgICAgICAgICAgICBsZWZ0RGlmZlJvdy5yaWdodENvbnRlbnQubGluZUNvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgIGxlZnREaWZmUm93LmxlZnRDb250ZW50LmxpbmVDb250ZW50XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgbGVmdERpZmZSb3cuYmVsb25nVG8gPSAnYm90aCc7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJvd3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIGxlZnRDb250ZW50OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICByaWdodENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgIGhhc0RpZmZzOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICBiZWxvbmdUbzogJ3JpZ2h0J1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGxpbmVSaWdodCA9IGxpbmVSaWdodCArIDE7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgRElGRl9ERUxFVEU6XHJcbiAgICAgICAgICAgICAgcmlnaHREaWZmUm93ID0gcm93cy5maW5kKFxyXG4gICAgICAgICAgICAgICAgcm93ID0+ICFyb3cubGVmdENvbnRlbnQgJiYgcm93LnJpZ2h0Q29udGVudCAmJiByb3cucmlnaHRDb250ZW50LmxpbmVOdW1iZXIgPT09IGxpbmVMZWZ0ICYmIHJvdy5yaWdodENvbnRlbnQucHJlZml4ICE9PSAnJ1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgbGVmdENvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTGVmdCxcclxuICAgICAgICAgICAgICAgIGxpbmVDb250ZW50OiBsaW5lLFxyXG4gICAgICAgICAgICAgICAgbGluZURpZmZzOiBbeyBjb250ZW50OiBsaW5lLCBpc0RpZmY6IHRydWUgfV0sXHJcbiAgICAgICAgICAgICAgICBwcmVmaXg6ICctJ1xyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgaWYgKHJpZ2h0RGlmZlJvdykge1xyXG4gICAgICAgICAgICAgICAgcmlnaHREaWZmUm93LmxlZnRDb250ZW50ID0gbGVmdENvbnRlbnQ7XHJcbiAgICAgICAgICAgICAgICByaWdodERpZmZSb3cubGVmdENvbnRlbnQubGluZURpZmZzID0gdGhpcy5nZXREaWZmUGFydHMoXHJcbiAgICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5sZWZ0Q29udGVudC5saW5lQ29udGVudCxcclxuICAgICAgICAgICAgICAgICAgcmlnaHREaWZmUm93LnJpZ2h0Q29udGVudC5saW5lQ29udGVudFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5yaWdodENvbnRlbnQubGluZURpZmZzID0gdGhpcy5nZXREaWZmUGFydHMoXHJcbiAgICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5yaWdodENvbnRlbnQubGluZUNvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5sZWZ0Q29udGVudC5saW5lQ29udGVudFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5iZWxvbmdUbyA9ICdib3RoJztcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcm93cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgbGVmdENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgIHJpZ2h0Q29udGVudDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgaGFzRGlmZnM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIGJlbG9uZ1RvOiAnbGVmdCdcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsaW5lTGVmdCA9IGxpbmVMZWZ0ICsgMTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBkaWZmVmFsdWVzID0gZGlmZlZhbHVlcy5yZXBsYWNlKGxpbmUsICcnKTtcclxuICAgICAgICAgIGxpbmVzLnNwbGljZShmaW5kSW5kZXgsIDEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiByb3dzO1xyXG4gICAgfSwgW10pO1xyXG5cclxuICAgIHJldHVybiBkaWZmUm93c1Jlc3VsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGlmZlBhcnRzKHZhbHVlOiBzdHJpbmcsIGNvbXBhcmVWYWx1ZTogc3RyaW5nKTogRGlmZlBhcnRbXSB7XHJcbiAgICBjb25zdCBkaWZmUGFydHM6IERpZmZQYXJ0W10gPSBbXTtcclxuICAgIGxldCBpID0gMDtcclxuICAgIGxldCBqID0gMDtcclxuICAgIGxldCBzaGFyZWQgPSAnJztcclxuICAgIGxldCBkaWZmID0gJyc7XHJcblxyXG4gICAgd2hpbGUgKGkgPCB2YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgaWYgKHZhbHVlW2ldID09PSBjb21wYXJlVmFsdWVbal0gJiYgaiA8IGNvbXBhcmVWYWx1ZS5sZW5ndGgpIHtcclxuICAgICAgICBpZiAoZGlmZiAhPT0gJycpIHtcclxuICAgICAgICAgIGRpZmZQYXJ0cy5wdXNoKHsgY29udGVudDogZGlmZiwgaXNEaWZmOiB0cnVlIH0pO1xyXG4gICAgICAgICAgZGlmZiA9ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzaGFyZWQgKz0gdmFsdWVbaV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHNoYXJlZCAhPT0gJycpIHtcclxuICAgICAgICAgIGRpZmZQYXJ0cy5wdXNoKHsgY29udGVudDogc2hhcmVkLCBpc0RpZmY6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgc2hhcmVkID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRpZmYgKz0gdmFsdWVbaV07XHJcbiAgICAgIH1cclxuICAgICAgaSsrO1xyXG4gICAgICBqKys7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRpZmYgIT09ICcnKSB7XHJcbiAgICAgIGRpZmZQYXJ0cy5wdXNoKHsgY29udGVudDogZGlmZiwgaXNEaWZmOiB0cnVlIH0pO1xyXG4gICAgfSBlbHNlIGlmIChzaGFyZWQgIT09ICcnKSB7XHJcbiAgICAgIGRpZmZQYXJ0cy5wdXNoKHsgY29udGVudDogc2hhcmVkLCBpc0RpZmY6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkaWZmUGFydHM7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlmZkNvbnRlbnQsIERpZmZQYXJ0LCBEaWZmVGFibGVGb3JtYXQsIERpZmZUYWJsZUZvcm1hdE9wdGlvbiwgRGlmZlRhYmxlUm93UmVzdWx0IH0gZnJvbSAnLi9uZ3gtdGV4dC1kaWZmLm1vZGVsJztcclxuaW1wb3J0IHsgTmd4VGV4dERpZmZTZXJ2aWNlIH0gZnJvbSAnLi9uZ3gtdGV4dC1kaWZmLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGQtbmd4LXRleHQtZGlmZicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25neC10ZXh0LWRpZmYuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25neC10ZXh0LWRpZmYuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hUZXh0RGlmZkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZm9ybWF0OiBEaWZmVGFibGVGb3JtYXQgPSAnU2lkZUJ5U2lkZSc7XHJcbiAgQElucHV0KCkgbGVmdCA9ICcnO1xyXG4gIEBJbnB1dCgpIHJpZ2h0ID0gJyc7XHJcbiAgQElucHV0KCkgZGlmZkNvbnRlbnQ6IE9ic2VydmFibGU8RGlmZkNvbnRlbnQ+O1xyXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93QnRuVG9vbGJhciA9IHRydWU7XHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICB0YWJsZVJvd3M6IERpZmZUYWJsZVJvd1Jlc3VsdFtdID0gW107XHJcbiAgZmlsdGVyZWRUYWJsZVJvd3M6IERpZmZUYWJsZVJvd1Jlc3VsdFtdID0gW107XHJcbiAgdGFibGVSb3dzTGluZUJ5TGluZTogRGlmZlRhYmxlUm93UmVzdWx0W10gPSBbXTtcclxuICBmaWx0ZXJlZFRhYmxlUm93c0xpbmVCeUxpbmU6IERpZmZUYWJsZVJvd1Jlc3VsdFtdID0gW107XHJcbiAgc2hvd0xpbmVzRGlmZnMgPSBmYWxzZTtcclxuICBkaWZmc0NvdW50ID0gMDtcclxuXHJcbiAgZm9ybWF0T3B0aW9uczogRGlmZlRhYmxlRm9ybWF0T3B0aW9uW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGlkOiAnc2lkZS1ieS1zaWRlJyxcclxuICAgICAgbmFtZTogJ3NpZGUtYnktc2lkZScsXHJcbiAgICAgIGxhYmVsOiAnU2lkZSBieSBTaWRlJyxcclxuICAgICAgdmFsdWU6ICdTaWRlQnlTaWRlJyxcclxuICAgICAgaWNvbjogJ2xhLWNvZGUnXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogJ2xpbmUtYnktbGluZScsXHJcbiAgICAgIG5hbWU6ICdsaW5lLWJ5LWxpbmUnLFxyXG4gICAgICBsYWJlbDogJ0xpbmUgYnkgTGluZScsXHJcbiAgICAgIHZhbHVlOiAnTGluZUJ5TGluZScsXHJcbiAgICAgIGljb246ICdsYS1maWxlLXRleHQnXHJcbiAgICB9XHJcbiAgXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWZmOiBOZ3hUZXh0RGlmZlNlcnZpY2UsIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmRpZmZDb250ZW50KSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuZGlmZkNvbnRlbnQuc3Vic2NyaWJlKGNvbnRlbnQgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sZWZ0ID0gY29udGVudC5sZWZ0Q29udGVudDtcclxuICAgICAgICAgIHRoaXMucmlnaHQgPSBjb250ZW50LnJpZ2h0Q29udGVudDtcclxuICAgICAgICAgIHRoaXMucmVuZGVyRGlmZnMoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZW5kZXJEaWZmcygpLnRoZW4oKTtcclxuICB9XHJcblxyXG4gIHNob3dMaW5lc0RpZmZzQ2hhbmdlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNob3dMaW5lc0RpZmZzID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5zaG93TGluZXNEaWZmcykge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkVGFibGVSb3dzID0gdGhpcy50YWJsZVJvd3MuZmlsdGVyKFxyXG4gICAgICAgIHJvdyA9PiAocm93LmxlZnRDb250ZW50ICYmIHJvdy5sZWZ0Q29udGVudC5wcmVmaXggPT09ICctJykgfHwgKHJvdy5yaWdodENvbnRlbnQgJiYgcm93LnJpZ2h0Q29udGVudC5wcmVmaXggPT09ICcrJylcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5maWx0ZXJlZFRhYmxlUm93c0xpbmVCeUxpbmUgPSB0aGlzLnRhYmxlUm93c0xpbmVCeUxpbmUuZmlsdGVyKFxyXG4gICAgICAgIHJvdyA9PiAocm93LmxlZnRDb250ZW50ICYmIHJvdy5sZWZ0Q29udGVudC5wcmVmaXggPT09ICctJykgfHwgKHJvdy5yaWdodENvbnRlbnQgJiYgcm93LnJpZ2h0Q29udGVudC5wcmVmaXggPT09ICcrJylcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3MgPSB0aGlzLnRhYmxlUm93cztcclxuICAgICAgdGhpcy5maWx0ZXJlZFRhYmxlUm93c0xpbmVCeUxpbmUgPSB0aGlzLnRhYmxlUm93c0xpbmVCeUxpbmU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREaWZmVGFibGVGb3JtYXQoZm9ybWF0OiBEaWZmVGFibGVGb3JtYXQpIHtcclxuICAgIHRoaXMuZm9ybWF0ID0gZm9ybWF0O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVuZGVyRGlmZnMoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRpZmZzQ291bnQgPSAwO1xyXG4gICAgICB0aGlzLnRhYmxlUm93cyA9IGF3YWl0IHRoaXMuZGlmZi5nZXREaWZmc0J5TGluZXModGhpcy5sZWZ0LCB0aGlzLnJpZ2h0KTtcclxuICAgICAgdGhpcy50YWJsZVJvd3NMaW5lQnlMaW5lID0gdGhpcy50YWJsZVJvd3MucmVkdWNlKCh0YWJsZUxpbmVCeUxpbmU6IERpZmZUYWJsZVJvd1Jlc3VsdFtdLCByb3c6IERpZmZUYWJsZVJvd1Jlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmICghdGFibGVMaW5lQnlMaW5lKSB7XHJcbiAgICAgICAgICB0YWJsZUxpbmVCeUxpbmUgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJvdy5oYXNEaWZmcykge1xyXG4gICAgICAgICAgaWYgKHJvdy5sZWZ0Q29udGVudCkge1xyXG4gICAgICAgICAgICB0YWJsZUxpbmVCeUxpbmUucHVzaCh7XHJcbiAgICAgICAgICAgICAgbGVmdENvbnRlbnQ6IHJvdy5sZWZ0Q29udGVudCxcclxuICAgICAgICAgICAgICByaWdodENvbnRlbnQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgYmVsb25nVG86IHJvdy5iZWxvbmdUbyxcclxuICAgICAgICAgICAgICBoYXNEaWZmczogdHJ1ZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyb3cucmlnaHRDb250ZW50KSB7XHJcbiAgICAgICAgICAgIHRhYmxlTGluZUJ5TGluZS5wdXNoKHtcclxuICAgICAgICAgICAgICBsZWZ0Q29udGVudDogbnVsbCxcclxuICAgICAgICAgICAgICByaWdodENvbnRlbnQ6IHJvdy5yaWdodENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgYmVsb25nVG86IHJvdy5iZWxvbmdUbyxcclxuICAgICAgICAgICAgICBoYXNEaWZmczogdHJ1ZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGFibGVMaW5lQnlMaW5lLnB1c2gocm93KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0YWJsZUxpbmVCeUxpbmU7XHJcbiAgICAgIH0sIFtdKTtcclxuICAgICAgdGhpcy5kaWZmc0NvdW50ID0gdGhpcy50YWJsZVJvd3MuZmlsdGVyKFxyXG4gICAgICAgIHJvdyA9PiAocm93LmxlZnRDb250ZW50ICYmIHJvdy5sZWZ0Q29udGVudC5wcmVmaXggPT09ICctJykgfHwgKHJvdy5yaWdodENvbnRlbnQgJiYgcm93LnJpZ2h0Q29udGVudC5wcmVmaXggPT09ICcrJylcclxuICAgICAgKS5sZW5ndGg7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3MgPSB0aGlzLnRhYmxlUm93cztcclxuICAgICAgdGhpcy5maWx0ZXJlZFRhYmxlUm93c0xpbmVCeUxpbmUgPSB0aGlzLnRhYmxlUm93c0xpbmVCeUxpbmU7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSBjYXRjaCAoZSkge31cclxuICB9XHJcblxyXG4gIHRyYWNrVGFibGVSb3dzKGluZGV4LCByb3c6IERpZmZUYWJsZVJvd1Jlc3VsdCkge1xyXG4gICAgcmV0dXJuIHJvdyAmJiByb3cubGVmdENvbnRlbnQgPyByb3cubGVmdENvbnRlbnQubGluZUNvbnRlbnQgOiByb3cgJiYgcm93LnJpZ2h0Q29udGVudCA/IHJvdy5yaWdodENvbnRlbnQubGluZUNvbnRlbnQgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICB0cmFja0RpZmZzKGluZGV4LCBkaWZmOiBEaWZmUGFydCkge1xyXG4gICAgcmV0dXJuIGRpZmYgJiYgZGlmZi5jb250ZW50ID8gZGlmZi5jb250ZW50IDogdW5kZWZpbmVkO1xyXG4gIH1cclxufVxyXG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGQtbG9hZGVyLXNwaW5uZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9hZGVyLXNwaW5uZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sb2FkZXItc3Bpbm5lci5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTG9hZGVyU3Bpbm5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGFjdGl2ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpIHt9XG59XG4iLCJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2Zvcm1hdExpbmUnXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1hdExpbmVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShsaW5lOiBzdHJpbmcsIGRpZmZzPzogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGlmICghbGluZSkge1xuICAgICAgcmV0dXJuICcgJztcbiAgICB9XG4gICAgaWYgKCEhZGlmZnMgJiYgZGlmZnMubGVuZ3RoID4gMCkge1xuICAgICAgLypkaWZmcy5mb3JFYWNoKGRpZmYgPT4ge1xuICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKGRpZmYsIGA8c3BhbiBjbGFzcz1cImhpZ2hsaVwiPiR7ZGlmZn08L3NwYW4+YCk7XG4gICAgICB9KTsqL1xuICAgIH1cbiAgICByZXR1cm4gbGluZVxuICAgICAgLnJlcGxhY2UoLyYvZywgJyZhbXA7JylcbiAgICAgIC5yZXBsYWNlKC88L2csICcmbHQ7JylcbiAgICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7JylcbiAgICAgIC5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7JylcbiAgICAgIC5yZXBsYWNlKC8gL2csICcmbmJzcDsnKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmd4VGV4dERpZmZDb21wb25lbnQgfSBmcm9tICcuL25neC10ZXh0LWRpZmYuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IExvYWRlclNwaW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2xvYWRlci1zcGlubmVyL2xvYWRlci1zcGlubmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1hdExpbmVQaXBlIH0gZnJvbSAnLi9mb3JtYXQtbGluZS5waXBlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxyXG4gIGRlY2xhcmF0aW9uczogW05neFRleHREaWZmQ29tcG9uZW50LCBMb2FkZXJTcGlubmVyQ29tcG9uZW50LCBGb3JtYXRMaW5lUGlwZV0sXHJcbiAgZXhwb3J0czogW05neFRleHREaWZmQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4VGV4dERpZmZNb2R1bGUge31cclxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE1BQWEsS0FBSyxHQUFHLEdBQUcsSUFBSSxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUM7O0FBQzlELE1BQWEsT0FBTyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxNQUFNLEtBQUssQ0FBQyxDQUFDOzs7Ozs7QUNEekg7SUFXRTtRQUNFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQUNuQjs7OztJQUVPLFVBQVU7UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7Ozs7Ozs7SUFHM0MsZUFBZSxDQUFDLElBQVksRUFBRSxLQUFhO1FBQ3pDLE9BQU8sSUFBSSxPQUFPLENBQXVCLENBQUMsT0FBTyxFQUFFLE1BQU07O1lBQ3ZELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDOztZQUMxRCxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDOztZQUMzQixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDOztZQUMzQixNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDOztZQUMvQixNQUFNLEtB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

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

import { Injectable, Pipe, NgModule, Component, Input, defineInjectable, ChangeDetectorRef } from '@angular/core';
import { Injectable, Pipe, Component, Input, NgModule, defineInjectable, ChangeDetectorRef } from '@angular/core';
import { DIFF_DELETE, DIFF_EQUAL, DIFF_INSERT, diff_match_patch } from 'diff-match-patch';

@@ -310,4 +310,4 @@ import { __awaiter, __generator } from 'tslib';

var _this = this;
if (this.diffContentObservable$) {
this.subscriptions.push(this.diffContentObservable$.subscribe(function (content) {
if (this.diffContent) {
this.subscriptions.push(this.diffContent.subscribe(function (content) {
_this.left = content.leftContent;

@@ -440,3 +440,3 @@ _this.right = content.rightContent;

selector: 'td-ngx-text-diff',
template: "<td-loader-sppiner [active]=\"loading\"></td-loader-sppiner>\r\n<div *ngIf=\"!loading\">\r\n <div class=\"td-wrapper\">\r\n <div class=\"td-toolbar-show-diff\">\r\n <label class=\"td-checkbox-container\">Show Lines with Diffs ({{diffsCount}})\r\n <input type=\"checkbox\"\r\n id=\"showDiffs\"\r\n [ngModel]=\"showLinesDiffs\"\r\n (ngModelChange)=\"showLinesDiffsChange($event)\"\r\n >\r\n <span class=\"checkmark\"></span>\r\n </label>\r\n </div>\r\n <div class=\"td-toolbar-select-format\" *ngIf=\"showBtnToolbar\">\r\n <div class=\"td-btn-group td-btn-group-toggle\" data-toggle=\"buttons\">\r\n <button *ngFor=\"let option of formatOptions\"\r\n [ngClass]=\"{'active': format === option.value, 'disabled': !!option.disabled}\"\r\n [name]=\"option.name\"\r\n [id]=\"option.id\"\r\n [disabled]=\"!!option.disabled\"\r\n (click)=\"setDiffTableFormat(option.value)\"\r\n >{{option.label}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"td-table-wrapper\">\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n {{(row.leftContent?.lineNumber !== -1) ?\r\n row.leftContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n <span>{{row.leftContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n {{(row.rightContent?.lineNumber !== -1) ?\r\n row.rightContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n <span>{{row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.rightContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container line-by-line\" *ngIf=\"format === 'LineByLine'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRowsLineByLine; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col-left\">{{row.leftContent?.lineNumber}}</td>\r\n <td scope=\"row\" class=\"fit-column line-number-col\">{{row.rightContent?.lineNumber}}</td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\">\r\n <span>{{row.leftContent?.prefix || row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.leftContent && row.leftContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.rightContent && row.rightContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
template: "<td-loader-spinner [active]=\"loading\"></td-loader-spinner>\r\n<div *ngIf=\"!loading\">\r\n <div class=\"td-wrapper\">\r\n <div class=\"td-toolbar-show-diff\">\r\n <label class=\"td-checkbox-container\">Show Lines with Diffs ({{diffsCount}})\r\n <input type=\"checkbox\"\r\n id=\"showDiffs\"\r\n [ngModel]=\"showLinesDiffs\"\r\n (ngModelChange)=\"showLinesDiffsChange($event)\"\r\n >\r\n <span class=\"checkmark\"></span>\r\n </label>\r\n </div>\r\n <div class=\"td-toolbar-select-format\" *ngIf=\"showBtnToolbar\">\r\n <div class=\"td-btn-group td-btn-group-toggle\" data-toggle=\"buttons\">\r\n <button *ngFor=\"let option of formatOptions\"\r\n [ngClass]=\"{'active': format === option.value, 'disabled': !!option.disabled}\"\r\n [name]=\"option.name\"\r\n [id]=\"option.id\"\r\n [disabled]=\"!!option.disabled\"\r\n (click)=\"setDiffTableFormat(option.value)\"\r\n >{{option.label}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"td-table-wrapper\">\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n {{(row.leftContent?.lineNumber !== -1) ?\r\n row.leftContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n <span>{{row.leftContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n {{(row.rightContent?.lineNumber !== -1) ?\r\n row.rightContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n <span>{{row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.rightContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container line-by-line\" *ngIf=\"format === 'LineByLine'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRowsLineByLine; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col-left\">{{row.leftContent?.lineNumber}}</td>\r\n <td scope=\"row\" class=\"fit-column line-number-col\">{{row.rightContent?.lineNumber}}</td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\">\r\n <span>{{row.leftContent?.prefix || row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.leftContent && row.leftContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.rightContent && row.rightContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
styles: [".td-wrapper{display:-ms-grid;display:grid;width:100%;grid-row-gap:10px;-ms-grid-columns:([col] 50%)[2];grid-template-columns:repeat(2,[col] 50%);-ms-grid-rows:([row] auto)[2];grid-template-rows:repeat(2,[row] auto);background-color:#fff;color:#444}.td-toolbar-show-diff{-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1}.td-toolbar-select-format{margin-left:auto;-ms-grid-column:2;grid-column:2;-ms-grid-row:1;grid-row:1}.td-table-container{-ms-grid-column:1;-ms-grid-column-span:1;grid-column:1/2;-ms-grid-row:2;grid-row:2;width:100%;max-width:100%;overflow-x:auto}.td-table-wrapper{display:flex;width:200%}.td-table{border:1px solid #a9a9a9;max-height:50vh;width:100%;max-width:100%}.fit-column{width:1px;white-space:nowrap}.line-number-col{border-right:1px solid #ddd;color:#999;text-align:right;background-color:#f7f7f7;padding-left:10px;padding-right:10px;font-size:87.5%}.line-number-col-left{color:#999;padding-left:10px;padding-right:10px;text-align:right;background-color:#f7f7f7;font-size:87.5%}.insert-row,.insert-row>.line-number-col{background-color:#dfd;border-color:#b4e2b4}.delete-row,.delete-row>.line-number-col{background-color:#fee8e9;border-color:#e9aeae}.empty-row{background-color:#f7f7f7;height:24px}.td-table td{border-top:0;padding-top:0;padding-bottom:0;white-space:nowrap;max-width:50%}pre{margin-bottom:0}td.content-col{padding:0;margin:0;line-height:24px}td.prefix-col{padding-left:10px;padding-right:10px;line-height:24px}.td-btn-group{border-radius:4px}.td-btn-group button{background-color:rgba(23,162,184,.7);border:1px solid #17a2b8;color:#fff;cursor:pointer;float:left}.td-btn-group button:not(:last-child){border-right:none}.td-btn-group button:first-child{-webkit-border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-bottomleft:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.td-btn-group button:last-child{-webkit-border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;border-top-right-radius:4px;border-bottom-right-radius:4px}.td-btn-group:after{content:'';clear:both;display:table}.td-btn-group button.active,.td-btn-group button:hover{background-color:#17a2b8}.td-checkbox-container{display:block;position:relative;padding-left:21px;margin-bottom:0;cursor:pointer;font-size:16px;line-height:28px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.td-checkbox-container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.checkmark{position:absolute;top:7px;left:0;height:16px;width:16px;background-color:#eee}.td-checkbox-container:hover input~.checkmark{background-color:#ccc}.td-checkbox-container input:checked~.checkmark{background-color:#17a2b8}.checkmark:after{content:\"\";position:absolute;display:none}.td-checkbox-container input:checked~.checkmark:after{display:block}.td-checkbox-container .checkmark:after{left:5px;top:3px;width:5px;height:10px;border:solid #fff;border-width:0 3px 3px 0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.insert-row>.highlight{background-color:#acf2bd!important}.delete-row>.highlight{background-color:#fdb8c0!important}"]

@@ -454,4 +454,4 @@ }] }

right: [{ type: Input }],
diffContent: [{ type: Input }],
loading: [{ type: Input }],
diffContentObservable$: [{ type: Input }],
showBtnToolbar: [{ type: Input }]

@@ -466,4 +466,4 @@ };

*/
var LoaderSppinerComponent = /** @class */ (function () {
function LoaderSppinerComponent() {
var LoaderSpinnerComponent = /** @class */ (function () {
function LoaderSpinnerComponent() {
this.active = false;

@@ -474,9 +474,9 @@ }

*/
LoaderSppinerComponent.prototype.ngOnInit = /**
LoaderSpinnerComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () { };
LoaderSppinerComponent.decorators = [
LoaderSpinnerComponent.decorators = [
{ type: Component, args: [{
selector: 'td-loader-sppiner',
selector: 'td-loader-spinner',
template: "<div class=\"td-loading-roller\" *ngIf=\"active\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n</div>\n",

@@ -487,7 +487,7 @@ styles: [".td-loading-roller{display:inline-block;position:relative;width:64px;height:64px}.td-loading-roller div{-webkit-animation:1.2s cubic-bezier(.5,0,.5,1) infinite lds-roller;animation:1.2s cubic-bezier(.5,0,.5,1) infinite lds-roller;-webkit-transform-origin:32px 32px;transform-origin:32px 32px}.td-loading-roller div:after{content:\" \";display:block;position:absolute;width:6px;height:6px;border-radius:50%;background:#000;margin:-3px 0 0 -3px}.td-loading-roller div:nth-child(1){-webkit-animation-delay:-36ms;animation-delay:-36ms}.td-loading-roller div:nth-child(1):after{top:50px;left:50px}.td-loading-roller div:nth-child(2){-webkit-animation-delay:-72ms;animation-delay:-72ms}.td-loading-roller div:nth-child(2):after{top:54px;left:45px}.td-loading-roller div:nth-child(3){-webkit-animation-delay:-108ms;animation-delay:-108ms}.td-loading-roller div:nth-child(3):after{top:57px;left:39px}.td-loading-roller div:nth-child(4){-webkit-animation-delay:-144ms;animation-delay:-144ms}.td-loading-roller div:nth-child(4):after{top:58px;left:32px}.td-loading-roller div:nth-child(5){-webkit-animation-delay:-.18s;animation-delay:-.18s}.td-loading-roller div:nth-child(5):after{top:57px;left:25px}.td-loading-roller div:nth-child(6){-webkit-animation-delay:-216ms;animation-delay:-216ms}.td-loading-roller div:nth-child(6):after{top:54px;left:19px}.td-loading-roller div:nth-child(7){-webkit-animation-delay:-252ms;animation-delay:-252ms}.td-loading-roller div:nth-child(7):after{top:50px;left:14px}.td-loading-roller div:nth-child(8){-webkit-animation-delay:-288ms;animation-delay:-288ms}.td-loading-roller div:nth-child(8):after{top:45px;left:10px}@-webkit-keyframes lds-roller{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes lds-roller{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}"]

/** @nocollapse */
LoaderSppinerComponent.ctorParameters = function () { return []; };
LoaderSppinerComponent.propDecorators = {
LoaderSpinnerComponent.ctorParameters = function () { return []; };
LoaderSpinnerComponent.propDecorators = {
active: [{ type: Input }]
};
return LoaderSppinerComponent;
return LoaderSpinnerComponent;
}());

@@ -542,3 +542,3 @@

imports: [CommonModule, FormsModule],
declarations: [NgxTextDiffComponent, LoaderSppinerComponent, FormatLinePipe],
declarations: [NgxTextDiffComponent, LoaderSpinnerComponent, FormatLinePipe],
exports: [NgxTextDiffComponent]

@@ -560,4 +560,4 @@ },] }

export { NgxTextDiffService, NgxTextDiffComponent, LoaderSppinerComponent, FormatLinePipe, isNil, isEmpty, NgxTextDiffModule };
export { NgxTextDiffService, NgxTextDiffComponent, NgxTextDiffModule, FormatLinePipe as ɵb, LoaderSpinnerComponent as ɵa };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vbmd4LXRleHQtZGlmZi9saWIvbmd4LXRleHQtZGlmZi51dGlscy50cyIsIm5nOi8vbmd4LXRleHQtZGlmZi9saWIvbmd4LXRleHQtZGlmZi5zZXJ2aWNlLnRzIiwibmc6Ly9uZ3gtdGV4dC1kaWZmL2xpYi9uZ3gtdGV4dC1kaWZmLmNvbXBvbmVudC50cyIsIm5nOi8vbmd4LXRleHQtZGlmZi9saWIvbG9hZGVyLXNwcGluZXIvbG9hZGVyLXNwcGluZXIuY29tcG9uZW50LnRzIiwibmc6Ly9uZ3gtdGV4dC1kaWZmL2xpYi9mb3JtYXQtbGluZS5waXBlLnRzIiwibmc6Ly9uZ3gtdGV4dC1kaWZmL2xpYi9uZ3gtdGV4dC1kaWZmLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgaXNOaWwgPSB2YWwgPT4gdmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSBudWxsO1xyXG5leHBvcnQgY29uc3QgaXNFbXB0eSA9IHZhbCA9PiB2YWwgPT0gbnVsbCB8fCAhKE9iamVjdC5rZXlzKHZhbCkgfHwgdmFsKS5sZW5ndGggfHwgKE9iamVjdC5rZXlzKHZhbCkgfHwgdmFsKS5sZW5ndGggPT09IDA7XHJcbiIsImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlmZiwgRElGRl9ERUxFVEUsIERJRkZfRVFVQUwsIERJRkZfSU5TRVJULCBkaWZmX21hdGNoX3BhdGNoIH0gZnJvbSAnZGlmZi1tYXRjaC1wYXRjaCc7XHJcbmltcG9ydCB7IERpZmZMaW5lUmVzdWx0LCBEaWZmUGFydCwgRGlmZlRhYmxlUm93UmVzdWx0IH0gZnJvbSAnLi9uZ3gtdGV4dC1kaWZmLm1vZGVsJztcclxuaW1wb3J0IHsgaXNFbXB0eSwgaXNOaWwgfSBmcm9tICcuL25neC10ZXh0LWRpZmYudXRpbHMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4VGV4dERpZmZTZXJ2aWNlIHtcclxuICBkaWZmUGFyc2VyOiBkaWZmX21hdGNoX3BhdGNoO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuaW5pdFBhcnNlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0UGFyc2VyKCkge1xyXG4gICAgdGhpcy5kaWZmUGFyc2VyID0gbmV3IGRpZmZfbWF0Y2hfcGF0Y2goKTtcclxuICB9XHJcblxyXG4gIGdldERpZmZzQnlMaW5lcyhsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcpOiBQcm9taXNlPERpZmZUYWJsZVJvd1Jlc3VsdFtdPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2U8RGlmZlRhYmxlUm93UmVzdWx0W10+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMuZGlmZlBhcnNlci5kaWZmX2xpbmVzVG9DaGFyc18obGVmdCwgcmlnaHQpO1xyXG4gICAgICBjb25zdCBsaW5lVGV4dDEgPSBhLmNoYXJzMTtcclxuICAgICAgY29uc3QgbGluZVRleHQyID0gYS5jaGFyczI7XHJcbiAgICAgIGNvbnN0IGxpbmVzQXJyYXkgPSBhLmxpbmVBcnJheTtcclxuICAgICAgY29uc3QgZGlmZnM6IERpZmZbXSA9IHRoaXMuZGlmZlBhcnNlci5kaWZmX21haW4obGluZVRleHQxLCBsaW5lVGV4dDIsIHRydWUpO1xyXG4gICAgICB0aGlzLmRpZmZQYXJzZXIuZGlmZl9jaGFyc1RvTGluZXNfKGRpZmZzLCBsaW5lc0FycmF5KTtcclxuICAgICAgY29uc3Qgcm93czogRGlmZlRhYmxlUm93UmVzdWx0W10gPSB0aGlzLmZvcm1hdE91dHB1dE5ldyhkaWZmcywgbGluZXNBcnJheSk7XHJcbiAgICAgIGlmICghcm93cykge1xyXG4gICAgICAgIHJlamVjdCgnRXJyb3InKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmVzb2x2ZShyb3dzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRPdXRwdXROZXcoZGlmZnM6IERpZmZbXSwgbGluZXM/OiBzdHJpbmdbXSk6IERpZmZUYWJsZVJvd1Jlc3VsdFtdIHtcclxuICAgIGlmIChsaW5lcykge1xyXG4gICAgICByZXR1cm4gdGhpcy5mb3JtYXREaWZmc0Zyb21MaW5lcyhkaWZmcywgbGluZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXREaWZmc0Zyb21MaW5lcyhkaWZmczogRGlmZltdLCBsaW5lczogc3RyaW5nW10pOiBEaWZmVGFibGVSb3dSZXN1bHRbXSB7XHJcbiAgICBsaW5lcy5zcGxpY2UoMCwgMSk7XHJcbiAgICBsZXQgbGluZUxlZnQgPSAxO1xyXG4gICAgbGV0IGxpbmVSaWdodCA9IDE7XHJcbiAgICBjb25zdCBkaWZmUm93c1Jlc3VsdCA9IGRpZmZzLnJlZHVjZSgocm93czogRGlmZlRhYmxlUm93UmVzdWx0W10sIGRpZmY6IERpZmYpID0+IHtcclxuICAgICAgaWYgKCFyb3dzKSB7XHJcbiAgICAgICAgcm93cyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBkaWZmVmFsdWVzID0gZGlmZlsxXTtcclxuICAgICAgd2hpbGUgKCFpc05pbChkaWZmVmFsdWVzKSB8fCAhaXNFbXB0eShkaWZmVmFsdWVzKSB8fCBkaWZmVmFsdWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCBmaW5kSW5kZXggPSBsaW5lcy5maW5kSW5kZXgobGluZSA9PiBkaWZmVmFsdWVzLmluY2x1ZGVzKGxpbmUpKTtcclxuICAgICAgICBpZiAoZmluZEluZGV4ID49IDApIHtcclxuICAgICAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1tmaW5kSW5kZXhdO1xyXG4gICAgICAgICAgbGV0IGxlZnREaWZmUm93OiBEaWZmVGFibGVSb3dSZXN1bHQgPSBudWxsO1xyXG4gICAgICAgICAgbGV0IHJpZ2h0RGlmZlJvdzogRGlmZlRhYmxlUm93UmVzdWx0ID0gbnVsbDtcclxuICAgICAgICAgIGxldCBsZWZ0Q29udGVudDogRGlmZkxpbmVSZXN1bHQgPSBudWxsO1xyXG4gICAgICAgICAgbGV0IHJpZ2h0Q29udGVudDogRGlmZkxpbmVSZXN1bHQgPSBudWxsO1xyXG4gICAgICAgICAgbGV0IHJvd1RlbXA6IERpZmZUYWJsZVJvd1Jlc3VsdCA9IG51bGw7XHJcbiAgICAgICAgICBzd2l0Y2ggKGRpZmZbMF0pIHtcclxuICAgICAgICAgICAgY2FzZSBESUZGX0VRVUFMOlxyXG4gICAgICAgICAgICAgIGxlZnRDb250ZW50ID0ge1xyXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZUxlZnQsXHJcbiAgICAgICAgICAgICAgICBsaW5lQ29udGVudDogbGluZSxcclxuICAgICAgICAgICAgICAgIGxpbmVEaWZmczogW10sXHJcbiAgICAgICAgICAgICAgICBwcmVmaXg6ICcnXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICByaWdodENvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lUmlnaHQsXHJcbiAgICAgICAgICAgICAgICBsaW5lQ29udGVudDogbGluZSxcclxuICAgICAgICAgICAgICAgIGxpbmVEaWZmczogW10sXHJcbiAgICAgICAgICAgICAgICBwcmVmaXg6ICcnXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICByb3dUZW1wID0ge1xyXG4gICAgICAgICAgICAgICAgbGVmdENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICByaWdodENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICBiZWxvbmdUbzogJ2JvdGgnLFxyXG4gICAgICAgICAgICAgICAgaGFzRGlmZnM6IGZhbHNlXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICByb3dzLnB1c2gocm93VGVtcCk7XHJcbiAgICAgICAgICAgICAgbGluZVJpZ2h0ID0gbGluZVJpZ2h0ICsgMTtcclxuICAgICAgICAgICAgICBsaW5lTGVmdCA9IGxpbmVMZWZ0ICsgMTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBESUZGX0lOU0VSVDpcclxuICAgICAgICAgICAgICBsZWZ0RGlmZlJvdyA9IHJvd3MuZmluZChcclxuICAgICAgICAgICAgICAgIHJvdyA9PiByb3cubGVmdENvbnRlbnQgJiYgIXJvdy5yaWdodENvbnRlbnQgJiYgcm93LmxlZnRDb250ZW50LmxpbmVOdW1iZXIgPT09IGxpbmVSaWdodCAmJiByb3cubGVmdENvbnRlbnQucHJlZml4ICE9PSAnJ1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgcmlnaHRDb250ZW50ID0ge1xyXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZVJpZ2h0LFxyXG4gICAgICAgICAgICAgICAgbGluZUNvbnRlbnQ6IGxpbmUsXHJcbiAgICAgICAgICAgICAgICBsaW5lRGlmZnM6IFt7IGNvbnRlbnQ6IGxpbmUsIGlzRGlmZjogdHJ1ZSB9XSxcclxuICAgICAgICAgICAgICAgIHByZWZpeDogJysnXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICBpZiAobGVmdERpZmZSb3cpIHtcclxuICAgICAgICAgICAgICAgIGxlZnREaWZmUm93LnJpZ2h0Q29udGVudCA9IHJpZ2h0Q29udGVudDtcclxuICAgICAgICAgICAgICAgIGxlZnREaWZmUm93LmxlZnRDb250ZW50LmxpbmVEaWZmcyA9IHRoaXMuZ2V0RGlmZlBhcnRzKFxyXG4gICAgICAgICAgICAgICAgICBsZWZ0RGlmZlJvdy5sZWZ0Q29udGVudC5saW5lQ29udGVudCxcclxuICAgICAgICAgICAgICAgICAgbGVmdERpZmZSb3cucmlnaHRDb250ZW50LmxpbmVDb250ZW50XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgbGVmdERpZmZSb3cucmlnaHRDb250ZW50LmxpbmVEaWZmcyA9IHRoaXMuZ2V0RGlmZlBhcnRzKFxyXG4gICAgICAgICAgICAgICAgICBsZWZ0RGlmZlJvdy5yaWdodENvbnRlbnQubGluZUNvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgIGxlZnREaWZmUm93LmxlZnRDb250ZW50LmxpbmVDb250ZW50XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgbGVmdERpZmZSb3cuYmVsb25nVG8gPSAnYm90aCc7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJvd3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIGxlZnRDb250ZW50OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICByaWdodENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgIGhhc0RpZmZzOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICBiZWxvbmdUbzogJ3JpZ2h0J1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGxpbmVSaWdodCA9IGxpbmVSaWdodCArIDE7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgRElGRl9ERUxFVEU6XHJcbiAgICAgICAgICAgICAgcmlnaHREaWZmUm93ID0gcm93cy5maW5kKFxyXG4gICAgICAgICAgICAgICAgcm93ID0+ICFyb3cubGVmdENvbnRlbnQgJiYgcm93LnJpZ2h0Q29udGVudCAmJiByb3cucmlnaHRDb250ZW50LmxpbmVOdW1iZXIgPT09IGxpbmVMZWZ0ICYmIHJvdy5yaWdodENvbnRlbnQucHJlZml4ICE9PSAnJ1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgbGVmdENvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTGVmdCxcclxuICAgICAgICAgICAgICAgIGxpbmVDb250ZW50OiBsaW5lLFxyXG4gICAgICAgICAgICAgICAgbGluZURpZmZzOiBbeyBjb250ZW50OiBsaW5lLCBpc0RpZmY6IHRydWUgfV0sXHJcbiAgICAgICAgICAgICAgICBwcmVmaXg6ICctJ1xyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgaWYgKHJpZ2h0RGlmZlJvdykge1xyXG4gICAgICAgICAgICAgICAgcmlnaHREaWZmUm93LmxlZnRDb250ZW50ID0gbGVmdENvbnRlbnQ7XHJcbiAgICAgICAgICAgICAgICByaWdodERpZmZSb3cubGVmdENvbnRlbnQubGluZURpZmZzID0gdGhpcy5nZXREaWZmUGFydHMoXHJcbiAgICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5sZWZ0Q29udGVudC5saW5lQ29udGVudCxcclxuICAgICAgICAgICAgICAgICAgcmlnaHREaWZmUm93LnJpZ2h0Q29udGVudC5saW5lQ29udGVudFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5yaWdodENvbnRlbnQubGluZURpZmZzID0gdGhpcy5nZXREaWZmUGFydHMoXHJcbiAgICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5yaWdodENvbnRlbnQubGluZUNvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5sZWZ0Q29udGVudC5saW5lQ29udGVudFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5iZWxvbmdUbyA9ICdib3RoJztcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcm93cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgbGVmdENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgIHJpZ2h0Q29udGVudDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgaGFzRGlmZnM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIGJlbG9uZ1RvOiAnbGVmdCdcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsaW5lTGVmdCA9IGxpbmVMZWZ0ICsgMTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBkaWZmVmFsdWVzID0gZGlmZlZhbHVlcy5yZXBsYWNlKGxpbmUsICcnKTtcclxuICAgICAgICAgIGxpbmVzLnNwbGljZShmaW5kSW5kZXgsIDEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiByb3dzO1xyXG4gICAgfSwgW10pO1xyXG5cclxuICAgIHJldHVybiBkaWZmUm93c1Jlc3VsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGlmZlBhcnRzKHZhbHVlOiBzdHJpbmcsIGNvbXBhcmVWYWx1ZTogc3RyaW5nKTogRGlmZlBhcnRbXSB7XHJcbiAgICBjb25zdCBkaWZmUGFydHM6IERpZmZQYXJ0W10gPSBbXTtcclxuICAgIGxldCBpID0gMDtcclxuICAgIGxldCBqID0gMDtcclxuICAgIGxldCBzaGFyZWQgPSAnJztcclxuICAgIGxldCBkaWZmID0gJyc7XHJcblxyXG4gICAgd2hpbGUgKGkgPCB2YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgaWYgKHZhbHVlW2ldID09PSBjb21wYXJlVmFsdWVbal0gJiYgaiA8IGNvbXBhcmVWYWx1ZS5sZW5ndGgpIHtcclxuICAgICAgICBpZiAoZGlmZiAhPT0gJycpIHtcclxuICAgICAgICAgIGRpZmZQYXJ0cy5wdXNoKHsgY29udGVudDogZGlmZiwgaXNEaWZmOiB0cnVlIH0pO1xyXG4gICAgICAgICAgZGlmZiA9ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzaGFyZWQgKz0gdmFsdWVbaV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHNoYXJlZCAhPT0gJycpIHtcclxuICAgICAgICAgIGRpZmZQYXJ0cy5wdXNoKHsgY29udGVudDogc2hhcmVkLCBpc0RpZmY6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgc2hhcmVkID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRpZmYgKz0gdmFsdWVbaV07XHJcbiAgICAgIH1cclxuICAgICAgaSsrO1xyXG4gICAgICBqKys7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRpZmYgIT09ICcnKSB7XHJcbiAgICAgIGRpZmZQYXJ0cy5wdXNoKHsgY29udGVudDogZGlmZiwgaXNEaWZmOiB0cnVlIH0pO1xyXG4gICAgfSBlbHNlIGlmIChzaGFyZWQgIT09ICcnKSB7XHJcbiAgICAgIGRpZmZQYXJ0cy5wdXNoKHsgY29udGVudDogc2hhcmVkLCBpc0RpZmY6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkaWZmUGFydHM7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlmZkNvbnRlbnQsIERpZmZMaW5lUmVzdWx0LCBEaWZmUGFydCwgRGlmZlRhYmxlRm9ybWF0LCBEaWZmVGFibGVGb3JtYXRPcHRpb24sIERpZmZUYWJsZVJvd1Jlc3VsdCB9IGZyb20gJy4vbmd4LXRleHQtZGlmZi5tb2RlbCc7XHJcbmltcG9ydCB7IE5neFRleHREaWZmU2VydmljZSB9IGZyb20gJy4vbmd4LXRleHQtZGlmZi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RkLW5neC10ZXh0LWRpZmYnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtdGV4dC1kaWZmLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9uZ3gtdGV4dC1kaWZmLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4VGV4dERpZmZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGZvcm1hdDogRGlmZlRhYmxlRm9ybWF0ID0gJ1NpZGVCeVNpZGUnO1xyXG4gIEBJbnB1dCgpIGxlZnQgPSAnJztcclxuICBASW5wdXQoKSByaWdodCA9ICcnO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcclxuICBASW5wdXQoKSBkaWZmQ29udGVudE9ic2VydmFibGUkOiBPYnNlcnZhYmxlPERpZmZDb250ZW50PjtcclxuICBASW5wdXQoKSBzaG93QnRuVG9vbGJhciA9IHRydWU7XHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICB0YWJsZVJvd3M6IERpZmZUYWJsZVJvd1Jlc3VsdFtdID0gW107XHJcbiAgZmlsdGVyZWRUYWJsZVJvd3M6IERpZmZUYWJsZVJvd1Jlc3VsdFtdID0gW107XHJcbiAgdGFibGVSb3dzTGluZUJ5TGluZTogRGlmZlRhYmxlUm93UmVzdWx0W10gPSBbXTtcclxuICBmaWx0ZXJlZFRhYmxlUm93c0xpbmVCeUxpbmU6IERpZmZUYWJsZVJvd1Jlc3VsdFtdID0gW107XHJcbiAgc2hvd0xpbmVzRGlmZnMgPSBmYWxzZTtcclxuICBkaWZmc0NvdW50ID0gMDtcclxuXHJcbiAgZm9ybWF0T3B0aW9uczogRGlmZlRhYmxlRm9ybWF0T3B0aW9uW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGlkOiAnc2lkZS1ieS1zaWRlJyxcclxuICAgICAgbmFtZTogJ3NpZGUtYnktc2lkZScsXHJcbiAgICAgIGxhYmVsOiAnU2lkZSBieSBTaWRlJyxcclxuICAgICAgdmFsdWU6ICdTaWRlQnlTaWRlJyxcclxuICAgICAgaWNvbjogJ2xhLWNvZGUnXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogJ2xpbmUtYnktbGluZScsXHJcbiAgICAgIG5hbWU6ICdsaW5lLWJ5LWxpbmUnLFxyXG4gICAgICBsYWJlbDogJ0xpbmUgYnkgTGluZScsXHJcbiAgICAgIHZhbHVlOiAnTGluZUJ5TGluZScsXHJcbiAgICAgIGljb246ICdsYS1maWxlLXRleHQnXHJcbiAgICB9XHJcbiAgXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWZmOiBOZ3hUZXh0RGlmZlNlcnZpY2UsIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmRpZmZDb250ZW50T2JzZXJ2YWJsZSQpIHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgdGhpcy5kaWZmQ29udGVudE9ic2VydmFibGUkLnN1YnNjcmliZShjb250ZW50ID0+IHtcclxuICAgICAgICAgIHRoaXMubGVmdCA9IGNvbnRlbnQubGVmdENvbnRlbnQ7XHJcbiAgICAgICAgICB0aGlzLnJpZ2h0ID0gY29udGVudC5yaWdodENvbnRlbnQ7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckRpZmZzKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMucmVuZGVyRGlmZnMoKS50aGVuKCk7XHJcbiAgfVxyXG5cclxuICBzaG93TGluZXNEaWZmc0NoYW5nZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zaG93TGluZXNEaWZmcyA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMuc2hvd0xpbmVzRGlmZnMpIHtcclxuICAgICAgdGhpcy5maWx0ZXJlZFRhYmxlUm93cyA9IHRoaXMudGFibGVSb3dzLmZpbHRlcihcclxuICAgICAgICByb3cgPT4gKHJvdy5sZWZ0Q29udGVudCAmJiByb3cubGVmdENvbnRlbnQucHJlZml4ID09PSAnLScpIHx8IChyb3cucmlnaHRDb250ZW50ICYmIHJvdy5yaWdodENvbnRlbnQucHJlZml4ID09PSAnKycpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3NMaW5lQnlMaW5lID0gdGhpcy50YWJsZVJvd3NMaW5lQnlMaW5lLmZpbHRlcihcclxuICAgICAgICByb3cgPT4gKHJvdy5sZWZ0Q29udGVudCAmJiByb3cubGVmdENvbnRlbnQucHJlZml4ID09PSAnLScpIHx8IChyb3cucmlnaHRDb250ZW50ICYmIHJvdy5yaWdodENvbnRlbnQucHJlZml4ID09PSAnKycpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkVGFibGVSb3dzID0gdGhpcy50YWJsZVJvd3M7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3NMaW5lQnlMaW5lID0gdGhpcy50YWJsZVJvd3NMaW5lQnlMaW5lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGlmZlRhYmxlRm9ybWF0KGZvcm1hdDogRGlmZlRhYmxlRm9ybWF0KSB7XHJcbiAgICB0aGlzLmZvcm1hdCA9IGZvcm1hdDtcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlbmRlckRpZmZzKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kaWZmc0NvdW50ID0gMDtcclxuICAgICAgdGhpcy50YWJsZVJvd3MgPSBhd2FpdCB0aGlzLmRpZmYuZ2V0RGlmZnNCeUxpbmVzKHRoaXMubGVmdCwgdGhpcy5yaWdodCk7XHJcbiAgICAgIHRoaXMudGFibGVSb3dzTGluZUJ5TGluZSA9IHRoaXMudGFibGVSb3dzLnJlZHVjZSgodGFibGVMaW5lQnlMaW5lOiBEaWZmVGFibGVSb3dSZXN1bHRbXSwgcm93OiBEaWZmVGFibGVSb3dSZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAoIXRhYmxlTGluZUJ5TGluZSkge1xyXG4gICAgICAgICAgdGFibGVMaW5lQnlMaW5lID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyb3cuaGFzRGlmZnMpIHtcclxuICAgICAgICAgIGlmIChyb3cubGVmdENvbnRlbnQpIHtcclxuICAgICAgICAgICAgdGFibGVMaW5lQnlMaW5lLnB1c2goe1xyXG4gICAgICAgICAgICAgIGxlZnRDb250ZW50OiByb3cubGVmdENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgcmlnaHRDb250ZW50OiBudWxsLFxyXG4gICAgICAgICAgICAgIGJlbG9uZ1RvOiByb3cuYmVsb25nVG8sXHJcbiAgICAgICAgICAgICAgaGFzRGlmZnM6IHRydWVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocm93LnJpZ2h0Q29udGVudCkge1xyXG4gICAgICAgICAgICB0YWJsZUxpbmVCeUxpbmUucHVzaCh7XHJcbiAgICAgICAgICAgICAgbGVmdENvbnRlbnQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgcmlnaHRDb250ZW50OiByb3cucmlnaHRDb250ZW50LFxyXG4gICAgICAgICAgICAgIGJlbG9uZ1RvOiByb3cuYmVsb25nVG8sXHJcbiAgICAgICAgICAgICAgaGFzRGlmZnM6IHRydWVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRhYmxlTGluZUJ5TGluZS5wdXNoKHJvdyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGFibGVMaW5lQnlMaW5lO1xyXG4gICAgICB9LCBbXSk7XHJcbiAgICAgIHRoaXMuZGlmZnNDb3VudCA9IHRoaXMudGFibGVSb3dzLmZpbHRlcihcclxuICAgICAgICByb3cgPT4gKHJvdy5sZWZ0Q29udGVudCAmJiByb3cubGVmdENvbnRlbnQucHJlZml4ID09PSAnLScpIHx8IChyb3cucmlnaHRDb250ZW50ICYmIHJvdy5yaWdodENvbnRlbnQucHJlZml4ID09PSAnKycpXHJcbiAgICAgICkubGVuZ3RoO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkVGFibGVSb3dzID0gdGhpcy50YWJsZVJvd3M7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3NMaW5lQnlMaW5lID0gdGhpcy50YWJsZVJvd3NMaW5lQnlMaW5lO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0gY2F0Y2ggKGUpIHt9XHJcbiAgfVxyXG5cclxuICB0cmFja1RhYmxlUm93cyhpbmRleCwgcm93OiBEaWZmVGFibGVSb3dSZXN1bHQpIHtcclxuICAgIHJldHVybiByb3cgJiYgcm93LmxlZnRDb250ZW50ID8gcm93LmxlZnRDb250ZW50LmxpbmVDb250ZW50IDogcm93ICYmIHJvdy5yaWdodENvbnRlbnQgPyByb3cucmlnaHRDb250ZW50LmxpbmVDb250ZW50IDogdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tEaWZmcyhpbmRleCwgZGlmZjogRGlmZlBhcnQpIHtcclxuICAgIHJldHVybiBkaWZmICYmIGRpZmYuY29udGVudCA/IGRpZmYuY29udGVudCA6IHVuZGVmaW5lZDtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RkLWxvYWRlci1zcHBpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvYWRlci1zcHBpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbG9hZGVyLXNwcGluZXIuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIExvYWRlclNwcGluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBhY3RpdmUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxufVxuIiwiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdmb3JtYXRMaW5lJ1xufSlcbmV4cG9ydCBjbGFzcyBGb3JtYXRMaW5lUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0obGluZTogc3RyaW5nLCBkaWZmcz86IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBpZiAoIWxpbmUpIHtcbiAgICAgIHJldHVybiAnICc7XG4gICAgfVxuICAgIGlmICghIWRpZmZzICYmIGRpZmZzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8qZGlmZnMuZm9yRWFjaChkaWZmID0+IHtcbiAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZShkaWZmLCBgPHNwYW4gY2xhc3M9XCJoaWdobGlcIj4ke2RpZmZ9PC9zcGFuPmApO1xuICAgICAgfSk7Ki9cbiAgICB9XG4gICAgcmV0dXJuIGxpbmVcbiAgICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpXG4gICAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpXG4gICAgICAucmVwbGFjZSgvPi9nLCAnJmd0OycpXG4gICAgICAucmVwbGFjZSgvXCIvZywgJyZxdW90OycpXG4gICAgICAucmVwbGFjZSgvIC9nLCAnJm5ic3A7Jyk7XG4gIH1cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5neFRleHREaWZmQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtdGV4dC1kaWZmLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTG9hZGVyU3BwaW5lckNvbXBvbmVudCB9IGZyb20gJy4vbG9hZGVyLXNwcGluZXIvbG9hZGVyLXNwcGluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1hdExpbmVQaXBlIH0gZnJvbSAnLi9mb3JtYXQtbGluZS5waXBlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxyXG4gIGRlY2xhcmF0aW9uczogW05neFRleHREaWZmQ29tcG9uZW50LCBMb2FkZXJTcHBpbmVyQ29tcG9uZW50LCBGb3JtYXRMaW5lUGlwZV0sXHJcbiAgZXhwb3J0czogW05neFRleHREaWZmQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4VGV4dERpZmZNb2R1bGUge31cclxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLElBQWEsS0FBSyxHQUFHLFVBQUEsR0FBRyxJQUFJLE9BQUEsR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssSUFBSSxHQUFBLENBQUM7O0FBQzlELElBQWEsT0FBTyxHQUFHLFVBQUEsR0FBRyxJQUFJLE9BQUEsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsTUFBTSxLQUFLLENBQUMsR0FBQTs7Ozs7O0FDRHhIO0lBV0U7UUFDRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7S0FDbkI7Ozs7SUFFTyx1Q0FBVTs7OztRQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQzs7Ozs7OztJQUczQyw0Q0FBZTs7Ozs7SUFBZixVQUFnQixJQUFZLEVBQUUsS0FBYTtRQUEzQyxpQkFlQztRQWRDLE9BQU8sSUFBSSxPQUFPLENBQXVCLFVBQUMsT0FBTyxFQUFFLE1BQU07O1lBQ3ZELElBQU0sQ0FBQyxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDOztZQUMxRCxJQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDOztZ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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRleHQtZGlmZi5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vbmd4LXRleHQtZGlmZi9saWIvbmd4LXRleHQtZGlmZi51dGlscy50cyIsIm5nOi8vbmd4LXRleHQtZGlmZi9saWIvbmd4LXRleHQtZGlmZi5zZXJ2aWNlLnRzIiwibmc6Ly9uZ3gtdGV4dC1kaWZmL2xpYi9uZ3gtdGV4dC1kaWZmLmNvbXBvbmVudC50cyIsIm5nOi8vbmd4LXRleHQtZGlmZi9saWIvbG9hZGVyLXNwaW5uZXIvbG9hZGVyLXNwaW5uZXIuY29tcG9uZW50LnRzIiwibmc6Ly9uZ3gtdGV4dC1kaWZmL2xpYi9mb3JtYXQtbGluZS5waXBlLnRzIiwibmc6Ly9uZ3gtdGV4dC1kaWZmL2xpYi9uZ3gtdGV4dC1kaWZmLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgaXNOaWwgPSB2YWwgPT4gdmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSBudWxsO1xyXG5leHBvcnQgY29uc3QgaXNFbXB0eSA9IHZhbCA9PiB2YWwgPT0gbnVsbCB8fCAhKE9iamVjdC5rZXlzKHZhbCkgfHwgdmFsKS5sZW5ndGggfHwgKE9iamVjdC5rZXlzKHZhbCkgfHwgdmFsKS5sZW5ndGggPT09IDA7XHJcbiIsImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlmZiwgRElGRl9ERUxFVEUsIERJRkZfRVFVQUwsIERJRkZfSU5TRVJULCBkaWZmX21hdGNoX3BhdGNoIH0gZnJvbSAnZGlmZi1tYXRjaC1wYXRjaCc7XHJcbmltcG9ydCB7IERpZmZMaW5lUmVzdWx0LCBEaWZmUGFydCwgRGlmZlRhYmxlUm93UmVzdWx0IH0gZnJvbSAnLi9uZ3gtdGV4dC1kaWZmLm1vZGVsJztcclxuaW1wb3J0IHsgaXNFbXB0eSwgaXNOaWwgfSBmcm9tICcuL25neC10ZXh0LWRpZmYudXRpbHMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4VGV4dERpZmZTZXJ2aWNlIHtcclxuICBkaWZmUGFyc2VyOiBkaWZmX21hdGNoX3BhdGNoO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuaW5pdFBhcnNlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0UGFyc2VyKCkge1xyXG4gICAgdGhpcy5kaWZmUGFyc2VyID0gbmV3IGRpZmZfbWF0Y2hfcGF0Y2goKTtcclxuICB9XHJcblxyXG4gIGdldERpZmZzQnlMaW5lcyhsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcpOiBQcm9taXNlPERpZmZUYWJsZVJvd1Jlc3VsdFtdPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2U8RGlmZlRhYmxlUm93UmVzdWx0W10+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgY29uc3QgYSA9IHRoaXMuZGlmZlBhcnNlci5kaWZmX2xpbmVzVG9DaGFyc18obGVmdCwgcmlnaHQpO1xyXG4gICAgICBjb25zdCBsaW5lVGV4dDEgPSBhLmNoYXJzMTtcclxuICAgICAgY29uc3QgbGluZVRleHQyID0gYS5jaGFyczI7XHJcbiAgICAgIGNvbnN0IGxpbmVzQXJyYXkgPSBhLmxpbmVBcnJheTtcclxuICAgICAgY29uc3QgZGlmZnM6IERpZmZbXSA9IHRoaXMuZGlmZlBhcnNlci5kaWZmX21haW4obGluZVRleHQxLCBsaW5lVGV4dDIsIHRydWUpO1xyXG4gICAgICB0aGlzLmRpZmZQYXJzZXIuZGlmZl9jaGFyc1RvTGluZXNfKGRpZmZzLCBsaW5lc0FycmF5KTtcclxuICAgICAgY29uc3Qgcm93czogRGlmZlRhYmxlUm93UmVzdWx0W10gPSB0aGlzLmZvcm1hdE91dHB1dE5ldyhkaWZmcywgbGluZXNBcnJheSk7XHJcbiAgICAgIGlmICghcm93cykge1xyXG4gICAgICAgIHJlamVjdCgnRXJyb3InKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmVzb2x2ZShyb3dzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRPdXRwdXROZXcoZGlmZnM6IERpZmZbXSwgbGluZXM/OiBzdHJpbmdbXSk6IERpZmZUYWJsZVJvd1Jlc3VsdFtdIHtcclxuICAgIGlmIChsaW5lcykge1xyXG4gICAgICByZXR1cm4gdGhpcy5mb3JtYXREaWZmc0Zyb21MaW5lcyhkaWZmcywgbGluZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXREaWZmc0Zyb21MaW5lcyhkaWZmczogRGlmZltdLCBsaW5lczogc3RyaW5nW10pOiBEaWZmVGFibGVSb3dSZXN1bHRbXSB7XHJcbiAgICBsaW5lcy5zcGxpY2UoMCwgMSk7XHJcbiAgICBsZXQgbGluZUxlZnQgPSAxO1xyXG4gICAgbGV0IGxpbmVSaWdodCA9IDE7XHJcbiAgICBjb25zdCBkaWZmUm93c1Jlc3VsdCA9IGRpZmZzLnJlZHVjZSgocm93czogRGlmZlRhYmxlUm93UmVzdWx0W10sIGRpZmY6IERpZmYpID0+IHtcclxuICAgICAgaWYgKCFyb3dzKSB7XHJcbiAgICAgICAgcm93cyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBkaWZmVmFsdWVzID0gZGlmZlsxXTtcclxuICAgICAgd2hpbGUgKCFpc05pbChkaWZmVmFsdWVzKSB8fCAhaXNFbXB0eShkaWZmVmFsdWVzKSB8fCBkaWZmVmFsdWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCBmaW5kSW5kZXggPSBsaW5lcy5maW5kSW5kZXgobGluZSA9PiBkaWZmVmFsdWVzLmluY2x1ZGVzKGxpbmUpKTtcclxuICAgICAgICBpZiAoZmluZEluZGV4ID49IDApIHtcclxuICAgICAgICAgIGNvbnN0IGxpbmUgPSBsaW5lc1tmaW5kSW5kZXhdO1xyXG4gICAgICAgICAgbGV0IGxlZnREaWZmUm93OiBEaWZmVGFibGVSb3dSZXN1bHQgPSBudWxsO1xyXG4gICAgICAgICAgbGV0IHJpZ2h0RGlmZlJvdzogRGlmZlRhYmxlUm93UmVzdWx0ID0gbnVsbDtcclxuICAgICAgICAgIGxldCBsZWZ0Q29udGVudDogRGlmZkxpbmVSZXN1bHQgPSBudWxsO1xyXG4gICAgICAgICAgbGV0IHJpZ2h0Q29udGVudDogRGlmZkxpbmVSZXN1bHQgPSBudWxsO1xyXG4gICAgICAgICAgbGV0IHJvd1RlbXA6IERpZmZUYWJsZVJvd1Jlc3VsdCA9IG51bGw7XHJcbiAgICAgICAgICBzd2l0Y2ggKGRpZmZbMF0pIHtcclxuICAgICAgICAgICAgY2FzZSBESUZGX0VRVUFMOlxyXG4gICAgICAgICAgICAgIGxlZnRDb250ZW50ID0ge1xyXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZUxlZnQsXHJcbiAgICAgICAgICAgICAgICBsaW5lQ29udGVudDogbGluZSxcclxuICAgICAgICAgICAgICAgIGxpbmVEaWZmczogW10sXHJcbiAgICAgICAgICAgICAgICBwcmVmaXg6ICcnXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICByaWdodENvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lUmlnaHQsXHJcbiAgICAgICAgICAgICAgICBsaW5lQ29udGVudDogbGluZSxcclxuICAgICAgICAgICAgICAgIGxpbmVEaWZmczogW10sXHJcbiAgICAgICAgICAgICAgICBwcmVmaXg6ICcnXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICByb3dUZW1wID0ge1xyXG4gICAgICAgICAgICAgICAgbGVmdENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICByaWdodENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICBiZWxvbmdUbzogJ2JvdGgnLFxyXG4gICAgICAgICAgICAgICAgaGFzRGlmZnM6IGZhbHNlXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICByb3dzLnB1c2gocm93VGVtcCk7XHJcbiAgICAgICAgICAgICAgbGluZVJpZ2h0ID0gbGluZVJpZ2h0ICsgMTtcclxuICAgICAgICAgICAgICBsaW5lTGVmdCA9IGxpbmVMZWZ0ICsgMTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBESUZGX0lOU0VSVDpcclxuICAgICAgICAgICAgICBsZWZ0RGlmZlJvdyA9IHJvd3MuZmluZChcclxuICAgICAgICAgICAgICAgIHJvdyA9PiByb3cubGVmdENvbnRlbnQgJiYgIXJvdy5yaWdodENvbnRlbnQgJiYgcm93LmxlZnRDb250ZW50LmxpbmVOdW1iZXIgPT09IGxpbmVSaWdodCAmJiByb3cubGVmdENvbnRlbnQucHJlZml4ICE9PSAnJ1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgcmlnaHRDb250ZW50ID0ge1xyXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZVJpZ2h0LFxyXG4gICAgICAgICAgICAgICAgbGluZUNvbnRlbnQ6IGxpbmUsXHJcbiAgICAgICAgICAgICAgICBsaW5lRGlmZnM6IFt7IGNvbnRlbnQ6IGxpbmUsIGlzRGlmZjogdHJ1ZSB9XSxcclxuICAgICAgICAgICAgICAgIHByZWZpeDogJysnXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICBpZiAobGVmdERpZmZSb3cpIHtcclxuICAgICAgICAgICAgICAgIGxlZnREaWZmUm93LnJpZ2h0Q29udGVudCA9IHJpZ2h0Q29udGVudDtcclxuICAgICAgICAgICAgICAgIGxlZnREaWZmUm93LmxlZnRDb250ZW50LmxpbmVEaWZmcyA9IHRoaXMuZ2V0RGlmZlBhcnRzKFxyXG4gICAgICAgICAgICAgICAgICBsZWZ0RGlmZlJvdy5sZWZ0Q29udGVudC5saW5lQ29udGVudCxcclxuICAgICAgICAgICAgICAgICAgbGVmdERpZmZSb3cucmlnaHRDb250ZW50LmxpbmVDb250ZW50XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgbGVmdERpZmZSb3cucmlnaHRDb250ZW50LmxpbmVEaWZmcyA9IHRoaXMuZ2V0RGlmZlBhcnRzKFxyXG4gICAgICAgICAgICAgICAgICBsZWZ0RGlmZlJvdy5yaWdodENvbnRlbnQubGluZUNvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgIGxlZnREaWZmUm93LmxlZnRDb250ZW50LmxpbmVDb250ZW50XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgbGVmdERpZmZSb3cuYmVsb25nVG8gPSAnYm90aCc7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJvd3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIGxlZnRDb250ZW50OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICByaWdodENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgIGhhc0RpZmZzOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICBiZWxvbmdUbzogJ3JpZ2h0J1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGxpbmVSaWdodCA9IGxpbmVSaWdodCArIDE7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgRElGRl9ERUxFVEU6XHJcbiAgICAgICAgICAgICAgcmlnaHREaWZmUm93ID0gcm93cy5maW5kKFxyXG4gICAgICAgICAgICAgICAgcm93ID0+ICFyb3cubGVmdENvbnRlbnQgJiYgcm93LnJpZ2h0Q29udGVudCAmJiByb3cucmlnaHRDb250ZW50LmxpbmVOdW1iZXIgPT09IGxpbmVMZWZ0ICYmIHJvdy5yaWdodENvbnRlbnQucHJlZml4ICE9PSAnJ1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgbGVmdENvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTGVmdCxcclxuICAgICAgICAgICAgICAgIGxpbmVDb250ZW50OiBsaW5lLFxyXG4gICAgICAgICAgICAgICAgbGluZURpZmZzOiBbeyBjb250ZW50OiBsaW5lLCBpc0RpZmY6IHRydWUgfV0sXHJcbiAgICAgICAgICAgICAgICBwcmVmaXg6ICctJ1xyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgaWYgKHJpZ2h0RGlmZlJvdykge1xyXG4gICAgICAgICAgICAgICAgcmlnaHREaWZmUm93LmxlZnRDb250ZW50ID0gbGVmdENvbnRlbnQ7XHJcbiAgICAgICAgICAgICAgICByaWdodERpZmZSb3cubGVmdENvbnRlbnQubGluZURpZmZzID0gdGhpcy5nZXREaWZmUGFydHMoXHJcbiAgICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5sZWZ0Q29udGVudC5saW5lQ29udGVudCxcclxuICAgICAgICAgICAgICAgICAgcmlnaHREaWZmUm93LnJpZ2h0Q29udGVudC5saW5lQ29udGVudFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5yaWdodENvbnRlbnQubGluZURpZmZzID0gdGhpcy5nZXREaWZmUGFydHMoXHJcbiAgICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5yaWdodENvbnRlbnQubGluZUNvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5sZWZ0Q29udGVudC5saW5lQ29udGVudFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJpZ2h0RGlmZlJvdy5iZWxvbmdUbyA9ICdib3RoJztcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcm93cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgbGVmdENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgIHJpZ2h0Q29udGVudDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgaGFzRGlmZnM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIGJlbG9uZ1RvOiAnbGVmdCdcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsaW5lTGVmdCA9IGxpbmVMZWZ0ICsgMTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBkaWZmVmFsdWVzID0gZGlmZlZhbHVlcy5yZXBsYWNlKGxpbmUsICcnKTtcclxuICAgICAgICAgIGxpbmVzLnNwbGljZShmaW5kSW5kZXgsIDEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiByb3dzO1xyXG4gICAgfSwgW10pO1xyXG5cclxuICAgIHJldHVybiBkaWZmUm93c1Jlc3VsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGlmZlBhcnRzKHZhbHVlOiBzdHJpbmcsIGNvbXBhcmVWYWx1ZTogc3RyaW5nKTogRGlmZlBhcnRbXSB7XHJcbiAgICBjb25zdCBkaWZmUGFydHM6IERpZmZQYXJ0W10gPSBbXTtcclxuICAgIGxldCBpID0gMDtcclxuICAgIGxldCBqID0gMDtcclxuICAgIGxldCBzaGFyZWQgPSAnJztcclxuICAgIGxldCBkaWZmID0gJyc7XHJcblxyXG4gICAgd2hpbGUgKGkgPCB2YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgaWYgKHZhbHVlW2ldID09PSBjb21wYXJlVmFsdWVbal0gJiYgaiA8IGNvbXBhcmVWYWx1ZS5sZW5ndGgpIHtcclxuICAgICAgICBpZiAoZGlmZiAhPT0gJycpIHtcclxuICAgICAgICAgIGRpZmZQYXJ0cy5wdXNoKHsgY29udGVudDogZGlmZiwgaXNEaWZmOiB0cnVlIH0pO1xyXG4gICAgICAgICAgZGlmZiA9ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzaGFyZWQgKz0gdmFsdWVbaV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHNoYXJlZCAhPT0gJycpIHtcclxuICAgICAgICAgIGRpZmZQYXJ0cy5wdXNoKHsgY29udGVudDogc2hhcmVkLCBpc0RpZmY6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgc2hhcmVkID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRpZmYgKz0gdmFsdWVbaV07XHJcbiAgICAgIH1cclxuICAgICAgaSsrO1xyXG4gICAgICBqKys7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRpZmYgIT09ICcnKSB7XHJcbiAgICAgIGRpZmZQYXJ0cy5wdXNoKHsgY29udGVudDogZGlmZiwgaXNEaWZmOiB0cnVlIH0pO1xyXG4gICAgfSBlbHNlIGlmIChzaGFyZWQgIT09ICcnKSB7XHJcbiAgICAgIGRpZmZQYXJ0cy5wdXNoKHsgY29udGVudDogc2hhcmVkLCBpc0RpZmY6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkaWZmUGFydHM7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlmZkNvbnRlbnQsIERpZmZQYXJ0LCBEaWZmVGFibGVGb3JtYXQsIERpZmZUYWJsZUZvcm1hdE9wdGlvbiwgRGlmZlRhYmxlUm93UmVzdWx0IH0gZnJvbSAnLi9uZ3gtdGV4dC1kaWZmLm1vZGVsJztcclxuaW1wb3J0IHsgTmd4VGV4dERpZmZTZXJ2aWNlIH0gZnJvbSAnLi9uZ3gtdGV4dC1kaWZmLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGQtbmd4LXRleHQtZGlmZicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25neC10ZXh0LWRpZmYuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25neC10ZXh0LWRpZmYuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hUZXh0RGlmZkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZm9ybWF0OiBEaWZmVGFibGVGb3JtYXQgPSAnU2lkZUJ5U2lkZSc7XHJcbiAgQElucHV0KCkgbGVmdCA9ICcnO1xyXG4gIEBJbnB1dCgpIHJpZ2h0ID0gJyc7XHJcbiAgQElucHV0KCkgZGlmZkNvbnRlbnQ6IE9ic2VydmFibGU8RGlmZkNvbnRlbnQ+O1xyXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93QnRuVG9vbGJhciA9IHRydWU7XHJcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICB0YWJsZVJvd3M6IERpZmZUYWJsZVJvd1Jlc3VsdFtdID0gW107XHJcbiAgZmlsdGVyZWRUYWJsZVJvd3M6IERpZmZUYWJsZVJvd1Jlc3VsdFtdID0gW107XHJcbiAgdGFibGVSb3dzTGluZUJ5TGluZTogRGlmZlRhYmxlUm93UmVzdWx0W10gPSBbXTtcclxuICBmaWx0ZXJlZFRhYmxlUm93c0xpbmVCeUxpbmU6IERpZmZUYWJsZVJvd1Jlc3VsdFtdID0gW107XHJcbiAgc2hvd0xpbmVzRGlmZnMgPSBmYWxzZTtcclxuICBkaWZmc0NvdW50ID0gMDtcclxuXHJcbiAgZm9ybWF0T3B0aW9uczogRGlmZlRhYmxlRm9ybWF0T3B0aW9uW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGlkOiAnc2lkZS1ieS1zaWRlJyxcclxuICAgICAgbmFtZTogJ3NpZGUtYnktc2lkZScsXHJcbiAgICAgIGxhYmVsOiAnU2lkZSBieSBTaWRlJyxcclxuICAgICAgdmFsdWU6ICdTaWRlQnlTaWRlJyxcclxuICAgICAgaWNvbjogJ2xhLWNvZGUnXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogJ2xpbmUtYnktbGluZScsXHJcbiAgICAgIG5hbWU6ICdsaW5lLWJ5LWxpbmUnLFxyXG4gICAgICBsYWJlbDogJ0xpbmUgYnkgTGluZScsXHJcbiAgICAgIHZhbHVlOiAnTGluZUJ5TGluZScsXHJcbiAgICAgIGljb246ICdsYS1maWxlLXRleHQnXHJcbiAgICB9XHJcbiAgXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWZmOiBOZ3hUZXh0RGlmZlNlcnZpY2UsIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmRpZmZDb250ZW50KSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuZGlmZkNvbnRlbnQuc3Vic2NyaWJlKGNvbnRlbnQgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sZWZ0ID0gY29udGVudC5sZWZ0Q29udGVudDtcclxuICAgICAgICAgIHRoaXMucmlnaHQgPSBjb250ZW50LnJpZ2h0Q29udGVudDtcclxuICAgICAgICAgIHRoaXMucmVuZGVyRGlmZnMoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZW5kZXJEaWZmcygpLnRoZW4oKTtcclxuICB9XHJcblxyXG4gIHNob3dMaW5lc0RpZmZzQ2hhbmdlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNob3dMaW5lc0RpZmZzID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5zaG93TGluZXNEaWZmcykge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkVGFibGVSb3dzID0gdGhpcy50YWJsZVJvd3MuZmlsdGVyKFxyXG4gICAgICAgIHJvdyA9PiAocm93LmxlZnRDb250ZW50ICYmIHJvdy5sZWZ0Q29udGVudC5wcmVmaXggPT09ICctJykgfHwgKHJvdy5yaWdodENvbnRlbnQgJiYgcm93LnJpZ2h0Q29udGVudC5wcmVmaXggPT09ICcrJylcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5maWx0ZXJlZFRhYmxlUm93c0xpbmVCeUxpbmUgPSB0aGlzLnRhYmxlUm93c0xpbmVCeUxpbmUuZmlsdGVyKFxyXG4gICAgICAgIHJvdyA9PiAocm93LmxlZnRDb250ZW50ICYmIHJvdy5sZWZ0Q29udGVudC5wcmVmaXggPT09ICctJykgfHwgKHJvdy5yaWdodENvbnRlbnQgJiYgcm93LnJpZ2h0Q29udGVudC5wcmVmaXggPT09ICcrJylcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3MgPSB0aGlzLnRhYmxlUm93cztcclxuICAgICAgdGhpcy5maWx0ZXJlZFRhYmxlUm93c0xpbmVCeUxpbmUgPSB0aGlzLnRhYmxlUm93c0xpbmVCeUxpbmU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREaWZmVGFibGVGb3JtYXQoZm9ybWF0OiBEaWZmVGFibGVGb3JtYXQpIHtcclxuICAgIHRoaXMuZm9ybWF0ID0gZm9ybWF0O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVuZGVyRGlmZnMoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRpZmZzQ291bnQgPSAwO1xyXG4gICAgICB0aGlzLnRhYmxlUm93cyA9IGF3YWl0IHRoaXMuZGlmZi5nZXREaWZmc0J5TGluZXModGhpcy5sZWZ0LCB0aGlzLnJpZ2h0KTtcclxuICAgICAgdGhpcy50YWJsZVJvd3NMaW5lQnlMaW5lID0gdGhpcy50YWJsZVJvd3MucmVkdWNlKCh0YWJsZUxpbmVCeUxpbmU6IERpZmZUYWJsZVJvd1Jlc3VsdFtdLCByb3c6IERpZmZUYWJsZVJvd1Jlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmICghdGFibGVMaW5lQnlMaW5lKSB7XHJcbiAgICAgICAgICB0YWJsZUxpbmVCeUxpbmUgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJvdy5oYXNEaWZmcykge1xyXG4gICAgICAgICAgaWYgKHJvdy5sZWZ0Q29udGVudCkge1xyXG4gICAgICAgICAgICB0YWJsZUxpbmVCeUxpbmUucHVzaCh7XHJcbiAgICAgICAgICAgICAgbGVmdENvbnRlbnQ6IHJvdy5sZWZ0Q29udGVudCxcclxuICAgICAgICAgICAgICByaWdodENvbnRlbnQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgYmVsb25nVG86IHJvdy5iZWxvbmdUbyxcclxuICAgICAgICAgICAgICBoYXNEaWZmczogdHJ1ZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyb3cucmlnaHRDb250ZW50KSB7XHJcbiAgICAgICAgICAgIHRhYmxlTGluZUJ5TGluZS5wdXNoKHtcclxuICAgICAgICAgICAgICBsZWZ0Q29udGVudDogbnVsbCxcclxuICAgICAgICAgICAgICByaWdodENvbnRlbnQ6IHJvdy5yaWdodENvbnRlbnQsXHJcbiAgICAgICAgICAgICAgYmVsb25nVG86IHJvdy5iZWxvbmdUbyxcclxuICAgICAgICAgICAgICBoYXNEaWZmczogdHJ1ZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGFibGVMaW5lQnlMaW5lLnB1c2gocm93KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0YWJsZUxpbmVCeUxpbmU7XHJcbiAgICAgIH0sIFtdKTtcclxuICAgICAgdGhpcy5kaWZmc0NvdW50ID0gdGhpcy50YWJsZVJvd3MuZmlsdGVyKFxyXG4gICAgICAgIHJvdyA9PiAocm93LmxlZnRDb250ZW50ICYmIHJvdy5sZWZ0Q29udGVudC5wcmVmaXggPT09ICctJykgfHwgKHJvdy5yaWdodENvbnRlbnQgJiYgcm93LnJpZ2h0Q29udGVudC5wcmVmaXggPT09ICcrJylcclxuICAgICAgKS5sZW5ndGg7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRUYWJsZVJvd3MgPSB0aGlzLnRhYmxlUm93cztcclxuICAgICAgdGhpcy5maWx0ZXJlZFRhYmxlUm93c0xpbmVCeUxpbmUgPSB0aGlzLnRhYmxlUm93c0xpbmVCeUxpbmU7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSBjYXRjaCAoZSkge31cclxuICB9XHJcblxyXG4gIHRyYWNrVGFibGVSb3dzKGluZGV4LCByb3c6IERpZmZUYWJsZVJvd1Jlc3VsdCkge1xyXG4gICAgcmV0dXJuIHJvdyAmJiByb3cubGVmdENvbnRlbnQgPyByb3cubGVmdENvbnRlbnQubGluZUNvbnRlbnQgOiByb3cgJiYgcm93LnJpZ2h0Q29udGVudCA/IHJvdy5yaWdodENvbnRlbnQubGluZUNvbnRlbnQgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICB0cmFja0RpZmZzKGluZGV4LCBkaWZmOiBEaWZmUGFydCkge1xyXG4gICAgcmV0dXJuIGRpZmYgJiYgZGlmZi5jb250ZW50ID8gZGlmZi5jb250ZW50IDogdW5kZWZpbmVkO1xyXG4gIH1cclxufVxyXG4iLCJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGQtbG9hZGVyLXNwaW5uZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9hZGVyLXNwaW5uZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sb2FkZXItc3Bpbm5lci5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTG9hZGVyU3Bpbm5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGFjdGl2ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpIHt9XG59XG4iLCJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2Zvcm1hdExpbmUnXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1hdExpbmVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShsaW5lOiBzdHJpbmcsIGRpZmZzPzogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGlmICghbGluZSkge1xuICAgICAgcmV0dXJuICcgJztcbiAgICB9XG4gICAgaWYgKCEhZGlmZnMgJiYgZGlmZnMubGVuZ3RoID4gMCkge1xuICAgICAgLypkaWZmcy5mb3JFYWNoKGRpZmYgPT4ge1xuICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKGRpZmYsIGA8c3BhbiBjbGFzcz1cImhpZ2hsaVwiPiR7ZGlmZn08L3NwYW4+YCk7XG4gICAgICB9KTsqL1xuICAgIH1cbiAgICByZXR1cm4gbGluZVxuICAgICAgLnJlcGxhY2UoLyYvZywgJyZhbXA7JylcbiAgICAgIC5yZXBsYWNlKC88L2csICcmbHQ7JylcbiAgICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7JylcbiAgICAgIC5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7JylcbiAgICAgIC5yZXBsYWNlKC8gL2csICcmbmJzcDsnKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmd4VGV4dERpZmZDb21wb25lbnQgfSBmcm9tICcuL25neC10ZXh0LWRpZmYuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IExvYWRlclNwaW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2xvYWRlci1zcGlubmVyL2xvYWRlci1zcGlubmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1hdExpbmVQaXBlIH0gZnJvbSAnLi9mb3JtYXQtbGluZS5waXBlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxyXG4gIGRlY2xhcmF0aW9uczogW05neFRleHREaWZmQ29tcG9uZW50LCBMb2FkZXJTcGlubmVyQ29tcG9uZW50LCBGb3JtYXRMaW5lUGlwZV0sXHJcbiAgZXhwb3J0czogW05neFRleHREaWZmQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4VGV4dERpZmZNb2R1bGUge31cclxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLElBQWEsS0FBSyxHQUFHLFVBQUEsR0FBRyxJQUFJLE9BQUEsR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssSUFBSSxHQUFBLENBQUM7O0FBQzlELElBQWEsT0FBTyxHQUFHLFVBQUEsR0FBRyxJQUFJLE9BQUEsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsTUFBTSxLQUFLLENBQUMsR0FBQSxDQUFDOzs7Ozs7QUNEekg7SUFXRTtRQUNFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQUNuQjs7OztJQUVPLHVDQUFVOzs7O1FBQ2hCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDOzs7Ozs7O0lBRzNDLDRDQUFlOzs7OztJQUFmLFVBQWdCLElBQVksRUFBRSxLQUFhO1FBQTNDLGlCQWVDO1FBZEMsT0FBTyxJQUFJLE9BQU8sQ0FBdUIsVUFBQyxPQUFPLEVBQUUsTUFBTTs7WUFDdkQsSUFBTSxDQUFDLEdBQUcsS0FBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7O1lBQzFELElBQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7O1lBQzNCLElBQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7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

@@ -11,4 +11,4 @@ import { ChangeDetectorRef, OnInit } from '@angular/core';

right: string;
diffContent: Observable<DiffContent>;
loading: boolean;
diffContentObservable$: Observable<DiffContent>;
showBtnToolbar: boolean;

@@ -15,0 +15,0 @@ subscriptions: Subscription[];

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

export declare type DiffTableFormat = 'SideBySide' | 'LineByLine' | 'MergeView';
export declare type DiffTableFormat = 'SideBySide' | 'LineByLine';
export declare type SideDiff = 'both' | 'left' | 'right';

@@ -3,0 +3,0 @@ export interface DiffTableFormatOption {

@@ -5,1 +5,3 @@ /**

export * from './public_api';
export { FormatLinePipe as ɵb } from './lib/format-line.pipe';
export { LoaderSpinnerComponent as ɵa } from './lib/loader-spinner/loader-spinner.component';

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

{"__symbolic":"module","version":4,"metadata":{"NgxTextDiffService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"initParser":[{"__symbolic":"method"}],"getDiffsByLines":[{"__symbolic":"method"}],"formatOutputNew":[{"__symbolic":"method"}],"formatDiffsFromLines":[{"__symbolic":"method"}],"getDiffParts":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"NgxTextDiffComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"td-ngx-text-diff","template":"<td-loader-sppiner [active]=\"loading\"></td-loader-sppiner>\r\n<div *ngIf=\"!loading\">\r\n <div class=\"td-wrapper\">\r\n <div class=\"td-toolbar-show-diff\">\r\n <label class=\"td-checkbox-container\">Show Lines with Diffs ({{diffsCount}})\r\n <input type=\"checkbox\"\r\n id=\"showDiffs\"\r\n [ngModel]=\"showLinesDiffs\"\r\n (ngModelChange)=\"showLinesDiffsChange($event)\"\r\n >\r\n <span class=\"checkmark\"></span>\r\n </label>\r\n </div>\r\n <div class=\"td-toolbar-select-format\" *ngIf=\"showBtnToolbar\">\r\n <div class=\"td-btn-group td-btn-group-toggle\" data-toggle=\"buttons\">\r\n <button *ngFor=\"let option of formatOptions\"\r\n [ngClass]=\"{'active': format === option.value, 'disabled': !!option.disabled}\"\r\n [name]=\"option.name\"\r\n [id]=\"option.id\"\r\n [disabled]=\"!!option.disabled\"\r\n (click)=\"setDiffTableFormat(option.value)\"\r\n >{{option.label}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"td-table-wrapper\">\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n {{(row.leftContent?.lineNumber !== -1) ?\r\n row.leftContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n <span>{{row.leftContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n {{(row.rightContent?.lineNumber !== -1) ?\r\n row.rightContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n <span>{{row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.rightContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container line-by-line\" *ngIf=\"format === 'LineByLine'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRowsLineByLine; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col-left\">{{row.leftContent?.lineNumber}}</td>\r\n <td scope=\"row\" class=\"fit-column line-number-col\">{{row.rightContent?.lineNumber}}</td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\">\r\n <span>{{row.leftContent?.prefix || row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.leftContent && row.leftContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.rightContent && row.rightContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","styles":[".td-wrapper{display:-ms-grid;display:grid;width:100%;grid-row-gap:10px;-ms-grid-columns:([col] 50%)[2];grid-template-columns:repeat(2,[col] 50%);-ms-grid-rows:([row] auto)[2];grid-template-rows:repeat(2,[row] auto);background-color:#fff;color:#444}.td-toolbar-show-diff{-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1}.td-toolbar-select-format{margin-left:auto;-ms-grid-column:2;grid-column:2;-ms-grid-row:1;grid-row:1}.td-table-container{-ms-grid-column:1;-ms-grid-column-span:1;grid-column:1/2;-ms-grid-row:2;grid-row:2;width:100%;max-width:100%;overflow-x:auto}.td-table-wrapper{display:flex;width:200%}.td-table{border:1px solid #a9a9a9;max-height:50vh;width:100%;max-width:100%}.fit-column{width:1px;white-space:nowrap}.line-number-col{border-right:1px solid #ddd;color:#999;text-align:right;background-color:#f7f7f7;padding-left:10px;padding-right:10px;font-size:87.5%}.line-number-col-left{color:#999;padding-left:10px;padding-right:10px;text-align:right;background-color:#f7f7f7;font-size:87.5%}.insert-row,.insert-row>.line-number-col{background-color:#dfd;border-color:#b4e2b4}.delete-row,.delete-row>.line-number-col{background-color:#fee8e9;border-color:#e9aeae}.empty-row{background-color:#f7f7f7;height:24px}.td-table td{border-top:0;padding-top:0;padding-bottom:0;white-space:nowrap;max-width:50%}pre{margin-bottom:0}td.content-col{padding:0;margin:0;line-height:24px}td.prefix-col{padding-left:10px;padding-right:10px;line-height:24px}.td-btn-group{border-radius:4px}.td-btn-group button{background-color:rgba(23,162,184,.7);border:1px solid #17a2b8;color:#fff;cursor:pointer;float:left}.td-btn-group button:not(:last-child){border-right:none}.td-btn-group button:first-child{-webkit-border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-bottomleft:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.td-btn-group button:last-child{-webkit-border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;border-top-right-radius:4px;border-bottom-right-radius:4px}.td-btn-group:after{content:'';clear:both;display:table}.td-btn-group button.active,.td-btn-group button:hover{background-color:#17a2b8}.td-checkbox-container{display:block;position:relative;padding-left:21px;margin-bottom:0;cursor:pointer;font-size:16px;line-height:28px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.td-checkbox-container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.checkmark{position:absolute;top:7px;left:0;height:16px;width:16px;background-color:#eee}.td-checkbox-container:hover input~.checkmark{background-color:#ccc}.td-checkbox-container input:checked~.checkmark{background-color:#17a2b8}.checkmark:after{content:\"\";position:absolute;display:none}.td-checkbox-container input:checked~.checkmark:after{display:block}.td-checkbox-container .checkmark:after{left:5px;top:3px;width:5px;height:10px;border:solid #fff;border-width:0 3px 3px 0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.insert-row>.highlight{background-color:#acf2bd!important}.delete-row>.highlight{background-color:#fdb8c0!important}"]}]}],"members":{"format":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"left":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"right":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"loading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"diffContentObservable$":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"showBtnToolbar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"NgxTextDiffService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":42,"character":60}]}],"ngOnInit":[{"__symbolic":"method"}],"showLinesDiffsChange":[{"__symbolic":"method"}],"setDiffTableFormat":[{"__symbolic":"method"}],"renderDiffs":[{"__symbolic":"method"}],"trackTableRows":[{"__symbolic":"method"}],"trackDiffs":[{"__symbolic":"method"}]}},"LoaderSppinerComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"td-loader-sppiner","template":"<div class=\"td-loading-roller\" *ngIf=\"active\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n</div>\n","styles":[".td-loading-roller{display:inline-block;position:relative;width:64px;height:64px}.td-loading-roller div{-webkit-animation:1.2s cubic-bezier(.5,0,.5,1) infinite lds-roller;animation:1.2s cubic-bezier(.5,0,.5,1) infinite lds-roller;-webkit-transform-origin:32px 32px;transform-origin:32px 32px}.td-loading-roller div:after{content:\" \";display:block;position:absolute;width:6px;height:6px;border-radius:50%;background:#000;margin:-3px 0 0 -3px}.td-loading-roller div:nth-child(1){-webkit-animation-delay:-36ms;animation-delay:-36ms}.td-loading-roller div:nth-child(1):after{top:50px;left:50px}.td-loading-roller div:nth-child(2){-webkit-animation-delay:-72ms;animation-delay:-72ms}.td-loading-roller div:nth-child(2):after{top:54px;left:45px}.td-loading-roller div:nth-child(3){-webkit-animation-delay:-108ms;animation-delay:-108ms}.td-loading-roller div:nth-child(3):after{top:57px;left:39px}.td-loading-roller div:nth-child(4){-webkit-animation-delay:-144ms;animation-delay:-144ms}.td-loading-roller div:nth-child(4):after{top:58px;left:32px}.td-loading-roller div:nth-child(5){-webkit-animation-delay:-.18s;animation-delay:-.18s}.td-loading-roller div:nth-child(5):after{top:57px;left:25px}.td-loading-roller div:nth-child(6){-webkit-animation-delay:-216ms;animation-delay:-216ms}.td-loading-roller div:nth-child(6):after{top:54px;left:19px}.td-loading-roller div:nth-child(7){-webkit-animation-delay:-252ms;animation-delay:-252ms}.td-loading-roller div:nth-child(7):after{top:50px;left:14px}.td-loading-roller div:nth-child(8){-webkit-animation-delay:-288ms;animation-delay:-288ms}.td-loading-roller div:nth-child(8):after{top:45px;left:10px}@-webkit-keyframes lds-roller{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes lds-roller{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}"]}]}],"members":{"active":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":8,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}},"FormatLinePipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":2,"character":1},"arguments":[{"name":"formatLine"}]}],"members":{"transform":[{"__symbolic":"method"}]}},"DiffTableFormat":{"__symbolic":"interface"},"SideDiff":{"__symbolic":"interface"},"DiffTableFormatOption":{"__symbolic":"interface"},"DiffContent":{"__symbolic":"interface"},"DiffPart":{"__symbolic":"interface"},"DiffLineResult":{"__symbolic":"interface"},"DiffTableRowResult":{"__symbolic":"interface"},"isNil":{"__symbolic":"error","message":"Lambda not supported","line":0,"character":21,"module":"./lib/ngx-text-diff.utils"},"isEmpty":{"__symbolic":"error","message":"Lambda not supported","line":1,"character":23,"module":"./lib/ngx-text-diff.utils"},"NgxTextDiffModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":12},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":8,"character":26}],"declarations":[{"__symbolic":"reference","name":"NgxTextDiffComponent"},{"__symbolic":"reference","name":"LoaderSppinerComponent"},{"__symbolic":"reference","name":"FormatLinePipe"}],"exports":[{"__symbolic":"reference","name":"NgxTextDiffComponent"}]}]}],"members":{}}},"origins":{"NgxTextDiffService":"./lib/ngx-text-diff.service","NgxTextDiffComponent":"./lib/ngx-text-diff.component","LoaderSppinerComponent":"./lib/loader-sppiner/loader-sppiner.component","FormatLinePipe":"./lib/format-line.pipe","DiffTableFormat":"./lib/ngx-text-diff.model","SideDiff":"./lib/ngx-text-diff.model","DiffTableFormatOption":"./lib/ngx-text-diff.model","DiffContent":"./lib/ngx-text-diff.model","DiffPart":"./lib/ngx-text-diff.model","DiffLineResult":"./lib/ngx-text-diff.model","DiffTableRowResult":"./lib/ngx-text-diff.model","isNil":"./lib/ngx-text-diff.utils","isEmpty":"./lib/ngx-text-diff.utils","NgxTextDiffModule":"./lib/ngx-text-diff.module"},"importAs":"ngx-text-diff"}
{"__symbolic":"module","version":4,"metadata":{"NgxTextDiffService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"initParser":[{"__symbolic":"method"}],"getDiffsByLines":[{"__symbolic":"method"}],"formatOutputNew":[{"__symbolic":"method"}],"formatDiffsFromLines":[{"__symbolic":"method"}],"getDiffParts":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"NgxTextDiffComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"td-ngx-text-diff","template":"<td-loader-spinner [active]=\"loading\"></td-loader-spinner>\r\n<div *ngIf=\"!loading\">\r\n <div class=\"td-wrapper\">\r\n <div class=\"td-toolbar-show-diff\">\r\n <label class=\"td-checkbox-container\">Show Lines with Diffs ({{diffsCount}})\r\n <input type=\"checkbox\"\r\n id=\"showDiffs\"\r\n [ngModel]=\"showLinesDiffs\"\r\n (ngModelChange)=\"showLinesDiffsChange($event)\"\r\n >\r\n <span class=\"checkmark\"></span>\r\n </label>\r\n </div>\r\n <div class=\"td-toolbar-select-format\" *ngIf=\"showBtnToolbar\">\r\n <div class=\"td-btn-group td-btn-group-toggle\" data-toggle=\"buttons\">\r\n <button *ngFor=\"let option of formatOptions\"\r\n [ngClass]=\"{'active': format === option.value, 'disabled': !!option.disabled}\"\r\n [name]=\"option.name\"\r\n [id]=\"option.id\"\r\n [disabled]=\"!!option.disabled\"\r\n (click)=\"setDiffTableFormat(option.value)\"\r\n >{{option.label}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"td-table-wrapper\">\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n {{(row.leftContent?.lineNumber !== -1) ?\r\n row.leftContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\">\r\n <span>{{row.leftContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'empty-row': !row.leftContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container side-by-side\" *ngIf=\"format === 'SideBySide'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRows; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n {{(row.rightContent?.lineNumber !== -1) ?\r\n row.rightContent?.lineNumber : ' '}}\r\n </td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\">\r\n <span>{{row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.rightContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'insert-row' : row.rightContent?.prefix === '+', 'empty-row': !row.rightContent?.lineContent}\"\r\n *ngIf=\"row.hasDiffs\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"td-table-container line-by-line\" *ngIf=\"format === 'LineByLine'\">\r\n <table class=\"td-table\">\r\n <tbody>\r\n <tr *ngFor=\"let row of filteredTableRowsLineByLine; trackBy: trackTableRows\">\r\n <td scope=\"row\" class=\"fit-column line-number-col-left\">{{row.leftContent?.lineNumber}}</td>\r\n <td scope=\"row\" class=\"fit-column line-number-col\">{{row.rightContent?.lineNumber}}</td>\r\n <td class=\"fit-column prefix-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\">\r\n <span>{{row.leftContent?.prefix || row.rightContent?.prefix || ' '}}</span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"!row.hasDiffs\">\r\n <span [innerHTML]=\"row.leftContent?.lineContent | formatLine\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.leftContent && row.leftContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.leftContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n <td class=\"content-col\"\r\n [ngClass]=\"{'delete-row' : row.leftContent?.prefix === '-', 'insert-row' : row.rightContent?.prefix === '+'}\"\r\n *ngIf=\"row.hasDiffs && row.rightContent && row.rightContent?.lineDiffs.length !== 0\">\r\n <span [innerHTML]=\"diff.content | formatLine\" [ngClass]=\"{'highlight': diff.isDiff}\"\r\n *ngFor=\"let diff of row.rightContent?.lineDiffs; trackBy: trackDiffs\"></span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","styles":[".td-wrapper{display:-ms-grid;display:grid;width:100%;grid-row-gap:10px;-ms-grid-columns:([col] 50%)[2];grid-template-columns:repeat(2,[col] 50%);-ms-grid-rows:([row] auto)[2];grid-template-rows:repeat(2,[row] auto);background-color:#fff;color:#444}.td-toolbar-show-diff{-ms-grid-column:1;grid-column:1;-ms-grid-row:1;grid-row:1}.td-toolbar-select-format{margin-left:auto;-ms-grid-column:2;grid-column:2;-ms-grid-row:1;grid-row:1}.td-table-container{-ms-grid-column:1;-ms-grid-column-span:1;grid-column:1/2;-ms-grid-row:2;grid-row:2;width:100%;max-width:100%;overflow-x:auto}.td-table-wrapper{display:flex;width:200%}.td-table{border:1px solid #a9a9a9;max-height:50vh;width:100%;max-width:100%}.fit-column{width:1px;white-space:nowrap}.line-number-col{border-right:1px solid #ddd;color:#999;text-align:right;background-color:#f7f7f7;padding-left:10px;padding-right:10px;font-size:87.5%}.line-number-col-left{color:#999;padding-left:10px;padding-right:10px;text-align:right;background-color:#f7f7f7;font-size:87.5%}.insert-row,.insert-row>.line-number-col{background-color:#dfd;border-color:#b4e2b4}.delete-row,.delete-row>.line-number-col{background-color:#fee8e9;border-color:#e9aeae}.empty-row{background-color:#f7f7f7;height:24px}.td-table td{border-top:0;padding-top:0;padding-bottom:0;white-space:nowrap;max-width:50%}pre{margin-bottom:0}td.content-col{padding:0;margin:0;line-height:24px}td.prefix-col{padding-left:10px;padding-right:10px;line-height:24px}.td-btn-group{border-radius:4px}.td-btn-group button{background-color:rgba(23,162,184,.7);border:1px solid #17a2b8;color:#fff;cursor:pointer;float:left}.td-btn-group button:not(:last-child){border-right:none}.td-btn-group button:first-child{-webkit-border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-bottomleft:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.td-btn-group button:last-child{-webkit-border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px;border-top-right-radius:4px;border-bottom-right-radius:4px}.td-btn-group:after{content:'';clear:both;display:table}.td-btn-group button.active,.td-btn-group button:hover{background-color:#17a2b8}.td-checkbox-container{display:block;position:relative;padding-left:21px;margin-bottom:0;cursor:pointer;font-size:16px;line-height:28px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.td-checkbox-container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.checkmark{position:absolute;top:7px;left:0;height:16px;width:16px;background-color:#eee}.td-checkbox-container:hover input~.checkmark{background-color:#ccc}.td-checkbox-container input:checked~.checkmark{background-color:#17a2b8}.checkmark:after{content:\"\";position:absolute;display:none}.td-checkbox-container input:checked~.checkmark:after{display:block}.td-checkbox-container .checkmark:after{left:5px;top:3px;width:5px;height:10px;border:solid #fff;border-width:0 3px 3px 0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.insert-row>.highlight{background-color:#acf2bd!important}.delete-row>.highlight{background-color:#fdb8c0!important}"]}]}],"members":{"format":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"left":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"right":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"diffContent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"loading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"showBtnToolbar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"NgxTextDiffService"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":42,"character":60}]}],"ngOnInit":[{"__symbolic":"method"}],"showLinesDiffsChange":[{"__symbolic":"method"}],"setDiffTableFormat":[{"__symbolic":"method"}],"renderDiffs":[{"__symbolic":"method"}],"trackTableRows":[{"__symbolic":"method"}],"trackDiffs":[{"__symbolic":"method"}]}},"NgxTextDiffModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":12},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":8,"character":26}],"declarations":[{"__symbolic":"reference","name":"NgxTextDiffComponent"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵb"}],"exports":[{"__symbolic":"reference","name":"NgxTextDiffComponent"}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"td-loader-spinner","template":"<div class=\"td-loading-roller\" *ngIf=\"active\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n</div>\n","styles":[".td-loading-roller{display:inline-block;position:relative;width:64px;height:64px}.td-loading-roller div{-webkit-animation:1.2s cubic-bezier(.5,0,.5,1) infinite lds-roller;animation:1.2s cubic-bezier(.5,0,.5,1) infinite lds-roller;-webkit-transform-origin:32px 32px;transform-origin:32px 32px}.td-loading-roller div:after{content:\" \";display:block;position:absolute;width:6px;height:6px;border-radius:50%;background:#000;margin:-3px 0 0 -3px}.td-loading-roller div:nth-child(1){-webkit-animation-delay:-36ms;animation-delay:-36ms}.td-loading-roller div:nth-child(1):after{top:50px;left:50px}.td-loading-roller div:nth-child(2){-webkit-animation-delay:-72ms;animation-delay:-72ms}.td-loading-roller div:nth-child(2):after{top:54px;left:45px}.td-loading-roller div:nth-child(3){-webkit-animation-delay:-108ms;animation-delay:-108ms}.td-loading-roller div:nth-child(3):after{top:57px;left:39px}.td-loading-roller div:nth-child(4){-webkit-animation-delay:-144ms;animation-delay:-144ms}.td-loading-roller div:nth-child(4):after{top:58px;left:32px}.td-loading-roller div:nth-child(5){-webkit-animation-delay:-.18s;animation-delay:-.18s}.td-loading-roller div:nth-child(5):after{top:57px;left:25px}.td-loading-roller div:nth-child(6){-webkit-animation-delay:-216ms;animation-delay:-216ms}.td-loading-roller div:nth-child(6):after{top:54px;left:19px}.td-loading-roller div:nth-child(7){-webkit-animation-delay:-252ms;animation-delay:-252ms}.td-loading-roller div:nth-child(7):after{top:50px;left:14px}.td-loading-roller div:nth-child(8){-webkit-animation-delay:-288ms;animation-delay:-288ms}.td-loading-roller div:nth-child(8):after{top:45px;left:10px}@-webkit-keyframes lds-roller{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes lds-roller{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}"]}]}],"members":{"active":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":8,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":2,"character":1},"arguments":[{"name":"formatLine"}]}],"members":{"transform":[{"__symbolic":"method"}]}}},"origins":{"NgxTextDiffService":"./lib/ngx-text-diff.service","NgxTextDiffComponent":"./lib/ngx-text-diff.component","NgxTextDiffModule":"./lib/ngx-text-diff.module","ɵa":"./lib/loader-spinner/loader-spinner.component","ɵb":"./lib/format-line.pipe"},"importAs":"ngx-text-diff"}
{
"name": "ngx-text-diff",
"version": "0.5.0",
"description": "A Text Diff component for Angular 6.",
"version": "0.5.1",
"description": "A Text Diff component for Angular.",
"keywords": [

@@ -11,3 +11,3 @@ "Angular",

],
"license": "SEE LICENSE IN LICENSE",
"license": "MIT",
"author": {

@@ -27,5 +27,5 @@ "name": "Alfredo Benassi",

"peerDependencies": {
"@angular/common": ">=6.0.0 <7.0.0",
"@angular/core": "^>=6.0.0 <7.0.0",
"@angular/forms": "^>=6.0.0 <7.0.0",
"@angular/common": ">=6.0.0",
"@angular/core": "^>=6.0.0",
"@angular/forms": "^>=6.0.0",
"rxjs": "~6.3.3"

@@ -32,0 +32,0 @@ },

export * from './lib/ngx-text-diff.service';
export * from './lib/ngx-text-diff.component';
export * from './lib/loader-sppiner/loader-sppiner.component';
export * from './lib/format-line.pipe';
export * from './lib/ngx-text-diff.model';
export * from './lib/ngx-text-diff.utils';
export * from './lib/ngx-text-diff.module';
# ngx-text-diff
- A simple text diff `component` to be used with Angular 6 and based on `google diff match patch` library.
- A simple text diff `component` to be used with Angular and based on `google diff match patch` library.

@@ -20,9 +20,20 @@ ## Dependencies

### Inputs
| Input | Type | Required | Description |
| ---------------- | ------- | -------------------------------- | ------------------------------------------------------------------------ |
| left | string | Yes | First text to be compared |
| right | string | Yes | Second text to be compared |
| format | type | Optional, default: 'SideBySide' | Possible values:<br> -'SideBySide'<br> -'LineByLine' |
| Input | Type | Required | Description |
| -------------- | ----------------- | ------------------------------- | ----------------------------------------------------------------------------------------------- |
| left | string | Yes | First text to be compared |
| right | string | Yes | Second text to be compared |
| diffContent | Observable | Optional | `DiffContent` observable |
| format | `DiffTableFormat` | Optional, default: `SideBySide` | Possible values:<br> -`SideBySide`<br> -`LineByLine` |
| loading | boolean | Optional, default: `false` | Possible values:<br> -`true`: shows an loading spinner.<br>- `false`: hides the loading spinner |
| showBtnToolbar | boolean | Optional, default: `true` | Possible values:<br> -`true`: shows the format toolbar.<br>- `false`: hides the format toolbar |
### Custom Objects
``` typescript
export interface DiffContent {
leftContent: string;
rightContent: string;
}
export type DiffTableFormat = 'SideBySide' | 'LineByLine';
```

@@ -50,3 +61,3 @@ ## Usage

Run `ng build ngx-text-diff` to build the library. The build artifacts will be stored in the `dist/ngx-text-diff` directory. Use the `--prod` flag for a production build.
Run `ng build ngx-text-diff` to build the library. The build artifacts will be stored in the `dist/ngx-text-diff` directory.

@@ -53,0 +64,0 @@ ## Credits

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

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc