<?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>27968</bug_id>
          
          <creation_ts>2009-08-03 21:28:01 -0700</creation_ts>
          <short_desc>&lt;input type=number&gt; UI - Master bug</short_desc>
          <delta_ts>2011-03-01 22:57:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.whatwg.org/specs/web-apps/current-work/multipage/the-xhtml-syntax.html#the-input-element-as-domain-specific-widgets</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>27451</dependson>
    
    <dependson>29069</dependson>
    
    <dependson>31821</dependson>
    
    <dependson>32813</dependson>
    
    <dependson>35686</dependson>
    
    <dependson>38380</dependson>
    
    <dependson>38381</dependson>
    
    <dependson>38568</dependson>
    
    <dependson>38570</dependson>
    
    <dependson>42076</dependson>
    
    <dependson>42440</dependson>
    
    <dependson>42441</dependson>
    
    <dependson>42484</dependson>
    
    <dependson>43463</dependson>
    
    <dependson>44411</dependson>
    
    <dependson>44476</dependson>
          <blocked>19264</blocked>
    
    <blocked>29359</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>abarth</cc>
    
    <cc>adele</cc>
    
    <cc>aroben</cc>
    
    <cc>cshu</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>michelangelo</cc>
    
    <cc>mike</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>136893</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-03 21:28:01 -0700</bug_when>
    <thetext>The UI will be like http://docs.google.com/View?id=dch3zh37_0cf8kc8c4
That is to say, adding a NSStepperCell to the outside of the border on Mac, adding a spin control to the inside of the border on Windows.

I&apos;m making a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140161</commentid>
    <comment_count>1</comment_count>
      <attachid>34811</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-13 22:33:37 -0700</bug_when>
    <thetext>Created attachment 34811
Windows screenshot

