From b36f0469d02bba4658c3178d03c1591c4914d083 Mon Sep 17 00:00:00 2001 From: SoulliesOfficial <77235731+SoulliesOfficial@users.noreply.github.com> Date: Tue, 18 Feb 2025 10:30:11 -0500 Subject: [PATCH] =?UTF-8?q?=E5=9C=BA=E6=99=AF=E7=9B=B8=E6=9C=BA=E5=88=9D?= =?UTF-8?q?=E6=AD=A5=EF=BC=8C=E6=97=A5=E5=BF=97=E8=BE=93=E5=87=BALogWindow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Resources/ES3/ES3GlobalReferences.asset | 34 +- Assets/Prefabs/BasePrefabsCollection.asset | 7 +- .../DynamicUI/Elements/HintText.prefab | 324 ++++ .../DynamicUI/Elements/HintText.prefab.meta | 7 + .../{Text.prefab => ParameterText.prefab} | 2 +- ....prefab.meta => ParameterText.prefab.meta} | 0 Assets/Prefabs/DynamicUI/LogWindow.meta | 8 + .../DynamicUI/LogWindow/LogText.prefab | 150 ++ .../DynamicUI/LogWindow/LogText.prefab.meta | 7 + Assets/Scenes/EditorScene.unity | 1333 ++++++++--------- .../Simple/DynamicUIHintText.cs | 7 + .../Simple/DynamicUIInputField.cs | 6 + .../DynamicUI/Hierarchy/HierarchyTab.cs | 20 +- .../Scripts/DynamicUI/Inspector/Inspector.cs | 28 +- .../Scripts/DynamicUI/MainUI/LogWindow.meta | 8 + .../DynamicUI/MainUI/LogWindow/LogText.cs | 25 + .../MainUI/LogWindow/LogText.cs.meta | 11 + .../DynamicUI/MainUI/LogWindow/LogWindow.cs | 39 + .../MainUI/LogWindow/LogWindow.cs.meta | 11 + Assets/Scripts/DynamicUI/MainUI/MainPage.cs | 1 + Assets/Scripts/EditorGame/Base/BaseElement.cs | 11 +- .../GeneralSubmodules/TransformSubmodule.cs | 6 +- .../EditorGame/GameElements/GameElement.cs | 2 +- .../EditorGame/GameElements/Track/PathNode.cs | 8 + .../Scripts/Manager/BasePrefabsCollection.cs | 7 +- Assets/Scripts/Manager/CameraManager.cs | 42 + Assets/Scripts/Manager/CameraManager.cs.meta | 11 + Assets/Scripts/Manager/EditorManager.cs | 3 + Assets/Scripts/Manager/InputListener.cs | 35 +- Assets/Scripts/Manager/SceneCamera.cs | 54 + Assets/Scripts/Manager/SceneCamera.cs.meta | 11 + 31 files changed, 1497 insertions(+), 721 deletions(-) create mode 100644 Assets/Prefabs/DynamicUI/Elements/HintText.prefab create mode 100644 Assets/Prefabs/DynamicUI/Elements/HintText.prefab.meta rename Assets/Prefabs/DynamicUI/Elements/{Text.prefab => ParameterText.prefab} (99%) rename Assets/Prefabs/DynamicUI/Elements/{Text.prefab.meta => ParameterText.prefab.meta} (100%) create mode 100644 Assets/Prefabs/DynamicUI/LogWindow.meta create mode 100644 Assets/Prefabs/DynamicUI/LogWindow/LogText.prefab create mode 100644 Assets/Prefabs/DynamicUI/LogWindow/LogText.prefab.meta create mode 100644 Assets/Scripts/DynamicUI/MainUI/LogWindow.meta create mode 100644 Assets/Scripts/DynamicUI/MainUI/LogWindow/LogText.cs create mode 100644 Assets/Scripts/DynamicUI/MainUI/LogWindow/LogText.cs.meta create mode 100644 Assets/Scripts/DynamicUI/MainUI/LogWindow/LogWindow.cs create mode 100644 Assets/Scripts/DynamicUI/MainUI/LogWindow/LogWindow.cs.meta create mode 100644 Assets/Scripts/Manager/CameraManager.cs create mode 100644 Assets/Scripts/Manager/CameraManager.cs.meta create mode 100644 Assets/Scripts/Manager/SceneCamera.cs create mode 100644 Assets/Scripts/Manager/SceneCamera.cs.meta diff --git a/Assets/Plugins/Easy Save 3/Resources/ES3/ES3GlobalReferences.asset b/Assets/Plugins/Easy Save 3/Resources/ES3/ES3GlobalReferences.asset index e096beeb..a51b0ead 100644 --- a/Assets/Plugins/Easy Save 3/Resources/ES3/ES3GlobalReferences.asset +++ b/Assets/Plugins/Easy Save 3/Resources/ES3/ES3GlobalReferences.asset @@ -1231,16 +1231,26 @@ MonoBehaviour: - {fileID: 1230482840604333981, guid: 2f2e97c8a35330f49a9cb31ec0f075bf, type: 3} - {fileID: 4832900275935109613, guid: 2f2e97c8a35330f49a9cb31ec0f075bf, type: 3} - {fileID: 5922952087749752714, guid: 2f2e97c8a35330f49a9cb31ec0f075bf, type: 3} - - {fileID: 2800000, guid: 188dfe7e559f13248ba2c41eb5a59328, type: 3} - {fileID: 2800000, guid: f20112bdeec2e8d4d9f80e8390e37263, type: 3} - - {fileID: 2800000, guid: 3ee40aa79cd242a5b53b0b0ca4f13f0f, type: 3} - - {fileID: 2800000, guid: 2fd6421f253b4ef1a19526541f9ffc0c, type: 3} - - {fileID: 2800000, guid: ee148e281f3c41c5b4ff5f8a5afe5a6c, type: 3} - - {fileID: 2800000, guid: f66c4aa44c09b6a42a2b5b9f9334d824, type: 3} - - {fileID: 2800000, guid: b0f85f7da5042c0448a526d5ecacbfa9, type: 3} - - {fileID: 2800000, guid: f87b5805002ec9649bcb1b96d8a16ba9, type: 3} - - {fileID: 2800000, guid: a7ec9e7ad8b847b7ae4510af83c5d868, type: 3} - - {fileID: 2800000, guid: 3028dc075ba8c584d9bc7d1e0255e038, type: 3} - - {fileID: 2800000, guid: 93f09189124b21e479fc891dbc1b93bf, type: 3} - - {fileID: 2800000, guid: dcc0ed9263c0d524aabeb5f4bd75ecee, type: 3} - _Values: 526a8851fe85233e7cc810cd2b8a733faa68e71a62b99912cf2f06228873853005edfb00aa354575a31cc8ad1ac7b966f52afefc8351b636e2b71574be99675b6400dfc3607f0069e96d5112b3681f5fcf550a7f3749f10c2c006f2e23d1db370e64801184e106752a681216ffa3837998b5a5688fe7245230fcd93d5728ea479cf46b8ba7516b16ed2e96b5bbb6e20e0c6272c125d7806f67cd366983232521642549cf9088373b29cf12c86a843666a9d2726c53c784328db49f8d499d2140c6bf413c35ce7d12821326d7a7c36313210e18f42f147d60db1f64f3ada3bb2d6666d31a094491222bbde8f495825a4e2f05ece33b3881253ca117543370bf2531ac8ebf10b7f565a03ac9712b88ca58c516c5a7b6d8f161d84e972e95f1f208f318fcbd24a42f1a1594d13a0cca1e4d0b9a28c0e4238a4cd5432183fe0a3d37c5600352a5affe32a0f1cca64d60c95d6de43a2f1ab3ec2f8dafe7e182ac1c0b579975acc6cca75b9cf61ff356e4ff757ac4f0e2446c5178b3cc3b0938e3500b2c3eb04c15e369388d95cb10d3df8656069a951142fc403ed6b4a90102e5146519f66f6d35134e18b132d9ec6c3ec954f282992fe09c9f2a9752fc7c47b5d52b06e06eab61a6d10e4d7cc274d62caa67eb540f7f4be5844b6a66281ce82d2f664f7483a3a0ebff69576b98633aaa8921a5ddbe04814bd97aac297cdb1235373261c4cec06828ec556592c57c95cb2c5c853ad052230733029b09f8776f245772a3ca0276dcc8b833ca146a1411560f76a926a9289a1bf169092fa58ddf9c3a7517c82635364a7f4df403890f9d1ef144fb812196cd7f0c77286780f491baec2cdaf4fd482fda400ba6f61b9da4000716c29e6ca1845b5768bcaf0ecfc98bbb39185d35a921a8142041153dc39aaa1c286f97b630278db035fff6d32e0ef214326ce60b1f02d1fa3100beb18fe2b7e76ee911c7c76ae00c14c122f29acc03601a51f08a4016e1082f6d7eea356c2d4766a7c4e03aa5e33455a9d65f214d9d8402a2681f2dbdd87b070a985bebf6d6a81097a7bf6f1b653f6d44ca68c07e191e3105186bfcf1e65731b726cef277b7a02e2f4f8ba6de14e73c29b17188403b8622b78df10f42a4017cfff026423332e5732a39eecea4c4101a0158da5ca71f8e0cacf1a805a8b07076b2f15811115bf709cdfeb27a2a54c77a62f3f016365a2b209de610da2415e4793787e44c9401f65bb01b6f5693eb1d01b923a2b5bf5a3f57c537732b4a1ce41e1dd3bc5c8f84196316b39ae5142b724ec80f2101722eba6ec83b11cc7422a66c365139bf2fc07134f6c0358c0bda930f573d9dc4051c541157fd8ac87b1d9952a64ba6e19ca69e2499417fddbe2caa24c1a561f21387762d2def8c67a4f06e2bc76e0cb0d75f9409b22d34593aa82d7ba7ae89207f8b652d5f423bce6076d56121e00caac4b88c2c7dcb083a94c883285aa4d5c6ce0a8162bfdd6753d123843ddced44e075745b023dbb7e5b896e8269c01328054c9b302a1ab4da484855f13539de7736f3892f04d9f6479188c48f2cd00d4fa9d9c99a7201753abb270b443240a506dad2e62f21bcf924dbc733497deec366e53a852b5d6e466fed752cfb7898b19bdc423679483d7065d2ed753932d34255148ed5933b2f9bb6e6a9e268170b63bcea6793c524c3515736dfa68f07f4c3e5cd2819166dba29f321139f0d5a074dc689b94fcb3f83cf281fd236e5292abdda6dc835402586d5d0c1605cee625fb13d2d6d18c0428f254a59f1f69a0ef2e209aa3a5f6e2ef35ef170e07360261e3a3ede074843437e1dfbee809a1671c43e2f82acbcd800430f3a0f274f621bc623782b35791639d9b3d6a7a4a251738a9dcae15d1d2c629ec1dee87cac94318016b3a41242a73e5469a8f9e5305b1a9e52653be5bb871d51da8e739a2dbc794808278eefad6148f68c8cf374337c311ef987ce12cf173b716a0b132fe4277edbdd4e22f732d40ef01d45592e93a97ca93fa95e5a129817e09c00a6478b8824b30bce51819f29142579bf2f14716a04ec784291717a27138999bca5ced2397ca56aa623c557fa0aea6b7c2b2d37d36ecd046c4031e66938e3bac7e8e2834609b33cd57e178eca6b83c7852308adbe3e94d428359a07b5400093c0f470edd76c4e79870e9eaba95c32283d069372be6e79067bb6ab7ca454796a807a3129056bd4516d76698e182e2bcd6bccd4d0d55bd256e985ffc3c546e2bb353081161d28e9f2b17c68842a61ffbca8999ef095525156bae067ce736817b45824c349af41156b1c1de1a70c577fb57abce4d3570d25e2df2a5b3cc1489ae5994cd4f9624895167ccd2c878e56b79ca0e2b6cfb2425d4b4aa628d99c27562c7d03f23f7d7819c328ce578ae1527135e0f7dda3ff6a97dca81f440971457a5478000a8b6376e1d8360c581b142d9608e7a1456bfa07b651858937153a686575e98014203e3e284564acf772d0414ace1d3510e7224a5ade01287e0be64f896976eb354cd453dd6c74b85fa2e828b9d4c8b9fdf7d24683ea1f5d51667f1d5e15238dfce40c6aa371127c5bdaaa470b279155bdd3ad6d9730674a2c76017713a8a6b681a4d32ac75e5c6e094fa25e94676779f8d5da313d6e0934833ec218748a6ab334f3c665ab98e2e4d0e388478e09b6c50e887e177c2785ed64615806e08b1e6b46aa6d77d33232a00d0a9e1f09ae3d730b78d804f67dd0a3864c364a40dbc45b01f48e388ad267be45e0da793a5a1c4adc1a0557652262c47b11fe1e96831e163005de15e0fb03221f68b5285849dde06880275b1fe340dba9ac4b77d44955c8fff1aa3ec7ce951ee81cc70492c6e23b11207815a53ccaebba464132d331f694d66968042f655630447ceb4524f930ad89858d64d39f505d3e46807a1100bbe767782751b8dbae93ee5fc7226db8ffaccc4a5544bcb047a020454d5b3229c26b55bebe32232d20cceb1df107ea74ef6b3011a50761a6801b71d94a7d2c046a22d1333431a134bf8204e4ed2af4022af362109e2f2bef44313d81ec1a66a47b3c19c878470a55a2690825a356561e72b38fd7ae01ae4a6e96bb747f192505286ef155af188deaeb8cd4eec2232870ac4269fb76048416d70ae562427dd5bc4403fc346500705927a4eb212c63f36e41d3df3e7d298f24eada7da53229579148e75640d90c0cacd20fd3d11862168be888de916169c0e48b27b6757d3627fefc7d6914ba33b8b137cc9492aa430c88f1098dba073930de2672b5b1567fd6f7162a2a64072a451ccf2c5994d52e5bbfe973432468198e568f78da72731274c4468ee18fc367d4dc573e3c894702f74d106b78d3cd639abd3cfef63523231af4bf491b069c3f6fa51cfe8a26f82a3862d4b8df032e395b7650edaecae8507bfae382678d6e456f60c0820b69a968c953246344f2490055701c155611592b394b9a3c1ee2f55a1bf1f247ccd2d2694ad889b2a6521d6ef8a3102955feb74a8770a5d5a1229266ec4babb2d341af68b75b7f20341902746809447bd2cc041cc65840a4d302386b6bef9ff2fdcf41490c571f4e8127805e731a6c98de179420d656ef8a3a32d12f111d50acd2e01727d13d91114c1fc636929d3615656a0a7bbc9bffa1e8fa965da8113e79c5a1a532ea7e69180454e3301d79c190e8d37329dca220b7df4ecc352b1196c41eb28f0f07fbff1c2bdc8067b8cfbd62bc27462b9e145567c25c1264b234edf3be1e113122b8fe0f916a78044273957140d5010ea7ddc4fa9baa221fb56a55f91470e032c3ed7b7ac540e3304aa888e7b67a23199892ea67d8a8886e3c1377a78f0b3b603c0fdb93fa5c2e4a7d24561caa96003a473b91a75a470a6a98d8a779cf888976dfb7c7ef7a257b79309bde95c7ed4c3e31f237a3cd6f326f0a0bcfdefe65af544078f6f57d7bd96bb14684e8d850aa19c651a98b6a058644e66f933b98d3f00b2986bcc9080f6c13622ba77a1bc4cc0bcdd33418335b655093c331b81c194e667a0d386610db497d85bc8c077879970f0f788481ef1da14bf438ddcf86935441de988d54da39ba18e886f1c49546fc655bb9abaac6878c5c94128d280185080d674ae51107ece948329c69750e65e03bf4c85e45f9d5f44230b5c90e524e0b3bb3cbf2f392c067444ffa037bccaf833cc7382a1dcc2e985810164f89baa0c11e6db27652245a744ccf5d09012d86897f338cd68b7928087b339ae27b70de891043de1680da2a9e6dc2da8aeb7d87841910cf4ee764334c589bab7b57cc374f33e8b0b4bff010953f3aa8bd48d085bc6c8f107a773d9bd8085ae78680199d8806d542fb322c3bd701c5f052438afb772099171a234e388e4c2754e52869eaa729cf3be1ed7e1066351884c3d112e46d5e6f651930b7ab540e30b7f427a95067244828744e1a89a15782afc42d049fa043e686b803d1777123e6d31c36058ddf691518771690e1bb19c4c1ae08e7270a3159380d2f096af52e49ae98b99394ae0b30a5bee3e9482c38bf2dc0f03696c440c8eb8e3d9b0f7256ddb7321eb7fe79589046c8721a11e50ff42a8e2455fb084deb57827e23eba63fe7ea3e5f84b41043a71961f0ce5126253061b78e7fb1fe1dafe4090f80f77b5b5f77a5faafbb6b40194bcb6f5cf81c67325c4fc13417bf66e95cafa0ab01c2616a42b0ba08de2b15cef7a8ca7d6d7a48c7a140dd473d9076360c11520bcb94177895fbe6b89da010779b0bc3910b1657d6f8d809c1e51a2db23983fccdd809677340ac188e6c6f65425065ac31cde52b0b4684ec0d74a95cb12999f1219ddd6091a34f505efdc96a778c388f7f92041aada8f9eca2098a1717f73748fa9f7920d239e571826b330710ef76803c19dc1d267e4578a3f1bd652d666756341165281418be46ac9298418b0e234c6df62403e5e6dd84a5ff83207c7f9fe8d2893c21ab6192dca5698e6d19fcfb4debf52d37bf9b8fb2cb1f7d12632035d30c5091144a44a00b64485e7ca8909556fccaca71aed62a36f98955353140f88e2c72327c9afae1cbeb46af06e4d646c1eb0bac6e8fbbe0957e22d632957122408c9b7a242f3ee5210169112a5ced08811d51173c1498e218ad38044230eba0a397106d475d2293ad258a6d25564a0d94d4a7b01976a0d20c469d880ac65d0dea36916d6c5a4fdd3fe5c56277d4439108b966e8286445e5c71c857105ab9d738398585c3b235fc67b358fcb4e3e5b38030c80505f8c1b790f545aaf2aded7ea8238e50f2c6133d4e7d39ca10cefcc763eb292062b112c088221b218375064a6f285b279584b0b643f553733108693df771b8e887022ea8ff32272f413b3f3c7c8bd6b6d5f46ce8abdf6468026070803712d5ee33e24caeb90be938541ff778b61706a531b2580bce919456724969712e6917d1912d705eb8756fd1e4d4948bd6ed2e296715c1f97ad1bcd5769330f2656a56bd27e5e798a6a7fcbc427626e326103d6f779d37cbe4feb38d15b5c55ba662474f323763ecd4b6d00f026e4be108a00b86c09089f8329ad839369b61af2d6efa2fc117b0fd742a342e62e736893d3d7b9a515c1c36dc4f81cd00dac6395520e1a3741c3fe060f90aeac4987b19c151667416f40f7684def3ef65fc13512f827c6c3729fd495d6c0b4a5709048b555461adb4423269305828430000b9ab1a5634bdd40ef2ab5ebfc172f7451f7dc38f44ca559a53229fecc4110240596ca2503000c2427f6671b65ef470af71e577a6168f5400ca800cede208b30c5260e6c1daa87511547a1154c3e416a7934f5eb998a856e74f4ce53ff24fd0595c81e74014cd75e59579ae6381f0b32986ab7ede988363aa09fdf1179db5010b56455eba24a932d5d979142ef9f366c00fe13962315110c91e4d3616cc5e57e068a30d4ca1f8f4dd6899052f7f44a01978cee8538451360adb6a64188ce3e684fecc49a919d5d1f913a3f667a40ea6299d2f8f8b46bb74c636f7e7e392f295bc8f9a0e4b8e5920730cff5fe06ade56c33bb25a539c8e246a51037221fdee56111e32e73e1ce1a4b3ff1278460b5524a8a12b2f554ce9500eaa57737e24bd950156c11dd818e75022a8e9ab75fa21a596382980c2cef0c414f2e8a3b57e369743587910b5c8b361888b5ccc634dda04674e22ba04c32db0587acd350e64fa645dad97d28eff102284d80847622460d718e44af390f09c167649684afb7e531381087a00e5ac9367d20fc133249add740a062c3a29f6c351c651b747a894e2067b0b499645a01e83cf1cde6ed0971e14a41bbf0aade71675dae7b56c1aa440b2e23541c02b9c3655fb4006b92acddd929024144bbc135ba3fb4c3492055d86e52c2b8c9b555df917daa6f0a21fa2a4f2e5fd3419600af921167234a82f2794b726ebdcff41324d423b0c664303fdc3a778be53d7d6928ae71b524e487d6eb8f2fdc686f4805bbbd7da86547c714c35042a23df12748362346f1a156c7f7a40563ab6bab29930e8d3027c025cf6f75850ed5a22914ddb6785abbd7c659ed7b8a0360e41da91826af4f35de0077eeab2966d89a0daa850e790cf3516ebb4734425c4a282e54922f2752f3d9dffeb6016b0fae6031888835886e5e29b6c7b7f308009da3c217da7df95673ba9d5fee78c30ee65f0ee602b9d47fb09db1bce5ee0a00d2df62123e543530992403bc2d18a329123a1ea71ade021dd042c7772fb63c7ab09d30cddad64d6e2add7f27bd91ad68fa88a9abd063e5501e80bc037342ff4f617e0c90e8d54e3c14502f07a1d6253d6aa08e48a018b54d491f50a5e6b6046b233177c462c2af25c79241df6d130e0aa6fa99d2b4b6af48374027f8da0bdd5d4cc32ad24eea9f570f97f1cca66b4534eebab31fb028e06c822ffba2e9a7ff45b6e493aae93bbb6f9af1e14ba87bef34fcf2e794bffc0d745c69ab821abdbe4969c8e93d2865b42a752385bf4695c3063fc69ddc8e930546d71f0753e63e8923ce681e206d4ef360a8110ae281cdba385b5bbdace01e442a3d5decb893f8ef4b545772504c1b8c7247017b60621737089b3107747f22bd51dc0c1cf09ec5325022be8f2a5a6aeb3ecf4b65dea2e4c82427e353c4ff64cb7615c42d58377d100bcc33c15c77f25205e4babd3577630b3ed440168219f64f42f31815963c9207503b5aabd6a6249c18c9a61eba5969004fb9ee2c789492242a1c80b06ff717be50b36cfa1db835980724d0478d286a165ce69b21b2997143573681ba25732c211f646f6dc5641d077ca9daaa3cb468fe4e6b5456923870ea2450ae18c8858c6c08b028f297d8dcc13793a408bfc606a2618009ba1fd68ee62a599175b6053ff61d6ea1ecdd5a9527726ce1da2286561549f548b870b8742021bd380e95ad88c3535314aedbe53af914cfd2734897f74e0384d355b10898291d3ef2e0dd796e3b1b1e86749b05f12e4650a33f8be869b839e90b1981dd745c46156e610da5e4643df370d6ef7c4c0174fd649e9ba661cb2c3aa6c78588bcf956d6d27a6970de5f34f78267886c364236f3717c86293f5f4b5dcab9b453163936788019aad29804233d2d5cdc06bd407016016de8c08dd3698dd1f35ada541e0e44620013b013f65993a7b5031d7cba608b48cb548322f604ac7cc85b73a0016fb495675b43d2402af8c75519d8cf4c11e96c1adcdf8c6e216cfcbf2ddb52cd0c5bb9b078eba1e25d8af54d4a770fdc2330b744e0bbdd4e410388c73f926d054a6c9e8c6e7f3b03478abd53ea3f23a95b209c5d9296adc737f70d848c97dd1009046820267c915b6bbb8c6a783139812631225e2eca98e142d754658cbf90df6731a21057bc30274ef9c84e23184069428c5e5a747ee13f6c86ddfcd1f6e82b4b6bd2468e28296901adbe560ac6716d0a5d4876ea0471c4019e5abf58082c97032fa9050c49353a01f6a1c74f47aefd354919b3373616445ccdab782e4a6a120a78d513294d19791340174152c0174e5e4c345e794d13ed33566936366fb9b255767c9f03f14739566925554f5f218e6271da857b3c542541e747b7479dacc820cceff4fd96cccc1d5543f00a5e6f4c0d57638c02646c1535a3e0eb38ff80f3425c351b4e158bf83da6a3cf7f452f9f566d3b10c6df394437fbd5a54a1f6ce22c51ae66938a9b22336b4e5bc19c95f02e8142ccc4702c636a7a525340e6ae1e3ac0a2d0f39533e02ee723ced16bf92b661b89349ec75962234bfc0edcee621943302100f9c5fc984b23faab93fa35d57f26ed5a6fe3bc011a05f43e9241bd1c4ac4ee5eb606ce5e1622807bccadcf2815d871fc234276d97320e6f4d1be06091f18f6d00cd61e780bb48e6e9cc732372be4ac462f3f07f739c8d2d6ecc230d4278a9bb5b7fe1c3e08e907d7d0e5753b52e3df4b95b3c7a1100169bbfcb774b77c46b8edd3837fd3396e3e1946dec81e3df1d7f51d1bc08b3dceaaec1a66c03614a16a1771cff409698427fa5248fdda77454a0a5cd01af12c13cfd85bb1677d2f550510a9164da141a98a7574396c8e2e308aa04e356c1a43a5bc7c61339be514a429a74d0d848d0856374bba5b830d5abf55d4d839d10618ebcc055ad1400e0d5a9ee69cec23c44b19a9a46cb8d49f27cad6208970be4d2cdd71c72675172669bba7a043638e92636f760e1d8a8d2e16d2216f05e07a631815ed87a215153e00843bb211345bc43b45bd1bf9af30a24f43b0f897872b49350bb82f7606ef4e58c8f266b125e31d2ee5aa499d965dc71b4b385f641da77957f27d077b2c4e34546fc2c1a196537425ce277d3175e7cb677fb5d4317015c46f6cbda2a2ea985b33df9e0c581f69b208c53a96f52a47e2094e60051edd993b7b88310d54f61610667d4feeec0bdb7915fe330a555345654ca0ac538a933d56456390e0507706ff52d6d08c86c931ea721a10e4ef5c6f3042333e0b5c956505400857778404d76103cca3d4dc2d14ea6e3f1e5c5bdeba5d2de66211e085c9c552961aacfcfe5ee93292fde55d0708af69d224e50c4b614d14e4e6e6a61d506675d74849db0d1bb0646112b9f17f5bdc224d574d55512d62347f8214402bb6de6227903a0b07b9a46e10669c6161acd20a2d9cc6dba4801f0b5941de172b9aa27fcab738c0cd60f93646942401c87bf669f9f9983d7592ac258f1fcf312c96a754f7e3d5e71b6c287295fd2138a421d4224b751f3101650a36f5edcd526e38f5501230f51b5af0b2732ed92c8d4c1a35500b0e1948898aad6e266123f6c6851e5df92fda8bd446373b28935fdb929783254982b99fe15338777d780b0732445257bbcf867cf4c12452bbab8fe31576ff41e5483f493ebd3e5a089df1a4c4cff71c420897611eff1a09a80ce436c45561057ac9ec7b839b9602902b7357cf808e75a3aca10ddf9e231b6248f14ba2751e5efef61d8dbc72a05a7394f1497371d92865a56ce84cabda24592e2133731e5a1bf4eba7279dff46154dfc9b4bacdaa82b2119e5fd083612531cf9338d516ce76f11f3aa78354d7464ec8134484625d1342ab2eda6c7a2ed2a0205bc69cd2b9946e40a5c9f8420612c5c7eef79fe36f309d80049fca572c94c202b8acf6ef4683f1811d3ae7d8e4709ae3eb4b74c8bd338073abe328b6a1371411080599591bd6717af61ec62458c4946bf551bd87e6754013c36cbcac94b53019e9293f1128c40fc1ccefbedbf9b3e518a86b440d0b540872aa52d3776ce1f044a11fe28e0c53433141fbcb06b6741a0f77a3f4296123117aef33893a0f7794daef7a2ad9d1671c552812bb0f88f1bc3648c3ffc8fdc6dc81fea292c02382b0b996f0274c493031ff7850fea187e0e3e0ffbf72d3676412f76953278c061377652e0e877725801d0895df314ec58505f2414e3f9bf0142f14ecf14a63a845d6ab26567c7696835b7fac8b69469561ad0e5919cd5453034abdd07d65cbba50bf344769d790f760abbdf99f387b8d779f8b445c0a8e788501d6543169d6d2772602c3baf0c465e3f708657b4df24bc0cfa7132efff9a4c0a44da7fec349f9329faf36ca583d8933ded7baede6f2b8e07aa361c2c3b37730588b994cd388df50e1b80bbebb8178921210b2385b7d585184b77966bbbbf643e7f99e236bc3afa7b70bdf8f0e77abf6daefa4d475bf8bc5cc052e74fdb9e3526e6f96b51f9c0de18ef57eb06236bce2fb72918b60dac9978aac18a96ac54602e88d2d6e0e5116613e3cba7fcf249c62c211697b2867e186d6d1c58c8c9b89365f7bc8ff542af1559c205d242059c850c7849473c13ec4b0ab96973c9b89e492bc9be0c502644912ed50e107f5429972f974c4f807057511cf7665054dc21ed244458f43c562acd432589eedd0335a11c005dcd93b1364420f0d7b8726a19f40afd343bfb345bd93e1993a5f9462f1f2cf892acc6107f290c14d42c2de240ae3e82071f310659175b848eac45dc3e663f497495023a45e57df4d1189fd154a359be1c88c0f011da5156f8bc7e2d1bcf2a6fede56eaaab0338ec9c3c3541788a27330587bfb5a54e379b4458320263aa26fe12f241c6eefc121a50ad8c4d0f92226d95b032a38ee03761522c99ad2eca4fb99ccdac95341244f68b599a073d16754dc95f68eb223673f329a2181a95bf471bfcd4b042e58c5ea7f53c18344530233cb64ce4ce616325d440b96c91f92a734aa1b50412c6b733ab413e091ae1c0385ac654d1e2a4167c61f9dd012b20cc5e1fafcd938f2c1075ff188f10a06d3f0e818112cba5599111b832640ca4b85f758a1fd63650ac377929362f05ccd8e232c6137f55f2ff46791186b6301b3c5f2a26212624c5156a3f0cf90cb59ea3515c7dd63cc2ce7f8e2b0eb6510ee4edb411c4853aefae55483ce9c5d5db45dc254cd812b445ff9d5c59af51150ec45b5b1e45fbf1186961ad2ee186536baa968f329005e6f6a1f911611f6cbfa3c0c6877196486ab615f31d393f1dd9790f38fc18c2e37ebf75647c4b1670c92adeae1158f23afe0cffb9b87bdedf487ce068ad5697279a5bbbb81805c6b6a1a429f25a112f316a493608187c9cf99c55adf82c533d8d3df9b793ec55acfcb8b6e7ecad148636ab12d2f78d710f1dbfc11cc35741e3f4e2b62f53c863bbeb62c6af9e6b4f4c87dae4a43e2534e65115662cd5c6165b886623319bbb316e4757e694c7c15277f08a6b178d6220e5e82e22c29dc81b264c6b2637471e18bdf3ad1469f3371e6f3c0fc4b5a500322746091acaddf30b1073c1485b9a1a2ed371af23df4eb626204db2858e036635b362ff0ec1fbb121005efb09cd113d09563e97265423112790e33a17907999122609044166d60f31dc2edcc2b63f0c0ef057d0b093c01f7051d79ea536c8b279f80ee2c40cfba37f2f654a26474f7030f0492739a9e97f182974f08e3869fb137c62c9a85d48021405af1f06f5ba47019a916a800f14dd1e73046568f4ebb93a96c9561a7a382d38b4c3c1a6f67af26fd311d8352b84dc6fc117e49d5295f70f97a56340ef9d84619bcdcb2d2a7bea13f7d495e313830e111218a59dac701949452fc26322cda1358d77d0f95009993c03f7a67eff14fc1368adacf7bcddf22a4d7d8ea6c2b2ca29cd9fa9644cea3f1c4f1e5f5ce867b63033aecbcf7998f26a6afaadd27bf27a50d382b460429fa07e6e8f45db3d4e121b38a28cec19044f656eec31b868ee675b5bf0d094e3e98c2db0b6c2f7213258470ec80a1e7f666a31334ece2fd158e65cf7a07f4c7d7d384f155e3b634258445f4679ab9fe349dc3d5b0261941b5d5c58cf650080b20cc975025933dea2cd74250a6e744a0385404084420f84e45bcc48fe1c6c23a73b5352bddf6176ea026528768789ace911544a25bf03f51b4e595a72141f799eaf8246c1c68d2323ca557aa937fb6be579310e8e49b798c0b6926e7af8fc291c1475380543eb228330265b977761acb63bbf14452deb55f7e9850a341e9d1cc67f976c3d3d8fd69bab6d5ddea3d0c8e7c1da3ec61890b5ff35cf1b431f119b6cf56b1510ceeaf3ca95b0664072cd6445b20d0af9db55aeeee26c086d7318bbbd08ca18c74447e729198c5cc8f6f57203346170edf96bb7b4e6fb0e3cf2613eae6c23483de62c8af9f533204ff8e5f7edfa0538ee57323c62ed9c1e4938221b7aca0b34e7c151169f13961d2f813f059e6b342fa0d5159fc30d391566ff5f447dea9c7ac83ccfc8ec611221bb04331c4b96497043b23255c4a67f191dba3c629b6b423ec3f4f31141e07f0da9f7328743d69d2c3956c790313e0a38958e062baf626036ba26ad32bd84a705d36690bb1af263056cfe9b761e374d529e25520342f46a2f1527de36e78b234aafc16398cfc6525d2b01c0b0c7e9180e74ffd0e3d6ab4821039f580decd2e120dc5026e09ae6216379afd94034ba682bf0305519a4f9de04b01b92c5bd221b03f565081080c4f9175490be2b82298645f00e6b57100340420e58a2c078558b466cb5ca52b624f11405f7a5393b49e0290d51b201f435834593f8bc5b2b6bfa7afc8f31a467ae29034596141dac03be1b1ab623948b61d64d3255a4874220037d0d0b4482494dcb703ba076e18e8e055d9980a331a55b1d573a2d4f01a7455e05b2a5867f1d54046a65c44a80257a583ea5fe123d822d284dededbc779dcd170bbd8f6bcceb7a8545c1c6f52624358c65b970aefb7201680586aa7039c85377484be253c5424b626f7c7d27a25cc7c274a29ea858678d9a45038a08ad7f6666008e21cb0a19cfb231d60e54113f577a42f7bcf901e4550d0d48e6a6d7e4914a3bacbf1d200a43f97d3d3446174d53316ffe6047bb4caac55d30247f7b811a5432463bee4d24865642954cb9617714d773586e53e110b0f500fabf512ec275ff577687a277bd806b7b4876af669bd82a1bb4f42c1092c9bc0930ee46e4d885040b4b10eaf0725fb5282631d578a0a3642d15928432b7103b3fbd54b930c5785c3c8f5be57411c55613ab5436c39e35a9738a18ce4500d2533a2c545338e719126173eef8047626c024e997dd0c47ffde79ac45bbde46a13d6150dfb6428de1d46e43d451b03ca4fc4e270ca4970ab80c2acd33735ea1cce52f4f68aba922fc4d073d91b1e4ae714a06b69348c5025aa908141e8aa5918a330eba81ffa550a57123a553a587f8d8833e838658f17ce0d30bbfa2bc4187f2994ea15dd5d28e5b495c046c1fafb5210f145d36ddf4cdbe6d26aef464f362b2ab4cba56e59b02b1b022d0b4f6e80082c0626d571cafea5b7f1d11517f7d40c24048e9930aa1c38bee537a443b7e4aa9d82acbfe79f46a039d152bfc54abcfd29d0c8c52ff9387e1611f69c835a52000d26686abb7c1c3ca4c13cedf8839c8bc7b59a82e0a9ca96bb21664a5a3ccc6bcc9292bed327a895fd03dfb143b57a6d7a925458efef2f635bd0da232db9692e62574574e9c4911091d48a2335d6bcfa490746271a6e2cf774503c8d3a5213cc08213f71ee693acde2f63c410a0ddc25f112302bbc4ad9035870489fbea6f362e06418f4b74fdfae40b7cbebc591fe7dd3969c28222f8852fa33e97e21da8c99f996a0a5f4e77eb142919f9061ec65d46537df480134ab71e796640225157631bc309671356f98c67215bf721b492e01e312d4e024384d7c63f515aa2a457ea00382343142e709c4d0973a148ad699519795ed22b43be0703c569e19387592e1f7f09377fd02944409e1aad04d898fc47d730259aa4712b34b34ad4580b316c017a38d752970c24dd6a1236a1edfcd5d393296bb87ec9c4f1346b331bfc9d4ccf87548aa0c2a9b0ca0b47cf6d5733de4fdf59 + - {fileID: 11500000, guid: 63e7ac45befe54908ba6c691211fcbfa, type: 3} + - {fileID: 11500000, guid: 604e2c80e1fb64c2ba9608c11fb2f040, type: 3} + - {fileID: 8863047526699937627, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 4815310443098260762, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 4146383444293307128, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 1511802765271541473, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 11500000, guid: e581b946f0ff64cccafda0d2e8d76681, type: 3} + - {fileID: 2388560450800572769, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 8314584144366428067, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 2546924885880613247, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 4303436613740383453, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 2522200636602697985, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 2642348292953561022, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 8091948658150366110, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 8183404397726464440, guid: 1802da913767140929fbb149d8bb1bf5, type: 3} + - {fileID: 7734858737857034854, guid: 1802da913767140929fbb149d8bb1bf5, type: 3} + - {fileID: 591399213823941727, guid: 1802da913767140929fbb149d8bb1bf5, type: 3} + - {fileID: 534775924950268970, guid: 1802da913767140929fbb149d8bb1bf5, type: 3} + - {fileID: 11500000, guid: d537bd381617a4941839f44c04840c28, type: 3} + - {fileID: 1518651257440837964, guid: 1802da913767140929fbb149d8bb1bf5, type: 3} + - {fileID: 11500000, guid: c627b09eb0f984c59b55367c47919d38, type: 3} + _Values: 526a8851fe85233e7cc810cd2b8a733faa68e71a62b99912cf2f06228873853005edfb00aa354575a31cc8ad1ac7b966f52afefc8351b636e2b71574be99675b6400dfc3607f0069e96d5112b3681f5fcf550a7f3749f10c2c006f2e23d1db370e64801184e106752a681216ffa3837998b5a5688fe7245230fcd93d5728ea479cf46b8ba7516b16ed2e96b5bbb6e20e0c6272c125d7806f67cd366983232521642549cf9088373b29cf12c86a843666a9d2726c53c784328db49f8d499d2140c6bf413c35ce7d12821326d7a7c36313210e18f42f147d60db1f64f3ada3bb2d6666d31a094491222bbde8f495825a4e2f05ece33b3881253ca117543370bf2531ac8ebf10b7f565a03ac9712b88ca58c516c5a7b6d8f161d84e972e95f1f208f318fcbd24a42f1a1594d13a0cca1e4d0b9a28c0e4238a4cd5432183fe0a3d37c5600352a5affe32a0f1cca64d60c95d6de43a2f1ab3ec2f8dafe7e182ac1c0b579975acc6cca75b9cf61ff356e4ff757ac4f0e2446c5178b3cc3b0938e3500b2c3eb04c15e369388d95cb10d3df8656069a951142fc403ed6b4a90102e5146519f66f6d35134e18b132d9ec6c3ec954f282992fe09c9f2a9752fc7c47b5d52b06e06eab61a6d10e4d7cc274d62caa67eb540f7f4be5844b6a66281ce82d2f664f7483a3a0ebff69576b98633aaa8921a5ddbe04814bd97aac297cdb1235373261c4cec06828ec556592c57c95cb2c5c853ad052230733029b09f8776f245772a3ca0276dcc8b833ca146a1411560f76a926a9289a1bf169092fa58ddf9c3a7517c82635364a7f4df403890f9d1ef144fb812196cd7f0c77286780f491baec2cdaf4fd482fda400ba6f61b9da4000716c29e6ca1845b5768bcaf0ecfc98bbb39185d35a921a8142041153dc39aaa1c286f97b630278db035fff6d32e0ef214326ce60b1f02d1fa3100beb18fe2b7e76ee911c7c76ae00c14c122f29acc03601a51f08a4016e1082f6d7eea356c2d4766a7c4e03aa5e33455a9d65f214d9d8402a2681f2dbdd87b070a985bebf6d6a81097a7bf6f1b653f6d44ca68c07e191e3105186bfcf1e65731b726cef277b7a02e2f4f8ba6de14e73c29b17188403b8622b78df10f42a4017cfff026423332e5732a39eecea4c4101a0158da5ca71f8e0cacf1a805a8b07076b2f15811115bf709cdfeb27a2a54c77a62f3f016365a2b209de610da2415e4793787e44c9401f65bb01b6f5693eb1d01b923a2b5bf5a3f57c537732b4a1ce41e1dd3bc5c8f84196316b39ae5142b724ec80f2101722eba6ec83b11cc7422a66c365139bf2fc07134f6c0358c0bda930f573d9dc4051c541157fd8ac87b1d9952a64ba6e19ca69e2499417fddbe2caa24c1a561f21387762d2def8c67a4f06e2bc76e0cb0d75f9409b22d34593aa82d7ba7ae89207f8b652d5f423bce6076d56121e00caac4b88c2c7dcb083a94c883285aa4d5c6ce0a8162bfdd6753d123843ddced44e075745b023dbb7e5b896e8269c01328054c9b302a1ab4da484855f13539de7736f3892f04d9f6479188c48f2cd00d4fa9d9c99a7201753abb270b443240a506dad2e62f21bcf924dbc733497deec366e53a852b5d6e466fed752cfb7898b19bdc423679483d7065d2ed753932d34255148ed5933b2f9bb6e6a9e268170b63bcea6793c524c3515736dfa68f07f4c3e5cd2819166dba29f321139f0d5a074dc689b94fcb3f83cf281fd236e5292abdda6dc835402586d5d0c1605cee625fb13d2d6d18c0428f254a59f1f69a0ef2e209aa3a5f6e2ef35ef170e07360261e3a3ede074843437e1dfbee809a1671c43e2f82acbcd800430f3a0f274f621bc623782b35791639d9b3d6a7a4a251738a9dcae15d1d2c629ec1dee87cac94318016b3a41242a73e5469a8f9e5305b1a9e52653be5bb871d51da8e739a2dbc794808278eefad6148f68c8cf374337c311ef987ce12cf173b716a0b132fe4277edbdd4e22f732d40ef01d45592e93a97ca93fa95e5a129817e09c00a6478b8824b30bce51819f29142579bf2f14716a04ec784291717a27138999bca5ced2397ca56aa623c557fa0aea6b7c2b2d37d36ecd046c4031e66938e3bac7e8e2834609b33cd57e178eca6b83c7852308adbe3e94d428359a07b5400093c0f470edd76c4e79870e9eaba95c32283d069372be6e79067bb6ab7ca454796a807a3129056bd4516d76698e182e2bcd6bccd4d0d55bd256e985ffc3c546e2bb353081161d28e9f2b17c68842a61ffbca8999ef095525156bae067ce736817b45824c349af41156b1c1de1a70c577fb57abce4d3570d25e2df2a5b3cc1489ae5994cd4f9624895167ccd2c878e56b79ca0e2b6cfb2425d4b4aa628d99c27562c7d03f23f7d7819c328ce578ae1527135e0f7dda3ff6a97dca81f440971457a5478000a8b6376e1d8360c581b142d9608e7a1456bfa07b651858937153a686575e98014203e3e284564acf772d0414ace1d3510e7224a5ade01287e0be64f896976eb354cd453dd6c74b85fa2e828b9d4c8b9fdf7d24683ea1f5d51667f1d5e15238dfce40c6aa371127c5bdaaa470b279155bdd3ad6d9730674a2c76017713a8a6b681a4d32ac75e5c6e094fa25e94676779f8d5da313d6e0934833ec218748a6ab334f3c665ab98e2e4d0e388478e09b6c50e887e177c2785ed64615806e08b1e6b46aa6d77d33232a00d0a9e1f09ae3d730b78d804f67dd0a3864c364a40dbc45b01f48e388ad267be45e0da793a5a1c4adc1a0557652262c47b11fe1e96831e163005de15e0fb03221f68b5285849dde06880275b1fe340dba9ac4b77d44955c8fff1aa3ec7ce951ee81cc70492c6e23b11207815a53ccaebba464132d331f694d66968042f655630447ceb4524f930ad89858d64d39f505d3e46807a1100bbe767782751b8dbae93ee5fc7226db8ffaccc4a5544bcb047a020454d5b3229c26b55bebe32232d20cceb1df107ea74ef6b3011a50761a6801b71d94a7d2c046a22d1333431a134bf8204e4ed2af4022af362109e2f2bef44313d81ec1a66a47b3c19c878470a55a2690825a356561e72b38fd7ae01ae4a6e96bb747f192505286ef155af188deaeb8cd4eec2232870ac4269fb76048416d70ae562427dd5bc4403fc346500705927a4eb212c63f36e41d3df3e7d298f24eada7da53229579148e75640d90c0cacd20fd3d11862168be888de916169c0e48b27b6757d3627fefc7d6914ba33b8b137cc9492aa430c88f1098dba073930de2672b5b1567fd6f7162a2a64072a451ccf2c5994d52e5bbfe973432468198e568f78da72731274c4468ee18fc367d4dc573e3c894702f74d106b78d3cd639abd3cfef63523231af4bf491b069c3f6fa51cfe8a26f82a3862d4b8df032e395b7650edaecae8507bfae382678d6e456f60c0820b69a968c953246344f2490055701c155611592b394b9a3c1ee2f55a1bf1f247ccd2d2694ad889b2a6521d6ef8a3102955feb74a8770a5d5a1229266ec4babb2d341af68b75b7f20341902746809447bd2cc041cc65840a4d302386b6bef9ff2fdcf41490c571f4e8127805e731a6c98de179420d656ef8a3a32d12f111d50acd2e01727d13d91114c1fc636929d3615656a0a7bbc9bffa1e8fa965da8113e79c5a1a532ea7e69180454e3301d79c190e8d37329dca220b7df4ecc352b1196c41eb28f0f07fbff1c2bdc8067b8cfbd62bc27462b9e145567c25c1264b234edf3be1e113122b8fe0f916a78044273957140d5010ea7ddc4fa9baa221fb56a55f91470e032c3ed7b7ac540e3304aa888e7b67a23199892ea67d8a8886e3c1377a78f0b3b603c0fdb93fa5c2e4a7d24561caa96003a473b91a75a470a6a98d8a779cf888976dfb7c7ef7a257b79309bde95c7ed4c3e31f237a3cd6f326f0a0bcfdefe65af544078f6f57d7bd96bb14684e8d850aa19c651a98b6a058644e66f933b98d3f00b2986bcc9080f6c13622ba77a1bc4cc0bcdd33418335b655093c331b81c194e667a0d386610db497d85bc8c077879970f0f788481ef1da14bf438ddcf86935441de988d54da39ba18e886f1c49546fc655bb9abaac6878c5c94128d280185080d674ae51107ece948329c69750e65e03bf4c85e45f9d5f44230b5c90e524e0b3bb3cbf2f392c067444ffa037bccaf833cc7382a1dcc2e985810164f89baa0c11e6db27652245a744ccf5d09012d86897f338cd68b7928087b339ae27b70de891043de1680da2a9e6dc2da8aeb7d87841910cf4ee764334c589bab7b57cc374f33e8b0b4bff010953f3aa8bd48d085bc6c8f107a773d9bd8085ae78680199d8806d542fb322c3bd701c5f052438afb772099171a234e388e4c2754e52869eaa729cf3be1ed7e1066351884c3d112e46d5e6f651930b7ab540e30b7f427a95067244828744e1a89a15782afc42d049fa043e686b803d1777123e6d31c36058ddf691518771690e1bb19c4c1ae08e7270a3159380d2f096af52e49ae98b99394ae0b30a5bee3e9482c38bf2dc0f03696c440c8eb8e3d9b0f7256ddb7321eb7fe79589046c8721a11e50ff42a8e2455fb084deb57827e23eba63fe7ea3e5f84b41043a71961f0ce5126253061b78e7fb1fe1dafe4090f80f77b5b5f77a5faafbb6b40194bcb6f5cf81c67325c4fc13417bf66e95cafa0ab01c2616a42b0ba08de2b15cef7a8ca7d6d7a48c7a140dd473d9076360c11520bcb94177895fbe6b89da010779b0bc3910b1657d6f8d809c1e51a2db23983fccdd809677340ac188e6c6f65425065ac31cde52b0b4684ec0d74a95cb12999f1219ddd6091a34f505efdc96a778c388f7f92041aada8f9eca2098a1717f73748fa9f7920d239e571826b330710ef76803c19dc1d267e4578a3f1bd652d666756341165281418be46ac9298418b0e234c6df62403e5e6dd84a5ff83207c7f9fe8d2893c21ab6192dca5698e6d19fcfb4debf52d37bf9b8fb2cb1f7d12632035d30c5091144a44a00b64485e7ca8909556fccaca71aed62a36f98955353140f88e2c72327c9afae1cbeb46af06e4d646c1eb0bac6e8fbbe0957e22d632957122408c9b7a242f3ee5210169112a5ced08811d51173c1498e218ad38044230eba0a397106d475d2293ad258a6d25564a0d94d4a7b01976a0d20c469d880ac65d0dea36916d6c5a4fdd3fe5c56277d4439108b966e8286445e5c71c857105ab9d738398585c3b235fc67b358fcb4e3e5b38030c80505f8c1b790f545aaf2aded7ea8238e50f2c6133d4e7d39ca10cefcc763eb292062b112c088221b218375064a6f285b279584b0b643f553733108693df771b8e887022ea8ff32272f413b3f3c7c8bd6b6d5f46ce8abdf6468026070803712d5ee33e24caeb90be938541ff778b61706a531b2580bce919456724969712e6917d1912d705eb8756fd1e4d4948bd6ed2e296715c1f97ad1bcd5769330f2656a56bd27e5e798a6a7fcbc427626e326103d6f779d37cbe4feb38d15b5c55ba662474f323763ecd4b6d00f026e4be108a00b86c09089f8329ad839369b61af2d6efa2fc117b0fd742a342e62e736893d3d7b9a515c1c36dc4f81cd00dac6395520e1a3741c3fe060f90aeac4987b19c151667416f40f7684def3ef65fc13512f827c6c3729fd495d6c0b4a5709048b555461adb4423269305828430000b9ab1a5634bdd40ef2ab5ebfc172f7451f7dc38f44ca559a53229fecc4110240596ca2503000c2427f6671b65ef470af71e577a6168f5400ca800cede208b30c5260e6c1daa87511547a1154c3e416a7934f5eb998a856e74f4ce53ff24fd0595c81e74014cd75e59579ae6381f0b32986ab7ede988363aa09fdf1179db5010b56455eba24a932d5d979142ef9f366c00fe13962315110c91e4d3616cc5e57e068a30d4ca1f8f4dd6899052f7f44a01978cee8538451360adb6a64188ce3e684fecc49a919d5d1f913a3f667a40ea6299d2f8f8b46bb74c636f7e7e392f295bc8f9a0e4b8e5920730cff5fe06ade56c33bb25a539c8e246a51037221fdee56111e32e73e1ce1a4b3ff1278460b5524a8a12b2f554ce9500eaa57737e24bd950156c11dd818e75022a8e9ab75fa21a596382980c2cef0c414f2e8a3b57e369743587910b5c8b361888b5ccc634dda04674e22ba04c32db0587acd350e64fa645dad97d28eff102284d80847622460d718e44af390f09c167649684afb7e531381087a00e5ac9367d20fc133249add740a062c3a29f6c351c651b747a894e2067b0b499645a01e83cf1cde6ed0971e14a41bbf0aade71675dae7b56c1aa440b2e23541c02b9c3655fb4006b92acddd929024144bbc135ba3fb4c3492055d86e52c2b8c9b555df917daa6f0a21fa2a4f2e5fd3419600af921167234a82f2794b726ebdcff41324d423b0c664303fdc3a778be53d7d6928ae71b524e487d6eb8f2fdc686f4805bbbd7da86547c714c35042a23df12748362346f1a156c7f7a40563ab6bab29930e8d3027c025cf6f75850ed5a22914ddb6785abbd7c659ed7b8a0360e41da91826af4f35de0077eeab2966d89a0daa850e790cf3516ebb4734425c4a282e54922f2752f3d9dffeb6016b0fae6031888835886e5e29b6c7b7f308009da3c217da7df95673ba9d5fee78c30ee65f0ee602b9d47fb09db1bce5ee0a00d2df62123e543530992403bc2d18a329123a1ea71ade021dd042c7772fb63c7ab09d30cddad64d6e2add7f27bd91ad68fa88a9abd063e5501e80bc037342ff4f617e0c90e8d54e3c14502f07a1d6253d6aa08e48a018b54d491f50a5e6b6046b233177c462c2af25c79241df6d130e0aa6fa99d2b4b6af48374027f8da0bdd5d4cc32ad24eea9f570f97f1cca66b4534eebab31fb028e06c822ffba2e9a7ff45b6e493aae93bbb6f9af1e14ba87bef34fcf2e794bffc0d745c69ab821abdbe4969c8e93d2865b42a752385bf4695c3063fc69ddc8e930546d71f0753e63e8923ce681e206d4ef360a8110ae281cdba385b5bbdace01e442a3d5decb893f8ef4b545772504c1b8c7247017b60621737089b3107747f22bd51dc0c1cf09ec5325022be8f2a5a6aeb3ecf4b65dea2e4c82427e353c4ff64cb7615c42d58377d100bcc33c15c77f25205e4babd3577630b3ed440168219f64f42f31815963c9207503b5aabd6a6249c18c9a61eba5969004fb9ee2c789492242a1c80b06ff717be50b36cfa1db835980724d0478d286a165ce69b21b2997143573681ba25732c211f646f6dc5641d077ca9daaa3cb468fe4e6b5456923870ea2450ae18c8858c6c08b028f297d8dcc13793a408bfc606a2618009ba1fd68ee62a599175b6053ff61d6ea1ecdd5a9527726ce1da2286561549f548b870b8742021bd380e95ad88c3535314aedbe53af914cfd2734897f74e0384d355b10898291d3ef2e0dd796e3b1b1e86749b05f12e4650a33f8be869b839e90b1981dd745c46156e610da5e4643df370d6ef7c4c0174fd649e9ba661cb2c3aa6c78588bcf956d6d27a6970de5f34f78267886c364236f3717c86293f5f4b5dcab9b453163936788019aad29804233d2d5cdc06bd407016016de8c08dd3698dd1f35ada541e0e44620013b013f65993a7b5031d7cba608b48cb548322f604ac7cc85b73a0016fb495675b43d2402af8c75519d8cf4c11e96c1adcdf8c6e216cfcbf2ddb52cd0c5bb9b078eba1e25d8af54d4a770fdc2330b744e0bbdd4e410388c73f926d054a6c9e8c6e7f3b03478abd53ea3f23a95b209c5d9296adc737f70d848c97dd1009046820267c915b6bbb8c6a783139812631225e2eca98e142d754658cbf90df6731a21057bc30274ef9c84e23184069428c5e5a747ee13f6c86ddfcd1f6e82b4b6bd2468e28296901adbe560ac6716d0a5d4876ea0471c4019e5abf58082c97032fa9050c49353a01f6a1c74f47aefd354919b3373616445ccdab782e4a6a120a78d513294d19791340174152c0174e5e4c345e794d13ed33566936366fb9b255767c9f03f14739566925554f5f218e6271da857b3c542541e747b7479dacc820cceff4fd96cccc1d5543f00a5e6f4c0d57638c02646c1535a3e0eb38ff80f3425c351b4e158bf83da6a3cf7f452f9f566d3b10c6df394437fbd5a54a1f6ce22c51ae66938a9b22336b4e5bc19c95f02e8142ccc4702c636a7a525340e6ae1e3ac0a2d0f39533e02ee723ced16bf92b661b89349ec75962234bfc0edcee621943302100f9c5fc984b23faab93fa35d57f26ed5a6fe3bc011a05f43e9241bd1c4ac4ee5eb606ce5e1622807bccadcf2815d871fc234276d97320e6f4d1be06091f18f6d00cd61e780bb48e6e9cc732372be4ac462f3f07f739c8d2d6ecc230d4278a9bb5b7fe1c3e08e907d7d0e5753b52e3df4b95b3c7a1100169bbfcb774b77c46b8edd3837fd3396e3e1946dec81e3df1d7f51d1bc08b3dceaaec1a66c03614a16a1771cff409698427fa5248fdda77454a0a5cd01af12c13cfd85bb1677d2f550510a9164da141a98a7574396c8e2e308aa04e356c1a43a5bc7c61339be514a429a74d0d848d0856374bba5b830d5abf55d4d839d10618ebcc055ad1400e0d5a9ee69cec23c44b19a9a46cb8d49f27cad6208970be4d2cdd71c72675172669bba7a043638e92636f760e1d8a8d2e16d2216f05e07a631815ed87a215153e00843bb211345bc43b45bd1bf9af30a24f43b0f897872b49350bb82f7606ef4e58c8f266b125e31d2ee5aa499d965dc71b4b385f641da77957f27d077b2c4e34546fc2c1a196537425ce277d3175e7cb677fb5d4317015c46f6cbda2a2ea985b33df9e0c581f69b208c53a96f52a47e2094e60051edd993b7b88310d54f61610667d4feeec0bdb7915fe330a555345654ca0ac538a933d56456390e0507706ff52d6d08c86c931ea721a10e4ef5c6f3042333e0b5c956505400857778404d76103cca3d4dc2d14ea6e3f1e5c5bdeba5d2de66211e085c9c552961aacfcfe5ee93292fde55d0708af69d224e50c4b614d14e4e6e6a61d506675d74849db0d1bb0646112b9f17f5bdc224d574d55512d62347f8214402bb6de6227903a0b07b9a46e10669c6161acd20a2d9cc6dba4801f0b5941de172b9aa27fcab738c0cd60f93646942401c87bf669f9f9983d7592ac258f1fcf312c96a754f7e3d5e71b6c287295fd2138a421d4224b751f3101650a36f5edcd526e38f5501230f51b5af0b2732ed92c8d4c1a35500b0e1948898aad6e266123f6c6851e5df92fda8bd446373b28935fdb929783254982b99fe15338777d780b0732445257bbcf867cf4c12452bbab8fe31576ff41e5483f493ebd3e5a089df1a4c4cff71c420897611eff1a09a80ce436c45561057ac9ec7b839b9602902b7357cf808e75a3aca10ddf9e231b6248f14ba2751e5efef61d8dbc72a05a7394f1497371d92865a56ce84cabda24592e2133731e5a1bf4eba7279dff46154dfc9b4bacdaa82b2119e5fd083612531cf9338d516ce76f11f3aa78354d7464ec8134484625d1342ab2eda6c7a2ed2a0205bc69cd2b9946e40a5c9f8420612c5c7eef79fe36f309d80049fca572c94c202b8acf6ef4683f1811d3ae7d8e4709ae3eb4b74c8bd338073abe328b6a1371411080599591bd6717af61ec62458c4946bf551bd87e6754013c36cbcac94b53019e9293f1128c40fc1ccefbedbf9b3e518a86b440d0b540872aa52d3776ce1f044a11fe28e0c53433141fbcb06b6741a0f77a3f4296123117aef33893a0f7794daef7a2ad9d1671c552812bb0f88f1bc3648c3ffc8fdc6dc81fea292c02382b0b996f0274c493031ff7850fea187e0e3e0ffbf72d3676412f76953278c061377652e0e877725801d0895df314ec58505f2414e3f9bf0142f14ecf14a63a845d6ab26567c7696835b7fac8b69469561ad0e5919cd5453034abdd07d65cbba50bf344769d790f760abbdf99f387b8d779f8b445c0a8e788501d6543169d6d2772602c3baf0c465e3f708657b4df24bc0cfa7132efff9a4c0a44da7fec349f9329faf36ca583d8933ded7baede6f2b8e07aa361c2c3b37730588b994cd388df50e1b80bbebb8178921210b2385b7d585184b77966bbbbf643e7f99e236bc3afa7b70bdf8f0e77abf6daefa4d475bf8bc5cc052e74fdb9e3526e6f96b51f9c0de18ef57eb06236bce2fb72918b60dac9978aac18a96ac54602e88d2d6e0e5116613e3cba7fcf249c62c211697b2867e186d6d1c58c8c9b89365f7bc8ff542af1559c205d242059c850c7849473c13ec4b0ab96973c9b89e492bc9be0c502644912ed50e107f5429972f974c4f807057511cf7665054dc21ed244458f43c562acd432589eedd0335a11c005dcd93b1364420f0d7b8726a19f40afd343bfb345bd93e1993a5f9462f1f2cf892acc6107f290c14d42c2de240ae3e82071f310659175b848eac45dc3e663f497495023a45e57df4d1189fd154a359be1c88c0f011da5156f8bc7e2d1bcf2a6fede56eaaab0338ec9c3c3541788a27330587bfb5a54e379b4458320263aa26fe12f241c6eefc121a50ad8c4d0f92226d95b032a38ee03761522c99ad2eca4fb99ccdac95341244f68b599a073d16754dc95f68eb223673f329a2181a95bf471bfcd4b042e58c5ea7f53c18344530233cb64ce4ce616325d440b96c91f92a734aa1b50412c6b733ab413e091ae1c0385ac654d1e2a4167c61f9dd012b20cc5e1fafcd938f2c1075ff188f10a06d3f0e818112cba5599111b832640ca4b85f758a1fd63650ac377929362f05ccd8e232c6137f55f2ff46791186b6301b3c5f2a26212624c5156a3f0cf90cb59ea3515c7dd63cc2ce7f8e2b0eb6510ee4edb411c4853aefae55483ce9c5d5db45dc254cd812b445ff9d5c59af51150ec45b5b1e45fbf1186961ad2ee186536baa968f329005e6f6a1f911611f6cbfa3c0c6877196486ab615f31d393f1dd9790f38fc18c2e37ebf75647c4b1670c92adeae1158f23afe0cffb9b87bdedf487ce068ad5697279a5bbbb81805c6b6a1a429f25a112f316a493608187c9cf99c55adf82c533d8d3df9b793ec55acfcb8b6e7ecad148636ab12d2f78d710f1dbfc11cc35741e3f4e2b62f53c863bbeb62c6af9e6b4f4c87dae4a43e2534e65115662cd5c6165b886623319bbb316e4757e694c7c15277f08a6b178d6220e5e82e22c29dc81b264c6b2637471e18bdf3ad1469f3371e6f3c0fc4b5a500322746091acaddf30b1073c1485b9a1a2ed371af23df4eb626204db2858e036635b362ff0ec1fbb121005efb09cd113d09563e97265423112790e33a17907999122609044166d60f31dc2edcc2b63f0c0ef057d0b093c01f7051d79ea536c8b279f80ee2c40cfba37f2f654a26474f7030f0492739a9e97f182974f08e3869fb137c62c9a85d48021405af1f06f5ba47019a916a800f14dd1e73046568f4ebb93a96c9561a7a382d38b4c3c1a6f67af26fd311d8352b84dc6fc117e49d5295f70f97a56340ef9d84619bcdcb2d2a7bea13f7d495e313830e111218a59dac701949452fc26322cda1358d77d0f95009993c03f7a67eff14fc1368adacf7bcddf22a4d7d8ea6c2b2ca29cd9fa9644cea3f1c4f1e5f5ce867b63033aecbcf7998f26a6afaadd27bf27a50d382b460429fa07e6e8f45db3d4e121b38a28cec19044f656eec31b868ee675b5bf0d094e3e98c2db0b6c2f7213258470ec80a1e7f666a31334ece2fd158e65cf7a07f4c7d7d384f155e3b634258445f4679ab9fe349dc3d5b0261941b5d5c58cf650080b20cc975025933dea2cd74250a6e744a0385404084420f84e45bcc48fe1c6c23a73b5352bddf6176ea026528768789ace911544a25bf03f51b4e595a72141f799eaf8246c1c68d2323ca557aa937fb6be579310e8e49b798c0b6926e7af8fc291c1475380543eb228330265b977761acb63bbf14452deb55f7e9850a341e9d1cc67f976c3d3d8fd69bab6d5ddea3d0c8e7c1da3ec61890b5ff35cf1b431f119b6cf56b1510ceeaf3ca95b0664072cd6445b20d0af9db55aeeee26c086d7318bbbd08ca18c74447e729198c5cc8f6f57203346170edf96bb7b4e6fb0e3cf2613eae6c23483de62c8af9f533204ff8e5f7edfa0538ee57323c62ed9c1e4938221b7aca0b34e7c151169f13961d2f813f059e6b342fa0d5159fc30d391566ff5f447dea9c7ac83ccfc8ec611221bb04331c4b96497043b23255c4a67f191dba3c629b6b423ec3f4f31141e07f0da9f7328743d69d2c3956c790313e0a38958e062baf626036ba26ad32bd84a705d36690bb1af263056cfe9b761e374d529e25520342f46a2f1527de36e78b234aafc16398cfc6525d2b01c0b0c7e9180e74ffd0e3d6ab4821039f580decd2e120dc5026e09ae6216379afd94034ba682bf0305519a4f9de04b01b92c5bd221b03f565081080c4f9175490be2b82298645f00e6b57100340420e58a2c078558b466cb5ca52b624f11405f7a5393b49e0290d51b201f435834593f8bc5b2b6bfa7afc8f31a467ae29034596141dac03be1b1ab623948b61d64d3255a4874220037d0d0b4482494dcb703ba076e18e8e055d9980a331a55b1d573a2d4f01a7455e05b2a5867f1d54046a65c44a80257a583ea5fe123d822d284dededbc779dcd170bbd8f6bcceb7a8545c1c6f52624358c65b970aefb7201680586aa7039c85377484be253c5424b626f7c7d27a25cc7c274a29ea858678d9a45038a08ad7f6666008e21cb0a19cfb231d60e54113f577a42f7bcf901e4550d0d48e6a6d7e4914a3bacbf1d200a43f97d3d3446174d53316ffe6047bb4caac55d30247f7b811a5432463bee4d24865642954cb9617714d773586e53e110b0f500fabf512ec275ff577687a277bd806b7b4876af669bd82a1bb4f42c1092c9bc0930ee46e4d885040b4b10eaf0725fb5282631d578a0a3642d15928432b7103b3fbd54b930c5785c3c8f5be57411c55613ab5436c39e35a9738a18ce4500d2533a2c545338e719126173eef8047626c024e997dd0c47ffde79ac45bbde46a13d6150dfb6428de1d46e43d451b03ca4fc4e270ca4970ab80c2acd33735ea1cce52f4f68aba922fc4d073d91b1e4ae714a06b69348c5025aa908141e8aa5918a330eba81ffa550a57123a553a587f8d8833e838658f17ce0d30bbfa2bc4187f2994ea15dd5d28e5b495c046c1fafb5210f145d36ddf4cdbe6d26aef464f362b2ab4cba56e59b02b1b022d0b4f6e80082c0626d571cafea5b7f1d11517f7d40c24048e9930aa1c38bee537a443b7e4aa9d82acbfe79f46a039d152bfc54abcfd29d0c8c52ff9387e1611f69c835a52000d26686abb7c1c3ca4c13cedf8839c8bc7b59a82e0a9ca96bb21664a5a3ccc6bcc9292bed327a895fd03dfb143b57a6d7a925458efef2f635bd0da232db9692e62574574e9c4911091d48a2335d6bcfa490746271a6e2cf774503c8d3a5213cc08213f71ee693acde2f63c410a0ddc25f112302bbc4ad9035870489fbea6f362e06418f4b74fdfae40b7cbebc591fe7dd3969c28222f8852fa33e97e21da8c99f996a0a5f4e77eb142919f9061ec65d46537df480134ab71e796640225157631bc309671356f98c67215bf721b492e01e312d4e024384d7c63f515aa2a457ea00382343142e709c4d0973a148ad699519795ee19387592e1f7f09876ac9dac0ad3a3605a296ce63ceff409e14c14ecc7a9748985b7577f84cc064e8ff940f8935b92b29dc7e86e4da3531e07cba3b9865c35864a083f5b51dd95089f1d76834d62a2cceec77a9f81d2c726e5967846d7a344dc3ed732ab8aee146b6cffcf302cdfc4aa8e66dacee1a5f45b6299bf50a7c2e1b17483d96f7866e1366d4b4a635eb2d59316ea6cd13baf91bc2e1b9640ea5a6130d18aa16cc20d00d2b23d92af82c4d63 diff --git a/Assets/Prefabs/BasePrefabsCollection.asset b/Assets/Prefabs/BasePrefabsCollection.asset index ef69d967..582d205b 100644 --- a/Assets/Prefabs/BasePrefabsCollection.asset +++ b/Assets/Prefabs/BasePrefabsCollection.asset @@ -50,9 +50,12 @@ MonoBehaviour: type: 3} inputField: {fileID: 2642348292953561022, guid: 94ed5dfb5df8c408faa267d2915aaeeb, type: 3} - Vector3inputField: {fileID: 8936320662031972394, guid: 9e72408c17dfe4740b0e9060d6b3fafa, + vector3InputField: {fileID: 8936320662031972394, guid: 9e72408c17dfe4740b0e9060d6b3fafa, + type: 3} + parameterText: {fileID: 2642348292953561022, guid: 4b0098f7176cb49d6ac968b7d3ca4c51, + type: 3} + hintText: {fileID: 2642348292953561022, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} - text: {fileID: 2642348292953561022, guid: 4b0098f7176cb49d6ac968b7d3ca4c51, type: 3} button: {fileID: 2642348292953561022, guid: 533a8f49826b0440fbdbb2a2f98738d3, type: 3} toggle: {fileID: 2642348292953561022, guid: dfe4543fe11b54269a3bbc5b6c84e0ed, type: 3} enumDropdown: {fileID: 2642348292953561022, guid: 51df578950a6d4a35a922e00753efb58, diff --git a/Assets/Prefabs/DynamicUI/Elements/HintText.prefab b/Assets/Prefabs/DynamicUI/Elements/HintText.prefab new file mode 100644 index 00000000..3e7f7cee --- /dev/null +++ b/Assets/Prefabs/DynamicUI/Elements/HintText.prefab @@ -0,0 +1,324 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2522200636602697985 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4815310443098260762} + - component: {fileID: 8863047526699937627} + - component: {fileID: 4146383444293307128} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4815310443098260762 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2522200636602697985} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2546924885880613247} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 32.5} + m_SizeDelta: {x: 200, y: 35} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8863047526699937627 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2522200636602697985} + m_CullTransparentMesh: 1 +--- !u!114 &4146383444293307128 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2522200636602697985} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Title + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 18 + m_fontSizeBase: 18 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &2642348292953561022 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2546924885880613247} + - component: {fileID: 2388560450800572769} + m_Layer: 5 + m_Name: HintText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2546924885880613247 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2642348292953561022} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4815310443098260762} + - {fileID: 8314584144366428067} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 240, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2388560450800572769 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2642348292953561022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e581b946f0ff64cccafda0d2e8d76681, type: 3} + m_Name: + m_EditorClassIdentifier: + title: {fileID: 4146383444293307128} + parameterName: + isAlwaysUpdated: 0 + text: {fileID: 1511802765271541473} +--- !u!1 &4303436613740383453 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8314584144366428067} + - component: {fileID: 8091948658150366110} + - component: {fileID: 1511802765271541473} + m_Layer: 5 + m_Name: TextContent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8314584144366428067 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4303436613740383453} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2546924885880613247} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.0000076293945, y: -17.5} + m_SizeDelta: {x: 220, y: 65} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8091948658150366110 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4303436613740383453} + m_CullTransparentMesh: 1 +--- !u!114 &1511802765271541473 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4303436613740383453} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: (1,2,3,4) + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 36 + m_fontSizeBase: 15 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 15 + m_fontSizeMax: 36 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} diff --git a/Assets/Prefabs/DynamicUI/Elements/HintText.prefab.meta b/Assets/Prefabs/DynamicUI/Elements/HintText.prefab.meta new file mode 100644 index 00000000..efda85d1 --- /dev/null +++ b/Assets/Prefabs/DynamicUI/Elements/HintText.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 49f2af6ffb61a4145ab7ed3d0873b6a2 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/DynamicUI/Elements/Text.prefab b/Assets/Prefabs/DynamicUI/Elements/ParameterText.prefab similarity index 99% rename from Assets/Prefabs/DynamicUI/Elements/Text.prefab rename to Assets/Prefabs/DynamicUI/Elements/ParameterText.prefab index 14677162..1e607b5a 100644 --- a/Assets/Prefabs/DynamicUI/Elements/Text.prefab +++ b/Assets/Prefabs/DynamicUI/Elements/ParameterText.prefab @@ -145,7 +145,7 @@ GameObject: - component: {fileID: 2546924885880613247} - component: {fileID: 1590546503192305588} m_Layer: 5 - m_Name: Text + m_Name: ParameterText m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/Prefabs/DynamicUI/Elements/Text.prefab.meta b/Assets/Prefabs/DynamicUI/Elements/ParameterText.prefab.meta similarity index 100% rename from Assets/Prefabs/DynamicUI/Elements/Text.prefab.meta rename to Assets/Prefabs/DynamicUI/Elements/ParameterText.prefab.meta diff --git a/Assets/Prefabs/DynamicUI/LogWindow.meta b/Assets/Prefabs/DynamicUI/LogWindow.meta new file mode 100644 index 00000000..b09e1b83 --- /dev/null +++ b/Assets/Prefabs/DynamicUI/LogWindow.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c7200eb7314c642b596a3075e48312e4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/DynamicUI/LogWindow/LogText.prefab b/Assets/Prefabs/DynamicUI/LogWindow/LogText.prefab new file mode 100644 index 00000000..44bd45c4 --- /dev/null +++ b/Assets/Prefabs/DynamicUI/LogWindow/LogText.prefab @@ -0,0 +1,150 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &591399213823941727 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 534775924950268970} + - component: {fileID: 8183404397726464440} + - component: {fileID: 7734858737857034854} + - component: {fileID: 1518651257440837964} + m_Layer: 5 + m_Name: LogText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &534775924950268970 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 591399213823941727} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 450, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8183404397726464440 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 591399213823941727} + m_CullTransparentMesh: 1 +--- !u!114 &7734858737857034854 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 591399213823941727} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: New Text + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 17.9 + m_fontSizeBase: 18 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 8 + m_fontSizeMax: 18 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &1518651257440837964 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 591399213823941727} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c627b09eb0f984c59b55367c47919d38, type: 3} + m_Name: + m_EditorClassIdentifier: + logText: {fileID: 7734858737857034854} diff --git a/Assets/Prefabs/DynamicUI/LogWindow/LogText.prefab.meta b/Assets/Prefabs/DynamicUI/LogWindow/LogText.prefab.meta new file mode 100644 index 00000000..7cadbe30 --- /dev/null +++ b/Assets/Prefabs/DynamicUI/LogWindow/LogText.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1802da913767140929fbb149d8bb1bf5 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/EditorScene.unity b/Assets/Scenes/EditorScene.unity index c2e64448..2e3f1d4c 100644 --- a/Assets/Scenes/EditorScene.unity +++ b/Assets/Scenes/EditorScene.unity @@ -478,6 +478,7 @@ RectTransform: m_Children: - {fileID: 1100229419} - {fileID: 698213482} + - {fileID: 303975921} m_Father: {fileID: 1647473499} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -500,6 +501,7 @@ MonoBehaviour: mainCanvas: {fileID: 1647473502} toolBar: {fileID: 1100229420} resolutionHints: {fileID: 698213484} + logWindow: {fileID: 303975922} --- !u!1 &147050167 GameObject: m_ObjectHideFlags: 0 @@ -1129,7 +1131,7 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 277935642} m_CullTransparentMesh: 1 ---- !u!1 &293267687 +--- !u!1 &303975920 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1137,80 +1139,51 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 293267688} - - component: {fileID: 293267689} - m_Layer: 0 - m_Name: GameCamera + - component: {fileID: 303975921} + - component: {fileID: 303975922} + m_Layer: 5 + m_Name: LogWindow m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &293267688 -Transform: +--- !u!224 &303975921 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 293267687} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -5} + m_GameObject: {fileID: 303975920} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 2048155078} - m_Father: {fileID: 759707325} + - {fileID: 332800122} + m_Father: {fileID: 134500157} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &293267689 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 225, y: 300} + m_SizeDelta: {x: 450, y: 80} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &303975922 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 293267687} + m_GameObject: {fileID: 303975920} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 79d811a12f27f43629797719fcbfc6ae, type: 3} + m_Script: {fileID: 11500000, guid: d537bd381617a4941839f44c04840c28, type: 3} m_Name: m_EditorClassIdentifier: - serializationData: - SerializedFormat: 2 - SerializedBytes: - ReferencedUnityObjects: [] - SerializedBytesString: - Prefab: {fileID: 0} - PrefabModificationsReferencedUnityObjects: [] - PrefabModifications: [] - SerializationNodes: - - Name: elementGuid - Entry: 2 - Data: 00000000000000000000000000000000 - - Name: submoduleList - Entry: 7 - Data: 0|System.Collections.Generic.List`1[[Ichni.RhythmGame.SubmoduleBase, - Assembly-CSharp]], mscorlib - - Name: - Entry: 12 - Data: 0 - - Name: - Entry: 13 - Data: - - Name: - Entry: 8 - Data: - elementName: - tags: [] - parentElement: {fileID: 0} - connectedTab: {fileID: 0} - childElementList: [] - camera: {fileID: 330585545} - rotationPoint: {fileID: 2048155078} - positionPoint: {fileID: 719302918} - cameraTransform: {fileID: 330585546} - cameraViewType: 0 - perspectiveAngle: 60 - orthographicSize: 10 + logTextPrefab: {fileID: 591399213823941727, guid: 1802da913767140929fbb149d8bb1bf5, + type: 3} + textRect: {fileID: 332800122} + logTextCapacity: 4 --- !u!1 &305380820 GameObject: m_ObjectHideFlags: 0 @@ -1380,7 +1353,7 @@ MonoBehaviour: m_OnValueChanged: m_PersistentCalls: m_Calls: [] ---- !u!1 &330585543 +--- !u!1 &332800121 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1388,490 +1361,100 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 330585546} - - component: {fileID: 330585545} - - component: {fileID: 330585547} - - component: {fileID: 330585550} - - component: {fileID: 330585549} - - component: {fileID: 330585548} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera + - component: {fileID: 332800122} + - component: {fileID: 332800124} + - component: {fileID: 332800123} + - component: {fileID: 332800126} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!20 &330585545 -Camera: +--- !u!224 &332800122 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 330585543} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0, g: 0, b: 0, a: 1} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_Iso: 200 - m_ShutterSpeed: 0.005 - m_Aperture: 16 - m_FocusDistance: 10 - m_FocalLength: 50 - m_BladeCount: 5 - m_Curvature: {x: 2, y: 11} - m_BarrelClipping: 0.25 - m_Anamorphism: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 1 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &330585546 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 330585543} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_GameObject: {fileID: 332800121} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 719302918} + m_Father: {fileID: 303975921} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &330585547 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &332800123 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 330585543} + m_GameObject: {fileID: 332800121} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: - m_RenderShadows: 1 - m_RequiresDepthTextureOption: 2 - m_RequiresOpaqueTextureOption: 2 - m_CameraType: 1 - m_Cameras: [] - m_RendererIndex: -1 - m_VolumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - m_VolumeTrigger: {fileID: 0} - m_VolumeFrameworkUpdateModeOption: 2 - m_RenderPostProcessing: 1 - m_Antialiasing: 0 - m_AntialiasingQuality: 2 - m_StopNaN: 0 - m_Dithering: 0 - m_ClearDepth: 1 - m_AllowXRRendering: 1 - m_AllowHDROutput: 1 - m_UseScreenCoordOverride: 0 - m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} - m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} - m_RequiresDepthTexture: 0 - m_RequiresColorTexture: 0 - m_Version: 2 - m_TaaSettings: - m_Quality: 3 - m_FrameInfluence: 0.1 - m_JitterScale: 1 - m_MipBias: 0 - m_VarianceClampScale: 0.9 - m_ContrastAdaptiveSharpening: 0 ---- !u!114 &330585548 + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.047058824} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &332800124 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 332800121} + m_CullTransparentMesh: 1 +--- !u!114 &332800126 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 330585543} + m_GameObject: {fileID: 332800121} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 531894cbc68d4bf49a71825ad87c3305, type: 3} + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} m_Name: m_EditorClassIdentifier: - ChannelMode: 0 - Channel: 0 - MMChannelDefinition: {fileID: 0} - CooldownBetweenShakes: 0 ---- !u!114 &330585549 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 330585543} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6bf8e915527fa424a8b17dc168fe20eb, type: 3} - m_Name: - m_EditorClassIdentifier: - ChannelMode: 0 - Channel: 0 - MMChannelDefinition: {fileID: 0} - CooldownBetweenShakes: 0 ---- !u!114 &330585550 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 330585543} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 347013242dca7c44fb5001793033ea59, type: 3} - m_Name: - m_EditorClassIdentifier: - UpdateMode: 0 - PositionActive: 0 - RotationActive: 0 - ScaleActive: 0 - PositionWiggleProperties: - WigglePermitted: 1 - WiggleType: 1 - UseUnscaledTime: 0 - TimeMultiplier: 1 - StartWigglingAutomatically: 1 - SmoothPingPong: 1 - UseSpeedCurve: 0 - SpeedCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - FrequencyMin: 0 - FrequencyMax: 1 - AmplitudeMin: {x: 0, y: 0, z: 0} - AmplitudeMax: {x: 1, y: 1, z: 1} - RelativeAmplitude: 1 - UniformValues: 0 - ForceVectorLength: 0 - ForcedVectorLength: 1 - Curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - RemapCurveZeroMin: {x: 0, y: 0, z: 0} - RemapCurveZeroMax: {x: 0, y: 0, z: 0} - RemapCurveOneMin: {x: 1, y: 1, z: 1} - RemapCurveOneMax: {x: 1, y: 1, z: 1} - RelativeCurveAmplitude: 1 - CurvePingPong: 0 - PauseMin: 0 - PauseMax: 0 - LimitedTime: 0 - LimitedTimeTotal: 0 - LimitedTimeFalloff: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: -1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: -1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - LimitedTimeResetValue: 1 - LimitedTimeLeft: 0 - NoiseFrequencyMin: {x: 0, y: 0, z: 0} - NoiseFrequencyMax: {x: 1, y: 1, z: 1} - NoiseShiftMin: {x: 0, y: 0, z: 0} - NoiseShiftMax: {x: 0, y: 0, z: 0} - RotationWiggleProperties: - WigglePermitted: 1 - WiggleType: 1 - UseUnscaledTime: 0 - TimeMultiplier: 1 - StartWigglingAutomatically: 1 - SmoothPingPong: 1 - UseSpeedCurve: 0 - SpeedCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - FrequencyMin: 0 - FrequencyMax: 1 - AmplitudeMin: {x: 0, y: 0, z: 0} - AmplitudeMax: {x: 1, y: 1, z: 1} - RelativeAmplitude: 1 - UniformValues: 0 - ForceVectorLength: 0 - ForcedVectorLength: 1 - Curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - RemapCurveZeroMin: {x: 0, y: 0, z: 0} - RemapCurveZeroMax: {x: 0, y: 0, z: 0} - RemapCurveOneMin: {x: 1, y: 1, z: 1} - RemapCurveOneMax: {x: 1, y: 1, z: 1} - RelativeCurveAmplitude: 1 - CurvePingPong: 0 - PauseMin: 0 - PauseMax: 0 - LimitedTime: 0 - LimitedTimeTotal: 0 - LimitedTimeFalloff: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: -1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: -1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - LimitedTimeResetValue: 1 - LimitedTimeLeft: 0 - NoiseFrequencyMin: {x: 0, y: 0, z: 0} - NoiseFrequencyMax: {x: 1, y: 1, z: 1} - NoiseShiftMin: {x: 0, y: 0, z: 0} - NoiseShiftMax: {x: 0, y: 0, z: 0} - ScaleWiggleProperties: - WigglePermitted: 1 - WiggleType: 1 - UseUnscaledTime: 0 - TimeMultiplier: 1 - StartWigglingAutomatically: 1 - SmoothPingPong: 1 - UseSpeedCurve: 0 - SpeedCurve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - FrequencyMin: 0 - FrequencyMax: 1 - AmplitudeMin: {x: 0, y: 0, z: 0} - AmplitudeMax: {x: 1, y: 1, z: 1} - RelativeAmplitude: 1 - UniformValues: 0 - ForceVectorLength: 0 - ForcedVectorLength: 1 - Curve: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 0 - inSlope: 0 - outSlope: 1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 1 - inSlope: 1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - RemapCurveZeroMin: {x: 0, y: 0, z: 0} - RemapCurveZeroMax: {x: 0, y: 0, z: 0} - RemapCurveOneMin: {x: 1, y: 1, z: 1} - RemapCurveOneMax: {x: 1, y: 1, z: 1} - RelativeCurveAmplitude: 1 - CurvePingPong: 0 - PauseMin: 0 - PauseMax: 0 - LimitedTime: 0 - LimitedTimeTotal: 0 - LimitedTimeFalloff: - serializedVersion: 2 - m_Curve: - - serializedVersion: 3 - time: 0 - value: 1 - inSlope: 0 - outSlope: -1 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - - serializedVersion: 3 - time: 1 - value: 0 - inSlope: -1 - outSlope: 0 - tangentMode: 0 - weightedMode: 0 - inWeight: 0 - outWeight: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - m_RotationOrder: 4 - LimitedTimeResetValue: 1 - LimitedTimeLeft: 0 - NoiseFrequencyMin: {x: 0, y: 0, z: 0} - NoiseFrequencyMax: {x: 1, y: 1, z: 1} - NoiseShiftMin: {x: 0, y: 0, z: 0} - NoiseShiftMax: {x: 0, y: 0, z: 0} - DebugWiggleDuration: 2 + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 7 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 1 --- !u!1 &359802525 GameObject: m_ObjectHideFlags: 0 @@ -2661,7 +2244,7 @@ MonoBehaviour: m_RequiresOpaqueTextureOption: 2 m_CameraType: 0 m_Cameras: - - {fileID: 330585545} + - {fileID: 1464630160} m_RendererIndex: -1 m_VolumeLayerMask: serializedVersion: 2 @@ -2877,38 +2460,6 @@ MonoBehaviour: phoneFrame: {fileID: 887261417} iPadFrame: {fileID: 1191279293} safeAreaFrame: {fileID: 1173389079} ---- !u!1 &719302917 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 719302918} - m_Layer: 0 - m_Name: PositionPoint - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &719302918 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 719302917} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 330585546} - m_Father: {fileID: 2048155078} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &728685384 GameObject: m_ObjectHideFlags: 0 @@ -2984,82 +2535,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 728685384} m_CullTransparentMesh: 0 ---- !u!1 &759707323 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 759707325} - - component: {fileID: 759707324} - m_Layer: 0 - m_Name: Folder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &759707324 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 759707323} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0892af0ddd15c449d9b1c65248b5dc64, type: 3} - m_Name: - m_EditorClassIdentifier: - serializationData: - SerializedFormat: 2 - SerializedBytes: - ReferencedUnityObjects: [] - SerializedBytesString: - Prefab: {fileID: 0} - PrefabModificationsReferencedUnityObjects: [] - PrefabModifications: [] - SerializationNodes: - - Name: elementGuid - Entry: 2 - Data: 00000000000000000000000000000000 - - Name: submoduleList - Entry: 7 - Data: 0|System.Collections.Generic.List`1[[Ichni.RhythmGame.SubmoduleBase, - Assembly-CSharp]], mscorlib - - Name: - Entry: 12 - Data: 0 - - Name: - Entry: 13 - Data: - - Name: - Entry: 8 - Data: - elementName: - tags: [] - parentElement: {fileID: 0} - connectedTab: {fileID: 0} - childElementList: [] - trackList: [] ---- !u!4 &759707325 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 759707323} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 293267688} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &832575517 GameObject: m_ObjectHideFlags: 0 @@ -4518,6 +3993,7 @@ GameObject: - component: {fileID: 1197505582} - component: {fileID: 1197505584} - component: {fileID: 1197505585} + - component: {fileID: 1197505586} m_Layer: 0 m_Name: EditorManager m_TagString: Untagged @@ -4587,6 +4063,7 @@ MonoBehaviour: childElementList: [] uiManager: {fileID: 1039576900} backgroundController: {fileID: 1197505585} + cameraManager: {fileID: 1197505586} currentJudgeType: 2 basePrefabs: {fileID: 11400000, guid: 266f4a39c512c46eea7e44336e4fc600, type: 2} --- !u!4 &1197505579 @@ -4663,6 +4140,22 @@ MonoBehaviour: backgroundCanvas: {fileID: 359802529} backgroundImage: {fileID: 1653833123} skyboxMaterial: {fileID: 0} +--- !u!114 &1197505586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1197505577} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 604e2c80e1fb64c2ba9608c11fb2f040, type: 3} + m_Name: + m_EditorClassIdentifier: + isSceneCameraActive: 1 + sceneCamera: {fileID: 1464630164} + cameraMoveSpeed: 0 + gameCamera: {fileID: 0} --- !u!1 &1214558124 GameObject: m_ObjectHideFlags: 0 @@ -6072,6 +5565,515 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1456264022} m_CullTransparentMesh: 0 +--- !u!1 &1464630157 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1464630159} + - component: {fileID: 1464630160} + - component: {fileID: 1464630163} + - component: {fileID: 1464630158} + - component: {fileID: 1464630161} + - component: {fileID: 1464630162} + - component: {fileID: 1464630164} + m_Layer: 0 + m_Name: SceneCamera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1464630158 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1464630157} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 347013242dca7c44fb5001793033ea59, type: 3} + m_Name: + m_EditorClassIdentifier: + UpdateMode: 0 + PositionActive: 0 + RotationActive: 0 + ScaleActive: 0 + PositionWiggleProperties: + WigglePermitted: 1 + WiggleType: 1 + UseUnscaledTime: 0 + TimeMultiplier: 1 + StartWigglingAutomatically: 1 + SmoothPingPong: 1 + UseSpeedCurve: 0 + SpeedCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + FrequencyMin: 0 + FrequencyMax: 1 + AmplitudeMin: {x: 0, y: 0, z: 0} + AmplitudeMax: {x: 1, y: 1, z: 1} + RelativeAmplitude: 1 + UniformValues: 0 + ForceVectorLength: 0 + ForcedVectorLength: 1 + Curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + RemapCurveZeroMin: {x: 0, y: 0, z: 0} + RemapCurveZeroMax: {x: 0, y: 0, z: 0} + RemapCurveOneMin: {x: 1, y: 1, z: 1} + RemapCurveOneMax: {x: 1, y: 1, z: 1} + RelativeCurveAmplitude: 1 + CurvePingPong: 0 + PauseMin: 0 + PauseMax: 0 + LimitedTime: 0 + LimitedTimeTotal: 0 + LimitedTimeFalloff: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: -1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: -1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + LimitedTimeResetValue: 1 + LimitedTimeLeft: 0 + NoiseFrequencyMin: {x: 0, y: 0, z: 0} + NoiseFrequencyMax: {x: 1, y: 1, z: 1} + NoiseShiftMin: {x: 0, y: 0, z: 0} + NoiseShiftMax: {x: 0, y: 0, z: 0} + RotationWiggleProperties: + WigglePermitted: 1 + WiggleType: 1 + UseUnscaledTime: 0 + TimeMultiplier: 1 + StartWigglingAutomatically: 1 + SmoothPingPong: 1 + UseSpeedCurve: 0 + SpeedCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + FrequencyMin: 0 + FrequencyMax: 1 + AmplitudeMin: {x: 0, y: 0, z: 0} + AmplitudeMax: {x: 1, y: 1, z: 1} + RelativeAmplitude: 1 + UniformValues: 0 + ForceVectorLength: 0 + ForcedVectorLength: 1 + Curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + RemapCurveZeroMin: {x: 0, y: 0, z: 0} + RemapCurveZeroMax: {x: 0, y: 0, z: 0} + RemapCurveOneMin: {x: 1, y: 1, z: 1} + RemapCurveOneMax: {x: 1, y: 1, z: 1} + RelativeCurveAmplitude: 1 + CurvePingPong: 0 + PauseMin: 0 + PauseMax: 0 + LimitedTime: 0 + LimitedTimeTotal: 0 + LimitedTimeFalloff: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: -1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: -1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + LimitedTimeResetValue: 1 + LimitedTimeLeft: 0 + NoiseFrequencyMin: {x: 0, y: 0, z: 0} + NoiseFrequencyMax: {x: 1, y: 1, z: 1} + NoiseShiftMin: {x: 0, y: 0, z: 0} + NoiseShiftMax: {x: 0, y: 0, z: 0} + ScaleWiggleProperties: + WigglePermitted: 1 + WiggleType: 1 + UseUnscaledTime: 0 + TimeMultiplier: 1 + StartWigglingAutomatically: 1 + SmoothPingPong: 1 + UseSpeedCurve: 0 + SpeedCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + FrequencyMin: 0 + FrequencyMax: 1 + AmplitudeMin: {x: 0, y: 0, z: 0} + AmplitudeMax: {x: 1, y: 1, z: 1} + RelativeAmplitude: 1 + UniformValues: 0 + ForceVectorLength: 0 + ForcedVectorLength: 1 + Curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + RemapCurveZeroMin: {x: 0, y: 0, z: 0} + RemapCurveZeroMax: {x: 0, y: 0, z: 0} + RemapCurveOneMin: {x: 1, y: 1, z: 1} + RemapCurveOneMax: {x: 1, y: 1, z: 1} + RelativeCurveAmplitude: 1 + CurvePingPong: 0 + PauseMin: 0 + PauseMax: 0 + LimitedTime: 0 + LimitedTimeTotal: 0 + LimitedTimeFalloff: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: -1 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: -1 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + LimitedTimeResetValue: 1 + LimitedTimeLeft: 0 + NoiseFrequencyMin: {x: 0, y: 0, z: 0} + NoiseFrequencyMax: {x: 1, y: 1, z: 1} + NoiseShiftMin: {x: 0, y: 0, z: 0} + NoiseShiftMax: {x: 0, y: 0, z: 0} + DebugWiggleDuration: 2 +--- !u!4 &1464630159 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1464630157} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &1464630160 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1464630157} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 1} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 1 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!114 &1464630161 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1464630157} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6bf8e915527fa424a8b17dc168fe20eb, type: 3} + m_Name: + m_EditorClassIdentifier: + ChannelMode: 0 + Channel: 0 + MMChannelDefinition: {fileID: 0} + CooldownBetweenShakes: 0 +--- !u!114 &1464630162 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1464630157} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 531894cbc68d4bf49a71825ad87c3305, type: 3} + m_Name: + m_EditorClassIdentifier: + ChannelMode: 0 + Channel: 0 + MMChannelDefinition: {fileID: 0} + CooldownBetweenShakes: 0 +--- !u!114 &1464630163 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1464630157} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 1 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 1 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 +--- !u!114 &1464630164 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1464630157} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63e7ac45befe54908ba6c691211fcbfa, type: 3} + m_Name: + m_EditorClassIdentifier: + camera: {fileID: 1464630160} + viewType: 0 + perspectiveAngle: 60 + orthographicSize: 10 --- !u!1 &1491057506 GameObject: m_ObjectHideFlags: 0 @@ -8278,7 +8280,7 @@ MonoBehaviour: openPrefabs: 0 prefabs: [] idRef: - _Keys: 526a8851fe85233e7cc810cd2b8a733faa68e71a62b99912cf2f06228873853005edfb00aa354575a31cc8ad1ac7b966f52afefc8351b636e2b71574be99675b6400dfc3607f0069e96d5112b3681f5fcf550a7f3749f10c2c006f2e23d1db370e64801184e106752a681216ffa3837998b5a5688fe724520d14109f10d172186ee5fbb117f224110b067c1b61cb6e75d9b619fa92551a320786221b3b03ec208e22f046f695e21830fcd93d5728ea479cf46b8ba7516b16ed2e96b5bbb6e20e0c6272c125d7806f67cd366983232521642549cf9088373bbcb047a020454d5bb82aa5499ca2e04b4891be89dac6ab0e659c5a08b1215a41b815970146d88b119ec54e97b8c60707cd2b47c307f6a055723ad0f074e03e69319b6e78f521fa20e22f14eb87ebaa2c5d9ec5792568c53e74417380a87c864288e4671d588e1210db981f281d4a325d1a036b29e53abc3829cf12c86a843666a9d2726c53c784328db49f8d499d214074d166a5105c5d3da29f4627a1da7a5e317a2d1042614f5281c64a6625b57e38c6bf413c35ce7d12821326d7a7c36313210e18f42f147d60db1f64f3ada3bb2d6666d31a094491222bbde8f495825a4e2f05ece33b3881253ca117543370bf2531ac8ebf10b7f565a03ac9712b88ca58c516c5a7b6d8f161e8f9dd682d3dee657e0ec3e9f39a3e76118743006e0ffa3a958fe6b6ca98245845d258f66aa26d222a2ff31dc5e16529d84e972e95f1f208f318fcbd24a42f1a1594d13a0cca1e4d0b9a28c0e4238a4cd5432183fe0a3d37c5600352a5affe32a0f1cca64d60c95d6de43a2f1ab3ec2f8dafe7e182ac1c0b579975acc6cca75b9cf61ff356e4ff757ac4f0e2446c5178b3cc3b0938e3500b2c3eb04c15e369388d95cb10d3df8656508d984144c6391548fc5f9307b1937f462b1e94944b8a5d47e5baaa4a0ec664069a951142fc403ed6b4a90102e5146519f66f6d35134e18b132d9ec6c3ec954f282992fe09c9f2a9752fc7c47b5d52b06e06eab61a6d10e4d7cc274d62caa67eb540f7f4be5844b6a66281ce82d2f660704e68bd01df34b4f7483a3a0ebff69576b98633aaa8921a5ddbe04814bd97aac297cdb1235373261c4cec06828ec556592c57c95cb2c5c853ad052230733029b09f8776f245772a3ca0276dcc8b833ca146a1411560f76a926a9289a1bf169092fa58ddf9c3a7517c82635364a7f4df403890f9d1ef144fb812196cd7f0c77286780f491baec2cdaf4fd482fda400ba6f61b9da4000716c29e6ca1845b5768bcaf0ecfc98bbb39185d35a921a8142041153dc39aaa1c286f97b630278db035b399727f338ebd32b154b50236b0376b4d721d6667e4fc105300a244e46bac30d36f74ee5f1e5e1ecf22e3b47049ce6796831219efef073b663eaf360df286471f4d94f76f0eb074884263b2a75d1863ce0aae615892403e884faa62326ad43eaa2a9522b5d7f75bcc785fcdad451c3b561268034425ee4e712d804046ec580d17a1097cc8f6ad5afff6d32e0ef214326ce60b1f02d1fa31e71c6c1ca8c75d472e9349f4c45f8c4dc0c2013af81c5d63b2032b19179f0c5109edb220eddd4a554c13b12cb5d56721429066885700c558f421713be1a14442bb774cca3425cb341fcaf3fbd03ccf786c4d5ba70595a869cf6fe72c22325567a5649773f2357847af0759d10313b725cfe3c24772aa470214482b6154a356625d3cfd5f01ca892d756a72e68478521c260cfa05f49dda051e95883b60da9c51a244d0c0efe9d8666defd20837617d7266b7c4b857af913f62f77c9653c48e6531de7737b6edf43c4fb65263c69d520ca31f8267043c187cb4a2308b15597153ca84b71279cbaf66bfaa5ba7832ffb560a905f13c6ddfc56d95928071c08fb3b1fb5c7c5200b0056ee483116cf9b411d5add2ab42d68210eab747ff3c96d3a504da8889e1b9f6a76e44a45824db5863649a09878ada45b093fff39b97a41162843c42da16cac080e6d98e7aec85f367b53fb8ec0f6007f0600beb18fe2b7e76ee911c7c76ae00c14c122f29acc03601a51f08a4016e1082f6d7eea356c2d4766a7c4e03aa5e33455a9d65f214d9d8402a2681f2dbdd87b070a985bebf6d6a81097a7bf6f1b653f6d44ca68c07e191e3105186bfcf1e65731b726cef277b7a02e2f4f8ba6de14e73c29b17188403b8622b78df10f42a4017cfff026423332e5732a39eecea4c4101a0158da5ca71f8e0cacf1a805a8b07076b2f15811115bf709cdfeb27a2a54c77a62f3f016365a2b209de610da2415e4793787e44c9401f65bb01b6f5693eb1d01b923a2b5bf5a3f57c537732b4a1ce41e1dd3bc5c8f84196316b39ae5142b724ec80f2101722eba6ec83b11cc7422a66c365139bf2fc07134f6c0358c0bda930f573d9dc4051c541157fd8ac87b1d9952a64ba6e19ca69e2499417fddbe2caa24c1a561f21387762d2def8c67a4f06e2bc76e0cb0d75f9409b22d34593aa82d7ba7ae89207f8b652d5f423bce6076d56121e00caac4b88c2c7dcb083a94c883285aa4d5c6ce0a8162bfdd6753d123843ddced44e075745b023dbb7e5b896e8269c01328054c9b302a1ab4da484855f13539de7736f3892f04d9f6479188c48f2cd00d4fa9d9c99a7201753abb270b443240a506dad2e62f21bcf924dbc733497deec366e53a852b5d6e466fed752cfb7898b19bdc423679483d7065d2ed753932d34255148ed5933b2f9bb6e6a9e268170b63bcea6793c524c3515736dfa68f07f4c3e5cd2819166dba29f321139f0d5a074dc689b94fcb3f83cf281fd236e5292abdda6dc835402586d5d0c1605cee625fb13d2d6d18c0428f254a59f1f69a0ef2e209aa3a5f6e2ef35ef170e07360261e3a3ede074843437e1dfbee809a1671c43e2f82acbcd800430f3a0f274f621bc623782b35791639d9b3d6a7a4a251738a9dcae15d1d2c629ec1dee87cac94318016b3a41242a73e5469a8f9e5305b1a9e52653be5bb871d51da8e739a2dbc794808278eefad6148f68c8cf374337c311ef987ce12cf173b716a0b132fe4277edbdd4e22f732d40ef01d45592e93a97ca93fa95e5a129817e09c00a6478b8824b30bce51819f29142579bf2f14716a04ec784291717a27138999bca5ced2397ca56aa623c557fa0aea6b7c2b2d37d36ecd046c4031e66938e3bac7e8e2834609b33cd57e178eca6b83c7852308adbe3e94d428359a07b5400093c0f470edd76c4e79870e9eaba95c32283d069372be6e79067bb6ab7ca454796a807a3129056bd4516d76698e182e2bcd6bccd4d0d55bd256e985ffc3c546e2bb353081161d28e9f2b17c68842a61ffbca8999ef095525156bae067ce736817b45824c349af41156b1c1de1a70c577fb57abce4d3570d25e2df2a5b3cc1489ae5994cd4f9624895167ccd2c878e56b79ca0e2b6cfb2425d4b4aa628d99c27562c7d03f23f7d7819c328ce578ae1527135e0f7dda3ff6a97dca81f440971457a5478000a8b6376e1d8360c581b142d9608e7a1456bfa07b11db9cad86b165ea900c6a33576f6669b6509fca26e78181e3ede275a8dd608e99eab8ab79fb62091b490f2856d9b4217a75c73f0925d24f926913197ec393b9de88cf0bdbdcf010bcbb3426c6c6d7e45accf53ccbe9060865688a783570c0b104493af50b47d63cdef662cf94f80351be43050530347601dddf3f456dd262d70d44b89935d88372e86a8cee0b3492bd7bd8d9f26bbb70cfe339272c1880d54ea6c44dbfb085e779397802554e9bf30d9e0e167af78f92c74a879380f050748667067538e266767fc005c1939ca0c1ea78a5417c0d02940b651858937153a686575e98014203e3ea29e6086c3ac7102284564acf772d0414ace1d3510e7224a5ade01287e0be64f896976eb354cd453dd6c74b85fa2e828b9d4c8b9fdf7d24683ea1f5d51667f1d5e15238dfce40c6aa371127c5bdaaa470b279155bdd3ad6d9730674a2c76017713a8a6b681a4d32ac75e5c6e094fa25e94676779f8d5da313d6e0934833ec218748a6ab334f3c665ab98e2e4d0e388478e09b6c50e887e177c2785ed64615806e08b1e6b46aa6d77d33232a00d0a9e1f09ae3d730b78d804f67dd0a3864c364a40dbc45b01f48e388ad267be45e0da793a5a1c4adc1a0557652262c47b11fe1e96831e163005de15e0fb03221f68b5285849dde06880275b1fe340dba9ac4b77d44955c8fff1aa3ec7ce951ee81cc70492c6e23b11207815a53ccaebba464132d331f694d66968042f655630447ceb4524f930ad89858d646db8ffaccc4a5544b8dbae93ee5fc7221100bbe767782751d39f505d3e46807a33ea248231afbc4820d464750dae792b485f35f3da671b68c470c6f7a0e967032bfc144474afdf073229c26b55bebe32404fecaaae93c74ce2f2e2b42f0a3340f1adc28705b45160767200e0055d2a29c8d707be4a4cbf309d7b188aeeb4396969bfa396f9cdaa0a5fb2ccc36c18b83e1d0c7c0612f18a3d6df22581ccdb4f3ec869b63bff3fdd6a7eede202e67d624acca95905cebf8377cb9ad6f957d6c17c9c7103fc9e83c122d0ed77dbf077a81090dbb52382496f07e63f079a15d6c254af5f9f58805fe84e95842a43c8a098540f3976cd731b00191ff41e2175a4c759503476afe9fe6e300d9847f88b4d2f7928a47323a00b1f6ca17ac673be392639b47c6c03e9b7c20fcb46da0c63f9a56c2597491a17ebf95a54e25163c4e2ef2b8ff153f745cd9d20997c11191ad330651f32975683415037232d20cceb1df1072bef44313d81ec1af4022af362109e2f2c046a22d133343118402fce0841ce4eea74ef6b3011a50766a47b3c19c87847a134bf8204e4ed2a61a6801b71d94a7d2505286ef155af18ae4a6e96bb747f19561e72b38fd7ae012870ac4269fb76048deaeb8cd4eec2230a55a2690825a3568416d70ae562427dd5bc4403fc346500705927a4eb212c63f36e41d3df3e7d298f24eada7da53229579148e75640d90c0cacd20fd3d11862168be888de916169c0e48b27b6757d3627fefc7d6914ba33b8b137cc9492aa430c88f1098dba073930de2672b5b1567fd6f7162a2a64072a451ccf2c5994d52e5bbfe973432468198e568f78da72731274c4468ee18fc367d4dc573e3c894702f74d106b78d3cd639abd3cfef63523236f60c0820b69a9687bfae382678d6e451af4bf491b069c3f5b7650edaecae8503862d4b8df032e396fa51cfe8a26f82ac953246344f2490055701c155611592b394b9a3c1ee2f55a1bf1f247ccd2d2694ad889b2a6521d6ef8a3102955feb74a8770a5d5a1229266ec4babb2d341af68b75b7f20341902746809447bd2cc041cc65840a4d302386b6bef9ff2fdcf41490c571f4e8127805e731a6c98de179420d656ef8a3a32d12f111d50acd2e01727d13d91114c1fc636929d3615656a0a7bbc9bffa1e8fa965da8113e79c5a1a532ea7e69180454e3301d79c190e8d37329dca220b7df4ecc352b1196c41eb28f0f07fbff1c2bdc8067b8cfbd62bc27462b9e145567c25c1264b234edf3be1e113122b8fe0f916a78044273957140d5010ea7ddc4fa9baa221fb56a55f91470e032c3ed7b7ac540e3304aa888e7b67a23199892ea67d8a8886e3c1377a78f0b3b603c0fdb93fa5c2e4a7d24561caa96003a473b91a75a470a6a98d8a779cf888976dfb7c7ef7a257b79309bde95c7ed4c3e31f237a3cd6f326f0a0bcfdefe65af544078f6f57d7bd96bb14684e8d850aa19c651a98b6a058644e66f933b98d3f00b2986bcc9080f6c13622ba77a1bc4cc0bcdd33418335b655093c331b81c194e667a0d386610db497d85bc8c077879970f0f788481ef1da14bf438ddcf86935441de988d54da39ba18e886f1c49546fc655bb9abaac6878c5c94128d280185080d674ae51107ece948329c69750e65e03b43de1680da2a9e6d339ae27b70de8910f4c85e45f9d5f44230b5c90e524e0b3bb3cbf2f392c067444ffa037bccaf833cc7382a1dcc2e985810164f89baa0c11e6db27652245a744ccf5d09012d86897f338cd68b7928087baed62a36f9895535a8909556fccaca71c2da8aeb7d87841910cf4ee764334c589bab7b57cc374f33e8b0b4bff010953f3aa8bd48d085bc6c8f107a773d9bd8085ae78680199d8806d542fb322c3bd701c5f052438afb772099171a234e388e4c2754e52869eaa729cf3be1ed7e1066351884c3d112e46d5e6f651930b7ab540e30b7f427a95067244828744e1a89a15782afc42d049fa043e686b803d1777123e6d31c36058ddf691518771690e1bb19c4c1ae08e7270a3159380d2f096af52e49ae98b99394ae0b30a5bee3e9482c38bf2dc0f03696c440c8eb8e3d9b0f7256ddb7321eb7fe79589046c8721a11e50ff42a8e2455fb084deb57827e23eba63fe7ea3e5f84b41043a71961f0ce5126253061b78e7fb1fe1dafe4090f80f77b5b5f77a5faafbb6b40194bcb6f5cf81c67325c4fc13417bf66e95cafa0ab01c2616a42b0ba08de2b15cef7a8ca7d6d7a48c7a140dd473d9076360c11520bcb94177895fbe6b89da010779b0bc3910b1657d6f8d809c1e51a2db23983fccdd809677340ac188e6c6f65425065ac31cde52b0b4684ec0d74a95cb12999f1219ddd6091a34f505efdc96a778c388f7f92041aada8f9eca2098a1717f73748fa9f7920d239e571826b330710ef76803c19dc1d267e4578a3f1bd652d666756341165281418be46ac9298418b0e234c6df62403e5e6dd84a5ff83207c7f9fe8d2893c21ab6192dca5698e6d19fcfb4debf52d37bf9b8fb2cb1f7d12632035d30c5091144a44a00b64485e7c3140f88e2c72327c9afae1cbeb46af06e4d646c1eb0bac6e8fbbe0957e22d632957122408c9b7a242f3ee5210169112a5ced08811d51173c1498e218ad38044230eba0a397106d475d2293ad258a6d25564a0d94d4a7b01976a0d20c469d880ac65d0dea36916d6c5a4fdd3fe5c56277d4439108b966e8286445e5c71c857105ab9d738398585c3b235fc67b358fcb4e3e5b38030c80505f8c1b790f545aaf2aded7ea8238e50f2c6133d4e7d39ca10cefcc763eb292062b112c088221b218375064a6f285b279584b0b643f553733108693df771b8e887022ea8ff32272f413b3f3c7c8bd6b6d5f46ce8abdf6468026070803712d5ee33e24caeb90be938541ff778b61706a531b2580bce919456724969712e6917d1912d705eb8756fd1e4d4948bd6ed2e296715c1f97ad1bcd5769330f2656a56bd27e5e798a6a7fcbc427626e326103d6f779d37cbe4feb38d15b5c55ba662474f323763ecd4b6d00f026e4be108a00b86c09089f8329ad839369b61af2d6efa2fc117b0fd742a342e62e736893d3d7b9a515c1c36dc4f81cd00dac6395520e1a3741c3fe060f90aeac4987b19c151667416f40f7684def3ef65fc13512f827c6c3729fd495d6c0b4a5709048b555461adb4423269305828430000b9ab1a5634bdd40ef2ab5ebfc172f7451f7dc38f44ca559a53229fecc4110240596ca2503000c2427f6671b65ef470af71e577a6168f5400ca800cede208b30c5260e6c1daa87511547a1154c3e416a7934f5eb998a856e74f4ce53ff24fd0595c81e74014cd75e59579ae6381f0b32986ab7ede988363aa09fdf1179db5010b56455eba24a932d5d979142ef9f366c00fe13962315110c91e4d3616cc5e57e068a30d4ca1f8f4dd6899052f7f44a01978cee8538451360adb6a64188ce3e684fecc49a919d5d1f913a3f667a40ea6299d2f8f8b46bb74c636f7e7e392f295bc8f9a0e4b8e5920730cff5fe06ade56c33bb25a539c8e246a51037221fdee56111e32e73e1ce1a4b3ff1278460b5524a8a12b2f554ce9500eaa57737e24bd950156c11dd818e75022a8e9ab75fa21a596382980c2cef0c414f2e8a3b57e369743587910b5c8b361888b5ccc634dda04674e22ba04c32db0587acd350e64fa645dad97d28eff102284d80847622460d718e44af390f09c167649684afb7e531381087a00e5ac9367d20fc133249add740a062c3a29f6c351c651b747a894e2067b0b499645a01e83cf1cde6ed0971e14a41bbf0aade71675dae7b56c1aa440b2e23541c02b9c3655fb4006b92acddd929024144bbc135ba3fb4c3492055d86e52c2b8c9b555df917daa6f0a21fa2a4f2e5fd3419600af921167234a82f2794b726ebdcff41324d423b0c664303fdc3a778be53d7d6928ae71b524e487d6eb8f2fdc686f4805bbbd7da86547c714c35042a23df12748362346f1a156c7f7a40563ab6bab29930e8d3027c025cf6f75850ed5a22914ddb6785abbd7c659ed7b8a0360e41da91826af4f35de0077eeab2966d89a0daa850e790cf3516ebb4734425c4a282e54922f2752f3d9dffeb6016b0fae6031888835886e5e29b6c7b7f308009da3c217da7df95673ba9d5fee78c30ee65f0ee602b9d47fb09db1bce5ee0a00d2df62123e543530992403bc2d18a329123a1ea71ade021dd042c7772fb63c7ab09d30cddad64d6e2add7f27bd91ad68fa88a9abd063e5501e80bc037342ff4f617e0c90e8d54e3c14502f07a1d6253d6aa08e48a018b54d491f50a5e6b6046b233177c462c2af25c79241df6d130e0aa6fa99d2b4b6af48374027f8da0bdd5d4cc32ad24eea9f570f97f1cca66b4534eebab31fb028e06c822ffba2e9a7ff45b6e493aae93bbb6f9af1e14ba87bef34fcf2e794bffc0d745c69ab821abdbe4969c8e93d2865b42a752385bf4695c3063fc69ddc8e930546d71f0753e63e8923ce681e206d4ef360a8110ae281cdba385b5bbdace01e442a3d5decb893f8ef4b545772504c1b8c7247017b60621737089b3107747f22bd51dc0c1cf09ec5325022be8f2a5a6aeb3ecf4b65dea2e4c82427e353c4ff64cb7615c42d58377d100bcc33c15c77f25205e4babd3577630b3ed440168219f64f42f31815963c9207503b5aabd6a6249c18c9a61eba5969004fb9ee2c789492242a1c80b06ff717be50b36cfa1db835980724d0478d286a165ce69b21b2997143573681ba25732c211f646f6dc5641d077ca9daaa3cb468fe4e6b5456923870ea2450ae18c8858c6c08b028f297d8dcc13793a408bfc606a2618009ba1fd68ee62a599175b6053ff61d6ea1ecdd5a9527726ce1da2286561549f548b870b8742021bd380e95ad88c3535314aedbe53af914cfd2734897f74e0384d355b10898291d3ef2e0dd796e3b1b1e86749b05f12e4650a33f8be869b839e90b1981dd745c46156e610da5e4643df370d6ef7c4c0174fd649e9ba661cb2c3aa6c78588bcf956d6d27a6970de5f34f78267886c364236f3717c86293f5f4b5dcab9b453163936788019aad29804233d2d5cdc06bd407016016de8c08dd3698dd1f35ada541e0e44620013b013f65993a7b5031d7cba608b48cb548322f604ac7cc85b73a0016fb495675b43d2402af8c75519d8cf4c11e96c1adcdf8c6e216cfcbf2ddb52cd0c5bb9b078eba1e25d8af54d4a770fdc2330b744e0bbdd4e410388c73f926d054a6c9e8c6e7f3b03478abd53ea3f23a95b209c5d9296adc737f70d848c97dd1009046820267c915b6bbb8c6a783139812631225e2eca98e142d754658cbf90df6731a21057bc30274ef9c84e23184069428c5e5a747ee13f6c86ddfcd1f6e82b4b6bd2468e28296901adbe560ac6716d0a5d4876ea0471c4019e5abf58082c97032fa9050c49353a01f6a1c74f47aefd354919b3373616445ccdab782e4a6a120a78d513294d19791340174152c0174e5e4c345e794d13ed33566936366fb9b2554d574d55512d62346112b9f17f5bdc22d74849db0d1bb064e4e6e6a61d506675d224e50c4b614d1492fde55d0708af69961aacfcfe5ee932e66211e085c9c55227903a0b07b9a46e7f8214402bb6de623f1e5c5bdeba5d2dcca3d4dc2d14ea6e0857778404d76103333e0b5c956505401a10e4ef5c6f3042d6d08c86c931ea726390e0507706ff52a0ac538a933d5645fe330a555345654c7d4feeec0bdb791588310d54f61610664e60051edd993b7bc53a96f52a47e209df9e0c581f69b2086cbda2a2ea985b337fb5d4317015c46fce277d3175e7cb676fc2c1a196537425f27d077b2c4e34544b385f641da77957e5aa499d965dc71bc8f266b125e31d2e0bb82f7606ef4e5843b0f897872b493545bd1bf9af30a24f843bb211345bc43b15ed87a215153e00d2216f05e07a63186f760e1d8a8d2e16bba7a043638e9263dd71c72675172669cad6208970be4d2c19a9a46cb8d49f275a9ee69cec23c44bebcc055ad1400e0dbf55d4d839d1061856374bba5b830d5aa429a74d0d848d08a5bc7c61339be514308aa04e356c1a43a98a7574396c8e2e550510a9164da14113cfd85bb1677d2f454a0a5cd01af12c8427fa5248fdda77a16a1771cff40969ceaaec1a66c03614767c9f03f14739566925554f5f218e6271da857b3c542541e747b7479dacc820cceff4fd96cccc1d5543f00a5e6f4c0d57638c02646c1535a3e0eb38ff80f3425c351b4e158bf83da6a3cf7f452f9f566d3b10c6df394437fbd5a54a1f6ce22c51ae66938a9b22336b4e5bc19c95f02e8142ccc4702c636a7a525340e6ae1e3ac0a2d0f39533e02ee723ced16bf92b661b89349ec75962234bfc0edcee621943302100f9c5fc984b23faab93fa35d57f26ed5a6fe3bc011a05f43e9241bd1c4ac4ee5eb606ce5e1622807bccadcf2815d871fc234276d97320e6f4d1be06091f18f6d00cd61e780bb48e6e9cc732372be4ac462f3f07f739c8d2d6ecc230d4278a9bb5b7fe1c3e08e907d7d0e5753b52e3df4b95b3c7a1100169bbfcb774b77c46b8edd3837fd3396e3e1946dec81e3df1d7f51d1bc08b3d10669c6161acd20a2d9cc6dba4801f0b5941de172b9aa27fcab738c0cd60f93646942401c87bf669f9f9983d7592ac258f1fcf312c96a754f7e3d5e71b6c287295fd2138a421d4224b751f3101650a36f5edcd526e38f5501230f51b5af0b2732ed92c8d4c1a35500b0e1948898aad6e266123f6c6851e5df92fda8bd446373b28935fdb929783254982b99fe15338777d780b0732445257bbcf867cf4c12452bbab8fe31576ff41e5483f493ebd3e5a089df1a4c4cff71c420897611eff1a09a80ce436c45561057ac9ec7b839b9602902b7357cf808e75a3aca10ddf9e231b6248f14ba2751e5efef61d8dbc72a05a7394f1497371d92865a56ce84cabda24592e2133731e5a1bf4eba7279dff46154dfc9b4bacdaa82b2119e5fd083612531cf9338d516ce76f11f3aa78354d7464ec8134484625d1342ab2eda6c7a2ed2a0205bc69cd2b9946e40a5c9f8420612c5c7eef79fe36f309d80049fca572c94c202b8acf6ef4683f1811d3ae7d8e4709ae3eb4b74c8bd338073abe328b6a1371411080599591bd6717af61ec62458c4946bf551bd87e6754013c36cbcac94b53019e9293f1128c40fc1ccefbedbf9b3e518a86b440d0b540872aa52d3776ce1f044a11fe28e0c53433141fbcb06b6741a0f77a3f4296123117aef33893a0f7794daef7a2ad9d1671c552812bb0f88f1bc3648c3ffc8fdc6dc81fea292c02382b0b996f0274c493031ff7850fea187e0e3e0ffbf72d3676412f76953278c061377652e0e877725801d0895df314ec58505f2414e3f9bf0142f14ecf14a63a845d6ab26567c7696835b7fac8b69469561ad0e5919cd5453034abdd07d65cbba50bf344769d790f760abbdf99f387b8d779f8b445c0a8e788501d6543169d6d2772602c3baf0c465e3f708657b4df24bc0cfa7132efff9a4c0a44da7fec349f9329faf36ca583d8933ded7baede6f2b8e07aa361c2c3b37730588b994cd388df50e1b80bbebb8178921210b2385b7d585184b77966bbbbf643e7f99e236bc3afa7b70bdf8f0e77abf6daefa4d475bf8bc5cc052e74fdb9e3526e6f96b51f9c0de18ef57eb06236bce2fb72918b60dac9978aac18a96ac54602e88d2d6e0e5116613e3cba7fcf249c62c211697b2867e186d6d1c58c8c9b89365f7bc8ff542af1559c205d242059c850c7849473c13ec4b0ab96973c9b89e492bc9be0c502644912ed50e107f5429972f974c4f807057511cf7665054dc21ed244458f43c562acd432589eedd0335a11c005dcd93b1364420f0d7b8726a19f40afd343bfb345bd93e1993a5f9462f1f2cf892acc6107f290c14d42c2de240ae3e82071f310659175b848eac45dc3e663f497495023a45e57df4d1189fd154a359be1c88c0f011da5156f8bc7e2d1bcf2a6fede56eaaab0338ec9c3c3541788a27330587bfb5a54e379b4458320263aa26fe12f241c6eefc121a50ad8c4d0f92226d95b032a38ee03761522c99ad2eca4fb99ccdac95341244f68b599a073d16754dc95f68eb223673f329a2181a95bf471bfcd4b042e58c5ea7f53c18344530233cb64ce4ce616325d440b96c91f92a734aa1b50412c6b733ab413e091ae1c0385ac654d1e2a4167c61f9dd012b20cc5e1fafcd938f2c1075ff188f10a06d3f0e818112cba5599111b832640ca4b85f758a1fd63650ac377929362f05ccd8e232c6137f55f2ff4679a96aef0674743d1c3ee94bb8a5cc487bd86eefe4fea7401ea837983fcf2d274070d834b607467463eb1ba0055548d31d4d7d8ea6c2b2ca29025933dea2cd74254d92259736e2d552c117e49d5295f70fc2e37ebf75647c4b96c9561a7a382d38452fc26322cda1354072cd6445b20d0a768789ace911544ac61890b5ff35cf1b05af1f06f5ba4701e3f4e2b62f53c863acfcb8b6e7ecad14e5e82e22c29dc81bb0b6c2f721325847f9db55aeeee26c086eec31b868ee675b6e4757e694c7c152e186536baa968f32d382b460429fa07e0543eb228330265bbdf3ad1469f3371e0f1dbfc11cc35741431f119b6cf56b15204db2858e0366356f3c0fc4b5a5003297a56340ef9d84616afaadd27bf27a5073046568f4ebb93ad371af23df4eb6260eb6510ee4edb411155e3b634258445f38a28cec19044f65bddf6176ea026528334ece2fd158e65c6d7318bbbd08ca18f057d0b093c01f70a937fb6be579310e264c6b2637471e1877f08a6b178d62202974f08e3869fb1390e33a17907999123cf2613eae6c234825bf03f51b4e595ae7c151169f13961df0492739a9e97f187dd63cc2ce7f8e2b0ec80a1e7f666a312f316a493608187c03f7a67eff14fc1372141f799eaf8246edf96bb7b4e6fb0e5b886623319bbb319cf99c55adf82c533d8d3df9b793ec552746091acaddf30b8636ab12d2f78d71f23afe0cffb9b87bdc2edcc2b63f0c0e3d3d8fd69bab6d5d45fbf1186961ad2e1218a59dac7019492f654a26474f70304c87dae4a43e25347af8fc291c147538c74447e729198c5c10ceeaf3ca95b0663f1dd9790f38fc187c62c9a85d480214c6b6a1a429f25a114938221b7aca0b34563e972654231127f80ee2c40cfba37f33aecbcf7998f26af7a07f4c7d7d384f341e9d1cc67f976c005efb09cd113d09452deb55f7e9850ad311d8352b84dc6f1f6cbfa3c0c6877126212624c5156a3fc4853aefae55483cb362ff0ec1fbb121dedf487ce068ad5684420f84e45bcc481186b6301b3c5f2a8e49b798c0b6926e4679ab9fe349dc3ddea3d0c8e7c1da3e5b0261941b5d5c58c1c68d2323ca557af7d495e313830e116e8f45db3d4e121b1073c1485b9a1a2ecf650080b20cc9755bf0d094e3e98c2d9a916a800f14dd1ecd9fa9644cea3f1ce65115662cd5c616c8f6f5720334617096486ab615f31d398d77d0f95009993c97279a5bbbb81805d812b445ff9d5c599bcdcb2d2a7bea13e9c5d5db45dc254c4f1e5f5ce867b630af51150ec45b5b1e68adacf7bcddf22a977761acb63bbf140a6e744a03854040bbeb62c6af9e6b4f1670c92adeae11583de62c8af9f533204ff8e5f7edfa053851d79ea536c8b279fe1c6c23a73b53522609044166d60f31b4c3c1a6f67af26f9005e6f6a1f91161ee57323c62ed9c1e0cf90cb59ea3515cf2cc3c8f756df66d3e978f4db8a4ff1609cb5b1e058bed59eb2bc09435ac821c74ae6d29a0d64541e3cf3f9cad7708147f80a661ac786567ea340bf1c307984a0e5a6e4c07e90667adb19d8fd556d77a50d0b76c46b42e697af14c0425296e40f3792a6db9ca087a9d7dc8cd566462012f813f059e6b342fa0d5159fc30d391566ff5f447dea9c7ac83ccfc8ec611221a5c02825591d4e78bb04331c4b96497043b23255c4a67f191dba3c629b6b423ec3f4f31141e07f0d4e361d79b2e4f35e0da018f23895e305f5c41574e6569a02df2ca091b2217e6a051c7ac358ac5f5cc9688e3d2b3c4e579bd73af14ab9d3749631e8d039456c2f3c5e9198a49480468172460335e3757fa9f7328743d69d2cf9e996a1567ccb7ec89d9649fa9b1f3b7b382491bbcb502f638a08b51ca1625aec460a260c968a78f03a73e95283b94fb2620c555af5984fbfe42906921e9c2f4312db0e2b3b9729dbf0c3282ba0920fab495fa5474e961e20a597d8937c190ed7a2a53fa8aa2377351cd0b5473e841d531ab1dc7d41770a854312795c406956f52dff31b92d480026e8d9641f4b655e2ab52aad2df58c1919b0c3ecbd9dd30cb37aaa743db6d77f9d4efd9ae424d52faa70a4116b1783006019e8f696a4bc77ec32e8660925631f7456f020080dca0ada93962d42e477640955eadb311f17410a7585160d3b397b0d849e152663f751b0222ed5c515462f56b290a1f0c0ae6d6e322b7d92e117605a1a3ac7838d8b6cb3c4d4f00fbe830a2f55c05aab978b32340ba8f43779be6dc67085552480533748d1b5f5e84ca53753817ba96aeb8733341d61acc58f5d75a81b18a67ec05c02f85ab04dc855a640051e6049e6c66547c70b0ec3445e4c4775409d03654cb61221815d3b632b0376c5a1b2e4efa65b1e4a2e208d4e6742650d68c108f3aaa5512b8dd89b97d61c63079787e610313732e57fb9362c29c4763c3cd10496057d6e4804ba61cec0867312bc94e5ef287624cf70128d9c238101369ea0a4fbe7320dec09d2eb1467fe24f945257094de8713c7ac3625f3efd2237d4767939fd49006f0a1fae5568a1067f0305519a4f9de0479afd94034ba682bdc5026e09ae62163039f580decd2e12074ffd0e3d6ab48212b01c0b0c7e9180eafc16398cfc6525d1527de36e78b234a9e25520342f46a2f6cfe9b761e374d52d36690bb1af26305ba26ad32bd84a705958e062baf62603693745e240f3958653956c790313e0a3844f280233079167371130a98a0cf9d14be55feba11ec3a7f6bf8b82e92948e0e78e07bfa8bb4d20880d201ae7a24662640c364622057a61b4ba7d17926690e50d1f51d134d63fc5fd2a80b13effb5e489398a8fc2a9cf24acbfd5e2737d7da2ed3bdeb48a3c9ab4e6279af2f972d9977b01b92c5bd221b035e3f167d46b4b956c96e7015af21ec498eba01ef13d72b76e9b947b2842c045d6cbdbed3da521d6b5a5f34edccddd471d1b7c9fdded40f79ed606b7292f82e6297ed7f921f40dc1f2892b68cf4e7bc388eb8833bf6023c69af45e779e6abd960ce2ea920a1bdad6fdbaad64b1e8284045cccffb48496a6672ae8e4da5962387ca72fa9707f068e4d71b919778c85d12c7193aad22764d27db670edcde5af035e6e105ada3755467eb3fcfa5ba1401313779aa76c485e610c012626f0f35b323fb6ba097b2af7f41ab3d37adba0d1e10a7bfebb80a98f58348d9924a183c98d57cabb115c498f3e6e8ec1b875e3866b30bbe38b0a5f4d6a45133d09c41b969e15bbddee1a3f7b3f14b621cf313914e27d12156d162b9baf690e314b8f2ba3796ccab12583f1030270b1643d050c25aa4983ef85023961333df860a1f35c38ff12589d0515c59a900d14fdc790d8b4751779fef4c3e189cc2a1a9c84ad5a0a3378642a5ca92bbf0f1e816de9c8d63ce953d6b96b5a2dc3f432d1db2f621f3e681d323ff503111e4338f2edbc8b60fcac567a28285e6127b45ecbd586f9118dc24105cc979646e6410afca368400668d23358458d755b34d305f072f45052f98d46cae89008d8a59f36dcaaef0850488569cef96c222863247b2a8a3c214e4d191faca0cf78856d0b4d5aa8664fbb344b58ec8a81588d6b1d663dea22b29682187191d0b3f118fdef3b05b97cd0ca74365f2a6bca3c343f6e16d28bb4aaa9999305f565081080c4f9175490be2b82298645f00e6b57100340427d5255e2140a7021ece52eeeae6a3a539873ab37790e032e8d7f93bfea9fbc65bed72855086ceb74645171270eba6f74bf3562142098e550bc25e6361275ac307c5970f776ca3703a1e02cd76223df2df0e081e0fe2f7926f2d798e286b46126ffa2abb54978fe76949a8cbf94f2116645b84532f4cc3255d396e94d62198a137e05d504cf95776922088c6744c7451be9ff9cce6e2f3135d501e2b28fb0137910793d9ac816364f89b5748b518f2c36f12808bb2e0efb6fd7b6de059d73b17ce71854e35585225c8da181e88f91a7070e58a2c078558b466cb5ca52b624f11405f7a5393b49e0290d51b201f43583458d0d77a0bbcfa66750921c671491343c7978b427a2895235328544de2dac4313f414ad2dd23f6e3c55b5ad78ae14a65f0c33cc583ddced02ea347e88ed278d1095b174ff2f39e47598f21f7e173bba2d5ee5380934d747778806fc5d0559b7614c482526835caf2bb7f815e9e15c726ce7c5f6097e0e367793f8bc5b2b6bfa7afc8f31a467ae29034596141dac03be1b1ab623948b61d64db866ac7bde64a3183255a4874220037d0d0b4482494dcb703ba076e18e8e055d9980a331a55b1d573a2d4f01a7455e05b2a5867f1d54046a65c44a80257a583ea5fe123d822d284dededbc779dcd170bbd8f6bcceb7a85452e081e29b60a13601bb9af0cd6dd5f10497c9c232bfb2659724f1efdeb8cfa01f0903e9396e9673c456286cf159682577bccd5cdbd793941ad3afd3059142572c0ae1c469fcc7a5eeba020378aa9bc24cec6821eb72c447657fd40d1e79895597707ef9986c34752ad8947a2668e34037ed8fd1f9743296d6ba6efa28ca8777c357ac083b9239d6ff12a33bf8c19231bcebcb03f6a4a0e33dd82032db3e9de5600c36decceb0495b3a8e2e6c1069e17cca0a704858b6e6156b8ca5371f70bb084cddbfc8ab374c1e725504db1ca123735f780841a5d95149567d7fbdf4edc4352ed9dfcd55e72f01588ebaadbbc231366831969779fdad26c1c6f52624358c654ca14d92e419dd62cc26fdea659f9b1526d74591b277e9687f4c6fa02d75b111b970aefb72016805fe6748b5ca3df71186aa7039c8537748bd690ca772da683fc171c4063da68e294be253c5424b626f7c7d27a25cc7c274332e16c126c75a64bc363b98c0c76c2d7d7019633578623a13fcee82d639e452037ddd6fbae8f836d67a3f169bf6776c16c5a2f887e3666c05372ed369547253ac5d8635099e465c0ae79a36868ffa057c57ac7740f25a66800459cf5becb0726328eb581a0f243d8977c1665db9233bb8a095b1fefb7520a9616b11575134505ea761b32cbe2e7fa29ea858678d9a45a2cb6b01a4aea11e038a08ad7f6666008e21cb0a19cfb231d60e54113f577a42f7bcf901e4550d0d48e6a6d7e4914a3bacbf1d200a43f97d3d3446174d53316ffe6047bb4caac55d30247f7b811a5432463bee4d24865642954cb9617714d773586e53e110b0f500fabf512ec275ff577687a277bd806b7b4876af669bd82a1bb4f42c1092c9bc0930ee46e4d885040b4b10eaf0725fb5282631d578a0a3642d15928432b7103b3fbd54b930c5785c3c8f5be57411c55613ab5436c39e35a9738a18ce4500d2533a2c545338e719126173eef8047626c024e997dd0c47ffde79ac45bbde46a13d6150dfb6428de1d46e43d451b03ca4fc4e270ca4970ab80c2acd33735ea1cce52f4f68aba922fc4d073d91b1e4ae714a06b69348c5025aa908141e8aa5918a330eba81ffa550a57123a553a587f8d8833e838658f17ce0d30bbfa2bc4187f2994ea15dd5d28e5b495c046c1fafb5210f145d36ddf4cdbe6d26aef464f362b2ab4cba56e59b02b1b022d0b4f6e80082c0626d571cafea5b7f1d11517f7d40c24048e9930aa1c38bee537a443b7e4aa9d82acbfe79f46a039d152bfc54abcfd29d0c8c52ff9387e1611f69c835a52000d26686abb7c1c3ca4c13cedf8839c8bc7b59a82e0a9ca96bb21664a5a3ccc6bcc9292bed327a895fd03dfb143b57a6d7a925458efef2f635bd0da232db9692e62574574e9c4911091d48a2335d6bcfa490746271a6e2cf774503c8d3a5213cc08213f71ee693acde2f63c410a0ddc25f112302bbc4ad9035870489fbea6f362e06418f4b74fdfae40b7cbebc591fe7dd3969c28222f8852fa33e97e21da8c99f996a0a5f4e77eb142919f9061ec65d46537df480134ab71e796640225157631bc309671356f98c67215bf721b492e01e312d4e024384d7c63f515aa2a457ea00382343142e709c4d0973a148ad699519795e + _Keys: 526a8851fe85233e7cc810cd2b8a733faa68e71a62b99912cf2f06228873853005edfb00aa354575a31cc8ad1ac7b966f52afefc8351b636e2b71574be99675b6400dfc3607f0069e96d5112b3681f5fcf550a7f3749f10c2c006f2e23d1db370e64801184e106752a681216ffa3837998b5a5688fe724520d14109f10d172186ee5fbb117f224110b067c1b61cb6e75d9b619fa92551a320786221b3b03ec208e22f046f695e21830fcd93d5728ea479cf46b8ba7516b16ed2e96b5bbb6e20e0c6272c125d7806f67cd366983232521642549cf9088373bbcb047a020454d5bb82aa5499ca2e04b4891be89dac6ab0e659c5a08b1215a41b815970146d88b119ec54e97b8c60707cd2b47c307f6a055723ad0f074e03e69319b6e78f521fa20e22f14eb87ebaa2c5d9ec5792568c53e74417380a87c864288e4671d588e1210db981f281d4a325d1a036b29e53abc3829cf12c86a843666a9d2726c53c784328db49f8d499d214074d166a5105c5d3da29f4627a1da7a5e317a2d1042614f5281c64a6625b57e38c6bf413c35ce7d12821326d7a7c36313210e18f42f147d60db1f64f3ada3bb2d6666d31a094491222bbde8f495825a4e2f05ece33b3881253ca117543370bf2531ac8ebf10b7f565a03ac9712b88ca58c516c5a7b6d8f161e8f9dd682d3dee657e0ec3e9f39a3e76118743006e0ffa3a958fe6b6ca98245845d258f66aa26d222a2ff31dc5e16529d84e972e95f1f208f318fcbd24a42f1a1594d13a0cca1e4d0b9a28c0e4238a4cd5432183fe0a3d37c5600352a5affe32a0f1cca64d60c95d6de43a2f1ab3ec2f8dafe7e182ac1c0b579975acc6cca75b9cf61ff356e4ff757ac4f0e2446c5178b3cc3b0938e3500b2c3eb04c15e369388d95cb10d3df8656508d984144c6391548fc5f9307b1937f462b1e94944b8a5d47e5baaa4a0ec664069a951142fc403ed6b4a90102e5146519f66f6d35134e18b132d9ec6c3ec954f282992fe09c9f2a9752fc7c47b5d52b06e06eab61a6d10e4d7cc274d62caa67eb540f7f4be5844b6a66281ce82d2f660704e68bd01df34b4f7483a3a0ebff69576b98633aaa8921a5ddbe04814bd97aac297cdb1235373261c4cec06828ec556592c57c95cb2c5c853ad052230733029b09f8776f245772a3ca0276dcc8b833ca146a1411560f76a926a9289a1bf169092fa58ddf9c3a7517c82635364a7f4df403890f9d1ef144fb812196cd7f0c77286780f491baec2cdaf4fd482fda400ba6f61b9da4000716c29e6ca1845b5768bcaf0ecfc98bbb39185d35a921a8142041153dc39aaa1c286f97b630278db035fff6d32e0ef214326ce60b1f02d1fa31e71c6c1ca8c75d472e9349f4c45f8c4dc0c2013af81c5d63b2032b19179f0c5109edb220eddd4a554c13b12cb5d56721429066885700c558f421713be1a14442bb774cca3425cb341fcaf3fbd03ccf786c4d5ba70595a869cf6fe72c22325567a5649773f2357847af0759d10313b725cfe3c24772aa470214482b6154a356625d3cfd5f01ca892d756a72e68478521c260cfa05f49dda051e95883b60da9c51a244d0c0efe9d8666defd20837617d7266b7c4b857af913f62f77c9653c48e6531de7737b6edf43c1fb5c7c5200b0056ee483116cf9b411d5add2ab42d68210eab747ff3c96d3a504da8889e1b9f6a76e44a45824db5863649a09878ada45b093fff39b97a41162843c42da16cac080e6d98e7aec85f367b53fb8ec0f6007f0600beb18fe2b7e76ee911c7c76ae00c14c122f29acc03601a51f08a4016e1082f6d7eea356c2d4766a7c4e03aa5e33455a9d65f214d9d8402a2681f2dbdd87b070a985bebf6d6a81097a7bf6f1b653f6d44ca68c07e191e3105186bfcf1e65731b726cef277b7a02e2f4f8ba6de14e73c29b17188403b8622b78df10f42a4017cfff026423332e5732a39eecea4c4101a0158da5ca71f8e0cacf1a805a8b07076b2f15811115bf709cdfeb27a2a54c77a62f3f016365a2b209de610da2415e4793787e44c9401f65bb01b6f5693eb1d01b923a2b5bf5a3f57c537732b4a1ce41e1dd3bc5c8f84196316b39ae5142b724ec80f2101722eba6ec83b11cc7422a66c365139bf2fc07134f6c0358c0bda930f573d9dc4051c541157fd8ac87b1d9952a64ba6e19ca69e2499417fddbe2caa24c1a561f21387762d2def8c67a4f06e2bc76e0cb0d75f9409b22d34593aa82d7ba7ae89207f8b652d5f423bce6076d56121e00caac4b88c2c7dcb083a94c883285aa4d5c6ce0a8162bfdd6753d123843ddced44e075745b023dbb7e5b896e8269c01328054c9b302a1ab4da484855f13539de7736f3892f04d9f6479188c48f2cd00d4fa9d9c99a7201753abb270b443240a506dad2e62f21bcf924dbc733497deec366e53a852b5d6e466fed752cfb7898b19bdc423679483d7065d2ed753932d34255148ed5933b2f9bb6e6a9e268170b63bcea6793c524c3515736dfa68f07f4c3e5cd2819166dba29f321139f0d5a074dc689b94fcb3f83cf281fd236e5292abdda6dc835402586d5d0c1605cee625fb13d2d6d18c0428f254a59f1f69a0ef2e209aa3a5f6e2ef35ef170e07360261e3a3ede074843437e1dfbee809a1671c43e2f82acbcd800430f3a0f274f621bc623782b35791639d9b3d6a7a4a251738a9dcae15d1d2c629ec1dee87cac94318016b3a41242a73e5469a8f9e5305b1a9e52653be5bb871d51da8e739a2dbc794808278eefad6148f68c8cf374337c311ef987ce12cf173b716a0b132fe4277edbdd4e22f732d40ef01d45592e93a97ca93fa95e5a129817e09c00a6478b8824b30bce51819f29142579bf2f14716a04ec784291717a27138999bca5ced2397ca56aa623c557fa0aea6b7c2b2d37d36ecd046c4031e66938e3bac7e8e2834609b33cd57e178eca6b83c7852308adbe3e94d428359a07b5400093c0f470edd76c4e79870e9eaba95c32283d069372be6e79067bb6ab7ca454796a807a3129056bd4516d76698e182e2bcd6bccd4d0d55bd256e985ffc3c546e2bb353081161d28e9f2b17c68842a61ffbca8999ef095525156bae067ce736817b45824c349af41156b1c1de1a70c577fb57abce4d3570d25e2df2a5b3cc1489ae5994cd4f9624895167ccd2c878e56b79ca0e2b6cfb2425d4b4aa628d99c27562c7d03f23f7d7819c328ce578ae1527135e0f7dda3ff6a97dca81f440971457a5478000a8b6376e1d8360c581b142d9608e7a1456bfa07b11db9cad86b165ea900c6a33576f6669b6509fca26e78181e3ede275a8dd608e99eab8ab79fb62091b490f2856d9b4217a75c73f0925d24f926913197ec393b9de88cf0bdbdcf010bcbb3426c6c6d7e45accf53ccbe9060865688a783570c0b104493af50b47d63cdef662cf94f80351be43050530347601dddf3f456dd262d70d44b89935d88372e86a8cee0b3492bd7bd8d9f26bbb70cfe339272c1880d54ea6c44dbfb085e779397802554e9bf30d9e0e167af78f92c74a879380f050748667067538e266767fc005c1939ca0c1ea78a5417c0d02940b651858937153a686575e98014203e3ea29e6086c3ac7102284564acf772d0414ace1d3510e7224a5ade01287e0be64f896976eb354cd453dd6c74b85fa2e828b9d4c8b9fdf7d24683ea1f5d51667f1d5e15238dfce40c6aa371127c5bdaaa470b279155bdd3ad6d9730674a2c76017713a8a6b681a4d32ac75e5c6e094fa25e94676779f8d5da313d6e0934833ec218748a6ab334f3c665ab98e2e4d0e388478e09b6c50e887e177c2785ed64615806e08b1e6b46aa6d77d33232a00d0a9e1f09ae3d730b78d804f67dd0a3864c364a40dbc45b01f48e388ad267be45e0da793a5a1c4adc1a0557652262c47b11fe1e96831e163005de15e0fb03221f68b5285849dde06880275b1fe340dba9ac4b77d44955c8fff1aa3ec7ce951ee81cc70492c6e23b11207815a53ccaebba464132d331f694d66968042f655630447ceb4524f930ad89858d646db8ffaccc4a5544b8dbae93ee5fc7221100bbe767782751d39f505d3e46807a33ea248231afbc4820d464750dae792b485f35f3da671b68c470c6f7a0e967032bfc144474afdf073229c26b55bebe32404fecaaae93c74ce2f2e2b42f0a3340f1adc28705b45160767200e0055d2a29c8d707be4a4cbf309d7b188aeeb4396969bfa396f9cdaa0a5fb2ccc36c18b83e1d0c7c0612f18a3d6df22581ccdb4f3ec869b63bff3fdd6a7eede202e67d624acca95905cebf8377cb9ad6f957d6c17c9c7103fc9e83c122d0ed77dbf077a81090dbb52382496f07e63f079a15d6c254af5f9f58805fe84e95842a43c8a098540f3976cd731b00191ff41e2175a4c759503476afe9fe6e300d9847f88b4d2f7928a47323a00b1f6ca17ac673be392639b47c6c03e9b7c20fcb46da0c63f9a56c2597491a17ebf95a54e25163c4e2ef2b8ff153f745cd9d20997c11191ad330651f32975683415037232d20cceb1df1072bef44313d81ec1af4022af362109e2f2c046a22d133343118402fce0841ce4eea74ef6b3011a50766a47b3c19c87847a134bf8204e4ed2a61a6801b71d94a7d2505286ef155af18ae4a6e96bb747f19561e72b38fd7ae012870ac4269fb76048deaeb8cd4eec2230a55a2690825a3568416d70ae562427dd5bc4403fc346500705927a4eb212c63f36e41d3df3e7d298f24eada7da53229579148e75640d90c0cacd20fd3d11862168be888de916169c0e48b27b6757d3627fefc7d6914ba33b8b137cc9492aa430c88f1098dba073930de2672b5b1567fd6f7162a2a64072a451ccf2c5994d52e5bbfe973432468198e568f78da72731274c4468ee18fc367d4dc573e3c894702f74d106b78d3cd639abd3cfef63523236f60c0820b69a9687bfae382678d6e451af4bf491b069c3f5b7650edaecae8503862d4b8df032e396fa51cfe8a26f82ac953246344f2490055701c155611592b394b9a3c1ee2f55a1bf1f247ccd2d2694ad889b2a6521d6ef8a3102955feb74a8770a5d5a1229266ec4babb2d341af68b75b7f20341902746809447bd2cc041cc65840a4d302386b6bef9ff2fdcf41490c571f4e8127805e731a6c98de179420d656ef8a3a32d12f111d50acd2e01727d13d91114c1fc636929d3615656a0a7bbc9bffa1e8fa965da8113e79c5a1a532ea7e69180454e3301d79c190e8d37329dca220b7df4ecc352b1196c41eb28f0f07fbff1c2bdc8067b8cfbd62bc27462b9e145567c25c1264b234edf3be1e113122b8fe0f916a78044273957140d5010ea7ddc4fa9baa221fb56a55f91470e032c3ed7b7ac540e3304aa888e7b67a23199892ea67d8a8886e3c1377a78f0b3b603c0fdb93fa5c2e4a7d24561caa96003a473b91a75a470a6a98d8a779cf888976dfb7c7ef7a257b79309bde95c7ed4c3e31f237a3cd6f326f0a0bcfdefe65af544078f6f57d7bd96bb14684e8d850aa19c651a98b6a058644e66f933b98d3f00b2986bcc9080f6c13622ba77a1bc4cc0bcdd33418335b655093c331b81c194e667a0d386610db497d85bc8c077879970f0f788481ef1da14bf438ddcf86935441de988d54da39ba18e886f1c49546fc655bb9abaac6878c5c94128d280185080d674ae51107ece948329c69750e65e03b43de1680da2a9e6d339ae27b70de8910f4c85e45f9d5f44230b5c90e524e0b3bb3cbf2f392c067444ffa037bccaf833cc7382a1dcc2e985810164f89baa0c11e6db27652245a744ccf5d09012d86897f338cd68b7928087baed62a36f9895535a8909556fccaca71c2da8aeb7d87841910cf4ee764334c589bab7b57cc374f33e8b0b4bff010953f3aa8bd48d085bc6c8f107a773d9bd8085ae78680199d8806d542fb322c3bd701c5f052438afb772099171a234e388e4c2754e52869eaa729cf3be1ed7e1066351884c3d112e46d5e6f651930b7ab540e30b7f427a95067244828744e1a89a15782afc42d049fa043e686b803d1777123e6d31c36058ddf691518771690e1bb19c4c1ae08e7270a3159380d2f096af52e49ae98b99394ae0b30a5bee3e9482c38bf2dc0f03696c440c8eb8e3d9b0f7256ddb7321eb7fe79589046c8721a11e50ff42a8e2455fb084deb57827e23eba63fe7ea3e5f84b41043a71961f0ce5126253061b78e7fb1fe1dafe4090f80f77b5b5f77a5faafbb6b40194bcb6f5cf81c67325c4fc13417bf66e95cafa0ab01c2616a42b0ba08de2b15cef7a8ca7d6d7a48c7a140dd473d9076360c11520bcb94177895fbe6b89da010779b0bc3910b1657d6f8d809c1e51a2db23983fccdd809677340ac188e6c6f65425065ac31cde52b0b4684ec0d74a95cb12999f1219ddd6091a34f505efdc96a778c388f7f92041aada8f9eca2098a1717f73748fa9f7920d239e571826b330710ef76803c19dc1d267e4578a3f1bd652d666756341165281418be46ac9298418b0e234c6df62403e5e6dd84a5ff83207c7f9fe8d2893c21ab6192dca5698e6d19fcfb4debf52d37bf9b8fb2cb1f7d12632035d30c5091144a44a00b64485e7c3140f88e2c72327c9afae1cbeb46af06e4d646c1eb0bac6e8fbbe0957e22d632957122408c9b7a242f3ee5210169112a5ced08811d51173c1498e218ad38044230eba0a397106d475d2293ad258a6d25564a0d94d4a7b01976a0d20c469d880ac65d0dea36916d6c5a4fdd3fe5c56277d4439108b966e8286445e5c71c857105ab9d738398585c3b235fc67b358fcb4e3e5b38030c80505f8c1b790f545aaf2aded7ea8238e50f2c6133d4e7d39ca10cefcc763eb292062b112c088221b218375064a6f285b279584b0b643f553733108693df771b8e887022ea8ff32272f413b3f3c7c8bd6b6d5f46ce8abdf6468026070803712d5ee33e24caeb90be938541ff778b61706a531b2580bce919456724969712e6917d1912d705eb8756fd1e4d4948bd6ed2e296715c1f97ad1bcd5769330f2656a56bd27e5e798a6a7fcbc427626e326103d6f779d37cbe4feb38d15b5c55ba662474f323763ecd4b6d00f026e4be108a00b86c09089f8329ad839369b61af2d6efa2fc117b0fd742a342e62e736893d3d7b9a515c1c36dc4f81cd00dac6395520e1a3741c3fe060f90aeac4987b19c151667416f40f7684def3ef65fc13512f827c6c3729fd495d6c0b4a5709048b555461adb4423269305828430000b9ab1a5634bdd40ef2ab5ebfc172f7451f7dc38f44ca559a53229fecc4110240596ca2503000c2427f6671b65ef470af71e577a6168f5400ca800cede208b30c5260e6c1daa87511547a1154c3e416a7934f5eb998a856e74f4ce53ff24fd0595c81e74014cd75e59579ae6381f0b32986ab7ede988363aa09fdf1179db5010b56455eba24a932d5d979142ef9f366c00fe13962315110c91e4d3616cc5e57e068a30d4ca1f8f4dd6899052f7f44a01978cee8538451360adb6a64188ce3e684fecc49a919d5d1f913a3f667a40ea6299d2f8f8b46bb74c636f7e7e392f295bc8f9a0e4b8e5920730cff5fe06ade56c33bb25a539c8e246a51037221fdee56111e32e73e1ce1a4b3ff1278460b5524a8a12b2f554ce9500eaa57737e24bd950156c11dd818e75022a8e9ab75fa21a596382980c2cef0c414f2e8a3b57e369743587910b5c8b361888b5ccc634dda04674e22ba04c32db0587acd350e64fa645dad97d28eff102284d80847622460d718e44af390f09c167649684afb7e531381087a00e5ac9367d20fc133249add740a062c3a29f6c351c651b747a894e2067b0b499645a01e83cf1cde6ed0971e14a41bbf0aade71675dae7b56c1aa440b2e23541c02b9c3655fb4006b92acddd929024144bbc135ba3fb4c3492055d86e52c2b8c9b555df917daa6f0a21fa2a4f2e5fd3419600af921167234a82f2794b726ebdcff41324d423b0c664303fdc3a778be53d7d6928ae71b524e487d6eb8f2fdc686f4805bbbd7da86547c714c35042a23df12748362346f1a156c7f7a40563ab6bab29930e8d3027c025cf6f75850ed5a22914ddb6785abbd7c659ed7b8a0360e41da91826af4f35de0077eeab2966d89a0daa850e790cf3516ebb4734425c4a282e54922f2752f3d9dffeb6016b0fae6031888835886e5e29b6c7b7f308009da3c217da7df95673ba9d5fee78c30ee65f0ee602b9d47fb09db1bce5ee0a00d2df62123e543530992403bc2d18a329123a1ea71ade021dd042c7772fb63c7ab09d30cddad64d6e2add7f27bd91ad68fa88a9abd063e5501e80bc037342ff4f617e0c90e8d54e3c14502f07a1d6253d6aa08e48a018b54d491f50a5e6b6046b233177c462c2af25c79241df6d130e0aa6fa99d2b4b6af48374027f8da0bdd5d4cc32ad24eea9f570f97f1cca66b4534eebab31fb028e06c822ffba2e9a7ff45b6e493aae93bbb6f9af1e14ba87bef34fcf2e794bffc0d745c69ab821abdbe4969c8e93d2865b42a752385bf4695c3063fc69ddc8e930546d71f0753e63e8923ce681e206d4ef360a8110ae281cdba385b5bbdace01e442a3d5decb893f8ef4b545772504c1b8c7247017b60621737089b3107747f22bd51dc0c1cf09ec5325022be8f2a5a6aeb3ecf4b65dea2e4c82427e353c4ff64cb7615c42d58377d100bcc33c15c77f25205e4babd3577630b3ed440168219f64f42f31815963c9207503b5aabd6a6249c18c9a61eba5969004fb9ee2c789492242a1c80b06ff717be50b36cfa1db835980724d0478d286a165ce69b21b2997143573681ba25732c211f646f6dc5641d077ca9daaa3cb468fe4e6b5456923870ea2450ae18c8858c6c08b028f297d8dcc13793a408bfc606a2618009ba1fd68ee62a599175b6053ff61d6ea1ecdd5a9527726ce1da2286561549f548b870b8742021bd380e95ad88c3535314aedbe53af914cfd2734897f74e0384d355b10898291d3ef2e0dd796e3b1b1e86749b05f12e4650a33f8be869b839e90b1981dd745c46156e610da5e4643df370d6ef7c4c0174fd649e9ba661cb2c3aa6c78588bcf956d6d27a6970de5f34f78267886c364236f3717c86293f5f4b5dcab9b453163936788019aad29804233d2d5cdc06bd407016016de8c08dd3698dd1f35ada541e0e44620013b013f65993a7b5031d7cba608b48cb548322f604ac7cc85b73a0016fb495675b43d2402af8c75519d8cf4c11e96c1adcdf8c6e216cfcbf2ddb52cd0c5bb9b078eba1e25d8af54d4a770fdc2330b744e0bbdd4e410388c73f926d054a6c9e8c6e7f3b03478abd53ea3f23a95b209c5d9296adc737f70d848c97dd1009046820267c915b6bbb8c6a783139812631225e2eca98e142d754658cbf90df6731a21057bc30274ef9c84e23184069428c5e5a747ee13f6c86ddfcd1f6e82b4b6bd2468e28296901adbe560ac6716d0a5d4876ea0471c4019e5abf58082c97032fa9050c49353a01f6a1c74f47aefd354919b3373616445ccdab782e4a6a120a78d513294d19791340174152c0174e5e4c345e794d13ed33566936366fb9b2554d574d55512d62346112b9f17f5bdc22d74849db0d1bb064e4e6e6a61d506675d224e50c4b614d1492fde55d0708af69961aacfcfe5ee932e66211e085c9c55227903a0b07b9a46e7f8214402bb6de623f1e5c5bdeba5d2dcca3d4dc2d14ea6e0857778404d76103333e0b5c956505401a10e4ef5c6f3042d6d08c86c931ea726390e0507706ff52a0ac538a933d5645fe330a555345654c7d4feeec0bdb791588310d54f61610664e60051edd993b7bc53a96f52a47e209df9e0c581f69b2086cbda2a2ea985b337fb5d4317015c46fce277d3175e7cb676fc2c1a196537425f27d077b2c4e34544b385f641da77957e5aa499d965dc71bc8f266b125e31d2e0bb82f7606ef4e5843b0f897872b493545bd1bf9af30a24f843bb211345bc43b15ed87a215153e00d2216f05e07a63186f760e1d8a8d2e16bba7a043638e9263dd71c72675172669cad6208970be4d2c19a9a46cb8d49f275a9ee69cec23c44bebcc055ad1400e0dbf55d4d839d1061856374bba5b830d5aa429a74d0d848d08a5bc7c61339be514308aa04e356c1a43a98a7574396c8e2e550510a9164da14113cfd85bb1677d2f454a0a5cd01af12c8427fa5248fdda77a16a1771cff40969ceaaec1a66c03614767c9f03f14739566925554f5f218e6271da857b3c542541e747b7479dacc820cceff4fd96cccc1d5543f00a5e6f4c0d57638c02646c1535a3e0eb38ff80f3425c351b4e158bf83da6a3cf7f452f9f566d3b10c6df394437fbd5a54a1f6ce22c51ae66938a9b22336b4e5bc19c95f02e8142ccc4702c636a7a525340e6ae1e3ac0a2d0f39533e02ee723ced16bf92b661b89349ec75962234bfc0edcee621943302100f9c5fc984b23faab93fa35d57f26ed5a6fe3bc011a05f43e9241bd1c4ac4ee5eb606ce5e1622807bccadcf2815d871fc234276d97320e6f4d1be06091f18f6d00cd61e780bb48e6e9cc732372be4ac462f3f07f739c8d2d6ecc230d4278a9bb5b7fe1c3e08e907d7d0e5753b52e3df4b95b3c7a1100169bbfcb774b77c46b8edd3837fd3396e3e1946dec81e3df1d7f51d1bc08b3d10669c6161acd20a2d9cc6dba4801f0b5941de172b9aa27fcab738c0cd60f93646942401c87bf669f9f9983d7592ac258f1fcf312c96a754f7e3d5e71b6c287295fd2138a421d4224b751f3101650a36f5edcd526e38f5501230f51b5af0b2732ed92c8d4c1a35500b0e1948898aad6e266123f6c6851e5df92fda8bd446373b28935fdb929783254982b99fe15338777d780b0732445257bbcf867cf4c12452bbab8fe31576ff41e5483f493ebd3e5a089df1a4c4cff71c420897611eff1a09a80ce436c45561057ac9ec7b839b9602902b7357cf808e75a3aca10ddf9e231b6248f14ba2751e5efef61d8dbc72a05a7394f1497371d92865a56ce84cabda24592e2133731e5a1bf4eba7279dff46154dfc9b4bacdaa82b2119e5fd083612531cf9338d516ce76f11f3aa78354d7464ec8134484625d1342ab2eda6c7a2ed2a0205bc69cd2b9946e40a5c9f8420612c5c7eef79fe36f309d80049fca572c94c202b8acf6ef4683f1811d3ae7d8e4709ae3eb4b74c8bd338073abe328b6a1371411080599591bd6717af61ec62458c4946bf551bd87e6754013c36cbcac94b53019e9293f1128c40fc1ccefbedbf9b3e518a86b440d0b540872aa52d3776ce1f044a11fe28e0c53433141fbcb06b6741a0f77a3f4296123117aef33893a0f7794daef7a2ad9d1671c552812bb0f88f1bc3648c3ffc8fdc6dc81fea292c02382b0b996f0274c493031ff7850fea187e0e3e0ffbf72d3676412f76953278c061377652e0e877725801d0895df314ec58505f2414e3f9bf0142f14ecf14a63a845d6ab26567c7696835b7fac8b69469561ad0e5919cd5453034abdd07d65cbba50bf344769d790f760abbdf99f387b8d779f8b445c0a8e788501d6543169d6d2772602c3baf0c465e3f708657b4df24bc0cfa7132efff9a4c0a44da7fec349f9329faf36ca583d8933ded7baede6f2b8e07aa361c2c3b37730588b994cd388df50e1b80bbebb8178921210b2385b7d585184b77966bbbbf643e7f99e236bc3afa7b70bdf8f0e77abf6daefa4d475bf8bc5cc052e74fdb9e3526e6f96b51f9c0de18ef57eb06236bce2fb72918b60dac9978aac18a96ac54602e88d2d6e0e5116613e3cba7fcf249c62c211697b2867e186d6d1c58c8c9b89365f7bc8ff542af1559c205d242059c850c7849473c13ec4b0ab96973c9b89e492bc9be0c502644912ed50e107f5429972f974c4f807057511cf7665054dc21ed244458f43c562acd432589eedd0335a11c005dcd93b1364420f0d7b8726a19f40afd343bfb345bd93e1993a5f9462f1f2cf892acc6107f290c14d42c2de240ae3e82071f310659175b848eac45dc3e663f497495023a45e57df4d1189fd154a359be1c88c0f011da5156f8bc7e2d1bcf2a6fede56eaaab0338ec9c3c3541788a27330587bfb5a54e379b4458320263aa26fe12f241c6eefc121a50ad8c4d0f92226d95b032a38ee03761522c99ad2eca4fb99ccdac95341244f68b599a073d16754dc95f68eb223673f329a2181a95bf471bfcd4b042e58c5ea7f53c18344530233cb64ce4ce616325d440b96c91f92a734aa1b50412c6b733ab413e091ae1c0385ac654d1e2a4167c61f9dd012b20cc5e1fafcd938f2c1075ff188f10a06d3f0e818112cba5599111b832640ca4b85f758a1fd63650ac377929362f05ccd8e232c6137f55f2ff4679a96aef0674743d1c3ee94bb8a5cc487bd86eefe4fea7401ea837983fcf2d274070d834b607467463eb1ba0055548d31d4d7d8ea6c2b2ca29025933dea2cd74254d92259736e2d552c117e49d5295f70fc2e37ebf75647c4b96c9561a7a382d38452fc26322cda1354072cd6445b20d0a768789ace911544ac61890b5ff35cf1b05af1f06f5ba4701e3f4e2b62f53c863acfcb8b6e7ecad14e5e82e22c29dc81bb0b6c2f721325847f9db55aeeee26c086eec31b868ee675b6e4757e694c7c152e186536baa968f32d382b460429fa07e0543eb228330265bbdf3ad1469f3371e0f1dbfc11cc35741431f119b6cf56b15204db2858e0366356f3c0fc4b5a5003297a56340ef9d84616afaadd27bf27a5073046568f4ebb93ad371af23df4eb6260eb6510ee4edb411155e3b634258445f38a28cec19044f65bddf6176ea026528334ece2fd158e65c6d7318bbbd08ca18f057d0b093c01f70a937fb6be579310e264c6b2637471e1877f08a6b178d62202974f08e3869fb1390e33a17907999123cf2613eae6c234825bf03f51b4e595ae7c151169f13961df0492739a9e97f187dd63cc2ce7f8e2b0ec80a1e7f666a312f316a493608187c03f7a67eff14fc1372141f799eaf8246edf96bb7b4e6fb0e5b886623319bbb319cf99c55adf82c533d8d3df9b793ec552746091acaddf30b8636ab12d2f78d71f23afe0cffb9b87bdc2edcc2b63f0c0e3d3d8fd69bab6d5d45fbf1186961ad2e1218a59dac7019492f654a26474f70304c87dae4a43e25347af8fc291c147538c74447e729198c5c10ceeaf3ca95b0663f1dd9790f38fc187c62c9a85d480214c6b6a1a429f25a114938221b7aca0b34563e972654231127f80ee2c40cfba37f33aecbcf7998f26af7a07f4c7d7d384f341e9d1cc67f976c005efb09cd113d09452deb55f7e9850ad311d8352b84dc6f1f6cbfa3c0c6877126212624c5156a3fc4853aefae55483cb362ff0ec1fbb121dedf487ce068ad5684420f84e45bcc481186b6301b3c5f2a8e49b798c0b6926e4679ab9fe349dc3ddea3d0c8e7c1da3e5b0261941b5d5c58c1c68d2323ca557af7d495e313830e116e8f45db3d4e121b1073c1485b9a1a2ecf650080b20cc9755bf0d094e3e98c2d9a916a800f14dd1ecd9fa9644cea3f1ce65115662cd5c616c8f6f5720334617096486ab615f31d398d77d0f95009993c97279a5bbbb81805d812b445ff9d5c599bcdcb2d2a7bea13e9c5d5db45dc254c4f1e5f5ce867b630af51150ec45b5b1e68adacf7bcddf22a977761acb63bbf140a6e744a03854040bbeb62c6af9e6b4f1670c92adeae11583de62c8af9f533204ff8e5f7edfa053851d79ea536c8b279fe1c6c23a73b53522609044166d60f31b4c3c1a6f67af26f9005e6f6a1f91161ee57323c62ed9c1e0cf90cb59ea3515cf2cc3c8f756df66d3e978f4db8a4ff1609cb5b1e058bed59eb2bc09435ac821c74ae6d29a0d64541e3cf3f9cad7708147f80a661ac786567ea340bf1c307984a0e5a6e4c07e90667adb19d8fd556d77a50d0b76c46b42e697af14c0425296e40f3792a6db9ca087a9d7dc8cd566462012f813f059e6b342fa0d5159fc30d391566ff5f447dea9c7ac83ccfc8ec611221a5c02825591d4e78bb04331c4b96497043b23255c4a67f191dba3c629b6b423ec3f4f31141e07f0d4e361d79b2e4f35e0da018f23895e305f5c41574e6569a02df2ca091b2217e6a051c7ac358ac5f5cc9688e3d2b3c4e579bd73af14ab9d3749631e8d039456c2f3c5e9198a49480468172460335e3757fa9f7328743d69d2cf9e996a1567ccb7ec89d9649fa9b1f3b7b382491bbcb502f638a08b51ca1625aec460a260c968a78f03a73e95283b94fb2620c555af5984fbfe42906921e9c2f4312db0e2b3b9729dbf0c3282ba0920fab495fa5474e961e20a597d8937c190ed7a2a53fa8aa2377351cd0b5473e841d531ab1dc7d41770a854312795c406956f52dff31b92d480026e8d9641f4b655e2ab52aad2df58c1919b0c3ecbd9dd30cb37aaa743db6d77f9d4efd9ae424d52faa70a4116b1783006019e8f696a4bc77ec32e8660925631f7456f020080dca0ada93962d42e477640955eadb311f17410a7585160d3b397b0d849e152663f751b0222ed5c515462f56b290a1f0c0ae6d6e322b7d92e117605a1a3ac7838d8b6cb3c4d4f00fbe830a2f55c05aab978b32340ba8f43779be6dc67085552480533748d1b5f5e84ca53753817ba96aeb8733341d61acc58f5d75a81b18a67ec05c02f85ab04dc855a640051e6049e6c66547c70b0ec3445e4c4775409d03654cb61221815d3b632b0376c5a1b2e4efa65b1e4a2e208d4e6742650d68c108f3aaa5512b8dd89b97d61c63079787e610313732e57fb9362c29c4763c3cd10496057d6e4804ba61cec0867312bc94e5ef287624cf70128d9c238101369ea0a4fbe7320dec09d2eb1467fe24f945257094de8713c7ac3625f3efd2237d4767939fd49006f0a1fae5568a1067f0305519a4f9de0479afd94034ba682bdc5026e09ae62163039f580decd2e12074ffd0e3d6ab48212b01c0b0c7e9180eafc16398cfc6525d1527de36e78b234a9e25520342f46a2f6cfe9b761e374d52d36690bb1af26305ba26ad32bd84a705958e062baf62603693745e240f3958653956c790313e0a3844f280233079167371130a98a0cf9d14be55feba11ec3a7f6bf8b82e92948e0e78e07bfa8bb4d20880d201ae7a24662640c364622057a61b4ba7d17926690e50d1f51d134d63fc5fd2a80b13effb5e489398a8fc2a9cf24acbfd5e2737d7da2ed3bdeb48a3c9ab4e6279af2f972d9977b01b92c5bd221b035e3f167d46b4b956c96e7015af21ec498eba01ef13d72b76e9b947b2842c045d6cbdbed3da521d6b5a5f34edccddd471d1b7c9fdded40f79ed606b7292f82e6297ed7f921f40dc1f2892b68cf4e7bc388eb8833bf6023c69af45e779e6abd960ce2ea920a1bdad6fdbaad64b1e8284045cccffb48496a6672ae8e4da5962387ca72fa9707f068e4d71b919778c85d12c7193aad22764d27db670edcde5af035e6e105ada3755467eb3fcfa5ba1401313779aa76c485e610c012626f0f35b323fb6ba097b2af7f41ab3d37adba0d1e10a7bfebb80a98f58348d9924a183c98d57cabb115c498f3e6e8ec1b875e3866b30bbe38b0a5f4d6a45133d09c41b969e15bbddee1a3f7b3f14b621cf313914e27d12156d162b9baf690e314b8f2ba3796ccab12583f1030270b1643d050c25aa4983ef85023961333df860a1f35c38ff12589d0515c59a900d14fdc790d8b4751779fef4c3e189cc2a1a9c84ad5a0a3378642a5ca92bbf0f1e816de9c8d63ce953d6b96b5a2dc3f432d1db2f621f3e681d323ff503111e4338f2edbc8b60fcac567a28285e6127b45ecbd586f9118dc24105cc979646e6410afca368400668d23358458d755b34d305f072f45052f98d46cae89008d8a59f36dcaaef0850488569cef96c222863247b2a8a3c214e4d191faca0cf78856d0b4d5aa8664fbb344b58ec8a81588d6b1d663dea22b29682187191d0b3f118fdef3b05b97cd0ca74365f2a6bca3c343f6e16d28bb4aaa9999305f565081080c4f9175490be2b82298645f00e6b57100340427d5255e2140a7021ece52eeeae6a3a539873ab37790e032e8d7f93bfea9fbc65bed72855086ceb74645171270eba6f74bf3562142098e550bc25e6361275ac307c5970f776ca3703a1e02cd76223df2df0e081e0fe2f7926f2d798e286b46126ffa2abb54978fe76949a8cbf94f2116645b84532f4cc3255d396e94d62198a137e05d504cf95776922088c6744c7451be9ff9cce6e2f3135d501e2b28fb0137910793d9ac816364f89b5748b518f2c36f12808bb2e0efb6fd7b6de059d73b17ce71854e35585225c8da181e88f91a7070e58a2c078558b466cb5ca52b624f11405f7a5393b49e0290d51b201f43583458d0d77a0bbcfa66750921c671491343c7978b427a2895235328544de2dac4313f414ad2dd23f6e3c55b5ad78ae14a65f0c33cc583ddced02ea347e88ed278d1095b174ff2f39e47598f21f7e173bba2d5ee5380934d747778806fc5d0559b7614c482526835caf2bb7f815e9e15c726ce7c5f6097e0e367793f8bc5b2b6bfa7afc8f31a467ae29034596141dac03be1b1ab623948b61d64db866ac7bde64a3183255a4874220037d0d0b4482494dcb703ba076e18e8e055d9980a331a55b1d573a2d4f01a7455e05b2a5867f1d54046a65c44a80257a583ea5fe123d822d284dededbc779dcd170bbd8f6bcceb7a85452e081e29b60a13601bb9af0cd6dd5f10497c9c232bfb2659724f1efdeb8cfa01f0903e9396e9673c456286cf159682577bccd5cdbd793941ad3afd3059142572c0ae1c469fcc7a5eeba020378aa9bc24cec6821eb72c447657fd40d1e79895597707ef9986c34752ad8947a2668e34037ed8fd1f9743296d6ba6efa28ca8777c357ac083b9239d6ff12a33bf8c19231bcebcb03f6a4a0e33dd82032db3e9de5600c36decceb0495b3a8e2e6c1069e17cca0a704858b6e6156b8ca5371f70bb084cddbfc8ab374c1e725504db1ca123735f780841a5d95149567d7fbdf4edc4352ed9dfcd55e72f01588ebaadbbc231366831969779fdad26c1c6f52624358c654ca14d92e419dd62cc26fdea659f9b1526d74591b277e9687f4c6fa02d75b111b970aefb72016805fe6748b5ca3df71186aa7039c8537748bd690ca772da683fc171c4063da68e294be253c5424b626f7c7d27a25cc7c274332e16c126c75a64bc363b98c0c76c2d7d7019633578623a13fcee82d639e452037ddd6fbae8f836d67a3f169bf6776c16c5a2f887e3666c05372ed369547253ac5d8635099e465c0ae79a36868ffa057c57ac7740f25a66800459cf5becb0726328eb581a0f243d8977c1665db9233bb8a095b1fefb7520a9616b11575134505ea761b32cbe2e7fa29ea858678d9a45a2cb6b01a4aea11e038a08ad7f6666008e21cb0a19cfb231d60e54113f577a42f7bcf901e4550d0d48e6a6d7e4914a3bacbf1d200a43f97d3d3446174d53316ffe6047bb4caac55d30247f7b811a5432463bee4d24865642954cb9617714d773586e53e110b0f500fabf512ec275ff577687a277bd806b7b4876af669bd82a1bb4f42c1092c9bc0930ee46e4d885040b4b10eaf0725fb5282631d578a0a3642d15928432b7103b3fbd54b930c5785c3c8f5be57411c55613ab5436c39e35a9738a18ce4500d2533a2c545338e719126173eef8047626c024e997dd0c47ffde79ac45bbde46a13d6150dfb6428de1d46e43d451b03ca4fc4e270ca4970ab80c2acd33735ea1cce52f4f68aba922fc4d073d91b1e4ae714a06b69348c5025aa908141e8aa5918a330eba81ffa550a57123a553a587f8d8833e838658f17ce0d30bbfa2bc4187f2994ea15dd5d28e5b495c046c1fafb5210f145d36ddf4cdbe6d26aef464f362b2ab4cba56e59b02b1b022d0b4f6e80082c0626d571cafea5b7f1d11517f7d40c24048e9930aa1c38bee537a443b7e4aa9d82acbfe79f46a039d152bfc54abcfd29d0c8c52ff9387e1611f69c835a52000d26686abb7c1c3ca4c13cedf8839c8bc7b59a82e0a9ca96bb21664a5a3ccc6bcc9292bed327a895fd03dfb143b57a6d7a925458efef2f635bd0da232db9692e62574574e9c4911091d48a2335d6bcfa490746271a6e2cf774503c8d3a5213cc08213f71ee693acde2f63c410a0ddc25f112302bbc4ad9035870489fbea6f362e06418f4b74fdfae40b7cbebc591fe7dd3969c28222f8852fa33e97e21da8c99f996a0a5f4e77eb142919f9061ec65d46537df480134ab71e796640225157631bc309671356f98c67215bf721b492e01e312d4e024384d7c63f515aa2a457ea00382343142e709c4d0973a148ad699519795ee19387592e1f7f0982e4f1d42a1c48405e3eb591fb593f177efb78eac191fe60fcfb65816d92c749b2d037f6ec878565d202acddeebe994c3140d3189b80ec120147e38345f4da47876ac9dac0ad3a3605a296ce63ceff40e8dc8570d4b576239e14c14ecc7a9748985b7577f84cc064e8ff940f8935b92b29dc7e86e4da3531e07cba3b9865c35864a083f5b51dd95089f1d76834d62a2cceec77a9f81d2c726e5967846d7a344dc3ed732ab8aee146b6cffcf302cdfc4aa8e66dacee1a5f454bfb87ec3672260de14622488c3ea825b13492c3a8ffc443421f6be6b0995476918fb85ac0d9cb6ed7212396afeb9f0bc1dc9ebc4b6f2b182b23d92af82c4d630d18aa16cc20d00db6299bf50a7c2e1b17483d96f7866e1366d4b4a635eb2d59316ea6cd13baf91bc2e1b9640ea5a613ac7903fb1f8d7137 _Values: - {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} @@ -8399,23 +8401,6 @@ MonoBehaviour: - {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} - {fileID: 11500000, guid: 79d811a12f27f43629797719fcbfc6ae, type: 3} - {fileID: 11500000, guid: 347013242dca7c44fb5001793033ea59, type: 3} - - {fileID: 2048155077} - - {fileID: 330585546} - - {fileID: 330585543} - - {fileID: 330585547} - - {fileID: 330585550} - - {fileID: 330585549} - - {fileID: 330585548} - - {fileID: 293267687} - - {fileID: 719302917} - - {fileID: 759707323} - - {fileID: 759707324} - - {fileID: 330585545} - - {fileID: 293267688} - - {fileID: 293267689} - - {fileID: 2048155078} - - {fileID: 759707325} - - {fileID: 719302918} - {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} - {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} - {fileID: 151991539} @@ -8443,13 +8428,6 @@ MonoBehaviour: - {fileID: 1647473500} - {fileID: 1647473501} - {fileID: 1647473498} - - {fileID: 330585545} - - {fileID: 330585546} - - {fileID: 330585543} - - {fileID: 330585547} - - {fileID: 330585550} - - {fileID: 330585549} - - {fileID: 330585548} - {fileID: 665031029} - {fileID: 2132627473} - {fileID: 665031028} @@ -9935,6 +9913,45 @@ MonoBehaviour: - {fileID: 1230482840604333981, guid: 2f2e97c8a35330f49a9cb31ec0f075bf, type: 3} - {fileID: 4832900275935109613, guid: 2f2e97c8a35330f49a9cb31ec0f075bf, type: 3} - {fileID: 5922952087749752714, guid: 2f2e97c8a35330f49a9cb31ec0f075bf, type: 3} + - {fileID: 2800000, guid: f20112bdeec2e8d4d9f80e8390e37263, type: 3} + - {fileID: 1464630163} + - {fileID: 1464630162} + - {fileID: 1464630161} + - {fileID: 1464630160} + - {fileID: 1464630159} + - {fileID: 1464630158} + - {fileID: 1464630157} + - {fileID: 1464630164} + - {fileID: 11500000, guid: 63e7ac45befe54908ba6c691211fcbfa, type: 3} + - {fileID: 11500000, guid: 604e2c80e1fb64c2ba9608c11fb2f040, type: 3} + - {fileID: 1197505586} + - {fileID: 8863047526699937627, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 4815310443098260762, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 4146383444293307128, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 1511802765271541473, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 11500000, guid: e581b946f0ff64cccafda0d2e8d76681, type: 3} + - {fileID: 2388560450800572769, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 8314584144366428067, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 2546924885880613247, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 4303436613740383453, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 2522200636602697985, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 2642348292953561022, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 8091948658150366110, guid: 49f2af6ffb61a4145ab7ed3d0873b6a2, type: 3} + - {fileID: 303975920} + - {fileID: 303975921} + - {fileID: 332800126} + - {fileID: 332800121} + - {fileID: 332800124} + - {fileID: 332800122} + - {fileID: 332800123} + - {fileID: 11500000, guid: c627b09eb0f984c59b55367c47919d38, type: 3} + - {fileID: 1518651257440837964, guid: 1802da913767140929fbb149d8bb1bf5, type: 3} + - {fileID: 8183404397726464440, guid: 1802da913767140929fbb149d8bb1bf5, type: 3} + - {fileID: 7734858737857034854, guid: 1802da913767140929fbb149d8bb1bf5, type: 3} + - {fileID: 591399213823941727, guid: 1802da913767140929fbb149d8bb1bf5, type: 3} + - {fileID: 534775924950268970, guid: 1802da913767140929fbb149d8bb1bf5, type: 3} + - {fileID: 11500000, guid: d537bd381617a4941839f44c04840c28, type: 3} + - {fileID: 303975922} --- !u!4 &1926461710 Transform: m_ObjectHideFlags: 0 @@ -10038,38 +10055,6 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 60} m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &2048155077 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2048155078} - m_Layer: 0 - m_Name: RotationPoint - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2048155078 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2048155077} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 719302918} - m_Father: {fileID: 293267688} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &2065642143 GameObject: m_ObjectHideFlags: 0 @@ -10367,7 +10352,7 @@ SceneRoots: - {fileID: 832575519} - {fileID: 1197505579} - {fileID: 665031027} - - {fileID: 759707325} + - {fileID: 1464630159} - {fileID: 151991542} - {fileID: 1926461710} - {fileID: 1039576899} diff --git a/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIHintText.cs b/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIHintText.cs index 91d81f14..81ebd045 100644 --- a/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIHintText.cs +++ b/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIHintText.cs @@ -1,7 +1,9 @@ +using System; using System.Collections; using System.Collections.Generic; using Ichni.RhythmGame; using TMPro; +using UniRx; using UnityEngine; namespace Ichni.Editor @@ -14,5 +16,10 @@ namespace Ichni.Editor { text.text = content; } + + public void SetUpdatingContent(Func content) + { + Observable.EveryUpdate().Subscribe(_ => text.text = content()).AddTo(gameObject); + } } } \ No newline at end of file diff --git a/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIInputField.cs b/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIInputField.cs index 17499afa..e91d9154 100644 --- a/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIInputField.cs +++ b/Assets/Scripts/DynamicUI/DynamicUIElements/Simple/DynamicUIInputField.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using Ichni.RhythmGame; using TMPro; using UnityEngine; +using UnityEngine.Events; namespace Ichni.Editor { @@ -36,5 +37,10 @@ namespace Ichni.Editor } connectedBaseElement.Refresh(); } + + public void AddListenerFunction(UnityAction action) + { + inputField.onEndEdit.AddListener(action); + } } } \ No newline at end of file diff --git a/Assets/Scripts/DynamicUI/Hierarchy/HierarchyTab.cs b/Assets/Scripts/DynamicUI/Hierarchy/HierarchyTab.cs index b0f464a3..d1bec5fd 100644 --- a/Assets/Scripts/DynamicUI/Hierarchy/HierarchyTab.cs +++ b/Assets/Scripts/DynamicUI/Hierarchy/HierarchyTab.cs @@ -14,7 +14,6 @@ namespace Ichni.Editor public GameElement connectedGameElement; public HierarchyTab parentTab; public List childTabList; - public List IDqueue; public int tabLayer; public bool isSelected; @@ -30,7 +29,6 @@ namespace Ichni.Editor public void SetTab(GameElement targetElement, GameElement parentElement) { - connectedGameElement = targetElement; tabButtonText.text = targetElement.elementName; targetElement.connectedTab = this; @@ -49,12 +47,8 @@ namespace Ichni.Editor this.parentTab = parentElement.connectedTab; parentElement.connectedTab.childTabList.Add(this); this.tabLayer = this.parentTab.tabLayer + 1; - - - - this.transform.SetSiblingIndex(this.parentTab.transform.GetSiblingIndex() + - this.parentTab.connectedGameElement.childElementList.Count); - + this.transform.SetSiblingIndex(this.parentTab.transform.GetSiblingIndex() + GetAllChildrenCount(this.parentTab)); + if (!this.parentTab.isExpanded) { this.isExpanded = false; @@ -63,7 +57,7 @@ namespace Ichni.Editor for (int i = 1; i <= this.tabLayer; i++) { - float lineX = 30 * i; + float lineX = 30 * i - 10; Instantiate(indentationLinePrefab, tabRect).GetComponent().anchoredPosition = new Vector2(lineX, 0); } } @@ -71,7 +65,6 @@ namespace Ichni.Editor float posX = -25 +( 30 * tabLayer); tabMainRect.anchoredPosition = new Vector2(posX, tabMainRect.anchoredPosition.y); - tabButton.onClick.AddListener(SelectGameElement); expandButton.onClick.AddListener(ExpandOrFold); } @@ -104,10 +97,11 @@ namespace Ichni.Editor if (isExpanded) { expandButton.transform.Rotate(new Vector3(0, 0, 180)); - foreach (GameElement i in connectedGameElement.childElementList) + + for (var index = 0; index < connectedGameElement.childElementList.Count; index++) { - HierarchyTab a = EditorManager.instance.uiManager.hierarchy.GenerateTab(i, connectedGameElement); - childTabList.Add(a); + var childElement = connectedGameElement.childElementList[index]; + EditorManager.instance.uiManager.hierarchy.GenerateTab(childElement, connectedGameElement); } } else diff --git a/Assets/Scripts/DynamicUI/Inspector/Inspector.cs b/Assets/Scripts/DynamicUI/Inspector/Inspector.cs index 422ce2b8..d1060492 100644 --- a/Assets/Scripts/DynamicUI/Inspector/Inspector.cs +++ b/Assets/Scripts/DynamicUI/Inspector/Inspector.cs @@ -101,7 +101,7 @@ namespace Ichni.Editor string title, string parameterName) { DynamicUIVector3InputField vector3InputField = - Instantiate(EditorManager.instance.basePrefabs.Vector3inputField, container.rect) + Instantiate(EditorManager.instance.basePrefabs.vector3InputField, container.rect) .GetComponent(); vector3InputField.Initialize(baseElement, title, parameterName); container.dynamicUIElements.Add(vector3InputField); @@ -128,20 +128,30 @@ namespace Ichni.Editor return colorPicker; } - public DynamicUIHintText GenerateText(IBaseElement baseElement, DynamicUIContainer container, string content) + public DynamicUIHintText GenerateHintText(IBaseElement baseElement, DynamicUIContainer container, string content) { - DynamicUIHintText parameterText = Instantiate(EditorManager.instance.basePrefabs.text, container.rect) + DynamicUIHintText hintText = Instantiate(EditorManager.instance.basePrefabs.hintText, container.rect) .GetComponent(); - parameterText.Initialize(baseElement, string.Empty, string.Empty); - parameterText.SetContent(content); - container.dynamicUIElements.Add(parameterText); - return parameterText; + hintText.Initialize(baseElement, string.Empty, string.Empty); + hintText.SetContent(content); + container.dynamicUIElements.Add(hintText); + return hintText; + } + + public DynamicUIHintText GenerateHintText(IBaseElement baseElement, DynamicUIContainer container, Func action) + { + DynamicUIHintText hintText = Instantiate(EditorManager.instance.basePrefabs.hintText, container.rect) + .GetComponent(); + hintText.Initialize(baseElement, string.Empty, string.Empty); + hintText.SetUpdatingContent(action); + container.dynamicUIElements.Add(hintText); + return hintText; } - public DynamicUIParameterText GenerateText(IBaseElement baseElement, DynamicUIContainer container, string title, + public DynamicUIParameterText GenerateParameterText(IBaseElement baseElement, DynamicUIContainer container, string title, string parameterName, bool isAlwaysUpdate = false) { - DynamicUIParameterText parameterText = Instantiate(EditorManager.instance.basePrefabs.text, container.rect) + DynamicUIParameterText parameterText = Instantiate(EditorManager.instance.basePrefabs.parameterText, container.rect) .GetComponent(); parameterText.Initialize(baseElement, title, parameterName); parameterText.isAlwaysUpdated = isAlwaysUpdate; diff --git a/Assets/Scripts/DynamicUI/MainUI/LogWindow.meta b/Assets/Scripts/DynamicUI/MainUI/LogWindow.meta new file mode 100644 index 00000000..78ba39e2 --- /dev/null +++ b/Assets/Scripts/DynamicUI/MainUI/LogWindow.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d563adb990452433e8dd44155e6e4d33 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/DynamicUI/MainUI/LogWindow/LogText.cs b/Assets/Scripts/DynamicUI/MainUI/LogWindow/LogText.cs new file mode 100644 index 00000000..33e94389 --- /dev/null +++ b/Assets/Scripts/DynamicUI/MainUI/LogWindow/LogText.cs @@ -0,0 +1,25 @@ +using System.Collections; +using System.Collections.Generic; +using Lean.Pool; +using TMPro; +using UnityEngine; + +namespace Ichni.Editor +{ + public class LogText : MonoBehaviour + { + public TMP_Text logText; + + public void SetLogText(string text, Color color) + { + logText.text = text; + logText.color = color; + + string logFilePath = EditorManager.instance.projectInformation.projectPath + "/Logs/EditorLog.txt"; + + // if(!ES3.FileExists(logFilePath)) System.IO.File.Create(logFilePath).Dispose(); + // + // System.IO.File.AppendAllText(logFilePath, text + "\n"); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/DynamicUI/MainUI/LogWindow/LogText.cs.meta b/Assets/Scripts/DynamicUI/MainUI/LogWindow/LogText.cs.meta new file mode 100644 index 00000000..45e03824 --- /dev/null +++ b/Assets/Scripts/DynamicUI/MainUI/LogWindow/LogText.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c627b09eb0f984c59b55367c47919d38 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/DynamicUI/MainUI/LogWindow/LogWindow.cs b/Assets/Scripts/DynamicUI/MainUI/LogWindow/LogWindow.cs new file mode 100644 index 00000000..0588d376 --- /dev/null +++ b/Assets/Scripts/DynamicUI/MainUI/LogWindow/LogWindow.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using Lean.Pool; +using UnityEngine; + +namespace Ichni.Editor +{ + public class LogWindow : MonoBehaviour + { + public GameObject logTextPrefab; + + public RectTransform textRect; + public Queue logTexts; + public int logTextCapacity = 4; + + private void Start() + { + logTexts = new Queue(); + } + + public void AddLog(string text, Color color = default) + { + CheckLogTextCapacity(); + LogText logText = LeanPool.Spawn(logTextPrefab, textRect).GetComponent(); + if (color == default) color = Color.white; + logText.SetLogText(text, color); + logTexts.Enqueue(logText); + } + + private void CheckLogTextCapacity() + { + if (logTexts.Count >= logTextCapacity) + { + LeanPool.Despawn(logTexts.Dequeue().gameObject); + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/DynamicUI/MainUI/LogWindow/LogWindow.cs.meta b/Assets/Scripts/DynamicUI/MainUI/LogWindow/LogWindow.cs.meta new file mode 100644 index 00000000..28c8d000 --- /dev/null +++ b/Assets/Scripts/DynamicUI/MainUI/LogWindow/LogWindow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d537bd381617a4941839f44c04840c28 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/DynamicUI/MainUI/MainPage.cs b/Assets/Scripts/DynamicUI/MainUI/MainPage.cs index 537e46f3..33867cb7 100644 --- a/Assets/Scripts/DynamicUI/MainUI/MainPage.cs +++ b/Assets/Scripts/DynamicUI/MainUI/MainPage.cs @@ -9,5 +9,6 @@ namespace Ichni.Editor public Canvas mainCanvas; public ToolBar toolBar; public ResolutionHints resolutionHints; + public LogWindow logWindow; } } \ No newline at end of file diff --git a/Assets/Scripts/EditorGame/Base/BaseElement.cs b/Assets/Scripts/EditorGame/Base/BaseElement.cs index 29aeaa88..c267d59e 100644 --- a/Assets/Scripts/EditorGame/Base/BaseElement.cs +++ b/Assets/Scripts/EditorGame/Base/BaseElement.cs @@ -17,7 +17,10 @@ namespace Ichni.RhythmGame /// /// 用于生成存档 /// - public void SaveBM(); + public void SaveBM() + { + + } /// /// 刷新物体的状态 @@ -44,7 +47,11 @@ namespace Ichni.RhythmGame } public Inspector inspector => EditorManager.instance.uiManager.inspector; - public void SetUpInspector(); + + public void SetUpInspector() + { + + } } // public virtual void SetTimeDuration() diff --git a/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TransformSubmodule.cs b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TransformSubmodule.cs index 63b514d2..424a6b2e 100644 --- a/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TransformSubmodule.cs +++ b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TransformSubmodule.cs @@ -93,11 +93,11 @@ namespace Ichni.RhythmGame var originalScaleInputField = inspector.GenerateVec3InputField(this, container, "Start Scale", nameof(originalScale)); var currentPosText = - inspector.GenerateText(this, container, "Current Position", nameof(currentPosition), true); + inspector.GenerateParameterText(this, container, "Current Position", nameof(currentPosition), true); var currentRotText = - inspector.GenerateText(this, container, "Current Rotation", nameof(currentEulerAngles), true); + inspector.GenerateParameterText(this, container, "Current Rotation", nameof(currentEulerAngles), true); var currentScaleText = - inspector.GenerateText(this, container, "Current Scale", nameof(currentScale), true); + inspector.GenerateParameterText(this, container, "Current Scale", nameof(currentScale), true); } public override void Refresh() diff --git a/Assets/Scripts/EditorGame/GameElements/GameElement.cs b/Assets/Scripts/EditorGame/GameElements/GameElement.cs index 7d237479..e3bf9d39 100644 --- a/Assets/Scripts/EditorGame/GameElements/GameElement.cs +++ b/Assets/Scripts/EditorGame/GameElements/GameElement.cs @@ -149,7 +149,7 @@ namespace Ichni.RhythmGame { var container = inspector.GenerateContainer("Element Info"); var nameInputField = inspector.GenerateInputField(this, container, GetType().Name + "'s Name", nameof(elementName)); - var guidText = inspector.GenerateText(this, container, "Element GUID", nameof(elementGuid)); + var guidText = inspector.GenerateParameterText(this, container, "Element GUID", nameof(elementGuid)); var tagsListButton = inspector.GenerateButton(this, container, "Tags List", () => { inspector.GenerateCompositeParameterWindow(this, "Tags List", nameof(tags)).SetAsStringList(); diff --git a/Assets/Scripts/EditorGame/GameElements/Track/PathNode.cs b/Assets/Scripts/EditorGame/GameElements/Track/PathNode.cs index 6a58ff70..d48a5c88 100644 --- a/Assets/Scripts/EditorGame/GameElements/Track/PathNode.cs +++ b/Assets/Scripts/EditorGame/GameElements/Track/PathNode.cs @@ -79,6 +79,14 @@ namespace Ichni.RhythmGame { matchedBM = new Beatmap.PathNode_BM(elementName, elementGuid, tags, parentElement.matchedBM as GameElement_BM); } + + public override void SetUpInspector() + { + base.SetUpInspector(); + + var container = inspector.GenerateContainer("Path Node"); + var indexText = inspector.GenerateHintText(this, container, "Index: " + index); + } } namespace Beatmap diff --git a/Assets/Scripts/Manager/BasePrefabsCollection.cs b/Assets/Scripts/Manager/BasePrefabsCollection.cs index 075c7bdb..cf476f7e 100644 --- a/Assets/Scripts/Manager/BasePrefabsCollection.cs +++ b/Assets/Scripts/Manager/BasePrefabsCollection.cs @@ -33,11 +33,12 @@ public class BasePrefabsCollection : SerializedScriptableObject [Title("DynamicUI相关-Simple")] public GameObject dynamicUIContainer; public GameObject inputField; - public GameObject Vector3inputField; - public GameObject text; + [FormerlySerializedAs("Vector3inputField")] public GameObject vector3InputField; + [FormerlySerializedAs("text")] public GameObject parameterText; + public GameObject hintText; public GameObject button; public GameObject toggle; - [FormerlySerializedAs("dropdown")] public GameObject enumDropdown; + public GameObject enumDropdown; public GameObject stringListDropdown; public GameObject baseColorPicker; public GameObject emissionColorPicker; diff --git a/Assets/Scripts/Manager/CameraManager.cs b/Assets/Scripts/Manager/CameraManager.cs new file mode 100644 index 00000000..0f9ea26f --- /dev/null +++ b/Assets/Scripts/Manager/CameraManager.cs @@ -0,0 +1,42 @@ +using System.Collections; +using System.Collections.Generic; +using Ichni.RhythmGame; +using Ichni.RhythmGame.Beatmap; +using UnityEngine; + +namespace Ichni.Editor +{ + public class CameraManager : MonoBehaviour, IBaseElement + { + public bool isSceneCameraActive; + public SceneCamera sceneCamera; + public float cameraMoveSpeed; + + public GameCamera gameCamera; + private bool haveGameCamera => gameCamera != null; + + public BaseElement_BM matchedBM { get; set; } + + public void SwitchCamera() + { + if (!haveGameCamera) + { + throw new System.Exception("GameCamera is not assigned"); + } + + isSceneCameraActive = !isSceneCameraActive; + sceneCamera.camera.enabled = isSceneCameraActive; + gameCamera.camera.enabled = !isSceneCameraActive; + } + + public void SetUpInspector() + { + string ShowCameraType() => isSceneCameraActive ? "Scene Camera" : "Game Camera"; + var container = EditorManager.instance.uiManager.inspector.GenerateContainer("Camera Manager"); + var cameraTypeText = EditorManager.instance.uiManager.inspector.GenerateHintText(this, container, ShowCameraType); + var switchCameraButton = EditorManager.instance.uiManager.inspector.GenerateButton(this, container, "Switch Camera", SwitchCamera); + var cameraMoveSpeedField = EditorManager.instance.uiManager.inspector.GenerateInputField(this, container, "Camera Move Speed", nameof(cameraMoveSpeed)); + sceneCamera.SetUpInspector(); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Manager/CameraManager.cs.meta b/Assets/Scripts/Manager/CameraManager.cs.meta new file mode 100644 index 00000000..cbcbd9c4 --- /dev/null +++ b/Assets/Scripts/Manager/CameraManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 604e2c80e1fb64c2ba9608c11fb2f040 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Manager/EditorManager.cs b/Assets/Scripts/Manager/EditorManager.cs index 95f8c7ae..73aa3274 100644 --- a/Assets/Scripts/Manager/EditorManager.cs +++ b/Assets/Scripts/Manager/EditorManager.cs @@ -7,6 +7,7 @@ using Ichni.RhythmGame.Beatmap; using Ichni.RhythmGame.ThemeBundles.Basic; using Sirenix.OdinInspector; using UnityEngine; +using Random = UnityEngine.Random; namespace Ichni { @@ -18,6 +19,7 @@ namespace Ichni public EditorUIManager uiManager; public EditorSettings editorSettings; public BackgroundController backgroundController; + public CameraManager cameraManager; public ProjectInformation projectInformation; public SongInformation songInformation; @@ -75,6 +77,7 @@ namespace Ichni "basic", "Skybox", "Background")); projectInformation.SetUpInspector(); songInformation.SetUpInspector(); + cameraManager.SetUpInspector(); } private void CreateNew() diff --git a/Assets/Scripts/Manager/InputListener.cs b/Assets/Scripts/Manager/InputListener.cs index ad75d795..6b7a24b9 100644 --- a/Assets/Scripts/Manager/InputListener.cs +++ b/Assets/Scripts/Manager/InputListener.cs @@ -10,6 +10,37 @@ namespace Ichni.Editor { private void Update() { + if (EditorManager.instance.cameraManager.isSceneCameraActive) + { + float cameraSpeed = EditorManager.instance.cameraManager.cameraMoveSpeed * Time.deltaTime; + Transform sceneCameraTransform = EditorManager.instance.cameraManager.sceneCamera.transform; + if (Keyboard.current.wKey.isPressed) + { + sceneCameraTransform.position += sceneCameraTransform.forward * cameraSpeed; + } + if (Keyboard.current.sKey.isPressed) + { + sceneCameraTransform.position -= sceneCameraTransform.forward * cameraSpeed; + } + if (Keyboard.current.dKey.isPressed) + { + sceneCameraTransform.position += sceneCameraTransform.right * cameraSpeed; + } + if (Keyboard.current.aKey.isPressed) + { + sceneCameraTransform.position -= sceneCameraTransform.right * cameraSpeed; + } + if (Keyboard.current.spaceKey.isPressed) + { + sceneCameraTransform.position += sceneCameraTransform.up * cameraSpeed; + } + if (Keyboard.current.leftShiftKey.isPressed) + { + sceneCameraTransform.position -= sceneCameraTransform.up * cameraSpeed; + } + } + + if (Keyboard.current.leftCtrlKey.isPressed) { if (Keyboard.current.sKey.wasPressedThisFrame) @@ -20,7 +51,9 @@ namespace Ichni.Editor { EditorManager.instance.projectManager.exportManager.Export(); } - else if (Keyboard.current.digit1Key.wasPressedThisFrame) + + + if (Keyboard.current.digit1Key.wasPressedThisFrame) { EditorManager.instance.uiManager.mainPage.resolutionHints.SetPhoneFrame(); } diff --git a/Assets/Scripts/Manager/SceneCamera.cs b/Assets/Scripts/Manager/SceneCamera.cs new file mode 100644 index 00000000..9b7bdab1 --- /dev/null +++ b/Assets/Scripts/Manager/SceneCamera.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using Ichni.RhythmGame; +using Ichni.RhythmGame.Beatmap; +using UnityEngine; + +namespace Ichni.Editor +{ + public class SceneCamera : MonoBehaviour, IBaseElement + { + public Camera camera; + + public GameCamera.CameraViewType viewType; + public float perspectiveAngle; + public float orthographicSize; + + public BaseElement_BM matchedBM { get; set; } + + public void SetUpInspector() + { + Inspector inspector = EditorManager.instance.uiManager.inspector; + var container = inspector.GenerateContainer("Scene Camera"); + var viewTypeDropdown = inspector.GenerateDropdown(this, container, "View Type", typeof(GameCamera.CameraViewType), nameof(viewType)); + var perspectiveAngleField = inspector.GenerateInputField(this, container, "Perspective Angle", nameof(perspectiveAngle)); + var orthographicSizeField = inspector.GenerateInputField(this, container, "Orthographic Size", nameof(orthographicSize)); + + viewTypeDropdown.AddListenerFunction(_ => + { + camera.orthographic = viewType == GameCamera.CameraViewType.Orthographic; + }); + + perspectiveAngleField.AddListenerFunction(_ => + { + camera.fieldOfView = perspectiveAngle; + }); + + orthographicSizeField.AddListenerFunction(_ => + { + camera.orthographicSize = orthographicSize; + }); + + string GetPosition() => $"Position: {camera.transform.position}"; + var positionText = inspector.GenerateHintText(this, container, GetPosition); + string GetEulerAngles() => $"Euler Angles: {camera.transform.eulerAngles}"; + var eulerAnglesText = inspector.GenerateHintText(this, container, GetEulerAngles); + } + + public void MoveCamera(Vector3 delta) + { + camera.transform.position += delta; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Manager/SceneCamera.cs.meta b/Assets/Scripts/Manager/SceneCamera.cs.meta new file mode 100644 index 00000000..ec3b3e26 --- /dev/null +++ b/Assets/Scripts/Manager/SceneCamera.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 63e7ac45befe54908ba6c691211fcbfa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: