From b22b225eb6b5e1603bd21da191ae2d800b9aa86e Mon Sep 17 00:00:00 2001 From: duianto Date: Thu, 21 Aug 2025 23:36:38 +0200 Subject: [PATCH 1/4] Add guide dynamic libraries --- docs/Chords.rst | 119 ++++++++++++++++++ docs/assets/images/Dynamic-Library-Chord.webp | Bin 0 -> 1456 bytes .../Dynamic-Library-Switching-Chords.webp | Bin 0 -> 5924 bytes 3 files changed, 119 insertions(+) create mode 100644 docs/assets/images/Dynamic-Library-Chord.webp create mode 100644 docs/assets/images/Dynamic-Library-Switching-Chords.webp diff --git a/docs/Chords.rst b/docs/Chords.rst index f8a37ff..5b3a684 100644 --- a/docs/Chords.rst +++ b/docs/Chords.rst @@ -289,3 +289,122 @@ We have added a compound chord: .. note:: Compound chords aren't limited to just two in a row. + +Dynamic Libraries +~~~~~~~~~~~~~~~~~ + +The same chord input can have a unique output in each dynamic library. + +For example, the chord: ``ar`` can output: + +* ``are`` in the base library. +* ``arm`` in a dynamic library. +* ``art`` or ``area`` in other dynamic libraries. + +Add dynamic library switching chords +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To switch between dynamic libraries, we add library chords in the device +manager's library editor: https://charachorder.io/config/chords/ + +First we add a base library chord. This exits any dynamic library. + +* chord: ``lib`` +* output: ``{action: base library}base`` + +Then, we add a dynamic library chord. + +* chord: ``libr`` +* output: ``{action: dynamic library}lib1`` + +.. note:: + + The dynamic library names ``base`` and ``lib1`` (in the chord output) + are just examples. Feel free to use your own names when you know how + this works. + +Add a chord in a dynamic library +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +#. Switch to the dynamic library, by chording: ``libr`` +#. It switches to the dynamic library and outputs its name: ``lib1`` +#. You can ignore the name, erase it or just press ``enter`` to continue + on a new line. We'll make it easier to erase the library name in the + next section. + +#. Add an impulse chord: ``i + DUP`` +#. At the impulse output prompt, type: ``arm`` +#. Press: ``enter`` +#. At the impulse input prompt, chord: ``ar`` +#. Press: ``enter`` + + .. note:: + + It doesn't overwrite an existing chord on the base library. + Because it adds the dynamic library chord as a prefix. + + .. _Dynamic Library Chord: + .. image:: /assets/images/Dynamic-Library-Chord.webp + :width: 294 + :alt: Dynamic Library Chord + + Now, while we're in the dynamic library: ``lib1`` + + * when we chord: ``ar`` + * it outputs: ``arm`` + +#. Switch to the base library, with the chord: ``lib`` +#. It switches to the base library and outputs its name: ``base`` + + Now, while we're on the base library: ``base`` + + * when we chord: ``ar`` + * it outputs: ``are`` + +Select the dynamic library name automatically +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This isn't required, but it's a convenience. + +When we switch between dynamic libraries, the library chord outputs the +library name. It's an extra step to erase the library name manually. + +Instead, let's select the dynamic library name automatically, by adding +these actions to the end of the library chord output. + +.. note:: + + The actions below are on the same line in the manager, they are only + on separate lines here to make them easier to read. + +.. code-block:: + + {press_next}{left_shift} + {arrow left}{arrow left}{arrow left}{arrow left} + {release_next}{left_shift} + +The number of ``{arrow left}`` actions should match the number of +characters in the base and dynamic library names, in this case we used +four characters for both: ``base`` and ``lib1`` + +The ``base`` and ``lib1`` dynamic library chords look like this: + +.. _Dynamic Library Switching Chords: +.. image:: /assets/images/Dynamic-Library-Switching-Chords.webp + :width: 460 + :alt: Dynamic Library Switching Chords + +Now the library name will be selected automatically. + +Pressing the chord: ``libr`` + +* Switches to the dynamic library +* outputs the library name: ``lib1`` +* and selects it + +It's easy to erase the name by: + +* Pressing: ``backspace`` +* or typing a character +* or pressing a chord + diff --git a/docs/assets/images/Dynamic-Library-Chord.webp b/docs/assets/images/Dynamic-Library-Chord.webp new file mode 100644 index 0000000000000000000000000000000000000000..ec13219746a18cf9f488be1708f88be89d2a4c9a GIT binary patch literal 1456 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 Date: Sun, 24 Aug 2025 23:53:01 +0200 Subject: [PATCH 2/4] chords, dyn lib, review suggestions --- docs/Chords.rst | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/docs/Chords.rst b/docs/Chords.rst index 5b3a684..47fdd63 100644 --- a/docs/Chords.rst +++ b/docs/Chords.rst @@ -307,7 +307,7 @@ Add dynamic library switching chords To switch between dynamic libraries, we add library chords in the device manager's library editor: https://charachorder.io/config/chords/ -First we add a base library chord. This exits any dynamic library. +First, we add a base library chord. This exits any dynamic library. * chord: ``lib`` * output: ``{action: base library}base`` @@ -332,16 +332,17 @@ Add a chord in a dynamic library on a new line. We'll make it easier to erase the library name in the next section. -#. Add an impulse chord: ``i + DUP`` -#. At the impulse output prompt, type: ``arm`` +#. Open the impulse chord menu: ``i+DUP`` +#. At the impulse output prompt, type your desired output: ``arm`` #. Press: ``enter`` -#. At the impulse input prompt, chord: ``ar`` +#. At the impulse input prompt, chord: ``a+r`` #. Press: ``enter`` .. note:: - It doesn't overwrite an existing chord on the base library. - Because it adds the dynamic library chord as a prefix. + Adding a chord in a dynamic library doesn't overwrite an existing + chord on the base library because it adds the dynamic library + chord as a prefix. .. _Dynamic Library Chord: .. image:: /assets/images/Dynamic-Library-Chord.webp @@ -350,26 +351,27 @@ Add a chord in a dynamic library Now, while we're in the dynamic library: ``lib1`` - * when we chord: ``ar`` + * when we chord: ``a+r`` * it outputs: ``arm`` -#. Switch to the base library, with the chord: ``lib`` +#. Switch to the base library by using the base library chord we + created earlier: ``lib`` #. It switches to the base library and outputs its name: ``base`` Now, while we're on the base library: ``base`` - * when we chord: ``ar`` + * when we chord: ``a+r`` * it outputs: ``are`` Select the dynamic library name automatically ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -This isn't required, but it's a convenience. +This step isn't required, but it's a convenience. When we switch between dynamic libraries, the library chord outputs the library name. It's an extra step to erase the library name manually. -Instead, let's select the dynamic library name automatically, by adding +Instead, let's select the dynamic library name automatically by adding these actions to the end of the library chord output. .. note:: From 1589eb39f47093430adb9daafc2e5d18e3a245c0 Mon Sep 17 00:00:00 2001 From: duianto Date: Mon, 25 Aug 2025 19:31:26 +0200 Subject: [PATCH 3/4] chords, dyn lib, change examples, and update screenshots - Replaced the two letter chord with a three letter chord - Changed the image format from .webp to .png, because GitHubs diff doesn't support webp, with png the images are visible while reviewing a PR on GitHub. --- docs/Chords.rst | 85 +++++++++++------- ...-Chord-With-Pressed-Keys-Num-And-Shift.png | Bin 0 -> 5910 bytes docs/assets/images/Dynamic-Library-Chord.png | Bin 0 -> 4352 bytes docs/assets/images/Dynamic-Library-Chord.webp | Bin 1456 -> 0 bytes .../Dynamic-Library-Switching-Chords.png | Bin 0 -> 5754 bytes .../Dynamic-Library-Switching-Chords.webp | Bin 5924 -> 0 bytes 6 files changed, 55 insertions(+), 30 deletions(-) create mode 100644 docs/assets/images/Dynamic-Library-Chord-With-Pressed-Keys-Num-And-Shift.png create mode 100644 docs/assets/images/Dynamic-Library-Chord.png delete mode 100644 docs/assets/images/Dynamic-Library-Chord.webp create mode 100644 docs/assets/images/Dynamic-Library-Switching-Chords.png delete mode 100644 docs/assets/images/Dynamic-Library-Switching-Chords.webp diff --git a/docs/Chords.rst b/docs/Chords.rst index 47fdd63..9961e00 100644 --- a/docs/Chords.rst +++ b/docs/Chords.rst @@ -295,11 +295,17 @@ Dynamic Libraries The same chord input can have a unique output in each dynamic library. -For example, the chord: ``ar`` can output: +For example, the chord: ``r+a+l`` can output: -* ``are`` in the base library. -* ``arm`` in a dynamic library. -* ``art`` or ``area`` in other dynamic libraries. +* ``really`` in the base library +* ``algorithm`` in a school library +* ``realtor@email.com`` in a work library + +``t+n+o+e`` can output: + +* ``note`` in the base library +* ``Eneot of Draconia`` in a library for Novel writing +* ``OnePlus`` in a library for Cell Phone blogging Add dynamic library switching chords ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -309,33 +315,34 @@ manager's library editor: https://charachorder.io/config/chords/ First, we add a base library chord. This exits any dynamic library. -* chord: ``lib`` +* chord: ``b+a+l+i`` * output: ``{action: base library}base`` -Then, we add a dynamic library chord. +Then, we add a work dynamic library chord. -* chord: ``libr`` -* output: ``{action: dynamic library}lib1`` +* chord: ``w+l+i+b`` +* output: ``{action: dynamic library}wlib`` .. note:: - The dynamic library names ``base`` and ``lib1`` (in the chord output) - are just examples. Feel free to use your own names when you know how + Both the chords ``b+a+l+i`` and ``w+l+i+b``, and the dynamic library + names ``base`` and ``wlib`` (in the chord output) are just examples. + Feel free to use your own chords and library names when you know how this works. Add a chord in a dynamic library ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -#. Switch to the dynamic library, by chording: ``libr`` -#. It switches to the dynamic library and outputs its name: ``lib1`` +#. Switch to the work library, by chording: ``w+l+i+b`` +#. It switches to the work library and outputs its name: ``wlib`` #. You can ignore the name, erase it or just press ``enter`` to continue on a new line. We'll make it easier to erase the library name in the next section. - #. Open the impulse chord menu: ``i+DUP`` -#. At the impulse output prompt, type your desired output: ``arm`` +#. At the impulse output prompt, type your desired output: + ``realtor@email.com`` #. Press: ``enter`` -#. At the impulse input prompt, chord: ``a+r`` +#. At the impulse input prompt, chord: ``r+a+l`` #. Press: ``enter`` .. note:: @@ -344,24 +351,42 @@ Add a chord in a dynamic library chord on the base library because it adds the dynamic library chord as a prefix. + The screenshot below shows that the impulse prompt includes + the keys that were held: + + * Num (left pinky west), the symbol: (2) + * Arrow down with a bottom line means: press and do not release the next key + * Shift (right pinky west) + * 2 (right index south, the ``t`` key is 2 on the number layer) + * Arrow up with a bottom line means: release the next key + * Shift + + .. _Dynamic Library Chord With Pressed Keys Num and Shift: + .. image:: /assets/images/Dynamic-Library-Chord-With-Pressed-Keys-Num-And-Shift.png + :alt: Dynamic Library Chord With Pressed Keys Num and Shift + + The chord works fine: ``realtor@email.com`` + + It can be edited in the device manager to look like its output: + https://charachorder.io + .. _Dynamic Library Chord: - .. image:: /assets/images/Dynamic-Library-Chord.webp - :width: 294 + .. image:: /assets/images/Dynamic-Library-Chord.png :alt: Dynamic Library Chord - Now, while we're in the dynamic library: ``lib1`` + Now, while we're in the dynamic library: ``wlib`` - * when we chord: ``a+r`` - * it outputs: ``arm`` + * when we chord: ``r+a+l`` + * it outputs: ``realtor@email.com`` #. Switch to the base library by using the base library chord we - created earlier: ``lib`` + created earlier: ``b+a+l+i`` #. It switches to the base library and outputs its name: ``base`` Now, while we're on the base library: ``base`` - * when we chord: ``a+r`` - * it outputs: ``are`` + * when we chord: ``r+a+l`` + * it outputs: ``really`` Select the dynamic library name automatically ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -387,24 +412,24 @@ these actions to the end of the library chord output. The number of ``{arrow left}`` actions should match the number of characters in the base and dynamic library names, in this case we used -four characters for both: ``base`` and ``lib1`` +four characters for both: ``base`` and ``wlib`` -The ``base`` and ``lib1`` dynamic library chords look like this: +The ``base`` and ``wlib`` dynamic library chords look like this: .. _Dynamic Library Switching Chords: -.. image:: /assets/images/Dynamic-Library-Switching-Chords.webp - :width: 460 +.. image:: /assets/images/Dynamic-Library-Switching-Chords.png + :width: 437 :alt: Dynamic Library Switching Chords Now the library name will be selected automatically. -Pressing the chord: ``libr`` +Pressing the chord: ``w+l+i+b`` * Switches to the dynamic library -* outputs the library name: ``lib1`` +* outputs the library name: ``wlib`` * and selects it -It's easy to erase the name by: +Now, it's easy to erase the name by: * Pressing: ``backspace`` * or typing a character diff --git a/docs/assets/images/Dynamic-Library-Chord-With-Pressed-Keys-Num-And-Shift.png b/docs/assets/images/Dynamic-Library-Chord-With-Pressed-Keys-Num-And-Shift.png new file mode 100644 index 0000000000000000000000000000000000000000..f0fbd41b45162520dc9fb9f6644f096c674af143 GIT binary patch literal 5910 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 literal 0 HcmV?d00001 diff --git a/docs/assets/images/Dynamic-Library-Chord.webp b/docs/assets/images/Dynamic-Library-Chord.webp deleted file mode 100644 index ec13219746a18cf9f488be1708f88be89d2a4c9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1456 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 JMVb$v{0-)yEtvoS literal 0 HcmV?d00001 diff --git a/docs/assets/images/Dynamic-Library-Switching-Chords.webp b/docs/assets/images/Dynamic-Library-Switching-Chords.webp deleted file mode 100644 index 169d57b8a98ac38f39c88062157adfa113c5820f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5924 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 Date: Sun, 31 Aug 2025 16:43:39 +0200 Subject: [PATCH 4/4] chords, dyn lib, more review suggestions, etc. Added an introduction. Changed: Dynamic Library Switching Chords And: Library Chords To: Dynamic Toggles Uppercased key names: ENTER, BACKSPACE Added images: Base Library Action Dynamic Library Action Dynamic Toggle chords without selecting the library names --- docs/Chords.rst | 104 ++++++++++-------- docs/assets/images/BaseLibraryAction.png | Bin 0 -> 6480 bytes .../Dynamic-Library-Switching-Chords.png | Bin 5754 -> 0 bytes ...amic-Toggle-Chords-Select-Library-Name.png | Bin 0 -> 6549 bytes docs/assets/images/Dynamic-Toggle-Chords.png | Bin 0 -> 3925 bytes docs/assets/images/DynamicLibraryAction.png | Bin 0 -> 14205 bytes 6 files changed, 56 insertions(+), 48 deletions(-) create mode 100644 docs/assets/images/BaseLibraryAction.png delete mode 100644 docs/assets/images/Dynamic-Library-Switching-Chords.png create mode 100644 docs/assets/images/Dynamic-Toggle-Chords-Select-Library-Name.png create mode 100644 docs/assets/images/Dynamic-Toggle-Chords.png create mode 100644 docs/assets/images/DynamicLibraryAction.png diff --git a/docs/Chords.rst b/docs/Chords.rst index 9961e00..e0efa2e 100644 --- a/docs/Chords.rst +++ b/docs/Chords.rst @@ -293,7 +293,7 @@ We have added a compound chord: Dynamic Libraries ~~~~~~~~~~~~~~~~~ -The same chord input can have a unique output in each dynamic library. +Dynamic Libraries are a way with which you can store multiple different chord libraries on a device. You can switch between the different libraries by using a pre-defined chord. With Dynamic Libraries, you can use the same chord to produce different outputs, depending on what library is currently active. For example, the chord: ``r+a+l`` can output: @@ -307,68 +307,80 @@ For example, the chord: ``r+a+l`` can output: * ``Eneot of Draconia`` in a library for Novel writing * ``OnePlus`` in a library for Cell Phone blogging -Add dynamic library switching chords -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Add Dynamic Toggle Chords +^^^^^^^^^^^^^^^^^^^^^^^^^ -To switch between dynamic libraries, we add library chords in the device -manager's library editor: https://charachorder.io/config/chords/ +To switch between Dynamic libraries, we add Dynamic Toggle Chords by using the device manager's chord editor: https://charachorder.io/config/chords/ -First, we add a base library chord. This exits any dynamic library. +First, we add a Dynamic Toggle that will return us to the base library. * chord: ``b+a+l+i`` -* output: ``{action: base library}base`` +* output: -Then, we add a work dynamic library chord. + Add the action: Base Library + + .. figure:: /assets/images/BaseLibraryAction.png + :alt: Base Library Action + + Then type the dynamic library name: ``base`` + +Then, we add a Dynamic Toggle for a library used at work. * chord: ``w+l+i+b`` -* output: ``{action: dynamic library}wlib`` +* output: + + Add the action: Dynamic Library + + .. figure:: /assets/images/DynamicLibraryAction.png + :alt: Dynamic Library Action + + Then type the dynamic library name: ``wlib`` + +The Dynamic Toggle chords look like this: + + .. image:: /assets/images/Dynamic-Toggle-Chords.png + :alt: Dynamic Toggle Chords .. note:: - Both the chords ``b+a+l+i`` and ``w+l+i+b``, and the dynamic library - names ``base`` and ``wlib`` (in the chord output) are just examples. - Feel free to use your own chords and library names when you know how - this works. + The chords we used in the examples above (``b+a+l+i`` and ``w+l+i+b``) and their outputs (``base`` and ``wlib``) are merely examples; they don't have to be exactly that. You can make the chord inputs and their outputs whatever you want, as long as you include the dynamic library action in the chord output. Add a chord in a dynamic library ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ #. Switch to the work library, by chording: ``w+l+i+b`` -#. It switches to the work library and outputs its name: ``wlib`` -#. You can ignore the name, erase it or just press ``enter`` to continue - on a new line. We'll make it easier to erase the library name in the - next section. +#. It switches to the work library and outputs its name in plain text: ``wlib`` +#. You can ignore the name, erase it or just press ``ENTER`` to continue + on a new line. We'll get rid of the printed library name in the + :ref:`next section ` #. Open the impulse chord menu: ``i+DUP`` #. At the impulse output prompt, type your desired output: ``realtor@email.com`` -#. Press: ``enter`` +#. Press: ``ENTER`` #. At the impulse input prompt, chord: ``r+a+l`` -#. Press: ``enter`` +#. Press: ``ENTER`` .. note:: Adding a chord in a dynamic library doesn't overwrite an existing - chord on the base library because it adds the dynamic library + chord on the base library because it adds the Dynamic Toggle chord as a prefix. - The screenshot below shows that the impulse prompt includes - the keys that were held: - - * Num (left pinky west), the symbol: (2) - * Arrow down with a bottom line means: press and do not release the next key - * Shift (right pinky west) - * 2 (right index south, the ``t`` key is 2 on the number layer) - * Arrow up with a bottom line means: release the next key - * Shift + This is what the chords look like in the device manager's chord editor. The impulse prompt added the keys/actions that were pressed: .. _Dynamic Library Chord With Pressed Keys Num and Shift: - .. image:: /assets/images/Dynamic-Library-Chord-With-Pressed-Keys-Num-And-Shift.png + .. figure:: /assets/images/Dynamic-Library-Chord-With-Pressed-Keys-Num-And-Shift.png :alt: Dynamic Library Chord With Pressed Keys Num and Shift - The chord works fine: ``realtor@email.com`` + * `(2)` with a thicker left line, is the left number layer key (left pinky west) + * Arrow down with a bottom line, is the action: Press and do not release the next key/action + * Arrow up with a thicker right line, is right shift (right pinky west) + * 2 can be typed on the number layer with either ``e`` (left index south) or ``t`` (right index south) + * Arrow up with a bottom line, is the action: Release the next key/action in the sequence + * Arrow up with a thicker right line, is right shift (right pinky west) - It can be edited in the device manager to look like its output: - https://charachorder.io + The chord works fine: ``realtor@email.com`` + but if you want it to look like what it outputs, then you can replace the keys/actions, with an @ symbol, in the device manager's chord editor: https://charachorder.io .. _Dynamic Library Chord: .. image:: /assets/images/Dynamic-Library-Chord.png @@ -379,7 +391,7 @@ Add a chord in a dynamic library * when we chord: ``r+a+l`` * it outputs: ``realtor@email.com`` -#. Switch to the base library by using the base library chord we +#. Switch to the base library by using the base Dynamic Toggle that we created earlier: ``b+a+l+i`` #. It switches to the base library and outputs its name: ``base`` @@ -393,16 +405,14 @@ Select the dynamic library name automatically This step isn't required, but it's a convenience. -When we switch between dynamic libraries, the library chord outputs the -library name. It's an extra step to erase the library name manually. +When we switch between dynamic libraries, the Dynamic Toggle chord outputs the library name. It's an extra step to erase the name manually. Instead, let's select the dynamic library name automatically by adding -these actions to the end of the library chord output. +these actions to the end of the Dynamic Toggle chord output. .. note:: - The actions below are on the same line in the manager, they are only - on separate lines here to make them easier to read. + The actions below are on the same line in the device manager's chord editor, they are on separate lines here to make them easier to read. .. code-block:: @@ -411,15 +421,13 @@ these actions to the end of the library chord output. {release_next}{left_shift} The number of ``{arrow left}`` actions should match the number of -characters in the base and dynamic library names, in this case we used -four characters for both: ``base`` and ``wlib`` +characters in the dynamic library's name; in this case, we used four characters for both: ``base`` and ``wlib`` -The ``base`` and ``wlib`` dynamic library chords look like this: +The ``base`` and ``wlib`` Dynamic Toggle chords look like this: -.. _Dynamic Library Switching Chords: -.. image:: /assets/images/Dynamic-Library-Switching-Chords.png - :width: 437 - :alt: Dynamic Library Switching Chords +.. _Dynamic Toggle Chords Select Library Name: +.. image:: /assets/images/Dynamic-Toggle-Chords-Select-Library-Name.png + :alt: Dynamic Toggle Chords Select Library Name Now the library name will be selected automatically. @@ -427,11 +435,11 @@ Pressing the chord: ``w+l+i+b`` * Switches to the dynamic library * outputs the library name: ``wlib`` -* and selects it +* and selects the name Now, it's easy to erase the name by: -* Pressing: ``backspace`` +* Pressing: ``BACKSPACE`` * or typing a character * or pressing a chord diff --git a/docs/assets/images/BaseLibraryAction.png b/docs/assets/images/BaseLibraryAction.png new file mode 100644 index 0000000000000000000000000000000000000000..bb4395a1f6a3ab4e60c49c7f346ea75d7cdc954e GIT binary patch literal 6480 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 JMVb$v{0-)yEtvoS diff --git a/docs/assets/images/Dynamic-Toggle-Chords-Select-Library-Name.png b/docs/assets/images/Dynamic-Toggle-Chords-Select-Library-Name.png new file mode 100644 index 0000000000000000000000000000000000000000..3c3bf8a6d91f1ac4cf25a95cf0e83eeedfe5ffc6 GIT binary patch literal 6549 zcmchcWl&sAx`2T&!GZ*r44U8?+#Lb|f-|@c65J(N(7{O{5P}3tun^pBfB^>g;1VP_ zOn?9b3~))ly|ue{x9+XlANR-U)9>l-I^A98bUjaZjHZS%J}xyb8X6kD$}Hwn27dPnoX@9Lmo{c>os=mnp!bkfx=66@w9=N4SMTt-`?cgd{&N+QPZ%l3pfV?)_h$R#%lN~< zs{`McqCCebSvj|>!R6-g0B8^)^yai5g}PdKar8YCt1;wODp<{PQH9yT7kWc|kP}Gk z>qE?8ywe;+<4qU%=E&y<_ufmgT5$FJWZJ=i9-%=+d$@SWbtW

