cainiaoblog 23.2.204 → 23.2.205

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/appConfigs/config CHANGED
@@ -1 +1 @@
1
- 1A399589A7FA0F24D60BD94F13E5AE8115690C5A589A312CDB7990FA047720BC82797471F64DD1F668BAAEA97B424AFC036B654B211B783DBD8EBEF0187D49B74FE42AD36551C46026A4763B7D2C5DA9434AE8AB15CDFD43FC924E60FE0F53BA18468531EF46D9137414A3BA203652DA5138ED819550C8013131BCA455D9DD52218372692E708E2A9A9A6273F7495DCE1CDDFAB4A01F7986FEC02B993AC0130210257B818DE3A4302A387F4224C0941C0CEBC1609C68A74DD2C614106F1ED6E6010FD1FA3F703D60016FC52FFA1D5928C480D4B5AE83FB824319ACCA8AABCCA056CCFC7626E140FDD7D93C355816C9022345D4B500F2DACEDD22FD2B73F92E038FE12487D9B3290AAED27160B8005D3CCEB482E7797823990C7FAA3C55D54DC373F6AF71C5A50C4EBD7BCE0D45AE006C24733131F4E3E56FBCF6AE2337BD64D5D5996EEB65FE7F7247E0119C19D2B0FCB201F4D6E70CE8552B76B4B7C13CDCC3219F5E62C61C3551A8E683888862D247C18EFA2B958654C68EEB6B70E0895FBB7590725BDF2DFB6B31F41873D38C08564BE80FE33A86839E1D1F8FCBD9224DDE5411DDF04D48FDE3481287EC7D7456DC75C2EFD5E7F2FFF2150AC310C462032C4FEECE38E827982419B02F20D0941FC909E859E8F2D34ECB2BD0F28857A14490700542D4DF5F90857C4F7F674256928068834170BF4E7EB985251383159125FCF0057C9A80AF7E4181A39CB0481313DC23F86B886D63FBD1D71FCFE962F8041A660E7D46B58FAF136F70B190060CB1ECA335CC044F4825E90DA3A79BE88E31480D0BCFFA4B921724C693049A8BCE898F6B77B1B3085DE9AA3CA43BA63CC580A2DE0D7FD4D0BFBE903683CDBAF92D0D40B4432ECECE5CE35E7F7A2CA9242AB15CEBC1D3A75AE20E1E35437FC615B39EE45AC09AC9A16EB5CFBB7787D4A8B9C0D56A2B5806562774F9494750E07D4BA0ECE4EB2AA7CA8D0356C79E01E33950711814BDA1F8C78BE4AFD32628E618973C6D04818FA930C08628266F27DD95CD6F91D16375E2DB08A324B080185062F74E8738E871840AE8FE1CF0207D3D79FFE9C006B32723359FC25DE9D5431617D930BFA9F12F03F854740349F20CD814C0F9956F34AD1D2019EF4241A17C2054F4EB71364733E31D99C6A961EAC07B8418A56B327960CB99E8410BE95BE732B5463A0C00EF98BE228200B6AD8A9A16320C6141E74D0C35D3B74EAFFDCC9DB9DB01CF2AD488788DEAACE6670BC936E051FCDA8CD523EB7D8F745AC0024BAFB55A0C69919766430048A772A3FF0BA727CD1C5AA4511DA2FAF726D9BBB15BED0A6B26A8D5B85954DD49AFCE1A4BEBE5DAA9F1BA747AD61CF414ADA792AA03770EC0FFEB7E6F3036BAF4E7D15BB3EDFFA7E5D2A2641785290259EC2553F0A85EB332E34C303B0EDBDC651308940100C09BA60B3D99AB01898E168CCB9C60A479CB52A375D15A25C77A42CFCD39EB5E2884569951B2B7D46FF859CA601FBFCFF53D139545D638A28888C8360D3F3A96C3485925889DBAF83B939BE35A81A26A4C33F965C0354A967546DB2EF8163CDBEE987BABD0782F86C1DCD8CE44A0A2768DDB7175E8532EE075ABE920EA6D534F17196402A06D4A607C7DB4E95550EBF03E1707D645F74CE2C59C188F85E83D9102A0AF19F1A2AA0E1C9B9638F73C2AEC2F246CFE4C7FCC23D216973B97542D23DE8164747E0DA14FF0997AB360031A7F28E1B4D1DC65650BD58E49C0510366CF48C84F857360CD3A1329679AC0E63D349D500722CEFAE150CF5A77A969CA99124C9722CD93BA38C372A7756847E02E0AF90511F2643BE81B15196365ABC6BB3BB7CEEC54992449937F4968F92BCDE7B1763BA60F11F4ADD97597F8A6A57A77163AC4A0DDE0FF2067165AD937BFDDB72805AC7F8EDCBDB520FEA695D1E9E2EF341B0E2D96B291788D0C14EFC743ED76B06D7F422AA8F754B06D1D4EEA7F237EF7717B76FD8D10362A1425684D829B422AB72E45D701E65AEF6C1367A18DF6408B451CD4EA46FD7D2C44493C4C90532E2A47E8D3D5243BC5F28C7CE945765E27B51D5269DED2AA7A4F26A67643D6A37AED9F9473230AB17DAB1D347AF30D2C08854DB002FEBDA419D5F6FD876E22C04EBD3B1B3ACC32552F3294C97EDB81111BB2306AE1A9F0FA2279D71F40767AADADFA84449E8660762F71B68CBB44D7045231AD4F56990162729D251029332B7E5E423AABABFDE417F6C9EB6F1E2F574402828A779341E7484A10DDE6E51FB0F0053EC37574D188964B2C9692FEA707F5759AD8A8C72FC0D7119E6AA4177B755CBC3695E3058062F110BAFADF2EAE7BD90AF1BA390A5FB220D9BBD6970DB8418E964AA444E2F34DB78302A491960D02E2D7B025962471C5872D45DC55009836D4FDB5DBD905EB106D677B6D2E156B2E9739607B0BB1DA7D0B6DBF8099B430EC5401CCD0884E713B97819F95968EDE1DF006D514AAF2E7A3396CB27D25173A294E57765EFF49699C23366585C1150BE9BDA0987FB71D3CF2435A3894DD92BCAD3B2C7E4B7ADA72DFAE4637459B3BC1429BEDCE338F97A624E4567B6B5CA426DD979A9DDCE8FFFC9A8292C3CCD2C22939FB888B6A9D15C94F194A402E4A1BE8D5E8E29D338348E769363B50A3649874FCF3683D788801423FF59C2A3DC1255377D70B4E8295F091B7DF4144684F6AE64641B5D91D9F3ED3F5F4A18BABA1078F1043FA7F2477A77EC849991EC50E45FCFAA31E8403C2EA7EDE8F038872F17783858C6C0D6BBB18CD854D49D1D920BE5D4D3D99348092D8ECEBC06E7C7C4A4CA65B33DBA26BB94A52C07A06C9B4F795300888FD4FDCCCB7F77355E1E229AD2EAE0DBC5363D9ACEA88D974052AD6A233C9A0919093DB4B01AF61944FE43667FFBAF0BB39FADF40BB9B1C0B1C0D4E1A2A6684815D9146BDE1C789673B7B6B71874680ACCC0E86096AF9E0F38EC49ADAC7C64A02F9248FA16B5315FB3CC0FE0162CFE8B15598E2F8ECDBF3A315808BBFE93C6A1EA66133742CD6278D32351E0A04D2526704FD7FEDE05A35036F395E7EEFE8B56415E3E04AEAD4D9428AE6E7E07D5460B5EFAC5CE9865198B336E52E01BF3AD828E26EE6A7FBDD905D1A089265D7CE44617A846CE8FFFE81C8F79DF6D52111DE247AA769E03F235CB21DF5668BE74AF4606FDDCC2A7BF8C4CDE6B10E8CFE546B7595D5F0CAB09A0D9C08B235C7E5BBB5CFF4D839BAB7A1CC97E807D9735BF63A6F15B8812B7B4DC0A6ECB30D45BEE916EDAE3A76DD4E231399AA4FA4419502841D3086EF7D1EA70CA033BAFAD7F58740F5A126CD858591F5420739EAF58B8248706B18A5F944B4A082D7E7F2C1862F7D8EEC8B470288DBD9EB3712DA3A3635C365E887F4647B7DADFA675E88A27241DD7BCCDD20919524137537F01A29A2C94288B17BBA069DB51AC3B9CAECA1EF4E5FDAD629DCDEDD8A337C3F571FD15AEFC44EF77DF1CE55F3E073837F542C3DC92A1ABC18F772E2D450E4AB8D832AC2706AD8BA37BB27337F3B565B699D5C7EA784F3DF31B136A251BACBB30CA321FA74FAD03DF51599A7CA3785D4415BA91EA257464D0612411E388E077A796458BE8F10340859DBB9EA464854A4DDE14C5219C22F73F30F65CF97DF1E97F712DDABC29D0F4D64BC4497C3E772AA1706B19184E0E6EA685E6A7C0990DCC855261A6C3E65531F5E3CB874B56E3B4C23A53706439CAE957A185430A88154C248726660626496055F0DBF28F21F2434C8200C4E538FAC1CB332FD77F948D47A4D752DD6642030C2A7441071F1BC72F584A19224347CA2E0C240EAD4ABDD5785CA8147670ABFB6EFD124BFEE9F5EA8D6B2518105772ED1F4BFF1A8D7A9E4A45A734F6FB60F73F142D1EAA701B0D531428A3129A9F2E25B6459F008940077EAE437ED0DFABD9D41889B8FDF246E6D9DA05F15F161AD8D96861503B3FF0C7132AAE3C9C1D4684159F7B630CDD8380B2CC85E0B04BE73EDE70AF2875BDEEFC0AE1B8536797843B0FF2770FC482298CBCB3C405AAD15333353EB2C94E3FBDBB4F733536FDE995BB373E753FC0D78D5FCCF034D23009D3CC8FE105AC1252204FF69E2B5F6510527F4B0EAA31FC0BA093C713795C1D269354CE9EA7EBDE62380B10EDBD18E47CF098D98C2A0B9F79BBF8D81DF269EE1CE99E22B3CDEA3CE0BDEAB0CDF36F813339CFDBC84204E1560F4DFE67C0FEA6137CD43235FEE074D222BD9D8A5F3DE882B9BA9D8C2A08FA8A32CE2DF4255CDF579E29EF6EA171615113265817CBA35E2183368EA70BE76557B87E723946E1B73DC02E97247C2EAF809D8D7D1CD3C3C798B2D20AA0AA35284514ED327D378EF8F979062B728972D4B04B9E98903D8A38E5EE15F8106D61F9CA1C6D38EFBB57100C03D2FF5B57B09BE2A97CF8D1A352C727C213921297FAC857BB0D597722666B0412A55601D2CF17B010AA63F050EF40BE0C9BB9B574D2E145B80D27D34E606768D251337AD32370D64D8B6E8732524194F1EA3B29168342B96B887A3911F7D7A19403DF77867E04687E184FD74BD25E98688E80C20C67431FC956BFD2283FACCB1A0E3605476127D23D3E1B3C46334B6E70FA39D29FB81DD3804328CB4F0BDC218A33D462F712D3C57D49004D5B3BE0B4804C2FF113F45D92FC75FD6D18E3D7F9F62155D27B6235C3E6495C1969EB4D101C7A20906A372002354D117E6B15A081AAD4936B80581D765D1ACB9C8C381D1C95CF6D6BB33C9B93E794E46F94D66D6FA0119175D5EC65B53FD0CC07D7B6B6AD549D8D71C690D32460E7E39BA8E8D867721FEEE92C7BBFB9DD63672F98E74F1367B1F36973644251CBCEB55CC4527BD519B976B7E1C5AC11D0DC6DD9E9ADE263A6E8FEF8E59EA38CCF767661B7EA3EEEC6A72CB82674F72E95D9EF03D28DE3398F2BE7C58B54F1F18DAB11E719EB9609F8A6F6AFAA75588EBEFFE6272E63A77D8AA74D48F1C581170B5E523D0BF3529FF65929D2021B362E3A65A173D646D99BEC88165D73A25756D508ED6F6B61B43807DF52BF14063EE67D101E8CB5EEB97AE45E9C210EE4CE2B34AB956747A9E6F4DC8BED28A9EE809679B5E9EBECD57DF56B108E7F9B47D72347BB6D2E635B24EDBA7157E822812D5348BC28D66E81FA297FCEC7037CD10DC36178B5B5B6971E0499CCF5EDBCC698A3B62169460589C272A9FFD0A0021A17A39AC91C42A44BE9D3FEDA9C61FCCCF8322E2EB995EFF38A3DEC781FBAA343443BE1DCD3A63BDB5BEF8D6754E710DFDCBEE063B65B0C8D3AD601821F1020BD19ACB51206BD7A02A34E893A0BD620A608BF0250EB4A92202093216147D2B765F4E643DAC94B305DA17DF57A3A195EA24B7E5198DAC60883E3E8F338E51497CE0C387CACE9B8A54717535271A81D309CFE6E38ADD5F787696A0914769BF46CA1D3339AD713658C34FA3788EB1249C7ACC7F73388A1F7873EB2A2DAD44D31080FEC8C6F3C923408C00CBF39625AC6B3FF7F197CCC7C3CF461BD735BB93562636D5BD998AD64987E882A0B0339EA59C16E0E0A9CFCB0FC48D5B9C17382D6B13F2F44DED7FA20D3877AB5981DD71B83B1506E3842F37AB0F4A52D208F4C4A5C9F52B45E9C0291EBE19A645C89AFF0F2319E121EF29419915120C63FD9544D5B29916AA48F4DDE4EF5A0027E374378FCF3C635C218CCF0E62B9299170F178CEFA18D58B98BFEECB1A09C2CD8373586E1D356CDBE25B2A328F75A8759FA5AA4D1FE01F2107188C8AA23BC30BCDAF6C4938EC0052C7F61D17FC886C37B174C421457965CB8F9594DC92279C7BC6A7329227398FD0F7E32C1A64DD2A8A0EE7D60A7A2307D0EBF5A4C80E89D1CF1F88AC5B4F84FC157B9E44C3FA2CDB8560A097415FAEBED58C69D030DDF7DEB64C6D811AD3EC68ADB102AFD1115F52E6CF1FE250B695F74BEB2E04005C25A6709BB915E1C6CA0009457E7DCD7D35A973FFF822213FBB1BEEDEF047AAEB85E450FDD04C062CF2D4CF01BC63D8BE6C20EC9D88E67A68732D305F8B4E5918A0379E1FCE16EA44719A742E49F3DFFB423CC40D8AD8D8D4C64D15473164DF5CABE225993C7B115E03E27029975A5EF2F6B4D31CB559D43963B04B31806B933EEA2D9C5BF9DD910CABBCBB3704AA684EF0FE0A1ECF8809CABD99AE95E574AA9109AFF62E30F7105BFE4491AD07E5F99EB2446C651252B422CCB3B18CAB4AB0C8D5FE36D50C414E5C7484A085FFF1B96D1CC171C987C4336A8AB64CF677CC289F07D436CEF3DABCF06E6A9353B1AB780A4B1BA942EC915887071344FDF68E558345104B836317F7F91FE95FA12D09EADDCADF8826DE54F9448D3EA4A0446888DFD657882C3C86629F1F217C250B1AB72558BF9873C38F1A2242B5EC347BD93A190F1881E90DF7A8E4033ADD423E057FF7E26552F7F168FB7382D0D54EA2C4391AEF10E03961EFA1635DC14794CD2A1EE902A96D3DC71FE086667479C0F169A872EA56F405C3432E2F88EF87B1EF1030D7BF2A91012A13A6B3FB0351377BD096B398CDAAE9960FF61783D291CB01D40F7A29AC09E6DB01DB3159A1A53EDFFBBCB06F43AF6E9F78AEF5BAB6136A495C21CDB55C158D4E6C2878BD01F1F5D676FFC61F477053E0F87221F01E0F704CBE39DF497879E352AC249B57DE247ED462E0B00A9858E841E40311630E939A5B84D1A861492323893742503EDA8CE81D323892E8B407998FE39C3FEEFDAA1D9979BCE8B346BA6C6E15A429E81FD6BF49935FC25B028C74906A25888D2888C29D94CD63D9614BCC713F7EDB33CF99E601235A1912A7E4836432D31005A0167E1AF3926FE4ADDD808A88D8D1A8D4D59D3F0327EE0152C2BCF52498742039BD7096CF2D387BD3527858A081583C36BBC1995A4A40475C320113C1535A49573CC2E4F77C7BCAF309700AEA09966FEF33D8716586F1830856081E6F83AF5DE407EBFFBC34AD7A1DE15E9928E96E22ED48837534342110342506AFB345B58CDEA16ED78C4BB3EBC567B0F3A1A509F0C028738DDE7EA52F41352A4564E6706723EAF624FB7786A3BE2A9277DF0F1D53DB1AFCA03B7C2DE8F3F06485548169E4304B588CFF76EBEEFF1F70C405FC5534F9390C2A42BA60D16EAB35B333DA857C7ECDAD804A7B212FCD60A171BA8F24494AB5A90BD2C84497EAB3D5CB871626132DE3C99C7558A6C02B72BCD0CD953BECF0415C49E8291B59A5DBBF38FDE81E3CEF49522B65D17F756E76B54F9A4D5592CCEA5F0D3E6605B11ABFF999689A14BB21D1CF1C10005241CFF7898186DB72247E23C1028D07DFDB8596BE36365F1F705CC120890605FB97BC2F8EE03272622A5C39CCB07B2C05F25A35ED806769BD950C03BA263CD5F4C4740C8623B7C3AD0FF601C4DE0F2ABD2E3C5C2D319FC8C04D3BFAC754C57C44C3DB4B4CD816A5BD78F84CA3A4B0AE959BABAC9EA4DCBB48F9A45B6F8C2CE12B6A8CC0AB8DD89D561E62F3A8293DD939DD2F80F0F17AD3BD15525AE16C1FE1C4833B1E04553D059A6D3C096A9C082C71461B29454DDAEC08C55503DB311922517B9E06533590ACB63E797F98B8955F8A32E84027D71ACB2212BE5CA3DE0D2E55F45E1F041742E8B7F975C8E256683145DF3CCDA2FC193248CE5BB65880A9204E7E465DB9CE57FBF91077914027598504F7F8CBA8E8289DFB8C1D18452E8FF229E57B9E350199F25D2EBAF3ACE5843FCC9CC96DC76ACBD53F7DF91DF6E8E1C0415DDF0FE2A53DF7BBF4F91E7A255024B389993CCA6BC04ADD5C8D79998F6664B79218D1BDAB59096DB2DA7D0870FF25D8ED19375D6F350315D2F6733A0F94B8E163AEBF3D75598F0643B54F620581FB07248D47B93D7BEA9468DA88BAB3261A950D8E44D0E3741CEF30237B1DC04C1009D35B6D263199F6A8631511FEF1CFD13DD378C0CA202952E86B7B57EFF78F0819E1916C3546AF5523A256328FACCF8FDCF03327F75BACA40633681167339E26BF93E0E8806278C5C4F01CF6EA5C25DA4178118710B7563F8278A5EC9AB26052230C967F2B239DB4E81947ACAA49D0222F4372D6122EF485AD0F09F31AD6C3337A5198F300126E30846F848F5FCDFFDF2D114B6C9FD52D9186985C5BB99195A2924E8F97D0EC78236299E25B3F4AB23429A452AB6CEE8026CD4364E4A889F4B09BCA4B691F68FA97233BF15B818AB51CDE056DD44CD6EBBC9DFF87BF1F86B60BBF46FD7C66F78F1C4E1C118F71E2B3C3FBBF08C511725CEC7C06A086FEE85DF0714C5559A15B86A927FBE8BBB5BEAA0931B52F1C69636E42D1CF2F627704462F4C4CF0C2DD809A859B692CB6E4B5B79C4E0F4C0B4BB6FFEACD4090BE12DD51B766FB1F1520738332F31384B60464BD72D3D2E183863EBC83B8538951C194839AFFEBD2587F4A6A4B9A9BE83DFA82D2FB262228B3E9BB6EB245E747850D6A10D7815AB95D69FABE4E64BC4177B348C58E4689E17B12BA1168582AE116B1CFDCEAF71B7F9B8F1A89F81018DD23D93DF3CBDB69C1FD27887F42F8902F95C899B26C3B44FFED30972B0B4D2EB1EEEF1AAEB1F7B730A557FED6248ABE8EB8B49A268F349A80E83A6359BCE04B4FEB4A6E997BC302DEB7773CDB09D6221C68A419D09D9E9ECB3EBA3CD5E2E57A9A05D0744AD09745135F8A60A8D0FD3E5F67CA624D78B5383A99B5777C4F34A8BE03DB3B8BCA5E433DB130815E4901698DB04E206DC23C2F0C7A3F3CA96AC53860DF21783DC3E9A4AF680DE6343539E8B3D40FE38CF8354888AE7B51B85AB305391520AD7B8F2D7BB08B34D11AB1CBD3AC2CB37C550DD05BC10CDE69F5A79E951ADA5CDA328EFD13AD9965FC0B84217AF2E6C573FAA1490CB5322AC689576D8C12F94070EE721B290941807083DF7C8041AA5F9293AFBDAA61CA544837439EDBBFF7F458A7DCA4E422CE2D31902E88CCB2D24183C7013F0214CC4B0A03ED677E5C0CBB4328B8241F9ECC573AE8F7D9117B91E965B162ED891ACBF0A46C21556A03F36C709AD37B2036BD52E9D2F140B5EB246612FCC89A729A83B4EC904A24E8241BD01478FA3D4707D480BA520CD153CE6BC39EE280E8634D64FF47FA5C09C0D7FA1FDEEA5A6DF35EDC3C49BFB5F766F5D5B0C0F96BA788DED2148AB61A78A7F37D7CC36DEBE9668037A803435DBB2EE929BB09C942409DC2E23DEF865B9FBEE1883C6E976595241FE2EF49EDC4CB20E62F224EF6116EB12A5EDD2BBE4C0B55B457D268EC65933822BE9CE61CAA44635CC88413B4D29CA18841229BF9361921FBB3B65C759B39A6D18B625B4D7533EBE75736160AD239077FC72C1FF076C4BAF585BE2FF51EE81161C767814C3075BFE1E60CC0F999ACB22381FCF8B5BD35D32BA9FFDE9F4A7F6F0C837C430A748B2021BAC2D14AD950E3D506A4DE31CBC1735CCA2FC3803B26E5203EC5D8FE049413A433421728ED19AA8594F0E2860F38519A383A313762978F5F1BD9721C05F7195B79479EE01D3BD547AB7B1F299E02C0C0C5FA3334588BC3C703ACB9CAC4F919120CAA4561D2D8B0F613A4F7EE46231E28B4B39FF67AB4A4F570D97766999F6030114840F217CA040221661D53543F011AE1A287871236575EE72576F709B3768B0CC7581C3715D4A39A9AB4F9E54CD87B683C346411F7D0CC95C0752CC778D51EB1C4B7F44B04B903919FFEBC47F36E0C64FEBA202BF122E9FD6F2CF06513F06A63A5B8BB31FBE9F4CDF21EBC9E164C6489C6D5E0855907C3383774A31F4191C94632885DB943FF5F9756C9FD443D3398AB5276580E2DD73D905F6646A1E454F7A5DC0764E92C6817546DB9F31EBCDD19585D8C8E4F4CB718766FAD2A2F920437FD9316B959870515510436F1B617604454649078F8CB8192A072B95AFF3FA4BB51E7EC0BAAF36587BC9B11346598D59EA232FCA2979020B3B8DE38E638B7461B077953F0BD83594275197807BF8DED6136F6B076D3CC91998E93684D89FD88BF0884AE2C3FCF292DFE49842521CCE2F2E45316D69D7A2A02CC8D2F9318234673B324077E75F24D5D93C5E646F45D0DB76A34113A813D634FBB8351DA3BB3DA5F6F60EB09371CA4A7EDD81636032D93C916C5649A9E80EFD4E6F8A6CFA5EA241D8B6504016D6E6BB97701236F6682F13C1AE3946CCB636DFBD710C43207D9844E8E2A32FE738DA0EB28F79F87518D8EFF4346C589CEE869A4B0F4799B4A1EDA57D4DE835ED97ED2813AC301AEC95BA25F017A627A4154B5A10448F9118AE0406A211D0CC05D02FCC101CEA5DBA8E8C3F57C451F0A78337B1382DBA81228100E4AC17E6653342300EB724BE9C564EF0D93E51C0969874131193EB23C5B5D198E02E0E8AD1C022339FB728D6381B9FF86359A7BA459D5D79E70B16B72DAFE0A7222E7C4F306644F59B2012AAD6CD569A3F2E8F4B19C14B29A6D2ACBEFCD53B6E49D764E553F2DC673655EC24ECE3B0283428723B830F11AC341170CB414815BD03EDF19E28907A435DAA2B42118AFB607C8E5A94D670EE089AB413F6D9CB8A3ACA5F5CBF19B623472A617931E1AEB25E8CF5DFA2CDC1D7A8C4BF941674BC50AA05F419D4051BF8724B903FC6CC65760A85F58410D5BB7CFC06CA9D848DB6FC44A8FD3397607594863CEADE8938B50BC01384F90D18139349D37EE9A7B8BE3B0804691CC91CC6D35757FD8545D5A82EA04F343029893989C1375500C38EFBC232AE7A8D72F7CCFC7EFEAAB6154E4FB8ECD3546EF27D8EB615BE2DCD9AFA13616A3E071F3DA8E214AC40DD70E0EC344AE6902163ED8A99826279C26FA463757CBA15E155111513B4D3254E346F52BD512B7562D9DB153EAD4D1E4E1E3AE5E915EC4BE90BC93F33CAE82A94CFA2714C1D6C0C3880E13008C80AA3AD7EB634E38E023CF9E359BBF0C3CDB5B0C3A19C5CDDFD83BEE8A3F5C8B5E0C54432E5C6B2906871212ADA6640D0E8B27FCE5AF55E2B2CA26B2E2DD627DEAF973E7C21A6C8336F31FDCBFF34659B8686BB3037BFB69247D4BADB7962D022E7C8685317CE599934025287EE09BF1120F7D683CEE99731CE0AD249C22BF44C9BC32AD2A5CCD02080EDE07D03FEC53CF3A4EB3A07C696C63EF8CB8060D6984D24AFFA40C94ABE329C1AF84C3A98A1796C01B66376652E4274973043900E4643E82581B765A9789501529C6D6960EE48E76AF61999CD015D2EC2347477CEEF9DD3D3971812FB1EED4F5E2A19AE62F237B563834DA457E9C9228E1B278585827EDAA5A883FFE01744AEFDFA6C4EE14BEBE43DC49F9AF4301647ACC68FB7520EB8585EC9B16D18F27E80A354532119478EFDFDB9A36A0421C503A53F7563B91CDE222F0E028352396C9CECFBE853763C4AB83C24A7EAB3BC8429ECA3A3CAE9FD20D1688FB099312B46004291240140FC63D1450C9AA81D4F40C7E5F67EEC4A8067D9438E69BDF1921CCD288A4406684C444B923C547B739F5E9E1E35CB2CF9F8F01EFC560A9455A5C7B96C7FDAC50463413C738F8CC36C2F902D32FBED672E9D5C9BEE029B13EA3DBFDEFAD0F670961BCDABF10A1A441705E2274E0D15259F250F045316C4DB0C4FD64BDD901E3F2A788420C41DC8A67E3F5CB70D9B45493ACD54AB4E4DF5349198E6355651A09FE2DCD4B3FA0FA58B80323F9DC0CAA5B54F0FE8E8F512E58AD6BB27BE4AFAB11674EFF27F32FE3A9DF3F32D6C40098082116F70DBFE1702EAEF0F6D122974C74863C57F78D7751896FEEB1DC921F07BBD6FA4EA5CDBEF991961B39C2897507AAAB26F7219E4132F217A2BE717663C7C9AAF4B336C6559551C844B2186D9FA0786DB1CE3B66F67E7B616A6D7D3F16817602309CC6D45114530BA8C561C377D79837FAD0D74E816701527DF22C4484DD3DE0DE082BE6C91BBB379A757C8FE888D1533B1E0BEE624A3B7C6CD64416CCEF3DC6606BC8DDB59B510A477D2DDE9F201442550320CDECB7CFA3928EE6F322FDCA3211D72AB7EDD2F2211C019A4268F9393D0E095B1CC4B69F2C6BAE27722AB29CA8FBB1C7F7852D2D6AAC8F4903C623B28F88FF69F7473939AC41B8A4F75174F09FDABF965E443179BA9C81A959792A3CDFF70476A6C941BC533B9E82A4171607A2453FA14B76670684DD109241A5E3800F4D082826867FA8657E10A33217D64ACCA9417D20B9F34D3F0A8DBC95F9B77C4F295647C93EE383109B9BCCACB5A62CDFB75FB5FAB9F8F19E7AC3A05F09AB7F0735FBFBCDEA1387D4AED174954CC7FEABE42C3F08BC1346D484DCE54BBA00F362230165834B061107C4B3BA113A31D45D58FBE7F27B0A3BC08EF7041E2DCE94F7D2EBEE5E585849BEB09D87C7444DE4E7F22CD20F8E60DB3EC8730E17BFD8F448E9654491DDCD6069DEEDB115A23F95C3867F9281A40427C4FA6FD4A3CE0086B0C5878ADE4F0453B7B475FBD4FF1E3F8B493AD4D34E2E83E31436289C562730472DF2C211967964092216D235B53F34213590D0BF320F6A18432161D8C8F1FE6AAFB275510B1CC1D240E6EB523FFCE368C260659A8DB3F6467CB218ED07A36EE1FFA071FD434F2FA839EB333D4B3C0969A341C963C15BB5E7A40764F41E6E1C547D6F1202D7F6B6C8E797F6EF0ABF6B9E0EE38446E952E3FF03CBBA430B3B3FE218FC62FBB0AC1D45DF6F0E687685C2DDC6E6BF977871A031999D64C1542A473B6065F01026AE254C995F956F53640DF9F08F76A96AA0F680232111FD2CF2B5C785D3CCEA4E2EAF1244F4EEB94B145158E442F3465E3C7C51849D9E05DB127EFD7FD31803827CDD0DC2BDB1E7D7279ED25C5126F395F41641108E4802E4ED9CF86D27BBC174BAFC3C2D14298D82D4A20A272B9D169379B7C1642145038B4C8F3C3E8A5D1E87A3EAEFAA86DDC093B63585B62516E0A7E56F3B5D619FD831CEA087CEBC246685B219A40C059CCC096C7F6F40E21F8095B4104D627CCC40439AF637EAF60466043BDFEB70B3F2D976B74ECA16BCC5999DE09962E0E6BCA047DCC1B26CEAD96E57CDDCA38814207E9E597CEFE14A31AB284737945A3122EBA7D9D9BFE6B5150342DD2BFA3D74BB5CB08318712113ABCEC7B7902AF8D615413FDA580F507597FDBA8EFC63A1771BA365F940321C33074C0A61F08AFC4748AA24DC37974DAFD0FD712B1BC989004E664C56254EAC42E3CFB8372E57BA414C61584190B784A2A7D3233DAA7731884C747B7AEFBD0AE692C1FC20E0D7FD5D3B51D06D72C713002748721504D7221CD11A4AEB79365E527D52890113CC5DD50B0D5BB0B02ADD774347908BA3CC3DDB1A51C76F95D217E61354F73472CF04C927BA8622B5F39E10426C536AADF591FBF0A2D46F9F0DE16BE3C450BB9A2B953E9B325CE717CC38150EC8630792DBE02CD723D97CFCC81D8438022567F4A6F6A2F9F617268805C2F48691EE46590DE0A70E16C17FC985F456FC24A84A98EEF2C9B11EA98689A4E5E877CD004FB304CBD1D46967917E1C15BC9C02B8E41D0B4D25F8B0600D266E71E314AFEEB87C164804AC5B0A576EF9E3BD1B3A5C7CBBB222342EA8CA9967A7BFB1277F266F70244BC0E950AEC584DAFD2CFC6B29A8EFF8545E4D0DAAE1DCB861E1D726DE410863D23B2583E6242DBFE6298E73469CAE80FCC5D81ED60B6A6334E9C74972BD3CCC07C016E1C93803F8D97488C91007956F338EDB48E8A4A5F48BE074C46FF57502E9CB18F8117CBC63692F2854176FE303F3DF230D459E9F8A0E834DEED142E8355155BBDFC0B6247D7F61EC1A1A28ECCBBCCEEA0511C658E54CFD4A86B9A53BE771A75599AA26501FE4735347DE817FFD8DA572E018A0A33D42ACDAAABFDA6CED9DC0D8DA0FF090A0ED7D79014046C134DE294993CC3E80FBE093F7C9A1C52C8772EF299774585C259DC62FFED1E97303FFF67054AE2A351FDC951A752B17A7CE4DC1D619D3B8BFF44AC7E591230923F5D0EFC9D370F0EF1C7820BD240E18433E31708FD90D458A292ED98F2A89F6928A9274FBD35EABA46F050B77E86AAA3855E686403F64D252DC8F99D5FFDA372E072D92BEC4E57C4F52684499264534B7CFBDB03C027761E298517F9BD1E8B94C569428AF52825E576DB1855FEB1BCDC2B5EBCD57B5C5F634AF1735DA4A0FCEDBF98F29DFA5073A12B2D7F84B8BF4312AD7449819B760B2082047EC5AE0BE0D91A54DB98CAE3AA594A31032E7D4C54235A6507ED09F32416A5F35C36B04EF3519318CE9E01B6103FD01790BEAF6E762BE39E3752FE976B3FD79B879415591EE62362E1D3CBFB128549B06C7D81D29B081C7F675C86104DA5A59E68A7115B98CE63B2CA72D0725D33478309BE16B9121CE45ADE627F0EE0DE2176244728E3E2E3971E783A17AFFEFAE3666DE30AF09A757ED81E55F0D96C70160256499EFDCEF758E00DEEDE2DD057558890A9B7BE5185ADCBEB51D789B53ED58ED57DE2F6696FA9B25DB0CCC85C1F4E5D9AC4D4AEEFC6544EA4724CF4745F65546EFA62F8D9D725364091416C219FB268C7F8921EFEFD109E65CFD8D350EE5DC57469F82983571CF9BF26426F470048A2C68363B57485A3D0B8F01D0024EDC0406E6E991E1E954025C8FD8F6DCA6A6365FC17EBB3EFCE8616CC56B64EADB5CB65BE1B87403C8A2C6F7FCD576E048B544614788E2B9B4FE189E7A389C733D6B8F8BCABB9900027A6BB381029F9880F91CFFB8EFBAA1BADE87538917B6F766FB065AE084D2FBBC1AB6041A9A6A5750693EF0564B11A3249D2B1E50750DFD3CEAAC5B54361130E02B047E80703562B4449E91B643B65289A06B8C9C642F701278EEB02D55844F7BC0B4624668175F1C37D69E70D3EF2C89C68B4278A915A1AE9ACA4639B04FA73AB88EA612CE343AD86EE3088191E14FD259991B51A5454C24BCCA57FB6162D04213F25402502F34F3673DCCFDD6F4855B6563E43DCEF727A91D5097EE57321EB74483899CA1229CC2831AB3F501BDCAAF3615A1E729F382E34FE0026CC9070BFC060ABE7F12C386B104211F33BD130BA50346D36DC25934D7D8A21686D7243B11E6F2069410BF4B24169134D618219EAC52CCCDA3D5C82C560A07DBAB2EC2BA9B39673F9A8D0C58723DE2BC9D5E7E6B30C964838C42A4349CEEC142DF6FE91E8A49B123BB772090ED9EBE032F5DE3F3FF3A97DBD7D24C16563C55CDA33A5ED46B38856806F9968A9C856CDD515FA46DAC85657374D8B1C590DCFFDC865769ED8E67825AD68523E7EE09BDA0A6D50D9162CBF131559A9BDBB6249DE4BCE95380EF9361D94D015D4D38D6F6FBDCED3C06C0E70094D43BC1C65CC66CC3ABE70ED196BD13334983857127C11CF2267B339F08B76857C906ABD79A7FA0C75272D3B3523829D3FF47C3DB33D4CE66EBA3EF42E2E07C60CE7DD75FE286D31073D4395D45C11EA261E2FB03EABB701F943FDFC2478914B43B89702277B376B6F10E268B0C4014843551D621AB0C6A4DF0E472FB35C2B5E1D34C7025A8CB9D8284346D748E838636C71AEBE27A520B9F452D5193837C4AC173B16A417613F2A47D48293DC75312DF119977367A55896E809C55F798ED2CBDFEB640D37A5549AAC8B5C581A0FB82A4435B38D433B6F3C6670954419ABEBC97290652EE4A506ACEAB1C1A81077F3FF75E4899AFDDD29CC5BB5DB6DAD253BDBA00FA76D350385C21B5403BAADBF8E120BE18AAA6D428F6BDF2251A669740EAC88D90E69AAAF438A27C0E711FF6CAE470E1B7158473694E48EB713B9FB7E448AEA2773BEF752DFC175BC97AB53BB61D6208724D2DD6027FB775340D2E906CCBDB839CB6755A401C3B1AAFD0514B5933E68D236BD701A315AD28E893362A33A2C2718BD2E326BF763CC1E0000D738C619AB4A6E0BADFF3A3C6F792871D6F96982C15545FE9416021028B1D97ACA64AE25B47EFE298F318298142E10F3EA1D39F60627EECFA3A0665E2F445AAFEEBBA5BF3BCFFB747B32DC00764CF5A81B97F7E6718B5617F045A080B8D4230BC8BC2EF26CA31A2599C0CD04DCEA02D1F508ED1AC06E186F3EE415D5BE41DB1525F42D961B22AB71F38673C648E51DA61C79ED28B39D44627AC2EC52EE291003BB6CFA379287813315C16C14EC7D07C3651BBA51748DF432B327222B76CC9902971D1D8EF98D1B206FE36417B7BB96DAD548DD152E80F64C19416429E885A632ADDCD289CEEC3FD1CB057010EF5AAB74F082D240B69E8BBE6D99C4969F5D26128D7C7EA76A0595C9B52B2B8FCFB19F93D73B17DB30865788A283F33DCD9C27CF9F17CD9F922DA2665DED23F08F82851E19ECD5B6B9CACA5293ABF5E066EFD6A60BA90EB709AE975286F0A5E64FA55C149D0AF498D4F0968964C721F0B928EC0ADBB2EB00AC82DB2CEBEE322BD496AB17A17460C80B345F0FE55F72521F5C98E735F6FC8C0CEBF9A839232FA8332F42AE8B1BEFD65176A02B3F612B662F081FC43993581E89C67223F9FA5B662033D89758D14EE9033FF2524615008312599297653018D137075A7C81389DC7FD89333D8DCC4AB1DA74940E369B84D9B0B9D744B75D7E86AEF38ACCE4F5D827C0B2C9F6821CAA51BF94E462D443E79435747F1B37E4D58FDB8EFAAA0AC697E5757298B22F5F60D6B8C9AB1B8B6DDE9440A106DE79D4A85CA4E81BA03E25DF04F90BE1349429239E3CA6A5803C4222C79E0FDA0043E1AD93EBAB0453687F583581E1312A6672A340E647C48147DC98BA43D50EBD5E5BDE818975586F415251801B297E19F1919905F85A7AC959DC1C171DC3D52B82069C713885905C4F76EFDFB4D4F8FA6333AD5EC9A63441F66DAE62D1B3FBED6D79895B3C4F4CE3BC1179948504A100DF1614DEEAE102839944028B3D8C8DC2B9581A7718BAF72D16DD544A4856C8CDA6C89CA763B2BA2F37343C1603D33164CB7AFD8A2F9669D1A57909655E8A138B1CCA936AE2C9AC09A4CF991133B98655372D9C3C5FBEC3BCD6CC2C57F43F0813F20F26D31709FC7C97ECE35575EC7CD2870A6A461B8CE5AF53AFB5E70DF9FAA219804827F6158A12C0890163F1984BD748AE1A75A0BD1E5149A377E0D2471448CEB14C80AB3AB4BAE4E9D191A546CFDFC66126164CAC9DA5C937D2FFDE3C8BFC00ADCE8BBB6815720A7A9815077FC4D2A53C961ACC8DF9AEC2FE2A3F44E5269BCEA5853C7510E6D80943B0FEAA4E917F01F39F3AF704617EE7BDB0B2E3FDCB55AD145AB69069A178ABE18490B8C5885795E0221E55CC60576614E287C75B590DD97699099C959D45C8A9067A65BC58C2B62DDE6F28F701E19BB2CC64EDDAD5D078019F113818DF01A01C802E57BB47504A690B1E41FF6190D6A5541E5F24C1DFDFCAEC7AB581BE8A5FE22327CF23A351CA7C813F89AD32F8B3161F2625A1A95F8BDACA5F0D7F18B84AFF6AE069C7F13D482538DB9095A19219B437239FF0F4EDC4724998398D7534EB6A3579C55E5E9052B873FB9FF959B3685B53B44EA6711242B4271EE8CD9E138E4864F806C0623F622A3015A7D13342A6F44610EB70464EC4409806C8B3C990A1554AA3EEDC914447D32C6EE3307A66E685C3F431EE79A9EFDEA1752F5574F9C83B28EEDE1804AA84EDCFFD85A95179DAF5137CF852612A047D83DFC3A41124BE3A6175856A4977959A8C8B17DA4D7ABCFC6B41D312A790644592A7E4FE3B8DABCAFF181E4E7F1E6D966589A89F1F88AD7E159575AC7DE25F91D912B90B9B899C53035AF020AC18B91AE9EF3F0B9347B83B2D7D00D3EA495A77934FB7008C15C189625592B07F2F76CCAACE8D9C005ADE6C99130DB1088BA5E7B58E085030CAC186191E03C078D54A719F948CBA7DC9B399489CC90A75038692A58E4A958C593B2C27599B4A4106423EF7AEE1238F46CA1180859602CD658A9A451BFCB39E22B1AC6FB0FD55D7A7357E38B56679FDB9C0670E67A45816713B7E4BD1E2A0C217FE5FE8A8E21972AB9BEDFBBE5A57DA2D886AD2D5B26F305B0AE5066A1F6196D6717EEB57756532411DC1327A851C8748CB76B8DF3A539FCC18683CF0E249E29529E1FE24AE5D3EC46C13473A2F78039C01ACDD126D0449928D3C77F295C39302866FE91FB5B426FEE64FC8589C0B41A0E91D5AE2B8C530D65BFAFDF51AF2546F115B3D26CE075EEDE849C3C135FBC7FE77068758CA4B082B6852999CCC7F3CFCC779D957300941EA96799EBDA4F1B0369812A10FEC753891D1E94AE9FE9E682F3D301F266B7D252CA02831D0E95DDF5DE153D4A26652DE0BC2B65D3AA9F6947A2A240BA0F046ABA449CF87639737655065EA407999D3815C9877DFF5093BE01C7A9AD50279871A1C6A6C80D6EA0C5ADDC898F578FB35824FC8BB44ED8FB7E16E098F1AAA7AFCA358472C902FB536388196361A3EF0D190DAF3184D7B40EF9C69EB671B0B7F5BC5C605584A7D26C5F5F59B2AAE9B335B6A08FF392D0A7F187C77EB83319A96856BE2914002561702E902FFAB76C6AAB8A7FC0A76F01DF841E891769E8E013EF4A0BB4F6C5591C0F848089D7881C733D03B6401D2757E9D462B744230279DA4B772936288305F4A9BCCD5234233800601D68559A3CDC7F2E7E233D3F2829AE2A23F53A5EE331D4AD6C676359CBF377907407363111C2A722A998F4C463F21D8C6810C26A6539928205D87F7AD0B3C75FAD712C3A71589DF31D89AC5566A57BB1CBBDBD602284D08247DAF1E15A7378CBCA471563CE074C60ADE621509B2A6B8FBA000A2B284E1D468E1DFAB4871FD8DAF4AB348A2EE831BF8148F1AA5F1E8AC97CBA0CB851E5242F422AC98F6654D1B32B59099F088991BD0B8FD943D0E48D63A230C0AF52309143D3DF8134F6336E49071E1468E84228B8F9E01DCEBDEA957C9EF3FFE85FCC3AD19251D851D4E51318
1
+ 1A399589A7FA0F24D60BD94F13E5AE8115690C5A589A312CDB7990FA047720BC82797471F64DD1F668BAAEA97B424AFC036B654B211B783DBD8EBEF0187D49B74FE42AD36551C46026A4763B7D2C5DA9434AE8AB15CDFD43FC924E60FE0F53BA18468531EF46D9137414A3BA203652DA5138ED819550C8013131BCA455D9DD52218372692E708E2A9A9A6273F7495DCE1CDDFAB4A01F7986FEC02B993AC0130210257B818DE3A4302A387F4224C0941C0CEBC1609C68A74DD2C614106F1ED6E6010FD1FA3F703D60016FC52FFA1D5928C480D4B5AE83FB824319ACCA8AABCCA056CCFC7626E140FDD7D93C355816C9022345D4B500F2DACEDD22FD2B73F92E038FE12487D9B3290AAED27160B8005D3CCEB482E7797823990C7FAA3C55D54DC373F6AF71C5A50C4EBD7BCE0D45AE006C24733131F4E3E56FBCF6AE2337BD64D5D5996EEB65FE7F7247E0119C19D2B0FCB201F4D6E70CE8552B76B4B7C13CDCC3219F5E62C61C3551A8E683888862D247C18EFA2B958654C68EEB6B70E0895FBB7590725BDF2DFB6B31F41873D38C08564BE80FE33A86839E1D1F8FCBD9224DDE5411DDF04D48FDE3481287EC7D7456DC75C2EFD5E7F2FFF2150AC310C462032C4FEECE38E827982419B02F20D0941FC909E859E8F2D34ECB2BD0F28857A14490700542D4DF5F90857C4F7F674256928068834170BF4E7EB985251383159125FCF0057C9A80AF7E4181A39CB0481313DC23F86B886D63FBD1D71FCFE962F8041A660E7D46B58FAF136F70B190060CB1ECA335CC044F4825E90DA3A79BE88E31480D0BCFFA4B921724C693049A8BCE898F6B77B1B3085DE9AA3CA43BA63CC580A2DE0D7FD4D0BFBE903683CDBAF92D0D40B4432ECECE5CE35E7F7A2CA9242AB15CEBC1D3A75AE20E1E35437FC615B39EE45AC09AC9A16EB5CFBB7787D4A8B9C0D56A2B5806562774F9494750E07D4BA0ECE4EB2AA7CA8D0356C79E01E33950711814BDA1F8C78BE4AFD32628E618973C6D04818FA930C08628266F27DD95CD6F91D16375E2DB08A324B080185062F74E8738E871840AE8FE1CF0207D3D79FFE9C006B32723359FC25DE9D5431617D930BFA9F12F03F854740349F20CD814C0F9956F34AD1D2019EF4241A17C2054F4EB71364733E31D99C6A961EAC07B8418A56B327960CB99E8410BE95BE732B5463A0C00EF98BE228200B6AD8A9A16320C6141E74D0C35D3B74EAFFDCC9DB9DB01CF2AD488788DEAACE6670BC936E051FCDA8CD523EB7D8F745AC0024BAFB55A0C69919766430048A772A3FF0BA727CD1C5AA4511DA2FAF726D9BBB15BED0A6B26A8D5B85954DD49AFCE1A4BEBE5DAA9F1BA747AD61CF414ADA792AA03770EC0FFEB7E6F3036BAF4E7D15BB3EDFFA7E5D2A2641785290259EC2553F0A85EB332E34C303B0EDBDC651308940100C09BA60B3D99AB01898E168CCB9C60A479CB52A375D15A25C77A42CFCD39EB5E2884569951B2B7D46FF859CA601FBFCFF53D139545D638A28888C8360D3F3A96C3485925889DBAF83B939BE35A81A26A4C33F965C0354A967546DB2EF8163CDBEE987BABD0782F86C1DCD8CE44A0A2768DDB7175E8532EE075ABE920EA6D534F17196402A06D4A607C7DB4E95550EBF03E1707D645F74CE2C59C188F85E83D9102A0AF19F1A2AA0E1C9B9638F73C2AEC2F246CFE4C7FCC23D216973B97542D23DE8164747E0DA14FF0997AB360031A7F28E1B4D1DC65650BD58E49C0510366CF48C84F857360CD3A1329679AC0E63D349D500722CEFAE150CF5A77A969CA99124C9722CD93BA38C372A7756847E02E0AF90511F2643BE81B15196365ABC6BB3BB7CEEC54992449937F4968F92BCDE7B1763BA60F11F4ADD97597F8A6A57A77163AC4A0DDE0FF2067165AD937BFDDB72805AC7F8EDCBDB520FEA695D1E9E2EF341B0E2D96B291788D0C14EFC743ED76B06D7F422AA8F754B06D1D4EEA7F237EF7717B76FD8D10362A1425684D829B422AB72E45D701E65AEF6C1367A18DF6408B451CD4EA46FD7D2C44493C4C90532E2A47E8D3D5243BC5F28C7CE945765E27B51D5269DED2AA7A4F26A67643D6A37AED9F9473230AB17DAB1D347AF30D2C08854DB002FEBDA419D5F6FD876E22C04EBD3B1B3ACC32552F3294C97EDB81111BB2306AE1A9F0FA2279D71F40767AADADFA84449E8660762F71B68CBB44D7045231AD4F56990162729D251029332B7E5E423AABABFDE417F6C9EB6F1E2F574402828A779341E7484A10DDE6E51FB0F0053EC37574D188964B2C9692FEA707F5759AD8A8C72FC0D7119E6AA4177B755CBC3695E3058062F110BAFADF2EAE7BD90AF1BA390A5FB220D9BBD6970DB8418E964AA444E2F34DB78302A491960D02E2D7B025962471C5872D45DC55009836D4FDB5DBD905EB106D677B6D2E156B2E9739607B0BB1DA7D0B6DBF8099B430EC5401CCD0884E713B97819F95968EDE1DF006D514AAF2E7A3396CB27D25173A294E57765EFF49699C23366585C1150BE9BDA0987FB71D3CF2435A3894DD92BCAD3B2C7E4B7ADA72DFAE4637459B3BC1429BEDCE338F97A624E4567B6B5CA426DD979A9DDCE8FFFC9A8292C3CCD2C22939FB888B6A9D15C94F194A402E4A1BE8D5E8E29D338348E769363B50A3649874FCF3683D788801423FF59C2A3DC1255377D70B4E8295F091B7DF4144684F6AE64641B5D91D9F3ED3F5F4A18BABA1078F1043FA7F2477A77EC849991EC50E45FCFAA31E8403C2EA7EDE8F038872F17783858C6C0D6BBB18CD854D49D1D920BE5D4D3D99348092D8ECEBC06E7C7C4A4CA65B33DBA26BB94A52C07A06C9B4F795300888FD4FDCCCB7F77355E1E229AD2EAE0DBC5363D9ACEA88D974052AD6A233C9A0919093DB4B01AF61944FE43667FFBAF0BB39FADF40BB9B1C0B1C0D4E1A2A6684815D9146BDE1C789673B7B6B71874680ACCC0E86096AF9E0F38EC49ADAC7C64A02F9248FA16B5315FB3CC0FE0162CFE8B15598E2F8ECDBF3A315808BBFE93C6A1EA66133742CD6278D32351E0A04D2526704FD7FEDE05A35036F395E7EEFE8B56415E3E04AEAD4D9428AE6E7E07D5460B5EFAC5CE9865198B336E52E01BF3AD828E26EE6A7FBDD905D1A089265D7CE44617A846CE8FFFE81C8F79DF6D52111DE247AA769E03F235CB21DF5668BE74AF4606FDDCC2A7BF8C4CDE6B10E8CFE546B7595D5F0CAB09A0D9C08B235C7E5BBB5CFF4D839BAB7A1CC97E807D9735BF63A6F15B8812B7B4DC0A6ECB30D45BEE916EDAE3A76DD4E231399AA4FA4419502841D3086EF7D1EA70CA033BAFAD7F58740F5A126CD858591F5420739EAF58B8248706B18A5F944B4A082D7E7F2C1862F7D8EEC8B470288DBD9EB3712DA3A3635C365E887F4647B7DADFA675E88A27241DD7BCCDD20919524137537F01A29A2C94288B17BBA069DB51AC3B9CAECA1EF4E5FDAD629DCDEDD8A337C3F571FD15AEFC44EF77DF1CE55F3E073AA5B6DA604B47437560CE84B3F6F4786096999D83FADDA40F2F89DE0A9E9C47890E6AD5886442ACFB794A358CC1D48C4329036C64CFE920E0E592CB375353B6567463A1D5DDAA14FCBBB555BB8DFBD5B032DE38026FB012344840C4FD430EB4FB2DB27DA4A180452AEAC5FFF699522F27C051249B0952449AB1285FA3B74D659519156DFC58B4E365436459002A3F9731E4685A181B5C34133943316ED4B74E45C41879A58B649B5338D4BD33EB4F3DD67660B3F3FAEC98C047E8B4404B4F2888BAD85F208EB8B682260D607F10137AC7247196221E5CAFC73C631801D02C2CBC882C2A9E0E95F5D636BADC6D9234E6063CDD77D5379E7DAB72DFF75D1058B3F821773CAAF0942E1FFE284496BF5C2F13EB2CFB0E04F2DF602D43D05DA36C9EBE4BCB12226830251EFEE6EB38E11616946C225760CDB0A33B935BC96A5573C62F3DAFB217F8FE027E2D96C7036F7B144CCFEEC1CEFA4AF8020DC2AD56ABF18FD461CE2F76DA92D721B7F4FAE703AB87551D82EE4CAFC7A27B32249F67E81FBE1DA1A57C6F0815BAB5611DE1F6903C5B2B11A61991C2EE176C422139CC461F1984FED0FB58A42CCBAC663EDF57577FD985786EFBE1742BE06B33AE518265D8A8A89100A7CDC3642D92ADEC5CE922C8FD636CC6FBC1BF9466D89C8770F49AE6E98F774C96FB308332E38CC16EF7A9BF3235922CD8B72C4ED6FE26B8C279127728E023B31A6369182D538B1C7373D9470C8EF22D3AF129821A2857A1781DFFFAF4C528EA9AAD2739A10D0F742B5D032BE04BE09CB8E28767DE98FA756ABB76A5C7EE8E8ADD8B85E87BE4BFCDFBF4EC3944502FEB1CB91006BC9033DBB395D7F7EC0A68743207063B68567B2A38709C4F9ECC1D2FFFE2137FD7C7E4FE98DF5812D552C84B92F81364A091FACD88199A7B418B81D10B27122B69F6CB22471407AB9762D8269019E5648B2E1D9ED9950733BB11ABB6A0E513FBB65AC6DABD8F0F27F766982198225DC915394B13F773B7530039528C745BD402BEAA14012AEB48C84F493B3F3FBB368203BD1BCFB8A1FC2F890196AE4B69CDC26F6092F1A0F5C08C1E2F4459387EB60602B281BE70F2DFDEC4433D0ED7474601E1562DD9211E593802E869B12F919F0AA4982FB337F0AAEB55CB598687362C8E607286FB19347E10F38C4477A61EB9194D1E462959CAA53808064EB5052533F22B3B19FFEBB1C47D3A9A16AFD219C11274C50425E3FA1A998679CCCF6568EAF884EB42DB3AB44CD28C4C279D6D62F35F50E6B6D28530A9DE12B78650ED72A327DF3A5E85E2661A9FEC7D746AB31E361AD94F901ABC9CAEA2E8056C1A46F4F7C51099B480664610E8760C9C7ECF645E9EA6A48A11601F5A4FC9C6B54CEE1DD32CF32EFE4B060B89D1FEC4D8760ED57B309053608381FCDD0B8FB275C968923D3E8DBAA6A52A0C3362A6AE78898058550C0198447AE4D34FDB4D30BAC6703FB0FFF32C1C66F481C5A2AB395ACE4C332D26C1FBB99B76A6EB6983497EAD27EAE77EE574ED3C0E1F5CC7506C2EAA5C62B2AD0B05D454E8E3321D05251DE63A9B0986E704DA1D9E94AEBCAA1AEBCAF25E9706C7981416ABBB7F7C2CE0FB1D1D1A3783F8371DB9D73847ABEC1D83BCB41C791324396EB69DEA97CC370ACCB498911B43DF75D57CD3A702BD78FCE4DEE7C531F3CCBC5427BF46E38F5EF4AA58415B15551264CC5F34E2AD47349631DE5DCE2729E9A274A725A4364BAC12E31B053286523556B4BF1D48EC352B56E2CE422750DB87B70FCDC9FD51B57B4CDE114C66193B5F1CBCC8B6B5775DBCF0A50247B5344670536BA27F5F1A5BE64551D6E60492AB732612953A9A6213C429EEEBB4F1C2FB03B6B7594B69CA044B57458FDCB11C7153134D0399473DC9E62B8637CF4A04030AE267F50ADAD5967D284F9196F1A2A0229C8C14FDC4ED46A7D940EAF9544B9711933BDBB196F67B768C7554AA936C859AB8CE03D89244875AA022F6F44EDF9B57C5862D7731C6BD6331F0A1A330019DA84DA95BA316B7E8A8493764F14CCEDFB10255D9A0B2CC83948C9311A9FFEBCE7CFD49473FBD27144B7A7C7FA978298E82A0A0087372B72D2A1FA981D6E521AB066F6F073448862A3914FBD10666C3EE61F2CB53138AD698E8BD0CF7029B8FA72D05D5C3E125F44E150C87C8334A44E33B5C891CC512334EDD6B38627A2A08AB50095FC4558E279A55989B3E3EBF51402A677338AE36C64475BAC7441B18EF796F9DACA813E044991FAD488ECAFCACE0EA8167DA6AEF7B853FFCD0188C8BA875B90196009C7BC46FDC0CE93B3F2D03CE7F887564411BBBE2D8D8AC5695BCBBA7A4B9B5379D48BC1DE9BE712C8FD164A72016CBF68A21B0D7230D8ED2F584022D61A38D07EC9FDE3F66A94FD9DCF4A6F70056C34FC0C7368C503E04E7A904ACB64940CBF84D8D7F606E16BCAB4EC9BE3E905BC5267CE5AC28AC53CBE64DA7D1C5067891D8262173F36E8DAA58F6FDA7B85D8E6CD574DA2AF306E7AC5D046CA7655FFDB8DDA65531108BE2FB845BD1FBC1C57446946F7DE9B1572F1DAED647CA0CCCF347FD6534C35E340EF390B68ADD87C1B395255AE048539CB0DC9BDA2FD3F8906E5AE3AC2DEEF8CDDD3326210E3702109D348608DAD2D420268501C38D23BE7F1B0E658E6F8A0A446796B110B89AF51693A6960FCC045DD96B0E9AC191723DA989FC7C98FCA86DDBD7ABB589F7961247FE03F418256AE7528E15D243D62E5147519EB4B103B17096AE910CD23BD900602974A974FAFCAE26FCFF0F7034A43A28BA88873B1CC25C10102E4A58AFEA5AC5D950E45D141D9460BD4BA062538608F6DA0E011D95AA6048DBE7802220C015F9BDBE73A1598E71366EBFD11E6970C13951E89FA9E6FA43D32A145DA47FAA753FC460B8A9E934BB0DF049BAEB9EE300612502481F415DA9D9DEF11E585DB33DF1ECAEAEB3214F244ACF566223AC4D10EF93391F09D64F9397023C6E404AF503F3AE06022902DA431D3576DC9F4AB8E7A8C70A87C225939A70E04C77AC17FF62DCBFF7F7284C4B7A5417A7179DD17C58DE2DDB2F852FF61296748BBB9673A657EF58F64B645B5B6B882CAE5880E3F1359D33CE6B711A408853150CC62E461D13DF9A9344B5D4269087CF5856F7D585CA2DCB98F0602BB21B256136350702A0C25687E1F67797642BEDD02EDC025613685D80BD8FCF36DA1E5B81706DE6736C603FB2B5A7BB7554785B9C2BBFFC2AAD0D736B11AE1F18E3A6D70257B4CBEB1A7CE1B70C0DF03BD00853F5CA7A2DB95E7CFEF08722B0D534DB9D118C5829666F25D164CBCC40394379729552A27F5E5AE05B39EC88365F96AE0411C7669A85A9A28220150B47C56F9DB522FD2B35C4A2CAA4C2D3D526764DDD6716E79D04D4FC55A08F52AE06008AAA08828E2197DCAD443AB7FF2E7859373B405E5EEEEA91F9D46E2CBF338F8AA0E3ACA5C9D955BDF06ECA0D1DA58B45046339EAD84A4BFF7AE6605EE8CB3B70C49B5E682E47DFD43593A64B1910A8B0834A3613FC48C04CB974C53BED17C97C74556EA244662153CAA718895C8AD883A79A3184B73EB3B59120D4DA445C52ACD6D54E79243B9C0902C5491FB81AF59A1878352E9ABE2514981E3A4352CA0416A78A631F088BBC8AD61A8A64F6A645E0F01B8EC2F80CEE049A92DED81DD2E3E11302BC5F17967B246FAF7E8CBE642A02180D14581933AAA17D6D23836204D955E78482D85B9F4FE4F33BACCBEA4C55A04581B46C59CC10D7A085124AD93211710F5DF6862DDFABE62E30E76F7F973C66B3141714ADF7E8CCB101A89999FBED40A1497DC844220F7746CC7D526983DC0685C917679E290BAD68C09C395B6A82E6802965BBC850D8AC2C5F131BA6E09B9BEA38A141929128966D211D1885766DB31C85339581526DE3AD2E3157CC4CB56F218D7EABAD2AED1F7239C6B72068816085E369B5C94CDDCA646563241F0C2614DD455C027A2D936D7DC4F3E11AF102B5117C1B3A17B8C733142F666F6C797537C24E9C9A3F8D53B2F5F5563E12E36399E34564DAC982051215C5E979880C17610944C9A8C37C208B1C1EED2B104145F2C5FBE58363F0283448B5406DE0EA700CB367C8C67128A4CAFF265A91B1C980F1A31332FD98D2BF1E1D923FCC08BD3D11974D2589008F8F8EB0733AB4D40795188AFF9EEA8F745EDB2D7A556BFD7A650BB21F206DF0F55287A3AFE2149DBA24B27FD580D495736D9D617EA740288CD89A0CCD3189B922ED3ACFAF8B0C16BBC3D20330E3BDC837601F056618944A0FD6BE9B4E8587C8A1AA3192F6A26E2020740B38D6BFBF15EBBE8974DF3BDFB83FB250B117F3ED2ED9B67E8A4D7B9C477B56978CDAF63D40E5B4DA824170DC0D0FD6BCAF5F9FCB69FE5C08299223BF33CEA1143173E16CB26557FC36E0D6F1A98FFBD10230C1A338CC15AFD2F4CB8C878E3F3C8AB8C3E8C23022E3333FAA92958AA4760C39C8F74E3D0D41B95D6594B29899E519643226E5B27473D10CE36EB060D25B086F275FB60DE4B369BE9368E46E6D34A6FBA588D9F7458A8F94802A4ACF9A7C6A79F9B5745CD7C2D48FA64955F933AEB4D2CF9110F3EDDD8B26A28D7F8AE6B250077FF6C9ED9ED8CE00D0A26A6A809597B02D717821024FF0C126A4C6CDC4E4E94BAC2594A42A988E8FE19249816138CD72093699F7C3F8136E70B9B7EF0C6A16D2610F1189347085373BCD3AA20445751875FD236195FF0DCAB29510902EFD1114656A41438AB3A326EF8F9E6229A18FDC2F561D1566F68A91F7A4EB6BF84D0ECBCCDD75F175CE3DDF34AABBD665581E396C92FB62D11DF4FBDAE656262E593D73EF56D56069B39359428BD32D6CEA8113879DB563751BCDF877E914B56F79EF484257E2E60900AB52C5A0A5BD9651E4A72E3568ADF7686880CF4269A11B97FC70A2EEED641D9D06E27C5EB71E73E903D50408089395B5A317C0DEF558D9AF4B64357ABDD207078034BA5867317E9ADA367FEEC965B68E63A7AC17E84B87AB70982F7298E8AB3ED65AF3FBEECEDDF2B2CD477906D26ADC8E26AF03C946C39E1D5D5CF600E4F56BEA36248190D36CA3341258772127CDF6E00F6E368E4D50B3C722CDB7E666B323E09151921204C120600CA13CB0C1902303CB00A8FC55089FED9AD7566A811EECDB02CADEB7BC22C04133DDAE54FDA085B31BA390828C68985F01EF82DB2BD080DD5D72F3CECAF1840DD4D4FB9F853189136C42F9024718AA46F1FFDDB018E47B8F81F6BE2DACCE4D0464DF0F0722A0ACE253BD675810321B385C35D2E2D1F93284A27308A0327D7BE05C640BFD95011B7CEBDC3AB1105DFC467731980D5B0EDFE68BA1BA1E919E6CF7C91275970454675B7BB53679E79AC965AC5F2A9CC2184796C009DB15DCD774920152753013DD64E00EC808F3D658355F6899D00821EEC3EA8C2F2A255B3648FF8FD01E1662F3657885523E00D540F06453D25E2B021B3EA5ED5EBE179CAC0E27464AB821347D84FD541B38E515944F0092875E8F9CDF293CB5C69BCB70C298042544753CF162678ACD92F463A08D6A6845446B2AE02C4DA06E5960B195DCE2B82618BB761F03CEE61DDD9BF48BB85ACF169404F55E049B4D5B6BC69C377E6EA5960E2B67FCBAD283053D2A8D86FF5E27D1121E2AF09F42A42AA309BA601EB6D9A8493F143EF37A75F6A0BCEC852A6FE5343883230C691B200E7DAD2A03B5F0EC695E8359DE039C1D0F88526CD76417A00FB35E8029D20C5ADC088B30942F36242BF3132261885DC0F583DB3D625A98BD903BBCC4E214395ADC9054F676756CABC9AA7A9E1D420C2760A4523231A603D3AEA92BBD8D216945F9FFD7E1B04B67B004C51002F95BED2877948102567C80E53DEE7072B65A1E8FD4673A7F2274E4AABC7BD66DBFE026DF5E1B85AC4CD25F6FB8DC8291C7A0AB2B3F6EDF76F7E39CB4B86C1179C02B6CFA164073DAC901F9EEAA364C5143DEE740B087BB11C867E6B022F46D796896A344065B7D7D62BB83462B44D0324FF3710118CBE1644F53C6795A574D3A62C148472538AA88C6FAF606E43AD6949B53AC62FB9EF135ABB93C03E1CA3D5C9738FC926B405078E49153922BE24A1C1E27D6723827B023FFE6254F1748CBCB2B697554066869B4C6B404EFD013EBA71537A08D15FDFE046BAD99D3AC85F5EAFFB3A99E8CA507310E08AF41EF8B9197EC6F905568E765C5590FF24D51E171AEF56A25B59F507879B40456E290B9F0F63D353AF125C0D74B582C1E3EA2D7429FD775FD3A9097F8C754F562F5B0C4E74318A2D3D67F4B041C54641029AD8705D64CF4804B8ABA2876DFB7DFFA7ECFFA17A14190ED5940AFEEE6E852F8EAA750D6C2118907DB9EEF5A5C0108D1F55D34D8C7480F397CF7FD62648C3BC16D4C10816F00524DA86B5773A1B365C8FBF1D0E38342AA09A2DD06426D7280CE69BC23436E4C286C860154CD58200A010B764C6BE9A6D414ECCBCD0BE0B628CE6C2DA56FD8E58B7CE074C25D262003B6AD72E4D92334B573AF37FDCE9B7B2456FB710909DE8C2CB4F5765493B1138B90C6BA06ABC40DAB2BF61A41F36F049D1BBB9025A8BB19AE72B6D434351496CCE5DDD4704E5FC879074AC0B972ABE4B86623A427B87D7E07BBB1D71B3001E1CED33BB0B34B7C3CBC78926D00181B2105B4E5A2C2C3147492448A748FB67D9F63D59F951D2D6764E9AB6E975D207A45EC651678825CFB1966781FC83ADBB40945F8A6C1AFE0BAF2743C7B6B4ACA465B1F002A8FA6FDD9350ED1C1076357DBB05D7CAD5543F3BEF124CF7D7CD26108B7026C8F722ADA00AEFD79A046A1C55F7F01CA36EF6F4378CED6E6B24315D03AF17BDB63818EB2DC6B478FC0BA076D4A5A78F42FCDF480B2FE92FE526CC77C17F1600C830C308EFC7EA88ADCF30F2517B207FB4454305515AFEB93C32524489E77153422EE686E8F15E087523A81D3AD369A760F82F03A1A7E032E55F09E67C9577FC2B28019E53BAD7204F15ECEB0BF9430949293B5AD28C820EB6C0EDD8E605EDE85D7CD2CC0EC9AD8440C655E512F2ACED5928D1E55933D6599361AA9DFC9AD656A553D20BE09F6B10924D72A5E2FDED342A360F88216A64906BCC790656BC1C00D05AA0E1CBD0877D41FCBBA3974E2B98BC23E0797F27622EBCE4E150F25AF9A9853756F7B751D862D0507DD35239E4565FD41201AB836FE69E84E8B26E96308129EAE1307737FE6DE0A600DDF53D8E60967CC2DA0CF1A3EFEAB97B5867478B97A4ADA9F110356AA15444C452C17568F665C8FBF2B5634ED164FD7F9750F01FA70B20DB9F96572670291EF83CACC1212DBDE7B79B81A58F667C234A4EBBB6457A38DFECB8C7D3DD1C96C811044AC5F1CC8F04B0AB88EEDEB1CF21C007A6E5AB1A909FA21187115E21289A648806266A9EAA9A6EE9EF885884D2775E936EF93EB550635C0FF0F53B642FE6A020EB26FE066E940902567F27F1F5A21F8623475E0E95C7C39F55B4E0A7026E0BFA3CC7CF3121F7D626EABAF480CDE513B986FEAE9B812BBF70696625A60B953E16BF682443D8D484C33F1273D4B1949A64946DAD8F8A871F9750400923E1FD915D1D08D0BF87809D959FAFD51841F86EC23D2C9149A38C89F98EFF088D80EB06811807AA23EDBC44171322C871AEEE77DFB7A316BFA289E96B1AD5E28335C28FCA1AEEE9B5945309A38C7FF5955F2C6D2332A64FA47ED456F6E9476CBEE4EF08AFFD8F055EFCBD7B4CF5B016F9DB9082A9FADC915FCCFBE5BFD1363F378C05422DA16089FFE0285D6EED1F6BD4CC043F09EA3F5FA1DF2A308EE88C62ADBD23C019748F13A87814779BFFC2C3A99F24847BC783C01F6091A6EC6676B354834961ACAF740A101A7A3EC1BD513A4FF14BEEE017574342752F874FEB9C9B42905DA28F32121C447D1FEBD60567C835DE002690468FE425B578D81AB03C2913C7E196C6966B7CA3A6C2C258C017C4BB6B628B3CA5C2E13012C718F56576C239FBB2BFF3E1A37AD3730D61C4512BC4D4AE48B2F336B7E9D555BCE275C2D8F2D83896AFD6B909C14768744BD2EBFA2E295F6F37EFD16A73354453D707DC6D1D9986CDADAC368A18DFEA5724EC188EE8F32F4AC3A39760F2B93B60B1655F5550CD97F4A9F9514AC27A0BFBBC8960FBE6F25C039E62A50A7CED2D975D252F1E63DA33E7148DF3162D1EA9E26F70C343094C694ACB0D83B2B6FC7DBE9E98CE9147D24A89E1B7A128E42CBD4E6284F9EC7C84D3D56112D61B1CDAAFA69B721F0DE075ACA742A7D3D208BE0BE6E1D60B4957787BB5395398861DF7A5CF26F2711CA8DEB0F08D5A82D5280D9CA1166AF14558F16A37920878C23B4CB4DFE1FBB1201B81446D8E0715FD43578272EE8B689C38C7ABD714B341B40A99AAA38810821272EFE423CDE14C45D8C986E81F95825185AA50BA541B6E7A195BD342B33297BB60936BDC1964FCEBA08DC3EDF532D45E35C6D525B798369581767BAFADD963100BA5B93364B5767E72E50C115A140A70C22615BA680EDE82F3BE1B57DEBA0716ED314459E4AEEAF23595714D19816139D72211BFFB64910AE5BC4C0F419C401FA985049027E2AD9444B2C7AEEFB47018BF217B9E31263F76DE421287FB5CDD7386E13E48163C435793F30B7D216E444E4472490C6084E85E57EC2AE2981349C66CE29935A27ED3473A2D42A2DF4C7901E600C76D97B2647DAAF6AEF1141D3C76F7276B52A643F2613E6C9CCAE5F250974EFF692D2244A2229976C8F5F2AA3AB677B7E714F617FFD410B86F8203085D5762329EAB339A78AD10B714142E1844E3CDACA9E75AC19719ABAE64D559C1132AF1016CD0071ABC8C19AEDD9E64DE1D559AE61C5EFA087133BE20CF9B5DB286D8B5F99EDE5A8ADACC6505A26E57AC568CC32B26CF97330D1B440F054223FCD60488E3021852AA8B8241BB08F8B4862509316DFFA2250B97B379179EE3DC9490202DECD081C8FE22328B2126C63853719D1846E1A14B56F821DF0B3C9013220047F68D220C640BF2CA47642D0BC18625E742A65BFEBB1CC2E5398A57C023811C861D1745E0B3B7F029FC5A35D941CCB7E7189C04274D4A298F867C26E4D13BF35826B4EBF6CB75E1F036822A55A726C715DFE24279F5D252CC2275E369189520BEE55FC775B6009F7DE5AD35F57C882E99454F8ED1C160F32851A270C9316F9DB7993E9B8818BE6C56F2FC7F02043D7EFEE861391B6AF0EDF03BD7D9A1DE9F60E38BEEF98AE259469D186267F3E396AAD3F6E0350E1D43C6A9E557A30A7CE68505426BBCD7917C00008B3B06A9F417566E25D66F91A6FA4538E4EF5451DBE05840F9566EEB7315B302F3CC13356E779A3E600B375ED76887BC7657FF951980D20963E9DAFD4C6BB3EB3E54F0AE663FBB3DEF407F456AA4287EFF2E4BADCE9CBFB41BF4056AFED2F6E3DC0E4C801648195E272B0C31507A0EEE98E68EC0272C29BC4B18494B9B3C142569DC3472446958612F8D6ED6BCF3D6A1FFDC5F2D2840C0C75836B2296F5E2749DBF41049F581D57DD00C44820E419223DFCF9EB8AB987439DC6C4302A3FCFD3A7F6623F0003ECD9EE994998D7EB3DFE06B5FBEB79A67FB13687555143F3DE767AC81EFE485D5565F2193815DAE8F7C944C3A48FA211BC5366FAE79D1BCD17ACB1D5016C921A37DEE0691A514EB9234F98A0BFD04F9108697A15A847BEDE53C7AD0309316FB919DF63DAF02A10E2E72CF55DF5118151D17729E3B91312352135E28A6DAA527BF795B8DE118E4675A2FC191AD586B871D246E60356FE1265E252E57FD8513B4FEFF5712BD4FE7288677E336812FF7758D370722936CE53FDEF259D715B9A0E0B4BAD9764FB204DFF7403F2B3284B5B6A7FA380FFD4D315207B6E08ECBA2B465CC866043C0C5AAC5145986A94E394F748B63E9011062E46F2A8839499A2930EF4328959973C755DD7F3AD3529EAF9DD5A57B59C7CCEFE86E6AE91CF40FCAB2D010DDBA6A76E6BC5692714FA0CFC0D545E08F026F3C631908F5ABA01F97A6C44F507BFC8E8EA3BF63A9DAC384203C6CB270AAD395D72777B78339EE09B5A1297D1F4D016E7A26CD70AE648A749CA3D26B16F7E254E95CF8AEFBE245BBC3B78272DE561E0A16461D44FF5F091EBE6D305EEA865ACD02AB5333FCB2C057A8701748AE6DA59781EF6ED5A1AF8F8626CA15C4D156BD1CE8195FE3DF41D97F4BAC399825DA76AA45E76193E20C825CCF1CC130FCA31D21284310F86057C3FA5191675E837258F173FE11E7A67C82D2931E252FA810DA7C93A53E1C756895B376695AFCE95349ACF83C22A8F623F544690A09FAFBD9B78AC6198078A4008CEE6D1D173EBDE30DEFE4021AC0D844F127544B71FB6D0EEDDB260CC2C9FFB429CCD8281FE43D4074CB9AA6D90A0F1B2116AA0A0DA9516C2CC8C03212D57AE7DFEFCC78DAC85BF7A5C2467A85D54300EA61EB3A84610CBCE3E6FFA2BEB32A2483E4599397F7B44014E50A99EEE03770133BB46373C6589E7D437FF1171BDD217D9346E2BA0CB4EE7E589C214F72C664399C8479B272A42DDE9C7571C6940442A7542B8ED9AC2060781B19D48E439E2D5B5373466A3E56B0133F50D27E77D6CBE90885227194538C89AA5EE5932563F9EFAB2DEDF4CF1324E768ED920A478644091B9E0FEC90DF3059F546BE228B7DB3E04CD5682A72D31111E7E388676B7FDD73DE92230B41F6B892FE5C66EC83B22A230CC2BA508340BE559EF1FB1EC057B6503E9568DEE153AE6562599CE2A83E187D317431AA4D5C6CB26EAA7C6E36A09134C83D22109F9E28C68BA2657320F79D4C8E55F33B9BF1530187B085B19974632A6981F794D35558A5AC824C7CE7D9931817077C0CA591D0363A6DF865D7DA8C9A3EABE446406DAD29BCE67634403430AD91771D32F9FB2FAA9929EFC3C565A3AAC1CFA350CAFA17CC1E0D9AADA713518D48FBE1917A2862BB6816BB957696AC54F972061FCF52FD6C57D0042E88D51ECFA2B42C30EEA0D23FBD95019E759ED41AB01B7B05ED213C165A57D4E6E539FA3692EEB0F3C06A4ADE13888AA578A938EDDD3E523AF3D0F6CB6679623C3471611F27623A741237BB6AED8C28ED2B4091630A519E2FA537AACB264CD98FAB8120A47923C91B86348D2E55F3A5563BA4235A6F9CFAC450C6B5435902C80EDFA5AC064E5AAA68D7F7C1CAE01837B3690C1FD930133F56F9F71232EE528AD6050F231215F182A79F2E424B687B56EA924B39954F2A13A144141E1D29A079638AA7450CB24233D7C44BA07B0AF44850F74E649946BD2BA31FB251DE515D8FDAE0B90587D13E836BA742B414F2F14D9D9FEC9E5B92C6B7C7F997DE2B462953D1F84185390712590B59E927E2DAB0133E605AD0F2B1FE9C8E08479D077B8540BADFDE9C4CC3565CA4CBF2A1796D0B125D0AD8EC11E2D5E7CE0CEF86EB3A7387911C01E37CB873E33E9D6F6489E611EB685468F7E76202D7DD446837463E6F26EB598154F1DE0DAB4DCFF6A553C635858E8739E9E2E9376B4992C61B03AB34C61CBE3090D22FCE0DE2566C39EEDDAA9A2A4A39C15D761FDA2BC657CEC8F959722DC389E1757F6A94E4D8A3623B8A3B5AEDFDC778D3CFF0B73FA06C8EAB54B7835B7DA628969C8BC5015DF707909D1714842FCA015F9292991BE49025AE01927BF3FDB84898A89E983198F23C706E904799A0A7C32FA31791917DAF26DC4CCD36D49F9C9CA248FF7B815B0053362D99243057433043FF06B2583DCE8748749B4599719D3A07D67614674E6D4EEA1855A4C8C8150F5751BF6372601FEC3911C8353E3BE8DD36FDF45658A864296E6CB365CFFF20F84086877006E0E2B55F8D856D011C9440116C312E5477364693321A4497DC38C726D1D89332ED45FA10F4F7F1382347CF13236195DD2598F04710A8698DFF44E88B779A5168C01BA3BF5824C8D9C24411B50923AFF95CC833D94E68602C765605842B99C34CFFD5AC131D6C4414F87E65F80EDCA9F7EF1AE3EB6D2DBDB760D378A8477F5F176641FE9D97D2A62ADB4EB9512D2E78B18009A3A76D012FA270A80A122F987E2B6A894FC0671ED2DD3E26C9F96479412AECA9AFD48727D670325A5BC368861CF8A9A2C20916CE06A2F7BF98FC9C96852C05E245BFA321D23E5F19BDDB0487B02B962BFBF214818B7A16118A461138E84DC7FEF3E3BAE37484533813F4FB3DB57B334148DFCA13001479B431C28C667A55B4F8A300BCE275249DA6ECC2E574A2908271AB642FE3B2042823E2426CBEEFD604D07D70A3CF2D721A0E2267A7FE781CD7124AF8A406183B5C0E3AD93F3099389870EF447CCD5628760911609D5C21D650DD2D60E37281C524AD957B5F161A1AE639B493D7D47B6E7083D1395FBF8143BDC69EC9F896B19B54B4D56B079029256B28C58D2C915721810C54AFF743F645EF4385C79902456219C1741B296C079BBD4CEBCEC01755C84FDA1D48F83E654B23589D6564AD23276EA63D55952040A5A6E976B5AC6F5A4A29C669B0E1D5905FC4C453A3D589D4EDAE7E7AF1C4937D83EA8E872D459B16A8CC49C0663FEF81C9960C4975261CD8FFCEEA6B411B0E92D157A025DBBA3F8CA2C092E78074B1C64561031E4FB906F9E29DC912101F5B9C025D3C57E7B02BF4F28A8DBBFE7683EEA7B4EBCD716C924F237B65E5E876B70BE7A356F2D87FE408C75DBC511C68B1F48A48155D38EFBBF199C4B5EE7655D478C7FD01F3CED28F997DF9F274161ED60DD1310E1834C31396A3293E555EF5592A75C1B3DE194A33BF636D9C27C9EBB531BAF48A4087437011D69FBBB2B554116E32762D839C510CB85557B5D39E8B63E45A5C23175FF1551DC26682D6B98503A00282AB3A56CC956B83A8CF1111DA4EE1318293F97CE20F6F0A4E472A689B355FD972E5FB7215B68A4E265298A5B833B6EA30E7E10CFD80D124856D8C15442D885083A426956B8ED2238C605C8E3F28C0F3EE3AAB801D1C84104B6BD13C8509BAF5DA2ADDDDEFDEBDC29E92CF3C336D2E804D521809DAEBBCFC0C248A37032ED4837C71CD00F7ABBD504CCF9FCDF49DDE9AD215188B320154C0A995E0AF1276D8CC97D814AC428DE27127BD89BC3E09DC0291ABD3F71ADB19B8680BC6E528A1B0FDEA6891671E6242F69E9638563D5F9F308FD338A11102A5462C6E9E5F2DC3484D96FC5F4DD846B73D7C34B7A36C3BDDE61FD52CCAA8DA130D5DD8D8C6E8F5411AC4EE220BC7F9F61EE98286F474D5BF12F466DDCCB3B88D4C54251774EEA3715B75950DEC770881561603BE4265BC67ED348FB54D712871DFE277DF13A5CCF705A148E47A73CBA043A3842CEB2B8BFFE961C39CE1ED8C17E15B9F8C117CA4215FA3F84D1769057A6BB9B3296EA6F79AE7F2FB17B2326DF0608FF63DC1181C3AB6CFF1CBBA169A5C72B7F146416FB7EFFDF94AE69CD06337726692AF887BD8413F5B4B0D4C46CD6CE2371482298562E8D328C31401F2DD0E6E168EF400CFF7E822C76C81020421FF4BBE1A9F7BF9A9E3BF4937CE6572E1345C38692456B4924B8A06FA6327FCD08ACE1B964613A6E3495C4585E53333EF045B859F03552C8F811DB9EFEED3155C0025CFE42BD0A8E6E7E20BF85A7B347F4BAE286510F6BA178E6BB7EFF7260E030239DA081FE92A1C552C9379CCEDA1A60D2A80CBA56B23C6DBDCE2C4C5C2C8A012D576352E870B11F89F181836B92C5679C1436F20A0146165FEE4269F5846D67770015BB17A29385EBCD441D27CB8D514A1EF777978258E169F951F43224ACDDD313A72408EE9E7E5DA78565472F63DA6A15B4E0689F2E68B7645E983AA9B9275911ACC523978488782E020496288CA93F33D723A23CEC80A219820EFB7F6681348FDD8CE25541FDECE7258086ADF4C1932A9078A6C9B4CDE93716FE82D755DECBDFB9DC9D082609DF66C5EE0E5A8B710AC1D64A26FC8612412B41B1512B2E9096868B44AE8EA5B88DD6D5B1A083C78E0F82B46465FB9D3DA33D42B3416E032BE9E19D989F5F1AEB956F0766B626B1DBE9393EDBCB8DF4F0AB3A2446378966ADF79068BC1747D7BED04513EF78A8AB847B9E610282D9FBC885B40AB59D9C51A258DF61D4479E49CD95B57D49560CB69674EABCF3EDE477CE322F7C965716127A9FB20A310A117ECFE08960A8EB864640E883E8C4464D85B1C28BDCA8EDA8908B90CEE5A1813AE514C40231A6F9EB2D703821D97A787A5B6D0B1D7EB6AB466B79881703C4C4ED431B7432DF8B6D6CD49CBB56E212E13BC3CD728EAD7A48954C65703DFE77F21EFC52A3A41FC236A0CEE83C70542342DCE13E9DC3D643BFC4D60F3F3758205B8989BE111A164575FA23A9BB015CEE99741CBF9F16867AE10F250BCB08C5416A8D7399551C3D7E5451160B49886AAACB1CF7F39F893A25682331AE9BA9A9AC68E8183A21DC34287EDF5FFA84EDEB6E36FB49F4346432694ABECFF6E5F6E534BEBFA0C153F4CCEF358F442DA650CB840A317B90EF25BF0D17F4A387EEEFCC620D8A0BE7CB2B0D23BC76C2D97C6358BA538306CD11AAFB332DB6F506377580AF35D580FB6E55E7A3E86B3D1DC17AB7F950D407A19CCA6A14D9586ACD50E5CD033629CDA4B54693EFBB86561ACEFA58683F99E67F285054E3CA175FADFEB04891362C89CD57E795A7F54E9EFB10B5073562AFA204FCDF4317CF48F02D63822EBEBCFAFA7F32BA04365BDB99318AC19CCC97AE9E3342D2EC38FFD60969750B4D70B19546D4139CF2F2502EE785DB41EE6868C6F123816D761DE06375AA0FCFA07DDF1E2DF68C5170B9448F0193B4B654053A2D38A73668B164D51A4F0C4714317DB29D2D804106638C1292AF0095EE29E2F158284E24A8314737B2FC45A943C2E8BE195ED8CC4174574C14F7D3F90AE58FEA81C24A82593C9B3147C41260980BD5C367CA8A136C58FFEF06DC2790C266972FBBBCE0A66D674BBBFAFB8C5477C8B75C051A41EF638D2B39F2D8938F65CE3355289CC70F79AB9CA612E95915996E166878414F543A4E13D5CDA1528AC7A215613503B60DC084929B1CF68D56D76AC55D1BEF7A4C651D8E11AC0AE2C32C17559C26A2DDBCF4BDBFC278D9A71D77C0C1A49A17736C210D551781B5AF77360D093F13B1B1D4471C76CD4DCB80FC3CE8BAA15FBE5814C381051137FADF28EED6431B508FFABBDBB3023F02E0C3CFC473E6B3A77C77EDD8287704E2DAC1FB57BA1E45B6844B2FD28C3A04A65B3B7241C1B6E254EF47863F7C96A64164B781DB2081D5B86DFC95E28DBCEA89C4A27178A2134B88CF819EB4FCB79F180FC176DE115E3027B0D31D1C1
@@ -506,7 +506,7 @@ server.listen(3000, () => console.log("正在监听 3000 端口"));
506
506
  </ul>
