From 7b938a2393e3afb64adae972bf77707b47993112 Mon Sep 17 00:00:00 2001 From: MarinitaMarina <88245524+MarinitaMarina@users.noreply.github.com> Date: Wed, 24 Nov 2021 13:48:05 +0100 Subject: [PATCH 01/13] Translation into Russian Getting Started Tutorial (step 76-80) --- .../C/Close/Close-Stage/close-stage.json | 5 +++++ .../C/Condition/Condition/condition.json | 5 +++++ .../execution-algorithm.json | 5 +++++ .../Docs-Nodes/F/Formula/Formula/formula.json | 5 +++++ .../O/Open/Open-Stage/open-stage.json | 5 +++++ .../O/Order/Order-Rate/order-rate.json | 5 +++++ .../S/Situation/Situation/situation.json | 5 +++++ .../Trigger/Trigger-Stage/trigger-stage.json | 5 +++++ ...utorial-step-find-the-logic-challenge.json | 20 +++++++++++++++++++ ...077-tutorial-step-heres-how-it-works..json | 15 ++++++++++++++ ...s-078-tutorial-step-come-meet-someone.json | 15 ++++++++++++++ ...algos-079-tutorial-step-formulations..json | 20 +++++++++++++++++++ ...peralgos-080-tutorial-step-the-seller.json | 20 +++++++++++++++++++ 13 files changed, 130 insertions(+) diff --git a/Projects/Foundations/Schemas/Docs-Nodes/C/Close/Close-Stage/close-stage.json b/Projects/Foundations/Schemas/Docs-Nodes/C/Close/Close-Stage/close-stage.json index 8217dc84c..7cf97425a 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/C/Close/Close-Stage/close-stage.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/C/Close/Close-Stage/close-stage.json @@ -7,6 +7,11 @@ "language": "ES", "text": "El close stage se ocupa de las definiciones que componen la lógica para cerrar una posición, incluida la tasa y el tamaño objetivo, y la ejecución de la orden.", "updated": 1624460574874 + }, + { + "language": "RU", + "text": "Статия закрытия имеет дело с определениями, которые составляют логику закрытия позиции, включая целевую ставку и размер, а также исполнение ордера.", + "updated": 1637757567864 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/C/Condition/Condition/condition.json b/Projects/Foundations/Schemas/Docs-Nodes/C/Condition/Condition/condition.json index 66a1251d4..f413aedcf 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/C/Condition/Condition/condition.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/C/Condition/Condition/condition.json @@ -7,6 +7,11 @@ "language": "ES", "text": "Conditions son reglas dentro de una situación. Cuando todas las condiciones de una situación se validan como verdaderas, la situación también se valida y se activa el evento asociado.", "updated": 1624459710047 + }, + { + "language": "RU", + "text": "Условия - это правила внутри ситуации. Когда все условия в ситуации проверяются на истинность, ситуация также проверяется, и запускается соответствующее событие.\n", + "updated": 1637756827569 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/E/Execution/Execution-Algorithm/execution-algorithm.json b/Projects/Foundations/Schemas/Docs-Nodes/E/Execution/Execution-Algorithm/execution-algorithm.json index 44a09a819..957ea1d13 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/E/Execution/Execution-Algorithm/execution-algorithm.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/E/Execution/Execution-Algorithm/execution-algorithm.json @@ -7,6 +7,11 @@ "language": "ES", "text": "Un execution algorithmes es un conjunto de instrucciones que se utilizan para realizar y gestionar pedidos en el exchange.", "updated": 1624459612098 + }, + { + "language": "RU", + "text": "Алгоритм выполнения - это набор инструкций, используемых для размещения и управления ордерами на бирже.", + "updated": 1637756233547 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/F/Formula/Formula/formula.json b/Projects/Foundations/Schemas/Docs-Nodes/F/Formula/Formula/formula.json index c2b04e8f2..9434b8539 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/F/Formula/Formula/formula.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/F/Formula/Formula/formula.json @@ -7,6 +7,11 @@ "language": "ES", "text": "Una fórmula es una expresión matemática destinada a determinar un valor numérico que se aplicará dinámicamente a una determinada propiedad.", "updated": 1624460095928 + }, + { + "language": "RU", + "text": "Формула - это математическое выражение, предназначенное для определения числового значения, которое будет динамически применяться к определенному свойству.", + "updated": 1637757255574 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/O/Open/Open-Stage/open-stage.json b/Projects/Foundations/Schemas/Docs-Nodes/O/Open/Open-Stage/open-stage.json index 73cd5fa49..e0f4684ff 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/O/Open/Open-Stage/open-stage.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/O/Open/Open-Stage/open-stage.json @@ -7,6 +7,11 @@ "language": "ES", "text": "El open stage se ocupa de las definiciones que componen la lógica para ingresar a una posición, incluida la tasa y el tamaño objetivo, y la ejecución de la orden.", "updated": 1624459561011 + }, + { + "language": "RU", + "text": "На открытой стадии рассматриваются определения, которые составляют логику входа в позицию, включая целевую ставку и размер, а также выполнение ордеров.", + "updated": 1637756161148 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/O/Order/Order-Rate/order-rate.json b/Projects/Foundations/Schemas/Docs-Nodes/O/Order/Order-Rate/order-rate.json index e05f5268e..94e385a86 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/O/Order/Order-Rate/order-rate.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/O/Order/Order-Rate/order-rate.json @@ -7,6 +7,11 @@ "language": "ES", "text": "El nodo order rate define la tasa de órdenes límite.", "updated": 1624459989822 + }, + { + "language": "RU", + "text": "Узел скорости заказов определяет скорость лимитных ордеров.", + "updated": 1637757390733 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/S/Situation/Situation/situation.json b/Projects/Foundations/Schemas/Docs-Nodes/S/Situation/Situation/situation.json index 6de382402..0a6739cc9 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/S/Situation/Situation/situation.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/S/Situation/Situation/situation.json @@ -7,6 +7,11 @@ "language": "ES", "text": "Un situation se refiere a un estado específico del mercado en el que debe tener lugar un determinado evento, definido por una serie de condiciones.", "updated": 1624496155342 + }, + { + "language": "RU", + "text": "Ситуация относится к определенному состоянию, в котором должно произойти определенное событие, поределяемое любым количеством условий.", + "updated": 1637756401865 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Nodes/T/Trigger/Trigger-Stage/trigger-stage.json b/Projects/Foundations/Schemas/Docs-Nodes/T/Trigger/Trigger-Stage/trigger-stage.json index be0a7c253..d5c2a7e66 100644 --- a/Projects/Foundations/Schemas/Docs-Nodes/T/Trigger/Trigger-Stage/trigger-stage.json +++ b/Projects/Foundations/Schemas/Docs-Nodes/T/Trigger/Trigger-Stage/trigger-stage.json @@ -7,6 +7,11 @@ "language": "ES", "text": "El trigger stage se ocupa del seguimiento del mercado en busca de oportunidades de trading con la estrategia correspondiente.", "updated": 1624459676185 + }, + { + "language": "RU", + "text": "Стадия запуска занимается мониторингом рынка в поисках торговых возможностей с соответствующей стратегией.", + "updated": 1637756311221 } ] }, diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-076-tutorial-step-find-the-logic-challenge.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-076-tutorial-step-find-the-logic-challenge.json index b90529130..484c93c63 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-076-tutorial-step-find-the-logic-challenge.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-076-tutorial-step-find-the-logic-challenge.json @@ -30,6 +30,11 @@ "language": "TR", "text": "Artık göstergenin nasıl çalıştığını bildiğinize göre, satın alma siparişleri ile destek seviyeleri arasındaki ilişkiyi bulabilir misiniz?", "updated": 1636205670836 + }, + { + "language": "RU", + "text": "Теперь, когда Вы знаете, как работает индикатор, можете ли Вы найти взаимосвязь между ордерами на покупку и уровнями поддержки?", + "updated": 1637754997019 } ] }, @@ -59,6 +64,11 @@ "language": "TR", "text": "Destek seviyelerinin Limitli Alış Emri oranını nasıl belirlediğine dair ipuçlarını aramak ve test edilen süreyi keşfetmek için biraz zaman ayırın!", "updated": 1636206011307 + }, + { + "language": "RU", + "text": "Потратьте некоторое время на изучение проверенного периода времени в поисках подсказок о том, как уровни поддержки определяют скорость Limit Buy Order!", + "updated": 1637755087157 } ] }, @@ -87,6 +97,11 @@ "language": "TR", "text": "Fiyat yön değiştirdiğinde yeni seviyelerin nasıl oluştuğunu ve fiyat sıçradığında yerleşik bir seviyenin nasıl renk değiştirdiğini fark etmek eğlencelidir.", "updated": 1636206057671 + }, + { + "language": "RU", + "text": "Забавно наблюдать, как формируются новые уровни, когда цена меняет направление и как установленный уровень меняет цвет, когда цена отскакивает от него.", + "updated": 1637755157171 } ] }, @@ -115,6 +130,11 @@ "language": "TR", "text": "Ancak işin püf noktası, sıranın üzerindeki seviyeleri saymakta yatar!", "updated": 1636206075760 + }, + { + "language": "RU", + "text": "Однако хитрость заключается в подсчете уровней выше порядка!", + "updated": 1637755186829 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-077-tutorial-step-heres-how-it-works..json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-077-tutorial-step-heres-how-it-works..json index 8d3997fd3..fd93da5b3 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-077-tutorial-step-heres-how-it-works..json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-077-tutorial-step-heres-how-it-works..json @@ -30,6 +30,11 @@ "language": "TR", "text": "Trading Bot 'u, Limit Satın Alma Emri'ni ( Limit Buy Order ) dördüncü destek seviyesine yerleştirir! Bunun arkasındaki mantık nedir?", "updated": 1636206183071 + }, + { + "language": "RU", + "text": "Вы поняли? Trading Bot размещает Limit Buy Order на четвертом уровне поддержки! Какая логика стоит за этим? ", + "updated": 1637755292494 } ] }, @@ -59,6 +64,11 @@ "language": "TR", "text": "Bu biraz keyfi bir durumdur, ancak strateji, düşen bıçağı (fiyatın ani düşüşünü), tek bir dakika içinde en az üç destek seviyesini aşabilen ve dördüncü seviyeye ulaşabilen fiyat hareketi olarak tanımlar. İstatistiksel olarak, bu tür olaylar - bu zaman çerçevesinde - sürekli daha fazla sıçrama üretir. Emir defterindeki alış/satış farkını geçici olarak artıran büyük piyasa emirlerinden kaynaklanabilirler.", "updated": 1636206270568 + }, + { + "language": "RU", + "text": "Это происходит произвольно, но стратегия определяет падающий нож как ценовое действие, способное пробить, по крайней мере, три уровня поддержки, и добраться до четвертого в течение одной минуты. По статистике, подобные явления - в этот период времени - производят больше отскоков, чем продолжений. Они могут быть вызваны крупными рыночными ордерами, которые временно увеличивают спрос/предложение в книге заказов.", + "updated": 1637755586430 } ] }, @@ -87,6 +97,11 @@ "language": "TR", "text": "Satın alma siparişlerinin dördüncü destek seviyesinde verildiğini doğrulamak için bir dakikanızı ayırın!", "updated": 1636206291919 + }, + { + "language": "RU", + "text": "Потратьте минуту, чтобы убедиться, что заказы на покупку размещены на четвертом уровне поддержки!", + "updated": 1637755660080 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-078-tutorial-step-come-meet-someone.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-078-tutorial-step-come-meet-someone.json index d1bc69428..5354cea95 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-078-tutorial-step-come-meet-someone.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-078-tutorial-step-come-meet-someone.json @@ -30,6 +30,11 @@ "language": "TR", "text": "Sizi grafiklerden uzaklaştırdığım için özür dilerim ama sizi biriyle tanıştırmak istedim: satın alma siparişlerini veren kişi sağdaki adam!", "updated": 1636206465488 + }, + { + "language": "RU", + "text": "Извините, что оторвал Вас от графиков, но я хотел представить Вам кое-кого: парень справа - это тот, кто размещает заказы на покупку!", + "updated": 1637755743535 } ] }, @@ -59,6 +64,11 @@ "language": "TR", "text": "Lightning Strike Trading Sisteminin ( Trading System ), Open Stage tanımları içerisindeyiz. Bu aşamada, Tetik Aşamasında pozisyon alma kararı verildikten sonra Yürütme Algoritması ( Execution Algorithm ) devreye girer. Hala bir Durum ( Situation ) veya Koşulun ( Condition ) ne olduğunu bilmediğini biliyorum, ama yine de bir şeyler yapmanı istiyorum...", "updated": 1636207188259 + }, + { + "language": "RU", + "text": "Мы находимся внутри Trading System - Lightning Strike - в рамках определений Open Stage. На этом этапе Execution Algorithm вступает в силу после того, как решение занять позицию уже было приянто на Trigger Stage. Я знаю, что Вы еще не знаете, что такое Situation или Condition, но я все равно бы хотел, чтобы Вы что-нибудь сделали...", + "updated": 1637756027374 } ] }, @@ -87,6 +97,11 @@ "language": "TR", "text": "Yürütme algoritmasının altındaki düğümleri keşfetmek için birkaç dakikanızı ayırın, formülleri ve koşulları kontrol edin ve bunlardan neler yapabileceğinizi görün!", "updated": 1636207209256 + }, + { + "language": "RU", + "text": "Потратьте несколько минут на изучение узлов под алгоритмом выполнения, проверьте формулы и условия и посмотрите, что Вы можете из них сделать!", + "updated": 1637756059992 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-079-tutorial-step-formulations..json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-079-tutorial-step-formulations..json index cd579106f..bf549cb7c 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-079-tutorial-step-formulations..json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-079-tutorial-step-formulations..json @@ -30,6 +30,11 @@ "language": "TR", "text": "Bu adım her dakika verilen ve iptal edilen Limitli Alış Emrinin (Limit Buy Order ) tanımıdır.", "updated": 1636208410014 + }, + { + "language": "RU", + "text": "То, что Вы только что прошли - это определение Limit Buy Order, который размещается и отменяется каждую минуту, пока не будет заполнен. ", + "updated": 1637756921540 } ] }, @@ -60,6 +65,11 @@ "language": "TR", "text": "Bu, limit emrinin oranını belirleyen düğümdür. Dördüncü destek seviyesi oranında sipariş vermekle ilgili daha önce tartıştığımız şeyi hatırlıyor musunuz?", "updated": 1636207410235 + }, + { + "language": "RU", + "text": "Это узел, который определяет скорость лимитного ордера. Помните, что мы обсуждали ранее о размещении заказа по ставке четвертого уровня поддержки?", + "updated": 1637757006124 } ] }, @@ -88,6 +98,11 @@ "language": "TR", "text": "Sipariş Oranı ( Order Rate ) düğümünnün altındaki formüle ( Formula ) düğümüne gidin ve menüden Düzenle'ye (Edit) tıklayın.", "updated": 1636207530541 + }, + { + "language": "RU", + "text": "Перейдите к Formula, прикрепленной к узлу Order Rate и нажмите Edit в меню.", + "updated": 1637757201102 } ] }, @@ -116,6 +131,11 @@ "language": "TR", "text": "İşte... böyle yapılır! Gördüğünüz gibi, sözdizimi neredeyse kendi kendini açıklayıcıdır! Zaman çerçevesini (chart.at01min), göstergeyi ( Suport ) ve ilgili gösterge özelliğini ( support4rate ) tanımlamayı içerir.", "updated": 1636207760464 + }, + { + "language": "RU", + "text": "Итак... как это происходит? Как Вы можете видеть, синтаксис практически не требует пояснений. Это включает в себя определение временных рамок, индикатор и соответствующее свойство индикатора.", + "updated": 1637757425980 } ] } diff --git a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-080-tutorial-step-the-seller.json b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-080-tutorial-step-the-seller.json index 8dbadf226..aada34d65 100644 --- a/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-080-tutorial-step-the-seller.json +++ b/Projects/Foundations/Schemas/Docs-Tutorials/W/Welcome/Welcome-to-Superalgos/welcome-to-superalgos-080-tutorial-step-the-seller.json @@ -30,6 +30,11 @@ "language": "TR", "text": "Artık Kapanış Aşamasındayız ( Close Stage ). Size yürütme algoritmaları hakkında başka bir örnekle daha fazla bilgi vermenin ilginç olacağını düşündüm.", "updated": 1636208526405 + }, + { + "language": "RU", + "text": "Сейчас мы находимся на Close Stage. Я думал, что было бы интересно рассказать Вам больше об алгоритмах выполнения на другом примере.", + "updated": 1637757485185 } ] }, @@ -59,6 +64,11 @@ "language": "TR", "text": "Bir Yürütme Algoritması ( Execution Algorithm ), her türden birden fazla siparişi işleyebilir. Bu durumda çoklu limit satış emirleri tanımlanır.", "updated": 1636208571976 + }, + { + "language": "RU", + "text": "Execution Algorithm может обрабатывать множество ордеров всех типов. В этом случае определяется множество лимитных ордеров на продажу.", + "updated": 1637757731866 } ] }, @@ -87,6 +97,11 @@ "language": "TR", "text": "Algoritmanın menüsünde Yapılandır'ı (Configure) seçin ve bu tanımın sonuçlarını düşünün!", "updated": 1636208699352 + }, + { + "language": "RU", + "text": "Выберите Configure в меню алгоритма и подумайте над значением этого определения!", + "updated": 1637757772068 } ] }, @@ -115,6 +130,11 @@ "language": "TR", "text": "Hem nasıl pozisyon alınacağını tanımladığınız açık aşama hem de nasıl çıkılacağını tanımladığınız kapalı aşama, her biri belirli bir miktarda sermayeyi işleyen birden fazla yürütme algoritması içerebilir.", "updated": 1636208733018 + }, + { + "language": "RU", + "text": "Как на этапе открытия, где Вы определяете как открыть позицию, так и на этапе закрытия - как выйти, может быть множество алгоритмов выполнения, каждый из которых обрабатывает определенное количество капитала.", + "updated": 1637757971911 } ] } From 866911abfe66c2f5c1861686b7ed3e6538b899ce Mon Sep 17 00:00:00 2001 From: NAmorim Date: Wed, 24 Nov 2021 16:31:52 +0000 Subject: [PATCH 02/13] Contribution - Automatic fork creation - Setup of basic liquidity profile --- Platform/Client/githubServer.js | 46 +++++++++++++++ Platform/Client/httpInterface.js | 11 ++++ .../Function-Libraries/ProfileConstructor.js | 57 ++++++++++++++++++- 3 files changed, 113 insertions(+), 1 deletion(-) diff --git a/Platform/Client/githubServer.js b/Platform/Client/githubServer.js index eff3ebc8d..f245239f1 100644 --- a/Platform/Client/githubServer.js +++ b/Platform/Client/githubServer.js @@ -4,6 +4,7 @@ exports.newGithubServer = function newGithubServer() { getGithubStars: getGithubStars, getGithubWatchers: getGithubWatchers, getGithubForks: getGithubForks, + createGithubFork: createGithubFork, mergePullRequests: mergePullRequests, initialize: initialize, finalize: finalize, @@ -162,6 +163,51 @@ exports.newGithubServer = function newGithubServer() { } } + async function createGithubFork(repository, username, token) { + try { + username = unescape(username) + token = unescape(token) + + let error + + await doGithub() + + async function doGithub() { + try { + //const repo = 'Superalgos' + //const owner = username + const { Octokit } = SA.nodeModules.octokit + const octokit = new Octokit({ + auth: token, + userAgent: 'Superalgos ' + SA.version + }) + + await octokit.repos.createFork({ + owner: 'Superalgos', + repo: "Superalgos" + }) + } catch (err) { + if (err === undefined) { return } + console.log('[ERROR] Github Server -> createGithubFork -> doGithub -> err.stack = ' + err.stack) + } + } + } catch (err) { + console.log('[ERROR] Github Server -> createGithubFork -> Method call produced an error.') + console.log('[ERROR] Github Server -> createGithubFork -> err.stack = ' + err.stack) + console.log('[ERROR] Github Server -> createGithubFork -> repository = ' + repository) + console.log('[ERROR] Github Server -> createGithubFork -> username = ' + username) + console.log('[ERROR] Github Server -> createGithubFork -> token starts with = ' + token.substring(0, 10) + '...') + console.log('[ERROR] Github Server -> createGithubFork -> token ends with = ' + '...' + token.substring(token.length - 10)) + + let error = { + result: 'Fail Because', + message: err.message, + stack: err.stack + } + return error + } + } + async function mergeGithubPullRequests(commitMessage, username, token) { try { commitMessage = unescape(commitMessage) diff --git a/Platform/Client/httpInterface.js b/Platform/Client/httpInterface.js index d58c87151..e54dddf6f 100644 --- a/Platform/Client/httpInterface.js +++ b/Platform/Client/httpInterface.js @@ -1286,6 +1286,17 @@ exports.newHttpInterface = function newHttpInterface() { SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify(serverResponse), httpResponse) return } + case 'createGithubFork': { + + let serverResponse = await PL.servers.GITHUB_SERVER.createGithubFork( + params.repository, + params.username, + params.token + ) + + SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify(serverResponse), httpResponse) + return + } case 'mergePullRequests': { let serverResponse = await PL.servers.GITHUB_SERVER.mergePullRequests( diff --git a/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js b/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js index 285c171e5..6f742ceda 100644 --- a/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js +++ b/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js @@ -125,6 +125,60 @@ function newGovernanceFunctionLibraryProfileConstructor() { UI.projects.foundations.spaces.designSpace.workspace.workspaceNode.rootNodes ) /* + Set up a basic profile to start receiving benefits + */ + let finServices = UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.addUIObject(userProfile.tokenPowerSwitch, "Financial Programs", userProfile) + finServices.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 + finServices.payload.uiObject.menu.internalClick("Add Financial Program") + + let stakeProg = UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.addUIObject(finServices, "Staking Program", userProfile) + stakeProg.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 + stakeProg.payload.uiObject.menu.internalClick("Add Tokens Awarded") + + let liquidProgs = UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.addUIObject(userProfile.tokenPowerSwitch, "Liquidity Programs", userProfile) + liquidProgs.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 + liquidProgs.payload.uiObject.menu.internalClick('Add Liquidity Program') + + let liquidProg = UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.addUIObject(liquidProgs, "Liquidity Program", userProfile) + liquidProgs.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 + liquidProgs.payload.uiObject.menu.internalClick('Add Tokens Awarded') + + /* + Check if the user already has the SA fork. If not, do it for them. + */ + + const hasFork = UI.projects.governance.spaces.userProfileSpace.githubForks.get(githubUsername) + if(hasFork === undefined) { + // New user! Probably doesn't have a fork, so let's create it. + let params = { + method: 'createGithubFork', + username: config.username, + token: config.token, + } + + let url = 'GOV' // We will access the default Client GOV endpoint. + + httpRequest(JSON.stringify(params), url, onResponse) + + function onResponse(err, data) { + + data = JSON.parse(data) + if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result && data.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { + UI.projects.education.spaces.docsSpace.navigateTo('Governance', 'Topic', 'Gov Message - Automated User Profile Creation Done') + } else { + if (data.docs === undefined) {return} + UI.projects.education.spaces.docsSpace.navigateTo( + data.docs.project, + data.docs.category, + data.docs.type, + data.docs.anchor, + undefined, + data.docs.placeholder + ) + } + } + } + /* We store at the User Profile the Signed githubUsername */ UI.projects.visualScripting.utilities.nodeConfig.saveConfigProperty(userProfile.payload, 'signature', response.signature) @@ -138,11 +192,12 @@ function newGovernanceFunctionLibraryProfileConstructor() { We also Install the User Profile as a Plugin, which in turns saves it. */ userProfile.payload.uiObject.menu.internalClick('Install as Plugin') - userProfile.payload.uiObject.menu.internalClick('Install as Plugin') + userProfile.payload.uiObject.menu.internalClick('Install as Plugin') /* Show nice message. */ if (mnemonic === undefined || mnemonic === "") { + // TODO link to some wallet and setup the token node.payload.uiObject.setInfoMessage( "Profile Private Key has been successfully created. User Profile installed as a plugin and saved. Use the Private Key at a crypto wallet and delete this node once done.", UI.projects.governance.globals.designer.SET_INFO_COUNTER_FACTOR From 63e0a2342ead4f90f2fc9ca99dbb5e3eeba3ad52 Mon Sep 17 00:00:00 2001 From: NAmorim Date: Wed, 24 Nov 2021 16:33:29 +0000 Subject: [PATCH 03/13] Fix typo --- Projects/Governance/UI/Function-Libraries/LiquidityProgram.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Projects/Governance/UI/Function-Libraries/LiquidityProgram.js b/Projects/Governance/UI/Function-Libraries/LiquidityProgram.js index 1b6eae61a..1b676b970 100644 --- a/Projects/Governance/UI/Function-Libraries/LiquidityProgram.js +++ b/Projects/Governance/UI/Function-Libraries/LiquidityProgram.js @@ -108,7 +108,7 @@ function newGovernanceFunctionLibraryLiquidityProgram() { ) { node.payload.liquidityProgram.isActive = false userProfile.payload.uiObject.setErrorMessage( - "Waiting for liquidity balance. It takes 1 minute to load the liquidity provided by each profile, bacause you are using a free API provided by BSC Scan.", + "Waiting for liquidity balance. It takes 1 minute to load the liquidity provided by each profile, because you are using a free API provided by BSC Scan.", UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR ) return From f99f4d6f878e7e2e9dda7b084ccd711c42318815 Mon Sep 17 00:00:00 2001 From: NAmorim Date: Wed, 24 Nov 2021 21:36:59 +0000 Subject: [PATCH 04/13] Correction bad copy & paste --- .../Function-Libraries/ProfileConstructor.js | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js b/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js index 6f742ceda..54766d23b 100644 --- a/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js +++ b/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js @@ -150,6 +150,26 @@ function newGovernanceFunctionLibraryProfileConstructor() { const hasFork = UI.projects.governance.spaces.userProfileSpace.githubForks.get(githubUsername) if(hasFork === undefined) { // New user! Probably doesn't have a fork, so let's create it. + let apisNode = UI.projects.foundations.spaces.designSpace.workspace.getHierarchyHeadByNodeType('APIs') + if (apisNode === undefined) { + UI.projects.education.spaces.docsSpace.navigateTo('Governance', 'Topic', 'Gov Error - Github Credentials Missing', 'Anchor Github Credentials Missing') + return + } + if (apisNode.githubAPI === undefined) { + UI.projects.education.spaces.docsSpace.navigateTo('Governance', 'Topic', 'Gov Error - Github Credentials Missing', 'Anchor Github Credentials Missing') + return + } + + let config = JSON.parse(apisNode.githubAPI.config) + if (config.username === undefined || config.username === "") { + UI.projects.education.spaces.docsSpace.navigateTo('Governance', 'Topic', 'Gov Error - Github Credentials Missing', 'Anchor Github Credentials Missing') + return + } + if (config.token === undefined || config.token === "") { + UI.projects.education.spaces.docsSpace.navigateTo('Governance', 'Topic', 'Gov Error - Github Credentials Missing', 'Anchor Github Credentials Missing') + return + } + let params = { method: 'createGithubFork', username: config.username, @@ -164,7 +184,7 @@ function newGovernanceFunctionLibraryProfileConstructor() { data = JSON.parse(data) if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result && data.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { - UI.projects.education.spaces.docsSpace.navigateTo('Governance', 'Topic', 'Gov Message - Automated User Profile Creation Done') + UI.projects.education.spaces.docsSpace.navigateTo('Governance', 'Topic', 'Gov Message - Automated User Profile Contribute Done') } else { if (data.docs === undefined) {return} UI.projects.education.spaces.docsSpace.navigateTo( @@ -192,7 +212,11 @@ function newGovernanceFunctionLibraryProfileConstructor() { We also Install the User Profile as a Plugin, which in turns saves it. */ userProfile.payload.uiObject.menu.internalClick('Install as Plugin') - userProfile.payload.uiObject.menu.internalClick('Install as Plugin') + userProfile.payload.uiObject.menu.internalClick('Install as Plugin') + /* + TODO: Let's create a nice basic profile to start with liquidity and community + */ + /* Show nice message. */ From 898e582bcbdd2965446806a86e3f97c3ef25103b Mon Sep 17 00:00:00 2001 From: NAmorim Date: Wed, 24 Nov 2021 22:04:28 +0000 Subject: [PATCH 05/13] Deepscan fixes --- Platform/Client/githubServer.js | 4 +--- Platform/Client/httpInterface.js | 10 +++++----- .../UI/Function-Libraries/ProfileConstructor.js | 4 ++-- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/Platform/Client/githubServer.js b/Platform/Client/githubServer.js index f245239f1..b72259bb2 100644 --- a/Platform/Client/githubServer.js +++ b/Platform/Client/githubServer.js @@ -168,8 +168,6 @@ exports.newGithubServer = function newGithubServer() { username = unescape(username) token = unescape(token) - let error - await doGithub() async function doGithub() { @@ -184,7 +182,7 @@ exports.newGithubServer = function newGithubServer() { await octokit.repos.createFork({ owner: 'Superalgos', - repo: "Superalgos" + repo: 'Superalgos' }) } catch (err) { if (err === undefined) { return } diff --git a/Platform/Client/httpInterface.js b/Platform/Client/httpInterface.js index e54dddf6f..62a398f49 100644 --- a/Platform/Client/httpInterface.js +++ b/Platform/Client/httpInterface.js @@ -1135,7 +1135,7 @@ exports.newHttpInterface = function newHttpInterface() { try { console.log('fixSchemas...' + allAppSchemas.length) let projects = SA.projects.foundations.utilities.filesAndDirectories.getDirectories(global.env.PATH_TO_PROJECTS) - const fs = SA.nodeModules.fs + //const fs = SA.nodeModules.fs let needFixing = 0 for (let i = 0; i < allAppSchemas.length; i++) { let schemaDocument = allAppSchemas[i] @@ -1183,13 +1183,13 @@ exports.newHttpInterface = function newHttpInterface() { } } - if (wasUpdated === true) { - let fileContent = JSON.stringify(schemaDocument, undefined, 4) - let filePath = allAppSchemasFilePaths[i] + //if (wasUpdated === true) { + //let fileContent = JSON.stringify(schemaDocument, undefined, 4) + //let filePath = allAppSchemasFilePaths[i] //console.log('Saving File at ' + filePath) //console.log(fileContent) //fs.writeFileSync(filePath, fileContent) - } + //} } } catch (err) { console.log(err.stack) diff --git a/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js b/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js index 54766d23b..f0bf9569b 100644 --- a/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js +++ b/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js @@ -140,8 +140,8 @@ function newGovernanceFunctionLibraryProfileConstructor() { liquidProgs.payload.uiObject.menu.internalClick('Add Liquidity Program') let liquidProg = UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.addUIObject(liquidProgs, "Liquidity Program", userProfile) - liquidProgs.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 - liquidProgs.payload.uiObject.menu.internalClick('Add Tokens Awarded') + liquidProg.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 + liquidProg.payload.uiObject.menu.internalClick('Add Tokens Awarded') /* Check if the user already has the SA fork. If not, do it for them. From 8a31dc797ba901f4c3f761ac725f4cada8978427 Mon Sep 17 00:00:00 2001 From: DJ05GaZ <88884874+DJ05GaZ@users.noreply.github.com> Date: Wed, 24 Nov 2021 23:04:11 +0000 Subject: [PATCH 06/13] Add files via upload --- .../Plugins/User-Profiles/DJ05GaZ.json | 418 +++++++++--------- 1 file changed, 209 insertions(+), 209 deletions(-) diff --git a/Projects/Governance/Plugins/User-Profiles/DJ05GaZ.json b/Projects/Governance/Plugins/User-Profiles/DJ05GaZ.json index b8885e719..1986434d6 100644 --- a/Projects/Governance/Plugins/User-Profiles/DJ05GaZ.json +++ b/Projects/Governance/Plugins/User-Profiles/DJ05GaZ.json @@ -23,15 +23,15 @@ "type": "Tokens Awarded", "name": "New Tokens Awarded", "project": "Governance", - "id": "4639a558-8407-4c09-a2ca-44df964a1e67", + "id": "a124db5d-ac28-45c6-b62e-86c9055eed7e", "savedPayload": { "position": { - "x": 13706.000000000002, - "y": 5545.635444127544 + "x": 13780.000000000002, + "y": 5436.635444127544 }, "targetPosition": { - "x": 13856.000000000002, - "y": 5805.443065262876 + "x": 13930.000000000002, + "y": 5696.443065262876 }, "floatingObject": { "isPinned": false, @@ -46,15 +46,15 @@ } } }, - "id": "0ddf21e9-c4f4-426f-96bc-8f5a63232dd8", + "id": "b6351794-37af-4d80-954e-9f351cc6de91", "savedPayload": { "position": { - "x": 13856.000000000002, - "y": 5805.443065262876 + "x": 13930.000000000002, + "y": 5696.443065262876 }, "targetPosition": { - "x": 14006.000000000002, - "y": 6065.250686398208 + "x": 14080.000000000002, + "y": 5956.250686398208 }, "floatingObject": { "isPinned": false, @@ -78,15 +78,15 @@ "type": "Tokens Awarded", "name": "New Tokens Awarded", "project": "Governance", - "id": "9be178f0-d3bb-464d-a565-39e2bfbb35ab", + "id": "8579b892-31b0-4e42-82a4-02093ebc436d", "savedPayload": { "position": { - "x": 14606.000000000002, - "y": 6065.250686398208 + "x": 14680.000000000002, + "y": 5956.250686398208 }, "targetPosition": { - "x": 14306.000000000002, - "y": 6065.250686398208 + "x": 14380.000000000002, + "y": 5956.250686398208 }, "floatingObject": { "isPinned": false, @@ -101,15 +101,15 @@ } } }, - "id": "0cc5fc16-dfa8-4942-8f1b-c5fffc75e990", + "id": "14c75e04-d34c-42e9-9a5d-64363c612bc6", "savedPayload": { "position": { - "x": 14306.000000000002, - "y": 6065.250686398208 + "x": 14380.000000000002, + "y": 5956.250686398208 }, "targetPosition": { - "x": 14006.000000000002, - "y": 6065.250686398208 + "x": 14080.000000000002, + "y": 5956.250686398208 }, "floatingObject": { "isPinned": false, @@ -124,15 +124,15 @@ } } }, - "id": "b4d397c3-c156-466a-888a-69a0d5668816", + "id": "18387cb4-e09a-450b-a4d2-5ee119352611", "savedPayload": { "position": { - "x": 14006.000000000002, - "y": 6065.250686398208 + "x": 14080.000000000002, + "y": 5956.250686398208 }, "targetPosition": { - "x": 13856.000000000002, - "y": 6325.05830753354 + "x": 13930.000000000002, + "y": 6216.05830753354 }, "floatingObject": { "isPinned": false, @@ -163,18 +163,18 @@ "name": "Julian-Molina", "config": "{}", "project": "Governance", - "id": "77389e53-60e7-428c-bcba-744f2344354d", + "id": "a7071196-9798-4241-83fc-b638819ecb2e", "savedPayload": { "position": { - "x": 14306.000000000002, - "y": 6284.865928668872 + "x": 14189.807621135333, + "y": 6066.05830753354 }, "targetPosition": { - "x": 14265.807621135333, - "y": 6434.865928668872 + "x": 14339.807621135333, + "y": 6325.865928668872 }, "floatingObject": { - "isPinned": true, + "isPinned": false, "isFrozen": false, "isCollapsed": false, "angleToParent": 1, @@ -202,15 +202,15 @@ "type": "Tokens Awarded", "name": "New Tokens Awarded", "project": "Governance", - "id": "cd37a48f-94a3-47c0-8c20-687bc7c6328c", + "id": "e3b52a34-4336-46a6-934c-3afade70bc96", "savedPayload": { "position": { - "x": 14525.615242270664, - "y": 6284.865928668872 + "x": 14599.615242270664, + "y": 6175.865928668872 }, "targetPosition": { - "x": 14265.807621135333, - "y": 6434.865928668872 + "x": 14339.807621135333, + "y": 6325.865928668872 }, "floatingObject": { "isPinned": false, @@ -229,15 +229,15 @@ "type": "Tokens Bonus", "name": "New Tokens Bonus", "project": "Governance", - "id": "19b6cf13-4af2-4da0-b419-49a8da82cb6d", + "id": "58c6a5bf-96b2-4c96-96b0-6231315d76c5", "savedPayload": { "position": { - "x": 14415.807621135333, - "y": 6694.6735498042035 + "x": 14489.807621135333, + "y": 6585.6735498042035 }, "targetPosition": { - "x": 14265.807621135333, - "y": 6434.865928668872 + "x": 14339.807621135333, + "y": 6325.865928668872 }, "floatingObject": { "isPinned": false, @@ -252,15 +252,15 @@ } } }, - "id": "17d3b656-ebdc-4a60-9174-8d3f112ae8c3", + "id": "176105de-df31-4984-9e2b-9e5c45ea56cf", "savedPayload": { "position": { - "x": 14265.807621135333, - "y": 6434.865928668872 + "x": 14339.807621135333, + "y": 6325.865928668872 }, "targetPosition": { - "x": 14006.000000000002, - "y": 6584.865928668872 + "x": 14080.000000000002, + "y": 6475.865928668872 }, "floatingObject": { "isPinned": false, @@ -283,141 +283,18 @@ "userSupporters": [ { "type": "User Supporter", - "name": "EvaMaria70", - "config": "{}", - "project": "Governance", - "id": "30080add-ff82-4575-a166-4704248d9f01", - "savedPayload": { - "position": { - "x": 14415.807621135333, - "y": 6694.6735498042035 - }, - "targetPosition": { - "x": 14156.000000000002, - "y": 6844.6735498042035 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - }, - "referenceParent": { - "type": "User Profile", - "name": "EvaMaria70", - "id": "75a78d74-93f3-44c5-a96a-5b2b9f730afe" - }, - "referenceParentCombinedNodePath": [ - [ - "EvaMaria70", - "User Profile" - ] - ] - } - } - ], - "tokensAwarded": { - "type": "Tokens Awarded", - "name": "New Tokens Awarded", - "project": "Governance", - "id": "a9eb74e7-7c82-4ff2-a955-92b749a26b40", - "savedPayload": { - "position": { - "x": 14306.000000000002, - "y": 7104.481170939535 - }, - "targetPosition": { - "x": 14156.000000000002, - "y": 6844.6735498042035 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "tokensBonus": { - "type": "Tokens Bonus", - "name": "New Tokens Bonus", - "project": "Governance", - "id": "97ef2893-1dc1-453d-887f-05bcee9b2093", - "savedPayload": { - "position": { - "x": 13896.19237886467, - "y": 6994.6735498042035 - }, - "targetPosition": { - "x": 14156.000000000002, - "y": 6844.6735498042035 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "id": "dfd984c3-3303-4e49-8682-3012635e519a", - "savedPayload": { - "position": { - "x": 14156.000000000002, - "y": 6844.6735498042035 - }, - "targetPosition": { - "x": 14006.000000000002, - "y": 6584.865928668872 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, - "mentorshipProgram": { - "type": "Mentorship Program", - "name": "New Mentorship Program", - "config": "{}", - "project": "Governance", - "userMentors": [ - { - "type": "User Mentor", "name": "Luis-Fernando-Molina", "config": "{}", "project": "Governance", - "id": "069fa527-f2fc-48b9-a1bf-4730d6693d7d", + "id": "56e79566-dcb2-4eb2-be02-597cf4d2f817", "savedPayload": { "position": { - "x": 13896.19237886467, - "y": 6994.6735498042035 + "x": 14368.807621135333, + "y": 6791.6735498042035 }, "targetPosition": { - "x": 13746.19237886467, - "y": 6734.865928668872 + "x": 14109.000000000002, + "y": 6941.6735498042035 }, "floatingObject": { "isPinned": false, @@ -448,15 +325,15 @@ "type": "Tokens Awarded", "name": "New Tokens Awarded", "project": "Governance", - "id": "a1769f48-d147-4f74-8eb9-3ec8919d1b0b", + "id": "d54b8578-3fc5-465c-ad42-d9305b7b4d26", "savedPayload": { "position": { - "x": 13486.38475772934, - "y": 6884.865928668872 + "x": 14259.000000000002, + "y": 7201.481170939535 }, "targetPosition": { - "x": 13746.19237886467, - "y": 6734.865928668872 + "x": 14109.000000000002, + "y": 6941.6735498042035 }, "floatingObject": { "isPinned": false, @@ -475,15 +352,15 @@ "type": "Tokens Bonus", "name": "New Tokens Bonus", "project": "Governance", - "id": "3e5c2e7c-d485-419c-82cd-79d2a021a8a6", + "id": "d7a6dc77-8fad-45ad-9036-d8b197ef14bb", "savedPayload": { "position": { - "x": 13596.19237886467, - "y": 6475.05830753354 + "x": 13849.19237886467, + "y": 7091.6735498042035 }, "targetPosition": { - "x": 13746.19237886467, - "y": 6734.865928668872 + "x": 14109.000000000002, + "y": 6941.6735498042035 }, "floatingObject": { "isPinned": false, @@ -498,15 +375,138 @@ } } }, - "id": "9e9486db-25f4-4124-9ac6-2ce4dc0ca71d", + "id": "a5fa93a8-2369-424d-ab90-f3786e615535", "savedPayload": { "position": { - "x": 13746.19237886467, - "y": 6734.865928668872 + "x": 14109.000000000002, + "y": 6941.6735498042035 }, "targetPosition": { - "x": 14006.000000000002, - "y": 6584.865928668872 + "x": 14080.000000000002, + "y": 6475.865928668872 + }, + "floatingObject": { + "isPinned": true, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "mentorshipProgram": { + "type": "Mentorship Program", + "name": "New Mentorship Program", + "config": "{}", + "project": "Governance", + "userMentors": [ + { + "type": "User Mentor", + "name": "piyanthak", + "config": "{}", + "project": "Governance", + "id": "f8f8923c-cf54-4551-9880-f534e557472c", + "savedPayload": { + "position": { + "x": 13970.19237886467, + "y": 6885.6735498042035 + }, + "targetPosition": { + "x": 13820.19237886467, + "y": 6625.865928668872 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + }, + "referenceParent": { + "type": "User Profile", + "name": "piyanthak", + "id": "b1ce221b-2752-4419-ae53-8410e8a93798" + }, + "referenceParentCombinedNodePath": [ + [ + "piyanthak", + "User Profile" + ] + ] + } + } + ], + "tokensAwarded": { + "type": "Tokens Awarded", + "name": "New Tokens Awarded", + "project": "Governance", + "id": "5164c149-7a84-4f23-b123-e50f70e49964", + "savedPayload": { + "position": { + "x": 13560.38475772934, + "y": 6775.865928668872 + }, + "targetPosition": { + "x": 13820.19237886467, + "y": 6625.865928668872 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "tokensBonus": { + "type": "Tokens Bonus", + "name": "New Tokens Bonus", + "project": "Governance", + "id": "f8d69832-b160-4b1a-a9a0-176cbff75dab", + "savedPayload": { + "position": { + "x": 13670.19237886467, + "y": 6366.05830753354 + }, + "targetPosition": { + "x": 13820.19237886467, + "y": 6625.865928668872 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 1, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "id": "5e92b3fb-fd0e-4cd3-af7b-1e6598dc9a35", + "savedPayload": { + "position": { + "x": 13820.19237886467, + "y": 6625.865928668872 + }, + "targetPosition": { + "x": 14080.000000000002, + "y": 6475.865928668872 }, "floatingObject": { "isPinned": false, @@ -521,15 +521,15 @@ } } }, - "id": "8be5cd41-a179-457f-8737-496ba0539e76", + "id": "e950205a-6c38-4834-b507-af8d89aae286", "savedPayload": { "position": { - "x": 14006.000000000002, - "y": 6584.865928668872 + "x": 14080.000000000002, + "y": 6475.865928668872 }, "targetPosition": { - "x": 13856.000000000002, - "y": 6325.05830753354 + "x": 13930.000000000002, + "y": 6216.05830753354 }, "floatingObject": { "isPinned": false, @@ -544,15 +544,15 @@ } } }, - "id": "aef7eb8e-84f8-4211-8716-bf93e754817d", + "id": "1c7aeef6-be23-4022-a7d4-421e424e38e4", "savedPayload": { "position": { - "x": 13856.000000000002, - "y": 6325.05830753354 + "x": 13930.000000000002, + "y": 6216.05830753354 }, "targetPosition": { - "x": 13556.000000000002, - "y": 6325.05830753354 + "x": 13630.000000000002, + "y": 6216.05830753354 }, "floatingObject": { "isPinned": false, @@ -571,15 +571,15 @@ "type": "Tokens Mined", "name": "New Tokens Mined", "project": "Governance", - "id": "9bd4d8ef-3d26-434a-a8cb-eb2a8e8631b0", + "id": "8f7d30c5-ab68-4642-8137-d16e1b79cc0f", "savedPayload": { "position": { - "x": 13256.000000000002, - "y": 6325.05830753354 + "x": 13330.000000000002, + "y": 6216.05830753354 }, "targetPosition": { - "x": 13556.000000000002, - "y": 6325.05830753354 + "x": 13630.000000000002, + "y": 6216.05830753354 }, "floatingObject": { "isPinned": false, @@ -594,15 +594,15 @@ } } }, - "id": "e659dd1a-aaf9-4d33-b732-880fdc3c0f5d", + "id": "09b2e0a4-d810-49d3-95a2-25a09de1a584", "savedPayload": { "position": { - "x": 13556.000000000002, - "y": 6325.05830753354 + "x": 13630.000000000002, + "y": 6216.05830753354 }, "targetPosition": { - "x": 13556.000000000002, - "y": 6325.05830753354 + "x": 13630.000000000002, + "y": 6216.05830753354 }, "floatingObject": { "isPinned": false, From 50d5f11580dfe50f27505cd3e6aa8bc705ba56c2 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 25 Nov 2021 11:22:00 +0100 Subject: [PATCH 07/13] Connecting a Trading Bot Instance with a Social Trading Bot --- .../App-Schema/trading-bot-instance.json | 16 ++ .../App-Schema/trading-engine-reference.json | 2 +- .../Icons/social-trading-bot-reference.png | Bin 0 -> 15217 bytes .../User-Profiles/Luis-Fernando-Molina.json | 214 ++++++++++++------ .../social-trading-bot-reference.json | 27 +++ 5 files changed, 191 insertions(+), 68 deletions(-) create mode 100644 Projects/Governance/Icons/social-trading-bot-reference.png create mode 100644 Projects/Governance/Schemas/App-Schema/social-trading-bot-reference.json diff --git a/Projects/Foundations/Schemas/App-Schema/trading-bot-instance.json b/Projects/Foundations/Schemas/App-Schema/trading-bot-instance.json index 6a7bf9534..1278cd2e3 100644 --- a/Projects/Foundations/Schemas/App-Schema/trading-bot-instance.json +++ b/Projects/Foundations/Schemas/App-Schema/trading-bot-instance.json @@ -9,6 +9,16 @@ "actionProject": "Visual-Scripting", "relatedUiObjectProject": "Foundations" }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "socialTradingBotReference", + "actionFunction": "payload.executeAction", + "label": "Add Social Trading Bot Reference", + "relatedUiObject": "Social Trading Bot Reference", + "relatedUiObjectProject": "Governance" + }, { "action": "Delete UI Object", "actionProject": "Visual-Scripting", @@ -31,6 +41,12 @@ "type": "array", "childType": "Trading Process Instance", "autoAdd": false + }, + { + "name": "socialTradingBotReference", + "type": "node", + "childType": "Social Trading Bot Reference", + "autoAdd": false } ], "propertyNameAtParent": "bot" diff --git a/Projects/Foundations/Schemas/App-Schema/trading-engine-reference.json b/Projects/Foundations/Schemas/App-Schema/trading-engine-reference.json index 91732286d..41516f9b8 100644 --- a/Projects/Foundations/Schemas/App-Schema/trading-engine-reference.json +++ b/Projects/Foundations/Schemas/App-Schema/trading-engine-reference.json @@ -3,7 +3,7 @@ "menuItems": [ { "action": "Delete UI Object", -"actionProject": "Visual-Scripting", + "actionProject": "Visual-Scripting", "askConfirmation": true, "confirmationLabel": "Confirm to Delete", "label": "Delete", diff --git a/Projects/Governance/Icons/social-trading-bot-reference.png b/Projects/Governance/Icons/social-trading-bot-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ee2a209ae5922e1d49d3686dfabf910a979d02 GIT binary patch literal 15217 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

RpcMz)%$uM4rLoL`Z6O>#hyp!} zk~?Jo7l$6cpqVNOSHaTX#0(6OBq)I)ho<)5NdQcqW4X*uSLW-Y08%)zKy8wTwcTgc zaldh6DNk1$yFk6#OS-=_=iq9W&}%7NiwmjbAj~lRFv#RzCBGqTCGL>5+xL%*U!SXBiPb|1Gjec@*Hqf3Sg2| z+YNTQ168O%HsP@j<3$9vTL~g9VgaR)aLH}=^szzBDR{jEArD_9Xe5}zX=P!?xm@_g zS%}q=H~=OtVV4%l5`%LbIY(<~*S!GH$62Pv3y_#N4h57cn3H13s!4*&dVJENHNb`X*<9Yb`8EIUK3#oAp(-IPY^Eb}{ zPrvjBKv_}v*Wy$*2CLhGv&p3#xsoLW0hPE)*gRAk2j3IM1ueaXWN2XV+_9CU#(DU* zJx9mjsySW+w%oBPCqB(3Bv5;;C;;$F;g7<;xGb751?U!B_gi^9-u4X23uw6t`}7M8 z!&<@~Rs!siOJ#~dLm>DDwMCctZkpjqsDdHaJ^jm^zndrxfG?xMP8u|jp*;I+0Z!-j zOg`Y=R+wf2h=Eqbjj({U!O)t0eK$KFWQ7PVo-m$3D6pq6S|BpcB(C$1k3ORTM=6_*;;MNxS6G`? s;XgsX@9Cd?db;7Trading Bot Instance->" + }, + "referencingRules": { + "compatibleTypes": "->Social Trading Bot->" + }, + "propertyNameAtParent": "socialTradingBotReference" +} \ No newline at end of file From 84b6111315418d89a6fb03fd494944ba9b2f30fb Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 25 Nov 2021 12:00:50 +0100 Subject: [PATCH 08/13] Install Signing Accounts redone --- .../User-Profiles/Luis-Fernando-Molina.json | 690 +----------------- .../App-Schema/algo-traders-platform.json | 9 +- .../Schemas/App-Schema/p2p-network-node.json | 9 +- .../App-Schema/profile-constructor.json | 4 +- .../Schemas/App-Schema/signing-account.json | 10 +- .../Schemas/App-Schema/signing-accounts.json | 29 - .../Schemas/App-Schema/social-persona.json | 6 + .../App-Schema/social-trading-bot.json | 6 + .../social-trading-desktop-app.json | 9 +- .../App-Schema/social-trading-mobile-app.json | 9 +- .../App-Schema/social-trading-server-app.json | 9 +- .../Schemas/App-Schema/user-profile.json | 6 - .../UI/Function-Libraries/ActionSwitch.js | 4 +- .../Function-Libraries/ProfileConstructor.js | 49 +- 14 files changed, 95 insertions(+), 754 deletions(-) delete mode 100644 Projects/Governance/Schemas/App-Schema/signing-accounts.json diff --git a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json index a7c1b2007..19edc9749 100644 --- a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json +++ b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json @@ -17008,8 +17008,8 @@ "id": "9870ca2a-cefc-484b-b7fc-206d62782ebc", "savedPayload": { "position": { - "x": 37687.04694055762, - "y": 19034.54944474041 + "x": 37650, + "y": 19059.807621135333 }, "targetPosition": { "x": 37500, @@ -17028,660 +17028,6 @@ } } }, - "signingAccounts": { - "type": "Signing Accounts", - "name": "New Signing Accounts", - "project": "Governance", - "signingAccounts": [ - { - "type": "Signing Account", - "name": "Algo Traders Platform #1", - "config": "{\n \"codeName\": \"Algo-Traders-Platform-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0xe4566a497221d797935bf52fcfc4ac379142ff4fd04eb5dab9f895225c5efc3f\",\n \"s\": \"0x169e3cc82bd518811122af751964d4ebaff089bc47b586fd6fa8aab6ff93510e\",\n \"signature\": \"0xe4566a497221d797935bf52fcfc4ac379142ff4fd04eb5dab9f895225c5efc3f169e3cc82bd518811122af751964d4ebaff089bc47b586fd6fa8aab6ff93510e1b\"\n }\n}", - "project": "Governance", - "id": "bc6d5f74-265d-4c43-a1f7-d266ca6f2864", - "savedPayload": { - "position": { - "x": 37698.47833786449, - "y": 19232.658962136466 - }, - "targetPosition": { - "x": 37433.24371981311, - "y": 19092.478373654547 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - }, - "referenceParent": { - "type": "Algo Traders Platform", - "name": "Algo Traders Platform #1", - "id": "0a06a54b-825b-4ff4-93cc-36465348ad26" - }, - "referenceParentCombinedNodePath": [ - [ - "Luis-Fernando-Molina", - "User Profile", - "Governance", - "a8de78f0-c3e4-4a2a-b7e8-f659073969db" - ], - [ - "New User Apps", - "User Apps", - "Governance", - "c57bd931-a0e1-4cf2-9270-b33f08839484" - ], - [ - "New Desktop Apps", - "Desktop Apps", - "Governance", - "abcc6b01-099e-42b4-84cc-24fb6daa7a15" - ], - [ - "Algo Traders Platform #1", - "Algo Traders Platform", - "Governance", - "0a06a54b-825b-4ff4-93cc-36465348ad26" - ] - ] - } - }, - { - "type": "Signing Account", - "name": "Social Trading Server App #1", - "config": "{\n \"codeName\": \"Social-Trading-Server-App-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x6366189e1139c88e1207a1d7572107e91ee4d022ac327ad10b72fcc409fe170a\",\n \"s\": \"0x3a63f7735b50c54cdd11f4745c63e05567605a8d018a587e2fd5906cf299e137\",\n \"signature\": \"0x6366189e1139c88e1207a1d7572107e91ee4d022ac327ad10b72fcc409fe170a3a63f7735b50c54cdd11f4745c63e05567605a8d018a587e2fd5906cf299e1371b\"\n }\n}", - "project": "Governance", - "id": "8411cea1-d4f8-4014-91e3-8d25da5a37b9", - "savedPayload": { - "position": { - "x": 37653.15928136206, - "y": 19296.530194985822 - }, - "targetPosition": { - "x": 37433.24371981311, - "y": 19092.478373654547 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - }, - "referenceParent": { - "type": "Social Trading Server App", - "name": "Social Trading Server App #1", - "id": "0216b143-0e46-4da6-b2cb-e95556fc1bfd" - }, - "referenceParentCombinedNodePath": [ - [ - "Luis-Fernando-Molina", - "User Profile", - "Governance", - "a8de78f0-c3e4-4a2a-b7e8-f659073969db" - ], - [ - "New User Apps", - "User Apps", - "Governance", - "c57bd931-a0e1-4cf2-9270-b33f08839484" - ], - [ - "New Server Apps", - "Server Apps", - "Governance", - "b0db0d19-5529-4b96-ab4f-ac7d54e1e6db" - ], - [ - "Social Trading Server App #1", - "Social Trading Server App", - "Governance", - "0216b143-0e46-4da6-b2cb-e95556fc1bfd" - ] - ] - } - }, - { - "type": "Signing Account", - "name": "Social Trading Desktop App #1", - "config": "{\n \"codeName\": \"Social-Trading-Desktop-App-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0xe90c72318a537fa499c2168d0968a77a258d121b79db659a732efb645952c45b\",\n \"s\": \"0x3cdae989d8414d89583e4237771ba1a50246dd594f9426138293c02e0bc8e277\",\n \"signature\": \"0xe90c72318a537fa499c2168d0968a77a258d121b79db659a732efb645952c45b3cdae989d8414d89583e4237771ba1a50246dd594f9426138293c02e0bc8e2771c\"\n }\n}", - "project": "Governance", - "id": "79b79d42-906b-4f7e-859f-307c1f59c609", - "savedPayload": { - "position": { - "x": 37592.85334276771, - "y": 19346.495633423034 - }, - "targetPosition": { - "x": 37433.24371981311, - "y": 19092.478373654547 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - }, - "referenceParent": { - "type": "Social Trading Desktop App", - "name": "Social Trading Desktop App #1", - "id": "33c4f8e9-f8a3-4dea-91f4-1539e3aed0d3" - }, - "referenceParentCombinedNodePath": [ - [ - "Luis-Fernando-Molina", - "User Profile", - "Governance", - "a8de78f0-c3e4-4a2a-b7e8-f659073969db" - ], - [ - "New User Apps", - "User Apps", - "Governance", - "c57bd931-a0e1-4cf2-9270-b33f08839484" - ], - [ - "New Desktop Apps", - "Desktop Apps", - "Governance", - "abcc6b01-099e-42b4-84cc-24fb6daa7a15" - ], - [ - "Social Trading Desktop App #1", - "Social Trading Desktop App", - "Governance", - "33c4f8e9-f8a3-4dea-91f4-1539e3aed0d3" - ] - ] - } - }, - { - "type": "Signing Account", - "name": "Social Trading Bot #1", - "config": "{\n \"codeName\": \"Social-Trading-Bot-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0x8c4d79e56bad649717fdd43dadea04af3501101828415fec6c8e154a88b9274c\",\n \"s\": \"0x510c3d0eea03e630fed4babbba9733f2f9769a3af46f886ad309ba06b5962f84\",\n \"signature\": \"0x8c4d79e56bad649717fdd43dadea04af3501101828415fec6c8e154a88b9274c510c3d0eea03e630fed4babbba9733f2f9769a3af46f886ad309ba06b5962f841c\"\n }\n}", - "project": "Governance", - "id": "33e9a11c-fd0f-4a93-94b5-8ec4a0e36872", - "savedPayload": { - "position": { - "x": 37521.670272136376, - "y": 19379.15021539039 - }, - "targetPosition": { - "x": 37433.24371981311, - "y": 19092.478373654547 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - }, - "referenceParent": { - "type": "Social Trading Bot", - "name": "Social Trading Bot #1", - "id": "5167a23f-1e17-4cd5-85a7-3c7f2a3019ac" - }, - "referenceParentCombinedNodePath": [ - [ - "Luis-Fernando-Molina", - "User Profile", - "Governance", - "a8de78f0-c3e4-4a2a-b7e8-f659073969db" - ], - [ - "New User Bots", - "User Bots", - "Governance", - "54ced611-b518-435f-a284-935666ef47db" - ], - [ - "New Social Trading Bots", - "Social Trading Bots", - "Governance", - "4809934c-d45d-4565-a686-5d96bd695b4f" - ], - [ - "Social Trading Bot #1", - "Social Trading Bot", - "Governance", - "5167a23f-1e17-4cd5-85a7-3c7f2a3019ac" - ] - ] - } - }, - { - "type": "Signing Account", - "name": "Social Trading Desktop App #2", - "config": "{\n \"codeName\": \"Social-Trading-Desktop-App-2\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0xe954670fce311d449291afd63d2c583801b198f5bffbd354a17dc0953c0d246b\",\n \"s\": \"0x65ce3dbf442db3f5fe4885b9abf30163d1902673cfc422489f670f3691b30513\",\n \"signature\": \"0xe954670fce311d449291afd63d2c583801b198f5bffbd354a17dc0953c0d246b65ce3dbf442db3f5fe4885b9abf30163d1902673cfc422489f670f3691b305131b\"\n }\n}", - "project": "Governance", - "id": "2e7afb68-f902-48e6-862c-fe920cbbf6a0", - "savedPayload": { - "position": { - "x": 37444.46107809601, - "y": 19392.268585091068 - }, - "targetPosition": { - "x": 37433.24371981311, - "y": 19092.478373654547 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - }, - "referenceParent": { - "type": "Social Trading Desktop App", - "name": "Social Trading Desktop App #2", - "id": "ad887d5f-998f-48c5-9db7-78e17c66f4e4" - }, - "referenceParentCombinedNodePath": [ - [ - "Luis-Fernando-Molina", - "User Profile", - "Governance", - "a8de78f0-c3e4-4a2a-b7e8-f659073969db" - ], - [ - "New User Apps", - "User Apps", - "Governance", - "c57bd931-a0e1-4cf2-9270-b33f08839484" - ], - [ - "New Desktop Apps", - "Desktop Apps", - "Governance", - "abcc6b01-099e-42b4-84cc-24fb6daa7a15" - ], - [ - "Social Trading Desktop App #2", - "Social Trading Desktop App", - "Governance", - "ad887d5f-998f-48c5-9db7-78e17c66f4e4" - ] - ] - } - }, - { - "type": "Signing Account", - "name": "Social Trading Mobile App #1", - "config": "{\n \"codeName\": \"Social-Trading-Mobile-App-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x781eefd6933468afc56d0fadbde7e970325963f21538e810a6ca1aad00f20c0e\",\n \"s\": \"0x3f7a4f4ce85e58212da363641f5d4c7362f858f4ebfefe8430b16ac845debc2c\",\n \"signature\": \"0x781eefd6933468afc56d0fadbde7e970325963f21538e810a6ca1aad00f20c0e3f7a4f4ce85e58212da363641f5d4c7362f858f4ebfefe8430b16ac845debc2c1b\"\n }\n}", - "project": "Governance", - "id": "b981e982-39a2-407c-aaee-f83fd149aeed", - "savedPayload": { - "position": { - "x": 37366.48743962622, - "y": 19384.956747309094 - }, - "targetPosition": { - "x": 37433.24371981311, - "y": 19092.478373654547 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - }, - "referenceParent": { - "type": "Social Trading Mobile App", - "name": "Social Trading Mobile App #1", - "id": "42843263-b1f3-4e4e-885a-5d8b9d7b647a" - }, - "referenceParentCombinedNodePath": [ - [ - "Luis-Fernando-Molina", - "User Profile", - "Governance", - "a8de78f0-c3e4-4a2a-b7e8-f659073969db" - ], - [ - "New User Apps", - "User Apps", - "Governance", - "c57bd931-a0e1-4cf2-9270-b33f08839484" - ], - [ - "New Mobile Apps", - "Mobile Apps", - "Governance", - "de1b0ac7-1bcf-4412-af43-4597443c0ec3" - ], - [ - "Social Trading Mobile App #1", - "Social Trading Mobile App", - "Governance", - "42843263-b1f3-4e4e-885a-5d8b9d7b647a" - ] - ] - } - }, - { - "type": "Signing Account", - "name": "Social Trading Bot #2", - "config": "{\n \"codeName\": \"Social-Trading-Bot-2\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0xf0499a689d4b09f8a3ba68dbd748ca757b9d7749eea50a52a3cb9673583b0608\",\n \"s\": \"0x7ca826f7198a2dd15ae23e0fd376c43a4d060fffdd8e293748b6592c450b42e1\",\n \"signature\": \"0xf0499a689d4b09f8a3ba68dbd748ca757b9d7749eea50a52a3cb9673583b06087ca826f7198a2dd15ae23e0fd376c43a4d060fffdd8e293748b6592c450b42e11c\"\n }\n}", - "project": "Governance", - "id": "0c931463-b609-43e6-9353-1b13450895a7", - "savedPayload": { - "position": { - "x": 37293.06313133119, - "y": 19357.71299170593 - }, - "targetPosition": { - "x": 37433.24371981311, - "y": 19092.478373654547 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - }, - "referenceParent": { - "type": "Social Trading Bot", - "name": "Social Trading Bot #2", - "id": "c27748af-db60-44fc-a095-530401057beb" - }, - "referenceParentCombinedNodePath": [ - [ - "Luis-Fernando-Molina", - "User Profile", - "Governance", - "a8de78f0-c3e4-4a2a-b7e8-f659073969db" - ], - [ - "New User Bots", - "User Bots", - "Governance", - "54ced611-b518-435f-a284-935666ef47db" - ], - [ - "New Social Trading Bots", - "Social Trading Bots", - "Governance", - "4809934c-d45d-4565-a686-5d96bd695b4f" - ], - [ - "Social Trading Bot #2", - "Social Trading Bot", - "Governance", - "c27748af-db60-44fc-a095-530401057beb" - ] - ] - } - }, - { - "type": "Signing Account", - "name": "Social Persona #1", - "config": "{\n \"codeName\": \"Social-Persona-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0xbd9657c69743d2fd097c5728391f971b00b8bc9d2ea787a13436263b6cfd1423\",\n \"s\": \"0x5b4b7593b3a221f636ff16825c8f49d5bd409c83dcd47f20badc1797596afb27\",\n \"signature\": \"0xbd9657c69743d2fd097c5728391f971b00b8bc9d2ea787a13436263b6cfd14235b4b7593b3a221f636ff16825c8f49d5bd409c83dcd47f20badc1797596afb271b\"\n }\n}", - "project": "Governance", - "id": "60f58a3e-ce39-4669-8c85-9fbed91ee97a", - "savedPayload": { - "position": { - "x": 37229.19189848183, - "y": 19312.393935203494 - }, - "targetPosition": { - "x": 37433.24371981311, - "y": 19092.478373654547 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - }, - "referenceParent": { - "type": "Social Persona", - "name": "Social Persona #1", - "id": "ed15b68f-c9e0-447a-9ef7-660db229244c" - }, - "referenceParentCombinedNodePath": [ - [ - "Luis-Fernando-Molina", - "User Profile", - "Governance", - "a8de78f0-c3e4-4a2a-b7e8-f659073969db" - ], - [ - "New Social Personas", - "Social Personas", - "Governance", - "e453990c-57e2-4886-9dc1-060cd2750467" - ], - [ - "Social Persona #1", - "Social Persona", - "Governance", - "ed15b68f-c9e0-447a-9ef7-660db229244c" - ] - ] - } - }, - { - "type": "Signing Account", - "name": "Social Persona #2", - "config": "{\n \"codeName\": \"Social-Persona-2\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0xf7e6fde3e7bc19db547a3446c43aaf4e1af8327c72e782a4a68fef2869679cd7\",\n \"s\": \"0x337f8310b83332ea0d50f891dd9f98632854665717888fb39e266173769ad92b\",\n \"signature\": \"0xf7e6fde3e7bc19db547a3446c43aaf4e1af8327c72e782a4a68fef2869679cd7337f8310b83332ea0d50f891dd9f98632854665717888fb39e266173769ad92b1c\"\n }\n}", - "project": "Governance", - "id": "91e8a4a8-e18b-4a8b-8269-1a464b18715d", - "savedPayload": { - "position": { - "x": 37179.22646004462, - "y": 19252.08799660915 - }, - "targetPosition": { - "x": 37433.24371981311, - "y": 19092.478373654547 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - }, - "referenceParent": { - "type": "Social Persona", - "name": "Social Persona #2", - "id": "01c33294-124f-4d68-8619-8e1d1cca7e0a" - }, - "referenceParentCombinedNodePath": [ - [ - "Luis-Fernando-Molina", - "User Profile", - "Governance", - "a8de78f0-c3e4-4a2a-b7e8-f659073969db" - ], - [ - "New Social Personas", - "Social Personas", - "Governance", - "e453990c-57e2-4886-9dc1-060cd2750467" - ], - [ - "Social Persona #2", - "Social Persona", - "Governance", - "01c33294-124f-4d68-8619-8e1d1cca7e0a" - ] - ] - } - }, - { - "type": "Signing Account", - "name": "P2P Network Node #1", - "config": "{\n \"codeName\": \"P2P-Network-Node-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0xfec6d4f26fcbcf624bd218f781fea8a8e78e5501fe167e082288a6bed8b10a9b\",\n \"s\": \"0x0c05a17a4eb6636e2895ac164680e89d1618bd7b42a77b2db61b8e942ee6fc3a\",\n \"signature\": \"0xfec6d4f26fcbcf624bd218f781fea8a8e78e5501fe167e082288a6bed8b10a9b0c05a17a4eb6636e2895ac164680e89d1618bd7b42a77b2db61b8e942ee6fc3a1c\"\n }\n}", - "project": "Governance", - "id": "c7ffb93c-a17f-4f62-9c32-600f679c6e98", - "savedPayload": { - "position": { - "x": 37146.571878077266, - "y": 19180.90492597782 - }, - "targetPosition": { - "x": 37433.24371981311, - "y": 19092.478373654547 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - }, - "referenceParent": { - "type": "P2P Network Node", - "name": "P2P Network Node #1", - "id": "56cc0c90-4a58-4e25-a63f-4f9a6921d0f3" - }, - "referenceParentCombinedNodePath": [ - [ - "Luis-Fernando-Molina", - "User Profile", - "Governance", - "a8de78f0-c3e4-4a2a-b7e8-f659073969db" - ], - [ - "New P2P Network Nodes", - "P2P Network Nodes", - "Governance", - "da779e56-cb36-4825-bcd5-06692175a982" - ], - [ - "P2P Network Node #1", - "P2P Network Node", - "Governance", - "56cc0c90-4a58-4e25-a63f-4f9a6921d0f3" - ] - ] - } - }, - { - "type": "Signing Account", - "name": "P2P Network Node #2", - "config": "{\n \"codeName\": \"P2P-Network-Node-2\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0x48a8f063db1cca44822eed9f69cb55bf2252d6b2f75fc86b4829f2b657f52a98\",\n \"s\": \"0x7de0368fd6620541fa47ea699c2c06e3266bbe7fb0b8d5093dbf5337ec45541e\",\n \"signature\": \"0x48a8f063db1cca44822eed9f69cb55bf2252d6b2f75fc86b4829f2b657f52a987de0368fd6620541fa47ea699c2c06e3266bbe7fb0b8d5093dbf5337ec45541e1c\"\n }\n}", - "project": "Governance", - "id": "2fbcc3a0-26c1-4ebe-b6b5-2ddecf29175b", - "savedPayload": { - "position": { - "x": 37133.45350837659, - "y": 19103.695731937445 - }, - "targetPosition": { - "x": 37433.24371981311, - "y": 19092.478373654547 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": false, - "angleToParent": 2, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - }, - "referenceParent": { - "type": "P2P Network Node", - "name": "P2P Network Node #2", - "id": "352cd906-c36c-48c7-8f01-728ff78b78e9" - }, - "referenceParentCombinedNodePath": [ - [ - "Luis-Fernando-Molina", - "User Profile", - "Governance", - "a8de78f0-c3e4-4a2a-b7e8-f659073969db" - ], - [ - "New P2P Network Nodes", - "P2P Network Nodes", - "Governance", - "da779e56-cb36-4825-bcd5-06692175a982" - ], - [ - "P2P Network Node #2", - "P2P Network Node", - "Governance", - "352cd906-c36c-48c7-8f01-728ff78b78e9" - ] - ] - } - } - ], - "id": "6a917b82-f14a-49cb-a233-152ac2053b88", - "savedPayload": { - "position": { - "x": 37433.24371981311, - "y": 19092.478373654547 - }, - "targetPosition": { - "x": 37500, - "y": 18800 - }, - "floatingObject": { - "isPinned": false, - "isFrozen": false, - "isCollapsed": true, - "angleToParent": 1, - "distanceToParent": 3, - "arrangementStyle": 0 - }, - "uiObject": { - "isRunning": false - } - } - }, "userApps": { "type": "User Apps", "name": "New User Apps", @@ -17922,8 +17268,8 @@ "id": "c57bd931-a0e1-4cf2-9270-b33f08839484", "savedPayload": { "position": { - "x": 37229.70933962928, - "y": 18930.165121735266 + "x": 37350, + "y": 19059.807621135333 }, "targetPosition": { "x": 37500, @@ -18181,8 +17527,8 @@ "id": "54ced611-b518-435f-a284-935666ef47db", "savedPayload": { "position": { - "x": 37229.70933962928, - "y": 18669.834878264734 + "x": 37200, + "y": 18800 }, "targetPosition": { "x": 37500, @@ -18403,8 +17749,8 @@ "id": "e453990c-57e2-4886-9dc1-060cd2750467", "savedPayload": { "position": { - "x": 37433.24371981311, - "y": 18507.521626345453 + "x": 37350, + "y": 18540.192378864667 }, "targetPosition": { "x": 37500, @@ -18437,12 +17783,12 @@ "id": "56cc0c90-4a58-4e25-a63f-4f9a6921d0f3", "savedPayload": { "position": { - "x": 37731.75962041048, - "y": 18268.801307392052 + "x": 37650, + "y": 18240.192378864667 }, "targetPosition": { - "x": 37687.04694055762, - "y": 18565.45055525959 + "x": 37650, + "y": 18540.192378864667 }, "floatingObject": { "isPinned": false, @@ -18465,12 +17811,12 @@ "id": "352cd906-c36c-48c7-8f01-728ff78b78e9", "savedPayload": { "position": { - "x": 37966.30906515088, - "y": 18455.84824794967 + "x": 37909.80762113533, + "y": 18390.192378864667 }, "targetPosition": { - "x": 37687.04694055762, - "y": 18565.45055525959 + "x": 37650, + "y": 18540.192378864667 }, "floatingObject": { "isPinned": false, @@ -18489,8 +17835,8 @@ "id": "da779e56-cb36-4825-bcd5-06692175a982", "savedPayload": { "position": { - "x": 37687.04694055762, - "y": 18565.45055525959 + "x": 37650, + "y": 18540.192378864667 }, "targetPosition": { "x": 37500, diff --git a/Projects/Governance/Schemas/App-Schema/algo-traders-platform.json b/Projects/Governance/Schemas/App-Schema/algo-traders-platform.json index c9e4a1834..84f630929 100644 --- a/Projects/Governance/Schemas/App-Schema/algo-traders-platform.json +++ b/Projects/Governance/Schemas/App-Schema/algo-traders-platform.json @@ -32,6 +32,13 @@ "attachingRules": { "compatibleTypes": "->Desktop Apps->" }, - "childrenNodesProperties": [], + "childrenNodesProperties": [ + { + "name": "signingAccount", + "type": "node", + "childType": "Signing Account", + "autoAdd": false + } + ], "propertyNameAtParent": "algoTradesPlatform" } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/p2p-network-node.json b/Projects/Governance/Schemas/App-Schema/p2p-network-node.json index 71fee78ba..679f30c3f 100644 --- a/Projects/Governance/Schemas/App-Schema/p2p-network-node.json +++ b/Projects/Governance/Schemas/App-Schema/p2p-network-node.json @@ -32,6 +32,13 @@ "attachingRules": { "compatibleTypes": "->P2P Network Nodes->" }, - "childrenNodesProperties": [], + "childrenNodesProperties": [ + { + "name": "signingAccount", + "type": "node", + "childType": "Signing Account", + "autoAdd": false + } + ], "propertyNameAtParent": "p2pNetworkNodes" } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/profile-constructor.json b/Projects/Governance/Schemas/App-Schema/profile-constructor.json index 559541991..7db87ebe2 100644 --- a/Projects/Governance/Schemas/App-Schema/profile-constructor.json +++ b/Projects/Governance/Schemas/App-Schema/profile-constructor.json @@ -20,9 +20,9 @@ "relatedUiObjectProject": "Governance" }, { - "action": "Install Secrets", + "action": "Install Signing Accounts", "actionProject": "Governance", - "label": "Install Secrets", + "label": "Install Signing Accounts", "askConfirmation": true, "confirmationLabel": "Confirm to Proceed", "workDoneLabel": "Done", diff --git a/Projects/Governance/Schemas/App-Schema/signing-account.json b/Projects/Governance/Schemas/App-Schema/signing-account.json index 07b8b0526..4e4ef3d43 100644 --- a/Projects/Governance/Schemas/App-Schema/signing-account.json +++ b/Projects/Governance/Schemas/App-Schema/signing-account.json @@ -23,10 +23,7 @@ "addLeftIcons": true, "level": 2, "attachingRules": { - "compatibleTypes": "->Signing Accounts->" - }, - "referencingRules": { - "compatibleTypes": "->P2P Network Node->Algo Traders Platform->Social Trading Mobile App->Social Trading Desktop App->Social Trading Server App->" + "compatibleTypes": "->P2P Network Node->Algo Traders Platform->Social Trading Mobile App->Social Trading Desktop App->Social Trading Server App->Social Trading Bot->Social Persona->" }, "editors": { "config": true @@ -35,8 +32,5 @@ "config": "{}" }, "propertyNameAtParent": "signingAccounts", - "childrenNodesProperties": [], - "title": [ - "Use Reference Parent" - ] + "childrenNodesProperties": [] } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/signing-accounts.json b/Projects/Governance/Schemas/App-Schema/signing-accounts.json deleted file mode 100644 index f1e225cd6..000000000 --- a/Projects/Governance/Schemas/App-Schema/signing-accounts.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "Signing Accounts", - "menuItems": [ - { - "action": "Delete UI Object", - "actionProject": "Visual-Scripting", - "askConfirmation": true, - "confirmationLabel": "Confirm to Delete", - "label": "Delete", - "iconPathOn": "delete-entity", - "iconPathOff": "delete-entity", - "actionFunction": "payload.executeAction" - } - ], - "addLeftIcons": true, - "level": 2, - "attachingRules": { - "compatibleTypes": "->User Profile->" - }, - "propertyNameAtParent": "signingAccounts", - "childrenNodesProperties": [ - { - "name": "signingAccounts", - "type": "array", - "childType": "Signing Account", - "autoAdd": false - } - ] -} \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/social-persona.json b/Projects/Governance/Schemas/App-Schema/social-persona.json index 4da7d7e81..808dd7753 100644 --- a/Projects/Governance/Schemas/App-Schema/social-persona.json +++ b/Projects/Governance/Schemas/App-Schema/social-persona.json @@ -47,6 +47,12 @@ "type": "node", "childType": "Social Personas Following", "autoAdd": false + }, + { + "name": "signingAccount", + "type": "node", + "childType": "Signing Account", + "autoAdd": false } ] } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/social-trading-bot.json b/Projects/Governance/Schemas/App-Schema/social-trading-bot.json index e2b8218c6..8c48020a7 100644 --- a/Projects/Governance/Schemas/App-Schema/social-trading-bot.json +++ b/Projects/Governance/Schemas/App-Schema/social-trading-bot.json @@ -47,6 +47,12 @@ "type": "node", "childType": "Social Trading Bots Following", "autoAdd": false + }, + { + "name": "signingAccount", + "type": "node", + "childType": "Signing Account", + "autoAdd": false } ] } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/social-trading-desktop-app.json b/Projects/Governance/Schemas/App-Schema/social-trading-desktop-app.json index 89f6174d3..3e80a7b75 100644 --- a/Projects/Governance/Schemas/App-Schema/social-trading-desktop-app.json +++ b/Projects/Governance/Schemas/App-Schema/social-trading-desktop-app.json @@ -32,6 +32,13 @@ "attachingRules": { "compatibleTypes": "->Desktop Apps->" }, - "childrenNodesProperties": [], + "childrenNodesProperties": [ + { + "name": "signingAccount", + "type": "node", + "childType": "Signing Account", + "autoAdd": false + } + ], "propertyNameAtParent": "socialTradingDesktopApps" } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/social-trading-mobile-app.json b/Projects/Governance/Schemas/App-Schema/social-trading-mobile-app.json index 364395b79..bae0c3685 100644 --- a/Projects/Governance/Schemas/App-Schema/social-trading-mobile-app.json +++ b/Projects/Governance/Schemas/App-Schema/social-trading-mobile-app.json @@ -32,6 +32,13 @@ "attachingRules": { "compatibleTypes": "->Mobile Apps->" }, - "childrenNodesProperties": [], + "childrenNodesProperties": [ + { + "name": "signingAccount", + "type": "node", + "childType": "Signing Account", + "autoAdd": false + } + ], "propertyNameAtParent": "socialTradingMobileApps" } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/social-trading-server-app.json b/Projects/Governance/Schemas/App-Schema/social-trading-server-app.json index 35e5cd007..73a67f82d 100644 --- a/Projects/Governance/Schemas/App-Schema/social-trading-server-app.json +++ b/Projects/Governance/Schemas/App-Schema/social-trading-server-app.json @@ -32,6 +32,13 @@ "attachingRules": { "compatibleTypes": "->Server Apps->" }, - "childrenNodesProperties": [], + "childrenNodesProperties": [ + { + "name": "signingAccount", + "type": "node", + "childType": "Signing Account", + "autoAdd": false + } + ], "propertyNameAtParent": "socialTradingServerApps" } \ No newline at end of file diff --git a/Projects/Governance/Schemas/App-Schema/user-profile.json b/Projects/Governance/Schemas/App-Schema/user-profile.json index e35ae4b87..df39c4fe9 100644 --- a/Projects/Governance/Schemas/App-Schema/user-profile.json +++ b/Projects/Governance/Schemas/App-Schema/user-profile.json @@ -112,12 +112,6 @@ "childType": "Tokens Mined", "autoAdd": true }, - { - "name": "signingAccounts", - "type": "node", - "childType": "Signing Accounts", - "autoAdd": false - }, { "name": "userApps", "type": "node", diff --git a/Projects/Governance/UI/Function-Libraries/ActionSwitch.js b/Projects/Governance/UI/Function-Libraries/ActionSwitch.js index 5e62addc8..677f55bdd 100644 --- a/Projects/Governance/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Governance/UI/Function-Libraries/ActionSwitch.js @@ -38,9 +38,9 @@ function newGovernanceActionSwitch() { UI.projects.governance.functionLibraries.profileConstructor.buildProfile(action.node, action.rootNodes) break } - case 'Install Secrets': + case 'Install Signing Accounts': { - UI.projects.governance.functionLibraries.profileConstructor.installSecrets(action.node, action.rootNodes) + UI.projects.governance.functionLibraries.profileConstructor.installSigningAccounts(action.node, action.rootNodes) break } case 'Add Missing Plugin User Profiles': diff --git a/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js b/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js index 14d43bf1a..4a5d7e5b5 100644 --- a/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js +++ b/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js @@ -1,7 +1,7 @@ function newGovernanceFunctionLibraryProfileConstructor() { let thisObject = { buildProfile: buildProfile, - installSecrets: installSecrets + installSigningAccounts: installSigningAccounts } return thisObject @@ -130,7 +130,7 @@ function newGovernanceFunctionLibraryProfileConstructor() { let finServices = UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.addUIObject(userProfile.tokenPowerSwitch, "Financial Programs", userProfile) finServices.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 finServices.payload.uiObject.menu.internalClick("Add Financial Program") - + let stakeProg = UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.addUIObject(finServices, "Staking Program", userProfile) stakeProg.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 stakeProg.payload.uiObject.menu.internalClick("Add Tokens Awarded") @@ -146,9 +146,9 @@ function newGovernanceFunctionLibraryProfileConstructor() { /* Check if the user already has the SA fork. If not, do it for them. */ - + const hasFork = UI.projects.governance.spaces.userProfileSpace.githubForks.get(githubUsername) - if(hasFork === undefined) { + if (hasFork === undefined) { // New user! Probably doesn't have a fork, so let's create it. let apisNode = UI.projects.foundations.spaces.designSpace.workspace.getHierarchyHeadByNodeType('APIs') if (apisNode === undefined) { @@ -181,12 +181,12 @@ function newGovernanceFunctionLibraryProfileConstructor() { httpRequest(JSON.stringify(params), url, onResponse) function onResponse(err, data) { - + data = JSON.parse(data) if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result && data.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { UI.projects.education.spaces.docsSpace.navigateTo('Governance', 'Topic', 'Gov Message - Automated User Profile Contribute Done') } else { - if (data.docs === undefined) {return} + if (data.docs === undefined) { return } UI.projects.education.spaces.docsSpace.navigateTo( data.docs.project, data.docs.category, @@ -197,7 +197,7 @@ function newGovernanceFunctionLibraryProfileConstructor() { ) } } - } + } /* We store at the User Profile the Signed githubUsername */ @@ -220,7 +220,7 @@ function newGovernanceFunctionLibraryProfileConstructor() { /* TODO: Let's create a nice basic profile to start with liquidity and community */ - + /* Show nice message. */ @@ -240,7 +240,7 @@ function newGovernanceFunctionLibraryProfileConstructor() { } } - function installSecrets( + function installSigningAccounts( node, rootNodes ) { @@ -270,21 +270,6 @@ function newGovernanceFunctionLibraryProfileConstructor() { ) return } - /* - Delete Signing Accounts with all its children, it it exists. - */ - if (userProfile.signingAccounts !== undefined) { - let rootNodes = UI.projects.foundations.spaces.designSpace.workspace.workspaceNode.rootNodes - UI.projects.visualScripting.functionLibraries.nodeDeleter.deleteUIObject(userProfile.signingAccounts, rootNodes) - } - /* - Create Signing Accounts. - */ - let signingAccounts = UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.addUIObject( - userProfile, - 'Signing Accounts', - UI.projects.foundations.spaces.designSpace.workspace.workspaceNode.rootNodes - ) let algoTradersPlatform = UI.projects.visualScripting.utilities.branches.nodeBranchToArray(userProfile.userApps, 'Algo Traders Platform') let socialTradingDesktopApp = UI.projects.visualScripting.utilities.branches.nodeBranchToArray(userProfile.userApps, 'Social Trading Desktop App') @@ -387,15 +372,19 @@ function newGovernanceFunctionLibraryProfileConstructor() { function createSigningAccount(signature) { + /* + Delete Signing Account if it already exists. + */ + let rootNodes = UI.projects.foundations.spaces.designSpace.workspace.workspaceNode.rootNodes + if (targetNode.signingAccount !== undefined) { + UI.projects.visualScripting.functionLibraries.nodeDeleter.deleteUIObject(targetNode.signingAccount, rootNodes) + } + let signingAccount = UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.addUIObject( - signingAccounts, + targetNode, 'Signing Account', - UI.projects.foundations.spaces.designSpace.workspace.workspaceNode.rootNodes + rootNodes ) - - signingAccount.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 - - UI.projects.visualScripting.functionLibraries.attachDetach.referenceAttachNode(signingAccount, targetNode) /* Let's get a cool name for this node. */ From 53b0712a950d5d3431d69472cce432113ecd7249 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 25 Nov 2021 12:16:02 +0100 Subject: [PATCH 09/13] Network fixed with signing accounts chlld of each network client --- .../User-Profiles/Luis-Fernando-Molina.json | 430 +++++++++++++++--- Projects/Network/SA/Modules/UserProfiles.js | 68 ++- 2 files changed, 396 insertions(+), 102 deletions(-) diff --git a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json index 19edc9749..dd0cbca69 100644 --- a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json +++ b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json @@ -17044,15 +17044,43 @@ "name": "Social Trading Desktop App #1", "config": "{\n \"codeName\": \"Social-Trading-Desktop-App-1\",\n \"host\": \"localhost\",\n \"webPort\": \"33248\",\n \"webSocketsPort\": \"17042\"\n}", "project": "Governance", + "signingAccount": { + "type": "Signing Account", + "name": "New Signing Account", + "config": "{\n \"codeName\": \"Social-Trading-Desktop-App-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0xc0aaf26d4eda5d88a99ac03d9efc3596ef255eac4dfd876d07140ac8abe3685d\",\n \"s\": \"0x7f8b4fbded9159a5b68f87f509f9055d6bb05168686bd810ab97255b1330ded1\",\n \"signature\": \"0xc0aaf26d4eda5d88a99ac03d9efc3596ef255eac4dfd876d07140ac8abe3685d7f8b4fbded9159a5b68f87f509f9055d6bb05168686bd810ab97255b1330ded11c\"\n }\n}", + "project": "Governance", + "id": "37571576-8c99-49d9-ab4d-50aa4707d7ba", + "savedPayload": { + "position": { + "x": 37947.26095580142, + "y": 19649.585369022054 + }, + "targetPosition": { + "x": 37687.45333466609, + "y": 19499.585369022054 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, "id": "33c4f8e9-f8a3-4dea-91f4-1539e3aed0d3", "savedPayload": { "position": { - "x": 37260.790742777994, - "y": 19483.620781198504 + "x": 37687.45333466609, + "y": 19499.585369022054 }, "targetPosition": { - "x": 37130.625621042724, - "y": 19213.330120827777 + "x": 37427.64571353076, + "y": 19349.585369022054 }, "floatingObject": { "isPinned": false, @@ -17072,15 +17100,43 @@ "name": "Social Trading Desktop App #2", "config": "{\n \"codeName\": \"Social-Trading-Desktop-App-2\",\n \"host\": \"localhost\",\n \"webPort\": \"33248\",\n \"webSocketsPort\": \"17042\"\n}", "project": "Governance", + "signingAccount": { + "type": "Signing Account", + "name": "New Signing Account", + "config": "{\n \"codeName\": \"Social-Trading-Desktop-App-2\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x3e67720de3bdbf45880cf18c0fe04c5e41300abdaa4ae91b0966738187d3032b\",\n \"s\": \"0x148e2948cdd112046bacac87fdaf5111e012318a201c0543334e02c9e7b0c649\",\n \"signature\": \"0x3e67720de3bdbf45880cf18c0fe04c5e41300abdaa4ae91b0966738187d3032b148e2948cdd112046bacac87fdaf5111e012318a201c0543334e02c9e7b0c6491b\"\n }\n}", + "project": "Governance", + "id": "947be666-7f33-4b4b-88ca-5d579b3e3158", + "savedPayload": { + "position": { + "x": 37582.93714059227, + "y": 19929.140864795496 + }, + "targetPosition": { + "x": 37505.291427061515, + "y": 19639.363116908775 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, "id": "ad887d5f-998f-48c5-9db7-78e17c66f4e4", "savedPayload": { "position": { - "x": 37031.54190245617, - "y": 19496.495119920288 + "x": 37505.291427061515, + "y": 19639.363116908775 }, "targetPosition": { - "x": 37130.625621042724, - "y": 19213.330120827777 + "x": 37427.64571353076, + "y": 19349.585369022054 }, "floatingObject": { "isPinned": false, @@ -17102,15 +17158,43 @@ "name": "Algo Traders Platform #1", "config": "{\n \"codeName\": \"Algo-Traders-Platform-1\",\n \"host\": \"localhost\",\n \"webPort\": \"34248\",\n \"webSocketsPort\": \"18041\"\n}", "project": "Governance", + "signingAccount": { + "type": "Signing Account", + "name": "New Signing Account", + "config": "{\n \"codeName\": \"Algo-Traders-Platform-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0x00127bd29163215cf0a4b695f7514c11d9ee7a7d2c8440a1b957b02d7702ce0c\",\n \"s\": \"0x43d93148fc30f3e8e9ed8fbbff9ad324841e42c08de4520ad6b00e3c946346f3\",\n \"signature\": \"0x00127bd29163215cf0a4b695f7514c11d9ee7a7d2c8440a1b957b02d7702ce0c43d93148fc30f3e8e9ed8fbbff9ad324841e42c08de4520ad6b00e3c946346f31c\"\n }\n}", + "project": "Governance", + "id": "d29d5158-2332-437e-9b58-deb65df48932", + "savedPayload": { + "position": { + "x": 37127.64571353076, + "y": 19869.20061129272 + }, + "targetPosition": { + "x": 37277.64571353076, + "y": 19609.392990157387 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, "id": "0a06a54b-825b-4ff4-93cc-36465348ad26", "savedPayload": { "position": { - "x": 36860.334960672, - "y": 19343.495242563044 + "x": 37277.64571353076, + "y": 19609.392990157387 }, "targetPosition": { - "x": 37130.625621042724, - "y": 19213.330120827777 + "x": 37427.64571353076, + "y": 19349.585369022054 }, "floatingObject": { "isPinned": false, @@ -17129,12 +17213,12 @@ "id": "abcc6b01-099e-42b4-84cc-24fb6daa7a15", "savedPayload": { "position": { - "x": 37130.625621042724, - "y": 19213.330120827777 + "x": 37427.64571353076, + "y": 19349.585369022054 }, "targetPosition": { - "x": 37229.70933962928, - "y": 18930.165121735266 + "x": 37350, + "y": 19059.807621135333 }, "floatingObject": { "isPinned": false, @@ -17160,15 +17244,43 @@ "name": "Social Trading Mobile App #1", "config": "{\n \"codeName\": \"Social-Trading-Mobile-App-1\",\n \"host\": \"localhost\",\n \"webSocketsPort\": \"15042\"\n}", "project": "Governance", + "signingAccount": { + "type": "Signing Account", + "name": "New Signing Account", + "config": "{\n \"codeName\": \"Social-Trading-Mobile-App-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x18d7d409ae20bece50d35d9a5e080e45ec8b749bc30853c3be1becf553b6d19e\",\n \"s\": \"0x3d25345dc9125c99d85c784113523cc04b3770db4a78e18dbbe9bcfb7a154654\",\n \"signature\": \"0x18d7d409ae20bece50d35d9a5e080e45ec8b749bc30853c3be1becf553b6d19e3d25345dc9125c99d85c784113523cc04b3770db4a78e18dbbe9bcfb7a1546541b\"\n }\n}", + "project": "Governance", + "id": "5dea7a2d-a534-4391-a801-a3bef25dacfa", + "savedPayload": { + "position": { + "x": 36900, + "y": 19839.23048454133 + }, + "targetPosition": { + "x": 37050, + "y": 19579.422863406 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, "id": "42843263-b1f3-4e4e-885a-5d8b9d7b647a", "savedPayload": { "position": { - "x": 36689.12801888783, - "y": 19190.4953652058 + "x": 37050, + "y": 19579.422863406 }, "targetPosition": { - "x": 36959.41867925855, - "y": 19060.330243470533 + "x": 37200, + "y": 19319.615242270665 }, "floatingObject": { "isPinned": false, @@ -17187,12 +17299,12 @@ "id": "de1b0ac7-1bcf-4412-af43-4597443c0ec3", "savedPayload": { "position": { - "x": 36959.41867925855, - "y": 19060.330243470533 + "x": 37200, + "y": 19319.615242270665 }, "targetPosition": { - "x": 37229.70933962928, - "y": 18930.165121735266 + "x": 37350, + "y": 19059.807621135333 }, "floatingObject": { "isPinned": false, @@ -17218,15 +17330,43 @@ "name": "Social Trading Server App #1", "config": "{\n \"codeName\": \"Social-Trading-Server-App-1\",\n \"host\": \"localhost\",\n \"webSocketsPort\": \"16042\"\n}", "project": "Governance", + "signingAccount": { + "type": "Signing Account", + "name": "New Signing Account", + "config": "{\n \"codeName\": \"Social-Trading-Server-App-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x62dbf304e3178ed47587598d9d7eb3def4f149c946fb59b6a6880334d4312c03\",\n \"s\": \"0x1803dfd451aa6fe660b70a789854875fb9996efaf64c5ca02c91a8e58afe94bf\",\n \"signature\": \"0x62dbf304e3178ed47587598d9d7eb3def4f149c946fb59b6a6880334d4312c031803dfd451aa6fe660b70a789854875fb9996efaf64c5ca02c91a8e58afe94bf1b\"\n }\n}", + "project": "Governance", + "id": "6285c67f-f669-44bf-8cfe-46309e6da4e2", + "savedPayload": { + "position": { + "x": 36480.66675633984, + "y": 19292.744761727605 + }, + "targetPosition": { + "x": 36770.44450422656, + "y": 19215.099048196847 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, "id": "0216b143-0e46-4da6-b2cb-e95556fc1bfd", "savedPayload": { "position": { - "x": 36663.37934144426, - "y": 18731.997684562168 + "x": 36770.44450422656, + "y": 19215.099048196847 }, "targetPosition": { - "x": 36946.54434053677, - "y": 18831.081403148717 + "x": 37060.22225211328, + "y": 19137.45333466609 }, "floatingObject": { "isPinned": false, @@ -17245,12 +17385,12 @@ "id": "b0db0d19-5529-4b96-ab4f-ac7d54e1e6db", "savedPayload": { "position": { - "x": 36946.54434053677, - "y": 18831.081403148717 + "x": 37060.22225211328, + "y": 19137.45333466609 }, "targetPosition": { - "x": 37229.70933962928, - "y": 18930.165121735266 + "x": 37350, + "y": 19059.807621135333 }, "floatingObject": { "isPinned": false, @@ -17278,7 +17418,7 @@ "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": true, + "isCollapsed": false, "angleToParent": 1, "distanceToParent": 3, "arrangementStyle": 0 @@ -17318,12 +17458,12 @@ "id": "a9484759-a37e-4c5f-a11a-964bc88371ba", "savedPayload": { "position": { - "x": 36165.4101775664, - "y": 18811.89932962496 + "x": 36567.838092395425, + "y": 19499.585369022054 }, "targetPosition": { - "x": 36361.09640094984, - "y": 18584.507812681324 + "x": 36490.19237886467, + "y": 19209.807621135333 }, "floatingObject": { "isPinned": false, @@ -17346,12 +17486,12 @@ "id": "a8bf7c62-5df7-475b-a43d-77c47cf1af5d", "savedPayload": { "position": { - "x": 36061.93526179549, - "y": 18606.926840757253 + "x": 36340.19237886467, + "y": 19469.615242270665 }, "targetPosition": { - "x": 36361.09640094984, - "y": 18584.507812681324 + "x": 36490.19237886467, + "y": 19209.807621135333 }, "floatingObject": { "isPinned": false, @@ -17374,12 +17514,12 @@ "id": "30d456e2-e263-4e12-a486-9f1aa5cc2bf1", "savedPayload": { "position": { - "x": 36133.704884006205, - "y": 18388.821589297888 + "x": 36200.414630977946, + "y": 19287.45333466609 }, "targetPosition": { - "x": 36361.09640094984, - "y": 18584.507812681324 + "x": 36490.19237886467, + "y": 19209.807621135333 }, "floatingObject": { "isPinned": false, @@ -17429,12 +17569,40 @@ "id": "e42dfedc-6906-4833-8737-44d5f45ab82e", "savedPayload": { "position": { - "x": 36361.09640094984, - "y": 18584.507812681324 + "x": 36490.19237886467, + "y": 19209.807621135333 }, "targetPosition": { - "x": 36660.2575401042, - "y": 18562.088784605396 + "x": 36640.19237886467, + "y": 18950 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, + "signingAccount": { + "type": "Signing Account", + "name": "New Signing Account", + "config": "{\n \"codeName\": \"Social-Trading-Bot-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x5031e2c0c479c5ca15c9328bc1c03df6a6c95b9a656185e435666154fbb8faeb\",\n \"s\": \"0x667728bba0ce67a3b691ea4c63d9143f42d03136e5314e50955bbcb111cb51f3\",\n \"signature\": \"0x5031e2c0c479c5ca15c9328bc1c03df6a6c95b9a656185e435666154fbb8faeb667728bba0ce67a3b691ea4c63d9143f42d03136e5314e50955bbcb111cb51f31b\"\n }\n}", + "project": "Governance", + "id": "363574ea-edf4-4cab-8b52-c04ce8f037c6", + "savedPayload": { + "position": { + "x": 36560.19237886467, + "y": 19002 + }, + "targetPosition": { + "x": 36640.19237886467, + "y": 18950 }, "floatingObject": { "isPinned": false, @@ -17452,12 +17620,12 @@ "id": "5167a23f-1e17-4cd5-85a7-3c7f2a3019ac", "savedPayload": { "position": { - "x": 36660.2575401042, - "y": 18562.088784605396 + "x": 36640.19237886467, + "y": 18950 }, "targetPosition": { - "x": 36959.41867925855, - "y": 18539.669756529467 + "x": 36900, + "y": 18800 }, "floatingObject": { "isPinned": false, @@ -17477,15 +17645,43 @@ "name": "Social Trading Bot #2", "config": "{\n \"codeName\": \"Social-Trading-Bot-2\"\n}", "project": "Governance", + "signingAccount": { + "type": "Signing Account", + "name": "New Signing Account", + "config": "{\n \"codeName\": \"Social-Trading-Bot-2\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1c\",\n \"r\": \"0xbd2b196f2f930a15a87c5a8aaa992a444bf0faa8e76a5caa7321a1cc9a2d4fdc\",\n \"s\": \"0x190b24c211994122a10664864d1d1a41c094bacb9c6c03d9bdbb76259550953c\",\n \"signature\": \"0xbd2b196f2f930a15a87c5a8aaa992a444bf0faa8e76a5caa7321a1cc9a2d4fdc190b24c211994122a10664864d1d1a41c094bacb9c6c03d9bdbb76259550953c1c\"\n }\n}", + "project": "Governance", + "id": "dc038dd9-ce63-4d0d-89ac-d8c97191bafa", + "savedPayload": { + "position": { + "x": 36723.19237886467, + "y": 18561 + }, + "targetPosition": { + "x": 36640.19237886467, + "y": 18650 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, "id": "c27748af-db60-44fc-a095-530401057beb", "savedPayload": { "position": { - "x": 36790.42266183947, - "y": 18291.79812423467 + "x": 36640.19237886467, + "y": 18650 }, "targetPosition": { - "x": 36959.41867925855, - "y": 18539.669756529467 + "x": 36900, + "y": 18800 }, "floatingObject": { "isPinned": false, @@ -17504,12 +17700,12 @@ "id": "4809934c-d45d-4565-a686-5d96bd695b4f", "savedPayload": { "position": { - "x": 36959.41867925855, - "y": 18539.669756529467 + "x": 36900, + "y": 18800 }, "targetPosition": { - "x": 37229.70933962928, - "y": 18669.834878264734 + "x": 37200, + "y": 18800 }, "floatingObject": { "isPinned": false, @@ -17694,6 +17890,34 @@ } } }, + "signingAccount": { + "type": "Signing Account", + "name": "New Signing Account", + "config": "{\n \"codeName\": \"Social-Persona-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0xad610ea563d92f743911519fd2aeaa975dcd68a2eeb0bdf7608e653899781069\",\n \"s\": \"0x3bafa717f124faaa58cac2ef2a7dbb3fba9fb39e0868a9563c03588c2f433d46\",\n \"signature\": \"0xad610ea563d92f743911519fd2aeaa975dcd68a2eeb0bdf7608e6538997810693bafa717f124faaa58cac2ef2a7dbb3fba9fb39e0868a9563c03588c2f433d461b\"\n }\n}", + "project": "Governance", + "id": "f7fdce94-4bd6-49f9-b7d8-383163ef2103", + "savedPayload": { + "position": { + "x": 37289.19189848183, + "y": 18276.606064796506 + }, + "targetPosition": { + "x": 37229.19189848183, + "y": 18287.606064796506 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, "id": "ed15b68f-c9e0-447a-9ef7-660db229244c", "savedPayload": { "position": { @@ -17722,6 +17946,34 @@ "name": "Social Persona #2", "config": "{\n \"socialHandle\": \"\",\n \"bio\": \"\",\n \"codeName\": \"Social-Persona-2\"\n}", "project": "Governance", + "signingAccount": { + "type": "Signing Account", + "name": "New Signing Account", + "config": "{\n \"codeName\": \"Social-Persona-2\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0xa0a840db6208d9f780bad53a54312e691cb629c9c718a2ea0ad2c80b73e8f5fd\",\n \"s\": \"0x53524acb6f10a4d0955a5a1aede8c0bade23396c9be599a0fae164a8eb785882\",\n \"signature\": \"0xa0a840db6208d9f780bad53a54312e691cb629c9c718a2ea0ad2c80b73e8f5fd53524acb6f10a4d0955a5a1aede8c0bade23396c9be599a0fae164a8eb7858821b\"\n }\n}", + "project": "Governance", + "id": "4fbd1349-c156-4716-8f7c-208f14241a4b", + "savedPayload": { + "position": { + "x": 37617.670272136376, + "y": 18269.84978460961 + }, + "targetPosition": { + "x": 37521.670272136376, + "y": 18220.84978460961 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, "id": "01c33294-124f-4d68-8619-8e1d1cca7e0a", "savedPayload": { "position": { @@ -17780,6 +18032,34 @@ "name": "P2P Network Node #1", "config": "{\n \"codeName\": \"P2P-Network-Node-1\",\n \"host\": \"localhost\",\n \"webPort\": \"31248\",\n \"webSocketsPort\": \"18042\"\n}", "project": "Governance", + "signingAccount": { + "type": "Signing Account", + "name": "New Signing Account", + "config": "{\n \"codeName\": \"P2P-Network-Node-1\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x6c2ef80f6cb8b4dd1203006fde816d29425fc3ae118caaf18705dbccf9b56ccf\",\n \"s\": \"0x024ca25e8145f4638d62b9b45906bbf7ce91201c1e513875761333301ba1db3f\",\n \"signature\": \"0x6c2ef80f6cb8b4dd1203006fde816d29425fc3ae118caaf18705dbccf9b56ccf024ca25e8145f4638d62b9b45906bbf7ce91201c1e513875761333301ba1db3f1b\"\n }\n}", + "project": "Governance", + "id": "f8feca97-5cf6-4731-a774-155fb8f8222a", + "savedPayload": { + "position": { + "x": 37650, + "y": 17940.192378864667 + }, + "targetPosition": { + "x": 37650, + "y": 18240.192378864667 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, "id": "56cc0c90-4a58-4e25-a63f-4f9a6921d0f3", "savedPayload": { "position": { @@ -17808,6 +18088,34 @@ "name": "P2P Network Node #2", "config": "{\n \"codeName\": \"P2P-Network-Node-2\",\n \"host\": \"localhost\",\n \"webPort\": \"31248\",\n \"webSocketsPort\": \"18042\"\n}", "project": "Governance", + "signingAccount": { + "type": "Signing Account", + "name": "New Signing Account", + "config": "{\n \"codeName\": \"P2P-Network-Node-2\",\n \"signature\": {\n \"message\": \"Luis-Fernando-Molina\",\n \"messageHash\": \"0x443abf3389e332a62d21b84dd12e271cb428d334195d3aeb986ca85ee53cccb9\",\n \"v\": \"0x1b\",\n \"r\": \"0x9323774a587c6aeef9a52cbf35b2cdc9543a07ac7010c418224f48ed44da8b8f\",\n \"s\": \"0x160bcfc59a7d10d7bcd33fcfee3bd399061a1b6fab54c3f355dae71dbb19dd04\",\n \"signature\": \"0x9323774a587c6aeef9a52cbf35b2cdc9543a07ac7010c418224f48ed44da8b8f160bcfc59a7d10d7bcd33fcfee3bd399061a1b6fab54c3f355dae71dbb19dd041b\"\n }\n}", + "project": "Governance", + "id": "0d4c4724-3c0a-4fdf-aaeb-4a282ae0787f", + "savedPayload": { + "position": { + "x": 38169.615242270665, + "y": 18240.192378864667 + }, + "targetPosition": { + "x": 37909.80762113533, + "y": 18390.192378864667 + }, + "floatingObject": { + "isPinned": false, + "isFrozen": false, + "isCollapsed": false, + "angleToParent": 2, + "distanceToParent": 3, + "arrangementStyle": 0 + }, + "uiObject": { + "isRunning": false + } + } + }, "id": "352cd906-c36c-48c7-8f01-728ff78b78e9", "savedPayload": { "position": { diff --git a/Projects/Network/SA/Modules/UserProfiles.js b/Projects/Network/SA/Modules/UserProfiles.js index 6a1a8aef3..ee068b497 100644 --- a/Projects/Network/SA/Modules/UserProfiles.js +++ b/Projects/Network/SA/Modules/UserProfiles.js @@ -97,39 +97,29 @@ exports.newNetworkModulesUserProfiles = function newNetworkModulesUserProfiles() SA.projects.network.globals.memory.maps.USER_PROFILES_BY_ID.set(userProfileId, userProfile) SA.projects.network.globals.memory.maps.USER_PROFILES_BY_HANDLE.set(userHandle, userProfile) SA.projects.network.globals.memory.maps.USER_PROFILES_BY_BLOKCHAIN_ACCOUNT.set(blockchainAccount, userProfile) - /* - Each User Profile might have Signing Accounts, meaning - accounts that can sign on behalf of the User Profile. - */ - if (userProfilePlugin.signingAccounts !== undefined) { - let algoTradersPlatform = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.userApps, 'Algo Traders Platform') - let socialTradingDesktopApp = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.userApps, 'Social Trading Desktop App') - let socialTradingMobileApp = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.userApps, 'Social Trading Mobile App') - let socialTradingServerApp = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.userApps, 'Social Trading Server App') - let socialTradingBots = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.userBots, 'Social Trading Bot') - let socialPersonas = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.socialPersonas, 'Social Persona') - let p2pNetworkNodes = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.p2pNetworkNodes, 'P2P Network Node') + let algoTradersPlatform = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.userApps, 'Algo Traders Platform') + let socialTradingDesktopApp = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.userApps, 'Social Trading Desktop App') + let socialTradingMobileApp = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.userApps, 'Social Trading Mobile App') + let socialTradingServerApp = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.userApps, 'Social Trading Server App') + let socialTradingBots = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.userBots, 'Social Trading Bot') + let socialPersonas = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.socialPersonas, 'Social Persona') + let p2pNetworkNodes = SA.projects.visualScripting.utilities.nodeFunctions.nodeBranchToArray(userProfilePlugin.p2pNetworkNodes, 'P2P Network Node') - let networkClientsMap = new Map() + checkNwetworkClients(algoTradersPlatform) + checkNwetworkClients(socialTradingDesktopApp) + checkNwetworkClients(socialTradingMobileApp) + checkNwetworkClients(socialTradingServerApp) + checkNwetworkClients(socialTradingBots) + checkNwetworkClients(socialPersonas) + checkNwetworkClients(p2pNetworkNodes) - addToNetworkClientMap(algoTradersPlatform) - addToNetworkClientMap(socialTradingDesktopApp) - addToNetworkClientMap(socialTradingMobileApp) - addToNetworkClientMap(socialTradingServerApp) - addToNetworkClientMap(socialTradingBots) - addToNetworkClientMap(socialPersonas) - addToNetworkClientMap(p2pNetworkNodes) + function checkNwetworkClients(netwokClients) { - function addToNetworkClientMap(nodeArray) { - for (let i = 0; i < nodeArray.length; i++) { - let currentNode = nodeArray[i] - networkClientsMap.set(currentNode.id, currentNode) - } - } - - for (let j = 0; j < userProfilePlugin.signingAccounts.signingAccounts.length; j++) { - let signingAccount = userProfilePlugin.signingAccounts.signingAccounts[j] + for (let j = 0; j < netwokClients.length; j++) { + let networkClient = netwokClients[j] + let signingAccount = networkClient.signingAccount + if (signingAccount === undefined) { continue } let config = JSON.parse(signingAccount.config) let signatureObject = config.signature let web3 = new SA.nodeModules.web3() @@ -138,19 +128,15 @@ exports.newNetworkModulesUserProfiles = function newNetworkModulesUserProfiles() /* If the Signing Account is for a P2P node, we will add the node to the array of available nodes at the p2p network. */ - if (signingAccount.savedPayload === undefined) { continue } - if (signingAccount.savedPayload.referenceParent === undefined) { continue } - signingAccount.referenceParent = networkClientsMap.get(signingAccount.savedPayload.referenceParent.id) if ( - signingAccount.referenceParent !== undefined && - signingAccount.referenceParent.type === "P2P Network Node" && - signingAccount.referenceParent.config !== undefined + networkClient.type === "P2P Network Node" && + networkClient.config !== undefined ) { let config try { - config = JSON.parse(signingAccount.referenceParent.config) + config = JSON.parse(networkClient.config) } catch (err) { - console.log('P2P Network Node Config not in JSON format. userProfileHandle = ' + userHandle + ' NodeId = ' + signingAccount.referenceParent.id) + console.log('P2P Network Node Config not in JSON format. userProfileHandle = ' + userHandle + ' NodeId = ' + networkClient.id) continue } if (config.host === undefined) { @@ -161,22 +147,22 @@ exports.newNetworkModulesUserProfiles = function newNetworkModulesUserProfiles() } let p2pNetworkNode = SA.projects.network.modules.p2pNetworkNode.newNetworkModulesP2PNetworkNode() - p2pNetworkNode.initialize(signingAccount.referenceParent, userProfile, blockchainAccount) + p2pNetworkNode.initialize(networkClient, userProfile, blockchainAccount) SA.projects.network.globals.memory.arrays.P2P_NETWORK_NODES.push(p2pNetworkNode) } /* Now, we will extract the information from the User Profile, specifically of our identity at the p2p network. */ if ( - signingAccount.referenceParent !== undefined && - signingAccount.referenceParent.id === SA.secrets.map.get(nodeCodeName).nodeId + networkClient.id === SA.secrets.map.get(nodeCodeName).nodeId ) { - p2pNetworkIdentity.node = signingAccount.referenceParent + p2pNetworkIdentity.node = networkClient p2pNetworkIdentity.blockchainAccount = blockchainAccount p2pNetworkIdentity.userProfile = userProfile } } } + } } } From 0162fc71d522ccb39fe4b6f22cd943ec8424a7c2 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 25 Nov 2021 13:08:13 +0100 Subject: [PATCH 10/13] BUG FIX Governance Signing Accounts --- Projects/Governance/Schemas/App-Schema/signing-account.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Projects/Governance/Schemas/App-Schema/signing-account.json b/Projects/Governance/Schemas/App-Schema/signing-account.json index 4e4ef3d43..fc0962bba 100644 --- a/Projects/Governance/Schemas/App-Schema/signing-account.json +++ b/Projects/Governance/Schemas/App-Schema/signing-account.json @@ -31,6 +31,6 @@ "initialValues": { "config": "{}" }, - "propertyNameAtParent": "signingAccounts", + "propertyNameAtParent": "signingAccount", "childrenNodesProperties": [] } \ No newline at end of file From 539a6db158ba1ee3d12aabb1baafdf029e9f2d24 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 25 Nov 2021 19:21:11 +0100 Subject: [PATCH 11/13] New Project Trading Signals App Schemas Implemented --- .../UI/Function-Libraries/TaskFunctions.js | 1 + .../App-Schema/social-trading-bot.json | 16 +++ Projects/ProjectsSchema.json | 25 ++++ .../Icons/available-signals.png | Bin 0 -> 15217 bytes .../Icons/cancel-order-signal.png | Bin 0 -> 15217 bytes .../Icons/close-stage-signals.png | Bin 0 -> 15217 bytes .../Icons/create-order-signal.png | Bin 0 -> 15217 bytes .../Icons/limit-buy-order-signals.png | Bin 0 -> 15217 bytes .../Icons/limit-sell-order-signals.png | Bin 0 -> 15217 bytes .../Icons/manage-stage-signals.png | Bin 0 -> 15217 bytes .../Icons/market-buy-order-signals.png | Bin 0 -> 15217 bytes .../Icons/market-sell-order-signals.png | Bin 0 -> 15217 bytes .../Icons/open-stage-signals.png | Bin 0 -> 15217 bytes .../Icons/take-position-signal.png | Bin 0 -> 15217 bytes .../Icons/trigger-off-signal.png | Bin 0 -> 15217 bytes .../Icons/trigger-on-signal.png | Bin 0 -> 15217 bytes .../Icons/trigger-stage-signals.png | Bin 0 -> 15217 bytes .../Schemas/App-Schema/available-signals.json | 100 ++++++++++++++ .../App-Schema/cancel-order-signal.json | 35 +++++ .../App-Schema/close-stage-signals.json | 92 +++++++++++++ .../App-Schema/create-order-signal.json | 35 +++++ .../App-Schema/limit-buy-order-signals.json | 68 ++++++++++ .../App-Schema/limit-sell-order-signals.json | 68 ++++++++++ .../App-Schema/manage-stage-signals.json | 35 +++++ .../App-Schema/market-buy-order-signals.json | 68 ++++++++++ .../App-Schema/market-sell-order-signals.json | 68 ++++++++++ .../App-Schema/open-stage-signals.json | 92 +++++++++++++ .../App-Schema/take-position-signal.json | 35 +++++ .../App-Schema/trigger-off-signal.json | 35 +++++ .../Schemas/App-Schema/trigger-on-signal.json | 35 +++++ .../App-Schema/trigger-stage-signals.json | 84 ++++++++++++ .../TS/Bot-Modules/TradingSignals.js | 128 ++++++++++++++++++ .../UI/Function-Libraries/ActionSwitch.js | 31 +++++ .../TradingSignalsFunctions.js | 73 ++++++++++ 34 files changed, 1124 insertions(+) create mode 100644 Projects/Trading-Signals/Icons/available-signals.png create mode 100644 Projects/Trading-Signals/Icons/cancel-order-signal.png create mode 100644 Projects/Trading-Signals/Icons/close-stage-signals.png create mode 100644 Projects/Trading-Signals/Icons/create-order-signal.png create mode 100644 Projects/Trading-Signals/Icons/limit-buy-order-signals.png create mode 100644 Projects/Trading-Signals/Icons/limit-sell-order-signals.png create mode 100644 Projects/Trading-Signals/Icons/manage-stage-signals.png create mode 100644 Projects/Trading-Signals/Icons/market-buy-order-signals.png create mode 100644 Projects/Trading-Signals/Icons/market-sell-order-signals.png create mode 100644 Projects/Trading-Signals/Icons/open-stage-signals.png create mode 100644 Projects/Trading-Signals/Icons/take-position-signal.png create mode 100644 Projects/Trading-Signals/Icons/trigger-off-signal.png create mode 100644 Projects/Trading-Signals/Icons/trigger-on-signal.png create mode 100644 Projects/Trading-Signals/Icons/trigger-stage-signals.png create mode 100644 Projects/Trading-Signals/Schemas/App-Schema/available-signals.json create mode 100644 Projects/Trading-Signals/Schemas/App-Schema/cancel-order-signal.json create mode 100644 Projects/Trading-Signals/Schemas/App-Schema/close-stage-signals.json create mode 100644 Projects/Trading-Signals/Schemas/App-Schema/create-order-signal.json create mode 100644 Projects/Trading-Signals/Schemas/App-Schema/limit-buy-order-signals.json create mode 100644 Projects/Trading-Signals/Schemas/App-Schema/limit-sell-order-signals.json create mode 100644 Projects/Trading-Signals/Schemas/App-Schema/manage-stage-signals.json create mode 100644 Projects/Trading-Signals/Schemas/App-Schema/market-buy-order-signals.json create mode 100644 Projects/Trading-Signals/Schemas/App-Schema/market-sell-order-signals.json create mode 100644 Projects/Trading-Signals/Schemas/App-Schema/open-stage-signals.json create mode 100644 Projects/Trading-Signals/Schemas/App-Schema/take-position-signal.json create mode 100644 Projects/Trading-Signals/Schemas/App-Schema/trigger-off-signal.json create mode 100644 Projects/Trading-Signals/Schemas/App-Schema/trigger-on-signal.json create mode 100644 Projects/Trading-Signals/Schemas/App-Schema/trigger-stage-signals.json create mode 100644 Projects/Trading-Signals/TS/Bot-Modules/TradingSignals.js create mode 100644 Projects/Trading-Signals/UI/Function-Libraries/ActionSwitch.js create mode 100644 Projects/Trading-Signals/UI/Function-Libraries/TradingSignalsFunctions.js diff --git a/Projects/Foundations/UI/Function-Libraries/TaskFunctions.js b/Projects/Foundations/UI/Function-Libraries/TaskFunctions.js index 4e1884a41..3e945c6ef 100644 --- a/Projects/Foundations/UI/Function-Libraries/TaskFunctions.js +++ b/Projects/Foundations/UI/Function-Libraries/TaskFunctions.js @@ -122,6 +122,7 @@ function newFoundationsFunctionLibraryTaskFunctions() { 'Trading Bot Instance->' + 'Learning Bot Instance->' + 'Sensor Process Instance->Time Frames Filter->API Data Fetcher Process Instance->Indicator Process Instance->Trading Process Instance->Learning Process Instance->' + + 'Social Trading Bot Reference->Social Trading Bot->Signing Account->' + 'Execution Started Event->' + 'Key Reference->Exchange Account Key->' + 'Task Manager->' + diff --git a/Projects/Governance/Schemas/App-Schema/social-trading-bot.json b/Projects/Governance/Schemas/App-Schema/social-trading-bot.json index 8c48020a7..6b80b1421 100644 --- a/Projects/Governance/Schemas/App-Schema/social-trading-bot.json +++ b/Projects/Governance/Schemas/App-Schema/social-trading-bot.json @@ -18,6 +18,16 @@ "relatedUiObject": "Social Trading Bots Following", "relatedUiObjectProject": "Governance" }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "availableSignals", + "actionFunction": "payload.executeAction", + "label": "Add Available Signals", + "relatedUiObject": "Available Signals", + "relatedUiObjectProject": "Trading-Signals" + }, { "action": "Delete UI Object", "actionProject": "Visual-Scripting", @@ -53,6 +63,12 @@ "type": "node", "childType": "Signing Account", "autoAdd": false + }, + { + "name": "availableSignals", + "type": "node", + "childType": "Available Signals", + "autoAdd": false } ] } \ No newline at end of file diff --git a/Projects/ProjectsSchema.json b/Projects/ProjectsSchema.json index 0d393a901..156ec0498 100644 --- a/Projects/ProjectsSchema.json +++ b/Projects/ProjectsSchema.json @@ -1740,5 +1740,30 @@ } ] } + }, + { + "name": "Trading-Signals", + "propertyName": "tradingSignals", + "UI": { + "functionLibraries": [ + { + "name": "Trading Signals Functions", + "propertyName": "tradingSignalsFunctions", + "functionName": "newSocialBotsFunctionLibraryTradingSignalsFunctions" + } + ], + "utilities": [] + }, + "TS": { + "botModules": [ + { + "name": "Trading Signals", + "propertyName": "tradingSignals", + "functionName": "newTradingSignalsBotModulesTradingSignals", + "fileName": "TradingSignals.js", + "folderName": "" + } + ] + } } ] \ No newline at end of file diff --git a/Projects/Trading-Signals/Icons/available-signals.png b/Projects/Trading-Signals/Icons/available-signals.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ee2a209ae5922e1d49d3686dfabf910a979d02 GIT binary patch literal 15217 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

RpcMz)%$uM4rLoL`Z6O>#hyp!} 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

RpcMz)%$uM4rLoL`Z6O>#hyp!} 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

RpcMz)%$uM4rLoL`Z6O>#hyp!} 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

RpcMz)%$uM4rLoL`Z6O>#hyp!} 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

RpcMz)%$uM4rLoL`Z6O>#hyp!} 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

RpcMz)%$uM4rLoL`Z6O>#hyp!} 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

RpcMz)%$uM4rLoL`Z6O>#hyp!} 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

RpcMz)%$uM4rLoL`Z6O>#hyp!} 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

