<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>64861</bug_id>
          
          <creation_ts>2011-07-20 04:18:16 -0700</creation_ts>
          <short_desc>Implement :dir() pseudo class</short_desc>
          <delta_ts>2023-05-23 04:53:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.chromium.org/p/chromium/issues/detail?id=576815</see_also>
          <bug_file_loc>https://drafts.csswg.org/selectors-4/#the-dir-pseudo</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>243090</dependson>
    
    <dependson>243093</dependson>
    
    <dependson>243130</dependson>
    
    <dependson>244076</dependson>
    
    <dependson>244439</dependson>
    
    <dependson>244441</dependson>
    
    <dependson>244446</dependson>
    
    <dependson>244447</dependson>
    
    <dependson>244574</dependson>
    
    <dependson>244663</dependson>
    
    <dependson>244703</dependson>
          <blocked>159753</blocked>
    
    <blocked>257133</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Aharon (Vladimir) Lanin">aharon</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bjonesbe</cc>
    
    <cc>chrisjshull</cc>
    
    <cc>eric</cc>
    
    <cc>gullerya</cc>
    
    <cc>gwhitworth</cc>
    
    <cc>hyatt</cc>
    
    <cc>ishida</cc>
    
    <cc>koivisto</cc>
    
    <cc>manian</cc>
    
    <cc>mightyiampresence</cc>
    
    <cc>mitz</cc>
    
    <cc>playmobil</cc>
    
    <cc>ramya.v</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>sukolsak</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit</cc>
    
    <cc>westbrook.johnson</cc>
    
    <cc>xji</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>439734</commentid>
    <comment_count>0</comment_count>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2011-07-20 04:18:16 -0700</bug_when>
    <thetext>Selectors Level 4 (http://dev.w3.org/csswg/selectors4/#dir-pseudo) specifies the :dir() pseudo-class (:dir(ltr) and :dir(rtl)), which allows the author to write selectors that represent an element based on its HTML5 directionality (see http://dev.w3.org/html5/spec/Overview.html#the-directionality). This is a very useful capability for bidi support, even in implementing WebKit-based browsers&apos; own controls (e.g. see http://code.google.com/p/chromium/issues/detail?id=87045).

Note: this capability was originally proposed as :ltr and :rtl. This was eventually changed to the :dir(ltr|rtl) syntax.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703072</commentid>
    <comment_count>1</comment_count>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2012-08-23 09:25:06 -0700</bug_when>
    <thetext>FYI, Mozilla has implemented this. See https://bugzilla.mozilla.org/show_bug.cgi?id=562169.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823879</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-03 14:02:47 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; Selectors Level 4 (http://dev.w3.org/csswg/selectors4/#dir-pseudo) specifies the :dir() pseudo-class (:dir(ltr) and :dir(rtl)), which allows the author to write selectors that represent an element based on its HTML5 directionality (see http://dev.w3.org/html5/spec/Overview.html#the-directionality).

What happens if you added a style rule like:
:dir(ltr) {
    direction: rtl;
}
?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824298</commentid>
    <comment_count>3</comment_count>
    <who name="Aharon (Vladimir) Lanin">aharon</who>
    <bug_when>2013-02-04 06:07:06 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #0)
&gt; &gt; Selectors Level 4 (http://dev.w3.org/csswg/selectors4/#dir-pseudo) specifies the :dir() pseudo-class (:dir(ltr) and :dir(rtl)), which allows the author to write selectors that represent an element based on its HTML5 directionality (see http://dev.w3.org/html5/spec/Overview.html#the-directionality).
&gt; 
&gt; What happens if you added a style rule like:
&gt; :dir(ltr) {
&gt;     direction: rtl;
&gt; }
&gt; ?

Nothing special. :dir() is not affected by the element&apos;s direction style. It works off its HTML directionality (1), which is independent of CSS.

(1) http://www.w3.org/html/wg/drafts/html/master/dom.html#the-directionality</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053262</commentid>
    <comment_count>4</comment_count>
      <attachid>242777</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2014-12-07 18:24:25 -0800</bug_when>
    <thetext>Created attachment 242777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053390</commentid>
    <comment_count>5</comment_count>
      <attachid>242815</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2014-12-08 08:50:12 -0800</bug_when>
    <thetext>Created attachment 242815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053543</commentid>
    <comment_count>6</comment_count>
      <attachid>242815</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-12-08 15:05:33 -0800</bug_when>
    <thetext>Comment on attachment 242815
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=242815&amp;action=review

First round is promising.

The code looks correct but it is hard to tell if everything is covered because the testing is still a bit basic.

I would like to see much heavier testing. The pseudo class :dir() has one of the most complex definition of any pseudo-class we support, we should test the hell out of it.

&gt; Source/WebCore/ChangeLog:9
&gt; +        http://dev.w3.org/csswg/selectors4/#the-dir-pseudo

I would also mention 
    https://html.spec.whatwg.org/multipage/dom.html#the-directionality
for the definition of directionality.

&gt; Source/WebCore/css/SelectorCheckerTestFunctions.h:124
&gt; +inline bool matchesDirPseudoClass(const Element* element, const AtomicString&amp; direction)

I don&apos;t think we want to use this function from the JIT. SelectorCheckerTestFunctions.h is only for functions that are shared between SelectorChecker and the CSS JIT.

In the CSS JIT, we should be able to call element-&gt;computeInheritedDirectionality(), and compare the value to what wee expect, LTR/RTL.

&gt; Source/WebCore/dom/Element.cpp:2270
&gt; +TextDirection Element::computeInheritedDirectionality() const

This function should make JITing really easy.

&gt; Source/WebCore/dom/Element.cpp:2274
&gt; +        if (is&lt;HTMLElement&gt;(*node)) {

This is suspicious. Why are you restricting the directionality to HTMLElements?

https://html.spec.whatwg.org/multipage/dom.html#the-directionality says &quot;The directionality of an element (any element, not just an HTML element) is either &apos;ltr&apos; or &apos;rtl&apos;&quot;, so I would assume :dir() should work with SVG elements if their ancestor defines a direction.

&gt; Source/WebCore/dom/Element.cpp:2282
&gt; +            TextDirection directionalityIfAuto = element.directionalityIfhasDirAutoAttribute(isAuto);

I am not sure that is good enough to match the spec.

The spec restricts the directionality to Text, Search, Telephone, URL, or E-mail. It looks to me like HTMLElement::directionality() has no such restriction (&lt;input type=button&gt; would work).
This may be a bug in HTMLElement::directionality().

&gt; Source/WebCore/dom/Element.cpp:2285
&gt; +            if (is&lt;HTMLInputElement&gt;(element) &amp;&amp; equalIgnoringCase(element.fastGetAttribute(typeAttr), &quot;tel&quot;))

Instead of &quot;equalIgnoringCase(element.fastGetAttribute(typeAttr), &quot;tel&quot;)&quot;, you can use downcast&lt;HTMLInputElement&gt;(element)-&gt;isTelephoneField(), which is the computed internal input type of the HTMLInputElement.

&gt; LayoutTests/ChangeLog:13
&gt; +        * fast/selectors/dir-inheritance-expected.html: Added.
&gt; +        * fast/selectors/dir-inheritance.html: Added.

I would like to also see -style-sharing and -style-update type tests.

I am not saying it is incorrect, but that is very frequent cause or problem. Better having it tested upfront.

I actually suspect style update is not working correctly.

&gt; LayoutTests/fast/selectors/dir-basics-expected.html:7
&gt; +#rtl p, #rtl bdi, #rtl input, #rtl textarea { background: green }

You can use :matches() to simplify selectors. For example
#rtl :matches(p, bdi, input, textarea) { ... }

&gt; LayoutTests/fast/selectors/dir-basics.html:11
&gt; +&lt;body&gt;

It is good to have a little description in your test page. That way you can run the test manually in your browser and understand what is tested here and what is expected from the test.

&gt; LayoutTests/fast/selectors/dir-inheritance.html:11
&gt; +&lt;div dir=&quot;rtl&quot;&gt;

I would also test ltr.

More importantly, I would look into complex inheritance. Multiple level, each overwriting the previous, cases with bdi, etc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074779</commentid>
    <comment_count>7</comment_count>
      <attachid>248025</attachid>
    <who name="Sylvain Galineau">galineau</who>
    <bug_when>2015-03-05 17:50:17 -0800</bug_when>
    <thetext>Created attachment 248025
Work in progress

A first pass; aims to conform to the specs [1][2]

Major caveats:
- No tests yet
- We now have directionality code in both Element and HTMLElement; will attempt to refactor the latter out once this works correctly.

[1] http://dev.w3.org/csswg/selectors-4/#the-dir-pseudo
[2] https://html.spec.whatwg.org/multipage/dom.html#the-directionality</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075063</commentid>
    <comment_count>8</comment_count>
      <attachid>248025</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-03-06 12:40:05 -0800</bug_when>
    <thetext>Comment on attachment 248025
Work in progress

View in context: https://bugs.webkit.org/attachment.cgi?id=248025&amp;action=review

Quick review

&gt; Source/WebCore/css/CSSSelector.cpp:339
&gt;  bool CSSSelector::operator==(const CSSSelector&amp; other) const

Missing blank line between the methods.

&gt; Source/WebCore/css/SelectorChecker.cpp:58
&gt; + #include &quot;TextDirection.h&quot;

Extra space before the #

&gt; Source/WebCore/css/SelectorChecker.cpp:1012
&gt;          // FIXME: Implement :dir() selector.

Don&apos;t forget to remove the comment. :)

&gt; Source/WebCore/css/SelectorChecker.cpp:1014
&gt; +            {

This bracket should be on the previous line.

&gt; Source/WebCore/css/SelectorChecker.cpp:1018
&gt; +                if (!CSSSelector::parseDirection(selector-&gt;argument(), dir)) {
&gt; +                    return false;
&gt; +                }

The WebKit coding style is against brackets for single conditional statements.

&gt; Source/WebCore/css/SelectorChecker.cpp:1019
&gt; +                return (element-&gt;computeInheritedDirection() == dir);

No need for the parenthesis here.

&gt; Source/WebCore/dom/Element.cpp:2424
&gt; +    return LTR; // Must ASSERT we don&apos;t get here

ASSERT_NOT_REACHED()

&gt; Source/WebCore/dom/Element.h:384
&gt; +    enum DirAttributeState { DirLTR, DirRTL, DirAuto, DirUnknown };
&gt; +    DirAttributeState dir() const;
&gt; +    TextDirection computeInheritedDirection() const;

For the enum, you can use a enum class.

Shouldn&apos;t dir() be private?

Maybe it is personal taste, but I am not a big fan of the abbreviated &quot;dir&quot;.

Maybe?:
    enum class SelfDirectionality { LTR, RTL, Auto, Unknown }
    selfDirectionality()
    computeInheritedDirectionality();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075281</commentid>
    <comment_count>9</comment_count>
      <attachid>248159</attachid>
    <who name="Sylvain Galineau">galineau</who>
    <bug_when>2015-03-07 10:53:04 -0800</bug_when>
    <thetext>Created attachment 248159
Updated WIP

All stylistic fixes applied. A few comments below.

&gt;&gt; Source/WebCore/css/SelectorChecker.cpp:1014
&gt;&gt; +            {

&gt;This bracket should be on the previous line.
I matched the style of all the other case statements in the function e.g. PseudoClassLang, PseudoClassScope...; do they all need fixing?


&gt;&gt; Source/WebCore/dom/Element.cpp:2424
&gt;&gt; +    return LTR; // Must ASSERT we don&apos;t get here

&gt;ASSERT_NOT_REACHED()
This was worth trying because it does get reached. Will look into this more...Commented out for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075282</commentid>
    <comment_count>10</comment_count>
      <attachid>248160</attachid>
    <who name="Sylvain Galineau">galineau</who>
    <bug_when>2015-03-07 10:54:20 -0800</bug_when>
    <thetext>Created attachment 248160
Simple static test

A very basic static test file to check the core logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075289</commentid>
    <comment_count>11</comment_count>
      <attachid>248164</attachid>
    <who name="Sylvain Galineau">galineau</who>
    <bug_when>2015-03-07 11:13:09 -0800</bug_when>
    <thetext>Created attachment 248164
Updated WIP

Updating WIP to fix bug uncovered by ASSERT_NOT_REACHED().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075310</commentid>
    <comment_count>12</comment_count>
      <attachid>248164</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-07 16:55:56 -0800</bug_when>
    <thetext>Comment on attachment 248164
Updated WIP

View in context: https://bugs.webkit.org/attachment.cgi?id=248164&amp;action=review

&gt; Source/WebCore/css/CSSSelector.cpp:332
&gt; +    if (equalIgnoringCase(name, &quot;rtl&quot;)) {

else if?  name can&apos;t match both &quot;ltr&quot; and &quot;rtl&quot;, right?

&gt; Source/WebCore/dom/Element.cpp:2426
&gt; +bool Element::evalContentDirectionality(TextDirection&amp; direction) const {

How is this algorithm different from HTMLElement::directionality?
It seems like we should at least try to share some code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075478</commentid>
    <comment_count>13</comment_count>
      <attachid>248164</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-03-08 17:04:13 -0700</bug_when>
    <thetext>Comment on attachment 248164
Updated WIP

View in context: https://bugs.webkit.org/attachment.cgi?id=248164&amp;action=review

Review: second round.

I suggest you add some tests for the next round. That way we can also discuss the test cases.

This feature is gonna be fun.

&gt; Source/WebCore/ChangeLog:7
&gt; +

Let&apos;s add links to the relevant specs:
-http://dev.w3.org/csswg/selectors-4/#the-dir-pseudo
-https://html.spec.whatwg.org/multipage/scripting.html#selectors
-https://html.spec.whatwg.org/multipage/dom.html#the-directionality

&gt;&gt; Source/WebCore/css/CSSSelector.cpp:332
&gt;&gt; +    if (equalIgnoringCase(name, &quot;rtl&quot;)) {
&gt; 
&gt; else if?  name can&apos;t match both &quot;ltr&quot; and &quot;rtl&quot;, right?

Right, or just early return in each branch and &quot;valid&quot; can go away.

&gt; Source/WebCore/css/CSSSelector.h:216
&gt; +        static bool parseDirection(const String&amp;, TextDirection&amp; dir);

Note that the argument is an AtomicString. You are forcing a conversion by using String here.

I would explore an alternate design here:
1) Define an enumeration with the possible direction:
    enum class SelectorDirectionality {
        Invalid,
        RTL,
        LTR
    }
2) Have a instance method that assert() on the pseudo class type and return the parsed argument as SelectorDirectionality.

&gt; Source/WebCore/dom/Element.cpp:2387
&gt; +    SelfDirectionality d = selfDirectionality();

Do not abbreviate variable names:
    d -&gt; selfDirectionality
    td -&gt; textDirection

&gt; Source/WebCore/dom/Element.cpp:2407
&gt; +        if (d == SelfDirectionality::DirUnknown &amp;&amp; input.isTelephoneField())
&gt; +            return LTR;
&gt; +        if (d == SelfDirectionality::DirAuto &amp;&amp;
&gt; +            (input.isTextField() ||
&gt; +             input.isSearchField() ||
&gt; +             input.isTelephoneField() ||
&gt; +             input.isURLField() ||
&gt; +             input.isEmailField())) {
&gt; +            if (evalContentDirectionality(td))
&gt; +                return td;

It is inelegant that Element needs to know so much about HTMLInputElement and HTMLTextAreaElement.

Could we delegate that to those types somehow?

&gt; Source/WebCore/dom/Element.cpp:2414
&gt; +    } else if (d == SelfDirectionality::DirAuto || (d == SelfDirectionality::DirUnknown &amp;&amp; equalIgnoringCase(nodeName(), &quot;bdi&quot;))) {

equalIgnoringCase(nodeName(), &quot;bdi&quot;)) could match a bdi element in an other namespace.

This should probably be hasTagName(dirTag)

&gt; Source/WebCore/dom/Element.cpp:2417
&gt; +        if (evalContentDirectionality(td)) {
&gt; +            return td;
&gt; +        }

No need for brackets for single line conditional statements.

&gt; Source/WebCore/dom/Element.cpp:2421
&gt; +    if (parentElement())
&gt; +        return parentElement()-&gt;computeInheritedDirectionality();

Should be:
    if (Element* parentElement = this-&gt;parentElement())
        return parentElement-&gt;computeInheritedDirectionality();
otherwise we rely on the compiler&apos;s CSE to remove the duplicated computation.

&gt;&gt; Source/WebCore/dom/Element.cpp:2426
&gt;&gt; +bool Element::evalContentDirectionality(TextDirection&amp; direction) const {
&gt; 
&gt; How is this algorithm different from HTMLElement::directionality?
&gt; It seems like we should at least try to share some code.

It indeed looks like this could be unified with HTMLElement::directionality().

Looks to me that HTMLElement::directionality() is buggy when checking for the &quot;bdi&quot; element</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075488</commentid>
    <comment_count>14</comment_count>
      <attachid>248222</attachid>
    <who name="Sylvain Galineau">galineau</who>
    <bug_when>2015-03-08 18:13:21 -0700</bug_when>
    <thetext>Created attachment 248222
Work In Progress

&gt; I suggest you add some tests for the next round. That way we can also discuss the test cases.
Yes. I will try to get to this later this week,

I made all suggested changes. Comments/questions on those not yet below.


&gt;&gt; Source/WebCore/css/CSSSelector.h:216
&gt;&gt; +        static bool parseDirection(const String&amp;, TextDirection&amp; dir);

&gt; Note that the argument is an AtomicString. You are forcing a conversion by using String here.

&gt; I would explore an alternate design here:
&gt; 1) Define an enumeration with the possible direction:
&gt;     enum class SelectorDirectionality {
&gt;         Invalid,
&gt;         RTL,
&gt;         LTR
&gt;     }
&gt; 2) Have a instance method that assert() on the pseudo class type and return the parsed argument as
&gt; SelectorDirectionality.

That would work; the idea was to some a simple == comparison in SelectorChecker.cpp using an enum that cause Element to depend on CSSSelector or vice-versa. FWIW I tried to add an Invalid state to TextDirection but that results in a number of switch/cases missing a branch in cases where it wouldn&apos;t happen. Still, I agree this can and should be improved. 

&gt;&gt; Source/WebCore/dom/Element.cpp:2387
&gt;&gt; +    SelfDirectionality d = selfDirectionality();

&gt; Do not abbreviate variable names:
&gt;     d -&gt; selfDirectionality

Note: that is also a method name so I just went for directionality.

&gt;&gt; Source/WebCore/dom/Element.cpp:2407
&gt;&gt; +        if (d == SelfDirectionality::DirUnknown &amp;&amp; input.isTelephoneField())
&gt;&gt; +            return LTR;
&gt;&gt; +        if (d == SelfDirectionality::DirAuto &amp;&amp;
&gt;&gt; +            (input.isTextField() ||
&gt;&gt; +             input.isSearchField() ||
[snip]

&gt; It is inelegant that Element needs to know so much about HTMLInputElement and HTMLTextAreaElement.

Yes; HTMLElement&apos;s directionality logic does this but it certainly looks way more awkward up here.

&gt; Could we delegate that to those types somehow?

I did consider this could be virtual with Element handling the general case. I wasn&apos;t sure on the first attempt whether things would be checked in the right order this way. I&apos;d like to make sure the logic is solid before trying to break it across multiple objects. 


&gt; It indeed looks like this could be unified with HTMLElement::directionality().

Yes; I do not think there should be two.


&gt; Looks to me that HTMLElement::directionality() is buggy when checking for the &quot;bdi&quot; element

I think so too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089803</commentid>
    <comment_count>15</comment_count>
      <attachid>251902</attachid>
    <who name="Sylvain Galineau">galineau</who>
    <bug_when>2015-04-28 17:48:14 -0700</bug_when>
    <thetext>Created attachment 251902
Work In Progress

Update previous patch.

Main change: 
- Address feedback from previous code review.
- Delegate directionality evaluation to proper subclasses of Element.
- Fix some bugs in the previous version.

Next:
- Invalidation
- Tests, tests, tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163995</commentid>
    <comment_count>16</comment_count>
    <who name="Ramya">ramya.v</who>
    <bug_when>2016-02-11 19:41:42 -0800</bug_when>
    <thetext>May I know when can this feature be up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239931</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-10-13 13:25:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/28761567&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610026</commentid>
    <comment_count>18</comment_count>
    <who name="Yuri Guller">gullerya</who>
    <bug_when>2020-01-23 02:34:48 -0800</bug_when>
    <thetext>Any chance to urge the implementation of this or raise it&apos;s priority?
In the thread below I&apos;ve layed out some issue that may be solved here and otherwise kinda stacked: https://stackoverflow.com/questions/59876111/css-pseudo-dir-host-context-and-directionality-based-styling

In essence: given :dir() is not implemented and :host-context() is not going to be implemented (in WebKit only) - there is no CSS based way to style contents of shadow DOM based on the directionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629589</commentid>
    <comment_count>19</comment_count>
    <who name="Westbrook">westbrook.johnson</who>
    <bug_when>2020-03-13 06:22:19 -0700</bug_when>
    <thetext>+1

I can&apos;t see a star or like option in the UI, so my apologies if this is improper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1630145</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-14 23:55:41 -0700</bug_when>
    <thetext>(In reply to Yuri Guller from comment #18)
&gt; In essence: given :dir() is not implemented and :host-context() is not going
&gt; to be implemented (in WebKit only)

Note that while Gecko does support :dir, Gecko has no plan or has not implemented :host-context. In fact, :host-context is likely going to be removed from the spec soon since there are no independent multiple implementations of this feature.

Having said that, I don&apos;t think there is any reason why we don&apos;t want to support :dir, and all your feedback that this is an important feature for web components is noted. I&apos;ll go talk with my colleagues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709918</commentid>
    <comment_count>21</comment_count>
    <who name="Greg Whitworth">gwhitworth</who>
    <bug_when>2020-11-23 10:34:02 -0800</bug_when>
    <thetext>@Ryosuke Niwa 

Likewise, we would really like to move off our synthetic shadow polyfill and this is one aspect we&apos;ll need in order to accomplish it. So if this can be prioritized we would greatly appreciate it so we can use native shadow DOM on our core platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709929</commentid>
    <comment_count>22</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-11-23 12:08:35 -0800</bug_when>
    <thetext>(In reply to Greg Whitworth from comment #21)
&gt; @Ryosuke Niwa 
&gt; 
&gt; Likewise, we would really like to move off our synthetic shadow polyfill and
&gt; this is one aspect we&apos;ll need in order to accomplish it. So if this can be
&gt; prioritized we would greatly appreciate it so we can use native shadow DOM
&gt; on our core platform.

For that purpose, we need to first resolve: https://github.com/whatwg/html/issues/3699</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736316</commentid>
    <comment_count>23</comment_count>
    <who name="Westbrook">westbrook.johnson</who>
    <bug_when>2021-03-05 05:52:47 -0800</bug_when>
    <thetext>Ryosuke, as per your comment here: https://github.com/whatwg/html/issues/3699#issuecomment-603345811 and Blink&apos;s flip to &quot;fixed&quot; here: https://bugs.chromium.org/p/chromium/issues/detail?id=576815#c30 are you able to share any information on when we might be able to see this added to Webkit?

Thanks in advance!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736722</commentid>
    <comment_count>24</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-03-05 19:45:01 -0800</bug_when>
    <thetext>(In reply to Westbrook from comment #23)
&gt; Ryosuke, as per your comment here:
&gt; https://github.com/whatwg/html/issues/3699#issuecomment-603345811 and
&gt; Blink&apos;s flip to &quot;fixed&quot; here:
&gt; https://bugs.chromium.org/p/chromium/issues/detail?id=576815#c30 are you
&gt; able to share any information on when we might be able to see this added to
&gt; Webkit?

I don&apos;t understand what Chromium implemented given the relevant CSS spec hasn&apos;t even been updated yet. I guess I&apos;m gonna ask about it in https://github.com/whatwg/html/issues/3699</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1882381</commentid>
    <comment_count>25</comment_count>
    <who name="r12a">ishida</who>
    <bug_when>2022-07-12 06:42:11 -0700</bug_when>
    <thetext>Any movement on this?

This bug report is currently being tracked by the W3C at https://github.com/w3c/alreq/issues/256.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1895828</commentid>
    <comment_count>26</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-09-02 11:39:45 -0700</bug_when>
    <thetext>This is feature complete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1895937</commentid>
    <comment_count>27</comment_count>
    <who name="Shahar Or">mightyiampresence</who>
    <bug_when>2022-09-02 17:23:42 -0700</bug_when>
    <thetext>Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1896465</commentid>
    <comment_count>28</comment_count>
    <who name="r12a">ishida</who>
    <bug_when>2022-09-06 03:38:56 -0700</bug_when>
    <thetext>+1</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242777</attachid>
            <date>2014-12-07 18:24:25 -0800</date>
            <delta_ts>2014-12-08 08:50:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64861-20141207182503.patch</filename>
            <type>text/plain</type>
            <size>15045</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NjkzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE0LTEyLTA3ICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ21haWwuY29tPgorCisgICAgICAgIE5lZWQgc3VwcG9y
dCBmb3IgOmRpcigpIHBzZXVkby1jbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjQ4NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgOmRpcigpIHBzZXVkby1jbGFzcy4KKworICAgICAg
ICBUZXN0czogZmFzdC9zZWxlY3RvcnMvZGlyLWJhc2ljcy5odG1sCisgICAgICAgICAgICAgICBm
YXN0L3NlbGVjdG9ycy9kaXItZHluYW1pYy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NlbGVj
dG9ycy9kaXItaW5oZXJpdGFuY2UuaHRtbAorCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKToKKyAg
ICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oOgorICAgICAgICAoV2Vi
Q29yZTo6bWF0Y2hlc0RpclBzZXVkb0NsYXNzKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpjb21wdXRlSW5oZXJpdGVkRGlyZWN0aW9uYWxp
dHkpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisKIDIwMTQtMTItMDcgIEd3YW5nIFlvb24g
SHdhbmcgIDx5b29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1RleHR1cmVNYXBwZXJdIE5vcm1h
bGl6ZSBwYXR0ZXJuIHRyYW5zZm9ybSBmb3IgcGF0dGVybiBjb21wb3NpdGluZwpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAJKHJldmlzaW9uIDE3NjkzMykKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDAxLDkgKzEwMDEsOCBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUoY29uc3QgQ2hl
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SU19M
RVZFTDQpCi0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgOmRpcigpIHNlbGVjdG9yLgogICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0RpcjoKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBtYXRjaGVzRGlyUHNldWRvQ2xhc3MoZWxlbWVu
dCwgc2VsZWN0b3ItPmFyZ3VtZW50KCkpOwogCiAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
OnJvbGUoKSBzZWxlY3Rvci4KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NS
b2xlOgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlv
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyVGVz
dEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAxNzY5MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNiArMTIx
LDE1IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc1dpbmRvd0luYWN0aXZlKGNvbnMKIH0KIAogI2lm
IEVOQUJMRShDU1NfU0VMRUNUT1JTX0xFVkVMNCkKK2lubGluZSBib29sIG1hdGNoZXNEaXJQc2V1
ZG9DbGFzcyhjb25zdCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGRpcmVj
dGlvbikKK3sKKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbmFsaXR5ID0gZWxlbWVudC0+Y29t
cHV0ZUluaGVyaXRlZERpcmVjdGlvbmFsaXR5KCk7CisgICAgaWYgKGRpcmVjdGlvbmFsaXR5ID09
IExUUikKKyAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKGRpcmVjdGlvbiwgImx0ciIp
OworICAgIEFTU0VSVChkaXJlY3Rpb25hbGl0eSA9PSBSVEwpOworICAgIHJldHVybiBlcXVhbEln
bm9yaW5nQ2FzZShkaXJlY3Rpb24sICJydGwiKTsKK30KKwogaW5saW5lIGJvb2wgY29udGFpbnNs
YW5ndWFnZVN1YnRhZ01hdGNoaW5nUmFuZ2UoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhbmd1YWdl
U3VidGFncywgY29uc3QgU3RyaW5nJiByYW5nZSwgc2l6ZV90JiBwb3NpdGlvbikKIHsKICAgICBm
b3IgKHNpemVfdCBsYW5ndWFnZVN1YnRhZ0luZGV4ID0gcG9zaXRpb247IGxhbmd1YWdlU3VidGFn
SW5kZXggPCBsYW5ndWFnZVN1YnRhZ3Muc2l6ZSgpOyArK2xhbmd1YWdlU3VidGFnSW5kZXgpIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDE3NjkzMykKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI2Niw2ICsyMjY2LDI3
IEBAIFJlZ2lvbk92ZXJzZXRTdGF0ZSBFbGVtZW50OjpyZWdpb25PdmVyc2UKICAgICByZXR1cm4g
aGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5yZWdpb25PdmVyc2V0U3RhdGUoKSA6
IFJlZ2lvblVuZGVmaW5lZDsKIH0KIAorVGV4dERpcmVjdGlvbiBFbGVtZW50Ojpjb21wdXRlSW5o
ZXJpdGVkRGlyZWN0aW9uYWxpdHkoKSBjb25zdAoreworICAgIGZvciAoY29uc3QgTm9kZSogbm9k
ZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgaWYg
KCFpczxIVE1MRWxlbWVudD4oKm5vZGUpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpub2Rl
KTsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBkaXJlY3Rpb24gPSBlbGVtZW50LmZhc3RH
ZXRBdHRyaWJ1dGUoZGlyQXR0cik7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXJl
Y3Rpb24sICJsdHIiKSkKKyAgICAgICAgICAgIHJldHVybiBMVFI7CisgICAgICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShkaXJlY3Rpb24sICJydGwiKSkKKyAgICAgICAgICAgIHJldHVybiBSVEw7
CisgICAgICAgIGJvb2wgaXNBdXRvOworICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbmFs
aXR5SWZBdXRvID0gZWxlbWVudC5kaXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShp
c0F1dG8pOworICAgICAgICBpZiAoaXNBdXRvKQorICAgICAgICAgICAgcmV0dXJuIGRpcmVjdGlv
bmFsaXR5SWZBdXRvOworICAgICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkg
JiYgZXF1YWxJZ25vcmluZ0Nhc2UoZWxlbWVudC5mYXN0R2V0QXR0cmlidXRlKHR5cGVBdHRyKSwg
InRlbCIpKQorICAgICAgICAgICAgcmV0dXJuIExUUjsKKyAgICB9CisgICAgcmV0dXJuIExUUjsK
K30KKwogQXRvbWljU3RyaW5nIEVsZW1lbnQ6OmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpIGNv
bnN0CiB7CiAgICAgaWYgKGNvbnN0IEVsZW1lbnREYXRhKiBlbGVtZW50RGF0YSA9IHRoaXMtPmVs
ZW1lbnREYXRhKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMTc2OTMzKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzc0LDYg
KzM3NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlZ2lvbk92ZXJzZXRTdGF0ZShSZWdpb25P
dmVyc2V0U3RhdGUpOwogICAgIFJlZ2lvbk92ZXJzZXRTdGF0ZSByZWdpb25PdmVyc2V0U3RhdGUo
KSBjb25zdDsKIAorICAgIFRleHREaXJlY3Rpb24gY29tcHV0ZUluaGVyaXRlZERpcmVjdGlvbmFs
aXR5KCkgY29uc3Q7CisKICAgICBBdG9taWNTdHJpbmcgY29tcHV0ZUluaGVyaXRlZExhbmd1YWdl
KCkgY29uc3Q7CiAgICAgTG9jYWxlJiBsb2NhbGUoKSBjb25zdDsKIApJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMTc2OTMzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTQtMTItMDcgIFN1a29sc2FrIFNha3NodXdvbmcgIDxzdWtvbHNha0Bn
bWFpbC5jb20+CisKKyAgICAgICAgTmVlZCBzdXBwb3J0IGZvciA6ZGlyKCkgcHNldWRvLWNsYXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDg2MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9z
ZWxlY3RvcnMvZGlyLWJhc2ljcy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3NlbGVjdG9ycy9kaXItYmFzaWNzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2VsZWN0
b3JzL2Rpci1keW5hbWljLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Vs
ZWN0b3JzL2Rpci1keW5hbWljLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2VsZWN0b3Jz
L2Rpci1pbmhlcml0YW5jZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Nl
bGVjdG9ycy9kaXItaW5oZXJpdGFuY2UuaHRtbDogQWRkZWQuCisKIDIwMTQtMTItMDcgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBbU291cF1b
Q3VybF0gSFRUUCBoZWFkZXIgdmFsdWVzIHNob3VsZCBiZSB0cmVhdGVkIGFzIGxhdGluMSwgbm90
IFVURi04CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9kaXItYmFzaWNzLWV4cGVj
dGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvZGlyLWJh
c2ljcy1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9zZWxl
Y3RvcnMvZGlyLWJhc2ljcy1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzx0aXRsZT4nOmRpcigpJzogYmFzaWMgbWF0Y2hpbmc8L3RpdGxlPgorPHN0eWxlPgor
I3J0bCBwLCAjcnRsIGJkaSwgI3J0bCBpbnB1dCwgI3J0bCB0ZXh0YXJlYSB7IGJhY2tncm91bmQ6
IGdyZWVuIH0KKyNsdHIgcCwgI2x0ciBiZGksICNsdHIgaW5wdXQsICNsdHIgdGV4dGFyZWEgeyBi
YWNrZ3JvdW5kOiBncmF5IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InJ0
bCI+CisgICAgPHAgZGlyPSJydGwiPlRoaXMgbGluZSBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tn
cm91bmQuPC9wPgorICAgIDxwIGRpcj0iUnRMIj5UaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmVl
biBiYWNrZ3JvdW5kLjwvcD4KKyAgICA8cCBkaXI9ImF1dG8iPtep15zXldedISBUaGlzIGxpbmUg
c2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kLjwvcD4KKyAgICA8cCBkaXI9InJ0bCIgc3R5
bGU9ImRpcmVjdGlvbjogbHRyIj5UaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3Jv
dW5kLjwvcD4KKyAgICA8ZGl2PjxiZGk+16nXnNeV150hIFRoaXMgbGluZSBzaG91bGQgaGF2ZSBh
IGdyZWVuIGJhY2tncm91bmQuPC9iZGk+PC9kaXY+CisgICAgPGRpdj48aW5wdXQgdHlwZT0idGV4
dCIgZGlyPSJhdXRvIiB2YWx1ZT0i16nXnNeV150hIFRoaXMgbGluZSBzaG91bGQgaGF2ZSBhIGdy
ZWVuIGJhY2tncm91bmQuIiBzaXplPSI4MCI+PC9kaXY+CisgICAgPGRpdj48dGV4dGFyZWEgZGly
PSJhdXRvIj7Xqdec15XXnSEgVGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3Vu
ZC48L3RleHRhcmVhPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGlkPSJsdHIiPgorICAgIDxwPtep15zX
ldedISBUaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmF5IGJhY2tncm91bmQuPC9wPgorICAgIDxw
IGRpcj0ibHRyIj5UaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmF5IGJhY2tncm91bmQuPC9wPgor
ICAgIDxwIGRpcj0iTHRSIj5UaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmF5IGJhY2tncm91bmQu
PC9wPgorICAgIDxwIGRpcj0iYXV0byI+VGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JheSBiYWNr
Z3JvdW5kLiDXqdec15XXnSE8L3A+CisgICAgPHAgZGlyPSIiPlRoaXMgbGluZSBzaG91bGQgaGF2
ZSBhIGdyYXkgYmFja2dyb3VuZC48L3A+CisgICAgPHAgZGlyPSJ4Ij5UaGlzIGxpbmUgc2hvdWxk
IGhhdmUgYSBncmF5IGJhY2tncm91bmQuPC9wPgorICAgIDxwIGRpcj0iIHJ0bCAiPlRoaXMgbGlu
ZSBzaG91bGQgaGF2ZSBhIGdyYXkgYmFja2dyb3VuZC48L3A+CisgICAgPHAgc3R5bGU9ImRpcmVj
dGlvbjogcnRsIj5UaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmF5IGJhY2tncm91bmQuPC9wPgor
ICAgIDxkaXY+PGJkaT5UaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmF5IGJhY2tncm91bmQuPC9i
ZGk+PC9kaXY+CisgICAgPGRpdj48aW5wdXQgdHlwZT0idGV4dCIgdmFsdWU9Itep15zXldedISBU
aGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmF5IGJhY2tncm91bmQuIiBzaXplPSI4MCI+PC9kaXY+
CisgICAgPGRpdj48dGV4dGFyZWE+16nXnNeV150hIFRoaXMgbGluZSBzaG91bGQgaGF2ZSBhIGdy
YXkgYmFja2dyb3VuZC48L3RleHRhcmVhPjwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9kaXItYmFzaWNzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvZGlyLWJhc2ljcy5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvZGlyLWJhc2ljcy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT4nOmRpcigpJzogYmFzaWMgbWF0
Y2hpbmc8L3RpdGxlPgorPHN0eWxlPgorcDpkaXIocnRsKSwgYmRpOmRpcihSdEwpLCBpbnB1dDpk
aXIoUlRMICksIHRleHRhcmVhOmRpciggclRsICkgeyBiYWNrZ3JvdW5kOiBncmVlbiB9CitwOmRp
cihsdHIpLCBiZGk6ZGlyKEx0UiksIGlucHV0OmRpcihMVFIgKSwgdGV4dGFyZWE6ZGlyKCBsVHIg
KSB7IGJhY2tncm91bmQ6IGdyYXkgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj4K
KyAgICA8cCBkaXI9InJ0bCI+VGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3Vu
ZC48L3A+CisgICAgPHAgZGlyPSJSdEwiPlRoaXMgbGluZSBzaG91bGQgaGF2ZSBhIGdyZWVuIGJh
Y2tncm91bmQuPC9wPgorICAgIDxwIGRpcj0iYXV0byI+16nXnNeV150hIFRoaXMgbGluZSBzaG91
bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC9wPgorICAgIDxwIGRpcj0icnRsIiBzdHlsZT0i
ZGlyZWN0aW9uOiBsdHIiPlRoaXMgbGluZSBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQu
PC9wPgorICAgIDxkaXY+PGJkaT7Xqdec15XXnSEgVGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3Jl
ZW4gYmFja2dyb3VuZC48L2JkaT48L2Rpdj4KKyAgICA8ZGl2PjxpbnB1dCB0eXBlPSJ0ZXh0IiBk
aXI9ImF1dG8iIHZhbHVlPSLXqdec15XXnSEgVGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JlZW4g
YmFja2dyb3VuZC4iIHNpemU9IjgwIj48L2Rpdj4KKyAgICA8ZGl2Pjx0ZXh0YXJlYSBkaXI9ImF1
dG8iPtep15zXldedISBUaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kLjwv
dGV4dGFyZWE+PC9kaXY+Cis8L2Rpdj4KKzxkaXY+CisgICAgPHA+16nXnNeV150hIFRoaXMgbGlu
ZSBzaG91bGQgaGF2ZSBhIGdyYXkgYmFja2dyb3VuZC48L3A+CisgICAgPHAgZGlyPSJsdHIiPlRo
aXMgbGluZSBzaG91bGQgaGF2ZSBhIGdyYXkgYmFja2dyb3VuZC48L3A+CisgICAgPHAgZGlyPSJM
dFIiPlRoaXMgbGluZSBzaG91bGQgaGF2ZSBhIGdyYXkgYmFja2dyb3VuZC48L3A+CisgICAgPHAg
ZGlyPSJhdXRvIj5UaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmF5IGJhY2tncm91bmQuINep15zX
ldedITwvcD4KKyAgICA8cCBkaXI9IiI+VGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JheSBiYWNr
Z3JvdW5kLjwvcD4KKyAgICA8cCBkaXI9IngiPlRoaXMgbGluZSBzaG91bGQgaGF2ZSBhIGdyYXkg
YmFja2dyb3VuZC48L3A+CisgICAgPHAgZGlyPSIgcnRsICI+VGhpcyBsaW5lIHNob3VsZCBoYXZl
IGEgZ3JheSBiYWNrZ3JvdW5kLjwvcD4KKyAgICA8cCBzdHlsZT0iZGlyZWN0aW9uOiBydGwiPlRo
aXMgbGluZSBzaG91bGQgaGF2ZSBhIGdyYXkgYmFja2dyb3VuZC48L3A+CisgICAgPGRpdj48YmRp
PlRoaXMgbGluZSBzaG91bGQgaGF2ZSBhIGdyYXkgYmFja2dyb3VuZC48L2JkaT48L2Rpdj4KKyAg
ICA8ZGl2PjxpbnB1dCB0eXBlPSJ0ZXh0IiB2YWx1ZT0i16nXnNeV150hIFRoaXMgbGluZSBzaG91
bGQgaGF2ZSBhIGdyYXkgYmFja2dyb3VuZC4iIHNpemU9IjgwIj48L2Rpdj4KKyAgICA8ZGl2Pjx0
ZXh0YXJlYT7Xqdec15XXnSEgVGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JheSBiYWNrZ3JvdW5k
LjwvdGV4dGFyZWE+PC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL2Rpci1keW5hbWljLWV4cGVjdGVkLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvZGlyLWR5bmFtaWMtZXhwZWN0ZWQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL2Rpci1keW5hbWlj
LWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPic6
ZGlyKCknOiBkeW5hbWljIGNoYW5nZXMgYXJlIHNlZW48L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2PgorPHAgaWQ9InRhcmdldDEiIGRpcj0icnRsIiBzdHlsZT0iYmFja2dyb3VuZDogZ3Jl
ZW4iPlRoaXMgbGluZSBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC9wPgorPHAgaWQ9
InRhcmdldDIiIGRpcj0iYXV0byIgc3R5bGU9ImJhY2tncm91bmQ6IGdyZWVuIj7Xqdec15XXnSEg
VGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+Cis8ZGl2PjxpbnB1
dCBpZD0idGFyZ2V0MyIgdHlwZT0idGV4dCIgZGlyPSJhdXRvIiBzdHlsZT0iYmFja2dyb3VuZDog
Z3JlZW4iIHZhbHVlPSLXqdec15XXnSEgVGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFj
a2dyb3VuZC4iIHNpemU9IjgwIj48L2Rpdj4KKzxkaXY+PHRleHRhcmVhIGlkPSJ0YXJnZXQ0IiBk
aXI9ImF1dG8iIHN0eWxlPSJiYWNrZ3JvdW5kOiBncmVlbiI+16nXnNeV150hIFRoaXMgbGluZSBz
aG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC90ZXh0YXJlYT48L2Rpdj4KKzxwIGlkPSJ0
YXJnZXQ1Ij5UaGlzIGxpbmUgc2hvdWxkIE5PVCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+
Cis8cCBpZD0idGFyZ2V0NiI+VGhpcyBsaW5lIHNob3VsZCBOT1QgaGF2ZSBhIGdyZWVuIGJhY2tn
cm91bmQuPC9wPgorPHAgaWQ9InRhcmdldDciPlRoaXMgbGluZSBzaG91bGQgTk9UIGhhdmUgYSBn
cmVlbiBiYWNrZ3JvdW5kLjwvcD4KKzxwIGlkPSJ0YXJnZXQ4Ij5IZWxsbyEg16nXnNeV150hIFRo
aXMgbGluZSBzaG91bGQgTk9UIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kLjwvcD4KKzxkaXY+PGlu
cHV0IGlkPSJ0YXJnZXQ5IiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iSGVsbG8hINep15zXldedISBUaGlz
IGxpbmUgc2hvdWxkIE5PVCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC4iIHNpemU9IjgwIj48L2Rp
dj4KKzwvZGl2PgorPC9odG1sPgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zZWxl
Y3RvcnMvZGlyLWR5bmFtaWMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Nl
bGVjdG9ycy9kaXItZHluYW1pYy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9zZWxlY3RvcnMvZGlyLWR5bmFtaWMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8dGl0bGU+JzpkaXIoKSc6IGR5bmFtaWMgY2hhbmdlcyBhcmUgc2VlbjwvdGl0bGU+Cis8
c3R5bGU+CitwOmRpcihydGwpLCBpbnB1dDpkaXIocnRsKSwgdGV4dGFyZWE6ZGlyKHJ0bCkgeyBi
YWNrZ3JvdW5kOiBncmVlbjsgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj4KKzxw
IGlkPSJ0YXJnZXQxIj5UaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kLjwv
cD4KKzxwIGlkPSJ0YXJnZXQyIiBkaXI9ImF1dG8iPlRoaXMgbGluZSBzaG91bGQgaGF2ZSBhIGdy
ZWVuIGJhY2tncm91bmQuPC9wPgorPGRpdj48aW5wdXQgaWQ9InRhcmdldDMiIHR5cGU9InRleHQi
IGRpcj0iYXV0byIgdmFsdWU9IlRoaXMgbGluZSBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91
bmQuIiBzaXplPSI4MCI+PC9kaXY+Cis8ZGl2Pjx0ZXh0YXJlYSBpZD0idGFyZ2V0NCIgZGlyPSJh
dXRvIj5UaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kLjwvdGV4dGFyZWE+
PC9kaXY+Cis8cCBpZD0idGFyZ2V0NSIgZGlyPSJydGwiPlRoaXMgbGluZSBzaG91bGQgTk9UIGhh
dmUgYSBncmVlbiBiYWNrZ3JvdW5kLjwvcD4KKzxwIGlkPSJ0YXJnZXQ2IiBkaXI9InJ0bCI+VGhp
cyBsaW5lIHNob3VsZCBOT1QgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC9wPgorPHAgaWQ9InRh
cmdldDciIGRpcj0icnRsIj5UaGlzIGxpbmUgc2hvdWxkIE5PVCBoYXZlIGEgZ3JlZW4gYmFja2dy
b3VuZC48L3A+Cis8cCBpZD0idGFyZ2V0OCIgZGlyPSJhdXRvIj7Xqdec15XXnSEgVGhpcyBsaW5l
IHNob3VsZCBOT1QgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC9wPgorPGRpdj48aW5wdXQgaWQ9
InRhcmdldDkiIHR5cGU9InRleHQiIGRpcj0iYXV0byIgdmFsdWU9Itep15zXldedISBUaGlzIGxp
bmUgc2hvdWxkIE5PVCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC4iIHNpemU9IjgwIj48L2Rpdj4K
KzwvZGl2PgorPHNjcmlwdD4KK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQxJykuZGly
ID0gInJ0bCI7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0MicpLmlubmVyVGV4dCA9
ICLXqdec15XXnSEgIiArIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQyJykuaW5uZXJU
ZXh0OworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldDMnKS52YWx1ZSA9ICLXqdec15XX
nSEgIiArIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQzJykudmFsdWU7Citkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0NCcpLnZhbHVlID0gItep15zXldedISAiICsgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldDQnKS52YWx1ZTsKK2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd0YXJnZXQ1JykuZGlyID0gImx0ciI7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFy
Z2V0NicpLnJlbW92ZUF0dHJpYnV0ZSgnZGlyJyk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dGFyZ2V0NycpLmRpciA9ICIiOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldDgnKS5p
bm5lclRleHQgPSAiSGVsbG8hICIgKyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0OCcp
LmlubmVyVGV4dDsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQ5JykudmFsdWUgPSAi
SGVsbG8hICIgKyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0OScpLnZhbHVlOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9y
cy9kaXItaW5oZXJpdGFuY2UtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3NlbGVjdG9ycy9kaXItaW5oZXJpdGFuY2UtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL2Rpci1pbmhlcml0YW5jZS1leHBlY3Rl
ZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT4nOmRpcigpJzog
aW5oZXJpdCBESVIgZnJvbSBwYXJlbnQgZWxlbWVudDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgZGlyPSJydGwiPgorICAgIDxwIHN0eWxlPSJiYWNrZ3JvdW5kOiBncmVlbiI+VGhpcyBs
aW5lIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+CisgICAgPHAgZGlyPSJ4IiBz
dHlsZT0iYmFja2dyb3VuZDogZ3JlZW4iPlRoaXMgbGluZSBzaG91bGQgaGF2ZSBhIGdyZWVuIGJh
Y2tncm91bmQuPC9wPgorICAgIDxwIGRpcj0ibHRyIj5UaGlzIGxpbmUgc2hvdWxkIE5PVCBoYXZl
IGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+CisgICAgPHAgZGlyPSJhdXRvIj5UaGlzIGxpbmUgc2hv
dWxkIE5PVCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+CisgICAgPGRpdj48YmRpPlRoaXMg
bGluZSBzaG91bGQgTk9UIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kLjwvYmRpPjwvZGl2PgorICAg
IDxkaXY+PGlucHV0IHR5cGU9InRleHQiIHN0eWxlPSJiYWNrZ3JvdW5kOiBncmVlbiIgdmFsdWU9
IlRoaXMgbGluZSBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuIiBzaXplPSI4MCI+PC9k
aXY+CisgICAgPGRpdj48aW5wdXQgdHlwZT0idGVsIiB2YWx1ZT0iVGhpcyBsaW5lIHNob3VsZCBO
T1QgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuIiBzaXplPSI4MCI+PC9kaXY+Cis8L2Rpdj4KKzxk
aXYgZGlyPSJhdXRvIj4KKyAgICA8c3Bhbj7Xqdec15XXnSE8L3NwYW4+CisgICAgPHAgc3R5bGU9
ImJhY2tncm91bmQ6IGdyZWVuIj5UaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3Jv
dW5kLjwvcD4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9zZWxlY3RvcnMvZGlyLWluaGVyaXRhbmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9zZWxlY3RvcnMvZGlyLWluaGVyaXRhbmNlLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9kaXItaW5oZXJpdGFuY2UuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+JzpkaXIoKSc6IGluaGVyaXQgRElSIGZyb20g
cGFyZW50IGVsZW1lbnQ8L3RpdGxlPgorPHN0eWxlPgorcDpkaXIocnRsKSwgYmRpOmRpcihydGwp
LCBpbnB1dDpkaXIocnRsKSB7IGJhY2tncm91bmQ6IGdyZWVuIH0KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXYgZGlyPSJydGwiPgorICAgIDxwPlRoaXMgbGluZSBzaG91bGQgaGF2ZSBh
IGdyZWVuIGJhY2tncm91bmQuPC9wPgorICAgIDxwIGRpcj0ieCI+VGhpcyBsaW5lIHNob3VsZCBo
YXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+CisgICAgPHAgZGlyPSJsdHIiPlRoaXMgbGluZSBz
aG91bGQgTk9UIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kLjwvcD4KKyAgICA8cCBkaXI9ImF1dG8i
PlRoaXMgbGluZSBzaG91bGQgTk9UIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kLjwvcD4KKyAgICA8
ZGl2PjxiZGk+VGhpcyBsaW5lIHNob3VsZCBOT1QgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC9i
ZGk+PC9kaXY+CisgICAgPGRpdj48aW5wdXQgdHlwZT0idGV4dCIgdmFsdWU9IlRoaXMgbGluZSBz
aG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuIiBzaXplPSI4MCI+PC9kaXY+CisgICAgPGRp
dj48aW5wdXQgdHlwZT0idGVsIiB2YWx1ZT0iVGhpcyBsaW5lIHNob3VsZCBOT1QgaGF2ZSBhIGdy
ZWVuIGJhY2tncm91bmQuIiBzaXplPSI4MCI+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgZGlyPSJhdXRv
Ij4KKyAgICA8c3Bhbj7Xqdec15XXnSE8L3NwYW4+CisgICAgPHA+VGhpcyBsaW5lIHNob3VsZCBo
YXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242815</attachid>
            <date>2014-12-08 08:50:12 -0800</date>
            <delta_ts>2014-12-08 15:05:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64861-20141208085050.patch</filename>
            <type>text/plain</type>
            <size>15254</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3Njk0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE0LTEyLTA4ICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ21haWwuY29tPgorCisgICAgICAgIE5lZWQgc3VwcG9y
dCBmb3IgOmRpcigpIHBzZXVkby1jbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjQ4NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgOmRpcigpIHBzZXVkby1jbGFzcyBhcyBkZWZpbmVk
IGluCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL3NlbGVjdG9yczQvI3RoZS1kaXIt
cHNldWRvCisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2VsZWN0b3JzL2Rpci1iYXNpY3MuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9zZWxlY3RvcnMvZGlyLWR5bmFtaWMuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9zZWxlY3RvcnMvZGlyLWluaGVyaXRhbmNlLmh0bWwKKworICAgICAgICAqIGNz
cy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2Vy
OjpjaGVja09uZSk6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMu
aDoKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoZXNEaXJQc2V1ZG9DbGFzcyk6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y29tcHV0ZUluaGVy
aXRlZERpcmVjdGlvbmFsaXR5KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorCiAyMDE0LTEy
LTA4ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6
IGlPUzogVm9pY2VPdmVyIGdldHMgaHVuZyBvbiBzb21lIHdlYnNpdGVzIGNvbnNpc3RlbnRseS4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCShyZXZpc2lvbiAxNzY5
MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAwMSw5ICsxMDAxLDggQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25l
KGNvbnN0IENoZQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgRU5BQkxFKENTU19T
RUxFQ1RPUlNfTEVWRUw0KQotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IDpkaXIoKSBzZWxl
Y3Rvci4KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEaXI6Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gbWF0Y2hlc0RpclBzZXVkb0Ns
YXNzKGVsZW1lbnQsIHNlbGVjdG9yLT5hcmd1bWVudCgpKTsKIAogICAgICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IDpyb2xlKCkgc2VsZWN0b3IuCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzUm9sZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJU
ZXN0RnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9y
Q2hlY2tlclRlc3RGdW5jdGlvbnMuaAkocmV2aXNpb24gMTc2OTMzKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTIxLDYgKzEyMSwxNSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNXaW5kb3dJbmFjdGl2ZShjb25z
CiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SU19MRVZFTDQpCitpbmxpbmUgYm9vbCBtYXRj
aGVzRGlyUHNldWRvQ2xhc3MoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBkaXJlY3Rpb24pCit7CisgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb25hbGl0eSA9IGVs
ZW1lbnQtPmNvbXB1dGVJbmhlcml0ZWREaXJlY3Rpb25hbGl0eSgpOworICAgIGlmIChkaXJlY3Rp
b25hbGl0eSA9PSBMVFIpCisgICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShkaXJlY3Rp
b24sICJsdHIiKTsKKyAgICBBU1NFUlQoZGlyZWN0aW9uYWxpdHkgPT0gUlRMKTsKKyAgICByZXR1
cm4gZXF1YWxJZ25vcmluZ0Nhc2UoZGlyZWN0aW9uLCAicnRsIik7Cit9CisKIGlubGluZSBib29s
IGNvbnRhaW5zbGFuZ3VhZ2VTdWJ0YWdNYXRjaGluZ1JhbmdlKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBsYW5ndWFnZVN1YnRhZ3MsIGNvbnN0IFN0cmluZyYgcmFuZ2UsIHNpemVfdCYgcG9zaXRpb24p
CiB7CiAgICAgZm9yIChzaXplX3QgbGFuZ3VhZ2VTdWJ0YWdJbmRleCA9IHBvc2l0aW9uOyBsYW5n
dWFnZVN1YnRhZ0luZGV4IDwgbGFuZ3VhZ2VTdWJ0YWdzLnNpemUoKTsgKytsYW5ndWFnZVN1YnRh
Z0luZGV4KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNzY5MzMpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNjYs
NiArMjI2NiwzMSBAQCBSZWdpb25PdmVyc2V0U3RhdGUgRWxlbWVudDo6cmVnaW9uT3ZlcnNlCiAg
ICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+cmVnaW9uT3ZlcnNl
dFN0YXRlKCkgOiBSZWdpb25VbmRlZmluZWQ7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9S
U19MRVZFTDQpCitUZXh0RGlyZWN0aW9uIEVsZW1lbnQ6OmNvbXB1dGVJbmhlcml0ZWREaXJlY3Rp
b25hbGl0eSgpIGNvbnN0Cit7CisgICAgY29uc3QgTm9kZSogbm9kZSA9IHRoaXM7CisgICAgZG8g
eworICAgICAgICBpZiAoaXM8SFRNTEVsZW1lbnQ+KCpub2RlKSkgeworICAgICAgICAgICAgY29u
c3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4oKm5vZGUpOwor
ICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBkaXJlY3Rpb24gPSBlbGVtZW50LmZhc3RH
ZXRBdHRyaWJ1dGUoZGlyQXR0cik7CisgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
ZGlyZWN0aW9uLCAibHRyIikpCisgICAgICAgICAgICAgICAgcmV0dXJuIExUUjsKKyAgICAgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXJlY3Rpb24sICJydGwiKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gUlRMOworICAgICAgICAgICAgYm9vbCBpc0F1dG87CisgICAgICAgICAgICBU
ZXh0RGlyZWN0aW9uIGRpcmVjdGlvbmFsaXR5SWZBdXRvID0gZWxlbWVudC5kaXJlY3Rpb25hbGl0
eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShpc0F1dG8pOworICAgICAgICAgICAgaWYgKGlzQXV0bykK
KyAgICAgICAgICAgICAgICByZXR1cm4gZGlyZWN0aW9uYWxpdHlJZkF1dG87CisgICAgICAgICAg
ICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkgJiYgZXF1YWxJZ25vcmluZ0Nhc2Uo
ZWxlbWVudC5mYXN0R2V0QXR0cmlidXRlKHR5cGVBdHRyKSwgInRlbCIpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBMVFI7CisgICAgICAgIH0KKyAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5v
ZGUoKTsKKyAgICB9IHdoaWxlIChub2RlKTsKKyAgICByZXR1cm4gTFRSOworfQorI2VuZGlmCisK
IEF0b21pY1N0cmluZyBFbGVtZW50Ojpjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdAog
ewogICAgIGlmIChjb25zdCBFbGVtZW50RGF0YSogZWxlbWVudERhdGEgPSB0aGlzLT5lbGVtZW50
RGF0YSgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlzaW9uIDE3NjkzMykKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3NCw2ICszNzQs
MTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVnaW9uT3ZlcnNldFN0YXRlKFJlZ2lvbk92ZXJz
ZXRTdGF0ZSk7CiAgICAgUmVnaW9uT3ZlcnNldFN0YXRlIHJlZ2lvbk92ZXJzZXRTdGF0ZSgpIGNv
bnN0OwogCisjaWYgRU5BQkxFKENTU19TRUxFQ1RPUlNfTEVWRUw0KQorICAgIFRleHREaXJlY3Rp
b24gY29tcHV0ZUluaGVyaXRlZERpcmVjdGlvbmFsaXR5KCkgY29uc3Q7CisjZW5kaWYKKwogICAg
IEF0b21pY1N0cmluZyBjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdDsKICAgICBMb2Nh
bGUmIGxvY2FsZSgpIGNvbnN0OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzY5NDgpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0x
Mi0wOCAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdtYWlsLmNvbT4KKworICAgICAg
ICBOZWVkIHN1cHBvcnQgZm9yIDpkaXIoKSBwc2V1ZG8tY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0ODYxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3NlbGVjdG9ycy9kaXItYmFzaWNz
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2VsZWN0b3JzL2Rpci1iYXNp
Y3MuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zZWxlY3RvcnMvZGlyLWR5bmFtaWMtZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zZWxlY3RvcnMvZGlyLWR5bmFtaWMu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zZWxlY3RvcnMvZGlyLWluaGVyaXRhbmNlLWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2VsZWN0b3JzL2Rpci1pbmhlcml0
YW5jZS5odG1sOiBBZGRlZC4KKwogMjAxNC0xMi0wNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5m
YWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIFtTb3VwXVtDdXJsXSBIVFRQIGhlYWRlciB2
YWx1ZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgbGF0aW4xLCBub3QgVVRGLTgKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL2Rpci1iYXNpY3MtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9kaXItYmFzaWNzLWV4cGVjdGVkLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9kaXItYmFzaWNzLWV4
cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPic6ZGly
KCknOiBiYXNpYyBtYXRjaGluZzwvdGl0bGU+Cis8c3R5bGU+CisjcnRsIHAsICNydGwgYmRpLCAj
cnRsIGlucHV0LCAjcnRsIHRleHRhcmVhIHsgYmFja2dyb3VuZDogZ3JlZW4gfQorI2x0ciBwLCAj
bHRyIGJkaSwgI2x0ciBpbnB1dCwgI2x0ciB0ZXh0YXJlYSB7IGJhY2tncm91bmQ6IGdyYXkgfQor
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0icnRsIj4KKyAgICA8cCBkaXI9InJ0
bCI+VGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+CisgICAgPHAg
ZGlyPSJSdEwiPlRoaXMgbGluZSBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC9wPgor
ICAgIDxwIGRpcj0iYXV0byI+16nXnNeV150hIFRoaXMgbGluZSBzaG91bGQgaGF2ZSBhIGdyZWVu
IGJhY2tncm91bmQuPC9wPgorICAgIDxwIGRpcj0icnRsIiBzdHlsZT0iZGlyZWN0aW9uOiBsdHIi
PlRoaXMgbGluZSBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC9wPgorICAgIDxkaXY+
PGJkaT7Xqdec15XXnSEgVGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48
L2JkaT48L2Rpdj4KKyAgICA8ZGl2PjxpbnB1dCB0eXBlPSJ0ZXh0IiBkaXI9ImF1dG8iIHZhbHVl
PSLXqdec15XXnSEgVGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC4iIHNp
emU9IjgwIj48L2Rpdj4KKyAgICA8ZGl2Pjx0ZXh0YXJlYSBkaXI9ImF1dG8iPtep15zXldedISBU
aGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kLjwvdGV4dGFyZWE+PC9kaXY+
Cis8L2Rpdj4KKzxkaXYgaWQ9Imx0ciI+CisgICAgPHA+16nXnNeV150hIFRoaXMgbGluZSBzaG91
bGQgaGF2ZSBhIGdyYXkgYmFja2dyb3VuZC48L3A+CisgICAgPHAgZGlyPSJsdHIiPlRoaXMgbGlu
ZSBzaG91bGQgaGF2ZSBhIGdyYXkgYmFja2dyb3VuZC48L3A+CisgICAgPHAgZGlyPSJMdFIiPlRo
aXMgbGluZSBzaG91bGQgaGF2ZSBhIGdyYXkgYmFja2dyb3VuZC48L3A+CisgICAgPHAgZGlyPSJh
dXRvIj5UaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmF5IGJhY2tncm91bmQuINep15zXldedITwv
cD4KKyAgICA8cCBkaXI9IiI+VGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JheSBiYWNrZ3JvdW5k
LjwvcD4KKyAgICA8cCBkaXI9IngiPlRoaXMgbGluZSBzaG91bGQgaGF2ZSBhIGdyYXkgYmFja2dy
b3VuZC48L3A+CisgICAgPHAgZGlyPSIgcnRsICI+VGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3Jh
eSBiYWNrZ3JvdW5kLjwvcD4KKyAgICA8cCBzdHlsZT0iZGlyZWN0aW9uOiBydGwiPlRoaXMgbGlu
ZSBzaG91bGQgaGF2ZSBhIGdyYXkgYmFja2dyb3VuZC48L3A+CisgICAgPGRpdj48YmRpPlRoaXMg
bGluZSBzaG91bGQgaGF2ZSBhIGdyYXkgYmFja2dyb3VuZC48L2JkaT48L2Rpdj4KKyAgICA8ZGl2
PjxpbnB1dCB0eXBlPSJ0ZXh0IiB2YWx1ZT0i16nXnNeV150hIFRoaXMgbGluZSBzaG91bGQgaGF2
ZSBhIGdyYXkgYmFja2dyb3VuZC4iIHNpemU9IjgwIj48L2Rpdj4KKyAgICA8ZGl2Pjx0ZXh0YXJl
YT7Xqdec15XXnSEgVGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JheSBiYWNrZ3JvdW5kLjwvdGV4
dGFyZWE+PC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3Qvc2VsZWN0b3JzL2Rpci1iYXNpY3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3NlbGVjdG9ycy9kaXItYmFzaWNzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L3NlbGVjdG9ycy9kaXItYmFzaWNzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHRpdGxlPic6ZGlyKCknOiBiYXNpYyBtYXRjaGluZzwvdGl0bGU+Cis8c3R5
bGU+CitwOmRpcihydGwpLCBiZGk6ZGlyKFJ0TCksIGlucHV0OmRpcihSVEwgKSwgdGV4dGFyZWE6
ZGlyKCByVGwgKSB7IGJhY2tncm91bmQ6IGdyZWVuIH0KK3A6ZGlyKGx0ciksIGJkaTpkaXIoTHRS
KSwgaW5wdXQ6ZGlyKExUUiApLCB0ZXh0YXJlYTpkaXIoIGxUciApIHsgYmFja2dyb3VuZDogZ3Jh
eSB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2PgorICAgIDxwIGRpcj0icnRsIj5U
aGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kLjwvcD4KKyAgICA8cCBkaXI9
IlJ0TCI+VGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+CisgICAg
PHAgZGlyPSJhdXRvIj7Xqdec15XXnSEgVGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFj
a2dyb3VuZC48L3A+CisgICAgPHAgZGlyPSJydGwiIHN0eWxlPSJkaXJlY3Rpb246IGx0ciI+VGhp
cyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+CisgICAgPGRpdj48YmRp
Ptep15zXldedISBUaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kLjwvYmRp
PjwvZGl2PgorICAgIDxkaXY+PGlucHV0IHR5cGU9InRleHQiIGRpcj0iYXV0byIgdmFsdWU9Itep
15zXldedISBUaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kLiIgc2l6ZT0i
ODAiPjwvZGl2PgorICAgIDxkaXY+PHRleHRhcmVhIGRpcj0iYXV0byI+16nXnNeV150hIFRoaXMg
bGluZSBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC90ZXh0YXJlYT48L2Rpdj4KKzwv
ZGl2PgorPGRpdj4KKyAgICA8cD7Xqdec15XXnSEgVGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3Jh
eSBiYWNrZ3JvdW5kLjwvcD4KKyAgICA8cCBkaXI9Imx0ciI+VGhpcyBsaW5lIHNob3VsZCBoYXZl
IGEgZ3JheSBiYWNrZ3JvdW5kLjwvcD4KKyAgICA8cCBkaXI9Ikx0UiI+VGhpcyBsaW5lIHNob3Vs
ZCBoYXZlIGEgZ3JheSBiYWNrZ3JvdW5kLjwvcD4KKyAgICA8cCBkaXI9ImF1dG8iPlRoaXMgbGlu
ZSBzaG91bGQgaGF2ZSBhIGdyYXkgYmFja2dyb3VuZC4g16nXnNeV150hPC9wPgorICAgIDxwIGRp
cj0iIj5UaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmF5IGJhY2tncm91bmQuPC9wPgorICAgIDxw
IGRpcj0ieCI+VGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JheSBiYWNrZ3JvdW5kLjwvcD4KKyAg
ICA8cCBkaXI9IiBydGwgIj5UaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmF5IGJhY2tncm91bmQu
PC9wPgorICAgIDxwIHN0eWxlPSJkaXJlY3Rpb246IHJ0bCI+VGhpcyBsaW5lIHNob3VsZCBoYXZl
IGEgZ3JheSBiYWNrZ3JvdW5kLjwvcD4KKyAgICA8ZGl2PjxiZGk+VGhpcyBsaW5lIHNob3VsZCBo
YXZlIGEgZ3JheSBiYWNrZ3JvdW5kLjwvYmRpPjwvZGl2PgorICAgIDxkaXY+PGlucHV0IHR5cGU9
InRleHQiIHZhbHVlPSLXqdec15XXnSEgVGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JheSBiYWNr
Z3JvdW5kLiIgc2l6ZT0iODAiPjwvZGl2PgorICAgIDxkaXY+PHRleHRhcmVhPtep15zXldedISBU
aGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmF5IGJhY2tncm91bmQuPC90ZXh0YXJlYT48L2Rpdj4K
KzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3Rv
cnMvZGlyLWR5bmFtaWMtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3NlbGVjdG9ycy9kaXItZHluYW1pYy1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvZGlyLWR5bmFtaWMtZXhwZWN0ZWQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+JzpkaXIoKSc6IGR5bmFtaWMgY2hh
bmdlcyBhcmUgc2VlbjwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+Cis8cCBpZD0idGFy
Z2V0MSIgZGlyPSJydGwiIHN0eWxlPSJiYWNrZ3JvdW5kOiBncmVlbiI+VGhpcyBsaW5lIHNob3Vs
ZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+Cis8cCBpZD0idGFyZ2V0MiIgZGlyPSJhdXRv
IiBzdHlsZT0iYmFja2dyb3VuZDogZ3JlZW4iPtep15zXldedISBUaGlzIGxpbmUgc2hvdWxkIGhh
dmUgYSBncmVlbiBiYWNrZ3JvdW5kLjwvcD4KKzxkaXY+PGlucHV0IGlkPSJ0YXJnZXQzIiB0eXBl
PSJ0ZXh0IiBkaXI9ImF1dG8iIHN0eWxlPSJiYWNrZ3JvdW5kOiBncmVlbiIgdmFsdWU9Itep15zX
ldedISBUaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kLiIgc2l6ZT0iODAi
PjwvZGl2PgorPGRpdj48dGV4dGFyZWEgaWQ9InRhcmdldDQiIGRpcj0iYXV0byIgc3R5bGU9ImJh
Y2tncm91bmQ6IGdyZWVuIj7Xqdec15XXnSEgVGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JlZW4g
YmFja2dyb3VuZC48L3RleHRhcmVhPjwvZGl2PgorPHAgaWQ9InRhcmdldDUiPlRoaXMgbGluZSBz
aG91bGQgTk9UIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kLjwvcD4KKzxwIGlkPSJ0YXJnZXQ2Ij5U
aGlzIGxpbmUgc2hvdWxkIE5PVCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+Cis8cCBpZD0i
dGFyZ2V0NyI+VGhpcyBsaW5lIHNob3VsZCBOT1QgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC9w
PgorPHAgaWQ9InRhcmdldDgiPkhlbGxvISDXqdec15XXnSEgVGhpcyBsaW5lIHNob3VsZCBOT1Qg
aGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC9wPgorPGRpdj48aW5wdXQgaWQ9InRhcmdldDkiIHR5
cGU9InRleHQiIHZhbHVlPSJIZWxsbyEg16nXnNeV150hIFRoaXMgbGluZSBzaG91bGQgTk9UIGhh
dmUgYSBncmVlbiBiYWNrZ3JvdW5kLiIgc2l6ZT0iODAiPjwvZGl2PgorPC9kaXY+Cis8L2h0bWw+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9kaXItZHluYW1pYy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL2Rpci1keW5hbWlj
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9kaXItZHlu
YW1pYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT4nOmRpcigp
JzogZHluYW1pYyBjaGFuZ2VzIGFyZSBzZWVuPC90aXRsZT4KKzxzdHlsZT4KK3A6ZGlyKHJ0bCks
IGlucHV0OmRpcihydGwpLCB0ZXh0YXJlYTpkaXIocnRsKSB7IGJhY2tncm91bmQ6IGdyZWVuOyB9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2PgorPHAgaWQ9InRhcmdldDEiPlRoaXMg
bGluZSBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC9wPgorPHAgaWQ9InRhcmdldDIi
IGRpcj0iYXV0byI+VGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+
Cis8ZGl2PjxpbnB1dCBpZD0idGFyZ2V0MyIgdHlwZT0idGV4dCIgZGlyPSJhdXRvIiB2YWx1ZT0i
VGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC4iIHNpemU9IjgwIj48L2Rp
dj4KKzxkaXY+PHRleHRhcmVhIGlkPSJ0YXJnZXQ0IiBkaXI9ImF1dG8iPlRoaXMgbGluZSBzaG91
bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC90ZXh0YXJlYT48L2Rpdj4KKzxwIGlkPSJ0YXJn
ZXQ1IiBkaXI9InJ0bCI+VGhpcyBsaW5lIHNob3VsZCBOT1QgaGF2ZSBhIGdyZWVuIGJhY2tncm91
bmQuPC9wPgorPHAgaWQ9InRhcmdldDYiIGRpcj0icnRsIj5UaGlzIGxpbmUgc2hvdWxkIE5PVCBo
YXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+Cis8cCBpZD0idGFyZ2V0NyIgZGlyPSJydGwiPlRo
aXMgbGluZSBzaG91bGQgTk9UIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5kLjwvcD4KKzxwIGlkPSJ0
YXJnZXQ4IiBkaXI9ImF1dG8iPtep15zXldedISBUaGlzIGxpbmUgc2hvdWxkIE5PVCBoYXZlIGEg
Z3JlZW4gYmFja2dyb3VuZC48L3A+Cis8ZGl2PjxpbnB1dCBpZD0idGFyZ2V0OSIgdHlwZT0idGV4
dCIgZGlyPSJhdXRvIiB2YWx1ZT0i16nXnNeV150hIFRoaXMgbGluZSBzaG91bGQgTk9UIGhhdmUg
YSBncmVlbiBiYWNrZ3JvdW5kLiIgc2l6ZT0iODAiPjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0Pgor
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldDEnKS5kaXIgPSAicnRsIjsKK2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQyJykuaW5uZXJUZXh0ID0gItep15zXldedISAiICsgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldDInKS5pbm5lclRleHQ7Citkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndGFyZ2V0MycpLnZhbHVlID0gItep15zXldedISAiICsgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3RhcmdldDMnKS52YWx1ZTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0
YXJnZXQ0JykudmFsdWUgPSAi16nXnNeV150hICIgKyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dGFyZ2V0NCcpLnZhbHVlOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldDUnKS5kaXIg
PSAibHRyIjsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQ2JykucmVtb3ZlQXR0cmli
dXRlKCdkaXInKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQ3JykuZGlyID0gIiI7
Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0OCcpLmlubmVyVGV4dCA9ICJIZWxsbyEg
IiArIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQ4JykuaW5uZXJUZXh0OworZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldDknKS52YWx1ZSA9ICJIZWxsbyEgIiArIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQ5JykudmFsdWU7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL2Rpci1pbmhlcml0YW5jZS1l
eHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL2Rp
ci1pbmhlcml0YW5jZS1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9zZWxlY3RvcnMvZGlyLWluaGVyaXRhbmNlLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1l
dGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPic6ZGlyKCknOiBpbmhlcml0IERJUiBmcm9tIHBh
cmVudCBlbGVtZW50PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBkaXI9InJ0bCI+Cisg
ICAgPHAgc3R5bGU9ImJhY2tncm91bmQ6IGdyZWVuIj5UaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBn
cmVlbiBiYWNrZ3JvdW5kLjwvcD4KKyAgICA8cCBkaXI9IngiIHN0eWxlPSJiYWNrZ3JvdW5kOiBn
cmVlbiI+VGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L3A+CisgICAg
PHAgZGlyPSJsdHIiPlRoaXMgbGluZSBzaG91bGQgTk9UIGhhdmUgYSBncmVlbiBiYWNrZ3JvdW5k
LjwvcD4KKyAgICA8cCBkaXI9ImF1dG8iPlRoaXMgbGluZSBzaG91bGQgTk9UIGhhdmUgYSBncmVl
biBiYWNrZ3JvdW5kLjwvcD4KKyAgICA8ZGl2PjxiZGk+VGhpcyBsaW5lIHNob3VsZCBOT1QgaGF2
ZSBhIGdyZWVuIGJhY2tncm91bmQuPC9iZGk+PC9kaXY+CisgICAgPGRpdj48aW5wdXQgdHlwZT0i
dGV4dCIgc3R5bGU9ImJhY2tncm91bmQ6IGdyZWVuIiB2YWx1ZT0iVGhpcyBsaW5lIHNob3VsZCBo
YXZlIGEgZ3JlZW4gYmFja2dyb3VuZC4iIHNpemU9IjgwIj48L2Rpdj4KKyAgICA8ZGl2PjxpbnB1
dCB0eXBlPSJ0ZWwiIHZhbHVlPSJUaGlzIGxpbmUgc2hvdWxkIE5PVCBoYXZlIGEgZ3JlZW4gYmFj
a2dyb3VuZC4iIHNpemU9IjgwIj48L2Rpdj4KKzwvZGl2PgorPGRpdiBkaXI9ImF1dG8iPgorICAg
IDxzcGFuPtep15zXldedITwvc3Bhbj4KKyAgICA8cCBzdHlsZT0iYmFja2dyb3VuZDogZ3JlZW4i
PlRoaXMgbGluZSBzaG91bGQgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC9wPgorPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9kaXItaW5o
ZXJpdGFuY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9k
aXItaW5oZXJpdGFuY2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2Vs
ZWN0b3JzL2Rpci1pbmhlcml0YW5jZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzx0aXRsZT4nOmRpcigpJzogaW5oZXJpdCBESVIgZnJvbSBwYXJlbnQgZWxlbWVudDwvdGl0
bGU+Cis8c3R5bGU+CitwOmRpcihydGwpLCBiZGk6ZGlyKHJ0bCksIGlucHV0OmRpcihydGwpIHsg
YmFja2dyb3VuZDogZ3JlZW4gfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBkaXI9
InJ0bCI+CisgICAgPHA+VGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48
L3A+CisgICAgPHAgZGlyPSJ4Ij5UaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3Jv
dW5kLjwvcD4KKyAgICA8cCBkaXI9Imx0ciI+VGhpcyBsaW5lIHNob3VsZCBOT1QgaGF2ZSBhIGdy
ZWVuIGJhY2tncm91bmQuPC9wPgorICAgIDxwIGRpcj0iYXV0byI+VGhpcyBsaW5lIHNob3VsZCBO
T1QgaGF2ZSBhIGdyZWVuIGJhY2tncm91bmQuPC9wPgorICAgIDxkaXY+PGJkaT5UaGlzIGxpbmUg
c2hvdWxkIE5PVCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC48L2JkaT48L2Rpdj4KKyAgICA8ZGl2
PjxpbnB1dCB0eXBlPSJ0ZXh0IiB2YWx1ZT0iVGhpcyBsaW5lIHNob3VsZCBoYXZlIGEgZ3JlZW4g
YmFja2dyb3VuZC4iIHNpemU9IjgwIj48L2Rpdj4KKyAgICA8ZGl2PjxpbnB1dCB0eXBlPSJ0ZWwi
IHZhbHVlPSJUaGlzIGxpbmUgc2hvdWxkIE5PVCBoYXZlIGEgZ3JlZW4gYmFja2dyb3VuZC4iIHNp
emU9IjgwIj48L2Rpdj4KKzwvZGl2PgorPGRpdiBkaXI9ImF1dG8iPgorICAgIDxzcGFuPtep15zX
ldedITwvc3Bhbj4KKyAgICA8cD5UaGlzIGxpbmUgc2hvdWxkIGhhdmUgYSBncmVlbiBiYWNrZ3Jv
dW5kLjwvcD4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="267682"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248025</attachid>
            <date>2015-03-05 17:50:17 -0800</date>
            <delta_ts>2015-03-07 10:53:04 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>WIP.patch</filename>
            <type>text/plain</type>
            <size>9294</size>
            <attacher name="Sylvain Galineau">galineau</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2NDBjY2Q3Li4xMmNmYTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTUtMDMtMDUgIHN5bHZhaW4tZ2FsaW5lYXUgIDxnYWxpbmVhdUBhZG9iZS5jb20+CisK
KyAgICAgICAgTmVlZCBzdXBwb3J0IGZvciA6ZGlyKCkgcHNldWRvLWNsYXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDg2MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEp
LgorCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1NlbGVjdG9yOjpwYXJzZURpcmVjdGlvbik6IGZvciA6ZGlyIGFyZ3VtZW50CisgICAgICAgICog
Y3NzL0NTU1NlbGVjdG9yLmg6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKTogbWF0Y2hpbmcKKyAg
ICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXIp
OiBjdXJyZW50IGRpciBhdHRyaWJ1dGUgc3RhdGUKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmNvbXB1dGVJbmhlcml0ZWREaXJlY3Rpb24pOiB3aGVyZSBkaXJlY3Rpb25hbGl0eSBpcyBldmFs
dWF0ZWQKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmV2YWxDb250ZW50RGlyZWN0aW9uYWxp
dHkpOiB3aGVyZSB3ZSBmaW5kIG91dCBkaXJlY3Rpb25hbGl0eSBiYXNlZCBvbiB0aGUgZWxlbWVu
dCdzIGNvbnRlbnQKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOiBuZXcgbWV0aG9kcyBhYm92ZQor
CiAyMDE1LTAzLTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbU09VUF0gQ2hlY2sgVExTIGVycm9ycyBhcyBzb29uIGFzIHRoZXkgYXJlIHNl
dCBpbiB0aGUgU291cE1lc3NhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCmluZGV4IDQ3
ZWEwNzEuLmIyMjE3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIlNlbGVjdG9yUHNldWRvVHlwZU1hcC5oIgorI2luY2x1ZGUgIlRleHRE
aXJlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC0zMjAsNyArMzIx
LDIxIEBAIENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50VHlwZSBDU1NTZWxlY3Rvcjo6cGFyc2VQ
c2V1ZG9FbGVtZW50VHlwZShjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHR5cGU7CiB9CiAKLQor
Ym9vbCBDU1NTZWxlY3Rvcjo6cGFyc2VEaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lLCBUZXh0
RGlyZWN0aW9uJiBkaXIpCit7CisgICAgYm9vbCB2YWxpZCA9IGZhbHNlOworICAgIAorICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAibHRyIikpIHsKKyAgICAgICAgdmFsaWQgPSB0cnVl
OworICAgICAgICBkaXIgPSBMVFI7CisgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShu
YW1lLCAicnRsIikpIHsKKyAgICAgICAgdmFsaWQgPSB0cnVlOworICAgICAgICBkaXIgPSBSVEw7
CisgICAgfQorICAgIAorICAgIHJldHVybiB2YWxpZDsKK30KIGJvb2wgQ1NTU2VsZWN0b3I6Om9w
ZXJhdG9yPT0oY29uc3QgQ1NTU2VsZWN0b3ImIG90aGVyKSBjb25zdAogewogICAgIGNvbnN0IENT
U1NlbGVjdG9yKiBzZWwxID0gdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKaW5kZXggYmQy
MzFiNC4uOTI3YTIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTIzLDYgKzIzLDcg
QEAKICNkZWZpbmUgQ1NTU2VsZWN0b3JfaAogCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgor
I2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50
cy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC0yMTEsNiArMjEyLDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHN0YXRpYyBQc2V1ZG9FbGVtZW50VHlwZSBw
YXJzZVBzZXVkb0VsZW1lbnRUeXBlKGNvbnN0IFN0cmluZyYpOwogICAgICAgICBzdGF0aWMgUHNl
dWRvSWQgcHNldWRvSWQoUHNldWRvRWxlbWVudFR5cGUpOworI2lmIEVOQUJMRShDU1NfU0VMRUNU
T1JTX0xFVkVMNCkKKyAgICAgICAgc3RhdGljIGJvb2wgcGFyc2VEaXJlY3Rpb24oY29uc3QgU3Ry
aW5nJiwgVGV4dERpcmVjdGlvbiYgZGlyKTsKKyNlbmRpZgogCiAgICAgICAgIC8vIFNlbGVjdG9y
cyBhcmUga2VwdCBpbiBhbiBhcnJheSBieSBDU1NTZWxlY3Rvckxpc3QuIFRoZSBuZXh0IGNvbXBv
bmVudCBvZiB0aGUgc2VsZWN0b3IgaXMKICAgICAgICAgLy8gdGhlIG5leHQgaXRlbSBpbiB0aGUg
YXJyYXkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDIwODk0YTUu
LmI0Nzc5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC01NSw2
ICs1NSw3IEBACiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlZEVsZW1l
bnQuaCIKICNpbmNsdWRlICJUZXh0LmgiCisgI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDEwLDggKzEwMTEsMTQgQEAgYm9vbCBTZWxlY3Rv
ckNoZWNrZXI6OmNoZWNrT25lKGNvbnN0IENoZWNraW5nQ29udGV4dFdpdGhTdGF0dXMmIGNvbnRl
eHQsIFBzZXVkb0kKICNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SU19MRVZFTDQpCiAgICAgICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgOmRpcigpIHNlbGVjdG9yLgogICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc0RpcjoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIFRleHREaXJlY3Rpb24gZGlyOworICAgICAgICAgICAg
ICAgIGlmICghQ1NTU2VsZWN0b3I6OnBhcnNlRGlyZWN0aW9uKHNlbGVjdG9yLT5hcmd1bWVudCgp
LCBkaXIpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIChlbGVtZW50LT5jb21wdXRlSW5oZXJpdGVk
RGlyZWN0aW9uKCkgPT0gZGlyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IDpyb2xlKCkgc2VsZWN0b3IuCiAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzUm9sZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCA3ZGZlY2JkLi4yOTY2OTQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNp
bmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbi5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTGFi
ZWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAi
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCkBAIC0yMzYzLDYgKzIzNjQsMTExIEBAIExvY2FsZSYg
RWxlbWVudDo6bG9jYWxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5nZXRDYWNo
ZWRMb2NhbGUoY29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkpOwogfQorICAgIAorRWxlbWVudDo6
RGlyQXR0cmlidXRlU3RhdGUgRWxlbWVudDo6ZGlyKCkgY29uc3QKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBsdHJWYWx1ZSgibHRyIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gcnRsVmFsdWUoInJ0bCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGF1dG9WYWx1ZSgiYXV0
byIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUgPSBmYXN0R2V0QXR0cmlidXRlKGRpckF0dHIpOworICAgIAorICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgbHRyVmFsdWUpKQorICAgICAgICByZXR1cm4gRGly
TFRSOworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgcnRsVmFsdWUpKQorICAgICAg
ICByZXR1cm4gRGlyUlRMOworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgYXV0b1Zh
bHVlKSkKKyAgICAgICAgcmV0dXJuIERpckF1dG87CisgICAgcmV0dXJuIERpclVua25vd247Cit9
CisgICAgCitUZXh0RGlyZWN0aW9uIEVsZW1lbnQ6OmNvbXB1dGVJbmhlcml0ZWREaXJlY3Rpb24o
KSBjb25zdAoreworICAgIERpckF0dHJpYnV0ZVN0YXRlIGQgPSBkaXIoKTsKKyAgICBUZXh0RGly
ZWN0aW9uIHRkOworICAgIAorICAgIGlmIChkID09IERpckxUUikKKyAgICAgICAgcmV0dXJuIExU
UjsKKyAgICAKKyAgICBpZiAoZCA9PSBEaXJSVEwpCisgICAgICAgIHJldHVybiBSVEw7CisgICAg
CisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBIVE1MSW5w
dXRFbGVtZW50JiBpbnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8
RWxlbWVudCY+KCp0aGlzKSk7CisgICAgICAgIGlmIChkID09IERpclVua25vd24gJiYgaW5wdXQu
aXNUZWxlcGhvbmVGaWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIExUUjsKKyAgICAgICAgaWYg
KGQgPT0gRGlyQXV0byAmJiAoaW5wdXQuaXNUZXh0RmllbGQoKSB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnB1dC5pc1NlYXJjaEZpZWxkKCkgfHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5wdXQuaXNUZWxlcGhvbmVGaWVsZCgpIHx8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlucHV0LmlzVVJMRmllbGQoKSB8fAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnB1dC5pc0VtYWlsRmllbGQoKSkpIHsKKyAgICAgICAgICAgIGlmIChldmFsQ29u
dGVudERpcmVjdGlvbmFsaXR5KHRkKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGQ7CisgICAg
ICAgICAgICAKKyAgICAgICAgfQorICAgICAgICAKKyAgICB9IGVsc2UgaWYgKGlzPEhUTUxUZXh0
QXJlYUVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBpZiAoZCA9PSBEaXJBdXRvICYmIGV2YWxD
b250ZW50RGlyZWN0aW9uYWxpdHkodGQpKQorICAgICAgICAgICAgcmV0dXJuIHRkOworICAgIH0g
ZWxzZSBpZiAoZCA9PSBEaXJBdXRvIHx8IChkID09IERpclVua25vd24gJiYgZXF1YWxJZ25vcmlu
Z0Nhc2Uobm9kZU5hbWUoKSwgImJkaSIpKSkgeworICAgICAgICBpZiAoZXZhbENvbnRlbnREaXJl
Y3Rpb25hbGl0eSh0ZCkpIHsKKyAgICAgICAgICAgIHJldHVybiB0ZDsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICB9IGVsc2UgaWYgKGQgPT0gRGlyVW5rbm93bikgeworICAgICAgICBpZiAoaXNE
b2N1bWVudE5vZGUoKSkKKyAgICAgICAgICAgIHJldHVybiBMVFI7CisgICAgICAgIGlmIChwYXJl
bnRFbGVtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gcGFyZW50RWxlbWVudCgpLT5jb21wdXRl
SW5oZXJpdGVkRGlyZWN0aW9uKCk7CisgICAgfQorICAgIAorICAgIHJldHVybiBMVFI7IC8vIE11
c3QgQVNTRVJUIHdlIGRvbid0IGdldCBoZXJlCit9CisgICAgCitib29sIEVsZW1lbnQ6OmV2YWxD
b250ZW50RGlyZWN0aW9uYWxpdHkoVGV4dERpcmVjdGlvbiYgZGlyZWN0aW9uKSBjb25zdCB7Cisg
ICAgYm9vbCBmb3VuZERpcmVjdGlvbiA9IGZhbHNlOworICAgIFVDaGFyRGlyZWN0aW9uIGNoYXJE
aXJlY3Rpb247CisgICAgCisgICAgaWYgKGlzPEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pigq
dGhpcykpIHsKKyAgICAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmIHRleHRFbGVtZW50
ID0gZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8RWxlbWVu
dCY+KCp0aGlzKSk7CisgICAgICAgIGJvb2wgaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHk7CisgICAg
ICAgIGNoYXJEaXJlY3Rpb24gPSB0ZXh0RWxlbWVudC52YWx1ZSgpLmRlZmF1bHRXcml0aW5nRGly
ZWN0aW9uKCZoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSk7CisgICAgICAgIGZvdW5kRGlyZWN0aW9u
ID0gdHJ1ZTsKKyAgICB9IGVsc2UgeworICAgICAgICBOb2RlKiBub2RlID0gZmlyc3RDaGlsZCgp
OworICAgICAgICB3aGlsZSAobm9kZSkgeworICAgICAgICAgICAgLy8gU2tpcCBiZGksIHNjcmlw
dCwgc3R5bGUgYW5kIHRleHQgZm9ybSBjb250cm9scy4KKyAgICAgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShub2RlLT5ub2RlTmFtZSgpLCAiYmRpIikgfHwgbm9kZS0+aGFzVGFnTmFtZShz
Y3JpcHRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoc3R5bGVUYWcpCisgICAgICAgICAgICAgICAg
fHwgKGlzPEVsZW1lbnQ+KCpub2RlKSAmJiBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkuaXNUZXh0
Rm9ybUNvbnRyb2woKSkpIHsKKyAgICAgICAgICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6
bmV4dFNraXBwaW5nQ2hpbGRyZW4oKm5vZGUsIHRoaXMpOworICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIC8vIFNraXAgZWxlbWVu
dHMgd2l0aCB2YWxpZCBkaXIgYXR0cmlidXRlCisgICAgICAgICAgICBpZiAoaXM8RWxlbWVudD4o
Km5vZGUpKSB7CisgICAgICAgICAgICAgICAgRWxlbWVudCYgZSA9IGRvd25jYXN0PEVsZW1lbnQ+
KCpub2RlKTsKKyAgICAgICAgICAgICAgICBpZiAoZS5kaXIoKSAhPSBEaXJVbmtub3duKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGls
ZHJlbigqbm9kZSwgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBpZiAobm9k
ZS0+aXNUZXh0Tm9kZSgpKSB7CisgICAgICAgICAgICAgICAgYm9vbCBoYXNTdHJvbmdEaXJlY3Rp
b25hbGl0eTsKKyAgICAgICAgICAgICAgICBjaGFyRGlyZWN0aW9uID0gbm9kZS0+dGV4dENvbnRl
bnQodHJ1ZSkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oJmhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5
KTsKKyAgICAgICAgICAgICAgICBmb3VuZERpcmVjdGlvbiA9IHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSwgdGhpcyk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKGZvdW5kRGlyZWN0aW9uKSB7CisgICAgICAg
IGRpcmVjdGlvbiA9ICAoY2hhckRpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklHSFQpPyBMVFIgOiBS
VEw7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisgICAgCiAKIHZvaWQgRWxlbWVudDo6Y2FuY2VsRm9jdXNBcHBlYXJhbmNlVXBkYXRlKCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCmluZGV4IGY5MTE1YmZkNC4uMzFmNWZjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNs
dWRlICJTaW11bGF0ZWRDbGlja09wdGlvbnMuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVUcmVl
LmgiCisjaW5jbHVkZSAiVGV4dERpcmVjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTM3Nyw2ICszNzgsMTAgQEAgcHVibGljOgogCiAgICAgQXRvbWljU3RyaW5nIGNvbXB1dGVJ
bmhlcml0ZWRMYW5ndWFnZSgpIGNvbnN0OwogICAgIExvY2FsZSYgbG9jYWxlKCkgY29uc3Q7Cisg
ICAgCisgICAgZW51bSBEaXJBdHRyaWJ1dGVTdGF0ZSB7IERpckxUUiwgRGlyUlRMLCBEaXJBdXRv
LCBEaXJVbmtub3duIH07CisgICAgRGlyQXR0cmlidXRlU3RhdGUgZGlyKCkgY29uc3Q7CisgICAg
VGV4dERpcmVjdGlvbiBjb21wdXRlSW5oZXJpdGVkRGlyZWN0aW9uKCkgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgLypzZW5kVG9BbnlFdmVudCovKSB7IH0K
IApAQCAtNjUzLDYgKzY1OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnJlZ2lzdGVyTmFtZWRG
bG93Q29udGVudEVsZW1lbnQoKTsKIAogICAgIHZvaWQgY3JlYXRlVW5pcXVlRWxlbWVudERhdGEo
KTsKKyAgICAKKyAgICBib29sIGV2YWxDb250ZW50RGlyZWN0aW9uYWxpdHkoVGV4dERpcmVjdGlv
biYgZGlyZWN0aW9uKSBjb25zdDsKIAogICAgIEVsZW1lbnRSYXJlRGF0YSogZWxlbWVudFJhcmVE
YXRhKCkgY29uc3Q7CiAgICAgRWxlbWVudFJhcmVEYXRhJiBlbnN1cmVFbGVtZW50UmFyZURhdGEo
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>248159</attachid>
            <date>2015-03-07 10:53:04 -0800</date>
            <delta_ts>2015-03-07 11:13:09 -0800</delta_ts>
            <desc>Updated WIP</desc>
            <filename>WIP-updated.patch</filename>
            <type>application/octet-stream</type>
            <size>9625</size>
            <attacher name="Sylvain Galineau">galineau</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2NDBjY2Q3Li4wMDVjMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTUtMDMtMDcgIHN5bHZhaW4tZ2FsaW5lYXUgIDxnYWxpbmVhdUBhZG9iZS5jb20+CisK
KyAgICAgICAgTmVlZCBzdXBwb3J0IGZvciA6ZGlyKCkgcHNldWRvLWNsYXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDg2MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEp
LgorCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1NlbGVjdG9yOjpwYXJzZURpcmVjdGlvbik6IGZvciA6ZGlyIGFyZ3VtZW50CisgICAgICAgICog
Y3NzL0NTU1NlbGVjdG9yLmg6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKTogbWF0Y2hpbmcKKyAg
ICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXIp
OiBjdXJyZW50IGRpciBhdHRyaWJ1dGUgc3RhdGUKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmNvbXB1dGVJbmhlcml0ZWREaXJlY3Rpb24pOiB3aGVyZSBkaXJlY3Rpb25hbGl0eSBpcyBldmFs
dWF0ZWQKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmV2YWxDb250ZW50RGlyZWN0aW9uYWxp
dHkpOiB3aGVyZSB3ZSBmaW5kIG91dCBkaXJlY3Rpb25hbGl0eSBiYXNlZCBvbiB0aGUgZWxlbWVu
dCdzIGNvbnRlbnQKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOiBuZXcgbWV0aG9kcyBhYm92ZQor
CiAyMDE1LTAzLTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbU09VUF0gQ2hlY2sgVExTIGVycm9ycyBhcyBzb29uIGFzIHRoZXkgYXJlIHNl
dCBpbiB0aGUgU291cE1lc3NhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCmluZGV4IDQ3
ZWEwNzEuLmI4ZjI5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIlNlbGVjdG9yUHNldWRvVHlwZU1hcC5oIgorI2luY2x1ZGUgIlRleHRE
aXJlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC0zMjAsNyArMzIx
LDIyIEBAIENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50VHlwZSBDU1NTZWxlY3Rvcjo6cGFyc2VQ
c2V1ZG9FbGVtZW50VHlwZShjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHR5cGU7CiB9CiAKLQor
Ym9vbCBDU1NTZWxlY3Rvcjo6cGFyc2VEaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lLCBUZXh0
RGlyZWN0aW9uJiBkaXIpCit7CisgICAgYm9vbCB2YWxpZCA9IGZhbHNlOworICAgIAorICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAibHRyIikpIHsKKyAgICAgICAgdmFsaWQgPSB0cnVl
OworICAgICAgICBkaXIgPSBMVFI7CisgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShu
YW1lLCAicnRsIikpIHsKKyAgICAgICAgdmFsaWQgPSB0cnVlOworICAgICAgICBkaXIgPSBSVEw7
CisgICAgfQorICAgIAorICAgIHJldHVybiB2YWxpZDsKK30KKyAgICAKIGJvb2wgQ1NTU2VsZWN0
b3I6Om9wZXJhdG9yPT0oY29uc3QgQ1NTU2VsZWN0b3ImIG90aGVyKSBjb25zdAogewogICAgIGNv
bnN0IENTU1NlbGVjdG9yKiBzZWwxID0gdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKaW5k
ZXggYmQyMzFiNC4uOTI3YTIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTIzLDYg
KzIzLDcgQEAKICNkZWZpbmUgQ1NTU2VsZWN0b3JfaAogCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFt
ZS5oIgorI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNv
bnN0YW50cy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC0yMTEsNiArMjEy
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHN0YXRpYyBQc2V1ZG9FbGVtZW50
VHlwZSBwYXJzZVBzZXVkb0VsZW1lbnRUeXBlKGNvbnN0IFN0cmluZyYpOwogICAgICAgICBzdGF0
aWMgUHNldWRvSWQgcHNldWRvSWQoUHNldWRvRWxlbWVudFR5cGUpOworI2lmIEVOQUJMRShDU1Nf
U0VMRUNUT1JTX0xFVkVMNCkKKyAgICAgICAgc3RhdGljIGJvb2wgcGFyc2VEaXJlY3Rpb24oY29u
c3QgU3RyaW5nJiwgVGV4dERpcmVjdGlvbiYgZGlyKTsKKyNlbmRpZgogCiAgICAgICAgIC8vIFNl
bGVjdG9ycyBhcmUga2VwdCBpbiBhbiBhcnJheSBieSBDU1NTZWxlY3Rvckxpc3QuIFRoZSBuZXh0
IGNvbXBvbmVudCBvZiB0aGUgc2VsZWN0b3IgaXMKICAgICAgICAgLy8gdGhlIG5leHQgaXRlbSBp
biB0aGUgYXJyYXkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVj
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDIw
ODk0YTUuLmI2YjM0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBA
IC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxl
ZEVsZW1lbnQuaCIKICNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSAiVGV4dERpcmVjdGlvbi5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMDgsMTAgKzEwMDksMTUgQEAgYm9vbCBT
ZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKGNvbnN0IENoZWNraW5nQ29udGV4dFdpdGhTdGF0dXMm
IGNvbnRleHQsIFBzZXVkb0kKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIEVOQUJM
RShDU1NfU0VMRUNUT1JTX0xFVkVMNCkKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCA6ZGly
KCkgc2VsZWN0b3IuCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGlyOgot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgVGV4dERpcmVjdGlvbiBkaXI7CisgICAgICAgICAgICAgICAgaWYgKCFDU1NTZWxlY3Rvcjo6
cGFyc2VEaXJlY3Rpb24oc2VsZWN0b3ItPmFyZ3VtZW50KCksIGRpcikpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZWxlbWVudC0+Y29tcHV0ZUluaGVyaXRlZERpcmVjdGlvbmFsaXR5KCkgPT0gZGlyOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
OnJvbGUoKSBzZWxlY3Rvci4KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NS
b2xlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IDdkZmVjYmQuLjE4OGUyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTQ4LDYgKzQ4LDcg
QEAKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRN
TElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxMYWJlbEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MT3B0aW9uc0NvbGxlY3Rpb24u
aCIKQEAgLTIzNjMsNiArMjM2NCwxMTQgQEAgTG9jYWxlJiBFbGVtZW50Ojpsb2NhbGUoKSBjb25z
dAogewogICAgIHJldHVybiBkb2N1bWVudCgpLmdldENhY2hlZExvY2FsZShjb21wdXRlSW5oZXJp
dGVkTGFuZ3VhZ2UoKSk7CiB9CisgICAgCitFbGVtZW50OjpTZWxmRGlyZWN0aW9uYWxpdHkgRWxl
bWVudDo6c2VsZkRpcmVjdGlvbmFsaXR5KCkgY29uc3QKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QXRvbWljU3RyaW5nPiBsdHJWYWx1ZSgibHRyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
cnRsVmFsdWUoInJ0bCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGF1dG9WYWx1ZSgiYXV0byIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUgPSBmYXN0R2V0QXR0cmlidXRlKGRpckF0dHIpOworICAgIAorICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZSh2YWx1ZSwgbHRyVmFsdWUpKQorICAgICAgICByZXR1cm4gU2VsZkRpcmVj
dGlvbmFsaXR5OjpEaXJMVFI7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCBydGxW
YWx1ZSkpCisgICAgICAgIHJldHVybiBTZWxmRGlyZWN0aW9uYWxpdHk6OkRpclJUTDsKKyAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsIGF1dG9WYWx1ZSkpCisgICAgICAgIHJldHVybiBT
ZWxmRGlyZWN0aW9uYWxpdHk6OkRpckF1dG87CisgICAgCisgICAgcmV0dXJuIFNlbGZEaXJlY3Rp
b25hbGl0eTo6RGlyVW5rbm93bjsKK30KKyAgICAKK1RleHREaXJlY3Rpb24gRWxlbWVudDo6Y29t
cHV0ZUluaGVyaXRlZERpcmVjdGlvbmFsaXR5KCkgY29uc3QKK3sKKyAgICBTZWxmRGlyZWN0aW9u
YWxpdHkgZCA9IHNlbGZEaXJlY3Rpb25hbGl0eSgpOworICAgIFRleHREaXJlY3Rpb24gdGQ7Cisg
ICAgCisgICAgaWYgKGQgPT0gU2VsZkRpcmVjdGlvbmFsaXR5OjpEaXJMVFIpCisgICAgICAgIHJl
dHVybiBMVFI7CisgICAgCisgICAgaWYgKGQgPT0gU2VsZkRpcmVjdGlvbmFsaXR5OjpEaXJSVEwp
CisgICAgICAgIHJldHVybiBSVEw7CisgICAgCisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+
KCp0aGlzKSkgeworICAgICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGRvd25jYXN0PEhU
TUxJbnB1dEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8RWxlbWVudCY+KCp0aGlzKSk7CisgICAgICAgIGlm
IChkID09IFNlbGZEaXJlY3Rpb25hbGl0eTo6RGlyVW5rbm93biAmJiBpbnB1dC5pc1RlbGVwaG9u
ZUZpZWxkKCkpCisgICAgICAgICAgICByZXR1cm4gTFRSOworICAgICAgICBpZiAoZCA9PSBTZWxm
RGlyZWN0aW9uYWxpdHk6OkRpckF1dG8gJiYKKyAgICAgICAgICAgIChpbnB1dC5pc1RleHRGaWVs
ZCgpIHx8CisgICAgICAgICAgICAgaW5wdXQuaXNTZWFyY2hGaWVsZCgpIHx8CisgICAgICAgICAg
ICAgaW5wdXQuaXNUZWxlcGhvbmVGaWVsZCgpIHx8CisgICAgICAgICAgICAgaW5wdXQuaXNVUkxG
aWVsZCgpIHx8CisgICAgICAgICAgICAgaW5wdXQuaXNFbWFpbEZpZWxkKCkpKSB7CisgICAgICAg
ICAgICBpZiAoZXZhbENvbnRlbnREaXJlY3Rpb25hbGl0eSh0ZCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRkOworICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgCisgICAgfSBlbHNl
IGlmIChpczxIVE1MVGV4dEFyZWFFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKGQgPT0g
U2VsZkRpcmVjdGlvbmFsaXR5OjpEaXJBdXRvICYmIGV2YWxDb250ZW50RGlyZWN0aW9uYWxpdHko
dGQpKQorICAgICAgICAgICAgcmV0dXJuIHRkOworICAgIH0gZWxzZSBpZiAoZCA9PSBTZWxmRGly
ZWN0aW9uYWxpdHk6OkRpckF1dG8gfHwgKGQgPT0gU2VsZkRpcmVjdGlvbmFsaXR5OjpEaXJVbmtu
b3duICYmIGVxdWFsSWdub3JpbmdDYXNlKG5vZGVOYW1lKCksICJiZGkiKSkpIHsKKyAgICAgICAg
aWYgKGV2YWxDb250ZW50RGlyZWN0aW9uYWxpdHkodGQpKSB7CisgICAgICAgICAgICByZXR1cm4g
dGQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgfSBlbHNlIGlmIChkID09IFNlbGZEaXJlY3Rp
b25hbGl0eTo6RGlyVW5rbm93bikgeworICAgICAgICBpZiAoaXNEb2N1bWVudE5vZGUoKSkKKyAg
ICAgICAgICAgIHJldHVybiBMVFI7CisgICAgICAgIGlmIChwYXJlbnRFbGVtZW50KCkpCisgICAg
ICAgICAgICByZXR1cm4gcGFyZW50RWxlbWVudCgpLT5jb21wdXRlSW5oZXJpdGVkRGlyZWN0aW9u
YWxpdHkoKTsKKyAgICB9CisgICAgCisgICAgLy9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gTFRSOworfQorICAgIAorYm9vbCBFbGVtZW50OjpldmFsQ29udGVudERpcmVjdGlvbmFs
aXR5KFRleHREaXJlY3Rpb24mIGRpcmVjdGlvbikgY29uc3QgeworICAgIGJvb2wgZm91bmREaXJl
Y3Rpb24gPSBmYWxzZTsKKyAgICBVQ2hhckRpcmVjdGlvbiBjaGFyRGlyZWN0aW9uOworICAgIAor
ICAgIGlmIChpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnRoaXMpKSB7CisgICAgICAg
IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50JiB0ZXh0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pihjb25zdF9jYXN0PEVsZW1lbnQmPigqdGhpcykpOworICAg
ICAgICBib29sIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5OworICAgICAgICBjaGFyRGlyZWN0aW9u
ID0gdGV4dEVsZW1lbnQudmFsdWUoKS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigmaGFzU3Ryb25n
RGlyZWN0aW9uYWxpdHkpOworICAgICAgICBmb3VuZERpcmVjdGlvbiA9IHRydWU7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQoKTsKKyAgICAgICAgd2hpbGUg
KG5vZGUpIHsKKyAgICAgICAgICAgIC8vIFNraXAgYmRpLCBzY3JpcHQsIHN0eWxlIGFuZCB0ZXh0
IGZvcm0gY29udHJvbHMuCisgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uobm9kZS0+
bm9kZU5hbWUoKSwgImJkaSIpIHx8IG5vZGUtPmhhc1RhZ05hbWUoc2NyaXB0VGFnKSB8fCBub2Rl
LT5oYXNUYWdOYW1lKHN0eWxlVGFnKQorICAgICAgICAgICAgICAgIHx8IChpczxFbGVtZW50Pigq
bm9kZSkgJiYgZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLmlzVGV4dEZvcm1Db250cm9sKCkpKSB7
CisgICAgICAgICAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHRTa2lwcGluZ0NoaWxk
cmVuKCpub2RlLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgICAgICAvLyBTa2lwIGVsZW1lbnRzIHdpdGggdmFsaWQgZGly
IGF0dHJpYnV0ZQorICAgICAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KCpub2RlKSkgeworICAgICAg
ICAgICAgICAgIEVsZW1lbnQmIGUgPSBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSk7CisgICAgICAg
ICAgICAgICAgaWYgKGUuc2VsZkRpcmVjdGlvbmFsaXR5KCkgIT0gU2VsZkRpcmVjdGlvbmFsaXR5
OjpEaXJVbmtub3duKSB7CisgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2Fs
OjpuZXh0U2tpcHBpbmdDaGlsZHJlbigqbm9kZSwgdGhpcyk7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgICAgICBpZiAobm9kZS0+aXNUZXh0Tm9kZSgpKSB7CisgICAgICAgICAgICAgICAgYm9v
bCBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eTsKKyAgICAgICAgICAgICAgICBjaGFyRGlyZWN0aW9u
ID0gbm9kZS0+dGV4dENvbnRlbnQodHJ1ZSkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oJmhhc1N0
cm9uZ0RpcmVjdGlvbmFsaXR5KTsKKyAgICAgICAgICAgICAgICBmb3VuZERpcmVjdGlvbiA9IHRy
dWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4
dCgqbm9kZSwgdGhpcyk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKGZvdW5kRGly
ZWN0aW9uKSB7CisgICAgICAgIGRpcmVjdGlvbiA9ICAoY2hhckRpcmVjdGlvbiA9PSBVX0xFRlRf
VE9fUklHSFQpPyBMVFIgOiBSVEw7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisgICAgCiAKIHZvaWQgRWxlbWVudDo6Y2FuY2VsRm9jdXNB
cHBlYXJhbmNlVXBkYXRlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGY5MTE1YmZkNC4uNjk4
Y2UwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiU2Ny
b2xsVHlwZXMuaCIKICNpbmNsdWRlICJTaW11bGF0ZWRDbGlja09wdGlvbnMuaCIKICNpbmNsdWRl
ICJTdHlsZVJlc29sdmVUcmVlLmgiCisjaW5jbHVkZSAiVGV4dERpcmVjdGlvbi5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3Nyw2ICszNzgsMTAgQEAgcHVibGljOgogCiAgICAgQXRv
bWljU3RyaW5nIGNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpIGNvbnN0OwogICAgIExvY2FsZSYg
bG9jYWxlKCkgY29uc3Q7CisgICAgCisgICAgZW51bSBjbGFzcyBTZWxmRGlyZWN0aW9uYWxpdHkg
eyBEaXJMVFIsIERpclJUTCwgRGlyQXV0bywgRGlyVW5rbm93biB9OworICAgIFNlbGZEaXJlY3Rp
b25hbGl0eSBzZWxmRGlyZWN0aW9uYWxpdHkoKSBjb25zdDsKKyAgICBUZXh0RGlyZWN0aW9uIGNv
bXB1dGVJbmhlcml0ZWREaXJlY3Rpb25hbGl0eSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lk
IGFjY2Vzc0tleUFjdGlvbihib29sIC8qc2VuZFRvQW55RXZlbnQqLykgeyB9CiAKQEAgLTY1Myw2
ICs2NTgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRF
bGVtZW50KCk7CiAKICAgICB2b2lkIGNyZWF0ZVVuaXF1ZUVsZW1lbnREYXRhKCk7CisgICAgCisg
ICAgYm9vbCBldmFsQ29udGVudERpcmVjdGlvbmFsaXR5KFRleHREaXJlY3Rpb24mIGRpcmVjdGlv
bikgY29uc3Q7CiAKICAgICBFbGVtZW50UmFyZURhdGEqIGVsZW1lbnRSYXJlRGF0YSgpIGNvbnN0
OwogICAgIEVsZW1lbnRSYXJlRGF0YSYgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>248160</attachid>
            <date>2015-03-07 10:54:20 -0800</date>
            <delta_ts>2015-03-07 10:54:20 -0800</delta_ts>
            <desc>Simple static test</desc>
            <filename>pseudo-dir-test.html</filename>
            <type>text/html</type>
            <size>1414</size>
            <attacher name="Sylvain Galineau">galineau</attacher>
            
              <data encoding="base64">PCFkb2N0eXBlIGh0bWw+CjxzdHlsZT4KICAgIC50ZXN0IHsKICAgICAgICB3aWR0aDogNTAwcHg7
CiAgICAgICAgaGVpZ2h0OiA3NXB4OwogICAgICAgIG1hcmdpbjogMC4yNWVtOwogICAgfQoKICAg
IC5pbml0aWFsLXBhc3MgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOwogICAgfQoK
ICAgIC5pbml0aWFsLWZhaWwgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKICAgIH0K
CiAgICAjaW52YWxpZC1lbXB0eTpkaXIoKSwgI2ludmFsaWQtZW1wdHkgewogICAgICAgIGJhY2tn
cm91bmQtY29sb3I6cmVkOwogICAgfQoKICAgICNpbnZhbGlkLXVua25vd246ZGlyKGZvbykgewog
ICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKICAgIH0KCiAgICAjZXhwbGljaXQtbHRyOmRp
cihsdHIpIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKICAgIH0KCiAgICAjZXhw
bGljaXQtcnRsOmRpcihydGwpIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKICAg
IH0KCiAgICAjZnJvbS1wYXJlbnQ6ZGlyKHJ0bCkgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6
IGdyZWVuOwogICAgfQoKICAgICNuZXN0ZWQtYXV0bzpkaXIobHRyKSB7CiAgICAgICAgYmFja2dy
b3VuZC1jb2xvcjogZ3JlZW47CiAgICB9CgogICAgI3RlbGVwaG9uZS1uby1kaXI6ZGlyKGx0cikg
ewogICAgICAgIGJhY2tncm91bmQtY29sb3I6Z3JlZW47CiAgICB9Cjwvc3R5bGU+Cgo8ZGl2IGNs
YXNzPSJ0ZXN0IGluaXRpYWwtcGFzcyIgaWQ9ImludmFsaWQtZW1wdHkiPmludmFsaWQgKyBlbXB0
eTwvZGl2Pgo8ZGl2IGNsYXNzPSJ0ZXN0IGluaXRpYWwtcGFzcyIgaWQ9ImludmFsaWQtdW5rbm93
biI+aW52YWxpZCArIHVua25vd248L2Rpdj4KPGRpdiBjbGFzcz0idGVzdCBpbnRpaWFsLWZhaWwi
IGlkPSJleHBsaWNpdC1sdHIiIGRpcj0ibHRyIj5leHBsaWNpdCBMVFIgZGlyPC9kaXY+CjxkaXYg
Y2xhc3M9InRlc3QgaW50aWlhbC1mYWlsIiBpZD0iZXhwbGljaXQtcnRsIiBkaXI9InJ0bCI+ZXhw
bGljaXQgUlRMIGRpcjwvZGl2Pgo8ZGl2IGRpcj0icnRsIj4KICAgIDxkaXYgY2xhc3M9InRlc3Qg
aW5pdGlhbC1mYWlsIiBpZD0iZnJvbS1wYXJlbnQiPmRpciBmcm9tIFJUTCBwYXJlbnQ8L2Rpdj4K
PC9kaXY+CjxkaXYgZGlyPSJhdXRvIj4KICAgIDxkaXYgaWQ9Im11c3QtYmUtaWdub3JlZCIgZGly
PSJydGwiPjwvZGl2PgogICAgPGRpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXN0IGluaXRpYWwt
ZmFpbCIgaWQ9Im5lc3RlZC1hdXRvIj5kaXIgZnJvbSBMVFItYXV0byBhbmNlc3RvcjwvZGl2Pgog
ICAgPC9kaXY+CiAgICBMVFIgCjwvZGl2PgoKPGlucHV0IGNsYXNzPSJpbml0aWFsLWZhaWwiIHR5
cGU9InRlbGVwaG9uZSIgaWQ9InRlbGVwaG9uZS1uby1kaXIiPjwvaW5wdXQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248164</attachid>
            <date>2015-03-07 11:13:09 -0800</date>
            <delta_ts>2015-03-08 18:13:21 -0700</delta_ts>
            <desc>Updated WIP</desc>
            <filename>WIP-updated.patch</filename>
            <type>text/plain</type>
            <size>9469</size>
            <attacher name="Sylvain Galineau">galineau</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2NDBjY2Q3Li4wMDVjMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTUtMDMtMDcgIHN5bHZhaW4tZ2FsaW5lYXUgIDxnYWxpbmVhdUBhZG9iZS5jb20+CisK
KyAgICAgICAgTmVlZCBzdXBwb3J0IGZvciA6ZGlyKCkgcHNldWRvLWNsYXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDg2MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEp
LgorCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1NlbGVjdG9yOjpwYXJzZURpcmVjdGlvbik6IGZvciA6ZGlyIGFyZ3VtZW50CisgICAgICAgICog
Y3NzL0NTU1NlbGVjdG9yLmg6CisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKTogbWF0Y2hpbmcKKyAg
ICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXIp
OiBjdXJyZW50IGRpciBhdHRyaWJ1dGUgc3RhdGUKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmNvbXB1dGVJbmhlcml0ZWREaXJlY3Rpb24pOiB3aGVyZSBkaXJlY3Rpb25hbGl0eSBpcyBldmFs
dWF0ZWQKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmV2YWxDb250ZW50RGlyZWN0aW9uYWxp
dHkpOiB3aGVyZSB3ZSBmaW5kIG91dCBkaXJlY3Rpb25hbGl0eSBiYXNlZCBvbiB0aGUgZWxlbWVu
dCdzIGNvbnRlbnQKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOiBuZXcgbWV0aG9kcyBhYm92ZQor
CiAyMDE1LTAzLTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbU09VUF0gQ2hlY2sgVExTIGVycm9ycyBhcyBzb29uIGFzIHRoZXkgYXJlIHNl
dCBpbiB0aGUgU291cE1lc3NhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCmluZGV4IDQ3
ZWEwNzEuLmI4ZjI5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIlNlbGVjdG9yUHNldWRvVHlwZU1hcC5oIgorI2luY2x1ZGUgIlRleHRE
aXJlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC0zMjAsNyArMzIx
LDIyIEBAIENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50VHlwZSBDU1NTZWxlY3Rvcjo6cGFyc2VQ
c2V1ZG9FbGVtZW50VHlwZShjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHR5cGU7CiB9CiAKLQor
Ym9vbCBDU1NTZWxlY3Rvcjo6cGFyc2VEaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lLCBUZXh0
RGlyZWN0aW9uJiBkaXIpCit7CisgICAgYm9vbCB2YWxpZCA9IGZhbHNlOworICAgIAorICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAibHRyIikpIHsKKyAgICAgICAgdmFsaWQgPSB0cnVl
OworICAgICAgICBkaXIgPSBMVFI7CisgICAgfQorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShu
YW1lLCAicnRsIikpIHsKKyAgICAgICAgdmFsaWQgPSB0cnVlOworICAgICAgICBkaXIgPSBSVEw7
CisgICAgfQorICAgIAorICAgIHJldHVybiB2YWxpZDsKK30KKyAgICAKIGJvb2wgQ1NTU2VsZWN0
b3I6Om9wZXJhdG9yPT0oY29uc3QgQ1NTU2VsZWN0b3ImIG90aGVyKSBjb25zdAogewogICAgIGNv
bnN0IENTU1NlbGVjdG9yKiBzZWwxID0gdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKaW5k
ZXggYmQyMzFiNC4uOTI3YTIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTIzLDYg
KzIzLDcgQEAKICNkZWZpbmUgQ1NTU2VsZWN0b3JfaAogCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFt
ZS5oIgorI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNv
bnN0YW50cy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC0yMTEsNiArMjEy
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHN0YXRpYyBQc2V1ZG9FbGVtZW50
VHlwZSBwYXJzZVBzZXVkb0VsZW1lbnRUeXBlKGNvbnN0IFN0cmluZyYpOwogICAgICAgICBzdGF0
aWMgUHNldWRvSWQgcHNldWRvSWQoUHNldWRvRWxlbWVudFR5cGUpOworI2lmIEVOQUJMRShDU1Nf
U0VMRUNUT1JTX0xFVkVMNCkKKyAgICAgICAgc3RhdGljIGJvb2wgcGFyc2VEaXJlY3Rpb24oY29u
c3QgU3RyaW5nJiwgVGV4dERpcmVjdGlvbiYgZGlyKTsKKyNlbmRpZgogCiAgICAgICAgIC8vIFNl
bGVjdG9ycyBhcmUga2VwdCBpbiBhbiBhcnJheSBieSBDU1NTZWxlY3Rvckxpc3QuIFRoZSBuZXh0
IGNvbXBvbmVudCBvZiB0aGUgc2VsZWN0b3IgaXMKICAgICAgICAgLy8gdGhlIG5leHQgaXRlbSBp
biB0aGUgYXJyYXkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVj
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDIw
ODk0YTUuLmI2YjM0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNo
ZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBA
IC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxl
ZEVsZW1lbnQuaCIKICNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSAiVGV4dERpcmVjdGlvbi5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMDgsMTAgKzEwMDksMTUgQEAgYm9vbCBT
ZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKGNvbnN0IENoZWNraW5nQ29udGV4dFdpdGhTdGF0dXMm
IGNvbnRleHQsIFBzZXVkb0kKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIEVOQUJM
RShDU1NfU0VMRUNUT1JTX0xFVkVMNCkKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCA6ZGly
KCkgc2VsZWN0b3IuCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGlyOgot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgVGV4dERpcmVjdGlvbiBkaXI7CisgICAgICAgICAgICAgICAgaWYgKCFDU1NTZWxlY3Rvcjo6
cGFyc2VEaXJlY3Rpb24oc2VsZWN0b3ItPmFyZ3VtZW50KCksIGRpcikpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZWxlbWVudC0+Y29tcHV0ZUluaGVyaXRlZERpcmVjdGlvbmFsaXR5KCkgPT0gZGlyOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
OnJvbGUoKSBzZWxlY3Rvci4KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NS
b2xlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IDdkZmVjYmQuLjJmNmIwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTQ4LDYgKzQ4LDcg
QEAKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRN
TElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxMYWJlbEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MT3B0aW9uc0NvbGxlY3Rpb24u
aCIKQEAgLTIzNjMsNiArMjM2NCwxMTAgQEAgTG9jYWxlJiBFbGVtZW50Ojpsb2NhbGUoKSBjb25z
dAogewogICAgIHJldHVybiBkb2N1bWVudCgpLmdldENhY2hlZExvY2FsZShjb21wdXRlSW5oZXJp
dGVkTGFuZ3VhZ2UoKSk7CiB9CisgICAgCitFbGVtZW50OjpTZWxmRGlyZWN0aW9uYWxpdHkgRWxl
bWVudDo6c2VsZkRpcmVjdGlvbmFsaXR5KCkgY29uc3QKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8QXRvbWljU3RyaW5nPiBsdHJWYWx1ZSgibHRyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
cnRsVmFsdWUoInJ0bCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGF1dG9WYWx1ZSgiYXV0byIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUgPSBmYXN0R2V0QXR0cmlidXRlKGRpckF0dHIpOworICAgIAorICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZSh2YWx1ZSwgbHRyVmFsdWUpKQorICAgICAgICByZXR1cm4gU2VsZkRpcmVj
dGlvbmFsaXR5OjpEaXJMVFI7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCBydGxW
YWx1ZSkpCisgICAgICAgIHJldHVybiBTZWxmRGlyZWN0aW9uYWxpdHk6OkRpclJUTDsKKyAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsIGF1dG9WYWx1ZSkpCisgICAgICAgIHJldHVybiBT
ZWxmRGlyZWN0aW9uYWxpdHk6OkRpckF1dG87CisgICAgCisgICAgcmV0dXJuIFNlbGZEaXJlY3Rp
b25hbGl0eTo6RGlyVW5rbm93bjsKK30KKyAgICAKK1RleHREaXJlY3Rpb24gRWxlbWVudDo6Y29t
cHV0ZUluaGVyaXRlZERpcmVjdGlvbmFsaXR5KCkgY29uc3QKK3sKKyAgICBTZWxmRGlyZWN0aW9u
YWxpdHkgZCA9IHNlbGZEaXJlY3Rpb25hbGl0eSgpOworICAgIFRleHREaXJlY3Rpb24gdGQ7Cisg
ICAgCisgICAgaWYgKGQgPT0gU2VsZkRpcmVjdGlvbmFsaXR5OjpEaXJMVFIpCisgICAgICAgIHJl
dHVybiBMVFI7CisgICAgCisgICAgaWYgKGQgPT0gU2VsZkRpcmVjdGlvbmFsaXR5OjpEaXJSVEwp
CisgICAgICAgIHJldHVybiBSVEw7CisgICAgCisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+
KCp0aGlzKSkgeworICAgICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGRvd25jYXN0PEhU
TUxJbnB1dEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8RWxlbWVudCY+KCp0aGlzKSk7CisgICAgICAgIGlm
IChkID09IFNlbGZEaXJlY3Rpb25hbGl0eTo6RGlyVW5rbm93biAmJiBpbnB1dC5pc1RlbGVwaG9u
ZUZpZWxkKCkpCisgICAgICAgICAgICByZXR1cm4gTFRSOworICAgICAgICBpZiAoZCA9PSBTZWxm
RGlyZWN0aW9uYWxpdHk6OkRpckF1dG8gJiYKKyAgICAgICAgICAgIChpbnB1dC5pc1RleHRGaWVs
ZCgpIHx8CisgICAgICAgICAgICAgaW5wdXQuaXNTZWFyY2hGaWVsZCgpIHx8CisgICAgICAgICAg
ICAgaW5wdXQuaXNUZWxlcGhvbmVGaWVsZCgpIHx8CisgICAgICAgICAgICAgaW5wdXQuaXNVUkxG
aWVsZCgpIHx8CisgICAgICAgICAgICAgaW5wdXQuaXNFbWFpbEZpZWxkKCkpKSB7CisgICAgICAg
ICAgICBpZiAoZXZhbENvbnRlbnREaXJlY3Rpb25hbGl0eSh0ZCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRkOworICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgCisgICAgfSBlbHNl
IGlmIChpczxIVE1MVGV4dEFyZWFFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKGQgPT0g
U2VsZkRpcmVjdGlvbmFsaXR5OjpEaXJBdXRvICYmIGV2YWxDb250ZW50RGlyZWN0aW9uYWxpdHko
dGQpKQorICAgICAgICAgICAgcmV0dXJuIHRkOworICAgIH0gZWxzZSBpZiAoZCA9PSBTZWxmRGly
ZWN0aW9uYWxpdHk6OkRpckF1dG8gfHwgKGQgPT0gU2VsZkRpcmVjdGlvbmFsaXR5OjpEaXJVbmtu
b3duICYmIGVxdWFsSWdub3JpbmdDYXNlKG5vZGVOYW1lKCksICJiZGkiKSkpIHsKKyAgICAgICAg
aWYgKGV2YWxDb250ZW50RGlyZWN0aW9uYWxpdHkodGQpKSB7CisgICAgICAgICAgICByZXR1cm4g
dGQ7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKHBhcmVudEVsZW1lbnQoKSkKKyAg
ICAgICAgcmV0dXJuIHBhcmVudEVsZW1lbnQoKS0+Y29tcHV0ZUluaGVyaXRlZERpcmVjdGlvbmFs
aXR5KCk7CisKKyAgICByZXR1cm4gTFRSOworfQorICAgIAorYm9vbCBFbGVtZW50OjpldmFsQ29u
dGVudERpcmVjdGlvbmFsaXR5KFRleHREaXJlY3Rpb24mIGRpcmVjdGlvbikgY29uc3QgeworICAg
IGJvb2wgZm91bmREaXJlY3Rpb24gPSBmYWxzZTsKKyAgICBVQ2hhckRpcmVjdGlvbiBjaGFyRGly
ZWN0aW9uOworICAgIAorICAgIGlmIChpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oKnRo
aXMpKSB7CisgICAgICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50JiB0ZXh0RWxlbWVudCA9
IGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Pihjb25zdF9jYXN0PEVsZW1lbnQm
PigqdGhpcykpOworICAgICAgICBib29sIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5OworICAgICAg
ICBjaGFyRGlyZWN0aW9uID0gdGV4dEVsZW1lbnQudmFsdWUoKS5kZWZhdWx0V3JpdGluZ0RpcmVj
dGlvbigmaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpOworICAgICAgICBmb3VuZERpcmVjdGlvbiA9
IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQoKTsK
KyAgICAgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgICAgIC8vIFNraXAgYmRpLCBzY3JpcHQs
IHN0eWxlIGFuZCB0ZXh0IGZvcm0gY29udHJvbHMuCisgICAgICAgICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2Uobm9kZS0+bm9kZU5hbWUoKSwgImJkaSIpIHx8IG5vZGUtPmhhc1RhZ05hbWUoc2Ny
aXB0VGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKHN0eWxlVGFnKQorICAgICAgICAgICAgICAgIHx8
IChpczxFbGVtZW50Pigqbm9kZSkgJiYgZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLmlzVGV4dEZv
cm1Db250cm9sKCkpKSB7CisgICAgICAgICAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5l
eHRTa2lwcGluZ0NoaWxkcmVuKCpub2RlLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICAvLyBTa2lwIGVsZW1lbnRz
IHdpdGggdmFsaWQgZGlyIGF0dHJpYnV0ZQorICAgICAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KCpu
b2RlKSkgeworICAgICAgICAgICAgICAgIEVsZW1lbnQmIGUgPSBkb3duY2FzdDxFbGVtZW50Pigq
bm9kZSk7CisgICAgICAgICAgICAgICAgaWYgKGUuc2VsZkRpcmVjdGlvbmFsaXR5KCkgIT0gU2Vs
ZkRpcmVjdGlvbmFsaXR5OjpEaXJVbmtub3duKSB7CisgICAgICAgICAgICAgICAgICAgIG5vZGUg
PSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbigqbm9kZSwgdGhpcyk7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgICAgICBpZiAobm9kZS0+aXNUZXh0Tm9kZSgpKSB7CisgICAg
ICAgICAgICAgICAgYm9vbCBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eTsKKyAgICAgICAgICAgICAg
ICBjaGFyRGlyZWN0aW9uID0gbm9kZS0+dGV4dENvbnRlbnQodHJ1ZSkuZGVmYXVsdFdyaXRpbmdE
aXJlY3Rpb24oJmhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5KTsKKyAgICAgICAgICAgICAgICBmb3Vu
ZERpcmVjdGlvbiA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBub2RlID0gTm9k
ZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSwgdGhpcyk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgaWYgKGZvdW5kRGlyZWN0aW9uKSB7CisgICAgICAgIGRpcmVjdGlvbiA9ICAoY2hhckRpcmVj
dGlvbiA9PSBVX0xFRlRfVE9fUklHSFQpPyBMVFIgOiBSVEw7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisgICAgCiAKIHZvaWQgRWxlbWVu
dDo6Y2FuY2VsRm9jdXNBcHBlYXJhbmNlVXBkYXRlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4
IGY5MTE1YmZkNC4uNjk4Y2UwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJTaW11bGF0ZWRDbGlja09wdGlv
bnMuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVUcmVlLmgiCisjaW5jbHVkZSAiVGV4dERpcmVj
dGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3Nyw2ICszNzgsMTAgQEAgcHVi
bGljOgogCiAgICAgQXRvbWljU3RyaW5nIGNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpIGNvbnN0
OwogICAgIExvY2FsZSYgbG9jYWxlKCkgY29uc3Q7CisgICAgCisgICAgZW51bSBjbGFzcyBTZWxm
RGlyZWN0aW9uYWxpdHkgeyBEaXJMVFIsIERpclJUTCwgRGlyQXV0bywgRGlyVW5rbm93biB9Owor
ICAgIFNlbGZEaXJlY3Rpb25hbGl0eSBzZWxmRGlyZWN0aW9uYWxpdHkoKSBjb25zdDsKKyAgICBU
ZXh0RGlyZWN0aW9uIGNvbXB1dGVJbmhlcml0ZWREaXJlY3Rpb25hbGl0eSgpIGNvbnN0OwogCiAg
ICAgdmlydHVhbCB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIC8qc2VuZFRvQW55RXZlbnQqLykg
eyB9CiAKQEAgLTY1Myw2ICs2NTgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5yZWdpc3Rlck5h
bWVkRmxvd0NvbnRlbnRFbGVtZW50KCk7CiAKICAgICB2b2lkIGNyZWF0ZVVuaXF1ZUVsZW1lbnRE
YXRhKCk7CisgICAgCisgICAgYm9vbCBldmFsQ29udGVudERpcmVjdGlvbmFsaXR5KFRleHREaXJl
Y3Rpb24mIGRpcmVjdGlvbikgY29uc3Q7CiAKICAgICBFbGVtZW50UmFyZURhdGEqIGVsZW1lbnRS
YXJlRGF0YSgpIGNvbnN0OwogICAgIEVsZW1lbnRSYXJlRGF0YSYgZW5zdXJlRWxlbWVudFJhcmVE
YXRhKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248222</attachid>
            <date>2015-03-08 18:13:21 -0700</date>
            <delta_ts>2015-04-28 17:48:14 -0700</delta_ts>
            <desc>Work In Progress</desc>
            <filename>WIP.patch</filename>
            <type>text/plain</type>
            <size>9896</size>
            <attacher name="Sylvain Galineau">galineau</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2NDBjY2Q3Li44MzFmNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTUtMDMtMDggIHN5bHZhaW4tZ2FsaW5lYXUgIDxnYWxpbmVhdUBhZG9iZS5jb20+CisK
KyAgICAgICAgTmVlZCBzdXBwb3J0IGZvciA6ZGlyKCkgcHNldWRvLWNsYXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDg2MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCA6ZGlyKCkgcHNldWRvLWNs
YXNzIHN1cHBvcnQgYXMgZGVmaW5lZCBieSBDU1MsIEhUTUwKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvY3Nzd2cvc2VsZWN0b3JzLTQvI3RoZS1kaXItcHNldWRvCisgICAgICAgIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NlbGVjdG9ycwor
ICAgICAgICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9kb20uaHRtbCN0
aGUtZGlyZWN0aW9uYWxpdHkKKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAg
ICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rv
cjo6cGFyc2VEaXJlY3Rpb24pOiBmb3IgOmRpciBhcmd1bWVudAorICAgICAgICAqIGNzcy9DU1NT
ZWxlY3Rvci5oOgorICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZSk6IG1hdGNoaW5nCisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlyKTogY3VycmVu
dCBkaXIgYXR0cmlidXRlIHN0YXRlCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpjb21wdXRl
SW5oZXJpdGVkRGlyZWN0aW9uKTogd2hlcmUgZGlyZWN0aW9uYWxpdHkgaXMgZXZhbHVhdGVkCisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpldmFsQ29udGVudERpcmVjdGlvbmFsaXR5KTogd2hl
cmUgd2UgZmluZCBvdXQgZGlyZWN0aW9uYWxpdHkgYmFzZWQgb24gdGhlIGVsZW1lbnQncyBjb250
ZW50CisgICAgICAgICogZG9tL0VsZW1lbnQuaDogbmV3IG1ldGhvZHMgYWJvdmUKKwogMjAxNS0w
My0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1NPVVBdIENoZWNrIFRMUyBlcnJvcnMgYXMgc29vbiBhcyB0aGV5IGFyZSBzZXQgaW4gdGhl
IFNvdXBNZXNzYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCA0N2VhMDcxLi5i
Yzg5NzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJTZWxlY3RvclBzZXVkb1R5cGVNYXAuaCIKKyNpbmNsdWRlICJUZXh0RGlyZWN0aW9u
LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMzIwLDcgKzMyMSwxOSBAQCBD
U1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFR5cGUgQ1NTU2VsZWN0b3I6OnBhcnNlUHNldWRvRWxl
bWVudFR5cGUoY29uc3QgU3RyaW5nJgogICAgIHJldHVybiB0eXBlOwogfQogCi0KK2Jvb2wgQ1NT
U2VsZWN0b3I6OnBhcnNlRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwgVGV4dERpcmVjdGlv
biYgZGlyKQoreworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAibHRyIikpIHsKKyAg
ICAgICAgZGlyID0gTFRSOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKG5hbWUsICJydGwiKSkgeworICAgICAgICBkaXIgPSBSVEw7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisgICAg
CiBib29sIENTU1NlbGVjdG9yOjpvcGVyYXRvcj09KGNvbnN0IENTU1NlbGVjdG9yJiBvdGhlcikg
Y29uc3QKIHsKICAgICBjb25zdCBDU1NTZWxlY3Rvciogc2VsMSA9IHRoaXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5oCmluZGV4IGJkMjMxYjQuLjkyN2EyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvci5oCkBAIC0yMyw2ICsyMyw3IEBACiAjZGVmaW5lIENTU1NlbGVjdG9yX2gKIAogI2luY2x1
ZGUgIlF1YWxpZmllZE5hbWUuaCIKKyNpbmNsdWRlICJUZXh0RGlyZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
IApAQCAtMjExLDYgKzIxMiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBzdGF0
aWMgUHNldWRvRWxlbWVudFR5cGUgcGFyc2VQc2V1ZG9FbGVtZW50VHlwZShjb25zdCBTdHJpbmcm
KTsKICAgICAgICAgc3RhdGljIFBzZXVkb0lkIHBzZXVkb0lkKFBzZXVkb0VsZW1lbnRUeXBlKTsK
KyNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SU19MRVZFTDQpCisgICAgICAgIHN0YXRpYyBib29sIHBh
cnNlRGlyZWN0aW9uKGNvbnN0IFN0cmluZyYsIFRleHREaXJlY3Rpb24mIGRpcik7CisjZW5kaWYK
IAogICAgICAgICAvLyBTZWxlY3RvcnMgYXJlIGtlcHQgaW4gYW4gYXJyYXkgYnkgQ1NTU2VsZWN0
b3JMaXN0LiBUaGUgbmV4dCBjb21wb25lbnQgb2YgdGhlIHNlbGVjdG9yIGlzCiAgICAgICAgIC8v
IHRoZSBuZXh0IGl0ZW0gaW4gdGhlIGFycmF5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVj
a2VyLmNwcAppbmRleCAyMDg5NGE1Li5iNmIzNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0
b3JDaGVja2VyLmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIK
ICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgorI2luY2x1ZGUg
IlRleHREaXJlY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDA4LDEwICsx
MDA5LDE1IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZShjb25zdCBDaGVja2luZ0Nv
bnRleHRXaXRoU3RhdHVzJiBjb250ZXh0LCBQc2V1ZG9JCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SU19MRVZFTDQpCi0gICAgICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgOmRpcigpIHNlbGVjdG9yLgogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzc0RpcjoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIFRleHREaXJlY3Rpb24gZGlyOworICAgICAgICAgICAgICAgIGlm
ICghQ1NTU2VsZWN0b3I6OnBhcnNlRGlyZWN0aW9uKHNlbGVjdG9yLT5hcmd1bWVudCgpLCBkaXIp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmNvbXB1dGVJbmhlcml0ZWREaXJlY3Rpb25h
bGl0eSgpID09IGRpcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IDpyb2xlKCkgc2VsZWN0b3IuCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OlBzZXVkb0NsYXNzUm9sZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAppbmRleCA3ZGZlY2JkLi42YjMxOWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRl
ICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5o
IgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTGFiZWxFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE9w
dGlvbnNDb2xsZWN0aW9uLmgiCkBAIC0yMzYzLDYgKzIzNjQsMTA5IEBAIExvY2FsZSYgRWxlbWVu
dDo6bG9jYWxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5nZXRDYWNoZWRMb2Nh
bGUoY29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkpOwogfQorICAgIAorRWxlbWVudDo6U2VsZkRp
cmVjdGlvbmFsaXR5IEVsZW1lbnQ6OnNlbGZEaXJlY3Rpb25hbGl0eSgpIGNvbnN0Cit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbHRyVmFsdWUoImx0ciIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IHJ0bFZhbHVlKCJydGwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBhdXRv
VmFsdWUoImF1dG8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZmFzdEdldEF0dHJpYnV0ZShkaXJBdHRyKTsKKyAg
ICAKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsIGx0clZhbHVlKSkKKyAgICAgICAg
cmV0dXJuIFNlbGZEaXJlY3Rpb25hbGl0eTo6RGlyTFRSOworICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZSh2YWx1ZSwgcnRsVmFsdWUpKQorICAgICAgICByZXR1cm4gU2VsZkRpcmVjdGlvbmFsaXR5
OjpEaXJSVEw7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCBhdXRvVmFsdWUpKQor
ICAgICAgICByZXR1cm4gU2VsZkRpcmVjdGlvbmFsaXR5OjpEaXJBdXRvOworICAgIAorICAgIHJl
dHVybiBTZWxmRGlyZWN0aW9uYWxpdHk6OkRpclVua25vd247Cit9CisgICAgCitUZXh0RGlyZWN0
aW9uIEVsZW1lbnQ6OmNvbXB1dGVJbmhlcml0ZWREaXJlY3Rpb25hbGl0eSgpIGNvbnN0Cit7Cisg
ICAgU2VsZkRpcmVjdGlvbmFsaXR5IGRpcmVjdGlvbmFsaXR5ID0gc2VsZkRpcmVjdGlvbmFsaXR5
KCk7CisgICAgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uOworICAgIAorICAgIGlmIChkaXJl
Y3Rpb25hbGl0eSA9PSBTZWxmRGlyZWN0aW9uYWxpdHk6OkRpckxUUikKKyAgICAgICAgcmV0dXJu
IExUUjsKKyAgICAKKyAgICBpZiAoZGlyZWN0aW9uYWxpdHkgPT0gU2VsZkRpcmVjdGlvbmFsaXR5
OjpEaXJSVEwpCisgICAgICAgIHJldHVybiBSVEw7CisgICAgCisgICAgaWYgKGlzPEhUTUxJbnB1
dEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGRv
d25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KGNvbnN0X2Nhc3Q8RWxlbWVudCY+KCp0aGlzKSk7Cisg
ICAgICAgIGlmIChkaXJlY3Rpb25hbGl0eSA9PSBTZWxmRGlyZWN0aW9uYWxpdHk6OkRpclVua25v
d24gJiYgaW5wdXQuaXNUZWxlcGhvbmVGaWVsZCgpKQorICAgICAgICAgICAgcmV0dXJuIExUUjsK
KyAgICAgICAgaWYgKGRpcmVjdGlvbmFsaXR5ID09IFNlbGZEaXJlY3Rpb25hbGl0eTo6RGlyQXV0
byAmJgorICAgICAgICAgICAgKGlucHV0LmlzVGV4dEZpZWxkKCkgfHwKKyAgICAgICAgICAgICBp
bnB1dC5pc1NlYXJjaEZpZWxkKCkgfHwKKyAgICAgICAgICAgICBpbnB1dC5pc1RlbGVwaG9uZUZp
ZWxkKCkgfHwKKyAgICAgICAgICAgICBpbnB1dC5pc1VSTEZpZWxkKCkgfHwKKyAgICAgICAgICAg
ICBpbnB1dC5pc0VtYWlsRmllbGQoKSkpIHsKKyAgICAgICAgICAgIGlmIChldmFsQ29udGVudERp
cmVjdGlvbmFsaXR5KHRleHREaXJlY3Rpb24pKQorICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0
RGlyZWN0aW9uOworICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgCisgICAgfSBlbHNl
IGlmIChpczxIVE1MVGV4dEFyZWFFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKGRpcmVj
dGlvbmFsaXR5ID09IFNlbGZEaXJlY3Rpb25hbGl0eTo6RGlyQXV0byAmJiBldmFsQ29udGVudERp
cmVjdGlvbmFsaXR5KHRleHREaXJlY3Rpb24pKQorICAgICAgICAgICAgcmV0dXJuIHRleHREaXJl
Y3Rpb247CisgICAgfSBlbHNlIGlmIChkaXJlY3Rpb25hbGl0eSA9PSBTZWxmRGlyZWN0aW9uYWxp
dHk6OkRpckF1dG8gfHwgKGRpcmVjdGlvbmFsaXR5ID09IFNlbGZEaXJlY3Rpb25hbGl0eTo6RGly
VW5rbm93biAmJiBoYXNUYWdOYW1lKGJkaVRhZykpKSB7CisgICAgICAgIGlmIChldmFsQ29udGVu
dERpcmVjdGlvbmFsaXR5KHRleHREaXJlY3Rpb24pKQorICAgICAgICAgICAgcmV0dXJuIHRleHRE
aXJlY3Rpb247CisgICAgfQorICAgIAorICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0g
dGhpcy0+cGFyZW50RWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcGFyZW50RWxlbWVudC0+Y29t
cHV0ZUluaGVyaXRlZERpcmVjdGlvbmFsaXR5KCk7CisgICAgCisgICAgcmV0dXJuIExUUjsKK30K
KyAgICAKK2Jvb2wgRWxlbWVudDo6ZXZhbENvbnRlbnREaXJlY3Rpb25hbGl0eShUZXh0RGlyZWN0
aW9uJiBkaXJlY3Rpb24pIGNvbnN0IHsKKyAgICBib29sIGZvdW5kRGlyZWN0aW9uID0gZmFsc2U7
CisgICAgVUNoYXJEaXJlY3Rpb24gY2hhckRpcmVjdGlvbjsKKyAgICAKKyAgICBpZiAoaXM8SFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudCYgdGV4dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudD4oY29uc3RfY2FzdDxFbGVtZW50Jj4oKnRoaXMpKTsKKyAgICAgICAgYm9vbCBoYXNT
dHJvbmdEaXJlY3Rpb25hbGl0eTsKKyAgICAgICAgY2hhckRpcmVjdGlvbiA9IHRleHRFbGVtZW50
LnZhbHVlKCkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oJmhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5
KTsKKyAgICAgICAgZm91bmREaXJlY3Rpb24gPSB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICAg
IE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7CisgICAgICAgIHdoaWxlIChub2RlKSB7CisgICAg
ICAgICAgICAvLyBTa2lwIGJkaSwgc2NyaXB0LCBzdHlsZSBhbmQgdGV4dCBmb3JtIGNvbnRyb2xz
LgorICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5vZGUtPm5vZGVOYW1lKCksICJi
ZGkiKSB8fCBub2RlLT5oYXNUYWdOYW1lKHNjcmlwdFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShz
dHlsZVRhZykKKyAgICAgICAgICAgICAgICB8fCAoaXM8RWxlbWVudD4oKm5vZGUpICYmIGRvd25j
YXN0PEVsZW1lbnQ+KCpub2RlKS5pc1RleHRGb3JtQ29udHJvbCgpKSkgeworICAgICAgICAgICAg
ICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbigqbm9kZSwgdGhp
cyk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICAgICAgLy8gU2tpcCBlbGVtZW50cyB3aXRoIHZhbGlkIGRpciBhdHRyaWJ1dGUKKyAg
ICAgICAgICAgIGlmIChpczxFbGVtZW50Pigqbm9kZSkpIHsKKyAgICAgICAgICAgICAgICBFbGVt
ZW50JiBlID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOworICAgICAgICAgICAgICAgIGlmIChl
LnNlbGZEaXJlY3Rpb25hbGl0eSgpICE9IFNlbGZEaXJlY3Rpb25hbGl0eTo6RGlyVW5rbm93bikg
eworICAgICAgICAgICAgICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5n
Q2hpbGRyZW4oKm5vZGUsIHRoaXMpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgaWYg
KG5vZGUtPmlzVGV4dE5vZGUoKSkgeworICAgICAgICAgICAgICAgIGJvb2wgaGFzU3Ryb25nRGly
ZWN0aW9uYWxpdHk7CisgICAgICAgICAgICAgICAgY2hhckRpcmVjdGlvbiA9IG5vZGUtPnRleHRD
b250ZW50KHRydWUpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCZoYXNTdHJvbmdEaXJlY3Rpb25h
bGl0eSk7CisgICAgICAgICAgICAgICAgZm91bmREaXJlY3Rpb24gPSB0cnVlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUsIHRoaXMp
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGlmIChmb3VuZERpcmVjdGlvbikgeworICAg
ICAgICBkaXJlY3Rpb24gPSAgKGNoYXJEaXJlY3Rpb24gPT0gVV9MRUZUX1RPX1JJR0hUKT8gTFRS
IDogUlRMOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZh
bHNlOworfQorICAgIAogCiB2b2lkIEVsZW1lbnQ6OmNhbmNlbEZvY3VzQXBwZWFyYW5jZVVwZGF0
ZSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBmOTExNWJmZDQuLjY5OGNlMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAj
aW5jbHVkZSAiU2ltdWxhdGVkQ2xpY2tPcHRpb25zLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZl
VHJlZS5oIgorI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0zNzcsNiArMzc4LDEwIEBAIHB1YmxpYzoKIAogICAgIEF0b21pY1N0cmluZyBjb21w
dXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdDsKICAgICBMb2NhbGUmIGxvY2FsZSgpIGNvbnN0
OworICAgIAorICAgIGVudW0gY2xhc3MgU2VsZkRpcmVjdGlvbmFsaXR5IHsgRGlyTFRSLCBEaXJS
VEwsIERpckF1dG8sIERpclVua25vd24gfTsKKyAgICBTZWxmRGlyZWN0aW9uYWxpdHkgc2VsZkRp
cmVjdGlvbmFsaXR5KCkgY29uc3Q7CisgICAgVGV4dERpcmVjdGlvbiBjb21wdXRlSW5oZXJpdGVk
RGlyZWN0aW9uYWxpdHkoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rp
b24oYm9vbCAvKnNlbmRUb0FueUV2ZW50Ki8pIHsgfQogCkBAIC02NTMsNiArNjU4LDggQEAgcHJp
dmF0ZToKICAgICB2b2lkIHVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCgpOwogCiAg
ICAgdm9pZCBjcmVhdGVVbmlxdWVFbGVtZW50RGF0YSgpOworICAgIAorICAgIGJvb2wgZXZhbENv
bnRlbnREaXJlY3Rpb25hbGl0eShUZXh0RGlyZWN0aW9uJiBkaXJlY3Rpb24pIGNvbnN0OwogCiAg
ICAgRWxlbWVudFJhcmVEYXRhKiBlbGVtZW50UmFyZURhdGEoKSBjb25zdDsKICAgICBFbGVtZW50
UmFyZURhdGEmIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251902</attachid>
            <date>2015-04-28 17:48:14 -0700</date>
            <delta_ts>2015-04-28 17:48:14 -0700</delta_ts>
            <desc>Work In Progress</desc>
            <filename>fix-64861.patch</filename>
            <type>text/plain</type>
            <size>13394</size>
            <attacher name="Sylvain Galineau">galineau</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiM2ExMDdjLi5mOGNkZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAg
QEAKKzIwMTUtMDQtMjggIHN5bHZhaW4tZ2FsaW5lYXUgIDxnYWxpbmVhdUBhZG9iZS5jb20+CisK
KyAgICAgICAgCisgICAgICAgIE5lZWQgc3VwcG9ydCBmb3IgOmRpcigpIHBzZXVkby1jbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ4NjEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgOmRpcigp
IHBzZXVkby1jbGFzcyBzdXBwb3J0IGFzIGRlZmluZWQgYnkgQ1NTLCBIVE1MCisgICAgICAgIGh0
dHA6Ly9kZXYudzMub3JnL2Nzc3dnL3NlbGVjdG9ycy00LyN0aGUtZGlyLXBzZXVkbworICAgICAg
ICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNz
ZWxlY3RvcnMKKyAgICAgICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
ZG9tLmh0bWwjdGhlLWRpcmVjdGlvbmFsaXR5CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BT
ISkuCisKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU2VsZWN0b3I6OnBhcnNlRGlyZWN0aW9uKToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3Iu
aDoKKyAgICAgICAgcGFyc2UgOmRpcigpIGFyZ3VtZW50CisgICAgICAgICogY3NzL1NlbGVjdG9y
Q2hlY2tlci5jcHA6CisgICAgICAgIG1hdGNoIDpkaXIoKSB3aXRoIGVsZW1lbnQncyBkaXJlY3Rp
b25hbGl0eQorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnNlbGZEaXJlY3Rpb25hbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpj
b21wdXRlSW5oZXJpdGVkRGlyZWN0aW9uYWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6ZXZhbENvbnRlbnREaXJlY3Rpb25hbGl0eSk6CisgICAgICAgIENvbXB1dGUgZWxlbWVudCBk
aXJlY3Rpb25hbGl0eQorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpoYXNEZWZhdWx0RGlyZWN0aW9uYWxpdHkpOgorICAgICAgICBXaGV0aGVyIGFu
IGVsZW1lbnQgaGFzIGEgYmFzZSBkaXJlY3Rpb24gZS5nLiB0ZWxlcGhvbmUgZmllbGQKKyAgICAg
ICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6ZXZhbENvbnRlbnREaXJlY3Rpb25hbGl0eSk6CisgICAgICAgICogaHRtbC9I
VE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6
ZXZhbENvbnRlbnREaXJlY3Rpb25hbGl0eSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5oOgorICAgICAgICBDb21wdXRlIGVsZW1lbnQgZGlyZWN0aW9uYWxpdHkg
Zm9yIGZvcm0gZmllbGRzCisKIDIwMTUtMDQtMjggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbQ29udGVudCBFeHRlbnNpb25zXSBVc2UgbGVz
cyBtZW1vcnkgZm9yIENvbWJpbmVkVVJMRmlsdGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3Iu
Y3BwCmluZGV4IDcwODE5MjYuLjhlNTRiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNw
cApAQCAtMzIwLDcgKzMyMCwxNyBAQCBDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudFR5cGUgQ1NT
U2VsZWN0b3I6OnBhcnNlUHNldWRvRWxlbWVudFR5cGUoY29uc3QgU3RyaW5nJgogICAgIHJldHVy
biB0eXBlOwogfQogCi0KK0NTU1NlbGVjdG9yOjpEaXJlY3Rpb25hbGl0eSBDU1NTZWxlY3Rvcjo6
cGFyc2VEaXJlY3Rpb24oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQoreworICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShuYW1lLCAibHRyIikpIHsKKyAgICAgICAgcmV0dXJuIERpcmVjdGlvbmFs
aXR5OjpMVFI7CisgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAicnRsIikp
IHsKKyAgICAgICAgcmV0dXJuIERpcmVjdGlvbmFsaXR5OjpSVEw7CisgICAgfQorICAgIAorICAg
IHJldHVybiBEaXJlY3Rpb25hbGl0eTo6SW52YWxpZDsKK30KKyAgICAKIGJvb2wgQ1NTU2VsZWN0
b3I6Om9wZXJhdG9yPT0oY29uc3QgQ1NTU2VsZWN0b3ImIG90aGVyKSBjb25zdAogewogICAgIGNv
bnN0IENTU1NlbGVjdG9yKiBzZWwxID0gdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKaW5k
ZXggNGMzNDdkMi4uMzk3YzA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTIwOSw2
ICsyMDksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHN0YXRpYyBQc2V1ZG9F
bGVtZW50VHlwZSBwYXJzZVBzZXVkb0VsZW1lbnRUeXBlKGNvbnN0IFN0cmluZyYpOwogICAgICAg
ICBzdGF0aWMgUHNldWRvSWQgcHNldWRvSWQoUHNldWRvRWxlbWVudFR5cGUpOworI2lmIEVOQUJM
RShDU1NfU0VMRUNUT1JTX0xFVkVMNCkKKyAgICAgICAgZW51bSBjbGFzcyBEaXJlY3Rpb25hbGl0
eSB7CisgICAgICAgICAgICBJbnZhbGlkLAorICAgICAgICAgICAgTFRSLAorICAgICAgICAgICAg
UlRMCisgICAgICAgIH07CisgICAgICAgIHN0YXRpYyBEaXJlY3Rpb25hbGl0eSBwYXJzZURpcmVj
dGlvbihjb25zdCBBdG9taWNTdHJpbmcmKTsKKyNlbmRpZgogCiAgICAgICAgIC8vIFNlbGVjdG9y
cyBhcmUga2VwdCBpbiBhbiBhcnJheSBieSBDU1NTZWxlY3Rvckxpc3QuIFRoZSBuZXh0IGNvbXBv
bmVudCBvZiB0aGUgc2VsZWN0b3IgaXMKICAgICAgICAgLy8gdGhlIG5leHQgaXRlbSBpbiB0aGUg
YXJyYXkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDhiZmUwMmIu
LmFhYzE1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC01NSw2
ICs1NSw3IEBACiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlZEVsZW1l
bnQuaCIKICNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMjA1LDYgKzIwNiwyMyBAQCBpbmxpbmUgc3RhdGljIGJvb2wg
aGFzU2Nyb2xsYmFyUHNldWRvRWxlbWVudChjb25zdCBQc2V1ZG9JZFNldCYgZHluYW1pY1BzZXVk
b0lkUwogICAgIC8vIGJlY2F1c2UgaXQgY2FuIGhhdmUgbW9yZSB0aGFuIG9uZSBwc2V1ZG8gZWxl
bWVudC4KICAgICByZXR1cm4gZHluYW1pY1BzZXVkb0lkU2V0LmhhcyhSRVNJWkVSKTsKIH0KKyAg
ICAKK3N0YXRpYyBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTU2VsZWN0b3I6OkRpcmVjdGlvbmFs
aXR5JiBhLCBjb25zdCBUZXh0RGlyZWN0aW9uJiBiKQoreworICAgIHN3aXRjaChhKSB7CisgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRpcmVjdGlvbmFsaXR5OjpMVFI6CisgICAgICAgICAgICBy
ZXR1cm4gKGI9PUxUUik/dHJ1ZTpmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OkRpcmVjdGlvbmFsaXR5OjpSVEw6CisgICAgICAgICAgICByZXR1cm4gKGI9PVJUTCk/
dHJ1ZTpmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpEaXJl
Y3Rpb25hbGl0eTo6SW52YWxpZDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
K30KIAogc3RhdGljIFNlbGVjdG9yQ2hlY2tlcjo6Q2hlY2tpbmdDb250ZXh0V2l0aFN0YXR1cyBj
aGVja2luZ0NvbnRleHRGb3JQYXJlbnQoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpDaGVja2luZ0Nv
bnRleHRXaXRoU3RhdHVzJiBjb250ZXh0KQogewpAQCAtMTAzMCwxMCArMTA0OCwxNSBAQCBib29s
IFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUoY29uc3QgQ2hlY2tpbmdDb250ZXh0V2l0aFN0YXR1
cyYgY29udGV4dCwgUHNldWRvSQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgRU5B
QkxFKENTU19TRUxFQ1RPUlNfTEVWRUw0KQotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IDpk
aXIoKSBzZWxlY3Rvci4KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEaXI6
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBDU1NTZWxlY3Rvcjo6RGlyZWN0aW9uYWxpdHkgc2VsZWN0b3JEaXJlY3Rpb25hbGl0eSA9
IENTU1NlbGVjdG9yOjpwYXJzZURpcmVjdGlvbihzZWxlY3Rvci0+YXJndW1lbnQoKSk7CisgICAg
ICAgICAgICAgICAgaWYgKHNlbGVjdG9yRGlyZWN0aW9uYWxpdHkgPT0gQ1NTU2VsZWN0b3I6OkRp
cmVjdGlvbmFsaXR5OjpJbnZhbGlkKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdG9yRGlyZWN0
aW9uYWxpdHkgPT0gZWxlbWVudC0+Y29tcHV0ZUluaGVyaXRlZERpcmVjdGlvbmFsaXR5KCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCA6
cm9sZSgpIHNlbGVjdG9yLgogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1Jv
bGU6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXgg
ZDRkODQxNy4uZjFkMjRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjU0Myw2ICsyNTQz
LDkyIEBAIExvY2FsZSYgRWxlbWVudDo6bG9jYWxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9j
dW1lbnQoKS5nZXRDYWNoZWRMb2NhbGUoY29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkpOwogfQor
ICAgIAorRWxlbWVudDo6U2VsZkRpcmVjdGlvbmFsaXR5IEVsZW1lbnQ6OnNlbGZEaXJlY3Rpb25h
bGl0eSgpIGNvbnN0Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
bHRyVmFsdWUoImx0ciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHJ0bFZhbHVlKCJydGwiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8QXRvbWljU3RyaW5nPiBhdXRvVmFsdWUoImF1dG8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gZmFzdEdldEF0
dHJpYnV0ZShkaXJBdHRyKTsKKyAgICAKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUs
IGx0clZhbHVlKSkKKyAgICAgICAgcmV0dXJuIFNlbGZEaXJlY3Rpb25hbGl0eTo6RGlyTFRSOwor
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgcnRsVmFsdWUpKQorICAgICAgICByZXR1
cm4gU2VsZkRpcmVjdGlvbmFsaXR5OjpEaXJSVEw7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHZhbHVlLCBhdXRvVmFsdWUpKQorICAgICAgICByZXR1cm4gU2VsZkRpcmVjdGlvbmFsaXR5OjpE
aXJBdXRvOworICAgIAorICAgIHJldHVybiBTZWxmRGlyZWN0aW9uYWxpdHk6OkRpclVua25vd247
Cit9CisgICAgCitUZXh0RGlyZWN0aW9uIEVsZW1lbnQ6OmNvbXB1dGVJbmhlcml0ZWREaXJlY3Rp
b25hbGl0eSgpIGNvbnN0Cit7CisgICAgU2VsZkRpcmVjdGlvbmFsaXR5IGRpcmVjdGlvbmFsaXR5
ID0gc2VsZkRpcmVjdGlvbmFsaXR5KCk7CisgICAgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9u
OworICAgIAorICAgIGlmIChkaXJlY3Rpb25hbGl0eSA9PSBTZWxmRGlyZWN0aW9uYWxpdHk6OkRp
ckxUUikKKyAgICAgICAgcmV0dXJuIExUUjsKKyAgICAKKyAgICBpZiAoZGlyZWN0aW9uYWxpdHkg
PT0gU2VsZkRpcmVjdGlvbmFsaXR5OjpEaXJSVEwpCisgICAgICAgIHJldHVybiBSVEw7CisgICAg
CisgICAgaWYgKGRpcmVjdGlvbmFsaXR5ID09IFNlbGZEaXJlY3Rpb25hbGl0eTo6RGlyQXV0bykg
eworICAgICAgICBpZiAoZXZhbENvbnRlbnREaXJlY3Rpb25hbGl0eSh0ZXh0RGlyZWN0aW9uKSkK
KyAgICAgICAgICAgIHJldHVybiB0ZXh0RGlyZWN0aW9uOworICAgIH0KKyAgICAKKyAgICBpZiAo
ZGlyZWN0aW9uYWxpdHkgPT0gU2VsZkRpcmVjdGlvbmFsaXR5OjpEaXJVbmtub3duKSB7CisgICAg
ICAgIC8vaWYgKGhhc0RlZmF1bHREaXJlY3Rpb25hbGl0eSh0ZXh0RGlyZWN0aW9uKSkKKyAgICAg
ICAgLy8gICAgcmV0dXJuIHRleHREaXJlY3Rpb247CisgICAgICAgIAorICAgICAgICBpZiAoaGFz
VGFnTmFtZShiZGlUYWcpICYmIGV2YWxDb250ZW50RGlyZWN0aW9uYWxpdHkodGV4dERpcmVjdGlv
bikpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRleHREaXJlY3Rpb247CisgICAgfQorICAgIAor
ICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gdGhpcy0+cGFyZW50RWxlbWVudCgpKQor
ICAgICAgICByZXR1cm4gcGFyZW50RWxlbWVudC0+Y29tcHV0ZUluaGVyaXRlZERpcmVjdGlvbmFs
aXR5KCk7CisgICAgCisgICAgcmV0dXJuIExUUjsKK30KKyAgICAKK2Jvb2wgRWxlbWVudDo6ZXZh
bENvbnRlbnREaXJlY3Rpb25hbGl0eShUZXh0RGlyZWN0aW9uJiBkaXJlY3Rpb24pIGNvbnN0IHsK
KyAgICBib29sIGZvdW5kRGlyZWN0aW9uID0gZmFsc2U7CisgICAgVUNoYXJEaXJlY3Rpb24gY2hh
ckRpcmVjdGlvbjsKKyAgCisgICAgTm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQoKTsKKyAgICB3aGls
ZSAobm9kZSkgeworICAgICAgICAvLyBTa2lwIGJkaSwgc2NyaXB0LCBzdHlsZSBhbmQgdGV4dCBm
b3JtIGNvbnRyb2xzLgorICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uobm9kZS0+bm9kZU5h
bWUoKSwgImJkaSIpIHx8IG5vZGUtPmhhc1RhZ05hbWUoc2NyaXB0VGFnKSB8fCBub2RlLT5oYXNU
YWdOYW1lKHN0eWxlVGFnKQorICAgICAgICAgICAgfHwgKGlzPEVsZW1lbnQ+KCpub2RlKSAmJiBk
b3duY2FzdDxFbGVtZW50Pigqbm9kZSkuaXNUZXh0Rm9ybUNvbnRyb2woKSkpIHsKKyAgICAgICAg
ICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbigqbm9kZSwgdGhp
cyk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
Ly8gU2tpcCBlbGVtZW50cyB3aXRoIHZhbGlkIGRpciBhdHRyaWJ1dGUKKyAgICAgICAgaWYgKGlz
PEVsZW1lbnQ+KCpub2RlKSkgeworICAgICAgICAgICAgRWxlbWVudCYgZSA9IGRvd25jYXN0PEVs
ZW1lbnQ+KCpub2RlKTsKKyAgICAgICAgICAgIGlmIChlLnNlbGZEaXJlY3Rpb25hbGl0eSgpICE9
IFNlbGZEaXJlY3Rpb25hbGl0eTo6RGlyVW5rbm93bikgeworICAgICAgICAgICAgICAgIG5vZGUg
PSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbigqbm9kZSwgdGhpcyk7CisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGlmIChub2RlLT5pc1RleHROb2RlKCkpIHsKKyAgICAgICAgICAgIGJvb2wgaGFz
U3Ryb25nRGlyZWN0aW9uYWxpdHk7CisgICAgICAgICAgICBjaGFyRGlyZWN0aW9uID0gbm9kZS0+
dGV4dENvbnRlbnQodHJ1ZSkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oJmhhc1N0cm9uZ0RpcmVj
dGlvbmFsaXR5KTsKKyAgICAgICAgICAgIGZvdW5kRGlyZWN0aW9uID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0
KCpub2RlLCB0aGlzKTsKKyAgICB9CisgICAgCisgICAgaWYgKGZvdW5kRGlyZWN0aW9uKSB7Cisg
ICAgICAgIGRpcmVjdGlvbiA9ICAoY2hhckRpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklHSFQpPyBM
VFIgOiBSVEw7CisgICAgfQorICAgIAorICAgIHJldHVybiBmb3VuZERpcmVjdGlvbjsKK30KKyAg
ICAKIAogdm9pZCBFbGVtZW50OjpjYW5jZWxGb2N1c0FwcGVhcmFuY2VVcGRhdGUoKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKaW5kZXggZDdmZDE5OS4uNjNjY2U2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJTaW11
bGF0ZWRDbGlja09wdGlvbnMuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVUcmVlLmgiCisjaW5j
bHVkZSAiVGV4dEZsYWdzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzA4LDYgKzMw
OSwxMCBAQCBwdWJsaWM6CiAKICAgICBBdG9taWNTdHJpbmcgY29tcHV0ZUluaGVyaXRlZExhbmd1
YWdlKCkgY29uc3Q7CiAgICAgTG9jYWxlJiBsb2NhbGUoKSBjb25zdDsKKyAgICAKKyAgICBlbnVt
IGNsYXNzIFNlbGZEaXJlY3Rpb25hbGl0eSB7IERpckxUUiwgRGlyUlRMLCBEaXJBdXRvLCBEaXJV
bmtub3duIH07CisgICAgU2VsZkRpcmVjdGlvbmFsaXR5IHNlbGZEaXJlY3Rpb25hbGl0eSgpIGNv
bnN0OworICAgIFRleHREaXJlY3Rpb24gY29tcHV0ZUluaGVyaXRlZERpcmVjdGlvbmFsaXR5KCkg
Y29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgLypzZW5kVG9B
bnlFdmVudCovKSB7IH0KIApAQCAtNTE0LDYgKzUxOSw5IEBAIHByb3RlY3RlZDoKICAgICB2b2lk
IGNsYXNzQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5n
KTsKIAogICAgIHN0YXRpYyB2b2lkIG1lcmdlV2l0aE5leHRUZXh0Tm9kZShUZXh0JiBub2RlLCBF
eGNlcHRpb25Db2RlJik7CisgICAgCisgICAgdmlydHVhbCBib29sIGV2YWxDb250ZW50RGlyZWN0
aW9uYWxpdHkoVGV4dERpcmVjdGlvbiYgZGlyZWN0aW9uKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzRGVmYXVsdERpcmVjdGlvbmFsaXR5KFRleHREaXJlY3Rpb24mIGRpcmVjdGlvbikgY29u
c3QgeyBkaXJlY3Rpb24gPSBMVFI7IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgogICAgIGJv
b2wgaXNUZXh0Tm9kZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKaW5kZXggN2UwMzdhOS4uMGEyYzQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCkBAIC0xOTIyLDUgKzE5MjIsMjUgQEAgdm9pZCBIVE1MSW5wdXRFbGVt
ZW50OjpjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKQogewogICAgIG1faW5wdXRUeXBlLT5j
YXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKIH0KKyAgICAKK2Jvb2wgSFRNTElucHV0RWxl
bWVudDo6ZXZhbENvbnRlbnREaXJlY3Rpb25hbGl0eShUZXh0RGlyZWN0aW9uJiBkaXJlY3Rpb24p
IGNvbnN0Cit7CisgICAgYm9vbCBoYXNEaXJlY3Rpb25hbGl0eSA9IGZhbHNlOworICAgIAorICAg
IGlmIChpc1RleHRGaWVsZCgpIHx8IGlzVGVsZXBob25lRmllbGQoKSB8fCBpc1NlYXJjaEZpZWxk
KCkgfHwKKyAgICAgICAgaXNVUkxGaWVsZCgpIHx8IGlzRW1haWxGaWVsZCgpIHx8IGlzPEhUTUxU
ZXh0QXJlYUVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBVQ2hhckRpcmVjdGlvbiBjaGFyRGly
ZWN0aW9uID0gdGhpcy0+dmFsdWUoKS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigmaGFzRGlyZWN0
aW9uYWxpdHkpOworICAgICAgICAKKyAgICAgICAgaWYgKGhhc0RpcmVjdGlvbmFsaXR5KSB7Cisg
ICAgICAgICAgICBkaXJlY3Rpb24gPSAgKGNoYXJEaXJlY3Rpb24gPT0gVV9MRUZUX1RPX1JJR0hU
KT8gTFRSIDogUlRMOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9
CisgICAgCisgICAgVGV4dERpcmVjdGlvbiBmYWxsYmFja0RpcmVjdGlvbjsKKyAgICBoYXNEaXJl
Y3Rpb25hbGl0eSA9IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpldmFsQ29udGVudERpcmVj
dGlvbmFsaXR5KGZhbGxiYWNrRGlyZWN0aW9uKTsKKyAgICBkaXJlY3Rpb24gPSBmYWxsYmFja0Rp
cmVjdGlvbjsKKyAgICByZXR1cm4gaGFzRGlyZWN0aW9uYWxpdHk7Cit9CiAKIH0gLy8gbmFtZXNw
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IDliMjc1MDQuLjQ2
YTlmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0zMjYsNiAr
MzI2LDkgQEAgcHJvdGVjdGVkOgogICAgIEhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIp
OwogCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlk
ZTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgZXZhbENvbnRlbnREaXJlY3Rpb25hbGl0eShUZXh0
RGlyZWN0aW9uJiBkaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBo
YXNEZWZhdWx0RGlyZWN0aW9uYWxpdHkoVGV4dERpcmVjdGlvbiYgZGlyZWN0aW9uKSBjb25zdCBv
dmVycmlkZSB7IGRpcmVjdGlvbiA9IExUUjsgcmV0dXJuIGlzVGVsZXBob25lRmllbGQoKTsgfQog
CiBwcml2YXRlOgogICAgIGVudW0gQXV0b0NvbXBsZXRlU2V0dGluZyB7IFVuaW5pdGlhbGl6ZWQs
IE9uLCBPZmYgfTsKQEAgLTQyMCw3ICs0MjMsNyBAQCBwcml2YXRlOgogICAgIENoZWNrZWRSYWRp
b0J1dHRvbnMqIGNoZWNrZWRSYWRpb0J1dHRvbnMoKSBjb25zdDsKICAgICB2b2lkIGFkZFRvUmFk
aW9CdXR0b25Hcm91cCgpOwogICAgIHZvaWQgcmVtb3ZlRnJvbVJhZGlvQnV0dG9uR3JvdXAoKTsK
LQorICAgIAogICAgIEF0b21pY1N0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fdmFsdWVJZkRp
cnR5OwogICAgIGludCBtX3NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDM2ODRlMjguLmI5OGNiYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBA
IC03NjAsNSArNzYwLDE1IEBAIFN0cmluZyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGly
ZWN0aW9uRm9yRm9ybURhdGEoKSBjb25zdAogCiAgICAgcmV0dXJuICJsdHIiOwogfQorICAgIAor
Ym9vbCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZXZhbENvbnRlbnREaXJlY3Rpb25hbGl0
eShUZXh0RGlyZWN0aW9uJiBkaXJlY3Rpb24pIGNvbnN0Cit7CisgICAgaWYgKHRoaXMtPnZhbHVl
KCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZWxzZSB7CisgICAgICAg
IGRpcmVjdGlvbiA9IExUUjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJjb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50LmgKaW5kZXggMmNlYTFiZS4uYmZmNTNmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMTE5LDYgKzEx
OSw4IEBAIHByb3RlY3RlZDoKIAogICAgIFN0cmluZyB2YWx1ZVdpdGhIYXJkTGluZUJyZWFrcygp
IGNvbnN0OwogCisgICAgdmlydHVhbCBib29sIGV2YWxDb250ZW50RGlyZWN0aW9uYWxpdHkoVGV4
dERpcmVjdGlvbiYgZGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAgICBU
ZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rpb24gY2FjaGVkU2VsZWN0aW9uRGlyZWN0aW9uKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEZpZWxkU2VsZWN0aW9uRGlyZWN0aW9uPihtX2Nh
Y2hlZFNlbGVjdGlvbkRpcmVjdGlvbik7IH0KIApAQCAtMTM4LDcgKzE0MCw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUZvY3VzRXZlbnQoTm9kZSogLyogb2xkRm9jdXNlZE5v
ZGUgKi8sIEZvY3VzRGlyZWN0aW9uKSB7IH0KICAgICAvLyBDYWxsZWQgaW4gZGlzcGF0Y2hCbHVy
RXZlbnQoKSwgYWZ0ZXIgcGxhY2Vob2xkZXIgcHJvY2VzcywgYmVmb3JlIGNhbGxpbmcgcGFyZW50
J3MgZGlzcGF0Y2hCbHVyRXZlbnQoKS4KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQmx1ckV2ZW50
KCkgeyB9Ci0KKyAgICAKICAgICBib29sIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29u
c3Q7CiAKICAgICBTdHJpbmcgbV90ZXh0QXNPZkxhc3RGb3JtQ29udHJvbENoYW5nZUV2ZW50Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>