507
507
  <h1 id="源代码"><a href="#源代码" class="headerlink" title="源代码"></a>源代码</h1><p>源代码增加了一些按钮的状态,交互更加友好,文章表达比较晦涩的地方可以跳转到源代码查看</p>
508
508
  <p><a target="_blank" rel="noopener" href="https://github.com/yeyan1996/file-upload">file-upload</a><br><img src="https://user-gold-cdn.xitu.io/2020/1/9/16f8859bdc09fa25?imageView2/0/w/1280/h/960/format/webp/ignore-error/1" alt="xuehuayu.cn"><br>谢谢观看 :)</p>
509
- <h1 id="字节跳动-EA(Enterprise-Application)前端团队招人啦~"><a href="#字节跳动-EA(Enterprise-Application)前端团队招人啦~" class="headerlink" title="字节跳动 EA(Enterprise Application)前端团队招人啦~"></a>字节跳动 EA(Enterprise Application)前端团队招人啦~</h1><p>坐标上海&#x2F;北京,校招社招都有,hc 无上限,有兴趣的欢迎投递简历至 <a href="mailto:&#49;&#x39;&#57;&#x36;&#121;&#101;&#x79;&#97;&#x6e;&#x40;&#x67;&#109;&#97;&#x69;&#x6c;&#x2e;&#x63;&#x6f;&#x6d;">&#49;&#x39;&#57;&#x36;&#121;&#101;&#x79;&#97;&#x6e;&#x40;&#x67;&#109;&#97;&#x69;&#x6c;&#x2e;&#x63;&#x6f;&#x6d;</a>,校招内推码 Q7QUGMV</p>
509
+ <h1 id="字节跳动-EA(Enterprise-Application)前端团队招人啦~"><a href="#字节跳动-EA(Enterprise-Application)前端团队招人啦~" class="headerlink" title="字节跳动 EA(Enterprise Application)前端团队招人啦~"></a>字节跳动 EA(Enterprise Application)前端团队招人啦~</h1><p>坐标上海&#x2F;北京,校招社招都有,hc 无上限,有兴趣的欢迎投递简历至 <a href="mailto:&#x31;&#57;&#x39;&#x36;&#121;&#101;&#x79;&#97;&#x6e;&#64;&#103;&#x6d;&#x61;&#x69;&#x6c;&#46;&#x63;&#111;&#x6d;">&#x31;&#57;&#x39;&#x36;&#121;&#101;&#x79;&#97;&#x6e;&#64;&#103;&#x6d;&#x61;&#x69;&#x6c;&#46;&#x63;&#111;&#x6d;</a>,校招内推码 Q7QUGMV</p>
510
510
  <h1 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h1><p><a target="_blank" rel="noopener" href="https://juejin.im/post/5da14778f265da5bb628e590">写给新手前端的各种文件上传攻略,从小图片到大文件断点续传</a></p>
511
511
  <p><a target="_blank" rel="noopener" href="https://developer.mozilla.org/zh-CN/docs/Web/API/Blob/slice">Blob.slice</a><a target="_blank" rel="noopener" href="https://developer.mozilla.org/zh-CN/docs/Web/API/Blob/slice">developer.mozilla.org&#x2F;zh-CN&#x2F;docs&#x2F;…</a>)</p>
512
512
  </div><iframe src="/donate/?AliPayQR=https://store.xuehuayu.cn/store/public/alipay_qr.jpg&amp;WeChatQR=https://store.xuehuayu.cn/store/public/wechat_qr.png&amp;UnionPayQR=null&amp;GitHub=null&amp;BTCQR=null&amp;BTCKEY=null&amp;PayPal=https://www.paypal.com/paypalme/OrdinaryPerson" style="overflow-x:hidden; overflow-y:hidden; border:0xp none #fff; min-height:240px; width:100%;" frameborder="0" scrolling="no"></iframe><div><ul class="post-copyright"><li class="post-copyright-author"><strong>本文作者:</strong>雪花雨</li><li class="post-copyright-link"><strong>本文链接:</strong><a href="/article/14192.html">https://xuehuayu.cn/article/14192.html</a></li><li class="post-copyright-license"><strong>版权声明:</strong>① 标为原创的文章为博主原创,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接。② 转载文章来自网络,已标明出处,<a href="mailto:cainiaoblog@126.com">侵删</a>。</li></ul></div><br><div class="tags"><a href="/tags/%E8%BD%AC%E8%BD%BD/">转载</a></div><div class="post-nav"><a class="pre" href="/article/45157.html">新型肺炎疫情最新动态播报汇总</a><a class="next" href="/article/54313.html">70个JavaScript面试问题</a></div><div id="vcomment"></div><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@waline/client@v2/dist/waline.min.css"><script src="//cdn.jsdelivr.net/npm/@waline/client@v2/dist/waline.js"></script><script>const origin = window.location.origin
