From c699fef261e7d126930191ab2f9ec33f084ba397 Mon Sep 17 00:00:00 2001 From: Fuseman Date: Mon, 4 Oct 2021 07:13:08 -0700 Subject: [PATCH] Smart Contract Sample (#27) * Smart Contract Integration * Move 2D input to event driven architecture * Add Blockchain Example --- Images~/blockchain.png | Bin 0 -> 50354 bytes README.md | 104 +- Runtime/Scripts/BlockchainData.cs | 29 +- Runtime/Scripts/CameraControls.cs | 36 +- Runtime/Scripts/ClientStreams.cs | 19 + Runtime/Scripts/VRInputManager.cs | 17 +- Samples~/Blockchain/Blockchain.unity | 4087 +++++++++++++++++ Samples~/Blockchain/Blockchain.unity.meta | 7 + Samples~/Blockchain/Scripts/CryptoUI.cs | 103 + Samples~/Blockchain/Scripts/CryptoUI.cs.meta | 11 + .../Blockchain/Scripts/CustomEventSystem.cs | 48 + .../Scripts/CustomEventSystem.cs.meta | 11 + Samples~/Blockchain/Scripts/RemoteInput.cs | 78 + .../Blockchain/Scripts/RemoteInput.cs.meta | 11 + Samples~/Blockchain/erc20abi.txt | 288 ++ Samples~/Blockchain/erc20abi.txt.meta | 7 + package.json | 18 +- 17 files changed, 4825 insertions(+), 49 deletions(-) create mode 100644 Images~/blockchain.png create mode 100644 Samples~/Blockchain/Blockchain.unity create mode 100644 Samples~/Blockchain/Blockchain.unity.meta create mode 100644 Samples~/Blockchain/Scripts/CryptoUI.cs create mode 100644 Samples~/Blockchain/Scripts/CryptoUI.cs.meta create mode 100644 Samples~/Blockchain/Scripts/CustomEventSystem.cs create mode 100644 Samples~/Blockchain/Scripts/CustomEventSystem.cs.meta create mode 100644 Samples~/Blockchain/Scripts/RemoteInput.cs create mode 100644 Samples~/Blockchain/Scripts/RemoteInput.cs.meta create mode 100644 Samples~/Blockchain/erc20abi.txt create mode 100644 Samples~/Blockchain/erc20abi.txt.meta diff --git a/Images~/blockchain.png b/Images~/blockchain.png new file mode 100644 index 0000000000000000000000000000000000000000..d6a7baa1ed5b94fcc54c10ace5531ead15fab877 GIT binary patch literal 50354 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%0D<(sVMXu~Mk$;ol;k9-O&?a848-0KW8XpX{v zkHKVQuYx&^>bCfIndt4;(UTGLVk^@^=QNra9k188U06GiFndJH6Fllro)q~-C0UOp zpLUPGj{S2`>t1w%kP7A#_RBXks5u4dM|G?JstW8o5HG%yzmx@|K3J3t0TImc*e+)K zwOanOhV9qaXD@PW5s@FBTeCB zr5jEJXCRG{+iItUpx^9*QvlFglYQm%EIeyV%-*}m7SRgyws9;H@2+qQx2MHVZblQ| zoz6H{?&0bW;7^n;7Q=!65m_h7_^%BMzBKsj2z0nI(2>)LR{()_J5l-WvFEC`xuOH& z5qj*TCM64)uDEo3^3?l)85|X=VMej}CpFO>P6o4MYRcJ*M&XfzL7euvhzcqFY^C_Y z>vNo2`0wB=aNRu;YL4sEF@sv*@lMGUF_tNU)Jv}tXOwFQD!{)z+aWr2m3ZZH1 z_ioIF=X|v)ew{*xWGs{SLj}b70%6H538U%Jiz0%JIk14&nN1Lx(MK&|-rOnJO2Y)HwO61U}ATMrVb2Ric$n z>L(+t_eex?=E}20b3l3_Fr4Y)y{ybR9Z=2IOvjS{9U#eygJwH8{Y$f3sIzT76$;pgqrMvrZ%N^O1sT>1q0=F%-^0{6f1(` zvD0|0SgYTkW4kd=V38y$U4qO`0KSb`u`^jl#FG&0%f`50?ZFoqxnq-ir#by&uhg;- z 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 + +
+How To Setup CloudXR to WebXR +

# Setup @@ -38,18 +42,78 @@ On the **Render Streaming Service** Game Object, there are a few configuration o
VR Broadcast Component +

+ +# Samples + +Provided with the package are several samples to help with quick testing the SDK : **HDRP**, **VRTK Integration** , **Asymmetrical Multiplayer** , **Blockchain Testing**. These samples can be imported via the Package Manager once you have imported the SDK into your Unity project. + +## High Definition Render Pipeline + +The first one uses the Unity HDRP Built In Template to show case streaming a scene with the [High Definition Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@11.0/manual/index.html) into WebXR. This is one of the very few ways to play a HDRP game / app within Oculus Quest / WebXR. In order to utilize this sample, import the High Definition RP package from the Unity registry. + +#### Watch how to setup the project on [Youtube](https://youtu.be/yXta-2aHH18) + +

+ +
+HDRP Streaming

+## VRTK Input Integration + +The second provided sample shows integration with [VRTK](https://www.vrtk.io/) to showcase how to utilize the input that is streamed from the WebXR client into Unity. Using this input, we can build an Archery Sandbox. Simply pick up the bow and then grab arrows from behind your back to begin shooting. Please note that to you use this sample you will need to manually also import the following [VRTK Tilia Packages](https://www.vrtk.io/tilia.html): + +- **io.extendreality.tilia.camerarigs.trackedalias.unity** +- **io.extendreality.tilia.interactions.interactables.unity** +- **io.extendreality.tilia.interactions.snapzone.unity** + +#### Watch how to setup the project on [Youtube](https://youtu.be/Bc__t2MLarc) + +

+ +
+VRTK Bow & Arrow +

+ +## Asymmetrical Multiplayer + +The third provided sample shows an example of creating a asymmetrical multiplayer experience, where up to 4 users can enter the application either in VR or in 2D as a laptop or mobile user to view an apartment. VR users will be able to teleport around using the enabled [VRTK](https://www.vrtk.io/) integration. Please note that to you use this sample you will need to manually also import the following [VRTK Tilia Packages](https://www.vrtk.io/tilia.html): + +- **io.extendreality.tilia.locomotors.teleporter.unity** +- **io.extendreality.tilia.indicators.objectpointers.unity** + +![Apartment](https://raw.githubusercontent.com/FusedVR/VRStreaming/master/Images~/apartment.png) + +## Blockchain Testing + +The forth sample shows an example of interacting with the Blockchain. This sample shows you how to use each feature of the Blockchain interaction highlighted above. Due to documented UI issues with Unity Render Streaming, this sample is a bit unstable to setup. If you are testing within Unity, please make sure the Game View is selected; otherwise input will fail to be recognized by the Editor Canvas. If you are running into trouble, please follow this [README](https://github.com/Unity-Technologies/UnityRenderStreaming/blob/develop/com.unity.renderstreaming/Documentation~/browser_input.md) guide from Render Streaming in order to setup browser input. There is also a work around script (RemoteInput.cs) that has been implemented to avoid the bug caused in this [issue](https://github.com/Unity-Technologies/UnityRenderStreaming/issues/542). + +#### Some recommendations +- **In Project Setting->Player->Other Setting, check Allow 'unsafe' code** +- **For UnityEditor, Open Window->Analysis->Input Debugger and turn on Lock Input to Game View in Options** + +![Blockchain UI](https://raw.githubusercontent.com/FusedVR/VRStreaming/master/Images~/blockchain.png) + # Camera Eye Resolution At this time, the WebXR Client sends the resolution required to render per eye based on the connected VR device to Unity in order to adapt the resolution that is sent. However, IPD data is not sent and is hard-coded to a standard default IPD of 64mm. If you would like to adjust the resolution yourself, you may change the [VRInputManager](https://github.com/FusedVR/VRStreaming/blob/master/Runtime/Scripts/VRInputManager.cs) and change the code related to the VRDataType.Display. # Cloud Support -This project has been tested to work on AWS EC2 leveraging Nvidia's Gaming AMIs. See the following videos for documentation on how to setup your Unity VR Streaming project and get it deployed on the Cloud. +This project has been tested to work on AWS EC2 leveraging Nvidia's Gaming AMIs. See the following videos for documentation on how to setup your Unity VR Streaming project and get it deployed on the Cloud : [**Windows**](https://youtu.be/UFsbQ8YlboU) / [**Linux**](https://youtu.be/3p0tzqD-s-c) -- Windows Server with Tesla T4 GPU Accelerated Graphics : https://youtu.be/UFsbQ8YlboU -- Ubuntu 18.04 with Tesla T4 GPU Accelerated Graphics : https://youtu.be/3p0tzqD-s-c +

+ +
+Windows Server with Tesla T4 GPU Accelerated Graphics +

+ +

+ +
+Ubuntu 18.04 with Tesla T4 GPU Accelerated Graphics +

# GPU Recommendations @@ -84,41 +148,21 @@ In order to support decentralized payments, the SDK now supports the ability to - **GetAccount()** : returns the currently active Blockchain account - **Signature(string message)** : returns the signed hash of the input message - **SendTransaction(string to, string value)** : returns the transaction hash for the ethereum transaction that will send *value* ethereum to the *to* address from the active web wallet account +- **RegisterContract(string contractAddres , string abi)** : registers the smart contract address with an associated abi on the clients. This enables the client to make calls to the Smart Contract instead of the server bundling the request into the data field of the SendTransaction +- **RunTransaction(string contractAddress, string functionName, string[] args)** : runs the smart contract transaction on the client. If it is a read-only transaction, the client will return the value from the blockchain i.e. name / symbol. if the function requires writting to the blockchain, then the client will return a transaction hash. -Once any of these methods has been called, the data will be sent over each Client's Data Channel to be processed on the client. If the Client supports the Web Wallet, then the message will be processed and returned back to the server. From Unity, you can listen from the return values on the BlockchainData.CryptoEvent event handler, which will return the event name and the result depending on which method was called. +Once any of these methods has been called, the data will be sent over each Client's Data Channel to be processed on the client. If the Client supports the Web Wallet, then the message will be processed and returned back to the server. From Unity, you can listen from the return values on the **BlockchainData.CryptoEvent** event handler, which will return the event name and the result depending on which method was called. Please refer to the Blockchain Testing sample above for instructions on how to use the functionality. -## How To Use +## How To Use Blockchain Support The most common scenario where this can be integrated is when a VR device like Oculus Quest **NOT** support Blockchain integration and would like to have a secondary device (i.e. smart phone) to be paired with the headset in order to authorize payments. A user could simply connect both the VR headset and phone to the same server and the headset would be responsible for displaying VR, while the phone / computer would be responsible for authorizing any payments using Metamask. To implement this, you will need to : - Increase the number of clients that can connect to the server from 1 to 2. -- If desired, create a specific CLientStreamer prefab dedicated for Blockchain support and assign that prefab to the **VRBroadcast**. If unchanged, the video stream will be passed through, which may or may not be desired. +- If desired, create a specific ClientStreamer prefab dedicated for Blockchain support and assign that prefab to the **VRBroadcast**. If unchanged, the video stream will be passed through, which may or may not be desired. ## More Blockchain Requests? Please file [Github feature request issues](https://github.com/FusedVR/VRStreaming/issues) for additional methods and web wallet support that you would like to see implemented on clients. -# Samples - -Provided with the package are two samples to help with quick testing the SDK : **HDRP & VRTK**. Both these samples can be imported via the Package Manager once you have imported the SDK into your Unity project. - -The first one uses the Unity HDRP Built In Template to show case streaming a scene with the [High Definition Render Pipeline](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@11.0/manual/index.html) into WebXR. This one of the very few ways to play a HDRP game / app within Oculus Quest / WebXR. In order to utilize this sample, import the High Definition RP package from the Unity registry. - -![High Definition Render Pipeline](https://raw.githubusercontent.com/FusedVR/VRStreaming/master/Images~/hdrpvr.png) - -The second provided sample shows integration with [VRTK](https://www.vrtk.io/) to showcase how to utilize the input that is streamed from the WebXR client into Unity. Using this input, we can build an Archery Sandbox. Simply pick up the bow and then grab arrows from behind your back to begin shooting. Please note that to you use this sample you will need to manually also import the following [VRTK Tilia Packages](https://www.vrtk.io/tilia.html): - -- **io.extendreality.tilia.camerarigs.trackedalias.unity** -- **io.extendreality.tilia.interactions.interactables.unity** -- **io.extendreality.tilia.interactions.snapzone.unity** - -![VRTK Archery](https://raw.githubusercontent.com/FusedVR/VRStreaming/master/Images~/archery-sample.png) - -The third provided sample shows an example of creating a asymmetrical multiplayer experience, where up to 4 users can enter the application either in VR or in 2D as a laptop or mobile user to view an apartment. VR users will be able to teleport around using the enabled [VRTK](https://www.vrtk.io/) integration. Please note that to you use this sample you will need to manually also import the following [VRTK Tilia Packages](https://www.vrtk.io/tilia.html): - -- **io.extendreality.tilia.locomotors.teleporter.unity** -- **io.extendreality.tilia.indicators.objectpointers.unity** - -![Apartment](https://raw.githubusercontent.com/FusedVR/VRStreaming/master/Images~/apartment.png) diff --git a/Runtime/Scripts/BlockchainData.cs b/Runtime/Scripts/BlockchainData.cs index 0de4990..ab07eb0 100644 --- a/Runtime/Scripts/BlockchainData.cs +++ b/Runtime/Scripts/BlockchainData.cs @@ -18,7 +18,7 @@ public static class BlockchainData /// Enums for the Block Chain Data Events. Use DataEvent.ToString() to convert to event name /// public enum DataEvents { - account, sign, sendTx + account, sign, sendTx, setContract, runContract } #endregion @@ -55,6 +55,33 @@ public static void SendTransaction(string to, string value) { SendEvent( DataEvents.sendTx, JsonConvert.SerializeObject(payload) ); } + /// + /// Sends a transaction to register the contract with the client based on the address and abi + /// This contract once registered can then be called while the client is connected + /// + public static void RegisterContract(string contractAddress, string abi) { + Dictionary payload = new Dictionary { + ["addr"] = contractAddress, + ["abi"] = abi + }; + + SendEvent(DataEvents.setContract, JsonConvert.SerializeObject(payload)); + } + + /// + /// Run a smart contract that has already been Registered With the Client + /// Pass the relevant function name and arguments + /// + public static void RunTransaction(string contractAddress, string functionName, string[] args) { + Dictionary payload = new Dictionary { + ["addr"] = contractAddress, + ["fn"] = functionName, + ["args"] = args + }; + + SendEvent(DataEvents.runContract, JsonConvert.SerializeObject(payload)); + } + /// /// Generic Send Event method that works with the Broadcaster to send the message over the data channel /// diff --git a/Runtime/Scripts/CameraControls.cs b/Runtime/Scripts/CameraControls.cs index 6859fe4..b6d6946 100644 --- a/Runtime/Scripts/CameraControls.cs +++ b/Runtime/Scripts/CameraControls.cs @@ -14,6 +14,8 @@ public class CameraControls : MonoBehaviour { public float shiftAdd = 25.0f; // Amount to accelerate when shift is pressed public float maxShift = 100.0f; // Maximum speed when holding shift public float camSens = 0.15f; // Mouse sensitivity + + public VRInputManager inputManager; #endregion #region Private Properties @@ -28,9 +30,19 @@ public class CameraControls : MonoBehaviour { #endregion #region Public Methods + private void Start() { + inputManager.onDeviceChange += OnDeviceChange; + } + + private void OnDeviceChange(InputDevice device, InputDeviceChange change) { + if (change == InputDeviceChange.Added) + AddDevice(device); + else if (change == InputDeviceChange.Removed) + RemoveDevice(device); + } + /// /// Add a Unity Input Device (Mouse, Touch, Keyboard) to this controller to be used for Camera Controls - /// Used in the VR Input Manager to assign devices /// public void AddDevice(InputDevice device) { switch (device) { @@ -49,14 +61,22 @@ public void AddDevice(InputDevice device) { } /// - /// Reset and Remove all Devices that have prior assigned - /// Used in the VR Input Manager to remove devices for the camera control on disconnect + /// Remove the Specified Device (Mouse, Touch, Keyboard) from the controls /// - public void RemoveDevices() { - myMouse = null; - myKeyboard = null; - myTouch = null; - lastPointer = null; + public void RemoveDevice(InputDevice device) { + switch (device) { + case Mouse mouse: + myMouse = null; + lastPointer = null; + break; + case Keyboard keyboard: + myKeyboard = null; + break; + case Touchscreen touch: + myTouch = null; + lastPointer = null; + break; + } } #endregion diff --git a/Runtime/Scripts/ClientStreams.cs b/Runtime/Scripts/ClientStreams.cs index c171911..2dd74d5 100644 --- a/Runtime/Scripts/ClientStreams.cs +++ b/Runtime/Scripts/ClientStreams.cs @@ -19,6 +19,7 @@ namespace FusedVR.VRStreaming { /// public class ClientStreams : MonoBehaviour { + #region Variables /// /// Data Channel for the client /// @@ -35,6 +36,24 @@ public class ClientStreams : MonoBehaviour /// Connection ID for client /// private string myConnection; + #endregion + + #region Events + /// + /// Static events for when a client joins or leaves + /// + public delegate void OnClientStream(ClientStreams player); + public static OnClientStream OnClientAdded; + public static OnClientStream OnClientLeft; + + private void OnEnable() { + OnClientAdded?.Invoke(this); + } + + private void OnDisable() { + OnClientLeft?.Invoke(this); + } + #endregion /// /// Set the connection based on the signalling data from the client on an Offer diff --git a/Runtime/Scripts/VRInputManager.cs b/Runtime/Scripts/VRInputManager.cs index 98382e4..ff76c86 100644 --- a/Runtime/Scripts/VRInputManager.cs +++ b/Runtime/Scripts/VRInputManager.cs @@ -14,6 +14,7 @@ using Unity.WebRTC; using UnityEngine; using UnityEngine.Events; +using UnityEngine.InputSystem; namespace FusedVR.VRStreaming { /// @@ -119,6 +120,8 @@ public class VRPoseData : UnityEvent { /// public delegate void OnCryptoData(BlockchainData.DataEvents evt, string result); public static OnCryptoData CryptoEvent; + + public event Action onDeviceChange; #endregion #region Methods @@ -126,6 +129,7 @@ public class VRPoseData : UnityEvent { private void Awake() { if (enableKeyboardTouchControls) { camControls = gameObject.AddComponent(); + camControls.inputManager = this; } } @@ -133,14 +137,19 @@ public override void SetChannel(string connectionId, RTCDataChannel channel) { if (channel == null) { if (remoteInput != null) { remoteInput.Dispose(); - camControls.RemoveDevices(); + + onDeviceChange?.Invoke(remoteInput.RemoteKeyboard, InputDeviceChange.Removed); + onDeviceChange?.Invoke(remoteInput.RemoteMouse, InputDeviceChange.Removed); + onDeviceChange?.Invoke(remoteInput.RemoteTouchscreen, InputDeviceChange.Removed); + remoteInput = null; } } else { remoteInput = RemoteInputReceiver.Create(); - camControls.AddDevice(remoteInput.RemoteKeyboard); - camControls.AddDevice(remoteInput.RemoteMouse); - camControls.AddDevice(remoteInput.RemoteTouchscreen); + onDeviceChange?.Invoke(remoteInput.RemoteKeyboard , InputDeviceChange.Added); + onDeviceChange?.Invoke(remoteInput.RemoteMouse, InputDeviceChange.Added); + onDeviceChange?.Invoke(remoteInput.RemoteTouchscreen, InputDeviceChange.Added); + channel.OnMessage += remoteInput.ProcessInput; } diff --git a/Samples~/Blockchain/Blockchain.unity b/Samples~/Blockchain/Blockchain.unity new file mode 100644 index 0000000..f728fe4 --- /dev/null +++ b/Samples~/Blockchain/Blockchain.unity @@ -0,0 +1,4087 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &12488239 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 12488240} + - component: {fileID: 12488242} + - component: {fileID: 12488241} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &12488240 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 12488239} + 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_Children: [] + m_Father: {fileID: 358495518} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 4.0999985, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &12488241 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 12488239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &12488242 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 12488239} + m_CullTransparentMesh: 0 +--- !u!1 &39543575 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 39543576} + - component: {fileID: 39543579} + - component: {fileID: 39543578} + - component: {fileID: 39543577} + m_Layer: 5 + m_Name: Param 1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &39543576 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39543575} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.0000795, y: 1.0000795, z: 1.0000795} + m_Children: + - {fileID: 1451807909} + - {fileID: 1378886789} + m_Father: {fileID: 1483615157} + m_RootOrder: 0 + 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: -147.7, y: -39.1} + m_SizeDelta: {x: 140, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &39543577 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39543575} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 39543578} + m_TextComponent: {fileID: 1378886790} + m_Placeholder: {fileID: 1451807910} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &39543578 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39543575} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 2 +--- !u!222 &39543579 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39543575} + m_CullTransparentMesh: 0 +--- !u!1 &58660118 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 58660119} + m_Layer: 5 + m_Name: Register ERC-20 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &58660119 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 58660118} + 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_Children: + - {fileID: 1498274730} + - {fileID: 1304017489} + m_Father: {fileID: 306344496} + m_RootOrder: 3 + 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: -12.100001, y: 8.900002} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &121759007 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 121759008} + - component: {fileID: 121759010} + - component: {fileID: 121759009} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &121759008 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 121759007} + 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_Children: [] + m_Father: {fileID: 1915854602} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &121759009 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 121759007} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Message... +--- !u!222 &121759010 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 121759007} + m_CullTransparentMesh: 0 +--- !u!1 &148681498 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 148681499} + - component: {fileID: 148681501} + - component: {fileID: 148681500} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &148681499 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148681498} + 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_Children: [] + m_Father: {fileID: 1498274730} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &148681500 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148681498} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: ERC-20 Contract Address +--- !u!222 &148681501 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 148681498} + m_CullTransparentMesh: 0 +--- !u!1 &153272553 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 153272554} + - component: {fileID: 153272557} + - component: {fileID: 153272556} + - component: {fileID: 153272555} + m_Layer: 5 + m_Name: Function + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &153272554 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 153272553} + 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_Children: + - {fileID: 1216563344} + - {fileID: 711915228} + m_Father: {fileID: 1483615157} + m_RootOrder: 2 + 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: -74.3, y: 0} + m_SizeDelta: {x: 280, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &153272555 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 153272553} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 153272556} + m_TextComponent: {fileID: 711915229} + m_Placeholder: {fileID: 1216563345} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: name + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &153272556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 153272553} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 2 +--- !u!222 &153272557 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 153272553} + m_CullTransparentMesh: 0 +--- !u!1 &202204085 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 202204086} + - component: {fileID: 202204088} + - component: {fileID: 202204087} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &202204086 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202204085} + 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_Children: [] + m_Father: {fileID: 1946202082} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &202204087 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202204085} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: To Account +--- !u!222 &202204088 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 202204085} + m_CullTransparentMesh: 0 +--- !u!1 &218257947 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 218257948} + - component: {fileID: 218257950} + - component: {fileID: 218257949} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &218257948 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 218257947} + 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_Children: [] + m_Father: {fileID: 1419605404} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + 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 &218257949 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 218257947} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Sign Message +--- !u!222 &218257950 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 218257947} + m_CullTransparentMesh: 0 +--- !u!1 &220549522 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 220549523} + m_Layer: 5 + m_Name: Send Ethereum + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &220549523 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 220549522} + 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_Children: + - {fileID: 1946202082} + - {fileID: 1688716583} + - {fileID: 347440939} + m_Father: {fileID: 306344496} + m_RootOrder: 2 + 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: -12.1, y: 52.4} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &306344495 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 306344496} + - component: {fileID: 306344498} + - component: {fileID: 306344497} + - component: {fileID: 306344499} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &306344496 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306344495} + 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_Children: + - {fileID: 899118918} + - {fileID: 959292347} + - {fileID: 220549523} + - {fileID: 58660119} + - {fileID: 1483615157} + m_Father: {fileID: 2032832752} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -50, y: -126} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &306344497 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306344495} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.392} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + 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 &306344498 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306344495} + m_CullTransparentMesh: 0 +--- !u!114 &306344499 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306344495} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c8f798071abab034887f47fb73683208, type: 3} + m_Name: + m_EditorClassIdentifier: + accountText: {fileID: 912566200} + message: {fileID: 1915854603} + toAddress: {fileID: 1946202083} + ethereum: {fileID: 1688716584} + smartContract: {fileID: 1498274731} + abi: {fileID: 4900000, guid: 6f4b5640a97ea4c4d9c6cdc36d8a104e, type: 3} + functionName: {fileID: 153272555} + param1: {fileID: 39543577} + param2: {fileID: 358495519} +--- !u!1 &347440938 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 347440939} + - component: {fileID: 347440942} + - component: {fileID: 347440941} + - component: {fileID: 347440940} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &347440939 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 347440938} + 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_Children: + - {fileID: 1077704491} + m_Father: {fileID: 220549523} + m_RootOrder: 2 + 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: 165, y: 0} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &347440940 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 347440938} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 347440941} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 306344499} + m_MethodName: SendEthereum + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &347440941 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 347440938} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + 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 &347440942 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 347440938} + m_CullTransparentMesh: 0 +--- !u!1 &358495517 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 358495518} + - component: {fileID: 358495521} + - component: {fileID: 358495520} + - component: {fileID: 358495519} + m_Layer: 5 + m_Name: Param 2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &358495518 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 358495517} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.0000795, y: 1.0000795, z: 1.0000795} + m_Children: + - {fileID: 1808238803} + - {fileID: 12488240} + m_Father: {fileID: 1483615157} + m_RootOrder: 1 + 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: 6.699997, y: -39.1} + m_SizeDelta: {x: 140, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &358495519 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 358495517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 358495520} + m_TextComponent: {fileID: 12488241} + m_Placeholder: {fileID: 1808238804} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &358495520 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 358495517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 2 +--- !u!222 &358495521 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 358495517} + m_CullTransparentMesh: 0 +--- !u!1001 &479504514 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 7977754496362167396, guid: 234ee74f5f05b9541850ec55278bb3f5, + type: 3} + propertyPath: enableKeyboardTouchControls + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7977754496362167397, guid: 234ee74f5f05b9541850ec55278bb3f5, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 7977754496362167397, guid: 234ee74f5f05b9541850ec55278bb3f5, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7977754496362167397, guid: 234ee74f5f05b9541850ec55278bb3f5, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7977754496362167397, guid: 234ee74f5f05b9541850ec55278bb3f5, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7977754496362167397, guid: 234ee74f5f05b9541850ec55278bb3f5, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7977754496362167397, guid: 234ee74f5f05b9541850ec55278bb3f5, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7977754496362167397, guid: 234ee74f5f05b9541850ec55278bb3f5, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7977754496362167397, guid: 234ee74f5f05b9541850ec55278bb3f5, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7977754496362167397, guid: 234ee74f5f05b9541850ec55278bb3f5, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7977754496362167397, guid: 234ee74f5f05b9541850ec55278bb3f5, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7977754496362167397, guid: 234ee74f5f05b9541850ec55278bb3f5, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7977754496362167402, guid: 234ee74f5f05b9541850ec55278bb3f5, + type: 3} + propertyPath: m_Name + value: WebXR Streamer + objectReference: {fileID: 0} + - target: {fileID: 7977754496362167402, guid: 234ee74f5f05b9541850ec55278bb3f5, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 234ee74f5f05b9541850ec55278bb3f5, type: 3} +--- !u!20 &479504515 stripped +Camera: + m_CorrespondingSourceObject: {fileID: 7977754496754579055, guid: 234ee74f5f05b9541850ec55278bb3f5, + type: 3} + m_PrefabInstance: {fileID: 479504514} + m_PrefabAsset: {fileID: 0} +--- !u!1 &493170096 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 493170097} + - component: {fileID: 493170099} + - component: {fileID: 493170098} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &493170097 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 493170096} + 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_Children: [] + m_Father: {fileID: 564955023} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + 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 &493170098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 493170096} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Get Account +--- !u!222 &493170099 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 493170096} + m_CullTransparentMesh: 0 +--- !u!1 &564955022 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 564955023} + - component: {fileID: 564955026} + - component: {fileID: 564955025} + - component: {fileID: 564955024} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &564955023 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 564955022} + 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_Children: + - {fileID: 493170097} + m_Father: {fileID: 899118918} + m_RootOrder: 1 + 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: -139, y: 0} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &564955024 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 564955022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 564955025} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 306344499} + m_MethodName: OnButtonGetAccount + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &564955025 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 564955022} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + 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 &564955026 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 564955022} + m_CullTransparentMesh: 0 +--- !u!1 &711915227 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 711915228} + - component: {fileID: 711915230} + - component: {fileID: 711915229} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &711915228 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 711915227} + 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_Children: [] + m_Father: {fileID: 153272554} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 4.100006, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &711915229 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 711915227} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: name +--- !u!222 &711915230 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 711915227} + m_CullTransparentMesh: 0 +--- !u!1 &761690548 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 761690551} + - component: {fileID: 761690550} + - component: {fileID: 761690549} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &761690549 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 761690548} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3} + m_Name: + m_EditorClassIdentifier: + m_MoveRepeatDelay: 0.5 + m_MoveRepeatRate: 0.1 + m_ActionsAsset: {fileID: -944628639613478452, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_PointAction: {fileID: 1054132383583890850, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_MoveAction: {fileID: 3710738434707379630, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_SubmitAction: {fileID: 2064916234097673511, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_CancelAction: {fileID: -1967631576421560919, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_LeftClickAction: {fileID: 8056856818456041789, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_MiddleClickAction: {fileID: 3279352641294131588, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_RightClickAction: {fileID: 3837173908680883260, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_ScrollWheelAction: {fileID: 4502412055082496612, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_TrackedDevicePositionAction: {fileID: 4754684134866288074, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_TrackedDeviceOrientationAction: {fileID: 1025543830046995696, guid: ca9f5fa95ffab41fb9a615ab714db018, + type: 3} + m_DeselectOnBackgroundClick: 1 + m_PointerBehavior: 0 +--- !u!114 &761690550 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 761690548} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 908f87ade65be9a42928b4c7aba3c15a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &761690551 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 761690548} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &837952554 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 531791743451189655, guid: 3a148be6281267b458b7398dc4e4d6d8, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 531791743451189655, guid: 3a148be6281267b458b7398dc4e4d6d8, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 531791743451189655, guid: 3a148be6281267b458b7398dc4e4d6d8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 531791743451189655, guid: 3a148be6281267b458b7398dc4e4d6d8, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 531791743451189655, guid: 3a148be6281267b458b7398dc4e4d6d8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 531791743451189655, guid: 3a148be6281267b458b7398dc4e4d6d8, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 531791743451189655, guid: 3a148be6281267b458b7398dc4e4d6d8, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 531791743451189655, guid: 3a148be6281267b458b7398dc4e4d6d8, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 531791743451189655, guid: 3a148be6281267b458b7398dc4e4d6d8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 531791743451189655, guid: 3a148be6281267b458b7398dc4e4d6d8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 531791743451189655, guid: 3a148be6281267b458b7398dc4e4d6d8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4204389319646702458, guid: 3a148be6281267b458b7398dc4e4d6d8, + type: 3} + propertyPath: playerPrefabs.Array.data[0] + value: + objectReference: {fileID: 991879585} + - target: {fileID: 4501061913114960227, guid: 3a148be6281267b458b7398dc4e4d6d8, + type: 3} + propertyPath: m_Name + value: Render Streaming Service + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3a148be6281267b458b7398dc4e4d6d8, type: 3} +--- !u!1 &899118917 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 899118918} + m_Layer: 5 + m_Name: Get Account + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &899118918 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 899118917} + 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_Children: + - {fileID: 912566199} + - {fileID: 564955023} + m_Father: {fileID: 306344496} + m_RootOrder: 0 + 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: -12.100001, y: 136.6} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &912566198 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 912566199} + - component: {fileID: 912566201} + - component: {fileID: 912566200} + m_Layer: 5 + m_Name: Address + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &912566199 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 912566198} + 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_Children: [] + m_Father: {fileID: 899118918} + m_RootOrder: 0 + 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: 113.3, y: 0} + m_SizeDelta: {x: 320, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &912566200 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 912566198} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Metamask Address +--- !u!222 &912566201 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 912566198} + m_CullTransparentMesh: 0 +--- !u!1 &914475140 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 914475141} + - component: {fileID: 914475143} + - component: {fileID: 914475142} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &914475141 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 914475140} + 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_Children: [] + m_Father: {fileID: 1304017489} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + 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 &914475142 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 914475140} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Register ERC-20 +--- !u!222 &914475143 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 914475140} + m_CullTransparentMesh: 0 +--- !u!1 &959292346 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 959292347} + m_Layer: 5 + m_Name: Sign Message + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &959292347 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 959292346} + 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_Children: + - {fileID: 1915854602} + - {fileID: 1419605404} + m_Father: {fileID: 306344496} + m_RootOrder: 1 + 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: -12.100001, y: 96.6} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &991879585 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 1305806924054047947, guid: 234ee74f5f05b9541850ec55278bb3f5, + type: 3} + m_PrefabInstance: {fileID: 479504514} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1688459948} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1551e95624dfa794ba99d01835e01b23, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1077704490 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1077704491} + - component: {fileID: 1077704493} + - component: {fileID: 1077704492} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1077704491 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1077704490} + 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_Children: [] + m_Father: {fileID: 347440939} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + 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 &1077704492 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1077704490} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Send Ethereum +--- !u!222 &1077704493 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1077704490} + m_CullTransparentMesh: 0 +--- !u!1 &1195959829 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1195959830} + - component: {fileID: 1195959832} + - component: {fileID: 1195959831} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1195959830 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1195959829} + 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_Children: [] + m_Father: {fileID: 1985974235} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + 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 &1195959831 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1195959829} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Run Function +--- !u!222 &1195959832 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1195959829} + m_CullTransparentMesh: 0 +--- !u!1 &1216563343 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1216563344} + - component: {fileID: 1216563346} + - component: {fileID: 1216563345} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1216563344 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1216563343} + 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_Children: [] + m_Father: {fileID: 153272554} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1216563345 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1216563343} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Function Name +--- !u!222 &1216563346 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1216563343} + m_CullTransparentMesh: 0 +--- !u!1 &1227389872 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1227389873} + - component: {fileID: 1227389875} + - component: {fileID: 1227389874} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1227389873 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1227389872} + 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_Children: [] + m_Father: {fileID: 1688716583} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 4.0999985, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1227389874 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1227389872} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1227389875 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1227389872} + m_CullTransparentMesh: 0 +--- !u!1 &1304017488 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1304017489} + - component: {fileID: 1304017492} + - component: {fileID: 1304017491} + - component: {fileID: 1304017490} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1304017489 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1304017488} + 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_Children: + - {fileID: 914475141} + m_Father: {fileID: 58660119} + m_RootOrder: 1 + 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: 163.8, y: 0} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1304017490 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1304017488} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1304017491} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 306344499} + m_MethodName: RegisterERC20 + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1304017491 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1304017488} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + 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 &1304017492 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1304017488} + m_CullTransparentMesh: 0 +--- !u!1 &1378886788 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1378886789} + - component: {fileID: 1378886791} + - component: {fileID: 1378886790} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1378886789 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1378886788} + 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_Children: [] + m_Father: {fileID: 39543576} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 4.0999985, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1378886790 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1378886788} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1378886791 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1378886788} + m_CullTransparentMesh: 0 +--- !u!1 &1395271996 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1395271997} + - component: {fileID: 1395271999} + - component: {fileID: 1395271998} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1395271997 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1395271996} + 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_Children: [] + m_Father: {fileID: 1915854602} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 4.100006, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1395271998 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1395271996} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1395271999 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1395271996} + m_CullTransparentMesh: 0 +--- !u!1 &1419605403 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1419605404} + - component: {fileID: 1419605407} + - component: {fileID: 1419605406} + - component: {fileID: 1419605405} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1419605404 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1419605403} + 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_Children: + - {fileID: 218257948} + m_Father: {fileID: 959292347} + m_RootOrder: 1 + 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: 163.8, y: 0} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1419605405 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1419605403} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1419605406} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 306344499} + m_MethodName: OnButtonSignMessage + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1419605406 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1419605403} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + 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 &1419605407 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1419605403} + m_CullTransparentMesh: 0 +--- !u!1 &1451807908 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1451807909} + - component: {fileID: 1451807911} + - component: {fileID: 1451807910} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1451807909 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1451807908} + 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_Children: [] + m_Father: {fileID: 39543576} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1451807910 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1451807908} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Parameter 1 +--- !u!222 &1451807911 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1451807908} + m_CullTransparentMesh: 0 +--- !u!1 &1483615156 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1483615157} + m_Layer: 5 + m_Name: Transaction + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1483615157 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1483615156} + 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_Children: + - {fileID: 39543576} + - {fileID: 358495518} + - {fileID: 153272554} + - {fileID: 1985974235} + m_Father: {fileID: 306344496} + m_RootOrder: 4 + 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: -12.100001, y: -34.7} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1498274729 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1498274730} + - component: {fileID: 1498274733} + - component: {fileID: 1498274732} + - component: {fileID: 1498274731} + m_Layer: 5 + m_Name: Smart Contract Address + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1498274730 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1498274729} + 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_Children: + - {fileID: 148681499} + - {fileID: 1854980191} + m_Father: {fileID: 58660119} + m_RootOrder: 0 + 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: -74.3, y: 0} + m_SizeDelta: {x: 280, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1498274731 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1498274729} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1498274732} + m_TextComponent: {fileID: 1854980192} + m_Placeholder: {fileID: 148681500} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: 0xf32042448A98fbc88388EBE9E032B877f8968b5E + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &1498274732 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1498274729} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 2 +--- !u!222 &1498274733 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1498274729} + m_CullTransparentMesh: 0 +--- !u!1 &1688459948 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7977754496362167402, guid: 234ee74f5f05b9541850ec55278bb3f5, + type: 3} + m_PrefabInstance: {fileID: 479504514} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1688459949 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1688459948} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2c1848b92549fdb428041e055770b7f2, type: 3} + m_Name: + m_EditorClassIdentifier: + manager: {fileID: 1702035394} +--- !u!1 &1688716582 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1688716583} + - component: {fileID: 1688716586} + - component: {fileID: 1688716585} + - component: {fileID: 1688716584} + m_Layer: 5 + m_Name: Value + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1688716583 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1688716582} + 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_Children: + - {fileID: 1919767860} + - {fileID: 1227389873} + m_Father: {fileID: 220549523} + m_RootOrder: 1 + 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: 6.699997, y: 0} + m_SizeDelta: {x: 140, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1688716584 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1688716582} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1688716585} + m_TextComponent: {fileID: 1227389874} + m_Placeholder: {fileID: 1919767861} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &1688716585 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1688716582} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 2 +--- !u!222 &1688716586 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1688716582} + m_CullTransparentMesh: 0 +--- !u!114 &1702035394 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 7977754496362167396, guid: 234ee74f5f05b9541850ec55278bb3f5, + type: 3} + m_PrefabInstance: {fileID: 479504514} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1688459948} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 675f13c2357bff245b68bb1f4fdcf579, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1808238802 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1808238803} + - component: {fileID: 1808238805} + - component: {fileID: 1808238804} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1808238803 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1808238802} + 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_Children: [] + m_Father: {fileID: 358495518} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1808238804 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1808238802} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Parameter 2 +--- !u!222 &1808238805 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1808238802} + m_CullTransparentMesh: 0 +--- !u!1 &1854980190 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1854980191} + - component: {fileID: 1854980193} + - component: {fileID: 1854980192} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1854980191 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1854980190} + 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_Children: [] + m_Father: {fileID: 1498274730} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 4.100006, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1854980192 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1854980190} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0xf32042448A98fbc88388EBE9E032B877f896 +--- !u!222 &1854980193 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1854980190} + m_CullTransparentMesh: 0 +--- !u!1 &1915854601 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1915854602} + - component: {fileID: 1915854605} + - component: {fileID: 1915854604} + - component: {fileID: 1915854603} + m_Layer: 5 + m_Name: Message + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1915854602 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1915854601} + 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_Children: + - {fileID: 121759008} + - {fileID: 1395271997} + m_Father: {fileID: 959292347} + m_RootOrder: 0 + 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: -74.3, y: 0} + m_SizeDelta: {x: 280, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1915854603 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1915854601} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1915854604} + m_TextComponent: {fileID: 1395271998} + m_Placeholder: {fileID: 121759009} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &1915854604 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1915854601} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 2 +--- !u!222 &1915854605 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1915854601} + m_CullTransparentMesh: 0 +--- !u!1 &1919767859 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1919767860} + - component: {fileID: 1919767862} + - component: {fileID: 1919767861} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1919767860 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1919767859} + 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_Children: [] + m_Father: {fileID: 1688716583} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1919767861 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1919767859} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Ethereum +--- !u!222 &1919767862 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1919767859} + m_CullTransparentMesh: 0 +--- !u!1 &1946202081 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1946202082} + - component: {fileID: 1946202085} + - component: {fileID: 1946202084} + - component: {fileID: 1946202083} + m_Layer: 5 + m_Name: To Address + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1946202082 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1946202081} + 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_Children: + - {fileID: 202204086} + - {fileID: 2115802799} + m_Father: {fileID: 220549523} + m_RootOrder: 0 + 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: -147.7, y: 0} + m_SizeDelta: {x: 140, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1946202083 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1946202081} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1946202084} + m_TextComponent: {fileID: 2115802800} + m_Placeholder: {fileID: 202204087} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: 0x7336bb564f9007A1f0A06985255B0Ce0F44BDB3D + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_ShouldActivateOnSelect: 1 +--- !u!114 &1946202084 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1946202081} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 2 +--- !u!222 &1946202085 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1946202081} + m_CullTransparentMesh: 0 +--- !u!1 &1985974234 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1985974235} + - component: {fileID: 1985974238} + - component: {fileID: 1985974237} + - component: {fileID: 1985974236} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1985974235 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1985974234} + 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_Children: + - {fileID: 1195959830} + m_Father: {fileID: 1483615157} + m_RootOrder: 3 + 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: 163.8, y: -24.3} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1985974236 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1985974234} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1985974237} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 306344499} + m_MethodName: RunSmartContract + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1985974237 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1985974234} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + 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 &1985974238 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1985974234} + m_CullTransparentMesh: 0 +--- !u!1 &2032832748 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2032832752} + - component: {fileID: 2032832751} + - component: {fileID: 2032832750} + - component: {fileID: 2032832749} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2032832749 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2032832748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &2032832750 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2032832748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 200 +--- !u!223 &2032832751 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2032832748} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 1 + m_Camera: {fileID: 479504515} + m_PlaneDistance: 10 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &2032832752 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2032832748} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 306344496} + m_Father: {fileID: 0} + m_RootOrder: 2 + 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: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &2092925192 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2092925194} + - component: {fileID: 2092925193} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &2092925193 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2092925192} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &2092925194 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2092925192} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &2115802798 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2115802799} + - component: {fileID: 2115802801} + - component: {fileID: 2115802800} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2115802799 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2115802798} + 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_Children: [] + m_Father: {fileID: 1946202082} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 4.0999985, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2115802800 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2115802798} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0x7336bb564f9007A +--- !u!222 &2115802801 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2115802798} + m_CullTransparentMesh: 0 diff --git a/Samples~/Blockchain/Blockchain.unity.meta b/Samples~/Blockchain/Blockchain.unity.meta new file mode 100644 index 0000000..f205a5d --- /dev/null +++ b/Samples~/Blockchain/Blockchain.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 15505feb5a4045c4aaa1f341143765d6 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/Blockchain/Scripts/CryptoUI.cs b/Samples~/Blockchain/Scripts/CryptoUI.cs new file mode 100644 index 0000000..cf13b2a --- /dev/null +++ b/Samples~/Blockchain/Scripts/CryptoUI.cs @@ -0,0 +1,103 @@ +/** + * Copyright 2021 Vasanth Mohan. All rights and licenses reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ + +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace FusedVR.VRStreaming { + /// + /// Crypto UI is responsible for handling the UI button presses and then sending the + /// correct to the Clients to start a Crypto Blockchain Transaction + /// + public class CryptoUI : MonoBehaviour { + + #region Public Properties + public Text accountText; + + public InputField message; + + public InputField toAddress; + public InputField ethereum; + + public InputField smartContract; + public TextAsset abi; + + public InputField functionName; + public InputField param1; + public InputField param2; + #endregion + + #region Public Button Events + + /// + /// Get the Public Key Address from the Web Browser + /// + public void OnButtonGetAccount() { + BlockchainData.GetAccount(); + } + + /// + /// Sign raw test message using the private key from the client + /// + public void OnButtonSignMessage() { + BlockchainData.Signature(message.text); + } + + /// + /// Write an Ethereum transaction that sends ether (or equivalent main asset) between players + /// + public void SendEthereum() { + long geth = (long)(float.Parse(ethereum.text) * Mathf.Pow(10, 18)); + Debug.LogError(geth.ToString("x")); + BlockchainData.SendTransaction(toAddress.text, "0x" + geth.ToString("x")); + } + + /// + /// Register an ERC-20 token smart contract with the client based on the ABI + /// This will allow a fast way to run smart contract functions on the client + /// + public void RegisterERC20() { + BlockchainData.RegisterContract(smartContract.text, abi.text); + } + + /// + /// Run Smart Contract function with associated parameter on the client + /// This can be either a Read or Write Transaction + /// i.e. name / symbol / balanceOf + /// But also transfer(to address, value) + /// + public void RunSmartContract() { + List paras = new List(); + if (param1.text.Length > 0) paras.Add(param1.text); + if (param2.text.Length > 0) paras.Add(param2.text); + BlockchainData.RunTransaction(smartContract.text, functionName.text, paras.ToArray()); + } + #endregion + + private void Start() { + BlockchainData.CryptoEvent += Result; //listens for Crypto Events from Clients + } + + /// + /// Event Handler for listening for Crypto Events from Client + /// These events are triggered from the Button Press events above + /// + void Result(BlockchainData.DataEvents evt, string result) { + if (evt == BlockchainData.DataEvents.account) { + accountText.text = result; + } + + Debug.LogError("Event : " + evt.ToString()); + Debug.LogError("Result : " + result); + } + } +} + diff --git a/Samples~/Blockchain/Scripts/CryptoUI.cs.meta b/Samples~/Blockchain/Scripts/CryptoUI.cs.meta new file mode 100644 index 0000000..7fefeda --- /dev/null +++ b/Samples~/Blockchain/Scripts/CryptoUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c8f798071abab034887f47fb73683208 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/Blockchain/Scripts/CustomEventSystem.cs b/Samples~/Blockchain/Scripts/CustomEventSystem.cs new file mode 100644 index 0000000..3532859 --- /dev/null +++ b/Samples~/Blockchain/Scripts/CustomEventSystem.cs @@ -0,0 +1,48 @@ +/** + * Copyright 2021 Vasanth Mohan. All rights and licenses reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ + +using UnityEngine.EventSystems; +using UnityEngine.InputSystem; +using UnityEngine.InputSystem.LowLevel; +using UnityEngine.InputSystem.EnhancedTouch; + +namespace FusedVR.VRStreaming { + /// + /// This is needed as a result of this PR and documentation + /// https://github.com/Unity-Technologies/UnityRenderStreaming/pull/339 + /// https://github.com/Unity-Technologies/UnityRenderStreaming/blob/develop/com.unity.renderstreaming/Documentation~/browser_input.md + /// This Class Overrides some functionality in order to make it possible to run this Demo in the background + /// Additionally, based on documentation you will need to lock the Game Input to the Editor + /// This happens via Window > Analysis > Input Debugger > Options > Lock input to Game View + /// + public class CustomEventSystem : EventSystem { + protected override void Awake() { + base.Awake(); + EnhancedTouchSupport.Enable(); //supress touch input + unsafe { + InputSystem.onDeviceCommand += InputSystemOnDeviceCommand; + } + } + + private static unsafe long? InputSystemOnDeviceCommand(InputDevice device, InputDeviceCommand* command) { + if (command->type != QueryCanRunInBackground.Type) { + // return null is skip this evaluation + return null; + } + + ((QueryCanRunInBackground*)command)->canRunInBackground = true; + return InputDeviceCommand.GenericSuccess; + } + + protected override void OnApplicationFocus(bool hasFocus) { + //Do not change focus flag on eventsystem + } + } +} diff --git a/Samples~/Blockchain/Scripts/CustomEventSystem.cs.meta b/Samples~/Blockchain/Scripts/CustomEventSystem.cs.meta new file mode 100644 index 0000000..94f1afc --- /dev/null +++ b/Samples~/Blockchain/Scripts/CustomEventSystem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 908f87ade65be9a42928b4c7aba3c15a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/Blockchain/Scripts/RemoteInput.cs b/Samples~/Blockchain/Scripts/RemoteInput.cs new file mode 100644 index 0000000..3cd7aae --- /dev/null +++ b/Samples~/Blockchain/Scripts/RemoteInput.cs @@ -0,0 +1,78 @@ +/** + * Copyright 2021 Vasanth Mohan. All rights and licenses reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ + +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.InputSystem; +using UnityEngine.EventSystems; + +namespace FusedVR.VRStreaming { + /// + /// This class is to temporarily solve for a bug where Keyboard Input does not seem to be passed along via Input System + /// Filed this Issue : https://github.com/Unity-Technologies/UnityRenderStreaming/issues/542 + /// After Issue is fixed, there will be less reason for this to exist + /// (Although something to consider for the future is how to handle Copy / Paste) + /// + public class RemoteInput : MonoBehaviour { + public VRInputManager manager; + + private Keyboard keyboard; + + private InputField textField = null; + + // Start is called before the first frame update + void Start() { + manager.onDeviceChange += Manager_onDeviceChange; + } + + private void Update() { + textField = EventSystem.current.currentSelectedGameObject?.GetComponent(); + + if (textField != null && keyboard != null && keyboard.backspaceKey.wasPressedThisFrame) { + if (textField.isFocused && textField.caretPosition != 0) { + string text = textField.text; + textField.text = text.Substring(0, textField.caretPosition - 1) + + text.Substring(textField.caretPosition, text.Length - textField.caretPosition); + if (textField.caretPosition != textField.text.Length) { + textField.caretPosition--; + } + } + } + } + + private void Manager_onDeviceChange(InputDevice device, InputDeviceChange change) { + if (change == InputDeviceChange.Added) { + switch (device) { + case Keyboard keyboard: + this.keyboard = keyboard; + keyboard.onTextInput += Current_onTextInput; + break; + } + } else if (change == InputDeviceChange.Removed) { + switch (device) { + case Keyboard keyboard: + this.keyboard = null; + keyboard.onTextInput -= Current_onTextInput; + break; + } + } + } + + private void Current_onTextInput(char obj) { + if (textField.isFocused) { + textField.text += obj; + textField.caretPosition++; + } + + } + } +} + + diff --git a/Samples~/Blockchain/Scripts/RemoteInput.cs.meta b/Samples~/Blockchain/Scripts/RemoteInput.cs.meta new file mode 100644 index 0000000..7cab9c5 --- /dev/null +++ b/Samples~/Blockchain/Scripts/RemoteInput.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2c1848b92549fdb428041e055770b7f2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/Blockchain/erc20abi.txt b/Samples~/Blockchain/erc20abi.txt new file mode 100644 index 0000000..6a90cdd --- /dev/null +++ b/Samples~/Blockchain/erc20abi.txt @@ -0,0 +1,288 @@ +[ + { + "inputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/Samples~/Blockchain/erc20abi.txt.meta b/Samples~/Blockchain/erc20abi.txt.meta new file mode 100644 index 0000000..fa82c0c --- /dev/null +++ b/Samples~/Blockchain/erc20abi.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6f4b5640a97ea4c4d9c6cdc36d8a104e +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package.json b/package.json index 89ec88c..8cf82fd 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,12 @@ { "name": "com.fusedvr.vrstreaming", - "version": "0.5.1", + "version": "0.6.0", "displayName": "FusedVR Streaming", "description": "This VR Streaming Package contains a minimal SDK & prefabs to implement VR Streaming (CloudXR) using WebRTC and Unity Remote Rendering", "dependencies": { "com.unity.renderstreaming": "3.1.0-exp.1", - "com.unity.nuget.newtonsoft-json": "2.0.0" + "com.unity.nuget.newtonsoft-json": "2.0.0", + "com.unity.inputsystem": "1.0.2" }, "keywords": [ "vr", @@ -15,18 +16,23 @@ "samples" : [ { "displayName" : "HDRP VR Render Streaming", - "description" : "Example of HDRP Streaming to VR. This will auto-import the HDRP package into your Unity project", + "description" : "Example of HDRP Streaming to VR. Requires HDRP Unity Package", "path" : "Samples~/HDRPVR" }, { - "displayName" : "VRTK Integration Sample", - "description" : "Example of VRTK Integration with VR Render Streaming", + "displayName" : "VRTK Input Integration", + "description" : "Example of VRTK Integration with VR Render Streaming to highlight using input", "path" : "Samples~/VRTK-Sample" }, { "displayName" : "Asymmetrical Multplayer", - "description" : "Example Asymmetrical Multiplayer in Apartment", + "description" : "Example of Asymmetrical Multiplayer in Apartment sample scene. 2D players can WASD, while VR players can teleport", "path" : "Samples~/Asym-Apartment" + }, + { + "displayName" : "Blockchain Web3 Testing", + "description" : "Example on using the Blockchain Components of the Project to interact with Web3", + "path" : "Samples~/Blockchain" } ], "author": {