ftable
Version:
Angular 6/7 Tables
1 lines • 58.1 kB
JavaScript
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("rxjs/operators"),require("@angular/common"),require("@angular/forms"),require("thenby"),require("rxjs"),require("@angular/core"),require("@angular/common/http")):"function"==typeof define&&define.amd?define("ftable",["exports","rxjs/operators","@angular/common","@angular/forms","thenby","rxjs","@angular/core","@angular/common/http"],e):e(t.ftable={},t.rxjs.operators,t.ng.common,t.ng.forms,t.thenby,t.rxjs,t.ng.core,t.ng.common.http)}(this,function(t,a,e,n,u,m,r,o){"use strict";var i=function(){function t(){this.filter=new r.EventEmitter}return t.prototype.reset=function(){},t.propDecorators={source:[{type:r.Input}],otherData:[{type:r.Input}],columnName:[{type:r.Input}],filter:[{type:r.Output}]},t}(),s=function(){function t(){this.filter=new r.EventEmitter,this.values=[]}return t.prototype.ngOnInit=function(){this.initData()},t.prototype.initData=function(){this.values=this.otherData.map(function(t){var e={};return e.value=t,e.checked=!0,e})},t.prototype.checkBoxClicked=function(t,e,n){if("frontend"===this.source){this.filter.emit({columnName:this.columnName,apply:(o=this.columnName,a=this.values,function(t){return 0<a.length?t.filter(function(t){var e=a.map(function(t){return t.value}).indexOf(String(t[o]));return-1!==e&&!0===a[e].checked}):t})})}else{this.values[t].checked=!this.values[t].checked;var r={values:this.values.filter(function(t){return!0===t.checked}).map(function(t){return t.value})};this.filter.emit({columnName:this.columnName,type:"checkbox",apply:r})}var o,a},t.prototype.reset=function(){this.initData(),this.filter.emit({columnName:this.columnName,apply:null})},t.decorators=[{type:r.Component,args:[{template:"\n\n <table class='ft-ffilter-table'>\n \n <tr class='ft-ffilter-column' *ngFor=\"let value of otherData;let index = index\">\n <td class='ft-ffilter-row'>\n <span><input class=\"ft-c\" type=\"checkbox\"[name]=\"columnName\" (click)='checkBoxClicked(index, value ,$event)' value=\"value\" [(ngModel)]='values[index].checked'> {{ value }}</span>\n </td>\n </tr>\n</table>\n \x3c!--\n <div class='ft-ffilter ft-c-filter' *ngFor=\"let value of otherData;let index = index\">\n <input class='ft-c' type=\"checkbox\" [name]=\"columnName\" (click)='checkBoxClicked(index, value ,$event)' value=\"value\" [(ngModel)]='values[index].checked'> {{ value }}<br>\n </div> --\x3e\n "}]}],t.ctorParameters=function(){return[]},t.propDecorators={source:[{type:r.Input}],otherData:[{type:r.Input}],columnName:[{type:r.Input}],filter:[{type:r.Output}]},t}(),l=function(){function t(){this.filter=new r.EventEmitter,this.minDay="",this.minMonth="",this.minYear="",this.maxDay="",this.maxMonth="",this.maxYear=""}return t.prototype.onKeyUp=function(t,e,n){if(8!==n.keyCode&&46!==n.keyCode&&(this[t]=this[t].match(/[0-9]*/).join("").substring(0,e),"minDay"!==t||2!==this[t].length&&39!==n.keyCode?"minMonth"!==t||2!==this[t].length&&39!==n.keyCode?"minYear"!==t||4!==this[t].length&&39!==n.keyCode?"maxDay"!==t||2!==this[t].length&&39!==n.keyCode?"maxMonth"!==t||2!==this[t].length&&39!==n.keyCode?"maxYear"!==t||4!==this[t].length&&39!==n.keyCode||this._elMinDayRef.nativeElement.focus():this._elMaxYearRef.nativeElement.focus():this._elMaxMonthRef.nativeElement.focus():this._elMaxDayRef.nativeElement.focus():this._elMinYearRef.nativeElement.focus():this._elMinMonthRef.nativeElement.focus()),"frontend"===this.source){this.filter.emit({columnName:this.columnName,type:"date",apply:(o=this.columnName,a=this.minDay,i=this.minMonth,s=this.minYear,l=this.maxDay,f=this.maxMonth,c=this.maxYear,function(t){return t.filter(function(t){console.log(o,a,i,s,l,f,c);var e=new Date(t[o]);return!(0<a.length&&!(Number(a)<=e.getDate())||0<i.length&&!(Number(i)<=e.getMonth()+1)||0<s.length&&!(Number(s)<=e.getFullYear())||0<l.length&&!(Number(l)>=e.getDate())||0<f.length&&!(Number(f)>=e.getMonth()+1)||0<c.length&&!(Number(c)>=e.getFullYear()))})})})}else{var r={minDay:this.minDay,minMonth:this.minMonth,minYear:this.minYear,maxDay:this.maxDay,maxMonth:this.maxMonth,maxYear:this.maxYear};this.filter.emit({columnName:this.columnName,type:"date",apply:r})}var o,a,i,s,l,f,c},t.prototype.reset=function(){this.minDay="",this.minMonth="",this.minYear="",this.maxDay="",this.maxMonth="",this.maxYear="",this.filter.emit({columnName:this.columnName,apply:null})},t.decorators=[{type:r.Component,args:[{template:"\n\n <table class='ft-ffilter-table ft-ffilter-date-table'>\n <tr class='ft-ffilter-column'>\n <td class='ft-ffilter-row ft-ffilter-dd-row'>\n <input class=\"ft-i ft-i-ffilter ft-i-ffilter-day\" type='text' placeholder='dd' [(ngModel)]='minDay' (keyup)='onKeyUp(\"minDay\", 2, $event)' #minDayRef />\n </td>\n <td class='ft-ffilter-row ft-ffilter-mm-row'>\n <input class=\"ft-i ft-i-ffilter ft-i-ffilter-month\" type='text' placeholder='mm' [(ngModel)]='minMonth' (keyup)='onKeyUp(\"minMonth\", 2, $event)' #minMonthRef />\n </td>\n <td class='ft-ffilter-row ft-ffilter-yyyy-row'>\n <input class=\"ft-i ft-i-ffilter ft-i-ffilter-year\" type='text' placeholder='yyyy' [(ngModel)]='minYear' (keyup)='onKeyUp(\"minYear\", 4, $event)' #minYearRef />\n </td>\n </tr>\n <tr class='ft-ffilter-column'>\n <td class='ft-ffilter-row ft-ffilter-dd-row'>\n <input class=\"ft-i ft-i-ffilter ft-i-ffilter-day\" type='text' placeholder='dd' [(ngModel)]='maxDay' (keyup)='onKeyUp(\"maxDay\" , 2, $event)' #maxDayRef />\n </td>\n <td class='ft-ffilter-row ft-ffilter-mm-row'>\n <input class=\"ft-i ft-i-ffilter ft-i-ffilter-month\" type='text' placeholder='mm' [(ngModel)]='maxMonth' (keyup)='onKeyUp(\"maxMonth\", 2, $event)' #maxMonthRef />\n </td>\n <td class='ft-ffilter-row ft-ffilter-yyyy-row'>\n <input class=\"ft-i ft-i-ffilter ft-i-ffilter-year\" type='text' placeholder='yyyy' [(ngModel)]='maxYear' (keyup)='onKeyUp(\"maxYear\", 4, $event)' #maxYearRef />\n </td>\n </tr>\n</table>\n \x3c!--\n <div class='ft-ffilter'>\n <div class=\"ft-filter-date ft-div1-ffilter\">\n <input class=\"ft-i ft-i-filter ft-i-filter-day\" type='text' placeholder='dd' [(ngModel)]='minDay' (keyup)='onKeyUp(\"minDay\", 2, $event)' #minDayRef />\n <input class=\"ft-i ft-i-filter ft-i-filter-month\" type='text' placeholder='mm' [(ngModel)]='minMonth' (keyup)='onKeyUp(\"minMonth\", 2, $event)' #minMonthRef />\n <input class=\"ft-i ft-i-filter ft-i-filter-year\" type='text' placeholder='yyyy' [(ngModel)]='minYear' (keyup)='onKeyUp(\"minYear\", 4, $event)' #minYearRef />\n </div>\n <div class=\"ft-filter-date ft-div2-ffilter\">\n <input class=\"ft-i ft-i-filter ft-i-filter-day\" type='text' placeholder='dd' [(ngModel)]='maxDay' (keyup)='onKeyUp(\"maxDay\" , 2, $event)' #maxDayRef />\n <input class=\"ft-i ft-i-filter ft-i-filter-month\" type='text' placeholder='mm' [(ngModel)]='maxMonth' (keyup)='onKeyUp(\"maxMonth\", 2, $event)' #maxMonthRef />\n <input class=\"ft-i ft-i-filter ft-i-filter-year\" type='text' placeholder='yyyy' [(ngModel)]='maxYear' (keyup)='onKeyUp(\"maxYear\", 4, $event)' #maxYearRef />\n </div>\n </div>\n\n --\x3e\n ",styles:["\n :host { flex:1;\n }"]}]}],t.propDecorators={_elMinDayRef:[{type:r.ViewChild,args:["minDayRef"]}],_elMinMonthRef:[{type:r.ViewChild,args:["minMonthRef"]}],_elMinYearRef:[{type:r.ViewChild,args:["minYearRef"]}],_elMaxDayRef:[{type:r.ViewChild,args:["maxDayRef"]}],_elMaxMonthRef:[{type:r.ViewChild,args:["maxMonthRef"]}],_elMaxYearRef:[{type:r.ViewChild,args:["maxYearRef"]}],source:[{type:r.Input}],otherData:[{type:r.Input}],columnName:[{type:r.Input}],filter:[{type:r.Output}]},t}(),f=function(){function t(){this.filter=new r.EventEmitter}return t.prototype.reset=function(){},t.decorators=[{type:r.Component,args:[{template:"\n\n "}]}],t.propDecorators={source:[{type:r.Input}],otherData:[{type:r.Input}],columnName:[{type:r.Input}],filter:[{type:r.Output}]},t}(),c=function(){function t(){this.filter=new r.EventEmitter,this.min=null,this.max=null}return t.prototype.numberKeyUp=function(t,e){if(8!==e.keyCode&&46!==e.keyCode&&(this[t]=e.target.value,"min"===t&&39===e.keyCode?this._elMaxRef.nativeElement.focus():"max"===t&&39===e.keyCode&&this._elMinRef.nativeElement.focus()),"frontend"===this.source){this.filter.emit({columnName:this.columnName,apply:(r=this.columnName,o=this.min,a=this.max,function(t){return t.filter(function(t){return(!o||o<=Number(t[r]))&&(!a||a>=Number(t[r]))})})})}else{var n={min:this.min,max:this.max};this.filter.emit({columnName:this.columnName,type:"number",apply:n})}var r,o,a},t.prototype.reset=function(){this.min=null,this.max=null,this.filter.emit({columnName:this.columnName,apply:null})},t.decorators=[{type:r.Component,args:[{template:'\n <table class=\'ft-ffilter-table\'>\n <tr class=\'ft-ffilter-column\'>\n <td class=\'ft-ffilter-row\'>\n <input class="ft-i ft-i-ffilter ft-i-min" type="number" placeholder=\'>=\' [(ngModel)]=\'min\' (keyup)=\'numberKeyUp("min",$event)\' #minRef >\n </td>\n </tr>\n <tr class=\'ft-ffilter-column\'>\n <td class=\'ft-ffilter-row\'>\n <input class="ft-i ft-i-ffilter ft-i-max" type="number" placeholder=\'<=\' [(ngModel)]=\'max\' (keyup)=\'numberKeyUp("max",$event)\' #maxRef >\n </td>\n </tr>\n</table>\n\n \x3c!--\n <div class="ft-ffilter">\n <div class="ft-div1-ffilter">\n <div class="ft-ffilter-prepend">\n <span class="ft-ffilter-text">>=</span>\n </div>\n <input class="ft-i ft-i-ffilter ft-i-min" type="number" [(ngModel)]=\'min\' (keyup)=\'numberKeyUp("min",$event)\' #minRef >\n <div class="ft-ffilter-append">\n <span class="ft-ffilter-text"><=</span>\n </div>\n </div>\n\n <div class="ft-div2-ffilter">\n <div class="ft-ffilter-prepend">\n <span class="ft-filter-text"><=</span>\n </div>\n <input class="ft-i ft-i-filter ft-i-max" type="number" [(ngModel)]=\'max\' (keyup)=\'numberKeyUp("max",$event)\' #maxRef >\n <div class="ft-ffilter-append">\n <span class="ft-filter-text">>=</span>\n </div>\n </div>\n </div>\n --\x3e\n ',styles:["\n :host { flex:1;\n }"]}]}],t.propDecorators={_elMinRef:[{type:r.ViewChild,args:["minRef"]}],_elMaxRef:[{type:r.ViewChild,args:["maxRef"]}],source:[{type:r.Input}],otherData:[{type:r.Input}],columnName:[{type:r.Input}],filter:[{type:r.Output}]},t}(),p=function(){function t(){this.filter=new r.EventEmitter,this.value=""}return t.prototype.onKeyUp=function(t){if("frontend"===this.source){this.filter.emit({columnName:this.columnName,apply:(n=this.columnName,r=t.target.value,function(t){return t.filter(function(t){return-1!==String(t[n]).toLowerCase().indexOf(String(r).toLowerCase())})})})}else{var e={value:t.target.value};this.filter.emit({columnName:this.columnName,type:"string",apply:e})}var n,r},t.prototype.reset=function(){this.value="",this.filter.emit({columnName:this.columnName,apply:null})},t.decorators=[{type:r.Component,args:[{template:"\n <table class='ft-ffilter-table'>\n <tr class='ft-ffilter-column'>\n <td class='ft-ffilter-row'>\n <input class=\"ft-i ft-i-ffilter ft-i-ffilter-text\" type='text' [(ngModel)]='value' (keyup)='onKeyUp($event)'/>\n </td>\n </tr>\n</table>\n \x3c!--\n <div class=\"ft-ffilter\">\n <div class=\"ft-div1-ffilter\">\n <input class=\"ft-i ft-i-ffilter ft-i-ffilter-text\" type='text' [(ngModel)]='value' (keyup)='onKeyUp($event)'/>\n </div>\n </div>\n --\x3e\n ",styles:["\n :host { flex:1;\n }"]}]}],t.propDecorators={source:[{type:r.Input}],otherData:[{type:r.Input}],columnName:[{type:r.Input}],filter:[{type:r.Output}]},t}(),d=function(){function t(t){this.viewContainerRef=t}return t.decorators=[{type:r.Directive,args:[{selector:"[ffilter-host]"}]}],t.ctorParameters=function(){return[{type:r.ViewContainerRef}]},t}(),h=function(){function t(t){this.componentFactoryResolver=t,this.debounce=500,this.filter=new r.EventEmitter}return t.prototype.ngOnInit=function(){this.loadComponent()},t.prototype.ngOnDestroy=function(){},t.prototype.loadComponent=function(){var t,e=this;t="string"===this.filterType?p:"number"===this.filterType?c:"checkbox"===this.filterType?s:"date"===this.filterType?l:"string"!=typeof this.filterType?this.filterType:f;var n=this.componentFactoryResolver.resolveComponentFactory(t),r=this.ffilterHost.viewContainerRef;r.clear();var o=r.createComponent(n);o.instance.columnName=this.columnName,o.instance.source=this.source,o.instance.otherData=this.otherData,o.instance.filter.pipe(a.debounceTime(this.debounce)).subscribe(function(t){e.filter.emit(t)}),this.filterr=o.instance},t.prototype.reset=function(){this.filterr.reset()},t.totalfilters=0,t.decorators=[{type:r.Component,args:[{selector:"ft-ffilter",template:"\n\n <ng-template ffilter-host></ng-template>\n "}]}],t.ctorParameters=function(){return[{type:r.ComponentFactoryResolver}]},t.propDecorators={ffilterHost:[{type:r.ViewChild,args:[d]}],source:[{type:r.Input}],columnName:[{type:r.Input}],debounce:[{type:r.Input}],filterType:[{type:r.Input}],otherData:[{type:r.Input}],filter:[{type:r.Output}]},t}(),g=function(){function t(){}return t.prototype.generateFileName=function(){var t=new Date;return t.getFullYear()+t.getMonth()+t.getDate()+"_"+(t.getHours()+1)+t.getMinutes()+t.getSeconds()},t.prototype.CSV=function(){var t=this.generateFileName()+".csv",n=[],r="";this.data.forEach(function(t){for(var e in t)t.hasOwnProperty(e)&&(n.indexOf(e)<=-1&&n.push(e),r+=t[e]+",");r=r.slice(0,-1)+"\r\n"}),r=n.map(function(t){return t.substr(0,1).toUpperCase()+t.substr(1)}).join()+"\r\n"+r;var e=new Blob([r],{type:"text/csv"});if(window.navigator.msSaveOrOpenBlob)window.navigator.msSaveBlob(e,t);else{var o=window.document.createElement("a");o.href=window.URL.createObjectURL(e),o.download=t,document.body.appendChild(o),o.click(),document.body.removeChild(o)}},t.prototype.COPY=function(){var t=document.createElement("textarea"),r=[],o="";this.data.forEach(function(t){var e=[];for(var n in t)t.hasOwnProperty(n)&&(r.indexOf(n)<=-1&&r.push(n),e.push(t[n]));o+=r.map(function(t){return t.substr(0,1).toUpperCase()+t.substr(1)}).join()+"\r\n"+e.join(",")+"\r\n"});try{t.value=o,t.setAttribute("id","t1"),document.body.appendChild(t);var e=document.getElementById("t1");e.focus(),e.select(),document.execCommand("copy",!1,null)}catch(n){console.log("Oops, unable to copy")}document.body.removeChild(t)},t.prototype.PRINT=function(){var o=[],t=document.implementation.createDocument("http://www.w3.org/1999/xhtml","html",null),e=document.createElementNS("http://www.w3.org/1999/xhtml","body");t.documentElement.appendChild(e);var n=document.createElement("table");e.appendChild(n);var a=document.createElement("tbody");n.appendChild(a),this.data.forEach(function(t){var e=document.createElement("tr");for(var n in t)if(t.hasOwnProperty(n)){var r=document.createElement("td");o.indexOf(n)<=-1?(o.push(n),r.textContent=n.substr(0,1).toUpperCase()+n.substr(1)):r.textContent=t[n],e.appendChild(r)}a.appendChild(e)});var r=window.open("about:blank","_new");r.document.open(),r.document.write((new XMLSerializer).serializeToString(t)),r.print(),r.close()},t.prototype.JSON=function(){var t=this.generateFileName()+".json",e=new Blob([JSON.stringify(this.data)],{type:"text/json"});if(window.navigator.msSaveOrOpenBlob)window.navigator.msSaveBlob(e,t);else{var n=window.document.createElement("a");n.href=window.URL.createObjectURL(e),n.download=t,document.body.appendChild(n),n.click(),document.body.removeChild(n)}},t.prototype.make_crc_table=function(){var t,e,n,r=[];for(e=0;e<256;e++){for(t=e,n=0;n<8;n++)t=0<(1&t)?(3988292384^t>>>1)>>>0:t>>>1>>>0;r[e]=t}return r},t.prototype.crc32=function(t){var e,n=this.make_crc_table(),r=-1;for(e=0;e<t.length;e++)r=n[255&(r^t[e].charCodeAt(0))]^r>>>8;return(4294967295^r)>>>0},t.prototype.numberToExcelLetters=function(t){var e=Math.floor(t/26),n=t%26,r="";return 0<e&&(r+=this.numberToExcelLetters(e)),0<n&&(r+=String.fromCharCode(64+n)),r},t.prototype.generateSharedStringsLFH=function(t){var e="",n=0;for(n=0;n<t.length;n++)e+="<si><t>"+t[n]+"</t></si>";var r='<?xml version="1.0" encoding="UTF-8"?><sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="100" uniqueCount="100">'+e+"</sst>",o=this.crc32(r).toString(16).match(/.{2}/g).reverse().map(function(t){return console.log(t),String.fromCharCode(parseInt(t,16))}).join(""),a=("00000000"+r.length.toString(16).toUpperCase()).slice(-8).match(/.{2}/g).reverse().map(function(t){return console.log("Size:"+t),String.fromCharCode(parseInt(t,16))}).join("");return{compression:"\0\0",crc32:o,compressedSize:a,uncompressedSize:a,localFileHeader:"PK\0\0\0\0\0\0\0!\0"+o+a+a+"\0\0\0xl/sharedStrings.xml"+r}},t.prototype.generateStylesLFH=function(){var t='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r\n<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac x16r2" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" xmlns:x16r2="http://schemas.microsoft.com/office/spreadsheetml/2015/02/main"><fonts count="2" x14ac:knownFonts="1"><font><sz val="11"/><color theme="1"/><name val="Calibri"/><family val="2"/><scheme val="minor"/></font><font><sz val="11"/><color theme="0"/><name val="Calibri"/><family val="2"/><scheme val="minor"/></font></fonts><fills count="3"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"/></fill><fill><patternFill patternType="solid"><fgColor theme="4" tint="-0.249977111117893"/><bgColor indexed="64"/></patternFill></fill></fills><borders count="13"><border><left/><right/><top/><bottom/><diagonal/></border><border><left style="medium"><color auto="1"/></left><right style="thin"><color auto="1"/></right><top/><bottom style="thin"><color auto="1"/></bottom><diagonal/></border><border><left style="thin"><color auto="1"/></left><right style="thin"><color auto="1"/></right><top/><bottom style="thin"><color auto="1"/></bottom><diagonal/></border><border><left style="thin"><color auto="1"/></left><right style="medium"><color auto="1"/></right><top/><bottom style="thin"><color auto="1"/></bottom><diagonal/></border><border><left style="medium"><color auto="1"/></left><right style="thin"><color auto="1"/></right><top style="thin"><color auto="1"/></top><bottom style="thin"><color auto="1"/></bottom><diagonal/></border><border><left style="thin"><color auto="1"/></left><right style="thin"><color auto="1"/></right><top style="thin"><color auto="1"/></top><bottom style="thin"><color auto="1"/></bottom><diagonal/></border><border><left style="thin"><color auto="1"/></left><right style="medium"><color auto="1"/></right><top style="thin"><color auto="1"/></top><bottom style="thin"><color auto="1"/></bottom><diagonal/></border><border><left style="medium"><color auto="1"/></left><right style="thin"><color auto="1"/></right><top style="thin"><color auto="1"/></top><bottom style="medium"><color auto="1"/></bottom><diagonal/></border><border><left style="thin"><color auto="1"/></left><right style="thin"><color auto="1"/></right><top style="thin"><color auto="1"/></top><bottom style="medium"><color auto="1"/></bottom><diagonal/></border><border><left style="thin"><color auto="1"/></left><right style="medium"><color auto="1"/></right><top style="thin"><color auto="1"/></top><bottom style="medium"><color auto="1"/></bottom><diagonal/></border><border><left style="medium"><color auto="1"/></left><right style="thin"><color auto="1"/></right><top/><bottom style="medium"><color auto="1"/></bottom><diagonal/></border><border><left style="thin"><color auto="1"/></left><right style="thin"><color auto="1"/></right><top/><bottom style="medium"><color auto="1"/></bottom><diagonal/></border><border><left style="thin"><color auto="1"/></left><right style="medium"><color auto="1"/></right><top/><bottom style="medium"><color auto="1"/></bottom><diagonal/></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs><cellXfs count="13"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/><xf numFmtId="0" fontId="0" fillId="0" borderId="1" xfId="0" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="2" xfId="0" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="3" xfId="0" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="4" xfId="0" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="5" xfId="0" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="6" xfId="0" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="7" xfId="0" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="8" xfId="0" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="9" xfId="0" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="10" xfId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="11" xfId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="12" xfId="0" applyFont="1" applyFill="1" applyBorder="1"/></cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles><dxfs count="0"/><tableStyles count="0" defaultTableStyle="TableStyleMedium2" defaultPivotStyle="PivotStyleLight16"/><extLst><ext uri="{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}" xmlns:x14="http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"><x14:slicerStyles defaultSlicerStyle="SlicerStyleLight1"/></ext><ext uri="{9260A510-F301-46a8-8635-F512D64BE5F5}" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"><x15:timelineStyles defaultTimelineStyle="TimeSlicerStyleLight1"/></ext></extLst></styleSheet>',e=("00000000"+this.crc32(t).toString(16)).slice(-8).match(/.{2}/g).reverse().map(function(t){return console.log(t),String.fromCharCode(parseInt(t,16))}).join(""),n=("00000000"+t.length.toString(16).toUpperCase()).slice(-8).match(/.{2}/g).reverse().map(function(t){return console.log("Size:"+t),String.fromCharCode(parseInt(t,16))}).join("");return{compression:"\0\0",crc32:e,compressedSize:n,uncompressedSize:n,localFileHeader:"PK\0\0\0\0\0\0\0!\0"+e+n+n+"\r\0\0\0xl/styles.xml"+t}},t.prototype.generateWorkbookLFH=function(){var t='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r\n<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x15" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"><fileVersion appName="xl" lastEdited="6" lowestEdited="6" rupBuild="14420"/><workbookPr filterPrivacy="1" defaultThemeVersion="164011"/><bookViews><workbookView xWindow="0" yWindow="0" windowWidth="22260" windowHeight="12645"/></bookViews><sheets><sheet name="Sheet1" sheetId="1" r:id="rId1"/></sheets><definedNames>';t+='<definedName name="_xlnm._FilterDatabase" localSheetId="0" hidden="1">Sheet1!$A$1:$'+this.numberToExcelLetters(Object.keys(this.data[0]).length)+"$"+this.data.length+"</definedName>",t+='</definedNames><calcPr calcId="162913"/><extLst><ext uri="{140A7094-0E35-4892-8432-C4D2E57EDEB5}" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"><x15:workbookPr chartTrackingRefBase="1"/></ext></extLst></workbook>';var e=("00000000"+this.crc32(t).toString(16)).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join(""),n=("00000000"+t.length.toString(16).toUpperCase()).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join("");return{compression:"\0\0",crc32:e,compressedSize:n,uncompressedSize:n,localFileHeader:"PK\0\0\0\0\0\0\0!\0"+e+n+n+"\0\0\0xl/workbook.xml"+t}},t.prototype.generateSheet1LFH=function(t){var e='<?xml version="1.0" encoding="UTF-8"?><worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" mc:Ignorable="x14ac"><dimension ref="A1:';e+=this.numberToExcelLetters(Object.keys(this.data[0]).length)+this.data.length,e+='" /><sheetViews><sheetView tabSelected="1" workbookViewId="0"><selection activeCell="A1" sqref="A1" /></sheetView></sheetViews><sheetFormatPr defaultRowHeight="15" x14ac:dyDescent="0.25" /><sheetData>\r\n';var n=t.shift(),r=t.shift(),o=t.pop();e+='<row r="1" spans="1:5" ht="15.75" thickBot="1" x14ac:dyDescent="0.3">';for(var a="",i=0;i<n.length;i++)a=0==i?"10":i==n.length-1?"12":"11",e+='<c r="'+this.numberToExcelLetters(i+1)+'1" s="'+a+'" t="s"><v>'+n[i]+"</v></c>";e+="</row>",e+='<row r="2" spans="1:5" x14ac:dyDescent="0.25">';for(i=0;i<r.length;i++)a=0==i?"1":i==r.length-1?"3":"2",e+='<c r="'+this.numberToExcelLetters(i+1)+'2" s="'+a+'" t="s"><v>'+r[i]+"</v></c>";e+="</row>";for(var s=0;s<t.length;s++){e+='<row r="'+(s+3).toString()+'" spans="1:5" x14ac:dyDescent="0.25">';for(i=0;i<t[s].length;i++)a=0==i?"4":i==t[s].length-1?"6":"5",e+='<c r="'+this.numberToExcelLetters(i+1)+(s+3).toString()+'" s="'+a+'" t="s"><v>'+t[s][i].toString()+"</v></c>";e+="</row>"}e+='<row r="'+(t.length+3).toString()+'" spans="1:5" ht="15.75" thickBot="1" x14ac:dyDescent="0.3">';for(a="8",i=0;i<o.length;i++)0==i&&(a="7"),i==o.length-1&&(a="9"),e+='<c r="'+this.numberToExcelLetters(i+1)+(t.length+3).toString()+'" s="'+a+'" t="s"><v>'+o[i]+"</v></c>";e+="</row>",e+='</sheetData><autoFilter ref="A1:',e+=this.numberToExcelLetters(Object.keys(this.data[0]).length)+(this.data.length+1).toString(),e+='" /><pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3" /><pageSetup paperSize="9" orientation="portrait" r:id="rId1" /></worksheet>';var l=("00000000"+this.crc32(e).toString(16)).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join(""),f=("00000000"+e.length.toString(16).toUpperCase()).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join("");return{compression:"\0\0",crc32:l,compressedSize:f,uncompressedSize:f,localFileHeader:"PK\0\0\0\0\0\0\0!\0"+l+f+f+"\0\0\0xl/worksheets/sheet1.xml"+e}},t.prototype.generateSharedStringsCD=function(t,e){var n=("00000000"+e.toString(16)).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join(""),r=t.compression,o=t.crc32,a=t.uncompressedSize;return"PK?\0\0\0\0"+r+"\0\0!\0"+o+t.compressedSize+a+"\0$\0\0\0\0\0\0\0 \0\0\0"+n+"xl/sharedStrings.xml\n\0 \0\0\0\0\0\0\0\0°Lç¨Æ¹/:¨ºÒƹ/:¨ºÒ"},t.prototype.generateStylesCD=function(t,e){var n=("00000000"+e.toString(16)).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join(""),r=t.compression,o=t.crc32,a=t.uncompressedSize;return"PK?\0\0\0\0"+r+"\0\0!\0"+o+t.compressedSize+a+"\r\0$\0\0\0\0\0\0\0 \0\0\0"+n+"xl/styles.xml\n\0 \0\0\0\0\0\0\0\0°Lç¨m3:¨ºÒm3:¨ºÒ"},t.prototype.generateWorkbookCD=function(t,e){var n=("00000000"+e.toString(16)).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join(""),r=t.compression,o=t.crc32,a=t.uncompressedSize;return"PK?\0\0\0\0"+r+"\0\0!\0"+o+t.compressedSize+a+"\0$\0\0\0\0\0\0\0 \0\0\0"+n+"xl/workbook.xml\n\0 \0\0\0\0\0\0\0\0°Lç¨F6:¨ºÒF6:¨ºÒ"},t.prototype.generateSheet1CD=function(t,e){var n=("00000000"+e.toString(16)).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join(""),r=t.compression,o=t.crc32,a=(t.uncompressedSize,t.compressedSize);return"PK?\0\0\0\0"+r+"\0\0!\0"+o+a+a+"\0$\0\0\0\0\0\0\0 \0\0\0"+n+"xl/worksheets/sheet1.xml\n\0 \0\0\0\0\0\0\0\0°Lç¨÷::¨ºÒ÷::¨ºÒ"},t.prototype.XLSX=function(){var t,e,n=this.generateFileName()+".xlsx",r=Object.keys(this.data[0]).map(function(t){return t.substr(0,1).toUpperCase()+t.substr(1)}),o=[];for(o[0]=[],t=0;t<r.length;t++)o[0][t]=t;for(e=0;e<this.data.length;e++)for(var a in this.data[e]){var i=r.indexOf(this.data[e][a]);-1==i&&(i=r.push(this.data[e][a])-1),o[e+1]===undefined&&(o[e+1]=[]),o[e+1].push(i)}var s='PK\0\0\0\0\0
J\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0docProps/PK\0\0\0\b\0\0\0!\0aI\t{\0\0\0\0\0\0\0docProps/app.xmlAOã0
ï+í|§NØZU®Ñªìî¨ÔgãL\x0BǶ<CÔòëÚÂÛ̼§/3VÎ=dt1ÌD5)EÁÆÚ
õLÜ®þý\tµñ1ÀLlÅ¥þþM-rLÉp&Z¢4m\x0BÁ\tË&æÎ·y-cÓ8\x0BWÑ>uHå
\rA¨¡>K@ñ8íé«¡u´Þ¶ó´úwÖÿ¥þïl*þl,x%EÅAK°OÙÑVJ·ji9ëÆx%Ǻ3,ma\\Fzö`)æÝ3¯í\\q¸éMv&ØÙÞ]íRÖ÷1?b\x0B@¨äa8£÷¤v?uÅ¡81Ê\b×ïW<àM³0>!®w\fâq9ðU#ßÉN²ç±K&lY8Tÿ\\xÄÛ´W`¿Î÷CµlM/°×Ǻf®ìÿ¼5a\rõÞóAØÿîõ
ëêbRþ(ù®ã©Æ·¬_\0PK\0\0\0\b\0\0\0!\x007 |3\0\0Q\0\0\0\0\0docProps/core.xml
]KÃ0ïÿCÉ}ds_¥í@eW+w!9ÛÍI´Û¿7í¶nbÁË÷=ÏyÏ!Ùr/ë謫´ÊM\b@q-*µÍÑk¹ç(r)Áj GphYÜÞdܤ\\[x¶Úõ¸(K¹ÉÑÎ{bìø$sIp¨ n´ÌÒn±aüm\bb\t\tæn±éè¼G/[w\0Á1Ô AyiBñÅëÁJ7ØÐ)WNYùAëYìÝ{WõƦifÜZÛü¿¯^ºUãJµ·âLð[`^Û"ÃWE{¸9¿7ÞT îAx;-rì
\0é1îYy?<+T\bÄdIIç)¥#òFþî¿\0e7ä?â,&w1]¤#N=ñ\b¹ÿ|âPK\0\0\0\0\0ûJ\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0xl/PK\0\0\0\0\0
J\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0xl/printerSettings/PK\0\0\0\b\0\0\0!\0]Ö\tD\0\0\0Ü\0\0\0\'\0\0\0xl/printerSettings/printerSettings1.bin¡À ïÿ3d"RJ\f\rDe¢1@UÔF/pVÜ®;L"í¶érGdÝ\bª®q_8¬C:ks!ßï\nPK\0\0\0\0\0
J\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0xl/theme/PK\0\0\0\b\0\0\0!\0u>iÙ\0\0\0\0\0\0\0xl/theme/theme1.xmlíY[\x0BÓ0~ü¥ï³÷v§lÝæýW|]¶FÓf$:D}òET||óADAAñÅ#(^~§í\\Û5ó¨lÉÉwN¾$í]ªÇ\\vuk©k8ؤӮ~âø¨ÕÖ5!Q:F¥¸«/°ÐwíܺeÚ.c`\rôS±uõXÊÙvÃØÆf8
¶\tã\tPåScÌѰPÃ6MßHIu-E\t=<\bkÇ3úÎÏÆ~R)2ADù±(V5\nìøý
\b)×Î#ÚÕ¡1»p_ºFÐÐÕÍü£;w+%*7èVôFù\'×[*dêv®Ç§gV®ë¹~oeß.ì7qÃ`èý· (Z\r¬×ïô^-AË¢Êö 8V_µï4ð=/ûÖðNwøÑ(\\ù°}.z\nvèÖð^÷øÀì\rÜà3¾Å¤çhÓóp9Ú2atÞñÜQ`/á%ʨ̮B?æZÎ2>@\\$IªÉÅ\fOP¸Qrí\0Æ0ñf(eĦmL~³¯À#*Ú
(5Ñg>8É®¾¬êÈ/^_}öúêó××®½¾úxÙwSoJ§U½n~¼wE{ÿôþ[·ÕxQÅ¿}týíËW_2/k´î<yûìÉ»7Þ=¼¥÷8:S
\'\tÚ!|A;ʪ:Àgø÷i©i \nàPÆ5à¡¢*\\×]xC¦PwÏÏÖ¸ù\\pÔ£}ÆÃÙ}Õ3O§êÎù¼;ÐyUßáZóLyTÐ×h¡m4Å)ZÖÆÎa¬P;M\b©D\t6Úi¢õQºä89#ÕJ{HqY u¨QMé¤ÖgTe~Ï×\b¼HU&1¹q7K(£VU$-xTs¸zÇiÃ1B¥s/jt÷CQý ]$u$ä\\ñc¬°sa3Iã*v¯8SiGT`ÕRÔ!(ÝîËï[Ö\' ©\'HÖ2çª%Y}=.èáܸ±Ò~5¿¯evï÷dö_Ó~6ïqè7äð÷wdî§GpÿOÜÿ÷?¸óµü[Òu¡B±rrO6Ü\'ÒcrAñçvÃ@Wr¥Õ=aC1ïn\r7å(/kÉSDÆÇb4n,=o`º(h3&`wÐ7ÚÎwyr\x0B©eWÓ\\ÉRnz+9ìE²úÁêVZÖu@¦û=$5I8\nóm$,óg±è(X´/±0*Qõ§Áª¯¸#oâqW/ôóèþH«Ù¶^Çý6\'C¤k$,sÊ4ѯÄßFã{cÝé¨Cm+ií_k£hZ¯i`Í9Ь«Oà\\\bÅdöD7ÂóHrý3Ë\x0B9@".`yS1þHÌ5Jëe2V%7ËÌ?\\Çüó<g¬O&8$eÚ2#µÖÎ*l¤Åã\x0BÚ:çG8Ê\x0B¬Ìc"dîÍ¢ÂW»êŵteêÍGfåEt£å²Jæ+xV.édµisTÊ
g¦£±ë~]i-inØ@UûÅ|
£få)s]§½iø¶Lü\rB
Z[MÍQSÛ´wüÄA¥;ßÙ´Gü¢Ý`}ÖseVk¾`gÎÂÌÀquN¥(îÿá.*gv>K¡¸,isNºú%Ó빡í
-³í\r[®ã¶×sZ=Ïs¬¡g¾}"ãÄò¾Gp¡å«\\Þxý|>foXb°üläÊùëËÞüúE#c åÛ£ÓéûÓµÜA¿Ýê~¿5ðÃ`0^»3º¬kçs°ÛsB×¶[¾-×7>\0ZkÛ=7èµnïrîë|äÿî-µóPK\0\0\0\0\0ýJ\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0xl/worksheets/PK\0\0\0\0\0
J\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0xl/worksheets/_rels/PK\0\0\0\b\0\0\0!\0;m2K»\0\0\0B\0\0#\0\0\0xl/worksheets/_rels/sheet1.xml.relsÏ=Â0à~¥½5ýÚÉ«Chù9q&E2¶<ÛãåÓÓ|£×,¯ó¤.9D²Pë\n] ÁÂa¿þùÅâ¨sS$´pCeûýÕlqrRx\fUQ-"ia\fûgÇ:&¤Òô1ÏNJÌIÎÜæ·ªþL~4 }2Õ¦³7]\rjKøû>x\\EäÍ\x0Br Á¼C2\x0BíòbAë×î5×ú\bLÛ§åíPK\0\0\0\0\0
J\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0xl/_rels/PK\0\0\0\b\0\0\0!\0>ê\0\0\0º\0\0\0\0\0xl/_rels/workbook.xml.relsÍjÃ0ï
¾Ø{-;-¥È¹B®mú\0BZ[&¶$´Û¿}EB~\f!äà;óÁîrõ7ôâuÁ+¨zlç[_÷ÄÚ[Ý\nF$XÕ÷wËì5ç!r]$S<)pÌñUJ2MEèóOÒ 9ËÔʨÍV·(eù,ÓyÔL±¶\nÒÚ>ØoÉMÓ|\x0Bæ{@Ï*$ñØ#åDZd{]äësÖsÅSûNîÍêC5\'ÃoH[r|â8Z$wÏU§9aÈéöS>·³µLì\\\\ýPK\0\0\0\b\0\0\0!\0A7Ïc\0\0\0\0\0\0\0[Content_Types].xmlMnÂ0
÷zÈÛº¨ªÀ¢?Ë\tz\0O
c[Âí;$´j%`+yï{Ø7MÖÑxAÚ\t¸Ükãx½ôîE¤VÖ;ÈÄPG×WÃÙ6\0&¬v(<Hy\tÂÔp\\)|¬ñm\\È ò¥Z¼í÷ïdî£í<Ähø
ZYJ7ü¸I27N$M£¬B°&WÄe¹vú\0ÒóEarÐ>_U,I1DPK\0ªl¢a§8"\f
<Ê`±t?UÊʺKðþ på`¯{ãÏd¢"½ª»äÆÊsï)·uKyòÕÔkZ)ãnÚùu3Êz\\8È·Kâ=Íõü\bµM\x0BikÏFý¶1m#*RäM{ñ\0?¼Oæ`ý$ú|j#tñuDvê^\\dàD¶î<v§O>Âõ?lô\tPK\0\0\0\0\0
J\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_rels/PK\0\0\0\b\0\0\0!\0µU0#ë\0\0\0L\0\0\x0B\0\0\0_rels/.relsÍJ1\fïïPrßÉì\n"²½°7õbùafÒV}{ :°?sl|ù²ÝMã >9ÄNuQbgÄv®Ñðvx^=¥Ak8r]u{³}åR.mç£Ê5´)ùGÄhZ)âÙåH-a¤¡AO¦§qS÷þ3 1ÕÞj\b{{êpô¼-uÝ~ó1²K\'Z Oe»ò!×ÔqÌx\n\r\'\rVÌKþHÞ\rxÚh³Üèü´8r"KÐHà>?ÖË
®¯hñg3\rø%¡é]pvÕ7',l=s.length,f=this.generateSharedStringsLFH(r),c=(s+=f.localFileHeader).length,p=this.generateStylesLFH(),u=(s+=p.localFileHeader).length,m=this.generateWorkbookLFH(),d=(s+=m.localFileHeader).length,h=this.generateSheet1LFH(o);s+=h.localFileHeader;var g="PK?\0\0\0\0\0\0
J\0\0\0\0\0\0\0\0\0\0\0\0\t\0$\0\0\0\0\0\0\0\0\0\0\0\0\0\0docProps/\n\0 \0\0\0\0\0\0\0µä¹Òµä¹Òä®ä¹ÒPK?\0\0\0\0\b\0\0\0!\0aI\t{\0\0\0\0\0$\0\0\0\0\0\0\0 \0\0\0'\0\0\0docProps/app.xml\n\0 \0\0\0\0\0\0\0\0°L稧±ä¹Ò§±ä¹ÒPK?\0\0\0\0\b\0\0\0!\x007 |3\0\0Q\0\0\0$\0\0\0\0\0\0\0 \0\0\0Ð\0\0docProps/core.xml\n\0 \0\0\0\0\0\0\0\0°L稵ä¹Òµä¹ÒPK?\0\0\0\0\0\0ûJ\0\0\0\0\0\0\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\0\0\x002\0\0xl/\n\0 \0\0\0\0\0\0\0´¾æªºÒ´¾æªºÒñ·ä¹ÒPK?\0\0\0\0\0\0
J\0\0\0\0\0\0\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\0\0\0S\0\0xl/printerSettings/\n\0 \0\0\0\0\0\0\0&FÇä¹Ò&FÇä¹Ò+ÍÃä¹ÒPK?\0\0\0\0\b\0\0\0!\0]Ö\tD\0\0\0Ü\0\0\0'\0$\0\0\0\0\0\0\0 \0\0\0\0\0xl/printerSettings/printerSettings1.bin\n\0 \0\0\0\0\0\0\0\0°Lç¨&FÇä¹Ò&FÇä¹ÒPK?\0\0\0\0\0\0
J\0\0\0\0\0\0\0\0\0\0\0\0\t\0$\0\0\0\0\0\0\0\0\0\0\r\0\0xl/theme/\n\0 \0\0\0\0\0\0\0KÃËä¹ÒKÃËä¹Ò_yÉä¹ÒPK?\0\0\0\0\b\0\0\0!\0u>iÙ\0\0\0\0\0$\0\0\0\0\0\0\0 \0\0\x004\0\0xl/theme/theme1.xml\n\0 \0\0\0\0\0\0\0\0°Lç¨KÃËä¹ÒKÃËä¹ÒPK?\0\0\0\0\0\0ýJ\0\0\0\0\0\0\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\0\0\0>\n\0\0xl/worksheets/\n\0 \0\0\0\0\0\0\0.h骺Ò.h骺ÒÎä¹ÒPK?\0\0\0\0\0\0
J\0\0\0\0\0\0\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\0\0\0j\n\0\0xl/worksheets/_rels/\n\0 \0\0\0\0\0\0\0T«D®ä¹ÒT«D®ä¹ÒùÓä¹ÒPK?\0\0\0\0\b\0\0\0!\0;m2K»\0\0\0B\0\0#\0$\0\0\0\0\0\0\0 \0\0\0\n\0\0xl/worksheets/_rels/sheet1.xml.rels\n\0 \0\0\0\0\0\0\0\0°Lç¨Ý\nÖä¹ÒÝ\nÖä¹ÒPK?\0\0\0\0\0\0
J\0\0\0\0\0\0\0\0\0\0\0\0\t\0$\0\0\0\0\0\0\0\0\0\0\x0B\0\0xl/_rels/\n\0 \0\0\0\0\0\0\0%çÛä¹Ò%çÛä¹Òï¢Øä¹ÒPK?\0\0\0\0\b\0\0\0!\0>ê\0\0\0º\0\0\0$\0\0\0\0\0\0\0 \0\0\0¿\x0B\0\0xl/_rels/workbook.xml.rels\n\0 \0\0\0\0\0\0\0\0°Lç¨%çÛä¹Ò%çÛä¹ÒPK?\0\0\0\0\b\0\0\0!\0A7Ïc\0\0\0\0\0$\0\0\0\0\0\0\0 \0\0\0á\f\0\0[Content_Types].xml\n\0 \0\0\0\0\0\0\0\0°Lç¨ÇL¬ä¹ÒÇL¬ä¹ÒPK?\0\0\0\0\0\0
J\0\0\0\0\0\0\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\0\0\0u\0\0_rels/\n\0 \0\0\0\0\0\0\0\r{àä¹Ò\r{àä¹Ò1Þä¹ÒPK?\0\0\0\0\b\0\0\0!\0µU0#ë\0\0\0L\0\0\x0B\0$\0\0\0\0\0\0\0 \0\0\0\0\0_rels/.rels\n\0 \0\0\0\0\0\0\0\0°Lç¨\r{àä¹Ò\r{àä¹Ò";g+=this.generateSharedStringsCD(f,l)+this.generateStylesCD(p,c)+this.generateWorkbookCD(m,u)+this.generateSheet1CD(h,d);for(var y=s.length.toString(16),b=g.length.toString(16),x=s+g+("PK\0\0\0\0\0\0"+(b=("00000000"+b).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join(""))+(y=("00000000"+y).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join(""))+"\0\0"),v=x.length,P=new Uint8Array(v),C=0;C<v;++C)P[C]=x.charCodeAt(C);var I=new Blob([P],{type:"application/octet-stream"});if(window.navigator.msSaveOrOpenBlob)window.navigator.msSaveBlob(I,n);else{var S=window.document.createElement("a");S.href=window.URL.createObjectURL(I),S.download=n,document.body.appendChild(S),S.click(),document.body.removeChild(S)}},t.prototype.PDF=function(){var t,e=this.generateFileName()+".pdf",n=[],r="%PDF-1.4\r\n1 0 obj <</Type /Catalog /Pages 2 0 R>>\r\nendobj\r\n2 0 obj <</Type /Pages /Kids [3 0 R] /Count 1>>\r\nendobj\r\n3 0 obj<</Type /Page /Parent 2 0 R /Resources 4 0 R /MediaBox [0 0 500 ";for(r+=(20+15*(this.data.length+1)).toString(),r+="] /Contents 6 0 R>>\r\nendobj\r\n4 0 obj<</Font <</F1 5 0 R>>>>\r\nendobj\r\n5 0 obj<</Type /Font /Subtype /Type1 /BaseFont /Helvetica>>\r\nendobj\r\n6 0 obj\r\n<</Length 44>>\r\nstream\r\n",t=0;t<this.data.length;t++){for(var o in r+="BT /F1 12 Tf 10 "+(15*(this.data.length-t)).toString()+" Td (",r+=t.toString()+": ",this.data[t])n.indexOf(o)<=-1&&n.push(o),r+=this.data[t][o]+" ";r+=")Tj ET\r\n"}r+="BT /F1 12 Tf 10 "+(15*(this.data.length+1)).toString()+" Td ("+n.map(function(t){return t.substr(0,1).toUpperCase()+t.substr(1)}).join(" ")+")Tj ET\r\n";for(var a=(r+="endstream\r\nendobj\r\nxref\r\n0 7\r\n0000000000 65535 f\r\n0000000009 00000 n\r\n0000000056 00000 n\r\n0000000111 00000 n\r\n0000000212 00000 n\r\n0000000250 00000 n\r\n0000000317 00000 n\r\ntrailer <</Size 7/Root 1 0 R>>\r\nstartxref\r\n406\r\n%%EOF").length,i=new Uint8Array(a),s=0;s<a;++s)i[s]=r.charCodeAt(s);var l=new Blob([i],{type:"application/octet-stream"});if(window.navigator.msSaveOrOpenBlob)window.navigator.msSaveBlob(l,e);else{var f=window.document.createElement("a");f.href=window.URL.createObjectURL(l),f.download=e,document.body.appendChild(f),f.click(),document.body.removeChild(f)}},t.decorators=[{type:r.Component,args:[{selector:"ft-fexporter",template:'<div class="ft-fexporter">\r\n <button id=\'ft-b-fexporter_copy\' class="ft-b ft-b-fexporter" *ngIf=\'formats.includes("Copy")\' (click)="COPY()" title="Copy"><i></i></button>\r\n <button id=\'ft-b-fexporter_csv\' class="ft-b ft-b-fexporter" *ngIf=\'formats.includes("CSV")\' (click)="CSV()" title="Export CSV"><i></i></button>\r\n <button id=\'ft-b-fexporter_json\' class="ft-b ft-b-fexporter" *ngIf=\'formats.includes("JSON")\' (click)="JSON()" title="Export JSON"><i></i></button>\r\n <button id=\'ft-b-fexporter_print\' class="ft-b ft-b-fexporter" *ngIf=\'formats.includes("Print")\' (click)="PRINT()" title="Export Print"><i></i></button>\r\n <button id=\'ft-b-fexporter_xlsx\' class="ft-b ft-b-fexporter" *ngIf=\'formats.includes("XLSX")\' (click)="XLSX()" title="Export XLSX"><i></i></button>\r\n <button id=\'ft-b-fexporter_pdf\' class="ft-b ft-b-fexporter" *ngIf=\'formats.includes("PDF")\' (click)="PDF()" title="Export PDF"><i></i></button>\r\n</div>',providers:[],styles:[""]}]}],t.propDecorators={formats:[{type:r.Input}],data:[{type:r.Input}]},t}(),y=function(){function t(){this.Math=Math}return t.prototype.ngOnInit=function(){this.totalPages=Math.ceil(this.totalItems/this.itemsPerPage)},t.decorators=[{type:r.Component,args:[{selector:"ft-finfo",template:"<div class=\"ft-finfo\"><span class='ft-finfo-1'>Showing {{ 1+((currentPage*itemsPerPage)-itemsPerPage) }} to {{ this.Math.min(currentPage*itemsPerPage,totalItemsAfterFilters) }} of {{ totalItemsAfterFilters }} entries</span><ng-container *ngIf='totalItems>totalItemsAfterFilters'><span class='ft-finfo-2'>(filtered from {{ totalItems }} total entries)</span></ ng-container></div>",styles:[""]}]}],t.ctorParameters=function(){return[]},t.propDecorators={totalItemsAfterFilters:[{type:r.Input}],itemsPerPage:[{type:r.Input}],totalItems:[{type:r.Input}],currentPage:[{type:r.Input}]},t}(),b=function(){function t(){this.onPageOptionChange=new r.EventEmitter}return t.prototype.onChange=function(t){this.selectedPageIndex=this.pageOptions.indexOf(Number(t.target.value)),this.onPageOptionChange.emit(this.pageOptions.indexOf(Number(t.target.value)))},t.decorators=[{type:r.Component,args:[{selector:"ft-fpager",template:'\r\n<div class="ft-fpager">\r\n <div class="ft-fpager-prepend">\r\n <label class="ft-pager-text" for="inputGroupSelect01">Show</label>\r\n </div>\r\n <select (change)="onChange($event)" [value]=\'pageOptions[selectedPageIndex]\' class="ft-i ft-fpager-select" id="inputGroupSelect01">\r\n <option *ngFor="let option of pageOptions" [value]=\'option\'>{{option}}</option>\r\n </select>\r\n <div class="ft-fpager-append">\r\n <label class="ft-pager-text">entries</label>\r\n </div>\r\n </div>',styles:[""]}]}],t.propDecorators={selectedPageIndex:[{type:r.Input}],pageOptions:[{type:r.Input}],onPageOptionChange:[{type:r.Output}]},t}(),x=function(){function t(){this.PagingChange=new r.EventEmitter}return Object.defineProperty(t.prototype,"totalItemsAfterFilters",{set:function(t){this._totalItemsAfterFilters=t,this.totalPages=Math.ceil(this._totalItemsAfterFilters/this.itemsPerPage),this._currentPage=1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"currentPage",{set:function(t){this._currentPage=t},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){this.totalPages=Math.ceil(this._totalItemsAfterFilters/this.itemsPerPage),this.setCurrentPage(this._currentPage)},t.prototype.ngOnChanges=function(){this.totalPages=Math.ceil(this._totalItemsAfterFilters/this.itemsPerPage)},t.prototype.setCurrentPage=function(t){this._currentPage=t,this.PagingChange.emit(t)},t.prototype.firstPage=function(){this.setCurrentPage(1)},t.prototype.previousPage=function(){this.setCurrentPage(this._currentPage-1)},t.prototype.nextPage=function(){this.setCurrentPage(this._currentPage+1)},t.prototype.lastPage=function(){this.setCurrentPage(this.totalPages)},t.prototype.isFirstDisabled=function(){return 1===this._currentPage},t.prototype.isPreviousDisabled=function(){return 1===this._currentPage},t.prototype.isNextDisabled=function(){return this._currentPage===this.totalPages},t.prototype.isLastDisabled=function(){return this._currentPage===this.totalPages},t.decorators=[{type:r.Component,args:[{selector:"ft-fpaginate",template:'<div id="ft-fpaginate" class="ft-fpaginate">\r\n \r\n <button class="ft-b ft-b-fpaginate" id=\'ft-b-fpaginate_first\' [disabled]="isFirstDisabled()" (click)="firstPage()"><i></i></button>\r\n <button class="ft-b ft-b-fpaginate" id=\'ft-b-fpaginate_previous\' [disabled]="isPreviousDisabled()" (click)="previousPage()"><i></i></button>\r\n\r\n \x3c!-- <span> --\x3e\r\n <ng-container *ngIf="totalPages < 8">\r\n <ng-container *ngIf="totalPages > 0">\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 1, \'ft-b-fpaginate_current\': _currentPage == 1}" (click)="setCurrentPage(1)">1</button>\r\n </ng-container>\r\n <ng-container *ngIf="totalPages > 1">\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 2, \'ft-b-fpaginate_current\': _currentPage == 2}" (click)="setCurrentPage(2)">2</button>\r\n </ng-container>\r\n <ng-container *ngIf="totalPages > 2">\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 3, \'ft-b-fpaginate_current\': _currentPage == 3}" (click)="setCurrentPage(3)">3</button>\r\n </ng-container>\r\n <ng-container *ngIf="totalPages > 3">\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 4, \'ft-b-fpaginate_current\': _currentPage == 4}" (click)="setCurrentPage(4)">4</button>\r\n </ng-container>\r\n <ng-container *ngIf="totalPages > 4">\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 5, \'ft-b-fpaginate_current\': _currentPage == 5}" (click)="setCurrentPage(5)">5</button>\r\n </ng-container>\r\n <ng-container *ngIf="totalPages > 5">\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 6, \'ft-b-fpaginate_current\': _currentPage == 6}" (click)="setCurrentPage(6)">6</button>\r\n </ng-container>\r\n <ng-container *ngIf="totalPages > 6">\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 7, \'ft-b-fpaginate_current\': _currentPage == 7}" (click)="setCurrentPage(7)">7</button>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf="totalPages > 7">\r\n\r\n <ng-container *ngIf="_currentPage < 5">\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 1, \'ft-b-fpaginate_current\': _currentPage == 1}" (click)="setCurrentPage(1)">1</button>\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 2, \'ft-b-fpaginate_current\': _currentPage == 2}" (click)="setCurrentPage(2)">2</button>\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 3, \'ft-b-fpaginate_current\': _currentPage == 3}" (click)="setCurrentPage(3)">3</button>\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 4, \'ft-b-fpaginate_current\': _currentPage == 4}" (click)="setCurrentPage(4)">4</button>\r\n <button class="ft-b ft-b-fpaginate" (click)="setCurrentPage(5)">5</button>\r\n <span class=\'ft-paginate_ellipsis\'>…</span>\r\n <button class="ft-b ft-b-fpaginate" (click)="setCurrentPage(totalPages)">{{totalPages}}</button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf="_currentPage >= totalPages-3">\r\n <button class="ft-b ft-b-fpaginate" (click)="setCurrentPage(1)">1</button>\r\n <span class=\'ft-paginate_ellipsis\'>…</span>\r\n <button class="ft-b ft-b-fpaginate" (click)="setCurrentPage(totalPages-4)">{{totalPages-4}}</button>\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != (totalPages-3), \'ft-b-fpaginate_current\': _currentPage == (totalPages-3)}" (click)="setCurrentPage(totalPages-3)">{{totalPages-3}}</button>\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != (totalPages-2), \'ft-b-fpaginate_current\': _currentPage == (totalPages-2)}" (click)="setCurrentPage(totalPages-2)">{{totalPages-2}}</button>\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != (totalPages-1), \'ft-b-fpaginate_current\': _currentPage == (totalPages-1)}" (click)="setCurrentPage(totalPages-1)">{{totalPages-1}}</button>\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != (totalPages), \'ft-b-fpaginate_current\': _currentPage == (totalPages)}" (click)="setCurrentPage(totalPages)">{{totalPages}}</button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf="(_currentPage < (totalPages-3)) && (_currentPage >= 5)">\r\n <button class="ft-b ft-b-fpaginate" (click)="setCurrentPage(1)">1</button>\r\n <span class=\'ft-paginate_ellipsis\'>…</span>\r\n <button class="ft-b ft-b-fpaginate" (click)="setCurrentPage(_currentPage-1)">{{_currentPage-1}}</button>\r\n <button class="ft-b ft-b-fpaginate_current" (click)="setCurrentPage(_currentPage)">{{_currentPage}}</button>\r\n <button class="ft-b ft-b-fpaginate" (click)="setCurrentPage(_currentPage+1)">{{_currentPage+1}}</button>\r\n <span class=\'ft-paginate_ellipsis\'>…</span>\r\n <button class="ft-b ft-b-fpaginate" (click)="setCurrentPage(totalPages)">{{totalPages}}</button>\r\n </ng-container>\r\n\r\n </ng-container>\r\n \x3c!-- </span> --\x3e\r\n\r\n <button class="ft-b ft-b-fpaginate" id=\'ft-b-fpaginate_next\' [disabled]="isNextDisabled()" (click)="nextPage()"><i></i></button>\r\n <button class="ft-b ft-b-fpaginate" id=\'ft-b-fpaginate_last\' [disabled]="isLastDisabled()" (click)="lastPage()"><i></i></button>\r\n\r\n</div>',styles:[""]}]}],t.propDecorators={itemsPerPage:[{type:r.Input}],totalItems:[{type:r.Input}],totalItemsAfterFilters:[{type:r.Input}],currentPage:[{type:r.Input}],PagingChange:[{type:r.Output}]},t}(),v=function(){function t(){this.search=new r.EventEmitter,this.searchUpdated=new m.Subject}return t.prototype.onKeyUp=function(t){console.log(t.target.value),this.search.emit({searchString:t.target.value})},t.decorators=[{type:r.Component,args:[{selector:"ft-fsearch",template:'<div class="ft-fsearch">\r\n <div class="ft-fsearch-prepend">\r\n <span><i aria-hidden="true"></i></span>\r\n </div>\r\n <input type="search" class="ft-i ft-i-fsearch" (keyup)=\'onKeyUp($event)\'>\r\n <div class="ft-fsearch-append">\r\n <span><i aria-hidden="true"></i></span>\r\n </div>\r\n</div>\r\n',styles:[""]}]}],t.propDecorators={search:[{type:r.Output}]},t}(),P=function(){function t(){this.order=new r.EventEmitter,this.nextState=0,this.currentIcon=0,this.states=["","Asc","Desc"]}return t.prototype.next=function(){this.nextState=(this.nextState+1)%3,this.currentIcon=this.nextState,this.order.emit({state:this.states[this.nextState]})},t.decorators=[{type:r.Component,args:[{selector:"ft-fsorter",template:'<button class="ft-b ft-b-fsorter" (click)="next()" title="{{states[nextState]}}"><span [ngClass]="{\'ft-sort-neutral\': currentIcon == 0, \'ft-sort-asc\': currentIcon == 1, \'ft-sort-desc\': currentIcon == 2}"></span></button>',styles:[""]}]}],t.ctorParameters=function(){return[]},t.propDecorators={order:[{type:r.Output}]},t}(),C=function K(){this.dataModifier=new I},I=function L(){this.filters=[],this.currentPage=0},S=functio