Why are there so many empty strings and why do the cost so much?  Should
we reference a single global empty string?

I don't think I follow why just-in-case code is less than not-just-in-case
code.  I don't think I've ever really seen that.  Can you provide more
detail?

-Alex

On 3/4/18, 5:24 AM, "Harbs" <[email protected]> wrote:

>
>> On Mar 2, 2018, at 6:46 PM, Alex Harui <[email protected]> wrote:
>> 
>> Again, the principles of PAYG are that there is as little Just-in-case
>> code as possible.  AIUI, every MDL user will be downloading and
>> initializing the ClassList prototype just-in-case.  This is not true of
>> Strings.  It isn't just the cost of instantiation.  There are download
>>and
>> class initialization costs.
>
>Not every MDL user. Only users of Button (and possibly Card). The final
>minimized (non-gzipped) size of the class is 492 bytes. I’m actually not
>sure why it’s not even smaller. I’m getting odd code which looks like
>this: 
>AT.prototype.add=AT.prototype.add;AT.prototype.remove=AT.prototype.remove;
> I’m not sure why goog is outputting this.
>
>While there are download costs, about half of those costs are offset by
>less string initialization and concatenation code in Button. The more
>classes which use the class will offset the cost of the class even
>further.
>
>>  Array operations are not cheap in Flash, not
>> sure about JS.
>
>In JS, the array operations in use are about the same as the string
>operations. In fact, it’s going to be cheaper and use less RAM if not all
>the properties are used.
>
>So, it’s a toss between a slightly higher download size which gets
>amortized the more it’s used vs memory resources. I’m not sure why you’re
>considering it more PAYG to avoid the use of the class.
>
>As a data point: I found that empty strings in XML classes added many MB
>of RAM usage when XML was used heavily in my app. While I doubt someone
>will be using thousands of MDL Buttons, RAM from empty strings are
>sometimes worthy of consideration.
>
>The “costs” one way or the other here is pretty minimal no matter which
>way we go.
>
>> There may be other space-delimited lists in world and having a generic
>> top-level function "addToSpaceDelimitedList" and
>> "removeFromSpaceDelimitedList" would be opt-in by the users who choose
>>to
>> manipulate their classNames with these helper functions.  It does not
>>make
>> sense to me to bake use of these functions into MDL.  The only portion
>>of
>> the final classname that needs manipulation like this is the className
>> property itself, not the attribute pieces or typenames.  Also, with
>> separate will named utility functions, folks could use these functions
>>if
>> they run into other space delimited lists.
>
>I’m not sure what you mean here. The class can be used in any context. If
>there are other contexts, it might make sense to rename the class. Are
>you referring to arrays or strings? I’m pretty sure we’re going to come
>up with other uses for passing around class lists in a way that make this
>class useful.
>
>Harbs
>
>> My 2 cents,
>> -Alex
>> 
>> On 3/2/18, 1:36 AM, "Harbs" <[email protected]
>><mailto:[email protected]>> wrote:
>> 
>>> I do agree that this is pretty low on the list of priorities. I did not
>>> have a head to work on anything “serious” and the class lists was a
>>>nice
>>> distraction for me. I’m certainly fine with however Piotr handles
>>>this. I
>>> would like to point out a few things:
>>> 
>>> 1. Object instantiation is pretty cheap in JS. A CSSClassList object is
>>> no heavier than an empty String. 8 empty strings use more memory than a
>>> single CSSClassList.
>>> 2. Array.join() is about the same computational-wise as string
>>> concatenation.
>>> 3. The “list” is not being added anywhere the empty strings would not
>>>be
>>> added, so it’s no less PAYG than strings.
>>> 4. An instantiated class such as this would fit better in case we need
>>>to
>>> play with class lists in beads because the CSSClassList object could be
>>> passed around and modified by different classes without exposing
>>>private
>>> variables and/or strands and beads needing to know about each other. I
>>> don’t think static utility classes are any less PAYG in this case.
>>> 
>>> Thanks,
>>> Harbs
>>> 
>>>> On Mar 2, 2018, at 7:42 AM, Piotr Zarzycki <[email protected]>
>>>> wrote:
>>>> 
>>>> Hi Harbs,
>>>> 
>>>> As much as I like Array approach I took Alex's words more serious that
>>>> having an Array in the game here could be more heavier than String
>>>> concatenation. It's earlier in the discussion.
>>>> 
>>>> Piotr
>>>> 
>>>> 
>>>> 2018-03-02 3:26 GMT+01:00 Alex Harui <[email protected]>:
>>>> 
>>>>> Very nice, but IMO, this is over-engineering.  We are talking about a
>>>>> space-delimited list where some portion of it is considered "fixed"
>>>>> another portion is user-settable and another portion comes from other
>>>>> attributes.  Some generic StringUtils or ListUtils might be more
>>>>>PAYG,
>>>>> especially if they are opt-in and just used to manage the
>>>>>user-settable
>>>>> portion.  Think of it this way:  Every MDL app needs to carry around
>>>>> ClassList even if they never change the classname.  I don't care too
>>>>> much
>>>>> since it is in MDL and not in the core, so keep it if you want to,
>>>>>but
>>>>> I
>>>>> can think of lots of other tasks we should be working on than
>>>>>creating
>>>>> cool classes to manage a list of strings.
>>>>> 
>>>>> My 2 cents,
>>>>> -Alex
>>>>> 
>>>>> On 3/1/18, 3:51 PM, "Harbs" <[email protected]> wrote:
>>>>> 
>>>>>> What do you think of the CSSClassList class I just committed?
>>>>>> 
>>>>>> I *think* that makes the pattern more recognizable and probably is
>>>>>> less
>>>>>> heavy if more than one class can be used.
>>>>>> 
>>>>>> Harbs
>>>>>> 
>>>>>>> On Mar 1, 2018, at 11:56 PM, Piotr Zarzycki
>>>>>>> <[email protected]>
>>>>>>> wrote:
>>>>>>> 
>>>>>>> Harbs, Alex,
>>>>>>> 
>>>>>>> I just pushed implementation of computeFinalClassNames to
>>>>>>> branch feature/type_names_class_name_issue124. You can review
>>>>>>> implementation in this commit [1] and example of usage in Card and
>>>>>>> Button.
>>>>>>> 
>>>>>>> I have tested with Harbs example [3] and with Card by changing
>>>>>>> orders.
>>>>>>> It's
>>>>>>> working.
>>>>>>> 
>>>>>>> [1]
>>>>>>> https://na01.safelinks.protection.outlook.com/?url=
>>>>> http%3A%2F%2Fbit.ly%2F
>>>>>>> 
>>>>>>> 
>>>>>>>2HTHaFQ&data=02%7C01%7Caharui%40adobe.com%7C9ba2ae2d1a6e4fdc774508d5
>>>>>>>7f
>>>>>>> cf
>>>>> 6
>>>>>>> c56%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C1%
>>>>> 7C636555451956879397&sdata
>>>>>>> =5EDairk%2BdGWuPE20vIR8jGFcRSflwqQIcw48oCPydYU%3D&reserved=0
>>>>>>> [2]
>>>>>>> https://na01.safelinks.protection.outlook.com/?url=
>>>>> http%3A%2F%2Fbit.ly%2F
>>>>>>> 
>>>>>>> 
>>>>>>>2oJgKOf&data=02%7C01%7Caharui%40adobe.com%7C9ba2ae2d1a6e4fdc774508d5
>>>>>>>7f
>>>>>>> cf
>>>>> 6
>>>>>>> c56%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C1%
>>>>> 7C636555451956879397&sdata
>>>>>>> =8hIfKGYzhaInYfubnf3lUKbYZWRUANzEcWHj3Pkn3Ho%3D&reserved=0
>>>>>>> [3]
>>>>>>> https://na01.safelinks.protection.outlook.com/?url=
>>>>> http%3A%2F%2Fbit.ly%2F
>>>>>>> 
>>>>>>> 
>>>>>>>2F734nx&data=02%7C01%7Caharui%40adobe.com%7C9ba2ae2d1a6e4fdc774508d5
>>>>>>>7f
>>>>>>> cf
>>>>> 6
>>>>>>> c56%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C1%
>>>>> 7C636555451956879397&sdata
>>>>>>> =9I9q1KjL5VNE5CJSAVTtwN9hhR2rco4ovIzJjQ74%2FeY%3D&reserved=0
>>>>>>> 
>>>>>>> Waiting for your review.
>>>>>>> 
>>>>>>> Thanks,
>>>>>>> Piotr
>>>>>>> 
>>>>>>> 
>>>>>>> 2018-02-28 23:31 GMT+01:00 Piotr Zarzycki
>>>>>>> <[email protected]>:
>>>>>>> 
>>>>>>>> Let me play with implementation of that function. It seems to me
>>>>>>>> that
>>>>>>>> will
>>>>>>>> be much cleaner than current solution.
>>>>>>>> 
>>>>>>>> If user actually wanted to do anythin with className - let the
>>>>>>>> overriding
>>>>>>>> speaks.
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On Wed, Feb 28, 2018, 21:51 Alex Harui <[email protected]>
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>>> On 2/28/18, 12:27 PM, "Harbs" <[email protected]> wrote:
>>>>>>>>> 
>>>>>>>>>> OK. I think that will work for DML components, but what if
>>>>>>>>>> there’s a
>>>>>>>>>> bead
>>>>>>>>>> which needs to add class names? What would be the “right” way to
>>>>>>>>>> do
>>>>>>>>>> that?
>>>>>>>>>> A bead cannot override the function on the strand.
>>>>>>>>> 
>>>>>>>>> Do we have beads that manipulate className?
>>>>>>>>> 
>>>>>>>>> IMO, the principle behind how to handle that is knowing whether
>>>>>>>>>you
>>>>>>>>> are
>>>>>>>>> sharing something or not.  There may not be one right way to
>>>>>>>>>handle
>>>>>>>>> it,
>>>>>>>>> but if I had to handle it, I would have the bead set something in
>>>>>>>>> the
>>>>>>>>> model or presentation model of the component.  And the component
>>>>>>>>> would
>>>>>>>>> override computeFinalClassNames to take that into account.
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Although having just written that, maybe this
>>>>>>>>> computeFinalClassNames
>>>>>>>>> should be in the view instead of on the base class so it is
>>>>>>>>> replaceable
>>>>>>>>> instead of overridable.
>>>>>>>>> 
>>>>>>>>> Thoughts?
>>>>>>>>> -Alex
>>>>>>>>>> 
>>>>>>>>>>> On Feb 28, 2018, at 10:17 PM, Alex Harui
>>>>>>>>>>> <[email protected]>
>>>>>>>>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>> I think you are missing that the element.className is set to
>>>>>>>>>>> computeFinalClassNames.  So the user is welcome to manipulate
>>>>>>>>>>>the
>>>>>>>>>>> UIBase.className however they see fit.  They can assign it a
>>>>>>>>>>> whole
>>>>>>>>>>> new
>>>>>>>>>>> space-delimited list if they want.  But what gets set on
>>>>>>>>>>> element.className
>>>>>>>>>>> is computed from typeNames and className by default, and MDL
>>>>>>>>>>> would
>>>>>>>>>>> override it to factor in fab, raised, colored into the
>>>>>>>>>>>computing
>>>>>>>>>>> of
>>>>>>>>>>> the
>>>>>>>>>>> final classnames.
>>>>>>>>>>> 
>>>>>>>>>>> I would prefer that we don't make requirements on users as to
>>>>>>>>>>> what
>>>>>>>>>>> they
>>>>>>>>>>> can or can't do with the className property, like requiring
>>>>>>>>>>>them
>>>>>>>>>>> to
>>>>>>>>>>> use
>>>>>>>>>>> addClassName/removeClassNames.  MXML and States might set
>>>>>>>>>>> className,
>>>>>>>>> as
>>>>>>>>>>> could any other AS logic.  I think folks may even be used to
>>>>>>>>>>> setting
>>>>>>>>>>> className in JavaScript.  So letting UIBase.className be the
>>>>>>>>>>> "variable"
>>>>>>>>>>> part and having computeFinalClassNames be the way the "fixed"
>>>>>>>>>>> part
>>>>>>>>>>> is
>>>>>>>>>>> handled makes sense to me.
>>>>>>>>>>> 
>>>>>>>>>>> Of course, I could be wrong...
>>>>>>>>>>> -Alex
>>>>>>>>>>> 
>>>>>>>>>>> On 2/28/18, 12:03 PM, "Harbs" <[email protected]> wrote:
>>>>>>>>>>> 
>>>>>>>>>>>> The problem which sparked this whole issue is like this:
>>>>>>>>>>>> 
>>>>>>>>>>>> 1. We have some components (i.e. in MDL) which add “pieces” to
>>>>>>>>>>>> the
>>>>>>>>>>>> class
>>>>>>>>>>>> names (such as “fab”, “raised”, “colored”, etc.
>>>>>>>>>>>> 2. The client might subsequently set the className to
>>>>>>>>>>>>something
>>>>>>>>>>>> else.
>>>>>>>>>>>> 3. When the component sets the “pieces” first and the client
>>>>>>>>>>>> sets
>>>>>>>>>>>> the
>>>>>>>>>>>> className later, the client will overwrite these “pieces”
>>>>>>>>>>>>which
>>>>>>>>>>>> were
>>>>>>>>>>>> added by the component.
>>>>>>>>>>>> 
>>>>>>>>>>>> My suggestion to have addClassName() and removeClassName() was
>>>>>>>>>>>> to
>>>>>>>>>>>> have
>>>>>>>>>>>> a
>>>>>>>>>>>> “safe” way to add class names which would get computed
>>>>>>>>>>>>together
>>>>>>>>>>>> with
>>>>>>>>>>>> the
>>>>>>>>>>>> className when the className is replaced.
>>>>>>>>>>>> 
>>>>>>>>>>>> The way you have it seems to just be modifying the existing
>>>>>>>>>>>> className
>>>>>>>>>>>> property. If that’s overwritten by a client, the logic falls
>>>>>>>>>>>> apart.
>>>>>>>>>>>> 
>>>>>>>>>>>> It feels like only having typeNames which are set inside the
>>>>>>>>>>>> component
>>>>>>>>>>>> and className which is set outside the component is not really
>>>>>>>>>>>> enough.
>>>>>>>>>>>> (Unless I’m missing something.)
>>>>>>>>>>>> 
>>>>>>>>>>>> Harbs
>>>>>>>>>>>> 
>>>>>>>>>>>>> On Feb 28, 2018, at 9:31 PM, Alex Harui
>>>>>>>>>>>>> <[email protected]
>>>>>> 
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On 2/28/18, 10:44 AM, "Harbs" <[email protected]> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> If it’s not public, I don’t see how a utility method could
>>>>>>>>>>>>>> call
>>>>>>>>>>>>>> it
>>>>>>>>>>>>>> though.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> I didn't think the utility methods like
>>>>>>>>>>>>> addClassName/removeClassName
>>>>>>>>>>>>> would
>>>>>>>>>>>>> need to alter computeFinalClassNames().
>>>>>>>>>>>>> 
>>>>>>>>>>>>> AIUI, for most UIBase subclasses, the final element.className
>>>>>>>>>>>>> is a
>>>>>>>>> mix
>>>>>>>>>>>>> of
>>>>>>>>>>>>> the className property and the typeNames.  The typenames are
>>>>>>>>>>>>> thought
>>>>>>>>>>>>> to
>>>>>>>>>>>>> be
>>>>>>>>>>>>> "fixed" and the space-delimited list of names in className
>>>>>>>>>>>>>are
>>>>>>>>>>>>> the
>>>>>>>>>>>>> ones
>>>>>>>>>>>>> the user wants to manipulate in their code.  So, I would
>>>>>>>>>>>>>expect
>>>>>>>>>>>>> them
>>>>>>>>>>>>> to
>>>>>>>>>>>>> write:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> org.apache.royale.utils.addClassName(myComponent,
>>>>>>>>>>>>> "pinkStyles");
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> addClassName should just do something like:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> myComponent.className += value;
>>>>>>>>>>>>> 
>>>>>>>>>>>>> That will call the className setter that will run:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> element.className = computeFinalClassNames();
>>>>>>>>>>>>> 
>>>>>>>>>>>>> If you call
>>>>>>>>>>>>> 
>>>>>>>>>>>>> org.apache.royale.utils.removeClassName(myComponent,
>>>>>>>>>>>>> "pinkStyles");
>>>>>>>>>>>>> 
>>>>>>>>>>>>> removeClassName should just do something like:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Var s:String = myComponent.className;
>>>>>>>>>>>>> Var c:int = s.indexOf(nameToRemove + " ");
>>>>>>>>>>>>> If (c != -1)
>>>>>>>>>>>>> s = s.substr(0, c) + s.substr(c + nameToRemove.length + 1);
>>>>>>>>>>>>> Else
>>>>>>>>>>>>> {
>>>>>>>>>>>>> c= s.indexOf(" " + nameToRemove);
>>>>>>>>>>>>> if (c != -1)
>>>>>>>>>>>>>   s = s.substr(0, c);  // remove last item
>>>>>>>>>>>>> }
>>>>>>>>>>>>> myComponent.className = s;
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> It seems like it should be that simple.  What am I missing?
>>>>>>>>>>>>> 
>>>>>>>>>>>>> -Alex
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> On Feb 28, 2018, at 8:21 PM, Alex Harui
>>>>>>>>>>>>>>> <[email protected]>
>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> On 2/28/18, 9:50 AM, "Piotr Zarzycki" <
>>>>> [email protected]
>>>>>>>>>>>>>>> <mailto:[email protected]>> wrote:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Ok Understand, but do you agree that
>>>>>>>>>>>>>>>> computeFinalClassNames -
>>>>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>> something
>>>>>>>>>>>>>>>> which is in the UIBase ?
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Yes, and probably protected instead of public.  The one in
>>>>>>>>>>>>>>> UIBase
>>>>>>>>>>>>>>> just
>>>>>>>>>>>>>>> appends typenames to className.  It gets overridden in MDL
>>>>>>>>>>>>>>> where
>>>>>>>>>>>>>>> needed
>>>>>>>>>>>>>>> for shadow and other attributes.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> My 2 cents,
>>>>>>>>>>>>>>> -Alex
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 2018-02-28 18:47 GMT+01:00 Alex Harui
>>>>>>>>>>>>>>>> <[email protected]>:
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> I think that in the shadow setter, it would change
>>>>>>>>>>>>>>>>>_shadow
>>>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>>> call
>>>>>>>>>>>>>>>>> setClassName(computeFinalClassNames());
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> On 2/28/18, 9:33 AM, "Piotr Zarzycki"
>>>>>>>>>>>>>>>>> <[email protected]
>>>>>>>>>> 
>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Alex,
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> So we are getting back to the idea where you proposed to
>>>>>>>>>>>>>>>>>> have
>>>>>>>>>>>>>>>>>> function
>>>>>>>>>>>>>>>>>> which computes everything.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> override public function computeFinalClassNames():String
>>>>>>>>>>>>>>>>>> {
>>>>>>>>>>>>>>>>>> return super.computeFinalClassNames() + " " + _shadow;
>>>>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Where does that function should be placed ? Does that
>>>>>>>>>>>>>>>>>> function
>>>>>>>>>>>>>>>>>> should
>>>>>>>>>>>>>>>>> be
>>>>>>>>>>>>>>>>>> called in addedToParent plus whenever someone change
>>>>>>>>>>>>>>>>>> _shadow
>>>>>>>>>>>>>>>>>> ? -
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Because I really don't know how to handle scenario where
>>>>>>>>>>>>>>>>>> you
>>>>>>>>> have
>>>>>>>>>>>>>>>>>> some
>>>>>>>>>>>>>>>>>> property isActive = true/false and I need to add/remove
>>>>>>>>>>>>>>>>>> class. -
>>>>>>>>>>>>>>>>>> In
>>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>> first launch I use  computeFinalClassNames, but how to
>>>>>>>>>>>>>>>>>> handle
>>>>>>>>>>>>>>>>>> changing
>>>>>>>>>>>>>>>>> ?
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Thanks, Piotr
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 2018-02-28 18:26 GMT+01:00 Alex Harui
>>>>>>>>>>>>>>>>>> <[email protected]
>>>>>>>>>> :
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Hi Piotr,
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> I think am I not communicating the principles
>>>>>>>>>>>>>>>>>>> effectively.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> First, IMO, addClassName and removeClassName should not
>>>>>>>>>>>>>>>>>>> be
>>>>>>>>>>>>>>>>>>> in
>>>>>>>>>>>>>>>>>>> UIBase.
>>>>>>>>>>>>>>>>>>> Lots of apps can be written without needing these
>>>>>>>>>>>>>>>>>>> methods.
>>>>>>>>>>>>>>>>>>> I
>>>>>>>>>>>>>>>>>>> think
>>>>>>>>>>>>>>>>> they
>>>>>>>>>>>>>>>>>>> can be written as utility functions.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Second, the computation of the final element.className
>>>>>>>>>>>>>>>>>>> should
>>>>>>>>>>>>>>>>> represent
>>>>>>>>>>>>>>>>>>> the state of the component, so I don't get why you need
>>>>>>>>>>>>>>>>>>> an
>>>>>>>>>>>>>>>>>>> _internalClassName or should ever set it to "".  The
>>>>>>>>> computation
>>>>>>>>>>>>>>>>>>> for
>>>>>>>>>>>>>>>>> a
>>>>>>>>>>>>>>>>>>> component with a shadow would be to check the shadow
>>>>>>>>>>>>>>>>>>> property
>>>>>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>>>>> if
>>>>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>>>>> true, add a className for the shadow to the list.
>>>>>>>>>>>>>>>>>>>Then I
>>>>>>>>>>>>>>>>>>> think
>>>>>>>>>>>>>>>>>>> you
>>>>>>>>>>>>>>>>>>> wouldn't have the problem you showed in the animated
>>>>>>>>>>>>>>>>>>>GIF.
>>>>>>>>>>>>>>>>>>> When
>>>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>> classname property is set from the outside by
>>>>>>>>>>>>>>>>>>> MXMLDataInterpreter
>>>>>>>>>>>>>>>>>>> or
>>>>>>>>>>>>>>>>>>> even
>>>>>>>>>>>>>>>>>>> user-written code, those classNames are added to the
>>>>>>>>>>>>>>>>>>>list
>>>>>>>>>>>>>>>>>>> with
>>>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>> typeNames and the shadow className if shadow is true
>>>>>>>>>>>>>>>>>>>and
>>>>>>>>>>>>>>>>>>> then
>>>>>>>>>>>>>>>>>>> set
>>>>>>>>>>>>>>>>>>> on
>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>> element.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Finally, for addClassName and removeClassName, and all
>>>>>>>>>>>>>>>>>>> other
>>>>>>>>>>>>>>>>>>> Royale
>>>>>>>>>>>>>>>>>>> code,
>>>>>>>>>>>>>>>>>>> we don't want to do much if any parameter checking.
>>>>>>>>>>>>>>>>>>> That is
>>>>>>>>>>>>>>>>>>> also
>>>>>>>>>>>>>>>>>>> just-in-case code.  The production code should not be
>>>>>>>>>>>>>>>>>>> passing
>>>>>>>>> in
>>>>>>>>>>>>>>>>> null or
>>>>>>>>>>>>>>>>>>> other bad values.  And once you fix that, then the
>>>>>>>>>>>>>>>>>>>checks
>>>>>>>>>>>>>>>>>>> that
>>>>>>>>>>>>>>>>>>> you
>>>>>>>>>>>>>>>>> have
>>>>>>>>>>>>>>>>>>> written do not add value.  I have proposed that there
>>>>>>>>>>>>>>>>>>>are
>>>>>>>>>>>>>>>>>>> debug-only
>>>>>>>>>>>>>>>>>>> code
>>>>>>>>>>>>>>>>>>> that does parameter checking.  There is a goog.DEBUG
>>>>>>>>>>>>>>>>>>>flag
>>>>>>>>>>>>>>>>>>> you
>>>>>>>>>>>>>>>>>>> can
>>>>>>>>>>>>>>>>>>> use
>>>>>>>>>>>>>>>>>>> for
>>>>>>>>>>>>>>>>>>> that.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> HTH,
>>>>>>>>>>>>>>>>>>> -Alex
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> On 2/28/18, 12:40 AM, "Piotr Zarzycki"
>>>>>>>>>>>>>>>>>>> <[email protected]>
>>>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Hi Alex,
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Sorry about that. Let me show you code and I recorded
>>>>>>>>>>>>>>>>>>>> GIF
>>>>>>>>>>>>>>>>>>>> with
>>>>>>>>>>>>>>>>> problem
>>>>>>>>>>>>>>>>>>>> debugging.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> *Code in UIBase which I have implemented:*
>>>>>>>>>>>>>>>>>>>> addClassName and removeClassName [1].
>>>>>>>>>>>>>>>>>>>> addedToParent what is happen with internal field
>>>>>>>>>>>>>>>>>>>>which I
>>>>>>>>>>>>>>>>>>>> have
>>>>>>>>>>>>>>>>>>>> added
>>>>>>>>>>>>>>>>> [2]
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> *Code for Testing* [3] - I'm adding first className,
>>>>>>>>>>>>>>>>>>>> than
>>>>>>>>>>>>>>>>>>>> shadow.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> *GIF* [4] We are starting from the constructor. Pay
>>>>>>>>>>>>>>>>>>>> attention
>>>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>>> moment
>>>>>>>>>>>>>>>>>>>> where className is being wiped out, later I have to
>>>>>>>>>>>>>>>>>>>>use
>>>>>>>>>>>>>>>>>>>> my
>>>>>>>>>>>>>>>>>>>> internal
>>>>>>>>>>>>>>>>>>>> variable to get it back.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Does that more clean now ?
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> [1]
>>>>>>>>>>>>>>>>>>>> https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>>>>> https%3A%2F%2Fpaste.apa
>>>>>>>>>>>>>>>>>>>> che.org%2FEumG&data=02%7C01%7Caharui%40adobe.com%
>>>>>>>>>>>>>>>>>>> 7Cee5c84b4e3ff4ddb578008d
>>>>>>>>>>>>>>>>>>>> 57e87046f%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
>>>>>>>>>>>>>>>>>>> 7C636554040718214998&
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>sdata=cDT88OF63TdBMPxYY2vwMSIRxD%2FP3DvwHupj%2BQHsofw%3
>>>>>>>>>>>>>>>>>>>>D&
>>>>>>>>> reserve
>>>>>>>>>>>>>>>>>>>> d=
>>>>>>>>>>>>>>>>>>>> 0
>>>>>>>>>>>>>>>>>>>> [2]
>>>>>>>>>>>>>>>>>>>> https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>>>>> https%3A%2F%2Fpaste.apa
>>>>>>>>>>>>>>>>>>>> che.org%2FArmU&data=02%7C01%7Caharui%40adobe.com%
>>>>>>>>>>>>>>>>>>> 7Cee5c84b4e3ff4ddb578008d
>>>>>>>>>>>>>>>>>>>> 57e87046f%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
>>>>>>>>>>>>>>>>>>> 7C636554040718214998&
>>>>>>>>>>>>>>>>>>>> sdata=m6whImrP70u7kzRxCbErlxCHWef8TK
>>>>>>>>> Nejwm4Sr7bw7g%3D&reserved=0
>>>>>>>>>>>>>>>>>>>> [3]
>>>>>>>>>>>>>>>>>>>> https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>>>>> https%3A%2F%2Fpaste.apa
>>>>>>>>>>>>>>>>>>>> che.org%2FKrxq&data=02%7C01%7Caharui%40adobe.com%
>>>>>>>>>>>>>>>>>>> 7Cee5c84b4e3ff4ddb578008d
>>>>>>>>>>>>>>>>>>>> 57e87046f%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
>>>>>>>>>>>>>>>>>>> 7C636554040718214998&
>>>>>>>>>>>>>>>>>>>> sdata=tpeUYSQIXGXtES8hyr7zSeet528ZTc
>>>>>>>>> zSltcNccqRGDo%3D&reserved=0
>>>>>>>>>>>>>>>>>>>> [4]
>>>>>>>>>>>>>>>>>>>> https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>>>>> https%3A%2F%2F1drv.ms%2
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Fu%2Fs!ApVpLyjpHDC2hPtoCi65kIZZPwjSpQ
>>>>>>>>> &data=02%7C01%7Caharui%40ad
>>>>>>>>>>>>>>>>>>>> ob
>>>>>>>>>>>>>>>>>>>> e
>>>>>>>>>>>>>>>>> .com
>>>>>>>>>>>>>>>>>>> %7C
>>>>>>>>>>>>>>>>>>>> ee5c84b4e3ff4ddb578008d57e87046f%
>>>>>>>>> 7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>>>>>>>>>>>> cee1%7C0%7C
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> 0%7C636554040718214998&sdata=eX%2FgZ0MA%
>>>>>>>>> 2BdQJjcpYtMkk1pw3r0iVkdR
>>>>>>>>>>>>>>>>>>>> a%
>>>>>>>>>>>>>>>>>>> 2F6TWRTG
>>>>>>>>>>>>>>>>>>>> 10OY%3D&reserved=0
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>>>>>>> Piotr
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> 2018-02-27 23:31 GMT+01:00 Alex Harui
>>>>>>>>>>>>>>>>>>>> <[email protected]>:
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> Hi Piotr,
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> I could not understand this explanation. Might be
>>>>>>>>>>>>>>>>>>>>> better
>>>>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>>>> show
>>>>>>>>>>>>>>>>>>> actual
>>>>>>>>>>>>>>>>>>>>> code.  For example in #3, there is a cssClass variable
>>>>>>>>>>>>>>>>>>>>> that I
>>>>>>>>>>>>>>>>> don't
>>>>>>>>>>>>>>>>>>> know
>>>>>>>>>>>>>>>>>>>>> about.  Also you mention at the bottom setting
>>>>>>>>>>>>>>>>>>>>> something
>>>>>>>>>>>>>>>>>>>>> as
>>>>>>>>>>>>>>>>>>>>> empty,
>>>>>>>>>>>>>>>>>>> but
>>>>>>>>>>>>>>>>>>>>> I'm
>>>>>>>>>>>>>>>>>>>>> not sure what that is.
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> However, IMO, this code should be in utility functions,
>>>>>>>>>>>>>>>>>>>>> not
>>>>>>>>> in
>>>>>>>>>>>>>>>>>>> UIBase.
>>>>>>>>>>>>>>>>>>>>> I
>>>>>>>>>>>>>>>>>>>>> think plenty of useful applications can be built
>>>>>>>>>>>>>>>>>>>>> without
>>>>>>>>>>>>>>>>>>>>> changing
>>>>>>>>>>>>>>>>>>>>> classNames at runtime.
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> I'm off-line for the next several hours so we can pick
>>>>>>>>>>>>>>>>>>>>> this
>>>>>>>>> up
>>>>>>>>>>>>>>>>> again
>>>>>>>>>>>>>>>>>>> in
>>>>>>>>>>>>>>>>>>>>> your morning.
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> Thanks for working on it,
>>>>>>>>>>>>>>>>>>>>> -Alex
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> On 2/27/18, 2:21 PM, "Piotr Zarzycki"
>>>>>>>>>>>>>>>>>>>>> <[email protected]>
>>>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Here is how I'm thinking to resolve that issue. I
>>>>>>>>>>>>>>>>>>>>>> would
>>>>>>>>>>>>>>>>>>>>>> take
>>>>>>>>>>>>>>>>> Harb's
>>>>>>>>>>>>>>>>>>>>>> proposition and add to UIBase  addClassName() and
>>>>>>>>>>>>>>>>> removeClassName().
>>>>>>>>>>>>>>>>>>>>> Next
>>>>>>>>>>>>>>>>>>>>>> I
>>>>>>>>>>>>>>>>>>>>>> would add internal field _internalClassName:String.
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> addClassName(value):
>>>>>>>>>>>>>>>>>>>>>> 1) Will check if provided class name exits in
>>>>>>>>>>>>>>>>>>>>>> _className
>>>>>>>>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>>>>>>>> in
>>>>>>>>>>>>>>>>>>>>>> _internalClassName.
>>>>>>>>>>>>>>>>>>>>>> 2) Will add to _internalClassName += value
>>>>>>>>>>>>>>>>>>>>>> 3) Assign to the element.className in the following
>>>>>>>>>>>>>>>>>>>>>> way:
>>>>>>>>>>>>>>>>>>>>> element.className
>>>>>>>>>>>>>>>>>>>>>> = cssClass + " " + _className + " " + typeNames;
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> removeClassName(value)
>>>>>>>>>>>>>>>>>>>>>> 1) Will check if provided classs name exists in
>>>>>>>>>>>>>>>>>>>>>> _className
>>>>>>>>>>>>>>>>>>>>>> or
>>>>>>>>>>>>>>>>>>>>>> in
>>>>>>>>>>>>>>>>>>>>>> _internalClassName
>>>>>>>>>>>>>>>>>>>>>> 2) Make a replace to empty string if css class name
>>>>>>>>>>>>>>>>>>>>>> exists.
>>>>>>>>>>>>>>>>>>>>>> _className.replace(value, "");
>>>>>>>>>>>>>>>>>>>>>> 3) Assign to the element.className: element.className
>>>>>>>>>>>>>>>>>>>>>> =
>>>>>>>>>>>>>>>>> _className
>>>>>>>>>>>>>>>>>>> + "
>>>>>>>>>>>>>>>>>>>>> " +
>>>>>>>>>>>>>>>>>>>>>> typeNames;
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> In added to parent we are computing _internalClassName
>>>>>>>>>>>>>>>>>>>>>> with
>>>>>>>>>>>>>>>>>>> _className
>>>>>>>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>>>>>>>> typeNames. Then it's being set as empty.
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> element.className =  _internalClassName  + " " +
>>>>>>>>>>>>>>>>>>>>>> _className
>>>>>>>>>>>>>>>>>>>>>> + "
>>>>>>>>>>>>>>>>> " +
>>>>>>>>>>>>>>>>>>>>>> typeNames;
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> I have implemented it and it seems to be working.
>>>>>>>>>>>>>>>>>>>>>> Waiting
>>>>>>>>> for
>>>>>>>>>>>>>>>>> your
>>>>>>>>>>>>>>>>>>>>>> thoughts
>>>>>>>>>>>>>>>>>>>>>> on that solution. The last step where we are adding
>>>>>>>>>>>>>>>>>>>>>> all
>>>>>>>>> three
>>>>>>>>>>>>>>>>>>> fields is
>>>>>>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>>>>> most important. Points 3 in addClassName and
>>>>>>>>>>>>>>>>>>>>>> removeClassName
>>>>>>>>>>>>>>>>>>>>>> are
>>>>>>>>>>>>>>>>>>>>>> necessary,
>>>>>>>>>>>>>>>>>>>>>> because user may want to more dynamically manipulate
>>>>>>>>>>>>>>>>>>>>>> classes
>>>>>>>>>>>>>>>>>>>>>> once
>>>>>>>>>>>>>>>>>>>>>> component
>>>>>>>>>>>>>>>>>>>>>> is created. Ex. "is-active" class is removed and
>>>>>>>>>>>>>>>>>>>>>> added on
>>>>>>>>>>>>>>>>>>>>>> demand.
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Thanks, Piotr
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> 2018-02-27 13:38 GMT+01:00 Piotr Zarzycki
>>>>>>>>>>>>>>>>>>> <[email protected]>:
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> I think I have analyzed everything and have some
>>>>>>>>>>>>>>>>>>>>>>> implementation
>>>>>>>>>>>>>>>>>>>>>>> proposition. I will try to provide it later today.
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> Thanks, Piotr
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> 2018-02-27 13:35 GMT+01:00 Harbs
>>>>>>>>>>>>>>>>>>>>>>> <[email protected]>:
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> ExpandableSearch broke too.
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>> On Feb 25, 2018, at 6:15 PM, Piotr Zarzycki
>>>>>>>>>>>>>>>>>>>>>>>> <[email protected]>
>>>>>>>>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>> Harbs,
>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>> If you are using something more than MDL Dialog in
>>>>>>>>>>>>>>>>>>>>>>>>> your
>>>>>>>>>>>>>>>>>>>>> application
>>>>>>>>>>>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>>>>>>>>>>> would be great to get feedback whether I didn't break
>>>>>>>>>>>>>>>>>>>>>>>>> for
>>>>>>>>>>>>>>>>> you
>>>>>>>>>>>>>>>>>>>>>>>> anything.
>>>>>>>>>>>>>>>>>>>>>>>> :)
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> Piotr Zarzycki
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> Patreon:
>>>>>>>>>>>>>>>>>>>>>>> *https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>>>>>>> https%3A%2F%2Fwww.pat
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> reon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%
>>>>> 40adobe.co
>>>>>>>>>>>>>>>>>>>>>>> m
>>>>>>>>>>>>>>>>>>>>> %7C45a065853ba1
>>>>>>>>>>>>>>>>>>>>>>> 4a295d9d08d57e3082b9%7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>>>>>>>>>>>>>> cee1%7C0%7C0%7C6365536
>>>>>>>>>>>>>>>>>>>>>>> 69427477536&sdata=tOlZF%2FWAGhqn1toqJCCqjc14NZU56MnZZK
>>>>>>>>>>>>>>>>>>>>> 9liXcy%2BPg%3D&rese
>>>>>>>>>>>>>>>>>>>>>>> rved=0
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> <https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>>>>>>> https%3A%2F%2Fwww.pat
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> reon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%
>>>>> 40adobe.co
>>>>>>>>>>>>>>>>>>>>>>> m
>>>>>>>>>>>>>>>>>>>>> %7C45a065853ba1
>>>>>>>>>>>>>>>>>>>>>>> 4a295d9d08d57e3082b9%7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>>>>>>>>>>>>>> cee1%7C0%7C0%7C6365536
>>>>>>>>>>>>>>>>>>>>>>> 69427477536&sdata=tOlZF%2FWAGhqn1toqJCCqjc14NZU56MnZZK
>>>>>>>>>>>>>>>>>>>>> 9liXcy%2BPg%3D&rese
>>>>>>>>>>>>>>>>>>>>>>> rved=0>*
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Piotr Zarzycki
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Patreon:
>>>>>>>>>>>>>>>>>>>>>> *https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>>>>>>> https%3A%2F%2Fwww.patr
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.c
>>>>>>>>>>>>>>>>>>>>>> om
>>>>> %
>>>>>>>>>>>>>>>>>>>>> 7C45a065853ba14a
>>>>>>>>>>>>>>>>>>>>>> 295d9d08d57e3082b9%7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>>>>>>>>>>>>>> cee1%7C0%7C0%7C6365536694
>>>>>>>>>>>>>>>>>>>>>> 27477536&sdata=tOlZF%2FWAGhqn1toqJCCqjc14NZU56MnZZK
>>>>>>>>>>>>>>>>>>>>> 9liXcy%2BPg%3D&reserved
>>>>>>>>>>>>>>>>>>>>>> =0
>>>>>>>>>>>>>>>>>>>>>> <https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>>>>>>> https%3A%2F%2Fwww.patr
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.c
>>>>>>>>>>>>>>>>>>>>>> om
>>>>> %
>>>>>>>>>>>>>>>>>>>>> 7C45a065853ba14a
>>>>>>>>>>>>>>>>>>>>>> 295d9d08d57e3082b9%7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>>>>>>>>>>>>>> cee1%7C0%7C0%7C6365536694
>>>>>>>>>>>>>>>>>>>>>> 27477536&sdata=tOlZF%2FWAGhqn1toqJCCqjc14NZU56MnZZK
>>>>>>>>>>>>>>>>>>>>> 9liXcy%2BPg%3D&reserved
>>>>>>>>>>>>>>>>>>>>>> =0>*
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Piotr Zarzycki
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Patreon:
>>>>>>>>>>>>>>>>>>>> *https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>>>>> https%3A%2F%2Fwww.patr
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.c
>>>>>>>>>>>>>>>>>>>>om
>>>>>>>>>>>>>>>>>>>> %
>>>>>>>>>>>>>>>>>>> 7Cee5c84b4e3ff4d
>>>>>>>>>>>>>>>>>>>> db578008d57e87046f%7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>>>>>>>>>>>> cee1%7C0%7C0%7C6365540407
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 18214998&sdata=VYtgB8rsurZAHpO%2FVs%
>>>>>>>>> 2FqOkmxROz58p7VvQ%2B0EK8VPPc
>>>>>>>>>>>>>>>>>>>> %
>>>>>>>>>>>>>>>>>>> 3D&reserv
>>>>>>>>>>>>>>>>>>>> ed=0
>>>>>>>>>>>>>>>>>>>> <https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>>>>> https%3A%2F%2Fwww.patr
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.c
>>>>>>>>>>>>>>>>>>>>om
>>>>>>>>>>>>>>>>>>>> %
>>>>>>>>>>>>>>>>>>> 7Cee5c84b4e3ff4d
>>>>>>>>>>>>>>>>>>>> db578008d57e87046f%7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>>>>>>>>>>>> cee1%7C0%7C0%7C6365540407
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 18214998&sdata=VYtgB8rsurZAHpO%2FVs%
>>>>>>>>> 2FqOkmxROz58p7VvQ%2B0EK8VPPc
>>>>>>>>>>>>>>>>>>>> %
>>>>>>>>>>>>>>>>>>> 3D&reserv
>>>>>>>>>>>>>>>>>>>> ed=0>*
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Piotr Zarzycki
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Patreon:
>>>>>>>>>>>>>>>>>> *https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>>> https%3A%2F%2Fwww.patr
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com
>>>>>>>>>>>>>>>>>>%
>>>>>>>>>>>>>>>>> 7Cda0fd75922c94d
>>>>>>>>>>>>>>>>>> cb789208d57ed16c9f%7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>>>>>>>>>> cee1%7C0%7C0%7C6365543602
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 95549968&sdata=rypScmQqTsmVcrUIZRNnaoZP5VMbI0
>>>>>>>>> oJqA6J42ZuhcA%3D&rese
>>>>>>>>>>>>>>>>>> rv
>>>>>>>>>>>>>>>>>> ed
>>>>>>>>>>>>>>>>>> =0
>>>>>>>>>>>>>>>>>> <https://na01.safelinks.protection.outlook.com/?url=
>>>>>>>>>>>>>>>>> https%3A%2F%2Fwww.patr
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com
>>>>>>>>>>>>>>>>>>%
>>>>>>>>>>>>>>>>> 7Cda0fd75922c94d
>>>>>>>>>>>>>>>>>> cb789208d57ed16c9f%7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>>>>>>>>>> cee1%7C0%7C0%7C6365543602
>>>>>>>>>>>>>>>>>> 95549968&sdata=rypScmQqTsmVcrUIZRNnaoZP5VMbI0
>>>>>>>>>>>>>>>>> oJqA6J42ZuhcA%3D&reserved=0>*
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Piotr Zarzycki
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Patreon:
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>*https://na01.safelinks.protection.outlook.com/?url=https%3
>>>>>>>>>>>>>>>>A%
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>2F%2Fna01.safelinks.protection.outlook&data=02%7C01%7Caharu
>>>>>>>>>>>>>>>>i%
>>>>>>>>>>>>>>>> 40adobe.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2F40adobe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f
>>>>>>>>>>>>>>>>96522046fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178
>>>>>>>>>>>>>>>>decee1%7C0%7C0%7C636557667183559337&sdata=rRzLd0%2FtbGWoT2H
>>>>>>>>>>>>>>>>6WtaVSYIXLxElBY2W7GyNw56dBS8%3D&reserved=0>%7C1beda9d1dc674
>>>>>>>>>>>>>>>>30b02e608d580210ddc%7Cfa7b1b5a7b34
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>438794aed2c178decee1%7C0%7C0%7C636555801839809628&sdata=SJJ
>>>>>>>>>>>>>>>>hf
>>>>>>>>>>>>>>>> o35YeFDCbP6yES0ugobyKR6K9%2FuipoHW%2BMJwkg%3D&reserved=0.
>>>>> com/?url=https%3A%2F%
>>>>>>>>>>>>>>>> 2Fna01.safelinks.protection.outlook&data=02%
>>>>> 7C01%7Caharui%40adob
>>>>>>>>>>>>>>>> e.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2Fe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f965220
>>>>>>>>>>>>>>>>46fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178decee1
>>>>>>>>>>>>>>>>%7C0%7C0%7C636557667183559337&sdata=9FWfUNZV9xlJqEFYVFVDrZx
>>>>>>>>>>>>>>>>5p4lHBqIjIW%2F6cIaQTJw%3D&reserved=0>%7C9ba2ae2d1a6e4fdc774
>>>>>>>>>>>>>>>>508d57fcf
>>>>> 6c56%7Cfa7b1b5a7b34438794aed
>>>>>>>>>>>>>>>> 2c178decee1%7C0%7C0%7C636555451956879397&
>>>>> sdata=9%2BK%2FO6A3X%2FV
>>>>>>>>>>>>>>>> r0TGaLRYxNlYT6va%2BE2FnpXhigerfODc%3D&reserved=0.
>>>>>>>>> com/?url=https%3A%2F%2Fww
>>>>>>>>>>>>>>>> w.
>>>>>>>>>>>>>>>> pa
>>>>>>>>>>>>>>>> tr
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=https%3
>>>>>>>>>>>>>>>>A% 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=https%3
>>>>>>>>>>>>>>>>A%>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>2F%2Fna01.safelinks.protection.outlook&data=02%7C01%7Caharu
>>>>>>>>>>>>>>>>i%
>>>>>>>>>>>>>>>> 40adobe.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2F40adobe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f
>>>>>>>>>>>>>>>>96522046fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178
>>>>>>>>>>>>>>>>decee1%7C0%7C0%7C636557667183559337&sdata=rRzLd0%2FtbGWoT2H
>>>>>>>>>>>>>>>>6WtaVSYIXLxElBY2W7GyNw56dBS8%3D&reserved=0>%7C1beda9d1dc674
>>>>>>>>>>>>>>>>30b02e608d580210ddc%7Cfa7b1b5a7b34
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>438794aed2c178decee1%7C0%7C0%7C636555801839809628&sdata=SJJ
>>>>>>>>>>>>>>>>hf
>>>>>>>>>>>>>>>> o35YeFDCbP6yES0ugobyKR6K9%2FuipoHW%2BMJwkg%3D&reserved=0.
>>>>> com/?url=https%3A%2F%
>>>>>>>>>>>>>>>> 2Fna01.safelinks.protection.outlook&data=02%
>>>>> 7C01%7Caharui%40adob
>>>>>>>>>>>>>>>> e.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2Fe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f965220
>>>>>>>>>>>>>>>>46fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178decee1
>>>>>>>>>>>>>>>>%7C0%7C0%7C636557667183559337&sdata=9FWfUNZV9xlJqEFYVFVDrZx
>>>>>>>>>>>>>>>>5p4lHBqIjIW%2F6cIaQTJw%3D&reserved=0>%7C9ba2ae2d1a6e4fdc774
>>>>>>>>>>>>>>>>508d57fcf
>>>>> 6c56%7Cfa7b1b5a7b34438794aed
>>>>>>>>>>>>>>>> 2c178decee1%7C0%7C0%7C636555451956879397&
>>>>> sdata=9%2BK%2FO6A3X%2FV
>>>>>>>>>>>>>>>> r0TGaLRYxNlYT6va%2BE2FnpXhigerfODc%3D&reserved=0.
>>>>>>>>> com/?url=https%3A%2F%2Fww
>>>>>>>>>>>>>>>> w.
>>>>>>>>>>>>>>>> pa
>>>>>>>>>>>>>>>> tr>
>>>>>>>>>>>>>>>> eon.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2Feon.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f9652
>>>>>>>>>>>>>>>>2046fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178dece
>>>>>>>>>>>>>>>>e1%7C0%7C0%7C636557667183559337&sdata=4AZuIWAEBmFqifiEmALZY
>>>>>>>>>>>>>>>>sFzfTm5U8uwi3UhiiE4e2c%3D&reserved=0>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=https%3
>>>>>>>>>>>>>>>>A% 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=https%3
>>>>>>>>>>>>>>>>A%>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>2F%2Fna01.safelinks.protection.outlook&data=02%7C01%7Caharu
>>>>>>>>>>>>>>>>i%
>>>>>>>>>>>>>>>> 40adobe.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2F40adobe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f
>>>>>>>>>>>>>>>>96522046fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178
>>>>>>>>>>>>>>>>decee1%7C0%7C0%7C636557667183559337&sdata=rRzLd0%2FtbGWoT2H
>>>>>>>>>>>>>>>>6WtaVSYIXLxElBY2W7GyNw56dBS8%3D&reserved=0>%7C1beda9d1dc674
>>>>>>>>>>>>>>>>30b02e608d580210ddc%7Cfa7b1b5a7b34
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>438794aed2c178decee1%7C0%7C0%7C636555801839809628&sdata=SJJ
>>>>>>>>>>>>>>>>hf
>>>>>>>>>>>>>>>> o35YeFDCbP6yES0ugobyKR6K9%2FuipoHW%2BMJwkg%3D&reserved=0.
>>>>> com/?url=https%3A%2F%
>>>>>>>>>>>>>>>> 2Fna01.safelinks.protection.outlook&data=02%
>>>>> 7C01%7Caharui%40adob
>>>>>>>>>>>>>>>> e.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2Fe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f965220
>>>>>>>>>>>>>>>>46fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178decee1
>>>>>>>>>>>>>>>>%7C0%7C0%7C636557667183559337&sdata=9FWfUNZV9xlJqEFYVFVDrZx
>>>>>>>>>>>>>>>>5p4lHBqIjIW%2F6cIaQTJw%3D&reserved=0>%7C9ba2ae2d1a6e4fdc774
>>>>>>>>>>>>>>>>508d57fcf
>>>>> 6c56%7Cfa7b1b5a7b34438794aed
>>>>>>>>>>>>>>>> 2c178decee1%7C0%7C0%7C636555451956879397&
>>>>> sdata=9%2BK%2FO6A3X%2FV
>>>>>>>>>>>>>>>> r0TGaLRYxNlYT6va%2BE2FnpXhigerfODc%3D&reserved=0.
>>>>>>>>> com/?url=http%3A%2F%2Feon
>>>>>>>>>>>>>>>> .c
>>>>>>>>>>>>>>>> om
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> %2F&data=02%7C01%7Caharui%40adobe.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2F40adobe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f
>>>>>>>>>>>>>>>>96522046fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178
>>>>>>>>>>>>>>>>decee1%7C0%7C0%7C636557667183559337&sdata=rRzLd0%2FtbGWoT2H
>>>>>>>>>>>>>>>>6WtaVSYIXLxElBY2W7GyNw56dBS8%3D&reserved=0>%
>>>>>>>>> 7C75519f53f52b4fde36b108d57edb
>>>>>>>>>>>>>>>> 59
>>>>>>>>>>>>>>>> 03
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> %7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
>>>>>>>>> 7C636554402926763835&sda
>>>>>>>>>>>>>>>> ta
>>>>>>>>>>>>>>>> =G
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> P3kiCe4imGL1d5mLcQcEGLxLCNgLGK2RheJkPCJgQY%3D&reserved=0>%
>>>>>>>>> 2Fpiotrzar
>>>>>>>>>>>>>>>> zy
>>>>>>>>>>>>>>>> ck
>>>>>>>>>>>>>>>> i&data=02%7C01%7Caharui%40adobe.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2F40adobe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f
>>>>>>>>>>>>>>>>96522046fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178
>>>>>>>>>>>>>>>>decee1%7C0%7C0%7C636557667183559337&sdata=rRzLd0%2FtbGWoT2H
>>>>>>>>>>>>>>>>6WtaVSYIXLxElBY2W7GyNw56dBS8%3D&reserved=0>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=https%3
>>>>>>>>>>>>>>>>A% 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=https%3
>>>>>>>>>>>>>>>>A%>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>2F%2Fna01.safelinks.protection.outlook&data=02%7C01%7Caharu
>>>>>>>>>>>>>>>>i%
>>>>>>>>>>>>>>>> 40adobe.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2F40adobe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f
>>>>>>>>>>>>>>>>96522046fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178
>>>>>>>>>>>>>>>>decee1%7C0%7C0%7C636557667183559337&sdata=rRzLd0%2FtbGWoT2H
>>>>>>>>>>>>>>>>6WtaVSYIXLxElBY2W7GyNw56dBS8%3D&reserved=0>%7C1beda9d1dc674
>>>>>>>>>>>>>>>>30b02e608d580210ddc%7Cfa7b1b5a7b34
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>438794aed2c178decee1%7C0%7C0%7C636555801839809628&sdata=SJJ
>>>>>>>>>>>>>>>>hf
>>>>>>>>>>>>>>>> o35YeFDCbP6yES0ugobyKR6K9%2FuipoHW%2BMJwkg%3D&reserved=0.
>>>>> com/?url=https%3A%2F%
>>>>>>>>>>>>>>>> 2Fna01.safelinks.protection.outlook&data=02%
>>>>> 7C01%7Caharui%40adob
>>>>>>>>>>>>>>>> e.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2Fe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f965220
>>>>>>>>>>>>>>>>46fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178decee1
>>>>>>>>>>>>>>>>%7C0%7C0%7C636557667183559337&sdata=9FWfUNZV9xlJqEFYVFVDrZx
>>>>>>>>>>>>>>>>5p4lHBqIjIW%2F6cIaQTJw%3D&reserved=0>%7C9ba2ae2d1a6e4fdc774
>>>>>>>>>>>>>>>>508d57fcf
>>>>> 6c56%7Cfa7b1b5a7b34438794aed
>>>>>>>>>>>>>>>> 2c178decee1%7C0%7C0%7C636555451956879397&
>>>>> sdata=9%2BK%2FO6A3X%2FV
>>>>>>>>>>>>>>>> r0TGaLRYxNlYT6va%2BE2FnpXhigerfODc%3D&reserved=0.
>>>>>>>>> com/?url=http%3A%2F%2F40a
>>>>>>>>>>>>>>>> do
>>>>>>>>>>>>>>>> be
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> .com%2F&data=02%7C01%7Caharui%40adobe.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2F40adobe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f
>>>>>>>>>>>>>>>>96522046fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178
>>>>>>>>>>>>>>>>decee1%7C0%7C0%7C636557667183559337&sdata=rRzLd0%2FtbGWoT2H
>>>>>>>>>>>>>>>>6WtaVSYIXLxElBY2W7GyNw56dBS8%3D&reserved=0>%
>>>>>>>>> 7C75519f53f52b4fde36b108d5
>>>>>>>>>>>>>>>> 7e
>>>>>>>>>>>>>>>> db
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 5903%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
>>>>>>>>> 7C636554402926763835
>>>>>>>>>>>>>>>> &s
>>>>>>>>>>>>>>>> da
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> ta=r5UrAyOXUfffdyTWxankNj%2F5knjssVb9oxg4tY5sThY%3D&
>>>>>>>>> reserved=0>%7Cf2
>>>>>>>>>>>>>>>> 5d
>>>>>>>>>>>>>>>> bf
>>>>>>>>>>>>>>>> 20138f47
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 186d4808d57ed4a8fb%7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>> cee1%7C0%7C0%7C6365
>>>>>>>>>>>>>>>> 54
>>>>>>>>>>>>>>>> 37
>>>>>>>>>>>>>>>> 41
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 87322476&sdata=bVfz%2BNfVCmLjO4LzijRozHXQoN1VfVRQS
>>>>>>>>> etW7oghI4s%3D&rese
>>>>>>>>>>>>>>>> rv
>>>>>>>>>>>>>>>> ed
>>>>>>>>>>>>>>>> =0
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=https%3
>>>>>>>>>>>>>>>>A% 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=https%3
>>>>>>>>>>>>>>>>A%>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>2F%2Fna01.safelinks.protection.outlook&data=02%7C01%7Caharu
>>>>>>>>>>>>>>>>i%
>>>>>>>>>>>>>>>> 40adobe.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2F40adobe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f
>>>>>>>>>>>>>>>>96522046fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178
>>>>>>>>>>>>>>>>decee1%7C0%7C0%7C636557667183559337&sdata=rRzLd0%2FtbGWoT2H
>>>>>>>>>>>>>>>>6WtaVSYIXLxElBY2W7GyNw56dBS8%3D&reserved=0>%7C1beda9d1dc674
>>>>>>>>>>>>>>>>30b02e608d580210ddc%7Cfa7b1b5a7b34
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>438794aed2c178decee1%7C0%7C0%7C636555801839809628&sdata=SJJ
>>>>>>>>>>>>>>>>hf
>>>>>>>>>>>>>>>> o35YeFDCbP6yES0ugobyKR6K9%2FuipoHW%2BMJwkg%3D&reserved=0.
>>>>> com/?url=https%3A%2F%
>>>>>>>>>>>>>>>> 2Fna01.safelinks.protection.outlook&data=02%
>>>>> 7C01%7Caharui%40adob
>>>>>>>>>>>>>>>> e.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2Fe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f965220
>>>>>>>>>>>>>>>>46fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178decee1
>>>>>>>>>>>>>>>>%7C0%7C0%7C636557667183559337&sdata=9FWfUNZV9xlJqEFYVFVDrZx
>>>>>>>>>>>>>>>>5p4lHBqIjIW%2F6cIaQTJw%3D&reserved=0>%7C9ba2ae2d1a6e4fdc774
>>>>>>>>>>>>>>>>508d57fcf
>>>>> 6c56%7Cfa7b1b5a7b34438794aed
>>>>>>>>>>>>>>>> 2c178decee1%7C0%7C0%7C636555451956879397&
>>>>> sdata=9%2BK%2FO6A3X%2FV
>>>>>>>>>>>>>>>> r0TGaLRYxNlYT6va%2BE2FnpXhigerfODc%3D&reserved=0.
>>>>>>>>> com/?url=https%3A%2F%2Fww
>>>>>>>>>>>>>>>> w.
>>>>>>>>>>>>>>>> pa
>>>>>>>>>>>>>>>> tr
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=https%3
>>>>>>>>>>>>>>>>A% 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=https%3
>>>>>>>>>>>>>>>>A%>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>2F%2Fna01.safelinks.protection.outlook&data=02%7C01%7Caharu
>>>>>>>>>>>>>>>>i%
>>>>>>>>>>>>>>>> 40adobe.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2F40adobe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f
>>>>>>>>>>>>>>>>96522046fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178
>>>>>>>>>>>>>>>>decee1%7C0%7C0%7C636557667183559337&sdata=rRzLd0%2FtbGWoT2H
>>>>>>>>>>>>>>>>6WtaVSYIXLxElBY2W7GyNw56dBS8%3D&reserved=0>%7C1beda9d1dc674
>>>>>>>>>>>>>>>>30b02e608d580210ddc%7Cfa7b1b5a7b34
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>438794aed2c178decee1%7C0%7C0%7C636555801839809628&sdata=SJJ
>>>>>>>>>>>>>>>>hf
>>>>>>>>>>>>>>>> o35YeFDCbP6yES0ugobyKR6K9%2FuipoHW%2BMJwkg%3D&reserved=0.
>>>>> com/?url=https%3A%2F%
>>>>>>>>>>>>>>>> 2Fna01.safelinks.protection.outlook&data=02%
>>>>> 7C01%7Caharui%40adob
>>>>>>>>>>>>>>>> e.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2Fe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f965220
>>>>>>>>>>>>>>>>46fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178decee1
>>>>>>>>>>>>>>>>%7C0%7C0%7C636557667183559337&sdata=9FWfUNZV9xlJqEFYVFVDrZx
>>>>>>>>>>>>>>>>5p4lHBqIjIW%2F6cIaQTJw%3D&reserved=0>%7C9ba2ae2d1a6e4fdc774
>>>>>>>>>>>>>>>>508d57fcf
>>>>> 6c56%7Cfa7b1b5a7b34438794aed
>>>>>>>>>>>>>>>> 2c178decee1%7C0%7C0%7C636555451956879397&
>>>>> sdata=9%2BK%2FO6A3X%2FV
>>>>>>>>>>>>>>>> r0TGaLRYxNlYT6va%2BE2FnpXhigerfODc%3D&reserved=0.
>>>>>>>>> com/?url=https%3A%2F%2Fww
>>>>>>>>>>>>>>>> w.
>>>>>>>>>>>>>>>> pa
>>>>>>>>>>>>>>>> tr>
>>>>>>>>>>>>>>>> eon.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2Feon.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f9652
>>>>>>>>>>>>>>>>2046fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178dece
>>>>>>>>>>>>>>>>e1%7C0%7C0%7C636557667183559337&sdata=4AZuIWAEBmFqifiEmALZY
>>>>>>>>>>>>>>>>sFzfTm5U8uwi3UhiiE4e2c%3D&reserved=0>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=https%3
>>>>>>>>>>>>>>>>A% 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=https%3
>>>>>>>>>>>>>>>>A%>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>2F%2Fna01.safelinks.protection.outlook&data=02%7C01%7Caharu
>>>>>>>>>>>>>>>>i%
>>>>>>>>>>>>>>>> 40adobe.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2F40adobe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f
>>>>>>>>>>>>>>>>96522046fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178
>>>>>>>>>>>>>>>>decee1%7C0%7C0%7C636557667183559337&sdata=rRzLd0%2FtbGWoT2H
>>>>>>>>>>>>>>>>6WtaVSYIXLxElBY2W7GyNw56dBS8%3D&reserved=0>%7C1beda9d1dc674
>>>>>>>>>>>>>>>>30b02e608d580210ddc%7Cfa7b1b5a7b34
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>438794aed2c178decee1%7C0%7C0%7C636555801839809628&sdata=SJJ
>>>>>>>>>>>>>>>>hf
>>>>>>>>>>>>>>>> o35YeFDCbP6yES0ugobyKR6K9%2FuipoHW%2BMJwkg%3D&reserved=0.
>>>>> com/?url=https%3A%2F%
>>>>>>>>>>>>>>>> 2Fna01.safelinks.protection.outlook&data=02%
>>>>> 7C01%7Caharui%40adob
>>>>>>>>>>>>>>>> e.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2Fe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f965220
>>>>>>>>>>>>>>>>46fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178decee1
>>>>>>>>>>>>>>>>%7C0%7C0%7C636557667183559337&sdata=9FWfUNZV9xlJqEFYVFVDrZx
>>>>>>>>>>>>>>>>5p4lHBqIjIW%2F6cIaQTJw%3D&reserved=0>%7C9ba2ae2d1a6e4fdc774
>>>>>>>>>>>>>>>>508d57fcf
>>>>> 6c56%7Cfa7b1b5a7b34438794aed
>>>>>>>>>>>>>>>> 2c178decee1%7C0%7C0%7C636555451956879397&
>>>>> sdata=9%2BK%2FO6A3X%2FV
>>>>>>>>>>>>>>>> r0TGaLRYxNlYT6va%2BE2FnpXhigerfODc%3D&reserved=0.
>>>>>>>>> com/?url=http%3A%2F%2Feon
>>>>>>>>>>>>>>>> .c
>>>>>>>>>>>>>>>> om
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> %2F&data=02%7C01%7Caharui%40adobe.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2F40adobe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f
>>>>>>>>>>>>>>>>96522046fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178
>>>>>>>>>>>>>>>>decee1%7C0%7C0%7C636557667183559337&sdata=rRzLd0%2FtbGWoT2H
>>>>>>>>>>>>>>>>6WtaVSYIXLxElBY2W7GyNw56dBS8%3D&reserved=0>%
>>>>>>>>> 7C75519f53f52b4fde36b108d57edb
>>>>>>>>>>>>>>>> 59
>>>>>>>>>>>>>>>> 03
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> %7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
>>>>>>>>> 7C636554402926763835&sda
>>>>>>>>>>>>>>>> ta
>>>>>>>>>>>>>>>> =G
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> P3kiCe4imGL1d5mLcQcEGLxLCNgLGK2RheJkPCJgQY%3D&reserved=0>%
>>>>>>>>> 2Fpiotrzar
>>>>>>>>>>>>>>>> zy
>>>>>>>>>>>>>>>> ck
>>>>>>>>>>>>>>>> i&data=02%7C01%7Caharui%40adobe.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2F40adobe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f
>>>>>>>>>>>>>>>>96522046fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178
>>>>>>>>>>>>>>>>decee1%7C0%7C0%7C636557667183559337&sdata=rRzLd0%2FtbGWoT2H
>>>>>>>>>>>>>>>>6WtaVSYIXLxElBY2W7GyNw56dBS8%3D&reserved=0>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=https%3
>>>>>>>>>>>>>>>>A% 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=https%3
>>>>>>>>>>>>>>>>A%>
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>2F%2Fna01.safelinks.protection.outlook&data=02%7C01%7Caharu
>>>>>>>>>>>>>>>>i%
>>>>>>>>>>>>>>>> 40adobe.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2F40adobe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f
>>>>>>>>>>>>>>>>96522046fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178
>>>>>>>>>>>>>>>>decee1%7C0%7C0%7C636557667183559337&sdata=rRzLd0%2FtbGWoT2H
>>>>>>>>>>>>>>>>6WtaVSYIXLxElBY2W7GyNw56dBS8%3D&reserved=0>%7C1beda9d1dc674
>>>>>>>>>>>>>>>>30b02e608d580210ddc%7Cfa7b1b5a7b34
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>438794aed2c178decee1%7C0%7C0%7C636555801839809628&sdata=SJJ
>>>>>>>>>>>>>>>>hf
>>>>>>>>>>>>>>>> o35YeFDCbP6yES0ugobyKR6K9%2FuipoHW%2BMJwkg%3D&reserved=0.
>>>>> com/?url=https%3A%2F%
>>>>>>>>>>>>>>>> 2Fna01.safelinks.protection.outlook&data=02%
>>>>> 7C01%7Caharui%40adob
>>>>>>>>>>>>>>>> e.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2Fe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f965220
>>>>>>>>>>>>>>>>46fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178decee1
>>>>>>>>>>>>>>>>%7C0%7C0%7C636557667183559337&sdata=9FWfUNZV9xlJqEFYVFVDrZx
>>>>>>>>>>>>>>>>5p4lHBqIjIW%2F6cIaQTJw%3D&reserved=0>%7C9ba2ae2d1a6e4fdc774
>>>>>>>>>>>>>>>>508d57fcf
>>>>> 6c56%7Cfa7b1b5a7b34438794aed
>>>>>>>>>>>>>>>> 2c178decee1%7C0%7C0%7C636555451956879397&
>>>>> sdata=9%2BK%2FO6A3X%2FV
>>>>>>>>>>>>>>>> r0TGaLRYxNlYT6va%2BE2FnpXhigerfODc%3D&reserved=0.
>>>>>>>>> com/?url=http%3A%2F%2F40a
>>>>>>>>>>>>>>>> do
>>>>>>>>>>>>>>>> be
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> .com%2F&data=02%7C01%7Caharui%40adobe.com 
>>>>>>>>>>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A
>>>>>>>>>>>>>>>>%2F%2F40adobe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f
>>>>>>>>>>>>>>>>96522046fe4320209108d581d35c0b%7Cfa7b1b5a7b34438794aed2c178
>>>>>>>>>>>>>>>>decee1%7C0%7C0%7C636557667183559337&sdata=rRzLd0%2FtbGWoT2H
>>>>>>>>>>>>>>>>6WtaVSYIXLxElBY2W7GyNw56dBS8%3D&reserved=0>%
>>>>>>>>> 7C75519f53f52b4fde36b108d5
>>>>>>>>>>>>>>>> 7e
>>>>>>>>>>>>>>>> db
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 5903%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
>>>>>>>>> 7C636554402926763835
>>>>>>>>>>>>>>>> &s
>>>>>>>>>>>>>>>> da
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> ta=r5UrAyOXUfffdyTWxankNj%2F5knjssVb9oxg4tY5sThY%3D&
>>>>>>>>> reserved=0>%7Cf2
>>>>>>>>>>>>>>>> 5d
>>>>>>>>>>>>>>>> bf
>>>>>>>>>>>>>>>> 20138f47
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 186d4808d57ed4a8fb%7Cfa7b1b5a7b34438794aed2c178de
>>>>>>>>> cee1%7C0%7C0%7C6365
>>>>>>>>>>>>>>>> 54
>>>>>>>>>>>>>>>> 37
>>>>>>>>>>>>>>>> 41
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 87322476&sdata=bVfz%2BNfVCmLjO4LzijRozHXQoN1VfVRQS
>>>>>>>>> etW7oghI4s%3D&rese
>>>>>>>>>>>>>>>> rv
>>>>>>>>>>>>>>>> ed
>>>>>>>>>>>>>>>> =0
>>>>>>>>>>>>>>>>> *
>>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> --
>>>>>>> 
>>>>>>> Piotr Zarzycki
>>>>>>> 
>>>>>>> Patreon:
>>>>>>> *https://na01.safelinks.protection.outlook.com/?url= 
>>>>>>><https://na01.safelinks.protection.outlook.com/?url=>
>>>>> https%3A%2F%2Fwww.pat
>>>>>>> reon.com 
>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Freo
>>>>>>>n.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f96522046fe4320209108d
>>>>>>>581d35c0b%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6365576671835
>>>>>>>59337&sdata=rvy3d4vYlNuDwe%2BdvdX6swvlerBb31Ki9rlf7C9%2BZis%3D&reser
>>>>>>>ved=0>%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com 
>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2F40a
>>>>>>>dobe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f96522046fe43202091
>>>>>>>08d581d35c0b%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6365576671
>>>>>>>83559337&sdata=rRzLd0%2FtbGWoT2H6WtaVSYIXLxElBY2W7GyNw56dBS8%3D&rese
>>>>>>>rved=0>
>>>>> %7C9ba2ae2d1a6e
>>>>>>> 4fdc774508d57fcf6c56%7Cfa7b1b5a7b34438794aed2c178de
>>>>> cee1%7C0%7C0%7C6365554
>>>>>>> 51956879397&sdata=GQq8YFsWjlmTvhQ3JIbegCvt1P1brQ
>>>>> oyfshLnt8lxqg%3D&reserved
>>>>>>> =0
>>>>>>> 
>>>>>>> <https://na01.safelinks.protection.outlook.com/?url= 
>>>>>>><https://na01.safelinks.protection.outlook.com/?url=>
>>>>> https%3A%2F%2Fwww.pat
>>>>>>> reon.com 
>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Freo
>>>>>>>n.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f96522046fe4320209108d
>>>>>>>581d35c0b%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6365576671835
>>>>>>>59337&sdata=rvy3d4vYlNuDwe%2BdvdX6swvlerBb31Ki9rlf7C9%2BZis%3D&reser
>>>>>>>ved=0>%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com 
>>>>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2F40a
>>>>>>>dobe.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f96522046fe43202091
>>>>>>>08d581d35c0b%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6365576671
>>>>>>>83559337&sdata=rRzLd0%2FtbGWoT2H6WtaVSYIXLxElBY2W7GyNw56dBS8%3D&rese
>>>>>>>rved=0>
>>>>> %7C9ba2ae2d1a6e
>>>>>>> 4fdc774508d57fcf6c56%7Cfa7b1b5a7b34438794aed2c178de
>>>>> cee1%7C0%7C0%7C6365554
>>>>>>> 51956879397&sdata=GQq8YFsWjlmTvhQ3JIbegCvt1P1brQ
>>>>> oyfshLnt8lxqg%3D&reserved
>>>>>>> =0>*
>>>>>> 
>>>>> 
>>>>> 
>>>> 
>>>> 
>>>> -- 
>>>> 
>>>> Piotr Zarzycki
>>>> 
>>>> Patreon: 
>>>> 
>>>>*https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.p
>>>>at 
>>>><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.p
>>>>at>
>>>> reon.com 
>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Freon.c
>>>>om%2F&data=02%7C01%7Caharui%40adobe.com%7C0f96522046fe4320209108d581d35
>>>>c0b%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636557667183559337&sda
>>>>ta=rvy3d4vYlNuDwe%2BdvdX6swvlerBb31Ki9rlf7C9%2BZis%3D&reserved=0>%2Fpio
>>>>trzarzycki&data=02%7C01%7Caharui%40adobe.com 
>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2F40adob
>>>>e.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f96522046fe4320209108d581
>>>>d35c0b%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636557667183559337&
>>>>sdata=rRzLd0%2FtbGWoT2H6WtaVSYIXLxElBY2W7GyNw56dBS8%3D&reserved=0>%7C1b
>>>>eda9d1dc67
>>>> 
>>>>430b02e608d580210ddc%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C63655
>>>>58
>>>> 
>>>>01839809628&sdata=EzOsLPee70lr9OpwikrUz9KqGXkWxDo98P6o%2BPGEBK4%3D&rese
>>>>rv
>>>> ed=0
>>>> 
>>>> 
>>>><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.p
>>>>at 
>>>><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.p
>>>>at>
>>>> reon.com 
>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Freon.c
>>>>om%2F&data=02%7C01%7Caharui%40adobe.com%7C0f96522046fe4320209108d581d35
>>>>c0b%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636557667183559337&sda
>>>>ta=rvy3d4vYlNuDwe%2BdvdX6swvlerBb31Ki9rlf7C9%2BZis%3D&reserved=0>%2Fpio
>>>>trzarzycki&data=02%7C01%7Caharui%40adobe.com 
>>>><https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2F40adob
>>>>e.com%2F&data=02%7C01%7Caharui%40adobe.com%7C0f96522046fe4320209108d581
>>>>d35c0b%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636557667183559337&
>>>>sdata=rRzLd0%2FtbGWoT2H6WtaVSYIXLxElBY2W7GyNw56dBS8%3D&reserved=0>%7C1b
>>>>eda9d1dc67
>>>> 
>>>>430b02e608d580210ddc%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C63655
>>>>58
>>>> 
>>>>01839809628&sdata=EzOsLPee70lr9OpwikrUz9KqGXkWxDo98P6o%2BPGEBK4%3D&rese
>>>>rv
>>>> ed=0>*
>

Reply via email to