mxcad 1.0.75 → 1.0.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mxcad.d.ts +182 -25
- package/dist/mxcad.es.js +778 -570
- package/dist/mxcad.umd.js +29 -26
- package/dist/wasm/2d/mxdrawassembly_min.js +752 -724
- package/dist/wasm/2d/mxdrawassembly_min.wasm +0 -0
- package/dist/wasm/2d-st/mxdrawassembly_min.js +817 -791
- package/dist/wasm/2d-st/mxdrawassembly_minst.wasm +0 -0
- package/package.json +2 -2
package/dist/mxcad.es.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { MxFun as h, MrxDbgUiPrPoint as
|
|
2
|
-
function
|
|
1
|
+
import { MxFun as h, MrxDbgUiPrPoint as O, MxCursorType as bD, MrxDbgUtils as fD, DynamicInputType as xD, DetailedResult as iD, MrxDbgUiPrDist as BC, store as MD, loadCoreCode as EC, MxPaintBrush as v, MrxDbgUiPrBaseReturn as T, MxDbCircleShape as PD, MxDbLine as Q, MxDbPolyline as FC, MxDbCircleArc as Y, Mx3PointArc as AC, MxDbEllipseShape as tC, McEdGetPointWorldDrawObject as eC, MxDbEllipse as iC } from "mxdraw";
|
|
2
|
+
function TD(E) {
|
|
3
3
|
return btoa(unescape(encodeURIComponent(E)));
|
|
4
4
|
}
|
|
5
|
-
function
|
|
5
|
+
function kD(E) {
|
|
6
6
|
return decodeURIComponent(escape(atob(E)));
|
|
7
7
|
}
|
|
8
|
-
async function
|
|
8
|
+
async function RD({
|
|
9
9
|
blob: E,
|
|
10
10
|
filename: D = "",
|
|
11
11
|
types: C = [
|
|
@@ -46,24 +46,24 @@ async function PD({
|
|
|
46
46
|
console.error(B.name, B.message);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
function
|
|
49
|
+
function OD(E, D) {
|
|
50
50
|
const C = document.createElement("a");
|
|
51
51
|
C.href = window.URL.createObjectURL(E), C.download = D, C.click();
|
|
52
52
|
}
|
|
53
|
-
function
|
|
53
|
+
function SD(E, D) {
|
|
54
54
|
fetch(E).then((C) => C.blob()).then((C) => {
|
|
55
55
|
const B = document.createElement("a");
|
|
56
56
|
B.href = window.URL.createObjectURL(C), B.download = D, B.click();
|
|
57
57
|
});
|
|
58
58
|
}
|
|
59
59
|
const J = {
|
|
60
|
-
b64Encode:
|
|
61
|
-
b64Decode:
|
|
62
|
-
saveAsFileDialog:
|
|
63
|
-
downloadFile:
|
|
64
|
-
downloadFileFromUrl:
|
|
60
|
+
b64Encode: TD,
|
|
61
|
+
b64Decode: kD,
|
|
62
|
+
saveAsFileDialog: RD,
|
|
63
|
+
downloadFile: OD,
|
|
64
|
+
downloadFileFromUrl: SD
|
|
65
65
|
};
|
|
66
|
-
class
|
|
66
|
+
class rC {
|
|
67
67
|
z = "D2BBB6A18140C6DF814181428143CDF2D5C9C8FDC9CFCFC2D8A2B2BBD3EB8144D8A4B3F38145D7A8C7D2D8A7CAC08146C7F0B1FBD2B5B4D4B6ABCBBFD8A9814781488149B6AA814AC1BDD1CF814BC9A5D8AD814CB8F6D1BEE3DCD6D0814D814EB7E1814FB4AE8150C1D98151D8BC8152CDE8B5A4CEAAD6F78153C0F6BED9D8AF815481558156C4CB8157BEC38158D8B1C3B4D2E58159D6AECEDAD5A7BAF5B7A6C0D6815AC6B9C5D2C7C7815BB9D4815CB3CBD2D2815D815ED8BFBEC5C6F2D2B2CFB0CFE7815F816081618162CAE981638164D8C081658166816781688169816AC2F2C2D2816BC8E9816C816D816E816F817081718172817381748175C7AC8176817781788179817A817B817CC1CB817DD3E8D5F9817ECAC2B6FED8A1D3DABFF78180D4C6BBA5D8C1CEE5BEAE81818182D8A88183D1C7D0A9818481858186D8BDD9EFCDF6BFBA8187BDBBBAA5D2E0B2FABAE0C4B68188CFEDBEA9CDA4C1C18189818A818BC7D7D9F1818CD9F4818D818E818F8190C8CBD8E9819181928193D2DACAB2C8CAD8ECD8EAD8C6BDF6C6CDB3F08194D8EBBDF1BDE98195C8D4B4D381968197C2D88198B2D6D7D0CACBCBFBD5CCB8B6CFC98199819A819BD9DAD8F0C7AA819CD8EE819DB4FAC1EED2D4819E819FD8ED81A0D2C7D8EFC3C781A181A281A3D1F681A4D6D9D8F281A5D8F5BCFEBCDB81A681A781A8C8CE81A9B7DD81AAB7C281ABC6F381AC81AD81AE81AF81B081B181B2D8F8D2C181B381B4CEE9BCBFB7FCB7A5D0DD81B581B681B781B881B9D6DAD3C5BBEFBBE1D8F181BA81BBC9A1CEB0B4AB81BCD8F381BDC9CBD8F6C2D7D8F781BE81BFCEB1D8F981C081C181C2B2AEB9C081C3D9A381C4B0E981C5C1E681C6C9EC81C7CBC581C8CBC6D9A481C981CA81CB81CC81CDB5E881CE81CFB5AB81D081D181D281D381D481D5CEBBB5CDD7A1D7F4D3D381D6CCE581D7BACE81D8D9A2D9DCD3E0D8FDB7F0D7F7D8FED8FAD9A1C4E381D981DAD3B6D8F4D9DD81DBD8FB81DCC5E581DD81DEC0D081DF81E0D1F0B0DB81E181E2BCD1D9A681E3D9A581E481E581E681E7D9ACD9AE81E8D9ABCAB981E981EA81EBD9A9D6B681EC81ED81EEB3DED9A881EFC0FD81F0CACC81F1D9AA81F2D9A781F381F4D9B081F581F6B6B181F781F881F9B9A981FAD2C081FB81FCCFC081FD81FEC2C28240BDC4D5ECB2E0C7C8BFEBD9AD8241D9AF8242CEEABAEE82438244824582468247C7D682488249824A824B824C824D824E824F8250B1E3825182528253B4D9B6EDD9B48254825582568257BFA182588259825AD9DEC7CEC0FED9B8825B825C825D825E825FCBD7B7FD8260D9B58261D9B7B1A3D3E1D9B98262D0C58263D9B682648265D9B18266D9B2C1A9D9B382678268BCF3D0DEB8A98269BEE3826AD9BD826B826C826D826ED9BA826FB0B3827082718272D9C28273827482758276827782788279827A827B827C827D827E8280D9C4B1B68281D9BF82828283B5B98284BEF3828582868287CCC8BAF2D2D08288D9C38289828ABDE8828BB3AB828C828D828ED9C5BEEB828FD9C6D9BBC4DF8290D9BED9C1D9C0829182928293829482958296829782988299829A829BD5AE829CD6B5829DC7E3829E829F82A082A1D9C882A282A382A4BCD9D9CA82A582A682A7D9BC82A8D9CBC6AB82A982AA82AB82AC82ADD9C982AE82AF82B082B1D7F682B2CDA382B382B482B582B682B782B882B982BABDA182BB82BC82BD82BE82BF82C0D9CC82C182C282C382C482C582C682C782C882C9C5BCCDB582CA82CB82CCD9CD82CD82CED9C7B3A5BFFE82CF82D082D182D2B8B582D382D4C0FC82D582D682D782D8B0F882D982DA82DB82DC82DD82DE82DF82E082E182E282E382E482E582E682E782E882E982EA82EB82EC82EDB4F682EED9CE82EFD9CFB4A2D9D082F082F1B4DF82F282F382F482F582F6B0C182F782F882F982FA82FB82FC82FDD9D1C9B582FE8340834183428343834483458346834783488349834A834B834C834D834E834F83508351CFF1835283538354835583568357D9D283588359835AC1C5835B835C835D835E835F836083618362836383648365D9D6C9AE8366836783688369D9D5D9D4D9D7836A836B836C836DCBDB836EBDA9836F8370837183728373C6A7837483758376837783788379837A837B837C837DD9D3D9D8837E83808381D9D9838283838384838583868387C8E583888389838A838B838C838D838E838F839083918392839383948395C0DC8396839783988399839A839B839C839D839E839F83A083A183A283A383A483A583A683A783A883A983AA83AB83AC83AD83AE83AF83B083B183B2B6F9D8A3D4CA83B3D4AAD0D6B3E4D5D783B4CFC8B9E283B5BFCB83B6C3E283B783B883B9B6D283BA83BBCDC3D9EED9F083BC83BD83BEB5B383BFB6B583C083C183C283C383C4BEA483C583C6C8EB83C783C8C8AB83C983CAB0CBB9ABC1F9D9E283CBC0BCB9B283CCB9D8D0CBB1F8C6E4BEDFB5E4D7C883CDD1F8BCE6CADE83CE83CFBCBDD9E6D8E783D083D1C4DA83D283D3B8D4C8BD83D483D5B2E1D4D983D683D783D883D9C3B083DA83DBC3E1DAA2C8DF83DCD0B483DDBEFCC5A983DE83DF83E0B9DA83E1DAA383E2D4A9DAA483E383E483E583E683E7D9FBB6AC83E883E9B7EBB1F9D9FCB3E5BEF683EABFF6D2B1C0E483EB83EC83EDB6B3D9FED9FD83EE83EFBEBB83F083F183F2C6E083F3D7BCDAA183F4C1B983F5B5F2C1E883F683F7BCF583F8B4D583F983FA83FB83FC83FD83FE844084418442C1DD8443C4FD84448445BCB8B7B284468447B7EF84488449844A844B844C844DD9EC844EC6BE844FBFADBBCB84508451B5CA8452DBC9D0D78453CDB9B0BCB3F6BBF7DBCABAAF8454D4E4B5B6B5F3D8D6C8D084558456B7D6C7D0D8D78457BFAF84588459DBBBD8D8845A845BD0CCBBAE845C845D845EEBBEC1D0C1F5D4F2B8D5B4B4845FB3F584608461C9BE846284638464C5D0846584668467C5D9C0FB8468B1F08469D8D9B9CE846AB5BD846B846CD8DA846D846ED6C6CBA2C8AFC9B2B4CCBFCC846FB9F48470D8DBD8DCB6E7BCC1CCEA847184728473847484758476CFF78477D8DDC7B084788479B9D0BDA3847A847BCCDE847CC6CA847D847E848084818482D8E08483D8DE84848485D8DF848684878488B0FE8489BEE7848ACAA3BCF4848B848C848D848EB8B1848F8490B8EE849184928493849484958496849784988499849AD8E2849BBDCB849CD8E4D8E3849D849E849F84A084A1C5FC84A284A384A484A584A684A784A8D8E584A984AAD8E684AB84AC84AD84AE84AF84B084B1C1A684B2C8B0B0ECB9A6BCD3CEF1DBBDC1D384B384B484B584B6B6AFD6FAC5ACBDD9DBBEDBBF84B784B884B9C0F8BEA2C0CD84BA84BB84BC84BD84BE84BF84C084C184C284C3DBC0CAC684C484C584C6B2AA84C784C884C9D3C284CAC3E384CBD1AB84CC84CD84CE84CFDBC284D0C0D584D184D284D3DBC384D4BFB184D584D684D784D884D984DAC4BC84DB84DC84DD84DEC7DA84DF84E084E184E284E384E484E584E684E784E884E9DBC484EA84EB84EC84ED84EE84EF84F084F1D9E8C9D784F284F384F4B9B4CEF0D4C884F584F684F784F8B0FCB4D284F9D0D984FA84FB84FC84FDD9E984FEDECBD9EB8540854185428543D8B0BBAFB1B18544B3D7D8CE85458546D4D185478548BDB3BFEF8549CFBB854A854BD8D0854C854D854EB7CB854F85508551D8D185528553855485558556855785588559855A855BC6A5C7F8D2BD855C855DD8D2C4E4855ECAAE855FC7A78560D8A68561C9FDCEE7BBDCB0EB856285638564BBAAD0AD8565B1B0D7E4D7BF8566B5A5C2F4C4CF85678568B2A98569B2B7856AB1E5DFB2D5BCBFA8C2ACD8D5C2B1856BD8D4CED4856CDAE0856DCEC0856E856FD8B4C3AED3A1CEA38570BCB4C8B4C2D18571BEEDD0B68572DAE18573857485758576C7E485778578B3A78579B6F2CCFCC0FA857A857BC0F7857CD1B9D1E1D8C7857D857E85808581858285838584B2DE85858586C0E58587BAF185888589D8C8858AD4AD858B858CCFE1D8C9858DD8CACFC3858EB3F8BEC7858F859085918592D8CB8593859485958596859785988599DBCC859A859B859C859DC8A5859E859F85A0CFD885A1C8FEB2CE85A285A385A485A585A6D3D6B2E6BCB0D3D1CBABB7B485A785A885A9B7A285AA85ABCAE585ACC8A1CADCB1E4D0F085ADC5D185AE85AF85B0DBC5B5FE85B185B2BFDAB9C5BEE4C1ED85B3DFB6DFB5D6BBBDD0D5D9B0C8B6A3BFC9CCA8DFB3CAB7D3D285B4D8CFD2B6BAC5CBBECCBE85B5DFB7B5F0DFB485B685B785B8D3F585B9B3D4B8F785BADFBA85BBBACFBCAAB5F585BCCDACC3FBBAF3C0F4CDC2CFF2DFB8CFC585BDC2C0DFB9C2F085BE85BF85C0BEFD85C1C1DFCDCCD2F7B7CDDFC185C2DFC485C385C4B7F1B0C9B6D6B7D485C5BAACCCFDBFD4CBB1C6F485C6D6A8DFC585C7CEE2B3B385C885C9CEFCB4B585CACEC7BAF085CBCEE185CCD1BD85CD85CEDFC085CF85D0B4F485D1B3CA85D2B8E6DFBB85D385D485D585D6C4C585D7DFBCDFBDDFBEC5BBDFBFDFC2D4B1DFC385D8C7BACED885D985DA85DB85DC85DDC4D885DEDFCA85DFDFCF85E0D6DC85E185E285E385E485E585E685E785E8DFC9DFDACEB685E9BAC7DFCEDFC8C5DE85EA85EBC9EBBAF4C3FC85EC85EDBED785EEDFC685EFDFCD85F0C5D885F185F285F385F4D5A6BACD85F5BECCD3BDB8C085F6D6E485F7DFC7B9BEBFA785F885F9C1FCDFCBDFCC85FADFD085FB85FC85FD85FE8640DFDBDFE58641DFD7DFD6D7C9DFE3DFE4E5EBD2A7DFD28642BFA98643D4DB8644BFC8DFD4864586468647CFCC86488649DFDD864AD1CA864BDFDEB0A7C6B7DFD3864CBAE5864DB6DFCDDBB9FED4D5864E864FDFDFCFECB0A5DFE7DFD1D1C6DFD5DFD8DFD9DFDC8650BBA98651DFE0DFE18652DFE2DFE6DFE8D3B486538654865586568657B8E7C5B6DFEAC9DAC1A8C4C486588659BFDECFF8865A865B865CD5DCDFEE865D865E865F866086618662B2B88663BADFDFEC8664DBC18665D1E48666866786688669CBF4B4BD866AB0A6866B866C866D866E866FDFF1CCC6DFF286708671DFED867286738674867586768677DFE986788679867A867BDFEB867CDFEFDFF0BBBD867D867EDFF386808681DFF48682BBA38683CADBCEA8E0A7B3AA8684E0A6868586868687E0A186888689868A868BDFFE868CCDD9DFFC868DDFFA868EBFD0D7C4868FC9CC86908691DFF8B0A186928693869486958696DFFD869786988699869ADFFBE0A2869B869C869D869E869FE0A886A086A186A286A3B7C886A486A5C6A1C9B6C0B2DFF586A686A7C5BE86A8D8C4DFF9C4F686A986AA86AB86AC86AD86AEE0A3E0A4E0A5D0A586AF86B0E0B4CCE486B1E0B186B2BFA6E0AFCEB9E0ABC9C686B386B4C0AEE0AEBAEDBAB0E0A986B586B686B7DFF686B8E0B386B986BAE0B886BB86BC86BDB4ADE0B986BE86BFCFB2BAC886C0E0B086C186C286C386C486C586C686C7D0FA86C886C986CA86CB86CC86CD86CE86CF86D0E0AC86D1D4FB86D2DFF786D3C5E786D4E0AD86D5D3F786D6E0B6E0B786D786D886D986DA86DBE0C4D0E186DC86DD86DEE0BC86DF86E0E0C9E0CA86E186E286E3E0BEE0AAC9A4E0C186E4E0B286E586E686E786E886E9CAC8E0C386EAE0B586EBCECB86ECCBC3E0CDE0C6E0C286EDE0CB86EEE0BAE0BFE0C086EF86F0E0C586F186F2E0C7E0C886F3E0CC86F4E0BB86F586F686F786F886F9CBD4E0D586FAE0D6E0D286FB86FC86FD86FE87408741E0D0BCCE87428743E0D18744B8C2D8C587458746874787488749874A874B874CD0EA874D874EC2EF874F8750E0CFE0BD875187528753E0D4E0D387548755E0D78756875787588759E0DCE0D8875A875B875CD6F6B3B0875DD7EC875ECBBB875F8760E0DA8761CEFB876287638764BAD987658766876787688769876A876B876C876D876E876F8770E0E1E0DDD2AD87718772877387748775E0E287768777E0DBE0D9E0DF87788779E0E0877A877B877C877D877EE0DE8780E0E4878187828783C6F7D8ACD4EBE0E6CAC98784878587868787E0E587888789878A878BB8C1878C878D878E878FE0E7E0E887908791879287938794879587968797E0E9E0E387988799879A879B879C879D879EBABFCCE7879F87A087A1E0EA87A287A387A487A587A687A787A887A987AA87AB87AC87AD87AE87AF87B0CFF987B187B287B387B487B587B687B787B887B987BA87BBE0EB87BC87BD87BE87BF87C087C187C2C8C287C387C487C587C6BDC087C787C887C987CA87CB87CC87CD87CE87CF87D087D187D287D3C4D287D487D587D687D787D887D987DA87DB87DCE0EC87DD87DEE0ED87DF87E0C7F4CBC487E1E0EEBBD8D8B6D2F2E0EFCDC587E2B6DA87E387E487E587E687E787E8E0F187E9D4B087EA87EBC0A7B4D187EC87EDCEA7E0F087EE87EF87F0E0F2B9CC87F187F2B9FACDBCE0F387F387F487F5C6D4E0F487F6D4B287F7C8A6E0F6E0F587F887F987FA87FB87FC87FD87FE8840884188428843884488458846884788488849E0F7884A884BCDC1884C884D884ECAA5884F885088518852D4DADBD7DBD98853DBD8B9E7DBDCDBDDB5D888548855DBDA8856885788588859885ADBDBB3A1DBDF885B885CBBF8885DD6B7885EDBE0885F886088618862BEF988638864B7BB8865DBD0CCAEBFB2BBB5D7F8BFD38866886788688869886ABFE9886B886CBCE1CCB3DBDEB0D3CEEBB7D8D7B9C6C2886D886EC0A4886FCCB98870DBE7DBE1C6BADBE38871DBE88872C5F7887388748875DBEA88768877DBE9BFC088788879887ADBE6DBE5887B887C887D887E8880B4B9C0ACC2A2DBE2DBE48881888288838884D0CDDBED88858886888788888889C0DDDBF2888A888B888C888D888E888F8890B6E28891889288938894DBF3DBD2B9B8D4ABDBEC8895BFD1DBF08896DBD18897B5E68898DBEBBFE58899889A889BDBEE889CDBF1889D889E889FDBF988A088A188A288A388A488A588A688A788A8B9A1B0A388A988AA88AB88AC88AD88AE88AFC2F188B088B1B3C7DBEF88B288B3DBF888B4C6D2DBF488B588B6DBF5DBF7DBF688B788B8DBFE88B9D3F2B2BA88BA88BB88BCDBFD88BD88BE88BF88C088C188C288C388C4DCA488C5DBFB88C688C788C888C9DBFA88CA88CB88CCDBFCC5E0BBF988CD88CEDCA388CF88D0DCA588D1CCC388D288D388D4B6D1DDC088D588D688D7DCA188D8DCA288D988DA88DBC7B588DC88DD88DEB6E988DF88E088E1DCA788E288E388E488E5DCA688E6DCA9B1A488E788E8B5CC88E988EA88EB88EC88EDBFB088EE88EF88F088F188F2D1DF88F388F488F588F6B6C288F788F888F988FA88FB88FC88FD88FE894089418942894389448945DCA88946894789488949894A894B894CCBFAEBF3894D894E894FCBDC89508951CBFE895289538954CCC189558956895789588959C8FB895A895B895C895D895E895FDCAA89608961896289638964CCEEDCAB89658966896789688969896A896B896C896D896E896F897089718972897389748975DBD38976DCAFDCAC8977BEB38978CAFB8979897A897BDCAD897C897D897E89808981898289838984C9CAC4B989858986898789888989C7BDDCAE898A898B898CD4F6D0E6898D898E898F89908991899289938994C4ABB6D589958996899789988999899A899B899C899D899E899F89A089A189A289A389A489A589A6DBD489A789A889A989AAB1DA89AB89AC89ADDBD589AE89AF89B089B189B289B389B489B589B689B789B8DBD689B989BA89BBBABE89BC89BD89BE89BF89C089C189C289C389C489C589C689C789C889C9C8C089CA89CB89CC89CD89CE89CFCABFC8C989D0D7B389D1C9F989D289D3BFC789D489D5BAF889D689D7D2BC89D889D989DA89DB89DC89DD89DE89DFE2BA89E0B4A689E189E2B1B889E389E489E589E689E7B8B489E8CFC489E989EA89EB89ECD9E7CFA6CDE289ED89EED9EDB6E089EFD2B989F089F1B9BB89F289F389F489F5E2B9E2B789F6B4F389F7CCECCCABB7F289F8D8B2D1EBBABB89F9CAA789FA89FBCDB789FC89FDD2C4BFE4BCD0B6E189FEDEC58A408A418A428A43DEC6DBBC8A44D1D98A458A46C6E6C4CEB7EE8A47B7DC8A488A49BFFCD7E08A4AC6F58A4B8A4CB1BCDEC8BDB1CCD7DECA8A4DDEC98A4E8A4F8A508A518A52B5EC8A53C9DD8A548A55B0C28A568A578A588A598A5A8A5B8A5C8A5D8A5E8A5F8A608A618A62C5AEC5AB8A63C4CC8A64BCE9CBFD8A658A668A67BAC38A688A698A6AE5F9C8E7E5FACDFD8A6BD7B1B8BEC2E88A6CC8D18A6D8A6EE5FB8A6F8A708A718A72B6CABCCB8A738A74D1FDE6A18A75C3EE8A768A778A788A79E6A48A7A8A7B8A7C8A7DE5FEE6A5CDD78A7E8A80B7C1E5FCE5FDE6A38A818A82C4DDE6A88A838A84E6A78A858A868A878A888A898A8AC3C38A8BC6DE8A8C8A8DE6AA8A8E8A8F8A908A918A928A938A94C4B78A958A968A97E6A2CABC8A988A998A9A8A9BBDE3B9C3E6A6D0D5CEAF8A9C8A9DE6A9E6B08A9ED2A68A9FBDAAE6AD8AA08AA18AA28AA38AA4E6AF8AA5C0D18AA68AA7D2CC8AA88AA98AAABCA78AAB8AAC8AAD8AAE8AAF8AB08AB18AB28AB38AB48AB58AB6E6B18AB7D2F68AB88AB98ABAD7CB8ABBCDFE8ABCCDDEC2A6E6ABE6ACBDBFE6AEE6B38ABD8ABEE6B28ABF8AC08AC18AC2E6B68AC3E6B88AC48AC58AC68AC7C4EF8AC88AC98ACAC4C88ACB8ACCBEEAC9EF8ACD8ACEE6B78ACFB6F08AD08AD18AD2C3E48AD38AD48AD58AD68AD78AD88AD9D3E9E6B48ADAE6B58ADBC8A28ADC8ADD8ADE8ADF8AE0E6BD8AE18AE28AE3E6B98AE48AE58AE68AE78AE8C6C58AE98AEACDF1E6BB8AEB8AEC8AED8AEE8AEF8AF08AF18AF28AF38AF4E6BC8AF58AF68AF78AF8BBE98AF98AFA8AFB8AFC8AFD8AFE8B40E6BE8B418B428B438B44E6BA8B458B46C0B78B478B488B498B4A8B4B8B4C8B4D8B4E8B4FD3A4E6BFC9F4E6C38B508B51E6C48B528B538B548B55D0F68B568B578B588B598B5A8B5B8B5C8B5D8B5E8B5F8B608B618B628B638B648B658B668B67C3BD8B688B698B6A8B6B8B6C8B6D8B6EC3C4E6C28B6F8B708B718B728B738B748B758B768B778B788B798B7A8B7B8B7CE6C18B7D8B7E8B808B818B828B838B84E6C7CFB18B85EBF48B868B87E6CA8B888B898B8A8B8B8B8CE6C58B8D8B8EBCDEC9A98B8F8B908B918B928B938B94BCB58B958B96CFD38B978B988B998B9A8B9BE6C88B9CE6C98B9DE6CE8B9EE6D08B9F8BA08BA1E6D18BA28BA38BA4E6CBB5D58BA5E6CC8BA68BA7E6CF8BA88BA9C4DB8BAAE6C68BAB8BAC8BAD8BAE8BAFE6CD8BB08BB18BB28BB38BB48BB58BB68BB78BB88BB98BBA8BBB8BBC8BBD8BBE8BBF8BC08BC18BC28BC38BC48BC58BC6E6D28BC78BC88BC98BCA8BCB8BCC8BCD8BCE8BCF8BD08BD18BD2E6D4E6D38BD38BD48BD58BD68BD78BD88BD98BDA8BDB8BDC8BDD8BDE8BDF8BE08BE18BE28BE38BE48BE58BE68BE78BE88BE98BEA8BEB8BECE6D58BEDD9F88BEE8BEFE6D68BF08BF18BF28BF38BF48BF58BF68BF7E6D78BF88BF98BFA8BFB8BFC8BFD8BFE8C408C418C428C438C448C458C468C47D7D3E6DD8C48E6DEBFD7D4D08C49D7D6B4E6CBEFE6DAD8C3D7CED0A28C4AC3CF8C4B8C4CE6DFBCBEB9C2E6DBD1A78C4D8C4EBAA2C2CF8C4FD8AB8C508C518C52CAEBE5EE8C53E6DC8C54B7F58C558C568C578C58C8E68C598C5AC4F58C5B8C5CE5B2C4FE8C5DCBFCE5B3D5AC8C5ED3EECAD8B0B28C5FCBCECDEA8C608C61BAEA8C628C638C64E5B58C65E5B48C66D7DAB9D9D6E6B6A8CDF0D2CBB1A6CAB58C67B3E8C9F3BFCDD0FBCAD2E5B6BBC28C688C698C6ACFDCB9AC8C6B8C6C8C6D8C6ED4D78C6F8C70BAA6D1E7CFFCBCD28C71E5B7C8DD8C728C738C74BFEDB1F6CBDE8C758C76BCC58C77BCC4D2FAC3DCBFDC8C788C798C7A8C7BB8BB8C7C8C7D8C7EC3C28C80BAAED4A28C818C828C838C848C858C868C878C888C89C7DEC4AFB2EC8C8AB9D18C8B8C8CE5BBC1C88C8D8C8ED5AF8C8F8C908C918C928C93E5BC8C94E5BE8C958C968C978C988C998C9A8C9BB4E7B6D4CBC2D1B0B5BC8C9C8C9DCAD98C9EB7E28C9F8CA0C9E48CA1BDAB8CA28CA3CEBED7F08CA48CA58CA68CA7D0A18CA8C9D98CA98CAAB6FBE6D8BCE28CABB3BE8CACC9D08CADE6D9B3A28CAE8CAF8CB08CB1DECC8CB2D3C8DECD8CB3D2A28CB48CB58CB68CB7DECE8CB88CB98CBA8CBBBECD8CBC8CBDDECF8CBE8CBF8CC0CAACD2FCB3DFE5EAC4E1BEA1CEB2C4F2BED6C6A8B2E38CC18CC2BED38CC38CC4C7FCCCEBBDECCEDD8CC58CC6CABAC6C1E5ECD0BC8CC78CC88CC9D5B98CCA8CCB8CCCE5ED8CCD8CCE8CCF8CD0CAF48CD1CDC0C2C58CD2E5EF8CD3C2C4E5F08CD48CD58CD68CD78CD88CD98CDAE5F8CDCD8CDBC9BD8CDC8CDD8CDE8CDF8CE08CE18CE2D2D9E1A88CE38CE48CE58CE6D3EC8CE7CBEAC6F18CE88CE98CEA8CEB8CECE1AC8CED8CEE8CEFE1A7E1A98CF08CF1E1AAE1AF8CF28CF3B2ED8CF4E1ABB8DAE1ADE1AEE1B0B5BAE1B18CF58CF68CF78CF88CF9E1B3E1B88CFA8CFB8CFC8CFD8CFED1D28D40E1B6E1B5C1EB8D418D428D43E1B78D44D4C08D45E1B28D46E1BAB0B68D478D488D498D4AE1B48D4BBFF98D4CE1B98D4D8D4EE1BB8D4F8D508D518D528D538D54E1BE8D558D568D578D588D598D5AE1BC8D5B8D5C8D5D8D5E8D5F8D60D6C58D618D628D638D648D658D668D67CFBF8D688D69E1BDE1BFC2CD8D6AB6EB8D6BD3F88D6C8D6DC7CD8D6E8D6FB7E58D708D718D728D738D748D758D768D778D788D79BEFE8D7A8D7B8D7C8D7D8D7E8D80E1C0E1C18D818D82E1C7B3E78D838D848D858D868D878D88C6E98D898D8A8D8B8D8C8D8DB4DE8D8ED1C28D8F8D908D918D92E1C88D938D94E1C68D958D968D978D988D99E1C58D9AE1C3E1C28D9BB1C08D9C8D9D8D9ED5B8E1C48D9F8DA08DA18DA28DA3E1CB8DA48DA58DA68DA78DA88DA98DAA8DABE1CCE1CA8DAC8DAD8DAE8DAF8DB08DB18DB28DB3EFFA8DB48DB5E1D3E1D2C7B68DB68DB78DB88DB98DBA8DBB8DBC8DBD8DBE8DBF8DC0E1C98DC18DC2E1CE8DC3E1D08DC48DC58DC68DC78DC88DC98DCA8DCB8DCC8DCD8DCEE1D48DCFE1D1E1CD8DD08DD1E1CF8DD28DD38DD48DD5E1D58DD68DD78DD88DD98DDA8DDB8DDC8DDD8DDE8DDF8DE08DE18DE2E1D68DE38DE48DE58DE68DE78DE88DE98DEA8DEB8DEC8DED8DEE8DEF8DF08DF18DF28DF38DF48DF58DF68DF78DF8E1D78DF98DFA8DFBE1D88DFC8DFD8DFE8E408E418E428E438E448E458E468E478E488E498E4A8E4B8E4C8E4D8E4E8E4F8E508E518E528E538E548E55E1DA8E568E578E588E598E5A8E5B8E5C8E5D8E5E8E5F8E608E618E62E1DB8E638E648E658E668E678E688E69CEA18E6A8E6B8E6C8E6D8E6E8E6F8E708E718E728E738E748E758E76E7DD8E77B4A8D6DD8E788E79D1B2B3B28E7A8E7BB9A4D7F3C7C9BEDEB9AE8E7CCED78E7D8E7EB2EEDBCF8E80BCBAD2D1CBC8B0CD8E818E82CFEF8E838E848E858E868E87D9E3BDED8E888E89B1D2CAD0B2BC8E8ACBA7B7AB8E8BCAA68E8C8E8D8E8ECFA38E8F8E90E0F8D5CAE0FB8E918E92E0FAC5C1CCFB8E93C1B1E0F9D6E3B2AFD6C4B5DB8E948E958E968E978E988E998E9A8E9BB4F8D6A18E9C8E9D8E9E8E9F8EA0CFAFB0EF8EA18EA2E0FC8EA38EA48EA58EA68EA7E1A1B3A38EA88EA9E0FDE0FEC3B18EAA8EAB8EAC8EADC3DD8EAEE1A2B7F98EAF8EB08EB18EB28EB38EB4BBCF8EB58EB68EB78EB88EB98EBA8EBBE1A3C4BB8EBC8EBD8EBE8EBF8EC0E1A48EC18EC2E1A58EC38EC4E1A6B4B18EC58EC68EC78EC88EC98ECA8ECB8ECC8ECD8ECE8ECF8ED08ED18ED28ED3B8C9C6BDC4EA8ED4B2A28ED5D0D28ED6E7DBBBC3D3D7D3C48ED7B9E3E2CF8ED88ED98EDAD7AF8EDBC7ECB1D38EDC8EDDB4B2E2D18EDE8EDF8EE0D0F2C2AEE2D08EE1BFE2D3A6B5D7E2D2B5EA8EE2C3EDB8FD8EE3B8AE8EE4C5D3B7CFE2D48EE58EE68EE78EE8E2D3B6C8D7F98EE98EEA8EEB8EEC8EEDCDA58EEE8EEF8EF08EF18EF2E2D88EF3E2D6CAFCBFB5D3B9E2D58EF48EF58EF68EF7E2D78EF88EF98EFA8EFB8EFC8EFD8EFE8F408F418F42C1AEC0C88F438F448F458F468F478F48E2DBE2DAC0AA8F498F4AC1CE8F4B8F4C8F4D8F4EE2DC8F4F8F508F518F528F538F548F558F568F578F588F598F5AE2DD8F5BE2DE8F5C8F5D8F5E8F5F8F608F618F628F638F64DBC88F65D1D3CDA28F668F67BDA88F688F698F6ADEC3D8A5BFAADBCDD2ECC6FAC5AA8F6B8F6C8F6DDEC48F6EB1D7DFAE8F6F8F708F71CABD8F72DFB18F73B9AD8F74D2FD8F75B8A5BAEB8F768F77B3DA8F788F798F7AB5DCD5C58F7B8F7C8F7D8F7EC3D6CFD2BBA18F80E5F3E5F28F818F82E5F48F83CDE48F84C8F58F858F868F878F888F898F8A8F8BB5AFC7BF8F8CE5F68F8D8F8E8F8FECB08F908F918F928F938F948F958F968F978F988F998F9A8F9B8F9C8F9D8F9EE5E68F9FB9E9B5B18FA0C2BCE5E8E5E7E5E98FA18FA28FA38FA4D2CD8FA58FA68FA7E1EAD0CE8FA8CDAE8FA9D1E58FAA8FABB2CAB1EB8FACB1F2C5ED8FAD8FAED5C3D3B08FAFE1DC8FB08FB18FB2E1DD8FB3D2DB8FB4B3B9B1CB8FB58FB68FB7CDF9D5F7E1DE8FB8BEB6B4FD8FB9E1DFBADCE1E0BBB2C2C9E1E18FBA8FBB8FBCD0EC8FBDCDBD8FBE8FBFE1E28FC0B5C3C5C7E1E38FC18FC2E1E48FC38FC48FC58FC6D3F98FC78FC88FC98FCA8FCB8FCCE1E58FCDD1AD8FCE8FCFE1E6CEA28FD08FD18FD28FD38FD48FD5E1E78FD6B5C28FD78FD88FD98FDAE1E8BBD58FDB8FDC8FDD8FDE8FDFD0C4E2E0B1D8D2E48FE08FE1E2E18FE28FE3BCC9C8CC8FE4E2E3ECFEECFDDFAF8FE58FE68FE7E2E2D6BECDFCC3A68FE88FE98FEAE3C38FEB8FECD6D2E2E78FED8FEEE2E88FEF8FF0D3C78FF18FF2E2ECBFEC8FF3E2EDE2E58FF48FF5B3C08FF68FF78FF8C4EE8FF98FFAE2EE8FFB8FFCD0C38FFDBAF6E2E9B7DEBBB3CCACCBCBE2E4E2E6E2EAE2EB8FFE90409041E2F790429043E2F4D4F5E2F390449045C5AD9046D5FAC5C2B2C090479048E2EF9049E2F2C1AFCBBC904A904BB5A1E2F9904C904D904EBCB1E2F1D0D4D4B9E2F5B9D6E2F6904F90509051C7D390529053905490559056E2F0905790589059905A905BD7DCEDA1905C905DE2F8905EEDA5E2FECAD1905F906090619062906390649065C1B59066BBD090679068BFD69069BAE3906A906BCBA1906C906D906EEDA6EDA3906F9070EDA29071907290739074BBD6EDA7D0F490759076EDA4BADEB6F7E3A1B6B2CCF1B9A79077CFA2C7A190789079BFD2907A907BB6F1907CE2FAE2FBE2FDE2FCC4D5E3A2907DD3C1907E90809081E3A7C7C49082908390849085CFA490869087E3A9BAB790889089908A908BE3A8908CBBDA908DE3A3908E908F9090E3A4E3AA9091E3A69092CEF2D3C690939094BBBC90959096D4C39097C4FA90989099EDA8D0FCE3A5909AC3F5909BE3ADB1AF909CE3B2909D909E909FBCC290A090A1E3ACB5BF90A290A390A490A590A690A790A890A9C7E9E3B090AA90AB90ACBEAACDEF90AD90AE90AF90B090B1BBF390B290B390B4CCE890B590B6E3AF90B7E3B190B8CFA7E3AE90B9CEA9BBDD90BA90BB90BC90BD90BEB5EBBEE5B2D2B3CD90BFB1B9E3ABB2D1B5ACB9DFB6E890C090C1CFEBE3B790C2BBCC90C390C4C8C7D0CA90C590C690C790C890C9E3B8B3EE90CA90CB90CC90CDEDA990CED3FAD3E490CF90D090D1EDAAE3B9D2E290D290D390D490D590D6E3B590D790D890D990DAD3DE90DB90DC90DD90DEB8D0E3B390DF90E0E3B6B7DF90E1E3B4C0A290E290E390E4E3BA90E590E690E790E890E990EA90EB90EC90ED90EE90EF90F090F190F290F390F490F590F690F7D4B890F890F990FA90FB90FC90FD90FE9140B4C89141E3BB9142BBC59143C9F791449145C9E5914691479148C4BD9149914A914B914C914D914E914FEDAB9150915191529153C2FD9154915591569157BBDBBFAE91589159915A915B915C915D915ECEBF915F916091619162E3BC9163BFB6916491659166916791689169916A916B916C916D916E916F9170917191729173917491759176B1EF91779178D4F79179917A917B917C917DE3BE917E9180918191829183918491859186EDAD918791889189918A918B918C918D918E918FE3BFBAA9EDAC91909191E3BD91929193919491959196919791989199919A919BE3C0919C919D919E919F91A091A1BAB691A291A391A4B6AE91A591A691A791A891A9D0B891AAB0C3EDAE91AB91AC91AD91AE91AFEDAFC0C191B0E3C191B191B291B391B491B591B691B791B891B991BA91BB91BC91BD91BE91BF91C091C1C5B391C291C391C491C591C691C791C891C991CA91CB91CC91CD91CE91CFE3C291D091D191D291D391D491D591D691D791D8DCB291D991DA91DB91DC91DD91DEEDB091DFB8EA91E0CEECEAA7D0E7CAF9C8D6CFB7B3C9CED2BDE491E191E2E3DEBBF2EAA8D5BD91E3C6DDEAA991E491E591E6EAAA91E7EAACEAAB91E8EAAEEAAD91E991EA91EB91ECBDD891EDEAAF91EEC2BE91EF91F091F191F2B4C1B4F791F391F4BBA791F591F691F791F891F9ECE6ECE5B7BFCBF9B1E291FAECE791FB91FC91FDC9C8ECE8ECE991FECAD6DED0B2C5D4FA92409241C6CBB0C7B4F2C8D3924292439244CDD092459246BFB8924792489249924A924B924C924DBFDB924E924FC7A4D6B49250C0A9DED1C9A8D1EFC5A4B0E7B3B6C8C592519252B0E292539254B7F692559256C5FA92579258B6F39259D5D2B3D0BCBC925A925B925CB3AD925D925E925F9260BEF1B0D1926192629263926492659266D2D6CAE3D7A59267CDB6B6B6BFB9D5DB9268B8A7C5D79269926A926BDED2BFD9C2D5C7C0926CBBA4B1A8926D926EC5EA926F9270C5FBCCA79271927292739274B1A7927592769277B5D692789279927AC4A8927BDED3D1BAB3E9927CC3F2927D927EB7F79280D6F4B5A3B2F0C4B4C4E9C0ADDED49281B0E8C5C4C1E09282B9D59283BEDCCDD8B0CE9284CDCFDED6BED0D7BEDED5D5D0B0DD92859286C4E292879288C2A3BCF09289D3B5C0B9C5A1B2A6D4F1928A928BC0A8CAC3DED7D5FC928CB9B0928DC8ADCBA9928EDED9BFBD928F929092919292C6B4D7A7CAB0C4C39293B3D6B9D29294929592969297D6B8EAFCB0B492989299929A929BBFE6929C929DCCF4929E929F92A092A1CDDA92A292A392A4D6BFC2CE92A5CECECCA2D0AEC4D3B5B2DED8D5F5BCB7BBD392A692A7B0A492A8C5B2B4EC92A992AA92ABD5F192AC92ADEAFD92AE92AF92B092B192B292B3DEDACDA692B492B5CDEC92B692B792B892B9CEE6DEDC92BACDB1C0A692BB92BCD7BD92BDDEDBB0C6BAB4C9D3C4F3BEE892BE92BF92C092C1B2B692C292C392C492C592C692C792C892C9C0CCCBF092CABCF1BBBBB5B792CB92CC92CDC5F592CEDEE692CF92D092D1DEE3BEDD92D292D3DEDF92D492D592D692D7B4B7BDDD92D892D9DEE0C4ED92DA92DB92DC92DDCFC692DEB5E092DF92E092E192E2B6DECADAB5F4DEE592E3D5C692E4DEE1CCCDC6FE92E5C5C592E692E792E8D2B492E9BEF292EA92EB92EC92ED92EE92EF92F0C2D392F1CCBDB3B892F2BDD392F3BFD8CDC6D1DAB4EB92F4DEE4DEDDDEE792F5EAFE92F692F7C2B0DEE292F892F9D6C0B5A792FAB2F492FBDEE892FCDEF292FD92FE934093419342DEED9343DEF193449345C8E0934693479348D7E1DEEFC3E8CCE19349B2E5934A934B934CD2BE934D934E934F9350935193529353DEEE9354DEEBCED59355B4A79356935793589359935ABFABBEBE935B935CBDD2935D935E935F9360DEE99361D4AE9362DEDE9363DEEA9364936593669367C0BF9368DEECB2F3B8E9C2A79369936ABDC1936B936C936D936E936FDEF5DEF893709371B2ABB4A493729373B4EAC9A6937493759376937793789379DEF6CBD1937AB8E3937BDEF7DEFA937C937D937E9380DEF9938193829383CCC29384B0E1B4EE93859386938793889389938AE5BA938B938C938D938E938FD0AF93909391B2EB9392EBA19393DEF493949395C9E3DEF3B0DAD2A1B1F79396CCAF939793989399939A939B939C939DDEF0939ECBA4939F93A093A1D5AA93A293A393A493A593A6DEFB93A793A893A993AA93AB93AC93AD93AEB4DD93AFC4A693B093B193B2DEFD93B393B493B593B693B793B893B993BA93BB93BCC3FEC4A1DFA193BD93BE93BF93C093C193C293C3C1CC93C4DEFCBEEF93C5C6B293C693C793C893C993CA93CB93CC93CD93CEB3C5C8F693CF93D0CBBADEFE93D193D2DFA493D393D493D593D6D7B293D793D893D993DA93DBB3B793DC93DD93DE93DFC1C393E093E1C7CBB2A5B4E993E2D7AB93E393E493E593E6C4EC93E7DFA2DFA393E8DFA593E9BAB393EA93EB93ECDFA693EDC0DE93EE93EFC9C393F093F193F293F393F493F593F6B2D9C7E693F7DFA793F8C7DC93F993FA93FB93FCDFA8EBA293FD93FE944094419442CBD3944394449445DFAA9446DFA99447B2C194489449944A944B944C944D944E944F9450945194529453945494559456945794589459945A945B945C945D945E945F9460C5CA94619462946394649465946694679468DFAB9469946A946B946C946D946E946F9470D4DC94719472947394749475C8C19476947794789479947A947B947C947D947E948094819482DFAC94839484948594869487BEF094889489DFADD6A7948A948B948C948DEAB7EBB6CAD5948ED8FCB8C4948FB9A594909491B7C5D5FE94929493949494959496B9CA94979498D0A7F4CD9499949AB5D0949B949CC3F4949DBEC8949E949F94A0EBB7B0BD94A194A2BDCC94A3C1B294A4B1D6B3A894A594A694A7B8D2C9A294A894A9B6D894AA94AB94AC94ADEBB8BEB494AE94AF94B0CAFD94B1C7C394B2D5FB94B394B4B7F394B594B694B794B894B994BA94BB94BC94BD94BE94BF94C094C194C294C3CEC494C494C594C6D5ABB1F394C794C894C9ECB3B0DF94CAECB594CB94CC94CDB6B794CEC1CF94CFF5FAD0B194D094D1D5E594D2CED394D394D4BDEFB3E294D5B8AB94D6D5B694D7EDBD94D8B6CF94D9CBB9D0C294DA94DB94DC94DD94DE94DF94E094E1B7BD94E294E3ECB6CAA994E494E594E6C5D494E7ECB9ECB8C2C3ECB794E894E994EA94EBD0FDECBA94ECECBBD7E594ED94EEECBC94EF94F094F1ECBDC6EC94F294F394F494F594F694F794F894F9CEDE94FABCC894FB94FCC8D5B5A9BEC9D6BCD4E794FD94FED1AED0F1EAB8EAB9EABABAB59540954195429543CAB1BFF595449545CDFA9546954795489549954AEAC0954BB0BAEABE954C954DC0A5954E954F9550EABB9551B2FD9552C3F7BBE8955395549555D2D7CEF4EABF955695579558EABC9559955A955BEAC3955CD0C7D3B3955D955E955F9560B4BA9561C3C1D7F29562956395649565D5D19566CAC79567EAC595689569EAC4EAC7EAC6956A956B956C956D956ED6E7956FCFD495709571EACB9572BBCE9573957495759576957795789579BDFAC9CE957A957BEACC957C957DC9B9CFFEEACAD4CEEACDEACF957E9580CDED9581958295839584EAC99585EACE95869587CEEE9588BBDE9589B3BF958A958B958C958D958EC6D5BEB0CEFA958F95909591C7E79592BEA7EAD095939594D6C7959595969597C1C095989599959AD4DD959BEAD1959C959DCFBE959E959F95A095A1EAD295A295A395A495A5CAEE95A695A795A895A9C5AFB0B595AA95AB95AC95AD95AEEAD495AF95B095B195B295B395B495B595B695B7EAD3F4DF95B895B995BA95BB95BCC4BA95BD95BE95BF95C095C1B1A995C295C395C495C5E5DF95C695C795C895C9EAD595CA95CB95CC95CD95CE95CF95D095D195D295D395D495D595D695D795D895D995DA95DB95DC95DD95DE95DF95E095E195E295E3CAEF95E4EAD6EAD7C6D895E595E695E795E895E995EA95EB95ECEAD895ED95EEEAD995EF95F095F195F295F395F4D4BB95F5C7FAD2B7B8FC95F695F7EAC295F8B2DC95F995FAC2FC95FBD4F8CCE6D7EE95FC95FD95FE9640964196429643D4C2D3D0EBC3C5F39644B7FE96459646EBD4964796489649CBB7EBDE964AC0CA964B964C964DCDFB964EB3AF964FC6DA965096519652965396549655EBFC9656C4BE9657CEB4C4A9B1BED4FD9658CAF59659D6EC965A965BC6D3B6E4965C965D965E965FBBFA96609661D0E096629663C9B19664D4D3C8A896659666B8CB9667E8BEC9BC96689669E8BB966AC0EED0D3B2C4B4E5966BE8BC966C966DD5C8966E966F967096719672B6C59673E8BDCAF8B8DCCCF5967496759676C0B496779678D1EEE8BFE8C29679967ABABC967BB1ADBDDC967CEABDE8C3967DE8C6967EE8CB9680968196829683E8CC9684CBC9B0E59685BCAB96869687B9B996889689E8C1968ACDF7968BE8CA968C968D968E968FCEF69690969196929693D5ED9694C1D6E8C49695C3B69696B9FBD6A6E8C8969796989699CAE0D4E6969AE8C0969BE8C5E8C7969CC7B9B7E3969DE8C9969EBFDDE8D2969F96A0E8D796A1E8D5BCDCBCCFE8DB96A296A396A496A596A696A796A896A9E8DE96AAE8DAB1FA96AB96AC96AD96AE96AF96B096B196B296B396B4B0D8C4B3B8CCC6E2C8BEC8E196B596B696B7E8CFE8D4E8D696B8B9F1E8D8D7F596B9C4FB96BAE8DC96BB96BCB2E996BD96BE96BFE8D196C096C1BCED96C296C3BFC2E8CDD6F996C4C1F8B2F196C596C696C796C896C996CA96CB96CCE8DF96CDCAC1E8D996CE96CF96D096D1D5A496D2B1EAD5BBE8CEE8D0B6B0E8D396D3E8DDC0B896D4CAF796D5CBA896D696D7C6DCC0F596D896D996DA96DB96DCE8E996DD96DE96DFD0A396E096E196E296E396E496E596E6E8F2D6EA96E796E896E996EA96EB96EC96EDE8E0E8E196EE96EF96F0D1F9BACBB8F996F196F2B8F1D4D4E8EF96F3E8EEE8ECB9F0CCD2E8E6CEA6BFF296F4B0B8E8F1E8F096F5D7C096F6E8E496F7CDA9C9A396F8BBB8BDDBE8EA96F996FA96FB96FC96FD96FE9740974197429743E8E2E8E3E8E5B5B5E8E7C7C5E8EBE8EDBDB0D7AE9744E8F897459746974797489749974A974B974CE8F5974DCDB0E8F6974E974F9750975197529753975497559756C1BA9757E8E89758C3B7B0F09759975A975B975C975D975E975F9760E8F4976197629763E8F7976497659766B9A3976797689769976A976B976C976D976E976F9770C9D2977197729773C3CECEE0C0E69774977597769777CBF39778CCDDD0B59779977ACAE1977BE8F3977C977D977E9780978197829783978497859786BCEC9787E8F997889789978A978B978C978DC3DE978EC6E5978FB9F79790979197929793B0F497949795D7D897969797BCAC9798C5EF9799979A979B979C979DCCC4979E979FE9A697A097A197A297A397A497A597A697A797A897A9C9AD97AAE9A2C0E297AB97AC97ADBFC397AE97AF97B0E8FEB9D797B1E8FB97B297B397B497B5E9A497B697B797B8D2CE97B997BA97BB97BC97BDE9A397BED6B2D7B597BFE9A797C0BDB797C197C297C397C497C597C697C797C897C997CA97CB97CCE8FCE8FD97CD97CE97CFE9A197D097D197D297D397D497D597D697D7CDD697D897D9D2AC97DA97DB97DCE9B297DD97DE97DF97E0E9A997E197E297E3B4AA97E4B4BB97E597E6E9AB97E797E897E997EA97EB97EC97ED97EE97EF97F097F197F297F397F497F597F697F7D0A897F897F9E9A597FA97FBB3FE97FC97FDE9ACC0E397FEE9AA98409841E9B998429843E9B89844984598469847E9AE98489849E8FA984A984BE9A8984C984D984E984F9850BFACE9B1E9BA98519852C2A5985398549855E9AF9856B8C59857E9AD9858D3DCE9B4E9B5E9B79859985A985BE9C7985C985D985E985F98609861C0C6E9C598629863E9B098649865E9BBB0F19866986798689869986A986B986C986D986E986FE9BCD5A598709871E9BE9872E9BF987398749875E9C198769877C1F198789879C8B6987A987B987CE9BD987D987E988098819882E9C29883988498859886988798889889988AE9C3988BE9B3988CE9B6988DBBB1988E988F9890E9C0989198929893989498959896BCF7989798989899E9C4E9C6989A989B989C989D989E989F98A098A198A298A398A498A5E9CA98A698A798A898A9E9CE98AA98AB98AC98AD98AE98AF98B098B198B298B3B2DB98B4E9C898B598B698B798B898B998BA98BB98BC98BD98BEB7AE98BF98C098C198C298C398C498C598C698C798C898C998CAE9CBE9CC98CB98CC98CD98CE98CF98D0D5C198D1C4A398D298D398D498D598D698D7E9D898D8BAE198D998DA98DB98DCE9C998DDD3A398DE98DF98E0E9D498E198E298E398E498E598E698E7E9D7E9D098E898E998EA98EB98ECE9CF98ED98EEC7C198EF98F098F198F298F398F498F598F6E9D298F798F898F998FA98FB98FC98FDE9D9B3C898FEE9D399409941994299439944CFF0994599469947E9CD99489949994A994B994C994D994E994F995099519952B3F79953995499559956995799589959E9D6995A995BE9DA995C995D995ECCB4995F99609961CFAD99629963996499659966996799689969996AE9D5996BE9DCE9DB996C996D996E996F9970E9DE99719972997399749975997699779978E9D19979997A997B997C997D997E99809981E9DD9982E9DFC3CA9983998499859986998799889989998A998B998C998D998E998F9990999199929993999499959996999799989999999A999B999C999D999E999F99A099A199A299A399A499A599A699A799A899A999AA99AB99AC99AD99AE99AF99B099B199B299B399B499B599B699B799B899B999BA99BB99BC99BD99BE99BF99C099C199C299C399C499C599C699C799C899C999CA99CB99CC99CD99CE99CF99D099D199D299D399D499D599D699D799D899D999DA99DB99DC99DD99DE99DF99E099E199E299E399E499E599E699E799E899E999EA99EB99EC99ED99EE99EF99F099F199F299F399F499F5C7B7B4CEBBB6D0C0ECA399F699F7C5B799F899F999FA99FB99FC99FD99FE9A409A419A42D3FB9A439A449A459A46ECA49A47ECA5C6DB9A489A499A4ABFEE9A4B9A4C9A4D9A4EECA69A4F9A50ECA7D0AA9A51C7B89A529A53B8E89A549A559A569A579A589A599A5A9A5B9A5C9A5D9A5E9A5FECA89A609A619A629A639A649A659A669A67D6B9D5FDB4CBB2BDCEE4C6E79A689A69CDE19A6A9A6B9A6C9A6D9A6E9A6F9A709A719A729A739A749A759A769A77B4F59A78CBC0BCDF9A799A7A9A7B9A7CE9E2E9E3D1EAE9E59A7DB4F9E9E49A7ED1B3CAE2B2D09A80E9E89A819A829A839A84E9E6E9E79A859A86D6B39A879A889A89E9E9E9EA9A8A9A8B9A8C9A8D9A8EE9EB9A8F9A909A919A929A939A949A959A96E9EC9A979A989A999A9A9A9B9A9C9A9D9A9EECAFC5B9B6CE9A9FD2F39AA09AA19AA29AA39AA49AA59AA6B5EE9AA7BBD9ECB19AA89AA9D2E39AAA9AAB9AAC9AAD9AAECEE39AAFC4B89AB0C3BF9AB19AB2B6BED8B9B1C8B1CFB1D1C5FE9AB3B1D09AB4C3AB9AB59AB69AB79AB89AB9D5B19ABA9ABB9ABC9ABD9ABE9ABF9AC09AC1EBA4BAC19AC29AC39AC4CCBA9AC59AC69AC7EBA59AC8EBA79AC99ACA9ACBEBA89ACC9ACD9ACEEBA69ACF9AD09AD19AD29AD39AD49AD5EBA9EBABEBAA9AD69AD79AD89AD99ADAEBAC9ADBCACFD8B5C3F19ADCC3A5C6F8EBADC4CA9ADDEBAEEBAFEBB0B7D59ADE9ADF9AE0B7FA9AE1EBB1C7E29AE2EBB39AE3BAA4D1F5B0B1EBB2EBB49AE49AE59AE6B5AAC2C8C7E89AE7EBB59AE8CBAEE3DF9AE99AEAD3C09AEB9AEC9AED9AEED9DB9AEF9AF0CDA1D6ADC7F39AF19AF29AF3D9E0BBE39AF4BABAE3E29AF59AF69AF79AF89AF9CFAB9AFA9AFB9AFCE3E0C9C79AFDBAB99AFE9B409B41D1B4E3E1C8EAB9AFBDADB3D8CEDB9B429B43CCC09B449B459B46E3E8E3E9CDF49B479B489B499B4A9B4BCCAD9B4CBCB39B4DE3EA9B4EE3EB9B4F9B50D0DA9B519B529B53C6FBB7DA9B549B55C7DFD2CACED69B56E3E4E3EC9B57C9F2B3C19B589B59E3E79B5A9B5BC6E3E3E59B5C9B5DEDB3E3E69B5E9B5F9B609B61C9B39B62C5E69B639B649B65B9B59B66C3BB9B67E3E3C5BDC1A4C2D9B2D79B68E3EDBBA6C4AD9B69E3F0BEDA9B6A9B6BE3FBE3F5BAD39B6C9B6D9B6E9B6FB7D0D3CD9B70D6CED5D3B9C1D5B4D1D89B719B729B739B74D0B9C7F69B759B769B77C8AAB2B49B78C3DA9B799B7A9B7BE3EE9B7C9B7DE3FCE3EFB7A8E3F7E3F49B7E9B809B81B7BA9B829B83C5A29B84E3F6C5DDB2A8C6FC9B85C4E09B869B87D7A29B88C0E1E3F99B899B8AE3FAE3FDCCA9E3F39B8BD3BE9B8CB1C3EDB4E3F1E3F29B8DE3F8D0BAC6C3D4F3E3FE9B8E9B8FBDE09B909B91E4A79B929B93E4A69B949B959B96D1F3E4A39B97E4A99B989B999B9AC8F79B9B9B9C9B9D9B9ECFB49B9FE4A8E4AEC2E59BA09BA1B6B49BA29BA39BA49BA59BA69BA7BDF29BA8E4A29BA99BAABAE9E4AA9BAB9BACE4AC9BAD9BAEB6FDD6DEE4B29BAFE4AD9BB09BB19BB2E4A19BB3BBEECDDDC7A2C5C99BB49BB5C1F79BB6E4A49BB7C7B3BDACBDBDE4A59BB8D7C7B2E29BB9E4ABBCC3E4AF9BBABBEBE4B0C5A8E4B19BBB9BBC9BBD9BBED5E3BFA39BBFE4BA9BC0E4B79BC1E4BB9BC29BC3E4BD9BC49BC5C6D69BC69BC7BAC6C0CB9BC89BC99BCAB8A1E4B49BCB9BCC9BCD9BCED4A19BCF9BD0BAA3BDFE9BD19BD29BD3E4BC9BD49BD59BD69BD79BD8CDBF9BD99BDAC4F99BDB9BDCCFFBC9E69BDD9BDED3BF9BDFCFD19BE09BE1E4B39BE2E4B8E4B9CCE99BE39BE49BE59BE69BE7CCCE9BE8C0D4E4B5C1B0E4B6CED09BE9BBC1B5D39BEAC8F3BDA7D5C7C9ACB8A2E4CA9BEB9BECE4CCD1C49BED9BEED2BA9BEF9BF0BAAD9BF19BF2BAD49BF39BF49BF59BF69BF79BF8E4C3B5ED9BF99BFA9BFBD7CDE4C0CFFDE4BF9BFC9BFD9BFEC1DCCCCA9C409C419C429C43CAE79C449C459C469C47C4D79C48CCD4E4C89C499C4A9C4BE4C7E4C19C4CE4C4B5AD9C4D9C4ED3D99C4FE4C69C509C519C529C53D2F9B4E39C54BBB49C559C56C9EE9C57B4BE9C589C599C5ABBEC9C5BD1CD9C5CCCEDEDB59C5D9C5E9C5F9C609C619C629C639C64C7E59C659C669C679C68D4A89C69E4CBD7D5E4C29C6ABDA5E4C59C6B9C6CD3E69C6DE4C9C9F89C6E9C6FE4BE9C709C71D3E59C729C73C7FEB6C99C74D4FCB2B3E4D79C759C769C77CEC29C78E4CD9C79CEBC9C7AB8DB9C7B9C7CE4D69C7DBFCA9C7E9C809C81D3CE9C82C3EC9C839C849C859C869C879C889C899C8AC5C8E4D89C8B9C8C9C8D9C8E9C8F9C909C919C92CDC4E4CF9C939C949C959C96E4D4E4D59C97BAFE9C98CFE69C999C9AD5BF9C9B9C9C9C9DE4D29C9E9C9F9CA09CA19CA29CA39CA49CA59CA69CA79CA8E4D09CA99CAAE4CE9CAB9CAC9CAD9CAE9CAF9CB09CB19CB29CB39CB49CB59CB69CB79CB89CB9CDE5CAAA9CBA9CBB9CBCC0A39CBDBDA6E4D39CBE9CBFB8C89CC09CC19CC29CC39CC4E4E7D4B49CC59CC69CC79CC89CC99CCA9CCBE4DB9CCC9CCD9CCEC1EF9CCF9CD0E4E99CD19CD2D2E79CD39CD4E4DF9CD5E4E09CD69CD7CFAA9CD89CD99CDA9CDBCBDD9CDCE4DAE4D19CDDE4E59CDEC8DCE4E39CDF9CE0C4E7E4E29CE1E4E19CE29CE39CE4B3FCE4E89CE59CE69CE79CE8B5E19CE99CEA9CEBD7CC9CEC9CED9CEEE4E69CEFBBAC9CF0D7D2CCCFEBF89CF1E4E49CF29CF3B9F69CF49CF59CF6D6CDE4D9E4DCC2FAE4DE9CF7C2CBC0C4C2D09CF8B1F5CCB29CF99CFA9CFB9CFC9CFD9CFE9D409D419D429D43B5CE9D449D459D469D47E4EF9D489D499D4A9D4B9D4C9D4D9D4E9D4FC6AF9D509D519D52C6E19D539D54E4F59D559D569D579D589D59C2A99D5A9D5B9D5CC0ECD1DDE4EE9D5D9D5E9D5F9D609D619D629D639D649D659D66C4AE9D679D689D69E4ED9D6A9D6B9D6C9D6DE4F6E4F4C2FE9D6EE4DD9D6FE4F09D70CAFE9D71D5C49D729D73E4F19D749D759D769D779D789D799D7AD1FA9D7B9D7C9D7D9D7E9D809D819D82E4EBE4EC9D839D849D85E4F29D86CEAB9D879D889D899D8A9D8B9D8C9D8D9D8E9D8F9D90C5CB9D919D929D93C7B19D94C2BA9D959D969D97E4EA9D989D999D9AC1CA9D9B9D9C9D9D9D9E9D9F9DA0CCB6B3B19DA19DA29DA3E4FB9DA4E4F39DA59DA69DA7E4FA9DA8E4FD9DA9E4FC9DAA9DAB9DAC9DAD9DAE9DAF9DB0B3CE9DB19DB29DB3B3BAE4F79DB49DB5E4F9E4F8C5EC9DB69DB79DB89DB99DBA9DBB9DBC9DBD9DBE9DBF9DC09DC19DC2C0BD9DC39DC49DC59DC6D4E89DC79DC89DC99DCA9DCBE5A29DCC9DCD9DCE9DCF9DD09DD19DD29DD39DD49DD59DD6B0C49DD79DD8E5A49DD99DDAE5A39DDB9DDC9DDD9DDE9DDF9DE0BCA49DE1E5A59DE29DE39DE49DE59DE69DE7E5A19DE89DE99DEA9DEB9DEC9DED9DEEE4FEB1F49DEF9DF09DF19DF29DF39DF49DF59DF69DF79DF89DF9E5A89DFAE5A9E5A69DFB9DFC9DFD9DFE9E409E419E429E439E449E459E469E47E5A7E5AA9E489E499E4A9E4B9E4C9E4D9E4E9E4F9E509E519E529E539E549E559E569E579E589E599E5A9E5B9E5C9E5D9E5E9E5F9E609E619E629E639E649E659E669E679E68C6D99E699E6A9E6B9E6C9E6D9E6E9E6F9E70E5ABE5AD9E719E729E739E749E759E769E77E5AC9E789E799E7A9E7B9E7C9E7D9E7E9E809E819E829E839E849E859E869E879E889E89E5AF9E8A9E8B9E8CE5AE9E8D9E8E9E8F9E909E919E929E939E949E959E969E979E989E999E9A9E9B9E9C9E9D9E9EB9E09E9F9EA0E5B09EA19EA29EA39EA49EA59EA69EA79EA89EA99EAA9EAB9EAC9EAD9EAEE5B19EAF9EB09EB19EB29EB39EB49EB59EB69EB79EB89EB99EBABBF0ECE1C3F09EBBB5C6BBD29EBC9EBD9EBE9EBFC1E9D4EE9EC0BEC49EC19EC29EC3D7C69EC4D4D6B2D3ECBE9EC59EC69EC79EC8EAC19EC99ECA9ECBC2AFB4B69ECC9ECD9ECED1D79ECF9ED09ED1B3B49ED2C8B2BFBBECC09ED39ED4D6CB9ED59ED6ECBFECC19ED79ED89ED99EDA9EDB9EDC9EDD9EDE9EDF9EE09EE19EE29EE3ECC5BEE6CCBFC5DABEBC9EE4ECC69EE5B1FE9EE69EE79EE8ECC4D5A8B5E39EE9ECC2C1B6B3E39EEA9EEBECC3CBB8C0C3CCFE9EEC9EED9EEE9EEFC1D29EF0ECC89EF19EF29EF39EF49EF59EF69EF79EF89EF99EFA9EFB9EFC9EFDBAE6C0D39EFED6F29F409F419F42D1CC9F439F449F459F46BFBE9F47B7B3C9D5ECC7BBE29F48CCCCBDFDC8C89F49CFA99F4A9F4B9F4C9F4D9F4E9F4F9F50CDE99F51C5EB9F529F539F54B7E99F559F569F579F589F599F5A9F5B9F5C9F5D9F5E9F5FD1C9BAB89F609F619F629F639F64ECC99F659F66ECCA9F67BBC0ECCB9F68ECE2B1BAB7D99F699F6A9F6B9F6C9F6D9F6E9F6F9F709F719F729F73BDB99F749F759F769F779F789F799F7A9F7BECCCD1E6ECCD9F7C9F7D9F7E9F80C8BB9F819F829F839F849F859F869F879F889F899F8A9F8B9F8C9F8D9F8EECD19F8F9F909F919F92ECD39F93BBCD9F94BCE59F959F969F979F989F999F9A9F9B9F9C9F9D9F9E9F9F9FA09FA1ECCF9FA2C9B79FA39FA49FA59FA69FA7C3BA9FA8ECE3D5D5ECD09FA99FAA9FAB9FAC9FADD6F39FAE9FAF9FB0ECD2ECCE9FB19FB29FB39FB4ECD49FB5ECD59FB69FB7C9BF9FB89FB99FBA9FBB9FBC9FBDCFA89FBE9FBF9FC09FC19FC2D0DC9FC39FC49FC59FC6D1AC9FC79FC89FC99FCAC8DB9FCB9FCC9FCDECD6CEF59FCE9FCF9FD09FD19FD2CAECECDA9FD39FD49FD59FD69FD79FD89FD9ECD99FDA9FDB9FDCB0BE9FDD9FDE9FDF9FE09FE19FE2ECD79FE3ECD89FE49FE59FE6ECE49FE79FE89FE99FEA9FEB9FEC9FED9FEE9FEFC8BC9FF09FF19FF29FF39FF49FF59FF69FF79FF89FF9C1C79FFA9FFB9FFC9FFD9FFEECDCD1E0A040A041A042A043A044A045A046A047A048A049ECDBA04AA04BA04CA04DD4EFA04EECDDA04FA050A051A052A053A054DBC6A055A056A057A058A059A05AA05BA05CA05DA05EECDEA05FA060A061A062A063A064A065A066A067A068A069A06AB1ACA06BA06CA06DA06EA06FA070A071A072A073A074A075A076A077A078A079A07AA07BA07CA07DA07EA080A081ECDFA082A083A084A085A086A087A088A089A08AA08BECE0A08CD7A6A08DC5C0A08EA08FA090EBBCB0AEA091A092A093BEF4B8B8D2AFB0D6B5F9A094D8B3A095CBACA096E3DDA097A098A099A09AA09BA09CA09DC6ACB0E6A09EA09FA0A0C5C6EBB9A0A1A0A2A0A3A0A4EBBAA0A5A0A6A0A7EBBBA0A8A0A9D1C0A0AAC5A3A0ABEAF2A0ACC4B2A0ADC4B5C0CEA0AEA0AFA0B0EAF3C4C1A0B1CEEFA0B2A0B3A0B4A0B5EAF0EAF4A0B6A0B7C9FCA0B8A0B9C7A3A0BAA0BBA0BCCCD8CEFEA0BDA0BEA0BFEAF5EAF6CFACC0E7A0C0A0C1EAF7A0C2A0C3A0C4A0C5A0C6B6BFEAF8A0C7EAF9A0C8EAFAA0C9A0CAEAFBA0CBA0CCA0CDA0CEA0CFA0D0A0D1A0D2A0D3A0D4A0D5A0D6EAF1A0D7A0D8A0D9A0DAA0DBA0DCA0DDA0DEA0DFA0E0A0E1A0E2C8AEE1EBA0E3B7B8E1ECA0E4A0E5A0E6E1EDA0E7D7B4E1EEE1EFD3CCA0E8A0E9A0EAA0EBA0ECA0EDA0EEE1F1BFF1E1F0B5D2A0EFA0F0A0F1B1B7A0F2A0F3A0F4A0F5E1F3E1F2A0F6BAFCA0F7E1F4A0F8A0F9A0FAA0FBB9B7A0FCBED1A0FDA0FEAA40AA41C4FCAA42BADDBDC6AA43AA44AA45AA46AA47AA48E1F5E1F7AA49AA4AB6C0CFC1CAA8E1F6D5F8D3FCE1F8E1FCE1F9AA4BAA4CE1FAC0EAAA4DE1FEE2A1C0C7AA4EAA4FAA50AA51E1FBAA52E1FDAA53AA54AA55AA56AA57AA58E2A5AA59AA5AAA5BC1D4AA5CAA5DAA5EAA5FE2A3AA60E2A8B2FEE2A2AA61AA62AA63C3CDB2C2E2A7E2A6AA64AA65E2A4E2A9AA66AA67E2ABAA68AA69AA6AD0C9D6EDC3A8E2ACAA6BCFD7AA6CAA6DE2AEAA6EAA6FBAEFAA70AA71E9E0E2ADE2AAAA72AA73AA74AA75BBABD4B3AA76AA77AA78AA79AA7AAA7BAA7CAA7DAA7EAA80AA81AA82AA83E2B0AA84AA85E2AFAA86E9E1AA87AA88AA89AA8AE2B1AA8BAA8CAA8DAA8EAA8FAA90AA91AA92E2B2AA93AA94AA95AA96AA97AA98AA99AA9AAA9BAA9CAA9DE2B3CCA1AA9EE2B4AA9FAAA0AB40AB41AB42AB43AB44AB45AB46AB47AB48AB49AB4AAB4BE2B5AB4CAB4DAB4EAB4FAB50D0FEAB51AB52C2CAAB53D3F1AB54CDF5AB55AB56E7E0AB57AB58E7E1AB59AB5AAB5BAB5CBEC1AB5DAB5EAB5FAB60C2EAAB61AB62AB63E7E4AB64AB65E7E3AB66AB67AB68AB69AB6AAB6BCDE6AB6CC3B5AB6DAB6EE7E2BBB7CFD6AB6FC1E1E7E9AB70AB71AB72E7E8AB73AB74E7F4B2A3AB75AB76AB77AB78E7EAAB79E7E6AB7AAB7BAB7CAB7DAB7EE7ECE7EBC9BAAB80AB81D5E4AB82E7E5B7A9E7E7AB83AB84AB85AB86AB87AB88AB89E7EEAB8AAB8BAB8CAB8DE7F3AB8ED6E9AB8FAB90AB91AB92E7EDAB93E7F2AB94E7F1AB95AB96AB97B0E0AB98AB99AB9AAB9BE7F5AB9CAB9DAB9EAB9FABA0AC40AC41AC42AC43AC44AC45AC46AC47AC48AC49AC4AC7F2AC4BC0C5C0EDAC4CAC4DC1F0E7F0AC4EAC4FAC50AC51E7F6CBF6AC52AC53AC54AC55AC56AC57AC58AC59AC5AE8A2E8A1AC5BAC5CAC5DAC5EAC5FAC60D7C1AC61AC62E7FAE7F9AC63E7FBAC64E7F7AC65E7FEAC66E7FDAC67E7FCAC68AC69C1D5C7D9C5FDC5C3AC6AAC6BAC6CAC6DAC6EC7EDAC6FAC70AC71AC72E8A3AC73AC74AC75AC76AC77AC78AC79AC7AAC7BAC7CAC7DAC7EAC80AC81AC82AC83AC84AC85AC86E8A6AC87E8A5AC88E8A7BAF7E7F8E8A4AC89C8F0C9AAAC8AAC8BAC8CAC8DAC8EAC8FAC90AC91AC92AC93AC94AC95AC96E8A9AC97AC98B9E5AC99AC9AAC9BAC9CAC9DD1FEE8A8AC9EAC9FACA0AD40AD41AD42E8AAAD43E8ADE8AEAD44C1A7AD45AD46AD47E8AFAD48AD49AD4AE8B0AD4BAD4CE8ACAD4DE8B4AD4EAD4FAD50AD51AD52AD53AD54AD55AD56AD57AD58E8ABAD59E8B1AD5AAD5BAD5CAD5DAD5EAD5FAD60AD61E8B5E8B2E8B3AD62AD63AD64AD65AD66AD67AD68AD69AD6AAD6BAD6CAD6DAD6EAD6FAD70AD71E8B7AD72AD73AD74AD75AD76AD77AD78AD79AD7AAD7BAD7CAD7DAD7EAD80AD81AD82AD83AD84AD85AD86AD87AD88AD89E8B6AD8AAD8BAD8CAD8DAD8EAD8FAD90AD91AD92B9CFAD93F0ACAD94F0ADAD95C6B0B0EAC8BFAD96CDDFAD97AD98AD99AD9AAD9BAD9CAD9DCECDEAB1AD9EAD9FADA0AE40EAB2AE41C6BFB4C9AE42AE43AE44AE45AE46AE47AE48EAB3AE49AE4AAE4BAE4CD5E7AE4DAE4EAE4FAE50AE51AE52AE53AE54DDF9AE55EAB4AE56EAB5AE57EAB6AE58AE59AE5AAE5BB8CADFB0C9F5AE5CCCF0AE5DAE5EC9FAAE5FAE60AE61AE62AE63C9FBAE64AE65D3C3CBA6AE66B8A6F0AEB1C2AE67E5B8CCEFD3C9BCD7C9EAAE68B5E7AE69C4D0B5E9AE6AEEAEBBADAE6BAE6CE7DEAE6DEEAFAE6EAE6FAE70AE71B3A9AE72AE73EEB2AE74AE75EEB1BDE7AE76EEB0CEB7AE77AE78AE79AE7AC5CFAE7BAE7CAE7DAE7EC1F4DBCEEEB3D0F3AE80AE81AE82AE83AE84AE85AE86AE87C2D4C6E8AE88AE89AE8AB7ACAE8BAE8CAE8DAE8EAE8FAE90AE91EEB4AE92B3EBAE93AE94AE95BBFBEEB5AE96AE97AE98AE99AE9AE7DCAE9BAE9CAE9DEEB6AE9EAE9FBDAEAEA0AF40AF41AF42F1E2AF43AF44AF45CAE8AF46D2C9F0DAAF47F0DBAF48F0DCC1C6AF49B8EDBECEAF4AAF4BF0DEAF4CC5B1F0DDD1F1AF4DF0E0B0CCBDEAAF4EAF4FAF50AF51AF52D2DFF0DFAF53B4AFB7E8F0E6F0E5C6A3F0E1F0E2B4C3AF54AF55F0E3D5EEAF56AF57CCDBBED2BCB2AF58AF59AF5AF0E8F0E7F0E4B2A1AF5BD6A2D3B8BEB7C8ACAF5CAF5DF0EAAF5EAF5FAF60AF61D1F7AF62D6CCBADBF0E9AF63B6BBAF64AF65CDB4AF66AF67C6A6AF68AF69AF6AC1A1F0EBF0EEAF6BF0EDF0F0F0ECAF6CBBBEF0EFAF6DAF6EAF6FAF70CCB5F0F2AF71AF72B3D5AF73AF74AF75AF76B1D4AF77AF78F0F3AF79AF7AF0F4F0F6B4E1AF7BF0F1AF7CF0F7AF7DAF7EAF80AF81F0FAAF82F0F8AF83AF84AF85F0F5AF86AF87AF88AF89F0FDAF8AF0F9F0FCF0FEAF8BF1A1AF8CAF8DAF8ECEC1F1A4AF8FF1A3AF90C1F6F0FBCADDAF91AF92B4F1B1F1CCB1AF93F1A6AF94AF95F1A7AF96AF97F1ACD5CEF1A9AF98AF99C8B3AF9AAF9BAF9CF1A2AF9DF1ABF1A8F1A5AF9EAF9FF1AAAFA0B040B041B042B043B044B045B046B0A9F1ADB047B048B049B04AB04BB04CF1AFB04DF1B1B04EB04FB050B051B052F1B0B053F1AEB054B055B056B057D1A2B058B059B05AB05BB05CB05DB05EF1B2B05FB060B061F1B3B062B063B064B065B066B067B068B069B9EFB06AB06BB5C7B06CB0D7B0D9B06DB06EB06FD4EDB070B5C4B071BDD4BBCAF0A7B072B073B8DEB074B075F0A8B076B077B0A8B078F0A9B079B07ACDEEB07BB07CF0AAB07DB07EB080B081B082B083B084B085B086B087F0ABB088B089B08AB08BB08CB08DB08EB08FB090C6A4B091B092D6E5F1E4B093F1E5B094B095B096B097B098B099B09AB09BB09CB09DC3F3B09EB09FD3DBB0A0B140D6D1C5E8B141D3AFB142D2E6B143B144EEC1B0BBD5B5D1CEBCE0BAD0B145BFF8B146B8C7B5C1C5CCB147B148CAA2B149B14AB14BC3CBB14CB14DB14EB14FB150EEC2B151B152B153B154B155B156B157B158C4BFB6A2B159EDECC3A4B15AD6B1B15BB15CB15DCFE0EDEFB15EB15FC5CEB160B6DCB161B162CAA1B163B164EDEDB165B166EDF0EDF1C3BCB167BFB4B168EDEEB169B16AB16BB16CB16DB16EB16FB170B171B172B173EDF4EDF2B174B175B176B177D5E6C3DFB178EDF3B179B17AB17BEDF6B17CD5A3D1A3B17DB17EB180EDF5B181C3D0B182B183B184B185B186EDF7BFF4BEECEDF8B187CCF7B188D1DBB189B18AB18BD7C5D5F6B18CEDFCB18DB18EB18FEDFBB190B191B192B193B194B195B196B197EDF9EDFAB198B199B19AB19BB19CB19DB19EB19FEDFDBEA6B1A0B240B241B242B243CBAFEEA1B6BDB244EEA2C4C0B245EDFEB246B247BDDEB2C7B248B249B24AB24BB24CB24DB24EB24FB250B251B252B253B6C3B254B255B256EEA5D8BAEEA3EEA6B257B258B259C3E9B3F2B25AB25BB25CB25DB25EB25FEEA7EEA4CFB9B260B261EEA8C2F7B262B263B264B265B266B267B268B269B26AB26BB26CB26DEEA9EEAAB26EDEABB26FB270C6B3B271C7C6B272D6F5B5C9B273CBB2B274B275B276EEABB277B278CDABB279EEACB27AB27BB27CB27DB27ED5B0B280EEADB281F6C4B282B283B284B285B286B287B288B289B28AB28BB28CB28DB28EDBC7B28FB290B291B292B293B294B295B296B297B4A3B298B299B29AC3ACF1E6B29BB29CB29DB29EB29FCAB8D2D3B2A0D6AAB340EFF2B341BED8B342BDC3EFF3B6CCB0ABB343B344B345B346CAAFB347B348EDB6B349EDB7B34AB34BB34CB34DCEF9B7AFBFF3EDB8C2EBC9B0B34EB34FB350B351B352B353EDB9B354B355C6F6BFB3B356B357B358EDBCC5F8B359D1D0B35AD7A9EDBAEDBBB35BD1E2B35CEDBFEDC0B35DEDC4B35EB35FB360EDC8B361EDC6EDCED5E8B362EDC9B363B364EDC7EDBEB365B366C5E9B367B368B369C6C6B36AB36BC9E9D4D2EDC1EDC2EDC3EDC5B36CC0F9B36DB4A1B36EB36FB370B371B9E8B372EDD0B373B374B375B376EDD1B377EDCAB378EDCFB379CEF8B37AB37BCBB6EDCCEDCDB37CB37DB37EB380B381CFF5B382B383B384B385B386B387B388B389B38AB38BB38CB38DEDD2C1F2D3B2EDCBC8B7B38EB38FB390B391B392B393B394B395BCEFB396B397B398B399C5F0B39AB39BB39CB39DB39EB39FB3A0B440B441B442EDD6B443B5EFB444B445C2B5B0ADCBE9B446B447B1AEB448EDD4B449B44AB44BCDEBB5E2B44CEDD5EDD3EDD7B44DB44EB5FAB44FEDD8B450EDD9B451EDDCB452B1CCB453B454B455B456B457B458B459B45AC5F6BCEEEDDACCBCB2EAB45BB45CB45DB45EEDDBB45FB460B461B462C4EBB463B464B4C5B465B466B467B0F5B468B469B46AEDDFC0DAB4E8B46BB46CB46DB46EC5CDB46FB470B471EDDDBFC4B472B473B474EDDEB475B476B477B478B479B47AB47BB47CB47DB47EB480B481B482B483C4A5B484B485B486EDE0B487B488B489B48AB48BEDE1B48CEDE3B48DB48EC1D7B48FB490BBC7B491B492B493B494B495B496BDB8B497B498B499EDE2B49AB49BB49CB49DB49EB49FB4A0B540B541B542B543B544B545EDE4B546B547B548B549B54AB54BB54CB54DB54EB54FEDE6B550B551B552B553B554EDE5B555B556B557B558B559B55AB55BB55CB55DB55EB55FB560B561B562B563EDE7B564B565B566B567B568CABEECEAC0F1B569C9E7B56AECEBC6EEB56BB56CB56DB56EECECB56FC6EDECEDB570B571B572B573B574B575B576B577B578ECF0B579B57AD7E6ECF3B57BB57CECF1ECEEECEFD7A3C9F1CBEEECF4B57DECF2B57EB580CFE9B581ECF6C6B1B582B583B584B585BCC0B586ECF5B587B588B589B58AB58BB58CB58DB5BBBBF6B58EECF7B58FB590B591B592B593D9F7BDFBB594B595C2BBECF8B596B597B598B599ECF9B59AB59BB59CB59DB8A3B59EB59FB5A0B640B641B642B643B644B645B646ECFAB647B648B649B64AB64BB64CB64DB64EB64FB650B651B652ECFBB653B654B655B656B657B658B659B65AB65BB65CB65DECFCB65EB65FB660B661B662D3EDD8AEC0EBB663C7DDBACCB664D0E3CBBDB665CDBAB666B667B8D1B668B669B1FCB66AC7EFB66BD6D6B66CB66DB66EBFC6C3EBB66FB670EFF5B671B672C3D8B673B674B675B676B677B678D7E2B679B67AB67BEFF7B3D3B67CC7D8D1EDB67DD6C8B67EEFF8B680EFF6B681BBFDB3C6B682B683B684B685B686B687B688BDD5B689B68AD2C6B68BBBE0B68CB68DCFA1B68EEFFCEFFBB68FB690EFF9B691B692B693B694B3CCB695C9D4CBB0B696B697B698B699B69AEFFEB69BB69CB0DEB69DB69ED6C9B69FB6A0B740EFFDB741B3EDB742B743F6D5B744B745B746B747B748B749B74AB74BB74CB74DB74EB74FB750B751B752CEC8B753B754B755F0A2B756F0A1B757B5BEBCDABBFCB758B8E5B759B75AB75BB75CB75DB75EC4C2B75FB760B761B762B763B764B765B766B767B768F0A3B769B76AB76BB76CB76DCBEBB76EB76FB770B771B772B773B774B775B776B777B778B779B77AB77BB77CB77DB77EB780B781B782B783B784B785B786F0A6B787B788B789D1A8B78ABEBFC7EEF1B6F1B7BFD5B78BB78CB78DB78EB4A9F1B8CDBBB78FC7D4D5ADB790F1B9B791F1BAB792B793B794B795C7CFB796B797B798D2A4D6CFB799B79AF1BBBDD1B4B0BEBDB79BB79CB79DB4DCCED1B79EBFDFF1BDB79FB7A0B840B841BFFAF1BCB842F1BFB843B844B845F1BEF1C0B846B847B848B849B84AF1C1B84BB84CB84DB84EB84FB850B851B852B853B854B855C1FEB856B857B858B859B85AB85BB85CB85DB85EB85FB860C1A2B861B862B863B864B865B866B867B868B869B86ACAFAB86BB86CD5BEB86DB86EB86FB870BEBABEB9D5C2B871B872BFA2B873CDAFF1B5B874B875B876B877B878B879BDDFB87AB6CBB87BB87CB87DB87EB880B881B882B883B884D6F1F3C3B885B886F3C4B887B8CDB888B889B88AF3C6F3C7B88BB0CAB88CF3C5B88DF3C9CBF1B88EB88FB890F3CBB891D0A6B892B893B1CAF3C8B894B895B896F3CFB897B5D1B898B899F3D7B89AF3D2B89BB89CB89DF3D4F3D3B7FBB89EB1BFB89FF3CEF3CAB5DAB8A0F3D0B940B941F3D1B942F3D5B943B944B945B946F3CDB947BCE3B948C1FDB949F3D6B94AB94BB94CB94DB94EB94FF3DAB950F3CCB951B5C8B952BDEEF3DCB953B954B7A4BFF0D6FECDB2B955B4F0B956B2DFB957F3D8B958F3D9C9B8B959F3DDB95AB95BF3DEB95CF3E1B95DB95EB95FB960B961B962B963B964B965B966B967F3DFB968B969F3E3F3E2B96AB96BF3DBB96CBFEAB96DB3EFB96EF3E0B96FB970C7A9B971BCF2B972B973B974B975F3EBB976B977B978B979B97AB97BB97CB9BFB97DB97EF3E4B980B981B982B2ADBBFEB983CBE3B984B985B986B987F3EDF3E9B988B989B98AB9DCF3EEB98BB98CB98DF3E5F3E6F3EAC2E1F3ECF3EFF3E8BCFDB98EB98FB990CFE4B991B992F3F0B993B994B995F3E7B996B997B998B999B99AB99BB99CB99DF3F2B99EB99FB9A0BA40D7ADC6AABA41BA42BA43BA44F3F3BA45BA46BA47BA48F3F1BA49C2A8BA4ABA4BBA4CBA4DBA4EB8DDF3F5BA4FBA50F3F4BA51BA52BA53B4DBBA54BA55BA56F3F6F3F7BA57BA58BA59F3F8BA5ABA5BBA5CC0BABA5DBA5EC0E9BA5FBA60BA61BA62BA63C5F1BA64BA65BA66BA67F3FBBA68F3FABA69BA6ABA6BBA6CBA6DBA6EBA6FBA70B4D8BA71BA72BA73F3FEF3F9BA74BA75F3FCBA76BA77BA78BA79BA7ABA7BF3FDBA7CBA7DBA7EBA80BA81BA82BA83BA84F4A1BA85BA86BA87BA88BA89BA8AF4A3BBC9BA8BBA8CF4A2BA8DBA8EBA8FBA90BA91BA92BA93BA94BA95BA96BA97BA98BA99F4A4BA9ABA9BBA9CBA9DBA9EBA9FB2BEF4A6F4A5BAA0BB40BB41BB42BB43BB44BB45BB46BB47BB48BB49BCAEBB4ABB4BBB4CBB4DBB4EBB4FBB50BB51BB52BB53BB54BB55BB56BB57BB58BB59BB5ABB5BBB5CBB5DBB5EBB5FBB60BB61BB62BB63BB64BB65BB66BB67BB68BB69BB6ABB6BBB6CBB6DBB6EC3D7D9E1BB6FBB70BB71BB72BB73BB74C0E0F4CCD7D1BB75BB76BB77BB78BB79BB7ABB7BBB7CBB7DBB7EBB80B7DBBB81BB82BB83BB84BB85BB86BB87F4CEC1A3BB88BB89C6C9BB8AB4D6D5B3BB8BBB8CBB8DF4D0F4CFF4D1CBDABB8EBB8FF4D2BB90D4C1D6E0BB91BB92BB93BB94B7E0BB95BB96BB97C1B8BB98BB99C1BBF4D3BEACBB9ABB9BBB9CBB9DBB9EB4E2BB9FBBA0F4D4F4D5BEABBC40BC41F4D6BC42BC43BC44F4DBBC45F4D7F4DABC46BAFDBC47F4D8F4D9BC48BC49BC4ABC4BBC4CBC4DBC4EB8E2CCC7F4DCBC4FB2DABC50BC51C3D3BC52BC53D4E3BFB7BC54BC55BC56BC57BC58BC59BC5AF4DDBC5BBC5CBC5DBC5EBC5FBC60C5B4BC61BC62BC63BC64BC65BC66BC67BC68F4E9BC69BC6ACFB5BC6BBC6CBC6DBC6EBC6FBC70BC71BC72BC73BC74BC75BC76BC77BC78CEC9BC79BC7ABC7BBC7CBC7DBC7EBC80BC81BC82BC83BC84BC85BC86BC87BC88BC89BC8ABC8BBC8CBC8DBC8ECBD8BC8FCBF7BC90BC91BC92BC93BDF4BC94BC95BC96D7CFBC97BC98BC99C0DBBC9ABC9BBC9CBC9DBC9EBC9FBCA0BD40BD41BD42BD43BD44BD45BD46BD47BD48BD49BD4ABD4BBD4CBD4DBD4EBD4FBD50BD51BD52BD53BD54BD55BD56BD57BD58BD59BD5ABD5BBD5CBD5DBD5EBD5FBD60BD61BD62BD63BD64BD65BD66BD67BD68BD69BD6ABD6BBD6CBD6DBD6EBD6FBD70BD71BD72BD73BD74BD75BD76D0F5BD77BD78BD79BD7ABD7BBD7CBD7DBD7EF4EABD80BD81BD82BD83BD84BD85BD86BD87BD88BD89BD8ABD8BBD8CBD8DBD8EBD8FBD90BD91BD92BD93BD94BD95BD96BD97BD98BD99BD9ABD9BBD9CBD9DBD9EBD9FBDA0BE40BE41BE42BE43BE44BE45BE46BE47BE48BE49BE4ABE4BBE4CF4EBBE4DBE4EBE4FBE50BE51BE52BE53F4ECBE54BE55BE56BE57BE58BE59BE5ABE5BBE5CBE5DBE5EBE5FBE60BE61BE62BE63BE64BE65BE66BE67BE68BE69BE6ABE6BBE6CBE6DBE6EBE6FBE70BE71BE72BE73BE74BE75BE76BE77BE78BE79BE7ABE7BBE7CBE7DBE7EBE80BE81BE82BE83BE84BE85BE86BE87BE88BE89BE8ABE8BBE8CBE8DBE8EBE8FBE90BE91BE92BE93BE94BE95BE96BE97BE98BE99BE9ABE9BBE9CBE9DBE9EBE9FBEA0BF40BF41BF42BF43BF44BF45BF46BF47BF48BF49BF4ABF4BBF4CBF4DBF4EBF4FBF50BF51BF52BF53BF54BF55BF56BF57BF58BF59BF5ABF5BBF5CBF5DBF5EBF5FBF60BF61BF62BF63BF64BF65BF66BF67BF68BF69BF6ABF6BBF6CBF6DBF6EBF6FBF70BF71BF72BF73BF74BF75BF76BF77BF78BF79BF7ABF7BBF7CBF7DBF7EBF80F7E3BF81BF82BF83BF84BF85B7B1BF86BF87BF88BF89BF8AF4EDBF8BBF8CBF8DBF8EBF8FBF90BF91BF92BF93BF94BF95BF96BF97BF98BF99BF9ABF9BBF9CBF9DBF9EBF9FBFA0C040C041C042C043C044C045C046C047C048C049C04AC04BC04CC04DC04EC04FC050C051C052C053C054C055C056C057C058C059C05AC05BC05CC05DC05EC05FC060C061C062C063D7EBC064C065C066C067C068C069C06AC06BC06CC06DC06EC06FC070C071C072C073C074C075C076C077C078C079C07AC07BF4EEC07CC07DC07EE6F9BEC0E6FABAECE6FBCFCBE6FCD4BCBCB6E6FDE6FEBCCDC8D2CEB3E7A1C080B4BFE7A2C9B4B8D9C4C9C081D7DDC2DAB7D7D6BDCEC6B7C4C082C083C5A6E7A3CFDFE7A4E7A5E7A6C1B7D7E9C9F0CFB8D6AFD6D5E7A7B0EDE7A8E7A9C9DCD2EFBEADE7AAB0F3C8DEBDE1E7ABC8C6C084E7ACBBE6B8F8D1A4E7ADC2E7BEF8BDCACDB3E7AEE7AFBEEED0E5C085CBE7CCD0BCCCE7B0BCA8D0F7E7B1C086D0F8E7B2E7B3B4C2E7B4E7B5C9FECEACC3E0E7B7B1C1B3F1C087E7B8E7B9D7DBD5C0E7BAC2CCD7BAE7BBE7BCE7BDBCEAC3E5C0C2E7BEE7BFBCA9C088E7C0E7C1E7B6B6D0E7C2C089E7C3E7C4BBBAB5DEC2C6B1E0E7C5D4B5E7C6B8BFE7C8E7C7B7ECC08AE7C9B2F8E7CAE7CBE7CCE7CDE7CEE7CFE7D0D3A7CBF5E7D1E7D2E7D3E7D4C9C9E7D5E7D6E7D7E7D8E7D9BDC9E7DAF3BEC08BB8D7C08CC8B1C08DC08EC08FC090C091C092C093F3BFC094F3C0F3C1C095C096C097C098C099C09AC09BC09CC09DC09EB9DECDF8C09FC0A0D8E8BAB1C140C2DEEEB7C141B7A3C142C143C144C145EEB9C146EEB8B0D5C147C148C149C14AC14BEEBBD5D6D7EFC14CC14DC14ED6C3C14FC150EEBDCAF0C151EEBCC152C153C154C155EEBEC156C157C158C159EEC0C15AC15BEEBFC15CC15DC15EC15FC160C161C162C163D1F2C164C7BCC165C3C0C166C167C168C169C16AB8E1C16BC16CC16DC16EC16FC1E7C170C171F4C6D0DFF4C7C172CFDBC173C174C8BAC175C176F4C8C177C178C179C17AC17BC17CC17DF4C9F4CAC17EF4CBC180C181C182C183C184D9FAB8FEC185C186E5F1D3F0C187F4E0C188CECCC189C18AC18BB3E1C18CC18DC18EC18FF1B4C190D2EEC191F4E1C192C193C194C195C196CFE8F4E2C197C198C7CCC199C19AC19BC19CC19DC19EB5D4B4E4F4E4C19FC1A0C240F4E3F4E5C241C242F4E6C243C244C245C246F4E7C247BAB2B0BFC248F4E8C249C24AC24BC24CC24DC24EC24FB7ADD2EDC250C251C252D2ABC0CFC253BFBCEBA3D5DFEAC8C254C255C256C257F1F3B6F8CBA3C258C259C4CDC25AF1E7C25BF1E8B8FBF1E9BAC4D4C5B0D2C25CC25DF1EAC25EC25FC260F1EBC261F1ECC262C263F1EDF1EEF1EFF1F1F1F0C5D5C264C265C266C267C268C269F1F2C26AB6FAC26BF1F4D2AEDEC7CBCAC26CC26DB3DCC26EB5A2C26FB9A2C270C271C4F4F1F5C272C273F1F6C274C275C276C1C4C1FBD6B0F1F7C277C278C279C27AF1F8C27BC1AAC27CC27DC27EC6B8C280BEDBC281C282C283C284C285C286C287C288C289C28AC28BC28CC28DC28EF1F9B4CFC28FC290C291C292C293C294F1FAC295C296C297C298C299C29AC29BC29CC29DC29EC29FC2A0C340EDB2EDB1C341C342CBE0D2DEC343CBC1D5D8C344C8E2C345C0DFBCA1C346C347C348C349C34AC34BEBC1C34CC34DD0A4C34ED6E2C34FB6C7B8D8EBC0B8CEC350EBBFB3A6B9C9D6ABC351B7F4B7CAC352C353C354BCE7B7BEEBC6C355EBC7B0B9BFCFC356EBC5D3FDC357EBC8C358C359EBC9C35AC35BB7CEC35CEBC2EBC4C9F6D6D7D5CDD0B2EBCFCEB8EBD0C35DB5A8C35EC35FC360C361C362B1B3EBD2CCA5C363C364C365C366C367C368C369C5D6EBD3C36AEBD1C5DFEBCECAA4EBD5B0FBC36BC36CBAFAC36DC36ED8B7F1E3C36FEBCAEBCBEBCCEBCDEBD6E6C0EBD9C370BFE8D2C8EBD7EBDCB8ECEBD8C371BDBAC372D0D8C373B0B7C374EBDDC4DCC375C376C377C378D6ACC379C37AC37BB4E0C37CC37DC2F6BCB9C37EC380EBDAEBDBD4E0C6EAC4D4EBDFC5A7D9F5C381B2B1C382EBE4C383BDC5C384C385C386EBE2C387C388C389C38AC38BC38CC38DC38EC38FC390C391C392C393EBE3C394C395B8ACC396CDD1EBE5C397C398C399EBE1C39AC1B3C39BC39CC39DC39EC39FC6A2C3A0C440C441C442C443C444C445CCF3C446EBE6C447C0B0D2B8EBE7C448C449C44AB8AFB8ADC44BEBE8C7BBCDF3C44CC44DC44EEBEAEBEBC44FC450C451C452C453EBEDC454C455C456C457D0C8C458EBF2C459EBEEC45AC45BC45CEBF1C8F9C45DD1FCEBECC45EC45FEBE9C460C461C462C463B8B9CFD9C4E5EBEFEBF0CCDACDC8B0F2C464EBF6C465C466C467C468C469EBF5C46AB2B2C46BC46CC46DC46EB8E0C46FEBF7C470C471C472C473C474C475B1ECC476C477CCC5C4A4CFA5C478C479C47AC47BC47CEBF9C47DC47EECA2C480C5F2C481EBFAC482C483C484C485C486C487C488C489C9C5C48AC48BC48CC48DC48EC48FE2DFEBFEC490C491C492C493CDCEECA1B1DBD3B7C494C495D2DCC496C497C498EBFDC499EBFBC49AC49BC49CC49DC49EC49FC4A0C540C541C542C543C544C545C546C547C548C549C54AC54BC54CC54DC54EB3BCC54FC550C551EAB0C552C553D7D4C554F4ABB3F4C555C556C557C558C559D6C1D6C2C55AC55BC55CC55DC55EC55FD5E9BECAC560F4A7C561D2A8F4A8F4A9C562F4AABECBD3DFC563C564C565C566C567C9E0C9E1C568C569F3C2C56ACAE6C56BCCF2C56CC56DC56EC56FC570C571E2B6CBB4C572CEE8D6DBC573F4ADF4AEF4AFC574C575C576C577F4B2C578BABDF4B3B0E3F4B0C579F4B1BDA2B2D5C57AF4B6F4B7B6E6B2B0CFCFF4B4B4ACC57BF4B5C57CC57DF4B8C57EC580C581C582C583F4B9C584C585CDA7C586F4BAC587F4BBC588C589C58AF4BCC58BC58CC58DC58EC58FC590C591C592CBD2C593F4BDC594C595C596C597F4BEC598C599C59AC59BC59CC59DC59EC59FF4BFC5A0C640C641C642C643F4DEC1BCBCE8C644C9ABD1DEE5F5C645C646C647C648DCB3D2D5C649C64ADCB4B0ACDCB5C64BC64CBDDAC64DDCB9C64EC64FC650D8C2C651DCB7D3F3C652C9D6DCBADCB6C653DCBBC3A2C654C655C656C657DCBCDCC5DCBDC658C659CEDFD6A5C65ADCCFC65BDCCDC65CC65DDCD2BDE6C2ABC65EDCB8DCCBDCCEDCBEB7D2B0C5DCC7D0BEDCC1BBA8C65FB7BCDCCCC660C661DCC6DCBFC7DBC662C663C664D1BFDCC0C665C666DCCAC667C668DCD0C669C66ACEADDCC2C66BDCC3DCC8DCC9B2D4DCD1CBD5C66CD4B7DCDBDCDFCCA6DCE6C66DC3E7DCDCC66EC66FBFC1DCD9C670B0FAB9B6DCE5DCD3C671DCC4DCD6C8F4BFE0C672C673C674C675C9BBC676C677C678B1BDC679D3A2C67AC67BDCDAC67CC67DDCD5C67EC6BBC680DCDEC681C682C683C684C685D7C2C3AFB7B6C7D1C3A9DCE2DCD8DCEBDCD4C686C687DCDDC688BEA5DCD7C689DCE0C68AC68BDCE3DCE4C68CDCF8C68DC68EDCE1DDA2DCE7C68FC690C691C692C693C694C695C696C697C698BCEBB4C4C699C69AC3A3B2E7DCFAC69BDCF2C69CDCEFC69DDCFCDCEED2F0B2E8C69EC8D7C8E3DCFBC69FDCEDC6A0C740C741DCF7C742C743DCF5C744C745BEA3DCF4C746B2DDC747C748C749C74AC74BDCF3BCF6DCE8BBC4C74CC0F3C74DC74EC74FC750C751BCD4DCE9DCEAC752DCF1DCF6DCF9B5B4C753C8D9BBE7DCFEDCFDD3ABDDA1DDA3DDA5D2F1DDA4DDA6DDA7D2A9C754C755C756C757C758C759C75ABAC9DDA9C75BC75CDDB6DDB1DDB4C75DC75EC75FC760C761C762C763DDB0C6CEC764C765C0F2C766C767C768C769C9AFC76AC76BC76CDCECDDAEC76DC76EC76FC770DDB7C771C772DCF0DDAFC773DDB8C774DDACC775C776C777C778C779C77AC77BDDB9DDB3DDADC4AAC77CC77DC77EC780DDA8C0B3C1ABDDAADDABC781DDB2BBF1DDB5D3A8DDBAC782DDBBC3A7C783C784DDD2DDBCC785C786C787DDD1C788B9BDC789C78ABED5C78BBEFAC78CC78DBACAC78EC78FC790C791DDCAC792DDC5C793DDBFC794C795C796B2CBDDC3C797DDCBB2A4DDD5C798C799C79ADDBEC79BC79CC79DC6D0DDD0C79EC79FC7A0C840C841DDD4C1E2B7C6C842C843C844C845C846DDCEDDCFC847C848C849DDC4C84AC84BC84CDDBDC84DDDCDCCD1C84EDDC9C84FC850C851C852DDC2C3C8C6BCCEAEDDCCC853DDC8C854C855C856C857C858C859DDC1C85AC85BC85CDDC6C2DCC85DC85EC85FC860C861C862D3A9D3AADDD3CFF4C8F8C863C864C865C866C867C868C869C86ADDE6C86BC86CC86DC86EC86FC870DDC7C871C872C873DDE0C2E4C874C875C876C877C878C879C87AC87BDDE1C87CC87DC87EC880C881C882C883C884C885C886DDD7C887C888C889C88AC88BD6F8C88CDDD9DDD8B8F0DDD6C88DC88EC88FC890C6CFC891B6ADC892C893C894C895C896DDE2C897BAF9D4E1DDE7C898C899C89AB4D0C89BDDDAC89CBFFBDDE3C89DDDDFC89EDDDDC89FC8A0C940C941C942C943C944B5D9C945C946C947C948DDDBDDDCDDDEC949BDAFDDE4C94ADDE5C94BC94CC94DC94EC94FC950C951C952DDF5C953C3C9C954C955CBE2C956C957C958C959DDF2C95AC95BC95CC95DC95EC95FC960C961C962C963C964C965C966D8E1C967C968C6D1C969DDF4C96AC96BC96CD5F4DDF3DDF0C96DC96EDDECC96FDDEFC970DDE8C971C972D0EEC973C974C975C976C8D8DDEEC977C978DDE9C979C97ADDEACBF2C97BDDEDC97CC97DB1CDC97EC980C981C982C983C984C0B6C985BCBBDDF1C986C987DDF7C988DDF6DDEBC989C98AC98BC98CC98DC5EEC98EC98FC990DDFBC991C992C993C994C995C996C997C998C999C99AC99BDEA4C99CC99DDEA3C99EC99FC9A0CA40CA41CA42CA43CA44CA45CA46CA47CA48DDF8CA49CA4ACA4BCA4CC3EFCA4DC2FBCA4ECA4FCA50D5E1CA51CA52CEB5CA53CA54CA55CA56DDFDCA57B2CCCA58CA59CA5ACA5BCA5CCA5DCA5ECA5FCA60C4E8CADFCA61CA62CA63CA64CA65CA66CA67CA68CA69CA6AC7BEDDFADDFCDDFEDEA2B0AAB1CECA6BCA6CCA6DCA6ECA6FDEACCA70CA71CA72CA73DEA6BDB6C8EFCA74CA75CA76CA77CA78CA79CA7ACA7BCA7CCA7DCA7EDEA1CA80CA81DEA5CA82CA83CA84CA85DEA9CA86CA87CA88CA89CA8ADEA8CA8BCA8CCA8DDEA7CA8ECA8FCA90CA91CA92CA93CA94CA95CA96DEADCA97D4CCCA98CA99CA9ACA9BDEB3DEAADEAECA9CCA9DC0D9CA9ECA9FCAA0CB40CB41B1A1DEB6CB42DEB1CB43CB44CB45CB46CB47CB48CB49DEB2CB4ACB4BCB4CCB4DCB4ECB4FCB50CB51CB52CB53CB54D1A6DEB5CB55CB56CB57CB58CB59CB5ACB5BDEAFCB5CCB5DCB5EDEB0CB5FD0BDCB60CB61CB62DEB4CAEDDEB9CB63CB64CB65CB66CB67CB68DEB8CB69DEB7CB6ACB6BCB6CCB6DCB6ECB6FCB70DEBBCB71CB72CB73CB74CB75CB76CB77BDE5CB78CB79CB7ACB7BCB7CB2D8C3EACB7DCB7EDEBACB80C5BACB81CB82CB83CB84CB85CB86DEBCCB87CB88CB89CB8ACB8BCB8CCB8DCCD9CB8ECB8FCB90CB91B7AACB92CB93CB94CB95CB96CB97CB98CB99CB9ACB9BCB9CCB9DCB9ECB9FCBA0CC40CC41D4E5CC42CC43CC44DEBDCC45CC46CC47CC48CC49DEBFCC4ACC4BCC4CCC4DCC4ECC4FCC50CC51CC52CC53CC54C4A2CC55CC56CC57CC58DEC1CC59CC5ACC5BCC5CCC5DCC5ECC5FCC60CC61CC62CC63CC64CC65CC66CC67CC68DEBECC69DEC0CC6ACC6BCC6CCC6DCC6ECC6FCC70CC71CC72CC73CC74CC75CC76CC77D5BACC78CC79CC7ADEC2CC7BCC7CCC7DCC7ECC80CC81CC82CC83CC84CC85CC86CC87CC88CC89CC8ACC8BF2AEBBA2C2B2C5B0C2C7CC8CCC8DF2AFCC8ECC8FCC90CC91CC92D0E9CC93CC94CC95D3DDCC96CC97CC98EBBDCC99CC9ACC9BCC9CCC9DCC9ECC9FCCA0B3E6F2B0CD40F2B1CD41CD42CAADCD43CD44CD45CD46CD47CD48CD49BAE7F2B3F2B5F2B4CBE4CFBAF2B2CAB4D2CFC2ECCD4ACD4BCD4CCD4DCD4ECD4FCD50CEC3F2B8B0F6F2B7CD51CD52CD53CD54CD55F2BECD56B2CFCD57CD58CD59CD5ACD5BCD5CD1C1F2BACD5DCD5ECD5FCD60CD61F2BCD4E9CD62CD63F2BBF2B6F2BFF2BDCD64F2B9CD65CD66F2C7F2C4F2C6CD67CD68F2CAF2C2F2C0CD69CD6ACD6BF2C5CD6CCD6DCD6ECD6FCD70D6FBCD71CD72CD73F2C1CD74C7F9C9DFCD75F2C8B9C6B5B0CD76CD77F2C3F2C9F2D0F2D6CD78CD79BBD7CD7ACD7BCD7CF2D5CDDCCD7DD6EBCD7ECD80F2D2F2D4CD81CD82CD83CD84B8F2CD85CD86CD87CD88F2CBCD89CD8ACD8BF2CEC2F9CD8CD5DDF2CCF2CDF2CFF2D3CD8DCD8ECD8FF2D9D3BCCD90CD91CD92CD93B6EACD94CAF1CD95B7E4F2D7CD96CD97CD98F2D8F2DAF2DDF2DBCD99CD9AF2DCCD9BCD9CCD9DCD9ED1D1F2D1CD9FCDC9CDA0CECFD6A9CE40F2E3CE41C3DBCE42F2E0CE43CE44C0AFF2ECF2DECE45F2E1CE46CE47CE48F2E8CE49CE4ACE4BCE4CF2E2CE4DCE4EF2E7CE4FCE50F2E6CE51CE52F2E9CE53CE54CE55F2DFCE56CE57F2E4F2EACE58CE59CE5ACE5BCE5CCE5DCE5ED3ACF2E5B2F5CE5FCE60F2F2CE61D0ABCE62CE63CE64CE65F2F5CE66CE67CE68BBC8CE69F2F9CE6ACE6BCE6CCE6DCE6ECE6FF2F0CE70CE71F2F6F2F8F2FACE72CE73CE74CE75CE76CE77CE78CE79F2F3CE7AF2F1CE7BCE7CCE7DBAFBCE7EB5FBCE80CE81CE82CE83F2EFF2F7F2EDF2EECE84CE85CE86F2EBF3A6CE87F3A3CE88CE89F3A2CE8ACE8BF2F4CE8CC8DACE8DCE8ECE8FCE90CE91F2FBCE92CE93CE94F3A5CE95CE96CE97CE98CE99CE9ACE9BC3F8CE9CCE9DCE9ECE9FCEA0CF40CF41CF42F2FDCF43CF44F3A7F3A9F3A4CF45F2FCCF46CF47CF48F3ABCF49F3AACF4ACF4BCF4CCF4DC2DDCF4ECF4FF3AECF50CF51F3B0CF52CF53CF54CF55CF56F3A1CF57CF58CF59F3B1F3ACCF5ACF5BCF5CCF5DCF5EF3AFF2FEF3ADCF5FCF60CF61CF62CF63CF64CF65F3B2CF66CF67CF68CF69F3B4CF6ACF6BCF6CCF6DF3A8CF6ECF6FCF70CF71F3B3CF72CF73CF74F3B5CF75CF76CF77CF78CF79CF7ACF7BCF7CCF7DCF7ED0B7CF80CF81CF82CF83F3B8CF84CF85CF86CF87D9F9CF88CF89CF8ACF8BCF8CCF8DF3B9CF8ECF8FCF90CF91CF92CF93CF94CF95F3B7CF96C8E4F3B6CF97CF98CF99CF9AF3BACF9BCF9CCF9DCF9ECF9FF3BBB4C0CFA0D040D041D042D043D044D045D046D047D048D049D04AD04BD04CD04DEEC3D04ED04FD050D051D052D053F3BCD054D055F3BDD056D057D058D1AAD059D05AD05BF4ACD0C6D05CD05DD05ED05FD060D061D0D0D1DCD062D063D064D065D066D067CFCED068D069BDD6D06AD1C3D06BD06CD06DD06ED06FD070D071BAE2E1E9D2C2F1C2B2B9D072D073B1EDF1C3D074C9C0B3C4D075D9F2D076CBA5D077F1C4D078D079D07AD07BD6D4D07CD07DD07ED080D081F1C5F4C0F1C6D082D4ACF1C7D083B0C0F4C1D084D085F4C2D086D087B4FCD088C5DBD089D08AD08BD08CCCBBD08DD08ED08FD0E4D090D091D092D093D094CDE0D095D096D097D098D099F1C8D09AD9F3D09BD09CD09DD09ED09FD0A0B1BBD140CFAED141D142D143B8A4D144D145D146D147D148F1CAD149D14AD14BD14CF1CBD14DD14ED14FD150B2C3C1D1D151D152D7B0F1C9D153D154F1CCD155D156D157D158F1CED159D15AD15BD9F6D15CD2E1D4A3D15DD15EF4C3C8B9D15FD160D161D162D163F4C4D164D165F1CDF1CFBFE3F1D0D166D167F1D4D168D169D16AD16BD16CD16DD16EF1D6F1D1D16FC9D1C5E1D170D171D172C2E3B9FCD173D174F1D3D175F1D5D176D177D178B9D3D179D17AD17BD17CD17DD17ED180F1DBD181D182D183D184D185BAD6D186B0FDF1D9D187D188D189D18AD18BF1D8F1D2F1DAD18CD18DD18ED18FD190F1D7D191D192D193C8ECD194D195D196D197CDCAF1DDD198D199D19AD19BE5BDD19CD19DD19EF1DCD19FF1DED1A0D240D241D242D243D244D245D246D247D248F1DFD249D24ACFE5D24BD24CD24DD24ED24FD250D251D252D253D254D255D256D257D258D259D25AD25BD25CD25DD25ED25FD260D261D262D263F4C5BDF3D264D265D266D267D268D269F1E0D26AD26BD26CD26DD26ED26FD270D271D272D273D274D275D276D277D278D279D27AD27BD27CD27DF1E1D27ED280D281CEF7D282D2AAD283F1FBD284D285B8B2D286D287D288D289D28AD28BD28CD28DD28ED28FD290D291D292D293D294D295D296D297D298D299D29AD29BD29CD29DD29ED29FD2A0D340D341D342D343D344D345D346D347D348D349D34AD34BD34CD34DD34ED34FD350D351D352D353D354D355D356D357D358D359D35AD35BD35CD35DD35EBCFBB9DBD35FB9E6C3D9CAD3EAE8C0C0BEF5EAE9EAEAEAEBD360EAECEAEDEAEEEAEFBDC7D361D362D363F5FBD364D365D366F5FDD367F5FED368F5FCD369D36AD36BD36CBDE2D36DF6A1B4A5D36ED36FD370D371F6A2D372D373D374F6A3D375D376D377ECB2D378D379D37AD37BD37CD37DD37ED380D381D382D383D384D1D4D385D386D387D388D389D38AD9EAD38BD38CD38DD38ED38FD390D391D392D393D394D395D396D397D398D399D39AD39BD39CD39DD39ED39FD3A0D440D441D442D443D444D445D446D447D448D449D44AD44BD44CD44DD44ED44FD450D451D452D453D454D455D456D457D458D459D45AD45BD45CD45DD45ED45FF6A4D460D461D462D463D464D465D466D467D468EEBAD469D46AD46BD46CD46DD46ED46FD470D471D472D473D474D475D476D477D478D479D47AD47BD47CD47DD47ED480D481D482D483D484D485D486D487D488D489D48AD48BD48CD48DD48ED48FD490D491D492D493D494D495D496D497D498D499D5B2D49AD49BD49CD49DD49ED49FD4A0D540D541D542D543D544D545D546D547D3FECCDCD548D549D54AD54BD54CD54DD54ED54FCAC4D550D551D552D553D554D555D556D557D558D559D55AD55BD55CD55DD55ED55FD560D561D562D563D564D565D566D567D568D569D56AD56BD56CD56DD56ED56FD570D571D572D573D574D575D576D577D578D579D57AD57BD57CD57DD57ED580D581D582D583D584D585D586D587D588D589D58AD58BD58CD58DD58ED58FD590D591D592D593D594D595D596D597D598D599D59AD59BD59CD59DD59ED59FD5A0D640D641D642D643D644D645D646D647D648D649D64AD64BD64CD64DD64ED64FD650D651D652D653D654D655D656D657D658D659D65AD65BD65CD65DD65ED65FD660D661D662E5C0D663D664D665D666D667D668D669D66AD66BD66CD66DD66ED66FD670D671D672D673D674D675D676D677D678D679D67AD67BD67CD67DD67ED680D681F6A5D682D683D684D685D686D687D688D689D68AD68BD68CD68DD68ED68FD690D691D692D693D694D695D696D697D698D699D69AD69BD69CD69DD69ED69FD6A0D740D741D742D743D744D745D746D747D748D749D74AD74BD74CD74DD74ED74FD750D751D752D753D754D755D756D757D758D759D75AD75BD75CD75DD75ED75FBEAFD760D761D762D763D764C6A9D765D766D767D768D769D76AD76BD76CD76DD76ED76FD770D771D772D773D774D775D776D777D778D779D77AD77BD77CD77DD77ED780D781D782D783D784D785D786D787D788D789D78AD78BD78CD78DD78ED78FD790D791D792D793D794D795D796D797D798DAA5BCC6B6A9B8BCC8CFBCA5DAA6DAA7CCD6C8C3DAA8C6FDD799D1B5D2E9D1B6BCC7D79ABDB2BBE4DAA9DAAAD1C8DAABD0EDB6EFC2DBD79BCBCFB7EDC9E8B7C3BEF7D6A4DAACDAADC6C0D7E7CAB6D79CD5A9CBDFD5EFDAAED6DFB4CADAB0DAAFD79DD2EBDAB1DAB2DAB3CAD4DAB4CAABDAB5DAB6B3CFD6EFDAB7BBB0B5AEDAB8DAB9B9EED1AFD2E8DABAB8C3CFEAB2EFDABBDABCD79EBDEBCEDCD3EFDABDCEF3DABED3D5BBE5DABFCBB5CBD0DAC0C7EBD6EEDAC1C5B5B6C1DAC2B7CCBFCEDAC3DAC4CBADDAC5B5F7DAC6C1C2D7BBDAC7CCB8D79FD2EAC4B1DAC8B5FDBBD1DAC9D0B3DACADACBCEBDDACCDACDDACEB2F7DAD1DACFD1E8DAD0C3D5DAD2D7A0DAD3DAD4DAD5D0BBD2A5B0F9DAD6C7ABDAD7BDF7C3A1DAD8DAD9C3FDCCB7DADADADBC0BEC6D7DADCDADDC7B4DADEDADFB9C8D840D841D842D843D844D845D846D847D848BBEDD849D84AD84BD84CB6B9F4F8D84DF4F9D84ED84FCDE3D850D851D852D853D854D855D856D857F5B9D858D859D85AD85BEBE0D85CD85DD85ED85FD860D861CFF3BBBFD862D863D864D865D866D867D868BAC0D4A5D869D86AD86BD86CD86DD86ED86FE1D9D870D871D872D873F5F4B1AAB2F2D874D875D876D877D878D879D87AF5F5D87BD87CF5F7D87DD87ED880BAD1F5F6D881C3B2D882D883D884D885D886D887D888F5F9D889D88AD88BF5F8D88CD88DD88ED88FD890D891D892D893D894D895D896D897D898D899D89AD89BD89CD89DD89ED89FD8A0D940D941D942D943D944D945D946D947D948D949D94AD94BD94CD94DD94ED94FD950D951D952D953D954D955D956D957D958D959D95AD95BD95CD95DD95ED95FD960D961D962D963D964D965D966D967D968D969D96AD96BD96CD96DD96ED96FD970D971D972D973D974D975D976D977D978D979D97AD97BD97CD97DD97ED980D981D982D983D984D985D986D987D988D989D98AD98BD98CD98DD98ED98FD990D991D992D993D994D995D996D997D998D999D99AD99BD99CD99DD99ED99FD9A0DA40DA41DA42DA43DA44DA45DA46DA47DA48DA49DA4ADA4BDA4CDA4DDA4EB1B4D5EAB8BADA4FB9B1B2C6D4F0CFCDB0DCD5CBBBF5D6CAB7B7CCB0C6B6B1E1B9BAD6FCB9E1B7A1BCFAEADAEADBCCF9B9F3EADCB4FBC3B3B7D1BAD8EADDD4F4EADEBCD6BBDFEADFC1DEC2B8D4DFD7CAEAE0EAE1EAE4EAE2EAE3C9DEB8B3B6C4EAE5CAEAC9CDB4CDDA50DA51E2D9C5E2EAE6C0B5DA52D7B8EAE7D7ACC8FCD8D3D8CDD4DEDA53D4F9C9C4D3AEB8D3B3E0DA54C9E2F4F6DA55DA56DA57BAD5DA58F4F7DA59DA5AD7DFDA5BDA5CF4F1B8B0D5D4B8CFC6F0DA5DDA5EDA5FDA60DA61DA62DA63DA64DA65B3C3DA66DA67F4F2B3ACDA68DA69DA6ADA6BD4BDC7F7DA6CDA6DDA6EDA6FDA70F4F4DA71DA72F4F3DA73DA74DA75DA76DA77DA78DA79DA7ADA7BDA7CCCCBDA7DDA7EDA80C8A4DA81DA82DA83DA84DA85DA86DA87DA88DA89DA8ADA8BDA8CDA8DF4F5DA8ED7E3C5BFF5C0DA8FDA90F5BBDA91F5C3DA92F5C2DA93D6BAF5C1DA94DA95DA96D4BEF5C4DA97F5CCDA98DA99DA9ADA9BB0CFB5F8DA9CF5C9F5CADA9DC5DCDA9EDA9FDAA0DB40F5C5F5C6DB41DB42F5C7F5CBDB43BEE0F5C8B8FADB44DB45DB46F5D0F5D3DB47DB48DB49BFE7DB4AB9F2F5BCF5CDDB4BDB4CC2B7DB4DDB4EDB4FCCF8DB50BCF9DB51F5CEF5CFF5D1B6E5F5D2DB52F5D5DB53DB54DB55DB56DB57DB58DB59F5BDDB5ADB5BDB5CF5D4D3BBDB5DB3ECDB5EDB5FCCA4DB60DB61DB62DB63F5D6DB64DB65DB66DB67DB68DB69DB6ADB6BF5D7BEE1F5D8DB6CDB6DCCDFF5DBDB6EDB6FDB70DB71DB72B2C8D7D9DB73F5D9DB74F5DAF5DCDB75F5E2DB76DB77DB78F5E0DB79DB7ADB7BF5DFF5DDDB7CDB7DF5E1DB7EDB80F5DEF5E4F5E5DB81CCE3DB82DB83E5BFB5B8F5E3F5E8CCA3DB84DB85DB86DB87DB88F5E6F5E7DB89DB8ADB8BDB8CDB8DDB8EF5BEDB8FDB90DB91DB92DB93DB94DB95DB96DB97DB98DB99DB9AB1C4DB9BDB9CF5BFDB9DDB9EB5C5B2E4DB9FF5ECF5E9DBA0B6D7DC40F5EDDC41F5EADC42DC43DC44DC45DC46F5EBDC47DC48B4DADC49D4EADC4ADC4BDC4CF5EEDC4DB3F9DC4EDC4FDC50DC51DC52DC53DC54F5EFF5F1DC55DC56DC57F5F0DC58DC59DC5ADC5BDC5CDC5DDC5EF5F2DC5FF5F3DC60DC61DC62DC63DC64DC65DC66DC67DC68DC69DC6ADC6BC9EDB9AADC6CDC6DC7FBDC6EDC6FB6E3DC70DC71DC72DC73DC74DC75DC76CCC9DC77DC78DC79DC7ADC7BDC7CDC7DDC7EDC80DC81DC82DC83DC84DC85DC86DC87DC88DC89DC8AEAA6DC8BDC8CDC8DDC8EDC8FDC90DC91DC92DC93DC94DC95DC96DC97DC98DC99DC9ADC9BDC9CDC9DDC9EDC9FDCA0DD40DD41DD42DD43DD44DD45DD46DD47DD48DD49DD4ADD4BDD4CDD4DDD4EDD4FDD50DD51DD52DD53DD54DD55DD56DD57DD58DD59DD5ADD5BDD5CDD5DDD5EDD5FDD60DD61DD62DD63DD64DD65DD66DD67DD68DD69DD6ADD6BDD6CDD6DDD6EDD6FDD70DD71DD72DD73DD74DD75DD76DD77DD78DD79DD7ADD7BDD7CDD7DDD7EDD80DD81DD82DD83DD84DD85DD86DD87DD88DD89DD8ADD8BDD8CDD8DDD8EDD8FDD90DD91DD92DD93DD94DD95DD96DD97DD98DD99DD9ADD9BDD9CDD9DDD9EDD9FDDA0DE40DE41DE42DE43DE44DE45DE46DE47DE48DE49DE4ADE4BDE4CDE4DDE4EDE4FDE50DE51DE52DE53DE54DE55DE56DE57DE58DE59DE5ADE5BDE5CDE5DDE5EDE5FDE60B3B5D4FEB9ECD0F9DE61E9EDD7AAE9EEC2D6C8EDBAE4E9EFE9F0E9F1D6E1E9F2E9F3E9F5E9F4E9F6E9F7C7E1E9F8D4D8E9F9BDCEDE62E9FAE9FBBDCFE9FCB8A8C1BEE9FDB1B2BBD4B9F5E9FEDE63EAA1EAA2EAA3B7F8BCADDE64CAE4E0CED4AFCFBDD5B7EAA4D5DEEAA5D0C1B9BCDE65B4C7B1D9DE66DE67DE68C0B1DE69DE6ADE6BDE6CB1E6B1E7DE6DB1E8DE6EDE6FDE70DE71B3BDC8E8DE72DE73DE74DE75E5C1DE76DE77B1DFDE78DE79DE7AC1C9B4EFDE7BDE7CC7A8D3D8DE7DC6F9D1B8DE7EB9FDC2F5DE80DE81DE82DE83DE84D3ADDE85D4CBBDFCDE86E5C2B7B5E5C3DE87DE88BBB9D5E2DE89BDF8D4B6CEA5C1ACB3D9DE8ADE8BCCF6DE8CE5C6E5C4E5C8DE8DE5CAE5C7B5CFC6C8DE8EB5FCE5C5DE8FCAF6DE90DE91E5C9DE92DE93DE94C3D4B1C5BCA3DE95DE96DE97D7B7DE98DE99CDCBCBCDCACACCD3E5CCE5CBC4E6DE9ADE9BD1A1D1B7E5CDDE9CE5D0DE9DCDB8D6F0E5CFB5DDDE9ECDBEDE9FE5D1B6BADEA0DF40CDA8B9E4DF41CAC5B3D1CBD9D4ECE5D2B7EADF42DF43DF44E5CEDF45DF46DF47DF48DF49DF4AE5D5B4FEE5D6DF4BDF4CDF4DDF4EDF4FE5D3E5D4DF50D2DDDF51DF52C2DFB1C6DF53D3E2DF54DF55B6DDCBECDF56E5D7DF57DF58D3F6DF59DF5ADF5BDF5CDF5DB1E9DF5EB6F4E5DAE5D8E5D9B5C0DF5FDF60DF61D2C5E5DCDF62DF63E5DEDF64DF65DF66DF67DF68DF69E5DDC7B2DF6AD2A3DF6BDF6CE5DBDF6DDF6EDF6FDF70D4E2D5DADF71DF72DF73DF74DF75E5E0D7F1DF76DF77DF78DF79DF7ADF7BDF7CE5E1DF7DB1DCD1FBDF7EE5E2E5E4DF80DF81DF82DF83E5E3DF84DF85E5E5DF86DF87DF88DF89DF8AD2D8DF8BB5CBDF8CE7DFDF8DDAF5DF8EDAF8DF8FDAF6DF90DAF7DF91DF92DF93DAFAD0CFC4C7DF94DF95B0EEDF96DF97DF98D0B0DF99DAF9DF9AD3CABAAADBA2C7F1DF9BDAFCDAFBC9DBDAFDDF9CDBA1D7DEDAFEC1DADF9DDF9EDBA5DF9FDFA0D3F4E040E041DBA7DBA4E042DBA8E043E044BDBCE045E046E047C0C9DBA3DBA6D6A3E048DBA9E049E04AE04BDBADE04CE04DE04EDBAEDBACBAC2E04FE050E051BFA4DBABE052E053E054DBAAD4C7B2BFE055E056DBAFE057B9F9E058DBB0E059E05AE05BE05CB3BBE05DE05EE05FB5A6E060E061E062E063B6BCDBB1E064E065E066B6F5E067DBB2E068E069E06AE06BE06CE06DE06EE06FE070E071E072E073E074E075E076E077E078E079E07AE07BB1C9E07CE07DE07EE080DBB4E081E082E083DBB3DBB5E084E085E086E087E088E089E08AE08BE08CE08DE08EDBB7E08FDBB6E090E091E092E093E094E095E096DBB8E097E098E099E09AE09BE09CE09DE09EE09FDBB9E0A0E140DBBAE141E142D3CFF4FAC7F5D7C3C5E4F4FCF4FDF4FBE143BEC6E144E145E146E147D0EFE148E149B7D3E14AE14BD4CDCCAAE14CE14DF5A2F5A1BAA8F4FECBD6E14EE14FE150F5A4C0D2E151B3EAE152CDAAF5A5F5A3BDB4F5A8E153F5A9BDCDC3B8BFE1CBE1F5AAE154E155E156F5A6F5A7C4F0E157E158E159E15AE15BF5ACE15CB4BCE15DD7EDE15EB4D7F5ABF5AEE15FE160F5ADF5AFD0D1E161E162E163E164E165E166E167C3D1C8A9E168E169E16AE16BE16CE16DF5B0F5B1E16EE16FE170E171E172E173F5B2E174E175F5B3F5B4F5B5E176E177E178E179F5B7F5B6E17AE17BE17CE17DF5B8E17EE180E181E182E183E184E185E186E187E188E189E18AB2C9E18BD3D4CACDE18CC0EFD6D8D2B0C1BFE18DBDF0E18EE18FE190E191E192E193E194E195E196E197B8AAE198E199E19AE19BE19CE19DE19EE19FE1A0E240E241E242E243E244E245E246E247E248E249E24AE24BE24CE24DE24EE24FE250E251E252E253E254E255E256E257E258E259E25AE25BE25CE25DE25EE25FE260E261E262E263E264E265E266E267E268E269E26AE26BE26CE26DE26EE26FE270E271E272E273E274E275E276E277E278E279E27AE27BE27CE27DE27EE280E281E282E283E284E285E286E287E288E289E28AE28BE28CE28DE28EE28FE290E291E292E293E294E295E296E297E298E299E29AE29BE29CE29DE29EE29FE2A0E340E341E342E343E344E345E346E347E348E349E34AE34BE34CE34DE34EE34FE350E351E352E353E354E355E356E357E358E359E35AE35BE35CE35DE35EE35FE360E361E362E363E364E365E366E367E368E369E36AE36BE36CE36DBCF8E36EE36FE370E371E372E373E374E375E376E377E378E379E37AE37BE37CE37DE37EE380E381E382E383E384E385E386E387F6C6E388E389E38AE38BE38CE38DE38EE38FE390E391E392E393E394E395E396E397E398E399E39AE39BE39CE39DE39EE39FE3A0E440E441E442E443E444E445F6C7E446E447E448E449E44AE44BE44CE44DE44EE44FE450E451E452E453E454E455E456E457E458E459E45AE45BE45CE45DE45EF6C8E45FE460E461E462E463E464E465E466E467E468E469E46AE46BE46CE46DE46EE46FE470E471E472E473E474E475E476E477E478E479E47AE47BE47CE47DE47EE480E481E482E483E484E485E486E487E488E489E48AE48BE48CE48DE48EE48FE490E491E492E493E494E495E496E497E498E499E49AE49BE49CE49DE49EE49FE4A0E540E541E542E543E544E545E546E547E548E549E54AE54BE54CE54DE54EE54FE550E551E552E553E554E555E556E557E558E559E55AE55BE55CE55DE55EE55FE560E561E562E563E564E565E566E567E568E569E56AE56BE56CE56DE56EE56FE570E571E572E573F6C9E574E575E576E577E578E579E57AE57BE57CE57DE57EE580E581E582E583E584E585E586E587E588E589E58AE58BE58CE58DE58EE58FE590E591E592E593E594E595E596E597E598E599E59AE59BE59CE59DE59EE59FF6CAE5A0E640E641E642E643E644E645E646E647E648E649E64AE64BE64CE64DE64EE64FE650E651E652E653E654E655E656E657E658E659E65AE65BE65CE65DE65EE65FE660E661E662F6CCE663E664E665E666E667E668E669E66AE66BE66CE66DE66EE66FE670E671E672E673E674E675E676E677E678E679E67AE67BE67CE67DE67EE680E681E682E683E684E685E686E687E688E689E68AE68BE68CE68DE68EE68FE690E691E692E693E694E695E696E697E698E699E69AE69BE69CE69DF6CBE69EE69FE6A0E740E741E742E743E744E745E746E747F7E9E748E749E74AE74BE74CE74DE74EE74FE750E751E752E753E754E755E756E757E758E759E75AE75BE75CE75DE75EE75FE760E761E762E763E764E765E766E767E768E769E76AE76BE76CE76DE76EE76FE770E771E772E773E774E775E776E777E778E779E77AE77BE77CE77DE77EE780E781E782E783E784E785E786E787E788E789E78AE78BE78CE78DE78EE78FE790E791E792E793E794E795E796E797E798E799E79AE79BE79CE79DE79EE79FE7A0E840E841E842E843E844E845E846E847E848E849E84AE84BE84CE84DE84EF6CDE84FE850E851E852E853E854E855E856E857E858E859E85AE85BE85CE85DE85EE85FE860E861E862E863E864E865E866E867E868E869E86AE86BE86CE86DE86EE86FE870E871E872E873E874E875E876E877E878E879E87AF6CEE87BE87CE87DE87EE880E881E882E883E884E885E886E887E888E889E88AE88BE88CE88DE88EE88FE890E891E892E893E894EEC4EEC5EEC6D5EBB6A4EEC8EEC7EEC9EECAC7A5EECBEECCE895B7B0B5F6EECDEECFE896EECEE897B8C6EED0EED1EED2B6DBB3AED6D3C4C6B1B5B8D6EED3EED4D4BFC7D5BEFBCED9B9B3EED6EED5EED8EED7C5A5EED9EEDAC7AEEEDBC7AFEEDCB2A7EEDDEEDEEEDFEEE0EEE1D7EAEEE2EEE3BCD8EEE4D3CBCCFAB2ACC1E5EEE5C7A6C3ADE898EEE6EEE7EEE8EEE9EEEAEEEBEEECE899EEEDEEEEEEEFE89AE89BEEF0EEF1EEF2EEF4EEF3E89CEEF5CDADC2C1EEF6EEF7EEF8D5A1EEF9CFB3EEFAEEFBE89DEEFCEEFDEFA1EEFEEFA2B8F5C3FAEFA3EFA4BDC2D2BFB2F9EFA5EFA6EFA7D2F8EFA8D6FDEFA9C6CCE89EEFAAEFABC1B4EFACCFFACBF8EFAEEFADB3FAB9F8EFAFEFB0D0E2EFB1EFB2B7E6D0BFEFB3EFB4EFB5C8F1CCE0EFB6EFB7EFB8EFB9EFBAD5E0EFBBB4EDC3AAEFBCE89FEFBDEFBEEFBFE8A0CEFDEFC0C2E0B4B8D7B6BDF5E940CFC7EFC3EFC1EFC2EFC4B6A7BCFCBEE2C3CCEFC5EFC6E941EFC7EFCFEFC8EFC9EFCAC7C2EFF1B6CDEFCBE942EFCCEFCDB6C6C3BEEFCEE943EFD0EFD1EFD2D5F2E944EFD3C4F7E945EFD4C4F8EFD5EFD6B8E4B0F7EFD7EFD8EFD9E946EFDAEFDBEFDCEFDDE947EFDEBEB5EFE1EFDFEFE0E948EFE2EFE3C1CDEFE4EFE5EFE6EFE7EFE8EFE9EFEAEFEBEFECC0D8E949EFEDC1ADEFEEEFEFEFF0E94AE94BCFE2E94CE94DE94EE94FE950E951E952E953B3A4E954E955E956E957E958E959E95AE95BE95CE95DE95EE95FE960E961E962E963E964E965E966E967E968E969E96AE96BE96CE96DE96EE96FE970E971E972E973E974E975E976E977E978E979E97AE97BE97CE97DE97EE980E981E982E983E984E985E986E987E988E989E98AE98BE98CE98DE98EE98FE990E991E992E993E994E995E996E997E998E999E99AE99BE99CE99DE99EE99FE9A0EA40EA41EA42EA43EA44EA45EA46EA47EA48EA49EA4AEA4BEA4CEA4DEA4EEA4FEA50EA51EA52EA53EA54EA55EA56EA57EA58EA59EA5AEA5BC3C5E3C5C9C1E3C6EA5CB1D5CECAB4B3C8F2E3C7CFD0E3C8BCE4E3C9E3CAC3C6D5A2C4D6B9EBCEC5E3CBC3F6E3CCEA5DB7A7B8F3BAD2E3CDE3CED4C4E3CFEA5EE3D0D1CBE3D1E3D2E3D3E3D4D1D6E3D5B2FBC0BBE3D6EA5FC0ABE3D7E3D8E3D9EA60E3DAE3DBEA61B8B7DAE2EA62B6D3EA63DAE4DAE3EA64EA65EA66EA67EA68EA69EA6ADAE6EA6BEA6CEA6DC8EEEA6EEA6FDAE5B7C0D1F4D2F5D5F3BDD7EA70EA71EA72EA73D7E8DAE8DAE7EA74B0A2CDD3EA75DAE9EA76B8BDBCCAC2BDC2A4B3C2DAEAEA77C2AAC4B0BDB5EA78EA79CFDEEA7AEA7BEA7CDAEBC9C2EA7DEA7EEA80EA81EA82B1DDEA83EA84EA85DAECEA86B6B8D4BAEA87B3FDEA88EA89DAEDD4C9CFD5C5E3EA8ADAEEEA8BEA8CEA8DEA8EEA8FDAEFEA90DAF0C1EACCD5CFDDEA91EA92EA93EA94EA95EA96EA97EA98EA99EA9AEA9BEA9CEA9DD3E7C2A1EA9EDAF1EA9FEAA0CBE5EB40DAF2EB41CBE6D2FEEB42EB43EB44B8F4EB45EB46DAF3B0AFCFB6EB47EB48D5CFEB49EB4AEB4BEB4CEB4DEB4EEB4FEB50EB51EB52CBEDEB53EB54EB55EB56EB57EB58EB59EB5ADAF4EB5BEB5CE3C4EB5DEB5EC1A5EB5FEB60F6BFEB61EB62F6C0F6C1C4D1EB63C8B8D1E3EB64EB65D0DBD1C5BCAFB9CDEB66EFF4EB67EB68B4C6D3BAF6C2B3FBEB69EB6AF6C3EB6BEB6CB5F1EB6DEB6EEB6FEB70EB71EB72EB73EB74EB75EB76F6C5EB77EB78EB79EB7AEB7BEB7CEB7DD3EAF6A7D1A9EB7EEB80EB81EB82F6A9EB83EB84EB85F6A8EB86EB87C1E3C0D7EB88B1A2EB89EB8AEB8BEB8CCEEDEB8DD0E8F6ABEB8EEB8FCFF6EB90F6AAD5F0F6ACC3B9EB91EB92EB93BBF4F6AEF6ADEB94EB95EB96C4DEEB97EB98C1D8EB99EB9AEB9BEB9CEB9DCBAAEB9ECFBCEB9FEBA0EC40EC41EC42EC43EC44EC45EC46EC47EC48F6AFEC49EC4AF6B0EC4BEC4CF6B1EC4DC2B6EC4EEC4FEC50EC51EC52B0D4C5F9EC53EC54EC55EC56F6B2EC57EC58EC59EC5AEC5BEC5CEC5DEC5EEC5FEC60EC61EC62EC63EC64EC65EC66EC67EC68EC69C7E0F6A6EC6AEC6BBEB8EC6CEC6DBEB2EC6EB5E5EC6FEC70B7C7EC71BFBFC3D2C3E6EC72EC73D8CCEC74EC75EC76B8EFEC77EC78EC79EC7AEC7BEC7CEC7DEC7EEC80BDF9D1A5EC81B0D0EC82EC83EC84EC85EC86F7B0EC87EC88EC89EC8AEC8BEC8CEC8DEC8EF7B1EC8FEC90EC91EC92EC93D0ACEC94B0B0EC95EC96EC97F7B2F7B3EC98F7B4EC99EC9AEC9BC7CAEC9CEC9DEC9EEC9FECA0ED40ED41BECFED42ED43F7B7ED44ED45ED46ED47ED48ED49ED4AF7B6ED4BB1DEED4CF7B5ED4DED4EF7B8ED4FF7B9ED50ED51ED52ED53ED54ED55ED56ED57ED58ED59ED5AED5BED5CED5DED5EED5FED60ED61ED62ED63ED64ED65ED66ED67ED68ED69ED6AED6BED6CED6DED6EED6FED70ED71ED72ED73ED74ED75ED76ED77ED78ED79ED7AED7BED7CED7DED7EED80ED81CEA4C8CDED82BAABE8B8E8B9E8BABEC2ED83ED84ED85ED86ED87D2F4ED88D4CFC9D8ED89ED8AED8BED8CED8DED8EED8FED90ED91ED92ED93ED94ED95ED96ED97ED98ED99ED9AED9BED9CED9DED9EED9FEDA0EE40EE41EE42EE43EE44EE45EE46EE47EE48EE49EE4AEE4BEE4CEE4DEE4EEE4FEE50EE51EE52EE53EE54EE55EE56EE57EE58EE59EE5AEE5BEE5CEE5DEE5EEE5FEE60EE61EE62EE63EE64EE65EE66EE67EE68EE69EE6AEE6BEE6CEE6DEE6EEE6FEE70EE71EE72EE73EE74EE75EE76EE77EE78EE79EE7AEE7BEE7CEE7DEE7EEE80EE81EE82EE83EE84EE85EE86EE87EE88EE89EE8AEE8BEE8CEE8DEE8EEE8FEE90EE91EE92EE93EE94EE95EE96EE97EE98EE99EE9AEE9BEE9CEE9DEE9EEE9FEEA0EF40EF41EF42EF43EF44EF45D2B3B6A5C7EAF1FCCFEECBB3D0EBE7EFCDE7B9CBB6D9F1FDB0E4CBCCF1FED4A4C2ADC1ECC6C4BEB1F2A1BCD5EF46F2A2F2A3EF47F2A4D2C3C6B5EF48CDC7F2A5EF49D3B1BFC5CCE2EF4AF2A6F2A7D1D5B6EEF2A8F2A9B5DFF2AAF2ABEF4BB2FCF2ACF2ADC8A7EF4CEF4DEF4EEF4FEF50EF51EF52EF53EF54EF55EF56EF57EF58EF59EF5AEF5BEF5CEF5DEF5EEF5FEF60EF61EF62EF63EF64EF65EF66EF67EF68EF69EF6AEF6BEF6CEF6DEF6EEF6FEF70EF71B7E7EF72EF73ECA9ECAAECABEF74ECACEF75EF76C6AEECADECAEEF77EF78EF79B7C9CAB3EF7AEF7BEF7CEF7DEF7EEF80EF81E2B8F7CFEF82EF83EF84EF85EF86EF87EF88EF89EF8AEF8BEF8CEF8DEF8EEF8FEF90EF91EF92EF93EF94EF95EF96EF97EF98EF99EF9AEF9BEF9CEF9DEF9EEF9FEFA0F040F041F042F043F044F7D0F045F046B2CDF047F048F049F04AF04BF04CF04DF04EF04FF050F051F052F053F054F055F056F057F058F059F05AF05BF05CF05DF05EF05FF060F061F062F063F7D1F064F065F066F067F068F069F06AF06BF06CF06DF06EF06FF070F071F072F073F074F075F076F077F078F079F07AF07BF07CF07DF07EF080F081F082F083F084F085F086F087F088F089F7D3F7D2F08AF08BF08CF08DF08EF08FF090F091F092F093F094F095F096E2BBF097BCA2F098E2BCE2BDE2BEE2BFE2C0E2C1B7B9D2FBBDA4CACEB1A5CBC7F099E2C2B6FCC8C4E2C3F09AF09BBDC8F09CB1FDE2C4F09DB6F6E2C5C4D9F09EF09FE2C6CFDAB9DDE2C7C0A1F0A0E2C8B2F6F140E2C9F141C1F3E2CAE2CBC2F8E2CCE2CDE2CECAD7D8B8D9E5CFE3F142F143F144F145F146F147F148F149F14AF14BF14CF0A5F14DF14EDCB0F14FF150F151F152F153F154F155F156F157F158F159F15AF15BF15CF15DF15EF15FF160F161F162F163F164F165F166F167F168F169F16AF16BF16CF16DF16EF16FF170F171F172F173F174F175F176F177F178F179F17AF17BF17CF17DF17EF180F181F182F183F184F185F186F187F188F189F18AF18BF18CF18DF18EF18FF190F191F192F193F194F195F196F197F198F199F19AF19BF19CF19DF19EF19FF1A0F240F241F242F243F244F245F246F247F248F249F24AF24BF24CF24DF24EF24FF250F251F252F253F254F255F256F257F258F259F25AF25BF25CF25DF25EF25FF260F261F262F263F264F265F266F267F268F269F26AF26BF26CF26DF26EF26FF270F271F272F273F274F275F276F277F278F279F27AF27BF27CF27DF27EF280F281F282F283F284F285F286F287F288F289F28AF28BF28CF28DF28EF28FF290F291F292F293F294F295F296F297F298F299F29AF29BF29CF29DF29EF29FF2A0F340F341F342F343F344F345F346F347F348F349F34AF34BF34CF34DF34EF34FF350F351C2EDD4A6CDD4D1B1B3DBC7FDF352B2B5C2BFE6E0CABBE6E1E6E2BED4E6E3D7A4CDD5E6E5BCDDE6E4E6E6E6E7C2EEF353BDBEE6E8C2E6BAA7E6E9F354E6EAB3D2D1E9F355F356BFA5E6EBC6EFE6ECE6EDF357F358E6EEC6ADE6EFF359C9A7E6F0E6F1E6F2E5B9E6F3E6F4C2E2E6F5E6F6D6E8E6F7F35AE6F8B9C7F35BF35CF35DF35EF35FF360F361F7BBF7BAF362F363F364F365F7BEF7BCBAA1F366F7BFF367F7C0F368F369F36AF7C2F7C1F7C4F36BF36CF7C3F36DF36EF36FF370F371F7C5F7C6F372F373F374F375F7C7F376CBE8F377F378F379F37AB8DFF37BF37CF37DF37EF380F381F7D4F382F7D5F383F384F385F386F7D6F387F388F389F38AF7D8F38BF7DAF38CF7D7F38DF38EF38FF390F391F392F393F394F395F7DBF396F7D9F397F398F399F39AF39BF39CF39DD7D7F39EF39FF3A0F440F7DCF441F442F443F444F445F446F7DDF447F448F449F7DEF44AF44BF44CF44DF44EF44FF450F451F452F453F454F7DFF455F456F457F7E0F458F459F45AF45BF45CF45DF45EF45FF460F461F462DBCBF463F464D8AAF465F466F467F468F469F46AF46BF46CE5F7B9EDF46DF46EF46FF470BFFDBBEAF7C9C6C7F7C8F471F7CAF7CCF7CBF472F473F474F7CDF475CEBAF476F7CEF477F478C4A7F479F47AF47BF47CF47DF47EF480F481F482F483F484F485F486F487F488F489F48AF48BF48CF48DF48EF48FF490F491F492F493F494F495F496F497F498F499F49AF49BF49CF49DF49EF49FF4A0F540F541F542F543F544F545F546F547F548F549F54AF54BF54CF54DF54EF54FF550F551F552F553F554F555F556F557F558F559F55AF55BF55CF55DF55EF55FF560F561F562F563F564F565F566F567F568F569F56AF56BF56CF56DF56EF56FF570F571F572F573F574F575F576F577F578F579F57AF57BF57CF57DF57EF580F581F582F583F584F585F586F587F588F589F58AF58BF58CF58DF58EF58FF590F591F592F593F594F595F596F597F598F599F59AF59BF59CF59DF59EF59FF5A0F640F641F642F643F644F645F646F647F648F649F64AF64BF64CF64DF64EF64FF650F651F652F653F654F655F656F657F658F659F65AF65BF65CF65DF65EF65FF660F661F662F663F664F665F666F667F668F669F66AF66BF66CF66DF66EF66FF670F671F672F673F674F675F676F677F678F679F67AF67BF67CF67DF67EF680F681F682F683F684F685F686F687F688F689F68AF68BF68CF68DF68EF68FF690F691F692F693F694F695F696F697F698F699F69AF69BF69CF69DF69EF69FF6A0F740F741F742F743F744F745F746F747F748F749F74AF74BF74CF74DF74EF74FF750F751F752F753F754F755F756F757F758F759F75AF75BF75CF75DF75EF75FF760F761F762F763F764F765F766F767F768F769F76AF76BF76CF76DF76EF76FF770F771F772F773F774F775F776F777F778F779F77AF77BF77CF77DF77EF780D3E3F781F782F6CFF783C2B3F6D0F784F785F6D1F6D2F6D3F6D4F786F787F6D6F788B1ABF6D7F789F6D8F6D9F6DAF78AF6DBF6DCF78BF78CF78DF78EF6DDF6DECFCAF78FF6DFF6E0F6E1F6E2F6E3F6E4C0F0F6E5F6E6F6E7F6E8F6E9F790F6EAF791F6EBF6ECF792F6EDF6EEF6EFF6F0F6F1F6F2F6F3F6F4BEA8F793F6F5F6F6F6F7F6F8F794F795F796F797F798C8FAF6F9F6FAF6FBF6FCF799F79AF6FDF6FEF7A1F7A2F7A3F7A4F7A5F79BF79CF7A6F7A7F7A8B1EEF7A9F7AAF7ABF79DF79EF7ACF7ADC1DBF7AEF79FF7A0F7AFF840F841F842F843F844F845F846F847F848F849F84AF84BF84CF84DF84EF84FF850F851F852F853F854F855F856F857F858F859F85AF85BF85CF85DF85EF85FF860F861F862F863F864F865F866F867F868F869F86AF86BF86CF86DF86EF86FF870F871F872F873F874F875F876F877F878F879F87AF87BF87CF87DF87EF880F881F882F883F884F885F886F887F888F889F88AF88BF88CF88DF88EF88FF890F891F892F893F894F895F896F897F898F899F89AF89BF89CF89DF89EF89FF8A0F940F941F942F943F944F945F946F947F948F949F94AF94BF94CF94DF94EF94FF950F951F952F953F954F955F956F957F958F959F95AF95BF95CF95DF95EF95FF960F961F962F963F964F965F966F967F968F969F96AF96BF96CF96DF96EF96FF970F971F972F973F974F975F976F977F978F979F97AF97BF97CF97DF97EF980F981F982F983F984F985F986F987F988F989F98AF98BF98CF98DF98EF98FF990F991F992F993F994F995F996F997F998F999F99AF99BF99CF99DF99EF99FF9A0FA40FA41FA42FA43FA44FA45FA46FA47FA48FA49FA4AFA4BFA4CFA4DFA4EFA4FFA50FA51FA52FA53FA54FA55FA56FA57FA58FA59FA5AFA5BFA5CFA5DFA5EFA5FFA60FA61FA62FA63FA64FA65FA66FA67FA68FA69FA6AFA6BFA6CFA6DFA6EFA6FFA70FA71FA72FA73FA74FA75FA76FA77FA78FA79FA7AFA7BFA7CFA7DFA7EFA80FA81FA82FA83FA84FA85FA86FA87FA88FA89FA8AFA8BFA8CFA8DFA8EFA8FFA90FA91FA92FA93FA94FA95FA96FA97FA98FA99FA9AFA9BFA9CFA9DFA9EFA9FFAA0FB40FB41FB42FB43FB44FB45FB46FB47FB48FB49FB4AFB4BFB4CFB4DFB4EFB4FFB50FB51FB52FB53FB54FB55FB56FB57FB58FB59FB5AFB5BC4F1F0AFBCA6F0B0C3F9FB5CC5B8D1BBFB5DF0B1F0B2F0B3F0B4F0B5D1BCFB5ED1ECFB5FF0B7F0B6D4A7FB60CDD2F0B8F0BAF0B9F0BBF0BCFB61FB62B8EBF0BDBAE8FB63F0BEF0BFBEE9F0C0B6ECF0C1F0C2F0C3F0C4C8B5F0C5F0C6FB64F0C7C5F4FB65F0C8FB66FB67FB68F0C9FB69F0CAF7BDFB6AF0CBF0CCF0CDFB6BF0CEFB6CFB6DFB6EFB6FF0CFBAD7FB70F0D0F0D1F0D2F0D3F0D4F0D5F0D6F0D8FB71FB72D3A5F0D7FB73F0D9FB74FB75FB76FB77FB78FB79FB7AFB7BFB7CFB7DF5BAC2B9FB7EFB80F7E4FB81FB82FB83FB84F7E5F7E6FB85FB86F7E7FB87FB88FB89FB8AFB8BFB8CF7E8C2B4FB8DFB8EFB8FFB90FB91FB92FB93FB94FB95F7EAFB96F7EBFB97FB98FB99FB9AFB9BFB9CC2F3FB9DFB9EFB9FFBA0FC40FC41FC42FC43FC44FC45FC46FC47FC48F4F0FC49FC4AFC4BF4EFFC4CFC4DC2E9FC4EF7E1F7E2FC4FFC50FC51FC52FC53BBC6FC54FC55FC56FC57D9E4FC58FC59FC5ACAF2C0E8F0A4FC5BBADAFC5CFC5DC7ADFC5EFC5FFC60C4ACFC61FC62F7ECF7EDF7EEFC63F7F0F7EFFC64F7F1FC65FC66F7F4FC67F7F3FC68F7F2F7F5FC69FC6AFC6BFC6CF7F6FC6DFC6EFC6FFC70FC71FC72FC73FC74FC75EDE9FC76EDEAEDEBFC77F6BCFC78FC79FC7AFC7BFC7CFC7DFC7EFC80FC81FC82FC83FC84F6BDFC85F6BEB6A6FC86D8BEFC87FC88B9C4FC89FC8AFC8BD8BBFC8CDCB1FC8DFC8EFC8FFC90FC91FC92CAF3FC93F7F7FC94FC95FC96FC97FC98FC99FC9AFC9BFC9CF7F8FC9DFC9EF7F9FC9FFCA0FD40FD41FD42FD43FD44F7FBFD45F7FAFD46B1C7FD47F7FCF7FDFD48FD49FD4AFD4BFD4CF7FEFD4DFD4EFD4FFD50FD51FD52FD53FD54FD55FD56FD57C6EBECB4FD58FD59FD5AFD5BFD5CFD5DFD5EFD5FFD60FD61FD62FD63FD64FD65FD66FD67FD68FD69FD6AFD6BFD6CFD6DFD6EFD6FFD70FD71FD72FD73FD74FD75FD76FD77FD78FD79FD7AFD7BFD7CFD7DFD7EFD80FD81FD82FD83FD84FD85B3DDF6B3FD86FD87F6B4C1E4F6B5F6B6F6B7F6B8F6B9F6BAC8A3F6BBFD88FD89FD8AFD8BFD8CFD8DFD8EFD8FFD90FD91FD92FD93C1FAB9A8EDE8FD94FD95FD96B9EAD9DFFD97FD98FD99FD9AFD9";
|
|
68
68
|
encodeToGb2312(D) {
|
|
69
69
|
for (var C = "", B = 0; B < D.length; B++) {
|
|
@@ -112,12 +112,12 @@ class AC {
|
|
|
112
112
|
return C;
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
|
-
let P = new
|
|
116
|
-
class
|
|
115
|
+
let P = new rC();
|
|
116
|
+
class a {
|
|
117
117
|
static kOrigin;
|
|
118
118
|
imp;
|
|
119
119
|
constructor(D, C, B) {
|
|
120
|
-
this.imp = new
|
|
120
|
+
this.imp = new i.mxcadassemblyimp.MdGePoint3d(), D instanceof Object ? (this.imp.x = D.x, this.imp.y = D.y, this.imp.z = D.z) : (this.imp.x = D || 0, this.imp.y = C || 0, this.imp.z = B || 0);
|
|
121
121
|
}
|
|
122
122
|
toVector3() {
|
|
123
123
|
return new THREE.Vector3(this.imp.x, this.imp.y, this.imp.z);
|
|
@@ -144,7 +144,7 @@ class u {
|
|
|
144
144
|
return this.imp.isEqualTo(D.imp);
|
|
145
145
|
}
|
|
146
146
|
clone() {
|
|
147
|
-
return new
|
|
147
|
+
return new a(this.imp);
|
|
148
148
|
}
|
|
149
149
|
get x() {
|
|
150
150
|
return this.imp.x;
|
|
@@ -172,7 +172,7 @@ class y {
|
|
|
172
172
|
static kNegateZAxis;
|
|
173
173
|
imp;
|
|
174
174
|
constructor(D, C, B) {
|
|
175
|
-
this.imp = new
|
|
175
|
+
this.imp = new i.mxcadassemblyimp.MdGeVector3d(), D instanceof Object ? (this.imp.x = D.x, this.imp.y = D.y, this.imp.z = D.z) : (this.imp.x = D || 0, this.imp.y = C || 0, this.imp.z = B || 0);
|
|
176
176
|
}
|
|
177
177
|
copy(D) {
|
|
178
178
|
return this.imp.x = D.imp.x, this.imp.y = D.imp.y, this.imp.z = D.imp.z, this;
|
|
@@ -240,7 +240,7 @@ class I {
|
|
|
240
240
|
static kIdentity;
|
|
241
241
|
imp;
|
|
242
242
|
constructor(D) {
|
|
243
|
-
this.imp = new
|
|
243
|
+
this.imp = new i.mxcadassemblyimp.MdGeMatrix3d(), D instanceof Object && this.imp.copy(D);
|
|
244
244
|
}
|
|
245
245
|
copy(D) {
|
|
246
246
|
return this.imp.copy(D.imp), this;
|
|
@@ -294,10 +294,10 @@ class I {
|
|
|
294
294
|
return this.imp.getData(D, C);
|
|
295
295
|
}
|
|
296
296
|
}
|
|
297
|
-
class
|
|
297
|
+
class sC {
|
|
298
298
|
imp;
|
|
299
299
|
constructor(D) {
|
|
300
|
-
this.imp = new
|
|
300
|
+
this.imp = new i.mxcadassemblyimp.MdGeLongArray(), D instanceof Object && this.imp.copy(D);
|
|
301
301
|
}
|
|
302
302
|
copy(D) {
|
|
303
303
|
return this.imp.copy(D.imp), this;
|
|
@@ -315,10 +315,10 @@ class tC {
|
|
|
315
315
|
this.imp.setAt(D, C);
|
|
316
316
|
}
|
|
317
317
|
}
|
|
318
|
-
class
|
|
318
|
+
class LD {
|
|
319
319
|
imp;
|
|
320
320
|
constructor(D) {
|
|
321
|
-
this.imp = new
|
|
321
|
+
this.imp = new i.mxcadassemblyimp.MdGeStringArray(), D instanceof Object && this.imp.copy(D);
|
|
322
322
|
}
|
|
323
323
|
copy(D) {
|
|
324
324
|
return this.imp.copy(D.imp), this;
|
|
@@ -341,10 +341,10 @@ class RD {
|
|
|
341
341
|
D(C ? P.decodeFromGb2312(this.imp.at(F)) : this.imp.at(F), F);
|
|
342
342
|
}
|
|
343
343
|
}
|
|
344
|
-
class
|
|
344
|
+
class nC {
|
|
345
345
|
imp;
|
|
346
346
|
constructor(D) {
|
|
347
|
-
this.imp = new
|
|
347
|
+
this.imp = new i.mxcadassemblyimp.MdGePoint3dArray(), D instanceof Object && this.imp.copy(D);
|
|
348
348
|
}
|
|
349
349
|
copy(D) {
|
|
350
350
|
return this.imp.copy(D.imp), this;
|
|
@@ -356,19 +356,19 @@ class eC {
|
|
|
356
356
|
return this.imp.length();
|
|
357
357
|
}
|
|
358
358
|
at(D) {
|
|
359
|
-
return new
|
|
359
|
+
return new a(this.imp.at(D));
|
|
360
360
|
}
|
|
361
361
|
setAt(D, C) {
|
|
362
362
|
this.imp.setAt(D, C.imp);
|
|
363
363
|
}
|
|
364
364
|
}
|
|
365
|
-
const
|
|
366
|
-
|
|
367
|
-
}),
|
|
368
|
-
class
|
|
365
|
+
const oC = new FinalizationRegistry((E) => {
|
|
366
|
+
i.App.DestroyObject(E);
|
|
367
|
+
}), aC = {};
|
|
368
|
+
class K {
|
|
369
369
|
imp = 0;
|
|
370
370
|
constructor(D) {
|
|
371
|
-
this.imp = D, this.imp &&
|
|
371
|
+
this.imp = D, this.imp && oC.register(this, D, aC);
|
|
372
372
|
}
|
|
373
373
|
getImp() {
|
|
374
374
|
return this.imp;
|
|
@@ -405,27 +405,30 @@ class R {
|
|
|
405
405
|
return this.type != 2 && this.id != 0;
|
|
406
406
|
}
|
|
407
407
|
erase() {
|
|
408
|
-
this.type == 1 ? h.getCurrentDraw().eraseMxEntity(this.id) : this.type == 0 &&
|
|
408
|
+
this.type == 1 ? h.getCurrentDraw().eraseMxEntity(this.id) : this.type == 0 && U.eraseEntity(this.id);
|
|
409
409
|
}
|
|
410
410
|
getMcDbObject() {
|
|
411
|
-
return this.type == 0 ?
|
|
411
|
+
return this.type == 0 ? i.App.ObjectIdToObject(this.id) : null;
|
|
412
412
|
}
|
|
413
413
|
getMcDbEntity() {
|
|
414
|
-
return this.type == 0 &&
|
|
414
|
+
return this.type == 0 && i.App.ObjectIdIsKindOf(this.id, "McDbEntity") ? i.App.ObjectIdToObject(this.id) : null;
|
|
415
|
+
}
|
|
416
|
+
getMcDbCurve() {
|
|
417
|
+
return this.type == 0 && i.App.ObjectIdIsKindOf(this.id, "McDbCurve") ? i.App.ObjectIdToObject(this.id) : null;
|
|
415
418
|
}
|
|
416
419
|
clone() {
|
|
417
420
|
if (this.type == 0) {
|
|
418
|
-
let D =
|
|
421
|
+
let D = i.App.getImp().ObjectIdToMdObject(this.id);
|
|
419
422
|
if (!D)
|
|
420
423
|
return null;
|
|
421
424
|
let C = D.Clone();
|
|
422
|
-
return
|
|
425
|
+
return i.App.DestroyObject(D), i.App.CreateCloneObject(C);
|
|
423
426
|
}
|
|
424
427
|
return null;
|
|
425
428
|
}
|
|
426
429
|
getObjectName() {
|
|
427
430
|
if (this.type == 0)
|
|
428
|
-
return
|
|
431
|
+
return i.App.getImp().ObjectIdToObjectName(this.id);
|
|
429
432
|
if (this.type == 1) {
|
|
430
433
|
let D = h.getCurrentDraw().getMxEntity(this.id);
|
|
431
434
|
if (D)
|
|
@@ -437,7 +440,7 @@ class R {
|
|
|
437
440
|
return this.type == 1 ? h.getCurrentDraw().getMxEntity(this.id) : null;
|
|
438
441
|
}
|
|
439
442
|
}
|
|
440
|
-
class j extends
|
|
443
|
+
class j extends K {
|
|
441
444
|
constructor(D) {
|
|
442
445
|
super(D);
|
|
443
446
|
}
|
|
@@ -449,19 +452,43 @@ class j extends V {
|
|
|
449
452
|
}
|
|
450
453
|
Clone() {
|
|
451
454
|
let D = this.imp.Clone();
|
|
452
|
-
return
|
|
455
|
+
return i.App.CreateCloneObject(D);
|
|
453
456
|
}
|
|
454
457
|
GetHandle() {
|
|
455
458
|
return this.imp.GetHandle();
|
|
456
459
|
}
|
|
457
460
|
GetDatabase() {
|
|
458
|
-
return new
|
|
461
|
+
return new mD(this.imp.GetDatabase());
|
|
459
462
|
}
|
|
460
463
|
GetOwnerID() {
|
|
461
464
|
return this.imp.GetOwnerID();
|
|
462
465
|
}
|
|
463
466
|
}
|
|
464
|
-
|
|
467
|
+
class nD {
|
|
468
|
+
aryVal = [];
|
|
469
|
+
constructor(D) {
|
|
470
|
+
if (D) {
|
|
471
|
+
let C = 0, B = D.length();
|
|
472
|
+
for (; C < B; C++) {
|
|
473
|
+
let F = D.release(C), A = i.App.CreateCloneObject(F);
|
|
474
|
+
A != null && this.aryVal.push(A);
|
|
475
|
+
}
|
|
476
|
+
i.App.DestroyObject(D);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
forEach(D) {
|
|
480
|
+
let C = this.aryVal.length;
|
|
481
|
+
for (let B = 0; B < C; B++)
|
|
482
|
+
D(this.aryVal[B]);
|
|
483
|
+
}
|
|
484
|
+
length() {
|
|
485
|
+
return this.aryVal.length;
|
|
486
|
+
}
|
|
487
|
+
empty() {
|
|
488
|
+
return this.aryVal.length == 0;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
var oD;
|
|
465
492
|
((E) => {
|
|
466
493
|
((D) => {
|
|
467
494
|
D[D.kTextLeft = 0] = "kTextLeft", D[D.kTextCenter = 1] = "kTextCenter", D[D.kTextRight = 2] = "kTextRight", D[D.kTextAlign = 3] = "kTextAlign", D[D.kTextMid = 4] = "kTextMid", D[D.kTextFit = 5] = "kTextFit";
|
|
@@ -472,11 +499,11 @@ var sD;
|
|
|
472
499
|
})(E.AttachmentPoint || (E.AttachmentPoint = {})), ((D) => {
|
|
473
500
|
D[D.kLnWt000 = 0] = "kLnWt000", D[D.kLnWt005 = 5] = "kLnWt005", D[D.kLnWt009 = 9] = "kLnWt009", D[D.kLnWt013 = 13] = "kLnWt013", D[D.kLnWt015 = 15] = "kLnWt015", D[D.kLnWt018 = 18] = "kLnWt018", D[D.kLnWt020 = 20] = "kLnWt020", D[D.kLnWt025 = 25] = "kLnWt025", D[D.kLnWt030 = 30] = "kLnWt030", D[D.kLnWt035 = 35] = "kLnWt035", D[D.kLnWt040 = 40] = "kLnWt040", D[D.kLnWt050 = 50] = "kLnWt050", D[D.kLnWt053 = 53] = "kLnWt053", D[D.kLnWt060 = 60] = "kLnWt060", D[D.kLnWt070 = 70] = "kLnWt070", D[D.kLnWt080 = 80] = "kLnWt080", D[D.kLnWt090 = 90] = "kLnWt090", D[D.kLnWt100 = 100] = "kLnWt100", D[D.kLnWt106 = 106] = "kLnWt106", D[D.kLnWt120 = 120] = "kLnWt120", D[D.kLnWt140 = 140] = "kLnWt140", D[D.kLnWt158 = 158] = "kLnWt158", D[D.kLnWt200 = 200] = "kLnWt200", D[D.kLnWt211 = 211] = "kLnWt211", D[D.kLnWtByLayer = -1] = "kLnWtByLayer", D[D.kLnWtByBlock = -2] = "kLnWtByBlock", D[D.kLnWtByLwDefault = -3] = "kLnWtByLwDefault";
|
|
474
501
|
})(E.LineWeight || (E.LineWeight = {}));
|
|
475
|
-
})(
|
|
476
|
-
class
|
|
502
|
+
})(oD || (oD = {}));
|
|
503
|
+
class H {
|
|
477
504
|
imp;
|
|
478
505
|
constructor(D, C, B) {
|
|
479
|
-
this.imp = new
|
|
506
|
+
this.imp = new i.mxcadassemblyimp.MdCmColor(), D instanceof Object ? (this.imp.red = D.red, this.imp.green = D.green, this.imp.blue = D.blue, this.imp.method = D.method, this.imp.n = D.n, this.imp.colorIndex = D.colorIndex) : typeof D == "number" && typeof C == "number" && typeof B == "number" && this.imp.setRGB(D, C, B);
|
|
480
507
|
}
|
|
481
508
|
getImp() {
|
|
482
509
|
return this.imp;
|
|
@@ -485,7 +512,7 @@ class U {
|
|
|
485
512
|
return this.imp.red = D.imp.red, this.imp.green = D.imp.green, this.imp.blue = D.imp.blue, this.imp.method = D.imp.method, this.imp.n = D.imp.n, this.imp.colorIndex = D.imp.colorIndex, this;
|
|
486
513
|
}
|
|
487
514
|
clone() {
|
|
488
|
-
return new
|
|
515
|
+
return new H(this.imp);
|
|
489
516
|
}
|
|
490
517
|
setColorIndex(D) {
|
|
491
518
|
this.imp.setColorIndex(D);
|
|
@@ -530,9 +557,9 @@ class U {
|
|
|
530
557
|
this.imp.colorIndex = D;
|
|
531
558
|
}
|
|
532
559
|
}
|
|
533
|
-
class
|
|
560
|
+
class uC extends j {
|
|
534
561
|
constructor(D) {
|
|
535
|
-
super(D), D || this.initTempObject(new
|
|
562
|
+
super(D), D || this.initTempObject(new i.mxcadassemblyimp.MdDbLayerTableRecord());
|
|
536
563
|
}
|
|
537
564
|
get name() {
|
|
538
565
|
return this.imp.getName();
|
|
@@ -559,7 +586,7 @@ class sC extends j {
|
|
|
559
586
|
this.imp.setIsLocked(D);
|
|
560
587
|
}
|
|
561
588
|
get color() {
|
|
562
|
-
return new
|
|
589
|
+
return new H(this.imp.color());
|
|
563
590
|
}
|
|
564
591
|
set color(D) {
|
|
565
592
|
this.imp.setColor(D.getImp());
|
|
@@ -577,39 +604,39 @@ class sC extends j {
|
|
|
577
604
|
this.imp.setLineWeight(D);
|
|
578
605
|
}
|
|
579
606
|
}
|
|
580
|
-
class
|
|
607
|
+
class vD extends j {
|
|
581
608
|
constructor(D) {
|
|
582
609
|
super(D);
|
|
583
610
|
}
|
|
584
611
|
}
|
|
585
|
-
class
|
|
612
|
+
class ID extends j {
|
|
586
613
|
constructor(D) {
|
|
587
614
|
super(D);
|
|
588
615
|
}
|
|
589
616
|
}
|
|
590
|
-
class
|
|
617
|
+
class jD extends j {
|
|
591
618
|
constructor(D) {
|
|
592
619
|
super(D);
|
|
593
620
|
}
|
|
594
621
|
}
|
|
595
|
-
class
|
|
622
|
+
class mD extends K {
|
|
596
623
|
constructor(D) {
|
|
597
624
|
super(D);
|
|
598
625
|
}
|
|
599
626
|
GetLayerTable() {
|
|
600
|
-
return new
|
|
627
|
+
return new vD(this.imp.GetLayerTable());
|
|
601
628
|
}
|
|
602
629
|
GetLinetypeTable() {
|
|
603
|
-
return new
|
|
630
|
+
return new ID(this.imp.GetLinetypeTable());
|
|
604
631
|
}
|
|
605
632
|
GetTextStyleTable() {
|
|
606
|
-
return new
|
|
633
|
+
return new jD(this.imp.GetTextStyleTable());
|
|
607
634
|
}
|
|
608
635
|
GetBlockTable() {
|
|
609
|
-
return new
|
|
636
|
+
return new VD(this.imp.GetBlockTable());
|
|
610
637
|
}
|
|
611
638
|
CurrentSpace() {
|
|
612
|
-
return new
|
|
639
|
+
return new ED(this.imp.CurrentSpace());
|
|
613
640
|
}
|
|
614
641
|
GetCurrentlyLineTypeScale() {
|
|
615
642
|
return this.imp.GetCurrentlyLineTypeScale();
|
|
@@ -634,7 +661,7 @@ class lD extends V {
|
|
|
634
661
|
this.imp.SetCurrentlyLayerName(C);
|
|
635
662
|
}
|
|
636
663
|
GetCurrentlyTrueColor() {
|
|
637
|
-
return new
|
|
664
|
+
return new H(this.imp.GetCurrentlyTrueColor());
|
|
638
665
|
}
|
|
639
666
|
GetCurrentlyDrawColor() {
|
|
640
667
|
let D = this.imp.GetCurrentlyDrawColor(), C = new THREE.Color();
|
|
@@ -658,7 +685,7 @@ class lD extends V {
|
|
|
658
685
|
this.imp.SetCurrentlyTextStyle(C);
|
|
659
686
|
}
|
|
660
687
|
}
|
|
661
|
-
class
|
|
688
|
+
class GD extends K {
|
|
662
689
|
constructor(D) {
|
|
663
690
|
super(D);
|
|
664
691
|
}
|
|
@@ -675,9 +702,9 @@ class vD extends V {
|
|
|
675
702
|
return this.imp.step(D, C);
|
|
676
703
|
}
|
|
677
704
|
}
|
|
678
|
-
class
|
|
705
|
+
class ED extends j {
|
|
679
706
|
constructor(D) {
|
|
680
|
-
super(D), D || this.initTempObject(new
|
|
707
|
+
super(D), D || this.initTempObject(new i.mxcadassemblyimp.MdDbBlockTableRecord());
|
|
681
708
|
}
|
|
682
709
|
appendAcDbEntity(D) {
|
|
683
710
|
return new R(
|
|
@@ -687,16 +714,27 @@ class FD extends j {
|
|
|
687
714
|
}
|
|
688
715
|
newIterator(D = !0, C = !0) {
|
|
689
716
|
let B = this.imp.newIterator(D, C);
|
|
690
|
-
return new
|
|
717
|
+
return new GD(B);
|
|
691
718
|
}
|
|
692
719
|
get origin() {
|
|
693
|
-
return new
|
|
720
|
+
return new a(this.imp.origin());
|
|
694
721
|
}
|
|
695
722
|
set origin(D) {
|
|
696
723
|
this.imp.setOrigin(D.imp);
|
|
697
724
|
}
|
|
725
|
+
getBoundingBox() {
|
|
726
|
+
let D = this.imp.getBoundingBox();
|
|
727
|
+
return D.length() < 2 ? { minPt: new a(), maxPt: new a(), ret: !1 } : {
|
|
728
|
+
minPt: new a(D.at(0)),
|
|
729
|
+
maxPt: new a(D.at(1)),
|
|
730
|
+
ret: !0
|
|
731
|
+
};
|
|
732
|
+
}
|
|
733
|
+
invalidBoundingBoxBuffer() {
|
|
734
|
+
this.imp.invalidBoundingBoxBuffer();
|
|
735
|
+
}
|
|
698
736
|
}
|
|
699
|
-
class
|
|
737
|
+
class WD extends K {
|
|
700
738
|
constructor(D) {
|
|
701
739
|
super(D);
|
|
702
740
|
}
|
|
@@ -708,41 +746,41 @@ class ID extends V {
|
|
|
708
746
|
}
|
|
709
747
|
getRecord() {
|
|
710
748
|
let D = this.imp.getRecord();
|
|
711
|
-
return new
|
|
749
|
+
return new ED(D);
|
|
712
750
|
}
|
|
713
751
|
step(D = !0, C = !0) {
|
|
714
752
|
this.imp.start(D, C);
|
|
715
753
|
}
|
|
716
754
|
}
|
|
717
|
-
class
|
|
755
|
+
class VD extends j {
|
|
718
756
|
constructor(D) {
|
|
719
|
-
super(D), D || this.initTempObject(new
|
|
757
|
+
super(D), D || this.initTempObject(new i.mxcadassemblyimp.MdDbBlockTable());
|
|
720
758
|
}
|
|
721
759
|
getAt(D) {
|
|
722
760
|
let C = this.getAt(D);
|
|
723
|
-
return C && new
|
|
761
|
+
return C && new ED(C);
|
|
724
762
|
}
|
|
725
763
|
has(D) {
|
|
726
764
|
return this.imp.has(D);
|
|
727
765
|
}
|
|
728
766
|
newIterator(D = !0, C = !0) {
|
|
729
767
|
let B = this.imp.newIterator(D, C);
|
|
730
|
-
return new
|
|
768
|
+
return new WD(B);
|
|
731
769
|
}
|
|
732
770
|
add(D) {
|
|
733
771
|
return this.imp.add(D.getImp());
|
|
734
772
|
}
|
|
735
773
|
}
|
|
736
|
-
class
|
|
774
|
+
class G extends j {
|
|
737
775
|
constructor(D) {
|
|
738
776
|
super(D);
|
|
739
777
|
}
|
|
740
778
|
explode() {
|
|
741
779
|
let D = this.imp.explode();
|
|
742
|
-
return new
|
|
780
|
+
return new AD(D);
|
|
743
781
|
}
|
|
744
782
|
get trueColor() {
|
|
745
|
-
return new
|
|
783
|
+
return new H(this.imp.TrueColor());
|
|
746
784
|
}
|
|
747
785
|
set trueColor(D) {
|
|
748
786
|
this.imp.SetTrueColor(D.getImp());
|
|
@@ -805,130 +843,130 @@ class W extends j {
|
|
|
805
843
|
let D = this.imp.GetBoundingBox();
|
|
806
844
|
if (D) {
|
|
807
845
|
let C = {
|
|
808
|
-
minPt: new
|
|
809
|
-
maxPt: new
|
|
810
|
-
ret: 0
|
|
846
|
+
minPt: new a(D.AtPoint(0)),
|
|
847
|
+
maxPt: new a(D.AtPoint(1)),
|
|
848
|
+
ret: !0
|
|
811
849
|
};
|
|
812
|
-
return
|
|
850
|
+
return i.App.DestroyObject(D), C;
|
|
813
851
|
} else
|
|
814
|
-
return { minPt: new
|
|
852
|
+
return { minPt: new a(), maxPt: new a(), ret: !1 };
|
|
815
853
|
}
|
|
816
854
|
}
|
|
817
|
-
class
|
|
855
|
+
class V extends G {
|
|
818
856
|
constructor(D) {
|
|
819
857
|
super(D);
|
|
820
858
|
}
|
|
821
859
|
getStartParam() {
|
|
822
|
-
return { val: this.imp.getStartParam(), ret:
|
|
860
|
+
return { val: this.imp.getStartParam(), ret: i.getCallResult() };
|
|
823
861
|
}
|
|
824
862
|
getEndParam() {
|
|
825
|
-
return { val: this.imp.getEndParam(), ret:
|
|
863
|
+
return { val: this.imp.getEndParam(), ret: i.getCallResult() };
|
|
826
864
|
}
|
|
827
865
|
getDistAtParam(D) {
|
|
828
|
-
return { val: this.imp.getDistAtParam(D), ret:
|
|
866
|
+
return { val: this.imp.getDistAtParam(D), ret: i.getCallResult() };
|
|
829
867
|
}
|
|
830
868
|
getParamAtDist(D) {
|
|
831
|
-
return { val: this.imp.getParamAtDist(D), ret:
|
|
869
|
+
return { val: this.imp.getParamAtDist(D), ret: i.getCallResult() };
|
|
832
870
|
}
|
|
833
871
|
getDistAtPoint(D) {
|
|
834
|
-
return { val: this.imp.getDistAtPoint(D.imp), ret:
|
|
872
|
+
return { val: this.imp.getDistAtPoint(D.imp), ret: i.getCallResult() };
|
|
835
873
|
}
|
|
836
874
|
getPointAtDist(D) {
|
|
837
875
|
return {
|
|
838
|
-
val: new
|
|
839
|
-
ret:
|
|
876
|
+
val: new a(this.imp.getPointAtDist(D)),
|
|
877
|
+
ret: i.getCallResult()
|
|
840
878
|
};
|
|
841
879
|
}
|
|
842
880
|
getStartPoint() {
|
|
843
881
|
return {
|
|
844
|
-
val: new
|
|
845
|
-
ret:
|
|
882
|
+
val: new a(this.imp.getStartPoint()),
|
|
883
|
+
ret: i.getCallResult()
|
|
846
884
|
};
|
|
847
885
|
}
|
|
848
886
|
getEndPoint() {
|
|
849
887
|
return {
|
|
850
|
-
val: new
|
|
851
|
-
ret:
|
|
888
|
+
val: new a(this.imp.getStartPoint()),
|
|
889
|
+
ret: i.getCallResult()
|
|
852
890
|
};
|
|
853
891
|
}
|
|
854
892
|
getPointAtParam(D) {
|
|
855
893
|
return {
|
|
856
|
-
val: new
|
|
857
|
-
ret:
|
|
894
|
+
val: new a(this.imp.getPointAtParam(D)),
|
|
895
|
+
ret: i.getCallResult()
|
|
858
896
|
};
|
|
859
897
|
}
|
|
860
898
|
getParamAtPoint(D) {
|
|
861
899
|
return {
|
|
862
900
|
val: this.imp.getParamAtPoint(D.imp),
|
|
863
|
-
ret:
|
|
901
|
+
ret: i.getCallResult()
|
|
864
902
|
};
|
|
865
903
|
}
|
|
866
904
|
getFirstDeriv(D) {
|
|
867
905
|
return {
|
|
868
906
|
val: new y(this.imp.getFirstDeriv(D)),
|
|
869
|
-
ret:
|
|
907
|
+
ret: i.getCallResult()
|
|
870
908
|
};
|
|
871
909
|
}
|
|
872
910
|
getFirstDerivEx(D) {
|
|
873
911
|
return {
|
|
874
912
|
val: new y(this.imp.getFirstDerivEx(D.imp)),
|
|
875
|
-
ret:
|
|
913
|
+
ret: i.getCallResult()
|
|
876
914
|
};
|
|
877
915
|
}
|
|
878
916
|
getClosestPointTo(D, C) {
|
|
879
917
|
return {
|
|
880
|
-
val: new
|
|
881
|
-
ret:
|
|
918
|
+
val: new a(this.imp.getClosestPointTo(D.imp, C)),
|
|
919
|
+
ret: i.getCallResult()
|
|
882
920
|
};
|
|
883
921
|
}
|
|
884
922
|
offsetCurves(D, C) {
|
|
885
923
|
let B = this.imp.offsetCurves(D, C.imp);
|
|
886
|
-
return new
|
|
924
|
+
return new nD(B);
|
|
887
925
|
}
|
|
888
926
|
splitCurves(D) {
|
|
889
927
|
let C = this.imp.splitCurves(D);
|
|
890
|
-
return new
|
|
928
|
+
return new nD(C);
|
|
891
929
|
}
|
|
892
930
|
getArea() {
|
|
893
|
-
return { val: this.imp.getArea(), ret:
|
|
931
|
+
return { val: this.imp.getArea(), ret: i.getCallResult() };
|
|
894
932
|
}
|
|
895
933
|
getSamplePoints(D) {
|
|
896
934
|
let C = this.imp.getSamplePoints(D);
|
|
897
|
-
return new
|
|
935
|
+
return new AD(C);
|
|
898
936
|
}
|
|
899
937
|
getLength() {
|
|
900
|
-
return { val: this.imp.getLength(), ret:
|
|
938
|
+
return { val: this.imp.getLength(), ret: i.getCallResult() };
|
|
901
939
|
}
|
|
902
940
|
}
|
|
903
|
-
class
|
|
941
|
+
class X extends V {
|
|
904
942
|
constructor(D, C, B, F, A, t) {
|
|
905
|
-
D instanceof Object ? D instanceof
|
|
943
|
+
D instanceof Object ? D instanceof a ? (super(), this.initTempObject(new i.mxcadassemblyimp.MdDbLine()), C instanceof a && (this.startPoint = D, this.endPoint = C)) : super(D) : (super(), this.initTempObject(new i.mxcadassemblyimp.MdDbLine()), this.startPoint = new a(D, C, B), this.endPoint = new a(F, A, t));
|
|
906
944
|
}
|
|
907
945
|
get startPoint() {
|
|
908
|
-
return new
|
|
946
|
+
return new a(this.imp.startPoint());
|
|
909
947
|
}
|
|
910
948
|
set startPoint(D) {
|
|
911
949
|
this.imp.setStartPoint(D.imp);
|
|
912
950
|
}
|
|
913
951
|
get endPoint() {
|
|
914
|
-
return new
|
|
952
|
+
return new a(this.imp.endPoint());
|
|
915
953
|
}
|
|
916
954
|
set endPoint(D) {
|
|
917
955
|
this.imp.setEndPoint(D.imp);
|
|
918
956
|
}
|
|
919
957
|
}
|
|
920
|
-
class
|
|
958
|
+
class aD extends G {
|
|
921
959
|
constructor(D) {
|
|
922
|
-
super(D), D || this.initTempObject(new
|
|
960
|
+
super(D), D || this.initTempObject(new i.mxcadassemblyimp.MdDbText());
|
|
923
961
|
}
|
|
924
962
|
get position() {
|
|
925
|
-
return new
|
|
963
|
+
return new a(this.imp.position());
|
|
926
964
|
}
|
|
927
965
|
set position(D) {
|
|
928
966
|
this.imp.setPosition(D.imp);
|
|
929
967
|
}
|
|
930
968
|
get alignmentPoint() {
|
|
931
|
-
return new
|
|
969
|
+
return new a(this.imp.position());
|
|
932
970
|
}
|
|
933
971
|
set alignmentPoint(D) {
|
|
934
972
|
this.imp.setAlignmentPoint(D.imp);
|
|
@@ -976,12 +1014,12 @@ class nD extends W {
|
|
|
976
1014
|
this.imp.setVerticalMode(D);
|
|
977
1015
|
}
|
|
978
1016
|
}
|
|
979
|
-
class
|
|
1017
|
+
class DD extends G {
|
|
980
1018
|
constructor(D) {
|
|
981
|
-
super(D), D || this.initTempObject(new
|
|
1019
|
+
super(D), D || this.initTempObject(new i.mxcadassemblyimp.MdDbMText());
|
|
982
1020
|
}
|
|
983
1021
|
get location() {
|
|
984
|
-
return new
|
|
1022
|
+
return new a(this.imp.location());
|
|
985
1023
|
}
|
|
986
1024
|
set location(D) {
|
|
987
1025
|
this.imp.setLocation(D.imp);
|
|
@@ -1017,15 +1055,15 @@ class CD extends W {
|
|
|
1017
1055
|
this.imp.setContents(P.encodeToGb2312(D));
|
|
1018
1056
|
}
|
|
1019
1057
|
}
|
|
1020
|
-
class
|
|
1058
|
+
class W extends V {
|
|
1021
1059
|
constructor(D, C, B, F) {
|
|
1022
|
-
D instanceof Object ? super(D) : (super(), this.initTempObject(new
|
|
1060
|
+
D instanceof Object ? super(D) : (super(), this.initTempObject(new i.mxcadassemblyimp.MdDbCircle()), typeof D == "number" && (this.imp.setCenter(new a(D, C, B).imp), this.imp.setRadius(F)));
|
|
1023
1061
|
}
|
|
1024
1062
|
setCenter(D, C, B) {
|
|
1025
|
-
this.imp.setCenter(new
|
|
1063
|
+
this.imp.setCenter(new a(D, C, B).imp);
|
|
1026
1064
|
}
|
|
1027
1065
|
get center() {
|
|
1028
|
-
return new
|
|
1066
|
+
return new a(this.imp.center());
|
|
1029
1067
|
}
|
|
1030
1068
|
set center(D) {
|
|
1031
1069
|
this.imp.setCenter(D.imp);
|
|
@@ -1037,9 +1075,9 @@ class G extends _ {
|
|
|
1037
1075
|
this.imp.setRadius(D);
|
|
1038
1076
|
}
|
|
1039
1077
|
}
|
|
1040
|
-
class
|
|
1078
|
+
class CD extends V {
|
|
1041
1079
|
constructor(D) {
|
|
1042
|
-
super(D), D || this.initTempObject(new
|
|
1080
|
+
super(D), D || this.initTempObject(new i.mxcadassemblyimp.MdDbPolyline());
|
|
1043
1081
|
}
|
|
1044
1082
|
get isClosed() {
|
|
1045
1083
|
return this.imp.isClosed();
|
|
@@ -1055,7 +1093,7 @@ class BD extends _ {
|
|
|
1055
1093
|
}
|
|
1056
1094
|
addVertexAt(D, C = 0, B = 0, F = 0, A = 0) {
|
|
1057
1095
|
if (D instanceof THREE.Vector3) {
|
|
1058
|
-
let t = new
|
|
1096
|
+
let t = new i.mxcadassemblyimp.MdGePoint3d();
|
|
1059
1097
|
return t.x = D.x, t.y = D.y, t.z = D.z, this.imp.addVertexAt(A, t, C, B, F);
|
|
1060
1098
|
} else
|
|
1061
1099
|
return this.imp.addVertexAt(A, D.imp, C, B, F);
|
|
@@ -1067,7 +1105,7 @@ class BD extends _ {
|
|
|
1067
1105
|
return this.imp.numVerts();
|
|
1068
1106
|
}
|
|
1069
1107
|
getPointAt(D) {
|
|
1070
|
-
return { val: this.imp.getPointAt(D), ret:
|
|
1108
|
+
return { val: this.imp.getPointAt(D), ret: i.getCallResult() };
|
|
1071
1109
|
}
|
|
1072
1110
|
getBulgeAt(D) {
|
|
1073
1111
|
return this.imp.getBulgeAt(D);
|
|
@@ -1076,7 +1114,7 @@ class BD extends _ {
|
|
|
1076
1114
|
return {
|
|
1077
1115
|
val1: this.imp.getStartWidthsAt(D),
|
|
1078
1116
|
val2: this.imp.getEndWidthsAt(D),
|
|
1079
|
-
ret:
|
|
1117
|
+
ret: i.getCallResult()
|
|
1080
1118
|
};
|
|
1081
1119
|
}
|
|
1082
1120
|
setPointAt(D, C) {
|
|
@@ -1086,9 +1124,9 @@ class BD extends _ {
|
|
|
1086
1124
|
return this.imp.setBulgeAt(D, C);
|
|
1087
1125
|
}
|
|
1088
1126
|
}
|
|
1089
|
-
class
|
|
1127
|
+
class uD extends G {
|
|
1090
1128
|
constructor(D) {
|
|
1091
|
-
super(D), D || this.initTempObject(new
|
|
1129
|
+
super(D), D || this.initTempObject(new i.mxcadassemblyimp.MdDbBlockReference());
|
|
1092
1130
|
}
|
|
1093
1131
|
get blockTableRecordId() {
|
|
1094
1132
|
return new R(this.imp.blockTableRecord(), k.kMxCAD);
|
|
@@ -1097,7 +1135,7 @@ class oD extends W {
|
|
|
1097
1135
|
this.imp.setBlockTableRecordId(D.id);
|
|
1098
1136
|
}
|
|
1099
1137
|
get position() {
|
|
1100
|
-
return new
|
|
1138
|
+
return new a(this.imp.position());
|
|
1101
1139
|
}
|
|
1102
1140
|
set position(D) {
|
|
1103
1141
|
this.imp.setPosition(D.imp);
|
|
@@ -1121,12 +1159,12 @@ class oD extends W {
|
|
|
1121
1159
|
this.imp.setBlockTransform(D.imp);
|
|
1122
1160
|
}
|
|
1123
1161
|
}
|
|
1124
|
-
class
|
|
1162
|
+
class pD extends G {
|
|
1125
1163
|
constructor(D) {
|
|
1126
1164
|
super(D);
|
|
1127
1165
|
}
|
|
1128
1166
|
get textPosition() {
|
|
1129
|
-
return new
|
|
1167
|
+
return new a(this.imp.textPosition());
|
|
1130
1168
|
}
|
|
1131
1169
|
set textPosition(D) {
|
|
1132
1170
|
this.imp.setTextPosition(D.imp);
|
|
@@ -1207,24 +1245,24 @@ class cD extends W {
|
|
|
1207
1245
|
this.imp.SetDimVarObjectId(D, C.id);
|
|
1208
1246
|
}
|
|
1209
1247
|
}
|
|
1210
|
-
class
|
|
1248
|
+
class lD extends pD {
|
|
1211
1249
|
constructor(D) {
|
|
1212
|
-
super(D), D || this.initTempObject(new
|
|
1250
|
+
super(D), D || this.initTempObject(new i.mxcadassemblyimp.MdDbAlignedDimension());
|
|
1213
1251
|
}
|
|
1214
1252
|
get xLine1Point() {
|
|
1215
|
-
return new
|
|
1253
|
+
return new a(this.imp.xLine1Point());
|
|
1216
1254
|
}
|
|
1217
1255
|
set xLine1Point(D) {
|
|
1218
1256
|
this.imp.setXLine1Point(D.imp);
|
|
1219
1257
|
}
|
|
1220
1258
|
get xLine2Point() {
|
|
1221
|
-
return new
|
|
1259
|
+
return new a(this.imp.xLine2Point());
|
|
1222
1260
|
}
|
|
1223
1261
|
set xLine2Point(D) {
|
|
1224
1262
|
this.imp.setXLine2Point(D.imp);
|
|
1225
1263
|
}
|
|
1226
1264
|
get dimLinePoint() {
|
|
1227
|
-
return new
|
|
1265
|
+
return new a(this.imp.dimLinePoint());
|
|
1228
1266
|
}
|
|
1229
1267
|
set dimLinePoint(D) {
|
|
1230
1268
|
this.imp.setDimLinePoint(D.imp);
|
|
@@ -1236,24 +1274,24 @@ class aD extends cD {
|
|
|
1236
1274
|
this.imp.setOblique(D);
|
|
1237
1275
|
}
|
|
1238
1276
|
}
|
|
1239
|
-
class
|
|
1277
|
+
class cD extends pD {
|
|
1240
1278
|
constructor(D) {
|
|
1241
|
-
super(D), D || this.initTempObject(new
|
|
1279
|
+
super(D), D || this.initTempObject(new i.mxcadassemblyimp.MdDbRotatedDimension());
|
|
1242
1280
|
}
|
|
1243
1281
|
get xLine1Point() {
|
|
1244
|
-
return new
|
|
1282
|
+
return new a(this.imp.xLine1Point());
|
|
1245
1283
|
}
|
|
1246
1284
|
set xLine1Point(D) {
|
|
1247
1285
|
this.imp.setXLine1Point(D.imp);
|
|
1248
1286
|
}
|
|
1249
1287
|
get xLine2Point() {
|
|
1250
|
-
return new
|
|
1288
|
+
return new a(this.imp.xLine2Point());
|
|
1251
1289
|
}
|
|
1252
1290
|
set xLine2Point(D) {
|
|
1253
1291
|
this.imp.setXLine2Point(D.imp);
|
|
1254
1292
|
}
|
|
1255
1293
|
get dimLinePoint() {
|
|
1256
|
-
return new
|
|
1294
|
+
return new a(this.imp.dimLinePoint());
|
|
1257
1295
|
}
|
|
1258
1296
|
set dimLinePoint(D) {
|
|
1259
1297
|
this.imp.setDimLinePoint(D.imp);
|
|
@@ -1271,15 +1309,15 @@ class uD extends cD {
|
|
|
1271
1309
|
this.imp.setRotation(D);
|
|
1272
1310
|
}
|
|
1273
1311
|
}
|
|
1274
|
-
class
|
|
1312
|
+
class BD extends V {
|
|
1275
1313
|
constructor(D) {
|
|
1276
|
-
super(D), D || this.initTempObject(new
|
|
1314
|
+
super(D), D || this.initTempObject(new i.mxcadassemblyimp.MdDbArc());
|
|
1277
1315
|
}
|
|
1278
1316
|
setCenter(D, C, B) {
|
|
1279
|
-
this.imp.setCenter(new
|
|
1317
|
+
this.imp.setCenter(new a(D, C, B).imp);
|
|
1280
1318
|
}
|
|
1281
1319
|
get center() {
|
|
1282
|
-
return new
|
|
1320
|
+
return new a(this.imp.center());
|
|
1283
1321
|
}
|
|
1284
1322
|
set center(D) {
|
|
1285
1323
|
this.imp.setCenter(D.imp);
|
|
@@ -1313,15 +1351,15 @@ class ED extends _ {
|
|
|
1313
1351
|
);
|
|
1314
1352
|
}
|
|
1315
1353
|
}
|
|
1316
|
-
class
|
|
1317
|
-
constructor(D, C, B, F, A, t, e,
|
|
1318
|
-
D instanceof Object ? super(D) : (super(), this.initTempObject(new
|
|
1354
|
+
class FD extends V {
|
|
1355
|
+
constructor(D, C, B, F, A, t, e, r, s) {
|
|
1356
|
+
D instanceof Object ? super(D) : (super(), this.initTempObject(new i.mxcadassemblyimp.MdDbEllipse()), typeof D == "number" && (e || (e = 1), typeof r != "number" && (r = 0), typeof s != "number" && (s = 6.283185307179586), this.imp.InitData(new a(D, C, B).imp, new y(F, A, t).imp, e, r, s)));
|
|
1319
1357
|
}
|
|
1320
1358
|
setCenter(D, C, B) {
|
|
1321
|
-
this.imp.setCenter(new
|
|
1359
|
+
this.imp.setCenter(new a(D, C, B).imp);
|
|
1322
1360
|
}
|
|
1323
1361
|
get center() {
|
|
1324
|
-
return new
|
|
1362
|
+
return new a(this.imp.center());
|
|
1325
1363
|
}
|
|
1326
1364
|
set center(D) {
|
|
1327
1365
|
this.imp.setCenter(D.imp);
|
|
@@ -1363,13 +1401,27 @@ class mD extends _ {
|
|
|
1363
1401
|
this.imp.setEndAngle(D);
|
|
1364
1402
|
}
|
|
1365
1403
|
}
|
|
1366
|
-
|
|
1404
|
+
class dD extends G {
|
|
1405
|
+
constructor(D, C, B) {
|
|
1406
|
+
D instanceof Object ? D instanceof a ? (super(), this.initTempObject(new i.mxcadassemblyimp.MdDbPoint()), this.imp.setPosition(D.imp)) : super(D) : (super(), this.initTempObject(new i.mxcadassemblyimp.MdDbPoint()), typeof D == "number" && this.imp.setPosition(new a(D, C, B).imp));
|
|
1407
|
+
}
|
|
1408
|
+
setPosition(D, C, B) {
|
|
1409
|
+
this.imp.setPosition(new a(D, C, B).imp);
|
|
1410
|
+
}
|
|
1411
|
+
get position() {
|
|
1412
|
+
return new a(this.imp.position());
|
|
1413
|
+
}
|
|
1414
|
+
set position(D) {
|
|
1415
|
+
this.imp.setPosition(D.imp);
|
|
1416
|
+
}
|
|
1417
|
+
}
|
|
1418
|
+
function N(E = null) {
|
|
1367
1419
|
let D;
|
|
1368
|
-
return E == null ? D = new
|
|
1420
|
+
return E == null ? D = new i.mxcadassemblyimp.McDrawResbuf() : D = E.getImp(), D;
|
|
1369
1421
|
}
|
|
1370
|
-
class
|
|
1422
|
+
class AD extends K {
|
|
1371
1423
|
constructor(D) {
|
|
1372
|
-
super(D), D || this.initTempObject(new
|
|
1424
|
+
super(D), D || this.initTempObject(new i.mxcadassemblyimp.McDrawResbuf());
|
|
1373
1425
|
}
|
|
1374
1426
|
Clear() {
|
|
1375
1427
|
this.imp.Clear();
|
|
@@ -1378,16 +1430,16 @@ class $ extends V {
|
|
|
1378
1430
|
return this.imp.GetCount();
|
|
1379
1431
|
}
|
|
1380
1432
|
AtDouble(D) {
|
|
1381
|
-
return { val: this.imp.AtDouble(D), ret:
|
|
1433
|
+
return { val: this.imp.AtDouble(D), ret: i.getCallResult() };
|
|
1382
1434
|
}
|
|
1383
1435
|
Atlong(D) {
|
|
1384
|
-
return { val: this.imp.Atlong(D), ret:
|
|
1436
|
+
return { val: this.imp.Atlong(D), ret: i.getCallResult() };
|
|
1385
1437
|
}
|
|
1386
1438
|
AtObject(D) {
|
|
1387
1439
|
if (this.imp.AtObjectName(D) == "McDbMText") {
|
|
1388
1440
|
let B = this.imp.AtObjectMdDbMText(D);
|
|
1389
1441
|
if (B)
|
|
1390
|
-
return { val: new
|
|
1442
|
+
return { val: new DD(B), ret: i.getCallResult() };
|
|
1391
1443
|
}
|
|
1392
1444
|
return { val: void 0, ret: -1 };
|
|
1393
1445
|
}
|
|
@@ -1395,13 +1447,13 @@ class $ extends V {
|
|
|
1395
1447
|
this.imp.AddObject(D.getImp());
|
|
1396
1448
|
}
|
|
1397
1449
|
AtObjectId(D) {
|
|
1398
|
-
return { val: new R(this.imp.AtObjectId(D), k.kMxCAD), ret:
|
|
1450
|
+
return { val: new R(this.imp.AtObjectId(D), k.kMxCAD), ret: i.getCallResult() };
|
|
1399
1451
|
}
|
|
1400
1452
|
AtString(D, C = !0) {
|
|
1401
|
-
return C ? { val: P.decodeFromGb2312(this.imp.AtString(D)), ret:
|
|
1453
|
+
return C ? { val: P.decodeFromGb2312(this.imp.AtString(D)), ret: i.getCallResult() } : { val: this.imp.AtString(D), ret: i.getCallResult() };
|
|
1402
1454
|
}
|
|
1403
1455
|
AtPoint(D) {
|
|
1404
|
-
return { val: new
|
|
1456
|
+
return { val: new a(this.imp.AtPoint(D)), ret: i.getCallResult() };
|
|
1405
1457
|
}
|
|
1406
1458
|
ItemDataType() {
|
|
1407
1459
|
return this.imp.ItemDataType();
|
|
@@ -1418,6 +1470,9 @@ class $ extends V {
|
|
|
1418
1470
|
AddString(D, C = -10, B = !0) {
|
|
1419
1471
|
return B ? this.imp.AddString(P.encodeToGb2312(D), C) : this.imp.AddString(D, C);
|
|
1420
1472
|
}
|
|
1473
|
+
AddMcDbEntityTypes(D) {
|
|
1474
|
+
return this.imp.AddString(D, 5020);
|
|
1475
|
+
}
|
|
1421
1476
|
AddPoint(D, C = -10) {
|
|
1422
1477
|
return this.imp.AddPoint(D.imp, C);
|
|
1423
1478
|
}
|
|
@@ -1428,7 +1483,7 @@ class $ extends V {
|
|
|
1428
1483
|
this.imp.Remove(D);
|
|
1429
1484
|
}
|
|
1430
1485
|
}
|
|
1431
|
-
class
|
|
1486
|
+
class UD {
|
|
1432
1487
|
imp;
|
|
1433
1488
|
constructor() {
|
|
1434
1489
|
}
|
|
@@ -1440,26 +1495,31 @@ class GD {
|
|
|
1440
1495
|
}
|
|
1441
1496
|
findEntAtPoint(D, C, B, F = -1, A = null) {
|
|
1442
1497
|
this.init();
|
|
1443
|
-
let t = this.imp.findEntAtPoint(D, C, B, F,
|
|
1498
|
+
let t = this.imp.findEntAtPoint(D, C, B, F, N(A));
|
|
1444
1499
|
return new R(t, k.kMxCAD);
|
|
1445
1500
|
}
|
|
1446
|
-
selectEnt(D, C = null) {
|
|
1447
|
-
return this.init(), new Promise(async (
|
|
1448
|
-
const
|
|
1449
|
-
D &&
|
|
1450
|
-
let
|
|
1451
|
-
if (!
|
|
1452
|
-
|
|
1501
|
+
selectEnt(D, C = null, B = !0) {
|
|
1502
|
+
return this.init(), new Promise(async (F) => {
|
|
1503
|
+
const A = new O();
|
|
1504
|
+
D && A.setMessage(D), A.setCursorType(bD.kRect), A.setDisableOsnap(!0);
|
|
1505
|
+
let t = await A.go();
|
|
1506
|
+
if (!t) {
|
|
1507
|
+
F([]);
|
|
1453
1508
|
return;
|
|
1454
1509
|
}
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
e.
|
|
1510
|
+
if (B)
|
|
1511
|
+
fD.findEntAtPoint(t).then((e) => {
|
|
1512
|
+
let r = [];
|
|
1513
|
+
e.forEach((o) => {
|
|
1514
|
+
r.push(new R(o, k.kMxDraw));
|
|
1515
|
+
});
|
|
1516
|
+
let s = this.findEntAtPoint(t.x, t.y, t.z, -1, C);
|
|
1517
|
+
s.isValid() && r.push(s), F(r);
|
|
1459
1518
|
});
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1519
|
+
else {
|
|
1520
|
+
let e = [], r = this.findEntAtPoint(t.x, t.y, t.z, -1, C);
|
|
1521
|
+
r.isValid() && e.push(r), F(e);
|
|
1522
|
+
}
|
|
1463
1523
|
});
|
|
1464
1524
|
}
|
|
1465
1525
|
getCurrentSelect() {
|
|
@@ -1471,22 +1531,22 @@ class GD {
|
|
|
1471
1531
|
}), D;
|
|
1472
1532
|
}
|
|
1473
1533
|
init() {
|
|
1474
|
-
this.imp || (this.imp = new
|
|
1534
|
+
this.imp || (this.imp = new i.mxcadassemblyimp.McDrawUtility());
|
|
1475
1535
|
}
|
|
1476
1536
|
}
|
|
1477
|
-
let
|
|
1478
|
-
class
|
|
1537
|
+
let U = new UD();
|
|
1538
|
+
class Z extends K {
|
|
1479
1539
|
constructor() {
|
|
1480
|
-
super(), this.initTempObject(new
|
|
1540
|
+
super(), this.initTempObject(new i.mxcadassemblyimp.McDrawSelSet());
|
|
1481
1541
|
}
|
|
1482
1542
|
allSelect(D = null) {
|
|
1483
|
-
return this.imp.allSelect(
|
|
1543
|
+
return this.imp.allSelect(N(D));
|
|
1484
1544
|
}
|
|
1485
1545
|
pointSelect(D, C, B = null, F = -1) {
|
|
1486
|
-
return this.imp.pointSelect(D, C,
|
|
1546
|
+
return this.imp.pointSelect(D, C, N(B), F);
|
|
1487
1547
|
}
|
|
1488
1548
|
crossingSelect(D, C, B, F, A = null) {
|
|
1489
|
-
return this.imp.crossingSelect(D, C, B, F,
|
|
1549
|
+
return this.imp.crossingSelect(D, C, B, F, N(A));
|
|
1490
1550
|
}
|
|
1491
1551
|
count() {
|
|
1492
1552
|
return this.imp.count();
|
|
@@ -1506,36 +1566,36 @@ class q extends V {
|
|
|
1506
1566
|
return D;
|
|
1507
1567
|
}
|
|
1508
1568
|
async userSelect(D, C = null) {
|
|
1509
|
-
let B = new
|
|
1510
|
-
D && B.setMessage(D), B.setCursorType(
|
|
1569
|
+
let B = new O();
|
|
1570
|
+
D && B.setMessage(D), B.setCursorType(bD.kRect), B.setDynamicInputType(xD.kDynTip), B.setDisableOsnap(!0);
|
|
1511
1571
|
let F = 0;
|
|
1512
1572
|
for (; ; ) {
|
|
1513
1573
|
let A = await B.go();
|
|
1514
1574
|
if (F = B.getDetailedResult(), !A)
|
|
1515
1575
|
break;
|
|
1516
|
-
let t = await
|
|
1576
|
+
let t = await fD.getCorner(A, D, !0, (e) => {
|
|
1517
1577
|
F = e.detailedResult;
|
|
1518
1578
|
});
|
|
1519
1579
|
if (!t)
|
|
1520
1580
|
break;
|
|
1521
|
-
this.imp.userSelect(A.x, A.y, t.x, t.y,
|
|
1581
|
+
this.imp.userSelect(A.x, A.y, t.x, t.y, N(C));
|
|
1522
1582
|
}
|
|
1523
|
-
return this.imp.highlightEntity(!1), F ==
|
|
1583
|
+
return this.imp.highlightEntity(!1), F == iD.kEcsIn || F == iD.kNewCommadIn || F == iD.kUnknown ? new Promise((A) => {
|
|
1524
1584
|
A(!1);
|
|
1525
1585
|
}) : new Promise((A) => {
|
|
1526
1586
|
A(!0);
|
|
1527
1587
|
});
|
|
1528
1588
|
}
|
|
1529
1589
|
}
|
|
1530
|
-
class
|
|
1590
|
+
class z {
|
|
1531
1591
|
imp;
|
|
1532
1592
|
constructor() {
|
|
1533
|
-
this.imp = new
|
|
1593
|
+
this.imp = new O();
|
|
1534
1594
|
}
|
|
1535
1595
|
go() {
|
|
1536
|
-
return new Promise((D
|
|
1537
|
-
this.imp.go((
|
|
1538
|
-
|
|
1596
|
+
return new Promise((D) => {
|
|
1597
|
+
this.imp.go((C) => {
|
|
1598
|
+
C != 0 ? D(null) : D(new a(this.imp.value()));
|
|
1539
1599
|
});
|
|
1540
1600
|
});
|
|
1541
1601
|
}
|
|
@@ -1559,17 +1619,17 @@ class Y {
|
|
|
1559
1619
|
}
|
|
1560
1620
|
setUserDraw(D) {
|
|
1561
1621
|
this.imp.setUserDraw((C, B) => {
|
|
1562
|
-
D(new
|
|
1622
|
+
D(new a(C), B);
|
|
1563
1623
|
});
|
|
1564
1624
|
}
|
|
1565
1625
|
value() {
|
|
1566
|
-
return new
|
|
1626
|
+
return new a(this.imp.value());
|
|
1567
1627
|
}
|
|
1568
1628
|
getCADValue() {
|
|
1569
1629
|
return this.imp.getCADValue();
|
|
1570
1630
|
}
|
|
1571
1631
|
basePt() {
|
|
1572
|
-
return new
|
|
1632
|
+
return new a(this.imp.basePt());
|
|
1573
1633
|
}
|
|
1574
1634
|
setBasePt(D) {
|
|
1575
1635
|
this.imp.setBasePt(D.toVector3());
|
|
@@ -1617,7 +1677,94 @@ class Y {
|
|
|
1617
1677
|
return this.imp.isDisableOsnap();
|
|
1618
1678
|
}
|
|
1619
1679
|
}
|
|
1620
|
-
class
|
|
1680
|
+
class zD {
|
|
1681
|
+
imp;
|
|
1682
|
+
constructor() {
|
|
1683
|
+
this.imp = new BC();
|
|
1684
|
+
}
|
|
1685
|
+
keyWords() {
|
|
1686
|
+
return this.imp.keyWords();
|
|
1687
|
+
}
|
|
1688
|
+
setKeyWords(D) {
|
|
1689
|
+
return this.imp.setKeyWords(D);
|
|
1690
|
+
}
|
|
1691
|
+
message() {
|
|
1692
|
+
return this.imp.message();
|
|
1693
|
+
}
|
|
1694
|
+
setMessage(D) {
|
|
1695
|
+
return this.imp.setMessage(D);
|
|
1696
|
+
}
|
|
1697
|
+
keyWordPicked() {
|
|
1698
|
+
return this.imp.keyWordPicked();
|
|
1699
|
+
}
|
|
1700
|
+
isKeyWordPicked(D) {
|
|
1701
|
+
return this.imp.isKeyWordPicked(D);
|
|
1702
|
+
}
|
|
1703
|
+
setUserDraw(D) {
|
|
1704
|
+
this.imp.setUserDraw((C, B) => {
|
|
1705
|
+
D(new a(C), B);
|
|
1706
|
+
});
|
|
1707
|
+
}
|
|
1708
|
+
value() {
|
|
1709
|
+
return this.imp.value();
|
|
1710
|
+
}
|
|
1711
|
+
basePt() {
|
|
1712
|
+
return new a(this.imp.basePt());
|
|
1713
|
+
}
|
|
1714
|
+
setBasePt(D) {
|
|
1715
|
+
this.imp.setBasePt(D.toVector3());
|
|
1716
|
+
}
|
|
1717
|
+
setUseBasePt(D) {
|
|
1718
|
+
return this.imp.setUseBasePt(D);
|
|
1719
|
+
}
|
|
1720
|
+
getDetailedResult() {
|
|
1721
|
+
return this.imp.getDetailedResult();
|
|
1722
|
+
}
|
|
1723
|
+
getStatus() {
|
|
1724
|
+
return this.imp.getStatus();
|
|
1725
|
+
}
|
|
1726
|
+
go() {
|
|
1727
|
+
return new Promise((D) => {
|
|
1728
|
+
this.imp.go((C) => {
|
|
1729
|
+
C != 0 ? D(null) : D(this.imp.value());
|
|
1730
|
+
});
|
|
1731
|
+
});
|
|
1732
|
+
}
|
|
1733
|
+
drawReserve(D) {
|
|
1734
|
+
return this.imp.drawReserve(D);
|
|
1735
|
+
}
|
|
1736
|
+
setInputToucheType(D) {
|
|
1737
|
+
return this.imp.setInputToucheType(D);
|
|
1738
|
+
}
|
|
1739
|
+
getInputToucheType() {
|
|
1740
|
+
return this.imp.getInputToucheType();
|
|
1741
|
+
}
|
|
1742
|
+
setCursorType(D) {
|
|
1743
|
+
this.imp.setCursorType(D);
|
|
1744
|
+
}
|
|
1745
|
+
getCursorType() {
|
|
1746
|
+
return this.imp.getCursorType();
|
|
1747
|
+
}
|
|
1748
|
+
setDynamicInputType(D) {
|
|
1749
|
+
this.imp.setDynamicInputType(D);
|
|
1750
|
+
}
|
|
1751
|
+
getDynamicInputType() {
|
|
1752
|
+
return this.imp.getDynamicInputType();
|
|
1753
|
+
}
|
|
1754
|
+
isDisableDynInput() {
|
|
1755
|
+
return this.imp.isDisableDynInput();
|
|
1756
|
+
}
|
|
1757
|
+
setDisableDynInput(D) {
|
|
1758
|
+
return this.imp.setDisableDynInput(D);
|
|
1759
|
+
}
|
|
1760
|
+
setDisableOsnap(D) {
|
|
1761
|
+
return this.imp.setDisableOsnap(D);
|
|
1762
|
+
}
|
|
1763
|
+
isDisableOsnap() {
|
|
1764
|
+
return this.imp.isDisableOsnap();
|
|
1765
|
+
}
|
|
1766
|
+
}
|
|
1767
|
+
class _ {
|
|
1621
1768
|
imp;
|
|
1622
1769
|
static currentFileName;
|
|
1623
1770
|
constructor(D) {
|
|
@@ -1632,24 +1779,18 @@ class H {
|
|
|
1632
1779
|
getImp() {
|
|
1633
1780
|
return this.imp;
|
|
1634
1781
|
}
|
|
1635
|
-
updateDisplay(D, C) {
|
|
1636
|
-
this.imp.updateDisplay(D, C);
|
|
1637
|
-
}
|
|
1638
|
-
test() {
|
|
1639
|
-
this.imp.test();
|
|
1640
|
-
}
|
|
1641
1782
|
openWebFile(D, C, B = !0) {
|
|
1642
1783
|
let F = this.imp.mxdrawObject, A = Math.round(Math.random() * 1e7);
|
|
1643
1784
|
if (C) {
|
|
1644
|
-
let t = (e,
|
|
1645
|
-
F.removeEventFuction("openFileComplete", t), A ==
|
|
1785
|
+
let t = (e, r) => {
|
|
1786
|
+
F.removeEventFuction("openFileComplete", t), A == r && C(e);
|
|
1646
1787
|
};
|
|
1647
1788
|
F.addEvent("openFileComplete", t);
|
|
1648
1789
|
}
|
|
1649
|
-
return
|
|
1790
|
+
return _.currentFileName = D.split("/").pop(), this.imp.openWebFile(D, B, A);
|
|
1650
1791
|
}
|
|
1651
1792
|
getCurrentFileName() {
|
|
1652
|
-
return
|
|
1793
|
+
return _.currentFileName;
|
|
1653
1794
|
}
|
|
1654
1795
|
saveFileToUrl(D, C) {
|
|
1655
1796
|
const B = window;
|
|
@@ -1680,7 +1821,7 @@ class H {
|
|
|
1680
1821
|
}, this.imp.saveFile(D);
|
|
1681
1822
|
}
|
|
1682
1823
|
GetDatabase() {
|
|
1683
|
-
return this.imp.McDbDatabase || (this.imp.McDbDatabase = new
|
|
1824
|
+
return this.imp.McDbDatabase || (this.imp.McDbDatabase = new mD(this.imp.GetDatabase())), this.imp.McDbDatabase;
|
|
1684
1825
|
}
|
|
1685
1826
|
GetSysVarString(D) {
|
|
1686
1827
|
return this.imp.GetSysVarString(D);
|
|
@@ -1701,7 +1842,7 @@ class H {
|
|
|
1701
1842
|
return this.imp.SetSysVarLong(D, C);
|
|
1702
1843
|
}
|
|
1703
1844
|
get DrawColor() {
|
|
1704
|
-
return new
|
|
1845
|
+
return new H(this.imp.GetDrawColor());
|
|
1705
1846
|
}
|
|
1706
1847
|
set DrawColor(D) {
|
|
1707
1848
|
this.imp.SetDrawColor(D.getImp());
|
|
@@ -1790,8 +1931,8 @@ class H {
|
|
|
1790
1931
|
DrawPoint(D, C) {
|
|
1791
1932
|
return this.imp.DrawPoint(D, C);
|
|
1792
1933
|
}
|
|
1793
|
-
DrawSolid(D, C, B, F, A, t, e,
|
|
1794
|
-
return this.imp.DrawSolid(D, C, B, F, A, t, e,
|
|
1934
|
+
DrawSolid(D, C, B, F, A, t, e, r) {
|
|
1935
|
+
return this.imp.DrawSolid(D, C, B, F, A, t, e, r);
|
|
1795
1936
|
}
|
|
1796
1937
|
DrawMText(D, C, B, F, A, t, e) {
|
|
1797
1938
|
return this.imp.DrawMText(D, C, B, F, A, t, e);
|
|
@@ -1805,8 +1946,8 @@ class H {
|
|
|
1805
1946
|
DrawDimAligned(D, C, B, F, A, t) {
|
|
1806
1947
|
return this.imp.DrawDimAligned(D, C, B, F, A, t);
|
|
1807
1948
|
}
|
|
1808
|
-
DrawDimAngular(D, C, B, F, A, t, e,
|
|
1809
|
-
return this.imp.DrawDimAngular(D, C, B, F, A, t, e,
|
|
1949
|
+
DrawDimAngular(D, C, B, F, A, t, e, r) {
|
|
1950
|
+
return this.imp.DrawDimAngular(D, C, B, F, A, t, e, r);
|
|
1810
1951
|
}
|
|
1811
1952
|
DrawDimDiametric(D, C, B, F, A) {
|
|
1812
1953
|
return this.imp.DrawDimDiametric(D, C, B, F, A);
|
|
@@ -1848,28 +1989,28 @@ class H {
|
|
|
1848
1989
|
return this.imp.DrawEntity(D.getImp());
|
|
1849
1990
|
}
|
|
1850
1991
|
ObjectIdToObject(D) {
|
|
1851
|
-
return
|
|
1992
|
+
return i.App.ObjectIdToObject(D);
|
|
1852
1993
|
}
|
|
1853
1994
|
DestroyObject(D) {
|
|
1854
|
-
!D ||
|
|
1995
|
+
!D || i.App.getImp().DestroyObject(D);
|
|
1855
1996
|
}
|
|
1856
1997
|
GetAllLayoutName() {
|
|
1857
|
-
return new
|
|
1998
|
+
return new LD(this.imp.GetAllLayoutName());
|
|
1858
1999
|
}
|
|
1859
2000
|
SetCurrentLayout(D) {
|
|
1860
2001
|
this.imp.SetCurrentLayout(P.encodeToGb2312(D));
|
|
1861
2002
|
}
|
|
1862
2003
|
GetMxCpp() {
|
|
1863
|
-
return
|
|
2004
|
+
return i;
|
|
1864
2005
|
}
|
|
1865
2006
|
docCoord2Cad(D) {
|
|
1866
|
-
return new
|
|
2007
|
+
return new a(this.imp.mxdrawObject.docCoord2Cad(D.x, D.y, D.z));
|
|
1867
2008
|
}
|
|
1868
2009
|
}
|
|
1869
|
-
class
|
|
2010
|
+
class KD {
|
|
1870
2011
|
imp;
|
|
1871
2012
|
init(D) {
|
|
1872
|
-
this.imp = D, y.kZAxis = new y(0, 0, 1), y.kNegateZAxis = new y(0, 0, -1), y.kXAxis = new y(1, 0, 0), y.kYAxis = new y(0, 1, 0),
|
|
2013
|
+
this.imp = D, y.kZAxis = new y(0, 0, 1), y.kNegateZAxis = new y(0, 0, -1), y.kXAxis = new y(1, 0, 0), y.kYAxis = new y(0, 1, 0), a.kOrigin = new a(0, 0, 0), I.kIdentity = new I();
|
|
1873
2014
|
}
|
|
1874
2015
|
getImp() {
|
|
1875
2016
|
return this.imp;
|
|
@@ -1879,14 +2020,14 @@ class WD {
|
|
|
1879
2020
|
}
|
|
1880
2021
|
CreateMxCAD(D, C, B, F, A) {
|
|
1881
2022
|
let t = this.imp.CreateMxDraw(D, C, B, F, A);
|
|
1882
|
-
return new
|
|
2023
|
+
return new _(t);
|
|
1883
2024
|
}
|
|
1884
2025
|
DestroyObject(D) {
|
|
1885
2026
|
this.imp.DestroyObject(D);
|
|
1886
2027
|
}
|
|
1887
2028
|
GetCurrentMxCAD() {
|
|
1888
2029
|
let D = this.imp.GetCurrentMxDraw();
|
|
1889
|
-
return D.McObject || (D.McObject = new
|
|
2030
|
+
return D.McObject || (D.McObject = new _(this.imp.GetCurrentMxDraw())), D.McObject;
|
|
1890
2031
|
}
|
|
1891
2032
|
mcedRGB2Index(D, C, B, F = !0) {
|
|
1892
2033
|
return this.imp.mcedRGB2Index(D, C, B, F);
|
|
@@ -1900,34 +2041,43 @@ class WD {
|
|
|
1900
2041
|
let C = this.imp.ObjectIdToObjectName(D);
|
|
1901
2042
|
if (C == "McDbLine") {
|
|
1902
2043
|
let B = this.imp.ObjectIdToMdDbLine(D);
|
|
1903
|
-
return new
|
|
2044
|
+
return new X(B);
|
|
1904
2045
|
} else if (C == "McDbText") {
|
|
1905
2046
|
let B = this.imp.ObjectIdToMdDbText(D);
|
|
1906
|
-
return new
|
|
2047
|
+
return new aD(B);
|
|
1907
2048
|
} else if (C == "McDbPolyline") {
|
|
1908
2049
|
let B = this.imp.ObjectIdToMdDbPolyline(D);
|
|
1909
|
-
return new
|
|
2050
|
+
return new CD(B);
|
|
1910
2051
|
} else if (C == "McDbCircle") {
|
|
1911
2052
|
let B = this.imp.ObjectIdToMdDbCircle(D);
|
|
1912
|
-
return new
|
|
2053
|
+
return new W(B);
|
|
1913
2054
|
} else if (C == "McDbArc") {
|
|
1914
2055
|
let B = this.imp.ObjectIdToMdDbArc(D);
|
|
1915
|
-
return new
|
|
2056
|
+
return new BD(B);
|
|
1916
2057
|
} else if (C == "McDbBlockReference") {
|
|
1917
2058
|
let B = this.imp.ObjectIdToMdDbBlockReference(D);
|
|
1918
|
-
return new
|
|
2059
|
+
return new uD(B);
|
|
1919
2060
|
} else if (C == "McDbAlignedDimension") {
|
|
1920
2061
|
let B = this.imp.ObjectIdToMdDbAlignedDimension(D);
|
|
1921
|
-
return new
|
|
2062
|
+
return new lD(B);
|
|
1922
2063
|
} else if (C == "McDbRotatedDimension") {
|
|
1923
2064
|
let B = this.imp.ObjectIdToMdDbRotatedDimension(D);
|
|
1924
|
-
return new
|
|
2065
|
+
return new cD(B);
|
|
1925
2066
|
} else if (C == "McDbMText") {
|
|
1926
2067
|
let B = this.imp.ObjectIdToMdDbMText(D);
|
|
1927
|
-
return new
|
|
2068
|
+
return new DD(B);
|
|
2069
|
+
} else if (C == "McDbEllipse") {
|
|
2070
|
+
let B = this.imp.ObjectIdToMdDbEllipse(D);
|
|
2071
|
+
return new FD(B);
|
|
2072
|
+
} else if (C == "McDbPoint") {
|
|
2073
|
+
let B = this.imp.ObjectIdToMdDbPoint(D);
|
|
2074
|
+
return new dD(B);
|
|
2075
|
+
} else if (this.imp.ObjectIdIsKindOf(D, "McDbCurve")) {
|
|
2076
|
+
let B = this.imp.ObjectIdToMdDbCurve(D);
|
|
2077
|
+
return new V(B);
|
|
1928
2078
|
} else if (this.imp.ObjectIdIsKindOf(D, "McDbEntity")) {
|
|
1929
2079
|
let B = this.imp.ObjectIdToMdDbEntity(D);
|
|
1930
|
-
return new
|
|
2080
|
+
return new G(B);
|
|
1931
2081
|
} else {
|
|
1932
2082
|
let B = this.imp.ObjectIdToMdObject(D);
|
|
1933
2083
|
return new j(B);
|
|
@@ -1937,7 +2087,7 @@ class WD {
|
|
|
1937
2087
|
if (!D)
|
|
1938
2088
|
return null;
|
|
1939
2089
|
let C = D.getObjectName(), B = null;
|
|
1940
|
-
return C == "McDbLine" ? B = new
|
|
2090
|
+
return C == "McDbLine" ? B = new X() : C == "McDbText" ? B = new aD() : C == "McDbPolyline" ? B = new CD() : C == "McDbCircle" ? B = new W() : C == "McDbArc" ? B = new BD() : C == "McDbBlockReference" ? B = new uD() : C == "McDbAlignedDimension" ? B = new lD() : C == "McDbRotatedDimension" ? B = new cD() : C == "McDbMText" ? B = new DD() : D.isKindOf("McDbCurve") ? (B = new V(), B.initTempObject(new i.mxcadassemblyimp.MdDbCurve())) : D.isKindOf("McDbEntity") && (B = new G(), B.initTempObject(new i.mxcadassemblyimp.MdDbEntity())), B ? (B.getImp().ConnectionTempObject(D), i.App.DestroyObject(D), B) : new j(D);
|
|
1941
2091
|
}
|
|
1942
2092
|
setFontFilePath(D) {
|
|
1943
2093
|
this.imp.setFontFilePath(D);
|
|
@@ -1948,9 +2098,9 @@ class WD {
|
|
|
1948
2098
|
});
|
|
1949
2099
|
}
|
|
1950
2100
|
}
|
|
1951
|
-
class
|
|
2101
|
+
class HD {
|
|
1952
2102
|
mxcadassemblyimp;
|
|
1953
|
-
App = new
|
|
2103
|
+
App = new KD();
|
|
1954
2104
|
getCallResult() {
|
|
1955
2105
|
return this.App.getLastCallResult();
|
|
1956
2106
|
}
|
|
@@ -1959,7 +2109,7 @@ class VD {
|
|
|
1959
2109
|
let F = D.z || 0;
|
|
1960
2110
|
D = h.getCurrentDraw().docCoord2Cad(D.x, D.y, F);
|
|
1961
2111
|
}
|
|
1962
|
-
let B = new
|
|
2112
|
+
let B = new a();
|
|
1963
2113
|
return D && D.x && D.y && (B.x = D.x, B.y = D.y, D.z && (B.y = D.z)), B;
|
|
1964
2114
|
}
|
|
1965
2115
|
GetCurrentMxCAD() {
|
|
@@ -1969,43 +2119,43 @@ class VD {
|
|
|
1969
2119
|
return this.App.GetCurrentMxCAD().GetDatabase();
|
|
1970
2120
|
}
|
|
1971
2121
|
}
|
|
1972
|
-
const
|
|
2122
|
+
const hD = "1.0.76", lC = "SharedArrayBuffer" in window, tD = document.currentScript && /unpkg\.com\/mxcad/.test(document.currentScript.src), cC = (E, D = self.location.href) => tD ? `https://unpkg.com/mxcad@${hD}/dist/wasm/2d-st/${E}` : D + E, mC = (E, D = self.location.href) => tD ? `https://unpkg.com/mxcad@${hD}/dist/wasm/2d/${E}` : D + E, pC = (E, D = self.location.href) => tD ? `https://unpkg.com/mxcad@${hD}/dist/wasm/3d/${E}` : D + E, ND = (E) => new Promise((D, C) => {
|
|
1973
2123
|
const B = document.createElement("script");
|
|
1974
2124
|
B.src = E, B.type = "text/javascript", B.crossOrigin = "anonymous", document.body.appendChild(B), B.onload = () => {
|
|
1975
2125
|
D();
|
|
1976
2126
|
}, B.onerror = (F) => {
|
|
1977
2127
|
C(F);
|
|
1978
2128
|
};
|
|
1979
|
-
}),
|
|
2129
|
+
}), dC = async (E, D, C) => {
|
|
1980
2130
|
const { locateFile: B } = C, F = B(E + ".js");
|
|
1981
|
-
return await
|
|
2131
|
+
return await ND(F), await globalThis[D](C);
|
|
1982
2132
|
};
|
|
1983
|
-
let
|
|
1984
|
-
async function
|
|
2133
|
+
let i;
|
|
2134
|
+
async function _D(E, D = lC || !tD ? cC : mC, C, B, F) {
|
|
1985
2135
|
return new Promise(async (A, t) => {
|
|
1986
2136
|
try {
|
|
1987
|
-
if (
|
|
1988
|
-
return E && E(
|
|
1989
|
-
const
|
|
2137
|
+
if (i || (i = new HD()), i.mxcadassemblyimp)
|
|
2138
|
+
return E && E(i), A(i);
|
|
2139
|
+
const r = await dC("mxdrawassembly_min", "mxdrawassembly", {
|
|
1990
2140
|
locateFile: D,
|
|
1991
2141
|
wasmBinary: C
|
|
1992
2142
|
});
|
|
1993
|
-
|
|
1994
|
-
let s = new
|
|
1995
|
-
B && s.setFontFilePath(B), s.Init(),
|
|
2143
|
+
i.mxcadassemblyimp = r;
|
|
2144
|
+
let s = new r.McApp();
|
|
2145
|
+
B && s.setFontFilePath(B), s.Init(), i.App.init(s), F && i.App.addNetworkLoadingFont(F), E && E(i), A(i);
|
|
1996
2146
|
} catch (e) {
|
|
1997
2147
|
t(e);
|
|
1998
2148
|
}
|
|
1999
2149
|
});
|
|
2000
2150
|
}
|
|
2001
|
-
const
|
|
2151
|
+
const hC = (E) => {
|
|
2002
2152
|
let D = null;
|
|
2003
2153
|
if (typeof E == "string" ? D = document.querySelector(E) : E instanceof HTMLCanvasElement && (D = E), !!D)
|
|
2004
2154
|
return D.id || (D.id = Math.random().toString(16).slice(2)), D.id;
|
|
2005
|
-
},
|
|
2155
|
+
}, yC = (E, D) => new Promise((C, B) => {
|
|
2006
2156
|
try {
|
|
2007
2157
|
h.createMxObject({
|
|
2008
|
-
canvasId:
|
|
2158
|
+
canvasId: hC(E),
|
|
2009
2159
|
isCPPMxCAD: !0,
|
|
2010
2160
|
userIdentitySign: D,
|
|
2011
2161
|
callback(F) {
|
|
@@ -2017,28 +2167,28 @@ const cC = (E) => {
|
|
|
2017
2167
|
} catch (F) {
|
|
2018
2168
|
B(F);
|
|
2019
2169
|
}
|
|
2020
|
-
}),
|
|
2021
|
-
|
|
2022
|
-
const { multipleSelect: D, networkFonts: C, fontspath: B, locateFile: F, wasmBinary: A, canvas: t, userIdentitySign: e, onOpenFileComplete:
|
|
2170
|
+
}), wC = async (E) => {
|
|
2171
|
+
MD.state.MxFun || await EC();
|
|
2172
|
+
const { multipleSelect: D, networkFonts: C, fontspath: B, locateFile: F, wasmBinary: A, canvas: t, userIdentitySign: e, onOpenFileComplete: r, fileUrl: s, onInit: o = () => {
|
|
2023
2173
|
h.setIniset({
|
|
2024
2174
|
EnableIntelliSelect: !0,
|
|
2025
2175
|
IntelliSelectType: 1,
|
|
2026
2176
|
multipleSelect: !!D
|
|
2027
2177
|
});
|
|
2028
2178
|
} } = E || {};
|
|
2029
|
-
await
|
|
2179
|
+
await _D(() => {
|
|
2030
2180
|
}, F, A, B, C), o();
|
|
2031
|
-
let
|
|
2181
|
+
let u = await yC(t, e);
|
|
2032
2182
|
const l = h.getMxFunTHREE();
|
|
2033
2183
|
let c = new l.Vector2();
|
|
2034
|
-
|
|
2035
|
-
const n =
|
|
2036
|
-
return
|
|
2037
|
-
|
|
2184
|
+
u.getRenderer().getSize(c);
|
|
2185
|
+
const n = i.App.CreateMxCAD(c.width, c.height, u.getCanvas().id, u.isWebgl2(), u.getId());
|
|
2186
|
+
return u.initMxCpp(n), u.addEvent("openFileComplete", () => {
|
|
2187
|
+
r && r();
|
|
2038
2188
|
}), s && n.openWebFile(s), n;
|
|
2039
2189
|
};
|
|
2040
|
-
async function
|
|
2041
|
-
const E = new
|
|
2190
|
+
async function gC() {
|
|
2191
|
+
const E = new O();
|
|
2042
2192
|
E.setMessage(`
|
|
2043
2193
|
\u6307\u5B9A\u63D2\u5165\u4F4D\u7F6E:`);
|
|
2044
2194
|
let D = await E.go();
|
|
@@ -2057,7 +2207,7 @@ async function dC() {
|
|
|
2057
2207
|
};
|
|
2058
2208
|
h.call("Mx_Text", F);
|
|
2059
2209
|
}
|
|
2060
|
-
class
|
|
2210
|
+
class bC extends PD {
|
|
2061
2211
|
getGripPoints() {
|
|
2062
2212
|
const { x: D, y: C, z: B } = this.center;
|
|
2063
2213
|
let F = new THREE.Vector3(D, C + this.radius, B), A = new THREE.Vector3(D, C - this.radius, B), t = new THREE.Vector3(D - this.radius, C, B), e = new THREE.Vector3(D + this.radius, C, B);
|
|
@@ -2068,13 +2218,13 @@ class hC extends bD {
|
|
|
2068
2218
|
return D === 0 && (this.center = B.add(C)), D === 1 && (this.radius = F.add(C).distanceTo(this.center)), D === 2 && (this.radius = A.add(C).distanceTo(this.center)), D === 3 && (this.radius = t.add(C).distanceTo(this.center)), D === 4 && (this.radius = e.add(C).distanceTo(this.center)), !0;
|
|
2069
2219
|
}
|
|
2070
2220
|
}
|
|
2071
|
-
const
|
|
2072
|
-
const [D, C, B] = E, { x: F, y: A, z: t } = D, { x: e, y:
|
|
2073
|
-
return new THREE.Vector3(
|
|
2221
|
+
const wD = (E) => {
|
|
2222
|
+
const [D, C, B] = E, { x: F, y: A, z: t } = D, { x: e, y: r, z: s } = C, { x: o, y: u, z: l } = B, c = A * s - r * t - A * l + u * t + r * l - u * s, n = -(F * s - e * t - F * l + o * t + e * l - o * s), m = F * r - e * A - F * u + o * A + e * u - o * r, w = -(F * r * l - F * u * s - e * A * l + e * u * t + o * A * s - o * r * t), b = 2 * (e - F), p = 2 * (r - A), d = 2 * (s - t), x = F * F + A * A + t * t - e * e - r * r - s * s, f = 2 * (o - F), g = 2 * (u - A), M = 2 * (l - t), L = F * F + A * A + t * t - o * o - u * u - l * l, $ = -(n * d * L - n * M * x - p * m * L + p * M * w + g * m * x - g * d * w) / (c * p * M - c * g * d - b * n * M + b * g * m + f * n * d - f * p * m), DC = (c * d * L - c * M * x - b * m * L + b * M * w + f * m * x - f * d * w) / (c * p * M - c * g * d - b * n * M + b * g * m + f * n * d - f * p * m), CC = -(c * p * L - c * g * x - b * n * L + b * g * w + f * n * x - f * p * w) / (c * p * M - c * g * d - b * n * M + b * g * m + f * n * d - f * p * m);
|
|
2223
|
+
return new THREE.Vector3($, DC, CC);
|
|
2074
2224
|
};
|
|
2075
|
-
function
|
|
2076
|
-
const E = new
|
|
2077
|
-
let D = new
|
|
2225
|
+
function qD() {
|
|
2226
|
+
const E = new O();
|
|
2227
|
+
let D = new bC(), C = i.GetCurrentDatabase().GetCurrentlyDrawColor();
|
|
2078
2228
|
v.use(D), D.closed = !1, D.setColor(C);
|
|
2079
2229
|
let B = 0, F = "default", A = !0;
|
|
2080
2230
|
const t = () => {
|
|
@@ -2090,44 +2240,44 @@ function KD() {
|
|
|
2090
2240
|
E.setMessage(`
|
|
2091
2241
|
\u6307\u5B9A\u5706\u7684\u534A\u5F84:`), E.setKeyWords("[\u76F4\u5F84(D)]"), D.center = E.value(), t();
|
|
2092
2242
|
else if (B === 1)
|
|
2093
|
-
return
|
|
2243
|
+
return i.GetCurrentMxCAD().DrawEntity(new W(D.center.x, D.center.y, 0, D.radius)), !0;
|
|
2094
2244
|
B++;
|
|
2095
2245
|
}
|
|
2096
2246
|
n === T.kKeyWord && E.isKeyWordPicked("D") && (A = !1, t(), E.setMessage(`
|
|
2097
2247
|
\u6307\u5B9A\u5706\u7684\u76F4\u5F84:`), E.setKeyWords(""));
|
|
2098
2248
|
}
|
|
2099
2249
|
};
|
|
2100
|
-
let
|
|
2250
|
+
let r = [];
|
|
2101
2251
|
const s = (n) => {
|
|
2102
2252
|
if (F === "3P" && (E.setMessage(`
|
|
2103
2253
|
\u6307\u5B9A\u5706\u4E0A\u7684\u7B2C\u4E00\u4E2A\u70B9:`), n === T.kOk)) {
|
|
2104
|
-
if (B === 0 && (
|
|
2105
|
-
w.drawLine(
|
|
2254
|
+
if (B === 0 && (r.push(E.value()), E.setUserDraw((m, w) => {
|
|
2255
|
+
w.drawLine(r[0], m);
|
|
2106
2256
|
}), E.setMessage(`
|
|
2107
|
-
\u6307\u5B9A\u5706\u4E0A\u7684\u7B2C\u4E8C\u4E2A\u70B9:`)), B === 1 && (
|
|
2108
|
-
const [
|
|
2109
|
-
D.center =
|
|
2110
|
-
|
|
2257
|
+
\u6307\u5B9A\u5706\u4E0A\u7684\u7B2C\u4E8C\u4E2A\u70B9:`)), B === 1 && (r.push(E.value()), E.setUserDraw((m, w) => {
|
|
2258
|
+
const [b, p] = r, d = m;
|
|
2259
|
+
D.center = wD([
|
|
2260
|
+
b,
|
|
2111
2261
|
p,
|
|
2112
2262
|
d
|
|
2113
|
-
]), D.radius = D.center.distanceTo(
|
|
2263
|
+
]), D.radius = D.center.distanceTo(b), w.drawCustomEntity(D);
|
|
2114
2264
|
}), E.setMessage(`
|
|
2115
2265
|
\u6307\u5B9A\u5706\u4E0A\u7684\u7B2C\u4E09\u4E2A\u70B9:`)), B === 2)
|
|
2116
|
-
return
|
|
2266
|
+
return r.push(E.value()), D.center = wD(r), D.radius = D.center.distanceTo(r[0]), i.GetCurrentMxCAD().DrawEntity(new W(D.center.x, D.center.y, 0, D.radius)), !0;
|
|
2117
2267
|
B++;
|
|
2118
2268
|
}
|
|
2119
2269
|
};
|
|
2120
2270
|
let o;
|
|
2121
|
-
const
|
|
2271
|
+
const u = (n, m) => {
|
|
2122
2272
|
new THREE.Line3(n, m).getCenter(D.center), D.radius = m.distanceTo(n) / 2;
|
|
2123
2273
|
}, l = (n) => {
|
|
2124
2274
|
if (F === "2P" && (E.setMessage(`
|
|
2125
2275
|
\u6307\u5B9A\u5706\u76F4\u5F84\u7684\u7B2C\u4E00\u4E2A\u7AEF\u70B9:`), n === T.kOk)) {
|
|
2126
2276
|
if (B === 0 && (o = E.value(), E.setUserDraw((m, w) => {
|
|
2127
|
-
|
|
2277
|
+
u(o, m), w.drawCustomEntity(D), w.drawLine(o, m);
|
|
2128
2278
|
}), E.setMessage(`
|
|
2129
2279
|
\u6307\u5B9A\u5706\u76F4\u5F84\u7684\u7B2C\u4E8C\u4E2A\u7AEF\u70B9:`)), B === 1)
|
|
2130
|
-
return
|
|
2280
|
+
return u(o, E.value()), i.GetCurrentMxCAD().DrawEntity(new W(D.center.x, D.center.y, 0, D.radius)), !0;
|
|
2131
2281
|
B++;
|
|
2132
2282
|
}
|
|
2133
2283
|
}, c = (n) => {
|
|
@@ -2158,20 +2308,20 @@ function KD() {
|
|
|
2158
2308
|
return { exit: !0 };
|
|
2159
2309
|
},
|
|
2160
2310
|
(n) => {
|
|
2161
|
-
n === T.kCancel &&
|
|
2311
|
+
n === T.kCancel && i.GetCurrentMxCAD().DrawEntity(new W(D.center.x, D.center.y, 0, D.radius));
|
|
2162
2312
|
}
|
|
2163
2313
|
);
|
|
2164
2314
|
}
|
|
2165
2315
|
h.on("init", () => {
|
|
2166
|
-
h.addCommand("Mx_Circle",
|
|
2316
|
+
h.addCommand("Mx_Circle", qD);
|
|
2167
2317
|
});
|
|
2168
|
-
const
|
|
2169
|
-
function
|
|
2318
|
+
const gD = () => MD.state.MxFun.stopRunCommand();
|
|
2319
|
+
function rD(E, D, C, B) {
|
|
2170
2320
|
const F = E - C, A = D - B;
|
|
2171
2321
|
let t = 0;
|
|
2172
2322
|
return F == 0 ? t = Math.PI / 2 : t = Math.atan(Math.abs(A / F)), F < 0 && A >= 0 ? t = Math.PI - t : F < 0 && A < 0 ? t = Math.PI + t : F >= 0 && A < 0 && (t = Math.PI * 2 - t), t;
|
|
2173
2323
|
}
|
|
2174
|
-
const
|
|
2324
|
+
const S = (E, D, C) => {
|
|
2175
2325
|
const B = () => {
|
|
2176
2326
|
E.go((F) => {
|
|
2177
2327
|
if (F === T.kKeyWord && C() && B(), F === T.kOk && D() && B(), F === T.kNone && B(), F === T.kCancel)
|
|
@@ -2180,17 +2330,17 @@ const L = (E, D, C) => {
|
|
|
2180
2330
|
};
|
|
2181
2331
|
return B;
|
|
2182
2332
|
};
|
|
2183
|
-
async function
|
|
2184
|
-
const E = new
|
|
2185
|
-
let D = new
|
|
2333
|
+
async function ZD() {
|
|
2334
|
+
const E = new O();
|
|
2335
|
+
let D = new Q(), C = i.GetCurrentDatabase().GetCurrentlyDrawColor(), B = [];
|
|
2186
2336
|
E.setMessage(`
|
|
2187
2337
|
\u6307\u5B9A\u7B2C\u4E00\u70B9:`);
|
|
2188
2338
|
let F = await E.go();
|
|
2189
2339
|
if (!F)
|
|
2190
2340
|
return;
|
|
2191
2341
|
E.setUserDraw((t, e) => {
|
|
2192
|
-
e.setColor(C), B.forEach((
|
|
2193
|
-
|
|
2342
|
+
e.setColor(C), B.forEach((r) => {
|
|
2343
|
+
r.color = C, e.drawCustomEntity(r);
|
|
2194
2344
|
}), e.drawLine(F, t);
|
|
2195
2345
|
});
|
|
2196
2346
|
const A = () => {
|
|
@@ -2199,12 +2349,12 @@ async function HD() {
|
|
|
2199
2349
|
};
|
|
2200
2350
|
A(), E.goWhile(
|
|
2201
2351
|
(t) => {
|
|
2202
|
-
if (t === T.kOk && (D = new
|
|
2352
|
+
if (t === T.kOk && (D = new Q(), v.use(D), D.pt1 = F, D.pt2 = E.value(), F = D.pt2.clone(), B.push(D), A()), t === T.kKeyWord) {
|
|
2203
2353
|
if (E.isKeyWordPicked("E"))
|
|
2204
|
-
|
|
2354
|
+
gD();
|
|
2205
2355
|
else if (E.isKeyWordPicked("C")) {
|
|
2206
|
-
const e = new
|
|
2207
|
-
return e.pt1 = F.clone(), e.pt2 = B[0].pt1.clone(), v.use(e), B.push(e), F = e.pt2.clone(),
|
|
2356
|
+
const e = new Q();
|
|
2357
|
+
return e.pt1 = F.clone(), e.pt2 = B[0].pt1.clone(), v.use(e), B.push(e), F = e.pt2.clone(), gD(), { exit: !0 };
|
|
2208
2358
|
} else if (E.isKeyWordPicked("U")) {
|
|
2209
2359
|
const e = B.pop();
|
|
2210
2360
|
e && (F = e.pt1);
|
|
@@ -2212,15 +2362,24 @@ async function HD() {
|
|
|
2212
2362
|
}
|
|
2213
2363
|
},
|
|
2214
2364
|
(t) => (t != T.kCancel && B.forEach((e) => {
|
|
2215
|
-
|
|
2365
|
+
i.GetCurrentMxCAD().DrawEntity(new X(e.pt1.x, e.pt1.y, 0, e.pt2.x, e.pt2.y, 0));
|
|
2216
2366
|
}), { exit: !0 })
|
|
2217
2367
|
);
|
|
2218
2368
|
}
|
|
2369
|
+
async function fC() {
|
|
2370
|
+
let E = new z();
|
|
2371
|
+
for (E.setMessage("\u6307\u5B9A\u70B9"); ; ) {
|
|
2372
|
+
let D = await E.go();
|
|
2373
|
+
if (D == null)
|
|
2374
|
+
break;
|
|
2375
|
+
i.GetCurrentMxCAD().DrawEntity(new dD(D));
|
|
2376
|
+
}
|
|
2377
|
+
}
|
|
2219
2378
|
h.on("init", () => {
|
|
2220
|
-
h.addCommand("Mx_Line",
|
|
2379
|
+
h.addCommand("Mx_Line", ZD), h.addCommand("Mx_Point", fC);
|
|
2221
2380
|
});
|
|
2222
|
-
async function
|
|
2223
|
-
const E = new
|
|
2381
|
+
async function xC() {
|
|
2382
|
+
const E = new O();
|
|
2224
2383
|
E.setMessage(`
|
|
2225
2384
|
\u6307\u5B9A\u63D2\u5165\u4F4D\u7F6E:`);
|
|
2226
2385
|
let D = await E.go();
|
|
@@ -2240,10 +2399,10 @@ async function yC() {
|
|
|
2240
2399
|
};
|
|
2241
2400
|
h.call("Mx_MText", F);
|
|
2242
2401
|
}
|
|
2243
|
-
async function
|
|
2244
|
-
const E = new
|
|
2245
|
-
let D =
|
|
2246
|
-
const C = new
|
|
2402
|
+
async function $D() {
|
|
2403
|
+
const E = new O();
|
|
2404
|
+
let D = i.GetCurrentDatabase().GetCurrentlyDrawColor();
|
|
2405
|
+
const C = new FC();
|
|
2247
2406
|
v.use(C), C.color = D, E.setMessage(`
|
|
2248
2407
|
\u6307\u5B9A\u8D77\u70B9:`);
|
|
2249
2408
|
let B;
|
|
@@ -2259,8 +2418,8 @@ async function ND() {
|
|
|
2259
2418
|
F === T.kKeyWord && (E.isKeyWordPicked("A"), E.isKeyWordPicked("W"));
|
|
2260
2419
|
},
|
|
2261
2420
|
(F) => {
|
|
2262
|
-
if (F
|
|
2263
|
-
let A =
|
|
2421
|
+
if (F != T.kCancel) {
|
|
2422
|
+
let A = i.GetCurrentMxCAD(), t = new CD();
|
|
2264
2423
|
for (let e = 0; e < C.points.length; e++)
|
|
2265
2424
|
t.addVertexAt(C.points[e]);
|
|
2266
2425
|
A.DrawEntity(t);
|
|
@@ -2269,50 +2428,50 @@ async function ND() {
|
|
|
2269
2428
|
);
|
|
2270
2429
|
}
|
|
2271
2430
|
h.on("init", () => {
|
|
2272
|
-
h.addCommand("Mx_Pline",
|
|
2431
|
+
h.addCommand("Mx_Pline", $D);
|
|
2273
2432
|
});
|
|
2274
|
-
async function
|
|
2275
|
-
const E = new
|
|
2433
|
+
async function JD() {
|
|
2434
|
+
const E = new O();
|
|
2276
2435
|
E.setMessage(`
|
|
2277
2436
|
\u6307\u5B9A\u4E00\u70B9:`);
|
|
2278
|
-
let D = await E.go(), C = new
|
|
2437
|
+
let D = await E.go(), C = new W();
|
|
2279
2438
|
C.setCenter(D.x, D.y, D.z);
|
|
2280
|
-
let B = 5, F =
|
|
2439
|
+
let B = 5, F = i.GetCurrentDatabase().GetCurrentlyDrawColor();
|
|
2281
2440
|
E.setUserDraw((A, t) => {
|
|
2282
2441
|
t.setColor(F), C.radius = D.distanceTo(A);
|
|
2283
|
-
let e = C.getEndParam().val, s = C.getDistAtParam(e).val / B, o = 0,
|
|
2442
|
+
let e = C.getEndParam().val, s = C.getDistAtParam(e).val / B, o = 0, u = new THREE.Vector3(), l = new THREE.Vector3();
|
|
2284
2443
|
for (let c = 0; c < B; c++) {
|
|
2285
2444
|
let n = C.getPointAtDist(o).val;
|
|
2286
|
-
o += s, c > 0 ? t.drawMcDbLine(n.x, n.y, n.z,
|
|
2445
|
+
o += s, c > 0 ? t.drawMcDbLine(n.x, n.y, n.z, u.x, u.y, u.z) : l = new THREE.Vector3(n.x, n.y, n.z), c == B - 1 && t.drawMcDbLine(n.x, n.y, n.z, l.x, l.y, l.z), u = new THREE.Vector3(n.x, n.y, n.z);
|
|
2287
2446
|
}
|
|
2288
2447
|
}), E.setMessage(`
|
|
2289
2448
|
\u6307\u5B9A\u4E8C\u70B9:`), await E.go(), E.drawReserve();
|
|
2290
2449
|
}
|
|
2291
|
-
h.addCommand("Mx_Polygon",
|
|
2292
|
-
function
|
|
2293
|
-
const B = E.x, F = D.x, A = C.x, t = E.y, e = D.y,
|
|
2294
|
-
return new THREE.Vector3(w,
|
|
2450
|
+
h.addCommand("Mx_Polygon", JD);
|
|
2451
|
+
function MC(E, D, C) {
|
|
2452
|
+
const B = E.x, F = D.x, A = C.x, t = E.y, e = D.y, r = C.y, s = B - F, o = t - e, u = B - A, l = t - r, c = (B * B - F * F + (t * t - e * e)) / 2, n = (B * B - A * A + (t * t - r * r)) / 2, m = o * u - s * l, w = -(l * c - o * n) / m, b = -(s * n - u * c) / m;
|
|
2453
|
+
return new THREE.Vector3(w, b, 0);
|
|
2295
2454
|
}
|
|
2296
|
-
function
|
|
2455
|
+
function PC(E, D) {
|
|
2297
2456
|
const C = E.x, B = E.y, F = D.x, A = D.y;
|
|
2298
2457
|
return Math.sqrt((C - F) * (C - F) + (B - A) * (B - A));
|
|
2299
2458
|
}
|
|
2300
|
-
function
|
|
2459
|
+
function TC(E, D, C) {
|
|
2301
2460
|
let B;
|
|
2302
2461
|
E < C ? B = C - E : B = C - E + 360;
|
|
2303
2462
|
let F;
|
|
2304
2463
|
return E < D ? F = D - E : F = D - E + 360, F > B;
|
|
2305
2464
|
}
|
|
2306
|
-
function
|
|
2465
|
+
function sD(E, D, C) {
|
|
2307
2466
|
const B = E.x, F = D.x, A = E.y, t = D.y;
|
|
2308
|
-
let e,
|
|
2309
|
-
return e = (A - t) / C,
|
|
2467
|
+
let e, r, s;
|
|
2468
|
+
return e = (A - t) / C, r = (B - F) / C, r >= 0.99999 && (r = 0.99999), r <= -0.99999 && (r = -0.99999), s = Math.acos(r), s = s / Math.PI * 180, e < -0.05 && (s = 360 - s), {
|
|
2310
2469
|
sin: e,
|
|
2311
|
-
cos:
|
|
2470
|
+
cos: r,
|
|
2312
2471
|
angle: s
|
|
2313
2472
|
};
|
|
2314
2473
|
}
|
|
2315
|
-
class
|
|
2474
|
+
class yD extends PD {
|
|
2316
2475
|
constructor() {
|
|
2317
2476
|
super(), this._propertyDbKeys = [...this._propertyDbKeys, "bulge"];
|
|
2318
2477
|
}
|
|
@@ -2320,7 +2479,7 @@ class dD extends bD {
|
|
|
2320
2479
|
return "MxDbCircle";
|
|
2321
2480
|
}
|
|
2322
2481
|
create() {
|
|
2323
|
-
return new
|
|
2482
|
+
return new yD();
|
|
2324
2483
|
}
|
|
2325
2484
|
getArcBulge(D, C, B) {
|
|
2326
2485
|
const F = D.distanceTo(C);
|
|
@@ -2331,13 +2490,13 @@ class dD extends bD {
|
|
|
2331
2490
|
}
|
|
2332
2491
|
getArcMidPoint(D, C, B, F, A) {
|
|
2333
2492
|
const t = D, e = B * Math.PI / 180;
|
|
2334
|
-
let
|
|
2493
|
+
let r = F * Math.PI / 180;
|
|
2335
2494
|
const s = new THREE.Vector3(), o = new THREE.Vector3();
|
|
2336
|
-
s.x = t.x + C * Math.cos(e), s.y = t.y + C * Math.sin(e), o.x = t.x + C * Math.cos(
|
|
2337
|
-
const
|
|
2338
|
-
(A ? B < F : B > F) && (
|
|
2495
|
+
s.x = t.x + C * Math.cos(e), s.y = t.y + C * Math.sin(e), o.x = t.x + C * Math.cos(r), o.y = t.y + C * Math.sin(r);
|
|
2496
|
+
const u = C;
|
|
2497
|
+
(A ? B < F : B > F) && (r += Math.PI * 2);
|
|
2339
2498
|
const l = new THREE.Vector3();
|
|
2340
|
-
return l.x = t.x +
|
|
2499
|
+
return l.x = t.x + u * Math.cos((e + r) / 2), l.y = t.y + u * Math.sin((e + r) / 2), [s, l, o, this.center];
|
|
2341
2500
|
}
|
|
2342
2501
|
getGripPoints() {
|
|
2343
2502
|
return this.getArcMidPoint(
|
|
@@ -2357,24 +2516,24 @@ class dD extends bD {
|
|
|
2357
2516
|
upDatePoints(D, C, B) {
|
|
2358
2517
|
D[C].add(B);
|
|
2359
2518
|
const [F, A, t] = D;
|
|
2360
|
-
this.center =
|
|
2361
|
-
const e =
|
|
2362
|
-
this.clockwise =
|
|
2363
|
-
|
|
2519
|
+
this.center = MC(F, t, A), this.radius = PC(A, this.center);
|
|
2520
|
+
const e = sD(F, this.center, this.radius), r = sD(t, this.center, this.radius), s = sD(A, this.center, this.radius);
|
|
2521
|
+
this.clockwise = TC(
|
|
2522
|
+
r.angle,
|
|
2364
2523
|
e.angle,
|
|
2365
2524
|
s.angle
|
|
2366
|
-
), this.startAngle = THREE.MathUtils.degToRad(e.angle), this.endAngle = THREE.MathUtils.degToRad(
|
|
2525
|
+
), this.startAngle = THREE.MathUtils.degToRad(e.angle), this.endAngle = THREE.MathUtils.degToRad(r.angle);
|
|
2367
2526
|
}
|
|
2368
2527
|
}
|
|
2369
|
-
async function
|
|
2370
|
-
let E =
|
|
2371
|
-
const D = new
|
|
2528
|
+
async function YD() {
|
|
2529
|
+
let E = i.GetCurrentDatabase().GetCurrentlyDrawColor();
|
|
2530
|
+
const D = new O();
|
|
2372
2531
|
D.setMessage(`
|
|
2373
2532
|
\u6307\u5B9A\u5706\u5F27\u7684\u8D77\u70B9:`), D.setKeyWords("[\u5706\u5FC3(C)]");
|
|
2374
|
-
let C = new
|
|
2533
|
+
let C = new yD();
|
|
2375
2534
|
C.closed = !1, v.use(C);
|
|
2376
2535
|
let B, F, A;
|
|
2377
|
-
const t =
|
|
2536
|
+
const t = S(
|
|
2378
2537
|
D,
|
|
2379
2538
|
() => {
|
|
2380
2539
|
B = D.value(), D.setMessage(`
|
|
@@ -2384,33 +2543,33 @@ async function qD() {
|
|
|
2384
2543
|
},
|
|
2385
2544
|
() => {
|
|
2386
2545
|
if (D.isKeyWordPicked("C")) {
|
|
2387
|
-
const p = new
|
|
2546
|
+
const p = new Y();
|
|
2388
2547
|
p.color = E, C.center = D.value(), p.center = D.value(), D.setMessage(`
|
|
2389
|
-
\u6307\u5B9A\u5706\u5F27\u7684\u5706\u5FC3:`), D.setKeyWords(""),
|
|
2548
|
+
\u6307\u5B9A\u5706\u5F27\u7684\u5706\u5FC3:`), D.setKeyWords(""), r();
|
|
2390
2549
|
} else
|
|
2391
2550
|
return !0;
|
|
2392
2551
|
}
|
|
2393
2552
|
);
|
|
2394
2553
|
let e;
|
|
2395
|
-
const
|
|
2554
|
+
const r = S(
|
|
2396
2555
|
D,
|
|
2397
2556
|
() => {
|
|
2398
|
-
e = D.value(), A = new
|
|
2557
|
+
e = D.value(), A = new Y(), A.closed = !1, v.use(A), A.color = E, A.center = e, C.center = e, D.setMessage(`
|
|
2399
2558
|
\u6307\u5B9A\u5706\u5F27\u7684\u8D77\u70B9:`), D.setUserDraw((p, d) => {
|
|
2400
2559
|
d.drawCustomEntity(A), d.setColor(E), d.drawLine(e, p);
|
|
2401
|
-
}),
|
|
2560
|
+
}), u();
|
|
2402
2561
|
},
|
|
2403
2562
|
() => {
|
|
2404
2563
|
}
|
|
2405
2564
|
);
|
|
2406
2565
|
let s, o;
|
|
2407
|
-
const
|
|
2566
|
+
const u = S(
|
|
2408
2567
|
D,
|
|
2409
2568
|
() => {
|
|
2410
2569
|
s = D.value(), A.endPoint = s, D.setMessage(
|
|
2411
2570
|
`
|
|
2412
2571
|
\u6307\u5B9A\u5706\u5F27\u7684\u7AEF\u70B9(\u6309\u4F4F ctrl \u952E\u53D6\u76F8\u53CD\u65B9\u5411)\u6216 [\u89D2\u5EA6(A)/\u5F26\u957F(L)/\u4FEE\u6539\u534A\u5F84(R)]:`
|
|
2413
|
-
), D.setKeyWords("A L R"), o = new
|
|
2572
|
+
), D.setKeyWords("A L R"), o = new Q(), o.setDashLineDisplay(!0), o.setDashArray(0.05), o.setLineWidth(2), o.setColor("#ffd30d"), o.pt1 = A.center, D.setUserDraw((p, d) => {
|
|
2414
2573
|
A.startPoint = p, o.pt2 = p, d.drawCustomEntity(A), d.drawCustomEntity(o);
|
|
2415
2574
|
}), c();
|
|
2416
2575
|
},
|
|
@@ -2418,7 +2577,7 @@ async function qD() {
|
|
|
2418
2577
|
}
|
|
2419
2578
|
);
|
|
2420
2579
|
let l;
|
|
2421
|
-
const c =
|
|
2580
|
+
const c = S(
|
|
2422
2581
|
D,
|
|
2423
2582
|
() => {
|
|
2424
2583
|
l = D.value(), A.startPoint = l, A.endPoint = s, w.DrawArc(A.center.x, A.center.y, A.radius, A.startAngle, A.endAngle);
|
|
@@ -2444,41 +2603,41 @@ async function qD() {
|
|
|
2444
2603
|
\u6307\u5B9A\u5706\u5F27\u7684\u534A\u5F84${A.radius ? "<" + A.radius + ">" : ""}:`
|
|
2445
2604
|
), D.setKeyWords(""), D.setUserDraw((p, d) => {
|
|
2446
2605
|
d.drawLine(p, A.center), A.startPoint = p, d.drawCustomEntity(A);
|
|
2447
|
-
}),
|
|
2606
|
+
}), u();
|
|
2448
2607
|
else
|
|
2449
2608
|
return !0;
|
|
2450
2609
|
}
|
|
2451
2610
|
);
|
|
2452
2611
|
let n;
|
|
2453
|
-
const m =
|
|
2612
|
+
const m = S(
|
|
2454
2613
|
D,
|
|
2455
2614
|
() => {
|
|
2456
2615
|
n = D.value(), D.setMessage(`
|
|
2457
|
-
\u6307\u5B9A\u5706\u5F27\u7684\u7AEF\u70B9:`), F = new
|
|
2616
|
+
\u6307\u5B9A\u5706\u5F27\u7684\u7AEF\u70B9:`), F = new AC(), F.color = E, F.autoClockwise = !0, F.closed = !1, v.use(F), D.setUserDraw((p, d) => {
|
|
2458
2617
|
F.point1 = B, F.point3 = n, F.point2 = p, d.drawCustomEntity(F);
|
|
2459
|
-
}),
|
|
2618
|
+
}), b();
|
|
2460
2619
|
},
|
|
2461
2620
|
() => {
|
|
2462
2621
|
if (D.isKeyWordPicked("C"))
|
|
2463
|
-
A = new
|
|
2622
|
+
A = new Y(), A.closed = !1, v.use(A), A.color = E, D.setMessage(`
|
|
2464
2623
|
\u6307\u5B9A\u5706\u5F27\u7684\u5706\u5FC3`), D.setKeyWords(""), D.setUserDraw((p, d) => {
|
|
2465
2624
|
A.startPoint = B, d.drawLine(p, A.startPoint);
|
|
2466
|
-
}),
|
|
2625
|
+
}), r();
|
|
2467
2626
|
else if (D.isKeyWordPicked("E"))
|
|
2468
|
-
A = new
|
|
2627
|
+
A = new Y(), A.closed = !1, v.use(A), A.color = E, D.setMessage(`
|
|
2469
2628
|
\u6307\u5B9A\u5706\u5F27\u7684\u5706\u5FC3`), D.setKeyWords(""), D.setUserDraw((p, d) => {
|
|
2470
2629
|
A.startPoint = B, d.drawLine(p, A.startPoint);
|
|
2471
|
-
}),
|
|
2630
|
+
}), r();
|
|
2472
2631
|
else
|
|
2473
2632
|
return !0;
|
|
2474
2633
|
}
|
|
2475
2634
|
);
|
|
2476
|
-
let w =
|
|
2477
|
-
const
|
|
2635
|
+
let w = i.GetCurrentMxCAD();
|
|
2636
|
+
const b = S(
|
|
2478
2637
|
D,
|
|
2479
2638
|
() => {
|
|
2480
2639
|
F.point1 = B, F.point2 = D.value(), F.point3 = n;
|
|
2481
|
-
let p = new
|
|
2640
|
+
let p = new BD();
|
|
2482
2641
|
p.computeArc(F.point1.x, F.point1.y, F.point3.x, F.point3.y, F.point2.x, F.point2.y), w.DrawEntity(p);
|
|
2483
2642
|
},
|
|
2484
2643
|
() => {
|
|
@@ -2493,26 +2652,26 @@ async function qD() {
|
|
|
2493
2652
|
t();
|
|
2494
2653
|
}
|
|
2495
2654
|
h.on("init", () => {
|
|
2496
|
-
h.addCommand("Mx_Arc",
|
|
2655
|
+
h.addCommand("Mx_Arc", YD);
|
|
2497
2656
|
});
|
|
2498
|
-
function
|
|
2499
|
-
const E = new
|
|
2657
|
+
function QD() {
|
|
2658
|
+
const E = new O(), D = new tC();
|
|
2500
2659
|
D.closed = !1, v.use(D), E.setMessage(`
|
|
2501
2660
|
\u6307\u5B9A\u692D\u5706\u7684\u8F74\u7AEF\u70B9`), E.setKeyWords("[\u4E2D\u5FC3\u70B9(C)]");
|
|
2502
2661
|
let C, B = new THREE.Vector3();
|
|
2503
|
-
|
|
2662
|
+
S(
|
|
2504
2663
|
E,
|
|
2505
2664
|
() => {
|
|
2506
2665
|
C = E.value(), E.setUserDraw((s, o) => {
|
|
2507
|
-
const
|
|
2508
|
-
|
|
2666
|
+
const u = new THREE.Line3(C, s);
|
|
2667
|
+
u.getCenter(B), D.center = B, D.xRadius = u.distance() / 2, D.yRadius = D.xRadius, D.rotation = rD(s.x, s.y, B.x, B.y), o.drawLine(s, C);
|
|
2509
2668
|
}), E.setMessage(`
|
|
2510
2669
|
\u6307\u5B9A\u692D\u5706\u5F27\u8F74\u7684\u53E6\u4E00\u4E2A\u7AEF\u70B9:`), E.setKeyWords(""), A();
|
|
2511
2670
|
},
|
|
2512
2671
|
() => {
|
|
2513
2672
|
}
|
|
2514
2673
|
)();
|
|
2515
|
-
const A =
|
|
2674
|
+
const A = S(
|
|
2516
2675
|
E,
|
|
2517
2676
|
() => {
|
|
2518
2677
|
E.setUserDraw((s, o) => {
|
|
@@ -2522,81 +2681,81 @@ function ZD() {
|
|
|
2522
2681
|
},
|
|
2523
2682
|
() => {
|
|
2524
2683
|
}
|
|
2525
|
-
), t =
|
|
2684
|
+
), t = S(
|
|
2526
2685
|
E,
|
|
2527
2686
|
() => {
|
|
2528
2687
|
E.setMessage(`
|
|
2529
2688
|
\u6307\u5B9A\u8D77\u59CB\u89D2\u5EA6`), E.setKeyWords(""), E.setUserDraw((s, o) => {
|
|
2530
|
-
D.startAngle =
|
|
2689
|
+
D.startAngle = rD(s.x, s.y, B.x, B.y) - D.rotation, o.drawLine(B, s), o.drawCustomEntity(D);
|
|
2531
2690
|
}), e();
|
|
2532
2691
|
},
|
|
2533
2692
|
() => {
|
|
2534
2693
|
}
|
|
2535
|
-
), e =
|
|
2694
|
+
), e = S(
|
|
2536
2695
|
E,
|
|
2537
2696
|
() => {
|
|
2538
2697
|
E.setUserDraw((s, o) => {
|
|
2539
|
-
D.endAngle =
|
|
2698
|
+
D.endAngle = rD(s.x, s.y, B.x, B.y) - D.rotation, o.drawLine(B, s), o.drawCustomEntity(D);
|
|
2540
2699
|
}), E.setMessage(`
|
|
2541
|
-
\u6307\u5B9A\u7EC8\u6B62\u89D2\u5EA6`), E.setKeyWords(""),
|
|
2700
|
+
\u6307\u5B9A\u7EC8\u6B62\u89D2\u5EA6`), E.setKeyWords(""), r();
|
|
2542
2701
|
},
|
|
2543
2702
|
() => {
|
|
2544
2703
|
}
|
|
2545
|
-
),
|
|
2704
|
+
), r = S(
|
|
2546
2705
|
E,
|
|
2547
2706
|
() => {
|
|
2548
2707
|
let s = new y(D.xRadius, 0, 0);
|
|
2549
|
-
s.rotateBy(D.rotation, y.kZAxis),
|
|
2708
|
+
s.rotateBy(D.rotation, y.kZAxis), i.GetCurrentMxCAD().DrawEntity(new FD(D.center.x, D.center.y, 0, s.x, s.y, 0, D.yRadius / D.xRadius, D.startAngle, D.endAngle));
|
|
2550
2709
|
},
|
|
2551
2710
|
() => {
|
|
2552
2711
|
}
|
|
2553
2712
|
);
|
|
2554
2713
|
}
|
|
2555
|
-
function
|
|
2556
|
-
const E = new
|
|
2557
|
-
let B =
|
|
2714
|
+
function kC() {
|
|
2715
|
+
const E = new O(), D = new eC(), C = new iC();
|
|
2716
|
+
let B = i.GetCurrentDatabase().GetCurrentlyDrawColor();
|
|
2558
2717
|
C.setColor(B), E.setMessage(`
|
|
2559
2718
|
\u70B9\u51FB\u5F00\u59CB\u7ED8\u5236\u692D\u5706:`), E.go(() => {
|
|
2560
2719
|
C.point1 = E.value(), D.setDraw((F) => {
|
|
2561
2720
|
C.point2 = F, D.drawCustomEntity(C);
|
|
2562
2721
|
}), E.setUserDraw(D), E.setMessage(`
|
|
2563
2722
|
\u518D\u6B21\u70B9\u51FB\u7ED3\u675F\u7ED8\u5236\u692D\u5706:`), E.go(() => {
|
|
2564
|
-
|
|
2723
|
+
i.GetCurrentMxCAD().DrawEntity(new FD(C.center.x, C.center.y, 0, C.xRadius, 0, 0, C.yRadius / C.xRadius));
|
|
2565
2724
|
});
|
|
2566
2725
|
});
|
|
2567
2726
|
}
|
|
2568
2727
|
h.on("init", () => {
|
|
2569
|
-
h.addCommand("Mx_EllipseArc",
|
|
2728
|
+
h.addCommand("Mx_EllipseArc", QD), h.addCommand("Mx_Ellipse", kC);
|
|
2570
2729
|
});
|
|
2571
|
-
async function
|
|
2572
|
-
let E =
|
|
2730
|
+
async function XD() {
|
|
2731
|
+
let E = U.getCurrentSelect();
|
|
2573
2732
|
if (E.length > 0) {
|
|
2574
2733
|
E.forEach((C) => {
|
|
2575
2734
|
C.erase();
|
|
2576
2735
|
});
|
|
2577
2736
|
return;
|
|
2578
2737
|
}
|
|
2579
|
-
let D = new
|
|
2738
|
+
let D = new Z();
|
|
2580
2739
|
!await D.userSelect(`
|
|
2581
2740
|
\u9009\u62E9\u5220\u9664\u5BF9\u8C61`) || D.forEach((C) => {
|
|
2582
2741
|
C.erase();
|
|
2583
2742
|
});
|
|
2584
2743
|
}
|
|
2585
|
-
function
|
|
2744
|
+
function eD(E) {
|
|
2586
2745
|
let D, C;
|
|
2587
2746
|
if (E.forEach((B) => {
|
|
2588
2747
|
let F = B.getMcDbEntity();
|
|
2589
2748
|
if (F == null)
|
|
2590
2749
|
return;
|
|
2591
2750
|
let A = F.GetBoundingBox();
|
|
2592
|
-
A.ret
|
|
2751
|
+
!A.ret || (!D || !C ? (D = new THREE.Vector3(A.minPt.x, A.minPt.y, 0), C = new THREE.Vector3(A.maxPt.x, A.maxPt.y, 0)) : (D.x > A.minPt.x && (D.x = A.minPt.x), D.y > A.minPt.y && (D.y = A.minPt.y), C.x < A.maxPt.x && (C.x = A.maxPt.x), C.y < A.maxPt.y && (C.y = A.maxPt.y)));
|
|
2593
2752
|
}), D && C)
|
|
2594
2753
|
return { minPt: D, maxPt: C };
|
|
2595
2754
|
}
|
|
2596
|
-
async function
|
|
2755
|
+
async function RC() {
|
|
2597
2756
|
let E;
|
|
2598
|
-
for (; E =
|
|
2599
|
-
let t = new
|
|
2757
|
+
for (; E = U.getCurrentSelect(), !(E.length > 0); ) {
|
|
2758
|
+
let t = new Z();
|
|
2600
2759
|
if (!await t.userSelect(`
|
|
2601
2760
|
\u9009\u62E9\u590D\u5236\u5BF9\u8C61`) || (E = t.getIds(), E.length == 0))
|
|
2602
2761
|
return;
|
|
@@ -2604,21 +2763,21 @@ async function fC() {
|
|
|
2604
2763
|
}
|
|
2605
2764
|
let D, C;
|
|
2606
2765
|
if (E.length >= 10) {
|
|
2607
|
-
let t =
|
|
2766
|
+
let t = eD(E);
|
|
2608
2767
|
t && (D = t.minPt, C = t.maxPt);
|
|
2609
2768
|
}
|
|
2610
|
-
let B = new
|
|
2769
|
+
let B = new z();
|
|
2611
2770
|
B.setMessage("\u6307\u5B9A\u57FA\u70B9");
|
|
2612
2771
|
let F = await B.go();
|
|
2613
2772
|
if (!F)
|
|
2614
2773
|
return;
|
|
2615
2774
|
B.setMessage("\u6307\u5B9A\u79FB\u52A8\u5230\u70B9"), B.setBasePt(F), B.setUseBasePt(!0), B.setUserDraw((t, e) => {
|
|
2616
2775
|
if (D && C) {
|
|
2617
|
-
let
|
|
2618
|
-
e.drawLine(c, o), e.drawLine(o, l), e.drawLine(l,
|
|
2776
|
+
let r = t.x - F.x, s = t.y - F.y, o = new THREE.Vector3(D.x + r, C.y + s, 0), u = new THREE.Vector3(C.x + r, D.y + s, 0), l = new THREE.Vector3(o.x, u.y, 0), c = new THREE.Vector3(u.x, o.y, 0);
|
|
2777
|
+
e.drawLine(c, o), e.drawLine(o, l), e.drawLine(l, u), e.drawLine(u, c);
|
|
2619
2778
|
}
|
|
2620
|
-
for (let
|
|
2621
|
-
let s = E[
|
|
2779
|
+
for (let r = 0; r < E.length && r < 10; r++) {
|
|
2780
|
+
let s = E[r].clone();
|
|
2622
2781
|
!s || (s.Move(F, t), e.drawMcDbEntity(s));
|
|
2623
2782
|
}
|
|
2624
2783
|
});
|
|
@@ -2626,13 +2785,13 @@ async function fC() {
|
|
|
2626
2785
|
if (!!A)
|
|
2627
2786
|
for (let t = 0; t < E.length; t++) {
|
|
2628
2787
|
let e = E[t].clone();
|
|
2629
|
-
!e || (e.Move(F, A),
|
|
2788
|
+
!e || (e.Move(F, A), i.GetCurrentMxCAD().DrawEntity(e));
|
|
2630
2789
|
}
|
|
2631
2790
|
}
|
|
2632
|
-
async function
|
|
2791
|
+
async function OC() {
|
|
2633
2792
|
let E;
|
|
2634
|
-
for (; E =
|
|
2635
|
-
let t = new
|
|
2793
|
+
for (; E = U.getCurrentSelect(), !(E.length > 0); ) {
|
|
2794
|
+
let t = new Z();
|
|
2636
2795
|
if (!await t.userSelect(`
|
|
2637
2796
|
\u9009\u62E9\u79FB\u52A8\u5BF9\u8C61`) || (E = t.getIds(), E.length == 0))
|
|
2638
2797
|
return;
|
|
@@ -2640,21 +2799,21 @@ async function MC() {
|
|
|
2640
2799
|
}
|
|
2641
2800
|
let D, C;
|
|
2642
2801
|
if (E.length >= 10) {
|
|
2643
|
-
let t =
|
|
2802
|
+
let t = eD(E);
|
|
2644
2803
|
t && (D = t.minPt, C = t.maxPt);
|
|
2645
2804
|
}
|
|
2646
|
-
let B = new
|
|
2805
|
+
let B = new z();
|
|
2647
2806
|
B.setMessage("\u6307\u5B9A\u57FA\u70B9");
|
|
2648
2807
|
let F = await B.go();
|
|
2649
2808
|
if (!F)
|
|
2650
2809
|
return;
|
|
2651
2810
|
B.setMessage("\u6307\u5B9A\u79FB\u52A8\u5230\u70B9"), B.setBasePt(F), B.setUseBasePt(!0), B.setUserDraw((t, e) => {
|
|
2652
2811
|
if (D && C) {
|
|
2653
|
-
let
|
|
2654
|
-
e.drawLine(c, o), e.drawLine(o, l), e.drawLine(l,
|
|
2812
|
+
let r = t.x - F.x, s = t.y - F.y, o = new THREE.Vector3(D.x + r, C.y + s, 0), u = new THREE.Vector3(C.x + r, D.y + s, 0), l = new THREE.Vector3(o.x, u.y, 0), c = new THREE.Vector3(u.x, o.y, 0);
|
|
2813
|
+
e.drawLine(c, o), e.drawLine(o, l), e.drawLine(l, u), e.drawLine(u, c);
|
|
2655
2814
|
}
|
|
2656
|
-
for (let
|
|
2657
|
-
let s = E[
|
|
2815
|
+
for (let r = 0; r < E.length && r < 10; r++) {
|
|
2816
|
+
let s = E[r].clone();
|
|
2658
2817
|
!s || (s.Move(F, t), e.drawMcDbEntity(s));
|
|
2659
2818
|
}
|
|
2660
2819
|
});
|
|
@@ -2665,109 +2824,152 @@ async function MC() {
|
|
|
2665
2824
|
!e || e.Move(F, A);
|
|
2666
2825
|
}
|
|
2667
2826
|
}
|
|
2668
|
-
async function
|
|
2827
|
+
async function SC() {
|
|
2669
2828
|
let E;
|
|
2670
|
-
for (; E =
|
|
2671
|
-
let l = new
|
|
2829
|
+
for (; E = U.getCurrentSelect(), !(E.length > 0); ) {
|
|
2830
|
+
let l = new Z();
|
|
2672
2831
|
if (!await l.userSelect(`
|
|
2673
2832
|
\u9009\u62E9\u65CB\u8F6C\u5BF9\u8C61`) || (E = l.getIds(), E.length == 0))
|
|
2674
2833
|
return;
|
|
2675
2834
|
break;
|
|
2676
2835
|
}
|
|
2677
|
-
let D, C, B =
|
|
2836
|
+
let D, C, B = eD(E);
|
|
2678
2837
|
B && (D = B.minPt, C = B.maxPt);
|
|
2679
|
-
let F = new
|
|
2838
|
+
let F = new z();
|
|
2680
2839
|
F.setMessage("\u6307\u5B9A\u57FA\u70B9");
|
|
2681
2840
|
let A = await F.go();
|
|
2682
2841
|
if (A == null)
|
|
2683
2842
|
return;
|
|
2684
2843
|
F.setMessage("\u6307\u5B9A\u65CB\u8F6C\u89D2\u5EA6"), F.setBasePt(A), F.setUseBasePt(!0), F.setUserDraw((l, c) => {
|
|
2685
|
-
let n = l, m = A,
|
|
2686
|
-
if (p.setToRotation(
|
|
2687
|
-
let d = new
|
|
2688
|
-
d.transformBy(p),
|
|
2844
|
+
let n = l, m = A, b = n.sub(m).angleTo2(y.kXAxis, y.kNegateZAxis), p = new I();
|
|
2845
|
+
if (p.setToRotation(b, y.kZAxis, m), D && C) {
|
|
2846
|
+
let d = new a(D.x, C.y, 0), x = new a(C.x, D.y, 0), f = new a(d.x, x.y, 0), g = new a(x.x, d.y, 0);
|
|
2847
|
+
d.transformBy(p), x.transformBy(p), f.transformBy(p), g.transformBy(p), c.drawLine(g.toVector3(), d.toVector3()), c.drawLine(d.toVector3(), f.toVector3()), c.drawLine(f.toVector3(), x.toVector3()), c.drawLine(x.toVector3(), g.toVector3());
|
|
2689
2848
|
}
|
|
2690
|
-
m =
|
|
2849
|
+
m = i.GetCurrentMxCAD().docCoord2Cad(m), p.setToRotation(b, y.kZAxis, m);
|
|
2691
2850
|
for (let d = 0; d < E.length && d < 10; d++) {
|
|
2692
|
-
let
|
|
2693
|
-
!
|
|
2851
|
+
let x = E[d].clone();
|
|
2852
|
+
!x || (x.TransformBy(p), c.drawMcDbEntity(x));
|
|
2694
2853
|
}
|
|
2695
2854
|
});
|
|
2696
2855
|
let t = await F.go();
|
|
2697
2856
|
if (!t)
|
|
2698
2857
|
return;
|
|
2699
|
-
let e = t,
|
|
2700
|
-
|
|
2858
|
+
let e = t, r = A, o = e.sub(r).angleTo2(y.kXAxis, y.kNegateZAxis), u = new I();
|
|
2859
|
+
r = i.GetCurrentMxCAD().docCoord2Cad(r), u.setToRotation(o, y.kZAxis, r);
|
|
2701
2860
|
for (let l = 0; l < E.length; l++) {
|
|
2702
2861
|
let c = E[l].getMcDbObject();
|
|
2703
|
-
!c || c.TransformBy(
|
|
2862
|
+
!c || c.TransformBy(u);
|
|
2704
2863
|
}
|
|
2705
2864
|
}
|
|
2706
|
-
async function
|
|
2865
|
+
async function LC() {
|
|
2707
2866
|
let E;
|
|
2708
|
-
for (; E =
|
|
2709
|
-
let m = new
|
|
2867
|
+
for (; E = U.getCurrentSelect(), !(E.length > 0); ) {
|
|
2868
|
+
let m = new Z();
|
|
2710
2869
|
if (!await m.userSelect(`
|
|
2711
2870
|
\u9009\u62E9\u7F29\u653E\u5BF9\u8C61`) || (E = m.getIds(), E.length == 0))
|
|
2712
2871
|
return;
|
|
2713
2872
|
break;
|
|
2714
2873
|
}
|
|
2715
|
-
let D, C, B =
|
|
2874
|
+
let D, C, B = eD(E);
|
|
2716
2875
|
if (!B)
|
|
2717
2876
|
return;
|
|
2718
2877
|
D = B.minPt, C = B.maxPt;
|
|
2719
2878
|
let F = C.x - D.x, A = C.y - D.y, t = (F + A) / 3;
|
|
2720
2879
|
t < 1e-5 && (t = 1);
|
|
2721
|
-
let e = new
|
|
2880
|
+
let e = new z();
|
|
2722
2881
|
e.setMessage("\u6307\u5B9A\u57FA\u70B9");
|
|
2723
|
-
let
|
|
2724
|
-
if (
|
|
2882
|
+
let r = await e.go();
|
|
2883
|
+
if (r == null)
|
|
2725
2884
|
return;
|
|
2726
|
-
e.setMessage("\u6307\u5B9A\u6BD4\u4F8B\u56E0\u5B50"), e.setBasePt(
|
|
2727
|
-
let
|
|
2885
|
+
e.setMessage("\u6307\u5B9A\u6BD4\u4F8B\u56E0\u5B50"), e.setBasePt(r), e.setUseBasePt(!0), e.setUserDraw((m, w) => {
|
|
2886
|
+
let b = new a(m), p = new a(r), d = b.distanceTo(p);
|
|
2728
2887
|
if (d < 1e-5)
|
|
2729
2888
|
return;
|
|
2730
|
-
let
|
|
2731
|
-
|
|
2732
|
-
let
|
|
2733
|
-
if (
|
|
2734
|
-
let g = new
|
|
2735
|
-
g.transformBy(
|
|
2889
|
+
let x = d / t;
|
|
2890
|
+
x > 1e5 && (x = 1e5);
|
|
2891
|
+
let f = new I();
|
|
2892
|
+
if (f.setToScaling(x, p), D && C) {
|
|
2893
|
+
let g = new a(D.x, C.y, 0), M = new a(C.x, D.y, 0), L = new a(g.x, M.y, 0), $ = new a(M.x, g.y, 0);
|
|
2894
|
+
g.transformBy(f), M.transformBy(f), L.transformBy(f), $.transformBy(f), w.drawLine($.toVector3(), g.toVector3()), w.drawLine(g.toVector3(), L.toVector3()), w.drawLine(L.toVector3(), M.toVector3()), w.drawLine(M.toVector3(), $.toVector3());
|
|
2736
2895
|
}
|
|
2737
|
-
p =
|
|
2896
|
+
p = i.GetCurrentMxCAD().docCoord2Cad(p), f.setToScaling(x, p);
|
|
2738
2897
|
for (let g = 0; g < E.length && g < 10; g++) {
|
|
2739
2898
|
let M = E[g].clone();
|
|
2740
|
-
!M || (M.TransformBy(
|
|
2899
|
+
!M || (M.TransformBy(f), w.drawMcDbEntity(M));
|
|
2741
2900
|
}
|
|
2742
2901
|
});
|
|
2743
2902
|
let s = await e.go();
|
|
2744
2903
|
if (!s)
|
|
2745
2904
|
return;
|
|
2746
|
-
let o = s,
|
|
2905
|
+
let o = s, u = r, l = o.distanceTo(u);
|
|
2747
2906
|
if (l < 1e-5)
|
|
2748
2907
|
return;
|
|
2749
2908
|
let c = l / t;
|
|
2750
2909
|
c > 1e5 && (c = 1e5);
|
|
2751
2910
|
let n = new I();
|
|
2752
|
-
|
|
2911
|
+
u = i.GetCurrentMxCAD().docCoord2Cad(u), n.setToScaling(c, u);
|
|
2753
2912
|
for (let m = 0; m < E.length; m++) {
|
|
2754
2913
|
let w = E[m].getMcDbObject();
|
|
2755
2914
|
!w || w.TransformBy(n);
|
|
2756
2915
|
}
|
|
2757
2916
|
}
|
|
2917
|
+
async function vC() {
|
|
2918
|
+
let E = new z();
|
|
2919
|
+
E.setDisableOsnap(!0), E.setMessage("\u70B9\u53D6\u7F29\u653E\u533A\u57DF"), E.setDynamicInputType(xD.kDynTip);
|
|
2920
|
+
let D = await E.go();
|
|
2921
|
+
if (D == null)
|
|
2922
|
+
return;
|
|
2923
|
+
E.setUserDraw((B, F) => {
|
|
2924
|
+
F.drawRect(D.toVector3(), B.toVector3());
|
|
2925
|
+
});
|
|
2926
|
+
let C = await E.go();
|
|
2927
|
+
C != null && h.getCurrentDraw().zoomW(D.toVector3(), C.toVector3());
|
|
2928
|
+
}
|
|
2929
|
+
async function IC() {
|
|
2930
|
+
let E = i.GetCurrentDatabase().CurrentSpace().getBoundingBox();
|
|
2931
|
+
!E.ret || h.getCurrentDraw().zoomW(E.minPt.toVector3(), E.maxPt.toVector3());
|
|
2932
|
+
}
|
|
2933
|
+
async function jC() {
|
|
2934
|
+
const E = new zD();
|
|
2935
|
+
E.setMessage(`
|
|
2936
|
+
\u6307\u5B9A\u504F\u79FB\u8DDD\u79BB\u6216:`);
|
|
2937
|
+
let D = await E.go();
|
|
2938
|
+
if (D == null)
|
|
2939
|
+
return;
|
|
2940
|
+
let C = new AD();
|
|
2941
|
+
C.AddMcDbEntityTypes("LINE,CIRCLE,LWPOLYLINE,ARC");
|
|
2942
|
+
let B = await U.selectEnt(`
|
|
2943
|
+
\u9009\u62E9\u504F\u79FB\u5BF9\u8C61`, C, !1);
|
|
2944
|
+
if (B.length == 0)
|
|
2945
|
+
return;
|
|
2946
|
+
const F = new z();
|
|
2947
|
+
F.setMessage(`
|
|
2948
|
+
\u6307\u5B9A\u8981\u504F\u79FB\u90A3\u4E00\u4FA7\u4E0A\u7684\u70B9:`), F.setDisableOsnap(!0);
|
|
2949
|
+
let A = await F.go();
|
|
2950
|
+
if (A == null)
|
|
2951
|
+
return;
|
|
2952
|
+
let t = B[0].getMcDbCurve();
|
|
2953
|
+
if (!t)
|
|
2954
|
+
return;
|
|
2955
|
+
let e = t.offsetCurves(D, A);
|
|
2956
|
+
e.empty() || e.forEach((r) => {
|
|
2957
|
+
i.GetCurrentMxCAD().DrawEntity(r);
|
|
2958
|
+
});
|
|
2959
|
+
}
|
|
2758
2960
|
h.on("init", () => {
|
|
2759
|
-
h.addCommand("Mx_Erase",
|
|
2961
|
+
h.addCommand("Mx_Erase", XD), h.addCommand("Mx_Copy", RC), h.addCommand("Mx_Move", OC), h.addCommand("Mx_Rotate", SC), h.addCommand("Mx_Scale", LC), h.addCommand("Mx_WindowZoom", vC), h.addCommand("Mx_ZoomE", IC), h.addCommand("Mx_Offset", jC);
|
|
2760
2962
|
});
|
|
2761
|
-
const
|
|
2963
|
+
const GC = async (E, D, C) => {
|
|
2762
2964
|
const { locateFile: B } = C, F = B(E + ".js");
|
|
2763
|
-
return await
|
|
2965
|
+
return await ND(F), await globalThis[D](C);
|
|
2764
2966
|
};
|
|
2765
|
-
function
|
|
2967
|
+
function WC(E) {
|
|
2766
2968
|
return typeof ResizeObserver == "function" ? new ResizeObserver(E) : null;
|
|
2767
2969
|
}
|
|
2768
|
-
function
|
|
2970
|
+
function VC(E, D) {
|
|
2769
2971
|
const C = () => requestAnimationFrame(D);
|
|
2770
|
-
let B =
|
|
2972
|
+
let B = WC(C);
|
|
2771
2973
|
if (B) {
|
|
2772
2974
|
B.observe(E);
|
|
2773
2975
|
return;
|
|
@@ -2777,7 +2979,7 @@ function SC(E, D) {
|
|
|
2777
2979
|
return;
|
|
2778
2980
|
}
|
|
2779
2981
|
}
|
|
2780
|
-
function
|
|
2982
|
+
function UC(E, D) {
|
|
2781
2983
|
let C = null;
|
|
2782
2984
|
return function(...B) {
|
|
2783
2985
|
C || (C = setTimeout(() => {
|
|
@@ -2785,52 +2987,52 @@ function LC(E, D) {
|
|
|
2785
2987
|
}, D));
|
|
2786
2988
|
};
|
|
2787
2989
|
}
|
|
2788
|
-
class
|
|
2990
|
+
class q {
|
|
2789
2991
|
static onloadWasmMxDraw3dModel;
|
|
2790
2992
|
canvas;
|
|
2791
2993
|
constructor(D) {
|
|
2792
2994
|
const C = () => {
|
|
2793
|
-
const
|
|
2794
|
-
let c = Math.min(
|
|
2995
|
+
const u = this.canvas.parentElement?.clientWidth || window.innerWidth, l = this.canvas.parentElement?.clientHeight || window.innerHeight;
|
|
2996
|
+
let c = Math.min(u, window.screen.availWidth), n = Math.min(l, window.screen.availHeight);
|
|
2795
2997
|
c = Math.max(A, c), n = Math.max(t, n), this.canvas.style.width = c + 1 + "px", this.canvas.style.height = n + "px";
|
|
2796
2998
|
const m = window.devicePixelRatio || 1;
|
|
2797
2999
|
this.canvas.width = c * m, this.canvas.height = n * m;
|
|
2798
|
-
}, B =
|
|
3000
|
+
}, B = UC(C, 50), {
|
|
2799
3001
|
canvas: F,
|
|
2800
3002
|
minWidth: A = 300,
|
|
2801
3003
|
minHeight: t = 300,
|
|
2802
3004
|
updateCanvasSize: e = B,
|
|
2803
|
-
...
|
|
3005
|
+
...r
|
|
2804
3006
|
} = D;
|
|
2805
3007
|
let s = typeof F == "string" ? document.querySelectorAll(F)[0] : F, o = s.getContext("webgl2", { alpha: !1, depth: !0, antialias: !1, preserveDrawingBuffer: !0 });
|
|
2806
|
-
o == null && (o = s.getContext("webgl", { alpha: !1, depth: !0, antialias: !1, preserveDrawingBuffer: !0 })), this.canvas = s, this.ctx = o,
|
|
2807
|
-
for (let
|
|
2808
|
-
this[
|
|
3008
|
+
o == null && (o = s.getContext("webgl", { alpha: !1, depth: !0, antialias: !1, preserveDrawingBuffer: !0 })), this.canvas = s, this.ctx = o, r.canvas = this.canvas;
|
|
3009
|
+
for (let u in r)
|
|
3010
|
+
this[u] = r[u];
|
|
2809
3011
|
if (this.canvas instanceof HTMLCanvasElement) {
|
|
2810
|
-
const
|
|
2811
|
-
|
|
3012
|
+
const u = this.canvas.parentElement || document.body;
|
|
3013
|
+
VC(u, e);
|
|
2812
3014
|
} else
|
|
2813
3015
|
console.error("createMxDraw3d canvas \u53C2\u6570\u4E0D\u6B63\u786E \u65E0\u6CD5\u83B7\u53D6\u5230canvas\u5143\u7D20");
|
|
2814
|
-
window.onresize = C, C(),
|
|
2815
|
-
|
|
3016
|
+
window.onresize = C, C(), GC("mxdraw3d_min", "mxdraw3d", this).then(() => {
|
|
3017
|
+
q.onloadWasmMxDraw3dModel && q.onloadWasmMxDraw3dModel(this), this.updateCanvasSize = e, this.open3DFile = (u) => {
|
|
2816
3018
|
const l = new FileReader();
|
|
2817
3019
|
l.onload = () => {
|
|
2818
3020
|
if (!!l.result && l.result instanceof ArrayBuffer) {
|
|
2819
3021
|
var c = new Uint8Array(l.result);
|
|
2820
3022
|
const n = this._malloc(c.length);
|
|
2821
|
-
this.HEAPU8.set(c, n), this.openFromMemory(
|
|
3023
|
+
this.HEAPU8.set(c, n), this.openFromMemory(u.name, n, c.length, !0), this.displayGround(!0), this.canvas.focus();
|
|
2822
3024
|
}
|
|
2823
|
-
}, l.readAsArrayBuffer(
|
|
3025
|
+
}, l.readAsArrayBuffer(u);
|
|
2824
3026
|
};
|
|
2825
3027
|
});
|
|
2826
3028
|
}
|
|
2827
3029
|
}
|
|
2828
|
-
function
|
|
3030
|
+
function zC(E, D) {
|
|
2829
3031
|
return new Promise(async (C, B) => {
|
|
2830
3032
|
try {
|
|
2831
|
-
E.locateFile || (E.locateFile =
|
|
2832
|
-
const F = new
|
|
2833
|
-
|
|
3033
|
+
E.locateFile || (E.locateFile = pC);
|
|
3034
|
+
const F = new q(E);
|
|
3035
|
+
q.onloadWasmMxDraw3dModel = () => {
|
|
2834
3036
|
C(F), D && D(F);
|
|
2835
3037
|
};
|
|
2836
3038
|
} catch (F) {
|
|
@@ -2838,139 +3040,145 @@ function OC(E, D) {
|
|
|
2838
3040
|
}
|
|
2839
3041
|
});
|
|
2840
3042
|
}
|
|
2841
|
-
const
|
|
3043
|
+
const HC = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
2842
3044
|
__proto__: null,
|
|
2843
|
-
b64Encode:
|
|
2844
|
-
b64Decode:
|
|
2845
|
-
saveAsFileDialog:
|
|
2846
|
-
downloadFile:
|
|
2847
|
-
downloadFileFromUrl:
|
|
3045
|
+
b64Encode: TD,
|
|
3046
|
+
b64Decode: kD,
|
|
3047
|
+
saveAsFileDialog: RD,
|
|
3048
|
+
downloadFile: OD,
|
|
3049
|
+
downloadFileFromUrl: SD,
|
|
2848
3050
|
MxTools: J,
|
|
2849
|
-
McGePoint3d:
|
|
3051
|
+
McGePoint3d: a,
|
|
2850
3052
|
McGeVector3d: y,
|
|
2851
3053
|
McGeMatrix3d: I,
|
|
2852
|
-
McGeLongArray:
|
|
2853
|
-
McGeStringArray:
|
|
2854
|
-
McGePoint3dArray:
|
|
2855
|
-
getFilterImp:
|
|
2856
|
-
|
|
2857
|
-
MxCADUtilityClass:
|
|
2858
|
-
MxCADUtility:
|
|
2859
|
-
MxCADSelectionSet:
|
|
2860
|
-
MxCADUiPrPoint:
|
|
2861
|
-
|
|
3054
|
+
McGeLongArray: sC,
|
|
3055
|
+
McGeStringArray: LD,
|
|
3056
|
+
McGePoint3dArray: nC,
|
|
3057
|
+
getFilterImp: N,
|
|
3058
|
+
MxCADResbuf: AD,
|
|
3059
|
+
MxCADUtilityClass: UD,
|
|
3060
|
+
MxCADUtility: U,
|
|
3061
|
+
MxCADSelectionSet: Z,
|
|
3062
|
+
MxCADUiPrPoint: z,
|
|
3063
|
+
MxCADUiPrDist: zD,
|
|
3064
|
+
McRxObject: K,
|
|
2862
3065
|
McObjectIdType: k,
|
|
2863
3066
|
McObjectId: R,
|
|
2864
3067
|
McDbObject: j,
|
|
3068
|
+
McDbObjectArray: nD,
|
|
2865
3069
|
get McDb() {
|
|
2866
|
-
return
|
|
3070
|
+
return oD;
|
|
2867
3071
|
},
|
|
2868
|
-
McCmColor:
|
|
2869
|
-
McDbLayerTableRecord:
|
|
2870
|
-
McDbLayerTable:
|
|
2871
|
-
McDbLinetypeTable:
|
|
2872
|
-
McDbTextStyleTable:
|
|
2873
|
-
McDbDatabase:
|
|
2874
|
-
McDbBlockTableRecordIterator:
|
|
2875
|
-
McDbBlockTableRecord:
|
|
2876
|
-
McDbBlockTableIterator:
|
|
2877
|
-
McDbBlockTable:
|
|
2878
|
-
McDbEntity:
|
|
2879
|
-
McDbCurve:
|
|
2880
|
-
McDbLine:
|
|
2881
|
-
McDbText:
|
|
2882
|
-
McDbMText:
|
|
2883
|
-
McDbCircle:
|
|
2884
|
-
McDbPolyline:
|
|
2885
|
-
McDbBlockReference:
|
|
2886
|
-
McDbDimension:
|
|
2887
|
-
McDbAlignedDimension:
|
|
2888
|
-
McDbRotatedDimension:
|
|
2889
|
-
McDbArc:
|
|
2890
|
-
McDbEllipse:
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
|
|
3072
|
+
McCmColor: H,
|
|
3073
|
+
McDbLayerTableRecord: uC,
|
|
3074
|
+
McDbLayerTable: vD,
|
|
3075
|
+
McDbLinetypeTable: ID,
|
|
3076
|
+
McDbTextStyleTable: jD,
|
|
3077
|
+
McDbDatabase: mD,
|
|
3078
|
+
McDbBlockTableRecordIterator: GD,
|
|
3079
|
+
McDbBlockTableRecord: ED,
|
|
3080
|
+
McDbBlockTableIterator: WD,
|
|
3081
|
+
McDbBlockTable: VD,
|
|
3082
|
+
McDbEntity: G,
|
|
3083
|
+
McDbCurve: V,
|
|
3084
|
+
McDbLine: X,
|
|
3085
|
+
McDbText: aD,
|
|
3086
|
+
McDbMText: DD,
|
|
3087
|
+
McDbCircle: W,
|
|
3088
|
+
McDbPolyline: CD,
|
|
3089
|
+
McDbBlockReference: uD,
|
|
3090
|
+
McDbDimension: pD,
|
|
3091
|
+
McDbAlignedDimension: lD,
|
|
3092
|
+
McDbRotatedDimension: cD,
|
|
3093
|
+
McDbArc: BD,
|
|
3094
|
+
McDbEllipse: FD,
|
|
3095
|
+
McDbPoint: dD,
|
|
3096
|
+
McObject: _,
|
|
3097
|
+
McAppType: KD,
|
|
3098
|
+
MxCppType: HD,
|
|
2894
3099
|
get MxCpp() {
|
|
2895
|
-
return
|
|
3100
|
+
return i;
|
|
2896
3101
|
},
|
|
2897
|
-
loadMxCADassembly:
|
|
2898
|
-
createMxCad:
|
|
2899
|
-
drawText:
|
|
2900
|
-
drawCircle:
|
|
2901
|
-
drawLine:
|
|
2902
|
-
drawMText:
|
|
2903
|
-
drawPolyLine:
|
|
2904
|
-
drawPolygon:
|
|
2905
|
-
drawArc:
|
|
2906
|
-
drawEllipticalArc:
|
|
2907
|
-
|
|
2908
|
-
MxDraw3d:
|
|
2909
|
-
loadMxCADassembly3d:
|
|
3102
|
+
loadMxCADassembly: _D,
|
|
3103
|
+
createMxCad: wC,
|
|
3104
|
+
drawText: gC,
|
|
3105
|
+
drawCircle: qD,
|
|
3106
|
+
drawLine: ZD,
|
|
3107
|
+
drawMText: xC,
|
|
3108
|
+
drawPolyLine: $D,
|
|
3109
|
+
drawPolygon: JD,
|
|
3110
|
+
drawArc: YD,
|
|
3111
|
+
drawEllipticalArc: QD,
|
|
3112
|
+
Mx_Erase: XD,
|
|
3113
|
+
MxDraw3d: q,
|
|
3114
|
+
loadMxCADassembly3d: zC
|
|
2910
3115
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
2911
3116
|
export {
|
|
2912
|
-
|
|
2913
|
-
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
|
|
2917
|
-
|
|
2918
|
-
|
|
2919
|
-
|
|
2920
|
-
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
|
|
2924
|
-
|
|
2925
|
-
|
|
2926
|
-
|
|
2927
|
-
|
|
2928
|
-
|
|
2929
|
-
|
|
2930
|
-
|
|
2931
|
-
|
|
2932
|
-
|
|
3117
|
+
KD as McAppType,
|
|
3118
|
+
H as McCmColor,
|
|
3119
|
+
oD as McDb,
|
|
3120
|
+
lD as McDbAlignedDimension,
|
|
3121
|
+
BD as McDbArc,
|
|
3122
|
+
uD as McDbBlockReference,
|
|
3123
|
+
VD as McDbBlockTable,
|
|
3124
|
+
WD as McDbBlockTableIterator,
|
|
3125
|
+
ED as McDbBlockTableRecord,
|
|
3126
|
+
GD as McDbBlockTableRecordIterator,
|
|
3127
|
+
W as McDbCircle,
|
|
3128
|
+
V as McDbCurve,
|
|
3129
|
+
mD as McDbDatabase,
|
|
3130
|
+
pD as McDbDimension,
|
|
3131
|
+
FD as McDbEllipse,
|
|
3132
|
+
G as McDbEntity,
|
|
3133
|
+
vD as McDbLayerTable,
|
|
3134
|
+
uC as McDbLayerTableRecord,
|
|
3135
|
+
X as McDbLine,
|
|
3136
|
+
ID as McDbLinetypeTable,
|
|
3137
|
+
DD as McDbMText,
|
|
2933
3138
|
j as McDbObject,
|
|
2934
|
-
|
|
2935
|
-
|
|
2936
|
-
|
|
2937
|
-
|
|
2938
|
-
|
|
2939
|
-
|
|
3139
|
+
nD as McDbObjectArray,
|
|
3140
|
+
dD as McDbPoint,
|
|
3141
|
+
CD as McDbPolyline,
|
|
3142
|
+
cD as McDbRotatedDimension,
|
|
3143
|
+
aD as McDbText,
|
|
3144
|
+
jD as McDbTextStyleTable,
|
|
3145
|
+
sC as McGeLongArray,
|
|
2940
3146
|
I as McGeMatrix3d,
|
|
2941
|
-
|
|
2942
|
-
|
|
2943
|
-
|
|
3147
|
+
a as McGePoint3d,
|
|
3148
|
+
nC as McGePoint3dArray,
|
|
3149
|
+
LD as McGeStringArray,
|
|
2944
3150
|
y as McGeVector3d,
|
|
2945
|
-
|
|
3151
|
+
_ as McObject,
|
|
2946
3152
|
R as McObjectId,
|
|
2947
3153
|
k as McObjectIdType,
|
|
2948
|
-
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
3154
|
+
K as McRxObject,
|
|
3155
|
+
AD as MxCADResbuf,
|
|
3156
|
+
Z as MxCADSelectionSet,
|
|
3157
|
+
zD as MxCADUiPrDist,
|
|
3158
|
+
z as MxCADUiPrPoint,
|
|
3159
|
+
U as MxCADUtility,
|
|
3160
|
+
UD as MxCADUtilityClass,
|
|
3161
|
+
i as MxCpp,
|
|
3162
|
+
HD as MxCppType,
|
|
3163
|
+
q as MxDraw3d,
|
|
2956
3164
|
J as MxTools,
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
|
|
2967
|
-
|
|
2968
|
-
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
2975
|
-
|
|
3165
|
+
XD as Mx_Erase,
|
|
3166
|
+
kD as b64Decode,
|
|
3167
|
+
TD as b64Encode,
|
|
3168
|
+
wC as createMxCad,
|
|
3169
|
+
HC as default,
|
|
3170
|
+
OD as downloadFile,
|
|
3171
|
+
SD as downloadFileFromUrl,
|
|
3172
|
+
YD as drawArc,
|
|
3173
|
+
qD as drawCircle,
|
|
3174
|
+
QD as drawEllipticalArc,
|
|
3175
|
+
ZD as drawLine,
|
|
3176
|
+
xC as drawMText,
|
|
3177
|
+
$D as drawPolyLine,
|
|
3178
|
+
JD as drawPolygon,
|
|
3179
|
+
gC as drawText,
|
|
3180
|
+
N as getFilterImp,
|
|
3181
|
+
_D as loadMxCADassembly,
|
|
3182
|
+
zC as loadMxCADassembly3d,
|
|
3183
|
+
RD as saveAsFileDialog
|
|
2976
3184
|
};
|