RpcMz)%$uM4rLoL`Z6O>#hyp!} zk~?Jo7l$6cpqVNOSHaTX#0(6OBq)I)ho<)5NdQcqW4X*uSLW-Y08%)zKy8wTwcTgc zaldh6DNk1$yFk6#OS-=_=iq9W&}%7NiwmjbAj~lRFv#RzCBGqTCGL>5+xL%*U!SXBiPb|1Gjec@*Hqf3Sg2| z+YNTQ168O%HsP@j<3$9vTL~g9VgaR)aLH}=^szzBDR{jEArD_9Xe5}zX=P!?xm@_g zS%}q=H~=OtVV4%l5`%LbIY(<~*S!GH$62Pv3y_#N4h57cn3H13s!4*&dVJENHNb`X*<9Yb`8EIUK3#oAp(-IPY^Eb}{ zPrvjBKv_}v*Wy$*2CLhGv&p3#xsoLW0hPE)*gRAk2j3IM1ueaXWN2XV+_9CU#(DU* zJx9mjsySW+w%oBPCqB(3Bv5;;C;;$F;g7<;xGb751?U!B_gi^9-u4X23uw6t`}7M8 z!&<@~Rs!siOJ#~dLm>DDwMCctZkpjqsDdHaJ^jm^zndrxfG?xMP8u|jp*;I+0Z!-j zOg`Y=R+wf2h=Eqbjj({U!O)t0eK$KFWQ7PVo-m$3D6pq6S|BpcB(C$1k3ORTM=6_*;;MNxS6G`? s;XgsX@9Cd?db;7)==oRjS2utP*pK@b2SveVAi82}vo zi322l_}}cwFU#=1HIdugBKL*)MaFm^_XXBIVMlx^J43wveVu*1ePSa%_*w#BA+^)i z+T~>5Sni?A9)Ge22SQ^?1WJdSi&P1g`_6du1U(B3utpU>HXQhQEYQjLVurwTeKj>B z3Dcm!y{>{Sb~%f$FQrHxl!~xEI)6lZo6X7<34G{4R?*dbo1f41Q5PRciE9B07PQm# zBU`W;@64vo@yF(#lkX=rb6xs3M$esgn46*V+GeaK(-2U&xgzdW?|jpJvTHMc)qa-UE^YlNQ>zze?lPvz)szUk9Mf!~Rr z3xIq^^pEg+d(7S>s7eY7S&9G>00RkUWE;z9^spVQ;_DX)G<}~0wp~to`^7ibmkLM# z0qm{JuYd5>?-Hha-1VF{%gaq-$ zoWOSjJ|^P8X>-{l@hsoN&rVx1$Ovd9F+yfZaAni{ z@zu)`fUVJS-p?AYD39TJdSPLeHakVU=YtYlCF>84ia#R`*koa890BMma;}dXmCC{O zbr@cj=O=)BjJiO{m-Ne>@Oy*i?0dQfP0kcRc?EgLQwwHP0mZ}5S+)JhdK`ySMzH3` z9u583kU*tP4f(SU?mlh0=b5w_V8^iY?8LLF}M<1n3F8& z&rF--NiwHEIGPG(9b9F5>YdpD&0%;R;wlX6j-j#viy2UXe#D*7<->t7F^&TJE|>E# z27bPG%;*CLoF}OQ)@SyB{r~160j;bX`8&lC;KPLn;w!j;`+q-a0Ju{r0BnK+blN^u z&_IS_7aEfepMyM@$#DwoON;Z^V!)J{x9zgjI|P-))74v+bBg#ONB5f_gwihEXCdg3 z1kCp4oD>IP`Q3b^$ojok2{f)*>>Mgs!%P3)(4+P_zwHqPLIhy8v5Twwyc4Lv>|%Vh z^5MR+|nPMiNM28R|Z*YD7#gF^^}$RN37EiWB{i51CezI0Yr-MQilGl zD}|y$-v_v|62~MBsgVybVzj3-qZ*^gd+hv;)>P`+1CVKiP^G=b^OFmv32M& zuFi^}FqSBJe%TQ00#5oy8f%nnJ%K3ApuW!g+W#n=y&TVfER&Xap9ao~b8^m~q5|6X zF1dD}_2R&ah(gXiG7C;{2x9`*Rx(2!GQQ-{F5`ot3K?!)#4klvKkOnhS!r-l; zH2x*HD8LisXzdHv$9u_v$`7+p^@ix;MFAW{(bdSD4}Kl74Ty6PAda-_X8?X7&d9EB zyQheQMo=PbtBy}E(izqy^l<{Ug9|T{mzceX(yEA8KT*;dDkIpY4jflom#y(uv{_f7UclLvqD*B~uUwY`+Tz;^Xm z)$k%YiRov|%R6t~KB>k#HTR*rMdnGxukQbZ=#80(0TD3M`O=$70jl7u7|;DZbq}3A z;dn3X3^f{ALx-rI^2Bf!@dUcsHrf|EDu=h*s0rst{kGEihijU7;A1>#_W zj~+62I(bmeW5)~n9QbXGqiv-~@j=UTJJvuFF(QGO1bRdJEb;bKfpW(`J@mEJY~Uld z&=b#_g{`%I&AmpthOFt6{nA6ZfH^F7X6qc6O82J+(y^$~Zp9NLB1gZ+np8PpSGEx= zrS)@galyE+@W6SRz5I838oMeIv$p$&rW7K6iP5d*9e!C6q#4|JcO%3M%==;K=e?Mc1t<=^U=%) z>pmEfYRy6GKdTdXirLN8Q>_Xfi|~%UW~Y&-B*$0ukI#nr-pcy%*ZP8`Oft~SY0s4c z!#AiSJoW~MK1@OKO)wzI&Ed`VUy1&NIQ?zAL7lqsN)zkEwa~>)9jZS&2%uUkVcYdB zPIj^Oe_8VUJLCzCf8dx~U)iH%pryHZl$*Gq>l(4>xaLc2c>8&alqx@UF|i(W-+hp& zfqXn1ICX~6X4cE~T(GvTpzExm-CIaY(YQhRF{SqK_I8EB=;|rITr(lc3!d0aFk|w} z;_o(XWnetz4#t(fhcxF9M-M*7c%u__1M#lNi~#dMq$^7oN1;z;=1$A@QqQJw_0RlT zxz5WuM?we7yX3sCFHxuNHes7<>fD51xrSBYw&u$ms_2dPN)uWKis&TV1588tLy*RJ4GrUdb zi18b{bm44Y@K#OEOO)tkFtnUR@md}L4`--hQ*FH4LAUK|TX*rfV}Qn!kIs1#*4h_> z?wv2@@`O2z|BcLum<@N;cJi#J@&*gc*0nsRx=c(2d+n1YTnI-BL`$F(sq zd&w_&rYt=5bA9I=zrRNES(VXVhM&U`DfiZ$l- zxmpE%9r2s@9GtH@I8hd~Wj5aUnmht@-j^#%fF^%z-}xMThN3iezEFO@Kr~M-Tez4!-(4htQ!MNP}IL(*X zp={p%D*O~bnO3RfYC<@m3IaHZrON1ax2G=5?)#MFe`ae7IY+i*I!UayCeVQeL(&iJQKMR5aemu2u#ucA-;Bw9t+2&vKtS+uU|W zIxv3P-Ppq0ylx?5tlrD`v%J}V-HH##4VcC&{{3XLtK5a@$wGUkdK|{d<^JpLwM+;# z;D&(`te*OOLrM9!uqbm7yn+vdn(NyxKFPuURN{8|d;Rltm zMW;QzboEn9A`2=PY0=9`j=bjNg`3v}c%L~$9e!}AB0g@CzBmtu~tz!e_Y_dQ01DxggwuUrS}LPlrn76N&RTLX{Tmb8h27j&(RV6s)l z1#@h4EVAy0gRR8bt@k&U8X~lLF<*ADP42#4ddocKC)6fTcu*SALywArUaGW?_KxC1 z5j~>Pwz-Vfu3@?{#vnc`m0bPG2Qvfs`YAGtFZ??~SxI{Bz2YguxH3$Ko_V2=Q#G(F z;9ce7ap+hb-PElIJRGM-T~s5zM(t&=jclw+S0a(WEx%CMai z>J*@Kc9{On8>70|40j++(V&r+FC748EmzuBdwcK6Dhez*JjBMnJF>^oN-;$$o=r{=AC0;9~kI{piQh4)8>AP2c9*tqU zP2cp-vuvP)>bGA4N1@G{uc+rH7<#Sb-H*H>SZc^9Z=UP74;Wwc9KoCvMN)_=&?pDJ z#M8#fyAsFgSD0Hky;kvag3!=<%-6k$T=vX0k^t9wjuk`y9J3G4V-}5hZUJoh-1`Yd z_U%txyx<9ld4}ajYZ%K11azNiawVc;f)+$+vfxJ79NtV)K>2 zB18tHemAfU~uqVDNS@^0Pv&QaYnQ>_MEv0(2~JH)BSlvd8O&JLI+cVLz~?&B24 z>813Nq^%VM+08_@#Dqv1H!%hVp?ZRsUO+npx98H~n_uN%h!Jz^=Pb44qTk*Eg6to- z{Wgz^td^>)?#!7AA)WqM?0E$w!$wtPVVeo!aGc7tuU(wUUi@rI+k@v6MFep^meaI0 zt@tmBxg{S7o$zDjzoJ|BaTY8W@FTQ?`2SSex21bw9u@IhE|o~Oh4=#To{#0wE_6g$ z0I_f~Q_n@V{l)yByf-+C6uwy){i-!3#i>6mefop|>LE%qUz*(Xl~^Kjo!>A9bw)&4 zv{$k1Sq(4Ui6z;JGxq$=qrhNZuE;0g->=FDr*88Z`!i>!3XUE;x|bF4x?O7W)jI`r zT#J9Qa5pemmb>NkJ8|KsA)|2@U$zZszn%&e&ncA;>VRJlxpx{HIKr*>-KsC+gsT)* zK#J5;{_q=!fwAAK{GRwv2(9_lB-*8NM(w#Xf@6vqi&3n)7UgFUmd5-xoELKgBbI>P z#1x9QEbb!R#}Q}_G3+{=9E14qO@{*Mjo@)&X8a_^du{ zI##}>>sA%ESF?#gLM5+CQ6$1S6fVxmROl*Lbgskp4kRJl>gfq=v2X_T!o7qydVH)N zO{rSh2(QQFyRT9;PY*ZUq`6<#8}I$H;Bnj90q+CpCgEA(s&2A;@n=DXVEN&p zRr-PAUz8A(H@w+(VJ&D4A$PO$G)4u(krW)i7TEvWp7`z;F=O0R$kB0b_NcRF0c~ zOq-Om+EQ8;(5PRIT{@k-kJ1e;ZVPR~Q~i{^*z)mJl3daW? z3th6<#kcLw=Sx?lx=bBVtD}p52tX9j6!WfxL`}y9jpm&K$F}VWs&-LJ17-tuCy8RN zDv`HJcIg@OZOz+wrdN_yjgf)#jV_NrW3zQ8|Mg(pc6V*F*+aYdVwq%cW2Neae@72x z)nL*TFNud4ZwW!d%e`Tb0 zV8Lr|Z!WP|GS`vu=@<5nExoo&;~vm^Gabhjgg62Ssq6!8ee-qNP@nXIJC#=rL?Ye3 zXO{l?a8C|(7MvAtdN~hn^;>;6XvT<@S}Xg-&`U+-Pk7X+J$AeK`VKs-Wyp~Y|ITrR z8v=J+`LNhfgnxeb1fsw-13nl~@xcxYpbj@IJ{Zh8Gotx8$21}w;q0@n#W-}C3hyax zsv;{?bB$jOUbR)pX+3(LR%!O24IabUWDRU1w{4?&jEtS|*E28(6)a7>nI!^r-pu|X z(9-8{;T9`$4x51N+vE3f1CEB5i3C;PwUiZ~47`9iO2*L+V$b=+`-WV#r{>n$#CcYN zv^xyiD*B)|2=Ne5D%Ntd@Ky-$kb3;Tb4UA?3|0MOG5-Cjzh7RUiHLN_6OQUWgC=!tMTJ&5oMs4bdLk z3ixo5$>R_v7gGi|F+p3|YS9g!%gyDC0v~8>)yGkCf!RlMWNiZ-I$VQ$i&^zalK!km zN!}Y8uF@_?I}pYqfkKf4EupC&69>Lqr2Vg*x2{6;TKem9|FOaYFHcH?JzYe00u*DC z?>BIr&tr2E?WMxjTNg-v_vHuH1Ky1}#O?tW$NQ5b4oWNqd3wp#Jf#!n=9?%bqD}tohq;Xo-ga^);m2F| zPzU;=al-okB2cTne1H8!aX5Z-t1lQAFIlq;m>aq(gaAK4|F$S1W_dut59_ZV6B~~UQxN>!WWB>c>+UxKtENck?3HpJbbOBIJJX`S zmZTKz0EE^WGXM@PMg|v_P3H2`E}2yid|x<^NAd03Ksz4P|C*kq&H;4YP&?(|A#^UM zlIndTLX1^4{>ujwx72gQ)K@CR4~mJrMo71zH?_TA8I;l~D={Zm$a8d|z4~a16t0uh z_>WZyLU4cx65e-?)9tY``GZZM+lil~1mP+&0nFFEeMP@)0!EbqNT|DOz->F?f-CuV z8EnVdz=iR{v$g7BUbz6k%St&SpuFwmr#-+n17A?`6$vPj7T4}uF4%zTZC$9t>mG2! zRWghaTmb_BgHmiVV!oyW3<3H*0*Dp@Xt1Mwm}OOn=DSnp8COgh^%eD4{(+&R$AV-(8HsNHclR8 zS51Io)u}h(k`%&)rVgxh0sCLr*@7M?xX3b%z1ECAb=2!$BoRS#4=D(!{+yn#b6D$R zrQEOJsV0S!e-cdNE_2NWaUbR(KkXoq9mtjV>1xxH>BC=nx9#8Jp7}> zU3;;xjULi$Q7kF`(Tn44G0>f)PGnpqw9h=1|7mv&k zdZ}*ua5G;Q@UvdGyP6!T*x^3fYm}@LKH@fgYF>EM$Zo3Q*@|bl<;Ht3kxXpp*|c|4-EoK-cIJhnw; z@#?q9e{mj)G_V>r?Qzu>cYg$tKhf~H^B z`0}tO-ub#{m*d_mVJghv z(=&5&Bjf+w5R_hg-(h&JHaexK4F_jeH3#f9FxW73Fw7W|$6VK%t3(=2`76<{4#G5y zxXMk=!cu0~5!Evf`gfl1z3?-B^!xJZwYs6T`b&LLv)sIs$^L}ZaXlF0)8^Z5^9wub z>P`}#e&ipmJ<{CS?b$dRRrTf5fKHgoy(O3r6W4$PJ2q4%-4mdjG#G&4z< zOC?=vp!)Q$N-(&GN32)v#|SobCLJ+&Z-_dUaK#d~x>LKTvu(EstQ|#oXvUQOw8soD zCs{9Ekc8O&2JcnW`tdnxxKw^j#*$nt!H{rH6o0^L4Rph)cd=>5e}y;Y=i-L$2a8DisW_bNw6n7Js(+|J>bh+4$2`*}EtIbQ)49+xO7Fa8=1Cl!(IL znNR2+Zy%Ba<@s^z3FjuyF4Hqw3_rPX5vsSs^FXCRGHdaY{TIHRMhnkKjTqRba;Igi{l7xU0K zO@I-A2~6SmEcb8tXVTPz#l>aGQLi+Ss+IV%+aYPdsY|T9$$eQ(jgLa+FptK=T~U#B8%LjR@@r5|rnK{!Y-#tuRs_>3PAWUX z0YohPPJQF;7ch7E`({#)ppuN*i`yyDOcKThEm;lB~r+xDD2|%;j-`H4KlbF15vh`sw1Y8080VZ&+9kCkWves zcsTI$4;I+`=x7n2%asS9+yZ2)$sY}5$-wO#%z&;EgtZi*r~ioZVfMwZt)qCSqw~wX1rhV>OQP};T&t=90d1lspg#g!>#X^f0PeczOF`hpXsXX{IGE7EkyUP zetV+K*A}uzFD`B*rKF2JpR~l@`c0`GX0Xtk505VAMLp!#Q?z{U%qZXcn82JQGyRCn zG9q9JeBrjuQXPkMWgcF2VmP;)wQ5zW9DD{Z4sA>1I1=zok8R%^zUX2RrU)*ng|4;t zXBX~=Fm1lR9yo|GtspxyTR@?x(hgYM!Gw|@8K#$Cy)Gyk*PTVCZ}@O4Zb(tSKn{#} z2Xu4p<0!s2{viFIep4S{=N>M9c4n9lciIk3dv7+zZ{6Y{{VOT6j30&)O)zar@u!8N zXVFVnPzB}x1i`}_UAu7XiXt%z_-K6)bKSsUD7rltPg7?~GJ;IzTEvcH%wzE{uYoMz zIF{d+rO6QveGHTQWNl6)9}jB0qM*3h0(tBky$)$V0tdh?NaA`j6sLaLgwF9VmX;wN z`7erqT@21ZT#F)G`!8+=rhfj;zL9cp8-*TE1M-kG$6u+28^WW4^sg0@KwSM0FYP?R z*uBu8F@XnRhF>~OE;2>4#}2mKg#KU|DO{Cxto`aoV9$Scy2_`Aj6>N2a|= zh&@MWN!?$z)E(Bus?52QFts$zQpHu@H3S9tgmpN!T+zNB9MfoMWcl~g;~-Eq^eDy2yjZow^s?#Qcw~KoLuu_Zr;X~ek2@I`*Ody>DbyYr#nwaOH^Y) z+vlQkS^h@m0uoHy^U*B}E;#YB^H!iv>TW{Lur%{OjaAgd!pY?kI!sR!av$r>-&$S` z3a&)tF?Ic3a{o38x*|B%QQ6(X54B}{U^poAFgARThqjq{xO#r!eBCZ}=nkIkUf98i z?rU9ma5uFjenKMStp^pywu>D1YT?)-)w?VXVO^e)CUt9w4fEd_@dUnJ>hG;<%3DQB zKJk@Q?UXpfwyP5bCv&*n6`6do41p3EaqVW_X$i2yjY?RAAnbmteMc%PEv`~Z) za<~iHP~S|UZ3-2oBpGHa9eU;^Xw$n;B}kjHLWJsL_s&7&x!dlTz2gJthUr$&cmvt? z1A!QwDhl+_U+r8^Wqa%dY5toHtCtS&jsecCDzSKmqh@}9qE{P zYWKP0mB%M!WEo>*mOjy|lkrRF0@zf~D;8Bgdgd>0M}&umSIs#bElC=Y7U#fh#Da01 z|Gm^Ymm6EtUqlHd?2T#+xk_rk?~E=Zk!wp1uNQH9$1mjgy)43VW2If&x|MhW%RX}4 zH{_djE=0cPo^V%h=IHZSweKnqm2uVbQo)I!GSLKhX0P`EMdsnJqC!_r>MWPmFJI%@ zU<+F_cM&9kBo6BDi+j2BZ*%iC#S5tsVHEv7Ubl7w(wOm9w5vy?kvD#?%q2|#`l~X} zVqdo|ys#4kE}2|0HE@^)D)AlIn5It0kn*>MWpz9@g3e z0<OS9 z8%3TTak z27#u*KO})(9_=c2tZlb8R@ip>$h%aVK#lmF|be@8fEYNh%Yrl=_>r`Wnsn?)6V#&D;O?o}<0kAG+cXbKS9tuQr~X za!cz#oaQmb2?o^%X7i+Js3>cf9e8tuZL(tCZSrSw;{DfZqz6k&Rb1K3Ep|fEE~1%t zG6g0Q>8tJ?JclH7H&n`!xKmFGU6@66OZOD#c+o?=q%+O7^;o?nz1|K9`zelNIl5>! zp8xpJg*lCyH?EhV*?+r_>s-7(7ZyGHUJME?wPq>)o!mb?c@ZU*48d^Vx)vf{cbIk= z!vnmMmkjE`yutEm0GDgLTp>)P*(>_t2p#P=;)Zj!-Ii!nJaJ-Q2EN?@+Ixs?n_qF$lyuf6eL*Tc<_pKe=$D_S-YIs( zc%P|dR)UK`T?!`}a(7O}+%K$?TYKU5O0g0q6x-Oz+5ZsOZDaiyy8j`Laq0G@PeJ-O z?MNh){o^;a@qMr~r$YLlT#EGK19%r{n$Q5jkn6XmBm(P2>W#OOq-Gi7Dk>IV@YbsYH@{d%qZ4CQRkca+2l4rLaD8B+ame%edaCz>h$Hb0p>2HX+o% zidrJsw+@J}O`_Y)i@Cn-*~-UyjDLSnT*p#uh)SHeIH&vrFa0_+cQlqL8dS7->C}39akO-i0~UIn*c$rkz3%n|);VV+ z66q%^weobLR>|79Pr#ZCi-p?j+$O$OQi`g;Q@+f1PjmL|-akD2U~MOj^FYQQyjTil~3Y2fEH%v`^kRt;Da_hb5X~ z=U(~MGpl$+@{w9U!@MTI1vl`H$!uCi!TBHJ}#z8fm;zJi{iB(VNTH;M1CxVu~G$o48MKHt3jQU^9t zgh_EWSeJ2RI076e5urfcqI1=|z;R?Yh1$ej5NmlI1LOJ*SsH=Hd{~ARq<;vEC(s{W z@xMDp&o9qAZ9<<}xiflo=-8CfBEBDc?PjF!R6?!JGpByB)=6Q!*yu4xyS+h^-{N+Jb(Z^4qt=^e9p6S#-;^G4JgJEiyM?WlI%d|BmkJ;&PiHur+94fCi0x0vo?`0RL#binQy>G_#_MtjM`+OOXI-_sOu zcje{>&CWj=bb(s^R)=S8^U!=_wW$u8+x9&+(-V2%Q&x9e;0;TLvhtSBTqFK@zTl-MQ@KGB_phVRWM%`b>Oq;ZFTA=;rK)QTX=cUQT#~o%@iDYiXH3) zjlpM7wX1VsbDKA*>*?Ovxt*}-}zL~vs zhe<$r&6&^@voZt+9ZrfWGx5aq4Z+`LU#kB5vS2t&|k?(a+q`f%2fa%KQyy>O;Qnd*}MCDNi?5)Q<4svtF@A8;Uw3kl4*~p&<@`k zT8=pkoif(W7ku7#ozF%Ej1H{ZF^8j(-KbOVbyn~BqaoiL{$d{WyNKuyDu~TWNx(7+ z!{U4Xz1_dwi{URG?4K6Pcb&E9iCRb0Dvdt}?a%7Z$AfU7Sb)9l5YOfj4Z?B9MmN^w zn*m8=m-mBM+4^W$#4}v#!d@KW+X*O20y7`k+*B^YiXnj#QyxC?96-XiEss z$bA~RH2N+rEN1ZQ{J+7wnLBUqE0Gu{G`4CtzLV-^5R%`m6C0Qn*u=-&Ud;yD^1&`&_jYa2q-DO7D%?aH#M?=`^lHMiI8*;sWLDCdSNou5*mNhe;!aS; zpzN*K&>h7!Ljk`^1E>-bM8Gb6_?@0JdXSeO0UnXEE*w7mvzJe9Jv?Kueh^~dG{@kG z@r*h)A59zgV6~PuzCP-ruFRRhW%{iF1j6KQR|^iQ%qc#Ho*3$Z3fw+A^*6h9ueOue zYm=9C@w{$WP3xPToPZ@-(G%5?ueMPkrowv|Y=Or=n%;GVBDEUEy3`o$cQYQ(|lYbWTBpn{xSdfU|_bni|Wt84*>rjqUC@8UP+=-*Ft0rdveMMaQU1 zlx#ZHTYo|nt|8#4r!*%~L6a)|^N^qaYI_n>WYU87GMCP`Ql6Fmn z{AykG0m~Ht>hH*xyv_U-Cjq$0z}-sd4D4u1P``rY^JC0aY5jH91OU7igr)6?dVFF@ zJn4ICUW$1{fO_?;IW@Hdc!(n%FsFr5NXLq)IA)B*l(7y3OQZfePC2eQBB1vdnvy+& zw|v%7E(oKWfw*YL-l_M)ZxOdo0`2&Otpr$ct`3XY0iZ!*6da_)P6bm6%EI-Hkl%$Y zb@+O^67)8D*}``=^#caKMGzDwPf7ZVNtQq5{`VVJmg8VaI-~)U2x|YA2FkEy85bhJ z$)bY*OZKG0MdcNRTm4~4I{*7b>OpQe7&(rYmxYJp|C^Y!2cBXB2xVCAnbPM!1q6S? zgZyFWPpm8M)(0?zfQlYjJ}mGCLS${%q={*Klm<*USrX3-JT*g(erozLqyU>1V0JHN zs@s(M7w)y$4}uSI?{ha1fHDFlI1=FLMYLadA07exs=PJ3;M|qkxY9=qBiJ}VYipK& zuyS2=3y_HjU0M7-H3F=Gn?05|*f>fB+&htgkV8{4eZo*Ccx|Z(Vq5Ie&c| z6zi7@@%*2LlJLN!3TgQw5>TRm;(^SkU1dBd8zLAvfuBWQiEIKuyLowYErhMY@o)

RpcMz)%$uM4rLoL`Z6O>#hyp!} zk~?Jo7l$6cpqVNOSHaTX#0(6OBq)I)ho<)5NdQcqW4X*uSLW-Y08%)zKy8wTwcTgc zaldh6DNk1$yFk6#OS-=_=iq9W&}%7NiwmjbAj~lRFv#RzCBGqTCGL>5+xL%*U!SXBiPb|1Gjec@*Hqf3Sg2| z+YNTQ168O%HsP@j<3$9vTL~g9VgaR)aLH}=^szzBDR{jEArD_9Xe5}zX=P!?xm@_g zS%}q=H~=OtVV4%l5`%LbIY(<~*S!GH$62Pv3y_#N4h57cn3H13s!4*&dVJENHNb`X*<9Yb`8EIUK3#oAp(-IPY^Eb}{ zPrvjBKv_}v*Wy$*2CLhGv&p3#xsoLW0hPE)*gRAk2j3IM1ueaXWN2XV+_9CU#(DU* zJx9mjsySW+w%oBPCqB(3Bv5;;C;;$F;g7<;xGb751?U!B_gi^9-u4X23uw6t`}7M8 z!&<@~Rs!siOJ#~dLm>DDwMCctZkpjqsDdHaJ^jm^zndrxfG?xMP8u|jp*;I+0Z!-j zOg`Y=R+wf2h=Eqbjj({U!O)t0eK$KFWQ7PVo-m$3D6pq6S|BpcB(C$1k3ORTM=6_*;;MNxS6G`? s;XgsX@9Cd?db;7)==oRjS2utP*pK@b2SveVAi82}vo zi322l_}}cwFU#=1HIdugBKL*)MaFm^_XXBIVMlx^J43wveVu*1ePSa%_*w#BA+^)i z+T~>5Sni?A9)Ge22SQ^?1WJdSi&P1g`_6du1U(B3utpU>HXQhQEYQjLVurwTeKj>B z3Dcm!y{>{Sb~%f$FQrHxl!~xEI)6lZo6X7<34G{4R?*dbo1f41Q5PRciE9B07PQm# zBU`W;@64vo@yF(#lkX=rb6xs3M$esgn46*V+GeaK(-2U&xgzdW?|jpJvTHMc)qa-UE^YlNQ>zze?lPvz)szUk9Mf!~Rr z3xIq^^pEg+d(7S>s7eY7S&9G>00RkUWE;z9^spVQ;_DX)G<}~0wp~to`^7ibmkLM# z0qm{JuYd5>?-Hha-1VF{%gaq-$ zoWOSjJ|^P8X>-{l@hsoN&rVx1$Ovd9F+yfZaAni{ z@zu)`fUVJS-p?AYD39TJdSPLeHakVU=YtYlCF>84ia#R`*koa890BMma;}dXmCC{O zbr@cj=O=)BjJiO{m-Ne>@Oy*i?0dQfP0kcRc?EgLQwwHP0mZ}5S+)JhdK`ySMzH3` z9u583kU*tP4f(SU?mlh0=b5w_V8^iY?8LLF}M<1n3F8& z&rF--NiwHEIGPG(9b9F5>YdpD&0%;R;wlX6j-j#viy2UXe#D*7<->t7F^&TJE|>E# z27bPG%;*CLoF}OQ)@SyB{r~160j;bX`8&lC;KPLn;w!j;`+q-a0Ju{r0BnK+blN^u z&_IS_7aEfepMyM@$#DwoON;Z^V!)J{x9zgjI|P-))74v+bBg#ONB5f_gwihEXCdg3 z1kCp4oD>IP`Q3b^$ojok2{f)*>>Mgs!%P3)(4+P_zwHqPLIhy8v5Twwyc4Lv>|%Vh z^5MR+|nPMiNM28R|Z*YD7#gF^^}$RN37EiWB{i51CezI0Yr-MQilGl zD}|y$-v_v|62~MBsgVybVzj3-qZ*^gd+hv;)>P`+1CVKiP^G=b^OFmv32M& zuFi^}FqSBJe%TQ00#5oy8f%nnJ%K3ApuW!g+W#n=y&TVfER&Xap9ao~b8^m~q5|6X zF1dD}_2R&ah(gXiG7C;{2x9`*Rx(2!GQQ-{F5`ot3K?!)#4klvKkOnhS!r-l; zH2x*HD8LisXzdHv$9u_v$`7+p^@ix;MFAW{(bdSD4}Kl74Ty6PAda-_X8?X7&d9EB zyQheQMo=PbtBy}E(izqy^l<{Ug9|T{mzceX(yEA8KT*;dDkIpY4jflom#y(uv{_f7UclLvqD*B~uUwY`+Tz;^Xm z)$k%YiRov|%R6t~KB>k#HTR*rMdnGxukQbZ=#80(0TD3M`O=$70jl7u7|;DZbq}3A z;dn3X3^f{ALx-rI^2Bf!@dUcsHrf|EDu=h*s0rst{kGEihijU7;A1>#_W zj~+62I(bmeW5)~n9QbXGqiv-~@j=UTJJvuFF(QGO1bRdJEb;bKfpW(`J@mEJY~Uld z&=b#_g{`%I&AmpthOFt6{nA6ZfH^F7X6qc6O82J+(y^$~Zp9NLB1gZ+np8PpSGEx= zrS)@galyE+@W6SRz5I838oMeIv$p$&rW7K6iP5d*9e!C6q#4|JcO%3M%==;K=e?Mc1t<=^U=%) z>pmEfYRy6GKdTdXirLN8Q>_Xfi|~%UW~Y&-B*$0ukI#nr-pcy%*ZP8`Oft~SY0s4c z!#AiSJoW~MK1@OKO)wzI&Ed`VUy1&NIQ?zAL7lqsN)zkEwa~>)9jZS&2%uUkVcYdB zPIj^Oe_8VUJLCzCf8dx~U)iH%pryHZl$*Gq>l(4>xaLc2c>8&alqx@UF|i(W-+hp& zfqXn1ICX~6X4cE~T(GvTpzExm-CIaY(YQhRF{SqK_I8EB=;|rITr(lc3!d0aFk|w} z;_o(XWnetz4#t(fhcxF9M-M*7c%u__1M#lNi~#dMq$^7oN1;z;=1$A@QqQJw_0RlT zxz5WuM?we7yX3sCFHxuNHes7<>fD51xrSBYw&u$ms_2dPN)uWKis&TV1588tLy*RJ4GrUdb zi18b{bm44Y@K#OEOO)tkFtnUR@md}L4`--hQ*FH4LAUK|TX*rfV}Qn!kIs1#*4h_> z?wv2@@`O2z|BcLum<@N;cJi#J@&*gc*0nsRx=c(2d+n1YTnI-BL`$F(sq zd&w_&rYt=5bA9I=zrRNES(VXVhM&U`DfiZ$l- zxmpE%9r2s@9GtH@I8hd~Wj5aUnmht@-j^#%fF^%z-}xMThN3iezEFO@Kr~M-Tez4!-(4htQ!MNP}IL(*X zp={p%D*O~bnO3RfYC<@m3IaHZrON1ax2G=5?)#MFe`ae7IY+i*I!UayCeVQeL(&iJQKMR5aemu2u#ucA-;Bw9t+2&vKtS+uU|W zIxv3P-Ppq0ylx?5tlrD`v%J}V-HH##4VcC&{{3XLtK5a@$wGUkdK|{d<^JpLwM+;# z;D&(`te*OOLrM9!uqbm7yn+vdn(NyxKFPuURN{8|d;Rltm zMW;QzboEn9A`2=PY0=9`j=bjNg`3v}c%L~$9e!}AB0g@CzBmtu~tz!e_Y_dQ01DxggwuUrS}LPlrn76N&RTLX{Tmb8h27j&(RV6s)l z1#@h4EVAy0gRR8bt@k&U8X~lLF<*ADP42#4ddocKC)6fTcu*SALywArUaGW?_KxC1 z5j~>Pwz-Vfu3@?{#vnc`m0bPG2Qvfs`YAGtFZ??~SxI{Bz2YguxH3$Ko_V2=Q#G(F z;9ce7ap+hb-PElIJRGM-T~s5zM(t&=jclw+S0a(WEx%CMai z>J*@Kc9{On8>70|40j++(V&r+FC748EmzuBdwcK6Dhez*JjBMnJF>^oN-;$$o=r{=AC0;9~kI{piQh4)8>AP2c9*tqU zP2cp-vuvP)>bGA4N1@G{uc+rH7<#Sb-H*H>SZc^9Z=UP74;Wwc9KoCvMN)_=&?pDJ z#M8#fyAsFgSD0Hky;kvag3!=<%-6k$T=vX0k^t9wjuk`y9J3G4V-}5hZUJoh-1`Yd z_U%txyx<9ld4}ajYZ%K11azNiawVc;f)+$+vfxJ79NtV)K>2 zB18tHemAfU~uqVDNS@^0Pv&QaYnQ>_MEv0(2~JH)BSlvd8O&JLI+cVLz~?&B24 z>813Nq^%VM+08_@#Dqv1H!%hVp?ZRsUO+npx98H~n_uN%h!Jz^=Pb44qTk*Eg6to- z{Wgz^td^>)?#!7AA)WqM?0E$w!$wtPVVeo!aGc7tuU(wUUi@rI+k@v6MFep^meaI0 zt@tmBxg{S7o$zDjzoJ|BaTY8W@FTQ?`2SSex21bw9u@IhE|o~Oh4=#To{#0wE_6g$ z0I_f~Q_n@V{l)yByf-+C6uwy){i-!3#i>6mefop|>LE%qUz*(Xl~^Kjo!>A9bw)&4 zv{$k1Sq(4Ui6z;JGxq$=qrhNZuE;0g->=FDr*88Z`!i>!3XUE;x|bF4x?O7W)jI`r zT#J9Qa5pemmb>NkJ8|KsA)|2@U$zZszn%&e&ncA;>VRJlxpx{HIKr*>-KsC+gsT)* zK#J5;{_q=!fwAAK{GRwv2(9_lB-*8NM(w#Xf@6vqi&3n)7UgFUmd5-xoELKgBbI>P z#1x9QEbb!R#}Q}_G3+{=9E14qO@{*Mjo@)&X8a_^du{ zI##}>>sA%ESF?#gLM5+CQ6$1S6fVxmROl*Lbgskp4kRJl>gfq=v2X_T!o7qydVH)N zO{rSh2(QQFyRT9;PY*ZUq`6<#8}I$H;Bnj90q+CpCgEA(s&2A;@n=DXVEN&p zRr-PAUz8A(H@w+(VJ&D4A$PO$G)4u(krW)i7TEvWp7`z;F=O0R$kB0b_NcRF0c~ zOq-Om+EQ8;(5PRIT{@k-kJ1e;ZVPR~Q~i{^*z)mJl3daW? z3th6<#kcLw=Sx?lx=bBVtD}p52tX9j6!WfxL`}y9jpm&K$F}VWs&-LJ17-tuCy8RN zDv`HJcIg@OZOz+wrdN_yjgf)#jV_NrW3zQ8|Mg(pc6V*F*+aYdVwq%cW2Neae@72x z)nL*TFNud4ZwW!d%e`Tb0 zV8Lr|Z!WP|GS`vu=@<5nExoo&;~vm^Gabhjgg62Ssq6!8ee-qNP@nXIJC#=rL?Ye3 zXO{l?a8C|(7MvAtdN~hn^;>;6XvT<@S}Xg-&`U+-Pk7X+J$AeK`VKs-Wyp~Y|ITrR z8v=J+`LNhfgnxeb1fsw-13nl~@xcxYpbj@IJ{Zh8Gotx8$21}w;q0@n#W-}C3hyax zsv;{?bB$jOUbR)pX+3(LR%!O24IabUWDRU1w{4?&jEtS|*E28(6)a7>nI!^r-pu|X z(9-8{;T9`$4x51N+vE3f1CEB5i3C;PwUiZ~47`9iO2*L+V$b=+`-WV#r{>n$#CcYN zv^xyiD*B)|2=Ne5D%Ntd@Ky-$kb3;Tb4UA?3|0MOG5-Cjzh7RUiHLN_6OQUWgC=!tMTJ&5oMs4bdLk z3ixo5$>R_v7gGi|F+p3|YS9g!%gyDC0v~8>)yGkCf!RlMWNiZ-I$VQ$i&^zalK!km zN!}Y8uF@_?I}pYqfkKf4EupC&69>Lqr2Vg*x2{6;TKem9|FOaYFHcH?JzYe00u*DC z?>BIr&tr2E?WMxjTNg-v_vHuH1Ky1}#O?tW$NQ5b4oWNqd3wp#Jf#!n=9?%bqD}tohq;Xo-ga^);m2F| zPzU;=al-okB2cTne1H8!aX5Z-t1lQAFIlq;m>aq(gaAK4|F$S1W_dut59_ZV6B~~UQxN>!WWB>c>+UxKtENck?3HpJbbOBIJJX`S zmZTKz0EE^WGXM@PMg|v_P3H2`E}2yid|x<^NAd03Ksz4P|C*kq&H;4YP&?(|A#^UM zlIndTLX1^4{>ujwx72gQ)K@CR4~mJrMo71zH?_TA8I;l~D={Zm$a8d|z4~a16t0uh z_>WZyLU4cx65e-?)9tY``GZZM+lil~1mP+&0nFFEeMP@)0!EbqNT|DOz->F?f-CuV z8EnVdz=iR{v$g7BUbz6k%St&SpuFwmr#-+n17A?`6$vPj7T4}uF4%zTZC$9t>mG2! zRWghaTmb_BgHmiVV!oyW3<3H*0*Dp@Xt1Mwm}OOn=DSnp8COgh^%eD4{(+&R$AV-(8HsNHclR8 zS51Io)u}h(k`%&)rVgxh0sCLr*@7M?xX3b%z1ECAb=2!$BoRS#4=D(!{+yn#b6D$R zrQEOJsV0S!e-cdNE_2NWaUbR(KkXoq9mtjV>1xxH>BC=nx9#8Jp7}> zU3;;xjULi$Q7kF`(Tn44G0>f)PGnpqw9h=1|7mv&k zdZ}*ua5G;Q@UvdGyP6!T*x^3fYm}@LKH@fgYF>EM$Zo3Q*@|bl<;Ht3kxXpp*|c|4-EoK-cIJhnw; z@#?q9e{mj)G_V>r?Qzu>cYg$tKhf~H^B z`0}tO-ub#{m*d_mVJghv z(=&5&Bjf+w5R_hg-(h&JHaexK4F_jeH3#f9FxW73Fw7W|$6VK%t3(=2`76<{4#G5y zxXMk=!cu0~5!Evf`gfl1z3?-B^!xJZwYs6T`b&LLv)sIs$^L}ZaXlF0)8^Z5^9wub z>P`}#e&ipmJ<{CS?b$dRRrTf5fKHgoy(O3r6W4$PJ2q4%-4mdjG#G&4z< zOC?=vp!)Q$N-(&GN32)v#|SobCLJ+&Z-_dUaK#d~x>LKTvu(EstQ|#oXvUQOw8soD zCs{9Ekc8O&2JcnW`tdnxxKw^j#*$nt!H{rH6o0^L4Rph)cd=>5e}y;Y=i-L$2a8DisW_bNw6n7Js(+|J>bh+4$2`*}EtIbQ)49+xO7Fa8=1Cl!(IL znNR2+Zy%Ba<@s^z3FjuyF4Hqw3_rPX5vsSs^FXCRGHdaY{TIHRMhnkKjTqRba;Igi{l7xU0K zO@I-A2~6SmEcb8tXVTPz#l>aGQLi+Ss+IV%+aYPdsY|T9$$eQ(jgLa+FptK=T~U#B8%LjR@@r5|rnK{!Y-#tuRs_>3PAWUX z0YohPPJQF;7ch7E`({#)ppuN*i`yyDOcKThEm;lB~r+xDD2|%;j-`H4KlbF15vh`sw1Y8080VZ&+9kCkWves zcsTI$4;I+`=x7n2%asS9+yZ2)$sY}5$-wO#%z&;EgtZi*r~ioZVfMwZt)qCSqw~wX1rhV>OQP};T&t=90d1lspg#g!>#X^f0PeczOF`hpXsXX{IGE7EkyUP zetV+K*A}uzFD`B*rKF2JpR~l@`c0`GX0Xtk505VAMLp!#Q?z{U%qZXcn82JQGyRCn zG9q9JeBrjuQXPkMWgcF2VmP;)wQ5zW9DD{Z4sA>1I1=zok8R%^zUX2RrU)*ng|4;t zXBX~=Fm1lR9yo|GtspxyTR@?x(hgYM!Gw|@8K#$Cy)Gyk*PTVCZ}@O4Zb(tSKn{#} z2Xu4p<0!s2{viFIep4S{=N>M9c4n9lciIk3dv7+zZ{6Y{{VOT6j30&)O)zar@u!8N zXVFVnPzB}x1i`}_UAu7XiXt%z_-K6)bKSsUD7rltPg7?~GJ;IzTEvcH%wzE{uYoMz zIF{d+rO6QveGHTQWNl6)9}jB0qM*3h0(tBky$)$V0tdh?NaA`j6sLaLgwF9VmX;wN z`7erqT@21ZT#F)G`!8+=rhfj;zL9cp8-*TE1M-kG$6u+28^WW4^sg0@KwSM0FYP?R z*uBu8F@XnRhF>~OE;2>4#}2mKg#KU|DO{Cxto`aoV9$Scy2_`Aj6>N2a|= zh&@MWN!?$z)E(Bus?52QFts$zQpHu@H3S9tgmpN!T+zNB9MfoMWcl~g;~-Eq^eDy2yjZow^s?#Qcw~KoLuu_Zr;X~ek2@I`*Ody>DbyYr#nwaOH^Y) z+vlQkS^h@m0uoHy^U*B}E;#YB^H!iv>TW{Lur%{OjaAgd!pY?kI!sR!av$r>-&$S` z3a&)tF?Ic3a{o38x*|B%QQ6(X54B}{U^poAFgARThqjq{xO#r!eBCZ}=nkIkUf98i z?rU9ma5uFjenKMStp^pywu>D1YT?)-)w?VXVO^e)CUt9w4fEd_@dUnJ>hG;<%3DQB zKJk@Q?UXpfwyP5bCv&*n6`6do41p3EaqVW_X$i2yjY?RAAnbmteMc%PEv`~Z) za<~iHP~S|UZ3-2oBpGHa9eU;^Xw$n;B}kjHLWJsL_s&7&x!dlTz2gJthUr$&cmvt? z1A!QwDhl+_U+r8^Wqa%dY5toHtCtS&jsecCDzSKmqh@}9qE{P zYWKP0mB%M!WEo>*mOjy|lkrRF0@zf~D;8Bgdgd>0M}&umSIs#bElC=Y7U#fh#Da01 z|Gm^Ymm6EtUqlHd?2T#+xk_rk?~E=Zk!wp1uNQH9$1mjgy)43VW2If&x|MhW%RX}4 zH{_djE=0cPo^V%h=IHZSweKnqm2uVbQo)I!GSLKhX0P`EMdsnJqC!_r>MWPmFJI%@ zU<+F_cM&9kBo6BDi+j2BZ*%iC#S5tsVHEv7Ubl7w(wOm9w5vy?kvD#?%q2|#`l~X} zVqdo|ys#4kE}2|0HE@^)D)AlIn5It0kn*>MWpz9@g3e z0<OS9 z8%3TTak z27#u*KO})(9_=c2tZlb8R@ip>$h%aVK#lmF|be@8fEYNh%Yrl=_>r`Wnsn?)6V#&D;O?o}<0kAG+cXbKS9tuQr~X za!cz#oaQmb2?o^%X7i+Js3>cf9e8tuZL(tCZSrSw;{DfZqz6k&Rb1K3Ep|fEE~1%t zG6g0Q>8tJ?JclH7H&n`!xKmFGU6@66OZOD#c+o?=q%+O7^;o?nz1|K9`zelNIl5>! zp8xpJg*lCyH?EhV*?+r_>s-7(7ZyGHUJME?wPq>)o!mb?c@ZU*48d^Vx)vf{cbIk= z!vnmMmkjE`yutEm0GDgLTp>)P*(>_t2p#P=;)Zj!-Ii!nJaJ-Q2EN?@+Ixs?n_qF$lyuf6eL*Tc<_pKe=$D_S-YIs( zc%P|dR)UK`T?!`}a(7O}+%K$?TYKU5O0g0q6x-Oz+5ZsOZDaiyy8j`Laq0G@PeJ-O z?MNh){o^;a@qMr~r$YLlT#EGK19%r{n$Q5jkn6XmBm(P2>W#OOq-Gi7Dk>IV@YbsYH@{d%qZ4CQRkca+2l4rLaD8B+ame%edaCz>h$Hb0p>2HX+o% zidrJsw+@J}O`_Y)i@Cn-*~-UyjDLSnT*p#uh)SHeIH&vrFa0_+cQlqL8dS7->C}39akO-i0~UIn*c$rkz3%n|);VV+ z66q%^weobLR>|79Pr#ZCi-p?j+$O$OQi`g;Q@+f1PjmL|-akD2U~MOj^FYQQyjTil~3Y2fEH%v`^kRt;Da_hb5X~ z=U(~MGpl$+@{w9U!@MTI1vl`H$!uCi!TBHJ}#z8fm;zJi{iB(VNTH;M1CxVu~G$o48MKHt3jQU^9t zgh_EWSeJ2RI076e5urfcqI1=|z;R?Yh1$ej5NmlI1LOJ*SsH=Hd{~ARq<;vEC(s{W z@xMDp&o9qAZ9<<}xiflo=-8CfBEBDc?PjF!R6?!JGpByB)=6Q!*yu4xyS+h^-{N+Jb(Z^4qt=^e9p6S#-;^G4JgJEiyM?WlI%d|BmkJ;&PiHur+94fCi0x0vo?`0RL#binQy>G_#_MtjM`+OOXI-_sOu zcje{>&CWj=bb(s^R)=S8^U!=_wW$u8+x9&+(-V2%Q&x9e;0;TLvhtSBTqFK@zTl-MQ@KGB_phVRWM%`b>Oq;ZFTA=;rK)QTX=cUQT#~o%@iDYiXH3) zjlpM7wX1VsbDKA*>*?Ovxt*}-}zL~vs zhe<$r&6&^@voZt+9ZrfWGx5aq4Z+`LU#kB5vS2t&|k?(a+q`f%2fa%KQyy>O;Qnd*}MCDNi?5)Q<4svtF@A8;Uw3kl4*~p&<@`k zT8=pkoif(W7ku7#ozF%Ej1H{ZF^8j(-KbOVbyn~BqaoiL{$d{WyNKuyDu~TWNx(7+ z!{U4Xz1_dwi{URG?4K6Pcb&E9iCRb0Dvdt}?a%7Z$AfU7Sb)9l5YOfj4Z?B9MmN^w zn*m8=m-mBM+4^W$#4}v#!d@KW+X*O20y7`k+*B^YiXnj#QyxC?96-XiEss z$bA~RH2N+rEN1ZQ{J+7wnLBUqE0Gu{G`4CtzLV-^5R%`m6C0Qn*u=-&Ud;yD^1&`&_jYa2q-DO7D%?aH#M?=`^lHMiI8*;sWLDCdSNou5*mNhe;!aS; zpzN*K&>h7!Ljk`^1E>-bM8Gb6_?@0JdXSeO0UnXEE*w7mvzJe9Jv?Kueh^~dG{@kG z@r*h)A59zgV6~PuzCP-ruFRRhW%{iF1j6KQR|^iQ%qc#Ho*3$Z3fw+A^*6h9ueOue zYm=9C@w{$WP3xPToPZ@-(G%5?ueMPkrowv|Y=Or=n%;GVBDEUEy3`o$cQYQ(|lYbWTBpn{xSdfU|_bni|Wt84*>rjqUC@8UP+=-*Ft0rdveMMaQU1 zlx#ZHTYo|nt|8#4r!*%~L6a)|^N^qaYI_n>WYU87GMCP`Ql6Fmn z{AykG0m~Ht>hH*xyv_U-Cjq$0z}-sd4D4u1P``rY^JC0aY5jH91OU7igr)6?dVFF@ zJn4ICUW$1{fO_?;IW@Hdc!(n%FsFr5NXLq)IA)B*l(7y3OQZfePC2eQBB1vdnvy+& zw|v%7E(oKWfw*YL-l_M)ZxOdo0`2&Otpr$ct`3XY0iZ!*6da_)P6bm6%EI-Hkl%$Y zb@+O^67)8D*}``=^#caKMGzDwPf7ZVNtQq5{`VVJmg8VaI-~)U2x|YA2FkEy85bhJ z$)bY*OZKG0MdcNRTm4~4I{*7b>OpQe7&(rYmxYJp|C^Y!2cBXB2xVCAnbPM!1q6S? zgZyFWPpm8M)(0?zfQlYjJ}mGCLS${%q={*Klm<*USrX3-JT*g(erozLqyU>1V0JHN zs@s(M7w)y$4}uSI?{ha1fHDFlI1=FLMYLadA07exs=PJ3;M|qkxY9=qBiJ}VYipK& zuyS2=3y_HjU0M7-H3F=Gn?05|*f>fB+&htgkV8{4eZo*Ccx|Z(Vq5Ie&c| z6zi7@@%*2LlJLN!3TgQw5>TRm;(^SkU1dBd8zLAvfuBWQiEIKuyLowYErhMY@o)

RpcMz)%$uM4rLoL`Z6O>#hyp!} zk~?Jo7l$6cpqVNOSHaTX#0(6OBq)I)ho<)5NdQcqW4X*uSLW-Y08%)zKy8wTwcTgc zaldh6DNk1$yFk6#OS-=_=iq9W&}%7NiwmjbAj~lRFv#RzCBGqTCGL>5+xL%*U!SXBiPb|1Gjec@*Hqf3Sg2| z+YNTQ168O%HsP@j<3$9vTL~g9VgaR)aLH}=^szzBDR{jEArD_9Xe5}zX=P!?xm@_g zS%}q=H~=OtVV4%l5`%LbIY(<~*S!GH$62Pv3y_#N4h57cn3H13s!4*&dVJENHNb`X*<9Yb`8EIUK3#oAp(-IPY^Eb}{ zPrvjBKv_}v*Wy$*2CLhGv&p3#xsoLW0hPE)*gRAk2j3IM1ueaXWN2XV+_9CU#(DU* zJx9mjsySW+w%oBPCqB(3Bv5;;C;;$F;g7<;xGb751?U!B_gi^9-u4X23uw6t`}7M8 z!&<@~Rs!siOJ#~dLm>DDwMCctZkpjqsDdHaJ^jm^zndrxfG?xMP8u|jp*;I+0Z!-j zOg`Y=R+wf2h=Eqbjj({U!O)t0eK$KFWQ7PVo-m$3D6pq6S|BpcB(C$1k3ORTM=6_*;;MNxS6G`? s;XgsX@9Cd?db;7)==oRjS2utP*pK@b2SveVAi82}vo zi322l_}}cwFU#=1HIdugBKL*)MaFm^_XXBIVMlx^J43wveVu*1ePSa%_*w#BA+^)i z+T~>5Sni?A9)Ge22SQ^?1WJdSi&P1g`_6du1U(B3utpU>HXQhQEYQjLVurwTeKj>B z3Dcm!y{>{Sb~%f$FQrHxl!~xEI)6lZo6X7<34G{4R?*dbo1f41Q5PRciE9B07PQm# zBU`W;@64vo@yF(#lkX=rb6xs3M$esgn46*V+GeaK(-2U&xgzdW?|jpJvTHMc)qa-UE^YlNQ>zze?lPvz)szUk9Mf!~Rr z3xIq^^pEg+d(7S>s7eY7S&9G>00RkUWE;z9^spVQ;_DX)G<}~0wp~to`^7ibmkLM# z0qm{JuYd5>?-Hha-1VF{%gaq-$ zoWOSjJ|^P8X>-{l@hsoN&rVx1$Ovd9F+yfZaAni{ z@zu)`fUVJS-p?AYD39TJdSPLeHakVU=YtYlCF>84ia#R`*koa890BMma;}dXmCC{O zbr@cj=O=)BjJiO{m-Ne>@Oy*i?0dQfP0kcRc?EgLQwwHP0mZ}5S+)JhdK`ySMzH3` z9u583kU*tP4f(SU?mlh0=b5w_V8^iY?8LLF}M<1n3F8& z&rF--NiwHEIGPG(9b9F5>YdpD&0%;R;wlX6j-j#viy2UXe#D*7<->t7F^&TJE|>E# z27bPG%;*CLoF}OQ)@SyB{r~160j;bX`8&lC;KPLn;w!j;`+q-a0Ju{r0BnK+blN^u z&_IS_7aEfepMyM@$#DwoON;Z^V!)J{x9zgjI|P-))74v+bBg#ONB5f_gwihEXCdg3 z1kCp4oD>IP`Q3b^$ojok2{f)*>>Mgs!%P3)(4+P_zwHqPLIhy8v5Twwyc4Lv>|%Vh z^5MR+|nPMiNM28R|Z*YD7#gF^^}$RN37EiWB{i51CezI0Yr-MQilGl zD}|y$-v_v|62~MBsgVybVzj3-qZ*^gd+hv;)>P`+1CVKiP^G=b^OFmv32M& zuFi^}FqSBJe%TQ00#5oy8f%nnJ%K3ApuW!g+W#n=y&TVfER&Xap9ao~b8^m~q5|6X zF1dD}_2R&ah(gXiG7C;{2x9`*Rx(2!GQQ-{F5`ot3K?!)#4klvKkOnhS!r-l; zH2x*HD8LisXzdHv$9u_v$`7+p^@ix;MFAW{(bdSD4}Kl74Ty6PAda-_X8?X7&d9EB zyQheQMo=PbtBy}E(izqy^l<{Ug9|T{mzceX(yEA8KT*;dDkIpY4jflom#y(uv{_f7UclLvqD*B~uUwY`+Tz;^Xm z)$k%YiRov|%R6t~KB>k#HTR*rMdnGxukQbZ=#80(0TD3M`O=$70jl7u7|;DZbq}3A z;dn3X3^f{ALx-rI^2Bf!@dUcsHrf|EDu=h*s0rst{kGEihijU7;A1>#_W zj~+62I(bmeW5)~n9QbXGqiv-~@j=UTJJvuFF(QGO1bRdJEb;bKfpW(`J@mEJY~Uld z&=b#_g{`%I&AmpthOFt6{nA6ZfH^F7X6qc6O82J+(y^$~Zp9NLB1gZ+np8PpSGEx= zrS)@galyE+@W6SRz5I838oMeIv$p$&rW7K6iP5d*9e!C6q#4|JcO%3M%==;K=e?Mc1t<=^U=%) z>pmEfYRy6GKdTdXirLN8Q>_Xfi|~%UW~Y&-B*$0ukI#nr-pcy%*ZP8`Oft~SY0s4c z!#AiSJoW~MK1@OKO)wzI&Ed`VUy1&NIQ?zAL7lqsN)zkEwa~>)9jZS&2%uUkVcYdB zPIj^Oe_8VUJLCzCf8dx~U)iH%pryHZl$*Gq>l(4>xaLc2c>8&alqx@UF|i(W-+hp& zfqXn1ICX~6X4cE~T(GvTpzExm-CIaY(YQhRF{SqK_I8EB=;|rITr(lc3!d0aFk|w} z;_o(XWnetz4#t(fhcxF9M-M*7c%u__1M#lNi~#dMq$^7oN1;z;=1$A@QqQJw_0RlT zxz5WuM?we7yX3sCFHxuNHes7<>fD51xrSBYw&u$ms_2dPN)uWKis&TV1588tLy*RJ4GrUdb zi18b{bm44Y@K#OEOO)tkFtnUR@md}L4`--hQ*FH4LAUK|TX*rfV}Qn!kIs1#*4h_> z?wv2@@`O2z|BcLum<@N;cJi#J@&*gc*0nsRx=c(2d+n1YTnI-BL`$F(sq zd&w_&rYt=5bA9I=zrRNES(VXVhM&U`DfiZ$l- zxmpE%9r2s@9GtH@I8hd~Wj5aUnmht@-j^#%fF^%z-}xMThN3iezEFO@Kr~M-Tez4!-(4htQ!MNP}IL(*X zp={p%D*O~bnO3RfYC<@m3IaHZrON1ax2G=5?)#MFe`ae7IY+i*I!UayCeVQeL(&iJQKMR5aemu2u#ucA-;Bw9t+2&vKtS+uU|W zIxv3P-Ppq0ylx?5tlrD`v%J}V-HH##4VcC&{{3XLtK5a@$wGUkdK|{d<^JpLwM+;# z;D&(`te*OOLrM9!uqbm7yn+vdn(NyxKFPuURN{8|d;Rltm zMW;QzboEn9A`2=PY0=9`j=bjNg`3v}c%L~$9e!}AB0g@CzBmtu~tz!e_Y_dQ01DxggwuUrS}LPlrn76N&RTLX{Tmb8h27j&(RV6s)l z1#@h4EVAy0gRR8bt@k&U8X~lLF<*ADP42#4ddocKC)6fTcu*SALywArUaGW?_KxC1 z5j~>Pwz-Vfu3@?{#vnc`m0bPG2Qvfs`YAGtFZ??~SxI{Bz2YguxH3$Ko_V2=Q#G(F z;9ce7ap+hb-PElIJRGM-T~s5zM(t&=jclw+S0a(WEx%CMai z>J*@Kc9{On8>70|40j++(V&r+FC748EmzuBdwcK6Dhez*JjBMnJF>^oN-;$$o=r{=AC0;9~kI{piQh4)8>AP2c9*tqU zP2cp-vuvP)>bGA4N1@G{uc+rH7<#Sb-H*H>SZc^9Z=UP74;Wwc9KoCvMN)_=&?pDJ z#M8#fyAsFgSD0Hky;kvag3!=<%-6k$T=vX0k^t9wjuk`y9J3G4V-}5hZUJoh-1`Yd z_U%txyx<9ld4}ajYZ%K11azNiawVc;f)+$+vfxJ79NtV)K>2 zB18tHemAfU~uqVDNS@^0Pv&QaYnQ>_MEv0(2~JH)BSlvd8O&JLI+cVLz~?&B24 z>813Nq^%VM+08_@#Dqv1H!%hVp?ZRsUO+npx98H~n_uN%h!Jz^=Pb44qTk*Eg6to- z{Wgz^td^>)?#!7AA)WqM?0E$w!$wtPVVeo!aGc7tuU(wUUi@rI+k@v6MFep^meaI0 zt@tmBxg{S7o$zDjzoJ|BaTY8W@FTQ?`2SSex21bw9u@IhE|o~Oh4=#To{#0wE_6g$ z0I_f~Q_n@V{l)yByf-+C6uwy){i-!3#i>6mefop|>LE%qUz*(Xl~^Kjo!>A9bw)&4 zv{$k1Sq(4Ui6z;JGxq$=qrhNZuE;0g->=FDr*88Z`!i>!3XUE;x|bF4x?O7W)jI`r zT#J9Qa5pemmb>NkJ8|KsA)|2@U$zZszn%&e&ncA;>VRJlxpx{HIKr*>-KsC+gsT)* zK#J5;{_q=!fwAAK{GRwv2(9_lB-*8NM(w#Xf@6vqi&3n)7UgFUmd5-xoELKgBbI>P z#1x9QEbb!R#}Q}_G3+{=9E14qO@{*Mjo@)&X8a_^du{ zI##}>>sA%ESF?#gLM5+CQ6$1S6fVxmROl*Lbgskp4kRJl>gfq=v2X_T!o7qydVH)N zO{rSh2(QQFyRT9;PY*ZUq`6<#8}I$H;Bnj90q+CpCgEA(s&2A;@n=DXVEN&p zRr-PAUz8A(H@w+(VJ&D4A$PO$G)4u(krW)i7TEvWp7`z;F=O0R$kB0b_NcRF0c~ zOq-Om+EQ8;(5PRIT{@k-kJ1e;ZVPR~Q~i{^*z)mJl3daW? z3th6<#kcLw=Sx?lx=bBVtD}p52tX9j6!WfxL`}y9jpm&K$F}VWs&-LJ17-tuCy8RN zDv`HJcIg@OZOz+wrdN_yjgf)#jV_NrW3zQ8|Mg(pc6V*F*+aYdVwq%cW2Neae@72x z)nL*TFNud4ZwW!d%e`Tb0 zV8Lr|Z!WP|GS`vu=@<5nExoo&;~vm^Gabhjgg62Ssq6!8ee-qNP@nXIJC#=rL?Ye3 zXO{l?a8C|(7MvAtdN~hn^;>;6XvT<@S}Xg-&`U+-Pk7X+J$AeK`VKs-Wyp~Y|ITrR z8v=J+`LNhfgnxeb1fsw-13nl~@xcxYpbj@IJ{Zh8Gotx8$21}w;q0@n#W-}C3hyax zsv;{?bB$jOUbR)pX+3(LR%!O24IabUWDRU1w{4?&jEtS|*E28(6)a7>nI!^r-pu|X z(9-8{;T9`$4x51N+vE3f1CEB5i3C;PwUiZ~47`9iO2*L+V$b=+`-WV#r{>n$#CcYN zv^xyiD*B)|2=Ne5D%Ntd@Ky-$kb3;Tb4UA?3|0MOG5-Cjzh7RUiHLN_6OQUWgC=!tMTJ&5oMs4bdLk z3ixo5$>R_v7gGi|F+p3|YS9g!%gyDC0v~8>)yGkCf!RlMWNiZ-I$VQ$i&^zalK!km zN!}Y8uF@_?I}pYqfkKf4EupC&69>Lqr2Vg*x2{6;TKem9|FOaYFHcH?JzYe00u*DC z?>BIr&tr2E?WMxjTNg-v_vHuH1Ky1}#O?tW$NQ5b4oWNqd3wp#Jf#!n=9?%bqD}tohq;Xo-ga^);m2F| zPzU;=al-okB2cTne1H8!aX5Z-t1lQAFIlq;m>aq(gaAK4|F$S1W_dut59_ZV6B~~UQxN>!WWB>c>+UxKtENck?3HpJbbOBIJJX`S zmZTKz0EE^WGXM@PMg|v_P3H2`E}2yid|x<^NAd03Ksz4P|C*kq&H;4YP&?(|A#^UM zlIndTLX1^4{>ujwx72gQ)K@CR4~mJrMo71zH?_TA8I;l~D={Zm$a8d|z4~a16t0uh z_>WZyLU4cx65e-?)9tY``GZZM+lil~1mP+&0nFFEeMP@)0!EbqNT|DOz->F?f-CuV z8EnVdz=iR{v$g7BUbz6k%St&SpuFwmr#-+n17A?`6$vPj7T4}uF4%zTZC$9t>mG2! zRWghaTmb_BgHmiVV!oyW3<3H*0*Dp@Xt1Mwm}OOn=DSnp8COgh^%eD4{(+&R$AV-(8HsNHclR8 zS51Io)u}h(k`%&)rVgxh0sCLr*@7M?xX3b%z1ECAb=2!$BoRS#4=D(!{+yn#b6D$R zrQEOJsV0S!e-cdNE_2NWaUbR(KkXoq9mtjV>1xxH>BC=nx9#8Jp7}> zU3;;xjULi$Q7kF`(Tn44G0>f)PGnpqw9h=1|7mv&k zdZ}*ua5G;Q@UvdGyP6!T*x^3fYm}@LKH@fgYF>EM$Zo3Q*@|bl<;Ht3kxXpp*|c|4-EoK-cIJhnw; z@#?q9e{mj)G_V>r?Qzu>cYg$tKhf~H^B z`0}tO-ub#{m*d_mVJghv z(=&5&Bjf+w5R_hg-(h&JHaexK4F_jeH3#f9FxW73Fw7W|$6VK%t3(=2`76<{4#G5y zxXMk=!cu0~5!Evf`gfl1z3?-B^!xJZwYs6T`b&LLv)sIs$^L}ZaXlF0)8^Z5^9wub z>P`}#e&ipmJ<{CS?b$dRRrTf5fKHgoy(O3r6W4$PJ2q4%-4mdjG#G&4z< zOC?=vp!)Q$N-(&GN32)v#|SobCLJ+&Z-_dUaK#d~x>LKTvu(EstQ|#oXvUQOw8soD zCs{9Ekc8O&2JcnW`tdnxxKw^j#*$nt!H{rH6o0^L4Rph)cd=>5e}y;Y=i-L$2a8DisW_bNw6n7Js(+|J>bh+4$2`*}EtIbQ)49+xO7Fa8=1Cl!(IL znNR2+Zy%Ba<@s^z3FjuyF4Hqw3_rPX5vsSs^FXCRGHdaY{TIHRMhnkKjTqRba;Igi{l7xU0K zO@I-A2~6SmEcb8tXVTPz#l>aGQLi+Ss+IV%+aYPdsY|T9$$eQ(jgLa+FptK=T~U#B8%LjR@@r5|rnK{!Y-#tuRs_>3PAWUX z0YohPPJQF;7ch7E`({#)ppuN*i`yyDOcKThEm;lB~r+xDD2|%;j-`H4KlbF15vh`sw1Y8080VZ&+9kCkWves zcsTI$4;I+`=x7n2%asS9+yZ2)$sY}5$-wO#%z&;EgtZi*r~ioZVfMwZt)qCSqw~wX1rhV>OQP};T&t=90d1lspg#g!>#X^f0PeczOF`hpXsXX{IGE7EkyUP zetV+K*A}uzFD`B*rKF2JpR~l@`c0`GX0Xtk505VAMLp!#Q?z{U%qZXcn82JQGyRCn zG9q9JeBrjuQXPkMWgcF2VmP;)wQ5zW9DD{Z4sA>1I1=zok8R%^zUX2RrU)*ng|4;t zXBX~=Fm1lR9yo|GtspxyTR@?x(hgYM!Gw|@8K#$Cy)Gyk*PTVCZ}@O4Zb(tSKn{#} z2Xu4p<0!s2{viFIep4S{=N>M9c4n9lciIk3dv7+zZ{6Y{{VOT6j30&)O)zar@u!8N zXVFVnPzB}x1i`}_UAu7XiXt%z_-K6)bKSsUD7rltPg7?~GJ;IzTEvcH%wzE{uYoMz zIF{d+rO6QveGHTQWNl6)9}jB0qM*3h0(tBky$)$V0tdh?NaA`j6sLaLgwF9VmX;wN z`7erqT@21ZT#F)G`!8+=rhfj;zL9cp8-*TE1M-kG$6u+28^WW4^sg0@KwSM0FYP?R z*uBu8F@XnRhF>~OE;2>4#}2mKg#KU|DO{Cxto`aoV9$Scy2_`Aj6>N2a|= zh&@MWN!?$z)E(Bus?52QFts$zQpHu@H3S9tgmpN!T+zNB9MfoMWcl~g;~-Eq^eDy2yjZow^s?#Qcw~KoLuu_Zr;X~ek2@I`*Ody>DbyYr#nwaOH^Y) z+vlQkS^h@m0uoHy^U*B}E;#YB^H!iv>TW{Lur%{OjaAgd!pY?kI!sR!av$r>-&$S` z3a&)tF?Ic3a{o38x*|B%QQ6(X54B}{U^poAFgARThqjq{xO#r!eBCZ}=nkIkUf98i z?rU9ma5uFjenKMStp^pywu>D1YT?)-)w?VXVO^e)CUt9w4fEd_@dUnJ>hG;<%3DQB zKJk@Q?UXpfwyP5bCv&*n6`6do41p3EaqVW_X$i2yjY?RAAnbmteMc%PEv`~Z) za<~iHP~S|UZ3-2oBpGHa9eU;^Xw$n;B}kjHLWJsL_s&7&x!dlTz2gJthUr$&cmvt? z1A!QwDhl+_U+r8^Wqa%dY5toHtCtS&jsecCDzSKmqh@}9qE{P zYWKP0mB%M!WEo>*mOjy|lkrRF0@zf~D;8Bgdgd>0M}&umSIs#bElC=Y7U#fh#Da01 z|Gm^Ymm6EtUqlHd?2T#+xk_rk?~E=Zk!wp1uNQH9$1mjgy)43VW2If&x|MhW%RX}4 zH{_djE=0cPo^V%h=IHZSweKnqm2uVbQo)I!GSLKhX0P`EMdsnJqC!_r>MWPmFJI%@ zU<+F_cM&9kBo6BDi+j2BZ*%iC#S5tsVHEv7Ubl7w(wOm9w5vy?kvD#?%q2|#`l~X} zVqdo|ys#4kE}2|0HE@^)D)AlIn5It0kn*>MWpz9@g3e z0<OS9 z8%3TTak z27#u*KO})(9_=c2tZlb8R@ip>$h%aVK#lmF|be@8fEYNh%Yrl=_>r`Wnsn?)6V#&D;O?o}<0kAG+cXbKS9tuQr~X za!cz#oaQmb2?o^%X7i+Js3>cf9e8tuZL(tCZSrSw;{DfZqz6k&Rb1K3Ep|fEE~1%t zG6g0Q>8tJ?JclH7H&n`!xKmFGU6@66OZOD#c+o?=q%+O7^;o?nz1|K9`zelNIl5>! zp8xpJg*lCyH?EhV*?+r_>s-7(7ZyGHUJME?wPq>)o!mb?c@ZU*48d^Vx)vf{cbIk= z!vnmMmkjE`yutEm0GDgLTp>)P*(>_t2p#P=;)Zj!-Ii!nJaJ-Q2EN?@+Ixs?n_qF$lyuf6eL*Tc<_pKe=$D_S-YIs( zc%P|dR)UK`T?!`}a(7O}+%K$?TYKU5O0g0q6x-Oz+5ZsOZDaiyy8j`Laq0G@PeJ-O z?MNh){o^;a@qMr~r$YLlT#EGK19%r{n$Q5jkn6XmBm(P2>W#OOq-Gi7Dk>IV@YbsYH@{d%qZ4CQRkca+2l4rLaD8B+ame%edaCz>h$Hb0p>2HX+o% zidrJsw+@J}O`_Y)i@Cn-*~-UyjDLSnT*p#uh)SHeIH&vrFa0_+cQlqL8dS7->C}39akO-i0~UIn*c$rkz3%n|);VV+ z66q%^weobLR>|79Pr#ZCi-p?j+$O$OQi`g;Q@+f1PjmL|-akD2U~MOj^FYQQyjTil~3Y2fEH%v`^kRt;Da_hb5X~ z=U(~MGpl$+@{w9U!@MTI1vl`H$!uCi!TBHJ}#z8fm;zJi{iB(VNTH;M1CxVu~G$o48MKHt3jQU^9t zgh_EWSeJ2RI076e5urfcqI1=|z;R?Yh1$ej5NmlI1LOJ*SsH=Hd{~ARq<;vEC(s{W z@xMDp&o9qAZ9<<}xiflo=-8CfBEBDc?PjF!R6?!JGpByB)=6Q!*yu4xyS+h^-{N+Jb(Z^4qt=^e9p6S#-;^G4JgJEiyM?WlI%d|BmkJ;&PiHur+94fCi0x0vo?`0RL#binQy>G_#_MtjM`+OOXI-_sOu zcje{>&CWj=bb(s^R)=S8^U!=_wW$u8+x9&+(-V2%Q&x9e;0;TLvhtSBTqFK@zTl-MQ@KGB_phVRWM%`b>Oq;ZFTA=;rK)QTX=cUQT#~o%@iDYiXH3) zjlpM7wX1VsbDKA*>*?Ovxt*}-}zL~vs zhe<$r&6&^@voZt+9ZrfWGx5aq4Z+`LU#kB5vS2t&|k?(a+q`f%2fa%KQyy>O;Qnd*}MCDNi?5)Q<4svtF@A8;Uw3kl4*~p&<@`k zT8=pkoif(W7ku7#ozF%Ej1H{ZF^8j(-KbOVbyn~BqaoiL{$d{WyNKuyDu~TWNx(7+ z!{U4Xz1_dwi{URG?4K6Pcb&E9iCRb0Dvdt}?a%7Z$AfU7Sb)9l5YOfj4Z?B9MmN^w zn*m8=m-mBM+4^W$#4}v#!d@KW+X*O20y7`k+*B^YiXnj#QyxC?96-XiEss z$bA~RH2N+rEN1ZQ{J+7wnLBUqE0Gu{G`4CtzLV-^5R%`m6C0Qn*u=-&Ud;yD^1&`&_jYa2q-DO7D%?aH#M?=`^lHMiI8*;sWLDCdSNou5*mNhe;!aS; zpzN*K&>h7!Ljk`^1E>-bM8Gb6_?@0JdXSeO0UnXEE*w7mvzJe9Jv?Kueh^~dG{@kG z@r*h)A59zgV6~PuzCP-ruFRRhW%{iF1j6KQR|^iQ%qc#Ho*3$Z3fw+A^*6h9ueOue zYm=9C@w{$WP3xPToPZ@-(G%5?ueMPkrowv|Y=Or=n%;GVBDEUEy3`o$cQYQ(|lYbWTBpn{xSdfU|_bni|Wt84*>rjqUC@8UP+=-*Ft0rdveMMaQU1 zlx#ZHTYo|nt|8#4r!*%~L6a)|^N^qaYI_n>WYU87GMCP`Ql6Fmn z{AykG0m~Ht>hH*xyv_U-Cjq$0z}-sd4D4u1P``rY^JC0aY5jH91OU7igr)6?dVFF@ zJn4ICUW$1{fO_?;IW@Hdc!(n%FsFr5NXLq)IA)B*l(7y3OQZfePC2eQBB1vdnvy+& zw|v%7E(oKWfw*YL-l_M)ZxOdo0`2&Otpr$ct`3XY0iZ!*6da_)P6bm6%EI-Hkl%$Y zb@+O^67)8D*}``=^#caKMGzDwPf7ZVNtQq5{`VVJmg8VaI-~)U2x|YA2FkEy85bhJ z$)bY*OZKG0MdcNRTm4~4I{*7b>OpQe7&(rYmxYJp|C^Y!2cBXB2xVCAnbPM!1q6S? zgZyFWPpm8M)(0?zfQlYjJ}mGCLS${%q={*Klm<*USrX3-JT*g(erozLqyU>1V0JHN zs@s(M7w)y$4}uSI?{ha1fHDFlI1=FLMYLadA07exs=PJ3;M|qkxY9=qBiJ}VYipK& zuyS2=3y_HjU0M7-H3F=Gn?05|*f>fB+&htgkV8{4eZo*Ccx|Z(Vq5Ie&c| z6zi7@@%*2LlJLN!3TgQw5>TRm;(^SkU1dBd8zLAvfuBWQiEIKuyLowYErhMY@o)

RpcMz)%$uM4rLoL`Z6O>#hyp!} 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

RpcMz)%$uM4rLoL`Z6O>#hyp!} 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