@@ -67,7 +67,7 @@
67
67
  <li>render()</li>
68
68
  <li>componentDidMount()</li>
69
69
  </ol>
70
- <p>注意: getDerivedStateFromProps&#x2F;getSnapshotBeforeUpdate 和 componentWillMount&#x2F;componentWillReceiveProps&#x2F;componentWillUpdate 如果同时存在,React会在控制台给出警告信息,且仅执行 getDerivedStateFromProps&#x2F;getSnapshotBeforeUpdate 【<a href="mailto:&#82;&#x65;&#x61;&#x63;&#116;&#x40;&#49;&#x36;&#x2e;&#x37;&#x2e;&#48;">&#82;&#x65;&#x61;&#x63;&#116;&#x40;&#49;&#x36;&#x2e;&#x37;&#x2e;&#48;</a>】</p>
70
+ <p>注意: getDerivedStateFromProps&#x2F;getSnapshotBeforeUpdate 和 componentWillMount&#x2F;componentWillReceiveProps&#x2F;componentWillUpdate 如果同时存在,React会在控制台给出警告信息,且仅执行 getDerivedStateFromProps&#x2F;getSnapshotBeforeUpdate 【<a href="mailto:&#82;&#x65;&#x61;&#x63;&#116;&#64;&#x31;&#x36;&#x2e;&#55;&#x2e;&#x30;">&#82;&#x65;&#x61;&#x63;&#116;&#64;&#x31;&#x36;&#x2e;&#55;&#x2e;&#x30;</a>】</p>
71
71
  <blockquote>