This appearance was produced by my code (not a mock!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140164</commentid>
    <comment_count>2</comment_count>
      <attachid>34812</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-13 22:36:55 -0700</bug_when>
    <thetext>Created attachment 34812
Mac screenshot

Drawn by actual code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140183</commentid>
    <comment_count>3</comment_count>
      <attachid>34822</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-14 02:09:48 -0700</bug_when>
    <thetext>Created attachment 34822
Proposed patch


---
 33 files changed, 777 insertions(+), 46 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140187</commentid>
    <comment_count>4</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-14 02:26:22 -0700</bug_when>
    <thetext>Oops, the patch doesn&apos;t contain LayoutTests/platform/mac/fast/forms/input-number-expected.png.  bugzilla-tool doesn&apos;t support for binary files?

I don&apos;t have a Windows XP environment for now.  So the patch doesn&apos;t have tests for Windows.

Add more Forms people to Cc:.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140263</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-14 10:37:03 -0700</bug_when>
    <thetext>That Windows screenshot seems to be missing a line on top of the top arrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140989</commentid>
    <comment_count>6</comment_count>
      <attachid>35014</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-17 21:42:57 -0700</bug_when>
    <thetext>Created attachment 35014
Screen shot of a dialog in Vista

&gt; That Windows screenshot seems to be missing a line on top of the top arrow.

It&apos;s normal for this size of the control.  We can find lack of the top border on some Window&apos;s standard dialogs.  I attach an example.
The top border is drawn for larger text box.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147030</commentid>
    <comment_count>7</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-14 01:44:40 -0700</bug_when>
    <thetext>I&apos;ll split the patch into 4.
They need to be committed in order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147031</commentid>
    <comment_count>8</comment_count>
      <attachid>39537</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-14 01:48:04 -0700</bug_when>
    <thetext>Created attachment 39537
Patch part 1: definition of pseudo classes and appearances

Adds ::-webkit-inner-spin-button and ::-webkit-outer-spin-button CSS selectors
Adds -webkit-appearance:inner-spin-button and -webkit-appearance:outer-spin-button</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147032</commentid>
    <comment_count>9</comment_count>
      <attachid>39538</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-14 01:49:07 -0700</bug_when>
    <thetext>Created attachment 39538
Patch part 2: Mac implementation of outer-spin-button appearance</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147033</commentid>
    <comment_count>10</comment_count>
      <attachid>39539</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-14 01:50:41 -0700</bug_when>
    <thetext>Created attachment 39539
Patch part 3: Windows implementation of inner-spin-button appearance

This has no tests because DumpRenderTree doesn&apos;t work at all on my machine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147034</commentid>
    <comment_count>11</comment_count>
      <attachid>39540</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-14 01:52:03 -0700</bug_when>
    <thetext>Created attachment 39540
Patch part 4: Rendering of spin buttons and behavior for type=number</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149436</commentid>
    <comment_count>12</comment_count>
      <attachid>39537</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-23 10:31:35 -0700</bug_when>
    <thetext>Comment on attachment 39537
Patch part 1: definition of pseudo classes and appearances

The change looks OK.  Where did the &quot;*-spin-button&quot; names come from?  What does it have to do with spinning?  Can you post a picture of what these inputs are going to look like?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149437</commentid>
    <comment_count>13</comment_count>
      <attachid>39538</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-23 10:34:10 -0700</bug_when>
    <thetext>Comment on attachment 39538
Patch part 2: Mac implementation of outer-spin-button appearance

This change is mostly useless w/o pixel results.  If we can&apos;t see what UI you&apos;re adding, we can&apos;t really review it.  Also your ChangeLogs are still kinda empty. :(

Why have this big function if you&apos;re only going to return 0?
+const int* stepperMargins(NSControlSize controlSize)
+{
+    static const int margins[3][4] = {
+        {0, 0, 0, 0},
+        {0, 0, 0, 0},
+        {0, 0, 0, 0}
+    };
+    return margins[controlSize];
+}

No need:
+    static NSStepperCell* cell;
+    if (!cell) {
+        cell = [[NSStepperCell alloc] init];
+    }
Just do:
static NSStepperCell* cell = [[NSStepperCell alloc] init];
and that will only run once, the first time the function is called.

Needs { } due to the comment:
+    if (states &amp; PressedState &amp;&amp; states &amp; SpinUpState)
+        // FIXME: There is no way to draw a NSSteperCell with the up button hilighted.
+        // Disables the hilight of the down button if the up button is pressed.
+        [cell setHighlighted:NO];</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149438</commentid>
    <comment_count>14</comment_count>
      <attachid>39539</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-23 10:36:01 -0700</bug_when>
    <thetext>Comment on attachment 39539
Patch part 3: Windows implementation of inner-spin-button appearance

Adam Roben, or someone familiar with the windows code should review this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149439</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-23 10:36:37 -0700</bug_when>
    <thetext>Why are these called spin buttons if the Mac APIs call them steppers?  Does windows call these &quot;Spin buttons&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149441</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-23 10:38:18 -0700</bug_when>
    <thetext>Why are they called inner and outer spin buttons if they&apos;re really up and down steppers?  Please cite the spec, or talk about where these names came from.  Ideally in your ChangeLogs, since that&apos;s what reviewers read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149525</commentid>
    <comment_count>17</comment_count>
      <attachid>39540</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-09-23 15:42:27 -0700</bug_when>
    <thetext>Comment on attachment 39540
Patch part 4: Rendering of spin buttons and behavior for type=number

Quick pass with some things to fix. 

Please take each comment as something to look for throughout the patch (as things usually occur more than once).

Your changelog seems a bit sparse.
Please remove commented out code.
Please remove printf&apos;s.

&gt;+ Test for the spin control behavior in a type=numnber input.
typo: numnber

&gt; + #define EPSILON (16.0 * std::numeric_limits&lt;double&gt;::epsilon())

Why is this a define instead of a const double? Also epsilon doesn&apos;t seem like the right name since it is 16 * epsilon.

&gt; + void HTMLInputElement::stepUpFromUI(int n)
&quot;n&quot; A more meaningful variable name would be better.


&gt; + void paintBoxDecorationsWithSize(PaintInfo&amp;, int, int, int, int);

Don&apos;t include parameter names if they don&apos;t add information but in this case the names for the int parameters would add a lot of information.

This occurs in several places but I just picked out one.

&gt; + // Center the spin button vertically, and move it to the right
Finish sentences with &quot;.&quot;

&gt; + const MouseEvent* mevt = static_cast&lt;MouseEvent*&gt;(evt);
&quot;mevt&quot; Use whole words.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166002</commentid>
    <comment_count>18</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-11-23 22:24:55 -0800</bug_when>
    <thetext>I&apos;m moving all 4 patches to their own bugs and making this meta-bug.
Sorry for the mess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219409</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-30 02:11:02 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/58564 might have broken Qt Linux ARMv5 Release and Qt Linux ARMv7 Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360601</commentid>
    <comment_count>20</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-03-01 22:57:08 -0800</bug_when>
    <thetext>I think we have completed &lt;input type=number&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>34811</attachid>
            <date>2009-08-13 22:33:37 -0700</date>
            <delta_ts>2009-08-13 22:33:37 -0700</delta_ts>
            <desc>Windows screenshot</desc>
            <filename>number-windows.png</filename>
            <type>image/png</type>
            <size>3413</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>34812</attachid>
            <date>2009-08-13 22:36:55 -0700</date>
            <delta_ts>2009-09-03 01:29:13 -0700</delta_ts>
            <desc>Mac screenshot</desc>
            <filename>Picture 1</filename>
            <type>image/png</type>
            <size>4943</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34822</attachid>
            <date>2009-08-14 02:09:48 -0700</date>
            <delta_ts>2009-09-14 01:48:04 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-27968-20090814180946.patch</filename>
            <type>text/plain</type>
            <size>62529</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0M2E5NjFhLi44NjM2ZTA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDQgKzEsMTggQEAKLSAgICAyMDA5
LTA4LTEzICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisyMDA5LTA4LTE0ICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3IgPGlucHV0IHR5cGU9bnVtYmVyPiBVSS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3OTY4CisK
KyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LW51bWJlci1jbGljay1tYWMuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXIuaHRtbDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvaW5wdXQtbnVtYmVyLWNsaWNrLW1hYy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LW51
bWJlci1leHBlY3RlZC5jaGVja3N1bTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zh
c3QvZm9ybXMvaW5wdXQtbnVtYmVyLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjL2Zhc3QvZm9ybXMvaW5wdXQtbnVtYmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisK
KzIwMDktMDgtMTMgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9pbnB1dC1udW1iZXItY2xpY2stbWFjLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2lucHV0LW51bWJlci1jbGljay1tYWMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4wOTMxNzI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9pbnB1dC1udW1iZXItY2xpY2stbWFjLmh0bWwKQEAgLTAsMCArMSw1NiBAQAorPCFkb2N0eXBl
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CisKKzxpbnB1dCBpZD1pMSB0eXBlPW51bWJlciB2YWx1ZT0iMy4xNCIgYXV0b2ZvY3Vz
IHN0ZXA9MSBtaW49MCBtYXg9NT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisvL2Rlc2NyaXB0aW9uKCdUZXN0IGZvciB0aGUg
c3BpbiBjb250cm9sIGJlaGF2aW9yIGluIGEgdHlwZT1udW1uYmVyIGlucHV0LicpOworCitpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgLy8gVGhlIHNwaW4gY29udHJvbCBpcyBhdCAoMTMw
LC0xKSBpbiB0aGUgaW5wdXQgZWxlbWVudCBvbiBNYWMuCisgICAgLy8gVGhlIHNpemUgaXMgMTV4
MjIuCisgICAgdmFyIGkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaTEnKTsKKyAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhpLm9mZnNldExlZnQgKyAxMzUsIGkub2Zmc2V0VG9wICsgNCk7
CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgp
OworICAgIC8vIFRoZSB1cCBidXR0b24gaGFzIGJlZW4gY2xpY2tlZC4KKyAgICBzaG91bGRCZSgn
aS52YWx1ZScsICciNC4xNCInKTsKKworICAgIC8vIENsaWNrIGl0IGFnYWluLgorICAgIGV2ZW50
U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAvLyBU
aGUgbWF4aW11bSB2YWx1ZSBpcyA1LiAgU28gdGhlIHZhbHVlIGlzIG5vdCBjaGFuZ2VkLgorICAg
IHNob3VsZEJlKCdpLnZhbHVlJywgJyI0LjE0IicpOworCisgICAgLy8gQ2xpY2sgdGhlIGRvd24g
YnV0dG9uIGZvciB0aW1lcy4KKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhpLm9mZnNldExl
ZnQgKyAxMzUsIGkub2Zmc2V0VG9wICsgMTUpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24o
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93
bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICBzaG91bGRCZSgnaS52YWx1ZScs
ICciMC4xNCInKTsKKworICAgIC8vIFRoZSBtaW5pbXVtIHZhbHVlIGlzIDAuICBTbyB0aGUgdmFs
dWUgaXMgbm90IGNoYW5nZWQuCisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZl
bnRTZW5kZXIubW91c2VVcCgpOworICAgIHNob3VsZEJlKCdpLnZhbHVlJywgJyIwLjE0IicpOwor
fSBlbHNlIHsKKyAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwg
PSAnTm8gZXZlbnRTZW5kZXInOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2lucHV0LW51bWJlci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9pbnB1dC1udW1iZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
NzVhNDg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1u
dW1iZXIuaHRtbApAQCAtMCwwICsxLDE3IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzwvaGVhZD4KKzxib2R5PgorCis8aW5wdXQgaWQ9aTEgdHlw
ZT1udW1iZXIgdmFsdWU9IjMuMTQiPgorCis8cCBpZD0iZGVzY3JpcHRpb24iPlRlc3QgZm9yIHRo
ZSBhcHBlYXJhbmNlIG9mIHRoZSBOdW1iZXIgdHlwZS4KK09uIE1hYywgdGhlIHNwaW4gY29udHJv
bCBpcyBhdCB0aGUgb3V0c2lkZSBvZiB0aGUgYm9yZGVyLCBhbmQgdGhlIGZvY3VzIHJpbmcgZG9l
c24ndCBpbmNsdWRlIHRoZSBzcGluIGNvbnRyb2wuCitPbiBXaW5kb3dzLCB0aGUgc3BpbiBjb250
cm9sIGlzIGF0IHRoZSBpbnNpZGUgb2YgdGhlIGJvcmRlci48L3A+Cis8c2NyaXB0PgorZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2kxJykuZm9jdXMoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvaW5w
dXQtbnVtYmVyLWNsaWNrLW1hYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXItY2xpY2stbWFjLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWQ4MGM0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvaW5wdXQtbnVtYmVyLWNsaWNrLW1h
Yy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACisKK1BBU1MgaS52YWx1ZSBpcyAiNC4xNCIK
K1BBU1MgaS52YWx1ZSBpcyAiNC4xNCIKK1BBU1MgaS52YWx1ZSBpcyAiMC4xNCIKK1BBU1MgaS52
YWx1ZSBpcyAiMC4xNCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jt
cy9pbnB1dC1udW1iZXItZXhwZWN0ZWQuY2hlY2tzdW0gYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXItZXhwZWN0ZWQuY2hlY2tzdW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk1YTRiNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LW51bWJlci1leHBlY3RlZC5jaGVj
a3N1bQpAQCAtMCwwICsxIEBACis4ZDY0NzU3YjUzOWM4M2Y4NTZhNzYyMWM5MzAyYzE3OApcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2Zvcm1zL2lucHV0LW51bWJlci1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXItZXhwZWN0ZWQucG5nCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjYTMyYjcKQmluYXJ5IGZpbGVzIC9kZXYvbnVs
bCBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXIt
ZXhwZWN0ZWQucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvZm9ybXMvaW5wdXQtbnVtYmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LW51bWJlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ViYTMyYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LW51bWJlci1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwyMCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZp
ZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg5OQorICBS
ZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4OTkKKyAgICBSZW5kZXJCb2R5IHtC
T0RZfSBhdCAoOCw4KSBzaXplIDc4NHg3NQorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykg
YXQgKDAsMCkgc2l6ZSA3ODR4MjMKKyAgICAgICAgUmVuZGVyVGV4dENvbnRyb2wge0lOUFVUfSBh
dCAoMiwyKSBzaXplIDE0OHgxOSBbYmdjb2xvcj0jRkZGRkZGXSBbYm9yZGVyOiAoMnB4IGluc2V0
ICMwMDAwMDApXQorICAgICAgICAgIFJlbmRlckJsb2NrIHstd2Via2l0LXNwaW4tYnV0dG9ufSBh
dCAoMTI2LDIpIHNpemUgMHgxNQorICAgICAgICAgIFJlbmRlckJsb2NrIHstd2Via2l0LXNwaW4t
YnV0dG9ufSBhdCAoMTMwLC0xKSBzaXplIDE1eDIyCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDM5KSBzaXpl
IDc4NHgzNgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NDZ4MzYK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NDY6ICJUZXN0IGZvciB0aGUgYXBw
ZWFyYW5jZSBvZiB0aGUgTnVtYmVyIHR5cGUuIE9uIE1hYywgdGhlIHNwaW4gY29udHJvbCBpcyBh
dCB0aGUgb3V0c2lkZSBvZiB0aGUgYm9yZGVyLCBhbmQgdGhlIGZvY3VzIHJpbmciCisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMTgpIHdpZHRoIDU3NTogImRvZXNuJ3QgaW5jbHVkZSB0aGUgc3Bp
biBjb250cm9sLiBPbiBXaW5kb3dzLCB0aGUgc3BpbiBjb250cm9sIGlzIGF0IHRoZSBpbnNpZGUg
b2YgdGhlIGJvcmRlci4iCitsYXllciBhdCAoMTMsMTMpIHNpemUgMTIyeDEzCisgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgzLDMpIHNpemUgMTIyeDEzCisgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgxLDApIHNpemUgMjV4MTMKKyAgICAgIHRleHQgcnVuIGF0ICgxLDApIHdpZHRoIDI1OiAiMy4x
NCIKK3NlbGVjdGlvbiBzdGFydDogcG9zaXRpb24gMCBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hp
bGQgMCB7RElWfSBvZiBjaGlsZCAxIHtJTlBVVH0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQg
MSB7SFRNTH0gb2YgZG9jdW1lbnQKK3NlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gNCBvZiBjaGls
ZCAwIHsjdGV4dH0gb2YgY2hpbGQgMCB7RElWfSBvZiBjaGlsZCAxIHtJTlBVVH0gb2YgY2hpbGQg
MSB7Qk9EWX0gb2YgY2hpbGQgMSB7SFRNTH0gb2YgZG9jdW1lbnQKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI5MmFjMS4uODUyNzNmMSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMDYgQEAKKzIwMDktMDgtMTQgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBhIHNwaW4gY29udHJvbCB0byA8aW5wdXQgdHlwZT1udW1iZXI+LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc5NjgKKworICAgICAgICAtIEludHJv
ZHVjZSBuZXcgcHNldWRvIHNlbGVjdG9yczogLXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiBhbmQg
LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbgorICAgICAgICAtIEludHJvZHVjZSBuZXcgYXBwZXJh
bmNlczogaW5uZXItc3Bpbi1idXR0b24gYW5kIG91dGVyLXNwaW4tYnV0dG9uCisgICAgICAgIC0g
SW1wbGVtZW50IGlubmVyLXNwaW4tYnV0dG9uIGZvciBXaW5kb3dzCisgICAgICAgIC0gSW1wbGVt
ZW50IG91dGVyLXNwaW4tYnV0dG9uIGZvciBNYWMKKyAgICAgICAgLSBTcGluQnV0dG9uRWxlbWVu
dCBpbXBsZW1lbnRzIHRoZSBiZWhhdmlvciBvZiB0aGUgc3BpbiBjb250cm9sLgorCisgICAgICAg
IFRlc3RzOiBmYXN0L2Zvcm1zL2lucHV0LW51bWJlci1jbGljay1tYWMuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXIuaHRtbAorCisgICAgICAgICogY3NzL0NTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSk6CisgICAg
ICAgICogY3NzL0NTU1NlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6
KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IpOgor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAqIGNzcy9odG1sLmNz
czoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
Ojpwc2V1ZG9TdHlsZUNhY2hlSXNJbnZhbGlkKToKKyAgICAgICAgKiBkb20vSW5wdXRFbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEVsZW1lbnQ6Omhhc1NwaW5CdXR0b24pOgorICAg
ICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluOgorICAgICAgICAqIGh0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzdHJp
bmdUb051bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzdGVwVXBG
cm9tVUkpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6aGFzU3BpbkJ1dHRvbik6CisgICAgICAgICogcGxhdGZv
cm0vVGhlbWVUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpzdGVwcGVyU2l6ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6c3RlcHBlck1hcmdpbnMpOgorICAgICAgICAoV2ViQ29yZTo6c3RlcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpwYWludFN0ZXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGhlbWVNYWM6OmNvbnRyb2xTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjptaW5p
bXVtQ29udHJvbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OmluZmxhdGVDb250
cm9sUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpw
YWludEJveERlY29yYXRpb25zV2l0aFNpemUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6flJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmU6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjphZGRGb2N1c1JpbmdSZWN0cyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmxheW91dCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6Om5vZGVBdFBvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6Zm9yd2FyZEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c3R5bGVE
aWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
Ojp0ZXh0QmxvY2tXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmU6OmRlY29yYXRpb25XaWR0aFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZTo6cHJlZmVycmVkQ29udGVudFdpZHRoKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6cHJlZmVycmVkRGVjb3JhdGlv
bldpZHRoUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lOjpjcmVhdGVTdWJ0cmVlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lOjpjcmVhdGVJbm5lclRleHRTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNyZWF0ZUlubmVyU3BpbkJ1dHRvblN0
eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6Y3Jl
YXRlT3V0ZXJTcGluQnV0dG9uU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZTo6Y29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lOjppc1NwaW5VcEJ1dHRvblBhcnRQcmVzc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lOjppc1NwaW5VcEJ1dHRvblBhcnRIb3ZlcmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lOjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0T3V0ZXJTcGluQnV0dG9uU3R5bGUpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6
OnBhaW50SW5uZXJTcGluQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpw
YWludE91dGVyU3BpbkJ1dHRvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OmFkanVzdFJlcGFpbnRSZWN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVXaW46OlJlbmRlclRoZW1lV2luKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lV2luOjpzcGluQnV0dG9uVGhlbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVXaW46OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpk
ZXRlcm1pbmVDbGFzc2ljU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46
OmRldGVybWluZVNwaW5CdXR0b25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZVdpbjo6Z2V0Q2xhc3NpY1RoZW1lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZVdpbjo6Z2V0VGhlbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjph
ZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZVdpbjo6cGFpbnRJbm5lclNwaW5CdXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZVdpbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OlNwaW5CdXR0b25FbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpzcGluQnV0dG9u
Tm9kZU5hbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50Ojpub2RlTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTcGluQnV0dG9uRWxlbWVudDo6aXNFbmFibGVkRm9ybUNvbnRyb2wpOgor
ICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6Om9uVXBCdXR0b24pOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICAoV2Vi
Q29yZTo6KToKKwogMjAwOS0wOC0xMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIGIvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWVNYXBwaW5ncy5oCmluZGV4IGJlOTY0MDcuLjlkYmQzZTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZU1hcHBpbmdzLmgKQEAgLTE5NSw2ICsxOTUsOSBAQCB0ZW1wbGF0ZTw+IGlubGlu
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ29udHJvbFBhcnQgZSkKICAg
ICAgICAgY2FzZSBEZWZhdWx0QnV0dG9uUGFydDoKICAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQg
PSBDU1NWYWx1ZURlZmF1bHRCdXR0b247CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBJbm5lclNwaW5CdXR0b25QYXJ0OgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU1Zh
bHVlSW5uZXJTcGluQnV0dG9uOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTGlz
dGJveFBhcnQ6CiAgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVMaXN0Ym94Owog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0yNDksNiArMjUyLDkgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKENvbnRyb2xQYXJ0IGUpCiAgICAg
ICAgIGNhc2UgTWVudWxpc3RUZXh0RmllbGRQYXJ0OgogICAgICAgICAgICAgbV92YWx1ZS5pZGVu
dCA9IENTU1ZhbHVlTWVudWxpc3RUZXh0ZmllbGQ7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBPdXRlclNwaW5CdXR0b25QYXJ0OgorICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9
IENTU1ZhbHVlT3V0ZXJTcGluQnV0dG9uOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgU2xpZGVySG9yaXpvbnRhbFBhcnQ6CiAgICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NT
VmFsdWVTbGlkZXJIb3Jpem9udGFsOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAK
aW5kZXggMjVkYmQ4Ny4uZTI4ZmNkNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3IuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtOTcsNiArOTcsNyBA
QCB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZvY3VzLCAoImZvY3VzIikpOwogICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBob3ZlciwgKCJob3ZlciIpKTsKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaW5kZXRlcm1pbmF0ZSwgKCJpbmRldGVybWlu
YXRlIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpbm5lclNwaW5C
dXR0b24sICgiLXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiIpKTsKICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgaW5wdXRQbGFjZWhvbGRlciwgKCItd2Via2l0LWlucHV0LXBs
YWNlaG9sZGVyIikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBsYXN0
Q2hpbGQsICgibGFzdC1jaGlsZCIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgbGFzdE9mVHlwZSwgKCJsYXN0LW9mLXR5cGUiKSk7CkBAIC0xMTksNiArMTIwLDcgQEAg
dm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdAogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBvbmx5Q2hpbGQsICgib25seS1jaGlsZCIpKTsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgb25seU9mVHlwZSwgKCJvbmx5LW9m
LXR5cGUiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG9wdGlvbmFs
LCAoIm9wdGlvbmFsIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBv
dXRlclNwaW5CdXR0b24sICgiLXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiIpKTsKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVxdWlyZWQsICgicmVxdWlyZWQiKSk7CiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHJlc2l6ZXIsICgiLXdlYmtpdC1y
ZXNpemVyIikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCByb290LCAo
InJvb3QiKSk7CkBAIC0yMTYsNyArMjE4LDEwIEBAIHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQ
c2V1ZG9UeXBlKCkgY29uc3QKICAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvSG92ZXI7CiAg
ICAgZWxzZSBpZiAobV92YWx1ZSA9PSBpbmRldGVybWluYXRlKQogICAgICAgICBtX3BzZXVkb1R5
cGUgPSBQc2V1ZG9JbmRldGVybWluYXRlOwotICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0gbGluaykK
KyAgICBlbHNlIGlmIChtX3ZhbHVlID09IGlubmVyU3BpbkJ1dHRvbikgeworICAgICAgICBtX3Bz
ZXVkb1R5cGUgPSBQc2V1ZG9Jbm5lclNwaW5CdXR0b247CisgICAgICAgIGVsZW1lbnQgPSB0cnVl
OworICAgIH0gZWxzZSBpZiAobV92YWx1ZSA9PSBsaW5rKQogICAgICAgICBtX3BzZXVkb1R5cGUg
PSBQc2V1ZG9MaW5rOwogICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0gbGFuZykKICAgICAgICAgbV9w
c2V1ZG9UeXBlID0gUHNldWRvTGFuZzsKQEAgLTI2OSw3ICsyNzQsMTAgQEAgdm9pZCBDU1NTZWxl
Y3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdAogICAgICAgICBtX3BzZXVkb1R5cGUgPSBQ
c2V1ZG9OdGhMYXN0Q2hpbGQ7CiAgICAgZWxzZSBpZiAobV92YWx1ZSA9PSBudGhMYXN0T2ZUeXBl
KQogICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9OdGhMYXN0T2ZUeXBlOwotICAgIGVsc2Ug
aWYgKG1fdmFsdWUgPT0gcm9vdCkKKyAgICBlbHNlIGlmIChtX3ZhbHVlID09IG91dGVyU3BpbkJ1
dHRvbikgeworICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9PdXRlclNwaW5CdXR0b247Cisg
ICAgICAgIGVsZW1lbnQgPSB0cnVlOworICAgIH0gZWxzZSBpZiAobV92YWx1ZSA9PSByb290KQog
ICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9Sb290OwogICAgIGVsc2UgaWYgKG1fdmFsdWUg
PT0gd2luZG93SW5hY3RpdmUpCiAgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb1dpbmRvd0lu
YWN0aXZlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1dlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yLmgKaW5kZXggNTNkZTUwZC4uZWJlOGQ4NSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCkBA
IC0xNzksNyArMTc5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgUHNldWRv
TWVkaWFDb250cm9sc1Jld2luZEJ1dHRvbiwKICAgICAgICAgICAgIFBzZXVkb01lZGlhQ29udHJv
bHNSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uLAogICAgICAgICAgICAgUHNldWRvTWVkaWFDb250cm9s
c1N0YXR1c0Rpc3BsYXksCi0gICAgICAgICAgICBQc2V1ZG9NZWRpYUNvbnRyb2xzRnVsbHNjcmVl
bkJ1dHRvbgorICAgICAgICAgICAgUHNldWRvTWVkaWFDb250cm9sc0Z1bGxzY3JlZW5CdXR0b24s
CisgICAgICAgICAgICBQc2V1ZG9Jbm5lclNwaW5CdXR0b24sCisgICAgICAgICAgICBQc2V1ZG9P
dXRlclNwaW5CdXR0b24sCiAgICAgICAgIH07CiAKICAgICAgICAgUHNldWRvVHlwZSBwc2V1ZG9U
eXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
IGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggMGI4MGExYi4uNmNjMjRj
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTI1NDgsNiArMjU0OCwxMiBAQCBib29s
IENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NT
ZWxlY3Rvciogc2VsLCBFbGVtZQogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
UmVzaXplcjoKICAgICAgICAgICAgICAgICBkeW5hbWljUHNldWRvID0gUkVTSVpFUjsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0lubmVyU3BpbkJ1dHRvbjoKKyAgICAgICAgICAgICAgICBkeW5hbWljUHNldWRvID0gSU5O
RVJfU1BJTl9CVVRUT047CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9PdXRlclNwaW5CdXR0b246CisgICAgICAgICAgICAg
ICAgZHluYW1pY1BzZXVkbyA9IE9VVEVSX1NQSU5fQlVUVE9OOworICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bjoK
ICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb05vdFBhcnNlZDoKICAgICAgICAg
ICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmlu
IGIvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgppbmRleCA2MjEyNzZiLi44OTdlZWFh
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCisrKyBiL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KQEAgLTQ5OSw2ICs0OTksNyBAQCBzcXVhcmUtYnV0
dG9uCiBidXR0b24KIGJ1dHRvbi1iZXZlbAogZGVmYXVsdC1idXR0b24KK2lubmVyLXNwaW4tYnV0
dG9uCiBsaXN0Ym94CiBsaXN0aXRlbQogbWVkaWEtZnVsbHNjcmVlbi1idXR0b24KQEAgLTUxNyw2
ICs1MTgsNyBAQCBtZW51bGlzdAogbWVudWxpc3QtYnV0dG9uCiBtZW51bGlzdC10ZXh0CiBtZW51
bGlzdC10ZXh0ZmllbGQKK291dGVyLXNwaW4tYnV0dG9uCiBzbGlkZXItaG9yaXpvbnRhbAogc2xp
ZGVyLXZlcnRpY2FsCiBzbGlkZXJ0aHVtYi1ob3Jpem9udGFsCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2Nzcy9odG1sLmNzcyBiL1dlYkNvcmUvY3NzL2h0bWwuY3NzCmluZGV4IDZiMDMzOTAuLjcyN2Y4
MjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL2h0bWwuY3NzCisrKyBiL1dlYkNvcmUvY3NzL2h0
bWwuY3NzCkBAIC0zNTAsNiArMzUwLDE3IEBAIGlucHV0W3R5cGU9InNlYXJjaCJdOjotd2Via2l0
LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiB7CiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogfQog
CitpbnB1dDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7CisgICAgLXdlYmtpdC1hcHBlYXJh
bmNlOiBpbm5lci1zcGluLWJ1dHRvbjsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cit9CisK
K2lucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHsKKyAgICAtd2Via2l0LWFwcGVhcmFu
Y2U6IG91dGVyLXNwaW4tYnV0dG9uOworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICBt
YXJnaW4tbGVmdDogMnB4OworfQorCiB0ZXh0YXJlYSB7CiAgICAgLXdlYmtpdC1hcHBlYXJhbmNl
OiB0ZXh0YXJlYTsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMTk1
NmJlNC4uM2FmOTZkZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTc5Miw3ICs3OTIsNyBAQCBib29sIEVsZW1lbnQ6
OnBzZXVkb1N0eWxlQ2FjaGVJc0ludmFsaWQoY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHls
ZSwgUmVuZGVyUwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBuZXdQc2V1ZG9TdHlsZSA9IHJl
bmRlcmVyKCktPmdldFVuY2FjaGVkUHNldWRvU3R5bGUocHNldWRvSWQsIG5ld1N0eWxlLCBuZXdT
dHlsZSk7CiAKLSAgICAgICAgaWYgKCpuZXdQc2V1ZG9TdHlsZSAhPSAqcHNldWRvU3R5bGVDYWNo
ZVtpXSkgeworICAgICAgICBpZiAobmV3UHNldWRvU3R5bGUgJiYgKm5ld1BzZXVkb1N0eWxlICE9
ICpwc2V1ZG9TdHlsZUNhY2hlW2ldKSB7CiAgICAgICAgICAgICBpZiAocHNldWRvSWQgPCBGSVJT
VF9JTlRFUk5BTF9QU0VVRE9JRCkKICAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0SGFzUHNl
dWRvU3R5bGUocHNldWRvSWQpOwogICAgICAgICAgICAgbmV3U3R5bGUtPmFkZENhY2hlZFBzZXVk
b1N0eWxlKG5ld1BzZXVkb1N0eWxlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0lucHV0RWxl
bWVudC5oIGIvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmgKaW5kZXggN2FkM2NiZC4uYTdmYzA2
ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9k
b20vSW5wdXRFbGVtZW50LmgKQEAgLTQzLDYgKzQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBpc1Bhc3N3b3JkRmllbGQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzU2Vh
cmNoRmllbGQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVGV4dEZpZWxkKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNTcGluQnV0dG9uKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2VhcmNoRXZlbnRzU2hvdWxkQmVEaXNwYXRj
aGVkKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVO
YW1lcy5pbiBiL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggMWNhZjQ3
My4uN2UyMTk5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5p
bgorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBAIC0yMjEsNiArMjIx
LDcgQEAgc3BlbGxjaGVjawogc3JjCiBzdGFuZGJ5CiBzdGFydAorc3RlcAogc3R5bGUKIHN1bW1h
cnkKIHRhYmluZGV4CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMmJmODUxOS4uYjE5
NzJhZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNTcsNyArNTcsOSBAQAogI2lu
Y2x1ZGUgIlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIgogI2luY2x1ZGUgIlJlbmRlclRo
ZW1lLmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL2R0b2EuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtMTc2NSw0ICsxNzY3LDYwIEBAIGJvb2wgSFRN
TElucHV0RWxlbWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdAogICAgIHJl
dHVybiBtX2RhdGEucGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKTsKIH0KIAorYm9vbCBIVE1M
SW5wdXRFbGVtZW50OjpzdHJpbmdUb051bWJlcihjb25zdCBTdHJpbmcmIHNyYywgZG91YmxlKiBv
dXQpCit7CisgICAgaWYgKHNyYy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBjaGFyKiBhc2NpaVNvdXJjZSA9IG5ldyBjaGFyW3NyYy5sZW5ndGgoKSArIDFdOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzcmMubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAo
c3JjW2ldID49IDB4ODApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGFzY2lp
U291cmNlW2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc3JjW2ldKTsKKyAgICB9CisgICAgYXNjaWlT
b3VyY2Vbc3JjLmxlbmd0aCgpXSA9IDA7CisgICAgY2hhciogZW5kID0gMDsKKyAgICBkb3VibGUg
dmFsdWUgPSBXVEY6OnN0cnRvZChhc2NpaVNvdXJjZSwgJmVuZCk7CisgICAgaWYgKGVuZCAhPSBh
c2NpaVNvdXJjZSArIHNyYy5sZW5ndGgoKSkgeworICAgICAgICBkZWxldGVbXSBhc2NpaVNvdXJj
ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBkZWxldGVbXSBhc2NpaVNvdXJj
ZTsKKyAgICBpZiAoaXNuYW4odmFsdWUpIHx8IGlzaW5mKHZhbHVlKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICpvdXQgPSB2YWx1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBI
VE1MSW5wdXRFbGVtZW50OjpzdGVwVXBGcm9tVUkoaW50IG4pCit7CisgICAgaWYgKGlucHV0VHlw
ZSgpICE9IE5VTUJFUikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFdlJ2xsIHJl
aW1wbGVtZW50IHRoaXMgbWV0aG9kIGFmdGVyIG1pbi9tYXgvc3RlcCBjb25zdHJhaW50IHZhbGlk
YXRpb24gaXMgaW1wbGVtZW50ZWQuCisgICAgZG91YmxlIGN1cnJlbnQ7CisgICAgaWYgKCFzdHJp
bmdUb051bWJlcih2YWx1ZSgpLCAmY3VycmVudCkpIHsKKyAgICAgICAgLy8gVGhlIGN1cnJlbnQg
dmFsdWUgaXMgaW52YWxpZC4KKyAgICAgICAgZG91YmxlIGxpbWl0OworICAgICAgICBpZiAobiA+
IDAgJiYgc3RyaW5nVG9OdW1iZXIoZ2V0QXR0cmlidXRlKG1pbkF0dHIpLCAmbGltaXQpKQorICAg
ICAgICAgICAgc2V0VmFsdWUoU3RyaW5nOjpudW1iZXIobGltaXQpKTsKKyAgICAgICAgZWxzZSBp
ZiAobiA8IDAgJiYgc3RyaW5nVG9OdW1iZXIoZ2V0QXR0cmlidXRlKG1heEF0dHIpLCAmbGltaXQp
KQorICAgICAgICAgICAgc2V0VmFsdWUoU3RyaW5nOjpudW1iZXIobGltaXQpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgc2V0VmFsdWUoU3RyaW5nOjpudW1iZXIoMCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGRvdWJsZSBzdGVwOworICAgIGlmICghc3RyaW5nVG9OdW1iZXIo
Z2V0QXR0cmlidXRlKHN0ZXBBdHRyKSwgJnN0ZXApIHx8IHN0ZXAgPD0gMC4wKQorICAgICAgICBz
dGVwID0gMS4wOworICAgIGN1cnJlbnQgKz0gc3RlcCAqIG47CisgICAgZG91YmxlIGxpbWl0Owor
ICAgIGlmIChzdHJpbmdUb051bWJlcihnZXRBdHRyaWJ1dGUobWluQXR0ciksICZsaW1pdCkgJiYg
Y3VycmVudCA8IGxpbWl0KQorICAgICAgICByZXR1cm47CisgICAgaWYgKHN0cmluZ1RvTnVtYmVy
KGdldEF0dHJpYnV0ZShtYXhBdHRyKSwgJmxpbWl0KSAmJiBjdXJyZW50ID4gbGltaXQpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBTdHJpbmc6Om51bWJlcigpIHByZWZlcnMgc2Np
ZW50aWZpYyBub3RhdGlvbnMuICBJdCdzIG5vdCBnb29kIGZvciBpbnRlZ2Vycy4KKyAgICBzZXRW
YWx1ZShTdHJpbmc6Om51bWJlcihjdXJyZW50KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaAppbmRleCA0ZDg4N2YzLi40NTUxZjRjIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmgKQEAgLTk5LDYgKzk5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1Nl
YXJjaEZpZWxkKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFNFQVJDSDsgfQogICAgIHZpcnR1
YWwgYm9vbCBpc0lucHV0VHlwZUhpZGRlbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBISURE
RU47IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQYXNzd29yZEZpZWxkKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlID09IFBBU1NXT1JEOyB9CisgICAgdmlydHVhbCBib29sIGhhc1NwaW5CdXR0b24oKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gTlVNQkVSOyB9CiAKICAgICBib29sIGNoZWNrZWQoKSBj
b25zdCB7IHJldHVybiBtX2NoZWNrZWQ7IH0KICAgICB2b2lkIHNldENoZWNrZWQoYm9vbCwgYm9v
bCBzZW5kQ2hhbmdlRXZlbnQgPSBmYWxzZSk7CkBAIC0yMjMsNiArMjI0LDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCB3aWxsVmFsaWRhdGUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9v
bCBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0OworCisgICAgdm9pZCBzdGVwVXBG
cm9tVUkoaW50KTsKKyAgICBzdGF0aWMgYm9vbCBzdHJpbmdUb051bWJlcihjb25zdCBTdHJpbmcm
LCBkb3VibGUqKTsKICAgICAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVU
b05ld093bmVyRG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWVU
eXBlcy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmgKaW5kZXggYjc2MzY3NS4uNjcy
MjVlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmgKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmgKQEAgLTM4LDYgKzM4LDcgQEAgZW51bSBDb250cm9s
U3RhdGUgewogICAgIERlZmF1bHRTdGF0ZSA9IDEgPDwgNiwKICAgICBXaW5kb3dJbmFjdGl2ZVN0
YXRlID0gMSA8PCA3LAogICAgIEluZGV0ZXJtaW5hdGVTdGF0ZSA9IDEgPDwgOCwKKyAgICBTcGlu
VXBTdGF0ZSA9IDEgPDwgOSwgIC8vIFN1Yi1zdGF0ZSBmb3IgSG92ZXJTdGF0ZSBhbmQgUHJlc3Nl
ZFN0YXRlCiAgICAgQWxsU3RhdGVzID0gMHhmZmZmZmZmZgogfTsKIApAQCAtNDYsMTMgKzQ3LDEz
IEBAIHR5cGVkZWYgdW5zaWduZWQgQ29udHJvbFN0YXRlczsKIC8vIE11c3QgZm9sbG93IENTU1Zh
bHVlS2V5d29yZHMuaW4gb3JkZXIKIGVudW0gQ29udHJvbFBhcnQgewogICAgIE5vQ29udHJvbFBh
cnQsIENoZWNrYm94UGFydCwgUmFkaW9QYXJ0LCBQdXNoQnV0dG9uUGFydCwgU3F1YXJlQnV0dG9u
UGFydCwgQnV0dG9uUGFydCwKLSAgICBCdXR0b25CZXZlbFBhcnQsIERlZmF1bHRCdXR0b25QYXJ0
LCBMaXN0Ym94UGFydCwgTGlzdEl0ZW1QYXJ0LCAKKyAgICBCdXR0b25CZXZlbFBhcnQsIERlZmF1
bHRCdXR0b25QYXJ0LCBJbm5lclNwaW5CdXR0b25QYXJ0LCBMaXN0Ym94UGFydCwgTGlzdEl0ZW1Q
YXJ0LAogICAgIE1lZGlhRnVsbHNjcmVlbkJ1dHRvblBhcnQsIE1lZGlhTXV0ZUJ1dHRvblBhcnQs
IE1lZGlhUGxheUJ1dHRvblBhcnQsIE1lZGlhU2Vla0JhY2tCdXR0b25QYXJ0LCAKICAgICBNZWRp
YVNlZWtGb3J3YXJkQnV0dG9uUGFydCwgTWVkaWFSZXdpbmRCdXR0b25QYXJ0LCBNZWRpYVJldHVy
blRvUmVhbHRpbWVCdXR0b25QYXJ0LAogICAgIE1lZGlhU2xpZGVyUGFydCwKICAgICBNZWRpYVNs
aWRlclRodW1iUGFydCwgTWVkaWFDb250cm9sc0JhY2tncm91bmRQYXJ0LAogICAgIE1lZGlhQ3Vy
cmVudFRpbWVQYXJ0LCBNZWRpYVRpbWVSZW1haW5pbmdQYXJ0LAotICAgIE1lbnVsaXN0UGFydCwg
TWVudWxpc3RCdXR0b25QYXJ0LCBNZW51bGlzdFRleHRQYXJ0LCBNZW51bGlzdFRleHRGaWVsZFBh
cnQsCisgICAgTWVudWxpc3RQYXJ0LCBNZW51bGlzdEJ1dHRvblBhcnQsIE1lbnVsaXN0VGV4dFBh
cnQsIE1lbnVsaXN0VGV4dEZpZWxkUGFydCwgT3V0ZXJTcGluQnV0dG9uUGFydCwKICAgICBTbGlk
ZXJIb3Jpem9udGFsUGFydCwgU2xpZGVyVmVydGljYWxQYXJ0LCBTbGlkZXJUaHVtYkhvcml6b250
YWxQYXJ0LAogICAgIFNsaWRlclRodW1iVmVydGljYWxQYXJ0LCBDYXJldFBhcnQsIFNlYXJjaEZp
ZWxkUGFydCwgU2VhcmNoRmllbGREZWNvcmF0aW9uUGFydCwKICAgICBTZWFyY2hGaWVsZFJlc3Vs
dHNEZWNvcmF0aW9uUGFydCwgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uUGFydCwKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvVGhlbWVNYWMubW0KaW5kZXggZTdlMTJhYy4uMThhZDVjZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhl
bWVNYWMubW0KQEAgLTQwNCw2ICs0MDQsNjUgQEAgc3RhdGljIHZvaWQgcGFpbnRCdXR0b24oQ29u
dHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCoKICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKKy8vIFN0ZXBwZXIKKworc3RhdGljIGNv
bnN0IEludFNpemUqIHN0ZXBwZXJTaXplcygpCit7CisgICAgc3RhdGljIGNvbnN0IEludFNpemUg
c2l6ZXNbM10gPSB7IEludFNpemUoMTksIDI3KSwgSW50U2l6ZSgxNSwgMjIpLCBJbnRTaXplKDEz
LCAxNSkgfTsKKyAgICByZXR1cm4gc2l6ZXM7Cit9CisKK2NvbnN0IGludCogc3RlcHBlck1hcmdp
bnMoTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IG1h
cmdpbnNbM11bNF0gPSB7CisgICAgICAgIHswLCAwLCAwLCAwfSwKKyAgICAgICAgezAsIDAsIDAs
IDB9LAorICAgICAgICB7MCwgMCwgMCwgMH0KKyAgICB9OworICAgIHJldHVybiBtYXJnaW5zW2Nv
bnRyb2xTaXplXTsKK30KKworc3RhdGljIE5TU3RlcHBlckNlbGwqIHN0ZXBwZXIoQ29udHJvbFN0
YXRlcyBzdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3Ip
Cit7CisgICAgc3RhdGljIE5TU3RlcHBlckNlbGwqIGNlbGw7CisgICAgaWYgKCFjZWxsKSB7Cisg
ICAgICAgIGNlbGwgPSBbW05TU3RlcHBlckNlbGwgYWxsb2NdIGluaXRdOworICAgIH0KKyAgICBz
ZXRDb250cm9sU2l6ZShjZWxsLCBzdGVwcGVyU2l6ZXMoKSwgem9vbWVkUmVjdC5zaXplKCksIHpv
b21GYWN0b3IpOworCisgICAgdXBkYXRlU3RhdGVzKGNlbGwsIHN0YXRlcyk7CisgICAgaWYgKHN0
YXRlcyAmIFByZXNzZWRTdGF0ZSAmJiBzdGF0ZXMgJiBTcGluVXBTdGF0ZSkKKyAgICAgICAgLy8g
RklYTUU6IFRoZXJlIGlzIG5vIHdheSB0byBkcmF3IGEgTlNTdGVwZXJDZWxsIHdpdGggdGhlIHVw
IGJ1dHRvbiBoaWxpZ2h0ZWQuCisgICAgICAgIC8vIERpc2FibGVzIHRoZSBoaWxpZ2h0IG9mIHRo
ZSBkb3duIGJ1dHRvbiBpZiB0aGUgdXAgYnV0dG9uIGlzIHByZXNzZWQuCisgICAgICAgIFtjZWxs
IHNldEhpZ2hsaWdodGVkOk5PXTsKKyAgICByZXR1cm4gY2VsbDsKK30KKworc3RhdGljIHZvaWQg
cGFpbnRTdGVwcGVyKENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZp
ZXcqIHNjcm9sbFZpZXcpCit7CisgICAgTlNTdGVwcGVyQ2VsbCogY2VsbCA9IHN0ZXBwZXIoc3Rh
dGVzLCB6b29tZWRSZWN0LCB6b29tRmFjdG9yKTsKKworICAgIGNvbnRleHQtPnNhdmUoKTsKKyAg
ICBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplID0gW2NlbGwgY29udHJvbFNpemVdOworICAgIElu
dFNpemUgem9vbWVkU2l6ZSA9IHN0ZXBwZXJTaXplcygpW2NvbnRyb2xTaXplXTsKKyAgICBJbnRS
ZWN0IHJlY3Qoem9vbWVkUmVjdCk7CisKKyAgICBpZiAoem9vbUZhY3RvciAhPSAxLjBmKSB7Cisg
ICAgICAgIHJlY3Quc2V0V2lkdGgocmVjdC53aWR0aCgpIC8gem9vbUZhY3Rvcik7CisgICAgICAg
IHJlY3Quc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkgLyB6b29tRmFjdG9yKTsKKyAgICAgICAgY29u
dGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSk7CisgICAgICAgIGNvbnRleHQtPnNj
YWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7CisgICAgICAgIGNvbnRleHQt
PnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSk7CisgICAgfQorCisgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCisgICAgW2NlbGwgZHJhd1dpdGhGcmFtZTpOU1JlY3QocmVjdCkg
aW5WaWV3OnNjcm9sbFZpZXctPmRvY3VtZW50VmlldygpXTsKKyAgICBbY2VsbCBzZXRDb250cm9s
VmlldzpuaWxdOworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKworICAgIGNvbnRleHQt
PnJlc3RvcmUoKTsKK30KKwogLy8gVGhlbWUgb3ZlcnJpZGVzCiAKIGludCBUaGVtZU1hYzo6YmFz
ZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQoQ29udHJvbFBhcnQgcGFydCkgY29uc3QKQEAgLTQ0Miw2
ICs1MDEsMTMgQEAgTGVuZ3RoU2l6ZSBUaGVtZU1hYzo6Y29udHJvbFNpemUoQ29udHJvbFBhcnQg
cGFydCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgTGVuZ3QKICAgICAgICAgY2FzZSBQdXNoQnV0
dG9uUGFydDoKICAgICAgICAgICAgIC8vIEhlaWdodCBpcyByZXNldCB0byBhdXRvIHNvIHRoYXQg
c3BlY2lmaWVkIGhlaWdodHMgY2FuIGJlIGlnbm9yZWQuCiAgICAgICAgICAgICByZXR1cm4gc2l6
ZUZyb21Gb250KGZvbnQsIExlbmd0aFNpemUoem9vbWVkU2l6ZS53aWR0aCgpLCBMZW5ndGgoKSks
IHpvb21GYWN0b3IsIGJ1dHRvblNpemVzKCkpOworICAgICAgICBjYXNlIElubmVyU3BpbkJ1dHRv
blBhcnQ6CisgICAgICAgICAgICAvLyBXZSBkb24ndCB1c2UgaW5uZXIgc3BpbiBidXR0b25zIG9u
IE1hYy4KKyAgICAgICAgICAgIHJldHVybiBMZW5ndGhTaXplKExlbmd0aChGaXhlZCksIExlbmd0
aChGaXhlZCkpOworICAgICAgICBjYXNlIE91dGVyU3BpbkJ1dHRvblBhcnQ6CisgICAgICAgICAg
ICBpZiAoIXpvb21lZFNpemUud2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmICF6b29tZWRT
aXplLmhlaWdodCgpLmlzSW50cmluc2ljT3JBdXRvKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHpvb21lZFNpemU7CisgICAgICAgICAgICByZXR1cm4gc2l6ZUZyb21Gb250KGZvbnQsIHpvb21l
ZFNpemUsIHpvb21GYWN0b3IsIHN0ZXBwZXJTaXplcygpKTsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIHJldHVybiB6b29tZWRTaXplOwogICAgIH0KQEAgLTQ1NCw2ICs1MjAsMTEgQEAg
TGVuZ3RoU2l6ZSBUaGVtZU1hYzo6bWluaW11bUNvbnRyb2xTaXplKENvbnRyb2xQYXJ0IHBhcnQs
IGNvbnN0IEZvbnQmIGZvbnQsIGZsb2EKICAgICAgICAgY2FzZSBEZWZhdWx0QnV0dG9uUGFydDoK
ICAgICAgICAgY2FzZSBCdXR0b25QYXJ0OgogICAgICAgICAgICAgcmV0dXJuIExlbmd0aFNpemUo
TGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3RoKHN0YXRpY19jYXN0PGludD4oMTUgKiB6b29tRmFjdG9y
KSwgRml4ZWQpKTsKKyAgICAgICAgY2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0OgorICAgICAgICAg
ICAgLy8gV2UgZG9uJ3QgdXNlIGlubmVyIHNwaW4gYnV0dG9ucyBvbiBNYWMuCisgICAgICAgICAg
ICByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoRml4ZWQpLCBMZW5ndGgoRml4ZWQpKTsKKyAgICAg
ICAgY2FzZSBPdXRlclNwaW5CdXR0b25QYXJ0OgorICAgICAgICAgICAgcmV0dXJuIHNpemVGcm9t
Rm9udChmb250LCBMZW5ndGhTaXplKCksIHpvb21GYWN0b3IsIHN0ZXBwZXJTaXplcygpKTsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBUaGVtZTo6bWluaW11bUNvbnRyb2xT
aXplKHBhcnQsIGZvbnQsIHpvb21GYWN0b3IpOwogICAgIH0KQEAgLTUyOSw2ICs2MDAsMTUgQEAg
dm9pZCBUaGVtZU1hYzo6aW5mbGF0ZUNvbnRyb2xQYWludFJlY3QoQ29udHJvbFBhcnQgcGFydCwg
Q29udHJvbFN0YXRlcyBzdGF0ZXMsIEkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisgICAgICAgIGNhc2UgT3V0ZXJTcGluQnV0dG9uUGFydDogeworICAgICAg
ICAgICAgTlNDZWxsICpjZWxsID0gc3RlcHBlcihzdGF0ZXMsIHpvb21lZFJlY3QsIHpvb21GYWN0
b3IpOworICAgICAgICAgICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IFtjZWxsIGNvbnRy
b2xTaXplXTsKKyAgICAgICAgICAgIEludFNpemUgem9vbWVkU2l6ZSA9IHN0ZXBwZXJTaXplcygp
W2NvbnRyb2xTaXplXTsKKyAgICAgICAgICAgIHpvb21lZFNpemUuc2V0SGVpZ2h0KHpvb21lZFNp
emUuaGVpZ2h0KCkgKiB6b29tRmFjdG9yKTsKKyAgICAgICAgICAgIHpvb21lZFNpemUuc2V0V2lk
dGgoem9vbWVkU2l6ZS53aWR0aCgpICogem9vbUZhY3Rvcik7CisgICAgICAgICAgICB6b29tZWRS
ZWN0ID0gaW5mbGF0ZVJlY3Qoem9vbWVkUmVjdCwgem9vbWVkU2l6ZSwgc3RlcHBlck1hcmdpbnMo
Y29udHJvbFNpemUpLCB6b29tRmFjdG9yKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICB9CkBAIC01NTAsNiAr
NjMwLDkgQEAgdm9pZCBUaGVtZU1hYzo6cGFpbnQoQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0
YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY28KICAgICAgICAgY2FzZSBTcXVhcmVCdXR0
b25QYXJ0OgogICAgICAgICAgICAgcGFpbnRCdXR0b24ocGFydCwgc3RhdGVzLCBjb250ZXh0LCB6
b29tZWRSZWN0LCB6b29tRmFjdG9yLCBzY3JvbGxWaWV3KTsKICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIE91dGVyU3BpbkJ1dHRvblBhcnQ6CisgICAgICAgICAgICBwYWludFN0ZXBw
ZXIoc3RhdGVzLCBjb250ZXh0LCB6b29tZWRSZWN0LCB6b29tRmFjdG9yLCBzY3JvbGxWaWV3KTsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggOTA3ZGI0YS4uNGI1NjUwZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC02MDMsOSArNjAzLDExIEBAIHZvaWQgUmVuZGVyQm94
OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0
eSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGludCB3ID0gd2lkdGgoKTsKLSAgICBp
bnQgaCA9IGhlaWdodCgpOworICAgIHJldHVybiBwYWludEJveERlY29yYXRpb25zV2l0aFNpemUo
cGFpbnRJbmZvLCB0eCwgdHksIHdpZHRoKCksIGhlaWdodCgpKTsKK30KIAordm9pZCBSZW5kZXJC
b3g6OnBhaW50Qm94RGVjb3JhdGlvbnNXaXRoU2l6ZShQYWludEluZm8mIHBhaW50SW5mbywgaW50
IHR4LCBpbnQgdHksIGludCB3LCBpbnQgaCkKK3sKICAgICAvLyBib3JkZXItZml0IGNhbiBhZGp1
c3Qgd2hlcmUgd2UgcGFpbnQgb3VyIGJvcmRlciBhbmQgYmFja2dyb3VuZC4gIElmIHNldCwgd2Ug
c251Z2x5IGZpdCBvdXIgbGluZSBib3ggZGVzY2VuZGFudHMuICAoVGhlIGlDaGF0CiAgICAgLy8g
YmFsbG9vbiBsYXlvdXQgaXMgYW4gZXhhbXBsZSBvZiB0aGlzKS4KICAgICBib3JkZXJGaXRBZGp1
c3QodHgsIHcpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCA5MjE0NDNhLi40MmRjYjAzIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaApAQCAtMjkyLDYgKzI5Miw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lk
IHBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmls
bExheWVyKiwgaW50IHR4LCBpbnQgdHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICB2b2lkIHBhaW50RmlsbExheWVy
cyhjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGludCB0
eCwgaW50IHR5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29t
cG9zaXRlU291cmNlT3Zlcik7CiAKKyAgICB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnNXaXRoU2l6
ZShQYWludEluZm8mLCBpbnQsIGludCwgaW50LCBpbnQpOwogICAgIHZvaWQgcGFpbnRNYXNrSW1h
Z2VzKGNvbnN0IFBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5LCBpbnQgd2lkdGgsIGludCBoZWln
aHQpOwogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKaW5kZXggOWMwMjJkNi4uYjJiMzBlNyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTY3LDYgKzY4LDExIEBAIFJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZTo6flJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSgpCiAgCiAgICAg
aWYgKG1faW5uZXJCbG9jaykKICAgICAgICAgbV9pbm5lckJsb2NrLT5kZXRhY2goKTsKKworICAg
IGlmIChtX2lubmVyU3BpbkJ1dHRvbikKKyAgICAgICAgbV9pbm5lclNwaW5CdXR0b24tPmRldGFj
aCgpOworICAgIGlmIChtX291dGVyU3BpbkJ1dHRvbikKKyAgICAgICAgbV9vdXRlclNwaW5CdXR0
b24tPmRldGFjaCgpOwogfQogCiBib29sIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6cGxh
Y2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdApAQCAtMjA2LDYgKzIxMiwxNiBAQCB2b2lk
IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGludCB0eCwgaW50IHR5KQogICAgIH0KIH0KIAordm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmU6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwg
aW50IHR5KQoreworICAgIHBhaW50Qm94RGVjb3JhdGlvbnNXaXRoU2l6ZShwYWludEluZm8sIHR4
LCB0eSwgd2lkdGgoKSAtIGRlY29yYXRpb25XaWR0aFJpZ2h0KCksIGhlaWdodCgpKTsKK30KKwor
dm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmFkZEZvY3VzUmluZ1JlY3RzKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsIGludCB0eSkKK3sKKyAgICBncmFw
aGljc0NvbnRleHQtPmFkZEZvY3VzUmluZ1JlY3QoSW50UmVjdCh0eCwgdHksIHdpZHRoKCkgLSBk
ZWNvcmF0aW9uV2lkdGhSaWdodCgpLCBoZWlnaHQoKSkpOworfQorCiB2b2lkIFJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZTo6bGF5b3V0KCkKIHsKICAgICBpbnQgb2xkSGVpZ2h0ID0gaGVpZ2h0
KCk7CkBAIC0yNTEsNiArMjY3LDE3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
OjpsYXlvdXQoKQogICAgIGN1cnJlbnRIZWlnaHQgPSBjaGlsZEJsb2NrLT5oZWlnaHQoKTsKICAg
ICBpZiAoY3VycmVudEhlaWdodCA8IGhlaWdodCgpKQogICAgICAgICBjaGlsZEJsb2NrLT5zZXRM
b2NhdGlvbihjaGlsZEJsb2NrLT54KCksIChoZWlnaHQoKSAtIGN1cnJlbnRIZWlnaHQpIC8gMik7
CisKKyAgICAvLyBUaGUgaW5uZXIgc3BpbiBidXR0b24gaWdub3JlcyB0aGUgcGFkZGluZ3MuCisg
ICAgaWYgKFJlbmRlckJveCogc3BpbkJveCA9IG1faW5uZXJTcGluQnV0dG9uID8gbV9pbm5lclNw
aW5CdXR0b24tPnJlbmRlckJveCgpIDogMCkgeworICAgICAgICBzcGluQm94LT5zZXRMb2NhdGlv
bihzcGluQm94LT54KCkgKyBwYWRkaW5nUmlnaHQoKSwgYm9yZGVyVG9wKCkpOworICAgICAgICBz
cGluQm94LT5zZXRIZWlnaHQoaGVpZ2h0KCkgLSBib3JkZXJUb3AoKSAtIGJvcmRlckJvdHRvbSgp
KTsKKyAgICB9CisKKyAgICAvLyBDZW50ZXIgdGhlIHNwaW4gYnV0dG9uIHZlcnRpY2FsbHksIGFu
ZCBtb3ZlIGl0IHRvIHRoZSByaWdodAorICAgIGlmIChSZW5kZXJCb3gqIHNwaW5Cb3ggPSBtX291
dGVyU3BpbkJ1dHRvbiA/IG1fb3V0ZXJTcGluQnV0dG9uLT5yZW5kZXJCb3goKSA6IDApIHsKKyAg
ICAgICAgc3BpbkJveC0+c2V0TG9jYXRpb24oc3BpbkJveC0+eCgpICsgcGFkZGluZ1JpZ2h0KCkg
KyBib3JkZXJSaWdodCgpLCAoaGVpZ2h0KCkgLSBzcGluQm94LT5oZWlnaHQoKSkgLyAyKTsKKyAg
ICB9CiB9CiAKIGJvb2wgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpub2RlQXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBpbnQg
eFBvcywgaW50IHlQb3MsIGludCB0eCwgaW50IHR5LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rp
b24pCkBAIC0yNzAsOCArMjk3LDExIEBAIGJvb2wgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0CiAgICAgaWYg
KHJlc3VsdC5pbm5lck5vZGUoKS0+aXNEZXNjZW5kYW50T2YoaW5uZXJUZXh0RWxlbWVudCgpKSB8
fCByZXN1bHQuaW5uZXJOb2RlKCkgPT0gbm9kZSgpKQogICAgICAgICBoaXRJbm5lclRleHRFbGVt
ZW50KHJlc3VsdCwgeFBvcywgeVBvcywgdHgsIHR5KTsKIAotICAgIC8vIElmIHdlJ3JlIG5vdCBh
IHNlYXJjaCBmaWVsZCwgb3Igd2UgYWxyZWFkeSBmb3VuZCB0aGUgcmVzdWx0cyBvciBjYW5jZWwg
YnV0dG9ucywgd2UncmUgZG9uZS4KLSAgICBpZiAoIW1faW5uZXJCbG9jayB8fCByZXN1bHQuaW5u
ZXJOb2RlKCkgPT0gbV9yZXN1bHRzQnV0dG9uIHx8IHJlc3VsdC5pbm5lck5vZGUoKSA9PSBtX2Nh
bmNlbEJ1dHRvbikKKyAgICAvLyBJZiB0aGlzIGhhcyBubyBkZWNvcmF0aW9ucywgd2UncmUgZG9u
ZS4KKyAgICBpZiAoIW1faW5uZXJCbG9jayB8fCAhbV9pbm5lclNwaW5CdXR0b24gfHwgIW1fb3V0
ZXJTcGluQnV0dG9uKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBJZiB3ZSBhbHJlYWR5
IGZvdW5kIGEgZGVjb3JhdGlvbiwgd2UncmUgZG9uZS4KKyAgICBpZiAocmVzdWx0LmlubmVyTm9k
ZSgpID09IG1fcmVzdWx0c0J1dHRvbiB8fCByZXN1bHQuaW5uZXJOb2RlKCkgPT0gbV9jYW5jZWxC
dXR0b24gfHwgcmVzdWx0LmlubmVyTm9kZSgpID09IG1faW5uZXJTcGluQnV0dG9uIHx8IHJlc3Vs
dC5pbm5lck5vZGUoKSA9PSBtX291dGVyU3BpbkJ1dHRvbikKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICBOb2RlKiBpbm5lck5vZGUgPSAwOwpAQCAtMzIwLDEwICszNTAsMTUgQEAgdm9pZCBS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmZvcndhcmRFdmVudChFdmVudCogZXZlbnQpCiAg
ICAgfQogCiAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gaW5uZXJUZXh0UmVuZGVyZXItPmFi
c29sdXRlVG9Mb2NhbChzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5hYnNvbHV0ZUxv
Y2F0aW9uKCksIGZhbHNlLCB0cnVlKTsKKyAgICBpbnQgdGV4dFJpZ2h0ID0gaW5uZXJUZXh0UmVu
ZGVyZXItPmJvcmRlckJveFJlY3QoKS5yaWdodCgpOwogICAgIGlmIChtX3Jlc3VsdHNCdXR0b24g
JiYgbG9jYWxQb2ludC54KCkgPCBpbm5lclRleHRSZW5kZXJlci0+Ym9yZGVyQm94UmVjdCgpLngo
KSkKICAgICAgICAgbV9yZXN1bHRzQnV0dG9uLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsK
LSAgICBlbHNlIGlmIChtX2NhbmNlbEJ1dHRvbiAmJiBsb2NhbFBvaW50LngoKSA+IGlubmVyVGV4
dFJlbmRlcmVyLT5ib3JkZXJCb3hSZWN0KCkucmlnaHQoKSkKKyAgICBlbHNlIGlmIChtX2NhbmNl
bEJ1dHRvbiAmJiBsb2NhbFBvaW50LngoKSA+IHRleHRSaWdodCAmJiBsb2NhbFBvaW50LngoKSA8
IHRleHRSaWdodCArIG1fY2FuY2VsQnV0dG9uLT5yZW5kZXJCb3goKS0+d2lkdGgoKSkKICAgICAg
ICAgbV9jYW5jZWxCdXR0b24tPmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworICAgIGVsc2Ug
aWYgKG1faW5uZXJTcGluQnV0dG9uICYmIGxvY2FsUG9pbnQueCgpID4gdGV4dFJpZ2h0ICYmIGxv
Y2FsUG9pbnQueCgpIDwgdGV4dFJpZ2h0ICsgbV9pbm5lclNwaW5CdXR0b24tPnJlbmRlckJveCgp
LT53aWR0aCgpKQorICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbi0+ZGVmYXVsdEV2ZW50SGFuZGxl
cihldmVudCk7CisgICAgZWxzZSBpZiAobV9vdXRlclNwaW5CdXR0b24gJiYgbG9jYWxQb2ludC54
KCkgPiB0ZXh0UmlnaHQpCisgICAgICAgIG1fb3V0ZXJTcGluQnV0dG9uLT5kZWZhdWx0RXZlbnRI
YW5kbGVyKGV2ZW50KTsKICAgICBlbHNlCiAgICAgICAgIFJlbmRlclRleHRDb250cm9sOjpmb3J3
YXJkRXZlbnQoZXZlbnQpOwogfQpAQCAtMzQyLDEwICszNzcsMTQgQEAgdm9pZCBSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmU6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBj
b25zdCBSZW4KIAogICAgIGlmIChSZW5kZXJPYmplY3QqIHJlc3VsdHNSZW5kZXJlciA9IG1fcmVz
dWx0c0J1dHRvbiA/IG1fcmVzdWx0c0J1dHRvbi0+cmVuZGVyZXIoKSA6IDApCiAgICAgICAgIHJl
c3VsdHNSZW5kZXJlci0+c2V0U3R5bGUoY3JlYXRlUmVzdWx0c0J1dHRvblN0eWxlKHN0eWxlKCkp
KTsKLQogICAgIGlmIChSZW5kZXJPYmplY3QqIGNhbmNlbFJlbmRlcmVyID0gbV9jYW5jZWxCdXR0
b24gPyBtX2NhbmNlbEJ1dHRvbi0+cmVuZGVyZXIoKSA6IDApCiAgICAgICAgIGNhbmNlbFJlbmRl
cmVyLT5zZXRTdHlsZShjcmVhdGVDYW5jZWxCdXR0b25TdHlsZShzdHlsZSgpKSk7CiAKKyAgICBp
ZiAoUmVuZGVyT2JqZWN0KiBzcGluUmVuZGVyZXIgPSBtX2lubmVyU3BpbkJ1dHRvbiA/IG1faW5u
ZXJTcGluQnV0dG9uLT5yZW5kZXJlcigpIDogMCkKKyAgICAgICAgc3BpblJlbmRlcmVyLT5zZXRT
dHlsZShjcmVhdGVJbm5lclNwaW5CdXR0b25TdHlsZSgpKTsKKyAgICBpZiAoUmVuZGVyT2JqZWN0
KiBzcGluUmVuZGVyZXIgPSBtX291dGVyU3BpbkJ1dHRvbiA/IG1fb3V0ZXJTcGluQnV0dG9uLT5y
ZW5kZXJlcigpIDogMCkKKyAgICAgICAgc3BpblJlbmRlcmVyLT5zZXRTdHlsZShjcmVhdGVPdXRl
clNwaW5CdXR0b25TdHlsZSgpKTsKKwogICAgIHNldEhhc092ZXJmbG93Q2xpcChmYWxzZSk7CiB9
CiAKQEAgLTM4Nyw2ICs0MjYsMjMgQEAgaW50IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6
dGV4dEJsb2NrV2lkdGgoKSBjb25zdAogICAgICAgICB3aWR0aCAtPSBjYW5jZWxSZW5kZXJlci0+
d2lkdGgoKSArIGNhbmNlbFJlbmRlcmVyLT5tYXJnaW5MZWZ0KCkgKyBjYW5jZWxSZW5kZXJlci0+
bWFyZ2luUmlnaHQoKTsKICAgICB9CiAKKyAgICBpZiAoUmVuZGVyQm94KiBzcGluUmVuZGVyZXIg
PSBtX2lubmVyU3BpbkJ1dHRvbiA/IG1faW5uZXJTcGluQnV0dG9uLT5yZW5kZXJCb3goKSA6IDAp
IHsKKyAgICAgICAgc3BpblJlbmRlcmVyLT5jYWxjV2lkdGgoKTsKKyAgICAgICAgd2lkdGggLT0g
c3BpblJlbmRlcmVyLT53aWR0aCgpICsgc3BpblJlbmRlcmVyLT5tYXJnaW5MZWZ0KCkgKyBzcGlu
UmVuZGVyZXItPm1hcmdpblJpZ2h0KCk7CisgICAgfQorCisgICAgcmV0dXJuIHdpZHRoIC0gZGVj
b3JhdGlvbldpZHRoUmlnaHQoKTsKK30KKworaW50IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZTo6ZGVjb3JhdGlvbldpZHRoUmlnaHQoKSBjb25zdAoreworICAgIGludCB3aWR0aCA9IDA7Cisg
ICAgaWYgKFJlbmRlckJveCogc3BpblJlbmRlcmVyID0gbV9vdXRlclNwaW5CdXR0b24gPyBtX291
dGVyU3BpbkJ1dHRvbi0+cmVuZGVyQm94KCkgOiAwKSB7CisgICAgICAgIHNwaW5SZW5kZXJlci0+
Y2FsY1dpZHRoKCk7CisgICAgICAgIHdpZHRoICs9IHNwaW5SZW5kZXJlci0+d2lkdGgoKSArIHNw
aW5SZW5kZXJlci0+bWFyZ2luTGVmdCgpICsgc3BpblJlbmRlcmVyLT5tYXJnaW5SaWdodCgpOwor
ICAgIH0KKyAgICBpZiAod2lkdGggPiAwKQorICAgICAgICB3aWR0aCArPSBwYWRkaW5nUmlnaHQo
KSArIGJvcmRlclJpZ2h0KCk7CiAgICAgcmV0dXJuIHdpZHRoOwogfQogCkBAIC00MDksNyArNDY1
LDIzIEBAIGludCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnByZWZlcnJlZENvbnRlbnRX
aWR0aChmbG9hdCBjaGFyV2lkdGgpIGNvbnN0CiAgICAgICAgIHJlc3VsdCArPSBjYW5jZWxSZW5k
ZXJlci0+Ym9yZGVyTGVmdCgpICsgY2FuY2VsUmVuZGVyZXItPmJvcmRlclJpZ2h0KCkgKwogICAg
ICAgICAgICAgICAgICAgY2FuY2VsUmVuZGVyZXItPnBhZGRpbmdMZWZ0KCkgKyBjYW5jZWxSZW5k
ZXJlci0+cGFkZGluZ1JpZ2h0KCk7CiAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIGlmIChSZW5k
ZXJCb3gqIHNwaW5SZW5kZXJlciA9IG1faW5uZXJTcGluQnV0dG9uID8gbV9pbm5lclNwaW5CdXR0
b24tPnJlbmRlckJveCgpIDogMCkKKyAgICAgICAgcmVzdWx0ICs9IHNwaW5SZW5kZXJlci0+bWlu
UHJlZldpZHRoKCk7CisKKyAgICByZXR1cm4gcmVzdWx0ICsgcHJlZmVycmVkRGVjb3JhdGlvbldp
ZHRoUmlnaHQoKTsKKyAgICAvLyBUaGUgcmV0dXJuIHZhbHVlICsgaW5uZXIgdGV4dCBwYWRkaW5n
ICsgSU5QVVQgZWxlbWVudCBwYWRkaW5nICsgSU5QVVQgZWxlbWVudCBib3JkZXIgd2lsbCBiZSB0
aGUgSU5QVVQgZWxlbWVudCB3aWR0aC4KK30KKworaW50IFJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZTo6cHJlZmVycmVkRGVjb3JhdGlvbldpZHRoUmlnaHQoKSBjb25zdAoreworICAgIGludCB3
aWR0aCA9IDA7CisgICAgaWYgKFJlbmRlckJveCogc3BpblJlbmRlcmVyID0gbV9vdXRlclNwaW5C
dXR0b24gPyBtX291dGVyU3BpbkJ1dHRvbi0+cmVuZGVyQm94KCkgOiAwKSB7CisgICAgICAgIHNw
aW5SZW5kZXJlci0+Y2FsY1dpZHRoKCk7CisgICAgICAgIHdpZHRoICs9IHNwaW5SZW5kZXJlci0+
bWluUHJlZldpZHRoKCkgKyBzcGluUmVuZGVyZXItPm1hcmdpbkxlZnQoKSArIHNwaW5SZW5kZXJl
ci0+bWFyZ2luUmlnaHQoKTsKKyAgICB9CisgICAgaWYgKHdpZHRoID4gMCkKKyAgICAgICAgd2lk
dGggKz0gcGFkZGluZ1JpZ2h0KCkgKyBib3JkZXJSaWdodCgpOworICAgIHJldHVybiB3aWR0aDsK
IH0KIAogdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmFkanVzdENvbnRyb2xIZWln
aHRCYXNlZE9uTGluZUhlaWdodChpbnQgbGluZUhlaWdodCkKQEAgLTQzOSwyOCArNTExLDM3IEBA
IHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjcmVhdGVTdWJ0cmVlSWZOZWVkZWQo
KQogewogICAgIGlmICghaW5wdXRFbGVtZW50KCktPmlzU2VhcmNoRmllbGQoKSkgewogICAgICAg
ICBSZW5kZXJUZXh0Q29udHJvbDo6Y3JlYXRlU3VidHJlZUlmTmVlZGVkKG1faW5uZXJCbG9jay5n
ZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIW1faW5uZXJCbG9jaykg
ewotICAgICAgICAvLyBDcmVhdGUgdGhlIGlubmVyIGJsb2NrIGVsZW1lbnQKLSAgICAgICAgbV9p
bm5lckJsb2NrID0gbmV3IFRleHRDb250cm9sSW5uZXJFbGVtZW50KGRvY3VtZW50KCksIG5vZGUo
KSk7Ci0gICAgICAgIG1faW5uZXJCbG9jay0+YXR0YWNoSW5uZXJFbGVtZW50KG5vZGUoKSwgY3Jl
YXRlSW5uZXJCbG9ja1N0eWxlKHN0eWxlKCkpLCByZW5kZXJBcmVuYSgpKTsKLSAgICB9CisgICAg
ICAgIGlmIChpbnB1dEVsZW1lbnQoKS0+aGFzU3BpbkJ1dHRvbigpICYmICFtX2lubmVyU3BpbkJ1
dHRvbikgeworICAgICAgICAgICAgbV9pbm5lclNwaW5CdXR0b24gPSBuZXcgU3BpbkJ1dHRvbkVs
ZW1lbnQoZG9jdW1lbnQoKSwgbm9kZSgpKTsKKyAgICAgICAgICAgIG1faW5uZXJTcGluQnV0dG9u
LT5hdHRhY2hJbm5lckVsZW1lbnQobm9kZSgpLCBjcmVhdGVJbm5lclNwaW5CdXR0b25TdHlsZSgp
LCByZW5kZXJBcmVuYSgpKTsKKyAgICAgICAgICAgIC8vbV9pbm5lclNwaW5CdXR0b24tPmNyZWF0
ZVN1YnRyZWUoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghbV9pbm5l
ckJsb2NrKSB7CisgICAgICAgICAgICAvLyBDcmVhdGUgdGhlIGlubmVyIGJsb2NrIGVsZW1lbnQK
KyAgICAgICAgICAgIG1faW5uZXJCbG9jayA9IG5ldyBUZXh0Q29udHJvbElubmVyRWxlbWVudChk
b2N1bWVudCgpLCBub2RlKCkpOworICAgICAgICAgICAgbV9pbm5lckJsb2NrLT5hdHRhY2hJbm5l
ckVsZW1lbnQobm9kZSgpLCBjcmVhdGVJbm5lckJsb2NrU3R5bGUoc3R5bGUoKSksIHJlbmRlckFy
ZW5hKCkpOworICAgICAgICB9CiAKLSAgICBpZiAoIW1fcmVzdWx0c0J1dHRvbikgewotICAgICAg
ICAvLyBDcmVhdGUgdGhlIHNlYXJjaCByZXN1bHRzIGJ1dHRvbiBlbGVtZW50Ci0gICAgICAgIG1f
cmVzdWx0c0J1dHRvbiA9IG5ldyBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50KGRvY3Vt
ZW50KCkpOwotICAgICAgICBtX3Jlc3VsdHNCdXR0b24tPmF0dGFjaElubmVyRWxlbWVudChtX2lu
bmVyQmxvY2suZ2V0KCksIGNyZWF0ZVJlc3VsdHNCdXR0b25TdHlsZShtX2lubmVyQmxvY2stPnJl
bmRlcmVyKCktPnN0eWxlKCkpLCByZW5kZXJBcmVuYSgpKTsKLSAgICB9CisgICAgICAgIGlmICgh
bV9yZXN1bHRzQnV0dG9uKSB7CisgICAgICAgICAgICAvLyBDcmVhdGUgdGhlIHNlYXJjaCByZXN1
bHRzIGJ1dHRvbiBlbGVtZW50CisgICAgICAgICAgICBtX3Jlc3VsdHNCdXR0b24gPSBuZXcgU2Vh
cmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudChkb2N1bWVudCgpKTsKKyAgICAgICAgICAgIG1f
cmVzdWx0c0J1dHRvbi0+YXR0YWNoSW5uZXJFbGVtZW50KG1faW5uZXJCbG9jay5nZXQoKSwgY3Jl
YXRlUmVzdWx0c0J1dHRvblN0eWxlKG1faW5uZXJCbG9jay0+cmVuZGVyZXIoKS0+c3R5bGUoKSks
IHJlbmRlckFyZW5hKCkpOworICAgICAgICB9CiAKLSAgICAvLyBDcmVhdGUgaW5uZXJUZXh0IGVs
ZW1lbnQgYmVmb3JlIGFkZGluZyB0aGUgY2FuY2VsIGJ1dHRvbgotICAgIFJlbmRlclRleHRDb250
cm9sOjpjcmVhdGVTdWJ0cmVlSWZOZWVkZWQobV9pbm5lckJsb2NrLmdldCgpKTsKKyAgICAgICAg
Ly8gQ3JlYXRlIGlubmVyVGV4dCBlbGVtZW50IGJlZm9yZSBhZGRpbmcgdGhlIGNhbmNlbCBidXR0
b24KKyAgICAgICAgUmVuZGVyVGV4dENvbnRyb2w6OmNyZWF0ZVN1YnRyZWVJZk5lZWRlZChtX2lu
bmVyQmxvY2suZ2V0KCkpOwogCi0gICAgaWYgKCFtX2NhbmNlbEJ1dHRvbikgewotICAgICAgICAv
LyBDcmVhdGUgdGhlIGNhbmNlbCBidXR0b24gZWxlbWVudAotICAgICAgICBtX2NhbmNlbEJ1dHRv
biA9IG5ldyBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQoKSk7Ci0gICAg
ICAgIG1fY2FuY2VsQnV0dG9uLT5hdHRhY2hJbm5lckVsZW1lbnQobV9pbm5lckJsb2NrLmdldCgp
LCBjcmVhdGVDYW5jZWxCdXR0b25TdHlsZShtX2lubmVyQmxvY2stPnJlbmRlcmVyKCktPnN0eWxl
KCkpLCByZW5kZXJBcmVuYSgpKTsKKyAgICAgICAgaWYgKCFtX2NhbmNlbEJ1dHRvbikgeworICAg
ICAgICAgICAgLy8gQ3JlYXRlIHRoZSBjYW5jZWwgYnV0dG9uIGVsZW1lbnQKKyAgICAgICAgICAg
IG1fY2FuY2VsQnV0dG9uID0gbmV3IFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudChkb2N1
bWVudCgpKTsKKyAgICAgICAgICAgIG1fY2FuY2VsQnV0dG9uLT5hdHRhY2hJbm5lckVsZW1lbnQo
bV9pbm5lckJsb2NrLmdldCgpLCBjcmVhdGVDYW5jZWxCdXR0b25TdHlsZShtX2lubmVyQmxvY2st
PnJlbmRlcmVyKCktPnN0eWxlKCkpLCByZW5kZXJBcmVuYSgpKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBpZiAoaW5wdXRFbGVtZW50KCktPmhhc1NwaW5CdXR0b24oKSAmJiAhbV9vdXRlclNwaW5C
dXR0b24pIHsKKyAgICAgICAgbV9vdXRlclNwaW5CdXR0b24gPSBuZXcgU3BpbkJ1dHRvbkVsZW1l
bnQoZG9jdW1lbnQoKSwgbm9kZSgpKTsKKyAgICAgICAgbV9vdXRlclNwaW5CdXR0b24tPmF0dGFj
aElubmVyRWxlbWVudChub2RlKCksIGNyZWF0ZU91dGVyU3BpbkJ1dHRvblN0eWxlKCksIHJlbmRl
ckFyZW5hKCkpOworICAgICAgICAvL21fb3V0ZXJTcGluQnV0dG9uLT5jcmVhdGVTdWJ0cmVlKCk7
CiAgICAgfQogfQogCkBAIC01MTQsNyArNTk1LDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdAog
ICAgIGlmICh0ZXh0QmxvY2tTdHlsZS0+Zm9udCgpLmxpbmVTcGFjaW5nKCkgPiBsaW5lSGVpZ2h0
KHRydWUsIHRydWUpKQogICAgICAgICB0ZXh0QmxvY2tTdHlsZS0+c2V0TGluZUhlaWdodChMZW5n
dGgoLTEwMC4wZiwgUGVyY2VudCkpOwogCi0gICAgdGV4dEJsb2NrU3R5bGUtPnNldERpc3BsYXko
bV9pbm5lckJsb2NrID8gSU5MSU5FX0JMT0NLIDogQkxPQ0spOworICAgIHRleHRCbG9ja1N0eWxl
LT5zZXREaXNwbGF5KChtX2lubmVyQmxvY2sgfHwgaW5wdXRFbGVtZW50KCktPmhhc1NwaW5CdXR0
b24oKSkgPyBJTkxJTkVfQkxPQ0sgOiBCTE9DSyk7CiAKICAgICAvLyBXZSdyZSBhZGRpbmcgb25l
IGV4dHJhIHBpeGVsIG9mIHBhZGRpbmcgdG8gbWF0Y2ggV2luSUUuCiAgICAgdGV4dEJsb2NrU3R5
bGUtPnNldFBhZGRpbmdMZWZ0KExlbmd0aCgxLCBGaXhlZCkpOwpAQCAtNTg2LDYgKzY2NywyOCBA
QCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNy
ZWF0ZUNhbmNlbEJ1dHRvblN0eWxlKGNvbgogICAgIHJldHVybiBjYW5jZWxCbG9ja1N0eWxlLnJl
bGVhc2UoKTsKIH0KIAorUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lOjpjcmVhdGVJbm5lclNwaW5CdXR0b25TdHlsZSgpIGNvbnN0Cit7CisgICAgQVNT
RVJUKG5vZGUoKS0+aXNIVE1MRWxlbWVudCgpKTsKKworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4g
YnV0dG9uU3R5bGUgPSBnZXRDYWNoZWRQc2V1ZG9TdHlsZShJTk5FUl9TUElOX0JVVFRPTik7Cisg
ICAgaWYgKCFidXR0b25TdHlsZSkKKyAgICAgICAgYnV0dG9uU3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y3JlYXRlKCk7CisgICAgYnV0dG9uU3R5bGUtPmluaGVyaXRGcm9tKHN0eWxlKCkpOworICAgIHJl
dHVybiBidXR0b25TdHlsZS5yZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6Y3JlYXRlT3V0ZXJTcGluQnV0dG9uU3R5bGUo
KSBjb25zdAoreworICAgIEFTU0VSVChub2RlKCktPmlzSFRNTEVsZW1lbnQoKSk7CisKKyAgICBS
ZWZQdHI8UmVuZGVyU3R5bGU+IGJ1dHRvblN0eWxlID0gZ2V0Q2FjaGVkUHNldWRvU3R5bGUoT1VU
RVJfU1BJTl9CVVRUT04pOworICAgIGlmICghYnV0dG9uU3R5bGUpCisgICAgICAgIGJ1dHRvblN0
eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgIGJ1dHRvblN0eWxlLT5pbmhlcml0RnJv
bShzdHlsZSgpKTsKKyAgICByZXR1cm4gYnV0dG9uU3R5bGUucmVsZWFzZSgpOworfQorCiB2b2lk
IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6dXBkYXRlQ2FuY2VsQnV0dG9uVmlzaWJpbGl0
eSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NhbmNlbEJ1dHRvbi0+cmVuZGVyZXIoKSkKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKaW5kZXggZGE5
ODM4Zi4uMTBjODYzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmgKQEAgLTMyLDYgKzMyLDcgQEAgY2xhc3MgSW5wdXRFbGVtZW50OwogY2xh
c3MgU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OwogY2xhc3MgU2VhcmNoRmllbGRSZXN1
bHRzQnV0dG9uRWxlbWVudDsKIGNsYXNzIFNlYXJjaFBvcHVwTWVudTsKK2NsYXNzIFNwaW5CdXR0
b25FbGVtZW50OwogY2xhc3MgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZSA6IHB1YmxpYyBSZW5kZXJUZXh0Q29udHJvbCwgcHJpdmF0
ZSBQb3B1cE1lbnVDbGllbnQgewpAQCAtNTQsMTIgKzU1LDE4IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCk7CiAKKyAgICAvLyBEZWNvcmF0aW9uIHdp
ZHRoIG91dHNpZGUgb2YgdGhlIHRleHQgZmllbGQuCisgICAgaW50IGRlY29yYXRpb25XaWR0aFJp
Z2h0KCkgY29uc3Q7CisKIHByaXZhdGU6CisgICAgaW50IHByZWZlcnJlZERlY29yYXRpb25XaWR0
aFJpZ2h0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGhhc0NvbnRyb2xDbGlwKCkgY29uc3Qg
eyByZXR1cm4gbV9jYW5jZWxCdXR0b247IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RmllbGQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc3VidHJlZUhhc0No
YW5nZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQg
dHkpOworICAgIHZpcnR1YWwgdm9pZCBwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGlu
dCwgaW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoR3JhcGhpY3NDb250
ZXh0KiwgaW50LCBpbnQpOwogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQm
LCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5LCBIaXRUZXN0QWN0aW9uKTsKQEAgLTg4LDYg
Kzk1LDggQEAgcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjcmVhdGVJbm5l
ckJsb2NrU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0OwogICAgIFBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZVJlc3VsdHNCdXR0b25TdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
Y3JlYXRlQ2FuY2VsQnV0dG9uU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNv
bnN0OworICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyU3BpbkJ1dHRvblN0
eWxlKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3JlYXRlT3V0ZXJTcGlu
QnV0dG9uU3R5bGUoKSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlQ2FuY2VsQnV0dG9uVmlzaWJp
bGl0eSgpIGNvbnN0OwogICAgIEVWaXNpYmlsaXR5IHZpc2liaWxpdHlGb3JDYW5jZWxCdXR0b24o
KSBjb25zdDsKQEAgLTEyOCw2ICsxMzcsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxUZXh0Q29u
dHJvbElubmVyRWxlbWVudD4gbV9pbm5lckJsb2NrOwogICAgIFJlZlB0cjxTZWFyY2hGaWVsZFJl
c3VsdHNCdXR0b25FbGVtZW50PiBtX3Jlc3VsdHNCdXR0b247CiAgICAgUmVmUHRyPFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uRWxlbWVudD4gbV9jYW5jZWxCdXR0b247CisgICAgUmVmUHRyPFNwaW5C
dXR0b25FbGVtZW50PiBtX2lubmVyU3BpbkJ1dHRvbjsKKyAgICBSZWZQdHI8U3BpbkJ1dHRvbkVs
ZW1lbnQ+IG1fb3V0ZXJTcGluQnV0dG9uOwogCiAgICAgVGltZXI8UmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lPiBtX3NlYXJjaEV2ZW50VGltZXI7CiAgICAgUmVmUHRyPFNlYXJjaFBvcHVwTWVu
dT4gbV9zZWFyY2hQb3B1cDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCBkNDg2NTJm
Li5jZGIwYzUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5oIgogCiAvLyBUaGUgbWV0aG9kcyBpbiB0aGlzIGZpbGUgYXJlIHNoYXJlZCBieSBhbGwg
dGhlbWVzIG9uIGV2ZXJ5IHBsYXRmb3JtLgogCkBAIC04NSw2ICs4Niw4IEBAIHZvaWQgUmVuZGVy
VGhlbWU6OmFkanVzdFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHls
ZSogc3R5bGUsIEVsCiAjaWYgVVNFKE5FV19USEVNRSkKICAgICBzd2l0Y2ggKHBhcnQpIHsKICAg
ICAgICAgY2FzZSBDaGVja2JveFBhcnQ6CisgICAgICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFy
dDoKKyAgICAgICAgY2FzZSBPdXRlclNwaW5CdXR0b25QYXJ0OgogICAgICAgICBjYXNlIFJhZGlv
UGFydDoKICAgICAgICAgY2FzZSBQdXNoQnV0dG9uUGFydDoKICAgICAgICAgY2FzZSBTcXVhcmVC
dXR0b25QYXJ0OgpAQCAtMTczLDYgKzE3NiwxMCBAQCB2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RT
dHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbAog
ICAgICAgICBjYXNlIERlZmF1bHRCdXR0b25QYXJ0OgogICAgICAgICBjYXNlIEJ1dHRvblBhcnQ6
CiAgICAgICAgICAgICByZXR1cm4gYWRqdXN0QnV0dG9uU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBl
KTsKKyAgICAgICAgY2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0OgorICAgICAgICAgICAgcmV0dXJu
IGFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7CisgICAgICAg
IGNhc2UgT3V0ZXJTcGluQnV0dG9uUGFydDoKKyAgICAgICAgICAgIHJldHVybiBhZGp1c3RPdXRl
clNwaW5CdXR0b25TdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOwogI2VuZGlmCiAgICAgICAgIGNh
c2UgVGV4dEZpZWxkUGFydDoKICAgICAgICAgICAgIHJldHVybiBhZGp1c3RUZXh0RmllbGRTdHls
ZShzZWxlY3Rvciwgc3R5bGUsIGUpOwpAQCAtMjI3LDYgKzIzNCw4IEBAIGJvb2wgUmVuZGVyVGhl
bWU6OnBhaW50KFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8m
IHBhaW50SW5mCiAgICAgICAgIGNhc2UgU3F1YXJlQnV0dG9uUGFydDoKICAgICAgICAgY2FzZSBE
ZWZhdWx0QnV0dG9uUGFydDoKICAgICAgICAgY2FzZSBCdXR0b25QYXJ0OgorICAgICAgICBjYXNl
IElubmVyU3BpbkJ1dHRvblBhcnQ6CisgICAgICAgIGNhc2UgT3V0ZXJTcGluQnV0dG9uUGFydDoK
ICAgICAgICAgICAgIG1fdGhlbWUtPnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJl
cihvKSwgY29uc3RfY2FzdDxHcmFwaGljc0NvbnRleHQqPihwYWludEluZm8uY29udGV4dCksIHIs
IG8tPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSwgby0+dmlldygpLT5mcmFtZVZpZXcoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNDYsNiArMjU1
LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KFJlbmRlck9iamVjdCogbywgY29uc3QgUmVu
ZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mCiAgICAgICAgIGNhc2UgRGVmYXVsdEJ1dHRv
blBhcnQ6CiAgICAgICAgIGNhc2UgQnV0dG9uUGFydDoKICAgICAgICAgICAgIHJldHVybiBwYWlu
dEJ1dHRvbihvLCBwYWludEluZm8sIHIpOworICAgICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBh
cnQ6CisgICAgICAgICAgICByZXR1cm4gcGFpbnRJbm5lclNwaW5CdXR0b24obywgcGFpbnRJbmZv
LCByKTsKKyAgICAgICAgY2FzZSBPdXRlclNwaW5CdXR0b25QYXJ0OgorICAgICAgICAgICAgcmV0
dXJuIHBhaW50T3V0ZXJTcGluQnV0dG9uKG8sIHBhaW50SW5mbywgcik7CiAjZW5kaWYKICAgICAg
ICAgY2FzZSBNZW51bGlzdFBhcnQ6CiAgICAgICAgICAgICByZXR1cm4gcGFpbnRNZW51TGlzdChv
LCBwYWludEluZm8sIHIpOwpAQCAtNTY0LDEwICs1NzcsMTYgQEAgYm9vbCBSZW5kZXJUaGVtZTo6
c3RhdGVDaGFuZ2VkKFJlbmRlck9iamVjdCogbywgQ29udHJvbFN0YXRlIHN0YXRlKSBjb25zdAog
Q29udHJvbFN0YXRlcyBSZW5kZXJUaGVtZTo6Y29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlck9iamVjdCogbykgY29uc3QKIHsKICAgICBDb250cm9sU3RhdGVzIHJlc3VsdCA9IDA7
Ci0gICAgaWYgKGlzSG92ZXJlZChvKSkKKyAgICBpZiAoaXNIb3ZlcmVkKG8pKSB7CiAgICAgICAg
IHJlc3VsdCB8PSBIb3ZlclN0YXRlOwotICAgIGlmIChpc1ByZXNzZWQobykpCisgICAgICAgIGlm
IChpc1NwaW5VcEJ1dHRvblBhcnRIb3ZlcmVkKG8pKQorICAgICAgICAgICAgcmVzdWx0IHw9IFNw
aW5VcFN0YXRlOworICAgIH0KKyAgICBpZiAoaXNQcmVzc2VkKG8pKSB7CiAgICAgICAgIHJlc3Vs
dCB8PSBQcmVzc2VkU3RhdGU7CisgICAgICAgIGlmIChpc1NwaW5VcEJ1dHRvblBhcnRQcmVzc2Vk
KG8pKQorICAgICAgICAgICAgcmVzdWx0IHw9IFNwaW5VcFN0YXRlOworICAgIH0KICAgICBpZiAo
aXNGb2N1c2VkKG8pICYmIG8tPnN0eWxlKCktPm91dGxpbmVTdHlsZUlzQXV0bygpKQogICAgICAg
ICByZXN1bHQgfD0gRm9jdXNTdGF0ZTsKICAgICBpZiAoaXNFbmFibGVkKG8pKQpAQCAtNjUxLDYg
KzY3MCwxNSBAQCBib29sIFJlbmRlclRoZW1lOjppc1ByZXNzZWQoY29uc3QgUmVuZGVyT2JqZWN0
KiBvKSBjb25zdAogICAgIHJldHVybiBvLT5ub2RlKCktPmFjdGl2ZSgpOwogfQogCitib29sIFJl
bmRlclRoZW1lOjppc1NwaW5VcEJ1dHRvblBhcnRQcmVzc2VkKGNvbnN0IFJlbmRlck9iamVjdCog
bykgY29uc3QKK3sKKyAgICBOb2RlKiBub2RlID0gby0+bm9kZSgpOworICAgIGlmICghbm9kZSB8
fCAhbm9kZS0+YWN0aXZlKCkgfHwgbm9kZS0+bm9kZU5hbWUoKSAhPSBTcGluQnV0dG9uRWxlbWVu
dDo6c3BpbkJ1dHRvbk5vZGVOYW1lKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTcGlu
QnV0dG9uRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFNwaW5CdXR0b25FbGVtZW50Kj4o
bm9kZSk7CisgICAgcmV0dXJuIGVsZW1lbnQtPm9uVXBCdXR0b24oKTsKK30KKwogYm9vbCBSZW5k
ZXJUaGVtZTo6aXNSZWFkT25seUNvbnRyb2woY29uc3QgUmVuZGVyT2JqZWN0KiBvKSBjb25zdAog
ewogICAgIE5vZGUqIG5vZGUgPSBvLT5ub2RlKCk7CkBAIC02NjYsNiArNjk0LDE1IEBAIGJvb2wg
UmVuZGVyVGhlbWU6OmlzSG92ZXJlZChjb25zdCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0CiAgICAg
cmV0dXJuIG8tPm5vZGUoKS0+aG92ZXJlZCgpOwogfQogCitib29sIFJlbmRlclRoZW1lOjppc1Nw
aW5VcEJ1dHRvblBhcnRIb3ZlcmVkKGNvbnN0IFJlbmRlck9iamVjdCogbykgY29uc3QKK3sKKyAg
ICBOb2RlKiBub2RlID0gby0+bm9kZSgpOworICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aG92ZXJl
ZCgpIHx8IG5vZGUtPm5vZGVOYW1lKCkgIT0gU3BpbkJ1dHRvbkVsZW1lbnQ6OnNwaW5CdXR0b25O
b2RlTmFtZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgU3BpbkJ1dHRvbkVsZW1lbnQq
IGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTcGluQnV0dG9uRWxlbWVudCo+KG5vZGUpOworICAgIHJl
dHVybiBlbGVtZW50LT5vblVwQnV0dG9uKCk7Cit9CisKIGJvb2wgUmVuZGVyVGhlbWU6OmlzRGVm
YXVsdChjb25zdCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0CiB7CiAgICAgaWYgKCFvLT5kb2N1bWVu
dCgpKQpAQCAtNzIxLDYgKzc1OCwxNCBAQCB2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RCdXR0b25T
dHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZQogICAgIHNl
dEJ1dHRvblNpemUoc3R5bGUpOwogfQogCit2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RJbm5lclNw
aW5CdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVt
ZW50KikgY29uc3QKK3sKK30KKwordm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0T3V0ZXJTcGluQnV0
dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCop
IGNvbnN0Cit7Cit9CisKICNlbmRpZgogCiB2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RUZXh0Rmll
bGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZS5oCmluZGV4IDc5NWRhYTIuLmFhNTZmZjIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuaApAQCAtMjAyLDYgKzIwMiwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB2b2lkIGFkanVzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSos
IEVsZW1lbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRCdXR0b24oUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRCdXR0b25TaXplKFJlbmRlclN0eWxl
KikgY29uc3QgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5
bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBwYWludElubmVyU3BpbkJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBS
ZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCB2b2lkIGFkanVzdE91dGVyQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rv
ciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBwYWlu
dE91dGVyU3BpbkJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAogICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RUZXh0RmllbGRTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVy
U3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CkBAIC0yNTksNyArMjY0LDkgQEAgcHVibGljOgogICAg
IGJvb2wgaXNFbmFibGVkKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogICAgIGJvb2wgaXNG
b2N1c2VkKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogICAgIGJvb2wgaXNQcmVzc2VkKGNv
bnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIGJvb2wgaXNTcGluVXBCdXR0b25QYXJ0UHJl
c3NlZChjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKICAgICBib29sIGlzSG92ZXJlZChjb25z
dCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICBib29sIGlzU3BpblVwQnV0dG9uUGFydEhvdmVy
ZWQoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgYm9vbCBpc1JlYWRPbmx5Q29udHJv
bChjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKICAgICBib29sIGlzRGVmYXVsdChjb25zdCBS
ZW5kZXJPYmplY3QqKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0gYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRl
eCA2MzE1ZjlmLi4wYjhmMjMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAt
NDc0LDYgKzQ3NCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdFJlcGFpbnRSZWN0KGNv
bnN0IFJlbmRlck9iamVjdCogbywgSW50UmVjdCYgcikKICAgICAgICAgY2FzZSBTcXVhcmVCdXR0
b25QYXJ0OgogICAgICAgICBjYXNlIERlZmF1bHRCdXR0b25QYXJ0OgogICAgICAgICBjYXNlIEJ1
dHRvblBhcnQ6CisgICAgICAgIGNhc2UgT3V0ZXJTcGluQnV0dG9uUGFydDoKICAgICAgICAgICAg
IHJldHVybiBSZW5kZXJUaGVtZTo6YWRqdXN0UmVwYWludFJlY3Qobywgcik7CiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lV2luLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNw
cAppbmRleCA5MmJmZDAzLi45ZDlhZDQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVdpbi5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4u
Y3BwCkBAIC05MSw2ICs5MSwyMSBAQAogI2RlZmluZSBQQlNfRElTQUJMRUQgICAgNAogI2RlZmlu
ZSBQQlNfREVGQVVMVEVEICAgNQogCisvLyBTcGluIGJ1dHRvbiBwYXJ0cworI2RlZmluZSBTUE5Q
X1VQICAgICAgICAgMQorI2RlZmluZSBTUE5QX0RPV04gICAgICAgMgorCisvLyBTcGluIGJ1dHRv
biBzdGFlcworI2RlZmluZSBETlNfTk9STUFMICAgICAgMQorI2RlZmluZSBETlNfSE9UICAgICAg
ICAgMgorI2RlZmluZSBETlNfUFJFU1NFRCAgICAgMworI2RlZmluZSBETlNfRElTQUJMRUQgICAg
NAorI2RlZmluZSBVUFNfTk9STUFMICAgICAgMQorI2RlZmluZSBVUFNfSE9UICAgICAgICAgMgor
I2RlZmluZSBVUFNfUFJFU1NFRCAgICAgMworI2RlZmluZSBVUFNfRElTQUJMRUQgICAgNAorCisK
IFNPRlRfTElOS19MSUJSQVJZKHV4dGhlbWUpCiBTT0ZUX0xJTksodXh0aGVtZSwgT3BlblRoZW1l
RGF0YSwgSEFORExFLCBXSU5BUEksIChIV05EIGh3bmQsIExQQ1dTVFIgcHN6Q2xhc3NMaXN0KSwg
KGh3bmQsIHBzekNsYXNzTGlzdCkpCiBTT0ZUX0xJTksodXh0aGVtZSwgQ2xvc2VUaGVtZURhdGEs
IEhSRVNVTFQsIFdJTkFQSSwgKEhBTkRMRSBoVGhlbWUpLCAoaFRoZW1lKSkKQEAgLTE1Myw2ICsx
NjgsNyBAQCBSZW5kZXJUaGVtZVdpbjo6UmVuZGVyVGhlbWVXaW4oKQogICAgICwgbV90ZXh0Rmll
bGRUaGVtZSgwKQogICAgICwgbV9tZW51TGlzdFRoZW1lKDApCiAgICAgLCBtX3NsaWRlclRoZW1l
KDApCisgICAgLCBtX3NwaW5CdXR0b25UaGVtZSgwKQogewogICAgIGhhdmVUaGVtZSA9IHV4dGhl
bWVMaWJyYXJ5KCkgJiYgSXNUaGVtZUFjdGl2ZSgpOwogfQpAQCAtMTkzLDYgKzIwOSwxMyBAQCBI
QU5ETEUgUmVuZGVyVGhlbWVXaW46OnNsaWRlclRoZW1lKCkgY29uc3QKICAgICByZXR1cm4gbV9z
bGlkZXJUaGVtZTsKIH0KIAorSEFORExFIFJlbmRlclRoZW1lV2luOjpzcGluQnV0dG9uVGhlbWUo
KSBjb25zdAoreworICAgIGlmIChoYXZlVGhlbWUgJiYgIW1fc3BpbkJ1dHRvblRoZW1lKQorICAg
ICAgICBtX3NwaW5CdXR0b25UaGVtZSA9IE9wZW5UaGVtZURhdGEoMCwgTCJTcGluIik7CisgICAg
cmV0dXJuIG1fc3BpbkJ1dHRvblRoZW1lOworfQorCiB2b2lkIFJlbmRlclRoZW1lV2luOjpjbG9z
ZSgpCiB7CiAgICAgLy8gVGhpcyBtZXRob2Qgd2lsbCBuZWVkIHRvIGJlIGNhbGxlZCB3aGVuIHRo
ZSBPUyB0aGVtZSBjaGFuZ2VzIHRvIGZsdXNoIG91ciBjYWNoZWQgdGhlbWVzLgpAQCAtMjA0LDcg
KzIyNyw5IEBAIHZvaWQgUmVuZGVyVGhlbWVXaW46OmNsb3NlKCkKICAgICAgICAgQ2xvc2VUaGVt
ZURhdGEobV9tZW51TGlzdFRoZW1lKTsKICAgICBpZiAobV9zbGlkZXJUaGVtZSkKICAgICAgICAg
Q2xvc2VUaGVtZURhdGEobV9zbGlkZXJUaGVtZSk7Ci0gICAgbV9idXR0b25UaGVtZSA9IG1fdGV4
dEZpZWxkVGhlbWUgPSBtX21lbnVMaXN0VGhlbWUgPSBtX3NsaWRlclRoZW1lID0gMDsKKyAgICBp
ZiAobV9zcGluQnV0dG9uVGhlbWUpCisgICAgICAgIENsb3NlVGhlbWVEYXRhKG1fc3BpbkJ1dHRv
blRoZW1lKTsKKyAgICBtX2J1dHRvblRoZW1lID0gbV90ZXh0RmllbGRUaGVtZSA9IG1fbWVudUxp
c3RUaGVtZSA9IG1fc2xpZGVyVGhlbWUgPSBtX3NwaW5CdXR0b25UaGVtZSA9IDA7CiAKICAgICBo
YXZlVGhlbWUgPSB1eHRoZW1lTGlicmFyeSgpICYmIElzVGhlbWVBY3RpdmUoKTsKIH0KQEAgLTM2
Nyw3ICszOTIsNyBAQCBib29sIFJlbmRlclRoZW1lV2luOjpzdXBwb3J0c0ZvY3VzUmluZyhjb25z
dCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiAgICAgcmV0dXJuIHN1cHBvcnRzRm9jdXMoc3R5
bGUtPmFwcGVhcmFuY2UoKSk7CiB9CiAKLXVuc2lnbmVkIFJlbmRlclRoZW1lV2luOjpkZXRlcm1p
bmVDbGFzc2ljU3RhdGUoUmVuZGVyT2JqZWN0KiBvKQordW5zaWduZWQgUmVuZGVyVGhlbWVXaW46
OmRldGVybWluZUNsYXNzaWNTdGF0ZShSZW5kZXJPYmplY3QqIG8sIGJvb2wgaXNVcEJ1dHRvbikK
IHsKICAgICB1bnNpZ25lZCBzdGF0ZSA9IDA7CiAgICAgc3dpdGNoIChvLT5zdHlsZSgpLT5hcHBl
YXJhbmNlKCkpIHsKQEAgLTM5Niw2ICs0MjEsMTYgQEAgdW5zaWduZWQgUmVuZGVyVGhlbWVXaW46
OmRldGVybWluZUNsYXNzaWNTdGF0ZShSZW5kZXJPYmplY3QqIG8pCiAgICAgICAgICAgICAgICAg
c3RhdGUgfD0gREZDU19JTkFDVElWRTsKICAgICAgICAgICAgIGVsc2UgaWYgKGlzUHJlc3NlZChv
KSkKICAgICAgICAgICAgICAgICBzdGF0ZSB8PSBERkNTX1BVU0hFRDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6CisgICAgICAgICAgICBzdGF0
ZSA9IGlzVXBCdXR0b24gPyBERkNTX1NDUk9MTFVQIDogREZDU19TQ1JPTExET1dOOworICAgICAg
ICAgICAgaWYgKCFpc0VuYWJsZWQobykpCisgICAgICAgICAgICAgICAgc3RhdGUgfD0gREZDU19J
TkFDVElWRTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzUHJlc3NlZChvKSAmJiBpc1VwQnV0dG9u
ID09IGlzU3BpblVwQnV0dG9uUGFydFByZXNzZWQobykpCisgICAgICAgICAgICAgICAgc3RhdGUg
fD0gREZDU19QVVNIRUQ7CisgICAgICAgICAgICBlbHNlIGlmIChpc0hvdmVyZWQobykgJiYgaXNV
cEJ1dHRvbiA9PSBpc1NwaW5VcEJ1dHRvblBhcnRIb3ZlcmVkKG8pKQorICAgICAgICAgICAgICAg
IHN0YXRlIHw9IERGQ1NfSE9UOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBicmVhazsKICAgICB9CkBAIC00NTEsNyArNDg2LDIwIEBAIHVuc2lnbmVk
IFJlbmRlclRoZW1lV2luOjpkZXRlcm1pbmVCdXR0b25TdGF0ZShSZW5kZXJPYmplY3QqIG8pCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotVGhlbWVEYXRhIFJlbmRlclRoZW1lV2luOjpnZXRDbGFz
c2ljVGhlbWVEYXRhKFJlbmRlck9iamVjdCogbykKK3Vuc2lnbmVkIFJlbmRlclRoZW1lV2luOjpk
ZXRlcm1pbmVTcGluQnV0dG9uU3RhdGUoUmVuZGVyT2JqZWN0KiBvLCBib29sIGlzVXBCdXR0b24p
Cit7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gaXNVcEJ1dHRvbiA/IFVQU19OT1JNQUwgOiBETlNf
Tk9STUFMOworICAgIGlmICghaXNFbmFibGVkKG8pKQorICAgICAgICByZXN1bHQgPSBpc1VwQnV0
dG9uID8gVVBTX0RJU0FCTEVEIDogRE5TX0RJU0FCTEVEOworICAgIGVsc2UgaWYgKGlzUHJlc3Nl
ZChvKSAmJiBpc1VwQnV0dG9uID09IGlzU3BpblVwQnV0dG9uUGFydFByZXNzZWQobykpCisgICAg
ICAgIHJlc3VsdCA9IGlzVXBCdXR0b24gPyBVUFNfUFJFU1NFRCA6IEROU19QUkVTU0VEOworICAg
IGVsc2UgaWYgKGlzSG92ZXJlZChvKSAmJiBpc1VwQnV0dG9uID09IGlzU3BpblVwQnV0dG9uUGFy
dEhvdmVyZWQobykpCisgICAgICAgIHJlc3VsdCA9IGlzVXBCdXR0b24gPyBVUFNfSE9UIDogRE5T
X0hPVDsKKyAgICByZXR1cm4gcmVzdWx0OworCit9CisKK1RoZW1lRGF0YSBSZW5kZXJUaGVtZVdp
bjo6Z2V0Q2xhc3NpY1RoZW1lRGF0YShSZW5kZXJPYmplY3QqIG8sIGJvb2wgaXNVcEJ1dHRvbikK
IHsKICAgICBUaGVtZURhdGEgcmVzdWx0OwogICAgIHN3aXRjaCAoby0+c3R5bGUoKS0+YXBwZWFy
YW5jZSgpKSB7CkBAIC00NjEsMTEgKzUwOSwxMSBAQCBUaGVtZURhdGEgUmVuZGVyVGhlbWVXaW46
OmdldENsYXNzaWNUaGVtZURhdGEoUmVuZGVyT2JqZWN0KiBvKQogICAgICAgICBjYXNlIENoZWNr
Ym94UGFydDoKICAgICAgICAgY2FzZSBSYWRpb1BhcnQ6CiAgICAgICAgICAgICByZXN1bHQubV9w
YXJ0ID0gREZDX0JVVFRPTjsKLSAgICAgICAgICAgIHJlc3VsdC5tX3N0YXRlID0gZGV0ZXJtaW5l
Q2xhc3NpY1N0YXRlKG8pOworICAgICAgICAgICAgcmVzdWx0Lm1fc3RhdGUgPSBkZXRlcm1pbmVD
bGFzc2ljU3RhdGUobywgZmFsc2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
TWVudWxpc3RQYXJ0OgogICAgICAgICAgICAgcmVzdWx0Lm1fcGFydCA9IERGQ19TQ1JPTEw7Ci0g
ICAgICAgICAgICByZXN1bHQubV9zdGF0ZSA9IGRldGVybWluZUNsYXNzaWNTdGF0ZShvKTsKKyAg
ICAgICAgICAgIHJlc3VsdC5tX3N0YXRlID0gZGV0ZXJtaW5lQ2xhc3NpY1N0YXRlKG8sIGZhbHNl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNlYXJjaEZpZWxkUGFydDoKICAg
ICAgICAgY2FzZSBUZXh0RmllbGRQYXJ0OgpAQCAtNDg5LDE2ICs1MzcsMjAgQEAgVGhlbWVEYXRh
IFJlbmRlclRoZW1lV2luOjpnZXRDbGFzc2ljVGhlbWVEYXRhKFJlbmRlck9iamVjdCogbykKICAg
ICAgICAgICAgIHJlc3VsdC5tX3BhcnQgPSBUS1BfVEhVTUJSSUdIVDsKICAgICAgICAgICAgIHJl
c3VsdC5tX3N0YXRlID0gZGV0ZXJtaW5lU2xpZGVyVGh1bWJTdGF0ZShvKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6CisgICAgICAgICAgICBy
ZXN1bHQubV9wYXJ0ID0gREZDX1NDUk9MTDsKKyAgICAgICAgICAgIHJlc3VsdC5tX3N0YXRlID0g
ZGV0ZXJtaW5lQ2xhc3NpY1N0YXRlKG8sIGlzVXBCdXR0b24pOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotVGhlbWVEYXRhIFJlbmRlclRoZW1lV2luOjpnZXRUaGVtZURhdGEoUmVu
ZGVyT2JqZWN0KiBvKQorVGhlbWVEYXRhIFJlbmRlclRoZW1lV2luOjpnZXRUaGVtZURhdGEoUmVu
ZGVyT2JqZWN0KiBvLCBib29sIGlzVXBCdXR0b24pCiB7CiAgICAgaWYgKCFoYXZlVGhlbWUpCi0g
ICAgICAgIHJldHVybiBnZXRDbGFzc2ljVGhlbWVEYXRhKG8pOworICAgICAgICByZXR1cm4gZ2V0
Q2xhc3NpY1RoZW1lRGF0YShvLCBpc1VwQnV0dG9uKTsKIAogICAgIFRoZW1lRGF0YSByZXN1bHQ7
CiAgICAgc3dpdGNoIChvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkpIHsKQEAgLTU0OCw2ICs2MDAs
MTAgQEAgVGhlbWVEYXRhIFJlbmRlclRoZW1lV2luOjpnZXRUaGVtZURhdGEoUmVuZGVyT2JqZWN0
KiBvKQogICAgICAgICAgICAgcmVzdWx0Lm1fcGFydCA9IFRLUF9USFVNQlJJR0hUOwogICAgICAg
ICAgICAgcmVzdWx0Lm1fc3RhdGUgPSBkZXRlcm1pbmVTbGlkZXJUaHVtYlN0YXRlKG8pOwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDoKKyAgICAg
ICAgICAgIHJlc3VsdC5tX3BhcnQgPSBpc1VwQnV0dG9uID8gU1BOUF9VUCA6IFNQTlBfRE9XTjsK
KyAgICAgICAgICAgIHJlc3VsdC5tX3N0YXRlID0gZGV0ZXJtaW5lU3BpbkJ1dHRvblN0YXRlKG8s
IGlzVXBCdXR0b24pOworICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgcmV0dXJuIHJl
c3VsdDsKQEAgLTYxNyw2ICs2NzMsMjkgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRCdXR0
b24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgUmVuZGVyVGhlbWVXaW46OmFkanVzdElubmVyU3BpbkJ1
dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUs
IEVsZW1lbnQqIGUpIGNvbnN0Cit7CisgICAgaW50IHdpZHRoID0gOjpHZXRTeXN0ZW1NZXRyaWNz
KFNNX0NYVlNDUk9MTCk7CisgICAgaWYgKHdpZHRoIDw9IDApCisgICAgICAgIHdpZHRoID0gMTc7
ICAvLyBWaXN0YSdzIGRlZmF1bHQuCisgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aCh3aWR0aCwg
Rml4ZWQpKTsKKyAgICBzdHlsZS0+c2V0TWluV2lkdGgoTGVuZ3RoKHdpZHRoLCBGaXhlZCkpOwor
fQorCitib29sIFJlbmRlclRoZW1lV2luOjpwYWludElubmVyU3BpbkJ1dHRvbihSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiBy
KQoreworICAgIGlmIChyLmhlaWdodCgpIDwgMikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IEludFJlY3QgdXBSZWN0KHIpOworICAgIHVwUmVjdC5zZXRIZWlnaHQoci5oZWlnaHQoKSAvIDIp
OworICAgIEludFJlY3QgZG93blJlY3Qocik7CisgICAgZG93blJlY3Quc2V0WSh1cFJlY3QuYm90
dG9tKCkpOworICAgIGRvd25SZWN0LnNldEhlaWdodChyLmhlaWdodCgpIC0gdXBSZWN0LmhlaWdo
dCgpKTsKKyAgICBkcmF3Q29udHJvbChpLmNvbnRleHQsIG8sIHNwaW5CdXR0b25UaGVtZSgpLCBn
ZXRUaGVtZURhdGEobywgdHJ1ZSksIHVwUmVjdCk7CisgICAgZHJhd0NvbnRyb2woaS5jb250ZXh0
LCBvLCBzcGluQnV0dG9uVGhlbWUoKSwgZ2V0VGhlbWVEYXRhKG8sIGZhbHNlKSwgZG93blJlY3Qp
OworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBSZW5kZXJUaGVtZVdpbjo6c2V0Q2hlY2ti
b3hTaXplKFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKIHsKICAgICAvLyBJZiB0aGUgd2lkdGgg
YW5kIGhlaWdodCBhcmUgYm90aCBzcGVjaWZpZWQsIHRoZW4gd2UgaGF2ZSBub3RoaW5nIHRvIGRv
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmgKaW5kZXggOTljMjAwNC4uMGZiMGVlYiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oCkBAIC03Nyw2ICs3Nyw5IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgYm9vbCBwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJP
YmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKIAorICAgIHZpcnR1YWwgdm9pZCBh
ZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUq
LCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHBhaW50SW5uZXJTcGluQnV0dG9u
KFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpOworCiAgICAgdmlydHVhbCBib29sIHBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCos
IGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAg
dmlydHVhbCBib29sIHBhaW50VGV4dEFyZWEoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJP
YmplY3Q6OlBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKQEAgLTE0MiwyNCArMTQ1LDI3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbG9zZSgpOwogCiAgICAgdW5zaWduZWQgZGV0ZXJtaW5l
U3RhdGUoUmVuZGVyT2JqZWN0Kik7Ci0gICAgdW5zaWduZWQgZGV0ZXJtaW5lQ2xhc3NpY1N0YXRl
KFJlbmRlck9iamVjdCopOworICAgIHVuc2lnbmVkIGRldGVybWluZUNsYXNzaWNTdGF0ZShSZW5k
ZXJPYmplY3QqLCBib29sKTsKICAgICB1bnNpZ25lZCBkZXRlcm1pbmVTbGlkZXJUaHVtYlN0YXRl
KFJlbmRlck9iamVjdCopOwogICAgIHVuc2lnbmVkIGRldGVybWluZUJ1dHRvblN0YXRlKFJlbmRl
ck9iamVjdCopOworICAgIHVuc2lnbmVkIGRldGVybWluZVNwaW5CdXR0b25TdGF0ZShSZW5kZXJP
YmplY3QqLCBib29sKTsKIAogICAgIGJvb2wgc3VwcG9ydHNGb2N1cyhDb250cm9sUGFydCkgY29u
c3Q7CiAKLSAgICBUaGVtZURhdGEgZ2V0VGhlbWVEYXRhKFJlbmRlck9iamVjdCopOwotICAgIFRo
ZW1lRGF0YSBnZXRDbGFzc2ljVGhlbWVEYXRhKFJlbmRlck9iamVjdCogbyk7CisgICAgVGhlbWVE
YXRhIGdldFRoZW1lRGF0YShSZW5kZXJPYmplY3QqLCBib29sIGlzVXBCdXR0b24gPSBmYWxzZSk7
CisgICAgVGhlbWVEYXRhIGdldENsYXNzaWNUaGVtZURhdGEoUmVuZGVyT2JqZWN0KiBvLCBib29s
IGlzVXBCdXR0b24gPSBmYWxzZSk7CiAKICAgICBIQU5ETEUgYnV0dG9uVGhlbWUoKSBjb25zdDsK
ICAgICBIQU5ETEUgdGV4dEZpZWxkVGhlbWUoKSBjb25zdDsKICAgICBIQU5ETEUgbWVudUxpc3RU
aGVtZSgpIGNvbnN0OwogICAgIEhBTkRMRSBzbGlkZXJUaGVtZSgpIGNvbnN0OworICAgIEhBTkRM
RSBzcGluQnV0dG9uVGhlbWUoKSBjb25zdDsKIAogICAgIG11dGFibGUgSEFORExFIG1fYnV0dG9u
VGhlbWU7CiAgICAgbXV0YWJsZSBIQU5ETEUgbV90ZXh0RmllbGRUaGVtZTsKICAgICBtdXRhYmxl
IEhBTkRMRSBtX21lbnVMaXN0VGhlbWU7CiAgICAgbXV0YWJsZSBIQU5ETEUgbV9zbGlkZXJUaGVt
ZTsKKyAgICBtdXRhYmxlIEhBTkRMRSBtX3NwaW5CdXR0b25UaGVtZTsKIH07CiAKIH07CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCBmYzdm
N2YwLi4zYjY5YWFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5jcHAKQEAgLTIxMiw0ICsyMTIsNjEgQEAgdm9pZCBTZWFyY2hGaWVsZENhbmNlbEJ1
dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKICAgICAgICAgSFRN
TERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZ0KTsKIH0KIAorU3BpbkJ1dHRvbkVs
ZW1lbnQ6OlNwaW5CdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2MsIE5vZGUqIHNoYWRvd1BhcmVu
dCkKKyAgICA6IFRleHRDb250cm9sSW5uZXJFbGVtZW50KGRvYywgc2hhZG93UGFyZW50KQorICAg
ICwgbV9jYXB0dXJpbmcoZmFsc2UpCisgICAgLCBtX29uVXBCdXR0b24oZmFsc2UpCit7Cit9CisK
K3ZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkK
K3sKKyAgICBpZiAoZXZ0LT5pc01vdXNlRXZlbnQoKSkgeworICAgICAgICBjb25zdCBNb3VzZUV2
ZW50KiBtZXZ0ID0gc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2dCk7CisgICAgICAgIGlmICht
ZXZ0LT5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB7CisgICAgICAgICAgICBIVE1MSW5wdXRFbGVt
ZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzaGFkb3dBbmNlc3Rv
ck5vZGUoKSk7CisgICAgICAgICAgICBJbnRQb2ludCBsb2NhbCA9IHJvdW5kZWRJbnRQb2ludChy
ZW5kZXJCb3goKS0+YWJzb2x1dGVUb0xvY2FsKG1ldnQtPmFic29sdXRlTG9jYXRpb24oKSwgZmFs
c2UsIHRydWUpKTsKKyAgICAgICAgICAgIGlmIChldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCku
Y2xpY2tFdmVudCkgeworICAgICAgICAgICAgICAgIGlmIChyZW5kZXJCb3goKS0+Ym9yZGVyQm94
UmVjdCgpLmNvbnRhaW5zKGxvY2FsKSkgeworICAgICAgICAgICAgICAgICAgICBpbnB1dC0+Zm9j
dXMoKTsKKyAgICAgICAgICAgICAgICAgICAgaW5wdXQtPnNlbGVjdCgpOworICAgICAgICAgICAg
ICAgICAgICBpZiAobG9jYWwueSgpIDwgcmVuZGVyQm94KCktPnkoKSArIHJlbmRlckJveCgpLT5o
ZWlnaHQoKSAvIDIpCisgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC0+c3RlcFVwRnJvbVVJ
KDEpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBp
bnB1dC0+c3RlcFVwRnJvbVVJKC0xKTsKKyAgICAgICAgICAgICAgICAgICAgZXZ0LT5zZXREZWZh
dWx0SGFuZGxlZCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
ZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KSB7CisgICAgICAgICAg
ICAgICAgaWYgKHJlbmRlckJveCgpLT5ib3JkZXJCb3hSZWN0KCkuY29udGFpbnMobG9jYWwpKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICghbV9jYXB0dXJpbmcpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJp
bmdNb3VzZUV2ZW50c05vZGUoaW5wdXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Y2FwdHVyaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBib29sIG9sZE9uVXBCdXR0b24gPSBtX29u
VXBCdXR0b247CisgICAgICAgICAgICAgICAgICAgIG1fb25VcEJ1dHRvbiA9IGxvY2FsLnkoKSA8
IHJlbmRlckJveCgpLT55KCkgKyByZW5kZXJCb3goKS0+aGVpZ2h0KCkgLyAyOworICAgICAgICAg
ICAgICAgICAgICBpZiAobV9vblVwQnV0dG9uICE9IG9sZE9uVXBCdXR0b24pCisgICAgICAgICAg
ICAgICAgICAgICAgICByZW5kZXJlcigpLT5yZXBhaW50KCk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fY2FwdHVyaW5nKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2Fw
dHVyaW5nTW91c2VFdmVudHNOb2RlKDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Y2FwdHVyaW5nID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisgICAgaWYgKCFldnQtPmRlZmF1bHRIYW5kbGVkKCkpCisgICAgICAgIEhUTUxEaXZF
bGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2dCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgU3BpbkJ1dHRvbkVsZW1lbnQ6OnNwaW5CdXR0b25Ob2RlTmFtZSgpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUsICgiLXdlYmtpdC1zcGluLWJ1dHRvbiIp
KTsKKyAgICByZXR1cm4gbmFtZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmggYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuaAppbmRleCBmNzJkZGYyLi40NjM3OTYxIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaApAQCAtNjgsNiArNjgsMjEgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fY2FwdHVyaW5nOwogfTsKIAorY2xhc3MgU3BpbkJ1dHRvbkVs
ZW1lbnQgOiBwdWJsaWMgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQgeworcHVibGljOgorICAgIFNw
aW5CdXR0b25FbGVtZW50KERvY3VtZW50KiwgTm9kZSopOworICAgIHZpcnR1YWwgU3RyaW5nIG5v
ZGVOYW1lKCkgY29uc3QgeyByZXR1cm4gc3BpbkJ1dHRvbk5vZGVOYW1lKCk7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNFbmFibGVkRm9ybUNvbnRyb2woKSB7IHJldHVybiBzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpLT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKKworICAgIGJvb2wg
b25VcEJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIG1fb25VcEJ1dHRvbjsgfQorICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIHNwaW5CdXR0b25Ob2RlTmFtZSgpOworCitwcml2YXRlOgorICAg
IGJvb2wgbV9jYXB0dXJpbmc7CisgICAgYm9vbCBtX29uVXBCdXR0b247Cit9OworCiB9IC8vbmFt
ZXNwYWNlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
Q29uc3RhbnRzLmgKaW5kZXggMDEzZDMzNS4uOTFhYTNjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCkBAIC03Myw2ICs3Myw3IEBAIGVudW0g
UHNldWRvSWQgewogICAgIE1FRElBX0NPTlRST0xTX1NFRUtfRk9SV0FSRF9CVVRUT04sIE1FRElB
X0NPTlRST0xTX0ZVTExTQ1JFRU5fQlVUVE9OLCBNRURJQV9DT05UUk9MU19SRVdJTkRfQlVUVE9O
LAogICAgIE1FRElBX0NPTlRST0xTX1JFVFVSTl9UT19SRUFMVElNRV9CVVRUT04sIE1FRElBX0NP
TlRST0xTX1NUQVRVU19ESVNQTEFZLAogICAgIFNDUk9MTEJBUl9USFVNQiwgU0NST0xMQkFSX0JV
VFRPTiwgU0NST0xMQkFSX1RSQUNLLCBTQ1JPTExCQVJfVFJBQ0tfUElFQ0UsIFNDUk9MTEJBUl9D
T1JORVIsIFJFU0laRVIsCisgICAgSU5ORVJfU1BJTl9CVVRUT04sIE9VVEVSX1NQSU5fQlVUVE9O
LAogCiAgICAgRklSU1RfSU5URVJOQUxfUFNFVURPSUQgPSBGSUxFX1VQTE9BRF9CVVRUT04KIH07
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>35014</attachid>
            <date>2009-08-17 21:42:57 -0700</date>
            <delta_ts>2009-08-17 21:42:57 -0700</delta_ts>
            <desc>Screen shot of a dialog in Vista</desc>
            <filename>vista-advanced-appearance.png</filename>
            <type>image/png</type>
            <size>51775</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">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
I8bdHZO0i3ziidujEnZGHQmLPrJ9b9y2iMPvRhzCKNvCD26LOLQVCD+0LTJ2W1T8u3vjt2MUgoSd
0Yk7oxJ2RCWERaNvPMYFdkYTkAtpXyIUwvYlhe1Pggy1HegbGbcddgAMQQnEVDQxuHNf0q4Dx/cc
PE5me/g9TDUm6c8xSX/5MeLv30+TsbbACKRcL+4YfOR9ZJymp5VBa1lLg34rbe385GrN2QzBhRsN
F/Obi+r1IoMTOZTa2g1oqHJSeL7qu6h5EmiokhIw28n6CZmeNkofqMydyja3wuSSGhwirQ1o0Vib
1dYWja1ZYxPpOyRGN4KjtPZpHYM6x6DRddfkvmfpHrX33Xf0j7sGH7rvPpoFaPLFpFrn3Ued9x4D
XV4MP+nyAk13H7mGHnYMjDv67tu6R/Av5gH8q1SU1q6R9t4x58D3UCD2B793Doy394xY3ENGe6/e
1qUxu5WtToXRKTd2KFpdKnOX2tyttfbq2/v0tl5Dey/uMxodva0d/UbnYKtrCGbNMNszStA1bOsZ
tXUPWzrvtjkHDY4+A2y292ptPTpbN4xrEbo2NwWXqs2panMpKZCQ2no0RK1Ha0XZC0AgMkE3oKVK
KFAgCgCME01LtwbzpM2aXEoTsQyozZ3EsrlTA1PQb+/V2/sNjoE29xAVkxF731hH/7gvEA0SnMEH
gHvoISLpDXL38BMG80XgMRS6hh/PAFyrdL3vdYvweoF6SiaX9+zARYvWqUuDXMngJn3X5PueJunp
Zy+vv8yT/pOj+Vtm3Ze4O14o/LZYnFIuT2Mr0ypV6WxlurfkqNIrlc9ZvSKNrUirVKazFZjbRMnB
nCfryYQrcAp3MHlFaoUila0kZYUipUz2r1LJt7dbLt4SfJ7B+Uc657M09qcpFWfTuJ9e457LrsO3
mV/mib4t16VXmzNrzbca7QUtHWXybp5usMZ4t9FyX9iOXwnNgJb276dBiN8TURA5Hoo7HgES52Mv
pK4nNFCDJvRtMI/Wtd7ja/ur1L0AW9HNVffyNP01hsEmyxgURPZxoWW00XSPj1ZJR2G98SZPlcOR
p94Rp5RKrpZI0sqVWVX6HJ7hlsBS2GgrbLDcbrQWNxOUCNtLJM5SibNc3slW9nC1A1WaAY6qh6/p
4yi72DLXHaG9oKEtv641t67tRk1rbq0hv1Z3s1qXw1Vfr1LmcBVZldIsrjKDq87iqnKq9Tm1ppsC
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
+cVsutlxtwAAAABJRU5ErkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39537</attachid>
            <date>2009-09-14 01:48:04 -0700</date>
            <delta_ts>2009-11-23 22:25:28 -0800</delta_ts>
            <desc>Patch part 1: definition of pseudo classes and appearances</desc>
            <filename>number-ui-p1-r1.diff</filename>
            <type>text/plain</type>
            <size>13246</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTUwMGNmNC4uY2VhNjY0ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAwOS0wOS0wMSAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW50cm9kdWNlIHRoZSBmb2xsb3dpbmdzOgorICAgICAgICAgIC0gOjot
d2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIHBzZXVkbyBDU1Mgc2VsZWN0b3IKKyAgICAgICAgICAt
IDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiBwc2V1ZG8gQ1NTIHNlbGVjdG9yCisgICAgICAg
ICAgLSBuZXcgYXBwZWFyYW5jZSB0eXBlOiBpbm5lci1zcGluLWJ1dHRvbgorICAgICAgICAgIC0g
bmV3IGFwcGVhcmFuY2UgdHlwZTogb3V0ZXItc3Bpbi1idXR0b24KKyAgICAgICAgVGhleSdyZSBn
b2luZyB0byBiZSB1c2VkIGZvciA8aW5wdXQgdHlwZT1udW1iZXI+IFVJLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg5MzQKKworICAgICAgICAqIGNz
cy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUp
OgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3I6Oik6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVj
dG9yKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbjoKKyAgICAgICAgKiBjc3Mv
aHRtbC5jc3M6CisgICAgICAgICogcGxhdGZvcm0vVGhlbWVUeXBlcy5oOgorICAgICAgICAoV2Vi
Q29yZTo6KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YWRqdXN0
SW5uZXJTcGluQnV0dG9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFk
anVzdE91dGVyU3BpbkJ1dHRvblN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludElubmVyU3BpbkJ1dHRv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRPdXRlclNwaW5CdXR0b24p
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAg
ICAgICAoV2ViQ29yZTo6KToKKwogMjAwOS0wOS0xMyAgS2V2aW4gV2F0dGVycyAgPGtldmlud2F0
dGVyc0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmggYi9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKaW5kZXggZjhiZTc1YS4uZmQyNjAz
ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCisr
KyBiL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaApAQCAtMTk1LDYgKzE5
NSw5IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVW
YWx1ZShDb250cm9sUGFydCBlKQogICAgICAgICBjYXNlIERlZmF1bHRCdXR0b25QYXJ0OgogICAg
ICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU1ZhbHVlRGVmYXVsdEJ1dHRvbjsKICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6CisgICAgICAgICAg
ICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVJbm5lclNwaW5CdXR0b247CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBMaXN0Ym94UGFydDoKICAgICAgICAgICAgIG1fdmFsdWUuaWRl
bnQgPSBDU1NWYWx1ZUxpc3Rib3g7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI1OCw2ICsyNjEs
OSBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFs
dWUoQ29udHJvbFBhcnQgZSkKICAgICAgICAgY2FzZSBNZW51bGlzdFRleHRGaWVsZFBhcnQ6CiAg
ICAgICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVNZW51bGlzdFRleHRmaWVsZDsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE91dGVyU3BpbkJ1dHRvblBhcnQ6CisgICAg
ICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVPdXRlclNwaW5CdXR0b247CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBTbGlkZXJIb3Jpem9udGFsUGFydDoKICAgICAgICAg
ICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NWYWx1ZVNsaWRlckhvcml6b250YWw7CiAgICAgICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCA5ZDlkZDFiLi4zMzJjNTRkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3IuY3BwCkBAIC05OSw2ICs5OSw3IEBAIHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9U
eXBlKCkgY29uc3QKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZm9jdXMs
ICgiZm9jdXMiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGhvdmVy
LCAoImhvdmVyIikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpbmRl
dGVybWluYXRlLCAoImluZGV0ZXJtaW5hdGUiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIGlubmVyU3BpbkJ1dHRvbiwgKCItd2Via2l0LWlubmVyLXNwaW4tYnV0dG9u
IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpbnB1dFBsYWNlaG9s
ZGVyLCAoIi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmcsIGxhc3RDaGlsZCwgKCJsYXN0LWNoaWxkIikpOwogICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBsYXN0T2ZUeXBlLCAoImxhc3Qtb2YtdHlwZSIp
KTsKQEAgLTEyMyw2ICsxMjQsNyBAQCB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlw
ZSgpIGNvbnN0CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG9ubHlDaGls
ZCwgKCJvbmx5LWNoaWxkIikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBvbmx5T2ZUeXBlLCAoIm9ubHktb2YtdHlwZSIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgb3B0aW9uYWwsICgib3B0aW9uYWwiKSk7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdG9taWNTdHJpbmcsIG91dGVyU3BpbkJ1dHRvbiwgKCItd2Via2l0LW91dGVyLXNw
aW4tYnV0dG9uIikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCByZXF1
aXJlZCwgKCJyZXF1aXJlZCIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgcmVzaXplciwgKCItd2Via2l0LXJlc2l6ZXIiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIHJvb3QsICgicm9vdCIpKTsKQEAgLTIyNCw3ICsyMjYsMTAgQEAgdm9p
ZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdAogICAgICAgICBtX3BzZXVk
b1R5cGUgPSBQc2V1ZG9Ib3ZlcjsKICAgICBlbHNlIGlmIChtX3ZhbHVlID09IGluZGV0ZXJtaW5h
dGUpCiAgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb0luZGV0ZXJtaW5hdGU7Ci0gICAgZWxz
ZSBpZiAobV92YWx1ZSA9PSBsaW5rKQorICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0gaW5uZXJTcGlu
QnV0dG9uKSB7CisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb0lubmVyU3BpbkJ1dHRvbjsK
KyAgICAgICAgZWxlbWVudCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChtX3ZhbHVlID09IGxpbmsp
CiAgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb0xpbms7CiAgICAgZWxzZSBpZiAobV92YWx1
ZSA9PSBsYW5nKQogICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9MYW5nOwpAQCAtMjgzLDcg
KzI4OCwxMCBAQCB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0CiAg
ICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb050aExhc3RDaGlsZDsKICAgICBlbHNlIGlmICht
X3ZhbHVlID09IG50aExhc3RPZlR5cGUpCiAgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb050
aExhc3RPZlR5cGU7Ci0gICAgZWxzZSBpZiAobV92YWx1ZSA9PSByb290KQorICAgIGVsc2UgaWYg
KG1fdmFsdWUgPT0gb3V0ZXJTcGluQnV0dG9uKSB7CisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBz
ZXVkb091dGVyU3BpbkJ1dHRvbjsKKyAgICAgICAgZWxlbWVudCA9IHRydWU7CisgICAgfSBlbHNl
IGlmIChtX3ZhbHVlID09IHJvb3QpCiAgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb1Jvb3Q7
CiAgICAgZWxzZSBpZiAobV92YWx1ZSA9PSB3aW5kb3dJbmFjdGl2ZSkKICAgICAgICAgbV9wc2V1
ZG9UeXBlID0gUHNldWRvV2luZG93SW5hY3RpdmU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5oIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCA3ODM2MTM2Li41
ZmUxYzFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1dlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTE4Myw3ICsxODMsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICBQc2V1ZG9NZWRpYUNvbnRyb2xzUmV3aW5kQnV0dG9uLAogICAgICAg
ICAgICAgUHNldWRvTWVkaWFDb250cm9sc1JldHVyblRvUmVhbHRpbWVCdXR0b24sCiAgICAgICAg
ICAgICBQc2V1ZG9NZWRpYUNvbnRyb2xzU3RhdHVzRGlzcGxheSwKLSAgICAgICAgICAgIFBzZXVk
b01lZGlhQ29udHJvbHNGdWxsc2NyZWVuQnV0dG9uCisgICAgICAgICAgICBQc2V1ZG9NZWRpYUNv
bnRyb2xzRnVsbHNjcmVlbkJ1dHRvbiwKKyAgICAgICAgICAgIFBzZXVkb0lubmVyU3BpbkJ1dHRv
biwKKyAgICAgICAgICAgIFBzZXVkb091dGVyU3BpbkJ1dHRvbiwKICAgICAgICAgfTsKIAogICAg
ICAgICBQc2V1ZG9UeXBlIHBzZXVkb1R5cGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cAppbmRleCA2YmEzNTU3Li5kNDFmZjNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAt
MjU2Nyw2ICsyNTY3LDEyIEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2Vy
OjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lCiAgICAgICAgICAgICBj
YXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9SZXNpemVyOgogICAgICAgICAgICAgICAgIGR5bmFtaWNQ
c2V1ZG8gPSBSRVNJWkVSOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvSW5uZXJTcGluQnV0dG9uOgorICAgICAgICAgICAg
ICAgIGR5bmFtaWNQc2V1ZG8gPSBJTk5FUl9TUElOX0JVVFRPTjsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb091dGVyU3Bp
bkJ1dHRvbjoKKyAgICAgICAgICAgICAgICBkeW5hbWljUHNldWRvID0gT1VURVJfU1BJTl9CVVRU
T047CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpQc2V1ZG9Vbmtub3duOgogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvTm90UGFyc2VkOgogICAgICAgICAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmlu
CmluZGV4IDgyNGJhNWQuLjFjMmRjYTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
S2V5d29yZHMuaW4KKysrIGIvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgpAQCAtNTAx
LDYgKzUwMSw3IEBAIHNxdWFyZS1idXR0b24KIGJ1dHRvbgogYnV0dG9uLWJldmVsCiBkZWZhdWx0
LWJ1dHRvbgoraW5uZXItc3Bpbi1idXR0b24KIGxpc3Rib3gKIGxpc3RpdGVtCiBtZWRpYS1mdWxs
c2NyZWVuLWJ1dHRvbgpAQCAtNTIyLDYgKzUyMyw3IEBAIG1lbnVsaXN0CiBtZW51bGlzdC1idXR0
b24KIG1lbnVsaXN0LXRleHQKIG1lbnVsaXN0LXRleHRmaWVsZAorb3V0ZXItc3Bpbi1idXR0b24K
IHNsaWRlci1ob3Jpem9udGFsCiBzbGlkZXItdmVydGljYWwKIHNsaWRlcnRodW1iLWhvcml6b250
YWwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL2h0bWwuY3NzIGIvV2ViQ29yZS9jc3MvaHRtbC5j
c3MKaW5kZXggMzBkNTY2MS4uNmQzNjg3ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvaHRtbC5j
c3MKKysrIGIvV2ViQ29yZS9jc3MvaHRtbC5jc3MKQEAgLTM1NCw2ICszNTQsMTcgQEAgaW5wdXRb
dHlwZT0ic2VhcmNoIl06Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uIHsKICAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CiB9CiAKK2lucHV0Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9u
IHsKKyAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGlubmVyLXNwaW4tYnV0dG9uOworICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKK30KKworaW5wdXQ6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24g
eworICAgIC13ZWJraXQtYXBwZWFyYW5jZTogb3V0ZXItc3Bpbi1idXR0b247CisgICAgZGlzcGxh
eTogaW5saW5lLWJsb2NrOworICAgIG1hcmdpbi1sZWZ0OiAycHg7Cit9CisKIHRleHRhcmVhIHsK
ICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRhcmVhOwogICAgIGJhY2tncm91bmQtY29sb3I6
IHdoaXRlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmggYi9XZWJD
b3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaAppbmRleCAzYWI0MWRkLi42NzQ1OGJiIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L1RoZW1lVHlwZXMuaApAQCAtMzgsNiArMzgsNyBAQCBlbnVtIENvbnRyb2xTdGF0ZSB7CiAgICAg
RGVmYXVsdFN0YXRlID0gMSA8PCA2LAogICAgIFdpbmRvd0luYWN0aXZlU3RhdGUgPSAxIDw8IDcs
CiAgICAgSW5kZXRlcm1pbmF0ZVN0YXRlID0gMSA8PCA4LAorICAgIFNwaW5VcFN0YXRlID0gMSA8
PCA5LCAgLy8gU3ViLXN0YXRlIGZvciBIb3ZlclN0YXRlIGFuZCBQcmVzc2VkU3RhdGUKICAgICBB
bGxTdGF0ZXMgPSAweGZmZmZmZmZmCiB9OwogCkBAIC00NiwxMiArNDcsMTIgQEAgdHlwZWRlZiB1
bnNpZ25lZCBDb250cm9sU3RhdGVzOwogLy8gTXVzdCBmb2xsb3cgQ1NTVmFsdWVLZXl3b3Jkcy5p
biBvcmRlcgogZW51bSBDb250cm9sUGFydCB7CiAgICAgTm9Db250cm9sUGFydCwgQ2hlY2tib3hQ
YXJ0LCBSYWRpb1BhcnQsIFB1c2hCdXR0b25QYXJ0LCBTcXVhcmVCdXR0b25QYXJ0LCBCdXR0b25Q
YXJ0LAotICAgIEJ1dHRvbkJldmVsUGFydCwgRGVmYXVsdEJ1dHRvblBhcnQsIExpc3Rib3hQYXJ0
LCBMaXN0SXRlbVBhcnQsIAorICAgIEJ1dHRvbkJldmVsUGFydCwgRGVmYXVsdEJ1dHRvblBhcnQs
IElubmVyU3BpbkJ1dHRvblBhcnQsIExpc3Rib3hQYXJ0LCBMaXN0SXRlbVBhcnQsCiAgICAgTWVk
aWFGdWxsc2NyZWVuQnV0dG9uUGFydCwgTWVkaWFNdXRlQnV0dG9uUGFydCwgTWVkaWFQbGF5QnV0
dG9uUGFydCwgTWVkaWFTZWVrQmFja0J1dHRvblBhcnQsIAogICAgIE1lZGlhU2Vla0ZvcndhcmRC
dXR0b25QYXJ0LCBNZWRpYVJld2luZEJ1dHRvblBhcnQsIE1lZGlhUmV0dXJuVG9SZWFsdGltZUJ1
dHRvblBhcnQsCiAgICAgTWVkaWFTbGlkZXJQYXJ0LCBNZWRpYVNsaWRlclRodW1iUGFydCwgTWVk
aWFWb2x1bWVTbGlkZXJDb250YWluZXJQYXJ0LCBNZWRpYVZvbHVtZVNsaWRlclBhcnQsIE1lZGlh
Vm9sdW1lU2xpZGVyVGh1bWJQYXJ0LAogICAgIE1lZGlhQ29udHJvbHNCYWNrZ3JvdW5kUGFydCwg
TWVkaWFDdXJyZW50VGltZVBhcnQsIE1lZGlhVGltZVJlbWFpbmluZ1BhcnQsCi0gICAgTWVudWxp
c3RQYXJ0LCBNZW51bGlzdEJ1dHRvblBhcnQsIE1lbnVsaXN0VGV4dFBhcnQsIE1lbnVsaXN0VGV4
dEZpZWxkUGFydCwKKyAgICBNZW51bGlzdFBhcnQsIE1lbnVsaXN0QnV0dG9uUGFydCwgTWVudWxp
c3RUZXh0UGFydCwgTWVudWxpc3RUZXh0RmllbGRQYXJ0LCBPdXRlclNwaW5CdXR0b25QYXJ0LAog
ICAgIFNsaWRlckhvcml6b250YWxQYXJ0LCBTbGlkZXJWZXJ0aWNhbFBhcnQsIFNsaWRlclRodW1i
SG9yaXpvbnRhbFBhcnQsCiAgICAgU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQsIENhcmV0UGFydCwg
U2VhcmNoRmllbGRQYXJ0LCBTZWFyY2hGaWVsZERlY29yYXRpb25QYXJ0LAogICAgIFNlYXJjaEZp
ZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0LCBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25QYXJ0LApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDdiNGRmZTMuLjU4ODhiZGEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTg1LDYgKzg1LDggQEAgdm9pZCBSZW5kZXJUaGVtZTo6
YWRqdXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHls
ZSwgRWwKICNpZiBVU0UoTkVXX1RIRU1FKQogICAgIHN3aXRjaCAocGFydCkgewogICAgICAgICBj
YXNlIENoZWNrYm94UGFydDoKKyAgICAgICAgY2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0OgorICAg
ICAgICBjYXNlIE91dGVyU3BpbkJ1dHRvblBhcnQ6CiAgICAgICAgIGNhc2UgUmFkaW9QYXJ0Ogog
ICAgICAgICBjYXNlIFB1c2hCdXR0b25QYXJ0OgogICAgICAgICBjYXNlIFNxdWFyZUJ1dHRvblBh
cnQ6CkBAIC0xNzMsNiArMTc1LDEwIEBAIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKENT
U1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsCiAgICAgICAg
IGNhc2UgRGVmYXVsdEJ1dHRvblBhcnQ6CiAgICAgICAgIGNhc2UgQnV0dG9uUGFydDoKICAgICAg
ICAgICAgIHJldHVybiBhZGp1c3RCdXR0b25TdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOworICAg
ICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6CisgICAgICAgICAgICByZXR1cm4gYWRqdXN0
SW5uZXJTcGluQnV0dG9uU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKKyAgICAgICAgY2FzZSBP
dXRlclNwaW5CdXR0b25QYXJ0OgorICAgICAgICAgICAgcmV0dXJuIGFkanVzdE91dGVyU3BpbkJ1
dHRvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7CiAjZW5kaWYKICAgICAgICAgY2FzZSBUZXh0
RmllbGRQYXJ0OgogICAgICAgICAgICAgcmV0dXJuIGFkanVzdFRleHRGaWVsZFN0eWxlKHNlbGVj
dG9yLCBzdHlsZSwgZSk7CkBAIC0yMjgsNiArMjM0LDggQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFp
bnQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJ
bmYKICAgICAgICAgY2FzZSBTcXVhcmVCdXR0b25QYXJ0OgogICAgICAgICBjYXNlIERlZmF1bHRC
dXR0b25QYXJ0OgogICAgICAgICBjYXNlIEJ1dHRvblBhcnQ6CisgICAgICAgIGNhc2UgSW5uZXJT
cGluQnV0dG9uUGFydDoKKyAgICAgICAgY2FzZSBPdXRlclNwaW5CdXR0b25QYXJ0OgogICAgICAg
ICAgICAgbV90aGVtZS0+cGFpbnQocGFydCwgY29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKG8pLCBj
b25zdF9jYXN0PEdyYXBoaWNzQ29udGV4dCo+KHBhaW50SW5mby5jb250ZXh0KSwgciwgby0+c3R5
bGUoKS0+ZWZmZWN0aXZlWm9vbSgpLCBvLT52aWV3KCktPmZyYW1lVmlldygpKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZGVmYXVsdDoKQEAgLTI0Nyw2ICsyNTUsMTAgQEAg
Ym9vbCBSZW5kZXJUaGVtZTo6cGFpbnQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmpl
Y3Q6OlBhaW50SW5mbyYgcGFpbnRJbmYKICAgICAgICAgY2FzZSBEZWZhdWx0QnV0dG9uUGFydDoK
ICAgICAgICAgY2FzZSBCdXR0b25QYXJ0OgogICAgICAgICAgICAgcmV0dXJuIHBhaW50QnV0dG9u
KG8sIHBhaW50SW5mbywgcik7CisgICAgICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDoKKyAg
ICAgICAgICAgIHJldHVybiBwYWludElubmVyU3BpbkJ1dHRvbihvLCBwYWludEluZm8sIHIpOwor
ICAgICAgICBjYXNlIE91dGVyU3BpbkJ1dHRvblBhcnQ6CisgICAgICAgICAgICByZXR1cm4gcGFp
bnRPdXRlclNwaW5CdXR0b24obywgcGFpbnRJbmZvLCByKTsKICNlbmRpZgogICAgICAgICBjYXNl
IE1lbnVsaXN0UGFydDoKICAgICAgICAgICAgIHJldHVybiBwYWludE1lbnVMaXN0KG8sIHBhaW50
SW5mbywgcik7CkBAIC03MzAsNiArNzQyLDE0IEBAIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdEJ1
dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lCiAg
ICAgc2V0QnV0dG9uU2l6ZShzdHlsZSk7CiB9CiAKK3ZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdElu
bmVyU3BpbkJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSogc3R5bGUs
IEVsZW1lbnQqKSBjb25zdAoreworfQorCit2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RPdXRlclNw
aW5CdXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVt
ZW50KikgY29uc3QKK3sKK30KKwogI2VuZGlmCiAKIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFRl
eHRGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBj
b25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKaW5kZXggYzAwYzJlYi4uNDk2NzQ0YiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZS5oCkBAIC0yMDIsNiArMjAyLDExIEBAIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIHZvaWQgYWRqdXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciosIFJlbmRlclN0
eWxlKiwgRWxlbWVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWludEJ1dHRvbihSZW5k
ZXJPYmplY3QqLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldEJ1dHRvblNpemUoUmVuZGVy
U3R5bGUqKSBjb25zdCB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbm5lclNwaW5CdXR0
b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIHBhaW50SW5uZXJTcGluQnV0dG9uKFJlbmRlck9iamVjdCosIGNv
bnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0T3V0ZXJCdXR0b25TdHlsZShDU1NTdHlsZVNl
bGVjdG9yKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IHBhaW50T3V0ZXJTcGluQnV0dG9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgogCiAg
ICAgdmlydHVhbCB2b2lkIGFkanVzdFRleHRGaWVsZFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqLCBS
ZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmggYi9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCmluZGV4IGE0N2RlZmIuLmYyYzZkZTcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAtNzIsNiAr
NzIsNyBAQCBlbnVtIFBzZXVkb0lkIHsKICAgICBNRURJQV9DT05UUk9MU19WT0xVTUVfU0xJREVS
LCBNRURJQV9DT05UUk9MU19WT0xVTUVfU0xJREVSX0NPTlRBSU5FUiwgTUVESUFfQ09OVFJPTFNf
Q1VSUkVOVF9USU1FX0RJU1BMQVksIE1FRElBX0NPTlRST0xTX1RJTUVfUkVNQUlOSU5HX0RJU1BM
QVksIE1FRElBX0NPTlRST0xTX1NFRUtfQkFDS19CVVRUT04sCiAgICAgTUVESUFfQ09OVFJPTFNf
U0VFS19GT1JXQVJEX0JVVFRPTiwgTUVESUFfQ09OVFJPTFNfRlVMTFNDUkVFTl9CVVRUT04sIE1F
RElBX0NPTlRST0xTX1JFV0lORF9CVVRUT04sIE1FRElBX0NPTlRST0xTX1JFVFVSTl9UT19SRUFM
VElNRV9CVVRUT04sCiAgICAgTUVESUFfQ09OVFJPTFNfU1RBVFVTX0RJU1BMQVksIFNDUk9MTEJB
Ul9USFVNQiwgU0NST0xMQkFSX0JVVFRPTiwgU0NST0xMQkFSX1RSQUNLLCBTQ1JPTExCQVJfVFJB
Q0tfUElFQ0UsIFNDUk9MTEJBUl9DT1JORVIsIFJFU0laRVIsCisgICAgSU5ORVJfU1BJTl9CVVRU
T04sIE9VVEVSX1NQSU5fQlVUVE9OLAogCiAgICAgRklSU1RfSU5URVJOQUxfUFNFVURPSUQgPSBG
SUxFX1VQTE9BRF9CVVRUT04KIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39538</attachid>
            <date>2009-09-14 01:49:07 -0700</date>
            <delta_ts>2009-11-23 22:25:43 -0800</delta_ts>
            <desc>Patch part 2: Mac implementation of outer-spin-button appearance</desc>
            <filename>number-ui-p2-r1.diff</filename>
            <type>text/plain</type>
            <size>9065</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMTk4YzgwLi4xNGJhZGJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMDkt
MDIgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hYyBpbXBsZW1lbnRhdGlvbiBvZiBvdXRl
ci1zcGluLWJ1dHRvbiBhcHBlYXJhbmNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mjc5NjgKKworICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2Zv
cm1zL2lucHV0LWFwcGVhcmFuY2Utc3BpbmJ1dHRvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LWFwcGVhcmFuY2Utc3BpbmJ1dHRv
bi5odG1sOiBBZGRlZC4KKwogMjAwOS0wOS0xMiAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvaW5wdXQtYXBwZWFyYW5jZS1z
cGluYnV0dG9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zv
cm1zL2lucHV0LWFwcGVhcmFuY2Utc3BpbmJ1dHRvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBjMzhhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LWFwcGVhcmFuY2Utc3BpbmJ1dHRv
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorVGVzdCBzaXplcyBvZiBvdXRlci1zcGlu
LWJ1dHRvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm9kZS5vZmZz
ZXRXaWR0aCBpcyAxMworUEFTUyBub2RlLm9mZnNldEhlaWdodCBpcyAxNQorUEFTUyBub2RlLm9m
ZnNldFdpZHRoIGlzIDE1CitQQVNTIG5vZGUub2Zmc2V0SGVpZ2h0IGlzIDIyCitQQVNTIG5vZGUu
b2Zmc2V0V2lkdGggaXMgMTkKK1BBU1Mgbm9kZS5vZmZzZXRIZWlnaHQgaXMgMjcKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorbWluaSAKKworc21hbGwg
CisKK3JlZ3VsYXIgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9m
b3Jtcy9pbnB1dC1hcHBlYXJhbmNlLXNwaW5idXR0b24uaHRtbCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LWFwcGVhcmFuY2Utc3BpbmJ1dHRvbi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjZWVlMGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC1hcHBlYXJhbmNlLXNw
aW5idXR0b24uaHRtbApAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorLmJ1dHRvbiB7CisgIC13ZWJraXQtYXBwZWFyYW5j
ZTogb3V0ZXItc3Bpbi1idXR0b247CisgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKK30KKzwvc3R5
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisKKzxwIHN0eWxlPSJmb250LXNpemU6MTBweDsiPm1pbmkgPHNwYW4g
Y2xhc3M9ImJ1dHRvbiIgaWQ9czE+PC9zcGFuPjwvcD4KKzxwIHN0eWxlPSJmb250LXNpemU6MTFw
eDsiPnNtYWxsIDxzcGFuIGNsYXNzPSJidXR0b24iIGlkPXMyPjwvc3Bhbj48L3A+Cis8cCBzdHls
ZT0iZm9udC1zaXplOjE2cHg7Ij5yZWd1bGFyIDxzcGFuIGNsYXNzPSJidXR0b24iIGlkPXMzPjwv
c3Bhbj48L3A+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3Qgc2l6ZXMgb2Ygb3V0ZXItc3Bp
bi1idXR0b24uJyk7CisKK3ZhciBub2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3MxJyk7
CitzaG91bGRCZSgnbm9kZS5vZmZzZXRXaWR0aCcsICcxMycpOworc2hvdWxkQmUoJ25vZGUub2Zm
c2V0SGVpZ2h0JywgJzE1Jyk7CisKK25vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnczIn
KTsKK3Nob3VsZEJlKCdub2RlLm9mZnNldFdpZHRoJywgJzE1Jyk7CitzaG91bGRCZSgnbm9kZS5v
ZmZzZXRIZWlnaHQnLCAnMjInKTsKKworbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
MycpOworc2hvdWxkQmUoJ25vZGUub2Zmc2V0V2lkdGgnLCAnMTknKTsKK3Nob3VsZEJlKCdub2Rl
Lm9mZnNldEhlaWdodCcsICcyNycpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk0YWM0YjQuLmMyNjJi
OTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjQgQEAKKzIwMDktMDktMDIgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1hYyBpbXBsZW1lbnRhdGlvbiBvZiBvdXRlci1zcGluLWJ1dHRvbiBhcHBlYXJhbmNlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc5NjgKKworICAg
ICAgICBUZXN0OiBwbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC1hcHBlYXJhbmNlLXNwaW5i
dXR0b24uaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6c3RlcHBlclNpemVzKToKKyAgICAgICAgKFdlYkNvcmU6OnN0ZXBwZXJNYXJn
aW5zKToKKyAgICAgICAgKFdlYkNvcmU6OnN0ZXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cGFp
bnRTdGVwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpjb250cm9sU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6bWluaW11bUNvbnRyb2xTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OlRoZW1lTWFjOjppbmZsYXRlQ29udHJvbFBhaW50UmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUaGVtZU1hYzo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjphZGp1c3RSZXBhaW50
UmVjdCk6CisKIDIwMDktMDktMDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1h
Yy5tbQppbmRleCBlN2UxMmFjLi4xOGFkNWNlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9UaGVtZU1hYy5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpA
QCAtNDA0LDYgKzQwNCw2NSBAQCBzdGF0aWMgdm9pZCBwYWludEJ1dHRvbihDb250cm9sUGFydCBw
YXJ0LCBDb250cm9sU3RhdGVzIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KgogICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKIH0KIAorLy8gU3RlcHBlcgorCitzdGF0aWMgY29uc3QgSW50U2l6
ZSogc3RlcHBlclNpemVzKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgSW50U2l6ZSBzaXplc1szXSA9
IHsgSW50U2l6ZSgxOSwgMjcpLCBJbnRTaXplKDE1LCAyMiksIEludFNpemUoMTMsIDE1KSB9Owor
ICAgIHJldHVybiBzaXplczsKK30KKworY29uc3QgaW50KiBzdGVwcGVyTWFyZ2lucyhOU0NvbnRy
b2xTaXplIGNvbnRyb2xTaXplKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgbWFyZ2luc1szXVs0
XSA9IHsKKyAgICAgICAgezAsIDAsIDAsIDB9LAorICAgICAgICB7MCwgMCwgMCwgMH0sCisgICAg
ICAgIHswLCAwLCAwLCAwfQorICAgIH07CisgICAgcmV0dXJuIG1hcmdpbnNbY29udHJvbFNpemVd
OworfQorCitzdGF0aWMgTlNTdGVwcGVyQ2VsbCogc3RlcHBlcihDb250cm9sU3RhdGVzIHN0YXRl
cywgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvcikKK3sKKyAgICBz
dGF0aWMgTlNTdGVwcGVyQ2VsbCogY2VsbDsKKyAgICBpZiAoIWNlbGwpIHsKKyAgICAgICAgY2Vs
bCA9IFtbTlNTdGVwcGVyQ2VsbCBhbGxvY10gaW5pdF07CisgICAgfQorICAgIHNldENvbnRyb2xT
aXplKGNlbGwsIHN0ZXBwZXJTaXplcygpLCB6b29tZWRSZWN0LnNpemUoKSwgem9vbUZhY3Rvcik7
CisKKyAgICB1cGRhdGVTdGF0ZXMoY2VsbCwgc3RhdGVzKTsKKyAgICBpZiAoc3RhdGVzICYgUHJl
c3NlZFN0YXRlICYmIHN0YXRlcyAmIFNwaW5VcFN0YXRlKQorICAgICAgICAvLyBGSVhNRTogVGhl
cmUgaXMgbm8gd2F5IHRvIGRyYXcgYSBOU1N0ZXBlckNlbGwgd2l0aCB0aGUgdXAgYnV0dG9uIGhp
bGlnaHRlZC4KKyAgICAgICAgLy8gRGlzYWJsZXMgdGhlIGhpbGlnaHQgb2YgdGhlIGRvd24gYnV0
dG9uIGlmIHRoZSB1cCBidXR0b24gaXMgcHJlc3NlZC4KKyAgICAgICAgW2NlbGwgc2V0SGlnaGxp
Z2h0ZWQ6Tk9dOworICAgIHJldHVybiBjZWxsOworfQorCitzdGF0aWMgdm9pZCBwYWludFN0ZXBw
ZXIoQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Nyb2xs
VmlldykKK3sKKyAgICBOU1N0ZXBwZXJDZWxsKiBjZWxsID0gc3RlcHBlcihzdGF0ZXMsIHpvb21l
ZFJlY3QsIHpvb21GYWN0b3IpOworCisgICAgY29udGV4dC0+c2F2ZSgpOworICAgIE5TQ29udHJv
bFNpemUgY29udHJvbFNpemUgPSBbY2VsbCBjb250cm9sU2l6ZV07CisgICAgSW50U2l6ZSB6b29t
ZWRTaXplID0gc3RlcHBlclNpemVzKClbY29udHJvbFNpemVdOworICAgIEludFJlY3QgcmVjdCh6
b29tZWRSZWN0KTsKKworICAgIGlmICh6b29tRmFjdG9yICE9IDEuMGYpIHsKKyAgICAgICAgcmVj
dC5zZXRXaWR0aChyZWN0LndpZHRoKCkgLyB6b29tRmFjdG9yKTsKKyAgICAgICAgcmVjdC5zZXRI
ZWlnaHQocmVjdC5oZWlnaHQoKSAvIHpvb21GYWN0b3IpOworICAgICAgICBjb250ZXh0LT50cmFu
c2xhdGUocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRT
aXplKHpvb21GYWN0b3IsIHpvb21GYWN0b3IpKTsKKyAgICAgICAgY29udGV4dC0+dHJhbnNsYXRl
KC1yZWN0LngoKSwgLXJlY3QueSgpKTsKKyAgICB9CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKKyAgICBbY2VsbCBkcmF3V2l0aEZyYW1lOk5TUmVjdChyZWN0KSBpblZpZXc6c2Ny
b2xsVmlldy0+ZG9jdW1lbnRWaWV3KCldOworICAgIFtjZWxsIHNldENvbnRyb2xWaWV3Om5pbF07
CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworCisgICAgY29udGV4dC0+cmVzdG9yZSgp
OworfQorCiAvLyBUaGVtZSBvdmVycmlkZXMKIAogaW50IFRoZW1lTWFjOjpiYXNlbGluZVBvc2l0
aW9uQWRqdXN0bWVudChDb250cm9sUGFydCBwYXJ0KSBjb25zdApAQCAtNDQyLDYgKzUwMSwxMyBA
QCBMZW5ndGhTaXplIFRoZW1lTWFjOjpjb250cm9sU2l6ZShDb250cm9sUGFydCBwYXJ0LCBjb25z
dCBGb250JiBmb250LCBjb25zdCBMZW5ndAogICAgICAgICBjYXNlIFB1c2hCdXR0b25QYXJ0Ogog
ICAgICAgICAgICAgLy8gSGVpZ2h0IGlzIHJlc2V0IHRvIGF1dG8gc28gdGhhdCBzcGVjaWZpZWQg
aGVpZ2h0cyBjYW4gYmUgaWdub3JlZC4KICAgICAgICAgICAgIHJldHVybiBzaXplRnJvbUZvbnQo
Zm9udCwgTGVuZ3RoU2l6ZSh6b29tZWRTaXplLndpZHRoKCksIExlbmd0aCgpKSwgem9vbUZhY3Rv
ciwgYnV0dG9uU2l6ZXMoKSk7CisgICAgICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDoKKyAg
ICAgICAgICAgIC8vIFdlIGRvbid0IHVzZSBpbm5lciBzcGluIGJ1dHRvbnMgb24gTWFjLgorICAg
ICAgICAgICAgcmV0dXJuIExlbmd0aFNpemUoTGVuZ3RoKEZpeGVkKSwgTGVuZ3RoKEZpeGVkKSk7
CisgICAgICAgIGNhc2UgT3V0ZXJTcGluQnV0dG9uUGFydDoKKyAgICAgICAgICAgIGlmICghem9v
bWVkU2l6ZS53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXpvb21lZFNpemUuaGVpZ2h0
KCkuaXNJbnRyaW5zaWNPckF1dG8oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gem9vbWVkU2l6
ZTsKKyAgICAgICAgICAgIHJldHVybiBzaXplRnJvbUZvbnQoZm9udCwgem9vbWVkU2l6ZSwgem9v
bUZhY3Rvciwgc3RlcHBlclNpemVzKCkpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
cmV0dXJuIHpvb21lZFNpemU7CiAgICAgfQpAQCAtNDU0LDYgKzUyMCwxMSBAQCBMZW5ndGhTaXpl
IFRoZW1lTWFjOjptaW5pbXVtQ29udHJvbFNpemUoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9u
dCYgZm9udCwgZmxvYQogICAgICAgICBjYXNlIERlZmF1bHRCdXR0b25QYXJ0OgogICAgICAgICBj
YXNlIEJ1dHRvblBhcnQ6CiAgICAgICAgICAgICByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwg
Rml4ZWQpLCBMZW5ndGgoc3RhdGljX2Nhc3Q8aW50PigxNSAqIHpvb21GYWN0b3IpLCBGaXhlZCkp
OworICAgICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6CisgICAgICAgICAgICAvLyBXZSBk
b24ndCB1c2UgaW5uZXIgc3BpbiBidXR0b25zIG9uIE1hYy4KKyAgICAgICAgICAgIHJldHVybiBM
ZW5ndGhTaXplKExlbmd0aChGaXhlZCksIExlbmd0aChGaXhlZCkpOworICAgICAgICBjYXNlIE91
dGVyU3BpbkJ1dHRvblBhcnQ6CisgICAgICAgICAgICByZXR1cm4gc2l6ZUZyb21Gb250KGZvbnQs
IExlbmd0aFNpemUoKSwgem9vbUZhY3Rvciwgc3RlcHBlclNpemVzKCkpOwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgcmV0dXJuIFRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUocGFydCwg
Zm9udCwgem9vbUZhY3Rvcik7CiAgICAgfQpAQCAtNTI5LDYgKzYwMCwxNSBAQCB2b2lkIFRoZW1l
TWFjOjppbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3Rh
dGVzIHN0YXRlcywgSQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KKyAgICAgICAgY2FzZSBPdXRlclNwaW5CdXR0b25QYXJ0OiB7CisgICAgICAgICAgICBOU0Nl
bGwgKmNlbGwgPSBzdGVwcGVyKHN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7CisgICAg
ICAgICAgICBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplID0gW2NlbGwgY29udHJvbFNpemVdOwor
ICAgICAgICAgICAgSW50U2l6ZSB6b29tZWRTaXplID0gc3RlcHBlclNpemVzKClbY29udHJvbFNp
emVdOworICAgICAgICAgICAgem9vbWVkU2l6ZS5zZXRIZWlnaHQoem9vbWVkU2l6ZS5oZWlnaHQo
KSAqIHpvb21GYWN0b3IpOworICAgICAgICAgICAgem9vbWVkU2l6ZS5zZXRXaWR0aCh6b29tZWRT
aXplLndpZHRoKCkgKiB6b29tRmFjdG9yKTsKKyAgICAgICAgICAgIHpvb21lZFJlY3QgPSBpbmZs
YXRlUmVjdCh6b29tZWRSZWN0LCB6b29tZWRTaXplLCBzdGVwcGVyTWFyZ2lucyhjb250cm9sU2l6
ZSksIHpvb21GYWN0b3IpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTU1MCw2ICs2MzAsOSBAQCB2
b2lkIFRoZW1lTWFjOjpwYWludChDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzIHN0YXRl
cywgR3JhcGhpY3NDb250ZXh0KiBjbwogICAgICAgICBjYXNlIFNxdWFyZUJ1dHRvblBhcnQ6CiAg
ICAgICAgICAgICBwYWludEJ1dHRvbihwYXJ0LCBzdGF0ZXMsIGNvbnRleHQsIHpvb21lZFJlY3Qs
IHpvb21GYWN0b3IsIHNjcm9sbFZpZXcpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgT3V0ZXJTcGluQnV0dG9uUGFydDoKKyAgICAgICAgICAgIHBhaW50U3RlcHBlcihzdGF0ZXMs
IGNvbnRleHQsIHpvb21lZFJlY3QsIHpvb21GYWN0b3IsIHNjcm9sbFZpZXcpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDVmNGFlMjQuLjI3MjEzYWEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC00NzUsNiArNDc1LDcgQEAgdm9pZCBSZW5k
ZXJUaGVtZU1hYzo6YWRqdXN0UmVwYWludFJlY3QoY29uc3QgUmVuZGVyT2JqZWN0KiBvLCBJbnRS
ZWN0JiByKQogICAgICAgICBjYXNlIFNxdWFyZUJ1dHRvblBhcnQ6CiAgICAgICAgIGNhc2UgRGVm
YXVsdEJ1dHRvblBhcnQ6CiAgICAgICAgIGNhc2UgQnV0dG9uUGFydDoKKyAgICAgICAgY2FzZSBP
dXRlclNwaW5CdXR0b25QYXJ0OgogICAgICAgICAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjphZGp1
c3RSZXBhaW50UmVjdChvLCByKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
Owo=
</data>
<flag name="review"
          id="20638"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39539</attachid>
            <date>2009-09-14 01:50:41 -0700</date>
            <delta_ts>2009-11-23 22:25:58 -0800</delta_ts>
            <desc>Patch part 3: Windows implementation of inner-spin-button appearance</desc>
            <filename>number-ui-p3-r1.diff</filename>
            <type>text/plain</type>
            <size>9483</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzI2MmI5Ni4uMDZiY2Y1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAwOS0wOS0wMyAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2luZG93cyBpbXBsZW1lbnRhdGlvbiBvZiBpbm5lci1zcGluLWJ1dHRv
biBhcHBlYXJhbmNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mjc5NjgKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6UmVuZGVyVGhlbWVXaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OnNwaW5CdXR0b25UaGVtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVXaW46OmRldGVybWluZUNsYXNzaWNTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVdpbjo6ZGV0ZXJtaW5lU3BpbkJ1dHRvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lV2luOjpnZXRDbGFzc2ljVGhlbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lV2luOjpnZXRUaGVtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVXaW46OmFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lV2luOjpwYWludElubmVyU3BpbkJ1dHRvbik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lV2luLmg6CisKIDIwMDktMDktMDIgIEtlbnQgVGFtdXJhICA8dGtlbnRA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4IDkyYmZkMDMuLjlkOWFkNDUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTkxLDYgKzkxLDIxIEBACiAjZGVmaW5l
IFBCU19ESVNBQkxFRCAgICA0CiAjZGVmaW5lIFBCU19ERUZBVUxURUQgICA1CiAKKy8vIFNwaW4g
YnV0dG9uIHBhcnRzCisjZGVmaW5lIFNQTlBfVVAgICAgICAgICAxCisjZGVmaW5lIFNQTlBfRE9X
TiAgICAgICAyCisKKy8vIFNwaW4gYnV0dG9uIHN0YWVzCisjZGVmaW5lIEROU19OT1JNQUwgICAg
ICAxCisjZGVmaW5lIEROU19IT1QgICAgICAgICAyCisjZGVmaW5lIEROU19QUkVTU0VEICAgICAz
CisjZGVmaW5lIEROU19ESVNBQkxFRCAgICA0CisjZGVmaW5lIFVQU19OT1JNQUwgICAgICAxCisj
ZGVmaW5lIFVQU19IT1QgICAgICAgICAyCisjZGVmaW5lIFVQU19QUkVTU0VEICAgICAzCisjZGVm
aW5lIFVQU19ESVNBQkxFRCAgICA0CisKKwogU09GVF9MSU5LX0xJQlJBUlkodXh0aGVtZSkKIFNP
RlRfTElOSyh1eHRoZW1lLCBPcGVuVGhlbWVEYXRhLCBIQU5ETEUsIFdJTkFQSSwgKEhXTkQgaHdu
ZCwgTFBDV1NUUiBwc3pDbGFzc0xpc3QpLCAoaHduZCwgcHN6Q2xhc3NMaXN0KSkKIFNPRlRfTElO
Syh1eHRoZW1lLCBDbG9zZVRoZW1lRGF0YSwgSFJFU1VMVCwgV0lOQVBJLCAoSEFORExFIGhUaGVt
ZSksIChoVGhlbWUpKQpAQCAtMTUzLDYgKzE2OCw3IEBAIFJlbmRlclRoZW1lV2luOjpSZW5kZXJU
aGVtZVdpbigpCiAgICAgLCBtX3RleHRGaWVsZFRoZW1lKDApCiAgICAgLCBtX21lbnVMaXN0VGhl
bWUoMCkKICAgICAsIG1fc2xpZGVyVGhlbWUoMCkKKyAgICAsIG1fc3BpbkJ1dHRvblRoZW1lKDAp
CiB7CiAgICAgaGF2ZVRoZW1lID0gdXh0aGVtZUxpYnJhcnkoKSAmJiBJc1RoZW1lQWN0aXZlKCk7
CiB9CkBAIC0xOTMsNiArMjA5LDEzIEBAIEhBTkRMRSBSZW5kZXJUaGVtZVdpbjo6c2xpZGVyVGhl
bWUoKSBjb25zdAogICAgIHJldHVybiBtX3NsaWRlclRoZW1lOwogfQogCitIQU5ETEUgUmVuZGVy
VGhlbWVXaW46OnNwaW5CdXR0b25UaGVtZSgpIGNvbnN0Cit7CisgICAgaWYgKGhhdmVUaGVtZSAm
JiAhbV9zcGluQnV0dG9uVGhlbWUpCisgICAgICAgIG1fc3BpbkJ1dHRvblRoZW1lID0gT3BlblRo
ZW1lRGF0YSgwLCBMIlNwaW4iKTsKKyAgICByZXR1cm4gbV9zcGluQnV0dG9uVGhlbWU7Cit9CisK
IHZvaWQgUmVuZGVyVGhlbWVXaW46OmNsb3NlKCkKIHsKICAgICAvLyBUaGlzIG1ldGhvZCB3aWxs
IG5lZWQgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIE9TIHRoZW1lIGNoYW5nZXMgdG8gZmx1c2ggb3Vy
IGNhY2hlZCB0aGVtZXMuCkBAIC0yMDQsNyArMjI3LDkgQEAgdm9pZCBSZW5kZXJUaGVtZVdpbjo6
Y2xvc2UoKQogICAgICAgICBDbG9zZVRoZW1lRGF0YShtX21lbnVMaXN0VGhlbWUpOwogICAgIGlm
IChtX3NsaWRlclRoZW1lKQogICAgICAgICBDbG9zZVRoZW1lRGF0YShtX3NsaWRlclRoZW1lKTsK
LSAgICBtX2J1dHRvblRoZW1lID0gbV90ZXh0RmllbGRUaGVtZSA9IG1fbWVudUxpc3RUaGVtZSA9
IG1fc2xpZGVyVGhlbWUgPSAwOworICAgIGlmIChtX3NwaW5CdXR0b25UaGVtZSkKKyAgICAgICAg
Q2xvc2VUaGVtZURhdGEobV9zcGluQnV0dG9uVGhlbWUpOworICAgIG1fYnV0dG9uVGhlbWUgPSBt
X3RleHRGaWVsZFRoZW1lID0gbV9tZW51TGlzdFRoZW1lID0gbV9zbGlkZXJUaGVtZSA9IG1fc3Bp
bkJ1dHRvblRoZW1lID0gMDsKIAogICAgIGhhdmVUaGVtZSA9IHV4dGhlbWVMaWJyYXJ5KCkgJiYg
SXNUaGVtZUFjdGl2ZSgpOwogfQpAQCAtMzY3LDcgKzM5Miw3IEBAIGJvb2wgUmVuZGVyVGhlbWVX
aW46OnN1cHBvcnRzRm9jdXNSaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKICAg
ICByZXR1cm4gc3VwcG9ydHNGb2N1cyhzdHlsZS0+YXBwZWFyYW5jZSgpKTsKIH0KIAotdW5zaWdu
ZWQgUmVuZGVyVGhlbWVXaW46OmRldGVybWluZUNsYXNzaWNTdGF0ZShSZW5kZXJPYmplY3QqIG8p
Cit1bnNpZ25lZCBSZW5kZXJUaGVtZVdpbjo6ZGV0ZXJtaW5lQ2xhc3NpY1N0YXRlKFJlbmRlck9i
amVjdCogbywgYm9vbCBpc1VwQnV0dG9uKQogewogICAgIHVuc2lnbmVkIHN0YXRlID0gMDsKICAg
ICBzd2l0Y2ggKG8tPnN0eWxlKCktPmFwcGVhcmFuY2UoKSkgewpAQCAtMzk2LDYgKzQyMSwxNiBA
QCB1bnNpZ25lZCBSZW5kZXJUaGVtZVdpbjo6ZGV0ZXJtaW5lQ2xhc3NpY1N0YXRlKFJlbmRlck9i
amVjdCogbykKICAgICAgICAgICAgICAgICBzdGF0ZSB8PSBERkNTX0lOQUNUSVZFOwogICAgICAg
ICAgICAgZWxzZSBpZiAoaXNQcmVzc2VkKG8pKQogICAgICAgICAgICAgICAgIHN0YXRlIHw9IERG
Q1NfUFVTSEVEOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5uZXJTcGluQnV0
dG9uUGFydDoKKyAgICAgICAgICAgIHN0YXRlID0gaXNVcEJ1dHRvbiA/IERGQ1NfU0NST0xMVVAg
OiBERkNTX1NDUk9MTERPV047CisgICAgICAgICAgICBpZiAoIWlzRW5hYmxlZChvKSkKKyAgICAg
ICAgICAgICAgICBzdGF0ZSB8PSBERkNTX0lOQUNUSVZFOworICAgICAgICAgICAgZWxzZSBpZiAo
aXNQcmVzc2VkKG8pICYmIGlzVXBCdXR0b24gPT0gaXNTcGluVXBCdXR0b25QYXJ0UHJlc3NlZChv
KSkKKyAgICAgICAgICAgICAgICBzdGF0ZSB8PSBERkNTX1BVU0hFRDsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGlzSG92ZXJlZChvKSAmJiBpc1VwQnV0dG9uID09IGlzU3BpblVwQnV0dG9uUGFydEhv
dmVyZWQobykpCisgICAgICAgICAgICAgICAgc3RhdGUgfD0gREZDU19IT1Q7CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTQ1MSw3ICs0ODYsMjAgQEAgdW5zaWduZWQgUmVuZGVyVGhlbWVXaW46OmRldGVybWluZUJ1dHRv
blN0YXRlKFJlbmRlck9iamVjdCogbykKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1UaGVtZURh
dGEgUmVuZGVyVGhlbWVXaW46OmdldENsYXNzaWNUaGVtZURhdGEoUmVuZGVyT2JqZWN0KiBvKQor
dW5zaWduZWQgUmVuZGVyVGhlbWVXaW46OmRldGVybWluZVNwaW5CdXR0b25TdGF0ZShSZW5kZXJP
YmplY3QqIG8sIGJvb2wgaXNVcEJ1dHRvbikKK3sKKyAgICB1bnNpZ25lZCByZXN1bHQgPSBpc1Vw
QnV0dG9uID8gVVBTX05PUk1BTCA6IEROU19OT1JNQUw7CisgICAgaWYgKCFpc0VuYWJsZWQobykp
CisgICAgICAgIHJlc3VsdCA9IGlzVXBCdXR0b24gPyBVUFNfRElTQUJMRUQgOiBETlNfRElTQUJM
RUQ7CisgICAgZWxzZSBpZiAoaXNQcmVzc2VkKG8pICYmIGlzVXBCdXR0b24gPT0gaXNTcGluVXBC
dXR0b25QYXJ0UHJlc3NlZChvKSkKKyAgICAgICAgcmVzdWx0ID0gaXNVcEJ1dHRvbiA/IFVQU19Q
UkVTU0VEIDogRE5TX1BSRVNTRUQ7CisgICAgZWxzZSBpZiAoaXNIb3ZlcmVkKG8pICYmIGlzVXBC
dXR0b24gPT0gaXNTcGluVXBCdXR0b25QYXJ0SG92ZXJlZChvKSkKKyAgICAgICAgcmVzdWx0ID0g
aXNVcEJ1dHRvbiA/IFVQU19IT1QgOiBETlNfSE9UOworICAgIHJldHVybiByZXN1bHQ7CisKK30K
KworVGhlbWVEYXRhIFJlbmRlclRoZW1lV2luOjpnZXRDbGFzc2ljVGhlbWVEYXRhKFJlbmRlck9i
amVjdCogbywgYm9vbCBpc1VwQnV0dG9uKQogewogICAgIFRoZW1lRGF0YSByZXN1bHQ7CiAgICAg
c3dpdGNoIChvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkpIHsKQEAgLTQ2MSwxMSArNTA5LDExIEBA
IFRoZW1lRGF0YSBSZW5kZXJUaGVtZVdpbjo6Z2V0Q2xhc3NpY1RoZW1lRGF0YShSZW5kZXJPYmpl
Y3QqIG8pCiAgICAgICAgIGNhc2UgQ2hlY2tib3hQYXJ0OgogICAgICAgICBjYXNlIFJhZGlvUGFy
dDoKICAgICAgICAgICAgIHJlc3VsdC5tX3BhcnQgPSBERkNfQlVUVE9OOwotICAgICAgICAgICAg
cmVzdWx0Lm1fc3RhdGUgPSBkZXRlcm1pbmVDbGFzc2ljU3RhdGUobyk7CisgICAgICAgICAgICBy
ZXN1bHQubV9zdGF0ZSA9IGRldGVybWluZUNsYXNzaWNTdGF0ZShvLCBmYWxzZSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBNZW51bGlzdFBhcnQ6CiAgICAgICAgICAgICByZXN1
bHQubV9wYXJ0ID0gREZDX1NDUk9MTDsKLSAgICAgICAgICAgIHJlc3VsdC5tX3N0YXRlID0gZGV0
ZXJtaW5lQ2xhc3NpY1N0YXRlKG8pOworICAgICAgICAgICAgcmVzdWx0Lm1fc3RhdGUgPSBkZXRl
cm1pbmVDbGFzc2ljU3RhdGUobywgZmFsc2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgU2VhcmNoRmllbGRQYXJ0OgogICAgICAgICBjYXNlIFRleHRGaWVsZFBhcnQ6CkBAIC00
ODksMTYgKzUzNywyMCBAQCBUaGVtZURhdGEgUmVuZGVyVGhlbWVXaW46OmdldENsYXNzaWNUaGVt
ZURhdGEoUmVuZGVyT2JqZWN0KiBvKQogICAgICAgICAgICAgcmVzdWx0Lm1fcGFydCA9IFRLUF9U
SFVNQlJJR0hUOwogICAgICAgICAgICAgcmVzdWx0Lm1fc3RhdGUgPSBkZXRlcm1pbmVTbGlkZXJU
aHVtYlN0YXRlKG8pOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5uZXJTcGlu
QnV0dG9uUGFydDoKKyAgICAgICAgICAgIHJlc3VsdC5tX3BhcnQgPSBERkNfU0NST0xMOworICAg
ICAgICAgICAgcmVzdWx0Lm1fc3RhdGUgPSBkZXRlcm1pbmVDbGFzc2ljU3RhdGUobywgaXNVcEJ1
dHRvbik7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1UaGVtZURhdGEgUmVuZGVy
VGhlbWVXaW46OmdldFRoZW1lRGF0YShSZW5kZXJPYmplY3QqIG8pCitUaGVtZURhdGEgUmVuZGVy
VGhlbWVXaW46OmdldFRoZW1lRGF0YShSZW5kZXJPYmplY3QqIG8sIGJvb2wgaXNVcEJ1dHRvbikK
IHsKICAgICBpZiAoIWhhdmVUaGVtZSkKLSAgICAgICAgcmV0dXJuIGdldENsYXNzaWNUaGVtZURh
dGEobyk7CisgICAgICAgIHJldHVybiBnZXRDbGFzc2ljVGhlbWVEYXRhKG8sIGlzVXBCdXR0b24p
OwogCiAgICAgVGhlbWVEYXRhIHJlc3VsdDsKICAgICBzd2l0Y2ggKG8tPnN0eWxlKCktPmFwcGVh
cmFuY2UoKSkgewpAQCAtNTQ4LDYgKzYwMCwxMCBAQCBUaGVtZURhdGEgUmVuZGVyVGhlbWVXaW46
OmdldFRoZW1lRGF0YShSZW5kZXJPYmplY3QqIG8pCiAgICAgICAgICAgICByZXN1bHQubV9wYXJ0
ID0gVEtQX1RIVU1CUklHSFQ7CiAgICAgICAgICAgICByZXN1bHQubV9zdGF0ZSA9IGRldGVybWlu
ZVNsaWRlclRodW1iU3RhdGUobyk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJ
bm5lclNwaW5CdXR0b25QYXJ0OgorICAgICAgICAgICAgcmVzdWx0Lm1fcGFydCA9IGlzVXBCdXR0
b24gPyBTUE5QX1VQIDogU1BOUF9ET1dOOworICAgICAgICAgICAgcmVzdWx0Lm1fc3RhdGUgPSBk
ZXRlcm1pbmVTcGluQnV0dG9uU3RhdGUobywgaXNVcEJ1dHRvbik7CisgICAgICAgICAgICBicmVh
azsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjE3LDYgKzY3MywyOSBAQCBib29s
IFJlbmRlclRoZW1lV2luOjpwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRl
ck9iamVjdDo6UGFpbnRJbmZvJgogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBSZW5kZXJU
aGVtZVdpbjo6YWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2Vs
ZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3sKKyAgICBpbnQg
d2lkdGggPSA6OkdldFN5c3RlbU1ldHJpY3MoU01fQ1hWU0NST0xMKTsKKyAgICBpZiAod2lkdGgg
PD0gMCkKKyAgICAgICAgd2lkdGggPSAxNzsgIC8vIFZpc3RhJ3MgZGVmYXVsdC4KKyAgICBzdHls
ZS0+c2V0V2lkdGgoTGVuZ3RoKHdpZHRoLCBGaXhlZCkpOworICAgIHN0eWxlLT5zZXRNaW5XaWR0
aChMZW5ndGgod2lkdGgsIEZpeGVkKSk7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50
SW5uZXJTcGluQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWlu
dEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCit7CisgICAgaWYgKHIuaGVpZ2h0KCkgPCAyKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgSW50UmVjdCB1cFJlY3Qocik7CisgICAgdXBSZWN0
LnNldEhlaWdodChyLmhlaWdodCgpIC8gMik7CisgICAgSW50UmVjdCBkb3duUmVjdChyKTsKKyAg
ICBkb3duUmVjdC5zZXRZKHVwUmVjdC5ib3R0b20oKSk7CisgICAgZG93blJlY3Quc2V0SGVpZ2h0
KHIuaGVpZ2h0KCkgLSB1cFJlY3QuaGVpZ2h0KCkpOworICAgIGRyYXdDb250cm9sKGkuY29udGV4
dCwgbywgc3BpbkJ1dHRvblRoZW1lKCksIGdldFRoZW1lRGF0YShvLCB0cnVlKSwgdXBSZWN0KTsK
KyAgICBkcmF3Q29udHJvbChpLmNvbnRleHQsIG8sIHNwaW5CdXR0b25UaGVtZSgpLCBnZXRUaGVt
ZURhdGEobywgZmFsc2UpLCBkb3duUmVjdCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lk
IFJlbmRlclRoZW1lV2luOjpzZXRDaGVja2JveFNpemUoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25z
dAogewogICAgIC8vIElmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBib3RoIHNwZWNpZmllZCwg
dGhlbiB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZVdpbi5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaApp
bmRleCA5OWMyMDA0Li4wZmIwZWViIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZVdpbi5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmgKQEAg
LTc3LDYgKzc3LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHBhaW50QnV0dG9uKFJl
bmRlck9iamVjdCosIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpOwogCisgICAgdmlydHVhbCB2b2lkIGFkanVzdElubmVyU3BpbkJ1dHRvblN0eWxlKENTU1N0
eWxlU2VsZWN0b3IqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRJbm5lclNwaW5CdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2Jq
ZWN0OjpQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CisKICAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyT2JqZWN0OjpQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0QXJlYShSZW5k
ZXJPYmplY3QqIG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBpLCBjb25zdCBJbnRS
ZWN0JiByKQpAQCAtMTQyLDI0ICsxNDUsMjcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsb3NlKCk7
CiAKICAgICB1bnNpZ25lZCBkZXRlcm1pbmVTdGF0ZShSZW5kZXJPYmplY3QqKTsKLSAgICB1bnNp
Z25lZCBkZXRlcm1pbmVDbGFzc2ljU3RhdGUoUmVuZGVyT2JqZWN0Kik7CisgICAgdW5zaWduZWQg
ZGV0ZXJtaW5lQ2xhc3NpY1N0YXRlKFJlbmRlck9iamVjdCosIGJvb2wpOwogICAgIHVuc2lnbmVk
IGRldGVybWluZVNsaWRlclRodW1iU3RhdGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdW5zaWduZWQg
ZGV0ZXJtaW5lQnV0dG9uU3RhdGUoUmVuZGVyT2JqZWN0Kik7CisgICAgdW5zaWduZWQgZGV0ZXJt
aW5lU3BpbkJ1dHRvblN0YXRlKFJlbmRlck9iamVjdCosIGJvb2wpOwogCiAgICAgYm9vbCBzdXBw
b3J0c0ZvY3VzKENvbnRyb2xQYXJ0KSBjb25zdDsKIAotICAgIFRoZW1lRGF0YSBnZXRUaGVtZURh
dGEoUmVuZGVyT2JqZWN0Kik7Ci0gICAgVGhlbWVEYXRhIGdldENsYXNzaWNUaGVtZURhdGEoUmVu
ZGVyT2JqZWN0KiBvKTsKKyAgICBUaGVtZURhdGEgZ2V0VGhlbWVEYXRhKFJlbmRlck9iamVjdCos
IGJvb2wgaXNVcEJ1dHRvbiA9IGZhbHNlKTsKKyAgICBUaGVtZURhdGEgZ2V0Q2xhc3NpY1RoZW1l
RGF0YShSZW5kZXJPYmplY3QqIG8sIGJvb2wgaXNVcEJ1dHRvbiA9IGZhbHNlKTsKIAogICAgIEhB
TkRMRSBidXR0b25UaGVtZSgpIGNvbnN0OwogICAgIEhBTkRMRSB0ZXh0RmllbGRUaGVtZSgpIGNv
bnN0OwogICAgIEhBTkRMRSBtZW51TGlzdFRoZW1lKCkgY29uc3Q7CiAgICAgSEFORExFIHNsaWRl
clRoZW1lKCkgY29uc3Q7CisgICAgSEFORExFIHNwaW5CdXR0b25UaGVtZSgpIGNvbnN0OwogCiAg
ICAgbXV0YWJsZSBIQU5ETEUgbV9idXR0b25UaGVtZTsKICAgICBtdXRhYmxlIEhBTkRMRSBtX3Rl
eHRGaWVsZFRoZW1lOwogICAgIG11dGFibGUgSEFORExFIG1fbWVudUxpc3RUaGVtZTsKICAgICBt
dXRhYmxlIEhBTkRMRSBtX3NsaWRlclRoZW1lOworICAgIG11dGFibGUgSEFORExFIG1fc3BpbkJ1
dHRvblRoZW1lOwogfTsKIAogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39540</attachid>
            <date>2009-09-14 01:52:03 -0700</date>
            <delta_ts>2009-11-23 22:26:09 -0800</delta_ts>
            <desc>Patch part 4: Rendering of spin buttons and behavior for type=number</desc>
            <filename>number-ui-p4-r1.diff</filename>
            <type>text/plain</type>
            <size>32782</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNGJhZGJiLi43OWQ0MDBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMDkt
MDQgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3QgZm9yIDxpbnB1dCB0eXBlPW51bWJl
cj4gVUkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Nzk2OAorCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvaW5wdXQtbnVtYmVyLWNs
aWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZm9y
bXMvaW5wdXQtbnVtYmVyLWNsaWNrLmh0bWw6IEFkZGVkLgorCiAyMDA5LTA5LTAyICBLZW50IFRh
bXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1z
L2lucHV0LW51bWJlci1jbGljay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXItY2xpY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2OTI5NGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXItY2xpY2stZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKKworVGVzdCBmb3IgdGhlIHNwaW4gY29udHJvbCBiZWhh
dmlvciBpbiBhIHR5cGU9bnVtbmJlciBpbnB1dC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgaS52YWx1ZSBpcyAiNC4xNCIKK1BBU1MgaS52YWx1ZSBpcyAiNC4xNCIKK1BB
U1MgaS52YWx1ZSBpcyAiMC4xNCIKK1BBU1MgaS52YWx1ZSBpcyAiMC4xNCIKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC1udW1iZXItY2xpY2suaHRtbCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2lucHV0LW51bWJlci1jbGljay5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMDE1OTQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC1udW1i
ZXItY2xpY2suaHRtbApAQCAtMCwwICsxLDU2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxpbnB1dCBpZD1pMSB0eXBlPW51
bWJlciB2YWx1ZT0iMy4xNCIgYXV0b2ZvY3VzIHN0ZXA9MSBtaW49IjAuMTQiIG1heD01PgorCis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCdUZXN0IGZvciB0aGUgc3BpbiBjb250cm9sIGJlaGF2aW9yIGluIGEg
dHlwZT1udW1uYmVyIGlucHV0LicpOworCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
Ly8gVGhlIHNwaW4gY29udHJvbCBpcyBhdCAoMTMwLC0xKSBpbiB0aGUgaW5wdXQgZWxlbWVudCBv
biBNYWMuCisgICAgLy8gVGhlIHNpemUgaXMgMTV4MjIuCisgICAgdmFyIGkgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnaTEnKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhpLm9mZnNl
dExlZnQgKyAxMzUsIGkub2Zmc2V0VG9wICsgNCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3du
KCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIC8vIFRoZSB1cCBidXR0b24gaGFz
IGJlZW4gY2xpY2tlZC4KKyAgICBzaG91bGRCZSgnaS52YWx1ZScsICciNC4xNCInKTsKKworICAg
IC8vIENsaWNrIGl0IGFnYWluLgorICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAvLyBUaGUgbWF4aW11bSB2YWx1ZSBpcyA1LiAgU28g
dGhlIHZhbHVlIGlzIG5vdCBjaGFuZ2VkLgorICAgIHNob3VsZEJlKCdpLnZhbHVlJywgJyI0LjE0
IicpOworCisgICAgLy8gQ2xpY2sgdGhlIGRvd24gYnV0dG9uIGZvciB0aW1lcy4KKyAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhpLm9mZnNldExlZnQgKyAxMzUsIGkub2Zmc2V0VG9wICsgMTUp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAo
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVw
KCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VV
cCgpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
VXAoKTsKKyAgICBzaG91bGRCZSgnaS52YWx1ZScsICciMC4xNCInKTsKKworICAgIC8vIFRoZSBt
aW5pbXVtIHZhbHVlIGlzIDAuICBTbyB0aGUgdmFsdWUgaXMgbm90IGNoYW5nZWQuCisgICAgZXZl
bnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgIHNo
b3VsZEJlKCdpLnZhbHVlJywgJyIwLjE0IicpOworfSBlbHNlIHsKKyAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSAnTm8gZXZlbnRTZW5kZXInOworfQorCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDA2YmNmNWMuLmIxYTUzZTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMDktMDkt
MDQgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCA8aW5wdXQgdHlwZT1udW1i
ZXI+IFVJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mjc5NjgKKworICAgICAgICBUZXN0OiBwbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9pbnB1dC1udW1i
ZXItY2xpY2suaHRtbAorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6cHNldWRvU3R5bGVDYWNoZUlzSW52YWxpZCk6CisgICAgICAgICogZG9t
L0lucHV0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFbGVtZW50OjpoYXNTcGlu
QnV0dG9uKToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAg
KiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXF1aXZhbGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpzdGVwTWlzbWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6c3RlcFVwRnJvbVVJKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1
dEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6Omhhc1NwaW5C
dXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9uc1dpdGhTaXplKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmU6On5SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6YWRkRm9jdXNSaW5nUmVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpsYXlv
dXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpub2Rl
QXRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6
OmZvcndhcmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmU6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZTo6dGV4dEJsb2NrV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lOjpkZWNvcmF0aW9uV2lkdGhSaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnByZWZlcnJlZENvbnRlbnRXaWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnByZWZl
cnJlZERlY29yYXRpb25XaWR0aFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZTo6Y3JlYXRlU3VidHJlZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6Y3JlYXRlSW5uZXJUZXh0U3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjcmVhdGVJbm5l
clNwaW5CdXR0b25TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmU6OmNyZWF0ZU91dGVyU3BpbkJ1dHRvblN0eWxlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpjb250cm9sU3Rh
dGVzRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmlzU3BpblVw
QnV0dG9uUGFydFByZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmlzU3Bp
blVwQnV0dG9uUGFydEhvdmVyZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5o
OgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OlNwaW5CdXR0b25FbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpzcGluQnV0dG9uTm9kZU5hbWUp
OgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50Ojpub2RlTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpTcGluQnV0dG9uRWxlbWVudDo6aXNFbmFibGVkRm9ybUNvbnRyb2wpOgorICAgICAgICAo
V2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6Om9uVXBCdXR0b24pOgorCiAyMDA5LTA5LTAzICBL
ZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMjE4ZDZiZi4uNDBiNTEzNSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAg
LTc5OCw3ICs3OTgsNyBAQCBib29sIEVsZW1lbnQ6OnBzZXVkb1N0eWxlQ2FjaGVJc0ludmFsaWQo
Y29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyUwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBuZXdQc2V1ZG9TdHlsZSA9IHJlbmRlcmVyKCktPmdldFVuY2FjaGVkUHNldWRv
U3R5bGUocHNldWRvSWQsIG5ld1N0eWxlLCBuZXdTdHlsZSk7CiAKLSAgICAgICAgaWYgKCpuZXdQ
c2V1ZG9TdHlsZSAhPSAqcHNldWRvU3R5bGVDYWNoZVtpXSkgeworICAgICAgICBpZiAobmV3UHNl
dWRvU3R5bGUgJiYgKm5ld1BzZXVkb1N0eWxlICE9ICpwc2V1ZG9TdHlsZUNhY2hlW2ldKSB7CiAg
ICAgICAgICAgICBpZiAocHNldWRvSWQgPCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCkKICAgICAg
ICAgICAgICAgICBuZXdTdHlsZS0+c2V0SGFzUHNldWRvU3R5bGUocHNldWRvSWQpOwogICAgICAg
ICAgICAgbmV3U3R5bGUtPmFkZENhY2hlZFBzZXVkb1N0eWxlKG5ld1BzZXVkb1N0eWxlKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5oIGIvV2ViQ29yZS9kb20vSW5wdXRF
bGVtZW50LmgKaW5kZXggY2Q1ZjRlOS4uMmZhN2JlNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
SW5wdXRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmgKQEAgLTQzLDYg
KzQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1Bhc3N3b3JkRmllbGQoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIGlzVGV4dEZpZWxkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBo
YXNTcGluQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgYm9v
bCBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgc2VhcmNoRXZlbnRzU2hvdWxkQmVEaXNwYXRjaGVkKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1dlYkNvcmUvaHRtbC9IVE1M
QXR0cmlidXRlTmFtZXMuaW4KaW5kZXggZjI1OGJkNy4uYTg1MTUwNiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEF0
dHJpYnV0ZU5hbWVzLmluCkBAIC0yMjgsNiArMjI4LDcgQEAgc3BlbGxjaGVjawogc3JjCiBzdGFu
ZGJ5CiBzdGFydAorc3RlcAogc3R5bGUKIHN1bW1hcnkKIHRhYmluZGV4CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKaW5kZXggMGU5OGE0Ni4uYjAzZmFmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcApAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgIlRleHRFdmVudC5oIgogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9kdG9hLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTE4NzcsNCAr
MTg3OCw2OSBAQCBIVE1MT3B0aW9uRWxlbWVudCogSFRNTElucHV0RWxlbWVudDo6c2VsZWN0ZWRP
cHRpb24oKSBjb25zdAogfQogI2VuZGlmICAvLyBFTkFCTEUoREFUQUxJU1QpCiAKKyNkZWZpbmUg
RVBTSUxPTiAoMTYuMCAqIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6ZXBzaWxvbigpKQor
CitzdGF0aWMgaW5saW5lIGJvb2wgZXF1aXZhbGVudChkb3VibGUgYSwgZG91YmxlIGIpCit7Cisg
ICAgcmV0dXJuIGIgLSBFUFNJTE9OIDwgYSAmJiBhIDwgYiArIEVQU0lMT047Cit9CisKK3N0YXRp
YyBpbmxpbmUgYm9vbCBzdGVwTWlzbWF0Y2goZG91YmxlIHZhbHVlLCBkb3VibGUgbWluLCBkb3Vi
bGUgc3RlcCkKK3sKKyAgICBkb3VibGUgcmVtYWluZGVyID0gZm1vZCh2YWx1ZSAtIG1pbiwgc3Rl
cCk7CisgICAgcmV0dXJuICFlcXVpdmFsZW50KHJlbWFpbmRlciwgc3RlcCkgJiYgIWVxdWl2YWxl
bnQocmVtYWluZGVyLCAwLjApOworfQorCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBVcEZy
b21VSShpbnQgbikKK3sKKyAgICAvLyBGSVhNRTogUmUtaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24g
d2hlbiBtaW4vbWF4L3N0ZXAgc3VwcG9ydCBpcyBjb21wbGV0ZWQuCisKKyAgICBpZiAoaW5wdXRU
eXBlKCkgIT0gTlVNQkVSIHx8ICFuKQorICAgICAgICByZXR1cm47CisKKyAgICBkb3VibGUgY3Vy
cmVudDsKKyAgICBpZiAoIWZvcm1TdHJpbmdUb0RvdWJsZSh2YWx1ZSgpLCAmY3VycmVudCkpIHsK
KyAgICAgICAgLy8gVGhlIGN1cnJlbnQgdmFsdWUgaXMgaW52YWxpZC4KKyAgICAgICAgZG91Ymxl
IGxpbWl0OworICAgICAgICBpZiAobiA+IDAgJiYgZm9ybVN0cmluZ1RvRG91YmxlKGdldEF0dHJp
YnV0ZShtaW5BdHRyKSwgJmxpbWl0KSkKKyAgICAgICAgICAgIHNldFZhbHVlKGdldEF0dHJpYnV0
ZShtaW5BdHRyKSk7CisgICAgICAgIGVsc2UgaWYgKG4gPCAwICYmIGZvcm1TdHJpbmdUb0RvdWJs
ZShnZXRBdHRyaWJ1dGUobWF4QXR0ciksICZsaW1pdCkpCisgICAgICAgICAgICBzZXRWYWx1ZShn
ZXRBdHRyaWJ1dGUobWF4QXR0cikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXRWYWx1
ZShTdHJpbmcoIjAiKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkb3VibGUgbWlu
OworICAgIGJvb2wgaGFzTWluID0gZm9ybVN0cmluZ1RvRG91YmxlKGdldEF0dHJpYnV0ZShtaW5B
dHRyKSwgJm1pbik7CisgICAgZG91YmxlIHN0ZXBNaW4gPSBoYXNNaW4gPyBtaW4gOiAwLjA7Cisg
ICAgZG91YmxlIHN0ZXA7CisgICAgaWYgKCFmb3JtU3RyaW5nVG9Eb3VibGUoZ2V0QXR0cmlidXRl
KHN0ZXBBdHRyKSwgJnN0ZXApIHx8IHN0ZXAgPD0gMC4wKQorICAgICAgICBzdGVwID0gMS4wOwor
ICAgIGN1cnJlbnQgKz0gc3RlcCAqIG47CisKKyAgICAvLyBTbmFwIHRvIHRoZSBzdGVwCisgICAg
aWYgKHN0ZXBNaXNtYXRjaChjdXJyZW50LCBzdGVwTWluLCBzdGVwKSkgeworICAgICAgICBwcmlu
dGYoInN0ZXBNaXNtYXRjaDogY3VyPSVmIG1pbj0lZiBzdGVwPSVmXG4iLCBjdXJyZW50LCBzdGVw
TWluLCBzdGVwKTsKKyAgICAgICAgaWYgKG4gPiAwKQorICAgICAgICAgICAgY3VycmVudCAtPSBm
bW9kKGN1cnJlbnQgLSBzdGVwTWluLCBzdGVwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
Y3VycmVudCArPSBzdGVwIC0gZm1vZChjdXJyZW50IC0gc3RlcE1pbiwgc3RlcCk7CisgICAgfQor
CisgICAgLy8gQ2hlY2sgbWluL21heC4KKyAgICBpZiAoaGFzTWluICYmIGN1cnJlbnQgPCBtaW4g
LSBFUFNJTE9OKQorICAgICAgICByZXR1cm47CisgICAgZG91YmxlIG1heDsKKyAgICBpZiAoZm9y
bVN0cmluZ1RvRG91YmxlKGdldEF0dHJpYnV0ZShtYXhBdHRyKSwgJm1heCkgJiYgY3VycmVudCA+
IG1heCArIEVQU0lMT04pCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBUaGUgc3Rh
bmRhcmQgYXNrcyB0byB1c2UgdGhlIHNhbWUgcnVsZSBhcyB0b1N0cmluZygpIGluIEphdmFTY3Jp
cHQuCisgICAgLy8gU2VlIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNw
cC4KKyAgICBpZiAoY3VycmVudCA9PSBjZWlsKGN1cnJlbnQpKQorICAgICAgICBzZXRWYWx1ZShT
dHJpbmc6OmZvcm1hdCgiJS4wZiIsIGN1cnJlbnQpKTsKKyAgICBlbHNlCisgICAgICAgIHNldFZh
bHVlKFN0cmluZzo6bnVtYmVyKGN1cnJlbnQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5oCmluZGV4IGJhM2U1YTQuLjMyM2U3ZmQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaApAQCAtMTAyLDYgKzEwMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNT
ZWFyY2hGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBTRUFSQ0g7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNJbnB1dFR5cGVIaWRkZW4oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gSElE
REVOOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGFzc3dvcmRGaWVsZCgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZSA9PSBQQVNTV09SRDsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNTcGluQnV0dG9uKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlID09IE5VTUJFUjsgfQogCiAgICAgYm9vbCBjaGVja2VkKCkg
Y29uc3QgeyByZXR1cm4gbV9jaGVja2VkOyB9CiAgICAgdm9pZCBzZXRDaGVja2VkKGJvb2wsIGJv
b2wgc2VuZENoYW5nZUV2ZW50ID0gZmFsc2UpOwpAQCAtMjM2LDYgKzIzNyw4IEBAIHB1YmxpYzoK
ICAgICAvLyBJZiB0aGUgY29udmVyc2lvbiBmYWlscywgdGhlIHJldHVybiB2YWx1ZSBpcyBmYWxz
ZS4gVGFrZSBjYXJlIHRoYXQgbGVhZGluZyBvciB0cmFpbGluZyB1bm5lY2Vzc2FyeSBjaGFyYWN0
ZXJzIG1ha2UgZmFpbHVyZXMuICBUaGlzIHJldHVybnMgZmFsc2UgZm9yIGFuIGVtcHR5IHN0cmlu
ZyBpbnB1dC4KICAgICAvLyBUaGUgZG91YmxlKiBwYXJhbWV0ZXIgbWF5IGJlIDAuCiAgICAgc3Rh
dGljIGJvb2wgZm9ybVN0cmluZ1RvRG91YmxlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSopOworCisg
ICAgdm9pZCBzdGVwVXBGcm9tVUkoaW50KTsKICAgICAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CmluZGV4IDhhMzg3NjkuLmYxYWVmODkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtNjAz
LDkgKzYwMywxMSBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludElu
Zm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBpbnQgdyA9IHdpZHRoKCk7Ci0gICAgaW50IGggPSBoZWlnaHQoKTsKKyAgICByZXR1cm4g
cGFpbnRCb3hEZWNvcmF0aW9uc1dpdGhTaXplKHBhaW50SW5mbywgdHgsIHR5LCB3aWR0aCgpLCBo
ZWlnaHQoKSk7Cit9CiAKK3ZvaWQgUmVuZGVyQm94OjpwYWludEJveERlY29yYXRpb25zV2l0aFNp
emUoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5LCBpbnQgdywgaW50IGgpCit7
CiAgICAgLy8gYm9yZGVyLWZpdCBjYW4gYWRqdXN0IHdoZXJlIHdlIHBhaW50IG91ciBib3JkZXIg
YW5kIGJhY2tncm91bmQuICBJZiBzZXQsIHdlIHNudWdseSBmaXQgb3VyIGxpbmUgYm94IGRlc2Nl
bmRhbnRzLiAgKFRoZSBpQ2hhdAogICAgIC8vIGJhbGxvb24gbGF5b3V0IGlzIGFuIGV4YW1wbGUg
b2YgdGhpcykuCiAgICAgYm9yZGVyRml0QWRqdXN0KHR4LCB3KTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgK
aW5kZXggYjQ5M2FlOS4uMmE3YjVkZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTMwOCw2ICsz
MDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwYWludEZpbGxMYXllcihjb25zdCBQYWludElu
Zm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGludCB0eCwgaW50IHR5LCBpbnQg
d2lkdGgsIGludCBoZWlnaHQsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zl
cik7CiAgICAgdm9pZCBwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29s
b3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBpbnQgdHgsIGludCB0eSwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogCisgICAgdm9p
ZCBwYWludEJveERlY29yYXRpb25zV2l0aFNpemUoUGFpbnRJbmZvJiwgaW50LCBpbnQsIGludCwg
aW50KTsKICAgICB2b2lkIHBhaW50TWFza0ltYWdlcyhjb25zdCBQYWludEluZm8mLCBpbnQgdHgs
IGludCB0eSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKIAogI2lmIFBMQVRGT1JNKE1BQykKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5j
cHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmlu
ZGV4IGJjOThiOGEuLjcxODQyYjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIK
ICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCkBA
IC02Nyw2ICs2OCwxMSBAQCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6On5SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUoKQogIAogICAgIGlmIChtX2lubmVyQmxvY2spCiAgICAgICAgIG1f
aW5uZXJCbG9jay0+ZGV0YWNoKCk7CisKKyAgICBpZiAobV9pbm5lclNwaW5CdXR0b24pCisgICAg
ICAgIG1faW5uZXJTcGluQnV0dG9uLT5kZXRhY2goKTsKKyAgICBpZiAobV9vdXRlclNwaW5CdXR0
b24pCisgICAgICAgIG1fb3V0ZXJTcGluQnV0dG9uLT5kZXRhY2goKTsKIH0KIAogUmVuZGVyU3R5
bGUqIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6dGV4dEJhc2VTdHlsZSgpIGNvbnN0CkBA
IC0xOTAsNiArMTk2LDE2IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpwYWlu
dChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiAgICAgfQogfQogCit2b2lk
IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludElu
Zm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCit7CisgICAgcGFpbnRCb3hEZWNvcmF0aW9u
c1dpdGhTaXplKHBhaW50SW5mbywgdHgsIHR5LCB3aWR0aCgpIC0gZGVjb3JhdGlvbldpZHRoUmln
aHQoKSwgaGVpZ2h0KCkpOworfQorCit2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6
YWRkRm9jdXNSaW5nUmVjdHMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0
eCwgaW50IHR5KQoreworICAgIGdyYXBoaWNzQ29udGV4dC0+YWRkRm9jdXNSaW5nUmVjdChJbnRS
ZWN0KHR4LCB0eSwgd2lkdGgoKSAtIGRlY29yYXRpb25XaWR0aFJpZ2h0KCksIGhlaWdodCgpKSk7
Cit9CisKIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpsYXlvdXQoKQogewogICAg
IGludCBvbGRIZWlnaHQgPSBoZWlnaHQoKTsKQEAgLTIzNSw2ICsyNTEsMTYgQEAgdm9pZCBSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmxheW91dCgpCiAgICAgY3VycmVudEhlaWdodCA9IGNo
aWxkQmxvY2stPmhlaWdodCgpOwogICAgIGlmIChjdXJyZW50SGVpZ2h0IDwgaGVpZ2h0KCkpCiAg
ICAgICAgIGNoaWxkQmxvY2stPnNldExvY2F0aW9uKGNoaWxkQmxvY2stPngoKSwgKGhlaWdodCgp
IC0gY3VycmVudEhlaWdodCkgLyAyKTsKKworICAgIC8vIFRoZSBpbm5lciBzcGluIGJ1dHRvbiBp
Z25vcmVzIHRoZSBwYWRkaW5ncy4KKyAgICBpZiAoUmVuZGVyQm94KiBzcGluQm94ID0gbV9pbm5l
clNwaW5CdXR0b24gPyBtX2lubmVyU3BpbkJ1dHRvbi0+cmVuZGVyQm94KCkgOiAwKSB7CisgICAg
ICAgIHNwaW5Cb3gtPnNldExvY2F0aW9uKHNwaW5Cb3gtPngoKSArIHBhZGRpbmdSaWdodCgpLCBi
b3JkZXJUb3AoKSk7CisgICAgICAgIHNwaW5Cb3gtPnNldEhlaWdodChoZWlnaHQoKSAtIGJvcmRl
clRvcCgpIC0gYm9yZGVyQm90dG9tKCkpOworICAgIH0KKworICAgIC8vIENlbnRlciB0aGUgc3Bp
biBidXR0b24gdmVydGljYWxseSwgYW5kIG1vdmUgaXQgdG8gdGhlIHJpZ2h0CisgICAgaWYgKFJl
bmRlckJveCogc3BpbkJveCA9IG1fb3V0ZXJTcGluQnV0dG9uID8gbV9vdXRlclNwaW5CdXR0b24t
PnJlbmRlckJveCgpIDogMCkKKyAgICAgICAgc3BpbkJveC0+c2V0TG9jYXRpb24oc3BpbkJveC0+
eCgpICsgcGFkZGluZ1JpZ2h0KCkgKyBib3JkZXJSaWdodCgpLCAoaGVpZ2h0KCkgLSBzcGluQm94
LT5oZWlnaHQoKSkgLyAyKTsKIH0KIAogYm9vbCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6
Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0
JiByZXN1bHQsIGludCB4UG9zLCBpbnQgeVBvcywgaW50IHR4LCBpbnQgdHksIEhpdFRlc3RBY3Rp
b24gaGl0VGVzdEFjdGlvbikKQEAgLTI1NCw4ICsyODAsMTEgQEAgYm9vbCBSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmU6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0
LCBIaXQKICAgICBpZiAocmVzdWx0LmlubmVyTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihpbm5lclRl
eHRFbGVtZW50KCkpIHx8IHJlc3VsdC5pbm5lck5vZGUoKSA9PSBub2RlKCkpCiAgICAgICAgIGhp
dElubmVyVGV4dEVsZW1lbnQocmVzdWx0LCB4UG9zLCB5UG9zLCB0eCwgdHkpOwogCi0gICAgLy8g
SWYgd2UncmUgbm90IGEgc2VhcmNoIGZpZWxkLCBvciB3ZSBhbHJlYWR5IGZvdW5kIHRoZSByZXN1
bHRzIG9yIGNhbmNlbCBidXR0b25zLCB3ZSdyZSBkb25lLgotICAgIGlmICghbV9pbm5lckJsb2Nr
IHx8IHJlc3VsdC5pbm5lck5vZGUoKSA9PSBtX3Jlc3VsdHNCdXR0b24gfHwgcmVzdWx0LmlubmVy
Tm9kZSgpID09IG1fY2FuY2VsQnV0dG9uKQorICAgIC8vIElmIHRoaXMgaGFzIG5vIGRlY29yYXRp
b25zLCB3ZSdyZSBkb25lLgorICAgIGlmICghbV9pbm5lckJsb2NrIHx8ICFtX2lubmVyU3BpbkJ1
dHRvbiB8fCAhbV9vdXRlclNwaW5CdXR0b24pCisgICAgICAgIHJldHVybiB0cnVlOworICAgIC8v
IElmIHdlIGFscmVhZHkgZm91bmQgYSBkZWNvcmF0aW9uLCB3ZSdyZSBkb25lLgorICAgIGlmIChy
ZXN1bHQuaW5uZXJOb2RlKCkgPT0gbV9yZXN1bHRzQnV0dG9uIHx8IHJlc3VsdC5pbm5lck5vZGUo
KSA9PSBtX2NhbmNlbEJ1dHRvbiB8fCByZXN1bHQuaW5uZXJOb2RlKCkgPT0gbV9pbm5lclNwaW5C
dXR0b24gfHwgcmVzdWx0LmlubmVyTm9kZSgpID09IG1fb3V0ZXJTcGluQnV0dG9uKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIE5vZGUqIGlubmVyTm9kZSA9IDA7CkBAIC0zMDQsMTAgKzMz
MywxNSBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6Zm9yd2FyZEV2ZW50KEV2
ZW50KiBldmVudCkKICAgICB9CiAKICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBpbm5lclRl
eHRSZW5kZXJlci0+YWJzb2x1dGVUb0xvY2FsKHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVu
dCktPmFic29sdXRlTG9jYXRpb24oKSwgZmFsc2UsIHRydWUpOworICAgIGludCB0ZXh0UmlnaHQg
PSBpbm5lclRleHRSZW5kZXJlci0+Ym9yZGVyQm94UmVjdCgpLnJpZ2h0KCk7CiAgICAgaWYgKG1f
cmVzdWx0c0J1dHRvbiAmJiBsb2NhbFBvaW50LngoKSA8IGlubmVyVGV4dFJlbmRlcmVyLT5ib3Jk
ZXJCb3hSZWN0KCkueCgpKQogICAgICAgICBtX3Jlc3VsdHNCdXR0b24tPmRlZmF1bHRFdmVudEhh
bmRsZXIoZXZlbnQpOwotICAgIGVsc2UgaWYgKG1fY2FuY2VsQnV0dG9uICYmIGxvY2FsUG9pbnQu
eCgpID4gaW5uZXJUZXh0UmVuZGVyZXItPmJvcmRlckJveFJlY3QoKS5yaWdodCgpKQorICAgIGVs
c2UgaWYgKG1fY2FuY2VsQnV0dG9uICYmIGxvY2FsUG9pbnQueCgpID4gdGV4dFJpZ2h0ICYmIGxv
Y2FsUG9pbnQueCgpIDwgdGV4dFJpZ2h0ICsgbV9jYW5jZWxCdXR0b24tPnJlbmRlckJveCgpLT53
aWR0aCgpKQogICAgICAgICBtX2NhbmNlbEJ1dHRvbi0+ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVu
dCk7CisgICAgZWxzZSBpZiAobV9pbm5lclNwaW5CdXR0b24gJiYgbG9jYWxQb2ludC54KCkgPiB0
ZXh0UmlnaHQgJiYgbG9jYWxQb2ludC54KCkgPCB0ZXh0UmlnaHQgKyBtX2lubmVyU3BpbkJ1dHRv
bi0+cmVuZGVyQm94KCktPndpZHRoKCkpCisgICAgICAgIG1faW5uZXJTcGluQnV0dG9uLT5kZWZh
dWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKKyAgICBlbHNlIGlmIChtX291dGVyU3BpbkJ1dHRvbiAm
JiBsb2NhbFBvaW50LngoKSA+IHRleHRSaWdodCkKKyAgICAgICAgbV9vdXRlclNwaW5CdXR0b24t
PmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogICAgIGVsc2UKICAgICAgICAgUmVuZGVyVGV4
dENvbnRyb2w6OmZvcndhcmRFdmVudChldmVudCk7CiB9CkBAIC0zMjYsMTAgKzM2MCwxNCBAQCB2
b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlIGRpZmYsIGNvbnN0IFJlbgogCiAgICAgaWYgKFJlbmRlck9iamVjdCogcmVzdWx0c1Jl
bmRlcmVyID0gbV9yZXN1bHRzQnV0dG9uID8gbV9yZXN1bHRzQnV0dG9uLT5yZW5kZXJlcigpIDog
MCkKICAgICAgICAgcmVzdWx0c1JlbmRlcmVyLT5zZXRTdHlsZShjcmVhdGVSZXN1bHRzQnV0dG9u
U3R5bGUoc3R5bGUoKSkpOwotCiAgICAgaWYgKFJlbmRlck9iamVjdCogY2FuY2VsUmVuZGVyZXIg
PSBtX2NhbmNlbEJ1dHRvbiA/IG1fY2FuY2VsQnV0dG9uLT5yZW5kZXJlcigpIDogMCkKICAgICAg
ICAgY2FuY2VsUmVuZGVyZXItPnNldFN0eWxlKGNyZWF0ZUNhbmNlbEJ1dHRvblN0eWxlKHN0eWxl
KCkpKTsKIAorICAgIGlmIChSZW5kZXJPYmplY3QqIHNwaW5SZW5kZXJlciA9IG1faW5uZXJTcGlu
QnV0dG9uID8gbV9pbm5lclNwaW5CdXR0b24tPnJlbmRlcmVyKCkgOiAwKQorICAgICAgICBzcGlu
UmVuZGVyZXItPnNldFN0eWxlKGNyZWF0ZUlubmVyU3BpbkJ1dHRvblN0eWxlKCkpOworICAgIGlm
IChSZW5kZXJPYmplY3QqIHNwaW5SZW5kZXJlciA9IG1fb3V0ZXJTcGluQnV0dG9uID8gbV9vdXRl
clNwaW5CdXR0b24tPnJlbmRlcmVyKCkgOiAwKQorICAgICAgICBzcGluUmVuZGVyZXItPnNldFN0
eWxlKGNyZWF0ZU91dGVyU3BpbkJ1dHRvblN0eWxlKCkpOworCiAgICAgc2V0SGFzT3ZlcmZsb3dD
bGlwKGZhbHNlKTsKIH0KIApAQCAtMzcxLDYgKzQwOSwyMyBAQCBpbnQgUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lOjp0ZXh0QmxvY2tXaWR0aCgpIGNvbnN0CiAgICAgICAgIHdpZHRoIC09IGNh
bmNlbFJlbmRlcmVyLT53aWR0aCgpICsgY2FuY2VsUmVuZGVyZXItPm1hcmdpbkxlZnQoKSArIGNh
bmNlbFJlbmRlcmVyLT5tYXJnaW5SaWdodCgpOwogICAgIH0KIAorICAgIGlmIChSZW5kZXJCb3gq
IHNwaW5SZW5kZXJlciA9IG1faW5uZXJTcGluQnV0dG9uID8gbV9pbm5lclNwaW5CdXR0b24tPnJl
bmRlckJveCgpIDogMCkgeworICAgICAgICBzcGluUmVuZGVyZXItPmNhbGNXaWR0aCgpOworICAg
ICAgICB3aWR0aCAtPSBzcGluUmVuZGVyZXItPndpZHRoKCkgKyBzcGluUmVuZGVyZXItPm1hcmdp
bkxlZnQoKSArIHNwaW5SZW5kZXJlci0+bWFyZ2luUmlnaHQoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gd2lkdGggLSBkZWNvcmF0aW9uV2lkdGhSaWdodCgpOworfQorCitpbnQgUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lOjpkZWNvcmF0aW9uV2lkdGhSaWdodCgpIGNvbnN0Cit7CisgICAgaW50
IHdpZHRoID0gMDsKKyAgICBpZiAoUmVuZGVyQm94KiBzcGluUmVuZGVyZXIgPSBtX291dGVyU3Bp
bkJ1dHRvbiA/IG1fb3V0ZXJTcGluQnV0dG9uLT5yZW5kZXJCb3goKSA6IDApIHsKKyAgICAgICAg
c3BpblJlbmRlcmVyLT5jYWxjV2lkdGgoKTsKKyAgICAgICAgd2lkdGggKz0gc3BpblJlbmRlcmVy
LT53aWR0aCgpICsgc3BpblJlbmRlcmVyLT5tYXJnaW5MZWZ0KCkgKyBzcGluUmVuZGVyZXItPm1h
cmdpblJpZ2h0KCk7CisgICAgfQorICAgIGlmICh3aWR0aCA+IDApCisgICAgICAgIHdpZHRoICs9
IHBhZGRpbmdSaWdodCgpICsgYm9yZGVyUmlnaHQoKTsKICAgICByZXR1cm4gd2lkdGg7CiB9CiAK
QEAgLTM5Myw3ICs0NDgsMjMgQEAgaW50IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6cHJl
ZmVycmVkQ29udGVudFdpZHRoKGZsb2F0IGNoYXJXaWR0aCkgY29uc3QKICAgICAgICAgcmVzdWx0
ICs9IGNhbmNlbFJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkgKyBjYW5jZWxSZW5kZXJlci0+Ym9yZGVy
UmlnaHQoKSArCiAgICAgICAgICAgICAgICAgICBjYW5jZWxSZW5kZXJlci0+cGFkZGluZ0xlZnQo
KSArIGNhbmNlbFJlbmRlcmVyLT5wYWRkaW5nUmlnaHQoKTsKIAotICAgIHJldHVybiByZXN1bHQ7
CisgICAgaWYgKFJlbmRlckJveCogc3BpblJlbmRlcmVyID0gbV9pbm5lclNwaW5CdXR0b24gPyBt
X2lubmVyU3BpbkJ1dHRvbi0+cmVuZGVyQm94KCkgOiAwKQorICAgICAgICByZXN1bHQgKz0gc3Bp
blJlbmRlcmVyLT5taW5QcmVmV2lkdGgoKTsKKworICAgIHJldHVybiByZXN1bHQgKyBwcmVmZXJy
ZWREZWNvcmF0aW9uV2lkdGhSaWdodCgpOworICAgIC8vIFRoZSByZXR1cm4gdmFsdWUgKyBpbm5l
ciB0ZXh0IHBhZGRpbmcgKyBJTlBVVCBlbGVtZW50IHBhZGRpbmcgKyBJTlBVVCBlbGVtZW50IGJv
cmRlciB3aWxsIGJlIHRoZSBJTlBVVCBlbGVtZW50IHdpZHRoLgorfQorCitpbnQgUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lOjpwcmVmZXJyZWREZWNvcmF0aW9uV2lkdGhSaWdodCgpIGNvbnN0
Cit7CisgICAgaW50IHdpZHRoID0gMDsKKyAgICBpZiAoUmVuZGVyQm94KiBzcGluUmVuZGVyZXIg
PSBtX291dGVyU3BpbkJ1dHRvbiA/IG1fb3V0ZXJTcGluQnV0dG9uLT5yZW5kZXJCb3goKSA6IDAp
IHsKKyAgICAgICAgc3BpblJlbmRlcmVyLT5jYWxjV2lkdGgoKTsKKyAgICAgICAgd2lkdGggKz0g
c3BpblJlbmRlcmVyLT5taW5QcmVmV2lkdGgoKSArIHNwaW5SZW5kZXJlci0+bWFyZ2luTGVmdCgp
ICsgc3BpblJlbmRlcmVyLT5tYXJnaW5SaWdodCgpOworICAgIH0KKyAgICBpZiAod2lkdGggPiAw
KQorICAgICAgICB3aWR0aCArPSBwYWRkaW5nUmlnaHQoKSArIGJvcmRlclJpZ2h0KCk7CisgICAg
cmV0dXJuIHdpZHRoOwogfQogCiB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6YWRq
dXN0Q29udHJvbEhlaWdodEJhc2VkT25MaW5lSGVpZ2h0KGludCBsaW5lSGVpZ2h0KQpAQCAtNDIz
LDI4ICs0OTQsMzcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNyZWF0ZVN1
YnRyZWVJZk5lZWRlZCgpCiB7CiAgICAgaWYgKCFpbnB1dEVsZW1lbnQoKS0+aXNTZWFyY2hGaWVs
ZCgpKSB7CiAgICAgICAgIFJlbmRlclRleHRDb250cm9sOjpjcmVhdGVTdWJ0cmVlSWZOZWVkZWQo
bV9pbm5lckJsb2NrLmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICgh
bV9pbm5lckJsb2NrKSB7Ci0gICAgICAgIC8vIENyZWF0ZSB0aGUgaW5uZXIgYmxvY2sgZWxlbWVu
dAotICAgICAgICBtX2lubmVyQmxvY2sgPSBuZXcgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQoZG9j
dW1lbnQoKSwgbm9kZSgpKTsKLSAgICAgICAgbV9pbm5lckJsb2NrLT5hdHRhY2hJbm5lckVsZW1l
bnQobm9kZSgpLCBjcmVhdGVJbm5lckJsb2NrU3R5bGUoc3R5bGUoKSksIHJlbmRlckFyZW5hKCkp
OwotICAgIH0KKyAgICAgICAgaWYgKGlucHV0RWxlbWVudCgpLT5oYXNTcGluQnV0dG9uKCkgJiYg
IW1faW5uZXJTcGluQnV0dG9uKSB7CisgICAgICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbiA9IG5l
dyBTcGluQnV0dG9uRWxlbWVudChkb2N1bWVudCgpLCBub2RlKCkpOworICAgICAgICAgICAgbV9p
bm5lclNwaW5CdXR0b24tPmF0dGFjaElubmVyRWxlbWVudChub2RlKCksIGNyZWF0ZUlubmVyU3Bp
bkJ1dHRvblN0eWxlKCksIHJlbmRlckFyZW5hKCkpOworICAgICAgICAgICAgLy9tX2lubmVyU3Bp
bkJ1dHRvbi0+Y3JlYXRlU3VidHJlZSgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgaWYgKCFtX2lubmVyQmxvY2spIHsKKyAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgaW5uZXIg
YmxvY2sgZWxlbWVudAorICAgICAgICAgICAgbV9pbm5lckJsb2NrID0gbmV3IFRleHRDb250cm9s
SW5uZXJFbGVtZW50KGRvY3VtZW50KCksIG5vZGUoKSk7CisgICAgICAgICAgICBtX2lubmVyQmxv
Y2stPmF0dGFjaElubmVyRWxlbWVudChub2RlKCksIGNyZWF0ZUlubmVyQmxvY2tTdHlsZShzdHls
ZSgpKSwgcmVuZGVyQXJlbmEoKSk7CisgICAgICAgIH0KIAotICAgIGlmICghbV9yZXN1bHRzQnV0
dG9uKSB7Ci0gICAgICAgIC8vIENyZWF0ZSB0aGUgc2VhcmNoIHJlc3VsdHMgYnV0dG9uIGVsZW1l
bnQKLSAgICAgICAgbV9yZXN1bHRzQnV0dG9uID0gbmV3IFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRv
bkVsZW1lbnQoZG9jdW1lbnQoKSk7Ci0gICAgICAgIG1fcmVzdWx0c0J1dHRvbi0+YXR0YWNoSW5u
ZXJFbGVtZW50KG1faW5uZXJCbG9jay5nZXQoKSwgY3JlYXRlUmVzdWx0c0J1dHRvblN0eWxlKG1f
aW5uZXJCbG9jay0+cmVuZGVyZXIoKS0+c3R5bGUoKSksIHJlbmRlckFyZW5hKCkpOwotICAgIH0K
KyAgICAgICAgaWYgKCFtX3Jlc3VsdHNCdXR0b24pIHsKKyAgICAgICAgICAgIC8vIENyZWF0ZSB0
aGUgc2VhcmNoIHJlc3VsdHMgYnV0dG9uIGVsZW1lbnQKKyAgICAgICAgICAgIG1fcmVzdWx0c0J1
dHRvbiA9IG5ldyBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50KGRvY3VtZW50KCkpOwor
ICAgICAgICAgICAgbV9yZXN1bHRzQnV0dG9uLT5hdHRhY2hJbm5lckVsZW1lbnQobV9pbm5lckJs
b2NrLmdldCgpLCBjcmVhdGVSZXN1bHRzQnV0dG9uU3R5bGUobV9pbm5lckJsb2NrLT5yZW5kZXJl
cigpLT5zdHlsZSgpKSwgcmVuZGVyQXJlbmEoKSk7CisgICAgICAgIH0KIAotICAgIC8vIENyZWF0
ZSBpbm5lclRleHQgZWxlbWVudCBiZWZvcmUgYWRkaW5nIHRoZSBjYW5jZWwgYnV0dG9uCi0gICAg
UmVuZGVyVGV4dENvbnRyb2w6OmNyZWF0ZVN1YnRyZWVJZk5lZWRlZChtX2lubmVyQmxvY2suZ2V0
KCkpOworICAgICAgICAvLyBDcmVhdGUgaW5uZXJUZXh0IGVsZW1lbnQgYmVmb3JlIGFkZGluZyB0
aGUgY2FuY2VsIGJ1dHRvbgorICAgICAgICBSZW5kZXJUZXh0Q29udHJvbDo6Y3JlYXRlU3VidHJl
ZUlmTmVlZGVkKG1faW5uZXJCbG9jay5nZXQoKSk7CiAKLSAgICBpZiAoIW1fY2FuY2VsQnV0dG9u
KSB7Ci0gICAgICAgIC8vIENyZWF0ZSB0aGUgY2FuY2VsIGJ1dHRvbiBlbGVtZW50Ci0gICAgICAg
IG1fY2FuY2VsQnV0dG9uID0gbmV3IFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudChkb2N1
bWVudCgpKTsKLSAgICAgICAgbV9jYW5jZWxCdXR0b24tPmF0dGFjaElubmVyRWxlbWVudChtX2lu
bmVyQmxvY2suZ2V0KCksIGNyZWF0ZUNhbmNlbEJ1dHRvblN0eWxlKG1faW5uZXJCbG9jay0+cmVu
ZGVyZXIoKS0+c3R5bGUoKSksIHJlbmRlckFyZW5hKCkpOworICAgICAgICBpZiAoIW1fY2FuY2Vs
QnV0dG9uKSB7CisgICAgICAgICAgICAvLyBDcmVhdGUgdGhlIGNhbmNlbCBidXR0b24gZWxlbWVu
dAorICAgICAgICAgICAgbV9jYW5jZWxCdXR0b24gPSBuZXcgU2VhcmNoRmllbGRDYW5jZWxCdXR0
b25FbGVtZW50KGRvY3VtZW50KCkpOworICAgICAgICAgICAgbV9jYW5jZWxCdXR0b24tPmF0dGFj
aElubmVyRWxlbWVudChtX2lubmVyQmxvY2suZ2V0KCksIGNyZWF0ZUNhbmNlbEJ1dHRvblN0eWxl
KG1faW5uZXJCbG9jay0+cmVuZGVyZXIoKS0+c3R5bGUoKSksIHJlbmRlckFyZW5hKCkpOworICAg
ICAgICB9CisgICAgfQorICAgIGlmIChpbnB1dEVsZW1lbnQoKS0+aGFzU3BpbkJ1dHRvbigpICYm
ICFtX291dGVyU3BpbkJ1dHRvbikgeworICAgICAgICBtX291dGVyU3BpbkJ1dHRvbiA9IG5ldyBT
cGluQnV0dG9uRWxlbWVudChkb2N1bWVudCgpLCBub2RlKCkpOworICAgICAgICBtX291dGVyU3Bp
bkJ1dHRvbi0+YXR0YWNoSW5uZXJFbGVtZW50KG5vZGUoKSwgY3JlYXRlT3V0ZXJTcGluQnV0dG9u
U3R5bGUoKSwgcmVuZGVyQXJlbmEoKSk7CisgICAgICAgIC8vbV9vdXRlclNwaW5CdXR0b24tPmNy
ZWF0ZVN1YnRyZWUoKTsKICAgICB9CiB9CiAKQEAgLTQ5NSw3ICs1NzUsNyBAQCBQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNyZWF0ZUlubmVyVGV4
dFN0eWxlKGNvbnN0CiAgICAgaWYgKHRleHRCbG9ja1N0eWxlLT5mb250KCkubGluZVNwYWNpbmco
KSA+IGxpbmVIZWlnaHQodHJ1ZSwgdHJ1ZSkpCiAgICAgICAgIHRleHRCbG9ja1N0eWxlLT5zZXRM
aW5lSGVpZ2h0KExlbmd0aCgtMTAwLjBmLCBQZXJjZW50KSk7CiAKLSAgICB0ZXh0QmxvY2tTdHls
ZS0+c2V0RGlzcGxheShtX2lubmVyQmxvY2sgPyBJTkxJTkVfQkxPQ0sgOiBCTE9DSyk7CisgICAg
dGV4dEJsb2NrU3R5bGUtPnNldERpc3BsYXkoKG1faW5uZXJCbG9jayB8fCBpbnB1dEVsZW1lbnQo
KS0+aGFzU3BpbkJ1dHRvbigpKSA/IElOTElORV9CTE9DSyA6IEJMT0NLKTsKIAogICAgIC8vIFdl
J3JlIGFkZGluZyBvbmUgZXh0cmEgcGl4ZWwgb2YgcGFkZGluZyB0byBtYXRjaCBXaW5JRS4KICAg
ICB0ZXh0QmxvY2tTdHlsZS0+c2V0UGFkZGluZ0xlZnQoTGVuZ3RoKDEsIEZpeGVkKSk7CkBAIC01
NjcsNiArNjQ3LDI4IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZTo6Y3JlYXRlQ2FuY2VsQnV0dG9uU3R5bGUoY29uCiAgICAgcmV0dXJuIGNhbmNl
bEJsb2NrU3R5bGUucmVsZWFzZSgpOwogfQogCitQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNyZWF0ZUlubmVyU3BpbkJ1dHRvblN0eWxlKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQobm9kZSgpLT5pc0hUTUxFbGVtZW50KCkpOworCisgICAgUmVmUHRy
PFJlbmRlclN0eWxlPiBidXR0b25TdHlsZSA9IGdldENhY2hlZFBzZXVkb1N0eWxlKElOTkVSX1NQ
SU5fQlVUVE9OKTsKKyAgICBpZiAoIWJ1dHRvblN0eWxlKQorICAgICAgICBidXR0b25TdHlsZSA9
IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICBidXR0b25TdHlsZS0+aW5oZXJpdEZyb20oc3R5
bGUoKSk7CisgICAgcmV0dXJuIGJ1dHRvblN0eWxlLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjcmVhdGVPdXRlclNw
aW5CdXR0b25TdHlsZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG5vZGUoKS0+aXNIVE1MRWxlbWVu
dCgpKTsKKworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gYnV0dG9uU3R5bGUgPSBnZXRDYWNoZWRQ
c2V1ZG9TdHlsZShPVVRFUl9TUElOX0JVVFRPTik7CisgICAgaWYgKCFidXR0b25TdHlsZSkKKyAg
ICAgICAgYnV0dG9uU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgYnV0dG9uU3R5
bGUtPmluaGVyaXRGcm9tKHN0eWxlKCkpOworICAgIHJldHVybiBidXR0b25TdHlsZS5yZWxlYXNl
KCk7Cit9CisKIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp1cGRhdGVDYW5jZWxC
dXR0b25WaXNpYmlsaXR5KCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2FuY2VsQnV0dG9uLT5yZW5k
ZXJlcigpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUuaAppbmRleCBjZThmMGM4Li4xYjk3NGMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaApAQCAtMzIsNiArMzIsNyBAQCBjbGFzcyBJbnB1
dEVsZW1lbnQ7CiBjbGFzcyBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ7CiBjbGFzcyBT
ZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OwogY2xhc3MgU2VhcmNoUG9wdXBNZW51Owor
Y2xhc3MgU3BpbkJ1dHRvbkVsZW1lbnQ7CiBjbGFzcyBUZXh0Q29udHJvbElubmVyRWxlbWVudDsK
IAogY2xhc3MgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lIDogcHVibGljIFJlbmRlclRleHRD
b250cm9sLCBwcml2YXRlIFBvcHVwTWVudUNsaWVudCB7CkBAIC01MywxMiArNTQsMTggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKTsKIAorICAgIC8v
IERlY29yYXRpb24gd2lkdGggb3V0c2lkZSBvZiB0aGUgdGV4dCBmaWVsZC4KKyAgICBpbnQgZGVj
b3JhdGlvbldpZHRoUmlnaHQoKSBjb25zdDsKKwogcHJpdmF0ZToKKyAgICBpbnQgcHJlZmVycmVk
RGVjb3JhdGlvbldpZHRoUmlnaHQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udHJv
bENsaXAoKSBjb25zdCB7IHJldHVybiBtX2NhbmNlbEJ1dHRvbjsgfQogICAgIHZpcnR1YWwgYm9v
bCBpc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBzdWJ0cmVlSGFzQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8m
LCBpbnQgdHgsIGludCB0eSk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMo
UGFpbnRJbmZvJiwgaW50LCBpbnQpOworICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0
cyhHcmFwaGljc0NvbnRleHQqLCBpbnQsIGludCk7CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgp
OwogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0Jiwg
SGl0VGVzdFJlc3VsdCYsIGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHksIEhpdFRlc3RBY3Rp
b24pOwpAQCAtODgsNiArOTUsOCBAQCBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5
bGU+IGNyZWF0ZUlubmVyQmxvY2tTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkg
Y29uc3Q7CiAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3JlYXRlUmVzdWx0c0J1dHRvblN0
eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdDsKICAgICBQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBjcmVhdGVDYW5jZWxCdXR0b25TdHlsZShjb25zdCBSZW5kZXJTdHlsZSog
c3RhcnRTdHlsZSkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5u
ZXJTcGluQnV0dG9uU3R5bGUoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBj
cmVhdGVPdXRlclNwaW5CdXR0b25TdHlsZSgpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVDYW5j
ZWxCdXR0b25WaXNpYmlsaXR5KCkgY29uc3Q7CiAgICAgRVZpc2liaWxpdHkgdmlzaWJpbGl0eUZv
ckNhbmNlbEJ1dHRvbigpIGNvbnN0OwpAQCAtMTI3LDYgKzEzNiw4IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPFRleHRDb250cm9sSW5uZXJFbGVtZW50PiBtX2lubmVyQmxvY2s7CiAgICAgUmVmUHRy
PFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ+IG1fcmVzdWx0c0J1dHRvbjsKICAgICBS
ZWZQdHI8U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50PiBtX2NhbmNlbEJ1dHRvbjsKKyAg
ICBSZWZQdHI8U3BpbkJ1dHRvbkVsZW1lbnQ+IG1faW5uZXJTcGluQnV0dG9uOworICAgIFJlZlB0
cjxTcGluQnV0dG9uRWxlbWVudD4gbV9vdXRlclNwaW5CdXR0b247CiAKICAgICBUaW1lcjxSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU+IG1fc2VhcmNoRXZlbnRUaW1lcjsKICAgICBSZWZQdHI8
U2VhcmNoUG9wdXBNZW51PiBtX3NlYXJjaFBvcHVwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3Bw
CmluZGV4IDU4ODhiZGEuLmE4M2Y1ZDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2VsZWN0
aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmgiCiAKIC8vIFRoZSBtZXRob2RzIGluIHRoaXMgZmlsZSBhcmUg
c2hhcmVkIGJ5IGFsbCB0aGVtZXMgb24gZXZlcnkgcGxhdGZvcm0uCiAKQEAgLTU4NSwxMCArNTg2
LDE2IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnN0YXRlQ2hhbmdlZChSZW5kZXJPYmplY3QqIG8sIENv
bnRyb2xTdGF0ZSBzdGF0ZSkgY29uc3QKIENvbnRyb2xTdGF0ZXMgUmVuZGVyVGhlbWU6OmNvbnRy
b2xTdGF0ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0CiB7CiAgICAg
Q29udHJvbFN0YXRlcyByZXN1bHQgPSAwOwotICAgIGlmIChpc0hvdmVyZWQobykpCisgICAgaWYg
KGlzSG92ZXJlZChvKSkgewogICAgICAgICByZXN1bHQgfD0gSG92ZXJTdGF0ZTsKLSAgICBpZiAo
aXNQcmVzc2VkKG8pKQorICAgICAgICBpZiAoaXNTcGluVXBCdXR0b25QYXJ0SG92ZXJlZChvKSkK
KyAgICAgICAgICAgIHJlc3VsdCB8PSBTcGluVXBTdGF0ZTsKKyAgICB9CisgICAgaWYgKGlzUHJl
c3NlZChvKSkgewogICAgICAgICByZXN1bHQgfD0gUHJlc3NlZFN0YXRlOworICAgICAgICBpZiAo
aXNTcGluVXBCdXR0b25QYXJ0UHJlc3NlZChvKSkKKyAgICAgICAgICAgIHJlc3VsdCB8PSBTcGlu
VXBTdGF0ZTsKKyAgICB9CiAgICAgaWYgKGlzRm9jdXNlZChvKSAmJiBvLT5zdHlsZSgpLT5vdXRs
aW5lU3R5bGVJc0F1dG8oKSkKICAgICAgICAgcmVzdWx0IHw9IEZvY3VzU3RhdGU7CiAgICAgaWYg
KGlzRW5hYmxlZChvKSkKQEAgLTY3Miw2ICs2NzksMTUgQEAgYm9vbCBSZW5kZXJUaGVtZTo6aXNQ
cmVzc2VkKGNvbnN0IFJlbmRlck9iamVjdCogbykgY29uc3QKICAgICByZXR1cm4gby0+bm9kZSgp
LT5hY3RpdmUoKTsKIH0KIAorYm9vbCBSZW5kZXJUaGVtZTo6aXNTcGluVXBCdXR0b25QYXJ0UHJl
c3NlZChjb25zdCBSZW5kZXJPYmplY3QqIG8pIGNvbnN0Cit7CisgICAgTm9kZSogbm9kZSA9IG8t
Pm5vZGUoKTsKKyAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmFjdGl2ZSgpIHx8IG5vZGUtPm5vZGVO
YW1lKCkgIT0gU3BpbkJ1dHRvbkVsZW1lbnQ6OnNwaW5CdXR0b25Ob2RlTmFtZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgU3BpbkJ1dHRvbkVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxTcGluQnV0dG9uRWxlbWVudCo+KG5vZGUpOworICAgIHJldHVybiBlbGVtZW50LT5vblVw
QnV0dG9uKCk7Cit9CisKIGJvb2wgUmVuZGVyVGhlbWU6OmlzUmVhZE9ubHlDb250cm9sKGNvbnN0
IFJlbmRlck9iamVjdCogbykgY29uc3QKIHsKICAgICBOb2RlKiBub2RlID0gby0+bm9kZSgpOwpA
QCAtNjg3LDYgKzcwMywxNSBAQCBib29sIFJlbmRlclRoZW1lOjppc0hvdmVyZWQoY29uc3QgUmVu
ZGVyT2JqZWN0KiBvKSBjb25zdAogICAgIHJldHVybiBvLT5ub2RlKCktPmhvdmVyZWQoKTsKIH0K
IAorYm9vbCBSZW5kZXJUaGVtZTo6aXNTcGluVXBCdXR0b25QYXJ0SG92ZXJlZChjb25zdCBSZW5k
ZXJPYmplY3QqIG8pIGNvbnN0Cit7CisgICAgTm9kZSogbm9kZSA9IG8tPm5vZGUoKTsKKyAgICBp
ZiAoIW5vZGUgfHwgIW5vZGUtPmhvdmVyZWQoKSB8fCBub2RlLT5ub2RlTmFtZSgpICE9IFNwaW5C
dXR0b25FbGVtZW50OjpzcGluQnV0dG9uTm9kZU5hbWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIFNwaW5CdXR0b25FbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U3BpbkJ1dHRv
bkVsZW1lbnQqPihub2RlKTsKKyAgICByZXR1cm4gZWxlbWVudC0+b25VcEJ1dHRvbigpOworfQor
CiBib29sIFJlbmRlclRoZW1lOjppc0RlZmF1bHQoY29uc3QgUmVuZGVyT2JqZWN0KiBvKSBjb25z
dAogewogICAgIGlmICghby0+ZG9jdW1lbnQoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCmluZGV4
IDQ5Njc0NGIuLmVmNmJiNjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApAQCAtMjY3LDcgKzI2
Nyw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW5hYmxlZChjb25zdCBSZW5kZXJPYmplY3QqKSBj
b25zdDsKICAgICBib29sIGlzRm9jdXNlZChjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKICAg
ICBib29sIGlzUHJlc3NlZChjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICBib29sIGlz
U3BpblVwQnV0dG9uUGFydFByZXNzZWQoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAg
Ym9vbCBpc0hvdmVyZWQoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CisgICAgYm9vbCBpc1Nw
aW5VcEJ1dHRvblBhcnRIb3ZlcmVkKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogICAgIGJv
b2wgaXNSZWFkT25seUNvbnRyb2woY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgYm9v
bCBpc0RlZmF1bHQoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IGZjN2Y3ZjAuLjNiNjlh
YWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNw
cApAQCAtMjEyLDQgKzIxMiw2MSBAQCB2b2lkIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZ0KQogICAgICAgICBIVE1MRGl2RWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldnQpOwogfQogCitTcGluQnV0dG9uRWxlbWVudDo6U3Bp
bkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvYywgTm9kZSogc2hhZG93UGFyZW50KQorICAgIDog
VGV4dENvbnRyb2xJbm5lckVsZW1lbnQoZG9jLCBzaGFkb3dQYXJlbnQpCisgICAgLCBtX2NhcHR1
cmluZyhmYWxzZSkKKyAgICAsIG1fb25VcEJ1dHRvbihmYWxzZSkKK3sKK30KKwordm9pZCBTcGlu
QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZ0KQoreworICAgIGlm
IChldnQtPmlzTW91c2VFdmVudCgpKSB7CisgICAgICAgIGNvbnN0IE1vdXNlRXZlbnQqIG1ldnQg
PSBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZ0KTsKKyAgICAgICAgaWYgKG1ldnQtPmJ1dHRv
bigpID09IExlZnRCdXR0b24pIHsKKyAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0
ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgpKTsK
KyAgICAgICAgICAgIEludFBvaW50IGxvY2FsID0gcm91bmRlZEludFBvaW50KHJlbmRlckJveCgp
LT5hYnNvbHV0ZVRvTG9jYWwobWV2dC0+YWJzb2x1dGVMb2NhdGlvbigpLCBmYWxzZSwgdHJ1ZSkp
OworICAgICAgICAgICAgaWYgKGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50
KSB7CisgICAgICAgICAgICAgICAgaWYgKHJlbmRlckJveCgpLT5ib3JkZXJCb3hSZWN0KCkuY29u
dGFpbnMobG9jYWwpKSB7CisgICAgICAgICAgICAgICAgICAgIGlucHV0LT5mb2N1cygpOworICAg
ICAgICAgICAgICAgICAgICBpbnB1dC0+c2VsZWN0KCk7CisgICAgICAgICAgICAgICAgICAgIGlm
IChsb2NhbC55KCkgPCByZW5kZXJCb3goKS0+eSgpICsgcmVuZGVyQm94KCktPmhlaWdodCgpIC8g
MikKKyAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LT5zdGVwVXBGcm9tVUkoMSk7CisgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LT5zdGVw
VXBGcm9tVUkoLTEpOworICAgICAgICAgICAgICAgICAgICBldnQtPnNldERlZmF1bHRIYW5kbGVk
KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChldnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpIHsKKyAgICAgICAgICAgICAgICBpZiAo
cmVuZGVyQm94KCktPmJvcmRlckJveFJlY3QoKS5jb250YWlucyhsb2NhbCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFtX2NhcHR1cmluZykgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZl
bnRzTm9kZShpbnB1dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jYXB0dXJpbmcg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGJvb2wgb2xkT25VcEJ1dHRvbiA9IG1fb25VcEJ1dHRvbjsK
KyAgICAgICAgICAgICAgICAgICAgbV9vblVwQnV0dG9uID0gbG9jYWwueSgpIDwgcmVuZGVyQm94
KCktPnkoKSArIHJlbmRlckJveCgpLT5oZWlnaHQoKSAvIDI7CisgICAgICAgICAgICAgICAgICAg
IGlmIChtX29uVXBCdXR0b24gIT0gb2xkT25VcEJ1dHRvbikKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJlbmRlcmVyKCktPnJlcGFpbnQoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICBpZiAobV9jYXB0dXJpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3Vz
ZUV2ZW50c05vZGUoMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jYXB0dXJpbmcg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICBpZiAoIWV2dC0+ZGVmYXVsdEhhbmRsZWQoKSkKKyAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIoZXZ0KTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBTcGluQnV0
dG9uRWxlbWVudDo6c3BpbkJ1dHRvbk5vZGVOYW1lKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgbmFtZSwgKCItd2Via2l0LXNwaW4tYnV0dG9uIikpOworICAgIHJl
dHVybiBuYW1lOworfQorCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5oCmluZGV4IGY3MmRkZjIuLjQ2Mzc5NjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCkBAIC02OCw2ICs2OCwyMSBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9jYXB0dXJpbmc7CiB9OwogCitjbGFzcyBTcGluQnV0dG9uRWxlbWVudCA6IHB1
YmxpYyBUZXh0Q29udHJvbElubmVyRWxlbWVudCB7CitwdWJsaWM6CisgICAgU3BpbkJ1dHRvbkVs
ZW1lbnQoRG9jdW1lbnQqLCBOb2RlKik7CisgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBj
b25zdCB7IHJldHVybiBzcGluQnV0dG9uTm9kZU5hbWUoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c0VuYWJsZWRGb3JtQ29udHJvbCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQqPihzaGFk
b3dBbmNlc3Rvck5vZGUoKSktPmlzRW5hYmxlZEZvcm1Db250cm9sKCk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOworCisgICAgYm9vbCBvblVwQnV0dG9u
KCkgY29uc3QgeyByZXR1cm4gbV9vblVwQnV0dG9uOyB9CisgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgc3BpbkJ1dHRvbk5vZGVOYW1lKCk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2Nh
cHR1cmluZzsKKyAgICBib29sIG1fb25VcEJ1dHRvbjsKK307CisKIH0gLy9uYW1lc3BhY2UKIAog
I2VuZGlmCg==
</data>
<flag name="review"
          id="20640"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>