RpcMz)%$uM4rLoL`Z6O>#hyp!} zk~?Jo7l$6cpqVNOSHaTX#0(6OBq)I)ho<)5NdQcqW4X*uSLW-Y08%)zKy8wTwcTgc zaldh6DNk1$yFk6#OS-=_=iq9W&}%7NiwmjbAj~lRFv#RzCBGqTCGL>5+xL%*U!SXBiPb|1Gjec@*Hqf3Sg2| z+YNTQ168O%HsP@j<3$9vTL~g9VgaR)aLH}=^szzBDR{jEArD_9Xe5}zX=P!?xm@_g zS%}q=H~=OtVV4%l5`%LbIY(<~*S!GH$62Pv3y_#N4h57cn3H13s!4*&dVJENHNb`X*<9Yb`8EIUK3#oAp(-IPY^Eb}{ zPrvjBKv_}v*Wy$*2CLhGv&p3#xsoLW0hPE)*gRAk2j3IM1ueaXWN2XV+_9CU#(DU* zJx9mjsySW+w%oBPCqB(3Bv5;;C;;$F;g7<;xGb751?U!B_gi^9-u4X23uw6t`}7M8 z!&<@~Rs!siOJ#~dLm>DDwMCctZkpjqsDdHaJ^jm^zndrxfG?xMP8u|jp*;I+0Z!-j zOg`Y=R+wf2h=Eqbjj({U!O)t0eK$KFWQ7PVo-m$3D6pq6S|BpcB(C$1k3ORTM=6_*;;MNxS6G`? s;XgsX@9Cd?db;7Social Trading Bot->" + }, + "propertyNameAtParent": "availableSignals", + "childrenNodesProperties": [ + { + "name": "triggerStageSignals", + "type": "node", + "childType": "Trigger Stage Signals", + "autoAdd": true + }, + { + "name": "openStageSignals", + "type": "node", + "childType": "Open Stage Signals", + "autoAdd": true + }, + { + "name": "manageStageSignals", + "type": "node", + "childType": "Manage Stage Signals", + "autoAdd": true + }, + { + "name": "closeStageSignals", + "type": "node", + "childType": "Close Stage Signals", + "autoAdd": true + } + ] +} \ No newline at end of file diff --git a/Projects/Trading-Signals/Schemas/App-Schema/cancel-order-signal.json b/Projects/Trading-Signals/Schemas/App-Schema/cancel-order-signal.json new file mode 100644 index 000000000..655413c64 --- /dev/null +++ b/Projects/Trading-Signals/Schemas/App-Schema/cancel-order-signal.json @@ -0,0 +1,35 @@ +{ + "type": "Cancel Order Signal", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "actionProject": "Visual-Scripting", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Limit Buy Order Signals->Limit Sell Order Signals->Market Buy Order Signals->Market Sell Order Signals->" + }, + "propertyNameAtParent": "cancelOrderSignal", + "childrenNodesProperties": [] +} \ No newline at end of file diff --git a/Projects/Trading-Signals/Schemas/App-Schema/close-stage-signals.json b/Projects/Trading-Signals/Schemas/App-Schema/close-stage-signals.json new file mode 100644 index 000000000..35b659c8c --- /dev/null +++ b/Projects/Trading-Signals/Schemas/App-Schema/close-stage-signals.json @@ -0,0 +1,92 @@ +{ + "type": "Close Stage Signals", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "actionFunction": "payload.executeAction", + "label": "Add Limit Buy Order Signals", + "relatedUiObject": "Limit Buy Order Signals", + "relatedUiObjectProject": "Trading-Signals" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "actionFunction": "payload.executeAction", + "label": "Add Limit Sell Order Signals", + "relatedUiObject": "Limit Sell Order Signals", + "relatedUiObjectProject": "Trading-Signals" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "actionFunction": "payload.executeAction", + "label": "Add Market Buy Order Signals", + "relatedUiObject": "Market Buy Order Signals", + "relatedUiObjectProject": "Trading-Signals" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "actionFunction": "payload.executeAction", + "label": "Add Market Sell Order Signals", + "relatedUiObject": "Market Sell Order Signals", + "relatedUiObjectProject": "Trading-Signals" + }, + { + "action": "Delete UI Object", + "actionProject": "Visual-Scripting", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Available Signals->" + }, + "propertyNameAtParent": "closeStageSignals", + "childrenNodesProperties": [ + { + "name": "limitBuyOrderSignals", + "type": "array", + "childType": "Limit Buy Order Signals", + "autoAdd": false + }, + { + "name": "limitSellOrderSignals", + "type": "array", + "childType": "Limit Sell Order Signals", + "autoAdd": false + }, + { + "name": "marketBuyOrderSignals", + "type": "array", + "childType": "Market Buy Order Signals", + "autoAdd": false + }, + { + "name": "marketBuyOrderSignals", + "type": "array", + "childType": "Market Buy Order Signals", + "autoAdd": false + } + ] +} \ No newline at end of file diff --git a/Projects/Trading-Signals/Schemas/App-Schema/create-order-signal.json b/Projects/Trading-Signals/Schemas/App-Schema/create-order-signal.json new file mode 100644 index 000000000..6af30d62c --- /dev/null +++ b/Projects/Trading-Signals/Schemas/App-Schema/create-order-signal.json @@ -0,0 +1,35 @@ +{ + "type": "Create Order Signal", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "actionProject": "Visual-Scripting", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Limit Buy Order Signals->Limit Sell Order Signals->Market Buy Order Signals->Market Sell Order Signals->" + }, + "propertyNameAtParent": "createOrderSignal", + "childrenNodesProperties": [] +} \ No newline at end of file diff --git a/Projects/Trading-Signals/Schemas/App-Schema/limit-buy-order-signals.json b/Projects/Trading-Signals/Schemas/App-Schema/limit-buy-order-signals.json new file mode 100644 index 000000000..f29296e15 --- /dev/null +++ b/Projects/Trading-Signals/Schemas/App-Schema/limit-buy-order-signals.json @@ -0,0 +1,68 @@ +{ + "type": "Limit Buy Order Signals", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "createOrderSignal", + "actionFunction": "payload.executeAction", + "label": "Add Create Order Signal", + "relatedUiObject": "Create Order Signal", + "relatedUiObjectProject": "Trading-Signals" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "cancelOrderSignal", + "actionFunction": "payload.executeAction", + "label": "Add Cancel Order Signal", + "relatedUiObject": "Cancel Order Signal", + "relatedUiObjectProject": "Trading-Signals" + }, + { + "action": "Delete UI Object", + "actionProject": "Visual-Scripting", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Open Stage Signals->Close Stage Signals->" + }, + "propertyNameAtParent": "limitBuyOrderSignals", + "childrenNodesProperties": [ + { + "name": "createOrderSignal", + "type": "node", + "childType": "Create Order Signal", + "autoAdd": false + }, + { + "name": "cancelOrderSignal", + "type": "node", + "childType": "Cancel Order Signal", + "autoAdd": false + } + ] +} \ No newline at end of file diff --git a/Projects/Trading-Signals/Schemas/App-Schema/limit-sell-order-signals.json b/Projects/Trading-Signals/Schemas/App-Schema/limit-sell-order-signals.json new file mode 100644 index 000000000..7230b84c0 --- /dev/null +++ b/Projects/Trading-Signals/Schemas/App-Schema/limit-sell-order-signals.json @@ -0,0 +1,68 @@ +{ + "type": "Limit Sell Order Signals", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "createOrderSignal", + "actionFunction": "payload.executeAction", + "label": "Add Create Order Signal", + "relatedUiObject": "Create Order Signal", + "relatedUiObjectProject": "Trading-Signals" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "cancelOrderSignal", + "actionFunction": "payload.executeAction", + "label": "Add Cancel Order Signal", + "relatedUiObject": "Cancel Order Signal", + "relatedUiObjectProject": "Trading-Signals" + }, + { + "action": "Delete UI Object", + "actionProject": "Visual-Scripting", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Open Stage Signals->Close Stage Signals->" + }, + "propertyNameAtParent": "limitSellOrderSignals", + "childrenNodesProperties": [ + { + "name": "createOrderSignal", + "type": "node", + "childType": "Create Order Signal", + "autoAdd": false + }, + { + "name": "cancelOrderSignal", + "type": "node", + "childType": "Cancel Order Signal", + "autoAdd": false + } + ] +} \ No newline at end of file diff --git a/Projects/Trading-Signals/Schemas/App-Schema/manage-stage-signals.json b/Projects/Trading-Signals/Schemas/App-Schema/manage-stage-signals.json new file mode 100644 index 000000000..d06bb452f --- /dev/null +++ b/Projects/Trading-Signals/Schemas/App-Schema/manage-stage-signals.json @@ -0,0 +1,35 @@ +{ + "type": "Manage Stage Signals", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "actionProject": "Visual-Scripting", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Available Signals->" + }, + "propertyNameAtParent": "manageStageSignals", + "childrenNodesProperties": [] +} \ No newline at end of file diff --git a/Projects/Trading-Signals/Schemas/App-Schema/market-buy-order-signals.json b/Projects/Trading-Signals/Schemas/App-Schema/market-buy-order-signals.json new file mode 100644 index 000000000..13d5fe877 --- /dev/null +++ b/Projects/Trading-Signals/Schemas/App-Schema/market-buy-order-signals.json @@ -0,0 +1,68 @@ +{ + "type": "Market Buy Order Signals", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "createOrderSignal", + "actionFunction": "payload.executeAction", + "label": "Add Create Order Signal", + "relatedUiObject": "Create Order Signal", + "relatedUiObjectProject": "Trading-Signals" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "cancelOrderSignal", + "actionFunction": "payload.executeAction", + "label": "Add Cancel Order Signal", + "relatedUiObject": "Cancel Order Signal", + "relatedUiObjectProject": "Trading-Signals" + }, + { + "action": "Delete UI Object", + "actionProject": "Visual-Scripting", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Open Stage Signals->Close Stage Signals->" + }, + "propertyNameAtParent": "marketBuyOrderSignals", + "childrenNodesProperties": [ + { + "name": "createOrderSignal", + "type": "node", + "childType": "Create Order Signal", + "autoAdd": false + }, + { + "name": "cancelOrderSignal", + "type": "node", + "childType": "Cancel Order Signal", + "autoAdd": false + } + ] +} \ No newline at end of file diff --git a/Projects/Trading-Signals/Schemas/App-Schema/market-sell-order-signals.json b/Projects/Trading-Signals/Schemas/App-Schema/market-sell-order-signals.json new file mode 100644 index 000000000..f57d03681 --- /dev/null +++ b/Projects/Trading-Signals/Schemas/App-Schema/market-sell-order-signals.json @@ -0,0 +1,68 @@ +{ + "type": "Market Sell Order Signals", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "createOrderSignal", + "actionFunction": "payload.executeAction", + "label": "Add Create Order Signal", + "relatedUiObject": "Create Order Signal", + "relatedUiObjectProject": "Trading-Signals" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "cancelOrderSignal", + "actionFunction": "payload.executeAction", + "label": "Add Cancel Order Signal", + "relatedUiObject": "Cancel Order Signal", + "relatedUiObjectProject": "Trading-Signals" + }, + { + "action": "Delete UI Object", + "actionProject": "Visual-Scripting", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Open Stage Signals->Close Stage Signals->" + }, + "propertyNameAtParent": "marketSellOrderSignals", + "childrenNodesProperties": [ + { + "name": "createOrderSignal", + "type": "node", + "childType": "Create Order Signal", + "autoAdd": false + }, + { + "name": "cancelOrderSignal", + "type": "node", + "childType": "Cancel Order Signal", + "autoAdd": false + } + ] +} \ No newline at end of file diff --git a/Projects/Trading-Signals/Schemas/App-Schema/open-stage-signals.json b/Projects/Trading-Signals/Schemas/App-Schema/open-stage-signals.json new file mode 100644 index 000000000..74b0b0d57 --- /dev/null +++ b/Projects/Trading-Signals/Schemas/App-Schema/open-stage-signals.json @@ -0,0 +1,92 @@ +{ + "type": "Open Stage Signals", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "actionFunction": "payload.executeAction", + "label": "Add Limit Buy Order Signals", + "relatedUiObject": "Limit Buy Order Signals", + "relatedUiObjectProject": "Trading-Signals" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "actionFunction": "payload.executeAction", + "label": "Add Limit Sell Order Signals", + "relatedUiObject": "Limit Sell Order Signals", + "relatedUiObjectProject": "Trading-Signals" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "actionFunction": "payload.executeAction", + "label": "Add Market Buy Order Signals", + "relatedUiObject": "Market Buy Order Signals", + "relatedUiObjectProject": "Trading-Signals" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "actionFunction": "payload.executeAction", + "label": "Add Market Sell Order Signals", + "relatedUiObject": "Market Sell Order Signals", + "relatedUiObjectProject": "Trading-Signals" + }, + { + "action": "Delete UI Object", + "actionProject": "Visual-Scripting", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Available Signals->" + }, + "propertyNameAtParent": "openStageSignals", + "childrenNodesProperties": [ + { + "name": "limitBuyOrderSignals", + "type": "array", + "childType": "Limit Buy Order Signals", + "autoAdd": false + }, + { + "name": "limitSellOrderSignals", + "type": "array", + "childType": "Limit Sell Order Signals", + "autoAdd": false + }, + { + "name": "marketBuyOrderSignals", + "type": "array", + "childType": "Market Buy Order Signals", + "autoAdd": false + }, + { + "name": "marketSellOrderSignals", + "type": "array", + "childType": "Market Sell Order Signals", + "autoAdd": false + } + ] +} \ No newline at end of file diff --git a/Projects/Trading-Signals/Schemas/App-Schema/take-position-signal.json b/Projects/Trading-Signals/Schemas/App-Schema/take-position-signal.json new file mode 100644 index 000000000..b499c2fa4 --- /dev/null +++ b/Projects/Trading-Signals/Schemas/App-Schema/take-position-signal.json @@ -0,0 +1,35 @@ +{ + "type": "Take Position Signal", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "actionProject": "Visual-Scripting", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Trigger Stage Signals->" + }, + "propertyNameAtParent": "takePositionSignal", + "childrenNodesProperties": [] +} \ No newline at end of file diff --git a/Projects/Trading-Signals/Schemas/App-Schema/trigger-off-signal.json b/Projects/Trading-Signals/Schemas/App-Schema/trigger-off-signal.json new file mode 100644 index 000000000..55000aa3a --- /dev/null +++ b/Projects/Trading-Signals/Schemas/App-Schema/trigger-off-signal.json @@ -0,0 +1,35 @@ +{ + "type": "Trigger Off Signal", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "actionProject": "Visual-Scripting", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Trigger Stage Signals->" + }, + "propertyNameAtParent": "triggerOffSignal", + "childrenNodesProperties": [] +} \ No newline at end of file diff --git a/Projects/Trading-Signals/Schemas/App-Schema/trigger-on-signal.json b/Projects/Trading-Signals/Schemas/App-Schema/trigger-on-signal.json new file mode 100644 index 000000000..cadb33343 --- /dev/null +++ b/Projects/Trading-Signals/Schemas/App-Schema/trigger-on-signal.json @@ -0,0 +1,35 @@ +{ + "type": "Trigger On Signal", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Delete UI Object", + "actionProject": "Visual-Scripting", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Trigger Stage Signals->" + }, + "propertyNameAtParent": "triggerOnSignal", + "childrenNodesProperties": [] +} \ No newline at end of file diff --git a/Projects/Trading-Signals/Schemas/App-Schema/trigger-stage-signals.json b/Projects/Trading-Signals/Schemas/App-Schema/trigger-stage-signals.json new file mode 100644 index 000000000..e72bea290 --- /dev/null +++ b/Projects/Trading-Signals/Schemas/App-Schema/trigger-stage-signals.json @@ -0,0 +1,84 @@ +{ + "type": "Trigger Stage Signals", + "menuItems": [ + { + "action": "Configure", + "actionFunction": "uiObject.configEditor.activate", + "label": "Configure", + "iconPathOn": "configuration", + "iconPathOff": "configuration" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "triggerOnSignal", + "actionFunction": "payload.executeAction", + "label": "Add Trigger On Signal", + "relatedUiObject": "Trigger On Signal", + "relatedUiObjectProject": "Trading-Signals" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "triggerOffSignal", + "actionFunction": "payload.executeAction", + "label": "Add Trigger Off Signal", + "relatedUiObject": "Trigger Off Signal", + "relatedUiObjectProject": "Trading-Signals" + }, + { + "action": "Add UI Object", + "actionProject": "Visual-Scripting", + "disableIfPropertyIsDefined": true, + "propertyToCheckFor": "takePositionSignal", + "actionFunction": "payload.executeAction", + "label": "Add Take Position Signal", + "relatedUiObject": "Take Position Signal", + "relatedUiObjectProject": "Trading-Signals" + }, + { + "action": "Delete UI Object", + "actionProject": "Visual-Scripting", + "askConfirmation": true, + "confirmationLabel": "Confirm to Delete", + "label": "Delete", + "iconPathOn": "delete-entity", + "iconPathOff": "delete-entity", + "actionFunction": "payload.executeAction" + } + ], + "editors": { + "config": true + }, + "initialValues": { + "config": "{}" + }, + "addLeftIcons": true, + "level": 2, + "attachingRules": { + "compatibleTypes": "->Available Signals->" + }, + "propertyNameAtParent": "triggerStageSignals", + "childrenNodesProperties": [ + { + "name": "triggerOnSignal", + "type": "node", + "childType": "Trigger On Signal", + "autoAdd": true + }, + { + "name": "triggerOffSignal", + "type": "node", + "childType": "Trigger Off Signal", + "autoAdd": true + }, + { + "name": "takePositionSignal", + "type": "node", + "childType": "Take Position Signal", + "autoAdd": true + } + ] +} \ No newline at end of file diff --git a/Projects/Trading-Signals/TS/Bot-Modules/TradingSignals.js b/Projects/Trading-Signals/TS/Bot-Modules/TradingSignals.js new file mode 100644 index 000000000..b000feecb --- /dev/null +++ b/Projects/Trading-Signals/TS/Bot-Modules/TradingSignals.js @@ -0,0 +1,128 @@ +exports.newTradingSignalsBotModulesTradingSignals = function (processIndex) { + + let thisObject = { + makeAnnouncements: makeAnnouncements, + initialize: initialize, + finalize: finalize + } + + let tradingSystem + let tradingEngine + let sessionParameters + let taskParameters + + return thisObject + + function initialize() { + tradingSystem = TS.projects.foundations.globals.processVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).SIMULATION_STATE.tradingSystem + tradingEngine = TS.projects.foundations.globals.processVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).SIMULATION_STATE.tradingEngine + sessionParameters = TS.projects.foundations.globals.processConstants.CONSTANTS_BY_PROCESS_INDEX_MAP.get(processIndex).SESSION_NODE.tradingParameters + + taskParameters = { + exchange: TS.projects.foundations.globals.taskConstants.TASK_NODE.parentNode.parentNode.parentNode.referenceParent.parentNode.parentNode.name, + market: TS.projects.foundations.globals.taskConstants.TASK_NODE.parentNode.parentNode.parentNode.referenceParent.baseAsset.referenceParent.config.codeName + + '/' + + TS.projects.foundations.globals.taskConstants.TASK_NODE.parentNode.parentNode.parentNode.referenceParent.quotedAsset.referenceParent.config.codeName + } + } + + function finalize() { + tradingSystem = undefined + tradingEngine = undefined + sessionParameters = undefined + taskParameters = undefined + TS.projects.foundations.globals.processConstants.CONSTANTS_BY_PROCESS_INDEX_MAP.get(processIndex).SESSION_NODE.messagesSent = undefined + } + + function makeAnnouncements(node, status='Open') { + if (node === undefined) { return } + if (node.announcements === undefined) { return } + + for (let i = 0; i < node.announcements.length; i++) { + let announcement = node.announcements[i] + let canAnnounce = true + + // Check configuration to see if Announcement should be run at Enter or Exit of Node + // set defaults, protect against empty configurations or missing values + let onEnter = true + let onExit = false + if (announcement.config.onEnter !== undefined) { + onEnter = announcement.config.onEnter + } + if (announcement.config.onExit !== undefined) { + onExit = announcement.config.onExit + if (announcement.config.onEnter === undefined) { + onEnter = false + } + } + if ((status === 'Open' && onEnter) || (status === 'Closed' && onExit)) { + canAnnounce = true + } else { + canAnnounce = false + } + + if (announcement.announcementCondition !== undefined) { + let conditionValue + try { + conditionValue = eval(announcement.announcementCondition.code) + } catch (err) { + + const message = 'Announcement Condition Evaluation Error' + let docs = { + project: 'Foundations', + category: 'Topic', + type: 'TS LF Trading Bot Error - ' + message, + placeholder: {} + } + + TS.projects.education.utilities.docsFunctions.buildPlaceholder(docs, err, announcement.announcementCondition.name, announcement.announcementCondition.code, undefined, undefined, undefined) + + tradingSystem.addError([announcement.announcementCondition.id, err.message, docs]) + } + if (conditionValue !== true) { canAnnounce = false } + } + if (canAnnounce === true) { + let text = announcement.config.text + if (announcement.announcementFormula !== undefined) { + let formulaValue + let errorMessage + + try { + formulaValue = eval(announcement.announcementFormula.code) + } catch (err) { + + errorMessage = err.message + const message = 'Announcement Formula Evaluation Error' + let docs = { + project: 'Foundations', + category: 'Topic', + type: 'TS LF Trading Bot Error - ' + message, + placeholder: {} + } + + TS.projects.education.utilities.docsFunctions.buildPlaceholder(docs, err, announcement.announcementFormula.name, announcement.announcementFormula.code, undefined, undefined, undefined) + + tradingSystem.addError([announcement.announcementFormula.id, err.message, docs]) + } + if (errorMessage == undefined) { text = formulaValue } + } + + if (TS.projects.foundations.globals.processConstants.CONSTANTS_BY_PROCESS_INDEX_MAP.get(processIndex).SESSION_NODE.socialBots !== undefined) { + TS.projects.foundations.globals.processConstants.CONSTANTS_BY_PROCESS_INDEX_MAP.get(processIndex).SESSION_NODE.socialBots.announce(text) + tradingSystem.announcements.push([announcement.id, text]) + } else { + + const message = 'Social Bots Node Missing' + let docs = { + project: 'Foundations', + category: 'Topic', + type: 'TS LF Trading Bot Error - ' + message, + placeholder: {} + } + + tradingSystem.addError([TS.projects.foundations.globals.processConstants.CONSTANTS_BY_PROCESS_INDEX_MAP.get(processIndex).SESSION_NODE.id, message, docs]) + } + } + } + } +} diff --git a/Projects/Trading-Signals/UI/Function-Libraries/ActionSwitch.js b/Projects/Trading-Signals/UI/Function-Libraries/ActionSwitch.js new file mode 100644 index 000000000..8bd40ffc6 --- /dev/null +++ b/Projects/Trading-Signals/UI/Function-Libraries/ActionSwitch.js @@ -0,0 +1,31 @@ +function newSocialBotsActionSwitch() { + + let thisObject = { + executeAction: executeAction, + initialize: initialize, + finalize: finalize + } + + return thisObject + + function finalize() { + + } + + function initialize() { + /* Nothing to initialize since a Function Library does not hold any state. */ + } + + async function executeAction(action) { + switch (action.name) { + case 'Send Telegram Test Message': + { + UI.projects.socialBots.functionLibraries.socialBotsFunctions.sendTelegramTestMessage(action.node, action.callBackFunction) + } + break + default: { + console.log("[WARN] Action sent to Social-Bots Action Switch does not belong here. Verify at the App Schema file of the node that triggered this action that the actionProject is pointing to the right project. -> Action = " + action.name + " -> Action Node Name = " + action.node.name) + } + } + } +} diff --git a/Projects/Trading-Signals/UI/Function-Libraries/TradingSignalsFunctions.js b/Projects/Trading-Signals/UI/Function-Libraries/TradingSignalsFunctions.js new file mode 100644 index 000000000..fcdf3d8a8 --- /dev/null +++ b/Projects/Trading-Signals/UI/Function-Libraries/TradingSignalsFunctions.js @@ -0,0 +1,73 @@ +function newSocialBotsFunctionLibraryTradingSignalsFunctions() { + let thisObject = { + sendTelegramTestMessage: sendTelegramTestMessage + } + + return thisObject + + function sendTelegramTestMessage(node, callBackFunction) { + + let botToken = UI.projects.visualScripting.utilities.nodeConfig.loadConfigProperty(node.payload, 'botToken') + let chatId = UI.projects.visualScripting.utilities.nodeConfig.loadConfigProperty(node.payload, 'chatId') + + if (botToken === undefined) { + node.payload.uiObject.setErrorMessage('botToken parameter not defined.') + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } + + if (chatId === undefined) { + node.payload.uiObject.setErrorMessage('chatId parameter not defined.') + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + return + } + + let params = { + text: "Test Message from Superalgos", + chat_id: chatId + } + + httpRequestJSON(JSON.stringify(params),"https://api.telegram.org/bot" + botToken + "/sendMessage", onResponse) + + function onResponse(err) { + if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result) { + node.payload.uiObject.setInfoMessage('Telegram message sent.') + callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE) + } else { + node.payload.uiObject.setErrorMessage('Could not send Telegram message. Error Response: ' + err.message) + callBackFunction(GLOBAL.DEFAULT_FAIL_RESPONSE) + } + } + + function httpRequestJSON(pContentToSend, pPath, callBackFunction) { + let xmlHttpRequest = new XMLHttpRequest(); + xmlHttpRequest.onreadystatechange = function () { + if (this.readyState === 4 && this.status === 200) { + callBackFunction(GLOBAL.DEFAULT_OK_RESPONSE, xmlHttpRequest.responseText); + return; + } else if (this.readyState === 4 && (this.status === 404 || this.status === 401 || this.status === 400)) { + callBackFunction({ + result: "Fail", + message: JSON.parse(xmlHttpRequest.responseText).description, + code: JSON.parse(xmlHttpRequest.responseText).error_code + }); + return; + } + }; + + if (pContentToSend === undefined) { + xmlHttpRequest.open("GET", pPath, true); + xmlHttpRequest.send(); + } else { + try { + let blob = new Blob([pContentToSend], { type: 'application/json' }); + xmlHttpRequest.open("POST", pPath, true); + xmlHttpRequest.send(blob); + } catch (err) { + if (ERROR_LOG === true) { console.log(spacePad(MODULE_NAME, 50) + " : " + "[ERROR] callServer -> err.message = " & err.message); } + callBackFunction({ result: "Fail", message: err.message }) + } + } + } + } +} From 8f334577c75c21cd93859846f1a4ed5d89656e16 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 25 Nov 2021 22:58:22 +0100 Subject: [PATCH 12/13] Update ProfileConstructor.js --- .../UI/Function-Libraries/ProfileConstructor.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js b/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js index 4a5d7e5b5..940b853b2 100644 --- a/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js +++ b/Projects/Governance/UI/Function-Libraries/ProfileConstructor.js @@ -124,6 +124,8 @@ function newGovernanceFunctionLibraryProfileConstructor() { 'User Profile', UI.projects.foundations.spaces.designSpace.workspace.workspaceNode.rootNodes ) + + UI.projects.visualScripting.functionLibraries.attachDetach.referenceAttachNode(node, userProfile) /* Set up a basic profile to start receiving benefits */ @@ -142,11 +144,11 @@ function newGovernanceFunctionLibraryProfileConstructor() { let liquidProg = UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.addUIObject(liquidProgs, "Liquidity Program", userProfile) liquidProg.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180 liquidProg.payload.uiObject.menu.internalClick('Add Tokens Awarded') - /* Check if the user already has the SA fork. If not, do it for them. */ + /* const hasFork = UI.projects.governance.spaces.userProfileSpace.githubForks.get(githubUsername) if (hasFork === undefined) { // New user! Probably doesn't have a fork, so let's create it. @@ -198,6 +200,7 @@ function newGovernanceFunctionLibraryProfileConstructor() { } } } + */ /* We store at the User Profile the Signed githubUsername */ @@ -217,10 +220,6 @@ function newGovernanceFunctionLibraryProfileConstructor() { Delete the mnemonic from the Profile Constructor config. */ node.config = "{}" - /* - TODO: Let's create a nice basic profile to start with liquidity and community - */ - /* Show nice message. */ From 3ea94bec9a5f03e43684dc279d2ad6cd3b690b14 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 25 Nov 2021 23:07:06 +0100 Subject: [PATCH 13/13] Trading Signals Project App Schemas Implemented --- .../Plugins/User-Profiles/Luis-Fernando-Molina.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json index dd0cbca69..746d700e7 100644 --- a/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json +++ b/Projects/Governance/Plugins/User-Profiles/Luis-Fernando-Molina.json @@ -18166,17 +18166,17 @@ "id": "a8de78f0-c3e4-4a2a-b7e8-f659073969db", "savedPayload": { "position": { - "x": 37500, + "x": 33333.333333333336, "y": 18800 }, "targetPosition": { - "x": 37500, + "x": 33333.333333333336, "y": 18800 }, "floatingObject": { "isPinned": false, "isFrozen": false, - "isCollapsed": false, + "isCollapsed": true, "angleToParent": 1, "distanceToParent": 3, "arrangementStyle": 0