72
72
  <p>运行时:</p>
73
73
  </blockquote>
@@ -296,7 +296,7 @@
296
296
  <li>更好的代码组织</li>
297
297
  <li>更好的逻辑复用(options api 分散于生命周期中,代码越多越明显)</li>
298
298
  <li>更好的类型推导(直接this.a 和 this.fn,不利于类型判断 )</li>
299
- <li>不建议公用</li>
299
+ <li>不建议共用</li>
300
300
  </ul>
301
301
  <figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">export default &#123;</span><br><span class="line"> data () &#123;</span><br><span class="line"> return &#123;</span><br><span class="line"> a: 10</span><br><span class="line"> &#125;</span><br><span class="line"> &#125;,</span><br><span class="line"> methods: &#123;</span><br><span class="line"> fn () &#123;</span><br><span class="line"> const a = this.a</span><br><span class="line"> &#125;</span><br><span class="line"> &#125;,</span><br><span class="line"> mounted: &#123;</span><br><span class="line"> this.fn()</span><br><span class="line"> &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
302
302
 
@@ -542,7 +542,55 @@
542
542
  <script src="./react.dll.js"></script>
543
543
 
544
544
  <p>3、配置webpack.dev.js</p>
545
- <figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"><span class="attr">moduls</span>: &#123;</span><br><span class="line"></span><br><span class="line"> <span class="attr">rules</span>: [</span><br><span class="line"> &#123;</span><br><span class="line"> <span class="attr">test</span>: <span class="regexp">/\.js$/</span>,</span><br><span class="line"> <span class="attr">loader</span>: [<span class="string">&#x27;babel-loader&#x27;</span>],</span><br><span class="line"> <span class="attr">include</span>: srcPath,</span><br><span class="line"> <span class="attr">exclude</span>: <span class="regexp">/node_modules/</span> <span class="comment">// 使用dll,所以不需要转换了</span></span><br><span class="line"> &#125;</span><br><span class="line"> ]</span><br><span class="line"></span><br><span class="line">&#125;,</span><br><span class="line"></span><br><span class="line"><span class="attr">plugins</span>: [</span><br><span class="line"></span><br><span class="line"> <span class="keyword">new</span> <span class="title class_">DllReferencePlugin</span>(&#123;</span><br><span class="line"> <span class="attr">mainfest</span>: <span class="built_in">require</span>(path.<span class="title function_">join</span>(distPath, <span class="string">&#x27;react.mainfest.json&#x27;</span>))</span><br><span class="line"> &#125;)</span><br><span class="line"></span><br><span class="line">]</span><br><span class="line"></span><br><span class="line"><span class="string">``</span><span class="string">``</span></span><br><span class="line"></span><br><span class="line">#### webpack 优化构建速度 (可用于生产环境)</span><br><span class="line"></span><br><span class="line">* 优化 babel-loader</span><br><span class="line">* <span class="title class_">IgnorePlugin</span></span><br><span class="line">* noParse</span><br><span class="line">* happyPack</span><br><span class="line">* parellelUglifyPlugin</span><br><span class="line"></span><br><span class="line">#### webpack 优化构建速度 (不可用于生产环境)</span><br><span class="line"></span><br><span class="line">* 自动刷新</span><br><span class="line">* 热更新</span><br><span class="line">* <span class="title class_">DllPlugin</span></span><br><span class="line"></span><br><span class="line">#### webpack性能优化 - 产出代码</span><br><span class="line"></span><br><span class="line">* 体积更小</span><br><span class="line">* 合理分包,不重复引用</span><br><span class="line">* 速度更快,内损使用更少</span><br><span class="line"></span><br><span class="line">* 小图片base64编码</span><br><span class="line">* bundle + hash</span><br><span class="line">* 懒加载 <span class="keyword">import</span> 语法</span><br><span class="line">* 提取公共代码 splitChunks</span><br><span class="line">* <span class="title class_">IgnorePlugin</span></span><br><span class="line">* cdn加速</span><br><span class="line">* 使用 production</span><br><span class="line">* <span class="title class_">Scope</span> <span class="title class_">Hosting</span> 改变打包作用域</span><br><span class="line"></span><br><span class="line">##### 使用 production</span><br><span class="line"></span><br><span class="line">* 自动开启代码压缩</span><br><span class="line">* <span class="title class_">Vue</span> <span class="title class_">React</span> 等会自动删除调试代码(如开发环境的warning)</span><br><span class="line">* 启动 <span class="title class_">Tree</span>-<span class="title class_">Shaking</span></span><br><span class="line"></span><br><span class="line">##### <span class="title class_">Scope</span> <span class="title class_">Hosting</span></span><br><span class="line"></span><br><span class="line">* 代码体积更小</span><br><span class="line">* 创建函数作用域更少</span><br><span class="line">* 代码可读性更好</span><br><span class="line"></span><br><span class="line"><span class="string">``</span><span class="string">`js</span></span><br><span class="line"><span class="string">const ModuleConcatenationPlugin = require(&#x27;webpack/lib/optmize/ModuleConcatenationPlugin&#x27;)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">module.exports = &#123;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string"> resolve: &#123;</span></span><br><span class="line"><span class="string"> // 针对npm中的第三方模块有限采用 jsnext:main 中指向的es6 模块化语法的文件</span></span><br><span class="line"><span class="string"> mainFields: [&#x27;jsnext:main&#x27;, &#x27;browser&#x27;, &#x27;main&#x27;]</span></span><br><span class="line"><span class="string"> &#125;,</span></span><br><span class="line"><span class="string"> plugins: [</span></span><br><span class="line"><span class="string"> // 开启 Scope Hosting</span></span><br><span class="line"><span class="string"> new ModuleConcatenationPlugin()</span></span><br><span class="line"><span class="string"> ]</span></span><br><span class="line"><span class="string">&#125;</span></span><br><span class="line"><span class="string"></span></span><br></pre></td></tr></table></figure>
545
+ <figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"><span class="attr">moduls</span>: &#123;</span><br><span class="line"></span><br><span class="line"> <span class="attr">rules</span>: [</span><br><span class="line"> &#123;</span><br><span class="line"> <span class="attr">test</span>: <span class="regexp">/\.js$/</span>,</span><br><span class="line"> <span class="attr">loader</span>: [<span class="string">&#x27;babel-loader&#x27;</span>],</span><br><span class="line"> <span class="attr">include</span>: srcPath,</span><br><span class="line"> <span class="attr">exclude</span>: <span class="regexp">/node_modules/</span> <span class="comment">// 使用dll,所以不需要转换了</span></span><br><span class="line"> &#125;</span><br><span class="line"> ]</span><br><span class="line"></span><br><span class="line">&#125;,</span><br><span class="line"></span><br><span class="line"><span class="attr">plugins</span>: [</span><br><span class="line"></span><br><span class="line"> <span class="keyword">new</span> <span class="title class_">DllReferencePlugin</span>(&#123;</span><br><span class="line"> <span class="attr">mainfest</span>: <span class="built_in">require</span>(path.<span class="title function_">join</span>(distPath, <span class="string">&#x27;react.mainfest.json&#x27;</span>))</span><br><span class="line"> &#125;)</span><br><span class="line"></span><br><span class="line">]</span><br><span class="line"></span><br></pre></td></tr></table></figure>
546
+
547
+ <h4 id="webpack-优化构建速度-(可用于生产环境)"><a href="#webpack-优化构建速度-(可用于生产环境)" class="headerlink" title="webpack 优化构建速度 (可用于生产环境)"></a>webpack 优化构建速度 (可用于生产环境)</h4><ul>
548
+ <li>优化 babel-loader</li>
549
+ <li>IgnorePlugin</li>
550
+ <li>noParse</li>
551
+ <li>happyPack</li>
552
+ <li>parellelUglifyPlugin</li>
553
+ </ul>
554
+ <h4 id="webpack-优化构建速度-(不可用于生产环境)"><a href="#webpack-优化构建速度-(不可用于生产环境)" class="headerlink" title="webpack 优化构建速度 (不可用于生产环境)"></a>webpack 优化构建速度 (不可用于生产环境)</h4><ul>
555
+ <li>自动刷新</li>
556
+ <li>热更新</li>
557
+ <li>DllPlugin</li>
558
+ </ul>
559
+ <h4 id="webpack性能优化-产出代码"><a href="#webpack性能优化-产出代码" class="headerlink" title="webpack性能优化 - 产出代码"></a>webpack性能优化 - 产出代码</h4><ul>
560
+ <li><p>体积更小</p>
561
+ </li>
562
+ <li><p>合理分包,不重复引用</p>
563
+ </li>
564
+ <li><p>速度更快,内损使用更少</p>
565
+ </li>
566
+ <li><p>小图片base64编码</p>
567
+ </li>
568
+ <li><p>bundle + hash</p>
569
+ </li>
570
+ <li><p>懒加载 import 语法</p>
571
+ </li>
572
+ <li><p>提取公共代码 splitChunks</p>
573
+ </li>
574
+ <li><p>IgnorePlugin</p>
575
+ </li>
576
+ <li><p>cdn加速</p>
577
+ </li>
578
+ <li><p>使用 production</p>
579
+ </li>
580
+ <li><p>Scope Hosting 改变打包作用域</p>
581
+ </li>
582
+ </ul>
583
+ <h5 id="使用-production"><a href="#使用-production" class="headerlink" title="使用 production"></a>使用 production</h5><ul>
584
+ <li>自动开启代码压缩</li>
585
+ <li>Vue React 等会自动删除调试代码(如开发环境的warning)</li>
586
+ <li>启动 Tree-Shaking</li>
587
+ </ul>
588
+ <h5 id="Scope-Hosting"><a href="#Scope-Hosting" class="headerlink" title="Scope Hosting"></a>Scope Hosting</h5><ul>
589
+ <li>代码体积更小</li>
590
+ <li>创建函数作用域更少</li>
591
+ <li>代码可读性更好</li>
592
+ </ul>
593
+ <figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> <span class="title class_">ModuleConcatenationPlugin</span> = <span class="built_in">require</span>(<span class="string">&#x27;webpack/lib/optmize/ModuleConcatenationPlugin&#x27;</span>)</span><br><span class="line"></span><br><span class="line"><span class="variable language_">module</span>.<span class="property">exports</span> = &#123;</span><br><span class="line"></span><br><span class="line"> <span class="attr">resolve</span>: &#123;</span><br><span class="line"> <span class="comment">// 针对npm中的第三方模块有限采用 jsnext:main 中指向的es6 模块化语法的文件</span></span><br><span class="line"> <span class="attr">mainFields</span>: [<span class="string">&#x27;jsnext:main&#x27;</span>, <span class="string">&#x27;browser&#x27;</span>, <span class="string">&#x27;main&#x27;</span>]</span><br><span class="line"> &#125;,</span><br><span class="line"> <span class="attr">plugins</span>: [</span><br><span class="line"> <span class="comment">// 开启 Scope Hosting</span></span><br><span class="line"> <span class="keyword">new</span> <span class="title class_">ModuleConcatenationPlugin</span>()</span><br><span class="line"> ]</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure>
546
594
 
547
595
  <h2 id="babel"><a href="#babel" class="headerlink" title="babel"></a>babel</h2><ul>
548
596
  <li>环境搭建 , 基本配置<ul>