_z%96kTPYLYH03 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 literal 0 HcmV?d00001 diff --git a/docs/assets/images/DynamicLibraryAction.png b/docs/assets/images/DynamicLibraryAction.png new file mode 100644 index 0000000000000000000000000000000000000000..3e108565dada965079df28e120e4046c9377c345 GIT binary patch literal 14205 zcmZvDby$=^`z{Cwh=71fha!z2jiiLc(%mc}-Q9~IDJ8Igv;s?~q|{0+0?N`LDc#-6 z##z7L@0{!UuIv1gjXw<)eN~&WS~QdZSG=M?@UB(ncJI z&;P)Ng)=Vh3k!wfi@1$I9|8gjVmU>{z`49Soh%&@rQbOsRnAl9K71A~uj!yMqb4Hz zZqwznr&c_+v2@=u2wPl5YHhfZ>FJV|Gjja5~|K&vPUy!1=EA76Tt}rjdIT1$u7H+g(}M zj(2f`Qur-fJ;R5LR;fkO?mUQU$fNp zOm@DMb_y^%@S>5;fopqQQUuymB$FbmPbIYP>_)s6R4T(;Q`MZ^>Wse}BvJ#l%MK}H zGCDie?n2)fysVRFu=l?RoD1i8=)#+}5|9+Finnn(GML4Fs9-EZ;}1HEr=tt2+7iew zwCs_LKU?j^FxP_a-BRGo#eK5lb$ln)@{x51syRI$?w2?OQ={5i5Af4~GwV16RgA*j z0gdVVOHNDH$-hvXs1?s*5TA^WLb~LbxI zFS`epDiZVKayqHKWyB=@%(~C#lImv)3z2-(eb^eg$i*^aMYn#g!&aD(H@}41XVo`1 zgH=;OlS;36wd4rhMaQ)kN5S2GH`D&!)GN!Y_JSbhNxJ>1L)iJMkvXD5nb)%LBxLm0 z+Jf1+tR&TIgOPXjuG!1wT`A<9ZB&~I$0fZS`(-)g*pAaQC%$dqjU0KS;PH{n(N-;A zTe&<-d~x(FKYr3b(~6g=9DdiN=xeLgf78{HL_k~B-oJK93^m%oyd#$MT4>O_{f;@; z@)p2W`nC_R0)c&|KRH&66E&ZVa66doiF7+;1=rTwHWmkt8fzn`P9^hg)nIEvFZ+IA zoLDfT9PvoB_QPx%r4vqDqsOgV@(WvW|F zL)WV@{vj9f5KDP&dm2k;<}2plF$GUL-pi9vm@(F$G^Ci8L{~ zgFU=hQ*?Q#yt(WXw(76abTlNVmGcY#?*gnL^8`NnFB4`e_;di#)+4(&Bz-KPRG97S z?>p5@@}ps4J0SF;l})LzmlUyQk-xB33zgluP`FK&LX_QxT?a~pBn884yx%h7XRMbd zEWqAha_8Q48U>baU5`+oj*2bgFL&74Cu-HEPs;@0+&EXY>F>yPkRF}fv96OihcGk9 zgN#PjQ63i`7OijX1(2FPeC!#ui1 z9z9czr@jMD$8Pga_YXRWcqNDxH1k(A)_jbr`mPG9Xc?@s4ko;C?vSMqj8U(xN?*y^ z+ooLJ@yO^vgYI>@g?ojTj9QO9E?-|RiyaY5pEVt)OitCRipSO$o5E6V7^X#(?#8Rs z*K`Sv*g@}Y%#2bw|^cgMqoUo>onuPo|Z(=X{1m*naU`JqC(>0@GhA$J*@kDwaWOLt~ku=k0 zGsQ0Y(Bt6v6EF~7HMq*5Bp|2{3bX9qy&)~uDw}3nlx#=TZVA*(uYCISeA4(!)&9EQ zrAdl+AFMa|J!4A!Yxto3*tU+-?O>v26My-SrkNW_!R}G9`MVTOm8V=@$}LMv=gtsIrY+J{v@Ee^Hj}(a9&oq5*b^tK9RDe@3!yp89KzVFqb#U z?uLF-L$P*zeP*}DoPz3R$i{h=z-xPIEJic=QzP~`?%LRM>hV%aoYWx9JFKn9@&km~ z;>YM+EJD3_Z~ckL8Ih#Ml4_3hr~Rdhq6SNpcHyN8u5VS@lwv8p_q-HH;CzYq$-!u* zvdYlKlT&qLu}x*?!*#Pu8z~{uw(Rce@cJ_6BqhhD@5y&h#{PtY&~HeSMl12$XvVB$ zQI*qpbt$vc_$3}U5Yyu9I7|%@>-yvXCwPs+RyZ*nm|rO(truJl%j?X}?rEyP%U4nl zxAXmY`o*~rCA$R&Ky{^=>*m-Z8?Gn)n924<6LzS5G|T44C16)Y(7-`|Z?p(eNjN5qGe3u4h}zb9Y-MtRYeg zuI{iM=pIdxX5yjP_f_&U(E0pHr&j)UlEey7Cq078k*s7*xiP-;;>mF~iUFW!QJ;wC z@~5=Z;)#@S@{O$^9W{30R;F4KT(N{@%ZmQq5i*aw*OKV_(*J4GsF}{HPf%2d&d{an zLDNq>uM-UUuQXB`jWVHb?`A-OS>bk7d2=ho= z8rdqqr_NTBm_l#-7@t=mD^Ne)R|v=TMf3s7oXHnrYJfM4t05>eY<~wjN-c(5i-@Zm zUa8%in|q0Cn>wEoC(VJkCT!kOT`Z}2j(q3$mhnw&U|ug#{jTtZ@kb)9F=K|xk! z%27>-T{P?hIu;`G0}=&L-a9fH!vJK>CG28M8TsyB%ZfTYz}#hJy0Z;_C@r|RLM~U< ztU~eXy#Q=%_ZD7%z#`l9!dmN#v|eF=*T(JLREgGpaNwyg0;Nr;JR;E^+EBYRF4$r# zNd>T8FVsz++hsn8gaMAY@_wBSLNWn&Ut1_0neA!)w1>r>%68qg2>+<;XML9{`c%BR zQ)aoLc*bt2trGTJVqHa=TwgR_WkO@f{`B}W^l*x-c|%y` zH;)J*Lp&JAy9yd$iVQzc6co(wVE>~2MN)KyxQEkQqen?BCojhC2pTU=XDjBTE+;0q zGW&fFs^2_v3_?P3J}(I5wwk_@>GbscSDtV7 zO`ChB3<#rrzK-6Mr<4A$W@QqcI=uOAwB6cF}j;J2BFMd$jltpoApE%C7X&<3-p zku|ixx~!wv&eWav*l6I@Ze-X4$J~`eT!N0<;a;$8^2#2k{akb!sz-h(- zADPj|4pLuAJS|b3by50-v7rtQxreiZX3@+3?Bl5>f?-qjwm~C=qR-TBe_YP*p+260 z2$1}~x+D@9UfcNGb*m7ii_~O#M$6}C9DQb@K5Pyg zw`*k1Owxy~K%;_+HM@V?D6c1G?wa+4wTgF7tPZv2+id0jQCi(EaqsXsakWmUC1o&SL%K|H28H08bYbI^G+$P8Y zu21fFBhAHj^O;upCNIQ8Cr{)vl9Qsn>>hcqc*cI(R)br}%@Qv*9f@M^)vI`=3)(7m zDpGW|>rr1wkt)`m#EUDr2O*)^SsJOvVLY{iJ$vcL(Cd~S1NT+6x8H%y2(JAnm zVl3>Q2jyKi_$WuY(fRlqBC(S1HfOxA)8(|}Cc%Yy27BfBHC^(@n8iwCUdOJ)TMWxFbR`|TBLE6_J9@##I#8thN}9#dO{ux z*Z<~H-bDQp^G2dLN(%FBGqymE99lX4ru_^&uM2Puz2RkRDWS|OF1df2th}~^v(618 zGWf2>9K2Pg+>-2IuoS}z@EpGoGfGp-0=gpwAl;E)woN7yyv`pRXA1ds7j1DAe!-8} z9^o>T$zDw_ndg{*Tuo}dqe-ZwoWAr}PkDQ%`yj}EKvNY%j_PtmSqD_^sZ;0y+)8mR zD@nZN$Ub`AB%huESjC>#n+r;85;xE06_xfnaQ=x#if!^73Tz&iiO9_rbLfHep$^ga z=&km14V=|@8ctVVv$cG}yf7j@BEJkCGSc1u@#h`>VSozx%P6gX39VVX_%L2)UTClxVD?!fP zG=dR0i`3_9b!6JZ^OPl73b(DJq(URHBtWiMoS~~f(^r$gSFlL%n&$L3gOBI4BO~GI zAVIDWFMtOk96NPf-`8Kov1)fk6?KgVv&O~^0;*)K!>(pOkQ9yr^&nk&XYd!gGP~Q+ zX(p#()#+&saa_%`#%!YOo$RkZ{ML;uW|oa}aO0)h|<>o9l95ZII10z)F82^9SzV>43|g7_a{NIV`g$oSpCAOV&>K4}8|!)d3hqRlbfJ)!T6%{n zXHqGpG!yP*`^J>Ko50-@Py=e$*RFg=(;kkPvtOql|Ri=+!<2rQk-0X|KUb!A}Exf3{yqa_2@Sw%P_i}M)ko!B(?#cM zeNo$Iv-(c_jmUM+&2*6F{vR;T?;%md}ZSQZx1#szy7U&l>+j&iW5|a`C|W%jT`p9&U;= zfSVJWC|_tYrI{(QJCTDIAN3u{6E+bEbM02DFQYN`mcEs+U-)>}JlrFK6&Kr4T0I#+ zOXPIAO3BpV0C^UU5dfN>fO>g;$6hRjBqMwfbG~$WcK+^mBT6gXz3}#MyZZ+X30~f0 z?IL~sCsF^U3W4!A5mom!mKcN|6xJv`Ww$`LDhxU~e!iBX1b9LuWzj-wU+G9)DEFROZX-by`*lea#$>1)?_{_smEF;GFJtLw`!m0ClkFkO$A~!jSz-=RE z7ijRp0;_=1Fi40!-FaTrSW$u9JIA!J+a>m@sJjpUwWWH?CK0r&9A&S2O4l`UydZ8{ zJmNZH2@8Pe&+f!^eA+0WO>l4qF?;-(P_50OZfKYP%O2QTQP#v!QobB@^wM26i~`cW z4V-4GBsA=6deaKVA<)pGC0UBFTh=_nKO6CFz!-#$xj!fk>7Dkx#NN9*=Htd%k2ln5 zVOH4jQPz{Hoz>=43{rD3%~Gmgma?!?E)9%qdD&ix|8u+svCk-&80`~6Wf30>ZYlx< zm;gLIM<(0o+LkTiID-WgGj<-q=B9&2D zhBmhAaF&X9gQY1IK*OO|zzVYAo=YorVZ9=ka{RgV!@8`$Nzn$83p#}t2So)Fj0049 zk*qvj>d$$F<$o@PvWv|Nuu0I-{-S{wndXO%HViJ2S=MqrgWNy0p?X3B6i#dR&t->)MLRM}eIA*GzyB>BS3 zQ4<&&K+H?d>1K$cL-XrJ$h0E5*DO~!VEw6kTojKN;?vBO~b9R6C{T4$O1>T4R z_-@D`^k2@>HEeA0YXW%=qe1U$buE8D{8WjPddHmjufyp~wE`w)oslmok_z>5M)YhF z2H_NrvTUC(ye`!+30$->z3Uhx>f>WK&T)baL>uy2?QWl90@l0hdZ5IW42B!YJr%6+ zby$z*>UqYPg1}1>DOa4`{lz90u7fal;y>xDXEhNY*ENA(g2!H|>vtt)&e;G$HP$`i z9g!`etN@>Efa~~;Nj<7RGqercXaXhyE#qbe!A$E{@{B9S^A$}EZbG%@fpwompEebc zv94d^Ld0Bo1t5}*z)#wd3Mz_QHUV-x&cESZJT;O^tKglTuDPFaA4Ztf3V9B#9SB$M zHrk3?0YSzxI&8xI$WH=c>yrrK2gnufQys)B5KUea1=KFk@DSBKzCRI;2>QkHH2e}R zZ{n0}U}L+st;+MqYu9!^OHZ)m_YzsgUJlPV6jhS7Mwm65j?v@A;$pt|`UYs?C3eMGT`N8H}5&*qhR!O728-TXnV>lJ}H8 zk54*%-&}_pS@I{BjgwQeUNIFYNm{}WqHOxt9Ddezkgd-O>wH_^%PRh=yOhs0zGQeu z&#(rItoA(OlzX)IzW8WZMs4H=LBswqm%!?>kJ@1!J@U|_Zx4!T#X!)<;YjFSbtU^F z!hQlT#L8(reL~2$KK?~g`>r;ZB-bAorwEfQ3RO9_!T#6nkfA1270Hn2JOB4L} zp4it8jk?Tm@<;n)HCq}#I3Fu*WXaXq%K@v=#0 za=MM_0Fe|Kl$w)kd4Fb%PSFTU>4lP-^X3^$c>h>GW2O?CqKG)Tx+tG4RR(HQ@%wlj zQmUI0kD`=RxcIY-Z?pqJ0vK$BSl$JZ>YN>~N4gIRfse3u0IS5U zY01`cL#A~nSRJCDII^220VTUf3~fk48x>9ClVf#)s{#$#;9Z{y+ld+UY-}gW7?mw8 zDoLsf6B>)E)o+EcM}^el59fCqDlr`J8tE@h9Q_g(V&z_VqYoA6=if4#aHReZ+DJWb z1&0vBc;_34YMY18?%y~{hFv*c*|%Ra8efW7hiz?#GKageEEXxpl25H0MW@k_ zlx@tmg^GW^@HrKN=W_4r+;+ZkNaCmx{wSQAu8}dvy+ZOyw`koeV>wjpIORbr>ZEub zJU6lHV}H0o79K8_`hPV55^nTsYB6b%octjhMlIboVM;OB{7I9gjn85@O(cOhdWq&4Nl_E8p!fs6y zNHdtUq!Y%~Ah4_Ol}B1(<^x${yz2|^uFZQZj?bJRQU$&@is<0CPR9il2V=3o${|$` zg}Z|egp`a6X#XhYdZVMfhX{7~gC^kG$(~9$c!6?DrNtNj3du9Ew5-oZnp%1S?2#prt$H73Rnd_>orQSSUc{dd!<4^@$!{8q$6i{y}YzAp)iPv z6JrVpR#gAcRzXRxTuNyH9tJ6@?2<|zudGaqCVpFLu^r(r!lJCBxv(m$NouKR{3bSq zond9*!QOw2p$XJD4D=)p*dd?7Cl>2Tyk{TbNn`Ck&wD8Q(w;^(OFo3IqKyQ*>vC^e zR34__LPT?vdW9W`Q`AQPDSJ=yA_W0niInD8e&U2L!FurdSN{E@yGG}`o7nlNNu!g8 z8EduI4#fmdpI2^Bw*htB56ltbZU1-XQn2CeBB5C53bk11>JTx#vKz_Iyc0%U;o8bv zG=!vAg%fu%Eo_V@VS`t!OP}pUz30hvRQlVAoV-;2*@A|_^9|pBU=;v7D z_ipx+V)ah<10&g~d9m%L$SN@P>mhu>lGAkYXk7;5{x-@yr=MTK-L82uhevb{t_PRW zX=2hS4cP_QpnIqXz};k3W@RPB_nXOoYm0WRxF-hS`tUozS4S{o`GDQS=@UiUKXh=$ z3;e8NaV&5B-KJ~Fbb1nsrknM!za=5i)kX$e(>g|$eCI(e)L3<`r zeLUVgI(k&A;Bk+-70WA#-rSJ}OE7otydY{NpZzKpkzj^Z?(kWt=`Ab@sG@S>Zc_j0 zcxkNR^Te-DKmL>YcBs%-t=7#Qjb)P8qV_cZ*zE`)kPM&$O@+IO`o!MzB!4zWaMo2ORz#C z;y|k5qh3B=nX+NM9adE5Yzj=gVF4sXO-8xN;5{3B_nZ~(4YH^>i_Qejo@_O*0_qvi zi!^BWSC5GmMo8D7kR%LB9rUHm;T;{x--uu&L-<9q@^4D4G`M`M7Dmy3_)yWQjxRq5 zbXc3ljK-1dwz$(y`b~TN=t-=%qBe1|JLTY8GenFPIygEJap;T?>Mm3h17F4D^JIc^{;tqlq%6`s2>Lam$*v`MkPx_?e#Y8Hs!{8n$UBbZCPdU%N_AXFg%gc(jNtzNI4v7*Cz*SafdBl57Dx6?f$un-)$p> zNDHZmcK0-``m9|oIK1U*sJWWN+n`VQI5^a~oi|~58xEb?s(Q276k41CYf0?bnn;m; z(%p&HGL)`bzj%FY?y?c$y#y?qCLj*=?r-{d|V$2@Q`6IC3g{Cy1E zdePgEEeD2Dk&u51B>nZmQzBb>VEgX`^-t(spQBm@U;AKBXrYE|jMJ*Hnd`qQzDyY^ z$0zAwA3Yuyq%*YlRw(iJfw((T?w-&KIfh8AXogmJH{~IP(%e>86KuiqDS?&NvYkpm z$~OIR@BN3E*-;RI-;ur;K5fFAJ6_-JMIXyytx72C4fQU%Z5b@0W#q%JB*dpRZTbr>J&2HIx%mahTzVC!`z{LB4;iHAkOF`}#ZFN6g^S~rcX4gk+3MtA=nA(}L8Tja z@xaUGR)H!s8C)pi$_l96nro`2r={NB2~kbw@Cl4Epj4FbknMUqVf5>Y+HGs&wlZTnABk-nGv)&b_(g`L;P{sLO z=?9L1>Yv)b7`(ywr1{N-%dAek^HF;933$c1?c1XkO!%cSo7)IwT&2=t4`B_U8Ne@} z`*yQb_PXn6%!^jUu+pU*JUDSOs%41w2A{O+Lrr$^bXNuiA5_zQc4+X_T-Jdo7D{^-+W%j5yPPbqzO3qal&*eXQ-qnAH4BhWDUW}kLuLAhvsZ;^%M8Idg z0QXw@v-^Yk9;t>Sb#Hq&7r;maF$k)3_ejFwRpQ&frQWSh21D+D9gQlggY`t^)rVdh zRn$2+wjxbg4ZAglY6^c|6Dp}T4AK(W>U32sx=EZqT)688UpY@!>YDs5bxkZuGmFs$ z){QyeHmiIK%}vvh?Kvj@lxCBXZq0iJUQT32M}M3!^_8e8OTNtXQYtK(pIK|lsn;8q zViPZh5$v94w9sHzXNtkM##4p1(bE1^ zGCvE~|M)ajD%y7+@><{Q`p1Q6Zk}hw=tPdN7=k({Oie42G?zhywwvCvLwp8K3+Z~u)-lK|y`nB5O(CoQO!wAyGK()f zP8JfSTp)znHgw|O0hYgn2%Z`5g_yj}C+Ac+I|vFj1t@%N`fTXUgGH^eox)m!KiCHb z4m4JlH7OOC*aFNO4pJR(bC!3lNblRzeH5biiC%u+Gi~r!+VMzS^i^$%aL75MP2xSxZ z_6cjViLz6oR+s2>a#43mG5XdAd$`PXxwD2n*;HyjU$;IREaA66v%3O_Q}pKdYjv{) zq7cf;t3N#d(p?Qrq<^H$t^ylulfg zIDgx^$Q>zsmMK$z(thfN8UFzml6Khb^;48iF+8_{1Ic}5wIxW(b(y24Ft zAmVh(0M9%KzwJ(&zLXI*Ja}kmG==Ny7@M^RjO8h{6}Kc#VUhY(QEa1HVu+9j`1*kn z@~e0N|NkL@+#h(hY>4An^JSlZA|o|IX9EJiO4EE<0N5dx=$l*dS7Mvw%t_ice^(1B z$Nzd{cC0D0eMTKurd~>Eo>+aR##Q6B+4p~GARm?nzB*Mp={X}op(S20$X-i*!pIot z9uQ8zBK1rgi@!uW8^6z_!Ul`-&-79!FkwR zqW^Rt_`c|*f5&)SEMDa`Pbiz9=1@}5=w?d9aFSkRLYfIk03uQwI_5y!CcwX-x2o}pdfw{=4jU=YjEMOF_P5a)Gi_(q6UvPs8b^YxV((#o-?Zw= ze(IQn!tmPjl~%wA)aar})H9><>Jl{blMFZLn+ z#m`IsWZ|wMrMzwcVdLlJ$>sU@Buq^y+DF5xng4$g8M+I`j#)!JtT`w-Xc?5>I^!1| zH^i%crA~`}5aN-7JUb+_K!d3FjLLQ4#y3n3cS#_v@WNj1Y!Q9Hdik=iJ0OMo&%n=@ zEAHc)$Bl<-j?uxewejltyReGU00*<0gBGm96fA}6BK7~2-P%avo$*V;0I*K9h`qCp z`w!a?=SuBF&GB{%|5q*(SmacD++W|iue#=@LrKfTTtm1{kk)qyuLow`VRX8lYCPj! z{pYjEluTHHVi1nV_9DhICai0y^d&?X#+CgfN;=``;A2$qO95=yrX!@IZf~;fj;yY! z%o==V1Mo+O=x~N5Oz!zr)NFDto$ii2GwjY$L3Zi_B|@*R)0@V+pKq?%qwnWGw3W-u zE!Vux;T~YiSbPsoGarH`kbFnkPcWbGszoYqBsJ|phdP0~o~$M3v*yGpSeJXH?Ae-G z52D-#3@Z<{1=wfCIp}C|kxC`;WuU@wyD6=(?uLz(@|SFHzEn0jt_{*dH*Q5Mv8pFl zsJty*XEqUJGEx9|5(<@0YDB|tK{=&|JQnD~O^=hIS5FlUB7TqQb0zC|uY)&eAY!7Z zCz$JGA$i9sT7WOZE|NBfbCu1yuWTQl*jd`3{wC?s$Skb|1PnU^|9U?Po_Jug>;<)6uuohmv^rj{_<=5Z7^^C( zY{18~iTQDvWs1>&NTX?w{tTF-@DNvav_l}94ZOnVy_7pI&93=f=M8odX}XAEwJlnJ zzv`>dirSAoy^7pn?fKrj=g=$`V-W3WR_`sqlXf+I1zvo9HIM-L^xrn< zDK(vV^@ezDr6n&zUF`==>^t-ceT3_YLRX%ot%1+v85z+0F3{(XyTO>4|Ak?4DhZ=F zw;d?@*2~cipQsOO*d)ieaD-n+xY|+}a`NbzaU~mgkLabT@tDxA?J6@yuShy;@Wg(v zjj4F{7Q7=qhkTaLz1lEE!dwNd45shpN?J`x(Gy&sZT!Byl}|0y)}r1hx?rLR-awA_ zaHtLO;l>0cRZmxgR^$=i;=w>er1)nEbLF?u{?LdIC-8BT@IMijLbDqi8wjvs1lsC71;0uU#?9V8;>Og`Th|@Jy;V6 zh_69(ahu;%VmK$q)8$mK?g%Ff7q+G*YO{ZJDaJIgghq=*8C3p@vU-ILvl8EWty=yR zV7KF>d&PtGP4V8siqz1iH1PreX5WC=RII=09=t^WpH5w@ zqyu|I4(I9-fDhrcKk(ypp&dzJA?gi#v0&Vvv2_OCd;gizjBok`tMi{rv2-{Jx7~JP zJGsa~W1CtgOl?&8&vn}uy$$~Rd3(L>b;<+F$KiI+wds$4SY*wzAY5{fj@VRfQ>%oj z^(sdUY!cEaWGe6nWx`9l+qlhQ_noP(ULjErz_Y)^ys=S*AF#}HiWRHYl=VO5;0Of} zCx;a1|Czw1R29bbJ-{|gXe#_K`mp!Qe+L}?cVgLpJ+J?cQ#`}q&KR{tGBnIdVpHaD NRNrbU*2-H&{vQcmc~t-a literal 0 HcmV?d00001