diff --git a/latest/index.html b/latest/index.html new file mode 100644 index 0000000..d985749 --- /dev/null +++ b/latest/index.html @@ -0,0 +1,41 @@ + + + + + + PE Viewer + + + + + + + + + + + + +
+ + + + + + + + \ No newline at end of file diff --git a/latest/ui.css b/latest/ui.css new file mode 100644 index 0000000..99b23d3 --- /dev/null +++ b/latest/ui.css @@ -0,0 +1,3 @@ +body,input{font-family:"Roboto",sans-serif;font-weight:400;color:#222;font-size:14px;margin:0;padding:0}strong{font-family:"Roboto",sans-serif;font-weight:700}.info{color:#004085;border:1px solid #b8daff;border-radius:5px;background:#cce5ff;padding:10px;margin:10px}.nav{cursor:pointer}#app{display:grid;position:absolute;width:100%;height:100%;grid-template-rows:auto 1fr auto}#app-header{grid-row:1;color:#222;background:#83d0f2;padding:10px}#app-header .pg-title{display:inline-block;margin:0 0 4px 0;font-size:28px}#app-header .pg-finfo{display:inline-block;vertical-align:baseline;margin-left:20px}#app-header .pg-navlst{margin:10px -10px -10px -10px;padding:10px;background:#e4f0f5}#app-header .pg-navlst .nav{margin-left:10px;text-decoration:underline}#app-header .pg-navlst th{font-family:"Roboto",sans-serif;font-weight:700;text-align:left}#app-content{grid-row:2;overflow:auto;padding:10px}#app-content .struct-title{font-size:18px;margin:10px 0;padding:4px 6px;border-left:4px solid;color:#3f87a6}#app-content .struct-table{font-family:"Roboto Mono",monospace;border-collapse:collapse;border-bottom:2px solid #777}#app-content .struct-table th,#app-content .struct-table td{white-space:nowrap;padding:2px 10px}#app-content .struct-table th{font-family:"Roboto",sans-serif;font-weight:700;text-align:left}#app-content .struct-table .st-hdr{border-bottom:1px solid #777;background:#3f87a6;color:#fff}#app-content .struct-table .st-grphdr{border-top:1px solid #777;border-bottom:1px solid #777;background:#83d0f2}#app-content .struct-table .st-tr:nth-child(odd){background:#fff}#app-content .struct-table .st-tr:nth-child(even){background:#e4f0f5}#app-content .file-opener{margin-top:100px;text-align:center;font-size:18px}#app-content .file-opener input{font-size:18px}#app-content .file-opener .info{margin-left:auto;margin-right:auto;width:fit-content}#app-content .top-lnk{text-align:right;margin:4px 0}#app-footer{grid-row:3;color:#fff;background:#222;padding:10px;white-space:nowrap;font-size:12px}#app-footer a{color:#fff}#app-footer>div{display:inline-block;vertical-align:baseline}#app-footer>div:not(:first-child){margin-left:20px}#app-footer>div>strong{font-size:18px} + +/*# sourceMappingURL=ui.css.map */ diff --git a/latest/ui.css.map b/latest/ui.css.map new file mode 100644 index 0000000..892283e --- /dev/null +++ b/latest/ui.css.map @@ -0,0 +1 @@ +{"version":3,"file":"ui.css","sources":["ui.scss","_var.scss","_mixin.scss"],"sourcesContent":["@import \"var\";\n@import \"mixin\";\n\nbody, input {\n @include txt-normal;\n \n color: $color-txt;\n font-size: $size-txt-mid;\n margin: 0;\n padding: 0;\n}\n\nstrong {\n @include txt-bold;\n}\n\n.info {\n color: $color-info-txt;\n border: 1px solid $color-info-bdr;\n border-radius: 5px;\n background: $color-info-bg;\n padding: $size-pad-lg;\n margin: $size-pad-lg;\n}\n\n.nav {\n cursor: pointer;\n}\n\n#app {\n display: grid;\n position: absolute;\n width: 100%;\n height: 100%;\n grid-template-rows: auto 1fr auto;\n}\n\n#app-header {\n grid-row: 1;\n color: $color-txt;\n background: $color-bg-mid;\n padding: $size-pad-lg;\n\n .pg-title {\n display: inline-block;\n margin: 0 0 $size-pad-mid 0;\n font-size: $size-txt-lg;\n }\n\n .pg-finfo {\n display: inline-block;\n vertical-align: baseline;\n margin-left: 2 * $size-pad-lg;\n }\n\n .pg-navlst {\n margin: $size-pad-lg 0-$size-pad-lg 0-$size-pad-lg 0-$size-pad-lg;\n padding: $size-pad-lg;\n background: $color-bg-mid-lt;\n\n .nav {\n margin-left: $size-pad-lg;\n text-decoration: underline;\n }\n\n th {\n @include txt-bold;\n text-align: left;\n }\n }\n}\n\n#app-content {\n grid-row: 2;\n overflow: auto;\n padding: $size-pad-lg;\n\n .struct-title {\n font-size: $size-txt-mid-lg;\n margin: $size-pad-lg 0;\n padding: $size-pad-mid $size-pad-lg - $size-pad-mid;\n border-left: $size-pad-mid solid;\n color: $color-bg-mid-dk;\n }\n\n .struct-table {\n @include txt-code;\n border-collapse: collapse;\n border-bottom: 2px solid $color-txt-mid-lt;\n \n th, td {\n white-space: nowrap;\n padding: $size-pad-sm $size-pad-lg;\n }\n \n th {\n @include txt-bold;\n text-align: left;\n }\n\n .st-hdr {\n border-bottom: 1px solid $color-txt-mid-lt;\n background: $color-bg-mid-dk;\n color: $color-txt-lt;\n }\n\n .st-grphdr{\n border-top: 1px solid $color-txt-mid-lt;\n border-bottom: 1px solid $color-txt-mid-lt;\n background: $color-bg-mid;\n }\n\n .st-tr{\n &:nth-child(odd) {\n background: $color-bg-lt;\n }\n\n &:nth-child(even) {\n background: $color-bg-mid-lt;\n }\n }\n }\n\n .file-opener {\n margin-top: 100px;\n text-align: center;\n font-size: $size-txt-mid-lg;\n\n input {\n font-size: $size-txt-mid-lg;\n }\n\n .info {\n margin-left: auto;\n margin-right: auto;\n width: fit-content;\n }\n }\n\n .top-lnk {\n text-align: right;\n margin: $size-pad-mid 0;\n }\n}\n\n#app-footer {\n grid-row: 3;\n color: $color-txt-lt;\n background: $color-bg-dk;\n padding: $size-pad-lg;\n white-space: nowrap;\n font-size: $size-txt-sm;\n\n a {\n color: $color-txt-lt;\n }\n\n &>div {\n display: inline-block;\n vertical-align: baseline;\n\n &:not(:first-child) {\n margin-left: 2 * $size-pad-lg;\n }\n\n &>strong {\n font-size: $size-txt-mid-lg;\n }\n }\n}","$font-mono: 'Roboto Mono', monospace;\n$font-text: 'Roboto', sans-serif;\n\n$font-w-reg: 400;\n$font-w-bold: 700;\n\n$color-bg-lt: #ffffff;\n$color-bg-mid-lt: #e4f0f5;\n$color-bg-mid: #83d0f2;\n$color-bg-mid-dk: #3f87a6;\n$color-bg-dk: #222222;\n$color-txt-lt: #ffffff;\n$color-txt-mid-lt: #777777;\n$color-txt: #222222;\n\n$color-info-txt: #004085;\n$color-info-bg: #cce5ff;\n$color-info-bdr: #b8daff;\n\n$size-pad-sm: 2px;\n$size-pad-mid: 4px;\n$size-pad-lg: 10px;\n\n$size-txt-sm: 12px;\n$size-txt-mid: 14px;\n$size-txt-mid-lg: 18px;\n$size-txt-lg: 28px;\n","@import \"var\";\n@mixin txt-normal {\n font-family: $font-text;\n font-weight: $font-w-reg;\n}\n\n@mixin txt-bold {\n font-family: $font-text;\n font-weight: $font-w-bold;\n}\n\n@mixin txt-code {\n font-family: $font-mono;\n}"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/latest/ui.js b/latest/ui.js new file mode 100644 index 0000000..5db8b31 --- /dev/null +++ b/latest/ui.js @@ -0,0 +1,2 @@ +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=20)}([function(e,t){e.exports=React},function(e,t){e.exports=ReactRedux},function(e,t,n){"use strict";t.__esModule=!0,t.createOpenFileAction=function(e){return{type:"OPEN_FILE",file:e}},t.createOpenNavAction=function(e){return{type:"OPEN_NAV",target:e}},t.createSetNavListAction=function(e){return{type:"SET_NAV_LIST",navList:e}},t.createSetPageDataAction=function(e){return{type:"SET_PAGE_DATA",data:e}},t.createSetPEPropsAction=function(e,t){return{type:"SET_PE_PROPS",is32Bit:e,isManaged:t}}},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(1),c=n(5);var l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){var e=this.props.pageID;if(e){var t={pageID:e,title:"TOP"};return o.createElement("div",{className:"top-lnk"},o.createElement(c.NavLink,{target:t}))}return null},t}(o.Component);t.TopLink=i.connect(function(e){var t=e.pageData;return{pageID:t&&t.nav.pageID}})(l)},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0);function i(e){return o.createElement("h2",{id:e.elemID,className:"struct-title"},e.title)}function c(e,t){var n=e.offset,r=e.size,a=e.rawData,i=e.name,c=e.value;e.descriptions;return o.createElement("tr",{key:t,className:"st-tr"},o.createElement("td",null,n),o.createElement("td",null,r),o.createElement("td",null,a.map(function(e,t){return o.createElement("div",{className:"td-line",key:t},e)})),o.createElement("td",null,i),o.createElement("td",null,c),o.createElement("td",null))}t.renderSimpleStruct=function(e){return o.createElement("div",{className:"struct-data"},i(e),o.createElement(l,null,e.items&&e.items.map(function(e,t){return c(e,t.toString())})))},t.renderGroupedStruct=function(e){return o.createElement("div",{className:"struct-data"},i(e),o.createElement(l,null,e.groups&&e.groups.map(function(e,t){return[(n=e.title,r=t.toString(),o.createElement("tr",{key:r,className:"st-grphdr"},o.createElement("th",{colSpan:6},n)))].concat(e.items&&e.items.map(function(e,n){return c(e,t+"."+n)})||[]);var n,r})))};var l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){return o.createElement("table",{className:"struct-table"},o.createElement("thead",null,o.createElement("tr",{className:"st-hdr"},o.createElement("th",null,"Offset"),o.createElement("th",null,"Size"),o.createElement("th",null,"Raw Data"),o.createElement("th",null,"Name"),o.createElement("th",null,"Value"),o.createElement("th",null,"Description"))),o.createElement("tbody",null,this.props.children))},t}(o.Component)},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(1),c=n(2);var l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){var e=this.props,t=e.target,n=e.extraClass,r=e.onClick,a=t.title,i="nav";return n&&(i+=" "+n),o.createElement("a",{className:i,title:a,onClick:r},a)},t}(o.Component);t.NavLink=i.connect(null,function(e,t){return{onClick:function(){e(c.createOpenNavAction(t.target))}}})(l)},function(e,t){e.exports=Redux},function(e,t,n){"use strict";t.__esModule=!0,t.createReqOpenFileMessage=function(e){return{type:"REQ_OPEN_FILE",file:e}},t.createReqOpenNavMessage=function(e){return{type:"REQ_OPEN_NAV",target:e}}},function(e,t,n){"use strict";t.__esModule=!0;var r,a,o=n(2),i=n(7);t.workerClientMiddleware=function(e){return function(t){return function(n){switch(n.type){case"OPEN_FILE":var a=n.file;r.postMessage(i.createReqOpenFileMessage(a));break;case"OPEN_NAV":var o=n.target,c=e.getState().pageData,l=o.pageID;o.elemID;c&&c.nav.pageID==l||r.postMessage(i.createReqOpenNavMessage(o))}return t(n)}}},t.initWorkerClient=function(e){a=e,(r=new Worker("worker.js")).onmessage=function(e){return function(e){switch(e.type){case"RES_NAV_DATA":var t=e.navList;a.dispatch(o.createSetNavListAction(t));break;case"RES_PAGE_DATA":var n=e.pageData;a.dispatch(o.createSetPageDataAction(n));break;case"RES_PE_PROPS":var r=e,i=r.is32Bit,c=r.isManaged;a.dispatch(o.createSetPEPropsAction(i,c))}}(e.data)}}},function(e,t,n){"use strict";function r(e){setTimeout(function(){var t;e?(t=document.getElementById(e))&&t.scrollIntoView():(t=document.getElementById("app-content"))&&(t.scrollTop=0)},1)}t.__esModule=!0,t.actionListenerMiddleware=function(e){return function(t){return function(n){switch(n.type){case"OPEN_FILE":var a=e.getState().appInfo,o=n.file;document.title=o.name+" - "+a.title;break;case"OPEN_NAV":var i=e.getState().pageData,c=n.target,l=c.pageID,u=c.elemID;i&&i.nav.pageID===l&&r(u);break;case"SET_PAGE_DATA":r(n.data.nav.elemID)}return t(n)}}}},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(1);var c=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){var e=this.props.appInfo,t=e.title,n=e.version,r=e.author,a=e.homepage,i=e.bugsUrl,c=e.releaseNotesUrl,l=e.buildTimeLocal,u=e.year;return o.createElement("footer",{id:"app-footer"},o.createElement("div",null,o.createElement("strong",null,t)),o.createElement("div",null,"Coypright © ",r," ",u),o.createElement("div",null,"Version ",n),o.createElement("div",null,"Last build: ",l),o.createElement("div",null,o.createElement("a",{href:c+"#"+n,target:"_blank"},"Release Notes")),o.createElement("div",null,o.createElement("a",{href:"/latest",target:"_blank"},"Try Latest Build")),o.createElement("div",null,o.createElement("a",{href:a,target:"_blank"},"View on GitHub")),o.createElement("div",null,o.createElement("a",{href:i,target:"_blank"},"Report Issue")))},t}(o.Component);t.PageFooter=i.connect(function(e){return{appInfo:e.appInfo}})(c)},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(4),c=n(3),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){var e=this.props.data;return o.createElement("section",{className:"data-page"},i.renderSimpleStruct(e.cliHeader),o.createElement(c.TopLink,null),this.renderMetadataRoot(),this.renderStreamHeaders())},t.prototype.renderMetadataRoot=function(){var e=this.props.data;return e.metadataRoot&&o.createElement(o.Fragment,null,i.renderSimpleStruct(e.metadataRoot),o.createElement(c.TopLink,null))},t.prototype.renderStreamHeaders=function(){var e=this.props.data;return e.streamHeaders&&o.createElement(o.Fragment,null,i.renderGroupedStruct(e.streamHeaders),o.createElement(c.TopLink,null))},t}(o.Component);t.MetadataHeadersPage=l},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(4),c=n(3),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){var e=this.props.data;return o.createElement("section",{className:"data-page"},i.renderSimpleStruct(e.dosHeader),o.createElement(c.TopLink,null),i.renderSimpleStruct(e.peSignature),o.createElement(c.TopLink,null),i.renderSimpleStruct(e.fileHeader),o.createElement(c.TopLink,null),i.renderGroupedStruct(e.optionalHeader),o.createElement(c.TopLink,null),i.renderGroupedStruct(e.dataDirectories),o.createElement(c.TopLink,null),i.renderGroupedStruct(e.sectionHeaders),o.createElement(c.TopLink,null))},t}(o.Component);t.HeadersPage=l},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(1),c=n(2);var l=function(e){function t(t){var n=e.call(this,t)||this;return n.onFileChange=n.onFileChange.bind(n),n}return a(t,e),t.prototype.render=function(){return o.createElement("section",{className:"file-opener"},o.createElement("div",null,"Select a file:"),o.createElement("div",null,o.createElement("input",{type:"file",onChange:this.onFileChange})),o.createElement("div",{className:"info"},"No data would be uploaded, everything is parsed locally."))},t.prototype.onFileChange=function(e){var t=this.props.onFileSelected,n=e.target.files;n&&n.length>0&&t(n[0])},t}(o.Component);t.OpenFilePage=i.connect(null,function(e){return{onFileSelected:function(t){return e(c.createOpenFileAction(t))}}})(l)},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(1),c=n(13),l=n(12),u=n(11);var s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){return o.createElement("section",{id:"app-content"},this.renderContent())},t.prototype.renderContent=function(){var e=this.props.pageData;if(null==e)return o.createElement(c.OpenFilePage,null);switch(e.nav.pageID){case"HEADERS":return o.createElement(l.HeadersPage,{data:e});case"MD_HEADERS":return o.createElement(u.MetadataHeadersPage,{data:e});default:return o.createElement("div",null,"Page not found.")}},t}(o.Component);t.PageContent=i.connect(function(e){return{pageData:e.pageData}})(s)},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(1),c=n(5);var l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){var e=this.props.fileInfo;return o.createElement("header",{id:"app-header"},e?this.renderFileInfo(e):this.renderWelcome())},t.prototype.renderWelcome=function(){return o.createElement("div",{className:"pg-title-line"},o.createElement("h1",{className:"pg-title"},"Welcome to PE Viewer."))},t.prototype.renderFileInfo=function(e){e.name,e.size,e.is32Bit,e.isManaged;return o.createElement(o.Fragment,null,this.renderTitleLine(e),this.renderNavList())},t.prototype.renderTitleLine=function(e){var t=e.name,n=e.size,r=e.is32Bit,a=e.isManaged;return o.createElement("div",{className:"pg-title-line"},o.createElement("h1",{className:"pg-title"},t),o.createElement("div",{className:"pg-finfo"},o.createElement("span",null,n.toLocaleString()," bytes."),null!=r&&o.createElement(o.Fragment,null,o.createElement("span",null," | "),o.createElement("span",null,r?"32-bit":"64-bit")),null!=a&&o.createElement(o.Fragment,null,o.createElement("span",null," | "),o.createElement("span",null,a?"managed":"unmanaged"))))},t.prototype.renderNavList=function(){var e=this.props.navList;return e?o.createElement("div",{className:"pg-navlst"},o.createElement("table",null,o.createElement("tbody",null,e.map(function(e,t){return o.createElement("tr",{key:t},o.createElement("th",null,o.createElement(c.NavLink,{target:e.target})),o.createElement("td",null,e.children&&e.children.map(function(e,t){return o.createElement(c.NavLink,{key:t,target:e.target})})))})))):null},t}(o.Component);t.PageHeader=i.connect(function(e){return{fileInfo:e.fileInfo,navList:e.navList}})(l)},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(15),c=n(14),l=n(10),u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){return o.createElement(o.Fragment,null,o.createElement(i.PageHeader,null),o.createElement(c.PageContent,null),o.createElement(l.PageFooter,null))},t}(o.Component);t.App=u},function(e,t,n){"use strict";t.__esModule=!0;var r=n(6);t.appReducer=r.combineReducers({appInfo:function(e,t){void 0===e&&(e=null);return e},fileInfo:function(e,t){void 0===e&&(e=null);switch(t.type){case"OPEN_FILE":var n=t.file,r=n.name,a=n.size;return Object.assign({},e,{name:r,size:a});case"SET_PE_PROPS":var o=t,i=o.is32Bit,c=o.isManaged;return Object.assign({},e,{is32Bit:i,isManaged:c});default:return e}},pageData:function(e,t){void 0===e&&(e=null);switch(t.type){case"SET_PAGE_DATA":var n=t.data;return n;default:return e}},navList:function(e,t){void 0===e&&(e=[]);switch(t.type){case"SET_NAV_LIST":var n=t.navList;return n;default:return e}}})},function(e){e.exports={title:"PE Viewer",version:"0.1.0",author:"Anders Liu",homepage:"https://github.com/anders-liu/peviewer-dev#readme",bugs_url:"https://github.com/anders-liu/peviewer-dev/issues",release_notes:"https://github.com/anders-liu/peviewer/blob/master/RELEASES.md",build_time:"Wed, 06 Jun 2018 04:51:37 GMT"}},function(e,t){e.exports=ReactDOM},function(e,t,n){"use strict";t.__esModule=!0;var r=n(0),a=n(19),o=n(6),i=n(1),c=n(18),l=n(17),u=n(16),s=n(9),p=n(8),f={title:c.title,version:c.version,author:c.author,homepage:c.homepage,bugsUrl:c.bugs_url,releaseNotesUrl:c.release_notes,buildTimeLocal:new Date(Date.parse(c.build_time)).toLocaleString(),year:(new Date).getFullYear().toString()},d={appInfo:f,navList:[]};document.title=""+f.title;var m=window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__||o.compose,_=o.createStore(l.appReducer,d,m(o.applyMiddleware(s.actionListenerMiddleware,p.workerClientMiddleware)));p.initWorkerClient(_),a.render(r.createElement(i.Provider,{store:_},r.createElement(u.App,null)),document.getElementById("app"))}]); +//# sourceMappingURL=ui.js.map \ No newline at end of file diff --git a/latest/ui.js.map b/latest/ui.js.map new file mode 100644 index 0000000..6efe0ea --- /dev/null +++ b/latest/ui.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"React\"","webpack:///external \"ReactRedux\"","webpack:///./src/ui/scripts/store/actions.ts","webpack:///./src/ui/scripts/components/top-link.tsx","webpack:///./src/ui/scripts/components/struct-data.tsx","webpack:///./src/ui/scripts/components/nav-link.tsx","webpack:///external \"Redux\"","webpack:///./src/ui/scripts/worker-message.ts","webpack:///./src/ui/scripts/worker-client.ts","webpack:///./src/ui/scripts/action-listener.ts","webpack:///./src/ui/scripts/components/page-footer.tsx","webpack:///./src/ui/scripts/components/md-headers-page.tsx","webpack:///./src/ui/scripts/components/headers-page.tsx","webpack:///./src/ui/scripts/components/open-file-page.tsx","webpack:///./src/ui/scripts/components/page-content.tsx","webpack:///./src/ui/scripts/components/page-header.tsx","webpack:///./src/ui/scripts/components/app.tsx","webpack:///./src/ui/scripts/store/reducers.ts","webpack:///external \"ReactDOM\"","webpack:///./src/ui/scripts/index.tsx"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","object","property","prototype","hasOwnProperty","p","s","React","ReactRedux","createOpenFileAction","file","type","createOpenNavAction","target","createSetNavListAction","navList","createSetPageDataAction","data","createSetPEPropsAction","is32Bit","isManaged","nav_link_1","TopLinkClass","_super","__extends","render","pageID","this","props","title","createElement","className","NavLink","Component","TopLink","connect","state","pageData","nav","renderStructTitle","id","elemID","renderStructItemRow","item","key","offset","size","rawData","descriptions","map","v","renderSimpleStruct","StructTable","items","toString","renderGroupedStruct","groups","gv","gi","colSpan","concat","children","A","NavLinkClass","_a","extraClass","onClick","dispatch","ownProps","Redux","createReqOpenFileMessage","createReqOpenNavMessage","_worker","_store","WM","workerClientMiddleware","store","next","action","postMessage","getState","initWorkerClient","Worker","onmessage","ev","msg","handleMessage","scrollElement","setTimeout","elem","document","getElementById","scrollIntoView","scrollTop","actionListenerMiddleware","appInfo","PageFooterClass","version","author","homepage","bugsUrl","releaseNotesUrl","buildTimeLocal","year","href","PageFooter","struct_data_1","top_link_1","MetadataHeadersPage","cliHeader","renderMetadataRoot","renderStreamHeaders","metadataRoot","Fragment","streamHeaders","HeadersPage","dosHeader","peSignature","fileHeader","optionalHeader","dataDirectories","sectionHeaders","OpenFilePageClass","_this","onFileChange","bind","onChange","onFileSelected","fileList","files","length","OpenFilePage","open_file_page_1","headers_page_1","md_headers_page_1","PageContentClass","renderContent","PageContent","PageHeaderClass","fileInfo","renderFileInfo","renderWelcome","renderTitleLine","renderNavList","toLocaleString","cv","ci","PageHeader","page_header_1","page_content_1","page_footer_1","App","appReducer","combineReducers","name_1","assign","navList_1","ReactDOM","packageJson","R","app_1","action_listener_1","worker_client_1","bugs_url","release_notes","Date","parse","build_time","getFullYear","defaultState","composeEnhancers","window","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","createStore","applyMiddleware","Provider"],"mappings":"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","file":"ui.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 20);\n","module.exports = React;","module.exports = ReactRedux;","import * as Redux from \"redux\";\r\n\r\nexport const enum ActionType {\r\n OPEN_FILE = \"OPEN_FILE\",\r\n OPEN_NAV = \"OPEN_NAV\",\r\n\r\n SET_NAV_LIST = \"SET_NAV_LIST\",\r\n SET_PAGE_DATA = \"SET_PAGE_DATA\",\r\n SET_PE_PROPS = \"SET_PE_PROPS\",\r\n SET_WORKER_ERROR = \"SET_WORKER_ERROR\",\r\n}\r\n\r\nexport interface OpenFileAction extends Redux.Action {\r\n file: File;\r\n}\r\n\r\nexport function createOpenFileAction(file: File): OpenFileAction {\r\n return { type: ActionType.OPEN_FILE, file };\r\n}\r\n\r\nexport interface OpenNavAction extends Redux.Action {\r\n target: W.NavTarget;\r\n}\r\n\r\nexport function createOpenNavAction(target: W.NavTarget): OpenNavAction {\r\n return { type: ActionType.OPEN_NAV, target };\r\n}\r\n\r\nexport interface SetNavListAction extends Redux.Action {\r\n navList: W.NavData[];\r\n}\r\n\r\nexport function createSetNavListAction(navList: W.NavData[]): SetNavListAction {\r\n return { type: ActionType.SET_NAV_LIST, navList };\r\n}\r\n\r\nexport interface SetPageDataAction extends Redux.Action {\r\n data: W.PageData;\r\n}\r\n\r\nexport function createSetPageDataAction(data: W.PageData): SetPageDataAction {\r\n return { type: ActionType.SET_PAGE_DATA, data };\r\n}\r\n\r\nexport interface SetPEPropsAction extends Redux.Action {\r\n is32Bit?: boolean;\r\n isManaged?: boolean;\r\n}\r\n\r\nexport function createSetPEPropsAction(is32Bit?: boolean, isManaged?: boolean): SetPEPropsAction {\r\n return { type: ActionType.SET_PE_PROPS, is32Bit, isManaged };\r\n}","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as S from \"../store/state\";\r\nimport { NavLink } from \"./nav-link\";\r\n\r\nexport interface ConnectedProps {\r\n pageID?: W.PageID;\r\n}\r\n\r\nfunction mapStateToProps(state: S.AppState): ConnectedProps {\r\n const { pageData } = state;\r\n\r\n return {\r\n pageID: pageData && pageData.nav.pageID\r\n };\r\n}\r\n\r\nclass TopLinkClass extends React.Component {\r\n public render(): JSX.Element | null {\r\n const { pageID } = this.props;\r\n\r\n if (!pageID) {\r\n return null;\r\n } else {\r\n const target: W.NavTarget = {\r\n pageID,\r\n title: W.KnownTitle.TOP\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport const TopLink = ReactRedux.connect(mapStateToProps)(TopLinkClass);","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nexport function renderSimpleStruct(s: W.SimpleStruct): JSX.Element {\r\n return (\r\n
\r\n {renderStructTitle(s)}\r\n \r\n {s.items && s.items.map((v, i) => renderStructItemRow(v, i.toString()))}\r\n \r\n
\r\n );\r\n}\r\n\r\nexport function renderGroupedStruct(s: W.GroupedStruct): JSX.Element {\r\n return (\r\n
\r\n {renderStructTitle(s)}\r\n \r\n {s.groups && s.groups.map((gv, gi) => {\r\n return [\r\n renderStructGroupTitleRow(gv.title, gi.toString())\r\n ].concat(gv.items && gv.items.map((v, i) =>\r\n renderStructItemRow(v, `${gi}.${i}`)) || []);\r\n })}\r\n \r\n
\r\n );\r\n}\r\n\r\nfunction renderStructTitle(s: W.StructData): JSX.Element {\r\n return

{s.title}

;\r\n}\r\n\r\nfunction renderStructItemRow(item: W.StructItem, key: string): JSX.Element {\r\n const { offset, size, rawData, name, value, descriptions } = item;\r\n return (\r\n \r\n {offset}\r\n {size}\r\n {rawData.map((v, i) =>
{v}
)}\r\n {name}\r\n {value}\r\n \r\n \r\n );\r\n}\r\n\r\nfunction renderStructGroupTitleRow(title: string, key: string): JSX.Element {\r\n return ({title});\r\n}\r\n\r\nclass StructTable extends React.Component {\r\n public render(): JSX.Element {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.props.children}\r\n \r\n
OffsetSizeRaw DataNameValueDescription
\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as A from \"../store/actions\";\r\nimport * as S from \"../store/state\";\r\n\r\nexport interface NavLinkProps {\r\n target: W.NavTarget;\r\n extraClass?: string;\r\n}\r\n\r\ninterface ConnectedEvents {\r\n onClick: () => void;\r\n}\r\n\r\nfunction mapDispatchToEvents(dispatch: ReactRedux.Dispatch, ownProps: NavLinkProps): ConnectedEvents {\r\n return {\r\n onClick: () => { dispatch(A.createOpenNavAction(ownProps.target)); }\r\n };\r\n}\r\n\r\nclass NavLinkClass extends React.Component {\r\n public render(): JSX.Element {\r\n const { target, extraClass, onClick } = this.props;\r\n const { title } = target;\r\n\r\n let className = \"nav\";\r\n if (extraClass) {\r\n className += \" \" + extraClass;\r\n }\r\n\r\n return (\r\n {title}\r\n );\r\n }\r\n}\r\n\r\nexport const NavLink = ReactRedux.connect(null, mapDispatchToEvents)(NavLinkClass);","module.exports = Redux;","/// \r\n\r\nexport function createReqOpenFileMessage(file: File): W.ReqOpenFileMessage {\r\n return {\r\n type: W.WorkerMessageType.REQ_OPEN_FILE,\r\n file\r\n };\r\n}\r\n\r\nexport function createReqOpenNavMessage(target: W.NavTarget): W.ReqOpenNavMessage {\r\n return {\r\n type: W.WorkerMessageType.REQ_OPEN_NAV,\r\n target\r\n };\r\n}","/// \r\n\r\nimport * as Redux from \"redux\";\r\n\r\nimport * as A from \"./store/actions\";\r\nimport * as S from \"./store/state\";\r\nimport * as WM from \"./worker-message\";\r\n\r\nexport const workerClientMiddleware = ((store: Redux.MiddlewareAPI) => (next: Redux.Dispatch) => (action: Redux.Action) => {\r\n switch (action.type) {\r\n case A.ActionType.OPEN_FILE: {\r\n const { file } = action as A.OpenFileAction;\r\n _worker.postMessage(WM.createReqOpenFileMessage(file));\r\n break;\r\n }\r\n\r\n case A.ActionType.OPEN_NAV: {\r\n const { target } = action as A.OpenNavAction;\r\n const { pageData } = store.getState();\r\n const { pageID, elemID } = target;\r\n if (!pageData || pageData.nav.pageID != pageID) {\r\n _worker.postMessage(WM.createReqOpenNavMessage(target));\r\n }\r\n break;\r\n }\r\n }\r\n return next(action);\r\n}) as Redux.Middleware;\r\n\r\nexport function initWorkerClient(store: Redux.Store): void {\r\n _store = store;\r\n _worker = new Worker(\"worker.js\");\r\n _worker.onmessage = ev => handleMessage(ev.data);\r\n}\r\n\r\nfunction handleMessage(msg: W.WorkerMessage): void {\r\n switch (msg.type) {\r\n case W.WorkerMessageType.RES_NAV_DATA:\r\n const { navList } = msg;\r\n _store.dispatch(A.createSetNavListAction(navList));\r\n break;\r\n\r\n case W.WorkerMessageType.RES_PAGE_DATA:\r\n const { pageData } = msg;\r\n _store.dispatch(A.createSetPageDataAction(pageData));\r\n break;\r\n\r\n case W.WorkerMessageType.RES_PE_PROPS:\r\n const { is32Bit, isManaged } = msg;\r\n _store.dispatch(A.createSetPEPropsAction(is32Bit, isManaged));\r\n break;\r\n\r\n case W.WorkerMessageType.RES_PE_ERROR:\r\n break;\r\n }\r\n}\r\n\r\nlet _worker: Worker;\r\nlet _store: Redux.Store;\r\n","import * as Redux from \"redux\";\r\n\r\nimport * as A from \"./store/actions\";\r\nimport * as S from \"./store/state\";\r\n\r\nexport const actionListenerMiddleware = ((store: Redux.MiddlewareAPI) => (next: Redux.Dispatch) => (action: Redux.Action) => {\r\n switch (action.type) {\r\n case A.ActionType.OPEN_FILE: {\r\n const { appInfo } = store.getState();\r\n const { file } = action as A.OpenFileAction;\r\n document.title = `${file.name} - ${appInfo.title}`\r\n break;\r\n }\r\n\r\n case A.ActionType.OPEN_NAV: {\r\n const { pageData } = store.getState();\r\n const { target } = action as A.OpenNavAction;\r\n const { pageID, elemID } = target;\r\n if (pageData && pageData.nav.pageID === pageID) {\r\n scrollElement(elemID);\r\n }\r\n break;\r\n }\r\n\r\n case A.ActionType.SET_PAGE_DATA: {\r\n const { data } = action as A.SetPageDataAction;\r\n scrollElement(data.nav.elemID);\r\n break;\r\n }\r\n }\r\n return next(action);\r\n}) as Redux.Middleware;\r\n\r\nfunction scrollElement(elemID?: string): void {\r\n setTimeout(() => {\r\n if (elemID) {\r\n const elem = document.getElementById(elemID);\r\n if (elem) {\r\n elem.scrollIntoView();\r\n }\r\n } else {\r\n const elem = document.getElementById(\"app-content\");\r\n if (elem) {\r\n elem.scrollTop = 0;\r\n }\r\n }\r\n }, 1);\r\n}","import * as React from \"react\";\nimport * as ReactRedux from \"react-redux\";\n\nimport * as S from \"../store/state\";\n\ninterface ConnectedProps {\n appInfo: S.AppInfo;\n}\n\nfunction mapStateToProps(state: S.AppState): ConnectedProps {\n const { appInfo } = state;\n return {\n appInfo\n };\n}\n\nclass PageFooterClass extends React.Component {\n public render(): JSX.Element {\n const { appInfo } = this.props;\n const { title, version, author, homepage, bugsUrl, releaseNotesUrl, buildTimeLocal, year } = appInfo;\n\n return (\n \n )\n }\n}\n\nexport const PageFooter = ReactRedux.connect(mapStateToProps)(PageFooterClass);\n","import * as React from \"react\";\nimport * as ReactRedux from \"react-redux\";\n\nimport { renderSimpleStruct, renderGroupedStruct } from \"./struct-data\";\nimport { TopLink } from \"./top-link\";\n\ninterface MetadataHeadersPageProps {\n data: W.MetadataHeadersPageData;\n}\n\nexport class MetadataHeadersPage extends React.Component {\n public render(): JSX.Element | null {\n const { data } = this.props;\n\n return (\n
\n {renderSimpleStruct(data.cliHeader)}\n \n {this.renderMetadataRoot()}\n {this.renderStreamHeaders()}\n
\n );\n }\n\n public renderMetadataRoot(): JSX.Element | undefined {\n const { data } = this.props;\n return data.metadataRoot && (\n \n {renderSimpleStruct(data.metadataRoot)}\n \n \n );\n }\n\n public renderStreamHeaders(): JSX.Element | undefined {\n const { data } = this.props;\n return data.streamHeaders && (\n \n {renderGroupedStruct(data.streamHeaders)}\n \n \n );\n }\n}\n","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport { renderSimpleStruct, renderGroupedStruct } from \"./struct-data\";\r\nimport { TopLink } from \"./top-link\";\r\n\r\ninterface HeadersPageProps {\r\n data: W.HeadersPageData;\r\n}\r\n\r\nexport class HeadersPage extends React.Component {\r\n public render(): JSX.Element | null {\r\n const { data } = this.props;\r\n\r\n return (\r\n
\r\n {renderSimpleStruct(data.dosHeader)}\r\n \r\n {renderSimpleStruct(data.peSignature)}\r\n \r\n {renderSimpleStruct(data.fileHeader)}\r\n \r\n {renderGroupedStruct(data.optionalHeader)}\r\n \r\n {renderGroupedStruct(data.dataDirectories)}\r\n \r\n {renderGroupedStruct(data.sectionHeaders)}\r\n \r\n
\r\n );\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as A from \"../store/actions\";\r\nimport * as S from \"../store/state\";\r\n\r\ninterface ConnectedEvents {\r\n onFileSelected: (file: File) => void;\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: ReactRedux.Dispatch): ConnectedEvents {\r\n return {\r\n onFileSelected: (file) => dispatch(A.createOpenFileAction(file))\r\n };\r\n}\r\n\r\nclass OpenFilePageClass extends React.Component {\r\n public constructor(props: any) {\r\n super(props);\r\n this.onFileChange = this.onFileChange.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n
Select a file:
\r\n
\r\n
No data would be uploaded, everything is parsed locally.
\r\n
\r\n )\r\n }\r\n\r\n private onFileChange(ev: React.ChangeEvent): void {\r\n const { onFileSelected } = this.props;\r\n const fileList = ev.target.files;\r\n if (fileList && fileList.length > 0) {\r\n onFileSelected(fileList[0]);\r\n }\r\n }\r\n}\r\n\r\nexport const OpenFilePage = ReactRedux.connect(null, mapDispatchToProps)(OpenFilePageClass);\r\n","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as S from \"../store/state\";\r\n\r\nimport { OpenFilePage } from \"./open-file-page\";\r\nimport { HeadersPage } from \"./headers-page\";\r\nimport { MetadataHeadersPage } from \"./md-headers-page\";\r\n\r\ninterface ConnectedProps {\r\n pageData?: W.PageData;\r\n}\r\n\r\nfunction mapStateToProps(state: S.AppState): ConnectedProps {\r\n const { pageData } = state;\r\n\r\n return {\r\n pageData\r\n };\r\n}\r\n\r\nclass PageContentClass extends React.Component {\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n {this.renderContent()}\r\n
\r\n )\r\n }\r\n\r\n private renderContent(): JSX.Element {\r\n const { pageData } = this.props;\r\n\r\n if (pageData == null) {\r\n return ;\r\n }\r\n\r\n switch (pageData.nav.pageID) {\r\n case W.PageID.HEADERS:\r\n return ;\r\n case W.PageID.MD_HEADERS:\r\n return ;\r\n default:\r\n return
Page not found.
;\r\n }\r\n }\r\n}\r\n\r\nexport const PageContent = ReactRedux.connect(mapStateToProps)(PageContentClass);\r\n","import * as React from \"react\";\nimport * as ReactRedux from \"react-redux\";\n\nimport * as S from \"../store/state\";\nimport { NavLink } from \"./nav-link\";\n\ninterface ConnectedProps {\n fileInfo?: S.FileInfo;\n navList: W.NavData[];\n}\n\nfunction mapStateToProps(state: S.AppState): ConnectedProps {\n const { fileInfo, navList } = state;\n\n return {\n fileInfo,\n navList\n };\n}\n\nclass PageHeaderClass extends React.Component {\n public render(): JSX.Element {\n const { fileInfo } = this.props;\n\n return (\n
\n {fileInfo ? this.renderFileInfo(fileInfo) : this.renderWelcome()}\n
\n )\n }\n\n private renderWelcome(): JSX.Element {\n return (\n
\n

Welcome to PE Viewer.

\n
\n );\n }\n\n private renderFileInfo(fileInfo: S.FileInfo): JSX.Element {\n const { name, size, is32Bit, isManaged } = fileInfo;\n\n return (\n \n {this.renderTitleLine(fileInfo)}\n {this.renderNavList()}\n \n );\n }\n\n private renderTitleLine(fileInfo: S.FileInfo): JSX.Element {\n const { name, size, is32Bit, isManaged } = fileInfo;\n\n return (\n
\n

{name}

\n
\n {size.toLocaleString()} bytes.\n\n {is32Bit != null && (\n \n | \n {is32Bit ? \"32-bit\" : \"64-bit\"}\n \n )}\n\n {isManaged != null && (\n \n | \n {isManaged ? \"managed\" : \"unmanaged\"}\n \n )}\n
\n
\n );\n }\n\n private renderNavList(): JSX.Element | null {\n const { navList } = this.props;\n if (!navList) {\n return null;\n }\n\n return (\n
\n \n \n {navList.map((v, i) => (\n \n \n \n \n ))}\n \n
\n {v.children && v.children.map((cv, ci) => (\n \n ))}\n
\n
\n );\n }\n}\n\nexport const PageHeader = ReactRedux.connect(mapStateToProps)(PageHeaderClass);","import * as React from \"react\";\n\nimport { PageHeader } from \"./page-header\";\nimport { PageContent } from \"./page-content\";\nimport { PageFooter } from \"./page-footer\";\n\nexport class App extends React.Component {\n public render(): JSX.Element {\n return (\n \n \n \n \n \n )\n }\n}","import * as Redux from \"redux\";\r\nimport * as A from \"./actions\";\r\nimport * as S from \"./state\";\r\n\r\nexport const appReducer = Redux.combineReducers({\r\n appInfo,\r\n fileInfo,\r\n pageData,\r\n navList,\r\n}) as Redux.Reducer;\r\n\r\nfunction appInfo(state: S.AppInfo | null = null, action: Redux.Action): S.AppInfo | null {\r\n return state;\r\n}\r\n\r\nfunction fileInfo(state: S.FileInfo | null = null, action: Redux.Action): S.FileInfo | null {\r\n switch (action.type) {\r\n case A.ActionType.OPEN_FILE: {\r\n const { file } = action as A.OpenFileAction;\r\n const { name, size } = file;\r\n return Object.assign({}, state, { name, size });\r\n }\r\n\r\n case A.ActionType.SET_PE_PROPS: {\r\n const { is32Bit, isManaged } = action as A.SetPEPropsAction;\r\n return Object.assign({}, state, { is32Bit, isManaged });\r\n }\r\n\r\n default: return state;\r\n }\r\n}\r\n\r\nfunction pageData(state: W.PageData | null = null, action: Redux.Action): W.PageData | null {\r\n switch (action.type) {\r\n case A.ActionType.SET_PAGE_DATA: {\r\n const { data } = action as A.SetPageDataAction;\r\n return data;\r\n }\r\n\r\n default: return state;\r\n }\r\n}\r\n\r\nfunction navList(state: W.NavData[] = [], action: Redux.Action): W.NavData[] {\r\n switch (action.type) {\r\n case A.ActionType.SET_NAV_LIST: {\r\n const { navList } = action as A.SetNavListAction;\r\n return navList;\r\n }\r\n\r\n default: return state;\r\n }\r\n}","module.exports = ReactDOM;","import * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport * as Redux from \"redux\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as packageJson from \"package.json\";\r\nimport * as S from \"./store/state\";\r\nimport * as R from \"./store/reducers\";\r\nimport { App } from \"./components/app\";\r\nimport { actionListenerMiddleware } from \"./action-listener\";\r\nimport { workerClientMiddleware, initWorkerClient } from \"./worker-client\";\r\n\r\nconst appInfo: S.AppInfo = {\r\n title: packageJson.title,\r\n version: packageJson.version,\r\n author: packageJson.author,\r\n homepage: packageJson.homepage,\r\n bugsUrl: packageJson.bugs_url,\r\n releaseNotesUrl: packageJson.release_notes,\r\n buildTimeLocal: new Date(Date.parse(packageJson.build_time)).toLocaleString(),\r\n year: new Date().getFullYear().toString(),\r\n};\r\n\r\nconst defaultState: S.AppState = {\r\n appInfo,\r\n navList: []\r\n};\r\n\r\ndocument.title = `${appInfo.title}`;\r\n\r\nconst _w = window as any;\r\nconst composeEnhancers = _w.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || Redux.compose;\r\nconst store = Redux.createStore(R.appReducer, defaultState, composeEnhancers(\r\n Redux.applyMiddleware(\r\n actionListenerMiddleware,\r\n workerClientMiddleware)\r\n));\r\n\r\ninitWorkerClient(store);\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById(\"app\")\r\n);\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/latest/worker.js b/latest/worker.js new file mode 100644 index 0000000..a785a63 --- /dev/null +++ b/latest/worker.js @@ -0,0 +1,2 @@ +!function(e){var t={};function a(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.m=e,a.c=t,a.d=function(e,t,i){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:i})},a.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="",a(a.s=11)}([function(e,t,a){"use strict";function i(e){return A(e.toString(16).toUpperCase(),2)}function r(e){return A(e.toString(16).toUpperCase(),4)}function _(e){return A(e.toString(16).toUpperCase(),8)}function E(e){return i(e)+"h"}function o(e){return r(e)+"h"}function s(e){return _(e)+"h"}function I(e){return e.toString(16).toUpperCase()+"h ("+e+")"}function n(e,t){void 0===t&&(t=16);for(var a=[],r=0;r=this.data.byteLength||t<0||e+t>this.data.byteLength)throw new _.PEError("INVALID_DATA_POSITION",e,t)},e.prototype.loadHeaders=function(){var e=0;if(this.dosHeader=i.loadImageDosHeader(this,e),this.dosHeader.e_magic.value!=r.IMAGE_DOS_SIGNATURE)throw new _.PEError("INVALID_DOS_SIGNATURE",e,2);if(e=this.dosHeader.e_lfanew.value,this.peSignature=i.loadU4Field(this,e),this.peSignature.value!=r.IMAGE_NT_SIGNATURE)throw new _.PEError("INVALID_PE_SIGNATURE",e,4);switch(e+=this.peSignature._size,this.fileHeader=i.loadImageFileHeader(this,e),e+=this.fileHeader._size,i.loadU2Field(this,e).value){case r.IMAGE_NT_OPTIONAL_HDR32_MAGIC:this.optionalHeader=i.loadImageOptionalHeader32(this,e);break;case r.IMAGE_NT_OPTIONAL_HDR64_MAGIC:this.optionalHeader=i.loadImageOptionalHeader64(this,e);break;default:throw new _.PEError("INVALID_OPTIONAL_HEADER_MAGIC",e,2)}if(this.optionalHeader.NumberOfRvaAndSizes.value!=r.IMAGE_NUMBEROF_DIRECTORY_ENTRIES)throw new _.PEError("INVALID_DATA_DIRECTORY_COUNT",this.optionalHeader.NumberOfRvaAndSizes._offset,this.optionalHeader.NumberOfRvaAndSizes._size);e+=this.optionalHeader._size,this.dataDirectories=i.loadStructArrayByCount(this,e,i.loadImageDataDirectory,this.optionalHeader.NumberOfRvaAndSizes.value),e+=this.dataDirectories._size,this.sectionHeaders=i.loadStructArrayByCount(this,e,i.loadImageSectionHeader,this.fileHeader.NumberOfSections.value)},e.prototype.getSectionHeaderByOffset=function(e){return this.sectionHeaders&&this.sectionHeaders.items.filter(function(t){var a=t.PointerToRawData.value,i=t.SizeOfRawData.value;return e>=a&&e=a&&e0&&e.Size.value>0||!1},e}();t.PEImage=E},function(e,t,a){"use strict";t.__esModule=!0,t.createResNavDataMessage=function(e){return{type:"RES_NAV_DATA",navList:e}},t.createResPageDataMessage=function(e){return{type:"RES_PAGE_DATA",pageData:e}},t.createResPEPropsMessage=function(e,t){return{type:"RES_PE_PROPS",is32Bit:e,isManaged:t}},t.createResPEErrorMessage=function(e){return{type:"RES_PE_ERROR",error:e}}},function(e,t,a){"use strict";t.__esModule=!0;var i=a(10),r=a(9),_=a(5),E=a(2),o=null;onmessage=function(e){var t=e.data;switch(t.type){case"REQ_OPEN_FILE":!function(e){var t=new FileReader;t.onload=function(e){try{var t=e.target.result;o=r.PEImage.load(t);var a=_.generatePageData(o,"HEADERS"),s=i.createResPageDataMessage(a);postMessage(s);var I=o.is32Bit(),n=o.isManaged(),A=i.createResPEPropsMessage(I,n);postMessage(A);var M=E.generateNavList(o),S=i.createResNavDataMessage(M);postMessage(S)}catch(e){var d=i.createResPEErrorMessage(e.message||"Unknown error: "+JSON.stringify(e));postMessage(d)}},t.onerror=function(e){o=null;var t=i.createResPEErrorMessage("Can't open file.");postMessage(t)},t.readAsArrayBuffer(e.file)}(t);break;case"REQ_OPEN_NAV":!function(e){if(null!=o){var t=_.generatePageData(o,e.target.pageID);t.nav.elemID=e.target.elemID;var a=i.createResPageDataMessage(t);postMessage(a)}}(t)}}}]); +//# sourceMappingURL=worker.js.map \ No newline at end of file diff --git a/latest/worker.js.map b/latest/worker.js.map new file mode 100644 index 0000000..4c0548d --- /dev/null +++ b/latest/worker.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/worker/page-data/formatter.ts","webpack:///./src/worker/pe/image-flags.ts","webpack:///./src/worker/page-data/nav-data.ts","webpack:///./src/worker/page-data/metadata-headers.ts","webpack:///./src/worker/page-data/headers.ts","webpack:///./src/worker/page-data/generator.ts","webpack:///./src/worker/pe/error.ts","webpack:///./src/worker/pe/utils.ts","webpack:///./src/worker/pe/loader.ts","webpack:///./src/worker/pe/image.ts","webpack:///./src/worker/message.ts","webpack:///./src/worker/index.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","object","property","prototype","hasOwnProperty","p","s","formatU1RawHex","padZeroLeft","toString","toUpperCase","formatU2RawHex","formatU4RawHex","formatU1Hex","formatU2Hex","formatU4Hex","formatHexDec","formatBytes","bytes","lineWidth","lines","start","length","line","Array","from","subarray","map","b","join","push","str","len","repeat","formatUIntField","f","sz","showDec","hex","offset","_offset","size","_size","rawData","data","formatDec","v","toLocaleString","formatStructTitle","title","formatU1Field","formatU2Field","formatU4Field","formatU8Field","high","low","formatBytesField","formatStringField","IMAGE_DOS_SIGNATURE","IMAGE_NT_SIGNATURE","IMAGE_NT_OPTIONAL_HDR32_MAGIC","IMAGE_NT_OPTIONAL_HDR64_MAGIC","ImageFile","ImageFileMachine","ImageSubsystem","ImageDllCharacteristics","ImageDirectoryEntry","IMAGE_NUMBEROF_DIRECTORY_ENTRIES","ImageSection","ComImageFlags","MetadataSignature","generateNavList","pe","pageID","navList","target","children","elemID","navMD","isManaged","hasMetadata","generateMDHeadersNavData","FM","generateMetadataHeadersPageData","nav","cliHeader","h","getCliHeader","items","cb","MajorRuntimeVersion","MinorRuntimeVersion","MetaData","VirtualAddress","Size","Flags","EntryPointToken","Resources","StrongNameSignature","CodeManagerTable","VTableFixups","ExportAddressTableJumps","ManagedNativeHeader","generateCliHeader","metadataRoot","getMetadataRoot","Signature","MajorVersion","MinorVersion","Reserved","VersionLength","VersionString","VersionPadding","Streams","generateMetadataRoot","streamHeaders","getMetadataStreamHeaders","groups","Name","Offset","Padding","generateMetadataStreamHeader","F","generateHeadersPageData","dosHeader","getDosHeader","e_magic","e_cblp","e_cp","e_crlc","e_cparhdr","e_minalloc","e_maxalloc","e_ss","e_sp","e_csum","e_ip","e_cs","e_lfarlc","e_ovno","e_res","e_oemid","e_oeminfo","e_res2","e_lfanew","generateDosHeader","peSignature","getPESignature","generatePESignature","fileHeader","getFileHeader","Machine","NumberOfSections","TimeDateStamp","PointerToSymbolTable","NumberOfSymbols","SizeOfOptionalHeader","Characteristics","generateFileHeader","optionalHeader","getOptionalHeader","Magic","MajorLinkerVersion","MinorLinkerVersion","SizeOfCode","SizeOfInitializedData","SizeOfUninitializedData","AddressOfEntryPoint","BaseOfCode","BaseOfData","ImageBase","SectionAlignment","FileAlignment","MajorOperatingSystemVersion","MinorOperatingSystemVersion","MajorImageVersion","MinorImageVersion","MajorSubsystemVersion","MinorSubsystemVersion","Win32VersionValue","SizeOfImage","SizeOfHeaders","CheckSum","Subsystem","DllCharacteristics","SizeOfStackReserve","SizeOfStackCommit","SizeOfHeapReserve","SizeOfHeapCommit","LoaderFlags","NumberOfRvaAndSizes","fillOptionalHeader32Fields","fillOptionalHeader64Fields","generateOptionalHeader","dataDirectories","getDataDirectories","generateDataDirectories","sectionHeaders","getSectionHeaders","VirtualSize","SizeOfRawData","PointerToRawData","PointerToRelocations","PointerToLinenumbers","NumberOfRelocations","NumberOfLinenumbers","generateSectionHeaders","headers_1","metadata_headers_1","generatePageData","PEError","_super","type","_this","this","__extends","Error","calculatePadding","dataSize","align","U","loadU1Field","getData","getU1","loadU2Field","getU2","loadU4Field","getU4","loadU8Field","loadU2EnumField","loadU4EnumField","loadFixedSizeByteArrayField","loadFixedSizeAsciiStringField","String","fromCharCode","apply","filter","loadNullTerminatedStringField","ptr","slice","Uint8Array","loadImageDataDirectory","loadU1EnumField","loadStructArrayByCount","loader","count","loadImageDosHeader","loadImageFileHeader","loadImageOptionalHeader32","loadImageOptionalHeader64","loadImageSectionHeader","loadCliHeader","loadMetadataRoot","loadMetadataStreamHeader","L","E","PEImage","buf","DataView","loadHeaders","load","check","getUint8","getUint16","getUint32","buffer","is32Bit","optHdr","dd","isDataDirectoryValid","IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR","hasManagedResources","hasStrongNameSignature","rvaToOffset","metadataStreamHeaders","mdRoot","rva","sh","getSectionHeaderByRva","offsetToRva","getSectionHeaderByOffset","byteLength","shift","createResNavDataMessage","createResPageDataMessage","pageData","createResPEPropsMessage","createResPEErrorMessage","error","M","image_1","generator_1","nav_data_1","onmessage","ev","msg","reader","FileReader","onload","result","pageDataMsg","postMessage","pePropsMsg","navMsg","ex","msg_1","message","JSON","stringify","onerror","readAsArrayBuffer","file","handleReqOpenFile","res","handleReqOpenNav"],"mappings":"aACA,IAAAA,KAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,IACAG,EAAAH,EACAI,GAAA,EACAH,YAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,GACAK,cAAA,EACAC,YAAA,EACAC,IAAAN,KAMAZ,EAAAmB,EAAA,SAAAjB,GACAY,OAAAC,eAAAb,EAAA,cAAiDkB,OAAA,KAIjDpB,EAAAqB,EAAA,SAAAlB,GACA,IAAAS,EAAAT,KAAAmB,WACA,WAA2B,OAAAnB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAU,EAAAC,GAAsD,OAAAV,OAAAW,UAAAC,eAAAnB,KAAAgB,EAAAC,IAGtDxB,EAAA2B,EAAA,GAIA3B,IAAA4B,EAAA,mCChEA,SAAAC,EAA+BnB,GAC3B,OAAOoB,EAAYpB,EAAEqB,SAAS,IAAIC,cAAe,GAGrD,SAAAC,EAA+BvB,GAC3B,OAAOoB,EAAYpB,EAAEqB,SAAS,IAAIC,cAAe,GAGrD,SAAAE,EAA+BxB,GAC3B,OAAOoB,EAAYpB,EAAEqB,SAAS,IAAIC,cAAe,GAGrD,SAAAG,EAA4BzB,GACxB,OAAUmB,EAAenB,GAAE,IAG/B,SAAA0B,EAA4B1B,GACxB,OAAUuB,EAAevB,GAAE,IAG/B,SAAA2B,EAA4B3B,GACxB,OAAUwB,EAAexB,GAAE,IAG/B,SAAA4B,EAA6B5B,GACzB,OAAUA,EAAEqB,SAAS,IAAIC,cAAa,MAAMtB,EAAC,IAGjD,SAAA6B,EAA4BC,EAAmBC,QAAA,IAAAA,MAAA,IAE3C,IADA,IAAIC,KACKC,EAAQ,EAAGA,EAAQH,EAAMI,OAAQD,GAASF,EAAW,CAC1D,IAAMI,EAAOC,MAAMC,KAAKP,EAAMQ,SAASL,EAAOA,EAAQF,IACjDQ,IAAI,SAAAC,GAAK,OAAArB,EAAeqB,KAAIC,KAAK,KACtCT,EAAMU,KAAKP,GAEf,OAAOH,EAwDX,SAAAZ,EAAqBuB,EAAaC,GAC9B,OAAID,EAAIT,OAASU,EACN,IAAIC,OAAOD,EAAMD,EAAIT,QAAUS,EAE/BA,EAIf,SAAAG,EAAyB7C,EAAc8C,EAAgBC,EAAYC,GAC/D,IAAIC,EACJ,OAAQF,GACJ,KAAK,EAAGE,EAAMzB,EAAYsB,EAAErC,OAAQ,MACpC,KAAK,EAAGwC,EAAMxB,EAAYqB,EAAErC,OAAQ,MACpC,KAAK,EAAGwC,EAAMvB,EAAYoB,EAAErC,OAAQ,MACpC,QAASwC,EAAMH,EAAErC,MAAMW,SAAS,IAAIC,cAGxC,OACI6B,OAAQxB,EAAYoB,EAAEK,SACtBC,KAAMzB,EAAamB,EAAEO,OACrBC,QAAS1B,EAAYkB,EAAES,MACvBvD,KAAIA,EACJS,MAAOuC,EAAaC,EAAG,KAAKO,EAAUV,EAAErC,OAAM,IAAMwC,GAI5D,SAAAO,EAAmBC,GACf,OAAOA,EAAEC,iCAtHbnE,EAAA2B,iBAIA3B,EAAA+B,iBAIA/B,EAAAgC,iBAIAhC,EAAAiC,cAIAjC,EAAAkC,cAIAlC,EAAAmC,cAIAnC,EAAAoC,eAIApC,EAAAqC,cAUArC,EAAAoE,kBAAA,SAAkC1C,EAAe2C,GAC7C,OAAUA,EAAK,KAAKlC,EAAYT,EAAEkC,SAAQ,MAAMzB,EAAYT,EAAEkC,QAAUlC,EAAEoC,OAAM,MAAM1B,EAAaV,EAAEoC,OAAM,KAG/G9D,EAAAsE,cAAA,SAA8B7D,EAAc8C,EAAcE,GACtD,OAAOH,EAAgB7C,EAAM8C,EAAG,EAAGE,IAGvCzD,EAAAuE,cAAA,SAA8B9D,EAAc8C,EAAcE,GACtD,OAAOH,EAAgB7C,EAAM8C,EAAG,EAAGE,IAGvCzD,EAAAwE,cAAA,SAA8B/D,EAAc8C,EAAcE,GACtD,OAAOH,EAAgB7C,EAAM8C,EAAG,EAAGE,IAGvCzD,EAAAyE,cAAA,SAA8BhE,EAAc8C,EAAcE,GACtD,IAAIvC,EAAWc,EAAeuB,EAAEmB,MAAK,IAAIvC,EAAYoB,EAAEoB,KAOvD,OALIlB,GAAWF,EAAEmB,KAAO,UAEpBxD,GAAS,KAAK+C,EADQ,WAATV,EAAEmB,KAAqBnB,EAAEoB,KACT,MAI7BhB,OAAQxB,EAAYoB,EAAEK,SACtBC,KAAMzB,EAAamB,EAAEO,OACrBC,QAAS1B,EAAYkB,EAAES,MACvBvD,KAAIA,EACJS,MAAKA,IAIblB,EAAA4E,iBAAA,SAAiCnE,EAAc8C,GAC3C,OACII,OAAQxB,EAAYoB,EAAEK,SACtBC,KAAMzB,EAAamB,EAAEO,OACrBC,QAAS1B,EAAYkB,EAAES,MACvBvD,KAAIA,EACJS,MAAO,KAIflB,EAAA6E,kBAAA,SAAkCpE,EAAc8C,GAC5C,OACII,OAAQxB,EAAYoB,EAAEK,SACtBC,KAAMzB,EAAamB,EAAEO,OACrBC,QAAS1B,EAAYkB,EAAES,MACvBvD,KAAIA,EACJS,MAAO,IAAIqC,EAAErC,MAAK,oDC1FblB,EAAA8E,oBAAsB,MAEtB9E,EAAA+E,mBAAqB,MAErB/E,EAAAgF,8BAAgC,IAChChF,EAAAiF,8BAAgC,IAE7C,SAAYC,GACRA,IAAA,2DACAA,IAAA,6DACAA,IAAA,iEACAA,IAAA,mEACAA,IAAA,gEACAA,IAAA,oEACAA,IAAA,iEACAA,IAAA,yDACAA,IAAA,2DACAA,IAAA,8EACAA,IAAA,kEACAA,IAAA,4CACAA,IAAA,sCACAA,IAAA,6DACAA,IAAA,mEAfJ,CAAYlF,EAAAkF,YAAAlF,EAAAkF,eAkBZ,SAAYC,GACRA,IAAA,2DACAA,IAAA,mEACAA,IAAA,uDACAA,IAAA,yDACAA,IAAA,yDACAA,IAAA,2DACAA,IAAA,iEACAA,IAAA,yDACAA,IAAA,qDACAA,IAAA,2DACAA,IAAA,uDACAA,IAAA,qDACAA,IAAA,qDACAA,IAAA,qDACAA,IAAA,yDACAA,IAAA,yDACAA,IAAA,uDACAA,IAAA,6DACAA,IAAA,iEACAA,IAAA,uDACAA,IAAA,2DACAA,IAAA,6DACAA,IAAA,6DACAA,IAAA,kEACAA,IAAA,yDACAA,IAAA,8DACAA,IAAA,sDACAA,IAAA,sDACAA,IAAA,2DACAA,IAAA,yDACAA,IAAA,2DACAA,IAAA,uDAhCJ,CAAYnF,EAAAmF,mBAAAnF,EAAAmF,sBAmCZ,SAAYC,GACRA,IAAA,qDACAA,IAAA,mDACAA,IAAA,6DACAA,IAAA,6DACAA,IAAA,qDACAA,IAAA,yDACAA,IAAA,mEACAA,IAAA,mEACAA,IAAA,sEACAA,IAAA,sFACAA,IAAA,4EACAA,IAAA,sDACAA,IAAA,gDACAA,IAAA,wFACAA,IAAA,0EAfJ,CAAYpF,EAAAoF,iBAAApF,EAAAoF,oBAkBZ,SAAYC,GACRA,IAAA,wFACAA,IAAA,kFACAA,IAAA,yFACAA,IAAA,6EACAA,IAAA,mFACAA,IAAA,wEACAA,IAAA,0EACAA,IAAA,oFACAA,IAAA,gFACAA,IAAA,6EACAA,IAAA,uGAXJ,CAAYrF,EAAAqF,0BAAArF,EAAAqF,6BAcZ,SAAYC,GACRA,IAAA,+DACAA,IAAA,+DACAA,IAAA,mEACAA,IAAA,qEACAA,IAAA,mEACAA,IAAA,qEACAA,IAAA,6DACAA,IAAA,2EACAA,IAAA,qEACAA,IAAA,yDACAA,IAAA,0EACAA,IAAA,4EACAA,IAAA,0DACAA,IAAA,4EACAA,IAAA,gFAfJ,CAAYtF,EAAAsF,sBAAAtF,EAAAsF,yBAkBCtF,EAAAuF,iCAAmC,GAEhD,SAAYC,GACRA,IAAA,iDAEAA,IAAA,4CACAA,IAAA,oEACAA,IAAA,yEAEAA,IAAA,+CACAA,IAAA,6CACAA,IAAA,kDACAA,IAAA,kDAEAA,IAAA,iEACAA,IAAA,yCAEAA,IAAA,0DACAA,IAAA,kDACAA,IAAA,oDACAA,IAAA,sDAEAA,IAAA,yDACAA,IAAA,yDACAA,IAAA,yDACAA,IAAA,yDACAA,IAAA,2DACAA,IAAA,2DACAA,IAAA,2DACAA,IAAA,6DACAA,IAAA,6DACAA,IAAA,8DACAA,IAAA,gEACAA,IAAA,gEACAA,IAAA,gEACAA,IAAA,gEAEAA,IAAA,gEACAA,IAAA,gEACAA,IAAA,8DACAA,IAAA,6DACAA,IAAA,uDACAA,IAAA,yDACAA,IAAA,oDACAA,IAAA,sDAEAA,IAAA,iDA5CJ,CAAYxF,EAAAwF,eAAAxF,EAAAwF,kBA+CZ,SAAYC,GACRA,IAAA,iDACAA,IAAA,+DACAA,IAAA,yDACAA,IAAA,qEACAA,IAAA,wEACAA,IAAA,qEACAA,IAAA,sEAPJ,CAAYzF,EAAAyF,gBAAAzF,EAAAyF,mBAUCzF,EAAA0F,kBAAoB,yDCvKjC1F,EAAA2F,gBAAA,SAAgCC,GAC5B,IASMC,EATFC,IASED,EAAM,WAGRE,QAAUF,OAAMA,EAAExB,MAAK,WACvB2B,WACID,QAAUF,OAAMA,EAAExB,MAAK,aAA2B4B,OAAM,aAExDF,QAAUF,OAAMA,EAAExB,MAAK,eAA6B4B,OAAM,YAE1DF,QAAUF,OAAMA,EAAExB,MAAK,iBAA4B4B,OAAM,YAEzDF,QAAUF,OAAMA,EAAExB,MAAK,kBAAgC4B,OAAM,aAE7DF,QAAUF,OAAMA,EAAExB,MAAK,mBAAiC4B,OAAM,cAE9DF,QAAUF,OAAMA,EAAExB,MAAK,kBAAgC4B,OAAM,iBAtB/DC,EA2BV,SAAkCN,GAC9B,IAAMC,EAAM,aAEZ,GAAKD,EAAGO,YAAR,CAEA,IAAIH,IACAD,QAAUF,OAAMA,EAAExB,MAAK,aAA2B4B,OAAM,aAY5D,OATIL,EAAGQ,gBACHJ,EAAS9C,MACL6C,QAAUF,OAAMA,EAAExB,MAAK,gBAAwB4B,OAAM,aAEzDD,EAAS9C,MACL6C,QAAUF,OAAMA,EAAExB,MAAK,iBAA4B4B,OAAM,eAK7DF,QAAUF,OAAMA,EAAExB,MAAK,YACvB2B,SAAQA,IA/CEK,CAAyBT,GAGvC,OAFIM,GAAOJ,EAAQ5C,KAAKgD,GAEjBJ,iDCLX,IAAAQ,EAAAxG,EAAA,GAEAE,EAAAuG,gCAAA,SAAgDX,GAC5C,OACIY,KACIX,OAAM,aACNxB,MAAK,YAEToC,UAOR,SAA2Bb,GACvB,IAAIlE,GACA2C,MAAK,aACL4B,OAAM,WAGJS,EAAId,EAAGe,eACb,OAAKD,GAELhF,EAAEkF,OACEN,EAAG9B,cAAc,KAAMkC,EAAEG,IAAI,GAC7BP,EAAG/B,cAAc,sBAAuBmC,EAAEI,qBAAqB,GAC/DR,EAAG/B,cAAc,sBAAuBmC,EAAEK,qBAAqB,GAC/DT,EAAG9B,cAAc,0BAA2BkC,EAAEM,SAASC,gBACvDX,EAAG9B,cAAc,gBAAiBkC,EAAEM,SAASE,MAAM,GACnDZ,EAAG9B,cAAc,QAASkC,EAAES,OAC5Bb,EAAG9B,cAAc,kBAAmBkC,EAAEU,iBACtCd,EAAG9B,cAAc,2BAA4BkC,EAAEW,UAAUJ,gBACzDX,EAAG9B,cAAc,iBAAkBkC,EAAEW,UAAUH,MAAM,GACrDZ,EAAG9B,cAAc,qCAAsCkC,EAAEY,oBAAoBL,gBAC7EX,EAAG9B,cAAc,2BAA4BkC,EAAEY,oBAAoBJ,MAAM,GACzEZ,EAAG9B,cAAc,kCAAmCkC,EAAEa,iBAAiBN,gBACvEX,EAAG9B,cAAc,wBAAyBkC,EAAEa,iBAAiBL,MAAM,GACnEZ,EAAG9B,cAAc,8BAA+BkC,EAAEc,aAAaP,gBAC/DX,EAAG9B,cAAc,oBAAqBkC,EAAEc,aAAaN,MAAM,GAC3DZ,EAAG9B,cAAc,yCAA0CkC,EAAEe,wBAAwBR,gBACrFX,EAAG9B,cAAc,+BAAgCkC,EAAEe,wBAAwBP,MAAM,GACjFZ,EAAG9B,cAAc,qCAAsCkC,EAAEgB,oBAAoBT,gBAC7EX,EAAG9B,cAAc,2BAA4BkC,EAAEgB,oBAAoBR,MAAM,IAGtExF,GAxBQA,EAdAiG,CAAkB/B,GAC7BgC,aAwCR,SAA8BhC,GAC1B,IAAMc,EAAId,EAAGiC,kBACb,OAAKnB,GAGDrC,MAAK,gBACL4B,OAAM,UACNW,OACIN,EAAG9B,cAAc,YAAakC,EAAEoB,WAChCxB,EAAG/B,cAAc,eAAgBmC,EAAEqB,cAAc,GACjDzB,EAAG/B,cAAc,eAAgBmC,EAAEsB,cAAc,GACjD1B,EAAG9B,cAAc,WAAYkC,EAAEuB,UAC/B3B,EAAG9B,cAAc,gBAAiBkC,EAAEwB,eAAe,GACnD5B,EAAGzB,kBAAkB,gBAAiB6B,EAAEyB,eACxC7B,EAAG1B,iBAAiB,iBAAkB8B,EAAE0B,gBACxC9B,EAAG/B,cAAc,QAASmC,EAAES,OAC5Bb,EAAG/B,cAAc,UAAWmC,EAAE2B,SAAS,UAdvC,EA1CUC,CAAqB1C,GACnC2C,cA6DR,SAAsC3C,GAClC,IAAMc,EAAId,EAAG4C,2BACb,OAAK9B,GAGDrC,MAAK,iBACL4B,OAAM,UACNwC,OAAQ/B,EAAEE,MAAM7D,IAAI,SAACmB,EAAGhE,GAAM,OAC1BmE,MAAO,IAAInE,EAAC,MAAMgE,EAAEwE,KAAKxH,MAAK,IAC9B0F,OACIN,EAAG9B,cAAc,SAAUN,EAAEyE,QAC7BrC,EAAG9B,cAAc,OAAQN,EAAEgD,MAAM,GACjCZ,EAAGzB,kBAAkB,OAAQX,EAAEwE,MAC/BpC,EAAG1B,iBAAiB,UAAWV,EAAE0E,mBAXrC,EA/DWC,CAA6BjD,mDCXpD,IAAAkD,EAAAhJ,EAAA,GACAwG,EAAAxG,EAAA,GAEAE,EAAA+I,wBAAA,SAAwCnD,GACpC,OACIY,KACIX,OAAM,UACNxB,MAAK,WAET2E,UASR,SAA2BpD,GACvB,IAAIlE,GACA2C,MAAK,aACL4B,OAAM,WAGJS,EAAId,EAAGqD,eACb,OAAKvC,GAELhF,EAAEkF,OACEN,EAAG/B,cAAc,UAAWmC,EAAEwC,SAC9B5C,EAAG/B,cAAc,SAAUmC,EAAEyC,QAC7B7C,EAAG/B,cAAc,OAAQmC,EAAE0C,MAC3B9C,EAAG/B,cAAc,SAAUmC,EAAE2C,QAC7B/C,EAAG/B,cAAc,YAAamC,EAAE4C,WAChChD,EAAG/B,cAAc,aAAcmC,EAAE6C,YACjCjD,EAAG/B,cAAc,aAAcmC,EAAE8C,YACjClD,EAAG/B,cAAc,OAAQmC,EAAE+C,MAC3BnD,EAAG/B,cAAc,OAAQmC,EAAEgD,MAC3BpD,EAAG/B,cAAc,SAAUmC,EAAEiD,QAC7BrD,EAAG/B,cAAc,OAAQmC,EAAEkD,MAC3BtD,EAAG/B,cAAc,OAAQmC,EAAEmD,MAC3BvD,EAAG/B,cAAc,WAAYmC,EAAEoD,UAC/BxD,EAAG/B,cAAc,SAAUmC,EAAEqD,QAC7BzD,EAAG1B,iBAAiB,QAAS8B,EAAEsD,OAC/B1D,EAAG/B,cAAc,UAAWmC,EAAEuD,SAC9B3D,EAAG/B,cAAc,YAAamC,EAAEwD,WAChC5D,EAAG1B,iBAAiB,SAAU8B,EAAEyD,QAChC7D,EAAG9B,cAAc,WAAYkC,EAAE0D,WAG5B1I,GAxBQA,EAhBA2I,CAAkBzE,GAC7B0E,YA0CR,SAA6B1E,GACzB,IAAIlE,GACA2C,MAAK,eACL4B,OAAM,UAGJS,EAAId,EAAG2E,iBACb,OAAK7D,GAELhF,EAAEkF,OACEN,EAAG9B,cAAc,eAAgBkC,IAG9BhF,GANQA,EAjDE8I,CAAoB5E,GACjC6E,WAyDR,SAA4B7E,GACxB,IAAIlE,GACA2C,MAAK,iBACL4B,OAAM,UAGJS,EAAId,EAAG8E,gBACb,OAAKhE,GAELhF,EAAEkF,OACEN,EAAG/B,cAAc,UAAWmC,EAAEiE,SAC9BrE,EAAG/B,cAAc,mBAAoBmC,EAAEkE,kBAAkB,GACzDtE,EAAG9B,cAAc,gBAAiBkC,EAAEmE,eACpCvE,EAAG9B,cAAc,uBAAwBkC,EAAEoE,sBAC3CxE,EAAG9B,cAAc,kBAAmBkC,EAAEqE,iBAAiB,GACvDzE,EAAG/B,cAAc,uBAAwBmC,EAAEsE,sBAAsB,GACjE1E,EAAG/B,cAAc,kBAAmBmC,EAAEuE,kBAGnCvJ,GAZQA,EAhECwJ,CAAmBtF,GAC/BuF,eA8ER,SAAgCvF,GAC5B,IAAIlE,GACA2C,MAAK,kBACL4B,OAAM,WAGJS,EAAId,EAAGwF,oBACb,IAAK1E,EAAG,OAAOhF,EAEf,OAAQgF,EAAE2E,MAAMnK,OACZ,KAAK4H,EAAE9D,8BACHtD,EAAE2C,OAAS,YAavB,SAAoC3C,EAAoBgF,GACpDhF,EAAE+G,SACEpE,MAAO,kBACPuC,OACIN,EAAG/B,cAAc,QAASmC,EAAE2E,OAC5B/E,EAAGhC,cAAc,qBAAsBoC,EAAE4E,oBAAoB,GAC7DhF,EAAGhC,cAAc,qBAAsBoC,EAAE6E,oBAAoB,GAC7DjF,EAAG9B,cAAc,aAAckC,EAAE8E,YAAY,GAC7ClF,EAAG9B,cAAc,wBAAyBkC,EAAE+E,uBAAuB,GACnEnF,EAAG9B,cAAc,0BAA2BkC,EAAEgF,yBAAyB,GACvEpF,EAAG9B,cAAc,sBAAuBkC,EAAEiF,qBAC1CrF,EAAG9B,cAAc,aAAckC,EAAEkF,YACjCtF,EAAG9B,cAAc,aAAckC,EAAEmF,eAGrCxH,MAAO,sBACPuC,OACIN,EAAG9B,cAAc,YAAakC,EAAEoF,WAChCxF,EAAG9B,cAAc,mBAAoBkC,EAAEqF,kBAAkB,GACzDzF,EAAG9B,cAAc,gBAAiBkC,EAAEsF,eAAe,GACnD1F,EAAG/B,cAAc,8BAA+BmC,EAAEuF,6BAA6B,GAC/E3F,EAAG/B,cAAc,8BAA+BmC,EAAEwF,6BAA6B,GAC/E5F,EAAG/B,cAAc,oBAAqBmC,EAAEyF,mBAAmB,GAC3D7F,EAAG/B,cAAc,oBAAqBmC,EAAE0F,mBAAmB,GAC3D9F,EAAG/B,cAAc,wBAAyBmC,EAAE2F,uBAAuB,GACnE/F,EAAG/B,cAAc,wBAAyBmC,EAAE4F,uBAAuB,GACnEhG,EAAG9B,cAAc,oBAAqBkC,EAAE6F,mBAAmB,GAC3DjG,EAAG9B,cAAc,cAAekC,EAAE8F,aAAa,GAC/ClG,EAAG9B,cAAc,gBAAiBkC,EAAE+F,eAAe,GACnDnG,EAAG9B,cAAc,WAAYkC,EAAEgG,UAC/BpG,EAAG/B,cAAc,YAAamC,EAAEiG,WAChCrG,EAAG/B,cAAc,qBAAsBmC,EAAEkG,oBACzCtG,EAAG9B,cAAc,qBAAsBkC,EAAEmG,oBAAoB,GAC7DvG,EAAG9B,cAAc,oBAAqBkC,EAAEoG,mBAAmB,GAC3DxG,EAAG9B,cAAc,oBAAqBkC,EAAEqG,mBAAmB,GAC3DzG,EAAG9B,cAAc,mBAAoBkC,EAAEsG,kBAAkB,GACzD1G,EAAG9B,cAAc,cAAekC,EAAEuG,aAClC3G,EAAG9B,cAAc,sBAAuBkC,EAAEwG,qBAAqB,MAjD/DC,CAA2BzL,EAA4BgF,GACvD,MAEJ,KAAKoC,EAAE7D,8BACHvD,EAAE2C,OAAS,YAkDvB,SAAoC3C,EAAoBgF,GACpDhF,EAAE+G,SACEpE,MAAO,kBACPuC,OACIN,EAAG/B,cAAc,QAASmC,EAAE2E,OAC5B/E,EAAGhC,cAAc,qBAAsBoC,EAAE4E,oBAAoB,GAC7DhF,EAAGhC,cAAc,qBAAsBoC,EAAE6E,oBAAoB,GAC7DjF,EAAG9B,cAAc,aAAckC,EAAE8E,YAAY,GAC7ClF,EAAG9B,cAAc,wBAAyBkC,EAAE+E,uBAAuB,GACnEnF,EAAG9B,cAAc,0BAA2BkC,EAAEgF,yBAAyB,GACvEpF,EAAG9B,cAAc,sBAAuBkC,EAAEiF,qBAC1CrF,EAAG9B,cAAc,aAAckC,EAAEkF,eAGrCvH,MAAO,sBACPuC,OACIN,EAAG7B,cAAc,YAAaiC,EAAEoF,WAChCxF,EAAG9B,cAAc,mBAAoBkC,EAAEqF,kBAAkB,GACzDzF,EAAG9B,cAAc,gBAAiBkC,EAAEsF,eAAe,GACnD1F,EAAG/B,cAAc,8BAA+BmC,EAAEuF,6BAA6B,GAC/E3F,EAAG/B,cAAc,8BAA+BmC,EAAEwF,6BAA6B,GAC/E5F,EAAG/B,cAAc,oBAAqBmC,EAAEyF,mBAAmB,GAC3D7F,EAAG/B,cAAc,oBAAqBmC,EAAE0F,mBAAmB,GAC3D9F,EAAG/B,cAAc,wBAAyBmC,EAAE2F,uBAAuB,GACnE/F,EAAG/B,cAAc,wBAAyBmC,EAAE4F,uBAAuB,GACnEhG,EAAG9B,cAAc,oBAAqBkC,EAAE6F,mBAAmB,GAC3DjG,EAAG9B,cAAc,cAAekC,EAAE8F,aAAa,GAC/ClG,EAAG9B,cAAc,gBAAiBkC,EAAE+F,eAAe,GACnDnG,EAAG9B,cAAc,WAAYkC,EAAEgG,UAC/BpG,EAAG/B,cAAc,YAAamC,EAAEiG,WAChCrG,EAAG/B,cAAc,qBAAsBmC,EAAEkG,oBACzCtG,EAAG7B,cAAc,qBAAsBiC,EAAEmG,oBAAoB,GAC7DvG,EAAG7B,cAAc,oBAAqBiC,EAAEoG,mBAAmB,GAC3DxG,EAAG7B,cAAc,oBAAqBiC,EAAEqG,mBAAmB,GAC3DzG,EAAG7B,cAAc,mBAAoBiC,EAAEsG,kBAAkB,GACzD1G,EAAG9B,cAAc,cAAekC,EAAEuG,aAClC3G,EAAG9B,cAAc,sBAAuBkC,EAAEwG,qBAAqB,MArF/DE,CAA2B1L,EAA4BgF,GAI/D,OAAOhF,EAnGa2L,CAAuBzH,GACvC0H,gBAwLR,SAAiC1H,GAC7B,IAAIlE,GACA2C,MAAK,mBACL4B,OAAM,YAGJS,EAAId,EAAG2H,qBACb,OAAK7G,GAELhF,EAAE+G,OAAS/B,EAAEE,MAAM7D,IAAI,SAACmB,EAAGhE,GAAM,OAC7BmE,MAAO,IAAInE,EAAC,MAAK4I,EAAExD,oBAAoBpF,IAAM,IAC7C0G,OACIN,EAAG9B,cAAc,iBAAkBN,EAAE+C,gBACrCX,EAAG9B,cAAc,OAAQN,EAAEgD,MAAM,OAIlCxF,GAVQA,EA/LM8L,CAAwB5H,GACzC6H,eA2MR,SAAgC7H,GAC5B,IAAIlE,GACA2C,MAAK,kBACL4B,OAAM,YAGJS,EAAId,EAAG8H,oBACb,OAAKhH,GAELhF,EAAE+G,OAAS/B,EAAEE,MAAM7D,IAAI,SAACmB,EAAGhE,GAAM,OAC7BmE,MAAO,IAAInE,EAAC,MAAMgE,EAAEwE,KAAKxH,MAAK,IAC9B0F,OACIN,EAAGzB,kBAAkB,OAAQX,EAAEwE,MAC/BpC,EAAG9B,cAAc,cAAeN,EAAEyJ,aAAa,GAC/CrH,EAAG9B,cAAc,iBAAkBN,EAAE+C,gBACrCX,EAAG9B,cAAc,gBAAiBN,EAAE0J,eAAe,GACnDtH,EAAG9B,cAAc,mBAAoBN,EAAE2J,kBACvCvH,EAAG9B,cAAc,uBAAwBN,EAAE4J,sBAC3CxH,EAAG9B,cAAc,uBAAwBN,EAAE6J,sBAC3CzH,EAAG/B,cAAc,sBAAuBL,EAAE8J,qBAAqB,GAC/D1H,EAAG/B,cAAc,sBAAuBL,EAAE+J,qBAAqB,GAC/D3H,EAAG9B,cAAc,kBAAmBN,EAAE+G,qBAIvCvJ,GAlBQA,EAlNKwM,CAAuBtI,mDCf/C,IAAAuI,EAAArO,EAAA,GACAsO,EAAAtO,EAAA,GAEAE,EAAAqO,iBAAA,SAAiCzI,EAAaC,GAC1C,OAAQA,GACJ,cAAuB,OAAOsI,EAAApF,wBAAwBnD,GACtD,iBAA0B,OAAOwI,EAAA7H,gCAAgCX,GACjE,QAAS,OAASY,KAAOX,OAAM,WAAqBxB,MAAK,qXCAjE,IAAAiK,EAAA,SAAAC,GACI,SAAAD,EACWE,EACA7K,EACAE,GAHX,IAAA4K,EAKIF,EAAAlO,KAAAqO,KAAMF,IAAKE,YAJJD,EAAAD,OACAC,EAAA9K,SACA8K,EAAA5K,SAIf,OAR6B8K,EAAAL,EAAAC,GAQ7BD,EARA,CAA6BM,OAAhB5O,EAAAsO,wDCRbtO,EAAA6O,iBAAA,SAAiCC,EAAkBC,QAAA,IAAAA,MAAA,GAC/C,IAAM9N,EAAI6N,EAAWC,EACrB,OAAS,GAAL9N,EACO,EAEA8N,EAAQ9N,iDCHvB,IAAA+N,EAAAlP,EAAA,GAaA,SAAAmP,EAA4BzO,EAAqBiB,GAC7C,OACImC,QAASnC,EAAGqC,MAAO,EAAGE,KAAMxD,EAAE0O,QAAQzN,EAAG,GAAIP,MAAOV,EAAE2O,MAAM1N,IAIpE,SAAA2N,EAA4B5O,EAAqBiB,GAC7C,OACImC,QAASnC,EAAGqC,MAAO,EAAGE,KAAMxD,EAAE0O,QAAQzN,EAAG,GAAIP,MAAOV,EAAE6O,MAAM5N,IAIpE,SAAA6N,EAA4B9O,EAAqBiB,GAC7C,OACImC,QAASnC,EAAGqC,MAAO,EAAGE,KAAMxD,EAAE0O,QAAQzN,EAAG,GAAIP,MAAOV,EAAE+O,MAAM9N,IAIpE,SAAA+N,EAA4BhP,EAAqBiB,GAC7C,IAAMkD,EAAMnE,EAAE+O,MAAM9N,GACdiD,EAAOlE,EAAE+O,MAAM9N,EAAI,GAEzB,OACImC,QAASnC,EAAGqC,MAAO,EAAGE,KAAMxD,EAAE0O,QAAQzN,EAAG,GAAIkD,IAAGA,EAAED,KAAIA,GAU9D,SAAA+K,EAAmCjP,EAAqBiB,GACpD,OACImC,QAASnC,EAAGqC,MAAO,EAAGE,KAAMxD,EAAE0O,QAAQzN,EAAG,GAAIP,MAAOV,EAAE6O,MAAM5N,IAIpE,SAAAiO,EAAmClP,EAAqBiB,GACpD,OACImC,QAASnC,EAAGqC,MAAO,EAAGE,KAAMxD,EAAE0O,QAAQzN,EAAG,GAAIP,MAAOV,EAAE+O,MAAM9N,IAIpE,SAAAkO,EAA4CnP,EAAqBiB,EAAW+B,GACxE,OACII,QAASnC,EAAGqC,MAAON,EAAIQ,KAAMxD,EAAE0O,QAAQzN,EAAG+B,IAIlD,SAAAoM,EAA8CpP,EAAqBiB,EAAW+B,GAC1E,IAAMQ,EAAOxD,EAAE0O,QAAQzN,EAAG+B,GAG1B,OACII,QAASnC,EAAGqC,MAAON,EAAIQ,KAAIA,EAAE9C,MAHnB2O,OAAOC,aAAaC,MAAM,KAAMnN,MAAMC,KAAKmB,GAAMgM,OAAO,SAAA9L,GAAK,OAAK,GAALA,MAO/E,SAAA+L,EAA8CzP,EAAqBiB,GAC/D,IAEIuB,EAFAV,KACA4N,EAAMzO,EAGV,GACIuB,EAAIxC,EAAE2O,MAAMe,KACZ5N,EAAMY,KAAKF,SACD,GAALA,GACT,IAAM9B,EAAQ2O,OAAOC,aAAaC,MAAM,KAAMzN,EAAM6N,MAAM,EAAG7N,EAAMI,OAAS,IAE5E,OACIkB,QAASnC,EAAGqC,MAAOoM,EAAMzO,EAAGuC,KAAMoM,WAAWvN,KAAKP,GAAQpB,MAAKA,GA6YvE,SAAAmP,EAAuC7P,EAAqBiB,GACxD,IAAIyO,EAAMzO,EAEJwF,EAAiBqI,EAAY9O,EAAG0P,GAGhChJ,EAAOoI,EAAY9O,EAFzB0P,GAAOjJ,EAAenD,OAKtB,OACIF,QAASnC,EAAGqC,OAHhBoM,GAAOhJ,EAAKpD,OAGiBrC,EACzBwF,eAAcA,EACdC,KAAIA,GAjeZlH,EAAAiP,cAMAjP,EAAAoP,cAMApP,EAAAsP,cAMAtP,EAAAwP,cASAxP,EAAAsQ,gBAAA,SAAmC9P,EAAqBiB,GACpD,OACImC,QAASnC,EAAGqC,MAAO,EAAGE,KAAMxD,EAAE0O,QAAQzN,EAAG,GAAIP,MAAOV,EAAE2O,MAAM1N,KAIpEzB,EAAAyP,kBAMAzP,EAAA0P,kBAMA1P,EAAA2P,8BAMA3P,EAAA4P,gCASA5P,EAAAiQ,gCAgBAjQ,EAAAuQ,uBAAA,SACI/P,EACAiB,EACA+O,EACAC,GAIA,IAFA,IAAI7J,KACAsJ,EAAMzO,EACDvB,EAAI,EAAGA,EAAIuQ,EAAOvQ,IAAK,CAC5B,IAAMwB,EAAI8O,EAAOhQ,EAAG0P,GACpBtJ,EAAM1D,KAAKxB,GACXwO,GAAOxO,EAAEoC,MAGb,OAASF,QAASnC,EAAGqC,MAAOoM,EAAMzO,EAAGmF,MAAKA,IAO9C5G,EAAA0Q,mBAAA,SAAmClQ,EAAqBiB,GACpD,IAAIyO,EAAMzO,EAEJyH,EAAUkG,EAAY5O,EAAG0P,GAGzB/G,EAASiG,EAAY5O,EAF3B0P,GAAOhH,EAAQpF,OAKTsF,EAAOgG,EAAY5O,EAFzB0P,GAAO/G,EAAOrF,OAKRuF,EAAS+F,EAAY5O,EAF3B0P,GAAO9G,EAAKtF,OAKNwF,EAAY8F,EAAY5O,EAF9B0P,GAAO7G,EAAOvF,OAKRyF,EAAa6F,EAAY5O,EAF/B0P,GAAO5G,EAAUxF,OAKX0F,EAAa4F,EAAY5O,EAF/B0P,GAAO3G,EAAWzF,OAKZ2F,EAAO2F,EAAY5O,EAFzB0P,GAAO1G,EAAW1F,OAKZ4F,EAAO0F,EAAY5O,EAFzB0P,GAAOzG,EAAK3F,OAKN6F,EAASyF,EAAY5O,EAF3B0P,GAAOxG,EAAK5F,OAKN8F,EAAOwF,EAAY5O,EAFzB0P,GAAOvG,EAAO7F,OAKR+F,EAAOuF,EAAY5O,EAFzB0P,GAAOtG,EAAK9F,OAKNgG,EAAWsF,EAAY5O,EAF7B0P,GAAOrG,EAAK/F,OAKNiG,EAASqF,EAAY5O,EAF3B0P,GAAOpG,EAAShG,OAKVkG,EAAQ2F,EAA4BnP,EAF1C0P,GAAOnG,EAAOjG,MAEoC,GAG5CmG,EAAUmF,EAAY5O,EAF5B0P,GAAOlG,EAAMlG,OAKPoG,EAAYkF,EAAY5O,EAF9B0P,GAAOjG,EAAQnG,OAKTqG,EAASwF,EAA4BnP,EAF3C0P,GAAOhG,EAAUpG,MAEkC,IAG7CsG,EAAWkF,EAAY9O,EAF7B0P,GAAO/F,EAAOrG,OAKd,OACIF,QAASnC,EAAGqC,OAHhBoM,GAAO9F,EAAStG,OAGarC,EACzByH,QAAOA,EACPC,OAAMA,EACNC,KAAIA,EACJC,OAAMA,EACNC,UAASA,EACTC,WAAUA,EACVC,WAAUA,EACVC,KAAIA,EACJC,KAAIA,EACJC,OAAMA,EACNC,KAAIA,EACJC,KAAIA,EACJC,SAAQA,EACRC,OAAMA,EACNC,MAAKA,EACLC,QAAOA,EACPC,UAASA,EACTC,OAAMA,EACNC,SAAQA,IAIhBpK,EAAA2Q,oBAAA,SAAoCnQ,EAAqBiB,GACrD,IAAIyO,EAAMzO,EAEJkJ,EAAUyE,EAAY5O,EAAG0P,GAGzBtF,EAAmBwE,EAAY5O,EAFrC0P,GAAOvF,EAAQ7G,OAKT+G,EAAgByE,EAAY9O,EAFlC0P,GAAOtF,EAAiB9G,OAKlBgH,EAAuBwE,EAAY9O,EAFzC0P,GAAOrF,EAAc/G,OAKfiH,EAAkBuE,EAAY9O,EAFpC0P,GAAOpF,EAAqBhH,OAKtBkH,EAAuBoE,EAAY5O,EAFzC0P,GAAOnF,EAAgBjH,OAKjBmH,EAAkBwE,EAA6BjP,EAFrD0P,GAAOlF,EAAqBlH,OAK5B,OACIF,QAASnC,EAAGqC,OAHhBoM,GAAOjF,EAAgBnH,OAGMrC,EACzBkJ,QAAOA,EACPC,iBAAgBA,EAChBC,cAAaA,EACbC,qBAAoBA,EACpBC,gBAAeA,EACfC,qBAAoBA,EACpBC,gBAAeA,IAIvBjL,EAAA4Q,0BAAA,SAA0CpQ,EAAqBiB,GAC3D,IAAIyO,EAAMzO,EAEJ4J,EAAQ+D,EAAY5O,EAAG0P,GAGvB5E,EAAqB2D,EAAYzO,EAFvC0P,GAAO7E,EAAMvH,OAKPyH,EAAqB0D,EAAYzO,EAFvC0P,GAAO5E,EAAmBxH,OAKpB0H,EAAa8D,EAAY9O,EAF/B0P,GAAO3E,EAAmBzH,OAKpB2H,EAAwB6D,EAAY9O,EAF1C0P,GAAO1E,EAAW1H,OAKZ4H,EAA0B4D,EAAY9O,EAF5C0P,GAAOzE,EAAsB3H,OAKvB6H,EAAsB2D,EAAY9O,EAFxC0P,GAAOxE,EAAwB5H,OAKzB8H,EAAa0D,EAAY9O,EAF/B0P,GAAOvE,EAAoB7H,OAKrB+H,EAAayD,EAAY9O,EAF/B0P,GAAOtE,EAAW9H,OAKZgI,EAAYwD,EAAY9O,EAF9B0P,GAAOrE,EAAW/H,OAKZiI,EAAmBuD,EAAY9O,EAFrC0P,GAAOpE,EAAUhI,OAKXkI,EAAgBsD,EAAY9O,EAFlC0P,GAAOnE,EAAiBjI,OAKlBmI,EAA8BmD,EAAY5O,EAFhD0P,GAAOlE,EAAclI,OAKfoI,EAA8BkD,EAAY5O,EAFhD0P,GAAOjE,EAA4BnI,OAK7BqI,EAAoBiD,EAAY5O,EAFtC0P,GAAOhE,EAA4BpI,OAK7BsI,EAAoBgD,EAAY5O,EAFtC0P,GAAO/D,EAAkBrI,OAKnBuI,EAAwB+C,EAAY5O,EAF1C0P,GAAO9D,EAAkBtI,OAKnBwI,EAAwB8C,EAAY5O,EAF1C0P,GAAO7D,EAAsBvI,OAKvByI,EAAoB+C,EAAY9O,EAFtC0P,GAAO5D,EAAsBxI,OAKvB0I,EAAc8C,EAAY9O,EAFhC0P,GAAO3D,EAAkBzI,OAKnB2I,EAAgB6C,EAAY9O,EAFlC0P,GAAO1D,EAAY1I,OAKb4I,EAAW4C,EAAY9O,EAF7B0P,GAAOzD,EAAc3I,OAKf6I,EAAY8C,EAAkCjP,EAFpD0P,GAAOxD,EAAS5I,OAKV8I,EAAqB6C,EAA2CjP,EAFtE0P,GAAOvD,EAAU7I,OAKX+I,EAAqByC,EAAY9O,EAFvC0P,GAAOtD,EAAmB9I,OAKpBgJ,EAAoBwC,EAAY9O,EAFtC0P,GAAOrD,EAAmB/I,OAKpBiJ,EAAoBuC,EAAY9O,EAFtC0P,GAAOpD,EAAkBhJ,OAKnBkJ,EAAmBsC,EAAY9O,EAFrC0P,GAAOnD,EAAkBjJ,OAKnBmJ,EAAcqC,EAAY9O,EAFhC0P,GAAOlD,EAAiBlJ,OAKlBoJ,EAAsBoC,EAAY9O,EAFxC0P,GAAOjD,EAAYnJ,OAKnB,OACIF,QAASnC,EAAGqC,OAHhBoM,GAAOhD,EAAoBpJ,OAGErC,EACzB4J,MAAKA,EACLC,mBAAkBA,EAClBC,mBAAkBA,EAClBC,WAAUA,EACVC,sBAAqBA,EACrBC,wBAAuBA,EACvBC,oBAAmBA,EACnBC,WAAUA,EACVC,WAAUA,EACVC,UAASA,EACTC,iBAAgBA,EAChBC,cAAaA,EACbC,4BAA2BA,EAC3BC,4BAA2BA,EAC3BC,kBAAiBA,EACjBC,kBAAiBA,EACjBC,sBAAqBA,EACrBC,sBAAqBA,EACrBC,kBAAiBA,EACjBC,YAAWA,EACXC,cAAaA,EACbC,SAAQA,EACRC,UAASA,EACTC,mBAAkBA,EAClBC,mBAAkBA,EAClBC,kBAAiBA,EACjBC,kBAAiBA,EACjBC,iBAAgBA,EAChBC,YAAWA,EACXC,oBAAmBA,IAI3BlN,EAAA6Q,0BAAA,SAA0CrQ,EAAqBiB,GAC3D,IAAIyO,EAAMzO,EAEJ4J,EAAQ+D,EAAY5O,EAAG0P,GAGvB5E,EAAqB2D,EAAYzO,EAFvC0P,GAAO7E,EAAMvH,OAKPyH,EAAqB0D,EAAYzO,EAFvC0P,GAAO5E,EAAmBxH,OAKpB0H,EAAa8D,EAAY9O,EAF/B0P,GAAO3E,EAAmBzH,OAKpB2H,EAAwB6D,EAAY9O,EAF1C0P,GAAO1E,EAAW1H,OAKZ4H,EAA0B4D,EAAY9O,EAF5C0P,GAAOzE,EAAsB3H,OAKvB6H,EAAsB2D,EAAY9O,EAFxC0P,GAAOxE,EAAwB5H,OAKzB8H,EAAa0D,EAAY9O,EAF/B0P,GAAOvE,EAAoB7H,OAKrBgI,EAAY0D,EAAYhP,EAF9B0P,GAAOtE,EAAW9H,OAKZiI,EAAmBuD,EAAY9O,EAFrC0P,GAAOpE,EAAUhI,OAKXkI,EAAgBsD,EAAY9O,EAFlC0P,GAAOnE,EAAiBjI,OAKlBmI,EAA8BmD,EAAY5O,EAFhD0P,GAAOlE,EAAclI,OAKfoI,EAA8BkD,EAAY5O,EAFhD0P,GAAOjE,EAA4BnI,OAK7BqI,EAAoBiD,EAAY5O,EAFtC0P,GAAOhE,EAA4BpI,OAK7BsI,EAAoBgD,EAAY5O,EAFtC0P,GAAO/D,EAAkBrI,OAKnBuI,EAAwB+C,EAAY5O,EAF1C0P,GAAO9D,EAAkBtI,OAKnBwI,EAAwB8C,EAAY5O,EAF1C0P,GAAO7D,EAAsBvI,OAKvByI,EAAoB+C,EAAY9O,EAFtC0P,GAAO5D,EAAsBxI,OAKvB0I,EAAc8C,EAAY9O,EAFhC0P,GAAO3D,EAAkBzI,OAKnB2I,EAAgB6C,EAAY9O,EAFlC0P,GAAO1D,EAAY1I,OAKb4I,EAAW4C,EAAY9O,EAF7B0P,GAAOzD,EAAc3I,OAKf6I,EAAY8C,EAAkCjP,EAFpD0P,GAAOxD,EAAS5I,OAKV8I,EAAqB6C,EAA2CjP,EAFtE0P,GAAOvD,EAAU7I,OAKX+I,EAAqB2C,EAAYhP,EAFvC0P,GAAOtD,EAAmB9I,OAKpBgJ,EAAoB0C,EAAYhP,EAFtC0P,GAAOrD,EAAmB/I,OAKpBiJ,EAAoByC,EAAYhP,EAFtC0P,GAAOpD,EAAkBhJ,OAKnBkJ,EAAmBwC,EAAYhP,EAFrC0P,GAAOnD,EAAkBjJ,OAKnBmJ,EAAcqC,EAAY9O,EAFhC0P,GAAOlD,EAAiBlJ,OAKlBoJ,EAAsBoC,EAAY9O,EAFxC0P,GAAOjD,EAAYnJ,OAKnB,OACIF,QAASnC,EAAGqC,OAHhBoM,GAAOhD,EAAoBpJ,OAGErC,EACzB4J,MAAKA,EACLC,mBAAkBA,EAClBC,mBAAkBA,EAClBC,WAAUA,EACVC,sBAAqBA,EACrBC,wBAAuBA,EACvBC,oBAAmBA,EACnBC,WAAUA,EACVE,UAASA,EACTC,iBAAgBA,EAChBC,cAAaA,EACbC,4BAA2BA,EAC3BC,4BAA2BA,EAC3BC,kBAAiBA,EACjBC,kBAAiBA,EACjBC,sBAAqBA,EACrBC,sBAAqBA,EACrBC,kBAAiBA,EACjBC,YAAWA,EACXC,cAAaA,EACbC,SAAQA,EACRC,UAASA,EACTC,mBAAkBA,EAClBC,mBAAkBA,EAClBC,kBAAiBA,EACjBC,kBAAiBA,EACjBC,iBAAgBA,EAChBC,YAAWA,EACXC,oBAAmBA,IAI3BlN,EAAAqQ,yBAgBArQ,EAAA8Q,uBAAA,SAAuCtQ,EAAqBiB,GACxD,IAAIyO,EAAMzO,EAEJiH,EAAOkH,EAA8BpP,EAAG0P,EAAK,GAG7CvC,EAAc2B,EAAY9O,EAFhC0P,GAAOxH,EAAK5E,OAKNmD,EAAiBqI,EAAY9O,EAFnC0P,GAAOvC,EAAY7J,OAKb8J,EAAgB0B,EAAY9O,EAFlC0P,GAAOjJ,EAAenD,OAKhB+J,EAAmByB,EAAY9O,EAFrC0P,GAAOtC,EAAc9J,OAKfgK,EAAuBwB,EAAY9O,EAFzC0P,GAAOrC,EAAiB/J,OAKlBiK,EAAuBuB,EAAY9O,EAFzC0P,GAAOpC,EAAqBhK,OAKtBkK,EAAsBoB,EAAY5O,EAFxC0P,GAAOnC,EAAqBjK,OAKtBmK,EAAsBmB,EAAY5O,EAFxC0P,GAAOlC,EAAoBlK,OAKrBmH,EAAkByE,EAAgClP,EAFxD0P,GAAOjC,EAAoBnK,OAK3B,OACIF,QAASnC,EAAGqC,OAHhBoM,GAAOjF,EAAgBnH,OAGMrC,EACzBiH,KAAIA,EACJiF,YAAWA,EACX1G,eAAcA,EACd2G,cAAaA,EACbC,iBAAgBA,EAChBC,qBAAoBA,EACpBC,qBAAoBA,EACpBC,oBAAmBA,EACnBC,oBAAmBA,EACnBhD,gBAAeA,IAQvBjL,EAAA+Q,cAAA,SAA8BvQ,EAAqBiB,GAC/C,IAAIyO,EAAMzO,EAEJoF,EAAKyI,EAAY9O,EAAG0P,GAGpBpJ,EAAsBsI,EAAY5O,EAFxC0P,GAAOrJ,EAAG/C,OAKJiD,EAAsBqI,EAAY5O,EAFxC0P,GAAOpJ,EAAoBhD,OAKrBkD,EAAWqJ,EAAuB7P,EAFxC0P,GAAOnJ,EAAoBjD,OAKrBqD,EAAQmI,EAAY9O,EAF1B0P,GAAOlJ,EAASlD,OAKVsD,EAAkBkI,EAAY9O,EAFpC0P,GAAO/I,EAAMrD,OAKPuD,EAAYgJ,EAAuB7P,EAFzC0P,GAAO9I,EAAgBtD,OAKjBwD,EAAsB+I,EAAuB7P,EAFnD0P,GAAO7I,EAAUvD,OAKXyD,EAAmB8I,EAAuB7P,EAFhD0P,GAAO5I,EAAoBxD,OAKrB0D,EAAe6I,EAAuB7P,EAF5C0P,GAAO3I,EAAiBzD,OAKlB2D,EAA0B4I,EAAuB7P,EAFvD0P,GAAO1I,EAAa1D,OAKd4D,EAAsB2I,EAAuB7P,EAFnD0P,GAAOzI,EAAwB3D,OAK/B,OACIF,QAASnC,EAAGqC,OAHhBoM,GAAOxI,EAAoB5D,OAGErC,EACzBoF,GAAEA,EACFC,oBAAmBA,EACnBC,oBAAmBA,EACnBC,SAAQA,EACRG,MAAKA,EACLC,gBAAeA,EACfC,UAASA,EACTC,oBAAmBA,EACnBC,iBAAgBA,EAChBC,aAAYA,EACZC,wBAAuBA,EACvBC,oBAAmBA,IAI3B1H,EAAAgR,iBAAA,SAAiCxQ,EAAqBiB,GAClD,IAAIyO,EAAMzO,EAEJqG,EAAYwH,EAAY9O,EAAG0P,GAG3BnI,EAAeqH,EAAY5O,EAFjC0P,GAAOpI,EAAUhE,OAKXkE,EAAeoH,EAAY5O,EAFjC0P,GAAOnI,EAAajE,OAKdmE,EAAWqH,EAAY9O,EAF7B0P,GAAOlI,EAAalE,OAKdoE,EAAgBoH,EAAY9O,EAFlC0P,GAAOjI,EAASnE,OAKVqE,EAAgB8H,EAA8BzP,EAFpD0P,GAAOhI,EAAcpE,OAMfsE,EAAiBuH,EAA4BnP,EAHnD0P,GAAO/H,EAAcrE,MAEDkL,EAAEH,iBAAiB1G,EAAcrE,QAI/CqD,EAAQiI,EAAY5O,EAF1B0P,GAAO9H,EAAetE,OAKhBuE,EAAU+G,EAAY5O,EAF5B0P,GAAO/I,EAAMrD,OAKb,OACIF,QAASnC,EAAGqC,OAHhBoM,GAAO7H,EAAQvE,OAGcrC,EACzBqG,UAASA,EACTC,aAAYA,EACZC,aAAYA,EACZC,SAAQA,EACRC,cAAaA,EACbC,cAAaA,EACbC,eAAcA,EACdjB,MAAKA,EACLkB,QAAOA,IAIfrI,EAAAiR,yBAAA,SAAyCzQ,EAAqBiB,GAC1D,IAAIyO,EAAMzO,EAEJkH,EAAS2G,EAAY9O,EAAG0P,GAGxBhJ,EAAOoI,EAAY9O,EAFzB0P,GAAOvH,EAAO7E,OAKR4E,EAAOuH,EAA8BzP,EAF3C0P,GAAOhJ,EAAKpD,OAMN8E,EAAU+G,EAA4BnP,EAH5C0P,GAAOxH,EAAK5E,MAEQkL,EAAEH,iBAAiBnG,EAAK5E,QAI5C,OACIF,QAASnC,EAAGqC,OAHhBoM,GAAOtH,EAAQ9E,OAGcrC,EACzBkH,OAAMA,EACNzB,KAAIA,EACJwB,KAAIA,EACJE,QAAOA,kDCjqBf,IAAAsI,EAAApR,EAAA,GACAgJ,EAAAhJ,EAAA,GACAqR,EAAArR,EAAA,GAEAsR,EAAA,WAyKI,SAAAA,EAAoBC,GAChB3C,KAAK1K,KAAO,IAAIsN,SAASD,GACzB3C,KAAK6C,cAmFb,OA7PkBH,EAAAI,KAAd,SAAmBH,GACf,OAAO,IAAID,EAAQC,IAOhBD,EAAA7P,UAAA4N,MAAP,SAAa1N,GAET,OADAiN,KAAK+C,MAAMhQ,EAAG,GACPiN,KAAK1K,KAAK0N,SAASjQ,IAGvB2P,EAAA7P,UAAA8N,MAAP,SAAa5N,GAET,OADAiN,KAAK+C,MAAMhQ,EAAG,GACPiN,KAAK1K,KAAK2N,UAAUlQ,GAAG,IAG3B2P,EAAA7P,UAAAgO,MAAP,SAAa9N,GAET,OADAiN,KAAK+C,MAAMhQ,EAAG,GACPiN,KAAK1K,KAAK4N,UAAUnQ,GAAG,IAG3B2P,EAAA7P,UAAA2N,QAAP,SAAezN,EAAW+B,GAEtB,OADAkL,KAAK+C,MAAMhQ,EAAG+B,GACP,IAAI4M,WAAW1B,KAAK1K,KAAK6N,OAAO1B,MAAM1O,EAAGA,EAAI+B,KAOjD4N,EAAA7P,UAAAuQ,QAAP,WACI,IAAMC,EAASrD,KAAKtD,oBACpB,GAAc,MAAV2G,EAIJ,OAAQA,EAAO1G,MAAMnK,OACjB,KAAK4H,EAAE9D,8BAA+B,OAAO,EAC7C,KAAK8D,EAAE7D,8BAA+B,OAAO,EAC7C,QAAS,SAIVmM,EAAA7P,UAAA4E,UAAP,WACI,IAAM6L,EAAKtD,KAAKnB,qBAChB,OAAa,MAANyE,GAActD,KAAKuD,qBACtBD,EAAGpL,MAAMkC,EAAExD,oBAAoB4M,wCAIhCd,EAAA7P,UAAA6E,YAAP,WACI,IAAMM,EAAIgI,KAAK/H,eACf,OAAY,MAALD,GAAagI,KAAKuD,qBAAqBvL,EAAEM,WAG7CoK,EAAA7P,UAAA4Q,oBAAP,WACI,IAAMzL,EAAIgI,KAAK/H,eACf,OAAY,MAALD,GAAagI,KAAKuD,qBAAqBvL,EAAEW,YAG7C+J,EAAA7P,UAAA6Q,uBAAP,WACI,IAAM1L,EAAIgI,KAAK/H,eACf,OAAY,MAALD,GAAagI,KAAKuD,qBAAqBvL,EAAEY,sBAO7C8J,EAAA7P,UAAA0H,aAAP,WACI,OAAOyF,KAAK1F,WAGToI,EAAA7P,UAAAgJ,eAAP,WACI,OAAOmE,KAAKpE,aAGT8G,EAAA7P,UAAAmJ,cAAP,WACI,OAAOgE,KAAKjE,YAGT2G,EAAA7P,UAAA6J,kBAAP,WACI,OAAOsD,KAAKvD,gBAGTiG,EAAA7P,UAAAgM,mBAAP,WACI,OAAOmB,KAAKpB,iBAGT8D,EAAA7P,UAAAmM,kBAAP,WACI,OAAOgB,KAAKjB,gBAOT2D,EAAA7P,UAAAoF,aAAP,WACI,GAAsB,MAAlB+H,KAAKjI,UAAmB,OAAOiI,KAAKjI,UACxC,GAAKiI,KAAKvI,YAAV,CAEA,IAAMxC,EAAS+K,KAAK2D,YAAY3D,KAAKpB,gBAChC1G,MAAMkC,EAAExD,oBAAoB4M,sCAC5BjL,eAAe/F,OAGpB,OADAwN,KAAKjI,UAAYyK,EAAEH,cAAcrC,KAAM/K,GAChC+K,KAAKjI,YAGT2K,EAAA7P,UAAAsG,gBAAP,WACI,GAAyB,MAArB6G,KAAK9G,aAAsB,OAAO8G,KAAK9G,aAE3C,IAAMnB,EAAYiI,KAAK/H,eACvB,GAAKF,EAAL,CAEA,IAAM9C,EAAS+K,KAAK2D,YAAY5L,EAAUO,SAASC,eAAe/F,OAClE,GAAKyC,EAGL,OADA+K,KAAK9G,aAAesJ,EAAEF,iBAAiBtC,KAAM/K,GACtC+K,KAAK9G,eAGTwJ,EAAA7P,UAAAiH,yBAAP,WACI,GAAkC,MAA9BkG,KAAK4D,sBAA+B,OAAO5D,KAAK4D,sBAEpD,IAAMC,EAAS7D,KAAK7G,kBACpB,OAAK0K,GAAWA,EAAOlK,QAAQnH,OAE/BwN,KAAK4D,sBAAwBpB,EAAEX,uBAC3B7B,KACA6D,EAAO3O,QAAU2O,EAAOzO,MACxBoN,EAAED,yBACFsB,EAAOlK,QAAQnH,OAEZwN,KAAK4D,4BARZ,GAeGlB,EAAA7P,UAAA8Q,YAAP,SAAmBG,GACf,IAAMC,EAAK/D,KAAKgE,sBAAsBF,GACtC,OAAKC,EAEED,EAAMC,EAAGxL,eAAe/F,MAAQuR,EAAG5E,iBAAiB3M,MAF3C,GAKbkQ,EAAA7P,UAAAoR,YAAP,SAAmBhP,GACf,IAAM8O,EAAK/D,KAAKkE,yBAAyBjP,GACzC,OAAK8O,EAEE9O,EAAS8O,EAAG5E,iBAAiB3M,MAAQuR,EAAGxL,eAAe/F,MAF9C,GASZkQ,EAAA7P,UAAAkQ,MAAR,SAAchQ,EAAW+B,GACrB,GAAI/B,EAAI,GAAKA,GAAKiN,KAAK1K,KAAK6O,YACrBrP,EAAK,GAAK/B,EAAI+B,EAAKkL,KAAK1K,KAAK6O,WAChC,MAAM,IAAI1B,EAAE7C,QAAO,wBAAsC7M,EAAG+B,IAS5D4N,EAAA7P,UAAAgQ,YAAR,WACI,IAAIrB,EAAM,EAGV,GAFAxB,KAAK1F,UAAYkI,EAAER,mBAAmBhC,KAAMwB,GAExCxB,KAAK1F,UAAUE,QAAQhI,OAAS4H,EAAEhE,oBAClC,MAAM,IAAIqM,EAAE7C,QAAO,wBAAsC4B,EAAK,GAMlE,GAHAA,EAAMxB,KAAK1F,UAAUoB,SAASlJ,MAC9BwN,KAAKpE,YAAc4G,EAAE5B,YAAYZ,KAAMwB,GAEnCxB,KAAKpE,YAAYpJ,OAAS4H,EAAE/D,mBAC5B,MAAM,IAAIoM,EAAE7C,QAAO,uBAAqC4B,EAAK,GAQjE,OALAA,GAAOxB,KAAKpE,YAAYxG,MACxB4K,KAAKjE,WAAayG,EAAEP,oBAAoBjC,KAAMwB,GAE9CA,GAAOxB,KAAKjE,WAAW3G,MACToN,EAAE9B,YAAYV,KAAMwB,GACpBhP,OACV,KAAK4H,EAAE9D,8BACH0J,KAAKvD,eAAiB+F,EAAEN,0BAA0BlC,KAAMwB,GACxD,MACJ,KAAKpH,EAAE7D,8BACHyJ,KAAKvD,eAAiB+F,EAAEL,0BAA0BnC,KAAMwB,GACxD,MACJ,QACI,MAAM,IAAIiB,EAAE7C,QAAO,gCAA8C4B,EAAK,GAG9E,GAAIxB,KAAKvD,eAAe+B,oBAAoBhM,OAAS4H,EAAEvD,iCACnD,MAAM,IAAI4L,EAAE7C,QAAO,+BACfI,KAAKvD,eAAe+B,oBAAoBtJ,QACxC8K,KAAKvD,eAAe+B,oBAAoBpJ,OAGhDoM,GAAOxB,KAAKvD,eAAerH,MAC3B4K,KAAKpB,gBAAkB4D,EAAEX,uBAAuB7B,KAAMwB,EAClDgB,EAAEb,uBACF3B,KAAKvD,eAAe+B,oBAAoBhM,OAE5CgP,GAAOxB,KAAKpB,gBAAgBxJ,MAC5B4K,KAAKjB,eAAiByD,EAAEX,uBAAuB7B,KAAMwB,EACjDgB,EAAEJ,uBACFpC,KAAKjE,WAAWG,iBAAiB1J,QAGjCkQ,EAAA7P,UAAAqR,yBAAR,SAAiCjP,GAC7B,OAAO+K,KAAKjB,gBAAkBiB,KAAKjB,eAAe7G,MAAMoJ,OAAO,SAAAtJ,GAC3D,IAAMjF,EAAIiF,EAAEmH,iBAAiB3M,MACvBsC,EAAKkD,EAAEkH,cAAc1M,MAC3B,OAAOyC,GAAUlC,GAAKkC,EAASlC,EAAI+B,IACpCsP,SAGC1B,EAAA7P,UAAAmR,sBAAR,SAA8BF,GAC1B,OAAO9D,KAAKjB,gBAAkBiB,KAAKjB,eAAe7G,MAAMoJ,OAAO,SAAAtJ,GAC3D,IAAMjF,EAAIiF,EAAEO,eAAe/F,MACrBsC,EAAKkD,EAAEiH,YAAYzM,MACzB,OAAOsR,GAAO/Q,GAAK+Q,EAAM/Q,EAAI+B,IAC9BsP,SAGC1B,EAAA7P,UAAA0Q,qBAAR,SAA6BD,GACzB,OAAQA,GAAMA,EAAG/K,eAAe/F,MAAQ,GAAK8Q,EAAG9K,KAAKhG,MAAQ,IAAM,GAe3EkQ,EA9PA,GAAapR,EAAAoR,wDCLbpR,EAAA+S,wBAAA,SAAwCjN,GACpC,OACI0I,KAAI,eACJ1I,QAAOA,IAIf9F,EAAAgT,yBAAA,SAAyCC,GACrC,OACIzE,KAAI,gBACJyE,SAAQA,IAIhBjT,EAAAkT,wBAAA,SAAwCpB,EAAmB3L,GACvD,OACIqI,KAAI,eACJsD,QAAOA,EACP3L,UAASA,IAIjBnG,EAAAmT,wBAAA,SAAwCC,GACpC,OACI5E,KAAI,eACJ4E,MAAKA,kDCzBb,IAAAC,EAAAvT,EAAA,IACAwT,EAAAxT,EAAA,GACAyT,EAAAzT,EAAA,GACA0T,EAAA1T,EAAA,GAEI8F,EAAqB,KAEzB6N,UAAY,SAACC,GACT,IAAMC,EAAMD,EAAG1P,KACf,OAAQ2P,EAAInF,MACR,qBAUR,SAA2BmF,GACvB,IAAIC,EAAS,IAAIC,WAEjBD,EAAOE,OAAS,SAAAJ,GACZ,IACI,IAAMrC,EAAgCqC,EAAG3N,OAAQgO,OACjDnO,EAAK0N,EAAAlC,QAAQI,KAAKH,GAGlB,IAAM4B,EAAWM,EAAAlF,iBAAiBzI,EAAE,WAC9BoO,EAAcX,EAAEL,yBAAyBC,GAC/CgB,YAAYD,GAGZ,IAAMlC,EAAUlM,EAAGkM,UACb3L,EAAYP,EAAGO,YACf+N,EAAab,EAAEH,wBAAwBpB,EAAS3L,GACtD8N,YAAYC,GAGZ,IAAMpO,EAAU0N,EAAA7N,gBAAgBC,GAC1BuO,EAASd,EAAEN,wBAAwBjN,GACzCmO,YAAYE,GACd,MAAOC,GACL,IAAMC,EAAMhB,EAAEF,wBAAwBiB,EAAGE,SAClC,kBAAkBC,KAAKC,UAAUJ,IACxCH,YAAYI,KAIpBT,EAAOa,QAAU,SAAAf,GACb9N,EAAK,KACL,IAAM+N,EAAMN,EAAEF,wBAAwB,oBACtCc,YAAYN,IAGhBC,EAAOc,kBAAkBf,EAAIgB,MA7CrBC,CAAkBjB,GAClB,MAEJ,oBA6CR,SAA0BA,GACtB,GAAU,MAAN/N,EAAY,CACZ,IAAMqN,EAAWM,EAAAlF,iBAAiBzI,EAAI+N,EAAI5N,OAAOF,QACjDoN,EAASzM,IAAIP,OAAS0N,EAAI5N,OAAOE,OACjC,IAAM4O,EAAMxB,EAAEL,yBAAyBC,GACvCgB,YAAYY,IAjDRC,CAAiBnB","file":"worker.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","import * as S from \"../pe/structures\";\r\nimport { format } from \"url\";\r\n\r\nexport function formatU1RawHex(d: number): string {\r\n return padZeroLeft(d.toString(16).toUpperCase(), 2);\r\n}\r\n\r\nexport function formatU2RawHex(d: number): string {\r\n return padZeroLeft(d.toString(16).toUpperCase(), 4);\r\n}\r\n\r\nexport function formatU4RawHex(d: number): string {\r\n return padZeroLeft(d.toString(16).toUpperCase(), 8);\r\n}\r\n\r\nexport function formatU1Hex(d: number): string {\r\n return `${formatU1RawHex(d)}h`;\r\n}\r\n\r\nexport function formatU2Hex(d: number): string {\r\n return `${formatU2RawHex(d)}h`;\r\n}\r\n\r\nexport function formatU4Hex(d: number): string {\r\n return `${formatU4RawHex(d)}h`;\r\n}\r\n\r\nexport function formatHexDec(d: number): string {\r\n return `${d.toString(16).toUpperCase()}h (${d})`;\r\n}\r\n\r\nexport function formatBytes(bytes: Uint8Array, lineWidth: number = 16): string[] {\r\n let lines: string[] = [];\r\n for (let start = 0; start < bytes.length; start += lineWidth) {\r\n const line = Array.from(bytes.subarray(start, start + lineWidth))\r\n .map(b => formatU1RawHex(b)).join(\"-\");\r\n lines.push(line);\r\n }\r\n return lines;\r\n}\r\n\r\nexport function formatStructTitle(s: S.FileData, title: string): string {\r\n return `${title} [${formatU4Hex(s._offset)} - ${formatU4Hex(s._offset + s._size)} : ${formatHexDec(s._size)}]`;\r\n}\r\n\r\nexport function formatU1Field(name: string, f: S.U1Field, showDec?: boolean): W.StructItem {\r\n return formatUIntField(name, f, 1, showDec);\r\n}\r\n\r\nexport function formatU2Field(name: string, f: S.U2Field, showDec?: boolean): W.StructItem {\r\n return formatUIntField(name, f, 2, showDec);\r\n}\r\n\r\nexport function formatU4Field(name: string, f: S.U4Field, showDec?: boolean): W.StructItem {\r\n return formatUIntField(name, f, 4, showDec);\r\n}\r\n\r\nexport function formatU8Field(name: string, f: S.U8Field, showDec?: boolean): W.StructItem {\r\n let value = `${formatU4RawHex(f.high)} ${formatU4Hex(f.low)}`;\r\n\r\n if (showDec && f.high < 0x1FFFFF) {\r\n const long = f.high * 0x100000000 + f.low;\r\n value += ` (${formatDec(long)})`;\r\n }\r\n\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value,\r\n };\r\n}\r\n\r\nexport function formatBytesField(name: string, f: S.Field): W.StructItem {\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value: \"\",\r\n }\r\n}\r\n\r\nexport function formatStringField(name: string, f: S.StringField): W.StructItem {\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value: `\"${f.value}\"`,\r\n }\r\n}\r\n\r\nfunction padZeroLeft(str: string, len: number): string {\r\n if (str.length < len) {\r\n return \"0\".repeat(len - str.length) + str;\r\n } else {\r\n return str;\r\n }\r\n}\r\n\r\nfunction formatUIntField(name: string, f: S.UIntField, sz: number, showDec?: boolean): W.StructItem {\r\n let hex: string;\r\n switch (sz) {\r\n case 1: hex = formatU1Hex(f.value); break;\r\n case 2: hex = formatU2Hex(f.value); break;\r\n case 4: hex = formatU4Hex(f.value); break;\r\n default: hex = f.value.toString(16).toUpperCase(); break;\r\n }\r\n\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value: showDec ? `${hex} (${formatDec(f.value)})` : hex,\r\n }\r\n}\r\n\r\nfunction formatDec(v: number): string {\r\n return v.toLocaleString();\r\n}\r\n","export const IMAGE_DOS_SIGNATURE = 0x5A4D; // MZ\r\n\r\nexport const IMAGE_NT_SIGNATURE = 0x00004550; // PE00\r\n\r\nexport const IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x10b;\r\nexport const IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x20b;\r\n\r\nexport enum ImageFile {\r\n IMAGE_FILE_RELOCS_STRIPPED = 0x0001,\r\n IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002,\r\n IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004,\r\n IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008,\r\n IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010,\r\n IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020,\r\n IMAGE_FILE_BYTES_REVERSED_LO = 0x0080,\r\n IMAGE_FILE_32BIT_MACHINE = 0x0100,\r\n IMAGE_FILE_DEBUG_STRIPPED = 0x0200,\r\n IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400,\r\n IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800,\r\n IMAGE_FILE_SYSTEM = 0x1000,\r\n IMAGE_FILE_DLL = 0x2000,\r\n IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000,\r\n IMAGE_FILE_BYTES_REVERSED_HI = 0x8000,\r\n}\r\n\r\nexport enum ImageFileMachine {\r\n IMAGE_FILE_MACHINE_UNKNOWN = 0,\r\n IMAGE_FILE_MACHINE_TARGET_HOST = 0x0001,\r\n IMAGE_FILE_MACHINE_I386 = 0x014c,\r\n IMAGE_FILE_MACHINE_R3000 = 0x0162,\r\n IMAGE_FILE_MACHINE_R4000 = 0x0166,\r\n IMAGE_FILE_MACHINE_R10000 = 0x0168,\r\n IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x0169,\r\n IMAGE_FILE_MACHINE_ALPHA = 0x0184,\r\n IMAGE_FILE_MACHINE_SH3 = 0x01a2,\r\n IMAGE_FILE_MACHINE_SH3DSP = 0x01a3,\r\n IMAGE_FILE_MACHINE_SH3E = 0x01a4,\r\n IMAGE_FILE_MACHINE_SH4 = 0x01a6,\r\n IMAGE_FILE_MACHINE_SH5 = 0x01a8,\r\n IMAGE_FILE_MACHINE_ARM = 0x01c0,\r\n IMAGE_FILE_MACHINE_THUMB = 0x01c2,\r\n IMAGE_FILE_MACHINE_ARMNT = 0x01c4,\r\n IMAGE_FILE_MACHINE_AM33 = 0x01d3,\r\n IMAGE_FILE_MACHINE_POWERPC = 0x01F0,\r\n IMAGE_FILE_MACHINE_POWERPCFP = 0x01f1,\r\n IMAGE_FILE_MACHINE_IA64 = 0x0200,\r\n IMAGE_FILE_MACHINE_MIPS16 = 0x0266,\r\n IMAGE_FILE_MACHINE_ALPHA64 = 0x0284,\r\n IMAGE_FILE_MACHINE_MIPSFPU = 0x0366,\r\n IMAGE_FILE_MACHINE_MIPSFPU16 = 0x0466,\r\n IMAGE_FILE_MACHINE_AXP64 = IMAGE_FILE_MACHINE_ALPHA64,\r\n IMAGE_FILE_MACHINE_TRICORE = 0x0520,\r\n IMAGE_FILE_MACHINE_CEF = 0x0CEF,\r\n IMAGE_FILE_MACHINE_EBC = 0x0EBC,\r\n IMAGE_FILE_MACHINE_AMD64 = 0x8664,\r\n IMAGE_FILE_MACHINE_M32R = 0x9041,\r\n IMAGE_FILE_MACHINE_ARM64 = 0xAA64,\r\n IMAGE_FILE_MACHINE_CEE = 0xC0EE,\r\n}\r\n\r\nexport enum ImageSubsystem {\r\n IMAGE_SUBSYSTEM_UNKNOWN = 0,\r\n IMAGE_SUBSYSTEM_NATIVE = 1,\r\n IMAGE_SUBSYSTEM_WINDOWS_GUI = 2,\r\n IMAGE_SUBSYSTEM_WINDOWS_CUI = 3,\r\n IMAGE_SUBSYSTEM_OS2_CUI = 5,\r\n IMAGE_SUBSYSTEM_POSIX_CUI = 7,\r\n IMAGE_SUBSYSTEM_NATIVE_WINDOWS = 8,\r\n IMAGE_SUBSYSTEM_WINDOWS_CE_GUI = 9,\r\n IMAGE_SUBSYSTEM_EFI_APPLICATION = 10,\r\n IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11,\r\n IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER = 12,\r\n IMAGE_SUBSYSTEM_EFI_ROM = 13,\r\n IMAGE_SUBSYSTEM_XBOX = 14,\r\n IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16,\r\n IMAGE_SUBSYSTEM_XBOX_CODE_CATALOG = 17,\r\n}\r\n\r\nexport enum ImageDllCharacteristics {\r\n IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA = 0x0020,\r\n IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE = 0x0040,\r\n IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY = 0x0080,\r\n IMAGE_DLLCHARACTERISTICS_NX_COMPAT = 0x0100,\r\n IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = 0x0200,\r\n IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400,\r\n IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800,\r\n IMAGE_DLLCHARACTERISTICS_APPCONTAINER = 0x1000,\r\n IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000,\r\n IMAGE_DLLCHARACTERISTICS_GUARD_CF = 0x4000,\r\n IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000,\r\n}\r\n\r\nexport enum ImageDirectoryEntry {\r\n IMAGE_DIRECTORY_ENTRY_EXPORT = 0,\r\n IMAGE_DIRECTORY_ENTRY_IMPORT = 1,\r\n IMAGE_DIRECTORY_ENTRY_RESOURCE = 2,\r\n IMAGE_DIRECTORY_ENTRY_EXCEPTION = 3,\r\n IMAGE_DIRECTORY_ENTRY_SECURITY = 4,\r\n IMAGE_DIRECTORY_ENTRY_BASERELOC = 5,\r\n IMAGE_DIRECTORY_ENTRY_DEBUG = 6,\r\n IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7,\r\n IMAGE_DIRECTORY_ENTRY_GLOBALPTR = 8,\r\n IMAGE_DIRECTORY_ENTRY_TLS = 9,\r\n IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG = 10,\r\n IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT = 11,\r\n IMAGE_DIRECTORY_ENTRY_IAT = 12,\r\n IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT = 13,\r\n IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14,\r\n}\r\n\r\nexport const IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16;\r\n\r\nexport enum ImageSection {\r\n IMAGE_SCN_TYPE_NO_PAD = 0x00000008,\r\n\r\n IMAGE_SCN_CNT_CODE = 0x00000020,\r\n IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040,\r\n IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080,\r\n\r\n IMAGE_SCN_LNK_OTHER = 0x00000100,\r\n IMAGE_SCN_LNK_INFO = 0x00000200,\r\n IMAGE_SCN_LNK_REMOVE = 0x00000800,\r\n IMAGE_SCN_LNK_COMDAT = 0x00001000,\r\n\r\n IMAGE_SCN_NO_DEFER_SPEC_EXC = 0x00004000,\r\n IMAGE_SCN_GPREL = 0x00008000,\r\n\r\n IMAGE_SCN_MEM_PURGEABLE = 0x00020000,\r\n IMAGE_SCN_MEM_16BIT = 0x00020000,\r\n IMAGE_SCN_MEM_LOCKED = 0x00040000,\r\n IMAGE_SCN_MEM_PRELOAD = 0x00080000,\r\n\r\n IMAGE_SCN_ALIGN_1BYTES = 0x00100000,\r\n IMAGE_SCN_ALIGN_2BYTES = 0x00200000,\r\n IMAGE_SCN_ALIGN_4BYTES = 0x00300000,\r\n IMAGE_SCN_ALIGN_8BYTES = 0x00400000,\r\n IMAGE_SCN_ALIGN_16BYTES = 0x00500000,\r\n IMAGE_SCN_ALIGN_32BYTES = 0x00600000,\r\n IMAGE_SCN_ALIGN_64BYTES = 0x00700000,\r\n IMAGE_SCN_ALIGN_128BYTES = 0x00800000,\r\n IMAGE_SCN_ALIGN_256BYTES = 0x00900000,\r\n IMAGE_SCN_ALIGN_512BYTES = 0x00A00000,\r\n IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000,\r\n IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000,\r\n IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000,\r\n IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000,\r\n\r\n IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000,\r\n IMAGE_SCN_MEM_DISCARDABLE = 0x02000000,\r\n IMAGE_SCN_MEM_NOT_CACHED = 0x04000000,\r\n IMAGE_SCN_MEM_NOT_PAGED = 0x08000000,\r\n IMAGE_SCN_MEM_SHARED = 0x10000000,\r\n IMAGE_SCN_MEM_EXECUTE = 0x20000000,\r\n IMAGE_SCN_MEM_READ = 0x40000000,\r\n IMAGE_SCN_MEM_WRITE = 0x80000000,\r\n\r\n IMAGE_SCN_SCALE_INDEX = 0x00000001,\r\n}\r\n\r\nexport enum ComImageFlags {\r\n COMIMAGE_FLAGS_ILONLY = 0x00000001,\r\n COMIMAGE_FLAGS_32BITREQUIRED = 0x00000002,\r\n COMIMAGE_FLAGS_IL_LIBRARY = 0x00000004,\r\n COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x00000008,\r\n COMIMAGE_FLAGS_NATIVE_ENTRYPOINT = 0x00000010,\r\n COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x00010000,\r\n COMIMAGE_FLAGS_32BITPREFERRED = 0x00020000,\r\n}\r\n\r\nexport const MetadataSignature = 0x424A5342;","import { PEImage } from \"../pe/image\";\r\n\r\nexport function generateNavList(pe: PEImage): W.NavData[] {\r\n let navList: W.NavData[] = [generateHeadersNavData(pe)];\r\n\r\n const navMD = generateMDHeadersNavData(pe);\r\n if (navMD) navList.push(navMD);\r\n\r\n return navList;\r\n}\r\n\r\nfunction generateHeadersNavData(pe: PEImage): W.NavData {\r\n const pageID = W.PageID.HEADERS;\r\n\r\n return {\r\n target: { pageID, title: W.KnownTitle.HEADERS },\r\n children: [{\r\n target: { pageID, title: W.KnownTitle.DOS_HEADER, elemID: W.KnownElemID.DOS_HEADER }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.PE_SIGNATURE, elemID: W.KnownElemID.PE_SIGNATURE }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.FILE_HEADER, elemID: W.KnownElemID.FILE_HEADER }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.OPTIONAL_HEADER, elemID: W.KnownElemID.OPTIONAL_HEADER }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.DATA_DIRECTORIES, elemID: W.KnownElemID.DATA_DIRECTORIES }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.SECTION_HEADERS, elemID: W.KnownElemID.SECTION_HEADERS }\r\n }]\r\n };\r\n}\r\n\r\nfunction generateMDHeadersNavData(pe: PEImage): W.NavData | undefined {\r\n const pageID = W.PageID.MD_HEADERS;\r\n\r\n if (!pe.isManaged()) return undefined;\r\n\r\n let children: W.NavData[] = [{\r\n target: { pageID, title: W.KnownTitle.CLI_HEADER, elemID: W.KnownElemID.CLI_HEADER }\r\n }];\r\n\r\n if (pe.hasMetadata()) {\r\n children.push({\r\n target: { pageID, title: W.KnownTitle.MD_ROOT, elemID: W.KnownElemID.MD_ROOT }\r\n });\r\n children.push({\r\n target: { pageID, title: W.KnownTitle.MDS_HEADERS, elemID: W.KnownElemID.MDS_HEADERS }\r\n });\r\n }\r\n\r\n return {\r\n target: { pageID, title: W.KnownTitle.MD_HEADERS },\r\n children\r\n };\r\n}","import { PEImage } from \"../pe/image\";\r\nimport * as S from \"../pe/structures\";\r\nimport * as F from \"../pe/image-flags\";\r\nimport * as FM from \"./formatter\";\r\n\r\nexport function generateMetadataHeadersPageData(pe: PEImage): W.MetadataHeadersPageData {\r\n return {\r\n nav: {\r\n pageID: W.PageID.MD_HEADERS,\r\n title: W.KnownTitle.MD_HEADERS,\r\n },\r\n cliHeader: generateCliHeader(pe),\r\n metadataRoot: generateMetadataRoot(pe),\r\n streamHeaders: generateMetadataStreamHeader(pe),\r\n };\r\n\r\n}\r\n\r\nfunction generateCliHeader(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.CLI_HEADER,\r\n elemID: W.KnownElemID.CLI_HEADER,\r\n };\r\n\r\n const h = pe.getCliHeader();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU4Field(\"cb\", h.cb, true),\r\n FM.formatU2Field(\"MajorRuntimeVersion\", h.MajorRuntimeVersion, true),\r\n FM.formatU2Field(\"MinorRuntimeVersion\", h.MinorRuntimeVersion, true),\r\n FM.formatU4Field(\"MetaData.VirtualAddress\", h.MetaData.VirtualAddress),\r\n FM.formatU4Field(\"MetaData.Size\", h.MetaData.Size, true),\r\n FM.formatU4Field(\"Flags\", h.Flags),\r\n FM.formatU4Field(\"EntryPointToken\", h.EntryPointToken),\r\n FM.formatU4Field(\"Resources.VirtualAddress\", h.Resources.VirtualAddress),\r\n FM.formatU4Field(\"Resources.Size\", h.Resources.Size, true),\r\n FM.formatU4Field(\"StrongNameSignature.VirtualAddress\", h.StrongNameSignature.VirtualAddress),\r\n FM.formatU4Field(\"StrongNameSignature.Size\", h.StrongNameSignature.Size, true),\r\n FM.formatU4Field(\"CodeManagerTable.VirtualAddress\", h.CodeManagerTable.VirtualAddress),\r\n FM.formatU4Field(\"CodeManagerTable.Size\", h.CodeManagerTable.Size, true),\r\n FM.formatU4Field(\"VTableFixups.VirtualAddress\", h.VTableFixups.VirtualAddress),\r\n FM.formatU4Field(\"VTableFixups.Size\", h.VTableFixups.Size, true),\r\n FM.formatU4Field(\"ExportAddressTableJumps.VirtualAddress\", h.ExportAddressTableJumps.VirtualAddress),\r\n FM.formatU4Field(\"ExportAddressTableJumps.Size\", h.ExportAddressTableJumps.Size, true),\r\n FM.formatU4Field(\"ManagedNativeHeader.VirtualAddress\", h.ManagedNativeHeader.VirtualAddress),\r\n FM.formatU4Field(\"ManagedNativeHeader.Size\", h.ManagedNativeHeader.Size, true),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generateMetadataRoot(pe: PEImage): W.SimpleStruct | undefined {\r\n const h = pe.getMetadataRoot();\r\n if (!h) return undefined;\r\n\r\n const s: W.SimpleStruct = {\r\n title: W.KnownTitle.MD_ROOT,\r\n elemID: W.KnownElemID.MD_ROOT,\r\n items: [\r\n FM.formatU4Field(\"Signature\", h.Signature),\r\n FM.formatU2Field(\"MajorVersion\", h.MajorVersion, true),\r\n FM.formatU2Field(\"MinorVersion\", h.MinorVersion, true),\r\n FM.formatU4Field(\"Reserved\", h.Reserved),\r\n FM.formatU4Field(\"VersionLength\", h.VersionLength, true),\r\n FM.formatStringField(\"VersionString\", h.VersionString),\r\n FM.formatBytesField(\"VersionPadding\", h.VersionPadding),\r\n FM.formatU2Field(\"Flags\", h.Flags),\r\n FM.formatU2Field(\"Streams\", h.Streams, true),\r\n ]\r\n };\r\n return s;\r\n}\r\n\r\nfunction generateMetadataStreamHeader(pe: PEImage): W.GroupedStruct | undefined {\r\n const h = pe.getMetadataStreamHeaders();\r\n if (!h) return undefined;\r\n\r\n const s: W.GroupedStruct = {\r\n title: W.KnownTitle.MDS_HEADERS,\r\n elemID: W.KnownElemID.MDS_HEADERS,\r\n groups: h.items.map((v, i) => ({\r\n title: `[${i}] (${v.Name.value})`,\r\n items: [\r\n FM.formatU4Field(\"Offset\", v.Offset),\r\n FM.formatU4Field(\"Size\", v.Size, true),\r\n FM.formatStringField(\"Name\", v.Name),\r\n FM.formatBytesField(\"Padding\", v.Padding),\r\n ]\r\n }))\r\n };\r\n return s;\r\n}","import { PEImage } from \"../pe/image\";\r\nimport * as S from \"../pe/structures\";\r\nimport * as F from \"../pe/image-flags\";\r\nimport * as FM from \"./formatter\";\r\n\r\nexport function generateHeadersPageData(pe: PEImage): W.HeadersPageData {\r\n return {\r\n nav: {\r\n pageID: W.PageID.HEADERS,\r\n title: W.KnownTitle.HEADERS,\r\n },\r\n dosHeader: generateDosHeader(pe),\r\n peSignature: generatePESignature(pe),\r\n fileHeader: generateFileHeader(pe),\r\n optionalHeader: generateOptionalHeader(pe),\r\n dataDirectories: generateDataDirectories(pe),\r\n sectionHeaders: generateSectionHeaders(pe),\r\n };\r\n}\r\n\r\nfunction generateDosHeader(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.DOS_HEADER,\r\n elemID: W.KnownElemID.DOS_HEADER,\r\n };\r\n\r\n const h = pe.getDosHeader();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU2Field(\"e_magic\", h.e_magic),\r\n FM.formatU2Field(\"e_cblp\", h.e_cblp),\r\n FM.formatU2Field(\"e_cp\", h.e_cp),\r\n FM.formatU2Field(\"e_crlc\", h.e_crlc),\r\n FM.formatU2Field(\"e_cparhdr\", h.e_cparhdr),\r\n FM.formatU2Field(\"e_minalloc\", h.e_minalloc),\r\n FM.formatU2Field(\"e_maxalloc\", h.e_maxalloc),\r\n FM.formatU2Field(\"e_ss\", h.e_ss),\r\n FM.formatU2Field(\"e_sp\", h.e_sp),\r\n FM.formatU2Field(\"e_csum\", h.e_csum),\r\n FM.formatU2Field(\"e_ip\", h.e_ip),\r\n FM.formatU2Field(\"e_cs\", h.e_cs),\r\n FM.formatU2Field(\"e_lfarlc\", h.e_lfarlc),\r\n FM.formatU2Field(\"e_ovno\", h.e_ovno),\r\n FM.formatBytesField(\"e_res\", h.e_res),\r\n FM.formatU2Field(\"e_oemid\", h.e_oemid),\r\n FM.formatU2Field(\"e_oeminfo\", h.e_oeminfo),\r\n FM.formatBytesField(\"e_res2\", h.e_res2),\r\n FM.formatU4Field(\"e_lfanew\", h.e_lfanew),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generatePESignature(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.PE_SIGNATURE,\r\n elemID: W.KnownElemID.PE_SIGNATURE,\r\n };\r\n\r\n const h = pe.getPESignature();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU4Field(\"PE Signature\", h),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generateFileHeader(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.FILE_HEADER,\r\n elemID: W.KnownElemID.FILE_HEADER,\r\n };\r\n\r\n const h = pe.getFileHeader();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU2Field(\"Machine\", h.Machine),\r\n FM.formatU2Field(\"NumberOfSections\", h.NumberOfSections, true),\r\n FM.formatU4Field(\"TimeDateStamp\", h.TimeDateStamp),\r\n FM.formatU4Field(\"PointerToSymbolTable\", h.PointerToSymbolTable),\r\n FM.formatU4Field(\"NumberOfSymbols\", h.NumberOfSymbols, true),\r\n FM.formatU2Field(\"SizeOfOptionalHeader\", h.SizeOfOptionalHeader, true),\r\n FM.formatU2Field(\"Characteristics\", h.Characteristics),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generateOptionalHeader(pe: PEImage): W.GroupedStruct {\r\n let s: W.GroupedStruct = {\r\n title: W.KnownTitle.OPTIONAL_HEADER,\r\n elemID: W.KnownElemID.OPTIONAL_HEADER,\r\n };\r\n\r\n const h = pe.getOptionalHeader();\r\n if (!h) return s;\r\n\r\n switch (h.Magic.value) {\r\n case F.IMAGE_NT_OPTIONAL_HDR32_MAGIC:\r\n s.title += \" (32-bit)\";\r\n fillOptionalHeader32Fields(s, h);\r\n break;\r\n\r\n case F.IMAGE_NT_OPTIONAL_HDR64_MAGIC:\r\n s.title += \" (64-bit)\";\r\n fillOptionalHeader64Fields(s, h);\r\n break;\r\n }\r\n\r\n return s;\r\n}\r\n\r\nfunction fillOptionalHeader32Fields(s: W.GroupedStruct, h: S.ImageOptionalHeader32): void {\r\n s.groups = [{\r\n title: \"Standard Fields\",\r\n items: [\r\n FM.formatU2Field(\"Magic\", h.Magic),\r\n FM.formatU1Field(\"MajorLinkerVersion\", h.MajorLinkerVersion, true),\r\n FM.formatU1Field(\"MinorLinkerVersion\", h.MinorLinkerVersion, true),\r\n FM.formatU4Field(\"SizeOfCode\", h.SizeOfCode, true),\r\n FM.formatU4Field(\"SizeOfInitializedData\", h.SizeOfInitializedData, true),\r\n FM.formatU4Field(\"SizeOfUninitializedData\", h.SizeOfUninitializedData, true),\r\n FM.formatU4Field(\"AddressOfEntryPoint\", h.AddressOfEntryPoint),\r\n FM.formatU4Field(\"BaseOfCode\", h.BaseOfCode),\r\n FM.formatU4Field(\"BaseOfData\", h.BaseOfData),\r\n ],\r\n }, {\r\n title: \"NT-specified Fields\",\r\n items: [\r\n FM.formatU4Field(\"ImageBase\", h.ImageBase),\r\n FM.formatU4Field(\"SectionAlignment\", h.SectionAlignment, true),\r\n FM.formatU4Field(\"FileAlignment\", h.FileAlignment, true),\r\n FM.formatU2Field(\"MajorOperatingSystemVersion\", h.MajorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MinorOperatingSystemVersion\", h.MinorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MajorImageVersion\", h.MajorImageVersion, true),\r\n FM.formatU2Field(\"MinorImageVersion\", h.MinorImageVersion, true),\r\n FM.formatU2Field(\"MajorSubsystemVersion\", h.MajorSubsystemVersion, true),\r\n FM.formatU2Field(\"MinorSubsystemVersion\", h.MinorSubsystemVersion, true),\r\n FM.formatU4Field(\"Win32VersionValue\", h.Win32VersionValue, true),\r\n FM.formatU4Field(\"SizeOfImage\", h.SizeOfImage, true),\r\n FM.formatU4Field(\"SizeOfHeaders\", h.SizeOfHeaders, true),\r\n FM.formatU4Field(\"CheckSum\", h.CheckSum),\r\n FM.formatU2Field(\"Subsystem\", h.Subsystem),\r\n FM.formatU2Field(\"DllCharacteristics\", h.DllCharacteristics),\r\n FM.formatU4Field(\"SizeOfStackReserve\", h.SizeOfStackReserve, true),\r\n FM.formatU4Field(\"SizeOfStackCommit\", h.SizeOfStackCommit, true),\r\n FM.formatU4Field(\"SizeOfHeapReserve\", h.SizeOfHeapReserve, true),\r\n FM.formatU4Field(\"SizeOfHeapCommit\", h.SizeOfHeapCommit, true),\r\n FM.formatU4Field(\"LoaderFlags\", h.LoaderFlags),\r\n FM.formatU4Field(\"NumberOfRvaAndSizes\", h.NumberOfRvaAndSizes, true),\r\n ],\r\n }];\r\n}\r\n\r\nfunction fillOptionalHeader64Fields(s: W.GroupedStruct, h: S.ImageOptionalHeader64): void {\r\n s.groups = [{\r\n title: \"Standard Fields\",\r\n items: [\r\n FM.formatU2Field(\"Magic\", h.Magic),\r\n FM.formatU1Field(\"MajorLinkerVersion\", h.MajorLinkerVersion, true),\r\n FM.formatU1Field(\"MinorLinkerVersion\", h.MinorLinkerVersion, true),\r\n FM.formatU4Field(\"SizeOfCode\", h.SizeOfCode, true),\r\n FM.formatU4Field(\"SizeOfInitializedData\", h.SizeOfInitializedData, true),\r\n FM.formatU4Field(\"SizeOfUninitializedData\", h.SizeOfUninitializedData, true),\r\n FM.formatU4Field(\"AddressOfEntryPoint\", h.AddressOfEntryPoint),\r\n FM.formatU4Field(\"BaseOfCode\", h.BaseOfCode),\r\n ],\r\n }, {\r\n title: \"NT-specified Fields\",\r\n items: [\r\n FM.formatU8Field(\"ImageBase\", h.ImageBase),\r\n FM.formatU4Field(\"SectionAlignment\", h.SectionAlignment, true),\r\n FM.formatU4Field(\"FileAlignment\", h.FileAlignment, true),\r\n FM.formatU2Field(\"MajorOperatingSystemVersion\", h.MajorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MinorOperatingSystemVersion\", h.MinorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MajorImageVersion\", h.MajorImageVersion, true),\r\n FM.formatU2Field(\"MinorImageVersion\", h.MinorImageVersion, true),\r\n FM.formatU2Field(\"MajorSubsystemVersion\", h.MajorSubsystemVersion, true),\r\n FM.formatU2Field(\"MinorSubsystemVersion\", h.MinorSubsystemVersion, true),\r\n FM.formatU4Field(\"Win32VersionValue\", h.Win32VersionValue, true),\r\n FM.formatU4Field(\"SizeOfImage\", h.SizeOfImage, true),\r\n FM.formatU4Field(\"SizeOfHeaders\", h.SizeOfHeaders, true),\r\n FM.formatU4Field(\"CheckSum\", h.CheckSum),\r\n FM.formatU2Field(\"Subsystem\", h.Subsystem),\r\n FM.formatU2Field(\"DllCharacteristics\", h.DllCharacteristics),\r\n FM.formatU8Field(\"SizeOfStackReserve\", h.SizeOfStackReserve, true),\r\n FM.formatU8Field(\"SizeOfStackCommit\", h.SizeOfStackCommit, true),\r\n FM.formatU8Field(\"SizeOfHeapReserve\", h.SizeOfHeapReserve, true),\r\n FM.formatU8Field(\"SizeOfHeapCommit\", h.SizeOfHeapCommit, true),\r\n FM.formatU4Field(\"LoaderFlags\", h.LoaderFlags),\r\n FM.formatU4Field(\"NumberOfRvaAndSizes\", h.NumberOfRvaAndSizes, true),\r\n ],\r\n }];\r\n}\r\n\r\nfunction generateDataDirectories(pe: PEImage): W.GroupedStruct {\r\n let s: W.GroupedStruct = {\r\n title: W.KnownTitle.DATA_DIRECTORIES,\r\n elemID: W.KnownElemID.DATA_DIRECTORIES,\r\n };\r\n\r\n const h = pe.getDataDirectories();\r\n if (!h) return s;\r\n\r\n s.groups = h.items.map((v, i) => ({\r\n title: `[${i}] ${F.ImageDirectoryEntry[i] || \"\"}`,\r\n items: [\r\n FM.formatU4Field(\"VirtualAddress\", v.VirtualAddress),\r\n FM.formatU4Field(\"Size\", v.Size, true),\r\n ]\r\n } as W.SimpleStruct));\r\n\r\n return s;\r\n}\r\n\r\nfunction generateSectionHeaders(pe: PEImage): W.GroupedStruct {\r\n let s: W.GroupedStruct = {\r\n title: W.KnownTitle.SECTION_HEADERS,\r\n elemID: W.KnownElemID.SECTION_HEADERS,\r\n };\r\n\r\n const h = pe.getSectionHeaders();\r\n if (!h) return s;\r\n\r\n s.groups = h.items.map((v, i) => ({\r\n title: `[${i}] (${v.Name.value})`,\r\n items: [\r\n FM.formatStringField(\"Name\", v.Name),\r\n FM.formatU4Field(\"VirtualSize\", v.VirtualSize, true),\r\n FM.formatU4Field(\"VirtualAddress\", v.VirtualAddress),\r\n FM.formatU4Field(\"SizeOfRawData\", v.SizeOfRawData, true),\r\n FM.formatU4Field(\"PointerToRawData\", v.PointerToRawData),\r\n FM.formatU4Field(\"PointerToRelocations\", v.PointerToRelocations),\r\n FM.formatU4Field(\"PointerToLinenumbers\", v.PointerToLinenumbers),\r\n FM.formatU2Field(\"NumberOfRelocations\", v.NumberOfRelocations, true),\r\n FM.formatU2Field(\"NumberOfLinenumbers\", v.NumberOfLinenumbers, true),\r\n FM.formatU4Field(\"Characteristics\", v.Characteristics),\r\n ]\r\n }));\r\n\r\n return s;\r\n}\r\n","import { PEImage } from \"../pe/image\";\r\nimport { generateHeadersPageData } from \"./headers\";\r\nimport { generateMetadataHeadersPageData } from \"./metadata-headers\";\r\n\r\nexport function generatePageData(pe: PEImage, pageID: W.PageID): W.PageData {\r\n switch (pageID) {\r\n case W.PageID.HEADERS: return generateHeadersPageData(pe);\r\n case W.PageID.MD_HEADERS: return generateMetadataHeadersPageData(pe);\r\n default: return { nav: { pageID: W.PageID.NOTFOUND, title: W.KnownTitle.NOTFOUND } };\r\n }\r\n}","export const enum PEErrorType {\r\n INVALID_DATA_POSITION = \"INVALID_DATA_POSITION\",\r\n INVALID_DOS_SIGNATURE = \"INVALID_DOS_SIGNATURE\",\r\n INVALID_PE_SIGNATURE = \"INVALID_PE_SIGNATURE\",\r\n INVALID_OPTIONAL_HEADER_MAGIC = \"INVALID_OPTIONAL_HEADER_MAGIC\",\r\n INVALID_DATA_DIRECTORY_COUNT = \"INVALID_DATA_DIRECTORY_COUNT\",\r\n}\r\n\r\nexport class PEError extends Error {\r\n constructor(\r\n public type: PEErrorType,\r\n public offset?: number,\r\n public size?: number\r\n ) {\r\n super(type);\r\n }\r\n}\r\n","export function calculatePadding(dataSize: number, align: number = 4): number {\n const r = dataSize % align;\n if (r == 0) {\n return 0;\n } else {\n return align - r;\n }\n}","import * as S from \"./structures\";\r\nimport * as F from \"./image-flags\";\r\nimport * as U from \"./utils\";\r\n\r\nexport interface FileDataProvider {\r\n getU1(p: number): number;\r\n getU2(p: number): number;\r\n getU4(p: number): number;\r\n getData(p: number, sz: number): Uint8Array;\r\n}\r\n\r\n//\r\n// Basic structures.\r\n//\r\n\r\nexport function loadU1Field(d: FileDataProvider, p: number): S.U1Field {\r\n return {\r\n _offset: p, _size: 1, data: d.getData(p, 1), value: d.getU1(p)\r\n };\r\n}\r\n\r\nexport function loadU2Field(d: FileDataProvider, p: number): S.U2Field {\r\n return {\r\n _offset: p, _size: 2, data: d.getData(p, 2), value: d.getU2(p)\r\n };\r\n}\r\n\r\nexport function loadU4Field(d: FileDataProvider, p: number): S.U4Field {\r\n return {\r\n _offset: p, _size: 4, data: d.getData(p, 4), value: d.getU4(p)\r\n };\r\n}\r\n\r\nexport function loadU8Field(d: FileDataProvider, p: number): S.U8Field {\r\n const low = d.getU4(p);\r\n const high = d.getU4(p + 4);\r\n\r\n return {\r\n _offset: p, _size: 8, data: d.getData(p, 8), low, high\r\n };\r\n}\r\n\r\nexport function loadU1EnumField(d: FileDataProvider, p: number): S.U1EnumField {\r\n return {\r\n _offset: p, _size: 1, data: d.getData(p, 1), value: d.getU1(p) as any as T\r\n };\r\n}\r\n\r\nexport function loadU2EnumField(d: FileDataProvider, p: number): S.U2EnumField {\r\n return {\r\n _offset: p, _size: 2, data: d.getData(p, 2), value: d.getU2(p) as any as T\r\n };\r\n}\r\n\r\nexport function loadU4EnumField(d: FileDataProvider, p: number): S.U4EnumField {\r\n return {\r\n _offset: p, _size: 4, data: d.getData(p, 4), value: d.getU4(p) as any as T\r\n };\r\n}\r\n\r\nexport function loadFixedSizeByteArrayField(d: FileDataProvider, p: number, sz: number): S.Field {\r\n return {\r\n _offset: p, _size: sz, data: d.getData(p, sz)\r\n };\r\n}\r\n\r\nexport function loadFixedSizeAsciiStringField(d: FileDataProvider, p: number, sz: number): S.StringField {\r\n const data = d.getData(p, sz);\r\n const value = String.fromCharCode.apply(null, Array.from(data).filter(v => v != 0));\r\n\r\n return {\r\n _offset: p, _size: sz, data, value\r\n };\r\n}\r\n\r\nexport function loadNullTerminatedStringField(d: FileDataProvider, p: number): S.StringField {\r\n let bytes: number[] = [];\r\n let ptr = p;\r\n let b: number;\r\n\r\n do {\r\n b = d.getU1(ptr++);\r\n bytes.push(b);\r\n } while (b != 0);\r\n const value = String.fromCharCode.apply(null, bytes.slice(0, bytes.length - 1));\r\n\r\n return {\r\n _offset: p, _size: ptr - p, data: Uint8Array.from(bytes), value\r\n };\r\n}\r\n\r\nexport function loadStructArrayByCount(\r\n d: FileDataProvider,\r\n p: number,\r\n loader: (d: FileDataProvider, p: number) => T,\r\n count: number): S.StructArray {\r\n\r\n let items: T[] = [];\r\n let ptr = p;\r\n for (let i = 0; i < count; i++) {\r\n const s = loader(d, ptr);\r\n items.push(s);\r\n ptr += s._size;\r\n }\r\n\r\n return { _offset: p, _size: ptr - p, items };\r\n}\r\n\r\n//\r\n// Image headers.\r\n//\r\n\r\nexport function loadImageDosHeader(d: FileDataProvider, p: number): S.ImageDosHeader {\r\n let ptr = p;\r\n\r\n const e_magic = loadU2Field(d, ptr);\r\n ptr += e_magic._size;\r\n\r\n const e_cblp = loadU2Field(d, ptr);\r\n ptr += e_cblp._size;\r\n\r\n const e_cp = loadU2Field(d, ptr);\r\n ptr += e_cp._size;\r\n\r\n const e_crlc = loadU2Field(d, ptr);\r\n ptr += e_crlc._size;\r\n\r\n const e_cparhdr = loadU2Field(d, ptr);\r\n ptr += e_cparhdr._size;\r\n\r\n const e_minalloc = loadU2Field(d, ptr);\r\n ptr += e_minalloc._size;\r\n\r\n const e_maxalloc = loadU2Field(d, ptr);\r\n ptr += e_maxalloc._size;\r\n\r\n const e_ss = loadU2Field(d, ptr);\r\n ptr += e_ss._size;\r\n\r\n const e_sp = loadU2Field(d, ptr);\r\n ptr += e_sp._size;\r\n\r\n const e_csum = loadU2Field(d, ptr);\r\n ptr += e_csum._size;\r\n\r\n const e_ip = loadU2Field(d, ptr);\r\n ptr += e_ip._size;\r\n\r\n const e_cs = loadU2Field(d, ptr);\r\n ptr += e_cs._size;\r\n\r\n const e_lfarlc = loadU2Field(d, ptr);\r\n ptr += e_lfarlc._size;\r\n\r\n const e_ovno = loadU2Field(d, ptr);\r\n ptr += e_ovno._size;\r\n\r\n const e_res = loadFixedSizeByteArrayField(d, ptr, 4 * 2);\r\n ptr += e_res._size;\r\n\r\n const e_oemid = loadU2Field(d, ptr);\r\n ptr += e_oemid._size;\r\n\r\n const e_oeminfo = loadU2Field(d, ptr);\r\n ptr += e_oeminfo._size;\r\n\r\n const e_res2 = loadFixedSizeByteArrayField(d, ptr, 10 * 2);\r\n ptr += e_res2._size;\r\n\r\n const e_lfanew = loadU4Field(d, ptr);\r\n ptr += e_lfanew._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n e_magic,\r\n e_cblp,\r\n e_cp,\r\n e_crlc,\r\n e_cparhdr,\r\n e_minalloc,\r\n e_maxalloc,\r\n e_ss,\r\n e_sp,\r\n e_csum,\r\n e_ip,\r\n e_cs,\r\n e_lfarlc,\r\n e_ovno,\r\n e_res,\r\n e_oemid,\r\n e_oeminfo,\r\n e_res2,\r\n e_lfanew,\r\n };\r\n}\r\n\r\nexport function loadImageFileHeader(d: FileDataProvider, p: number): S.ImageFileHeader {\r\n let ptr = p;\r\n\r\n const Machine = loadU2Field(d, ptr);\r\n ptr += Machine._size;\r\n\r\n const NumberOfSections = loadU2Field(d, ptr);\r\n ptr += NumberOfSections._size;\r\n\r\n const TimeDateStamp = loadU4Field(d, ptr);\r\n ptr += TimeDateStamp._size;\r\n\r\n const PointerToSymbolTable = loadU4Field(d, ptr);\r\n ptr += PointerToSymbolTable._size;\r\n\r\n const NumberOfSymbols = loadU4Field(d, ptr);\r\n ptr += NumberOfSymbols._size;\r\n\r\n const SizeOfOptionalHeader = loadU2Field(d, ptr);\r\n ptr += SizeOfOptionalHeader._size;\r\n\r\n const Characteristics = loadU2EnumField(d, ptr);\r\n ptr += Characteristics._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Machine,\r\n NumberOfSections,\r\n TimeDateStamp,\r\n PointerToSymbolTable,\r\n NumberOfSymbols,\r\n SizeOfOptionalHeader,\r\n Characteristics,\r\n };\r\n}\r\n\r\nexport function loadImageOptionalHeader32(d: FileDataProvider, p: number): S.ImageOptionalHeader32 {\r\n let ptr = p;\r\n\r\n const Magic = loadU2Field(d, ptr);\r\n ptr += Magic._size;\r\n\r\n const MajorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MajorLinkerVersion._size;\r\n\r\n const MinorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MinorLinkerVersion._size;\r\n\r\n const SizeOfCode = loadU4Field(d, ptr);\r\n ptr += SizeOfCode._size;\r\n\r\n const SizeOfInitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfInitializedData._size;\r\n\r\n const SizeOfUninitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfUninitializedData._size;\r\n\r\n const AddressOfEntryPoint = loadU4Field(d, ptr);\r\n ptr += AddressOfEntryPoint._size;\r\n\r\n const BaseOfCode = loadU4Field(d, ptr);\r\n ptr += BaseOfCode._size;\r\n\r\n const BaseOfData = loadU4Field(d, ptr);\r\n ptr += BaseOfData._size;\r\n\r\n const ImageBase = loadU4Field(d, ptr);\r\n ptr += ImageBase._size;\r\n\r\n const SectionAlignment = loadU4Field(d, ptr);\r\n ptr += SectionAlignment._size;\r\n\r\n const FileAlignment = loadU4Field(d, ptr);\r\n ptr += FileAlignment._size;\r\n\r\n const MajorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorOperatingSystemVersion._size;\r\n\r\n const MinorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorOperatingSystemVersion._size;\r\n\r\n const MajorImageVersion = loadU2Field(d, ptr);\r\n ptr += MajorImageVersion._size;\r\n\r\n const MinorImageVersion = loadU2Field(d, ptr);\r\n ptr += MinorImageVersion._size;\r\n\r\n const MajorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorSubsystemVersion._size;\r\n\r\n const MinorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorSubsystemVersion._size;\r\n\r\n const Win32VersionValue = loadU4Field(d, ptr);\r\n ptr += Win32VersionValue._size;\r\n\r\n const SizeOfImage = loadU4Field(d, ptr);\r\n ptr += SizeOfImage._size;\r\n\r\n const SizeOfHeaders = loadU4Field(d, ptr);\r\n ptr += SizeOfHeaders._size;\r\n\r\n const CheckSum = loadU4Field(d, ptr);\r\n ptr += CheckSum._size;\r\n\r\n const Subsystem = loadU2EnumField(d, ptr);\r\n ptr += Subsystem._size;\r\n\r\n const DllCharacteristics = loadU2EnumField(d, ptr);\r\n ptr += DllCharacteristics._size;\r\n\r\n const SizeOfStackReserve = loadU4Field(d, ptr);\r\n ptr += SizeOfStackReserve._size;\r\n\r\n const SizeOfStackCommit = loadU4Field(d, ptr);\r\n ptr += SizeOfStackCommit._size;\r\n\r\n const SizeOfHeapReserve = loadU4Field(d, ptr);\r\n ptr += SizeOfHeapReserve._size;\r\n\r\n const SizeOfHeapCommit = loadU4Field(d, ptr);\r\n ptr += SizeOfHeapCommit._size;\r\n\r\n const LoaderFlags = loadU4Field(d, ptr);\r\n ptr += LoaderFlags._size;\r\n\r\n const NumberOfRvaAndSizes = loadU4Field(d, ptr);\r\n ptr += NumberOfRvaAndSizes._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Magic,\r\n MajorLinkerVersion,\r\n MinorLinkerVersion,\r\n SizeOfCode,\r\n SizeOfInitializedData,\r\n SizeOfUninitializedData,\r\n AddressOfEntryPoint,\r\n BaseOfCode,\r\n BaseOfData,\r\n ImageBase,\r\n SectionAlignment,\r\n FileAlignment,\r\n MajorOperatingSystemVersion,\r\n MinorOperatingSystemVersion,\r\n MajorImageVersion,\r\n MinorImageVersion,\r\n MajorSubsystemVersion,\r\n MinorSubsystemVersion,\r\n Win32VersionValue,\r\n SizeOfImage,\r\n SizeOfHeaders,\r\n CheckSum,\r\n Subsystem,\r\n DllCharacteristics,\r\n SizeOfStackReserve,\r\n SizeOfStackCommit,\r\n SizeOfHeapReserve,\r\n SizeOfHeapCommit,\r\n LoaderFlags,\r\n NumberOfRvaAndSizes,\r\n };\r\n}\r\n\r\nexport function loadImageOptionalHeader64(d: FileDataProvider, p: number): S.ImageOptionalHeader64 {\r\n let ptr = p;\r\n\r\n const Magic = loadU2Field(d, ptr);\r\n ptr += Magic._size;\r\n\r\n const MajorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MajorLinkerVersion._size;\r\n\r\n const MinorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MinorLinkerVersion._size;\r\n\r\n const SizeOfCode = loadU4Field(d, ptr);\r\n ptr += SizeOfCode._size;\r\n\r\n const SizeOfInitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfInitializedData._size;\r\n\r\n const SizeOfUninitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfUninitializedData._size;\r\n\r\n const AddressOfEntryPoint = loadU4Field(d, ptr);\r\n ptr += AddressOfEntryPoint._size;\r\n\r\n const BaseOfCode = loadU4Field(d, ptr);\r\n ptr += BaseOfCode._size;\r\n\r\n const ImageBase = loadU8Field(d, ptr);\r\n ptr += ImageBase._size;\r\n\r\n const SectionAlignment = loadU4Field(d, ptr);\r\n ptr += SectionAlignment._size;\r\n\r\n const FileAlignment = loadU4Field(d, ptr);\r\n ptr += FileAlignment._size;\r\n\r\n const MajorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorOperatingSystemVersion._size;\r\n\r\n const MinorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorOperatingSystemVersion._size;\r\n\r\n const MajorImageVersion = loadU2Field(d, ptr);\r\n ptr += MajorImageVersion._size;\r\n\r\n const MinorImageVersion = loadU2Field(d, ptr);\r\n ptr += MinorImageVersion._size;\r\n\r\n const MajorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorSubsystemVersion._size;\r\n\r\n const MinorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorSubsystemVersion._size;\r\n\r\n const Win32VersionValue = loadU4Field(d, ptr);\r\n ptr += Win32VersionValue._size;\r\n\r\n const SizeOfImage = loadU4Field(d, ptr);\r\n ptr += SizeOfImage._size;\r\n\r\n const SizeOfHeaders = loadU4Field(d, ptr);\r\n ptr += SizeOfHeaders._size;\r\n\r\n const CheckSum = loadU4Field(d, ptr);\r\n ptr += CheckSum._size;\r\n\r\n const Subsystem = loadU2EnumField(d, ptr);\r\n ptr += Subsystem._size;\r\n\r\n const DllCharacteristics = loadU2EnumField(d, ptr);\r\n ptr += DllCharacteristics._size;\r\n\r\n const SizeOfStackReserve = loadU8Field(d, ptr);\r\n ptr += SizeOfStackReserve._size;\r\n\r\n const SizeOfStackCommit = loadU8Field(d, ptr);\r\n ptr += SizeOfStackCommit._size;\r\n\r\n const SizeOfHeapReserve = loadU8Field(d, ptr);\r\n ptr += SizeOfHeapReserve._size;\r\n\r\n const SizeOfHeapCommit = loadU8Field(d, ptr);\r\n ptr += SizeOfHeapCommit._size;\r\n\r\n const LoaderFlags = loadU4Field(d, ptr);\r\n ptr += LoaderFlags._size;\r\n\r\n const NumberOfRvaAndSizes = loadU4Field(d, ptr);\r\n ptr += NumberOfRvaAndSizes._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Magic,\r\n MajorLinkerVersion,\r\n MinorLinkerVersion,\r\n SizeOfCode,\r\n SizeOfInitializedData,\r\n SizeOfUninitializedData,\r\n AddressOfEntryPoint,\r\n BaseOfCode,\r\n ImageBase,\r\n SectionAlignment,\r\n FileAlignment,\r\n MajorOperatingSystemVersion,\r\n MinorOperatingSystemVersion,\r\n MajorImageVersion,\r\n MinorImageVersion,\r\n MajorSubsystemVersion,\r\n MinorSubsystemVersion,\r\n Win32VersionValue,\r\n SizeOfImage,\r\n SizeOfHeaders,\r\n CheckSum,\r\n Subsystem,\r\n DllCharacteristics,\r\n SizeOfStackReserve,\r\n SizeOfStackCommit,\r\n SizeOfHeapReserve,\r\n SizeOfHeapCommit,\r\n LoaderFlags,\r\n NumberOfRvaAndSizes,\r\n };\r\n}\r\n\r\nexport function loadImageDataDirectory(d: FileDataProvider, p: number): S.ImageDataDirectory {\r\n let ptr = p;\r\n\r\n const VirtualAddress = loadU4Field(d, ptr);\r\n ptr += VirtualAddress._size;\r\n\r\n const Size = loadU4Field(d, ptr);\r\n ptr += Size._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n VirtualAddress,\r\n Size,\r\n };\r\n}\r\n\r\nexport function loadImageSectionHeader(d: FileDataProvider, p: number): S.ImageSectionHeader {\r\n let ptr = p;\r\n\r\n const Name = loadFixedSizeAsciiStringField(d, ptr, 8);\r\n ptr += Name._size;\r\n\r\n const VirtualSize = loadU4Field(d, ptr);\r\n ptr += VirtualSize._size;\r\n\r\n const VirtualAddress = loadU4Field(d, ptr);\r\n ptr += VirtualAddress._size;\r\n\r\n const SizeOfRawData = loadU4Field(d, ptr);\r\n ptr += SizeOfRawData._size;\r\n\r\n const PointerToRawData = loadU4Field(d, ptr);\r\n ptr += PointerToRawData._size;\r\n\r\n const PointerToRelocations = loadU4Field(d, ptr);\r\n ptr += PointerToRelocations._size;\r\n\r\n const PointerToLinenumbers = loadU4Field(d, ptr);\r\n ptr += PointerToLinenumbers._size;\r\n\r\n const NumberOfRelocations = loadU2Field(d, ptr);\r\n ptr += NumberOfRelocations._size;\r\n\r\n const NumberOfLinenumbers = loadU2Field(d, ptr);\r\n ptr += NumberOfLinenumbers._size;\r\n\r\n const Characteristics = loadU4EnumField(d, ptr);\r\n ptr += Characteristics._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Name,\r\n VirtualSize,\r\n VirtualAddress,\r\n SizeOfRawData,\r\n PointerToRawData,\r\n PointerToRelocations,\r\n PointerToLinenumbers,\r\n NumberOfRelocations,\r\n NumberOfLinenumbers,\r\n Characteristics,\r\n };\r\n}\r\n\r\n//\r\n// Metadata structures.\r\n//\r\n\r\nexport function loadCliHeader(d: FileDataProvider, p: number): S.CliHeader {\r\n let ptr = p;\r\n\r\n const cb = loadU4Field(d, ptr);\r\n ptr += cb._size;\r\n\r\n const MajorRuntimeVersion = loadU2Field(d, ptr);\r\n ptr += MajorRuntimeVersion._size;\r\n\r\n const MinorRuntimeVersion = loadU2Field(d, ptr);\r\n ptr += MinorRuntimeVersion._size;\r\n\r\n const MetaData = loadImageDataDirectory(d, ptr);\r\n ptr += MetaData._size;\r\n\r\n const Flags = loadU4Field(d, ptr);\r\n ptr += Flags._size;\r\n\r\n const EntryPointToken = loadU4Field(d, ptr);\r\n ptr += EntryPointToken._size;\r\n\r\n const Resources = loadImageDataDirectory(d, ptr);\r\n ptr += Resources._size;\r\n\r\n const StrongNameSignature = loadImageDataDirectory(d, ptr);\r\n ptr += StrongNameSignature._size;\r\n\r\n const CodeManagerTable = loadImageDataDirectory(d, ptr);\r\n ptr += CodeManagerTable._size;\r\n\r\n const VTableFixups = loadImageDataDirectory(d, ptr);\r\n ptr += VTableFixups._size;\r\n\r\n const ExportAddressTableJumps = loadImageDataDirectory(d, ptr);\r\n ptr += ExportAddressTableJumps._size;\r\n\r\n const ManagedNativeHeader = loadImageDataDirectory(d, ptr);\r\n ptr += ManagedNativeHeader._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n cb,\r\n MajorRuntimeVersion,\r\n MinorRuntimeVersion,\r\n MetaData,\r\n Flags,\r\n EntryPointToken,\r\n Resources,\r\n StrongNameSignature,\r\n CodeManagerTable,\r\n VTableFixups,\r\n ExportAddressTableJumps,\r\n ManagedNativeHeader,\r\n };\r\n}\r\n\r\nexport function loadMetadataRoot(d: FileDataProvider, p: number): S.MetadataRoot {\r\n let ptr = p;\r\n\r\n const Signature = loadU4Field(d, ptr);\r\n ptr += Signature._size;\r\n\r\n const MajorVersion = loadU2Field(d, ptr);\r\n ptr += MajorVersion._size;\r\n\r\n const MinorVersion = loadU2Field(d, ptr);\r\n ptr += MinorVersion._size;\r\n\r\n const Reserved = loadU4Field(d, ptr);\r\n ptr += Reserved._size;\r\n\r\n const VersionLength = loadU4Field(d, ptr);\r\n ptr += VersionLength._size;\r\n\r\n const VersionString = loadNullTerminatedStringField(d, ptr);\r\n ptr += VersionString._size;\r\n\r\n const paddingSize = U.calculatePadding(VersionString._size);\r\n const VersionPadding = loadFixedSizeByteArrayField(d, ptr, paddingSize);\r\n ptr += VersionPadding._size;\r\n\r\n const Flags = loadU2Field(d, ptr);\r\n ptr += Flags._size;\r\n\r\n const Streams = loadU2Field(d, ptr);\r\n ptr += Streams._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Signature,\r\n MajorVersion,\r\n MinorVersion,\r\n Reserved,\r\n VersionLength,\r\n VersionString,\r\n VersionPadding,\r\n Flags,\r\n Streams,\r\n };\r\n}\r\n\r\nexport function loadMetadataStreamHeader(d: FileDataProvider, p: number): S.MetadataStreamHeader {\r\n let ptr = p;\r\n\r\n const Offset = loadU4Field(d, ptr);\r\n ptr += Offset._size;\r\n\r\n const Size = loadU4Field(d, ptr);\r\n ptr += Size._size;\r\n\r\n const Name = loadNullTerminatedStringField(d, ptr);\r\n ptr += Name._size;\r\n\r\n const paddingSize = U.calculatePadding(Name._size);\r\n const Padding = loadFixedSizeByteArrayField(d, ptr, paddingSize);\r\n ptr += Padding._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Offset,\r\n Size,\r\n Name,\r\n Padding,\r\n };\r\n}","import * as S from \"./structures\";\r\nimport * as L from \"./loader\";\r\nimport * as F from \"./image-flags\";\r\nimport * as E from \"./error\";\r\n\r\nexport class PEImage implements L.FileDataProvider {\r\n public static load(buf: ArrayBuffer): PEImage {\r\n return new PEImage(buf);\r\n }\r\n\r\n //\r\n // FileDataProvider functions.\r\n //\r\n\r\n public getU1(p: number): number {\r\n this.check(p, 1);\r\n return this.data.getUint8(p);\r\n }\r\n\r\n public getU2(p: number): number {\r\n this.check(p, 2);\r\n return this.data.getUint16(p, true);\r\n }\r\n\r\n public getU4(p: number): number {\r\n this.check(p, 3);\r\n return this.data.getUint32(p, true);\r\n }\r\n\r\n public getData(p: number, sz: number): Uint8Array {\r\n this.check(p, sz);\r\n return new Uint8Array(this.data.buffer.slice(p, p + sz));\r\n }\r\n\r\n //\r\n // Image attributes.\r\n //\r\n\r\n public is32Bit(): boolean | undefined {\r\n const optHdr = this.getOptionalHeader();\r\n if (optHdr == null) {\r\n return undefined;\r\n }\r\n\r\n switch (optHdr.Magic.value) {\r\n case F.IMAGE_NT_OPTIONAL_HDR32_MAGIC: return true;\r\n case F.IMAGE_NT_OPTIONAL_HDR64_MAGIC: return false;\r\n default: return undefined;\r\n }\r\n }\r\n\r\n public isManaged(): boolean {\r\n const dd = this.getDataDirectories();\r\n return dd != null && this.isDataDirectoryValid(\r\n dd.items[F.ImageDirectoryEntry.IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR]\r\n );\r\n }\r\n\r\n public hasMetadata(): boolean {\r\n const h = this.getCliHeader();\r\n return h != null && this.isDataDirectoryValid(h.MetaData);\r\n }\r\n\r\n public hasManagedResources(): boolean {\r\n const h = this.getCliHeader();\r\n return h != null && this.isDataDirectoryValid(h.Resources);\r\n }\r\n\r\n public hasStrongNameSignature(): boolean {\r\n const h = this.getCliHeader();\r\n return h != null && this.isDataDirectoryValid(h.StrongNameSignature);\r\n }\r\n\r\n //\r\n // Image headers.\r\n //\r\n\r\n public getDosHeader(): S.ImageDosHeader | undefined {\r\n return this.dosHeader;\r\n }\r\n\r\n public getPESignature(): S.U4Field | undefined {\r\n return this.peSignature;\r\n }\r\n\r\n public getFileHeader(): S.ImageFileHeader | undefined {\r\n return this.fileHeader;\r\n }\r\n\r\n public getOptionalHeader(): S.ImageOptionalHeader32 | S.ImageOptionalHeader64 | undefined {\r\n return this.optionalHeader;\r\n }\r\n\r\n public getDataDirectories(): S.StructArray | undefined {\r\n return this.dataDirectories;\r\n }\r\n\r\n public getSectionHeaders(): S.StructArray | undefined {\r\n return this.sectionHeaders;\r\n }\r\n\r\n //\r\n // Metadata structures.\r\n //\r\n\r\n public getCliHeader(): S.CliHeader | undefined {\r\n if (this.cliHeader != null) return this.cliHeader;\r\n if (!this.isManaged()) return undefined;\r\n\r\n const offset = this.rvaToOffset(this.dataDirectories!\r\n .items[F.ImageDirectoryEntry.IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR]\r\n .VirtualAddress.value);\r\n\r\n this.cliHeader = L.loadCliHeader(this, offset);\r\n return this.cliHeader;\r\n }\r\n\r\n public getMetadataRoot(): S.MetadataRoot | undefined {\r\n if (this.metadataRoot != null) return this.metadataRoot;\r\n\r\n const cliHeader = this.getCliHeader();\r\n if (!cliHeader) return undefined;\r\n\r\n const offset = this.rvaToOffset(cliHeader.MetaData.VirtualAddress.value);\r\n if (!offset) return undefined;\r\n\r\n this.metadataRoot = L.loadMetadataRoot(this, offset);\r\n return this.metadataRoot;\r\n }\r\n\r\n public getMetadataStreamHeaders(): S.StructArray | undefined {\r\n if (this.metadataStreamHeaders != null) return this.metadataStreamHeaders;\r\n\r\n const mdRoot = this.getMetadataRoot();\r\n if (!mdRoot || !mdRoot.Streams.value) return undefined;\r\n\r\n this.metadataStreamHeaders = L.loadStructArrayByCount(\r\n this,\r\n mdRoot._offset + mdRoot._size,\r\n L.loadMetadataStreamHeader,\r\n mdRoot.Streams.value\r\n );\r\n return this.metadataStreamHeaders;\r\n }\r\n\r\n //\r\n // Utilities.\r\n //\r\n\r\n public rvaToOffset(rva: number): number {\r\n const sh = this.getSectionHeaderByRva(rva);\r\n if (!sh) return 0;\r\n\r\n return rva - sh.VirtualAddress.value + sh.PointerToRawData.value;\r\n }\r\n\r\n public offsetToRva(offset: number): number {\r\n const sh = this.getSectionHeaderByOffset(offset);\r\n if (!sh) return 0;\r\n\r\n return offset - sh.PointerToRawData.value + sh.VirtualAddress.value;\r\n }\r\n\r\n //\r\n // Private implementations.\r\n //\r\n\r\n private check(p: number, sz: number): void {\r\n if (p < 0 || p >= this.data.byteLength\r\n || sz < 0 || p + sz > this.data.byteLength) {\r\n throw new E.PEError(E.PEErrorType.INVALID_DATA_POSITION, p, sz);\r\n }\r\n }\r\n\r\n private constructor(buf: ArrayBuffer) {\r\n this.data = new DataView(buf);\r\n this.loadHeaders();\r\n }\r\n\r\n private loadHeaders(): void {\r\n let ptr = 0;\r\n this.dosHeader = L.loadImageDosHeader(this, ptr);\r\n\r\n if (this.dosHeader.e_magic.value != F.IMAGE_DOS_SIGNATURE) {\r\n throw new E.PEError(E.PEErrorType.INVALID_DOS_SIGNATURE, ptr, 2);\r\n }\r\n\r\n ptr = this.dosHeader.e_lfanew.value;\r\n this.peSignature = L.loadU4Field(this, ptr);\r\n\r\n if (this.peSignature.value != F.IMAGE_NT_SIGNATURE) {\r\n throw new E.PEError(E.PEErrorType.INVALID_PE_SIGNATURE, ptr, 4);\r\n }\r\n\r\n ptr += this.peSignature._size;\r\n this.fileHeader = L.loadImageFileHeader(this, ptr);\r\n\r\n ptr += this.fileHeader._size;\r\n const magic = L.loadU2Field(this, ptr);\r\n switch (magic.value) {\r\n case F.IMAGE_NT_OPTIONAL_HDR32_MAGIC:\r\n this.optionalHeader = L.loadImageOptionalHeader32(this, ptr);\r\n break;\r\n case F.IMAGE_NT_OPTIONAL_HDR64_MAGIC:\r\n this.optionalHeader = L.loadImageOptionalHeader64(this, ptr);\r\n break;\r\n default:\r\n throw new E.PEError(E.PEErrorType.INVALID_OPTIONAL_HEADER_MAGIC, ptr, 2);\r\n }\r\n\r\n if (this.optionalHeader.NumberOfRvaAndSizes.value != F.IMAGE_NUMBEROF_DIRECTORY_ENTRIES) {\r\n throw new E.PEError(E.PEErrorType.INVALID_DATA_DIRECTORY_COUNT,\r\n this.optionalHeader.NumberOfRvaAndSizes._offset,\r\n this.optionalHeader.NumberOfRvaAndSizes._size);\r\n }\r\n\r\n ptr += this.optionalHeader._size;\r\n this.dataDirectories = L.loadStructArrayByCount(this, ptr,\r\n L.loadImageDataDirectory,\r\n this.optionalHeader.NumberOfRvaAndSizes.value);\r\n\r\n ptr += this.dataDirectories._size;\r\n this.sectionHeaders = L.loadStructArrayByCount(this, ptr,\r\n L.loadImageSectionHeader,\r\n this.fileHeader.NumberOfSections.value);\r\n }\r\n\r\n private getSectionHeaderByOffset(offset: number): S.ImageSectionHeader | undefined {\r\n return this.sectionHeaders && this.sectionHeaders.items.filter(h => {\r\n const p = h.PointerToRawData.value;\r\n const sz = h.SizeOfRawData.value;\r\n return offset >= p && offset < p + sz;\r\n }).shift();\r\n }\r\n\r\n private getSectionHeaderByRva(rva: number): S.ImageSectionHeader | undefined {\r\n return this.sectionHeaders && this.sectionHeaders.items.filter(h => {\r\n const p = h.VirtualAddress.value;\r\n const sz = h.VirtualSize.value;\r\n return rva >= p && rva < p + sz;\r\n }).shift();\r\n }\r\n\r\n private isDataDirectoryValid(dd?: S.ImageDataDirectory): boolean {\r\n return (dd && dd.VirtualAddress.value > 0 && dd.Size.value > 0) || false;\r\n }\r\n\r\n private readonly data: DataView;\r\n\r\n private dosHeader?: S.ImageDosHeader;\r\n private peSignature?: S.U4Field;\r\n private fileHeader?: S.ImageFileHeader;\r\n private optionalHeader?: S.ImageOptionalHeader32 | S.ImageOptionalHeader64;\r\n private dataDirectories?: S.StructArray;\r\n private sectionHeaders?: S.StructArray;\r\n\r\n private cliHeader?: S.CliHeader;\r\n private metadataRoot?: S.MetadataRoot;\r\n private metadataStreamHeaders?: S.StructArray;\r\n}\r\n","export function createResNavDataMessage(navList: W.NavData[]): W.ResNavDataMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_NAV_DATA,\r\n navList\r\n };\r\n}\r\n\r\nexport function createResPageDataMessage(pageData: W.PageData): W.ResPageDataMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_PAGE_DATA,\r\n pageData\r\n };\r\n}\r\n\r\nexport function createResPEPropsMessage(is32Bit?: boolean, isManaged?: boolean): W.ResPEPropsMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_PE_PROPS,\r\n is32Bit,\r\n isManaged\r\n };\r\n}\r\n\r\nexport function createResPEErrorMessage(error: string): W.ResPEErrorMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_PE_ERROR,\r\n error\r\n };\r\n}\r\n","import * as M from \"./message\";\r\nimport { PEImage } from \"./pe/image\";\r\nimport { generatePageData } from \"./page-data/generator\";\r\nimport { generateNavList } from \"./page-data/nav-data\";\r\n\r\nlet pe: PEImage | null = null;\r\n\r\nonmessage = (ev) => {\r\n const msg = ev.data as W.WorkerMessage;\r\n switch (msg.type) {\r\n case W.WorkerMessageType.REQ_OPEN_FILE:\r\n handleReqOpenFile(msg as W.ReqOpenFileMessage);\r\n break;\r\n\r\n case W.WorkerMessageType.REQ_OPEN_NAV:\r\n handleReqOpenNav(msg as W.ReqOpenNavMessage);\r\n break;\r\n }\r\n};\r\n\r\nfunction handleReqOpenFile(msg: W.ReqOpenFileMessage): void {\r\n let reader = new FileReader();\r\n\r\n reader.onload = ev => {\r\n try {\r\n const buf = (ev.target).result;\r\n pe = PEImage.load(buf);\r\n\r\n // Response with page data.\r\n const pageData = generatePageData(pe, W.PageID.HEADERS);\r\n const pageDataMsg = M.createResPageDataMessage(pageData);\r\n postMessage(pageDataMsg);\r\n\r\n // Response with PE properties.\r\n const is32Bit = pe.is32Bit();\r\n const isManaged = pe.isManaged();\r\n const pePropsMsg = M.createResPEPropsMessage(is32Bit, isManaged);\r\n postMessage(pePropsMsg);\r\n\r\n // Response with navigation data.\r\n const navList = generateNavList(pe);\r\n const navMsg = M.createResNavDataMessage(navList);\r\n postMessage(navMsg);\r\n } catch (ex) {\r\n const msg = M.createResPEErrorMessage(ex.message\r\n || `Unknown error: ${JSON.stringify(ex)}`);\r\n postMessage(msg);\r\n }\r\n };\r\n\r\n reader.onerror = ev => {\r\n pe = null;\r\n const msg = M.createResPEErrorMessage(\"Can't open file.\");\r\n postMessage(msg);\r\n };\r\n\r\n reader.readAsArrayBuffer(msg.file);\r\n}\r\n\r\nfunction handleReqOpenNav(msg: W.ReqOpenNavMessage): void {\r\n if (pe != null) {\r\n const pageData = generatePageData(pe, msg.target.pageID);\r\n pageData.nav.elemID = msg.target.elemID;\r\n const res = M.createResPageDataMessage(pageData);\r\n postMessage(res);\r\n }\r\n}"],"sourceRoot":""} \ No newline at end of file diff --git a/ui.css.map b/ui.css.map index 089b509..892283e 100644 --- a/ui.css.map +++ b/ui.css.map @@ -1 +1 @@ -{"version":3,"file":"ui.css","sources":["ui.scss","_var.scss","_mixin.scss"],"sourcesContent":["@import \"var\";\r\n@import \"mixin\";\r\n\r\nbody, input {\r\n @include txt-normal;\r\n \r\n color: $color-txt;\r\n font-size: $size-txt-mid;\r\n margin: 0;\r\n padding: 0;\r\n}\r\n\r\nstrong {\r\n @include txt-bold;\r\n}\r\n\r\n.info {\r\n color: $color-info-txt;\r\n border: 1px solid $color-info-bdr;\r\n border-radius: 5px;\r\n background: $color-info-bg;\r\n padding: $size-pad-lg;\r\n margin: $size-pad-lg;\r\n}\r\n\r\n.nav {\r\n cursor: pointer;\r\n}\r\n\r\n#app {\r\n display: grid;\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n grid-template-rows: auto 1fr auto;\r\n}\r\n\r\n#app-header {\r\n grid-row: 1;\r\n color: $color-txt;\r\n background: $color-bg-mid;\r\n padding: $size-pad-lg;\r\n\r\n .pg-title {\r\n display: inline-block;\r\n margin: 0 0 $size-pad-mid 0;\r\n font-size: $size-txt-lg;\r\n }\r\n\r\n .pg-finfo {\r\n display: inline-block;\r\n vertical-align: baseline;\r\n margin-left: 2 * $size-pad-lg;\r\n }\r\n\r\n .pg-navlst {\r\n margin: $size-pad-lg 0-$size-pad-lg 0-$size-pad-lg 0-$size-pad-lg;\r\n padding: $size-pad-lg;\r\n background: $color-bg-mid-lt;\r\n\r\n .nav {\r\n margin-left: $size-pad-lg;\r\n text-decoration: underline;\r\n }\r\n\r\n th {\r\n @include txt-bold;\r\n text-align: left;\r\n }\r\n }\r\n}\r\n\r\n#app-content {\r\n grid-row: 2;\r\n overflow: auto;\r\n padding: $size-pad-lg;\r\n\r\n .struct-title {\r\n font-size: $size-txt-mid-lg;\r\n margin: $size-pad-lg 0;\r\n padding: $size-pad-mid $size-pad-lg - $size-pad-mid;\r\n border-left: $size-pad-mid solid;\r\n color: $color-bg-mid-dk;\r\n }\r\n\r\n .struct-table {\r\n @include txt-code;\r\n border-collapse: collapse;\r\n border-bottom: 2px solid $color-txt-mid-lt;\r\n \r\n th, td {\r\n white-space: nowrap;\r\n padding: $size-pad-sm $size-pad-lg;\r\n }\r\n \r\n th {\r\n @include txt-bold;\r\n text-align: left;\r\n }\r\n\r\n .st-hdr {\r\n border-bottom: 1px solid $color-txt-mid-lt;\r\n background: $color-bg-mid-dk;\r\n color: $color-txt-lt;\r\n }\r\n\r\n .st-grphdr{\r\n border-top: 1px solid $color-txt-mid-lt;\r\n border-bottom: 1px solid $color-txt-mid-lt;\r\n background: $color-bg-mid;\r\n }\r\n\r\n .st-tr{\r\n &:nth-child(odd) {\r\n background: $color-bg-lt;\r\n }\r\n\r\n &:nth-child(even) {\r\n background: $color-bg-mid-lt;\r\n }\r\n }\r\n }\r\n\r\n .file-opener {\r\n margin-top: 100px;\r\n text-align: center;\r\n font-size: $size-txt-mid-lg;\r\n\r\n input {\r\n font-size: $size-txt-mid-lg;\r\n }\r\n\r\n .info {\r\n margin-left: auto;\r\n margin-right: auto;\r\n width: fit-content;\r\n }\r\n }\r\n\r\n .top-lnk {\r\n text-align: right;\r\n margin: $size-pad-mid 0;\r\n }\r\n}\r\n\r\n#app-footer {\r\n grid-row: 3;\r\n color: $color-txt-lt;\r\n background: $color-bg-dk;\r\n padding: $size-pad-lg;\r\n white-space: nowrap;\r\n font-size: $size-txt-sm;\r\n\r\n a {\r\n color: $color-txt-lt;\r\n }\r\n\r\n &>div {\r\n display: inline-block;\r\n vertical-align: baseline;\r\n\r\n &:not(:first-child) {\r\n margin-left: 2 * $size-pad-lg;\r\n }\r\n\r\n &>strong {\r\n font-size: $size-txt-mid-lg;\r\n }\r\n }\r\n}","$font-mono: 'Roboto Mono', monospace;\r\n$font-text: 'Roboto', sans-serif;\r\n\r\n$font-w-reg: 400;\r\n$font-w-bold: 700;\r\n\r\n$color-bg-lt: #ffffff;\r\n$color-bg-mid-lt: #e4f0f5;\r\n$color-bg-mid: #83d0f2;\r\n$color-bg-mid-dk: #3f87a6;\r\n$color-bg-dk: #222222;\r\n$color-txt-lt: #ffffff;\r\n$color-txt-mid-lt: #777777;\r\n$color-txt: #222222;\r\n\r\n$color-info-txt: #004085;\r\n$color-info-bg: #cce5ff;\r\n$color-info-bdr: #b8daff;\r\n\r\n$size-pad-sm: 2px;\r\n$size-pad-mid: 4px;\r\n$size-pad-lg: 10px;\r\n\r\n$size-txt-sm: 12px;\r\n$size-txt-mid: 14px;\r\n$size-txt-mid-lg: 18px;\r\n$size-txt-lg: 28px;\r\n","@import \"var\";\r\n@mixin txt-normal {\r\n font-family: $font-text;\r\n font-weight: $font-w-reg;\r\n}\r\n\r\n@mixin txt-bold {\r\n font-family: $font-text;\r\n font-weight: $font-w-bold;\r\n}\r\n\r\n@mixin txt-code {\r\n font-family: $font-mono;\r\n}"],"names":[],"mappings":"AAGA,AAAA,IAAI,CAAE,KAAK,AAAC,CEDR,WAAW,CDDH,QAAQ,CAAE,UAAU,CCE5B,WAAW,CDAF,GAAG,CDGZ,KAAK,CCOG,IAAO,CDNf,SAAS,CCiBE,IAAI,CDhBf,MAAM,CAAE,CAAC,CACT,OAAO,CAAE,CAAC,CACb,AAED,AAAA,MAAM,AAAC,CELH,WAAW,CDNH,QAAQ,CAAE,UAAU,CCO5B,WAAW,CDJD,GAAG,CDUhB,AAED,AAAA,KAAK,AAAC,CACF,KAAK,CCFQ,OAAO,CDGpB,MAAM,CAAE,GAAG,CAAC,KAAK,CCDJ,OAAO,CDEpB,aAAa,CAAE,GAAG,CAClB,UAAU,CCJE,OAAO,CDKnB,OAAO,CCAG,IAAI,CDCd,MAAM,CCDI,IAAI,CDEjB,AAED,AAAA,IAAI,AAAC,CACD,MAAM,CAAE,OAAO,CAClB,AAED,AAAA,IAAI,AAAC,CACD,OAAO,CAAE,IAAI,CACb,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,kBAAkB,CAAE,aAAa,CACpC,AAED,AAAA,WAAW,AAAC,CACR,QAAQ,CAAE,CAAC,CACX,KAAK,CC1BG,IAAO,CD2Bf,UAAU,CChCC,OAAO,CDiClB,OAAO,CCpBG,IAAI,CDiDjB,AAjCD,AAMI,WANO,CAMP,SAAS,AAAC,CACN,OAAO,CAAE,YAAY,CACrB,MAAM,CAAE,CAAC,CAAC,CAAC,CCzBJ,GAAG,CDyBgB,CAAC,CAC3B,SAAS,CCpBH,IAAI,CDqBb,AAVL,AAYI,WAZO,CAYP,SAAS,AAAC,CACN,OAAO,CAAE,YAAY,CACrB,cAAc,CAAE,QAAQ,CACxB,WAAW,CAAE,IAAgB,CAChC,AAhBL,AAkBI,WAlBO,CAkBP,UAAU,AAAC,CACP,MAAM,CCnCA,IAAI,CDmCW,KAAc,CAAC,KAAc,CAAC,KAAc,CACjE,OAAO,CCpCD,IAAI,CDqCV,UAAU,CCnDA,OAAO,CD8DpB,AAhCL,AAuBQ,WAvBG,CAkBP,UAAU,CAKN,IAAI,AAAC,CACD,WAAW,CCxCT,IAAI,CDyCN,eAAe,CAAE,SAAS,CAC7B,AA1BT,AA4BQ,WA5BG,CAkBP,UAAU,CAUN,EAAE,AAAC,CE1DP,WAAW,CDNH,QAAQ,CAAE,UAAU,CCO5B,WAAW,CDJD,GAAG,CD+DL,UAAU,CAAE,IAAI,CACnB,AAIT,AAAA,YAAY,AAAC,CACT,QAAQ,CAAE,CAAC,CACX,QAAQ,CAAE,IAAI,CACd,OAAO,CCtDG,IAAI,CD0HjB,AAvED,AAKI,YALQ,CAKR,aAAa,AAAC,CACV,SAAS,CCrDC,IAAI,CDsDd,MAAM,CC1DA,IAAI,CD0DW,CAAC,CACtB,OAAO,CC5DA,GAAG,CD4Da,GAA4B,CACnD,WAAW,CC7DJ,GAAG,CD6DiB,KAAK,CAChC,KAAK,CCzEK,OAAO,CD0EpB,AAXL,AAaI,YAbQ,CAaR,aAAa,AAAC,CEzEd,WAAW,CDZH,aAAa,CAAE,SAAS,CDuF5B,eAAe,CAAE,QAAQ,CACzB,aAAa,CAAE,GAAG,CAAC,KAAK,CC5Eb,IAAO,CD6GrB,AAjDL,AAkBQ,YAlBI,CAaR,aAAa,CAKT,EAAE,CAlBV,YAAY,CAaR,aAAa,CAKL,EAAE,AAAC,CACH,WAAW,CAAE,MAAM,CACnB,OAAO,CCzEL,GAAG,CAEH,IAAI,CDwET,AArBT,AAuBQ,YAvBI,CAaR,aAAa,CAUT,EAAE,AAAC,CExFP,WAAW,CDNH,QAAQ,CAAE,UAAU,CCO5B,WAAW,CDJD,GAAG,CD6FL,UAAU,CAAE,IAAI,CACnB,AA1BT,AA4BQ,YA5BI,CAaR,aAAa,CAeT,OAAO,AAAC,CACJ,aAAa,CAAE,GAAG,CAAC,KAAK,CCzFjB,IAAO,CD0Fd,UAAU,CC7FJ,OAAO,CD8Fb,KAAK,CC5FF,IAAO,CD6Fb,AAhCT,AAkCQ,YAlCI,CAaR,aAAa,CAqBT,UAAU,AAAA,CACN,UAAU,CAAE,GAAG,CAAC,KAAK,CC/Fd,IAAO,CDgGd,aAAa,CAAE,GAAG,CAAC,KAAK,CChGjB,IAAO,CDiGd,UAAU,CCrGP,OAAO,CDsGb,AAtCT,AAyCY,YAzCA,CAaR,aAAa,CA2BT,MAAM,AACD,UAAW,CAAA,GAAG,CAAE,CACb,UAAU,CC5GZ,IAAO,CD6GR,AA3Cb,AA6CY,YA7CA,CAaR,aAAa,CA2BT,MAAM,AAKD,UAAW,CAAA,IAAI,CAAE,CACd,UAAU,CC/GR,OAAO,CDgHZ,AA/Cb,AAmDI,YAnDQ,CAmDR,YAAY,AAAC,CACT,UAAU,CAAE,KAAK,CACjB,UAAU,CAAE,MAAM,CAClB,SAAS,CCrGC,IAAI,CDgHjB,AAjEL,AAwDQ,YAxDI,CAmDR,YAAY,CAKR,KAAK,AAAC,CACF,SAAS,CCxGH,IAAI,CDyGb,AA1DT,AA4DQ,YA5DI,CAmDR,YAAY,CASR,KAAK,AAAC,CACF,WAAW,CAAE,IAAI,CACjB,YAAY,CAAE,IAAI,CAClB,KAAK,CAAE,WAAW,CACrB,AAhET,AAmEI,YAnEQ,CAmER,QAAQ,AAAC,CACL,UAAU,CAAE,KAAK,CACjB,MAAM,CCzHC,GAAG,CDyHY,CAAC,CAC1B,AAGL,AAAA,WAAW,AAAC,CACR,QAAQ,CAAE,CAAC,CACX,KAAK,CCxIM,IAAO,CDyIlB,UAAU,CC1IA,IAAO,CD2IjB,OAAO,CChIG,IAAI,CDiId,WAAW,CAAE,MAAM,CACnB,SAAS,CChIC,IAAI,CDkJjB,AAxBD,AAQI,WARO,CAQP,CAAC,AAAC,CACE,KAAK,CC/IE,IAAO,CDgJjB,AAVL,AAYI,WAZO,CAYL,GAAG,AAAC,CACF,OAAO,CAAE,YAAY,CACrB,cAAc,CAAE,QAAQ,CAS3B,AAvBL,AAgBQ,WAhBG,CAYL,GAAG,AAIA,IAAK,CAAA,YAAY,CAAE,CAChB,WAAW,CAAE,IAAgB,CAChC,AAlBT,AAoBQ,WApBG,CAYL,GAAG,CAQC,MAAM,AAAC,CACL,SAAS,CC7IH,IAAI,CD8Ib"} \ No newline at end of file +{"version":3,"file":"ui.css","sources":["ui.scss","_var.scss","_mixin.scss"],"sourcesContent":["@import \"var\";\n@import \"mixin\";\n\nbody, input {\n @include txt-normal;\n \n color: $color-txt;\n font-size: $size-txt-mid;\n margin: 0;\n padding: 0;\n}\n\nstrong {\n @include txt-bold;\n}\n\n.info {\n color: $color-info-txt;\n border: 1px solid $color-info-bdr;\n border-radius: 5px;\n background: $color-info-bg;\n padding: $size-pad-lg;\n margin: $size-pad-lg;\n}\n\n.nav {\n cursor: pointer;\n}\n\n#app {\n display: grid;\n position: absolute;\n width: 100%;\n height: 100%;\n grid-template-rows: auto 1fr auto;\n}\n\n#app-header {\n grid-row: 1;\n color: $color-txt;\n background: $color-bg-mid;\n padding: $size-pad-lg;\n\n .pg-title {\n display: inline-block;\n margin: 0 0 $size-pad-mid 0;\n font-size: $size-txt-lg;\n }\n\n .pg-finfo {\n display: inline-block;\n vertical-align: baseline;\n margin-left: 2 * $size-pad-lg;\n }\n\n .pg-navlst {\n margin: $size-pad-lg 0-$size-pad-lg 0-$size-pad-lg 0-$size-pad-lg;\n padding: $size-pad-lg;\n background: $color-bg-mid-lt;\n\n .nav {\n margin-left: $size-pad-lg;\n text-decoration: underline;\n }\n\n th {\n @include txt-bold;\n text-align: left;\n }\n }\n}\n\n#app-content {\n grid-row: 2;\n overflow: auto;\n padding: $size-pad-lg;\n\n .struct-title {\n font-size: $size-txt-mid-lg;\n margin: $size-pad-lg 0;\n padding: $size-pad-mid $size-pad-lg - $size-pad-mid;\n border-left: $size-pad-mid solid;\n color: $color-bg-mid-dk;\n }\n\n .struct-table {\n @include txt-code;\n border-collapse: collapse;\n border-bottom: 2px solid $color-txt-mid-lt;\n \n th, td {\n white-space: nowrap;\n padding: $size-pad-sm $size-pad-lg;\n }\n \n th {\n @include txt-bold;\n text-align: left;\n }\n\n .st-hdr {\n border-bottom: 1px solid $color-txt-mid-lt;\n background: $color-bg-mid-dk;\n color: $color-txt-lt;\n }\n\n .st-grphdr{\n border-top: 1px solid $color-txt-mid-lt;\n border-bottom: 1px solid $color-txt-mid-lt;\n background: $color-bg-mid;\n }\n\n .st-tr{\n &:nth-child(odd) {\n background: $color-bg-lt;\n }\n\n &:nth-child(even) {\n background: $color-bg-mid-lt;\n }\n }\n }\n\n .file-opener {\n margin-top: 100px;\n text-align: center;\n font-size: $size-txt-mid-lg;\n\n input {\n font-size: $size-txt-mid-lg;\n }\n\n .info {\n margin-left: auto;\n margin-right: auto;\n width: fit-content;\n }\n }\n\n .top-lnk {\n text-align: right;\n margin: $size-pad-mid 0;\n }\n}\n\n#app-footer {\n grid-row: 3;\n color: $color-txt-lt;\n background: $color-bg-dk;\n padding: $size-pad-lg;\n white-space: nowrap;\n font-size: $size-txt-sm;\n\n a {\n color: $color-txt-lt;\n }\n\n &>div {\n display: inline-block;\n vertical-align: baseline;\n\n &:not(:first-child) {\n margin-left: 2 * $size-pad-lg;\n }\n\n &>strong {\n font-size: $size-txt-mid-lg;\n }\n }\n}","$font-mono: 'Roboto Mono', monospace;\n$font-text: 'Roboto', sans-serif;\n\n$font-w-reg: 400;\n$font-w-bold: 700;\n\n$color-bg-lt: #ffffff;\n$color-bg-mid-lt: #e4f0f5;\n$color-bg-mid: #83d0f2;\n$color-bg-mid-dk: #3f87a6;\n$color-bg-dk: #222222;\n$color-txt-lt: #ffffff;\n$color-txt-mid-lt: #777777;\n$color-txt: #222222;\n\n$color-info-txt: #004085;\n$color-info-bg: #cce5ff;\n$color-info-bdr: #b8daff;\n\n$size-pad-sm: 2px;\n$size-pad-mid: 4px;\n$size-pad-lg: 10px;\n\n$size-txt-sm: 12px;\n$size-txt-mid: 14px;\n$size-txt-mid-lg: 18px;\n$size-txt-lg: 28px;\n","@import \"var\";\n@mixin txt-normal {\n font-family: $font-text;\n font-weight: $font-w-reg;\n}\n\n@mixin txt-bold {\n font-family: $font-text;\n font-weight: $font-w-bold;\n}\n\n@mixin txt-code {\n font-family: $font-mono;\n}"],"names":[],"mappings":"AAGA,AAAA,IAAI,CAAE,KAAK,AAAC,CEDR,WAAW,CDDH,QAAQ,CAAE,UAAU,CCE5B,WAAW,CDAF,GAAG,CDGZ,KAAK,CCOG,IAAO,CDNf,SAAS,CCiBE,IAAI,CDhBf,MAAM,CAAE,CAAC,CACT,OAAO,CAAE,CAAC,CACb,AAED,AAAA,MAAM,AAAC,CELH,WAAW,CDNH,QAAQ,CAAE,UAAU,CCO5B,WAAW,CDJD,GAAG,CDUhB,AAED,AAAA,KAAK,AAAC,CACF,KAAK,CCFQ,OAAO,CDGpB,MAAM,CAAE,GAAG,CAAC,KAAK,CCDJ,OAAO,CDEpB,aAAa,CAAE,GAAG,CAClB,UAAU,CCJE,OAAO,CDKnB,OAAO,CCAG,IAAI,CDCd,MAAM,CCDI,IAAI,CDEjB,AAED,AAAA,IAAI,AAAC,CACD,MAAM,CAAE,OAAO,CAClB,AAED,AAAA,IAAI,AAAC,CACD,OAAO,CAAE,IAAI,CACb,QAAQ,CAAE,QAAQ,CAClB,KAAK,CAAE,IAAI,CACX,MAAM,CAAE,IAAI,CACZ,kBAAkB,CAAE,aAAa,CACpC,AAED,AAAA,WAAW,AAAC,CACR,QAAQ,CAAE,CAAC,CACX,KAAK,CC1BG,IAAO,CD2Bf,UAAU,CChCC,OAAO,CDiClB,OAAO,CCpBG,IAAI,CDiDjB,AAjCD,AAMI,WANO,CAMP,SAAS,AAAC,CACN,OAAO,CAAE,YAAY,CACrB,MAAM,CAAE,CAAC,CAAC,CAAC,CCzBJ,GAAG,CDyBgB,CAAC,CAC3B,SAAS,CCpBH,IAAI,CDqBb,AAVL,AAYI,WAZO,CAYP,SAAS,AAAC,CACN,OAAO,CAAE,YAAY,CACrB,cAAc,CAAE,QAAQ,CACxB,WAAW,CAAE,IAAgB,CAChC,AAhBL,AAkBI,WAlBO,CAkBP,UAAU,AAAC,CACP,MAAM,CCnCA,IAAI,CDmCW,KAAc,CAAC,KAAc,CAAC,KAAc,CACjE,OAAO,CCpCD,IAAI,CDqCV,UAAU,CCnDA,OAAO,CD8DpB,AAhCL,AAuBQ,WAvBG,CAkBP,UAAU,CAKN,IAAI,AAAC,CACD,WAAW,CCxCT,IAAI,CDyCN,eAAe,CAAE,SAAS,CAC7B,AA1BT,AA4BQ,WA5BG,CAkBP,UAAU,CAUN,EAAE,AAAC,CE1DP,WAAW,CDNH,QAAQ,CAAE,UAAU,CCO5B,WAAW,CDJD,GAAG,CD+DL,UAAU,CAAE,IAAI,CACnB,AAIT,AAAA,YAAY,AAAC,CACT,QAAQ,CAAE,CAAC,CACX,QAAQ,CAAE,IAAI,CACd,OAAO,CCtDG,IAAI,CD0HjB,AAvED,AAKI,YALQ,CAKR,aAAa,AAAC,CACV,SAAS,CCrDC,IAAI,CDsDd,MAAM,CC1DA,IAAI,CD0DW,CAAC,CACtB,OAAO,CC5DA,GAAG,CD4Da,GAA4B,CACnD,WAAW,CC7DJ,GAAG,CD6DiB,KAAK,CAChC,KAAK,CCzEK,OAAO,CD0EpB,AAXL,AAaI,YAbQ,CAaR,aAAa,AAAC,CEzEd,WAAW,CDZH,aAAa,CAAE,SAAS,CDuF5B,eAAe,CAAE,QAAQ,CACzB,aAAa,CAAE,GAAG,CAAC,KAAK,CC5Eb,IAAO,CD6GrB,AAjDL,AAkBQ,YAlBI,CAaR,aAAa,CAKT,EAAE,CAlBV,YAAY,CAaR,aAAa,CAKL,EAAE,AAAC,CACH,WAAW,CAAE,MAAM,CACnB,OAAO,CCzEL,GAAG,CAEH,IAAI,CDwET,AArBT,AAuBQ,YAvBI,CAaR,aAAa,CAUT,EAAE,AAAC,CExFP,WAAW,CDNH,QAAQ,CAAE,UAAU,CCO5B,WAAW,CDJD,GAAG,CD6FL,UAAU,CAAE,IAAI,CACnB,AA1BT,AA4BQ,YA5BI,CAaR,aAAa,CAeT,OAAO,AAAC,CACJ,aAAa,CAAE,GAAG,CAAC,KAAK,CCzFjB,IAAO,CD0Fd,UAAU,CC7FJ,OAAO,CD8Fb,KAAK,CC5FF,IAAO,CD6Fb,AAhCT,AAkCQ,YAlCI,CAaR,aAAa,CAqBT,UAAU,AAAA,CACN,UAAU,CAAE,GAAG,CAAC,KAAK,CC/Fd,IAAO,CDgGd,aAAa,CAAE,GAAG,CAAC,KAAK,CChGjB,IAAO,CDiGd,UAAU,CCrGP,OAAO,CDsGb,AAtCT,AAyCY,YAzCA,CAaR,aAAa,CA2BT,MAAM,AACD,UAAW,CAAA,GAAG,CAAE,CACb,UAAU,CC5GZ,IAAO,CD6GR,AA3Cb,AA6CY,YA7CA,CAaR,aAAa,CA2BT,MAAM,AAKD,UAAW,CAAA,IAAI,CAAE,CACd,UAAU,CC/GR,OAAO,CDgHZ,AA/Cb,AAmDI,YAnDQ,CAmDR,YAAY,AAAC,CACT,UAAU,CAAE,KAAK,CACjB,UAAU,CAAE,MAAM,CAClB,SAAS,CCrGC,IAAI,CDgHjB,AAjEL,AAwDQ,YAxDI,CAmDR,YAAY,CAKR,KAAK,AAAC,CACF,SAAS,CCxGH,IAAI,CDyGb,AA1DT,AA4DQ,YA5DI,CAmDR,YAAY,CASR,KAAK,AAAC,CACF,WAAW,CAAE,IAAI,CACjB,YAAY,CAAE,IAAI,CAClB,KAAK,CAAE,WAAW,CACrB,AAhET,AAmEI,YAnEQ,CAmER,QAAQ,AAAC,CACL,UAAU,CAAE,KAAK,CACjB,MAAM,CCzHC,GAAG,CDyHY,CAAC,CAC1B,AAGL,AAAA,WAAW,AAAC,CACR,QAAQ,CAAE,CAAC,CACX,KAAK,CCxIM,IAAO,CDyIlB,UAAU,CC1IA,IAAO,CD2IjB,OAAO,CChIG,IAAI,CDiId,WAAW,CAAE,MAAM,CACnB,SAAS,CChIC,IAAI,CDkJjB,AAxBD,AAQI,WARO,CAQP,CAAC,AAAC,CACE,KAAK,CC/IE,IAAO,CDgJjB,AAVL,AAYI,WAZO,CAYL,GAAG,AAAC,CACF,OAAO,CAAE,YAAY,CACrB,cAAc,CAAE,QAAQ,CAS3B,AAvBL,AAgBQ,WAhBG,CAYL,GAAG,AAIA,IAAK,CAAA,YAAY,CAAE,CAChB,WAAW,CAAE,IAAgB,CAChC,AAlBT,AAoBQ,WApBG,CAYL,GAAG,CAQC,MAAM,AAAC,CACL,SAAS,CC7IH,IAAI,CD8Ib"} \ No newline at end of file diff --git a/ui.js b/ui.js index 3662465..5db8b31 100644 --- a/ui.js +++ b/ui.js @@ -1,2 +1,2 @@ -!function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=20)}([function(e,t){e.exports=React},function(e,t){e.exports=ReactRedux},function(e,t,n){"use strict";t.__esModule=!0,t.createOpenFileAction=function(e){return{type:"OPEN_FILE",file:e}},t.createOpenNavAction=function(e){return{type:"OPEN_NAV",target:e}},t.createSetNavListAction=function(e){return{type:"SET_NAV_LIST",navList:e}},t.createSetPageDataAction=function(e){return{type:"SET_PAGE_DATA",data:e}},t.createSetPEPropsAction=function(e,t){return{type:"SET_PE_PROPS",is32Bit:e,isManaged:t}}},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(1),c=n(5);var l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){var e=this.props.pageID;if(e){var t={pageID:e,title:"TOP"};return o.createElement("div",{className:"top-lnk"},o.createElement(c.NavLink,{target:t}))}return null},t}(o.Component);t.TopLink=i.connect(function(e){var t=e.pageData;return{pageID:t&&t.nav.pageID}})(l)},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0);function i(e){return o.createElement("h2",{id:e.elemID,className:"struct-title"},e.title)}function c(e,t){var n=e.offset,r=e.size,a=e.rawData,i=e.name,c=e.value;e.descriptions;return o.createElement("tr",{key:t,className:"st-tr"},o.createElement("td",null,n),o.createElement("td",null,r),o.createElement("td",null,a.map(function(e,t){return o.createElement("div",{className:"td-line",key:t},e)})),o.createElement("td",null,i),o.createElement("td",null,c),o.createElement("td",null))}t.renderSimpleStruct=function(e){return o.createElement("div",{className:"struct-data"},i(e),o.createElement(l,null,e.items&&e.items.map(function(e,t){return c(e,t.toString())})))},t.renderGroupedStruct=function(e){return o.createElement("div",{className:"struct-data"},i(e),o.createElement(l,null,e.groups&&e.groups.map(function(e,t){return[(n=e.title,r=t.toString(),o.createElement("tr",{key:r,className:"st-grphdr"},o.createElement("th",{colSpan:6},n)))].concat(e.items&&e.items.map(function(e,n){return c(e,t+"."+n)})||[]);var n,r})))};var l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){return o.createElement("table",{className:"struct-table"},o.createElement("thead",null,o.createElement("tr",{className:"st-hdr"},o.createElement("th",null,"Offset"),o.createElement("th",null,"Size"),o.createElement("th",null,"Raw Data"),o.createElement("th",null,"Name"),o.createElement("th",null,"Value"),o.createElement("th",null,"Description"))),o.createElement("tbody",null,this.props.children))},t}(o.Component)},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(1),c=n(2);var l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){var e=this.props,t=e.target,n=e.extraClass,r=e.onClick,a=t.title,i="nav";return n&&(i+=" "+n),o.createElement("a",{className:i,title:a,onClick:r},a)},t}(o.Component);t.NavLink=i.connect(null,function(e,t){return{onClick:function(){e(c.createOpenNavAction(t.target))}}})(l)},function(e,t){e.exports=Redux},function(e,t,n){"use strict";t.__esModule=!0,t.createReqOpenFileMessage=function(e){return{type:"REQ_OPEN_FILE",file:e}},t.createReqOpenNavMessage=function(e){return{type:"REQ_OPEN_NAV",target:e}}},function(e,t,n){"use strict";t.__esModule=!0;var r,a,o=n(2),i=n(7);t.workerClientMiddleware=function(e){return function(t){return function(n){switch(n.type){case"OPEN_FILE":var a=n.file;r.postMessage(i.createReqOpenFileMessage(a));break;case"OPEN_NAV":var o=n.target,c=e.getState().pageData,l=o.pageID;o.elemID;c&&c.nav.pageID==l||r.postMessage(i.createReqOpenNavMessage(o))}return t(n)}}},t.initWorkerClient=function(e){a=e,(r=new Worker("worker.js")).onmessage=function(e){return function(e){switch(e.type){case"RES_NAV_DATA":var t=e.navList;a.dispatch(o.createSetNavListAction(t));break;case"RES_PAGE_DATA":var n=e.pageData;a.dispatch(o.createSetPageDataAction(n));break;case"RES_PE_PROPS":var r=e,i=r.is32Bit,c=r.isManaged;a.dispatch(o.createSetPEPropsAction(i,c))}}(e.data)}}},function(e,t,n){"use strict";function r(e){setTimeout(function(){var t;e?(t=document.getElementById(e))&&t.scrollIntoView():(t=document.getElementById("app-content"))&&(t.scrollTop=0)},1)}t.__esModule=!0,t.actionListenerMiddleware=function(e){return function(t){return function(n){switch(n.type){case"OPEN_FILE":var a=e.getState().appInfo,o=n.file;document.title=o.name+" - "+a.title;break;case"OPEN_NAV":var i=e.getState().pageData,c=n.target,l=c.pageID,u=c.elemID;i&&i.nav.pageID===l&&r(u);break;case"SET_PAGE_DATA":r(n.data.nav.elemID)}return t(n)}}}},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(1);var c=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){var e=this.props.appInfo,t=e.title,n=e.version,r=e.author,a=e.homepage,i=e.bugsUrl,c=e.buildTimeLocal,l=e.year;return o.createElement("footer",{id:"app-footer"},o.createElement("div",null,o.createElement("strong",null,t)),o.createElement("div",null,"Coypright © ",r," ",l),o.createElement("div",null,"Version ",n),o.createElement("div",null,"Last build: ",c),o.createElement("div",null,o.createElement("a",{href:a,target:"_blank"},"View on GitHub")),o.createElement("div",null,o.createElement("a",{href:i,target:"_blank"},"Report Issue")))},t}(o.Component);t.PageFooter=i.connect(function(e){return{appInfo:e.appInfo}})(c)},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(4),c=n(3),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){var e=this.props.data;return o.createElement("section",{className:"data-page"},i.renderSimpleStruct(e.cliHeader),o.createElement(c.TopLink,null),this.renderMetadataRoot(),this.renderStreamHeaders())},t.prototype.renderMetadataRoot=function(){var e=this.props.data;return e.metadataRoot&&o.createElement(o.Fragment,null,i.renderSimpleStruct(e.metadataRoot),o.createElement(c.TopLink,null))},t.prototype.renderStreamHeaders=function(){var e=this.props.data;return e.streamHeaders&&o.createElement(o.Fragment,null,i.renderGroupedStruct(e.streamHeaders),o.createElement(c.TopLink,null))},t}(o.Component);t.MetadataHeadersPage=l},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(4),c=n(3),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){var e=this.props.data;return o.createElement("section",{className:"data-page"},i.renderSimpleStruct(e.dosHeader),o.createElement(c.TopLink,null),i.renderSimpleStruct(e.peSignature),o.createElement(c.TopLink,null),i.renderSimpleStruct(e.fileHeader),o.createElement(c.TopLink,null),i.renderGroupedStruct(e.optionalHeader),o.createElement(c.TopLink,null),i.renderGroupedStruct(e.dataDirectories),o.createElement(c.TopLink,null),i.renderGroupedStruct(e.sectionHeaders),o.createElement(c.TopLink,null))},t}(o.Component);t.HeadersPage=l},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(1),c=n(2);var l=function(e){function t(t){var n=e.call(this,t)||this;return n.onFileChange=n.onFileChange.bind(n),n}return a(t,e),t.prototype.render=function(){return o.createElement("section",{className:"file-opener"},o.createElement("div",null,"Select a file:"),o.createElement("div",null,o.createElement("input",{type:"file",onChange:this.onFileChange})),o.createElement("div",{className:"info"},"No data would be uploaded, everything is parsed locally."))},t.prototype.onFileChange=function(e){var t=this.props.onFileSelected,n=e.target.files;n&&n.length>0&&t(n[0])},t}(o.Component);t.OpenFilePage=i.connect(null,function(e){return{onFileSelected:function(t){return e(c.createOpenFileAction(t))}}})(l)},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(1),c=n(13),l=n(12),u=n(11);var s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){return o.createElement("section",{id:"app-content"},this.renderContent())},t.prototype.renderContent=function(){var e=this.props.pageData;if(null==e)return o.createElement(c.OpenFilePage,null);switch(e.nav.pageID){case"HEADERS":return o.createElement(l.HeadersPage,{data:e});case"MD_HEADERS":return o.createElement(u.MetadataHeadersPage,{data:e});default:return o.createElement("div",null,"Page not found.")}},t}(o.Component);t.PageContent=i.connect(function(e){return{pageData:e.pageData}})(s)},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(1),c=n(5);var l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){var e=this.props.fileInfo;return o.createElement("header",{id:"app-header"},e?this.renderFileInfo(e):this.renderWelcome())},t.prototype.renderWelcome=function(){return o.createElement("div",{className:"pg-title-line"},o.createElement("h1",{className:"pg-title"},"Welcome to PE Viewer."))},t.prototype.renderFileInfo=function(e){e.name,e.size,e.is32Bit,e.isManaged;return o.createElement(o.Fragment,null,this.renderTitleLine(e),this.renderNavList())},t.prototype.renderTitleLine=function(e){var t=e.name,n=e.size,r=e.is32Bit,a=e.isManaged;return o.createElement("div",{className:"pg-title-line"},o.createElement("h1",{className:"pg-title"},t),o.createElement("div",{className:"pg-finfo"},o.createElement("span",null,n.toLocaleString()," bytes."),null!=r&&o.createElement(o.Fragment,null,o.createElement("span",null," | "),o.createElement("span",null,r?"32-bit":"64-bit")),null!=a&&o.createElement(o.Fragment,null,o.createElement("span",null," | "),o.createElement("span",null,a?"managed":"unmanaged"))))},t.prototype.renderNavList=function(){var e=this.props.navList;return e?o.createElement("div",{className:"pg-navlst"},o.createElement("table",null,o.createElement("tbody",null,e.map(function(e,t){return o.createElement("tr",{key:t},o.createElement("th",null,o.createElement(c.NavLink,{target:e.target})),o.createElement("td",null,e.children&&e.children.map(function(e,t){return o.createElement(c.NavLink,{key:t,target:e.target})})))})))):null},t}(o.Component);t.PageHeader=i.connect(function(e){return{fileInfo:e.fileInfo,navList:e.navList}})(l)},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(15),c=n(14),l=n(10),u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){return o.createElement(o.Fragment,null,o.createElement(i.PageHeader,null),o.createElement(c.PageContent,null),o.createElement(l.PageFooter,null))},t}(o.Component);t.App=u},function(e,t,n){"use strict";t.__esModule=!0;var r=n(6);t.appReducer=r.combineReducers({appInfo:function(e,t){void 0===e&&(e=null);return e},fileInfo:function(e,t){void 0===e&&(e=null);switch(t.type){case"OPEN_FILE":var n=t.file,r=n.name,a=n.size;return Object.assign({},e,{name:r,size:a});case"SET_PE_PROPS":var o=t,i=o.is32Bit,c=o.isManaged;return Object.assign({},e,{is32Bit:i,isManaged:c});default:return e}},pageData:function(e,t){void 0===e&&(e=null);switch(t.type){case"SET_PAGE_DATA":var n=t.data;return n;default:return e}},navList:function(e,t){void 0===e&&(e=[]);switch(t.type){case"SET_NAV_LIST":var n=t.navList;return n;default:return e}}})},function(e){e.exports={title:"PE Viewer",version:"0.0.1",author:"Anders Liu",homepage:"https://github.com/anders-liu/peviewer-dev#readme",bugs_url:"https://github.com/anders-liu/peviewer-dev/issues",build_time:"Tue, 05 Jun 2018 22:26:08 GMT"}},function(e,t){e.exports=ReactDOM},function(e,t,n){"use strict";t.__esModule=!0;var r=n(0),a=n(19),o=n(6),i=n(1),c=n(18),l=n(17),u=n(16),s=n(9),p=n(8),f={title:c.title,version:c.version,author:c.author,homepage:c.homepage,bugsUrl:c.bugs_url,buildTimeLocal:new Date(Date.parse(c.build_time)).toLocaleString(),year:(new Date).getFullYear().toString()},d={appInfo:f,navList:[]};document.title=""+f.title;var m=window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__||o.compose,_=o.createStore(l.appReducer,d,m(o.applyMiddleware(s.actionListenerMiddleware,p.workerClientMiddleware)));p.initWorkerClient(_),a.render(r.createElement(i.Provider,{store:_},r.createElement(u.App,null)),document.getElementById("app"))}]); +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=20)}([function(e,t){e.exports=React},function(e,t){e.exports=ReactRedux},function(e,t,n){"use strict";t.__esModule=!0,t.createOpenFileAction=function(e){return{type:"OPEN_FILE",file:e}},t.createOpenNavAction=function(e){return{type:"OPEN_NAV",target:e}},t.createSetNavListAction=function(e){return{type:"SET_NAV_LIST",navList:e}},t.createSetPageDataAction=function(e){return{type:"SET_PAGE_DATA",data:e}},t.createSetPEPropsAction=function(e,t){return{type:"SET_PE_PROPS",is32Bit:e,isManaged:t}}},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(1),c=n(5);var l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){var e=this.props.pageID;if(e){var t={pageID:e,title:"TOP"};return o.createElement("div",{className:"top-lnk"},o.createElement(c.NavLink,{target:t}))}return null},t}(o.Component);t.TopLink=i.connect(function(e){var t=e.pageData;return{pageID:t&&t.nav.pageID}})(l)},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0);function i(e){return o.createElement("h2",{id:e.elemID,className:"struct-title"},e.title)}function c(e,t){var n=e.offset,r=e.size,a=e.rawData,i=e.name,c=e.value;e.descriptions;return o.createElement("tr",{key:t,className:"st-tr"},o.createElement("td",null,n),o.createElement("td",null,r),o.createElement("td",null,a.map(function(e,t){return o.createElement("div",{className:"td-line",key:t},e)})),o.createElement("td",null,i),o.createElement("td",null,c),o.createElement("td",null))}t.renderSimpleStruct=function(e){return o.createElement("div",{className:"struct-data"},i(e),o.createElement(l,null,e.items&&e.items.map(function(e,t){return c(e,t.toString())})))},t.renderGroupedStruct=function(e){return o.createElement("div",{className:"struct-data"},i(e),o.createElement(l,null,e.groups&&e.groups.map(function(e,t){return[(n=e.title,r=t.toString(),o.createElement("tr",{key:r,className:"st-grphdr"},o.createElement("th",{colSpan:6},n)))].concat(e.items&&e.items.map(function(e,n){return c(e,t+"."+n)})||[]);var n,r})))};var l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){return o.createElement("table",{className:"struct-table"},o.createElement("thead",null,o.createElement("tr",{className:"st-hdr"},o.createElement("th",null,"Offset"),o.createElement("th",null,"Size"),o.createElement("th",null,"Raw Data"),o.createElement("th",null,"Name"),o.createElement("th",null,"Value"),o.createElement("th",null,"Description"))),o.createElement("tbody",null,this.props.children))},t}(o.Component)},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(1),c=n(2);var l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){var e=this.props,t=e.target,n=e.extraClass,r=e.onClick,a=t.title,i="nav";return n&&(i+=" "+n),o.createElement("a",{className:i,title:a,onClick:r},a)},t}(o.Component);t.NavLink=i.connect(null,function(e,t){return{onClick:function(){e(c.createOpenNavAction(t.target))}}})(l)},function(e,t){e.exports=Redux},function(e,t,n){"use strict";t.__esModule=!0,t.createReqOpenFileMessage=function(e){return{type:"REQ_OPEN_FILE",file:e}},t.createReqOpenNavMessage=function(e){return{type:"REQ_OPEN_NAV",target:e}}},function(e,t,n){"use strict";t.__esModule=!0;var r,a,o=n(2),i=n(7);t.workerClientMiddleware=function(e){return function(t){return function(n){switch(n.type){case"OPEN_FILE":var a=n.file;r.postMessage(i.createReqOpenFileMessage(a));break;case"OPEN_NAV":var o=n.target,c=e.getState().pageData,l=o.pageID;o.elemID;c&&c.nav.pageID==l||r.postMessage(i.createReqOpenNavMessage(o))}return t(n)}}},t.initWorkerClient=function(e){a=e,(r=new Worker("worker.js")).onmessage=function(e){return function(e){switch(e.type){case"RES_NAV_DATA":var t=e.navList;a.dispatch(o.createSetNavListAction(t));break;case"RES_PAGE_DATA":var n=e.pageData;a.dispatch(o.createSetPageDataAction(n));break;case"RES_PE_PROPS":var r=e,i=r.is32Bit,c=r.isManaged;a.dispatch(o.createSetPEPropsAction(i,c))}}(e.data)}}},function(e,t,n){"use strict";function r(e){setTimeout(function(){var t;e?(t=document.getElementById(e))&&t.scrollIntoView():(t=document.getElementById("app-content"))&&(t.scrollTop=0)},1)}t.__esModule=!0,t.actionListenerMiddleware=function(e){return function(t){return function(n){switch(n.type){case"OPEN_FILE":var a=e.getState().appInfo,o=n.file;document.title=o.name+" - "+a.title;break;case"OPEN_NAV":var i=e.getState().pageData,c=n.target,l=c.pageID,u=c.elemID;i&&i.nav.pageID===l&&r(u);break;case"SET_PAGE_DATA":r(n.data.nav.elemID)}return t(n)}}}},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(1);var c=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){var e=this.props.appInfo,t=e.title,n=e.version,r=e.author,a=e.homepage,i=e.bugsUrl,c=e.releaseNotesUrl,l=e.buildTimeLocal,u=e.year;return o.createElement("footer",{id:"app-footer"},o.createElement("div",null,o.createElement("strong",null,t)),o.createElement("div",null,"Coypright © ",r," ",u),o.createElement("div",null,"Version ",n),o.createElement("div",null,"Last build: ",l),o.createElement("div",null,o.createElement("a",{href:c+"#"+n,target:"_blank"},"Release Notes")),o.createElement("div",null,o.createElement("a",{href:"/latest",target:"_blank"},"Try Latest Build")),o.createElement("div",null,o.createElement("a",{href:a,target:"_blank"},"View on GitHub")),o.createElement("div",null,o.createElement("a",{href:i,target:"_blank"},"Report Issue")))},t}(o.Component);t.PageFooter=i.connect(function(e){return{appInfo:e.appInfo}})(c)},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(4),c=n(3),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){var e=this.props.data;return o.createElement("section",{className:"data-page"},i.renderSimpleStruct(e.cliHeader),o.createElement(c.TopLink,null),this.renderMetadataRoot(),this.renderStreamHeaders())},t.prototype.renderMetadataRoot=function(){var e=this.props.data;return e.metadataRoot&&o.createElement(o.Fragment,null,i.renderSimpleStruct(e.metadataRoot),o.createElement(c.TopLink,null))},t.prototype.renderStreamHeaders=function(){var e=this.props.data;return e.streamHeaders&&o.createElement(o.Fragment,null,i.renderGroupedStruct(e.streamHeaders),o.createElement(c.TopLink,null))},t}(o.Component);t.MetadataHeadersPage=l},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(4),c=n(3),l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){var e=this.props.data;return o.createElement("section",{className:"data-page"},i.renderSimpleStruct(e.dosHeader),o.createElement(c.TopLink,null),i.renderSimpleStruct(e.peSignature),o.createElement(c.TopLink,null),i.renderSimpleStruct(e.fileHeader),o.createElement(c.TopLink,null),i.renderGroupedStruct(e.optionalHeader),o.createElement(c.TopLink,null),i.renderGroupedStruct(e.dataDirectories),o.createElement(c.TopLink,null),i.renderGroupedStruct(e.sectionHeaders),o.createElement(c.TopLink,null))},t}(o.Component);t.HeadersPage=l},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(1),c=n(2);var l=function(e){function t(t){var n=e.call(this,t)||this;return n.onFileChange=n.onFileChange.bind(n),n}return a(t,e),t.prototype.render=function(){return o.createElement("section",{className:"file-opener"},o.createElement("div",null,"Select a file:"),o.createElement("div",null,o.createElement("input",{type:"file",onChange:this.onFileChange})),o.createElement("div",{className:"info"},"No data would be uploaded, everything is parsed locally."))},t.prototype.onFileChange=function(e){var t=this.props.onFileSelected,n=e.target.files;n&&n.length>0&&t(n[0])},t}(o.Component);t.OpenFilePage=i.connect(null,function(e){return{onFileSelected:function(t){return e(c.createOpenFileAction(t))}}})(l)},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(1),c=n(13),l=n(12),u=n(11);var s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){return o.createElement("section",{id:"app-content"},this.renderContent())},t.prototype.renderContent=function(){var e=this.props.pageData;if(null==e)return o.createElement(c.OpenFilePage,null);switch(e.nav.pageID){case"HEADERS":return o.createElement(l.HeadersPage,{data:e});case"MD_HEADERS":return o.createElement(u.MetadataHeadersPage,{data:e});default:return o.createElement("div",null,"Page not found.")}},t}(o.Component);t.PageContent=i.connect(function(e){return{pageData:e.pageData}})(s)},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(1),c=n(5);var l=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){var e=this.props.fileInfo;return o.createElement("header",{id:"app-header"},e?this.renderFileInfo(e):this.renderWelcome())},t.prototype.renderWelcome=function(){return o.createElement("div",{className:"pg-title-line"},o.createElement("h1",{className:"pg-title"},"Welcome to PE Viewer."))},t.prototype.renderFileInfo=function(e){e.name,e.size,e.is32Bit,e.isManaged;return o.createElement(o.Fragment,null,this.renderTitleLine(e),this.renderNavList())},t.prototype.renderTitleLine=function(e){var t=e.name,n=e.size,r=e.is32Bit,a=e.isManaged;return o.createElement("div",{className:"pg-title-line"},o.createElement("h1",{className:"pg-title"},t),o.createElement("div",{className:"pg-finfo"},o.createElement("span",null,n.toLocaleString()," bytes."),null!=r&&o.createElement(o.Fragment,null,o.createElement("span",null," | "),o.createElement("span",null,r?"32-bit":"64-bit")),null!=a&&o.createElement(o.Fragment,null,o.createElement("span",null," | "),o.createElement("span",null,a?"managed":"unmanaged"))))},t.prototype.renderNavList=function(){var e=this.props.navList;return e?o.createElement("div",{className:"pg-navlst"},o.createElement("table",null,o.createElement("tbody",null,e.map(function(e,t){return o.createElement("tr",{key:t},o.createElement("th",null,o.createElement(c.NavLink,{target:e.target})),o.createElement("td",null,e.children&&e.children.map(function(e,t){return o.createElement(c.NavLink,{key:t,target:e.target})})))})))):null},t}(o.Component);t.PageHeader=i.connect(function(e){return{fileInfo:e.fileInfo,navList:e.navList}})(l)},function(e,t,n){"use strict";var r,a=this&&this.__extends||(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});t.__esModule=!0;var o=n(0),i=n(15),c=n(14),l=n(10),u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.render=function(){return o.createElement(o.Fragment,null,o.createElement(i.PageHeader,null),o.createElement(c.PageContent,null),o.createElement(l.PageFooter,null))},t}(o.Component);t.App=u},function(e,t,n){"use strict";t.__esModule=!0;var r=n(6);t.appReducer=r.combineReducers({appInfo:function(e,t){void 0===e&&(e=null);return e},fileInfo:function(e,t){void 0===e&&(e=null);switch(t.type){case"OPEN_FILE":var n=t.file,r=n.name,a=n.size;return Object.assign({},e,{name:r,size:a});case"SET_PE_PROPS":var o=t,i=o.is32Bit,c=o.isManaged;return Object.assign({},e,{is32Bit:i,isManaged:c});default:return e}},pageData:function(e,t){void 0===e&&(e=null);switch(t.type){case"SET_PAGE_DATA":var n=t.data;return n;default:return e}},navList:function(e,t){void 0===e&&(e=[]);switch(t.type){case"SET_NAV_LIST":var n=t.navList;return n;default:return e}}})},function(e){e.exports={title:"PE Viewer",version:"0.1.0",author:"Anders Liu",homepage:"https://github.com/anders-liu/peviewer-dev#readme",bugs_url:"https://github.com/anders-liu/peviewer-dev/issues",release_notes:"https://github.com/anders-liu/peviewer/blob/master/RELEASES.md",build_time:"Wed, 06 Jun 2018 04:51:37 GMT"}},function(e,t){e.exports=ReactDOM},function(e,t,n){"use strict";t.__esModule=!0;var r=n(0),a=n(19),o=n(6),i=n(1),c=n(18),l=n(17),u=n(16),s=n(9),p=n(8),f={title:c.title,version:c.version,author:c.author,homepage:c.homepage,bugsUrl:c.bugs_url,releaseNotesUrl:c.release_notes,buildTimeLocal:new Date(Date.parse(c.build_time)).toLocaleString(),year:(new Date).getFullYear().toString()},d={appInfo:f,navList:[]};document.title=""+f.title;var m=window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__||o.compose,_=o.createStore(l.appReducer,d,m(o.applyMiddleware(s.actionListenerMiddleware,p.workerClientMiddleware)));p.initWorkerClient(_),a.render(r.createElement(i.Provider,{store:_},r.createElement(u.App,null)),document.getElementById("app"))}]); //# sourceMappingURL=ui.js.map \ No newline at end of file diff --git a/ui.js.map b/ui.js.map index b7f8772..6efe0ea 100644 --- a/ui.js.map +++ b/ui.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"React\"","webpack:///external \"ReactRedux\"","webpack:///./src/ui/scripts/store/actions.ts","webpack:///./src/ui/scripts/components/top-link.tsx","webpack:///./src/ui/scripts/components/struct-data.tsx","webpack:///./src/ui/scripts/components/nav-link.tsx","webpack:///external \"Redux\"","webpack:///./src/ui/scripts/worker-message.ts","webpack:///./src/ui/scripts/worker-client.ts","webpack:///./src/ui/scripts/action-listener.ts","webpack:///./src/ui/scripts/components/page-footer.tsx","webpack:///./src/ui/scripts/components/md-headers-page.tsx","webpack:///./src/ui/scripts/components/headers-page.tsx","webpack:///./src/ui/scripts/components/open-file-page.tsx","webpack:///./src/ui/scripts/components/page-content.tsx","webpack:///./src/ui/scripts/components/page-header.tsx","webpack:///./src/ui/scripts/components/app.tsx","webpack:///./src/ui/scripts/store/reducers.ts","webpack:///external \"ReactDOM\"","webpack:///./src/ui/scripts/index.tsx"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","object","property","prototype","hasOwnProperty","p","s","React","ReactRedux","createOpenFileAction","file","type","createOpenNavAction","target","createSetNavListAction","navList","createSetPageDataAction","data","createSetPEPropsAction","is32Bit","isManaged","nav_link_1","TopLinkClass","_super","__extends","render","pageID","this","props","title","createElement","className","NavLink","Component","TopLink","connect","state","pageData","nav","renderStructTitle","id","elemID","renderStructItemRow","item","key","offset","size","rawData","descriptions","map","v","renderSimpleStruct","StructTable","items","toString","renderGroupedStruct","groups","gv","gi","colSpan","concat","children","A","NavLinkClass","_a","extraClass","onClick","dispatch","ownProps","Redux","createReqOpenFileMessage","createReqOpenNavMessage","_worker","_store","WM","workerClientMiddleware","store","next","action","postMessage","getState","initWorkerClient","Worker","onmessage","ev","msg","handleMessage","scrollElement","setTimeout","elem","document","getElementById","scrollIntoView","scrollTop","actionListenerMiddleware","appInfo","PageFooterClass","version","author","homepage","bugsUrl","buildTimeLocal","year","href","PageFooter","struct_data_1","top_link_1","MetadataHeadersPage","cliHeader","renderMetadataRoot","renderStreamHeaders","metadataRoot","Fragment","streamHeaders","HeadersPage","dosHeader","peSignature","fileHeader","optionalHeader","dataDirectories","sectionHeaders","OpenFilePageClass","_this","onFileChange","bind","onChange","onFileSelected","fileList","files","length","OpenFilePage","open_file_page_1","headers_page_1","md_headers_page_1","PageContentClass","renderContent","PageContent","PageHeaderClass","fileInfo","renderFileInfo","renderWelcome","renderTitleLine","renderNavList","toLocaleString","cv","ci","PageHeader","page_header_1","page_content_1","page_footer_1","App","appReducer","combineReducers","name_1","assign","navList_1","ReactDOM","packageJson","R","app_1","action_listener_1","worker_client_1","bugs_url","Date","parse","build_time","getFullYear","defaultState","composeEnhancers","window","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","createStore","applyMiddleware","Provider"],"mappings":"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","file":"ui.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 20);\n","module.exports = React;","module.exports = ReactRedux;","import * as Redux from \"redux\";\r\n\r\nexport const enum ActionType {\r\n OPEN_FILE = \"OPEN_FILE\",\r\n OPEN_NAV = \"OPEN_NAV\",\r\n\r\n SET_NAV_LIST = \"SET_NAV_LIST\",\r\n SET_PAGE_DATA = \"SET_PAGE_DATA\",\r\n SET_PE_PROPS = \"SET_PE_PROPS\",\r\n SET_WORKER_ERROR = \"SET_WORKER_ERROR\",\r\n}\r\n\r\nexport interface OpenFileAction extends Redux.Action {\r\n file: File;\r\n}\r\n\r\nexport function createOpenFileAction(file: File): OpenFileAction {\r\n return { type: ActionType.OPEN_FILE, file };\r\n}\r\n\r\nexport interface OpenNavAction extends Redux.Action {\r\n target: W.NavTarget;\r\n}\r\n\r\nexport function createOpenNavAction(target: W.NavTarget): OpenNavAction {\r\n return { type: ActionType.OPEN_NAV, target };\r\n}\r\n\r\nexport interface SetNavListAction extends Redux.Action {\r\n navList: W.NavData[];\r\n}\r\n\r\nexport function createSetNavListAction(navList: W.NavData[]): SetNavListAction {\r\n return { type: ActionType.SET_NAV_LIST, navList };\r\n}\r\n\r\nexport interface SetPageDataAction extends Redux.Action {\r\n data: W.PageData;\r\n}\r\n\r\nexport function createSetPageDataAction(data: W.PageData): SetPageDataAction {\r\n return { type: ActionType.SET_PAGE_DATA, data };\r\n}\r\n\r\nexport interface SetPEPropsAction extends Redux.Action {\r\n is32Bit?: boolean;\r\n isManaged?: boolean;\r\n}\r\n\r\nexport function createSetPEPropsAction(is32Bit?: boolean, isManaged?: boolean): SetPEPropsAction {\r\n return { type: ActionType.SET_PE_PROPS, is32Bit, isManaged };\r\n}","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as S from \"../store/state\";\r\nimport { NavLink } from \"./nav-link\";\r\n\r\nexport interface ConnectedProps {\r\n pageID?: W.PageID;\r\n}\r\n\r\nfunction mapStateToProps(state: S.AppState): ConnectedProps {\r\n const { pageData } = state;\r\n\r\n return {\r\n pageID: pageData && pageData.nav.pageID\r\n };\r\n}\r\n\r\nclass TopLinkClass extends React.Component {\r\n public render(): JSX.Element | null {\r\n const { pageID } = this.props;\r\n\r\n if (!pageID) {\r\n return null;\r\n } else {\r\n const target: W.NavTarget = {\r\n pageID,\r\n title: W.KnownTitle.TOP\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport const TopLink = ReactRedux.connect(mapStateToProps)(TopLinkClass);","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nexport function renderSimpleStruct(s: W.SimpleStruct): JSX.Element {\r\n return (\r\n
\r\n {renderStructTitle(s)}\r\n \r\n {s.items && s.items.map((v, i) => renderStructItemRow(v, i.toString()))}\r\n \r\n
\r\n );\r\n}\r\n\r\nexport function renderGroupedStruct(s: W.GroupedStruct): JSX.Element {\r\n return (\r\n
\r\n {renderStructTitle(s)}\r\n \r\n {s.groups && s.groups.map((gv, gi) => {\r\n return [\r\n renderStructGroupTitleRow(gv.title, gi.toString())\r\n ].concat(gv.items && gv.items.map((v, i) =>\r\n renderStructItemRow(v, `${gi}.${i}`)) || []);\r\n })}\r\n \r\n
\r\n );\r\n}\r\n\r\nfunction renderStructTitle(s: W.StructData): JSX.Element {\r\n return

{s.title}

;\r\n}\r\n\r\nfunction renderStructItemRow(item: W.StructItem, key: string): JSX.Element {\r\n const { offset, size, rawData, name, value, descriptions } = item;\r\n return (\r\n \r\n {offset}\r\n {size}\r\n {rawData.map((v, i) =>
{v}
)}\r\n {name}\r\n {value}\r\n \r\n \r\n );\r\n}\r\n\r\nfunction renderStructGroupTitleRow(title: string, key: string): JSX.Element {\r\n return ({title});\r\n}\r\n\r\nclass StructTable extends React.Component {\r\n public render(): JSX.Element {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.props.children}\r\n \r\n
OffsetSizeRaw DataNameValueDescription
\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as A from \"../store/actions\";\r\nimport * as S from \"../store/state\";\r\n\r\nexport interface NavLinkProps {\r\n target: W.NavTarget;\r\n extraClass?: string;\r\n}\r\n\r\ninterface ConnectedEvents {\r\n onClick: () => void;\r\n}\r\n\r\nfunction mapDispatchToEvents(dispatch: ReactRedux.Dispatch, ownProps: NavLinkProps): ConnectedEvents {\r\n return {\r\n onClick: () => { dispatch(A.createOpenNavAction(ownProps.target)); }\r\n };\r\n}\r\n\r\nclass NavLinkClass extends React.Component {\r\n public render(): JSX.Element {\r\n const { target, extraClass, onClick } = this.props;\r\n const { title } = target;\r\n\r\n let className = \"nav\";\r\n if (extraClass) {\r\n className += \" \" + extraClass;\r\n }\r\n\r\n return (\r\n {title}\r\n );\r\n }\r\n}\r\n\r\nexport const NavLink = ReactRedux.connect(null, mapDispatchToEvents)(NavLinkClass);","module.exports = Redux;","/// \r\n\r\nexport function createReqOpenFileMessage(file: File): W.ReqOpenFileMessage {\r\n return {\r\n type: W.WorkerMessageType.REQ_OPEN_FILE,\r\n file\r\n };\r\n}\r\n\r\nexport function createReqOpenNavMessage(target: W.NavTarget): W.ReqOpenNavMessage {\r\n return {\r\n type: W.WorkerMessageType.REQ_OPEN_NAV,\r\n target\r\n };\r\n}","/// \r\n\r\nimport * as Redux from \"redux\";\r\n\r\nimport * as A from \"./store/actions\";\r\nimport * as S from \"./store/state\";\r\nimport * as WM from \"./worker-message\";\r\n\r\nexport const workerClientMiddleware = ((store: Redux.MiddlewareAPI) => (next: Redux.Dispatch) => (action: Redux.Action) => {\r\n switch (action.type) {\r\n case A.ActionType.OPEN_FILE: {\r\n const { file } = action as A.OpenFileAction;\r\n _worker.postMessage(WM.createReqOpenFileMessage(file));\r\n break;\r\n }\r\n case A.ActionType.OPEN_NAV: {\r\n const { target } = action as A.OpenNavAction;\r\n const { pageData } = store.getState();\r\n const { pageID, elemID } = target;\r\n if (!pageData || pageData.nav.pageID != pageID) {\r\n _worker.postMessage(WM.createReqOpenNavMessage(target));\r\n }\r\n break;\r\n }\r\n }\r\n return next(action);\r\n}) as Redux.Middleware;\r\n\r\nexport function initWorkerClient(store: Redux.Store): void {\r\n _store = store;\r\n _worker = new Worker(\"worker.js\");\r\n _worker.onmessage = ev => handleMessage(ev.data);\r\n}\r\n\r\nfunction handleMessage(msg: W.WorkerMessage): void {\r\n switch (msg.type) {\r\n case W.WorkerMessageType.RES_NAV_DATA:\r\n const { navList } = msg;\r\n _store.dispatch(A.createSetNavListAction(navList));\r\n break;\r\n\r\n case W.WorkerMessageType.RES_PAGE_DATA:\r\n const { pageData } = msg;\r\n _store.dispatch(A.createSetPageDataAction(pageData));\r\n break;\r\n\r\n case W.WorkerMessageType.RES_PE_PROPS:\r\n const { is32Bit, isManaged } = msg;\r\n _store.dispatch(A.createSetPEPropsAction(is32Bit, isManaged));\r\n break;\r\n\r\n case W.WorkerMessageType.RES_PE_ERROR:\r\n break;\r\n }\r\n}\r\n\r\nlet _worker: Worker;\r\nlet _store: Redux.Store;\r\n","import * as Redux from \"redux\";\r\n\r\nimport * as A from \"./store/actions\";\r\nimport * as S from \"./store/state\";\r\n\r\nexport const actionListenerMiddleware = ((store: Redux.MiddlewareAPI) => (next: Redux.Dispatch) => (action: Redux.Action) => {\r\n switch (action.type) {\r\n case A.ActionType.OPEN_FILE: {\r\n const { appInfo } = store.getState();\r\n const { file } = action as A.OpenFileAction;\r\n document.title = `${file.name} - ${appInfo.title}`\r\n break;\r\n }\r\n\r\n case A.ActionType.OPEN_NAV: {\r\n const { pageData } = store.getState();\r\n const { target } = action as A.OpenNavAction;\r\n const { pageID, elemID } = target;\r\n if (pageData && pageData.nav.pageID === pageID) {\r\n scrollElement(elemID);\r\n }\r\n break;\r\n }\r\n\r\n case A.ActionType.SET_PAGE_DATA: {\r\n const { data } = action as A.SetPageDataAction;\r\n scrollElement(data.nav.elemID);\r\n break;\r\n }\r\n }\r\n return next(action);\r\n}) as Redux.Middleware;\r\n\r\nfunction scrollElement(elemID?: string): void {\r\n setTimeout(() => {\r\n if (elemID) {\r\n const elem = document.getElementById(elemID);\r\n if (elem) {\r\n elem.scrollIntoView();\r\n }\r\n } else {\r\n const elem = document.getElementById(\"app-content\");\r\n if (elem) {\r\n elem.scrollTop = 0;\r\n }\r\n }\r\n }, 1);\r\n}","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as S from \"../store/state\";\r\n\r\ninterface ConnectedProps {\r\n appInfo: S.AppInfo;\r\n}\r\n\r\nfunction mapStateToProps(state: S.AppState): ConnectedProps {\r\n const { appInfo } = state;\r\n return {\r\n appInfo\r\n };\r\n}\r\n\r\nclass PageFooterClass extends React.Component {\r\n public render(): JSX.Element {\r\n const { appInfo } = this.props;\r\n const { title, version, author, homepage, bugsUrl, buildTimeLocal, year } = appInfo;\r\n\r\n return (\r\n
\r\n
{title}
\r\n
Coypright © {author} {year}
\r\n
Version {version}
\r\n
Last build: {buildTimeLocal}
\r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nexport const PageFooter = ReactRedux.connect(mapStateToProps)(PageFooterClass);\r\n","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport { renderSimpleStruct, renderGroupedStruct } from \"./struct-data\";\r\nimport { TopLink } from \"./top-link\";\r\n\r\ninterface MetadataHeadersPageProps {\r\n data: W.MetadataHeadersPageData;\r\n}\r\n\r\nexport class MetadataHeadersPage extends React.Component {\r\n public render(): JSX.Element | null {\r\n const { data } = this.props;\r\n\r\n return (\r\n
\r\n {renderSimpleStruct(data.cliHeader)}\r\n \r\n {this.renderMetadataRoot()}\r\n {this.renderStreamHeaders()}\r\n
\r\n );\r\n }\r\n\r\n public renderMetadataRoot(): JSX.Element | undefined {\r\n const { data } = this.props;\r\n return data.metadataRoot && (\r\n \r\n {renderSimpleStruct(data.metadataRoot)}\r\n \r\n \r\n );\r\n }\r\n\r\n public renderStreamHeaders(): JSX.Element | undefined {\r\n const { data } = this.props;\r\n return data.streamHeaders && (\r\n \r\n {renderGroupedStruct(data.streamHeaders)}\r\n \r\n \r\n );\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport { renderSimpleStruct, renderGroupedStruct } from \"./struct-data\";\r\nimport { TopLink } from \"./top-link\";\r\n\r\ninterface HeadersPageProps {\r\n data: W.HeadersPageData;\r\n}\r\n\r\nexport class HeadersPage extends React.Component {\r\n public render(): JSX.Element | null {\r\n const { data } = this.props;\r\n\r\n return (\r\n
\r\n {renderSimpleStruct(data.dosHeader)}\r\n \r\n {renderSimpleStruct(data.peSignature)}\r\n \r\n {renderSimpleStruct(data.fileHeader)}\r\n \r\n {renderGroupedStruct(data.optionalHeader)}\r\n \r\n {renderGroupedStruct(data.dataDirectories)}\r\n \r\n {renderGroupedStruct(data.sectionHeaders)}\r\n \r\n
\r\n );\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as A from \"../store/actions\";\r\nimport * as S from \"../store/state\";\r\n\r\ninterface ConnectedEvents {\r\n onFileSelected: (file: File) => void;\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: ReactRedux.Dispatch): ConnectedEvents {\r\n return {\r\n onFileSelected: (file) => dispatch(A.createOpenFileAction(file))\r\n };\r\n}\r\n\r\nclass OpenFilePageClass extends React.Component {\r\n public constructor(props: any) {\r\n super(props);\r\n this.onFileChange = this.onFileChange.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n
Select a file:
\r\n
\r\n
No data would be uploaded, everything is parsed locally.
\r\n
\r\n )\r\n }\r\n\r\n private onFileChange(ev: React.ChangeEvent): void {\r\n const { onFileSelected } = this.props;\r\n const fileList = ev.target.files;\r\n if (fileList && fileList.length > 0) {\r\n onFileSelected(fileList[0]);\r\n }\r\n }\r\n}\r\n\r\nexport const OpenFilePage = ReactRedux.connect(null, mapDispatchToProps)(OpenFilePageClass);\r\n","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as S from \"../store/state\";\r\n\r\nimport { OpenFilePage } from \"./open-file-page\";\r\nimport { HeadersPage } from \"./headers-page\";\r\nimport { MetadataHeadersPage } from \"./md-headers-page\";\r\n\r\ninterface ConnectedProps {\r\n pageData?: W.PageData;\r\n}\r\n\r\nfunction mapStateToProps(state: S.AppState): ConnectedProps {\r\n const { pageData } = state;\r\n\r\n return {\r\n pageData\r\n };\r\n}\r\n\r\nclass PageContentClass extends React.Component {\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n {this.renderContent()}\r\n
\r\n )\r\n }\r\n\r\n private renderContent(): JSX.Element {\r\n const { pageData } = this.props;\r\n\r\n if (pageData == null) {\r\n return ;\r\n }\r\n\r\n switch (pageData.nav.pageID) {\r\n case W.PageID.HEADERS:\r\n return ;\r\n case W.PageID.MD_HEADERS:\r\n return ;\r\n default:\r\n return
Page not found.
;\r\n }\r\n }\r\n}\r\n\r\nexport const PageContent = ReactRedux.connect(mapStateToProps)(PageContentClass);\r\n","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as S from \"../store/state\";\r\nimport { NavLink } from \"./nav-link\";\r\n\r\ninterface ConnectedProps {\r\n fileInfo?: S.FileInfo;\r\n navList: W.NavData[];\r\n}\r\n\r\nfunction mapStateToProps(state: S.AppState): ConnectedProps {\r\n const { fileInfo, navList } = state;\r\n\r\n return {\r\n fileInfo,\r\n navList\r\n };\r\n}\r\n\r\nclass PageHeaderClass extends React.Component {\r\n public render(): JSX.Element {\r\n const { fileInfo } = this.props;\r\n\r\n return (\r\n
\r\n {fileInfo ? this.renderFileInfo(fileInfo) : this.renderWelcome()}\r\n
\r\n )\r\n }\r\n\r\n private renderWelcome(): JSX.Element {\r\n return (\r\n
\r\n

Welcome to PE Viewer.

\r\n
\r\n );\r\n }\r\n\r\n private renderFileInfo(fileInfo: S.FileInfo): JSX.Element {\r\n const { name, size, is32Bit, isManaged } = fileInfo;\r\n\r\n return (\r\n \r\n {this.renderTitleLine(fileInfo)}\r\n {this.renderNavList()}\r\n \r\n );\r\n }\r\n\r\n private renderTitleLine(fileInfo: S.FileInfo): JSX.Element {\r\n const { name, size, is32Bit, isManaged } = fileInfo;\r\n\r\n return (\r\n
\r\n

{name}

\r\n
\r\n {size.toLocaleString()} bytes.\r\n\r\n {is32Bit != null && (\r\n \r\n | \r\n {is32Bit ? \"32-bit\" : \"64-bit\"}\r\n \r\n )}\r\n\r\n {isManaged != null && (\r\n \r\n | \r\n {isManaged ? \"managed\" : \"unmanaged\"}\r\n \r\n )}\r\n
\r\n
\r\n );\r\n }\r\n\r\n private renderNavList(): JSX.Element | null {\r\n const { navList } = this.props;\r\n if (!navList) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n {navList.map((v, i) => (\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
\r\n {v.children && v.children.map((cv, ci) => (\r\n \r\n ))}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport const PageHeader = ReactRedux.connect(mapStateToProps)(PageHeaderClass);","import * as React from \"react\";\r\n\r\nimport { PageHeader } from \"./page-header\";\r\nimport { PageContent } from \"./page-content\";\r\nimport { PageFooter } from \"./page-footer\";\r\n\r\nexport class App extends React.Component {\r\n public render(): JSX.Element {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n}","import * as Redux from \"redux\";\r\nimport * as A from \"./actions\";\r\nimport * as S from \"./state\";\r\n\r\nexport const appReducer = Redux.combineReducers({\r\n appInfo,\r\n fileInfo,\r\n pageData,\r\n navList,\r\n}) as Redux.Reducer;\r\n\r\nfunction appInfo(state: S.AppInfo | null = null, action: Redux.Action): S.AppInfo | null {\r\n return state;\r\n}\r\n\r\nfunction fileInfo(state: S.FileInfo | null = null, action: Redux.Action): S.FileInfo | null {\r\n switch (action.type) {\r\n case A.ActionType.OPEN_FILE: {\r\n const { file } = action as A.OpenFileAction;\r\n const { name, size } = file;\r\n return Object.assign({}, state, { name, size });\r\n }\r\n\r\n case A.ActionType.SET_PE_PROPS: {\r\n const { is32Bit, isManaged } = action as A.SetPEPropsAction;\r\n return Object.assign({}, state, { is32Bit, isManaged });\r\n }\r\n\r\n default: return state;\r\n }\r\n}\r\n\r\nfunction pageData(state: W.PageData | null = null, action: Redux.Action): W.PageData | null {\r\n switch (action.type) {\r\n case A.ActionType.SET_PAGE_DATA: {\r\n const { data } = action as A.SetPageDataAction;\r\n return data;\r\n }\r\n\r\n default: return state;\r\n }\r\n}\r\n\r\nfunction navList(state: W.NavData[] = [], action: Redux.Action): W.NavData[] {\r\n switch (action.type) {\r\n case A.ActionType.SET_NAV_LIST: {\r\n const { navList } = action as A.SetNavListAction;\r\n return navList;\r\n }\r\n\r\n default: return state;\r\n }\r\n}","module.exports = ReactDOM;","import * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport * as Redux from \"redux\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as packageJson from \"package.json\";\r\nimport * as S from \"./store/state\";\r\nimport * as R from \"./store/reducers\";\r\nimport { App } from \"./components/app\";\r\nimport { actionListenerMiddleware } from \"./action-listener\";\r\nimport { workerClientMiddleware, initWorkerClient } from \"./worker-client\";\r\n\r\nconst appInfo: S.AppInfo = {\r\n title: packageJson.title,\r\n version: packageJson.version,\r\n author: packageJson.author,\r\n homepage: packageJson.homepage,\r\n bugsUrl: packageJson.bugs_url,\r\n buildTimeLocal: new Date(Date.parse(packageJson.build_time)).toLocaleString(),\r\n year: new Date().getFullYear().toString(),\r\n};\r\n\r\nconst defaultState: S.AppState = {\r\n appInfo,\r\n navList: []\r\n};\r\n\r\ndocument.title = `${appInfo.title}`;\r\n\r\nconst _w = window as any;\r\nconst composeEnhancers = _w.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || Redux.compose;\r\nconst store = Redux.createStore(R.appReducer, defaultState, composeEnhancers(\r\n Redux.applyMiddleware(\r\n actionListenerMiddleware,\r\n workerClientMiddleware)\r\n));\r\n\r\ninitWorkerClient(store);\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById(\"app\")\r\n);\r\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"React\"","webpack:///external \"ReactRedux\"","webpack:///./src/ui/scripts/store/actions.ts","webpack:///./src/ui/scripts/components/top-link.tsx","webpack:///./src/ui/scripts/components/struct-data.tsx","webpack:///./src/ui/scripts/components/nav-link.tsx","webpack:///external \"Redux\"","webpack:///./src/ui/scripts/worker-message.ts","webpack:///./src/ui/scripts/worker-client.ts","webpack:///./src/ui/scripts/action-listener.ts","webpack:///./src/ui/scripts/components/page-footer.tsx","webpack:///./src/ui/scripts/components/md-headers-page.tsx","webpack:///./src/ui/scripts/components/headers-page.tsx","webpack:///./src/ui/scripts/components/open-file-page.tsx","webpack:///./src/ui/scripts/components/page-content.tsx","webpack:///./src/ui/scripts/components/page-header.tsx","webpack:///./src/ui/scripts/components/app.tsx","webpack:///./src/ui/scripts/store/reducers.ts","webpack:///external \"ReactDOM\"","webpack:///./src/ui/scripts/index.tsx"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","object","property","prototype","hasOwnProperty","p","s","React","ReactRedux","createOpenFileAction","file","type","createOpenNavAction","target","createSetNavListAction","navList","createSetPageDataAction","data","createSetPEPropsAction","is32Bit","isManaged","nav_link_1","TopLinkClass","_super","__extends","render","pageID","this","props","title","createElement","className","NavLink","Component","TopLink","connect","state","pageData","nav","renderStructTitle","id","elemID","renderStructItemRow","item","key","offset","size","rawData","descriptions","map","v","renderSimpleStruct","StructTable","items","toString","renderGroupedStruct","groups","gv","gi","colSpan","concat","children","A","NavLinkClass","_a","extraClass","onClick","dispatch","ownProps","Redux","createReqOpenFileMessage","createReqOpenNavMessage","_worker","_store","WM","workerClientMiddleware","store","next","action","postMessage","getState","initWorkerClient","Worker","onmessage","ev","msg","handleMessage","scrollElement","setTimeout","elem","document","getElementById","scrollIntoView","scrollTop","actionListenerMiddleware","appInfo","PageFooterClass","version","author","homepage","bugsUrl","releaseNotesUrl","buildTimeLocal","year","href","PageFooter","struct_data_1","top_link_1","MetadataHeadersPage","cliHeader","renderMetadataRoot","renderStreamHeaders","metadataRoot","Fragment","streamHeaders","HeadersPage","dosHeader","peSignature","fileHeader","optionalHeader","dataDirectories","sectionHeaders","OpenFilePageClass","_this","onFileChange","bind","onChange","onFileSelected","fileList","files","length","OpenFilePage","open_file_page_1","headers_page_1","md_headers_page_1","PageContentClass","renderContent","PageContent","PageHeaderClass","fileInfo","renderFileInfo","renderWelcome","renderTitleLine","renderNavList","toLocaleString","cv","ci","PageHeader","page_header_1","page_content_1","page_footer_1","App","appReducer","combineReducers","name_1","assign","navList_1","ReactDOM","packageJson","R","app_1","action_listener_1","worker_client_1","bugs_url","release_notes","Date","parse","build_time","getFullYear","defaultState","composeEnhancers","window","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","createStore","applyMiddleware","Provider"],"mappings":"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","file":"ui.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 20);\n","module.exports = React;","module.exports = ReactRedux;","import * as Redux from \"redux\";\r\n\r\nexport const enum ActionType {\r\n OPEN_FILE = \"OPEN_FILE\",\r\n OPEN_NAV = \"OPEN_NAV\",\r\n\r\n SET_NAV_LIST = \"SET_NAV_LIST\",\r\n SET_PAGE_DATA = \"SET_PAGE_DATA\",\r\n SET_PE_PROPS = \"SET_PE_PROPS\",\r\n SET_WORKER_ERROR = \"SET_WORKER_ERROR\",\r\n}\r\n\r\nexport interface OpenFileAction extends Redux.Action {\r\n file: File;\r\n}\r\n\r\nexport function createOpenFileAction(file: File): OpenFileAction {\r\n return { type: ActionType.OPEN_FILE, file };\r\n}\r\n\r\nexport interface OpenNavAction extends Redux.Action {\r\n target: W.NavTarget;\r\n}\r\n\r\nexport function createOpenNavAction(target: W.NavTarget): OpenNavAction {\r\n return { type: ActionType.OPEN_NAV, target };\r\n}\r\n\r\nexport interface SetNavListAction extends Redux.Action {\r\n navList: W.NavData[];\r\n}\r\n\r\nexport function createSetNavListAction(navList: W.NavData[]): SetNavListAction {\r\n return { type: ActionType.SET_NAV_LIST, navList };\r\n}\r\n\r\nexport interface SetPageDataAction extends Redux.Action {\r\n data: W.PageData;\r\n}\r\n\r\nexport function createSetPageDataAction(data: W.PageData): SetPageDataAction {\r\n return { type: ActionType.SET_PAGE_DATA, data };\r\n}\r\n\r\nexport interface SetPEPropsAction extends Redux.Action {\r\n is32Bit?: boolean;\r\n isManaged?: boolean;\r\n}\r\n\r\nexport function createSetPEPropsAction(is32Bit?: boolean, isManaged?: boolean): SetPEPropsAction {\r\n return { type: ActionType.SET_PE_PROPS, is32Bit, isManaged };\r\n}","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as S from \"../store/state\";\r\nimport { NavLink } from \"./nav-link\";\r\n\r\nexport interface ConnectedProps {\r\n pageID?: W.PageID;\r\n}\r\n\r\nfunction mapStateToProps(state: S.AppState): ConnectedProps {\r\n const { pageData } = state;\r\n\r\n return {\r\n pageID: pageData && pageData.nav.pageID\r\n };\r\n}\r\n\r\nclass TopLinkClass extends React.Component {\r\n public render(): JSX.Element | null {\r\n const { pageID } = this.props;\r\n\r\n if (!pageID) {\r\n return null;\r\n } else {\r\n const target: W.NavTarget = {\r\n pageID,\r\n title: W.KnownTitle.TOP\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport const TopLink = ReactRedux.connect(mapStateToProps)(TopLinkClass);","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nexport function renderSimpleStruct(s: W.SimpleStruct): JSX.Element {\r\n return (\r\n
\r\n {renderStructTitle(s)}\r\n \r\n {s.items && s.items.map((v, i) => renderStructItemRow(v, i.toString()))}\r\n \r\n
\r\n );\r\n}\r\n\r\nexport function renderGroupedStruct(s: W.GroupedStruct): JSX.Element {\r\n return (\r\n
\r\n {renderStructTitle(s)}\r\n \r\n {s.groups && s.groups.map((gv, gi) => {\r\n return [\r\n renderStructGroupTitleRow(gv.title, gi.toString())\r\n ].concat(gv.items && gv.items.map((v, i) =>\r\n renderStructItemRow(v, `${gi}.${i}`)) || []);\r\n })}\r\n \r\n
\r\n );\r\n}\r\n\r\nfunction renderStructTitle(s: W.StructData): JSX.Element {\r\n return

{s.title}

;\r\n}\r\n\r\nfunction renderStructItemRow(item: W.StructItem, key: string): JSX.Element {\r\n const { offset, size, rawData, name, value, descriptions } = item;\r\n return (\r\n \r\n {offset}\r\n {size}\r\n {rawData.map((v, i) =>
{v}
)}\r\n {name}\r\n {value}\r\n \r\n \r\n );\r\n}\r\n\r\nfunction renderStructGroupTitleRow(title: string, key: string): JSX.Element {\r\n return ({title});\r\n}\r\n\r\nclass StructTable extends React.Component {\r\n public render(): JSX.Element {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.props.children}\r\n \r\n
OffsetSizeRaw DataNameValueDescription
\r\n );\r\n }\r\n}","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as A from \"../store/actions\";\r\nimport * as S from \"../store/state\";\r\n\r\nexport interface NavLinkProps {\r\n target: W.NavTarget;\r\n extraClass?: string;\r\n}\r\n\r\ninterface ConnectedEvents {\r\n onClick: () => void;\r\n}\r\n\r\nfunction mapDispatchToEvents(dispatch: ReactRedux.Dispatch, ownProps: NavLinkProps): ConnectedEvents {\r\n return {\r\n onClick: () => { dispatch(A.createOpenNavAction(ownProps.target)); }\r\n };\r\n}\r\n\r\nclass NavLinkClass extends React.Component {\r\n public render(): JSX.Element {\r\n const { target, extraClass, onClick } = this.props;\r\n const { title } = target;\r\n\r\n let className = \"nav\";\r\n if (extraClass) {\r\n className += \" \" + extraClass;\r\n }\r\n\r\n return (\r\n {title}\r\n );\r\n }\r\n}\r\n\r\nexport const NavLink = ReactRedux.connect(null, mapDispatchToEvents)(NavLinkClass);","module.exports = Redux;","/// \r\n\r\nexport function createReqOpenFileMessage(file: File): W.ReqOpenFileMessage {\r\n return {\r\n type: W.WorkerMessageType.REQ_OPEN_FILE,\r\n file\r\n };\r\n}\r\n\r\nexport function createReqOpenNavMessage(target: W.NavTarget): W.ReqOpenNavMessage {\r\n return {\r\n type: W.WorkerMessageType.REQ_OPEN_NAV,\r\n target\r\n };\r\n}","/// \r\n\r\nimport * as Redux from \"redux\";\r\n\r\nimport * as A from \"./store/actions\";\r\nimport * as S from \"./store/state\";\r\nimport * as WM from \"./worker-message\";\r\n\r\nexport const workerClientMiddleware = ((store: Redux.MiddlewareAPI) => (next: Redux.Dispatch) => (action: Redux.Action) => {\r\n switch (action.type) {\r\n case A.ActionType.OPEN_FILE: {\r\n const { file } = action as A.OpenFileAction;\r\n _worker.postMessage(WM.createReqOpenFileMessage(file));\r\n break;\r\n }\r\n\r\n case A.ActionType.OPEN_NAV: {\r\n const { target } = action as A.OpenNavAction;\r\n const { pageData } = store.getState();\r\n const { pageID, elemID } = target;\r\n if (!pageData || pageData.nav.pageID != pageID) {\r\n _worker.postMessage(WM.createReqOpenNavMessage(target));\r\n }\r\n break;\r\n }\r\n }\r\n return next(action);\r\n}) as Redux.Middleware;\r\n\r\nexport function initWorkerClient(store: Redux.Store): void {\r\n _store = store;\r\n _worker = new Worker(\"worker.js\");\r\n _worker.onmessage = ev => handleMessage(ev.data);\r\n}\r\n\r\nfunction handleMessage(msg: W.WorkerMessage): void {\r\n switch (msg.type) {\r\n case W.WorkerMessageType.RES_NAV_DATA:\r\n const { navList } = msg;\r\n _store.dispatch(A.createSetNavListAction(navList));\r\n break;\r\n\r\n case W.WorkerMessageType.RES_PAGE_DATA:\r\n const { pageData } = msg;\r\n _store.dispatch(A.createSetPageDataAction(pageData));\r\n break;\r\n\r\n case W.WorkerMessageType.RES_PE_PROPS:\r\n const { is32Bit, isManaged } = msg;\r\n _store.dispatch(A.createSetPEPropsAction(is32Bit, isManaged));\r\n break;\r\n\r\n case W.WorkerMessageType.RES_PE_ERROR:\r\n break;\r\n }\r\n}\r\n\r\nlet _worker: Worker;\r\nlet _store: Redux.Store;\r\n","import * as Redux from \"redux\";\r\n\r\nimport * as A from \"./store/actions\";\r\nimport * as S from \"./store/state\";\r\n\r\nexport const actionListenerMiddleware = ((store: Redux.MiddlewareAPI) => (next: Redux.Dispatch) => (action: Redux.Action) => {\r\n switch (action.type) {\r\n case A.ActionType.OPEN_FILE: {\r\n const { appInfo } = store.getState();\r\n const { file } = action as A.OpenFileAction;\r\n document.title = `${file.name} - ${appInfo.title}`\r\n break;\r\n }\r\n\r\n case A.ActionType.OPEN_NAV: {\r\n const { pageData } = store.getState();\r\n const { target } = action as A.OpenNavAction;\r\n const { pageID, elemID } = target;\r\n if (pageData && pageData.nav.pageID === pageID) {\r\n scrollElement(elemID);\r\n }\r\n break;\r\n }\r\n\r\n case A.ActionType.SET_PAGE_DATA: {\r\n const { data } = action as A.SetPageDataAction;\r\n scrollElement(data.nav.elemID);\r\n break;\r\n }\r\n }\r\n return next(action);\r\n}) as Redux.Middleware;\r\n\r\nfunction scrollElement(elemID?: string): void {\r\n setTimeout(() => {\r\n if (elemID) {\r\n const elem = document.getElementById(elemID);\r\n if (elem) {\r\n elem.scrollIntoView();\r\n }\r\n } else {\r\n const elem = document.getElementById(\"app-content\");\r\n if (elem) {\r\n elem.scrollTop = 0;\r\n }\r\n }\r\n }, 1);\r\n}","import * as React from \"react\";\nimport * as ReactRedux from \"react-redux\";\n\nimport * as S from \"../store/state\";\n\ninterface ConnectedProps {\n appInfo: S.AppInfo;\n}\n\nfunction mapStateToProps(state: S.AppState): ConnectedProps {\n const { appInfo } = state;\n return {\n appInfo\n };\n}\n\nclass PageFooterClass extends React.Component {\n public render(): JSX.Element {\n const { appInfo } = this.props;\n const { title, version, author, homepage, bugsUrl, releaseNotesUrl, buildTimeLocal, year } = appInfo;\n\n return (\n \n )\n }\n}\n\nexport const PageFooter = ReactRedux.connect(mapStateToProps)(PageFooterClass);\n","import * as React from \"react\";\nimport * as ReactRedux from \"react-redux\";\n\nimport { renderSimpleStruct, renderGroupedStruct } from \"./struct-data\";\nimport { TopLink } from \"./top-link\";\n\ninterface MetadataHeadersPageProps {\n data: W.MetadataHeadersPageData;\n}\n\nexport class MetadataHeadersPage extends React.Component {\n public render(): JSX.Element | null {\n const { data } = this.props;\n\n return (\n
\n {renderSimpleStruct(data.cliHeader)}\n \n {this.renderMetadataRoot()}\n {this.renderStreamHeaders()}\n
\n );\n }\n\n public renderMetadataRoot(): JSX.Element | undefined {\n const { data } = this.props;\n return data.metadataRoot && (\n \n {renderSimpleStruct(data.metadataRoot)}\n \n \n );\n }\n\n public renderStreamHeaders(): JSX.Element | undefined {\n const { data } = this.props;\n return data.streamHeaders && (\n \n {renderGroupedStruct(data.streamHeaders)}\n \n \n );\n }\n}\n","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport { renderSimpleStruct, renderGroupedStruct } from \"./struct-data\";\r\nimport { TopLink } from \"./top-link\";\r\n\r\ninterface HeadersPageProps {\r\n data: W.HeadersPageData;\r\n}\r\n\r\nexport class HeadersPage extends React.Component {\r\n public render(): JSX.Element | null {\r\n const { data } = this.props;\r\n\r\n return (\r\n
\r\n {renderSimpleStruct(data.dosHeader)}\r\n \r\n {renderSimpleStruct(data.peSignature)}\r\n \r\n {renderSimpleStruct(data.fileHeader)}\r\n \r\n {renderGroupedStruct(data.optionalHeader)}\r\n \r\n {renderGroupedStruct(data.dataDirectories)}\r\n \r\n {renderGroupedStruct(data.sectionHeaders)}\r\n \r\n
\r\n );\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as A from \"../store/actions\";\r\nimport * as S from \"../store/state\";\r\n\r\ninterface ConnectedEvents {\r\n onFileSelected: (file: File) => void;\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: ReactRedux.Dispatch): ConnectedEvents {\r\n return {\r\n onFileSelected: (file) => dispatch(A.createOpenFileAction(file))\r\n };\r\n}\r\n\r\nclass OpenFilePageClass extends React.Component {\r\n public constructor(props: any) {\r\n super(props);\r\n this.onFileChange = this.onFileChange.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n
Select a file:
\r\n
\r\n
No data would be uploaded, everything is parsed locally.
\r\n
\r\n )\r\n }\r\n\r\n private onFileChange(ev: React.ChangeEvent): void {\r\n const { onFileSelected } = this.props;\r\n const fileList = ev.target.files;\r\n if (fileList && fileList.length > 0) {\r\n onFileSelected(fileList[0]);\r\n }\r\n }\r\n}\r\n\r\nexport const OpenFilePage = ReactRedux.connect(null, mapDispatchToProps)(OpenFilePageClass);\r\n","import * as React from \"react\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as S from \"../store/state\";\r\n\r\nimport { OpenFilePage } from \"./open-file-page\";\r\nimport { HeadersPage } from \"./headers-page\";\r\nimport { MetadataHeadersPage } from \"./md-headers-page\";\r\n\r\ninterface ConnectedProps {\r\n pageData?: W.PageData;\r\n}\r\n\r\nfunction mapStateToProps(state: S.AppState): ConnectedProps {\r\n const { pageData } = state;\r\n\r\n return {\r\n pageData\r\n };\r\n}\r\n\r\nclass PageContentClass extends React.Component {\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n {this.renderContent()}\r\n
\r\n )\r\n }\r\n\r\n private renderContent(): JSX.Element {\r\n const { pageData } = this.props;\r\n\r\n if (pageData == null) {\r\n return ;\r\n }\r\n\r\n switch (pageData.nav.pageID) {\r\n case W.PageID.HEADERS:\r\n return ;\r\n case W.PageID.MD_HEADERS:\r\n return ;\r\n default:\r\n return
Page not found.
;\r\n }\r\n }\r\n}\r\n\r\nexport const PageContent = ReactRedux.connect(mapStateToProps)(PageContentClass);\r\n","import * as React from \"react\";\nimport * as ReactRedux from \"react-redux\";\n\nimport * as S from \"../store/state\";\nimport { NavLink } from \"./nav-link\";\n\ninterface ConnectedProps {\n fileInfo?: S.FileInfo;\n navList: W.NavData[];\n}\n\nfunction mapStateToProps(state: S.AppState): ConnectedProps {\n const { fileInfo, navList } = state;\n\n return {\n fileInfo,\n navList\n };\n}\n\nclass PageHeaderClass extends React.Component {\n public render(): JSX.Element {\n const { fileInfo } = this.props;\n\n return (\n
\n {fileInfo ? this.renderFileInfo(fileInfo) : this.renderWelcome()}\n
\n )\n }\n\n private renderWelcome(): JSX.Element {\n return (\n
\n

Welcome to PE Viewer.

\n
\n );\n }\n\n private renderFileInfo(fileInfo: S.FileInfo): JSX.Element {\n const { name, size, is32Bit, isManaged } = fileInfo;\n\n return (\n \n {this.renderTitleLine(fileInfo)}\n {this.renderNavList()}\n \n );\n }\n\n private renderTitleLine(fileInfo: S.FileInfo): JSX.Element {\n const { name, size, is32Bit, isManaged } = fileInfo;\n\n return (\n
\n

{name}

\n
\n {size.toLocaleString()} bytes.\n\n {is32Bit != null && (\n \n | \n {is32Bit ? \"32-bit\" : \"64-bit\"}\n \n )}\n\n {isManaged != null && (\n \n | \n {isManaged ? \"managed\" : \"unmanaged\"}\n \n )}\n
\n
\n );\n }\n\n private renderNavList(): JSX.Element | null {\n const { navList } = this.props;\n if (!navList) {\n return null;\n }\n\n return (\n
\n \n \n {navList.map((v, i) => (\n \n \n \n \n ))}\n \n
\n {v.children && v.children.map((cv, ci) => (\n \n ))}\n
\n
\n );\n }\n}\n\nexport const PageHeader = ReactRedux.connect(mapStateToProps)(PageHeaderClass);","import * as React from \"react\";\n\nimport { PageHeader } from \"./page-header\";\nimport { PageContent } from \"./page-content\";\nimport { PageFooter } from \"./page-footer\";\n\nexport class App extends React.Component {\n public render(): JSX.Element {\n return (\n \n \n \n \n \n )\n }\n}","import * as Redux from \"redux\";\r\nimport * as A from \"./actions\";\r\nimport * as S from \"./state\";\r\n\r\nexport const appReducer = Redux.combineReducers({\r\n appInfo,\r\n fileInfo,\r\n pageData,\r\n navList,\r\n}) as Redux.Reducer;\r\n\r\nfunction appInfo(state: S.AppInfo | null = null, action: Redux.Action): S.AppInfo | null {\r\n return state;\r\n}\r\n\r\nfunction fileInfo(state: S.FileInfo | null = null, action: Redux.Action): S.FileInfo | null {\r\n switch (action.type) {\r\n case A.ActionType.OPEN_FILE: {\r\n const { file } = action as A.OpenFileAction;\r\n const { name, size } = file;\r\n return Object.assign({}, state, { name, size });\r\n }\r\n\r\n case A.ActionType.SET_PE_PROPS: {\r\n const { is32Bit, isManaged } = action as A.SetPEPropsAction;\r\n return Object.assign({}, state, { is32Bit, isManaged });\r\n }\r\n\r\n default: return state;\r\n }\r\n}\r\n\r\nfunction pageData(state: W.PageData | null = null, action: Redux.Action): W.PageData | null {\r\n switch (action.type) {\r\n case A.ActionType.SET_PAGE_DATA: {\r\n const { data } = action as A.SetPageDataAction;\r\n return data;\r\n }\r\n\r\n default: return state;\r\n }\r\n}\r\n\r\nfunction navList(state: W.NavData[] = [], action: Redux.Action): W.NavData[] {\r\n switch (action.type) {\r\n case A.ActionType.SET_NAV_LIST: {\r\n const { navList } = action as A.SetNavListAction;\r\n return navList;\r\n }\r\n\r\n default: return state;\r\n }\r\n}","module.exports = ReactDOM;","import * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport * as Redux from \"redux\";\r\nimport * as ReactRedux from \"react-redux\";\r\n\r\nimport * as packageJson from \"package.json\";\r\nimport * as S from \"./store/state\";\r\nimport * as R from \"./store/reducers\";\r\nimport { App } from \"./components/app\";\r\nimport { actionListenerMiddleware } from \"./action-listener\";\r\nimport { workerClientMiddleware, initWorkerClient } from \"./worker-client\";\r\n\r\nconst appInfo: S.AppInfo = {\r\n title: packageJson.title,\r\n version: packageJson.version,\r\n author: packageJson.author,\r\n homepage: packageJson.homepage,\r\n bugsUrl: packageJson.bugs_url,\r\n releaseNotesUrl: packageJson.release_notes,\r\n buildTimeLocal: new Date(Date.parse(packageJson.build_time)).toLocaleString(),\r\n year: new Date().getFullYear().toString(),\r\n};\r\n\r\nconst defaultState: S.AppState = {\r\n appInfo,\r\n navList: []\r\n};\r\n\r\ndocument.title = `${appInfo.title}`;\r\n\r\nconst _w = window as any;\r\nconst composeEnhancers = _w.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || Redux.compose;\r\nconst store = Redux.createStore(R.appReducer, defaultState, composeEnhancers(\r\n Redux.applyMiddleware(\r\n actionListenerMiddleware,\r\n workerClientMiddleware)\r\n));\r\n\r\ninitWorkerClient(store);\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById(\"app\")\r\n);\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/worker.js.map b/worker.js.map index 403faf1..4c0548d 100644 --- a/worker.js.map +++ b/worker.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/worker/page-data/formatter.ts","webpack:///./src/worker/pe/image-flags.ts","webpack:///./src/worker/page-data/nav-data.ts","webpack:///./src/worker/page-data/metadata-headers.ts","webpack:///./src/worker/page-data/headers.ts","webpack:///./src/worker/page-data/generator.ts","webpack:///./src/worker/pe/error.ts","webpack:///./src/worker/pe/utils.ts","webpack:///./src/worker/pe/loader.ts","webpack:///./src/worker/pe/image.ts","webpack:///./src/worker/message.ts","webpack:///./src/worker/index.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","object","property","prototype","hasOwnProperty","p","s","formatU1RawHex","padZeroLeft","toString","toUpperCase","formatU2RawHex","formatU4RawHex","formatU1Hex","formatU2Hex","formatU4Hex","formatHexDec","formatBytes","bytes","lineWidth","lines","start","length","line","Array","from","subarray","map","b","join","push","str","len","repeat","formatUIntField","f","sz","showDec","hex","offset","_offset","size","_size","rawData","data","formatDec","v","toLocaleString","formatStructTitle","title","formatU1Field","formatU2Field","formatU4Field","formatU8Field","high","low","formatBytesField","formatStringField","IMAGE_DOS_SIGNATURE","IMAGE_NT_SIGNATURE","IMAGE_NT_OPTIONAL_HDR32_MAGIC","IMAGE_NT_OPTIONAL_HDR64_MAGIC","ImageFile","ImageFileMachine","ImageSubsystem","ImageDllCharacteristics","ImageDirectoryEntry","IMAGE_NUMBEROF_DIRECTORY_ENTRIES","ImageSection","ComImageFlags","MetadataSignature","generateNavList","pe","pageID","navList","target","children","elemID","navMD","isManaged","hasMetadata","generateMDHeadersNavData","FM","generateMetadataHeadersPageData","nav","cliHeader","h","getCliHeader","items","cb","MajorRuntimeVersion","MinorRuntimeVersion","MetaData","VirtualAddress","Size","Flags","EntryPointToken","Resources","StrongNameSignature","CodeManagerTable","VTableFixups","ExportAddressTableJumps","ManagedNativeHeader","generateCliHeader","metadataRoot","getMetadataRoot","Signature","MajorVersion","MinorVersion","Reserved","VersionLength","VersionString","VersionPadding","Streams","generateMetadataRoot","streamHeaders","getMetadataStreamHeaders","groups","Name","Offset","Padding","generateMetadataStreamHeader","F","generateHeadersPageData","dosHeader","getDosHeader","e_magic","e_cblp","e_cp","e_crlc","e_cparhdr","e_minalloc","e_maxalloc","e_ss","e_sp","e_csum","e_ip","e_cs","e_lfarlc","e_ovno","e_res","e_oemid","e_oeminfo","e_res2","e_lfanew","generateDosHeader","peSignature","getPESignature","generatePESignature","fileHeader","getFileHeader","Machine","NumberOfSections","TimeDateStamp","PointerToSymbolTable","NumberOfSymbols","SizeOfOptionalHeader","Characteristics","generateFileHeader","optionalHeader","getOptionalHeader","Magic","MajorLinkerVersion","MinorLinkerVersion","SizeOfCode","SizeOfInitializedData","SizeOfUninitializedData","AddressOfEntryPoint","BaseOfCode","BaseOfData","ImageBase","SectionAlignment","FileAlignment","MajorOperatingSystemVersion","MinorOperatingSystemVersion","MajorImageVersion","MinorImageVersion","MajorSubsystemVersion","MinorSubsystemVersion","Win32VersionValue","SizeOfImage","SizeOfHeaders","CheckSum","Subsystem","DllCharacteristics","SizeOfStackReserve","SizeOfStackCommit","SizeOfHeapReserve","SizeOfHeapCommit","LoaderFlags","NumberOfRvaAndSizes","fillOptionalHeader32Fields","fillOptionalHeader64Fields","generateOptionalHeader","dataDirectories","getDataDirectories","generateDataDirectories","sectionHeaders","getSectionHeaders","VirtualSize","SizeOfRawData","PointerToRawData","PointerToRelocations","PointerToLinenumbers","NumberOfRelocations","NumberOfLinenumbers","generateSectionHeaders","headers_1","metadata_headers_1","generatePageData","PEError","_super","type","_this","this","__extends","Error","calculatePadding","dataSize","align","U","loadU1Field","getData","getU1","loadU2Field","getU2","loadU4Field","getU4","loadU8Field","loadU2EnumField","loadU4EnumField","loadFixedSizeByteArrayField","loadFixedSizeAsciiStringField","String","fromCharCode","apply","filter","loadNullTerminatedStringField","ptr","slice","Uint8Array","loadImageDataDirectory","loadU1EnumField","loadStructArrayByCount","loader","count","loadImageDosHeader","loadImageFileHeader","loadImageOptionalHeader32","loadImageOptionalHeader64","loadImageSectionHeader","loadCliHeader","loadMetadataRoot","loadMetadataStreamHeader","L","E","PEImage","buf","DataView","loadHeaders","load","check","getUint8","getUint16","getUint32","buffer","is32Bit","optHdr","dd","isDataDirectoryValid","IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR","hasManagedResources","hasStrongNameSignature","rvaToOffset","metadataStreamHeaders","mdRoot","rva","sh","getSectionHeaderByRva","offsetToRva","getSectionHeaderByOffset","byteLength","shift","createResNavDataMessage","createResPageDataMessage","pageData","createResPEPropsMessage","createResPEErrorMessage","error","M","image_1","generator_1","nav_data_1","onmessage","ev","msg","reader","FileReader","onload","result","pageDataMsg","postMessage","pePropsMsg","navMsg","ex","msg_1","message","JSON","stringify","onerror","readAsArrayBuffer","file","handleReqOpenFile","res","handleReqOpenNav"],"mappings":"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","file":"worker.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","import * as S from \"../pe/structures\";\r\nimport { format } from \"url\";\r\n\r\nexport function formatU1RawHex(d: number): string {\r\n return padZeroLeft(d.toString(16).toUpperCase(), 2);\r\n}\r\n\r\nexport function formatU2RawHex(d: number): string {\r\n return padZeroLeft(d.toString(16).toUpperCase(), 4);\r\n}\r\n\r\nexport function formatU4RawHex(d: number): string {\r\n return padZeroLeft(d.toString(16).toUpperCase(), 8);\r\n}\r\n\r\nexport function formatU1Hex(d: number): string {\r\n return `${formatU1RawHex(d)}h`;\r\n}\r\n\r\nexport function formatU2Hex(d: number): string {\r\n return `${formatU2RawHex(d)}h`;\r\n}\r\n\r\nexport function formatU4Hex(d: number): string {\r\n return `${formatU4RawHex(d)}h`;\r\n}\r\n\r\nexport function formatHexDec(d: number): string {\r\n return `${d.toString(16).toUpperCase()}h (${d})`;\r\n}\r\n\r\nexport function formatBytes(bytes: Uint8Array, lineWidth: number = 16): string[] {\r\n let lines: string[] = [];\r\n for (let start = 0; start < bytes.length; start += lineWidth) {\r\n const line = Array.from(bytes.subarray(start, start + lineWidth))\r\n .map(b => formatU1RawHex(b)).join(\"-\");\r\n lines.push(line);\r\n }\r\n return lines;\r\n}\r\n\r\nexport function formatStructTitle(s: S.FileData, title: string): string {\r\n return `${title} [${formatU4Hex(s._offset)} - ${formatU4Hex(s._offset + s._size)} : ${formatHexDec(s._size)}]`;\r\n}\r\n\r\nexport function formatU1Field(name: string, f: S.U1Field, showDec?: boolean): W.StructItem {\r\n return formatUIntField(name, f, 1, showDec);\r\n}\r\n\r\nexport function formatU2Field(name: string, f: S.U2Field, showDec?: boolean): W.StructItem {\r\n return formatUIntField(name, f, 2, showDec);\r\n}\r\n\r\nexport function formatU4Field(name: string, f: S.U4Field, showDec?: boolean): W.StructItem {\r\n return formatUIntField(name, f, 4, showDec);\r\n}\r\n\r\nexport function formatU8Field(name: string, f: S.U8Field, showDec?: boolean): W.StructItem {\r\n let value = `${formatU4RawHex(f.high)} ${formatU4Hex(f.low)}`;\r\n\r\n if (showDec && f.high < 0x1FFFFF) {\r\n const long = f.high * 0x100000000 + f.low;\r\n value += ` (${formatDec(long)})`;\r\n }\r\n\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value,\r\n };\r\n}\r\n\r\nexport function formatBytesField(name: string, f: S.Field): W.StructItem {\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value: \"\",\r\n }\r\n}\r\n\r\nexport function formatStringField(name: string, f: S.StringField): W.StructItem {\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value: `\"${f.value}\"`,\r\n }\r\n}\r\n\r\nfunction padZeroLeft(str: string, len: number): string {\r\n if (str.length < len) {\r\n return \"0\".repeat(len - str.length) + str;\r\n } else {\r\n return str;\r\n }\r\n}\r\n\r\nfunction formatUIntField(name: string, f: S.UIntField, sz: number, showDec?: boolean): W.StructItem {\r\n let hex: string;\r\n switch (sz) {\r\n case 1: hex = formatU1Hex(f.value); break;\r\n case 2: hex = formatU2Hex(f.value); break;\r\n case 4: hex = formatU4Hex(f.value); break;\r\n default: hex = f.value.toString(16).toUpperCase(); break;\r\n }\r\n\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value: showDec ? `${hex} (${formatDec(f.value)})` : hex,\r\n }\r\n}\r\n\r\nfunction formatDec(v: number): string {\r\n return v.toLocaleString();\r\n}\r\n","export const IMAGE_DOS_SIGNATURE = 0x5A4D; // MZ\r\n\r\nexport const IMAGE_NT_SIGNATURE = 0x00004550; // PE00\r\n\r\nexport const IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x10b;\r\nexport const IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x20b;\r\n\r\nexport enum ImageFile {\r\n IMAGE_FILE_RELOCS_STRIPPED = 0x0001,\r\n IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002,\r\n IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004,\r\n IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008,\r\n IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010,\r\n IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020,\r\n IMAGE_FILE_BYTES_REVERSED_LO = 0x0080,\r\n IMAGE_FILE_32BIT_MACHINE = 0x0100,\r\n IMAGE_FILE_DEBUG_STRIPPED = 0x0200,\r\n IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400,\r\n IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800,\r\n IMAGE_FILE_SYSTEM = 0x1000,\r\n IMAGE_FILE_DLL = 0x2000,\r\n IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000,\r\n IMAGE_FILE_BYTES_REVERSED_HI = 0x8000,\r\n}\r\n\r\nexport enum ImageFileMachine {\r\n IMAGE_FILE_MACHINE_UNKNOWN = 0,\r\n IMAGE_FILE_MACHINE_TARGET_HOST = 0x0001,\r\n IMAGE_FILE_MACHINE_I386 = 0x014c,\r\n IMAGE_FILE_MACHINE_R3000 = 0x0162,\r\n IMAGE_FILE_MACHINE_R4000 = 0x0166,\r\n IMAGE_FILE_MACHINE_R10000 = 0x0168,\r\n IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x0169,\r\n IMAGE_FILE_MACHINE_ALPHA = 0x0184,\r\n IMAGE_FILE_MACHINE_SH3 = 0x01a2,\r\n IMAGE_FILE_MACHINE_SH3DSP = 0x01a3,\r\n IMAGE_FILE_MACHINE_SH3E = 0x01a4,\r\n IMAGE_FILE_MACHINE_SH4 = 0x01a6,\r\n IMAGE_FILE_MACHINE_SH5 = 0x01a8,\r\n IMAGE_FILE_MACHINE_ARM = 0x01c0,\r\n IMAGE_FILE_MACHINE_THUMB = 0x01c2,\r\n IMAGE_FILE_MACHINE_ARMNT = 0x01c4,\r\n IMAGE_FILE_MACHINE_AM33 = 0x01d3,\r\n IMAGE_FILE_MACHINE_POWERPC = 0x01F0,\r\n IMAGE_FILE_MACHINE_POWERPCFP = 0x01f1,\r\n IMAGE_FILE_MACHINE_IA64 = 0x0200,\r\n IMAGE_FILE_MACHINE_MIPS16 = 0x0266,\r\n IMAGE_FILE_MACHINE_ALPHA64 = 0x0284,\r\n IMAGE_FILE_MACHINE_MIPSFPU = 0x0366,\r\n IMAGE_FILE_MACHINE_MIPSFPU16 = 0x0466,\r\n IMAGE_FILE_MACHINE_AXP64 = IMAGE_FILE_MACHINE_ALPHA64,\r\n IMAGE_FILE_MACHINE_TRICORE = 0x0520,\r\n IMAGE_FILE_MACHINE_CEF = 0x0CEF,\r\n IMAGE_FILE_MACHINE_EBC = 0x0EBC,\r\n IMAGE_FILE_MACHINE_AMD64 = 0x8664,\r\n IMAGE_FILE_MACHINE_M32R = 0x9041,\r\n IMAGE_FILE_MACHINE_ARM64 = 0xAA64,\r\n IMAGE_FILE_MACHINE_CEE = 0xC0EE,\r\n}\r\n\r\nexport enum ImageSubsystem {\r\n IMAGE_SUBSYSTEM_UNKNOWN = 0,\r\n IMAGE_SUBSYSTEM_NATIVE = 1,\r\n IMAGE_SUBSYSTEM_WINDOWS_GUI = 2,\r\n IMAGE_SUBSYSTEM_WINDOWS_CUI = 3,\r\n IMAGE_SUBSYSTEM_OS2_CUI = 5,\r\n IMAGE_SUBSYSTEM_POSIX_CUI = 7,\r\n IMAGE_SUBSYSTEM_NATIVE_WINDOWS = 8,\r\n IMAGE_SUBSYSTEM_WINDOWS_CE_GUI = 9,\r\n IMAGE_SUBSYSTEM_EFI_APPLICATION = 10,\r\n IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11,\r\n IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER = 12,\r\n IMAGE_SUBSYSTEM_EFI_ROM = 13,\r\n IMAGE_SUBSYSTEM_XBOX = 14,\r\n IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16,\r\n IMAGE_SUBSYSTEM_XBOX_CODE_CATALOG = 17,\r\n}\r\n\r\nexport enum ImageDllCharacteristics {\r\n IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA = 0x0020,\r\n IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE = 0x0040,\r\n IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY = 0x0080,\r\n IMAGE_DLLCHARACTERISTICS_NX_COMPAT = 0x0100,\r\n IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = 0x0200,\r\n IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400,\r\n IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800,\r\n IMAGE_DLLCHARACTERISTICS_APPCONTAINER = 0x1000,\r\n IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000,\r\n IMAGE_DLLCHARACTERISTICS_GUARD_CF = 0x4000,\r\n IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000,\r\n}\r\n\r\nexport enum ImageDirectoryEntry {\r\n IMAGE_DIRECTORY_ENTRY_EXPORT = 0,\r\n IMAGE_DIRECTORY_ENTRY_IMPORT = 1,\r\n IMAGE_DIRECTORY_ENTRY_RESOURCE = 2,\r\n IMAGE_DIRECTORY_ENTRY_EXCEPTION = 3,\r\n IMAGE_DIRECTORY_ENTRY_SECURITY = 4,\r\n IMAGE_DIRECTORY_ENTRY_BASERELOC = 5,\r\n IMAGE_DIRECTORY_ENTRY_DEBUG = 6,\r\n IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7,\r\n IMAGE_DIRECTORY_ENTRY_GLOBALPTR = 8,\r\n IMAGE_DIRECTORY_ENTRY_TLS = 9,\r\n IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG = 10,\r\n IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT = 11,\r\n IMAGE_DIRECTORY_ENTRY_IAT = 12,\r\n IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT = 13,\r\n IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14,\r\n}\r\n\r\nexport const IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16;\r\n\r\nexport enum ImageSection {\r\n IMAGE_SCN_TYPE_NO_PAD = 0x00000008,\r\n\r\n IMAGE_SCN_CNT_CODE = 0x00000020,\r\n IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040,\r\n IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080,\r\n\r\n IMAGE_SCN_LNK_OTHER = 0x00000100,\r\n IMAGE_SCN_LNK_INFO = 0x00000200,\r\n IMAGE_SCN_LNK_REMOVE = 0x00000800,\r\n IMAGE_SCN_LNK_COMDAT = 0x00001000,\r\n\r\n IMAGE_SCN_NO_DEFER_SPEC_EXC = 0x00004000,\r\n IMAGE_SCN_GPREL = 0x00008000,\r\n\r\n IMAGE_SCN_MEM_PURGEABLE = 0x00020000,\r\n IMAGE_SCN_MEM_16BIT = 0x00020000,\r\n IMAGE_SCN_MEM_LOCKED = 0x00040000,\r\n IMAGE_SCN_MEM_PRELOAD = 0x00080000,\r\n\r\n IMAGE_SCN_ALIGN_1BYTES = 0x00100000,\r\n IMAGE_SCN_ALIGN_2BYTES = 0x00200000,\r\n IMAGE_SCN_ALIGN_4BYTES = 0x00300000,\r\n IMAGE_SCN_ALIGN_8BYTES = 0x00400000,\r\n IMAGE_SCN_ALIGN_16BYTES = 0x00500000,\r\n IMAGE_SCN_ALIGN_32BYTES = 0x00600000,\r\n IMAGE_SCN_ALIGN_64BYTES = 0x00700000,\r\n IMAGE_SCN_ALIGN_128BYTES = 0x00800000,\r\n IMAGE_SCN_ALIGN_256BYTES = 0x00900000,\r\n IMAGE_SCN_ALIGN_512BYTES = 0x00A00000,\r\n IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000,\r\n IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000,\r\n IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000,\r\n IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000,\r\n\r\n IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000,\r\n IMAGE_SCN_MEM_DISCARDABLE = 0x02000000,\r\n IMAGE_SCN_MEM_NOT_CACHED = 0x04000000,\r\n IMAGE_SCN_MEM_NOT_PAGED = 0x08000000,\r\n IMAGE_SCN_MEM_SHARED = 0x10000000,\r\n IMAGE_SCN_MEM_EXECUTE = 0x20000000,\r\n IMAGE_SCN_MEM_READ = 0x40000000,\r\n IMAGE_SCN_MEM_WRITE = 0x80000000,\r\n\r\n IMAGE_SCN_SCALE_INDEX = 0x00000001,\r\n}\r\n\r\nexport enum ComImageFlags {\r\n COMIMAGE_FLAGS_ILONLY = 0x00000001,\r\n COMIMAGE_FLAGS_32BITREQUIRED = 0x00000002,\r\n COMIMAGE_FLAGS_IL_LIBRARY = 0x00000004,\r\n COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x00000008,\r\n COMIMAGE_FLAGS_NATIVE_ENTRYPOINT = 0x00000010,\r\n COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x00010000,\r\n COMIMAGE_FLAGS_32BITPREFERRED = 0x00020000,\r\n}\r\n\r\nexport const MetadataSignature = 0x424A5342;","import { PEImage } from \"../pe/image\";\r\n\r\nexport function generateNavList(pe: PEImage): W.NavData[] {\r\n let navList: W.NavData[] = [generateHeadersNavData(pe)];\r\n\r\n const navMD = generateMDHeadersNavData(pe);\r\n if (navMD) navList.push(navMD);\r\n\r\n return navList;\r\n}\r\n\r\nfunction generateHeadersNavData(pe: PEImage): W.NavData {\r\n const pageID = W.PageID.HEADERS;\r\n\r\n return {\r\n target: { pageID, title: W.KnownTitle.HEADERS },\r\n children: [{\r\n target: { pageID, title: W.KnownTitle.DOS_HEADER, elemID: W.KnownElemID.DOS_HEADER }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.PE_SIGNATURE, elemID: W.KnownElemID.PE_SIGNATURE }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.FILE_HEADER, elemID: W.KnownElemID.FILE_HEADER }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.OPTIONAL_HEADER, elemID: W.KnownElemID.OPTIONAL_HEADER }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.DATA_DIRECTORIES, elemID: W.KnownElemID.DATA_DIRECTORIES }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.SECTION_HEADERS, elemID: W.KnownElemID.SECTION_HEADERS }\r\n }]\r\n };\r\n}\r\n\r\nfunction generateMDHeadersNavData(pe: PEImage): W.NavData | undefined {\r\n const pageID = W.PageID.MD_HEADERS;\r\n\r\n if (!pe.isManaged()) return undefined;\r\n\r\n let children: W.NavData[] = [{\r\n target: { pageID, title: W.KnownTitle.CLI_HEADER, elemID: W.KnownElemID.CLI_HEADER }\r\n }];\r\n\r\n if (pe.hasMetadata()) {\r\n children.push({\r\n target: { pageID, title: W.KnownTitle.MD_ROOT, elemID: W.KnownElemID.MD_ROOT }\r\n });\r\n children.push({\r\n target: { pageID, title: W.KnownTitle.MDS_HEADERS, elemID: W.KnownElemID.MDS_HEADERS }\r\n });\r\n }\r\n\r\n return {\r\n target: { pageID, title: W.KnownTitle.MD_HEADERS },\r\n children\r\n };\r\n}","import { PEImage } from \"../pe/image\";\r\nimport * as S from \"../pe/structures\";\r\nimport * as F from \"../pe/image-flags\";\r\nimport * as FM from \"./formatter\";\r\n\r\nexport function generateMetadataHeadersPageData(pe: PEImage): W.MetadataHeadersPageData {\r\n return {\r\n nav: {\r\n pageID: W.PageID.MD_HEADERS,\r\n title: W.KnownTitle.MD_HEADERS,\r\n },\r\n cliHeader: generateCliHeader(pe),\r\n metadataRoot: generateMetadataRoot(pe),\r\n streamHeaders: generateMetadataStreamHeader(pe),\r\n };\r\n\r\n}\r\n\r\nfunction generateCliHeader(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.CLI_HEADER,\r\n elemID: W.KnownElemID.CLI_HEADER,\r\n };\r\n\r\n const h = pe.getCliHeader();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU4Field(\"cb\", h.cb, true),\r\n FM.formatU2Field(\"MajorRuntimeVersion\", h.MajorRuntimeVersion, true),\r\n FM.formatU2Field(\"MinorRuntimeVersion\", h.MinorRuntimeVersion, true),\r\n FM.formatU4Field(\"MetaData.VirtualAddress\", h.MetaData.VirtualAddress),\r\n FM.formatU4Field(\"MetaData.Size\", h.MetaData.Size, true),\r\n FM.formatU4Field(\"Flags\", h.Flags),\r\n FM.formatU4Field(\"EntryPointToken\", h.EntryPointToken),\r\n FM.formatU4Field(\"Resources.VirtualAddress\", h.Resources.VirtualAddress),\r\n FM.formatU4Field(\"Resources.Size\", h.Resources.Size, true),\r\n FM.formatU4Field(\"StrongNameSignature.VirtualAddress\", h.StrongNameSignature.VirtualAddress),\r\n FM.formatU4Field(\"StrongNameSignature.Size\", h.StrongNameSignature.Size, true),\r\n FM.formatU4Field(\"CodeManagerTable.VirtualAddress\", h.CodeManagerTable.VirtualAddress),\r\n FM.formatU4Field(\"CodeManagerTable.Size\", h.CodeManagerTable.Size, true),\r\n FM.formatU4Field(\"VTableFixups.VirtualAddress\", h.VTableFixups.VirtualAddress),\r\n FM.formatU4Field(\"VTableFixups.Size\", h.VTableFixups.Size, true),\r\n FM.formatU4Field(\"ExportAddressTableJumps.VirtualAddress\", h.ExportAddressTableJumps.VirtualAddress),\r\n FM.formatU4Field(\"ExportAddressTableJumps.Size\", h.ExportAddressTableJumps.Size, true),\r\n FM.formatU4Field(\"ManagedNativeHeader.VirtualAddress\", h.ManagedNativeHeader.VirtualAddress),\r\n FM.formatU4Field(\"ManagedNativeHeader.Size\", h.ManagedNativeHeader.Size, true),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generateMetadataRoot(pe: PEImage): W.SimpleStruct | undefined {\r\n const h = pe.getMetadataRoot();\r\n if (!h) return undefined;\r\n\r\n const s: W.SimpleStruct = {\r\n title: W.KnownTitle.MD_ROOT,\r\n elemID: W.KnownElemID.MD_ROOT,\r\n items: [\r\n FM.formatU4Field(\"Signature\", h.Signature),\r\n FM.formatU2Field(\"MajorVersion\", h.MajorVersion, true),\r\n FM.formatU2Field(\"MinorVersion\", h.MinorVersion, true),\r\n FM.formatU4Field(\"Reserved\", h.Reserved),\r\n FM.formatU4Field(\"VersionLength\", h.VersionLength, true),\r\n FM.formatStringField(\"VersionString\", h.VersionString),\r\n FM.formatBytesField(\"VersionPadding\", h.VersionPadding),\r\n FM.formatU2Field(\"Flags\", h.Flags),\r\n FM.formatU2Field(\"Streams\", h.Streams, true),\r\n ]\r\n };\r\n return s;\r\n}\r\n\r\nfunction generateMetadataStreamHeader(pe: PEImage): W.GroupedStruct | undefined {\r\n const h = pe.getMetadataStreamHeaders();\r\n if (!h) return undefined;\r\n\r\n const s: W.GroupedStruct = {\r\n title: W.KnownTitle.MDS_HEADERS,\r\n elemID: W.KnownElemID.MDS_HEADERS,\r\n groups: h.items.map((v, i) => ({\r\n title: `[${i}] (${v.Name.value})`,\r\n items: [\r\n FM.formatU4Field(\"Offset\", v.Offset),\r\n FM.formatU4Field(\"Size\", v.Size, true),\r\n FM.formatStringField(\"Name\", v.Name),\r\n FM.formatBytesField(\"Padding\", v.Padding),\r\n ]\r\n }))\r\n };\r\n return s;\r\n}","import { PEImage } from \"../pe/image\";\r\nimport * as S from \"../pe/structures\";\r\nimport * as F from \"../pe/image-flags\";\r\nimport * as FM from \"./formatter\";\r\n\r\nexport function generateHeadersPageData(pe: PEImage): W.HeadersPageData {\r\n return {\r\n nav: {\r\n pageID: W.PageID.HEADERS,\r\n title: W.KnownTitle.HEADERS,\r\n },\r\n dosHeader: generateDosHeader(pe),\r\n peSignature: generatePESignature(pe),\r\n fileHeader: generateFileHeader(pe),\r\n optionalHeader: generateOptionalHeader(pe),\r\n dataDirectories: generateDataDirectories(pe),\r\n sectionHeaders: generateSectionHeaders(pe),\r\n };\r\n}\r\n\r\nfunction generateDosHeader(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.DOS_HEADER,\r\n elemID: W.KnownElemID.DOS_HEADER,\r\n };\r\n\r\n const h = pe.getDosHeader();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU2Field(\"e_magic\", h.e_magic),\r\n FM.formatU2Field(\"e_cblp\", h.e_cblp),\r\n FM.formatU2Field(\"e_cp\", h.e_cp),\r\n FM.formatU2Field(\"e_crlc\", h.e_crlc),\r\n FM.formatU2Field(\"e_cparhdr\", h.e_cparhdr),\r\n FM.formatU2Field(\"e_minalloc\", h.e_minalloc),\r\n FM.formatU2Field(\"e_maxalloc\", h.e_maxalloc),\r\n FM.formatU2Field(\"e_ss\", h.e_ss),\r\n FM.formatU2Field(\"e_sp\", h.e_sp),\r\n FM.formatU2Field(\"e_csum\", h.e_csum),\r\n FM.formatU2Field(\"e_ip\", h.e_ip),\r\n FM.formatU2Field(\"e_cs\", h.e_cs),\r\n FM.formatU2Field(\"e_lfarlc\", h.e_lfarlc),\r\n FM.formatU2Field(\"e_ovno\", h.e_ovno),\r\n FM.formatBytesField(\"e_res\", h.e_res),\r\n FM.formatU2Field(\"e_oemid\", h.e_oemid),\r\n FM.formatU2Field(\"e_oeminfo\", h.e_oeminfo),\r\n FM.formatBytesField(\"e_res2\", h.e_res2),\r\n FM.formatU4Field(\"e_lfanew\", h.e_lfanew),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generatePESignature(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.PE_SIGNATURE,\r\n elemID: W.KnownElemID.PE_SIGNATURE,\r\n };\r\n\r\n const h = pe.getPESignature();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU4Field(\"PE Signature\", h),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generateFileHeader(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.FILE_HEADER,\r\n elemID: W.KnownElemID.FILE_HEADER,\r\n };\r\n\r\n const h = pe.getFileHeader();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU2Field(\"Machine\", h.Machine),\r\n FM.formatU2Field(\"NumberOfSections\", h.NumberOfSections, true),\r\n FM.formatU4Field(\"TimeDateStamp\", h.TimeDateStamp),\r\n FM.formatU4Field(\"PointerToSymbolTable\", h.PointerToSymbolTable),\r\n FM.formatU4Field(\"NumberOfSymbols\", h.NumberOfSymbols, true),\r\n FM.formatU2Field(\"SizeOfOptionalHeader\", h.SizeOfOptionalHeader, true),\r\n FM.formatU2Field(\"Characteristics\", h.Characteristics),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generateOptionalHeader(pe: PEImage): W.GroupedStruct {\r\n let s: W.GroupedStruct = {\r\n title: W.KnownTitle.OPTIONAL_HEADER,\r\n elemID: W.KnownElemID.OPTIONAL_HEADER,\r\n };\r\n\r\n const h = pe.getOptionalHeader();\r\n if (!h) return s;\r\n\r\n switch (h.Magic.value) {\r\n case F.IMAGE_NT_OPTIONAL_HDR32_MAGIC:\r\n s.title += \" (32-bit)\";\r\n fillOptionalHeader32Fields(s, h);\r\n break;\r\n\r\n case F.IMAGE_NT_OPTIONAL_HDR64_MAGIC:\r\n s.title += \" (64-bit)\";\r\n fillOptionalHeader64Fields(s, h);\r\n break;\r\n }\r\n\r\n return s;\r\n}\r\n\r\nfunction fillOptionalHeader32Fields(s: W.GroupedStruct, h: S.ImageOptionalHeader32): void {\r\n s.groups = [{\r\n title: \"Standard Fields\",\r\n items: [\r\n FM.formatU2Field(\"Magic\", h.Magic),\r\n FM.formatU1Field(\"MajorLinkerVersion\", h.MajorLinkerVersion, true),\r\n FM.formatU1Field(\"MinorLinkerVersion\", h.MinorLinkerVersion, true),\r\n FM.formatU4Field(\"SizeOfCode\", h.SizeOfCode, true),\r\n FM.formatU4Field(\"SizeOfInitializedData\", h.SizeOfInitializedData, true),\r\n FM.formatU4Field(\"SizeOfUninitializedData\", h.SizeOfUninitializedData, true),\r\n FM.formatU4Field(\"AddressOfEntryPoint\", h.AddressOfEntryPoint),\r\n FM.formatU4Field(\"BaseOfCode\", h.BaseOfCode),\r\n FM.formatU4Field(\"BaseOfData\", h.BaseOfData),\r\n ],\r\n }, {\r\n title: \"NT-specified Fields\",\r\n items: [\r\n FM.formatU4Field(\"ImageBase\", h.ImageBase),\r\n FM.formatU4Field(\"SectionAlignment\", h.SectionAlignment, true),\r\n FM.formatU4Field(\"FileAlignment\", h.FileAlignment, true),\r\n FM.formatU2Field(\"MajorOperatingSystemVersion\", h.MajorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MinorOperatingSystemVersion\", h.MinorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MajorImageVersion\", h.MajorImageVersion, true),\r\n FM.formatU2Field(\"MinorImageVersion\", h.MinorImageVersion, true),\r\n FM.formatU2Field(\"MajorSubsystemVersion\", h.MajorSubsystemVersion, true),\r\n FM.formatU2Field(\"MinorSubsystemVersion\", h.MinorSubsystemVersion, true),\r\n FM.formatU4Field(\"Win32VersionValue\", h.Win32VersionValue, true),\r\n FM.formatU4Field(\"SizeOfImage\", h.SizeOfImage, true),\r\n FM.formatU4Field(\"SizeOfHeaders\", h.SizeOfHeaders, true),\r\n FM.formatU4Field(\"CheckSum\", h.CheckSum),\r\n FM.formatU2Field(\"Subsystem\", h.Subsystem),\r\n FM.formatU2Field(\"DllCharacteristics\", h.DllCharacteristics),\r\n FM.formatU4Field(\"SizeOfStackReserve\", h.SizeOfStackReserve, true),\r\n FM.formatU4Field(\"SizeOfStackCommit\", h.SizeOfStackCommit, true),\r\n FM.formatU4Field(\"SizeOfHeapReserve\", h.SizeOfHeapReserve, true),\r\n FM.formatU4Field(\"SizeOfHeapCommit\", h.SizeOfHeapCommit, true),\r\n FM.formatU4Field(\"LoaderFlags\", h.LoaderFlags),\r\n FM.formatU4Field(\"NumberOfRvaAndSizes\", h.NumberOfRvaAndSizes, true),\r\n ],\r\n }];\r\n}\r\n\r\nfunction fillOptionalHeader64Fields(s: W.GroupedStruct, h: S.ImageOptionalHeader64): void {\r\n s.groups = [{\r\n title: \"Standard Fields\",\r\n items: [\r\n FM.formatU2Field(\"Magic\", h.Magic),\r\n FM.formatU1Field(\"MajorLinkerVersion\", h.MajorLinkerVersion, true),\r\n FM.formatU1Field(\"MinorLinkerVersion\", h.MinorLinkerVersion, true),\r\n FM.formatU4Field(\"SizeOfCode\", h.SizeOfCode, true),\r\n FM.formatU4Field(\"SizeOfInitializedData\", h.SizeOfInitializedData, true),\r\n FM.formatU4Field(\"SizeOfUninitializedData\", h.SizeOfUninitializedData, true),\r\n FM.formatU4Field(\"AddressOfEntryPoint\", h.AddressOfEntryPoint),\r\n FM.formatU4Field(\"BaseOfCode\", h.BaseOfCode),\r\n ],\r\n }, {\r\n title: \"NT-specified Fields\",\r\n items: [\r\n FM.formatU8Field(\"ImageBase\", h.ImageBase),\r\n FM.formatU4Field(\"SectionAlignment\", h.SectionAlignment, true),\r\n FM.formatU4Field(\"FileAlignment\", h.FileAlignment, true),\r\n FM.formatU2Field(\"MajorOperatingSystemVersion\", h.MajorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MinorOperatingSystemVersion\", h.MinorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MajorImageVersion\", h.MajorImageVersion, true),\r\n FM.formatU2Field(\"MinorImageVersion\", h.MinorImageVersion, true),\r\n FM.formatU2Field(\"MajorSubsystemVersion\", h.MajorSubsystemVersion, true),\r\n FM.formatU2Field(\"MinorSubsystemVersion\", h.MinorSubsystemVersion, true),\r\n FM.formatU4Field(\"Win32VersionValue\", h.Win32VersionValue, true),\r\n FM.formatU4Field(\"SizeOfImage\", h.SizeOfImage, true),\r\n FM.formatU4Field(\"SizeOfHeaders\", h.SizeOfHeaders, true),\r\n FM.formatU4Field(\"CheckSum\", h.CheckSum),\r\n FM.formatU2Field(\"Subsystem\", h.Subsystem),\r\n FM.formatU2Field(\"DllCharacteristics\", h.DllCharacteristics),\r\n FM.formatU8Field(\"SizeOfStackReserve\", h.SizeOfStackReserve, true),\r\n FM.formatU8Field(\"SizeOfStackCommit\", h.SizeOfStackCommit, true),\r\n FM.formatU8Field(\"SizeOfHeapReserve\", h.SizeOfHeapReserve, true),\r\n FM.formatU8Field(\"SizeOfHeapCommit\", h.SizeOfHeapCommit, true),\r\n FM.formatU4Field(\"LoaderFlags\", h.LoaderFlags),\r\n FM.formatU4Field(\"NumberOfRvaAndSizes\", h.NumberOfRvaAndSizes, true),\r\n ],\r\n }];\r\n}\r\n\r\nfunction generateDataDirectories(pe: PEImage): W.GroupedStruct {\r\n let s: W.GroupedStruct = {\r\n title: W.KnownTitle.DATA_DIRECTORIES,\r\n elemID: W.KnownElemID.DATA_DIRECTORIES,\r\n };\r\n\r\n const h = pe.getDataDirectories();\r\n if (!h) return s;\r\n\r\n s.groups = h.items.map((v, i) => ({\r\n title: `[${i}] ${F.ImageDirectoryEntry[i] || \"\"}`,\r\n items: [\r\n FM.formatU4Field(\"VirtualAddress\", v.VirtualAddress),\r\n FM.formatU4Field(\"Size\", v.Size, true),\r\n ]\r\n } as W.SimpleStruct));\r\n\r\n return s;\r\n}\r\n\r\nfunction generateSectionHeaders(pe: PEImage): W.GroupedStruct {\r\n let s: W.GroupedStruct = {\r\n title: W.KnownTitle.SECTION_HEADERS,\r\n elemID: W.KnownElemID.SECTION_HEADERS,\r\n };\r\n\r\n const h = pe.getSectionHeaders();\r\n if (!h) return s;\r\n\r\n s.groups = h.items.map((v, i) => ({\r\n title: `[${i}] (${v.Name.value})`,\r\n items: [\r\n FM.formatStringField(\"Name\", v.Name),\r\n FM.formatU4Field(\"VirtualSize\", v.VirtualSize, true),\r\n FM.formatU4Field(\"VirtualAddress\", v.VirtualAddress),\r\n FM.formatU4Field(\"SizeOfRawData\", v.SizeOfRawData, true),\r\n FM.formatU4Field(\"PointerToRawData\", v.PointerToRawData),\r\n FM.formatU4Field(\"PointerToRelocations\", v.PointerToRelocations),\r\n FM.formatU4Field(\"PointerToLinenumbers\", v.PointerToLinenumbers),\r\n FM.formatU2Field(\"NumberOfRelocations\", v.NumberOfRelocations, true),\r\n FM.formatU2Field(\"NumberOfLinenumbers\", v.NumberOfLinenumbers, true),\r\n FM.formatU4Field(\"Characteristics\", v.Characteristics),\r\n ]\r\n }));\r\n\r\n return s;\r\n}\r\n","import { PEImage } from \"../pe/image\";\r\nimport { generateHeadersPageData } from \"./headers\";\r\nimport { generateMetadataHeadersPageData } from \"./metadata-headers\";\r\n\r\nexport function generatePageData(pe: PEImage, pageID: W.PageID): W.PageData {\r\n switch (pageID) {\r\n case W.PageID.HEADERS: return generateHeadersPageData(pe);\r\n case W.PageID.MD_HEADERS: return generateMetadataHeadersPageData(pe);\r\n default: return { nav: { pageID: W.PageID.NOTFOUND, title: W.KnownTitle.NOTFOUND } };\r\n }\r\n}","export const enum PEErrorType {\r\n INVALID_DATA_POSITION = \"INVALID_DATA_POSITION\",\r\n INVALID_DOS_SIGNATURE = \"INVALID_DOS_SIGNATURE\",\r\n INVALID_PE_SIGNATURE = \"INVALID_PE_SIGNATURE\",\r\n INVALID_OPTIONAL_HEADER_MAGIC = \"INVALID_OPTIONAL_HEADER_MAGIC\",\r\n INVALID_DATA_DIRECTORY_COUNT = \"INVALID_DATA_DIRECTORY_COUNT\",\r\n}\r\n\r\nexport class PEError extends Error {\r\n constructor(\r\n public type: PEErrorType,\r\n public offset?: number,\r\n public size?: number\r\n ) {\r\n super(type);\r\n }\r\n}\r\n","export function calculatePadding(dataSize: number, align: number = 4): number {\r\n const r = dataSize % align;\r\n if (r == 0) {\r\n return 0;\r\n } else {\r\n return align - r;\r\n }\r\n}","import * as S from \"./structures\";\r\nimport * as F from \"./image-flags\";\r\nimport * as U from \"./utils\";\r\n\r\nexport interface FileDataProvider {\r\n getU1(p: number): number;\r\n getU2(p: number): number;\r\n getU4(p: number): number;\r\n getData(p: number, sz: number): Uint8Array;\r\n}\r\n\r\n//\r\n// Basic structures.\r\n//\r\n\r\nexport function loadU1Field(d: FileDataProvider, p: number): S.U1Field {\r\n return {\r\n _offset: p, _size: 1, data: d.getData(p, 1), value: d.getU1(p)\r\n };\r\n}\r\n\r\nexport function loadU2Field(d: FileDataProvider, p: number): S.U2Field {\r\n return {\r\n _offset: p, _size: 2, data: d.getData(p, 2), value: d.getU2(p)\r\n };\r\n}\r\n\r\nexport function loadU4Field(d: FileDataProvider, p: number): S.U4Field {\r\n return {\r\n _offset: p, _size: 4, data: d.getData(p, 4), value: d.getU4(p)\r\n };\r\n}\r\n\r\nexport function loadU8Field(d: FileDataProvider, p: number): S.U8Field {\r\n const low = d.getU4(p);\r\n const high = d.getU4(p + 4);\r\n\r\n return {\r\n _offset: p, _size: 8, data: d.getData(p, 8), low, high\r\n };\r\n}\r\n\r\nexport function loadU1EnumField(d: FileDataProvider, p: number): S.U1EnumField {\r\n return {\r\n _offset: p, _size: 1, data: d.getData(p, 1), value: d.getU1(p) as any as T\r\n };\r\n}\r\n\r\nexport function loadU2EnumField(d: FileDataProvider, p: number): S.U2EnumField {\r\n return {\r\n _offset: p, _size: 2, data: d.getData(p, 2), value: d.getU2(p) as any as T\r\n };\r\n}\r\n\r\nexport function loadU4EnumField(d: FileDataProvider, p: number): S.U4EnumField {\r\n return {\r\n _offset: p, _size: 4, data: d.getData(p, 4), value: d.getU4(p) as any as T\r\n };\r\n}\r\n\r\nexport function loadFixedSizeByteArrayField(d: FileDataProvider, p: number, sz: number): S.Field {\r\n return {\r\n _offset: p, _size: sz, data: d.getData(p, sz)\r\n };\r\n}\r\n\r\nexport function loadFixedSizeAsciiStringField(d: FileDataProvider, p: number, sz: number): S.StringField {\r\n const data = d.getData(p, sz);\r\n const value = String.fromCharCode.apply(null, Array.from(data).filter(v => v != 0));\r\n\r\n return {\r\n _offset: p, _size: sz, data, value\r\n };\r\n}\r\n\r\nexport function loadNullTerminatedStringField(d: FileDataProvider, p: number): S.StringField {\r\n let bytes: number[] = [];\r\n let ptr = p;\r\n let b: number;\r\n\r\n do {\r\n b = d.getU1(ptr++);\r\n bytes.push(b);\r\n } while (b != 0);\r\n const value = String.fromCharCode.apply(null, bytes.slice(0, bytes.length - 1));\r\n\r\n return {\r\n _offset: p, _size: ptr - p, data: Uint8Array.from(bytes), value\r\n };\r\n}\r\n\r\nexport function loadStructArrayByCount(\r\n d: FileDataProvider,\r\n p: number,\r\n loader: (d: FileDataProvider, p: number) => T,\r\n count: number): S.StructArray {\r\n\r\n let items: T[] = [];\r\n let ptr = p;\r\n for (let i = 0; i < count; i++) {\r\n const s = loader(d, ptr);\r\n items.push(s);\r\n ptr += s._size;\r\n }\r\n\r\n return { _offset: p, _size: ptr - p, items };\r\n}\r\n\r\n//\r\n// Image headers.\r\n//\r\n\r\nexport function loadImageDosHeader(d: FileDataProvider, p: number): S.ImageDosHeader {\r\n let ptr = p;\r\n\r\n const e_magic = loadU2Field(d, ptr);\r\n ptr += e_magic._size;\r\n\r\n const e_cblp = loadU2Field(d, ptr);\r\n ptr += e_cblp._size;\r\n\r\n const e_cp = loadU2Field(d, ptr);\r\n ptr += e_cp._size;\r\n\r\n const e_crlc = loadU2Field(d, ptr);\r\n ptr += e_crlc._size;\r\n\r\n const e_cparhdr = loadU2Field(d, ptr);\r\n ptr += e_cparhdr._size;\r\n\r\n const e_minalloc = loadU2Field(d, ptr);\r\n ptr += e_minalloc._size;\r\n\r\n const e_maxalloc = loadU2Field(d, ptr);\r\n ptr += e_maxalloc._size;\r\n\r\n const e_ss = loadU2Field(d, ptr);\r\n ptr += e_ss._size;\r\n\r\n const e_sp = loadU2Field(d, ptr);\r\n ptr += e_sp._size;\r\n\r\n const e_csum = loadU2Field(d, ptr);\r\n ptr += e_csum._size;\r\n\r\n const e_ip = loadU2Field(d, ptr);\r\n ptr += e_ip._size;\r\n\r\n const e_cs = loadU2Field(d, ptr);\r\n ptr += e_cs._size;\r\n\r\n const e_lfarlc = loadU2Field(d, ptr);\r\n ptr += e_lfarlc._size;\r\n\r\n const e_ovno = loadU2Field(d, ptr);\r\n ptr += e_ovno._size;\r\n\r\n const e_res = loadFixedSizeByteArrayField(d, ptr, 4 * 2);\r\n ptr += e_res._size;\r\n\r\n const e_oemid = loadU2Field(d, ptr);\r\n ptr += e_oemid._size;\r\n\r\n const e_oeminfo = loadU2Field(d, ptr);\r\n ptr += e_oeminfo._size;\r\n\r\n const e_res2 = loadFixedSizeByteArrayField(d, ptr, 10 * 2);\r\n ptr += e_res2._size;\r\n\r\n const e_lfanew = loadU4Field(d, ptr);\r\n ptr += e_lfanew._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n e_magic,\r\n e_cblp,\r\n e_cp,\r\n e_crlc,\r\n e_cparhdr,\r\n e_minalloc,\r\n e_maxalloc,\r\n e_ss,\r\n e_sp,\r\n e_csum,\r\n e_ip,\r\n e_cs,\r\n e_lfarlc,\r\n e_ovno,\r\n e_res,\r\n e_oemid,\r\n e_oeminfo,\r\n e_res2,\r\n e_lfanew,\r\n };\r\n}\r\n\r\nexport function loadImageFileHeader(d: FileDataProvider, p: number): S.ImageFileHeader {\r\n let ptr = p;\r\n\r\n const Machine = loadU2Field(d, ptr);\r\n ptr += Machine._size;\r\n\r\n const NumberOfSections = loadU2Field(d, ptr);\r\n ptr += NumberOfSections._size;\r\n\r\n const TimeDateStamp = loadU4Field(d, ptr);\r\n ptr += TimeDateStamp._size;\r\n\r\n const PointerToSymbolTable = loadU4Field(d, ptr);\r\n ptr += PointerToSymbolTable._size;\r\n\r\n const NumberOfSymbols = loadU4Field(d, ptr);\r\n ptr += NumberOfSymbols._size;\r\n\r\n const SizeOfOptionalHeader = loadU2Field(d, ptr);\r\n ptr += SizeOfOptionalHeader._size;\r\n\r\n const Characteristics = loadU2EnumField(d, ptr);\r\n ptr += Characteristics._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Machine,\r\n NumberOfSections,\r\n TimeDateStamp,\r\n PointerToSymbolTable,\r\n NumberOfSymbols,\r\n SizeOfOptionalHeader,\r\n Characteristics,\r\n };\r\n}\r\n\r\nexport function loadImageOptionalHeader32(d: FileDataProvider, p: number): S.ImageOptionalHeader32 {\r\n let ptr = p;\r\n\r\n const Magic = loadU2Field(d, ptr);\r\n ptr += Magic._size;\r\n\r\n const MajorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MajorLinkerVersion._size;\r\n\r\n const MinorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MinorLinkerVersion._size;\r\n\r\n const SizeOfCode = loadU4Field(d, ptr);\r\n ptr += SizeOfCode._size;\r\n\r\n const SizeOfInitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfInitializedData._size;\r\n\r\n const SizeOfUninitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfUninitializedData._size;\r\n\r\n const AddressOfEntryPoint = loadU4Field(d, ptr);\r\n ptr += AddressOfEntryPoint._size;\r\n\r\n const BaseOfCode = loadU4Field(d, ptr);\r\n ptr += BaseOfCode._size;\r\n\r\n const BaseOfData = loadU4Field(d, ptr);\r\n ptr += BaseOfData._size;\r\n\r\n const ImageBase = loadU4Field(d, ptr);\r\n ptr += ImageBase._size;\r\n\r\n const SectionAlignment = loadU4Field(d, ptr);\r\n ptr += SectionAlignment._size;\r\n\r\n const FileAlignment = loadU4Field(d, ptr);\r\n ptr += FileAlignment._size;\r\n\r\n const MajorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorOperatingSystemVersion._size;\r\n\r\n const MinorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorOperatingSystemVersion._size;\r\n\r\n const MajorImageVersion = loadU2Field(d, ptr);\r\n ptr += MajorImageVersion._size;\r\n\r\n const MinorImageVersion = loadU2Field(d, ptr);\r\n ptr += MinorImageVersion._size;\r\n\r\n const MajorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorSubsystemVersion._size;\r\n\r\n const MinorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorSubsystemVersion._size;\r\n\r\n const Win32VersionValue = loadU4Field(d, ptr);\r\n ptr += Win32VersionValue._size;\r\n\r\n const SizeOfImage = loadU4Field(d, ptr);\r\n ptr += SizeOfImage._size;\r\n\r\n const SizeOfHeaders = loadU4Field(d, ptr);\r\n ptr += SizeOfHeaders._size;\r\n\r\n const CheckSum = loadU4Field(d, ptr);\r\n ptr += CheckSum._size;\r\n\r\n const Subsystem = loadU2EnumField(d, ptr);\r\n ptr += Subsystem._size;\r\n\r\n const DllCharacteristics = loadU2EnumField(d, ptr);\r\n ptr += DllCharacteristics._size;\r\n\r\n const SizeOfStackReserve = loadU4Field(d, ptr);\r\n ptr += SizeOfStackReserve._size;\r\n\r\n const SizeOfStackCommit = loadU4Field(d, ptr);\r\n ptr += SizeOfStackCommit._size;\r\n\r\n const SizeOfHeapReserve = loadU4Field(d, ptr);\r\n ptr += SizeOfHeapReserve._size;\r\n\r\n const SizeOfHeapCommit = loadU4Field(d, ptr);\r\n ptr += SizeOfHeapCommit._size;\r\n\r\n const LoaderFlags = loadU4Field(d, ptr);\r\n ptr += LoaderFlags._size;\r\n\r\n const NumberOfRvaAndSizes = loadU4Field(d, ptr);\r\n ptr += NumberOfRvaAndSizes._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Magic,\r\n MajorLinkerVersion,\r\n MinorLinkerVersion,\r\n SizeOfCode,\r\n SizeOfInitializedData,\r\n SizeOfUninitializedData,\r\n AddressOfEntryPoint,\r\n BaseOfCode,\r\n BaseOfData,\r\n ImageBase,\r\n SectionAlignment,\r\n FileAlignment,\r\n MajorOperatingSystemVersion,\r\n MinorOperatingSystemVersion,\r\n MajorImageVersion,\r\n MinorImageVersion,\r\n MajorSubsystemVersion,\r\n MinorSubsystemVersion,\r\n Win32VersionValue,\r\n SizeOfImage,\r\n SizeOfHeaders,\r\n CheckSum,\r\n Subsystem,\r\n DllCharacteristics,\r\n SizeOfStackReserve,\r\n SizeOfStackCommit,\r\n SizeOfHeapReserve,\r\n SizeOfHeapCommit,\r\n LoaderFlags,\r\n NumberOfRvaAndSizes,\r\n };\r\n}\r\n\r\nexport function loadImageOptionalHeader64(d: FileDataProvider, p: number): S.ImageOptionalHeader64 {\r\n let ptr = p;\r\n\r\n const Magic = loadU2Field(d, ptr);\r\n ptr += Magic._size;\r\n\r\n const MajorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MajorLinkerVersion._size;\r\n\r\n const MinorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MinorLinkerVersion._size;\r\n\r\n const SizeOfCode = loadU4Field(d, ptr);\r\n ptr += SizeOfCode._size;\r\n\r\n const SizeOfInitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfInitializedData._size;\r\n\r\n const SizeOfUninitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfUninitializedData._size;\r\n\r\n const AddressOfEntryPoint = loadU4Field(d, ptr);\r\n ptr += AddressOfEntryPoint._size;\r\n\r\n const BaseOfCode = loadU4Field(d, ptr);\r\n ptr += BaseOfCode._size;\r\n\r\n const ImageBase = loadU8Field(d, ptr);\r\n ptr += ImageBase._size;\r\n\r\n const SectionAlignment = loadU4Field(d, ptr);\r\n ptr += SectionAlignment._size;\r\n\r\n const FileAlignment = loadU4Field(d, ptr);\r\n ptr += FileAlignment._size;\r\n\r\n const MajorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorOperatingSystemVersion._size;\r\n\r\n const MinorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorOperatingSystemVersion._size;\r\n\r\n const MajorImageVersion = loadU2Field(d, ptr);\r\n ptr += MajorImageVersion._size;\r\n\r\n const MinorImageVersion = loadU2Field(d, ptr);\r\n ptr += MinorImageVersion._size;\r\n\r\n const MajorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorSubsystemVersion._size;\r\n\r\n const MinorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorSubsystemVersion._size;\r\n\r\n const Win32VersionValue = loadU4Field(d, ptr);\r\n ptr += Win32VersionValue._size;\r\n\r\n const SizeOfImage = loadU4Field(d, ptr);\r\n ptr += SizeOfImage._size;\r\n\r\n const SizeOfHeaders = loadU4Field(d, ptr);\r\n ptr += SizeOfHeaders._size;\r\n\r\n const CheckSum = loadU4Field(d, ptr);\r\n ptr += CheckSum._size;\r\n\r\n const Subsystem = loadU2EnumField(d, ptr);\r\n ptr += Subsystem._size;\r\n\r\n const DllCharacteristics = loadU2EnumField(d, ptr);\r\n ptr += DllCharacteristics._size;\r\n\r\n const SizeOfStackReserve = loadU8Field(d, ptr);\r\n ptr += SizeOfStackReserve._size;\r\n\r\n const SizeOfStackCommit = loadU8Field(d, ptr);\r\n ptr += SizeOfStackCommit._size;\r\n\r\n const SizeOfHeapReserve = loadU8Field(d, ptr);\r\n ptr += SizeOfHeapReserve._size;\r\n\r\n const SizeOfHeapCommit = loadU8Field(d, ptr);\r\n ptr += SizeOfHeapCommit._size;\r\n\r\n const LoaderFlags = loadU4Field(d, ptr);\r\n ptr += LoaderFlags._size;\r\n\r\n const NumberOfRvaAndSizes = loadU4Field(d, ptr);\r\n ptr += NumberOfRvaAndSizes._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Magic,\r\n MajorLinkerVersion,\r\n MinorLinkerVersion,\r\n SizeOfCode,\r\n SizeOfInitializedData,\r\n SizeOfUninitializedData,\r\n AddressOfEntryPoint,\r\n BaseOfCode,\r\n ImageBase,\r\n SectionAlignment,\r\n FileAlignment,\r\n MajorOperatingSystemVersion,\r\n MinorOperatingSystemVersion,\r\n MajorImageVersion,\r\n MinorImageVersion,\r\n MajorSubsystemVersion,\r\n MinorSubsystemVersion,\r\n Win32VersionValue,\r\n SizeOfImage,\r\n SizeOfHeaders,\r\n CheckSum,\r\n Subsystem,\r\n DllCharacteristics,\r\n SizeOfStackReserve,\r\n SizeOfStackCommit,\r\n SizeOfHeapReserve,\r\n SizeOfHeapCommit,\r\n LoaderFlags,\r\n NumberOfRvaAndSizes,\r\n };\r\n}\r\n\r\nexport function loadImageDataDirectory(d: FileDataProvider, p: number): S.ImageDataDirectory {\r\n let ptr = p;\r\n\r\n const VirtualAddress = loadU4Field(d, ptr);\r\n ptr += VirtualAddress._size;\r\n\r\n const Size = loadU4Field(d, ptr);\r\n ptr += Size._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n VirtualAddress,\r\n Size,\r\n };\r\n}\r\n\r\nexport function loadImageSectionHeader(d: FileDataProvider, p: number): S.ImageSectionHeader {\r\n let ptr = p;\r\n\r\n const Name = loadFixedSizeAsciiStringField(d, ptr, 8);\r\n ptr += Name._size;\r\n\r\n const VirtualSize = loadU4Field(d, ptr);\r\n ptr += VirtualSize._size;\r\n\r\n const VirtualAddress = loadU4Field(d, ptr);\r\n ptr += VirtualAddress._size;\r\n\r\n const SizeOfRawData = loadU4Field(d, ptr);\r\n ptr += SizeOfRawData._size;\r\n\r\n const PointerToRawData = loadU4Field(d, ptr);\r\n ptr += PointerToRawData._size;\r\n\r\n const PointerToRelocations = loadU4Field(d, ptr);\r\n ptr += PointerToRelocations._size;\r\n\r\n const PointerToLinenumbers = loadU4Field(d, ptr);\r\n ptr += PointerToLinenumbers._size;\r\n\r\n const NumberOfRelocations = loadU2Field(d, ptr);\r\n ptr += NumberOfRelocations._size;\r\n\r\n const NumberOfLinenumbers = loadU2Field(d, ptr);\r\n ptr += NumberOfLinenumbers._size;\r\n\r\n const Characteristics = loadU4EnumField(d, ptr);\r\n ptr += Characteristics._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Name,\r\n VirtualSize,\r\n VirtualAddress,\r\n SizeOfRawData,\r\n PointerToRawData,\r\n PointerToRelocations,\r\n PointerToLinenumbers,\r\n NumberOfRelocations,\r\n NumberOfLinenumbers,\r\n Characteristics,\r\n };\r\n}\r\n\r\n//\r\n// Metadata structures.\r\n//\r\n\r\nexport function loadCliHeader(d: FileDataProvider, p: number): S.CliHeader {\r\n let ptr = p;\r\n\r\n const cb = loadU4Field(d, ptr);\r\n ptr += cb._size;\r\n\r\n const MajorRuntimeVersion = loadU2Field(d, ptr);\r\n ptr += MajorRuntimeVersion._size;\r\n\r\n const MinorRuntimeVersion = loadU2Field(d, ptr);\r\n ptr += MinorRuntimeVersion._size;\r\n\r\n const MetaData = loadImageDataDirectory(d, ptr);\r\n ptr += MetaData._size;\r\n\r\n const Flags = loadU4Field(d, ptr);\r\n ptr += Flags._size;\r\n\r\n const EntryPointToken = loadU4Field(d, ptr);\r\n ptr += EntryPointToken._size;\r\n\r\n const Resources = loadImageDataDirectory(d, ptr);\r\n ptr += Resources._size;\r\n\r\n const StrongNameSignature = loadImageDataDirectory(d, ptr);\r\n ptr += StrongNameSignature._size;\r\n\r\n const CodeManagerTable = loadImageDataDirectory(d, ptr);\r\n ptr += CodeManagerTable._size;\r\n\r\n const VTableFixups = loadImageDataDirectory(d, ptr);\r\n ptr += VTableFixups._size;\r\n\r\n const ExportAddressTableJumps = loadImageDataDirectory(d, ptr);\r\n ptr += ExportAddressTableJumps._size;\r\n\r\n const ManagedNativeHeader = loadImageDataDirectory(d, ptr);\r\n ptr += ManagedNativeHeader._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n cb,\r\n MajorRuntimeVersion,\r\n MinorRuntimeVersion,\r\n MetaData,\r\n Flags,\r\n EntryPointToken,\r\n Resources,\r\n StrongNameSignature,\r\n CodeManagerTable,\r\n VTableFixups,\r\n ExportAddressTableJumps,\r\n ManagedNativeHeader,\r\n };\r\n}\r\n\r\nexport function loadMetadataRoot(d: FileDataProvider, p: number): S.MetadataRoot {\r\n let ptr = p;\r\n\r\n const Signature = loadU4Field(d, ptr);\r\n ptr += Signature._size;\r\n\r\n const MajorVersion = loadU2Field(d, ptr);\r\n ptr += MajorVersion._size;\r\n\r\n const MinorVersion = loadU2Field(d, ptr);\r\n ptr += MinorVersion._size;\r\n\r\n const Reserved = loadU4Field(d, ptr);\r\n ptr += Reserved._size;\r\n\r\n const VersionLength = loadU4Field(d, ptr);\r\n ptr += VersionLength._size;\r\n\r\n const VersionString = loadNullTerminatedStringField(d, ptr);\r\n ptr += VersionString._size;\r\n\r\n const paddingSize = U.calculatePadding(VersionString._size);\r\n const VersionPadding = loadFixedSizeByteArrayField(d, ptr, paddingSize);\r\n ptr += VersionPadding._size;\r\n\r\n const Flags = loadU2Field(d, ptr);\r\n ptr += Flags._size;\r\n\r\n const Streams = loadU2Field(d, ptr);\r\n ptr += Streams._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Signature,\r\n MajorVersion,\r\n MinorVersion,\r\n Reserved,\r\n VersionLength,\r\n VersionString,\r\n VersionPadding,\r\n Flags,\r\n Streams,\r\n };\r\n}\r\n\r\nexport function loadMetadataStreamHeader(d: FileDataProvider, p: number): S.MetadataStreamHeader {\r\n let ptr = p;\r\n\r\n const Offset = loadU4Field(d, ptr);\r\n ptr += Offset._size;\r\n\r\n const Size = loadU4Field(d, ptr);\r\n ptr += Size._size;\r\n\r\n const Name = loadNullTerminatedStringField(d, ptr);\r\n ptr += Name._size;\r\n\r\n const paddingSize = U.calculatePadding(Name._size);\r\n const Padding = loadFixedSizeByteArrayField(d, ptr, paddingSize);\r\n ptr += Padding._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Offset,\r\n Size,\r\n Name,\r\n Padding,\r\n };\r\n}","import * as S from \"./structures\";\r\nimport * as L from \"./loader\";\r\nimport * as F from \"./image-flags\";\r\nimport * as E from \"./error\";\r\n\r\nexport class PEImage implements L.FileDataProvider {\r\n public static load(buf: ArrayBuffer): PEImage {\r\n return new PEImage(buf);\r\n }\r\n\r\n //\r\n // FileDataProvider functions.\r\n //\r\n\r\n public getU1(p: number): number {\r\n this.check(p, 1);\r\n return this.data.getUint8(p);\r\n }\r\n\r\n public getU2(p: number): number {\r\n this.check(p, 2);\r\n return this.data.getUint16(p, true);\r\n }\r\n\r\n public getU4(p: number): number {\r\n this.check(p, 3);\r\n return this.data.getUint32(p, true);\r\n }\r\n\r\n public getData(p: number, sz: number): Uint8Array {\r\n this.check(p, sz);\r\n return new Uint8Array(this.data.buffer.slice(p, p + sz));\r\n }\r\n\r\n //\r\n // Image attributes.\r\n //\r\n\r\n public is32Bit(): boolean | undefined {\r\n const optHdr = this.getOptionalHeader();\r\n if (optHdr == null) {\r\n return undefined;\r\n }\r\n\r\n switch (optHdr.Magic.value) {\r\n case F.IMAGE_NT_OPTIONAL_HDR32_MAGIC: return true;\r\n case F.IMAGE_NT_OPTIONAL_HDR64_MAGIC: return false;\r\n default: return undefined;\r\n }\r\n }\r\n\r\n public isManaged(): boolean {\r\n const dd = this.getDataDirectories();\r\n return dd != null && this.isDataDirectoryValid(\r\n dd.items[F.ImageDirectoryEntry.IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR]\r\n );\r\n }\r\n\r\n public hasMetadata(): boolean {\r\n const h = this.getCliHeader();\r\n return h != null && this.isDataDirectoryValid(h.MetaData);\r\n }\r\n\r\n public hasManagedResources(): boolean {\r\n const h = this.getCliHeader();\r\n return h != null && this.isDataDirectoryValid(h.Resources);\r\n }\r\n\r\n public hasStrongNameSignature(): boolean {\r\n const h = this.getCliHeader();\r\n return h != null && this.isDataDirectoryValid(h.StrongNameSignature);\r\n }\r\n\r\n //\r\n // Image headers.\r\n //\r\n\r\n public getDosHeader(): S.ImageDosHeader | undefined {\r\n return this.dosHeader;\r\n }\r\n\r\n public getPESignature(): S.U4Field | undefined {\r\n return this.peSignature;\r\n }\r\n\r\n public getFileHeader(): S.ImageFileHeader | undefined {\r\n return this.fileHeader;\r\n }\r\n\r\n public getOptionalHeader(): S.ImageOptionalHeader32 | S.ImageOptionalHeader64 | undefined {\r\n return this.optionalHeader;\r\n }\r\n\r\n public getDataDirectories(): S.StructArray | undefined {\r\n return this.dataDirectories;\r\n }\r\n\r\n public getSectionHeaders(): S.StructArray | undefined {\r\n return this.sectionHeaders;\r\n }\r\n\r\n //\r\n // Metadata structures.\r\n //\r\n\r\n public getCliHeader(): S.CliHeader | undefined {\r\n if (this.cliHeader != null) return this.cliHeader;\r\n if (!this.isManaged()) return undefined;\r\n\r\n const offset = this.rvaToOffset(this.dataDirectories!\r\n .items[F.ImageDirectoryEntry.IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR]\r\n .VirtualAddress.value);\r\n\r\n this.cliHeader = L.loadCliHeader(this, offset);\r\n return this.cliHeader;\r\n }\r\n\r\n public getMetadataRoot(): S.MetadataRoot | undefined {\r\n if (this.metadataRoot != null) return this.metadataRoot;\r\n\r\n const cliHeader = this.getCliHeader();\r\n if (!cliHeader) return undefined;\r\n\r\n const offset = this.rvaToOffset(cliHeader.MetaData.VirtualAddress.value);\r\n if (!offset) return undefined;\r\n\r\n this.metadataRoot = L.loadMetadataRoot(this, offset);\r\n return this.metadataRoot;\r\n }\r\n\r\n public getMetadataStreamHeaders(): S.StructArray | undefined {\r\n if (this.metadataStreamHeaders != null) return this.metadataStreamHeaders;\r\n\r\n const mdRoot = this.getMetadataRoot();\r\n if (!mdRoot || !mdRoot.Streams.value) return undefined;\r\n\r\n this.metadataStreamHeaders = L.loadStructArrayByCount(\r\n this,\r\n mdRoot._offset + mdRoot._size,\r\n L.loadMetadataStreamHeader,\r\n mdRoot.Streams.value\r\n );\r\n return this.metadataStreamHeaders;\r\n }\r\n\r\n //\r\n // Utilities.\r\n //\r\n\r\n public rvaToOffset(rva: number): number {\r\n const sh = this.getSectionHeaderByRva(rva);\r\n if (!sh) return 0;\r\n\r\n return rva - sh.VirtualAddress.value + sh.PointerToRawData.value;\r\n }\r\n\r\n public offsetToRva(offset: number): number {\r\n const sh = this.getSectionHeaderByOffset(offset);\r\n if (!sh) return 0;\r\n\r\n return offset - sh.PointerToRawData.value + sh.VirtualAddress.value;\r\n }\r\n\r\n //\r\n // Private implementations.\r\n //\r\n\r\n private check(p: number, sz: number): void {\r\n if (p < 0 || p >= this.data.byteLength\r\n || sz < 0 || p + sz > this.data.byteLength) {\r\n throw new E.PEError(E.PEErrorType.INVALID_DATA_POSITION, p, sz);\r\n }\r\n }\r\n\r\n private constructor(buf: ArrayBuffer) {\r\n this.data = new DataView(buf);\r\n this.loadHeaders();\r\n }\r\n\r\n private loadHeaders(): void {\r\n let ptr = 0;\r\n this.dosHeader = L.loadImageDosHeader(this, ptr);\r\n\r\n if (this.dosHeader.e_magic.value != F.IMAGE_DOS_SIGNATURE) {\r\n throw new E.PEError(E.PEErrorType.INVALID_DOS_SIGNATURE, ptr, 2);\r\n }\r\n\r\n ptr = this.dosHeader.e_lfanew.value;\r\n this.peSignature = L.loadU4Field(this, ptr);\r\n\r\n if (this.peSignature.value != F.IMAGE_NT_SIGNATURE) {\r\n throw new E.PEError(E.PEErrorType.INVALID_PE_SIGNATURE, ptr, 4);\r\n }\r\n\r\n ptr += this.peSignature._size;\r\n this.fileHeader = L.loadImageFileHeader(this, ptr);\r\n\r\n ptr += this.fileHeader._size;\r\n const magic = L.loadU2Field(this, ptr);\r\n switch (magic.value) {\r\n case F.IMAGE_NT_OPTIONAL_HDR32_MAGIC:\r\n this.optionalHeader = L.loadImageOptionalHeader32(this, ptr);\r\n break;\r\n case F.IMAGE_NT_OPTIONAL_HDR64_MAGIC:\r\n this.optionalHeader = L.loadImageOptionalHeader64(this, ptr);\r\n break;\r\n default:\r\n throw new E.PEError(E.PEErrorType.INVALID_OPTIONAL_HEADER_MAGIC, ptr, 2);\r\n }\r\n\r\n if (this.optionalHeader.NumberOfRvaAndSizes.value != F.IMAGE_NUMBEROF_DIRECTORY_ENTRIES) {\r\n throw new E.PEError(E.PEErrorType.INVALID_DATA_DIRECTORY_COUNT,\r\n this.optionalHeader.NumberOfRvaAndSizes._offset,\r\n this.optionalHeader.NumberOfRvaAndSizes._size);\r\n }\r\n\r\n ptr += this.optionalHeader._size;\r\n this.dataDirectories = L.loadStructArrayByCount(this, ptr,\r\n L.loadImageDataDirectory,\r\n this.optionalHeader.NumberOfRvaAndSizes.value);\r\n\r\n ptr += this.dataDirectories._size;\r\n this.sectionHeaders = L.loadStructArrayByCount(this, ptr,\r\n L.loadImageSectionHeader,\r\n this.fileHeader.NumberOfSections.value);\r\n }\r\n\r\n private getSectionHeaderByOffset(offset: number): S.ImageSectionHeader | undefined {\r\n return this.sectionHeaders && this.sectionHeaders.items.filter(h => {\r\n const p = h.PointerToRawData.value;\r\n const sz = h.SizeOfRawData.value;\r\n return offset >= p && offset < p + sz;\r\n }).shift();\r\n }\r\n\r\n private getSectionHeaderByRva(rva: number): S.ImageSectionHeader | undefined {\r\n return this.sectionHeaders && this.sectionHeaders.items.filter(h => {\r\n const p = h.VirtualAddress.value;\r\n const sz = h.VirtualSize.value;\r\n return rva >= p && rva < p + sz;\r\n }).shift();\r\n }\r\n\r\n private isDataDirectoryValid(dd?: S.ImageDataDirectory): boolean {\r\n return (dd && dd.VirtualAddress.value > 0 && dd.Size.value > 0) || false;\r\n }\r\n\r\n private readonly data: DataView;\r\n\r\n private dosHeader?: S.ImageDosHeader;\r\n private peSignature?: S.U4Field;\r\n private fileHeader?: S.ImageFileHeader;\r\n private optionalHeader?: S.ImageOptionalHeader32 | S.ImageOptionalHeader64;\r\n private dataDirectories?: S.StructArray;\r\n private sectionHeaders?: S.StructArray;\r\n\r\n private cliHeader?: S.CliHeader;\r\n private metadataRoot?: S.MetadataRoot;\r\n private metadataStreamHeaders?: S.StructArray;\r\n}\r\n","export function createResNavDataMessage(navList: W.NavData[]): W.ResNavDataMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_NAV_DATA,\r\n navList\r\n };\r\n}\r\n\r\nexport function createResPageDataMessage(pageData: W.PageData): W.ResPageDataMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_PAGE_DATA,\r\n pageData\r\n };\r\n}\r\n\r\nexport function createResPEPropsMessage(is32Bit?: boolean, isManaged?: boolean): W.ResPEPropsMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_PE_PROPS,\r\n is32Bit,\r\n isManaged\r\n };\r\n}\r\n\r\nexport function createResPEErrorMessage(error: string): W.ResPEErrorMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_PE_ERROR,\r\n error\r\n };\r\n}\r\n","import * as M from \"./message\";\r\nimport { PEImage } from \"./pe/image\";\r\nimport { generatePageData } from \"./page-data/generator\";\r\nimport { generateNavList } from \"./page-data/nav-data\";\r\n\r\nlet pe: PEImage | null = null;\r\n\r\nonmessage = (ev) => {\r\n const msg = ev.data as W.WorkerMessage;\r\n switch (msg.type) {\r\n case W.WorkerMessageType.REQ_OPEN_FILE:\r\n handleReqOpenFile(msg as W.ReqOpenFileMessage);\r\n break;\r\n\r\n case W.WorkerMessageType.REQ_OPEN_NAV:\r\n handleReqOpenNav(msg as W.ReqOpenNavMessage);\r\n break;\r\n }\r\n};\r\n\r\nfunction handleReqOpenFile(msg: W.ReqOpenFileMessage): void {\r\n let reader = new FileReader();\r\n\r\n reader.onload = ev => {\r\n try {\r\n const buf = (ev.target).result;\r\n pe = PEImage.load(buf);\r\n\r\n // Response with page data.\r\n const pageData = generatePageData(pe, W.PageID.HEADERS);\r\n const pageDataMsg = M.createResPageDataMessage(pageData);\r\n postMessage(pageDataMsg);\r\n\r\n // Response with PE properties.\r\n const is32Bit = pe.is32Bit();\r\n const isManaged = pe.isManaged();\r\n const pePropsMsg = M.createResPEPropsMessage(is32Bit, isManaged);\r\n postMessage(pePropsMsg);\r\n\r\n // Response with navigation data.\r\n const navList = generateNavList(pe);\r\n const navMsg = M.createResNavDataMessage(navList);\r\n postMessage(navMsg);\r\n } catch (ex) {\r\n const msg = M.createResPEErrorMessage(ex.message\r\n || `Unknown error: ${JSON.stringify(ex)}`);\r\n postMessage(msg);\r\n }\r\n };\r\n\r\n reader.onerror = ev => {\r\n pe = null;\r\n const msg = M.createResPEErrorMessage(\"Can't open file.\");\r\n postMessage(msg);\r\n };\r\n\r\n reader.readAsArrayBuffer(msg.file);\r\n}\r\n\r\nfunction handleReqOpenNav(msg: W.ReqOpenNavMessage): void {\r\n if (pe != null) {\r\n const pageData = generatePageData(pe, msg.target.pageID);\r\n pageData.nav.elemID = msg.target.elemID;\r\n const res = M.createResPageDataMessage(pageData);\r\n postMessage(res);\r\n }\r\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/worker/page-data/formatter.ts","webpack:///./src/worker/pe/image-flags.ts","webpack:///./src/worker/page-data/nav-data.ts","webpack:///./src/worker/page-data/metadata-headers.ts","webpack:///./src/worker/page-data/headers.ts","webpack:///./src/worker/page-data/generator.ts","webpack:///./src/worker/pe/error.ts","webpack:///./src/worker/pe/utils.ts","webpack:///./src/worker/pe/loader.ts","webpack:///./src/worker/pe/image.ts","webpack:///./src/worker/message.ts","webpack:///./src/worker/index.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","object","property","prototype","hasOwnProperty","p","s","formatU1RawHex","padZeroLeft","toString","toUpperCase","formatU2RawHex","formatU4RawHex","formatU1Hex","formatU2Hex","formatU4Hex","formatHexDec","formatBytes","bytes","lineWidth","lines","start","length","line","Array","from","subarray","map","b","join","push","str","len","repeat","formatUIntField","f","sz","showDec","hex","offset","_offset","size","_size","rawData","data","formatDec","v","toLocaleString","formatStructTitle","title","formatU1Field","formatU2Field","formatU4Field","formatU8Field","high","low","formatBytesField","formatStringField","IMAGE_DOS_SIGNATURE","IMAGE_NT_SIGNATURE","IMAGE_NT_OPTIONAL_HDR32_MAGIC","IMAGE_NT_OPTIONAL_HDR64_MAGIC","ImageFile","ImageFileMachine","ImageSubsystem","ImageDllCharacteristics","ImageDirectoryEntry","IMAGE_NUMBEROF_DIRECTORY_ENTRIES","ImageSection","ComImageFlags","MetadataSignature","generateNavList","pe","pageID","navList","target","children","elemID","navMD","isManaged","hasMetadata","generateMDHeadersNavData","FM","generateMetadataHeadersPageData","nav","cliHeader","h","getCliHeader","items","cb","MajorRuntimeVersion","MinorRuntimeVersion","MetaData","VirtualAddress","Size","Flags","EntryPointToken","Resources","StrongNameSignature","CodeManagerTable","VTableFixups","ExportAddressTableJumps","ManagedNativeHeader","generateCliHeader","metadataRoot","getMetadataRoot","Signature","MajorVersion","MinorVersion","Reserved","VersionLength","VersionString","VersionPadding","Streams","generateMetadataRoot","streamHeaders","getMetadataStreamHeaders","groups","Name","Offset","Padding","generateMetadataStreamHeader","F","generateHeadersPageData","dosHeader","getDosHeader","e_magic","e_cblp","e_cp","e_crlc","e_cparhdr","e_minalloc","e_maxalloc","e_ss","e_sp","e_csum","e_ip","e_cs","e_lfarlc","e_ovno","e_res","e_oemid","e_oeminfo","e_res2","e_lfanew","generateDosHeader","peSignature","getPESignature","generatePESignature","fileHeader","getFileHeader","Machine","NumberOfSections","TimeDateStamp","PointerToSymbolTable","NumberOfSymbols","SizeOfOptionalHeader","Characteristics","generateFileHeader","optionalHeader","getOptionalHeader","Magic","MajorLinkerVersion","MinorLinkerVersion","SizeOfCode","SizeOfInitializedData","SizeOfUninitializedData","AddressOfEntryPoint","BaseOfCode","BaseOfData","ImageBase","SectionAlignment","FileAlignment","MajorOperatingSystemVersion","MinorOperatingSystemVersion","MajorImageVersion","MinorImageVersion","MajorSubsystemVersion","MinorSubsystemVersion","Win32VersionValue","SizeOfImage","SizeOfHeaders","CheckSum","Subsystem","DllCharacteristics","SizeOfStackReserve","SizeOfStackCommit","SizeOfHeapReserve","SizeOfHeapCommit","LoaderFlags","NumberOfRvaAndSizes","fillOptionalHeader32Fields","fillOptionalHeader64Fields","generateOptionalHeader","dataDirectories","getDataDirectories","generateDataDirectories","sectionHeaders","getSectionHeaders","VirtualSize","SizeOfRawData","PointerToRawData","PointerToRelocations","PointerToLinenumbers","NumberOfRelocations","NumberOfLinenumbers","generateSectionHeaders","headers_1","metadata_headers_1","generatePageData","PEError","_super","type","_this","this","__extends","Error","calculatePadding","dataSize","align","U","loadU1Field","getData","getU1","loadU2Field","getU2","loadU4Field","getU4","loadU8Field","loadU2EnumField","loadU4EnumField","loadFixedSizeByteArrayField","loadFixedSizeAsciiStringField","String","fromCharCode","apply","filter","loadNullTerminatedStringField","ptr","slice","Uint8Array","loadImageDataDirectory","loadU1EnumField","loadStructArrayByCount","loader","count","loadImageDosHeader","loadImageFileHeader","loadImageOptionalHeader32","loadImageOptionalHeader64","loadImageSectionHeader","loadCliHeader","loadMetadataRoot","loadMetadataStreamHeader","L","E","PEImage","buf","DataView","loadHeaders","load","check","getUint8","getUint16","getUint32","buffer","is32Bit","optHdr","dd","isDataDirectoryValid","IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR","hasManagedResources","hasStrongNameSignature","rvaToOffset","metadataStreamHeaders","mdRoot","rva","sh","getSectionHeaderByRva","offsetToRva","getSectionHeaderByOffset","byteLength","shift","createResNavDataMessage","createResPageDataMessage","pageData","createResPEPropsMessage","createResPEErrorMessage","error","M","image_1","generator_1","nav_data_1","onmessage","ev","msg","reader","FileReader","onload","result","pageDataMsg","postMessage","pePropsMsg","navMsg","ex","msg_1","message","JSON","stringify","onerror","readAsArrayBuffer","file","handleReqOpenFile","res","handleReqOpenNav"],"mappings":"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","file":"worker.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","import * as S from \"../pe/structures\";\r\nimport { format } from \"url\";\r\n\r\nexport function formatU1RawHex(d: number): string {\r\n return padZeroLeft(d.toString(16).toUpperCase(), 2);\r\n}\r\n\r\nexport function formatU2RawHex(d: number): string {\r\n return padZeroLeft(d.toString(16).toUpperCase(), 4);\r\n}\r\n\r\nexport function formatU4RawHex(d: number): string {\r\n return padZeroLeft(d.toString(16).toUpperCase(), 8);\r\n}\r\n\r\nexport function formatU1Hex(d: number): string {\r\n return `${formatU1RawHex(d)}h`;\r\n}\r\n\r\nexport function formatU2Hex(d: number): string {\r\n return `${formatU2RawHex(d)}h`;\r\n}\r\n\r\nexport function formatU4Hex(d: number): string {\r\n return `${formatU4RawHex(d)}h`;\r\n}\r\n\r\nexport function formatHexDec(d: number): string {\r\n return `${d.toString(16).toUpperCase()}h (${d})`;\r\n}\r\n\r\nexport function formatBytes(bytes: Uint8Array, lineWidth: number = 16): string[] {\r\n let lines: string[] = [];\r\n for (let start = 0; start < bytes.length; start += lineWidth) {\r\n const line = Array.from(bytes.subarray(start, start + lineWidth))\r\n .map(b => formatU1RawHex(b)).join(\"-\");\r\n lines.push(line);\r\n }\r\n return lines;\r\n}\r\n\r\nexport function formatStructTitle(s: S.FileData, title: string): string {\r\n return `${title} [${formatU4Hex(s._offset)} - ${formatU4Hex(s._offset + s._size)} : ${formatHexDec(s._size)}]`;\r\n}\r\n\r\nexport function formatU1Field(name: string, f: S.U1Field, showDec?: boolean): W.StructItem {\r\n return formatUIntField(name, f, 1, showDec);\r\n}\r\n\r\nexport function formatU2Field(name: string, f: S.U2Field, showDec?: boolean): W.StructItem {\r\n return formatUIntField(name, f, 2, showDec);\r\n}\r\n\r\nexport function formatU4Field(name: string, f: S.U4Field, showDec?: boolean): W.StructItem {\r\n return formatUIntField(name, f, 4, showDec);\r\n}\r\n\r\nexport function formatU8Field(name: string, f: S.U8Field, showDec?: boolean): W.StructItem {\r\n let value = `${formatU4RawHex(f.high)} ${formatU4Hex(f.low)}`;\r\n\r\n if (showDec && f.high < 0x1FFFFF) {\r\n const long = f.high * 0x100000000 + f.low;\r\n value += ` (${formatDec(long)})`;\r\n }\r\n\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value,\r\n };\r\n}\r\n\r\nexport function formatBytesField(name: string, f: S.Field): W.StructItem {\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value: \"\",\r\n }\r\n}\r\n\r\nexport function formatStringField(name: string, f: S.StringField): W.StructItem {\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value: `\"${f.value}\"`,\r\n }\r\n}\r\n\r\nfunction padZeroLeft(str: string, len: number): string {\r\n if (str.length < len) {\r\n return \"0\".repeat(len - str.length) + str;\r\n } else {\r\n return str;\r\n }\r\n}\r\n\r\nfunction formatUIntField(name: string, f: S.UIntField, sz: number, showDec?: boolean): W.StructItem {\r\n let hex: string;\r\n switch (sz) {\r\n case 1: hex = formatU1Hex(f.value); break;\r\n case 2: hex = formatU2Hex(f.value); break;\r\n case 4: hex = formatU4Hex(f.value); break;\r\n default: hex = f.value.toString(16).toUpperCase(); break;\r\n }\r\n\r\n return {\r\n offset: formatU4Hex(f._offset),\r\n size: formatHexDec(f._size),\r\n rawData: formatBytes(f.data),\r\n name,\r\n value: showDec ? `${hex} (${formatDec(f.value)})` : hex,\r\n }\r\n}\r\n\r\nfunction formatDec(v: number): string {\r\n return v.toLocaleString();\r\n}\r\n","export const IMAGE_DOS_SIGNATURE = 0x5A4D; // MZ\r\n\r\nexport const IMAGE_NT_SIGNATURE = 0x00004550; // PE00\r\n\r\nexport const IMAGE_NT_OPTIONAL_HDR32_MAGIC = 0x10b;\r\nexport const IMAGE_NT_OPTIONAL_HDR64_MAGIC = 0x20b;\r\n\r\nexport enum ImageFile {\r\n IMAGE_FILE_RELOCS_STRIPPED = 0x0001,\r\n IMAGE_FILE_EXECUTABLE_IMAGE = 0x0002,\r\n IMAGE_FILE_LINE_NUMS_STRIPPED = 0x0004,\r\n IMAGE_FILE_LOCAL_SYMS_STRIPPED = 0x0008,\r\n IMAGE_FILE_AGGRESIVE_WS_TRIM = 0x0010,\r\n IMAGE_FILE_LARGE_ADDRESS_AWARE = 0x0020,\r\n IMAGE_FILE_BYTES_REVERSED_LO = 0x0080,\r\n IMAGE_FILE_32BIT_MACHINE = 0x0100,\r\n IMAGE_FILE_DEBUG_STRIPPED = 0x0200,\r\n IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = 0x0400,\r\n IMAGE_FILE_NET_RUN_FROM_SWAP = 0x0800,\r\n IMAGE_FILE_SYSTEM = 0x1000,\r\n IMAGE_FILE_DLL = 0x2000,\r\n IMAGE_FILE_UP_SYSTEM_ONLY = 0x4000,\r\n IMAGE_FILE_BYTES_REVERSED_HI = 0x8000,\r\n}\r\n\r\nexport enum ImageFileMachine {\r\n IMAGE_FILE_MACHINE_UNKNOWN = 0,\r\n IMAGE_FILE_MACHINE_TARGET_HOST = 0x0001,\r\n IMAGE_FILE_MACHINE_I386 = 0x014c,\r\n IMAGE_FILE_MACHINE_R3000 = 0x0162,\r\n IMAGE_FILE_MACHINE_R4000 = 0x0166,\r\n IMAGE_FILE_MACHINE_R10000 = 0x0168,\r\n IMAGE_FILE_MACHINE_WCEMIPSV2 = 0x0169,\r\n IMAGE_FILE_MACHINE_ALPHA = 0x0184,\r\n IMAGE_FILE_MACHINE_SH3 = 0x01a2,\r\n IMAGE_FILE_MACHINE_SH3DSP = 0x01a3,\r\n IMAGE_FILE_MACHINE_SH3E = 0x01a4,\r\n IMAGE_FILE_MACHINE_SH4 = 0x01a6,\r\n IMAGE_FILE_MACHINE_SH5 = 0x01a8,\r\n IMAGE_FILE_MACHINE_ARM = 0x01c0,\r\n IMAGE_FILE_MACHINE_THUMB = 0x01c2,\r\n IMAGE_FILE_MACHINE_ARMNT = 0x01c4,\r\n IMAGE_FILE_MACHINE_AM33 = 0x01d3,\r\n IMAGE_FILE_MACHINE_POWERPC = 0x01F0,\r\n IMAGE_FILE_MACHINE_POWERPCFP = 0x01f1,\r\n IMAGE_FILE_MACHINE_IA64 = 0x0200,\r\n IMAGE_FILE_MACHINE_MIPS16 = 0x0266,\r\n IMAGE_FILE_MACHINE_ALPHA64 = 0x0284,\r\n IMAGE_FILE_MACHINE_MIPSFPU = 0x0366,\r\n IMAGE_FILE_MACHINE_MIPSFPU16 = 0x0466,\r\n IMAGE_FILE_MACHINE_AXP64 = IMAGE_FILE_MACHINE_ALPHA64,\r\n IMAGE_FILE_MACHINE_TRICORE = 0x0520,\r\n IMAGE_FILE_MACHINE_CEF = 0x0CEF,\r\n IMAGE_FILE_MACHINE_EBC = 0x0EBC,\r\n IMAGE_FILE_MACHINE_AMD64 = 0x8664,\r\n IMAGE_FILE_MACHINE_M32R = 0x9041,\r\n IMAGE_FILE_MACHINE_ARM64 = 0xAA64,\r\n IMAGE_FILE_MACHINE_CEE = 0xC0EE,\r\n}\r\n\r\nexport enum ImageSubsystem {\r\n IMAGE_SUBSYSTEM_UNKNOWN = 0,\r\n IMAGE_SUBSYSTEM_NATIVE = 1,\r\n IMAGE_SUBSYSTEM_WINDOWS_GUI = 2,\r\n IMAGE_SUBSYSTEM_WINDOWS_CUI = 3,\r\n IMAGE_SUBSYSTEM_OS2_CUI = 5,\r\n IMAGE_SUBSYSTEM_POSIX_CUI = 7,\r\n IMAGE_SUBSYSTEM_NATIVE_WINDOWS = 8,\r\n IMAGE_SUBSYSTEM_WINDOWS_CE_GUI = 9,\r\n IMAGE_SUBSYSTEM_EFI_APPLICATION = 10,\r\n IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11,\r\n IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER = 12,\r\n IMAGE_SUBSYSTEM_EFI_ROM = 13,\r\n IMAGE_SUBSYSTEM_XBOX = 14,\r\n IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION = 16,\r\n IMAGE_SUBSYSTEM_XBOX_CODE_CATALOG = 17,\r\n}\r\n\r\nexport enum ImageDllCharacteristics {\r\n IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA = 0x0020,\r\n IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE = 0x0040,\r\n IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY = 0x0080,\r\n IMAGE_DLLCHARACTERISTICS_NX_COMPAT = 0x0100,\r\n IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = 0x0200,\r\n IMAGE_DLLCHARACTERISTICS_NO_SEH = 0x0400,\r\n IMAGE_DLLCHARACTERISTICS_NO_BIND = 0x0800,\r\n IMAGE_DLLCHARACTERISTICS_APPCONTAINER = 0x1000,\r\n IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = 0x2000,\r\n IMAGE_DLLCHARACTERISTICS_GUARD_CF = 0x4000,\r\n IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = 0x8000,\r\n}\r\n\r\nexport enum ImageDirectoryEntry {\r\n IMAGE_DIRECTORY_ENTRY_EXPORT = 0,\r\n IMAGE_DIRECTORY_ENTRY_IMPORT = 1,\r\n IMAGE_DIRECTORY_ENTRY_RESOURCE = 2,\r\n IMAGE_DIRECTORY_ENTRY_EXCEPTION = 3,\r\n IMAGE_DIRECTORY_ENTRY_SECURITY = 4,\r\n IMAGE_DIRECTORY_ENTRY_BASERELOC = 5,\r\n IMAGE_DIRECTORY_ENTRY_DEBUG = 6,\r\n IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7,\r\n IMAGE_DIRECTORY_ENTRY_GLOBALPTR = 8,\r\n IMAGE_DIRECTORY_ENTRY_TLS = 9,\r\n IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG = 10,\r\n IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT = 11,\r\n IMAGE_DIRECTORY_ENTRY_IAT = 12,\r\n IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT = 13,\r\n IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14,\r\n}\r\n\r\nexport const IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16;\r\n\r\nexport enum ImageSection {\r\n IMAGE_SCN_TYPE_NO_PAD = 0x00000008,\r\n\r\n IMAGE_SCN_CNT_CODE = 0x00000020,\r\n IMAGE_SCN_CNT_INITIALIZED_DATA = 0x00000040,\r\n IMAGE_SCN_CNT_UNINITIALIZED_DATA = 0x00000080,\r\n\r\n IMAGE_SCN_LNK_OTHER = 0x00000100,\r\n IMAGE_SCN_LNK_INFO = 0x00000200,\r\n IMAGE_SCN_LNK_REMOVE = 0x00000800,\r\n IMAGE_SCN_LNK_COMDAT = 0x00001000,\r\n\r\n IMAGE_SCN_NO_DEFER_SPEC_EXC = 0x00004000,\r\n IMAGE_SCN_GPREL = 0x00008000,\r\n\r\n IMAGE_SCN_MEM_PURGEABLE = 0x00020000,\r\n IMAGE_SCN_MEM_16BIT = 0x00020000,\r\n IMAGE_SCN_MEM_LOCKED = 0x00040000,\r\n IMAGE_SCN_MEM_PRELOAD = 0x00080000,\r\n\r\n IMAGE_SCN_ALIGN_1BYTES = 0x00100000,\r\n IMAGE_SCN_ALIGN_2BYTES = 0x00200000,\r\n IMAGE_SCN_ALIGN_4BYTES = 0x00300000,\r\n IMAGE_SCN_ALIGN_8BYTES = 0x00400000,\r\n IMAGE_SCN_ALIGN_16BYTES = 0x00500000,\r\n IMAGE_SCN_ALIGN_32BYTES = 0x00600000,\r\n IMAGE_SCN_ALIGN_64BYTES = 0x00700000,\r\n IMAGE_SCN_ALIGN_128BYTES = 0x00800000,\r\n IMAGE_SCN_ALIGN_256BYTES = 0x00900000,\r\n IMAGE_SCN_ALIGN_512BYTES = 0x00A00000,\r\n IMAGE_SCN_ALIGN_1024BYTES = 0x00B00000,\r\n IMAGE_SCN_ALIGN_2048BYTES = 0x00C00000,\r\n IMAGE_SCN_ALIGN_4096BYTES = 0x00D00000,\r\n IMAGE_SCN_ALIGN_8192BYTES = 0x00E00000,\r\n\r\n IMAGE_SCN_LNK_NRELOC_OVFL = 0x01000000,\r\n IMAGE_SCN_MEM_DISCARDABLE = 0x02000000,\r\n IMAGE_SCN_MEM_NOT_CACHED = 0x04000000,\r\n IMAGE_SCN_MEM_NOT_PAGED = 0x08000000,\r\n IMAGE_SCN_MEM_SHARED = 0x10000000,\r\n IMAGE_SCN_MEM_EXECUTE = 0x20000000,\r\n IMAGE_SCN_MEM_READ = 0x40000000,\r\n IMAGE_SCN_MEM_WRITE = 0x80000000,\r\n\r\n IMAGE_SCN_SCALE_INDEX = 0x00000001,\r\n}\r\n\r\nexport enum ComImageFlags {\r\n COMIMAGE_FLAGS_ILONLY = 0x00000001,\r\n COMIMAGE_FLAGS_32BITREQUIRED = 0x00000002,\r\n COMIMAGE_FLAGS_IL_LIBRARY = 0x00000004,\r\n COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x00000008,\r\n COMIMAGE_FLAGS_NATIVE_ENTRYPOINT = 0x00000010,\r\n COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x00010000,\r\n COMIMAGE_FLAGS_32BITPREFERRED = 0x00020000,\r\n}\r\n\r\nexport const MetadataSignature = 0x424A5342;","import { PEImage } from \"../pe/image\";\r\n\r\nexport function generateNavList(pe: PEImage): W.NavData[] {\r\n let navList: W.NavData[] = [generateHeadersNavData(pe)];\r\n\r\n const navMD = generateMDHeadersNavData(pe);\r\n if (navMD) navList.push(navMD);\r\n\r\n return navList;\r\n}\r\n\r\nfunction generateHeadersNavData(pe: PEImage): W.NavData {\r\n const pageID = W.PageID.HEADERS;\r\n\r\n return {\r\n target: { pageID, title: W.KnownTitle.HEADERS },\r\n children: [{\r\n target: { pageID, title: W.KnownTitle.DOS_HEADER, elemID: W.KnownElemID.DOS_HEADER }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.PE_SIGNATURE, elemID: W.KnownElemID.PE_SIGNATURE }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.FILE_HEADER, elemID: W.KnownElemID.FILE_HEADER }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.OPTIONAL_HEADER, elemID: W.KnownElemID.OPTIONAL_HEADER }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.DATA_DIRECTORIES, elemID: W.KnownElemID.DATA_DIRECTORIES }\r\n }, {\r\n target: { pageID, title: W.KnownTitle.SECTION_HEADERS, elemID: W.KnownElemID.SECTION_HEADERS }\r\n }]\r\n };\r\n}\r\n\r\nfunction generateMDHeadersNavData(pe: PEImage): W.NavData | undefined {\r\n const pageID = W.PageID.MD_HEADERS;\r\n\r\n if (!pe.isManaged()) return undefined;\r\n\r\n let children: W.NavData[] = [{\r\n target: { pageID, title: W.KnownTitle.CLI_HEADER, elemID: W.KnownElemID.CLI_HEADER }\r\n }];\r\n\r\n if (pe.hasMetadata()) {\r\n children.push({\r\n target: { pageID, title: W.KnownTitle.MD_ROOT, elemID: W.KnownElemID.MD_ROOT }\r\n });\r\n children.push({\r\n target: { pageID, title: W.KnownTitle.MDS_HEADERS, elemID: W.KnownElemID.MDS_HEADERS }\r\n });\r\n }\r\n\r\n return {\r\n target: { pageID, title: W.KnownTitle.MD_HEADERS },\r\n children\r\n };\r\n}","import { PEImage } from \"../pe/image\";\r\nimport * as S from \"../pe/structures\";\r\nimport * as F from \"../pe/image-flags\";\r\nimport * as FM from \"./formatter\";\r\n\r\nexport function generateMetadataHeadersPageData(pe: PEImage): W.MetadataHeadersPageData {\r\n return {\r\n nav: {\r\n pageID: W.PageID.MD_HEADERS,\r\n title: W.KnownTitle.MD_HEADERS,\r\n },\r\n cliHeader: generateCliHeader(pe),\r\n metadataRoot: generateMetadataRoot(pe),\r\n streamHeaders: generateMetadataStreamHeader(pe),\r\n };\r\n\r\n}\r\n\r\nfunction generateCliHeader(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.CLI_HEADER,\r\n elemID: W.KnownElemID.CLI_HEADER,\r\n };\r\n\r\n const h = pe.getCliHeader();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU4Field(\"cb\", h.cb, true),\r\n FM.formatU2Field(\"MajorRuntimeVersion\", h.MajorRuntimeVersion, true),\r\n FM.formatU2Field(\"MinorRuntimeVersion\", h.MinorRuntimeVersion, true),\r\n FM.formatU4Field(\"MetaData.VirtualAddress\", h.MetaData.VirtualAddress),\r\n FM.formatU4Field(\"MetaData.Size\", h.MetaData.Size, true),\r\n FM.formatU4Field(\"Flags\", h.Flags),\r\n FM.formatU4Field(\"EntryPointToken\", h.EntryPointToken),\r\n FM.formatU4Field(\"Resources.VirtualAddress\", h.Resources.VirtualAddress),\r\n FM.formatU4Field(\"Resources.Size\", h.Resources.Size, true),\r\n FM.formatU4Field(\"StrongNameSignature.VirtualAddress\", h.StrongNameSignature.VirtualAddress),\r\n FM.formatU4Field(\"StrongNameSignature.Size\", h.StrongNameSignature.Size, true),\r\n FM.formatU4Field(\"CodeManagerTable.VirtualAddress\", h.CodeManagerTable.VirtualAddress),\r\n FM.formatU4Field(\"CodeManagerTable.Size\", h.CodeManagerTable.Size, true),\r\n FM.formatU4Field(\"VTableFixups.VirtualAddress\", h.VTableFixups.VirtualAddress),\r\n FM.formatU4Field(\"VTableFixups.Size\", h.VTableFixups.Size, true),\r\n FM.formatU4Field(\"ExportAddressTableJumps.VirtualAddress\", h.ExportAddressTableJumps.VirtualAddress),\r\n FM.formatU4Field(\"ExportAddressTableJumps.Size\", h.ExportAddressTableJumps.Size, true),\r\n FM.formatU4Field(\"ManagedNativeHeader.VirtualAddress\", h.ManagedNativeHeader.VirtualAddress),\r\n FM.formatU4Field(\"ManagedNativeHeader.Size\", h.ManagedNativeHeader.Size, true),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generateMetadataRoot(pe: PEImage): W.SimpleStruct | undefined {\r\n const h = pe.getMetadataRoot();\r\n if (!h) return undefined;\r\n\r\n const s: W.SimpleStruct = {\r\n title: W.KnownTitle.MD_ROOT,\r\n elemID: W.KnownElemID.MD_ROOT,\r\n items: [\r\n FM.formatU4Field(\"Signature\", h.Signature),\r\n FM.formatU2Field(\"MajorVersion\", h.MajorVersion, true),\r\n FM.formatU2Field(\"MinorVersion\", h.MinorVersion, true),\r\n FM.formatU4Field(\"Reserved\", h.Reserved),\r\n FM.formatU4Field(\"VersionLength\", h.VersionLength, true),\r\n FM.formatStringField(\"VersionString\", h.VersionString),\r\n FM.formatBytesField(\"VersionPadding\", h.VersionPadding),\r\n FM.formatU2Field(\"Flags\", h.Flags),\r\n FM.formatU2Field(\"Streams\", h.Streams, true),\r\n ]\r\n };\r\n return s;\r\n}\r\n\r\nfunction generateMetadataStreamHeader(pe: PEImage): W.GroupedStruct | undefined {\r\n const h = pe.getMetadataStreamHeaders();\r\n if (!h) return undefined;\r\n\r\n const s: W.GroupedStruct = {\r\n title: W.KnownTitle.MDS_HEADERS,\r\n elemID: W.KnownElemID.MDS_HEADERS,\r\n groups: h.items.map((v, i) => ({\r\n title: `[${i}] (${v.Name.value})`,\r\n items: [\r\n FM.formatU4Field(\"Offset\", v.Offset),\r\n FM.formatU4Field(\"Size\", v.Size, true),\r\n FM.formatStringField(\"Name\", v.Name),\r\n FM.formatBytesField(\"Padding\", v.Padding),\r\n ]\r\n }))\r\n };\r\n return s;\r\n}","import { PEImage } from \"../pe/image\";\r\nimport * as S from \"../pe/structures\";\r\nimport * as F from \"../pe/image-flags\";\r\nimport * as FM from \"./formatter\";\r\n\r\nexport function generateHeadersPageData(pe: PEImage): W.HeadersPageData {\r\n return {\r\n nav: {\r\n pageID: W.PageID.HEADERS,\r\n title: W.KnownTitle.HEADERS,\r\n },\r\n dosHeader: generateDosHeader(pe),\r\n peSignature: generatePESignature(pe),\r\n fileHeader: generateFileHeader(pe),\r\n optionalHeader: generateOptionalHeader(pe),\r\n dataDirectories: generateDataDirectories(pe),\r\n sectionHeaders: generateSectionHeaders(pe),\r\n };\r\n}\r\n\r\nfunction generateDosHeader(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.DOS_HEADER,\r\n elemID: W.KnownElemID.DOS_HEADER,\r\n };\r\n\r\n const h = pe.getDosHeader();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU2Field(\"e_magic\", h.e_magic),\r\n FM.formatU2Field(\"e_cblp\", h.e_cblp),\r\n FM.formatU2Field(\"e_cp\", h.e_cp),\r\n FM.formatU2Field(\"e_crlc\", h.e_crlc),\r\n FM.formatU2Field(\"e_cparhdr\", h.e_cparhdr),\r\n FM.formatU2Field(\"e_minalloc\", h.e_minalloc),\r\n FM.formatU2Field(\"e_maxalloc\", h.e_maxalloc),\r\n FM.formatU2Field(\"e_ss\", h.e_ss),\r\n FM.formatU2Field(\"e_sp\", h.e_sp),\r\n FM.formatU2Field(\"e_csum\", h.e_csum),\r\n FM.formatU2Field(\"e_ip\", h.e_ip),\r\n FM.formatU2Field(\"e_cs\", h.e_cs),\r\n FM.formatU2Field(\"e_lfarlc\", h.e_lfarlc),\r\n FM.formatU2Field(\"e_ovno\", h.e_ovno),\r\n FM.formatBytesField(\"e_res\", h.e_res),\r\n FM.formatU2Field(\"e_oemid\", h.e_oemid),\r\n FM.formatU2Field(\"e_oeminfo\", h.e_oeminfo),\r\n FM.formatBytesField(\"e_res2\", h.e_res2),\r\n FM.formatU4Field(\"e_lfanew\", h.e_lfanew),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generatePESignature(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.PE_SIGNATURE,\r\n elemID: W.KnownElemID.PE_SIGNATURE,\r\n };\r\n\r\n const h = pe.getPESignature();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU4Field(\"PE Signature\", h),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generateFileHeader(pe: PEImage): W.SimpleStruct {\r\n let s: W.SimpleStruct = {\r\n title: W.KnownTitle.FILE_HEADER,\r\n elemID: W.KnownElemID.FILE_HEADER,\r\n };\r\n\r\n const h = pe.getFileHeader();\r\n if (!h) return s;\r\n\r\n s.items = [\r\n FM.formatU2Field(\"Machine\", h.Machine),\r\n FM.formatU2Field(\"NumberOfSections\", h.NumberOfSections, true),\r\n FM.formatU4Field(\"TimeDateStamp\", h.TimeDateStamp),\r\n FM.formatU4Field(\"PointerToSymbolTable\", h.PointerToSymbolTable),\r\n FM.formatU4Field(\"NumberOfSymbols\", h.NumberOfSymbols, true),\r\n FM.formatU2Field(\"SizeOfOptionalHeader\", h.SizeOfOptionalHeader, true),\r\n FM.formatU2Field(\"Characteristics\", h.Characteristics),\r\n ];\r\n\r\n return s;\r\n}\r\n\r\nfunction generateOptionalHeader(pe: PEImage): W.GroupedStruct {\r\n let s: W.GroupedStruct = {\r\n title: W.KnownTitle.OPTIONAL_HEADER,\r\n elemID: W.KnownElemID.OPTIONAL_HEADER,\r\n };\r\n\r\n const h = pe.getOptionalHeader();\r\n if (!h) return s;\r\n\r\n switch (h.Magic.value) {\r\n case F.IMAGE_NT_OPTIONAL_HDR32_MAGIC:\r\n s.title += \" (32-bit)\";\r\n fillOptionalHeader32Fields(s, h);\r\n break;\r\n\r\n case F.IMAGE_NT_OPTIONAL_HDR64_MAGIC:\r\n s.title += \" (64-bit)\";\r\n fillOptionalHeader64Fields(s, h);\r\n break;\r\n }\r\n\r\n return s;\r\n}\r\n\r\nfunction fillOptionalHeader32Fields(s: W.GroupedStruct, h: S.ImageOptionalHeader32): void {\r\n s.groups = [{\r\n title: \"Standard Fields\",\r\n items: [\r\n FM.formatU2Field(\"Magic\", h.Magic),\r\n FM.formatU1Field(\"MajorLinkerVersion\", h.MajorLinkerVersion, true),\r\n FM.formatU1Field(\"MinorLinkerVersion\", h.MinorLinkerVersion, true),\r\n FM.formatU4Field(\"SizeOfCode\", h.SizeOfCode, true),\r\n FM.formatU4Field(\"SizeOfInitializedData\", h.SizeOfInitializedData, true),\r\n FM.formatU4Field(\"SizeOfUninitializedData\", h.SizeOfUninitializedData, true),\r\n FM.formatU4Field(\"AddressOfEntryPoint\", h.AddressOfEntryPoint),\r\n FM.formatU4Field(\"BaseOfCode\", h.BaseOfCode),\r\n FM.formatU4Field(\"BaseOfData\", h.BaseOfData),\r\n ],\r\n }, {\r\n title: \"NT-specified Fields\",\r\n items: [\r\n FM.formatU4Field(\"ImageBase\", h.ImageBase),\r\n FM.formatU4Field(\"SectionAlignment\", h.SectionAlignment, true),\r\n FM.formatU4Field(\"FileAlignment\", h.FileAlignment, true),\r\n FM.formatU2Field(\"MajorOperatingSystemVersion\", h.MajorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MinorOperatingSystemVersion\", h.MinorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MajorImageVersion\", h.MajorImageVersion, true),\r\n FM.formatU2Field(\"MinorImageVersion\", h.MinorImageVersion, true),\r\n FM.formatU2Field(\"MajorSubsystemVersion\", h.MajorSubsystemVersion, true),\r\n FM.formatU2Field(\"MinorSubsystemVersion\", h.MinorSubsystemVersion, true),\r\n FM.formatU4Field(\"Win32VersionValue\", h.Win32VersionValue, true),\r\n FM.formatU4Field(\"SizeOfImage\", h.SizeOfImage, true),\r\n FM.formatU4Field(\"SizeOfHeaders\", h.SizeOfHeaders, true),\r\n FM.formatU4Field(\"CheckSum\", h.CheckSum),\r\n FM.formatU2Field(\"Subsystem\", h.Subsystem),\r\n FM.formatU2Field(\"DllCharacteristics\", h.DllCharacteristics),\r\n FM.formatU4Field(\"SizeOfStackReserve\", h.SizeOfStackReserve, true),\r\n FM.formatU4Field(\"SizeOfStackCommit\", h.SizeOfStackCommit, true),\r\n FM.formatU4Field(\"SizeOfHeapReserve\", h.SizeOfHeapReserve, true),\r\n FM.formatU4Field(\"SizeOfHeapCommit\", h.SizeOfHeapCommit, true),\r\n FM.formatU4Field(\"LoaderFlags\", h.LoaderFlags),\r\n FM.formatU4Field(\"NumberOfRvaAndSizes\", h.NumberOfRvaAndSizes, true),\r\n ],\r\n }];\r\n}\r\n\r\nfunction fillOptionalHeader64Fields(s: W.GroupedStruct, h: S.ImageOptionalHeader64): void {\r\n s.groups = [{\r\n title: \"Standard Fields\",\r\n items: [\r\n FM.formatU2Field(\"Magic\", h.Magic),\r\n FM.formatU1Field(\"MajorLinkerVersion\", h.MajorLinkerVersion, true),\r\n FM.formatU1Field(\"MinorLinkerVersion\", h.MinorLinkerVersion, true),\r\n FM.formatU4Field(\"SizeOfCode\", h.SizeOfCode, true),\r\n FM.formatU4Field(\"SizeOfInitializedData\", h.SizeOfInitializedData, true),\r\n FM.formatU4Field(\"SizeOfUninitializedData\", h.SizeOfUninitializedData, true),\r\n FM.formatU4Field(\"AddressOfEntryPoint\", h.AddressOfEntryPoint),\r\n FM.formatU4Field(\"BaseOfCode\", h.BaseOfCode),\r\n ],\r\n }, {\r\n title: \"NT-specified Fields\",\r\n items: [\r\n FM.formatU8Field(\"ImageBase\", h.ImageBase),\r\n FM.formatU4Field(\"SectionAlignment\", h.SectionAlignment, true),\r\n FM.formatU4Field(\"FileAlignment\", h.FileAlignment, true),\r\n FM.formatU2Field(\"MajorOperatingSystemVersion\", h.MajorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MinorOperatingSystemVersion\", h.MinorOperatingSystemVersion, true),\r\n FM.formatU2Field(\"MajorImageVersion\", h.MajorImageVersion, true),\r\n FM.formatU2Field(\"MinorImageVersion\", h.MinorImageVersion, true),\r\n FM.formatU2Field(\"MajorSubsystemVersion\", h.MajorSubsystemVersion, true),\r\n FM.formatU2Field(\"MinorSubsystemVersion\", h.MinorSubsystemVersion, true),\r\n FM.formatU4Field(\"Win32VersionValue\", h.Win32VersionValue, true),\r\n FM.formatU4Field(\"SizeOfImage\", h.SizeOfImage, true),\r\n FM.formatU4Field(\"SizeOfHeaders\", h.SizeOfHeaders, true),\r\n FM.formatU4Field(\"CheckSum\", h.CheckSum),\r\n FM.formatU2Field(\"Subsystem\", h.Subsystem),\r\n FM.formatU2Field(\"DllCharacteristics\", h.DllCharacteristics),\r\n FM.formatU8Field(\"SizeOfStackReserve\", h.SizeOfStackReserve, true),\r\n FM.formatU8Field(\"SizeOfStackCommit\", h.SizeOfStackCommit, true),\r\n FM.formatU8Field(\"SizeOfHeapReserve\", h.SizeOfHeapReserve, true),\r\n FM.formatU8Field(\"SizeOfHeapCommit\", h.SizeOfHeapCommit, true),\r\n FM.formatU4Field(\"LoaderFlags\", h.LoaderFlags),\r\n FM.formatU4Field(\"NumberOfRvaAndSizes\", h.NumberOfRvaAndSizes, true),\r\n ],\r\n }];\r\n}\r\n\r\nfunction generateDataDirectories(pe: PEImage): W.GroupedStruct {\r\n let s: W.GroupedStruct = {\r\n title: W.KnownTitle.DATA_DIRECTORIES,\r\n elemID: W.KnownElemID.DATA_DIRECTORIES,\r\n };\r\n\r\n const h = pe.getDataDirectories();\r\n if (!h) return s;\r\n\r\n s.groups = h.items.map((v, i) => ({\r\n title: `[${i}] ${F.ImageDirectoryEntry[i] || \"\"}`,\r\n items: [\r\n FM.formatU4Field(\"VirtualAddress\", v.VirtualAddress),\r\n FM.formatU4Field(\"Size\", v.Size, true),\r\n ]\r\n } as W.SimpleStruct));\r\n\r\n return s;\r\n}\r\n\r\nfunction generateSectionHeaders(pe: PEImage): W.GroupedStruct {\r\n let s: W.GroupedStruct = {\r\n title: W.KnownTitle.SECTION_HEADERS,\r\n elemID: W.KnownElemID.SECTION_HEADERS,\r\n };\r\n\r\n const h = pe.getSectionHeaders();\r\n if (!h) return s;\r\n\r\n s.groups = h.items.map((v, i) => ({\r\n title: `[${i}] (${v.Name.value})`,\r\n items: [\r\n FM.formatStringField(\"Name\", v.Name),\r\n FM.formatU4Field(\"VirtualSize\", v.VirtualSize, true),\r\n FM.formatU4Field(\"VirtualAddress\", v.VirtualAddress),\r\n FM.formatU4Field(\"SizeOfRawData\", v.SizeOfRawData, true),\r\n FM.formatU4Field(\"PointerToRawData\", v.PointerToRawData),\r\n FM.formatU4Field(\"PointerToRelocations\", v.PointerToRelocations),\r\n FM.formatU4Field(\"PointerToLinenumbers\", v.PointerToLinenumbers),\r\n FM.formatU2Field(\"NumberOfRelocations\", v.NumberOfRelocations, true),\r\n FM.formatU2Field(\"NumberOfLinenumbers\", v.NumberOfLinenumbers, true),\r\n FM.formatU4Field(\"Characteristics\", v.Characteristics),\r\n ]\r\n }));\r\n\r\n return s;\r\n}\r\n","import { PEImage } from \"../pe/image\";\r\nimport { generateHeadersPageData } from \"./headers\";\r\nimport { generateMetadataHeadersPageData } from \"./metadata-headers\";\r\n\r\nexport function generatePageData(pe: PEImage, pageID: W.PageID): W.PageData {\r\n switch (pageID) {\r\n case W.PageID.HEADERS: return generateHeadersPageData(pe);\r\n case W.PageID.MD_HEADERS: return generateMetadataHeadersPageData(pe);\r\n default: return { nav: { pageID: W.PageID.NOTFOUND, title: W.KnownTitle.NOTFOUND } };\r\n }\r\n}","export const enum PEErrorType {\r\n INVALID_DATA_POSITION = \"INVALID_DATA_POSITION\",\r\n INVALID_DOS_SIGNATURE = \"INVALID_DOS_SIGNATURE\",\r\n INVALID_PE_SIGNATURE = \"INVALID_PE_SIGNATURE\",\r\n INVALID_OPTIONAL_HEADER_MAGIC = \"INVALID_OPTIONAL_HEADER_MAGIC\",\r\n INVALID_DATA_DIRECTORY_COUNT = \"INVALID_DATA_DIRECTORY_COUNT\",\r\n}\r\n\r\nexport class PEError extends Error {\r\n constructor(\r\n public type: PEErrorType,\r\n public offset?: number,\r\n public size?: number\r\n ) {\r\n super(type);\r\n }\r\n}\r\n","export function calculatePadding(dataSize: number, align: number = 4): number {\n const r = dataSize % align;\n if (r == 0) {\n return 0;\n } else {\n return align - r;\n }\n}","import * as S from \"./structures\";\r\nimport * as F from \"./image-flags\";\r\nimport * as U from \"./utils\";\r\n\r\nexport interface FileDataProvider {\r\n getU1(p: number): number;\r\n getU2(p: number): number;\r\n getU4(p: number): number;\r\n getData(p: number, sz: number): Uint8Array;\r\n}\r\n\r\n//\r\n// Basic structures.\r\n//\r\n\r\nexport function loadU1Field(d: FileDataProvider, p: number): S.U1Field {\r\n return {\r\n _offset: p, _size: 1, data: d.getData(p, 1), value: d.getU1(p)\r\n };\r\n}\r\n\r\nexport function loadU2Field(d: FileDataProvider, p: number): S.U2Field {\r\n return {\r\n _offset: p, _size: 2, data: d.getData(p, 2), value: d.getU2(p)\r\n };\r\n}\r\n\r\nexport function loadU4Field(d: FileDataProvider, p: number): S.U4Field {\r\n return {\r\n _offset: p, _size: 4, data: d.getData(p, 4), value: d.getU4(p)\r\n };\r\n}\r\n\r\nexport function loadU8Field(d: FileDataProvider, p: number): S.U8Field {\r\n const low = d.getU4(p);\r\n const high = d.getU4(p + 4);\r\n\r\n return {\r\n _offset: p, _size: 8, data: d.getData(p, 8), low, high\r\n };\r\n}\r\n\r\nexport function loadU1EnumField(d: FileDataProvider, p: number): S.U1EnumField {\r\n return {\r\n _offset: p, _size: 1, data: d.getData(p, 1), value: d.getU1(p) as any as T\r\n };\r\n}\r\n\r\nexport function loadU2EnumField(d: FileDataProvider, p: number): S.U2EnumField {\r\n return {\r\n _offset: p, _size: 2, data: d.getData(p, 2), value: d.getU2(p) as any as T\r\n };\r\n}\r\n\r\nexport function loadU4EnumField(d: FileDataProvider, p: number): S.U4EnumField {\r\n return {\r\n _offset: p, _size: 4, data: d.getData(p, 4), value: d.getU4(p) as any as T\r\n };\r\n}\r\n\r\nexport function loadFixedSizeByteArrayField(d: FileDataProvider, p: number, sz: number): S.Field {\r\n return {\r\n _offset: p, _size: sz, data: d.getData(p, sz)\r\n };\r\n}\r\n\r\nexport function loadFixedSizeAsciiStringField(d: FileDataProvider, p: number, sz: number): S.StringField {\r\n const data = d.getData(p, sz);\r\n const value = String.fromCharCode.apply(null, Array.from(data).filter(v => v != 0));\r\n\r\n return {\r\n _offset: p, _size: sz, data, value\r\n };\r\n}\r\n\r\nexport function loadNullTerminatedStringField(d: FileDataProvider, p: number): S.StringField {\r\n let bytes: number[] = [];\r\n let ptr = p;\r\n let b: number;\r\n\r\n do {\r\n b = d.getU1(ptr++);\r\n bytes.push(b);\r\n } while (b != 0);\r\n const value = String.fromCharCode.apply(null, bytes.slice(0, bytes.length - 1));\r\n\r\n return {\r\n _offset: p, _size: ptr - p, data: Uint8Array.from(bytes), value\r\n };\r\n}\r\n\r\nexport function loadStructArrayByCount(\r\n d: FileDataProvider,\r\n p: number,\r\n loader: (d: FileDataProvider, p: number) => T,\r\n count: number): S.StructArray {\r\n\r\n let items: T[] = [];\r\n let ptr = p;\r\n for (let i = 0; i < count; i++) {\r\n const s = loader(d, ptr);\r\n items.push(s);\r\n ptr += s._size;\r\n }\r\n\r\n return { _offset: p, _size: ptr - p, items };\r\n}\r\n\r\n//\r\n// Image headers.\r\n//\r\n\r\nexport function loadImageDosHeader(d: FileDataProvider, p: number): S.ImageDosHeader {\r\n let ptr = p;\r\n\r\n const e_magic = loadU2Field(d, ptr);\r\n ptr += e_magic._size;\r\n\r\n const e_cblp = loadU2Field(d, ptr);\r\n ptr += e_cblp._size;\r\n\r\n const e_cp = loadU2Field(d, ptr);\r\n ptr += e_cp._size;\r\n\r\n const e_crlc = loadU2Field(d, ptr);\r\n ptr += e_crlc._size;\r\n\r\n const e_cparhdr = loadU2Field(d, ptr);\r\n ptr += e_cparhdr._size;\r\n\r\n const e_minalloc = loadU2Field(d, ptr);\r\n ptr += e_minalloc._size;\r\n\r\n const e_maxalloc = loadU2Field(d, ptr);\r\n ptr += e_maxalloc._size;\r\n\r\n const e_ss = loadU2Field(d, ptr);\r\n ptr += e_ss._size;\r\n\r\n const e_sp = loadU2Field(d, ptr);\r\n ptr += e_sp._size;\r\n\r\n const e_csum = loadU2Field(d, ptr);\r\n ptr += e_csum._size;\r\n\r\n const e_ip = loadU2Field(d, ptr);\r\n ptr += e_ip._size;\r\n\r\n const e_cs = loadU2Field(d, ptr);\r\n ptr += e_cs._size;\r\n\r\n const e_lfarlc = loadU2Field(d, ptr);\r\n ptr += e_lfarlc._size;\r\n\r\n const e_ovno = loadU2Field(d, ptr);\r\n ptr += e_ovno._size;\r\n\r\n const e_res = loadFixedSizeByteArrayField(d, ptr, 4 * 2);\r\n ptr += e_res._size;\r\n\r\n const e_oemid = loadU2Field(d, ptr);\r\n ptr += e_oemid._size;\r\n\r\n const e_oeminfo = loadU2Field(d, ptr);\r\n ptr += e_oeminfo._size;\r\n\r\n const e_res2 = loadFixedSizeByteArrayField(d, ptr, 10 * 2);\r\n ptr += e_res2._size;\r\n\r\n const e_lfanew = loadU4Field(d, ptr);\r\n ptr += e_lfanew._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n e_magic,\r\n e_cblp,\r\n e_cp,\r\n e_crlc,\r\n e_cparhdr,\r\n e_minalloc,\r\n e_maxalloc,\r\n e_ss,\r\n e_sp,\r\n e_csum,\r\n e_ip,\r\n e_cs,\r\n e_lfarlc,\r\n e_ovno,\r\n e_res,\r\n e_oemid,\r\n e_oeminfo,\r\n e_res2,\r\n e_lfanew,\r\n };\r\n}\r\n\r\nexport function loadImageFileHeader(d: FileDataProvider, p: number): S.ImageFileHeader {\r\n let ptr = p;\r\n\r\n const Machine = loadU2Field(d, ptr);\r\n ptr += Machine._size;\r\n\r\n const NumberOfSections = loadU2Field(d, ptr);\r\n ptr += NumberOfSections._size;\r\n\r\n const TimeDateStamp = loadU4Field(d, ptr);\r\n ptr += TimeDateStamp._size;\r\n\r\n const PointerToSymbolTable = loadU4Field(d, ptr);\r\n ptr += PointerToSymbolTable._size;\r\n\r\n const NumberOfSymbols = loadU4Field(d, ptr);\r\n ptr += NumberOfSymbols._size;\r\n\r\n const SizeOfOptionalHeader = loadU2Field(d, ptr);\r\n ptr += SizeOfOptionalHeader._size;\r\n\r\n const Characteristics = loadU2EnumField(d, ptr);\r\n ptr += Characteristics._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Machine,\r\n NumberOfSections,\r\n TimeDateStamp,\r\n PointerToSymbolTable,\r\n NumberOfSymbols,\r\n SizeOfOptionalHeader,\r\n Characteristics,\r\n };\r\n}\r\n\r\nexport function loadImageOptionalHeader32(d: FileDataProvider, p: number): S.ImageOptionalHeader32 {\r\n let ptr = p;\r\n\r\n const Magic = loadU2Field(d, ptr);\r\n ptr += Magic._size;\r\n\r\n const MajorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MajorLinkerVersion._size;\r\n\r\n const MinorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MinorLinkerVersion._size;\r\n\r\n const SizeOfCode = loadU4Field(d, ptr);\r\n ptr += SizeOfCode._size;\r\n\r\n const SizeOfInitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfInitializedData._size;\r\n\r\n const SizeOfUninitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfUninitializedData._size;\r\n\r\n const AddressOfEntryPoint = loadU4Field(d, ptr);\r\n ptr += AddressOfEntryPoint._size;\r\n\r\n const BaseOfCode = loadU4Field(d, ptr);\r\n ptr += BaseOfCode._size;\r\n\r\n const BaseOfData = loadU4Field(d, ptr);\r\n ptr += BaseOfData._size;\r\n\r\n const ImageBase = loadU4Field(d, ptr);\r\n ptr += ImageBase._size;\r\n\r\n const SectionAlignment = loadU4Field(d, ptr);\r\n ptr += SectionAlignment._size;\r\n\r\n const FileAlignment = loadU4Field(d, ptr);\r\n ptr += FileAlignment._size;\r\n\r\n const MajorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorOperatingSystemVersion._size;\r\n\r\n const MinorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorOperatingSystemVersion._size;\r\n\r\n const MajorImageVersion = loadU2Field(d, ptr);\r\n ptr += MajorImageVersion._size;\r\n\r\n const MinorImageVersion = loadU2Field(d, ptr);\r\n ptr += MinorImageVersion._size;\r\n\r\n const MajorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorSubsystemVersion._size;\r\n\r\n const MinorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorSubsystemVersion._size;\r\n\r\n const Win32VersionValue = loadU4Field(d, ptr);\r\n ptr += Win32VersionValue._size;\r\n\r\n const SizeOfImage = loadU4Field(d, ptr);\r\n ptr += SizeOfImage._size;\r\n\r\n const SizeOfHeaders = loadU4Field(d, ptr);\r\n ptr += SizeOfHeaders._size;\r\n\r\n const CheckSum = loadU4Field(d, ptr);\r\n ptr += CheckSum._size;\r\n\r\n const Subsystem = loadU2EnumField(d, ptr);\r\n ptr += Subsystem._size;\r\n\r\n const DllCharacteristics = loadU2EnumField(d, ptr);\r\n ptr += DllCharacteristics._size;\r\n\r\n const SizeOfStackReserve = loadU4Field(d, ptr);\r\n ptr += SizeOfStackReserve._size;\r\n\r\n const SizeOfStackCommit = loadU4Field(d, ptr);\r\n ptr += SizeOfStackCommit._size;\r\n\r\n const SizeOfHeapReserve = loadU4Field(d, ptr);\r\n ptr += SizeOfHeapReserve._size;\r\n\r\n const SizeOfHeapCommit = loadU4Field(d, ptr);\r\n ptr += SizeOfHeapCommit._size;\r\n\r\n const LoaderFlags = loadU4Field(d, ptr);\r\n ptr += LoaderFlags._size;\r\n\r\n const NumberOfRvaAndSizes = loadU4Field(d, ptr);\r\n ptr += NumberOfRvaAndSizes._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Magic,\r\n MajorLinkerVersion,\r\n MinorLinkerVersion,\r\n SizeOfCode,\r\n SizeOfInitializedData,\r\n SizeOfUninitializedData,\r\n AddressOfEntryPoint,\r\n BaseOfCode,\r\n BaseOfData,\r\n ImageBase,\r\n SectionAlignment,\r\n FileAlignment,\r\n MajorOperatingSystemVersion,\r\n MinorOperatingSystemVersion,\r\n MajorImageVersion,\r\n MinorImageVersion,\r\n MajorSubsystemVersion,\r\n MinorSubsystemVersion,\r\n Win32VersionValue,\r\n SizeOfImage,\r\n SizeOfHeaders,\r\n CheckSum,\r\n Subsystem,\r\n DllCharacteristics,\r\n SizeOfStackReserve,\r\n SizeOfStackCommit,\r\n SizeOfHeapReserve,\r\n SizeOfHeapCommit,\r\n LoaderFlags,\r\n NumberOfRvaAndSizes,\r\n };\r\n}\r\n\r\nexport function loadImageOptionalHeader64(d: FileDataProvider, p: number): S.ImageOptionalHeader64 {\r\n let ptr = p;\r\n\r\n const Magic = loadU2Field(d, ptr);\r\n ptr += Magic._size;\r\n\r\n const MajorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MajorLinkerVersion._size;\r\n\r\n const MinorLinkerVersion = loadU1Field(d, ptr);\r\n ptr += MinorLinkerVersion._size;\r\n\r\n const SizeOfCode = loadU4Field(d, ptr);\r\n ptr += SizeOfCode._size;\r\n\r\n const SizeOfInitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfInitializedData._size;\r\n\r\n const SizeOfUninitializedData = loadU4Field(d, ptr);\r\n ptr += SizeOfUninitializedData._size;\r\n\r\n const AddressOfEntryPoint = loadU4Field(d, ptr);\r\n ptr += AddressOfEntryPoint._size;\r\n\r\n const BaseOfCode = loadU4Field(d, ptr);\r\n ptr += BaseOfCode._size;\r\n\r\n const ImageBase = loadU8Field(d, ptr);\r\n ptr += ImageBase._size;\r\n\r\n const SectionAlignment = loadU4Field(d, ptr);\r\n ptr += SectionAlignment._size;\r\n\r\n const FileAlignment = loadU4Field(d, ptr);\r\n ptr += FileAlignment._size;\r\n\r\n const MajorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorOperatingSystemVersion._size;\r\n\r\n const MinorOperatingSystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorOperatingSystemVersion._size;\r\n\r\n const MajorImageVersion = loadU2Field(d, ptr);\r\n ptr += MajorImageVersion._size;\r\n\r\n const MinorImageVersion = loadU2Field(d, ptr);\r\n ptr += MinorImageVersion._size;\r\n\r\n const MajorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MajorSubsystemVersion._size;\r\n\r\n const MinorSubsystemVersion = loadU2Field(d, ptr);\r\n ptr += MinorSubsystemVersion._size;\r\n\r\n const Win32VersionValue = loadU4Field(d, ptr);\r\n ptr += Win32VersionValue._size;\r\n\r\n const SizeOfImage = loadU4Field(d, ptr);\r\n ptr += SizeOfImage._size;\r\n\r\n const SizeOfHeaders = loadU4Field(d, ptr);\r\n ptr += SizeOfHeaders._size;\r\n\r\n const CheckSum = loadU4Field(d, ptr);\r\n ptr += CheckSum._size;\r\n\r\n const Subsystem = loadU2EnumField(d, ptr);\r\n ptr += Subsystem._size;\r\n\r\n const DllCharacteristics = loadU2EnumField(d, ptr);\r\n ptr += DllCharacteristics._size;\r\n\r\n const SizeOfStackReserve = loadU8Field(d, ptr);\r\n ptr += SizeOfStackReserve._size;\r\n\r\n const SizeOfStackCommit = loadU8Field(d, ptr);\r\n ptr += SizeOfStackCommit._size;\r\n\r\n const SizeOfHeapReserve = loadU8Field(d, ptr);\r\n ptr += SizeOfHeapReserve._size;\r\n\r\n const SizeOfHeapCommit = loadU8Field(d, ptr);\r\n ptr += SizeOfHeapCommit._size;\r\n\r\n const LoaderFlags = loadU4Field(d, ptr);\r\n ptr += LoaderFlags._size;\r\n\r\n const NumberOfRvaAndSizes = loadU4Field(d, ptr);\r\n ptr += NumberOfRvaAndSizes._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Magic,\r\n MajorLinkerVersion,\r\n MinorLinkerVersion,\r\n SizeOfCode,\r\n SizeOfInitializedData,\r\n SizeOfUninitializedData,\r\n AddressOfEntryPoint,\r\n BaseOfCode,\r\n ImageBase,\r\n SectionAlignment,\r\n FileAlignment,\r\n MajorOperatingSystemVersion,\r\n MinorOperatingSystemVersion,\r\n MajorImageVersion,\r\n MinorImageVersion,\r\n MajorSubsystemVersion,\r\n MinorSubsystemVersion,\r\n Win32VersionValue,\r\n SizeOfImage,\r\n SizeOfHeaders,\r\n CheckSum,\r\n Subsystem,\r\n DllCharacteristics,\r\n SizeOfStackReserve,\r\n SizeOfStackCommit,\r\n SizeOfHeapReserve,\r\n SizeOfHeapCommit,\r\n LoaderFlags,\r\n NumberOfRvaAndSizes,\r\n };\r\n}\r\n\r\nexport function loadImageDataDirectory(d: FileDataProvider, p: number): S.ImageDataDirectory {\r\n let ptr = p;\r\n\r\n const VirtualAddress = loadU4Field(d, ptr);\r\n ptr += VirtualAddress._size;\r\n\r\n const Size = loadU4Field(d, ptr);\r\n ptr += Size._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n VirtualAddress,\r\n Size,\r\n };\r\n}\r\n\r\nexport function loadImageSectionHeader(d: FileDataProvider, p: number): S.ImageSectionHeader {\r\n let ptr = p;\r\n\r\n const Name = loadFixedSizeAsciiStringField(d, ptr, 8);\r\n ptr += Name._size;\r\n\r\n const VirtualSize = loadU4Field(d, ptr);\r\n ptr += VirtualSize._size;\r\n\r\n const VirtualAddress = loadU4Field(d, ptr);\r\n ptr += VirtualAddress._size;\r\n\r\n const SizeOfRawData = loadU4Field(d, ptr);\r\n ptr += SizeOfRawData._size;\r\n\r\n const PointerToRawData = loadU4Field(d, ptr);\r\n ptr += PointerToRawData._size;\r\n\r\n const PointerToRelocations = loadU4Field(d, ptr);\r\n ptr += PointerToRelocations._size;\r\n\r\n const PointerToLinenumbers = loadU4Field(d, ptr);\r\n ptr += PointerToLinenumbers._size;\r\n\r\n const NumberOfRelocations = loadU2Field(d, ptr);\r\n ptr += NumberOfRelocations._size;\r\n\r\n const NumberOfLinenumbers = loadU2Field(d, ptr);\r\n ptr += NumberOfLinenumbers._size;\r\n\r\n const Characteristics = loadU4EnumField(d, ptr);\r\n ptr += Characteristics._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Name,\r\n VirtualSize,\r\n VirtualAddress,\r\n SizeOfRawData,\r\n PointerToRawData,\r\n PointerToRelocations,\r\n PointerToLinenumbers,\r\n NumberOfRelocations,\r\n NumberOfLinenumbers,\r\n Characteristics,\r\n };\r\n}\r\n\r\n//\r\n// Metadata structures.\r\n//\r\n\r\nexport function loadCliHeader(d: FileDataProvider, p: number): S.CliHeader {\r\n let ptr = p;\r\n\r\n const cb = loadU4Field(d, ptr);\r\n ptr += cb._size;\r\n\r\n const MajorRuntimeVersion = loadU2Field(d, ptr);\r\n ptr += MajorRuntimeVersion._size;\r\n\r\n const MinorRuntimeVersion = loadU2Field(d, ptr);\r\n ptr += MinorRuntimeVersion._size;\r\n\r\n const MetaData = loadImageDataDirectory(d, ptr);\r\n ptr += MetaData._size;\r\n\r\n const Flags = loadU4Field(d, ptr);\r\n ptr += Flags._size;\r\n\r\n const EntryPointToken = loadU4Field(d, ptr);\r\n ptr += EntryPointToken._size;\r\n\r\n const Resources = loadImageDataDirectory(d, ptr);\r\n ptr += Resources._size;\r\n\r\n const StrongNameSignature = loadImageDataDirectory(d, ptr);\r\n ptr += StrongNameSignature._size;\r\n\r\n const CodeManagerTable = loadImageDataDirectory(d, ptr);\r\n ptr += CodeManagerTable._size;\r\n\r\n const VTableFixups = loadImageDataDirectory(d, ptr);\r\n ptr += VTableFixups._size;\r\n\r\n const ExportAddressTableJumps = loadImageDataDirectory(d, ptr);\r\n ptr += ExportAddressTableJumps._size;\r\n\r\n const ManagedNativeHeader = loadImageDataDirectory(d, ptr);\r\n ptr += ManagedNativeHeader._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n cb,\r\n MajorRuntimeVersion,\r\n MinorRuntimeVersion,\r\n MetaData,\r\n Flags,\r\n EntryPointToken,\r\n Resources,\r\n StrongNameSignature,\r\n CodeManagerTable,\r\n VTableFixups,\r\n ExportAddressTableJumps,\r\n ManagedNativeHeader,\r\n };\r\n}\r\n\r\nexport function loadMetadataRoot(d: FileDataProvider, p: number): S.MetadataRoot {\r\n let ptr = p;\r\n\r\n const Signature = loadU4Field(d, ptr);\r\n ptr += Signature._size;\r\n\r\n const MajorVersion = loadU2Field(d, ptr);\r\n ptr += MajorVersion._size;\r\n\r\n const MinorVersion = loadU2Field(d, ptr);\r\n ptr += MinorVersion._size;\r\n\r\n const Reserved = loadU4Field(d, ptr);\r\n ptr += Reserved._size;\r\n\r\n const VersionLength = loadU4Field(d, ptr);\r\n ptr += VersionLength._size;\r\n\r\n const VersionString = loadNullTerminatedStringField(d, ptr);\r\n ptr += VersionString._size;\r\n\r\n const paddingSize = U.calculatePadding(VersionString._size);\r\n const VersionPadding = loadFixedSizeByteArrayField(d, ptr, paddingSize);\r\n ptr += VersionPadding._size;\r\n\r\n const Flags = loadU2Field(d, ptr);\r\n ptr += Flags._size;\r\n\r\n const Streams = loadU2Field(d, ptr);\r\n ptr += Streams._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Signature,\r\n MajorVersion,\r\n MinorVersion,\r\n Reserved,\r\n VersionLength,\r\n VersionString,\r\n VersionPadding,\r\n Flags,\r\n Streams,\r\n };\r\n}\r\n\r\nexport function loadMetadataStreamHeader(d: FileDataProvider, p: number): S.MetadataStreamHeader {\r\n let ptr = p;\r\n\r\n const Offset = loadU4Field(d, ptr);\r\n ptr += Offset._size;\r\n\r\n const Size = loadU4Field(d, ptr);\r\n ptr += Size._size;\r\n\r\n const Name = loadNullTerminatedStringField(d, ptr);\r\n ptr += Name._size;\r\n\r\n const paddingSize = U.calculatePadding(Name._size);\r\n const Padding = loadFixedSizeByteArrayField(d, ptr, paddingSize);\r\n ptr += Padding._size;\r\n\r\n return {\r\n _offset: p, _size: ptr - p,\r\n Offset,\r\n Size,\r\n Name,\r\n Padding,\r\n };\r\n}","import * as S from \"./structures\";\r\nimport * as L from \"./loader\";\r\nimport * as F from \"./image-flags\";\r\nimport * as E from \"./error\";\r\n\r\nexport class PEImage implements L.FileDataProvider {\r\n public static load(buf: ArrayBuffer): PEImage {\r\n return new PEImage(buf);\r\n }\r\n\r\n //\r\n // FileDataProvider functions.\r\n //\r\n\r\n public getU1(p: number): number {\r\n this.check(p, 1);\r\n return this.data.getUint8(p);\r\n }\r\n\r\n public getU2(p: number): number {\r\n this.check(p, 2);\r\n return this.data.getUint16(p, true);\r\n }\r\n\r\n public getU4(p: number): number {\r\n this.check(p, 3);\r\n return this.data.getUint32(p, true);\r\n }\r\n\r\n public getData(p: number, sz: number): Uint8Array {\r\n this.check(p, sz);\r\n return new Uint8Array(this.data.buffer.slice(p, p + sz));\r\n }\r\n\r\n //\r\n // Image attributes.\r\n //\r\n\r\n public is32Bit(): boolean | undefined {\r\n const optHdr = this.getOptionalHeader();\r\n if (optHdr == null) {\r\n return undefined;\r\n }\r\n\r\n switch (optHdr.Magic.value) {\r\n case F.IMAGE_NT_OPTIONAL_HDR32_MAGIC: return true;\r\n case F.IMAGE_NT_OPTIONAL_HDR64_MAGIC: return false;\r\n default: return undefined;\r\n }\r\n }\r\n\r\n public isManaged(): boolean {\r\n const dd = this.getDataDirectories();\r\n return dd != null && this.isDataDirectoryValid(\r\n dd.items[F.ImageDirectoryEntry.IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR]\r\n );\r\n }\r\n\r\n public hasMetadata(): boolean {\r\n const h = this.getCliHeader();\r\n return h != null && this.isDataDirectoryValid(h.MetaData);\r\n }\r\n\r\n public hasManagedResources(): boolean {\r\n const h = this.getCliHeader();\r\n return h != null && this.isDataDirectoryValid(h.Resources);\r\n }\r\n\r\n public hasStrongNameSignature(): boolean {\r\n const h = this.getCliHeader();\r\n return h != null && this.isDataDirectoryValid(h.StrongNameSignature);\r\n }\r\n\r\n //\r\n // Image headers.\r\n //\r\n\r\n public getDosHeader(): S.ImageDosHeader | undefined {\r\n return this.dosHeader;\r\n }\r\n\r\n public getPESignature(): S.U4Field | undefined {\r\n return this.peSignature;\r\n }\r\n\r\n public getFileHeader(): S.ImageFileHeader | undefined {\r\n return this.fileHeader;\r\n }\r\n\r\n public getOptionalHeader(): S.ImageOptionalHeader32 | S.ImageOptionalHeader64 | undefined {\r\n return this.optionalHeader;\r\n }\r\n\r\n public getDataDirectories(): S.StructArray | undefined {\r\n return this.dataDirectories;\r\n }\r\n\r\n public getSectionHeaders(): S.StructArray | undefined {\r\n return this.sectionHeaders;\r\n }\r\n\r\n //\r\n // Metadata structures.\r\n //\r\n\r\n public getCliHeader(): S.CliHeader | undefined {\r\n if (this.cliHeader != null) return this.cliHeader;\r\n if (!this.isManaged()) return undefined;\r\n\r\n const offset = this.rvaToOffset(this.dataDirectories!\r\n .items[F.ImageDirectoryEntry.IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR]\r\n .VirtualAddress.value);\r\n\r\n this.cliHeader = L.loadCliHeader(this, offset);\r\n return this.cliHeader;\r\n }\r\n\r\n public getMetadataRoot(): S.MetadataRoot | undefined {\r\n if (this.metadataRoot != null) return this.metadataRoot;\r\n\r\n const cliHeader = this.getCliHeader();\r\n if (!cliHeader) return undefined;\r\n\r\n const offset = this.rvaToOffset(cliHeader.MetaData.VirtualAddress.value);\r\n if (!offset) return undefined;\r\n\r\n this.metadataRoot = L.loadMetadataRoot(this, offset);\r\n return this.metadataRoot;\r\n }\r\n\r\n public getMetadataStreamHeaders(): S.StructArray | undefined {\r\n if (this.metadataStreamHeaders != null) return this.metadataStreamHeaders;\r\n\r\n const mdRoot = this.getMetadataRoot();\r\n if (!mdRoot || !mdRoot.Streams.value) return undefined;\r\n\r\n this.metadataStreamHeaders = L.loadStructArrayByCount(\r\n this,\r\n mdRoot._offset + mdRoot._size,\r\n L.loadMetadataStreamHeader,\r\n mdRoot.Streams.value\r\n );\r\n return this.metadataStreamHeaders;\r\n }\r\n\r\n //\r\n // Utilities.\r\n //\r\n\r\n public rvaToOffset(rva: number): number {\r\n const sh = this.getSectionHeaderByRva(rva);\r\n if (!sh) return 0;\r\n\r\n return rva - sh.VirtualAddress.value + sh.PointerToRawData.value;\r\n }\r\n\r\n public offsetToRva(offset: number): number {\r\n const sh = this.getSectionHeaderByOffset(offset);\r\n if (!sh) return 0;\r\n\r\n return offset - sh.PointerToRawData.value + sh.VirtualAddress.value;\r\n }\r\n\r\n //\r\n // Private implementations.\r\n //\r\n\r\n private check(p: number, sz: number): void {\r\n if (p < 0 || p >= this.data.byteLength\r\n || sz < 0 || p + sz > this.data.byteLength) {\r\n throw new E.PEError(E.PEErrorType.INVALID_DATA_POSITION, p, sz);\r\n }\r\n }\r\n\r\n private constructor(buf: ArrayBuffer) {\r\n this.data = new DataView(buf);\r\n this.loadHeaders();\r\n }\r\n\r\n private loadHeaders(): void {\r\n let ptr = 0;\r\n this.dosHeader = L.loadImageDosHeader(this, ptr);\r\n\r\n if (this.dosHeader.e_magic.value != F.IMAGE_DOS_SIGNATURE) {\r\n throw new E.PEError(E.PEErrorType.INVALID_DOS_SIGNATURE, ptr, 2);\r\n }\r\n\r\n ptr = this.dosHeader.e_lfanew.value;\r\n this.peSignature = L.loadU4Field(this, ptr);\r\n\r\n if (this.peSignature.value != F.IMAGE_NT_SIGNATURE) {\r\n throw new E.PEError(E.PEErrorType.INVALID_PE_SIGNATURE, ptr, 4);\r\n }\r\n\r\n ptr += this.peSignature._size;\r\n this.fileHeader = L.loadImageFileHeader(this, ptr);\r\n\r\n ptr += this.fileHeader._size;\r\n const magic = L.loadU2Field(this, ptr);\r\n switch (magic.value) {\r\n case F.IMAGE_NT_OPTIONAL_HDR32_MAGIC:\r\n this.optionalHeader = L.loadImageOptionalHeader32(this, ptr);\r\n break;\r\n case F.IMAGE_NT_OPTIONAL_HDR64_MAGIC:\r\n this.optionalHeader = L.loadImageOptionalHeader64(this, ptr);\r\n break;\r\n default:\r\n throw new E.PEError(E.PEErrorType.INVALID_OPTIONAL_HEADER_MAGIC, ptr, 2);\r\n }\r\n\r\n if (this.optionalHeader.NumberOfRvaAndSizes.value != F.IMAGE_NUMBEROF_DIRECTORY_ENTRIES) {\r\n throw new E.PEError(E.PEErrorType.INVALID_DATA_DIRECTORY_COUNT,\r\n this.optionalHeader.NumberOfRvaAndSizes._offset,\r\n this.optionalHeader.NumberOfRvaAndSizes._size);\r\n }\r\n\r\n ptr += this.optionalHeader._size;\r\n this.dataDirectories = L.loadStructArrayByCount(this, ptr,\r\n L.loadImageDataDirectory,\r\n this.optionalHeader.NumberOfRvaAndSizes.value);\r\n\r\n ptr += this.dataDirectories._size;\r\n this.sectionHeaders = L.loadStructArrayByCount(this, ptr,\r\n L.loadImageSectionHeader,\r\n this.fileHeader.NumberOfSections.value);\r\n }\r\n\r\n private getSectionHeaderByOffset(offset: number): S.ImageSectionHeader | undefined {\r\n return this.sectionHeaders && this.sectionHeaders.items.filter(h => {\r\n const p = h.PointerToRawData.value;\r\n const sz = h.SizeOfRawData.value;\r\n return offset >= p && offset < p + sz;\r\n }).shift();\r\n }\r\n\r\n private getSectionHeaderByRva(rva: number): S.ImageSectionHeader | undefined {\r\n return this.sectionHeaders && this.sectionHeaders.items.filter(h => {\r\n const p = h.VirtualAddress.value;\r\n const sz = h.VirtualSize.value;\r\n return rva >= p && rva < p + sz;\r\n }).shift();\r\n }\r\n\r\n private isDataDirectoryValid(dd?: S.ImageDataDirectory): boolean {\r\n return (dd && dd.VirtualAddress.value > 0 && dd.Size.value > 0) || false;\r\n }\r\n\r\n private readonly data: DataView;\r\n\r\n private dosHeader?: S.ImageDosHeader;\r\n private peSignature?: S.U4Field;\r\n private fileHeader?: S.ImageFileHeader;\r\n private optionalHeader?: S.ImageOptionalHeader32 | S.ImageOptionalHeader64;\r\n private dataDirectories?: S.StructArray;\r\n private sectionHeaders?: S.StructArray;\r\n\r\n private cliHeader?: S.CliHeader;\r\n private metadataRoot?: S.MetadataRoot;\r\n private metadataStreamHeaders?: S.StructArray;\r\n}\r\n","export function createResNavDataMessage(navList: W.NavData[]): W.ResNavDataMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_NAV_DATA,\r\n navList\r\n };\r\n}\r\n\r\nexport function createResPageDataMessage(pageData: W.PageData): W.ResPageDataMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_PAGE_DATA,\r\n pageData\r\n };\r\n}\r\n\r\nexport function createResPEPropsMessage(is32Bit?: boolean, isManaged?: boolean): W.ResPEPropsMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_PE_PROPS,\r\n is32Bit,\r\n isManaged\r\n };\r\n}\r\n\r\nexport function createResPEErrorMessage(error: string): W.ResPEErrorMessage {\r\n return {\r\n type: W.WorkerMessageType.RES_PE_ERROR,\r\n error\r\n };\r\n}\r\n","import * as M from \"./message\";\r\nimport { PEImage } from \"./pe/image\";\r\nimport { generatePageData } from \"./page-data/generator\";\r\nimport { generateNavList } from \"./page-data/nav-data\";\r\n\r\nlet pe: PEImage | null = null;\r\n\r\nonmessage = (ev) => {\r\n const msg = ev.data as W.WorkerMessage;\r\n switch (msg.type) {\r\n case W.WorkerMessageType.REQ_OPEN_FILE:\r\n handleReqOpenFile(msg as W.ReqOpenFileMessage);\r\n break;\r\n\r\n case W.WorkerMessageType.REQ_OPEN_NAV:\r\n handleReqOpenNav(msg as W.ReqOpenNavMessage);\r\n break;\r\n }\r\n};\r\n\r\nfunction handleReqOpenFile(msg: W.ReqOpenFileMessage): void {\r\n let reader = new FileReader();\r\n\r\n reader.onload = ev => {\r\n try {\r\n const buf = (ev.target).result;\r\n pe = PEImage.load(buf);\r\n\r\n // Response with page data.\r\n const pageData = generatePageData(pe, W.PageID.HEADERS);\r\n const pageDataMsg = M.createResPageDataMessage(pageData);\r\n postMessage(pageDataMsg);\r\n\r\n // Response with PE properties.\r\n const is32Bit = pe.is32Bit();\r\n const isManaged = pe.isManaged();\r\n const pePropsMsg = M.createResPEPropsMessage(is32Bit, isManaged);\r\n postMessage(pePropsMsg);\r\n\r\n // Response with navigation data.\r\n const navList = generateNavList(pe);\r\n const navMsg = M.createResNavDataMessage(navList);\r\n postMessage(navMsg);\r\n } catch (ex) {\r\n const msg = M.createResPEErrorMessage(ex.message\r\n || `Unknown error: ${JSON.stringify(ex)}`);\r\n postMessage(msg);\r\n }\r\n };\r\n\r\n reader.onerror = ev => {\r\n pe = null;\r\n const msg = M.createResPEErrorMessage(\"Can't open file.\");\r\n postMessage(msg);\r\n };\r\n\r\n reader.readAsArrayBuffer(msg.file);\r\n}\r\n\r\nfunction handleReqOpenNav(msg: W.ReqOpenNavMessage): void {\r\n if (pe != null) {\r\n const pageData = generatePageData(pe, msg.target.pageID);\r\n pageData.nav.elemID = msg.target.elemID;\r\n const res = M.createResPageDataMessage(pageData);\r\n postMessage(res);\r\n }\r\n}"],"sourceRoot":""} \ No newline at end of file