<?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>113506</bug_id>
          
          <creation_ts>2013-03-28 08:12:11 -0700</creation_ts>
          <short_desc>[Qt] Create ShadowBlur on demand.</short_desc>
          <delta_ts>2013-04-05 08:50:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Allan Sandfeld Jensen">allan.jensen</reporter>
          <assigned_to name="Allan Sandfeld Jensen">allan.jensen</assigned_to>
          <cc>bruno.abinader</cc>
    
    <cc>buildbot</cc>
    
    <cc>d-r</cc>
    
    <cc>noam</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>865519</commentid>
    <comment_count>0</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-03-28 08:12:11 -0700</bug_when>
    <thetext>GraphicsContext for Qt keeps a single ShadowBlur object around and up to date. This leads to problems where an active ShadowBlur object can accidentially change its own values because it is disabling shadows on the parent graphics context (seen in the last patch in bug 90082 and in the patch for 111736).

We should instead like the other ports do, create the ShadowBlur object on demand when needed. This also means that the active ShadowBlur is its own object and doesn&apos;t get affected by changing shadow values on the GraphicsContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865524</commentid>
    <comment_count>1</comment_count>
      <attachid>195570</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-03-28 08:17:00 -0700</bug_when>
    <thetext>Created attachment 195570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869156</commentid>
    <comment_count>2</comment_count>
      <attachid>195570</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-04-04 07:39:06 -0700</bug_when>
    <thetext>Comment on attachment 195570
Patch

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

&gt; Source/WebCore/platform/graphics/qt/GraphicsContextQt.cpp:626
&gt; +            ShadowBlur shadow(FloatSize(m_state.shadowBlur, m_state.shadowBlur), m_state.shadowOffset, m_state.shadowColor, m_state.shadowColorSpace, m_state.shadowsIgnoreTransforms);

This kind of repeats itself... don&apos;t you want to do something like:
OwnPtr&lt;ShadowBlur&gt; shadow = m_state.createShadowBlur();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869163</commentid>
    <comment_count>3</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-04-04 08:16:42 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 195570 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=195570&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/qt/GraphicsContextQt.cpp:626
&gt; &gt; +            ShadowBlur shadow(FloatSize(m_state.shadowBlur, m_state.shadowBlur), m_state.shadowOffset, m_state.shadowColor, m_state.shadowColorSpace, m_state.shadowsIgnoreTransforms);
&gt; 
&gt; This kind of repeats itself... don&apos;t you want to do something like:
&gt; OwnPtr&lt;ShadowBlur&gt; shadow = m_state.createShadowBlur();

I don&apos;t like to allocate pointers for something that belongs on the stack, but I could perhaps make the ShadowBlur constructor just take the GraphicsContextState as an argument, making it much cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869171</commentid>
    <comment_count>4</comment_count>
      <attachid>196480</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-04-04 08:42:36 -0700</bug_when>
    <thetext>Created attachment 196480
Patch

Now with less redundancy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869176</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-04-04 08:53:03 -0700</bug_when>
    <thetext>Attachment 196480 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/graphics/GraphicsContext.cpp&apos;, u&apos;Source/WebCore/platform/graphics/GraphicsContext.h&apos;, u&apos;Source/WebCore/platform/graphics/ShadowBlur.cpp&apos;, u&apos;Source/WebCore/platform/graphics/ShadowBlur.h&apos;, u&apos;Source/WebCore/platform/graphics/cairo/FontCairo.cpp&apos;, u&apos;Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp&apos;, u&apos;Source/WebCore/platform/graphics/qt/FontQt.cpp&apos;, u&apos;Source/WebCore/platform/graphics/qt/GraphicsContextQt.cpp&apos;, u&apos;Source/WebCore/platform/graphics/qt/ImageQt.cpp&apos;, u&apos;Source/WebCore/platform/graphics/qt/StillImageQt.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/ShadowBlur.cpp:198:  Extra space before ) in if  [whitespace/parens] [5]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869183</commentid>
    <comment_count>6</comment_count>
      <attachid>196480</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-04 09:03:04 -0700</bug_when>
    <thetext>Comment on attachment 196480
Patch

Attachment 196480 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17464065</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869185</commentid>
    <comment_count>7</comment_count>
      <attachid>196484</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-04-04 09:09:50 -0700</bug_when>
    <thetext>Created attachment 196484
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869201</commentid>
    <comment_count>8</comment_count>
      <attachid>196484</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-04 09:46:05 -0700</bug_when>
    <thetext>Comment on attachment 196484
Patch

Attachment 196484 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17497088</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869208</commentid>
    <comment_count>9</comment_count>
      <attachid>196489</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-04-04 10:03:08 -0700</bug_when>
    <thetext>Created attachment 196489
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869243</commentid>
    <comment_count>10</comment_count>
      <attachid>196489</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-04 11:16:57 -0700</bug_when>
    <thetext>Comment on attachment 196489
Patch

Attachment 196489 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17421044</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869244</commentid>
    <comment_count>11</comment_count>
      <attachid>196489</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-04 11:19:05 -0700</bug_when>
    <thetext>Comment on attachment 196489
Patch

Attachment 196489 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17435027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869256</commentid>
    <comment_count>12</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-04-04 11:33:46 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 196489 [details])
&gt; Attachment 196489 [details] did not pass mac-ews (mac):
&gt; Output: http://webkit-commit-queue.appspot.com/results/17435027

/Volumes/Data/EWS/WebKit/Source/WebCore/platform/graphics/ShadowBlur.cpp:200:15: error: unused variable &apos;shadowBlur&apos; [-Werror,-Wunused-variable]
        float shadowBlur = radiusToLegacyRadius(state.shadowBlur);
              ^
/Volumes/Data/EWS/WebKit/Source/WebCore/platform/graphics/ShadowBlur.cpp:201:34: error: use of undeclared identifier &apos;shadowBlur&apos;
        m_blurRadius = FloatSize(shadowBlur, shadowBlur);

Yeah, that makes complete sense, clang.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869559</commentid>
    <comment_count>13</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-04-04 22:15:17 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 196489 [details] [details])
&gt; &gt; Attachment 196489 [details] [details] did not pass mac-ews (mac):
&gt; &gt; Output: http://webkit-commit-queue.appspot.com/results/17435027
&gt; 
&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/graphics/ShadowBlur.cpp:200:15: error: unused variable &apos;shadowBlur&apos; [-Werror,-Wunused-variable]
&gt;         float shadowBlur = radiusToLegacyRadius(state.shadowBlur);
&gt;               ^
&gt; /Volumes/Data/EWS/WebKit/Source/WebCore/platform/graphics/ShadowBlur.cpp:201:34: error: use of undeclared identifier &apos;shadowBlur&apos;
&gt;         m_blurRadius = FloatSize(shadowBlur, shadowBlur);
&gt; 
&gt; Yeah, that makes complete sense, clang.

It does, you forgot {}, the first line is inside the if statement and the second one isnt...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869561</commentid>
    <comment_count>14</comment_count>
      <attachid>196489</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-04 22:18:01 -0700</bug_when>
    <thetext>Comment on attachment 196489
Patch

Attachment 196489 did not pass win-ews (win):
Output: http://webkit-commit-queue.appspot.com/results/17518335</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869620</commentid>
    <comment_count>15</comment_count>
      <attachid>196592</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-04-05 01:13:16 -0700</bug_when>
    <thetext>Created attachment 196592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869788</commentid>
    <comment_count>16</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-04-05 08:50:39 -0700</bug_when>
    <thetext>Committed r147750: &lt;http://trac.webkit.org/changeset/147750&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195570</attachid>
            <date>2013-03-28 08:17:00 -0700</date>
            <delta_ts>2013-04-04 08:42:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113506-20130328161658.patch</filename>
            <type>text/plain</type>
            <size>30489</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTI1ZWExZWQ3OWUwMzc1
NzBmNWIwOGYwNjk0ZjE3OGFiNDAwMGQyZC4uMWE4NzJlYWQ2MTMwNTM5YWNhMjAyMGI1NjNmZGQ1
MTQyMzM5Mjg2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEzLTAzLTI4ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtR
dF0gQ3JlYXRlIFNoYWRvd0JsdXIgb24gZGVtYW5kLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjcmVhdGVzIFNoYWRvd0JsdXIgb2Jq
ZWN0cyBvbiBkZW1hbmQgaW5zdGVhZCBvZiBrZWVwaW5nIGEgc2luZ2xlIG9uZSBhbGl2ZSBmb3IK
KyAgICAgICAgZWFjaCBHcmFwaGljc0NvbnRleHQuIFRoaXMgbWF0Y2hlcyB3aGF0IG90aGVyIHBs
YXRmb3JtcyBkb2VzIGFuZCBmaXhlcyB0aGUgcHJvYmxlbSB3aXRoIAorICAgICAgICBhbiBhY3Rp
dmUgc2hhZG93Ymx1ciBiZWluZyBhZmZlY3RlZCBieSBjaGFuZ2luZyBzaGFkb3cgc2V0dGluZ3Mg
b24gdGhlIEdyYXBoaWNzQ29udGV4dC4KKworICAgICAgICBUaGUgbWV0aG9kIG11c3RVc2VTaGFk
b3dCbHVyIGlzIG1vdmVkIGZyb20gU2hhZG93Qmx1ciB0byBHcmFwaGNpc0NvbnRleHQsIHNvIHRo
YXQgaXQgY2FuCisgICAgICAgIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgU2hhZG93Qmx1ciBv
YmplY3Qgc2hvdWxkIGV2ZW4gYmUgZ2VuZXJhdGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6aGFzQmx1cnJlZFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6Om11c3RVc2VTaGFkb3dCbHVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dC
bHVyOjpTaGFkb3dCbHVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNTaGFkb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpm
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
Rm9udFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdRdEdseXBoUnVuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHA6CisgICAgICAgIChH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjp+R3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpmaWxsUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnN0cm9rZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRI
b2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFk
b3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclBsYXRmb3JtU2hh
ZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9TdGlsbEltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RpbGxJbWFnZTo6
ZHJhdyk6CisKIDIwMTMtMDMtMjggIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogU2ltcGxpZnkgUmVzb3VyY2VTY3JpcHRGaWxl
IHNvIHRoYXQgaXQgc3RvcmVzIGhhc0RpdmVyZ2VkIHN0YXRlIGluIGl0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXgg
NTA3YjRkZTAyNDg2NWJiNjMyZDdmMjgxYzMyMmM0Yzk3OGYxMjM2Mi4uMjdiYzNhOTM2NDQwZjlm
ZDYyM2ZiYTNmNTA1MGE0OGU3NDYxZTZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0xODQsNiArMTg0LDI5IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0OjpnZXRTaGFkb3coRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0
JiBibHVyLCBDb2xvciYgY29sb3IsIENvCiAgICAgcmV0dXJuIGhhc1NoYWRvdygpOwogfQogCiti
b29sIEdyYXBoaWNzQ29udGV4dDo6aGFzQmx1cnJlZFNoYWRvdygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fc3RhdGUuc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmIG1fc3RhdGUuc2hhZG93Q29sb3Iu
YWxwaGEoKSAmJiBtX3N0YXRlLnNoYWRvd0JsdXI7Cit9CisKKyNpZiBQTEFURk9STShRVCkgfHwg
VVNFKENBSVJPKQorYm9vbCBHcmFwaGljc0NvbnRleHQ6Om11c3RVc2VTaGFkb3dCbHVyKCkgY29u
c3QKK3sKKyAgICAvLyBXZSBjYW4ndCBhdm9pZCBTaGFkb3dCbHVyIGlmIHRoZSBzaGFkb3cgaGFz
IGJsdXIuCisgICAgaWYgKGhhc0JsdXJyZWRTaGFkb3coKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgLy8gV2UgY2FuIGF2b2lkIFNoYWRvd0JsdXIgYW5kIG9wdGltaXplLCBzaW5jZSB3ZSdy
ZSBub3QgZHJhd2luZyBvbiBhCisgICAgLy8gY2FudmFzIGFuZCBib3ggc2hhZG93cyBhcmUgYWZm
ZWN0ZWQgYnkgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4KKyAgICBpZiAoIW1fc3RhdGUuc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBXZSBj
YW4gYXZvaWQgU2hhZG93Qmx1ciwgc2luY2UgdGhlcmUgYXJlIG5vIHRyYW5zZm9ybWF0aW9ucyB0
byBhcHBseSB0byB0aGUgY2FudmFzLgorICAgIGlmIChnZXRDVE0oKS5pc0lkZW50aXR5KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBPdGhlcndpc2UsIG5vIGNoYW5jZSBhdm9pZGlu
ZyBTaGFkb3dCbHVyLgorICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKIGZsb2F0IEdyYXBo
aWNzQ29udGV4dDo6c3Ryb2tlVGhpY2tuZXNzKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zdGF0
ZS5zdHJva2VUaGlja25lc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDViYzg4ODFiNDE3ODk1MzFmNjM1ZDM4MmU2ZDAz
ZWI2NzRmMTc2YTguLmNlMDE2MDgyYzE0NjcxYjY4NTE2MWM0ZWM0MDI2MGU3MGM1YzQ4Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCkBAIC01Myw5ICs1Myw2IEBAIGNsYXNzIFN1cmZhY2VPcGVuVkc7CiB0eXBlZGVmIGNsYXNz
IFdlYkNvcmU6OlN1cmZhY2VPcGVuVkcgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CiAjZWxpZiBQ
TEFURk9STShRVCkKICNpbmNsdWRlIDxRUGFpbnRlcj4KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNs
YXNzIFNoYWRvd0JsdXI7Ci19CiB0eXBlZGVmIFFQYWludGVyIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0OwogI2VsaWYgUExBVEZPUk0oV1gpCiBjbGFzcyB3eEdDREM7CkBAIC0zOTQsNiArMzkxLDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBnZXRTaGFkb3coRmxvYXRTaXpl
JiwgZmxvYXQmLCBDb2xvciYsIENvbG9yU3BhY2UmKSBjb25zdDsKICAgICAgICAgdm9pZCBjbGVh
clNoYWRvdygpOwogCisgICAgICAgIGJvb2wgaGFzQmx1cnJlZFNoYWRvdygpIGNvbnN0OworI2lm
IFBMQVRGT1JNKFFUKSB8fCBVU0UoQ0FJUk8pCisgICAgICAgIGJvb2wgbXVzdFVzZVNoYWRvd0Js
dXIoKSBjb25zdDsKKyNlbmRpZgorCiAgICAgICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBW
ZWN0b3I8SW50UmVjdD4mLCBpbnQgd2lkdGgsIGludCBvZmZzZXQsIGNvbnN0IENvbG9yJik7CiAg
ICAgICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiwgaW50IHdpZHRoLCBpbnQgb2Zm
c2V0LCBjb25zdCBDb2xvciYpOwogCkBAIC01MTcsMTAgKzUxOSw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCB0YWtlT3duZXJzaGlwT2ZQbGF0Zm9ybUNvbnRleHQoKTsKICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oUVQpCi0gICAgICAgIFNoYWRvd0JsdXIqIHNoYWRvd0JsdXIo
KTsKLSNlbmRpZgotCiAjaWYgVVNFKENBSVJPKQogICAgICAgICBHcmFwaGljc0NvbnRleHQoY2Fp
cm9fdCopOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuY3BwCmluZGV4IGU0OGFhMWQyMDMyZDEwYWYwZTBlYTVlOWUzNWM0NjBkZjRkMWZk
ZjAuLmNmYzY4NjJhNGVhYjhkNDBjZWVmZDA3MTI1ZmJkZmRmYjBjNTc0ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC0xNjgsMTMg
KzE2OCwxMyBAQCBTY3JhdGNoQnVmZmVyJiBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKQogCiBzdGF0
aWMgY29uc3QgaW50IHRlbXBsYXRlU2lkZUxlbmd0aCA9IDE7CiAKLVNoYWRvd0JsdXI6OlNoYWRv
d0JsdXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBj
b25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK1NoYWRvd0JsdXI6OlNo
YWRvd0JsdXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0
LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgYm9vbCBpZ25vcmVU
cmFuc2Zvcm1zKQogICAgIDogbV9jb2xvcihjb2xvcikKICAgICAsIG1fY29sb3JTcGFjZShjb2xv
clNwYWNlKQogICAgICwgbV9ibHVyUmFkaXVzKHJhZGl1cykKICAgICAsIG1fb2Zmc2V0KG9mZnNl
dCkKICAgICAsIG1fbGF5ZXJJbWFnZSgwKQotICAgICwgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyhmYWxzZSkKKyAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoaWdub3JlVHJhbnNmb3Jt
cykKIHsKICAgICB1cGRhdGVTaGFkb3dCbHVyVmFsdWVzKCk7CiB9CkBAIC04OTcsMjIgKzg5Nyw0
IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0KQogICAgIFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1
cmdlKCk7CiB9CiAKLSNpZiBQTEFURk9STShRVCkgfHwgVVNFKENBSVJPKQotYm9vbCBTaGFkb3dC
bHVyOjptdXN0VXNlU2hhZG93Qmx1cihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0Ci17
Ci0gICAgLy8gV2UgY2FuJ3QgYXZvaWQgU2hhZG93Qmx1ciwgc2luY2UgdGhlIHNoYWRvdyBoYXMg
Ymx1ci4KLSAgICBpZiAodHlwZSgpID09IEJsdXJTaGFkb3cpCi0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIC8vIFdlIGNhbiBhdm9pZCBTaGFkb3dCbHVyIGFuZCBvcHRpbWl6ZSwgc2luY2Ugd2Un
cmUgbm90IGRyYXdpbmcgb24gYQotICAgIC8vIGNhbnZhcyBhbmQgYm94IHNoYWRvd3MgYXJlIGFm
ZmVjdGVkIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCi0gICAgaWYgKCFzaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgLy8gV2UgY2FuIGF2
b2lkIFNoYWRvd0JsdXIsIHNpbmNlIHRoZXJlIGFyZSBubyB0cmFuc2Zvcm1hdGlvbnMgdG8gYXBw
bHkgdG8gdGhlIGNhbnZhcy4KLSAgICBpZiAoY29udGV4dC0+Z2V0Q1RNKCkuaXNJZGVudGl0eSgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgLy8gT3RoZXJ3aXNlLCBubyBjaGFuY2UgYXZv
aWRpbmcgU2hhZG93Qmx1ci4KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSNlbmRpZgotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmgKaW5kZXggZTg4YTY2NjA3NGZiMzI2ZWUxNGVlNTRlNGRkN2E5OTg2MTY3ZDIwZi4u
NmU4MmM1MjJhZmZiY2QzNDc2ZmVkZjE0ZDVmY2Q5NDgxNzY1NTUxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaApAQCAtNTAsNyArNTAsNyBAQCBw
dWJsaWM6CiAgICAgICAgIEJsdXJTaGFkb3cKICAgICB9OwogCi0gICAgU2hhZG93Qmx1cihjb25z
dCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGNvbnN0IENvbG9y
JiwgQ29sb3JTcGFjZSk7CisgICAgU2hhZG93Qmx1cihjb25zdCBGbG9hdFNpemUmIHJhZGl1cywg
Y29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSwgYm9vbCBp
Z25vcmVUcmFuc2Zvcm1zID0gZmFsc2UpOwogICAgIFNoYWRvd0JsdXIoKTsKIAogICAgIHZvaWQg
c2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgLCBjb25z
dCBDb2xvciYsIENvbG9yU3BhY2UsIGJvb2wgaWdub3JlVHJhbnNmb3JtcyA9IGZhbHNlKTsKQEAg
LTcwLDEwICs3MCw2IEBAIHB1YmxpYzoKIAogICAgIFNoYWRvd1R5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQogCi0jaWYgUExBVEZPUk0oUVQpIHx8IFVTRShDQUlSTykKLSAgICBi
b29sIG11c3RVc2VTaGFkb3dCbHVyKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0OwotI2VuZGlmCi0K
IHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTaGFkb3dCbHVyVmFsdWVzKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCmlu
ZGV4IDlhMGZkMzA1YWZmZTVjN2U2MmJkOGViYjUxNjRhZTI0OWEzOTliYTUuLjkxMjNjY2NkZjc2
NzdkNTVhMTQ2Yjg1NjdlODVjY2VmMGJmODc5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcApAQCAtNjksNyArNjksNyBA
QCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBjb25zdCBGbG9hdFBvaW50JgogICAgIGlmICghKGdyYXBoaWNzQ29udGV4dC0+dGV4
dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZUZpbGwpIHx8IHNoYWRvdy50eXBlKCkgPT0gU2hhZG93
Qmx1cjo6Tm9TaGFkb3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghc2hhZG93Lm11c3RV
c2VTaGFkb3dCbHVyKGdyYXBoaWNzQ29udGV4dCkpIHsKKyAgICBpZiAoIWdyYXBoaWNzQ29udGV4
dC0+bXVzdFVzZVNoYWRvd0JsdXIoKSkgewogICAgICAgICAvLyBPcHRpbWl6ZSBub24tYmx1cnJ5
IHNoYWRvd3MsIGJ5IGp1c3QgZHJhd2luZyB0ZXh0IHdpdGhvdXQgdGhlIFNoYWRvd0JsdXIuCiAg
ICAgICAgIGNhaXJvX3QqIGNvbnRleHQgPSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLT5jcigpOwogICAgICAgICBjYWlyb19zYXZlKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CmluZGV4IGU0ZGM4OTU4MGJiYTRlOTRhOWMwZDE3YzMxZTQ4ZDRlYzUzNzAzNGUuLjAwMDRkOWEz
ZGEyNGZiMTE2OTRlNTQ0ZDYxZmZiOTQwMmViN2U4ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAg
LTg3MSwxMSArODcxLDYgQEAgc3RhdGljIGZsb2F0IHJhZGl1c1RvTGVnYWN5UmFkaXVzKGZsb2F0
IHJhZGl1cykKICAgICByZXR1cm4gcmFkaXVzID4gOCA/IDggKyA0ICogc3FydCgocmFkaXVzIC0g
OCkgLyAyKSA6IHJhZGl1czsKIH0KIAotc3RhdGljIGJvb2wgaGFzQmx1cnJlZFNoYWRvdyhjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCi17Ci0gICAgcmV0dXJuIHN0YXRlLnNoYWRv
d0NvbG9yLmlzVmFsaWQoKSAmJiBzdGF0ZS5zaGFkb3dDb2xvci5hbHBoYSgpICYmIHN0YXRlLnNo
YWRvd0JsdXI7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKQEAgLTkxMiw3ICs5
MDcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogICAgIGlmIChtX3N0YXRlLmZpbGxQYXR0ZXJuKQogICAgICAgICBhcHBseUZpbGxQYXR0
ZXJuKCk7CiAKLSAgICBib29sIGRyYXdPd25TaGFkb3cgPSAhaXNBY2NlbGVyYXRlZENvbnRleHQo
KSAmJiBoYXNCbHVycmVkU2hhZG93KG1fc3RhdGUpICYmICFtX3N0YXRlLnNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zOyAvLyBEb24ndCB1c2UgU2hhZG93Qmx1ciBmb3IgY2FudmFzIHlldC4KKyAgICBi
b29sIGRyYXdPd25TaGFkb3cgPSAhaXNBY2NlbGVyYXRlZENvbnRleHQoKSAmJiBoYXNCbHVycmVk
U2hhZG93KCkgJiYgIW1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IC8vIERvbid0IHVz
ZSBTaGFkb3dCbHVyIGZvciBjYW52YXMgeWV0LgogICAgIGlmIChkcmF3T3duU2hhZG93KSB7CiAg
ICAgICAgIGZsb2F0IHNoYWRvd0JsdXIgPSBtX3N0YXRlLnNoYWRvd3NVc2VMZWdhY3lSYWRpdXMg
PyByYWRpdXNUb0xlZ2FjeVJhZGl1cyhtX3N0YXRlLnNoYWRvd0JsdXIpIDogbV9zdGF0ZS5zaGFk
b3dCbHVyOwogICAgICAgICAvLyBUdXJuIG9mZiBDRyBzaGFkb3dzLgpAQCAtOTQxLDcgKzkzNiw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgaWYgKG9sZEZpbGxDb2xvciAhPSBjb2xv
ciB8fCBvbGRDb2xvclNwYWNlICE9IGNvbG9yU3BhY2UpCiAgICAgICAgIHNldENHRmlsbENvbG9y
KGNvbnRleHQsIGNvbG9yLCBjb2xvclNwYWNlKTsKIAotICAgIGJvb2wgZHJhd093blNoYWRvdyA9
ICFpc0FjY2VsZXJhdGVkQ29udGV4dCgpICYmIGhhc0JsdXJyZWRTaGFkb3cobV9zdGF0ZSkgJiYg
IW1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IC8vIERvbid0IHVzZSBTaGFkb3dCbHVy
IGZvciBjYW52YXMgeWV0LgorICAgIGJvb2wgZHJhd093blNoYWRvdyA9ICFpc0FjY2VsZXJhdGVk
Q29udGV4dCgpICYmIGhhc0JsdXJyZWRTaGFkb3coKSAmJiAhbV9zdGF0ZS5zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtczsgLy8gRG9uJ3QgdXNlIFNoYWRvd0JsdXIgZm9yIGNhbnZhcyB5ZXQuCiAgICAg
aWYgKGRyYXdPd25TaGFkb3cpIHsKICAgICAgICAgZmxvYXQgc2hhZG93Qmx1ciA9IG1fc3RhdGUu
c2hhZG93c1VzZUxlZ2FjeVJhZGl1cyA/IHJhZGl1c1RvTGVnYWN5UmFkaXVzKG1fc3RhdGUuc2hh
ZG93Qmx1cikgOiBtX3N0YXRlLnNoYWRvd0JsdXI7CiAgICAgICAgIC8vIFR1cm4gb2ZmIENHIHNo
YWRvd3MuCkBAIC05NzMsNyArOTY4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3Vu
ZGVkUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWYKICAgICBp
ZiAob2xkRmlsbENvbG9yICE9IGNvbG9yIHx8IG9sZENvbG9yU3BhY2UgIT0gY29sb3JTcGFjZSkK
ICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgY29sb3IsIGNvbG9yU3BhY2UpOwogCi0g
ICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgJiYgaGFzQmx1
cnJlZFNoYWRvdyhtX3N0YXRlKSAmJiAhbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtczsg
Ly8gRG9uJ3QgdXNlIFNoYWRvd0JsdXIgZm9yIGNhbnZhcyB5ZXQuCisgICAgYm9vbCBkcmF3T3du
U2hhZG93ID0gIWlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgJiYgaGFzQmx1cnJlZFNoYWRvdygpICYm
ICFtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyAvLyBEb24ndCB1c2UgU2hhZG93Qmx1
ciBmb3IgY2FudmFzIHlldC4KICAgICBpZiAoZHJhd093blNoYWRvdykgewogICAgICAgICBmbG9h
dCBzaGFkb3dCbHVyID0gbV9zdGF0ZS5zaGFkb3dzVXNlTGVnYWN5UmFkaXVzID8gcmFkaXVzVG9M
ZWdhY3lSYWRpdXMobV9zdGF0ZS5zaGFkb3dCbHVyKSA6IG1fc3RhdGUuc2hhZG93Qmx1cjsKIApA
QCAtMTAyNiw3ICsxMDIxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJvdW5kZWQKICAgICBzZXRGaWxs
Q29sb3IoY29sb3IsIGNvbG9yU3BhY2UpOwogCiAgICAgLy8gZmlsbFJlY3RXaXRoUm91bmRlZEhv
bGUoKSBhc3N1bWVzIHRoYXQgdGhlIGVkZ2VzIG9mIHJlY3QgYXJlIGNsaXBwZWQgb3V0LCBzbyB3
ZSBvbmx5IGNhcmUgYWJvdXQgc2hhZG93cyBjYXN0IGFyb3VuZCBpbnNpZGUgdGhlIGhvbGUuCi0g
ICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgJiYgaGFzQmx1
cnJlZFNoYWRvdyhtX3N0YXRlKSAmJiAhbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsK
KyAgICBib29sIGRyYXdPd25TaGFkb3cgPSAhaXNBY2NlbGVyYXRlZENvbnRleHQoKSAmJiBoYXNC
bHVycmVkU2hhZG93KCkgJiYgIW1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CiAgICAg
aWYgKGRyYXdPd25TaGFkb3cpIHsKICAgICAgICAgZmxvYXQgc2hhZG93Qmx1ciA9IG1fc3RhdGUu
c2hhZG93c1VzZUxlZ2FjeVJhZGl1cyA/IHJhZGl1c1RvTGVnYWN5UmFkaXVzKG1fc3RhdGUuc2hh
ZG93Qmx1cikgOiBtX3N0YXRlLnNoYWRvd0JsdXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwCmluZGV4IDNhZmJiMzUyOGU4ZjQ2NWQ5MTEyYjhj
ZGIxMWViMDFhYTBiNTBlN2EuLjZiMGMzNjc4ZDk1YjRiOTFmNmJiOGFhYTRhZWE3YzdlM2QxMDVk
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRR
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNw
cApAQCAtMTI1LDQzICsxMjUsMzUgQEAgc3RhdGljIHZvaWQgZHJhd1F0R2x5cGhSdW4oR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBRR2x5cGhSdW4mIHF0R2x5cGhSdW4KICAgICBpZiAo
Y29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZVN0cm9rZSkKICAgICAgICAgdGV4
dFN0cm9rZVBhdGggPSBwYXRoRm9yR2x5cGhzKHF0R2x5cGhSdW4sIHBvaW50KTsKIAotICAgIFNo
YWRvd0JsdXIqIHNoYWRvdyA9IGNvbnRleHQtPnNoYWRvd0JsdXIoKTsKLSAgICBpZiAoY29udGV4
dC0+aGFzU2hhZG93KCkgJiYgc2hhZG93LT50eXBlKCkgIT0gU2hhZG93Qmx1cjo6Tm9TaGFkb3cp
IHsKLSAgICAgICAgc3dpdGNoIChzaGFkb3ctPnR5cGUoKSkgewotICAgICAgICBjYXNlIFNoYWRv
d0JsdXI6OlNvbGlkU2hhZG93OiB7Ci0gICAgICAgICAgICBRUGVuIHByZXZpb3VzUGVuID0gcGFp
bnRlci0+cGVuKCk7Ci0gICAgICAgICAgICBwYWludGVyLT5zZXRQZW4oY29udGV4dC0+c3RhdGUo
KS5zaGFkb3dDb2xvcik7Ci0gICAgICAgICAgICBjb25zdCBRUG9pbnRGIHNoYWRvd09mZnNldChj
b250ZXh0LT5zdGF0ZSgpLnNoYWRvd09mZnNldC53aWR0aCgpLCBjb250ZXh0LT5zdGF0ZSgpLnNo
YWRvd09mZnNldC5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBwYWludGVyLT50cmFuc2xhdGUoc2hh
ZG93T2Zmc2V0KTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSAm
IFRleHRNb2RlRmlsbCkKLSAgICAgICAgICAgICAgICBwYWludGVyLT5kcmF3R2x5cGhSdW4ocG9p
bnQsIHF0R2x5cGhSdW4pOwotICAgICAgICAgICAgZWxzZSBpZiAoY29udGV4dC0+dGV4dERyYXdp
bmdNb2RlKCkgJiBUZXh0TW9kZVN0cm9rZSkKLSAgICAgICAgICAgICAgICBwYWludGVyLT5zdHJv
a2VQYXRoKHRleHRTdHJva2VQYXRoLCBwYWludGVyLT5wZW4oKSk7Ci0gICAgICAgICAgICBwYWlu
dGVyLT50cmFuc2xhdGUoLXNoYWRvd09mZnNldCk7Ci0gICAgICAgICAgICBwYWludGVyLT5zZXRQ
ZW4ocHJldmlvdXNQZW4pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBTaGFkb3dCbHVyOjpCbHVyU2hhZG93OiB7CisgICAgaWYgKGNvbnRleHQtPmhhc1NoYWRv
dygpKSB7CisgICAgICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSA9IGNvbnRl
eHQtPnN0YXRlKCk7CisgICAgICAgIGlmIChjb250ZXh0LT5tdXN0VXNlU2hhZG93Qmx1cigpKSB7
CisgICAgICAgICAgICBTaGFkb3dCbHVyIHNoYWRvdyhGbG9hdFNpemUoc3RhdGUuc2hhZG93Qmx1
ciwgc3RhdGUuc2hhZG93Qmx1ciksIHN0YXRlLnNoYWRvd09mZnNldCwgc3RhdGUuc2hhZG93Q29s
b3IsIHN0YXRlLnNoYWRvd0NvbG9yU3BhY2UsIHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KTsKICAgICAgICAgICAgIGNvbnN0IGludCB3aWR0aCA9IHF0R2x5cGhSdW4uYm91bmRpbmdSZWN0
KCkud2lkdGgoKTsKICAgICAgICAgICAgIGNvbnN0IFFSYXdGb250JiBmb250ID0gcXRHbHlwaFJ1
bi5yYXdGb250KCk7CiAgICAgICAgICAgICBjb25zdCBpbnQgaGVpZ2h0ID0gZm9udC5hc2NlbnQo
KSArIGZvbnQuZGVzY2VudCgpOwogICAgICAgICAgICAgY29uc3QgUVJlY3RGIGJvdW5kaW5nUmVj
dChwb2ludC54KCksIHBvaW50LnkoKSAtIGZvbnQuYXNjZW50KCkgKyBiYXNlTGluZU9mZnNldCwg
d2lkdGgsIGhlaWdodCk7Ci0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRl
eHQgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIoY29udGV4dCwgYm91bmRpbmdSZWN0KTsKKyAg
ICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy5iZWdpblNo
YWRvd0xheWVyKGNvbnRleHQsIGJvdW5kaW5nUmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93
Q29udGV4dCkgewogICAgICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hh
ZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgICAgICAgICAgICAgc2hhZG93UGFp
bnRlci0+c2V0UGVuKHNoYWRvd0NvbnRleHQtPnN0YXRlKCkuc2hhZG93Q29sb3IpOworICAgICAg
ICAgICAgICAgIHNoYWRvd1BhaW50ZXItPnNldFBlbihzdGF0ZS5zaGFkb3dDb2xvcik7CiAgICAg
ICAgICAgICAgICAgaWYgKHNoYWRvd0NvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1v
ZGVGaWxsKQogICAgICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5kcmF3R2x5cGhSdW4o
cG9pbnQsIHF0R2x5cGhSdW4pOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNoYWRvd0NvbnRl
eHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVTdHJva2UpCiAgICAgICAgICAgICAgICAg
ICAgIHNoYWRvd1BhaW50ZXItPnN0cm9rZVBhdGgodGV4dFN0cm9rZVBhdGgsIHNoYWRvd1BhaW50
ZXItPnBlbigpKTsKLSAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKGNvbnRl
eHQpOworICAgICAgICAgICAgICAgIHNoYWRvdy5lbmRTaGFkb3dMYXllcihjb250ZXh0KTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
U2hhZG93Qmx1cjo6Tm9TaGFkb3c6Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgUVBlbiBwcmV2aW91c1BlbiA9IHBhaW50ZXItPnBlbigpOworICAgICAgICAg
ICAgcGFpbnRlci0+c2V0UGVuKHN0YXRlLnNoYWRvd0NvbG9yKTsKKyAgICAgICAgICAgIGNvbnN0
IFFQb2ludEYgc2hhZG93T2Zmc2V0KHN0YXRlLnNoYWRvd09mZnNldC53aWR0aCgpLCBzdGF0ZS5z
aGFkb3dPZmZzZXQuaGVpZ2h0KCkpOworICAgICAgICAgICAgcGFpbnRlci0+dHJhbnNsYXRlKHNo
YWRvd09mZnNldCk7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkg
JiBUZXh0TW9kZUZpbGwpCisgICAgICAgICAgICAgICAgcGFpbnRlci0+ZHJhd0dseXBoUnVuKHBv
aW50LCBxdEdseXBoUnVuKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRleHQtPnRleHREcmF3
aW5nTW9kZSgpICYgVGV4dE1vZGVTdHJva2UpCisgICAgICAgICAgICAgICAgcGFpbnRlci0+c3Ry
b2tlUGF0aCh0ZXh0U3Ryb2tlUGF0aCwgcGFpbnRlci0+cGVuKCkpOworICAgICAgICAgICAgcGFp
bnRlci0+dHJhbnNsYXRlKC1zaGFkb3dPZmZzZXQpOworICAgICAgICAgICAgcGFpbnRlci0+c2V0
UGVuKHByZXZpb3VzUGVuKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCmlu
ZGV4IDlhNzE0NTUyZGM4ZjAwNTZiMjZmMzk3OTlkNWNlZGJhZTViMzkwZWQuLjcyOGJhOGJhOTJl
MDE0M2Q3NzMzM2JhYzAzMTllYjY2YjUxMWFlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKQEAgLTI1
MCw4ICsyNTAsNiBAQCBwdWJsaWM6CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eTsKICAgICBib29sIGluaXRpYWxTbW9vdGhQaXhtYXBUcmFuc2Zvcm1I
aW50OwogCi0gICAgU2hhZG93Qmx1ciogc2hhZG93OwotCiAgICAgUVJlY3RGIGNsaXBCb3VuZGlu
Z1JlY3QoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHAoKS0+Y2xpcEJvdW5kaW5nUmVj
dCgpOwpAQCAtMjcwLDcgKzI2OCw2IEBAIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFFQYWludGVyKiBwLCBjb25zCiAgICAgLCBz
b2xpZENvbG9yKGluaXRpYWxTb2xpZENvbG9yKQogICAgICwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eShJbnRlcnBvbGF0aW9uRGVmYXVsdCkKICAgICAsIGluaXRpYWxTbW9vdGhQaXhtYXBUcmFu
c2Zvcm1IaW50KGZhbHNlKQotICAgICwgc2hhZG93KG5ldyBTaGFkb3dCbHVyKCkpCiAgICAgLCBw
YWludGVyKHApCiAgICAgLCBwbGF0Zm9ybUNvbnRleHRJc093bmVkKGZhbHNlKQogewpAQCAtMjg5
LDggKzI4Niw2IEBAIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6R3JhcGhpY3NDb250
ZXh0UGxhdGZvcm1Qcml2YXRlKFFQYWludGVyKiBwLCBjb25zCiAKIEdyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZTo6fkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSgpCiB7Ci0gICAg
ZGVsZXRlIHNoYWRvdzsKLQogICAgIGlmICghcGxhdGZvcm1Db250ZXh0SXNPd25lZCkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0zNTUsOCArMzUwLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJl
c3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICAgICAgICAgIGVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5
TGF5ZXIoKTsKIAogICAgIG1fZGF0YS0+cCgpLT5yZXN0b3JlKCk7Ci0KLSAgICBtX2RhdGEtPnNo
YWRvdy0+c2V0U2hhZG93VmFsdWVzKEZsb2F0U2l6ZShtX3N0YXRlLnNoYWRvd0JsdXIsIG1fc3Rh
dGUuc2hhZG93Qmx1ciksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0NvbG9y
LCBtX3N0YXRlLnNoYWRvd0NvbG9yU3BhY2UsIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMpOwogfQogCiAvLyBEcmF3cyBhIGZpbGxlZCByZWN0YW5nbGUgd2l0aCBhIHN0cm9rZWQgYm9y
ZGVyLgpAQCAtNjI4LDEwICs2MjEsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRo
KGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgcGxhdGZvcm1QYXRoLnNldEZpbGxSdWxlKHRvUXRGaWxs
UnVsZShmaWxsUnVsZSgpKSk7CiAKICAgICBpZiAoaGFzU2hhZG93KCkpIHsKLSAgICAgICAgU2hh
ZG93Qmx1ciogc2hhZG93ID0gc2hhZG93Qmx1cigpOwotICAgICAgICBpZiAoc2hhZG93LT5tdXN0
VXNlU2hhZG93Qmx1cih0aGlzKSB8fCBtX3N0YXRlLmZpbGxQYXR0ZXJuIHx8IG1fc3RhdGUuZmls
bEdyYWRpZW50KQorICAgICAgICBpZiAobXVzdFVzZVNoYWRvd0JsdXIoKSB8fCBtX3N0YXRlLmZp
bGxQYXR0ZXJuIHx8IG1fc3RhdGUuZmlsbEdyYWRpZW50KQogICAgICAgICB7Ci0gICAgICAgICAg
ICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5
ZXIodGhpcywgcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKSk7CisgICAgICAgICAgICBT
aGFkb3dCbHVyIHNoYWRvdyhGbG9hdFNpemUobV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNo
YWRvd0JsdXIpLCBtX3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dDb2xvciwgbV9z
dGF0ZS5zaGFkb3dDb2xvclNwYWNlLCBtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsK
KyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy5iZWdp
blNoYWRvd0xheWVyKHRoaXMsIHBsYXRmb3JtUGF0aC5jb250cm9sUG9pbnRSZWN0KCkpOwogICAg
ICAgICAgICAgaWYgKHNoYWRvd0NvbnRleHQpIHsKICAgICAgICAgICAgICAgICBRUGFpbnRlciog
c2hhZG93UGFpbnRlciA9IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgICAg
ICAgICAgICAgIGlmIChtX3N0YXRlLmZpbGxQYXR0ZXJuKSB7CkBAIC02NDMsNyArNjM2LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+Zmls
bFBhdGgocGxhdGZvcm1QYXRoLCBwLT5icnVzaCgpKTsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcih0aGlzKTsKKyAgICAgICAgICAgICAg
ICBzaGFkb3cuZW5kU2hhZG93TGF5ZXIodGhpcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBRUG9pbnRGIG9mZnNldChtX3N0YXRlLnNoYWRvd09mZnNldC53
aWR0aCgpLCBtX3N0YXRlLnNoYWRvd09mZnNldC5oZWlnaHQoKSk7CkBAIC02ODcsMTIgKzY4MCwx
MiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQog
ICAgIHBhdGhTdHJva2VyLnNldFdpZHRoKHBlbi53aWR0aEYoKSk7CiAKICAgICBpZiAoaGFzU2hh
ZG93KCkpIHsKLSAgICAgICAgU2hhZG93Qmx1ciogc2hhZG93ID0gc2hhZG93Qmx1cigpOwotICAg
ICAgICBpZiAoc2hhZG93LT5tdXN0VXNlU2hhZG93Qmx1cih0aGlzKSB8fCBtX3N0YXRlLnN0cm9r
ZVBhdHRlcm4gfHwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VT
aGFkb3dCbHVyKCkgfHwgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuIHx8IG1fc3RhdGUuc3Ryb2tlR3Jh
ZGllbnQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIFNoYWRvd0JsdXIgc2hhZG93KEZsb2F0U2l6
ZShtX3N0YXRlLnNoYWRvd0JsdXIsIG1fc3RhdGUuc2hhZG93Qmx1ciksIG1fc3RhdGUuc2hhZG93
T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRvd0NvbG9yU3BhY2UsIG1f
c3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwogICAgICAgICAgICAgRmxvYXRSZWN0IGJv
dW5kaW5nUmVjdCA9IHBsYXRmb3JtUGF0aC5jb250cm9sUG9pbnRSZWN0KCk7CiAgICAgICAgICAg
ICBib3VuZGluZ1JlY3QuaW5mbGF0ZShwZW4ubWl0ZXJMaW1pdCgpICsgcGVuLndpZHRoRigpKTsK
LSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+YmVn
aW5TaGFkb3dMYXllcih0aGlzLCBib3VuZGluZ1JlY3QpOworICAgICAgICAgICAgR3JhcGhpY3ND
b250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LmJlZ2luU2hhZG93TGF5ZXIodGhpcywgYm91
bmRpbmdSZWN0KTsKICAgICAgICAgICAgIGlmIChzaGFkb3dDb250ZXh0KSB7CiAgICAgICAgICAg
ICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKTsKICAgICAgICAgICAgICAgICBpZiAobV9zdGF0ZS5zdHJva2VHcmFkaWVudCkgewpA
QCAtNzAxLDcgKzY5NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0
IFBhdGgmIHBhdGgpCiAgICAgICAgICAgICAgICAgICAgIGZpbGxQYXRoU3Ryb2tlKHNoYWRvd1Bh
aW50ZXIsIHBhdGhTdHJva2VyLCBwbGF0Zm9ybVBhdGgsIGJydXNoKTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgZmlsbFBhdGhTdHJva2Uoc2hhZG93UGFpbnRl
ciwgcGF0aFN0cm9rZXIsIHBsYXRmb3JtUGF0aCwgcGVuLmJydXNoKCkpOwotICAgICAgICAgICAg
ICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIodGhpcyk7CisgICAgICAgICAgICAgICAgc2hhZG93
LmVuZFNoYWRvd0xheWVyKHRoaXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgUVBvaW50RiBvZmZzZXQobV9zdGF0ZS5zaGFkb3dPZmZzZXQud2lkdGgoKSwg
bV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOwpAQCAtNzc5LDQwICs3NzIsNDYgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIAogICAg
IFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CiAgICAgUVJlY3RGIG5vcm1hbGl6ZWRSZWN0ID0g
cmVjdC5ub3JtYWxpemVkKCk7Ci0gICAgU2hhZG93Qmx1ciogc2hhZG93ID0gc2hhZG93Qmx1cigp
OwogCiAgICAgaWYgKG1fc3RhdGUuZmlsbFBhdHRlcm4pIHsKLSAgICAgICAgR3JhcGhpY3NDb250
ZXh0KiBzaGFkb3dDb250ZXh0ID0gaGFzU2hhZG93KCkgPyBzaGFkb3ctPmJlZ2luU2hhZG93TGF5
ZXIodGhpcywgbm9ybWFsaXplZFJlY3QpIDogMDsKLSAgICAgICAgaWYgKHNoYWRvd0NvbnRleHQp
IHsKLSAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93Q29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgICAgICAgICBkcmF3UmVwZWF0UGF0dGVybihzaGFkb3dQ
YWludGVyLCBtX3N0YXRlLmZpbGxQYXR0ZXJuLCBub3JtYWxpemVkUmVjdCk7Ci0gICAgICAgICAg
ICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHRoaXMpOworICAgICAgICBpZiAoaGFzU2hhZG93KCkp
IHsKKyAgICAgICAgICAgIFNoYWRvd0JsdXIgc2hhZG93KEZsb2F0U2l6ZShtX3N0YXRlLnNoYWRv
d0JsdXIsIG1fc3RhdGUuc2hhZG93Qmx1ciksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRl
LnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRvd0NvbG9yU3BhY2UsIG1fc3RhdGUuc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250
ZXh0ID0gc2hhZG93LmJlZ2luU2hhZG93TGF5ZXIodGhpcywgbm9ybWFsaXplZFJlY3QpOworICAg
ICAgICAgICAgaWYgKHNoYWRvd0NvbnRleHQpIHsKKyAgICAgICAgICAgICAgICBRUGFpbnRlciog
c2hhZG93UGFpbnRlciA9IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgICAg
ICAgICAgICAgIGRyYXdSZXBlYXRQYXR0ZXJuKHNoYWRvd1BhaW50ZXIsIG1fc3RhdGUuZmlsbFBh
dHRlcm4sIG5vcm1hbGl6ZWRSZWN0KTsKKyAgICAgICAgICAgICAgICBzaGFkb3cuZW5kU2hhZG93
TGF5ZXIodGhpcyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZHJhd1JlcGVh
dFBhdHRlcm4ocCwgbV9zdGF0ZS5maWxsUGF0dGVybiwgbm9ybWFsaXplZFJlY3QpOwogICAgIH0g
ZWxzZSBpZiAobV9zdGF0ZS5maWxsR3JhZGllbnQpIHsKICAgICAgICAgUUJydXNoIGJydXNoKCpt
X3N0YXRlLmZpbGxHcmFkaWVudC0+cGxhdGZvcm1HcmFkaWVudCgpKTsKICAgICAgICAgYnJ1c2gu
c2V0VHJhbnNmb3JtKG1fc3RhdGUuZmlsbEdyYWRpZW50LT5ncmFkaWVudFNwYWNlVHJhbnNmb3Jt
KCkpOwotICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBoYXNTaGFkb3co
KSA/IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcih0aGlzLCBub3JtYWxpemVkUmVjdCkgOiAwOwot
ICAgICAgICBpZiAoc2hhZG93Q29udGV4dCkgewotICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRv
d1BhaW50ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICAgICAgICAg
IHNoYWRvd1BhaW50ZXItPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBicnVzaCk7Ci0gICAgICAg
ICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHRoaXMpOworICAgICAgICBpZiAoaGFzU2hhZG93
KCkpIHsKKyAgICAgICAgICAgIFNoYWRvd0JsdXIgc2hhZG93KEZsb2F0U2l6ZShtX3N0YXRlLnNo
YWRvd0JsdXIsIG1fc3RhdGUuc2hhZG93Qmx1ciksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0
YXRlLnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRvd0NvbG9yU3BhY2UsIG1fc3RhdGUuc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dD
b250ZXh0ID0gc2hhZG93LmJlZ2luU2hhZG93TGF5ZXIodGhpcywgbm9ybWFsaXplZFJlY3QpOwor
ICAgICAgICAgICAgaWYgKHNoYWRvd0NvbnRleHQpIHsKKyAgICAgICAgICAgICAgICBRUGFpbnRl
ciogc2hhZG93UGFpbnRlciA9IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAg
ICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBicnVz
aCk7CisgICAgICAgICAgICAgICAgc2hhZG93LmVuZFNoYWRvd0xheWVyKHRoaXMpOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHAtPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBi
cnVzaCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGhhc1NoYWRvdygpKSB7Ci0gICAgICAg
ICAgICBpZiAoc2hhZG93LT5tdXN0VXNlU2hhZG93Qmx1cih0aGlzKSkgeworICAgICAgICAgICAg
aWYgKG11c3RVc2VTaGFkb3dCbHVyKCkpIHsKKyAgICAgICAgICAgICAgICBTaGFkb3dCbHVyIHNo
YWRvdyhGbG9hdFNpemUobV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNoYWRvd0JsdXIpLCBt
X3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dDb2xvciwgbV9zdGF0ZS5zaGFkb3dD
b2xvclNwYWNlLCBtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKICAgICAgICAgICAg
ICAgICAvLyBkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcgZG9lcyBub3Qgd29yayB3aXRoIHJvdGF0
aW9ucywgYW5kIHRoZSBmYWxsYmFjayBvZgogICAgICAgICAgICAgICAgIC8vIGRyYXdpbmcgdGhv
dWdoIGNsaXBUb0ltYWdlQnVmZmVyKCkgcHJvZHVjZXMgc2NhbGluZyBhcnRpZmFjdHMgZm9yIHVz
LgogICAgICAgICAgICAgICAgIGlmICghZ2V0Q1RNKCkucHJlc2VydmVzQXhpc0FsaWdubWVudCgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9
IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcih0aGlzLCBub3JtYWxpemVkUmVjdCk7CisgICAgICAg
ICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy5iZWdp
blNoYWRvd0xheWVyKHRoaXMsIG5vcm1hbGl6ZWRSZWN0KTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKHNoYWRvd0NvbnRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFFQYWludGVyKiBz
aGFkb3dQYWludGVyID0gc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwg
cC0+YnJ1c2goKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xh
eWVyKHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93LmVuZFNoYWRvd0xheWVy
KHRoaXMpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIHNoYWRvdy0+ZHJhd1JlY3RTaGFkb3codGhpcywgcmVjdCwgUm91
bmRlZFJlY3Q6OlJhZGlpKCkpOworICAgICAgICAgICAgICAgICAgICBzaGFkb3cuZHJhd1JlY3RT
aGFkb3codGhpcywgcmVjdCwgUm91bmRlZFJlY3Q6OlJhZGlpKCkpOwogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAvLyBTb2xpZCByZWN0YW5nbGUgZmlsbCB3aXRoIG5vIGJs
dXIgc2hhZG93IG9yIHRyYW5zZm9ybWF0aW9ucyBhcHBsaWVkIGNhbiBiZSBkb25lCiAgICAgICAg
ICAgICAgICAgLy8gZmFzdGVyIHdpdGhvdXQgdXNpbmcgdGhlIHNoYWRvdyBsYXllciBhdCBhbGwu
CkBAIC04MzUsOSArODM0LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclMKICAgICBRUmVjdEYg
cGxhdGZvcm1SZWN0KHJlY3QpOwogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CiAgICAg
aWYgKGhhc1NoYWRvdygpKSB7Ci0gICAgICAgIFNoYWRvd0JsdXIqIHNoYWRvdyA9IHNoYWRvd0Js
dXIoKTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZVNoYWRvd0JsdXIodGhpcykpIHsKLSAg
ICAgICAgICAgIHNoYWRvdy0+ZHJhd1JlY3RTaGFkb3codGhpcywgcGxhdGZvcm1SZWN0LCBSb3Vu
ZGVkUmVjdDo6UmFkaWkoKSk7CisgICAgICAgIGlmIChtdXN0VXNlU2hhZG93Qmx1cigpKSB7Cisg
ICAgICAgICAgICBTaGFkb3dCbHVyIHNoYWRvdyhGbG9hdFNpemUobV9zdGF0ZS5zaGFkb3dCbHVy
LCBtX3N0YXRlLnNoYWRvd0JsdXIpLCBtX3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFk
b3dDb2xvciwgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlLCBtX3N0YXRlLnNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKTsKKyAgICAgICAgICAgIHNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCBwbGF0
Zm9ybVJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIFFDb2xvciBzaGFkb3dDb2xvciA9IG1fc3RhdGUuc2hhZG93Q29sb3I7CiAgICAgICAg
ICAgICBzaGFkb3dDb2xvci5zZXRBbHBoYUYoc2hhZG93Q29sb3IuYWxwaGFGKCkgKiBwLT5icnVz
aCgpLmNvbG9yKCkuYWxwaGFGKCkpOwpAQCAtODU2LDkgKzg1NSw5IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6
ZSYgdG9wTGVmCiAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyZWN0LCB0b3BMZWZ0LCB0b3BSaWdo
dCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5w
KCk7CiAgICAgaWYgKGhhc1NoYWRvdygpKSB7Ci0gICAgICAgIFNoYWRvd0JsdXIqIHNoYWRvdyA9
IHNoYWRvd0JsdXIoKTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZVNoYWRvd0JsdXIodGhp
cykpIHsKLSAgICAgICAgICAgIHNoYWRvdy0+ZHJhd1JlY3RTaGFkb3codGhpcywgcmVjdCwgUm91
bmRlZFJlY3Q6OlJhZGlpKHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdo
dCkpOworICAgICAgICBpZiAobXVzdFVzZVNoYWRvd0JsdXIoKSkgeworICAgICAgICAgICAgU2hh
ZG93Qmx1ciBzaGFkb3coRmxvYXRTaXplKG1fc3RhdGUuc2hhZG93Qmx1ciwgbV9zdGF0ZS5zaGFk
b3dCbHVyKSwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Q29sb3IsIG1fc3Rh
dGUuc2hhZG93Q29sb3JTcGFjZSwgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Cisg
ICAgICAgICAgICBzaGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgcmVjdCwgUm91bmRlZFJlY3Q6
OlJhZGlpKHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCkpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgY29uc3QgUVBvaW50RiBzaGFkb3dPZmZzZXQobV9z
dGF0ZS5zaGFkb3dPZmZzZXQud2lkdGgoKSwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkp
OwogICAgICAgICAgICAgcC0+dHJhbnNsYXRlKHNoYWRvd09mZnNldCk7CkBAIC04ODYsMTAgKzg4
NSwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29u
c3QgSW50UmVjdCYgcmVjdCwgY29uc3QgUm91bmRlZAogCiAgICAgUVBhaW50ZXIqIHAgPSBtX2Rh
dGEtPnAoKTsKICAgICBpZiAoaGFzU2hhZG93KCkpIHsKLSAgICAgICAgU2hhZG93Qmx1ciogc2hh
ZG93ID0gc2hhZG93Qmx1cigpOwotICAgICAgICBpZiAoc2hhZG93LT5tdXN0VXNlU2hhZG93Qmx1
cih0aGlzKSkKLSAgICAgICAgICAgIHNoYWRvdy0+ZHJhd0luc2V0U2hhZG93KHRoaXMsIHJlY3Qs
IHJvdW5kZWRIb2xlUmVjdC5yZWN0KCksIHJvdW5kZWRIb2xlUmVjdC5yYWRpaSgpKTsKLSAgICAg
ICAgZWxzZSB7CisgICAgICAgIGlmIChtdXN0VXNlU2hhZG93Qmx1cigpKSB7CisgICAgICAgICAg
ICBTaGFkb3dCbHVyIHNoYWRvdyhGbG9hdFNpemUobV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRl
LnNoYWRvd0JsdXIpLCBtX3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dDb2xvciwg
bV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlLCBtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KTsKKyAgICAgICAgICAgIHNoYWRvdy5kcmF3SW5zZXRTaGFkb3codGhpcywgcmVjdCwgcm91bmRl
ZEhvbGVSZWN0LnJlY3QoKSwgcm91bmRlZEhvbGVSZWN0LnJhZGlpKCkpOworICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgY29uc3QgUVBvaW50RiBzaGFkb3dPZmZzZXQobV9zdGF0ZS5zaGFk
b3dPZmZzZXQud2lkdGgoKSwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOwogICAgICAg
ICAgICAgcC0+dHJhbnNsYXRlKHNoYWRvd09mZnNldCk7CiAgICAgICAgICAgICBwLT5maWxsUGF0
aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihtX3N0YXRlLnNoYWRvd0NvbG9yKSk7CkBAIC05MDUsMTEg
KzkwNCw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0Ojppc0luVHJhbnNwYXJlbmN5TGF5ZXIoKSBj
b25zdAogICAgIHJldHVybiBtX2RhdGEtPmxheWVyQ291bnQ7CiB9CiAKLVNoYWRvd0JsdXIqIEdy
YXBoaWNzQ29udGV4dDo6c2hhZG93Qmx1cigpCi17Ci0gICAgcmV0dXJuIG1fZGF0YS0+c2hhZG93
OwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBJbnRSZWN0JiByZWN0KQog
ewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkBAIC0xMTcwLDE5ICsxMTY0LDE1IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIHNp
emUsIGZsb2F0IGJsdXIsIGNvbnN0CiB7CiAgICAgLy8gUXQgZG9lc24ndCBzdXBwb3J0IHNoYWRv
d3MgbmF0aXZlbHksIHRoZXkgYXJlIGRyYXduIG1hbnVhbGx5IGluIHRoZSBkcmF3KgogICAgIC8v
IGZ1bmN0aW9ucwotCiAgICAgaWYgKG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsK
ICAgICAgICAgLy8gTWVhbmluZyB0aGF0IHRoaXMgZ3JhcGhpY3MgY29udGV4dCBpcyBhc3NvY2lh
dGVkIHdpdGggYSBDYW52YXNSZW5kZXJpbmdDb250ZXh0CiAgICAgICAgIC8vIFdlIGZsaXAgdGhl
IGhlaWdodCBzaW5jZSBDRyBhbmQgSFRNTDUgQ2FudmFzIGhhdmUgb3Bwb3NpdGUgWSBheGlzCiAg
ICAgICAgIG1fc3RhdGUuc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHNpemUud2lkdGgoKSwgLXNp
emUuaGVpZ2h0KCkpOwogICAgIH0KLQotICAgIG1fZGF0YS0+c2hhZG93LT5zZXRTaGFkb3dWYWx1
ZXMoRmxvYXRTaXplKG1fc3RhdGUuc2hhZG93Qmx1ciwgbV9zdGF0ZS5zaGFkb3dCbHVyKSwgbV9z
dGF0ZS5zaGFkb3dPZmZzZXQsIGNvbG9yLCBjb2xvclNwYWNlLCBtX3N0YXRlLnNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyUGxhdGZvcm1T
aGFkb3coKQogewotICAgIG1fZGF0YS0+c2hhZG93LT5jbGVhcigpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6cHVzaFRyYW5zcGFyZW5jeUxheWVySW50ZXJuYWwoY29uc3QgUVJlY3QgJnJl
Y3QsIHFyZWFsIG9wYWNpdHksIFFQaXhtYXAmIGFscGhhTWFzaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKaW5kZXggZWI5MjM1Y2NhNGJlZDIz
MDQxNjc1MmVlMjc5YWNlNDlmMzQ3YTg2Yi4uY2I4MDdkM2E5OTllNWU1OWEzMWM5MDhhZjRhY2Y3
M2RlMmY2ZjY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvSW1hZ2VRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
SW1hZ2VRdC5jcHAKQEAgLTI1OSwxMiArMjU5LDEzIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwKICAgICBjdHh0LT5z
ZXRDb21wb3NpdGVPcGVyYXRpb24oIWltYWdlLT5oYXNBbHBoYSgpICYmIG9wID09IENvbXBvc2l0
ZVNvdXJjZU92ZXIgPyBDb21wb3NpdGVDb3B5IDogb3ApOwogCiAgICAgaWYgKGN0eHQtPmhhc1No
YWRvdygpKSB7Ci0gICAgICAgIFNoYWRvd0JsdXIqIHNoYWRvdyA9IGN0eHQtPnNoYWRvd0JsdXIo
KTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LT5iZWdp
blNoYWRvd0xheWVyKGN0eHQsIG5vcm1hbGl6ZWREc3QpOworICAgICAgICBjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUgPSBjdHh0LT5zdGF0ZSgpOworICAgICAgICBTaGFkb3dCbHVy
IHNoYWRvdyhGbG9hdFNpemUoc3RhdGUuc2hhZG93Qmx1ciwgc3RhdGUuc2hhZG93Qmx1ciksIHN0
YXRlLnNoYWRvd09mZnNldCwgc3RhdGUuc2hhZG93Q29sb3IsIHN0YXRlLnNoYWRvd0NvbG9yU3Bh
Y2UsIHN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LmJlZ2luU2hhZG93TGF5ZXIoY3R4dCwgbm9ybWFs
aXplZERzdCk7CiAgICAgICAgIGlmIChzaGFkb3dDb250ZXh0KSB7CiAgICAgICAgICAgICBRUGFp
bnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwog
ICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZHJhd1BpeG1hcChub3JtYWxpemVkRHN0LCAqaW1h
Z2UsIG5vcm1hbGl6ZWRTcmMpOwotICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihj
dHh0KTsKKyAgICAgICAgICAgIHNoYWRvdy5lbmRTaGFkb3dMYXllcihjdHh0KTsKICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvU3RpbGxJbWFnZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L1N0aWxsSW1hZ2VRdC5jcHAKaW5kZXggMGY0MDdjMWQ3ODNlYTA5ZmEzNjQwNjk2MjEzZTJiODM5
OTVhNDM0Ny4uMzViYTFmNGE5YzM3OWUzZGI3MTcyOTlhNGVjMjJhMGVmNWZkODU3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQu
Y3BwCkBAIC04MCwxMiArODAsMTMgQEAgdm9pZCBTdGlsbEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsCiAgICAgY3R4dC0+c2V0Q29tcG9zaXRl
T3BlcmF0aW9uKG9wKTsKIAogICAgIGlmIChjdHh0LT5oYXNTaGFkb3coKSkgewotICAgICAgICBT
aGFkb3dCbHVyKiBzaGFkb3cgPSBjdHh0LT5zaGFkb3dCbHVyKCk7Ci0gICAgICAgIEdyYXBoaWNz
Q29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihjdHh0LCBu
b3JtYWxpemVkRHN0KTsKKyAgICAgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
ID0gY3R4dC0+c3RhdGUoKTsKKyAgICAgICAgU2hhZG93Qmx1ciBzaGFkb3coRmxvYXRTaXplKHN0
YXRlLnNoYWRvd0JsdXIsIHN0YXRlLnNoYWRvd0JsdXIpLCBzdGF0ZS5zaGFkb3dPZmZzZXQsIHN0
YXRlLnNoYWRvd0NvbG9yLCBzdGF0ZS5zaGFkb3dDb2xvclNwYWNlLCBzdGF0ZS5zaGFkb3dzSWdu
b3JlVHJhbnNmb3Jtcyk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9
IHNoYWRvdy5iZWdpblNoYWRvd0xheWVyKGN0eHQsIG5vcm1hbGl6ZWREc3QpOwogICAgICAgICBp
ZiAoc2hhZG93Q29udGV4dCkgewogICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIg
PSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICAgICAgICAgIHNoYWRvd1Bh
aW50ZXItPmRyYXdQaXhtYXAobm9ybWFsaXplZERzdCwgKm1fcGl4bWFwLCBub3JtYWxpemVkU3Jj
KTsKLSAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoY3R4dCk7CisgICAgICAgICAg
ICBzaGFkb3cuZW5kU2hhZG93TGF5ZXIoY3R4dCk7CiAgICAgICAgIH0KICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196480</attachid>
            <date>2013-04-04 08:42:36 -0700</date>
            <delta_ts>2013-04-04 09:09:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>30462</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3OWQ3MzQzLi40OTI0NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTMtMDMtMjggIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdp
YS5jb20+CisKKyAgICAgICAgW1F0XSBDcmVhdGUgU2hhZG93Qmx1ciBvbiBkZW1hbmQuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM1MDYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGNy
ZWF0ZXMgU2hhZG93Qmx1ciBvYmplY3RzIG9uIGRlbWFuZCBpbnN0ZWFkIG9mIGtlZXBpbmcgYSBz
aW5nbGUgb25lIGFsaXZlIGZvcgorICAgICAgICBlYWNoIEdyYXBoaWNzQ29udGV4dC4gVGhpcyBt
YXRjaGVzIHdoYXQgb3RoZXIgcGxhdGZvcm1zIGRvZXMgYW5kIGZpeGVzIHRoZSBwcm9ibGVtIHdp
dGggCisgICAgICAgIGFuIGFjdGl2ZSBzaGFkb3dibHVyIGJlaW5nIGFmZmVjdGVkIGJ5IGNoYW5n
aW5nIHNoYWRvdyBzZXR0aW5ncyBvbiB0aGUgR3JhcGhpY3NDb250ZXh0LgorCisgICAgICAgIFRo
ZSBtZXRob2QgbXVzdFVzZVNoYWRvd0JsdXIgaXMgbW92ZWQgZnJvbSBTaGFkb3dCbHVyIHRvIEdy
YXBoY2lzQ29udGV4dCwgc28gdGhhdCBpdCBjYW4KKyAgICAgICAgYmUgdXNlZCB0byBkZXRlcm1p
bmUgaWYgYSBTaGFkb3dCbHVyIG9iamVjdCBzaG91bGQgZXZlbiBiZSBnZW5lcmF0ZWQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpoYXNCbHVycmVkU2hhZG93KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6bXVzdFVzZVNoYWRvd0JsdXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoR3JhcGhpY3NDb250
ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OlNoYWRvd0JsdXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1NoYWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0dseXBoc1NoYWRvdyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1F0
R2x5cGhSdW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4
dFF0LmNwcDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OkdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRQ
bGF0Zm9ybVByaXZhdGU6On5HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmNsZWFyUGxhdGZvcm1TaGFkb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0
L0ltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdGlsbEltYWdlOjpkcmF3KToKKwogMjAxMy0wNC0wNCAgWGFiaWVyIFJvZHJpZ3Vl
eiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIFZp
cnR1YWwgbW9kaWZpZXIgZm9yIE1lZGlhUGxheWVyOjpzaW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9u
IG11c3QgZ28KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCmluZGV4IDUwN2I0ZGUuLjI3YmMzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMTg0
LDYgKzE4NCwyOSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KEZsb2F0U2l6ZSYg
b2Zmc2V0LCBmbG9hdCYgYmx1ciwgQ29sb3ImIGNvbG9yLCBDbwogICAgIHJldHVybiBoYXNTaGFk
b3coKTsKIH0KIAorYm9vbCBHcmFwaGljc0NvbnRleHQ6Omhhc0JsdXJyZWRTaGFkb3coKSBjb25z
dAoreworICAgIHJldHVybiBtX3N0YXRlLnNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiBtX3N0YXRl
LnNoYWRvd0NvbG9yLmFscGhhKCkgJiYgbV9zdGF0ZS5zaGFkb3dCbHVyOworfQorCisjaWYgUExB
VEZPUk0oUVQpIHx8IFVTRShDQUlSTykKK2Jvb2wgR3JhcGhpY3NDb250ZXh0OjptdXN0VXNlU2hh
ZG93Qmx1cigpIGNvbnN0Cit7CisgICAgLy8gV2UgY2FuJ3QgYXZvaWQgU2hhZG93Qmx1ciBpZiB0
aGUgc2hhZG93IGhhcyBibHVyLgorICAgIGlmIChoYXNCbHVycmVkU2hhZG93KCkpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIC8vIFdlIGNhbiBhdm9pZCBTaGFkb3dCbHVyIGFuZCBvcHRpbWl6
ZSwgc2luY2Ugd2UncmUgbm90IGRyYXdpbmcgb24gYQorICAgIC8vIGNhbnZhcyBhbmQgYm94IHNo
YWRvd3MgYXJlIGFmZmVjdGVkIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCisgICAgaWYg
KCFtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgLy8gV2UgY2FuIGF2b2lkIFNoYWRvd0JsdXIsIHNpbmNlIHRoZXJlIGFyZSBubyB0cmFu
c2Zvcm1hdGlvbnMgdG8gYXBwbHkgdG8gdGhlIGNhbnZhcy4KKyAgICBpZiAoZ2V0Q1RNKCkuaXNJ
ZGVudGl0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gT3RoZXJ3aXNlLCBubyBj
aGFuY2UgYXZvaWRpbmcgU2hhZG93Qmx1ci4KKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgor
CiBmbG9hdCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVRoaWNrbmVzcygpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBkNmY2ZjViLi4wODYzOTFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaApAQCAtNTMsOSArNTMsNiBAQCBjbGFzcyBTdXJmYWNlT3BlblZHOwogdHlwZWRlZiBj
bGFzcyBXZWJDb3JlOjpTdXJmYWNlT3BlblZHIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0OwogI2Vs
aWYgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSA8UVBhaW50ZXI+Ci1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci1jbGFzcyBTaGFkb3dCbHVyOwotfQogdHlwZWRlZiBRUGFpbnRlciBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dDsKICNlbGlmIFBMQVRGT1JNKFdYKQogY2xhc3Mgd3hHQ0RDOwpAQCAtMzk0LDYgKzM5
MSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgZ2V0U2hhZG93KEZsb2F0
U2l6ZSYsIGZsb2F0JiwgQ29sb3ImLCBDb2xvclNwYWNlJikgY29uc3Q7CiAgICAgICAgIHZvaWQg
Y2xlYXJTaGFkb3coKTsKIAorICAgICAgICBib29sIGhhc0JsdXJyZWRTaGFkb3coKSBjb25zdDsK
KyNpZiBQTEFURk9STShRVCkgfHwgVVNFKENBSVJPKQorICAgICAgICBib29sIG11c3RVc2VTaGFk
b3dCbHVyKCkgY29uc3Q7CisjZW5kaWYKKwogICAgICAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29u
c3QgVmVjdG9yPEludFJlY3Q+JiwgaW50IHdpZHRoLCBpbnQgb2Zmc2V0LCBjb25zdCBDb2xvciYp
OwogICAgICAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYsIGludCB3aWR0aCwgaW50
IG9mZnNldCwgY29uc3QgQ29sb3ImKTsKIApAQCAtNTE3LDEwICs1MTksNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZvaWQgdGFrZU93bmVyc2hpcE9mUGxhdGZvcm1Db250ZXh0KCk7
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFFUKQotICAgICAgICBTaGFkb3dCbHVyKiBzaGFkb3dC
bHVyKCk7Ci0jZW5kaWYKLQogI2lmIFVTRShDQUlSTykKICAgICAgICAgR3JhcGhpY3NDb250ZXh0
KGNhaXJvX3QqKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaGFkb3dCbHVyLmNwcAppbmRleCBlNDhhYTFkLi5iNGU4Mjc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtMTY4LDYgKzE2OCwx
MyBAQCBTY3JhdGNoQnVmZmVyJiBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKQogCiBzdGF0aWMgY29u
c3QgaW50IHRlbXBsYXRlU2lkZUxlbmd0aCA9IDE7CiAKKyNpZiBVU0UoQ0cpCitzdGF0aWMgZmxv
YXQgcmFkaXVzVG9MZWdhY3lSYWRpdXMoZmxvYXQgcmFkaXVzKQoreworICAgIHJldHVybiByYWRp
dXMgPiA4ID8gOCArIDQgKiBzcXJ0KChyYWRpdXMgLSA4KSAvIDIpIDogcmFkaXVzOworfQorI2Vu
ZGlmCisKIFNoYWRvd0JsdXI6OlNoYWRvd0JsdXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNv
bnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSkKICAgICA6IG1fY29sb3IoY29sb3IpCiAgICAgLCBtX2NvbG9yU3BhY2UoY29sb3JT
cGFjZSkKQEAgLTE3OSw2ICsxODYsMjIgQEAgU2hhZG93Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBG
bG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGNvbnN0IEMKICAgICB1
cGRhdGVTaGFkb3dCbHVyVmFsdWVzKCk7CiB9CiAKK1NoYWRvd0JsdXI6OlNoYWRvd0JsdXIoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQorICAgIDogbV9jb2xvcihzdGF0ZS5zaGFk
b3dDb2xvcikKKyAgICAsIG1fY29sb3JTcGFjZShzdGF0ZS5zaGFkb3dDb2xvclNwYWNlKQorICAg
ICwgbV9ibHVyUmFkaXVzKHN0YXRlLnNoYWRvd0JsdXIsIHN0YXRlLnNoYWRvd0JsdXIpCisgICAg
LCBtX29mZnNldChzdGF0ZS5zaGFkb3dPZmZzZXQpCisgICAgLCBtX2xheWVySW1hZ2UoMCkKKyAg
ICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMpCit7CisjaWYgVVNFKENHKQorICAgIGlmIChtX3N0YXRlLnNoYWRvd3NVc2VMZWdhY3lSYWRp
dXMgKQorICAgICAgICBmbG9hdCBzaGFkb3dCbHVyID0gcmFkaXVzVG9MZWdhY3lSYWRpdXMobV9z
dGF0ZS5zaGFkb3dCbHVyKTsKKyAgICAgICAgbV9ibHVyUmFkaXVzID0gRmxvYXRTaXplKHNoYWRv
d0JsdXIsIHNoYWRvd0JsdXIpOworI2VuZGlmCisgICAgdXBkYXRlU2hhZG93Qmx1clZhbHVlcygp
OworfQorCiBTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKCkKICAgICA6IG1fdHlwZShOb1NoYWRvdykK
ICAgICAsIG1fYmx1clJhZGl1cygwLCAwKQpAQCAtODk3LDIyICs5MjAsNCBAQCB2b2lkIFNoYWRv
d0JsdXI6OmVuZFNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKICAgICBTY3Jh
dGNoQnVmZmVyOjpzaGFyZWQoKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi0j
aWYgUExBVEZPUk0oUVQpIHx8IFVTRShDQUlSTykKLWJvb2wgU2hhZG93Qmx1cjo6bXVzdFVzZVNo
YWRvd0JsdXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAotewotICAgIC8vIFdlIGNh
bid0IGF2b2lkIFNoYWRvd0JsdXIsIHNpbmNlIHRoZSBzaGFkb3cgaGFzIGJsdXIuCi0gICAgaWYg
KHR5cGUoKSA9PSBCbHVyU2hhZG93KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAvLyBXZSBj
YW4gYXZvaWQgU2hhZG93Qmx1ciBhbmQgb3B0aW1pemUsIHNpbmNlIHdlJ3JlIG5vdCBkcmF3aW5n
IG9uIGEKLSAgICAvLyBjYW52YXMgYW5kIGJveCBzaGFkb3dzIGFyZSBhZmZlY3RlZCBieSB0aGUg
dHJhbnNmb3JtYXRpb24gbWF0cml4LgotICAgIGlmICghc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIC8vIFdlIGNhbiBhdm9pZCBTaGFkb3dCbHVy
LCBzaW5jZSB0aGVyZSBhcmUgbm8gdHJhbnNmb3JtYXRpb25zIHRvIGFwcGx5IHRvIHRoZSBjYW52
YXMuCi0gICAgaWYgKGNvbnRleHQtPmdldENUTSgpLmlzSWRlbnRpdHkoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIC8vIE90aGVyd2lzZSwgbm8gY2hhbmNlIGF2b2lkaW5nIFNoYWRvd0Js
dXIuCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCmluZGV4
IGU4OGE2NjYuLjljMGQzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaGFkb3dCbHVyLmgKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBHcmFw
aGljc0NvbnRleHRTdGF0ZTsKIGNsYXNzIEltYWdlQnVmZmVyOwogCiBjbGFzcyBTaGFkb3dCbHVy
IHsKQEAgLTUxLDYgKzUyLDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBTaGFkb3dCbHVyKGNv
bnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29s
b3ImLCBDb2xvclNwYWNlKTsKKyAgICBTaGFkb3dCbHVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJik7CiAgICAgU2hhZG93Qmx1cigpOwogCiAgICAgdm9pZCBzZXRTaGFkb3dWYWx1ZXMoY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiAsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFj
ZSwgYm9vbCBpZ25vcmVUcmFuc2Zvcm1zID0gZmFsc2UpOwpAQCAtNzAsMTAgKzcyLDYgQEAgcHVi
bGljOgogCiAgICAgU2hhZG93VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAK
LSNpZiBQTEFURk9STShRVCkgfHwgVVNFKENBSVJPKQotICAgIGJvb2wgbXVzdFVzZVNoYWRvd0Js
dXIoR3JhcGhpY3NDb250ZXh0KikgY29uc3Q7Ci0jZW5kaWYKLQogcHJpdmF0ZToKICAgICB2b2lk
IHVwZGF0ZVNoYWRvd0JsdXJWYWx1ZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKaW5kZXggOWEwZmQzMC4uOTEyM2Nj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm8uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFk
b3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAg
ICAgaWYgKCEoZ3JhcGhpY3NDb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlRmls
bCkgfHwgc2hhZG93LnR5cGUoKSA9PSBTaGFkb3dCbHVyOjpOb1NoYWRvdykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKCFzaGFkb3cubXVzdFVzZVNoYWRvd0JsdXIoZ3JhcGhpY3NDb250ZXh0
KSkgeworICAgIGlmICghZ3JhcGhpY3NDb250ZXh0LT5tdXN0VXNlU2hhZG93Qmx1cigpKSB7CiAg
ICAgICAgIC8vIE9wdGltaXplIG5vbi1ibHVycnkgc2hhZG93cywgYnkganVzdCBkcmF3aW5nIHRl
eHQgd2l0aG91dCB0aGUgU2hhZG93Qmx1ci4KICAgICAgICAgY2Fpcm9fdCogY29udGV4dCA9IGdy
YXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgICAgIGNhaXJvX3Nh
dmUoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggOWUxODg5MS4uNmNlOWZkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcApAQCAtNzYyLDE2ICs3NjIsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgIENHQ29udGV4dFN0cm9rZVBhdGgo
Y29udGV4dCk7CiB9CiAKLXN0YXRpYyBmbG9hdCByYWRpdXNUb0xlZ2FjeVJhZGl1cyhmbG9hdCBy
YWRpdXMpCi17Ci0gICAgcmV0dXJuIHJhZGl1cyA+IDggPyA4ICsgNCAqIHNxcnQoKHJhZGl1cyAt
IDgpIC8gMikgOiByYWRpdXM7Ci19Ci0KLXN0YXRpYyBib29sIGhhc0JsdXJyZWRTaGFkb3coY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQotewotICAgIHJldHVybiBzdGF0ZS5zaGFk
b3dDb2xvci5pc1ZhbGlkKCkgJiYgc3RhdGUuc2hhZG93Q29sb3IuYWxwaGEoKSAmJiBzdGF0ZS5z
aGFkb3dCbHVyOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkBAIC04MDgsMTQg
Kzc5OCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0KQogICAgIGlmIChtX3N0YXRlLmZpbGxQYXR0ZXJuKQogICAgICAgICBhcHBseUZpbGxQ
YXR0ZXJuKCk7CiAKLSAgICBib29sIGRyYXdPd25TaGFkb3cgPSAhaXNBY2NlbGVyYXRlZENvbnRl
eHQoKSAmJiBoYXNCbHVycmVkU2hhZG93KG1fc3RhdGUpICYmICFtX3N0YXRlLnNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zOyAvLyBEb24ndCB1c2UgU2hhZG93Qmx1ciBmb3IgY2FudmFzIHlldC4KKyAg
ICBib29sIGRyYXdPd25TaGFkb3cgPSAhaXNBY2NlbGVyYXRlZENvbnRleHQoKSAmJiBoYXNCbHVy
cmVkU2hhZG93KCkgJiYgIW1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IC8vIERvbid0
IHVzZSBTaGFkb3dCbHVyIGZvciBjYW52YXMgeWV0LgogICAgIGlmIChkcmF3T3duU2hhZG93KSB7
Ci0gICAgICAgIGZsb2F0IHNoYWRvd0JsdXIgPSBtX3N0YXRlLnNoYWRvd3NVc2VMZWdhY3lSYWRp
dXMgPyByYWRpdXNUb0xlZ2FjeVJhZGl1cyhtX3N0YXRlLnNoYWRvd0JsdXIpIDogbV9zdGF0ZS5z
aGFkb3dCbHVyOwogICAgICAgICAvLyBUdXJuIG9mZiBDRyBzaGFkb3dzLgogICAgICAgICBDR0Nv
bnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRo
Q29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCi0gICAgICAgIFNo
YWRvd0JsdXIgY29udGV4dFNoYWRvdyhGbG9hdFNpemUoc2hhZG93Qmx1ciwgc2hhZG93Qmx1ciks
IG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRv
d0NvbG9yU3BhY2UpOworICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7
CiAgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgcmVjdCwgUm91bmRl
ZFJlY3Q6OlJhZGlpKCkpOwogICAgIH0KIApAQCAtODM3LDE0ICs4MjYsMTMgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclMKICAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9yIHx8IG9sZENvbG9y
U3BhY2UgIT0gY29sb3JTcGFjZSkKICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgY29s
b3IsIGNvbG9yU3BhY2UpOwogCi0gICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkgJiYgaGFzQmx1cnJlZFNoYWRvdyhtX3N0YXRlKSAmJiAhbV9zdGF0ZS5zaGFk
b3dzSWdub3JlVHJhbnNmb3JtczsgLy8gRG9uJ3QgdXNlIFNoYWRvd0JsdXIgZm9yIGNhbnZhcyB5
ZXQuCisgICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgJiYg
aGFzQmx1cnJlZFNoYWRvdygpICYmICFtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyAv
LyBEb24ndCB1c2UgU2hhZG93Qmx1ciBmb3IgY2FudmFzIHlldC4KICAgICBpZiAoZHJhd093blNo
YWRvdykgewotICAgICAgICBmbG9hdCBzaGFkb3dCbHVyID0gbV9zdGF0ZS5zaGFkb3dzVXNlTGVn
YWN5UmFkaXVzID8gcmFkaXVzVG9MZWdhY3lSYWRpdXMobV9zdGF0ZS5zaGFkb3dCbHVyKSA6IG1f
c3RhdGUuc2hhZG93Qmx1cjsKICAgICAgICAgLy8gVHVybiBvZmYgQ0cgc2hhZG93cy4KICAgICAg
ICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKICAgICAgICAgQ0dDb250ZXh0U2V0U2hh
ZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAotICAg
ICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coRmxvYXRTaXplKHNoYWRvd0JsdXIsIHNoYWRv
d0JsdXIpLCBtX3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dDb2xvciwgbV9zdGF0
ZS5zaGFkb3dDb2xvclNwYWNlKTsKKyAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1f
c3RhdGUpOwogICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3Qs
IFJvdW5kZWRSZWN0OjpSYWRpaSgpKTsKICAgICB9CiAKQEAgLTg2OSwxNSArODU3LDEzIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwg
Y29uc3QgSW50U2l6ZSYgdG9wTGVmCiAgICAgaWYgKG9sZEZpbGxDb2xvciAhPSBjb2xvciB8fCBv
bGRDb2xvclNwYWNlICE9IGNvbG9yU3BhY2UpCiAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRl
eHQsIGNvbG9yLCBjb2xvclNwYWNlKTsKIAotICAgIGJvb2wgZHJhd093blNoYWRvdyA9ICFpc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpICYmIGhhc0JsdXJyZWRTaGFkb3cobV9zdGF0ZSkgJiYgIW1fc3Rh
dGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IC8vIERvbid0IHVzZSBTaGFkb3dCbHVyIGZvciBj
YW52YXMgeWV0LgorICAgIGJvb2wgZHJhd093blNoYWRvdyA9ICFpc0FjY2VsZXJhdGVkQ29udGV4
dCgpICYmIGhhc0JsdXJyZWRTaGFkb3coKSAmJiAhbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNm
b3JtczsgLy8gRG9uJ3QgdXNlIFNoYWRvd0JsdXIgZm9yIGNhbnZhcyB5ZXQuCiAgICAgaWYgKGRy
YXdPd25TaGFkb3cpIHsKLSAgICAgICAgZmxvYXQgc2hhZG93Qmx1ciA9IG1fc3RhdGUuc2hhZG93
c1VzZUxlZ2FjeVJhZGl1cyA/IHJhZGl1c1RvTGVnYWN5UmFkaXVzKG1fc3RhdGUuc2hhZG93Qmx1
cikgOiBtX3N0YXRlLnNoYWRvd0JsdXI7Ci0KICAgICAgICAgLy8gVHVybiBvZmYgQ0cgc2hhZG93
cy4KICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKICAgICAgICAgQ0dDb250
ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAw
KTsKIAotICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coRmxvYXRTaXplKHNoYWRvd0Js
dXIsIHNoYWRvd0JsdXIpLCBtX3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dDb2xv
ciwgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlKTsKKyAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0
U2hhZG93KG1fc3RhdGUpOwogICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRo
aXMsIHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVm
dCwgYm90dG9tUmlnaHQpKTsKICAgICB9CiAKQEAgLTkyMiwxNSArOTA4LDEzIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBJbnRSZWN0JiByZWN0
LCBjb25zdCBSb3VuZGVkCiAgICAgc2V0RmlsbENvbG9yKGNvbG9yLCBjb2xvclNwYWNlKTsKIAog
ICAgIC8vIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKCkgYXNzdW1lcyB0aGF0IHRoZSBlZGdlcyBv
ZiByZWN0IGFyZSBjbGlwcGVkIG91dCwgc28gd2Ugb25seSBjYXJlIGFib3V0IHNoYWRvd3MgY2Fz
dCBhcm91bmQgaW5zaWRlIHRoZSBob2xlLgotICAgIGJvb2wgZHJhd093blNoYWRvdyA9ICFpc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpICYmIGhhc0JsdXJyZWRTaGFkb3cobV9zdGF0ZSkgJiYgIW1fc3Rh
dGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CisgICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlz
QWNjZWxlcmF0ZWRDb250ZXh0KCkgJiYgaGFzQmx1cnJlZFNoYWRvdygpICYmICFtX3N0YXRlLnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogICAgIGlmIChkcmF3T3duU2hhZG93KSB7Ci0gICAgICAg
IGZsb2F0IHNoYWRvd0JsdXIgPSBtX3N0YXRlLnNoYWRvd3NVc2VMZWdhY3lSYWRpdXMgPyByYWRp
dXNUb0xlZ2FjeVJhZGl1cyhtX3N0YXRlLnNoYWRvd0JsdXIpIDogbV9zdGF0ZS5zaGFkb3dCbHVy
OwotCiAgICAgICAgIC8vIFR1cm4gb2ZmIENHIHNoYWRvd3MuCiAgICAgICAgIENHQ29udGV4dFNh
dmVHU3RhdGUoY29udGV4dCk7CiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihw
bGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKLSAgICAgICAgU2hhZG93Qmx1
ciBjb250ZXh0U2hhZG93KEZsb2F0U2l6ZShzaGFkb3dCbHVyLCBzaGFkb3dCbHVyKSwgbV9zdGF0
ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Q29sb3IsIG1fc3RhdGUuc2hhZG93Q29sb3JT
cGFjZSk7CisgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsKICAgICAg
ICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3codGhpcywgcmVjdCwgcm91bmRlZEhvbGVS
ZWN0LnJlY3QoKSwgcm91bmRlZEhvbGVSZWN0LnJhZGlpKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAKaW5kZXggM2FmYmIzNS4u
YjQ2Yjc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
Rm9udFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250
UXQuY3BwCkBAIC0xMjUsNDMgKzEyNSwzNSBAQCBzdGF0aWMgdm9pZCBkcmF3UXRHbHlwaFJ1bihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFFHbHlwaFJ1biYgcXRHbHlwaFJ1bgogICAg
IGlmIChjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlU3Ryb2tlKQogICAgICAg
ICB0ZXh0U3Ryb2tlUGF0aCA9IHBhdGhGb3JHbHlwaHMocXRHbHlwaFJ1biwgcG9pbnQpOwogCi0g
ICAgU2hhZG93Qmx1ciogc2hhZG93ID0gY29udGV4dC0+c2hhZG93Qmx1cigpOwotICAgIGlmIChj
b250ZXh0LT5oYXNTaGFkb3coKSAmJiBzaGFkb3ctPnR5cGUoKSAhPSBTaGFkb3dCbHVyOjpOb1No
YWRvdykgewotICAgICAgICBzd2l0Y2ggKHNoYWRvdy0+dHlwZSgpKSB7Ci0gICAgICAgIGNhc2Ug
U2hhZG93Qmx1cjo6U29saWRTaGFkb3c6IHsKLSAgICAgICAgICAgIFFQZW4gcHJldmlvdXNQZW4g
PSBwYWludGVyLT5wZW4oKTsKLSAgICAgICAgICAgIHBhaW50ZXItPnNldFBlbihjb250ZXh0LT5z
dGF0ZSgpLnNoYWRvd0NvbG9yKTsKLSAgICAgICAgICAgIGNvbnN0IFFQb2ludEYgc2hhZG93T2Zm
c2V0KGNvbnRleHQtPnN0YXRlKCkuc2hhZG93T2Zmc2V0LndpZHRoKCksIGNvbnRleHQtPnN0YXRl
KCkuc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsKLSAgICAgICAgICAgIHBhaW50ZXItPnRyYW5zbGF0
ZShzaGFkb3dPZmZzZXQpOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPnRleHREcmF3aW5nTW9k
ZSgpICYgVGV4dE1vZGVGaWxsKQotICAgICAgICAgICAgICAgIHBhaW50ZXItPmRyYXdHbHlwaFJ1
bihwb2ludCwgcXRHbHlwaFJ1bik7Ci0gICAgICAgICAgICBlbHNlIGlmIChjb250ZXh0LT50ZXh0
RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlU3Ryb2tlKQotICAgICAgICAgICAgICAgIHBhaW50ZXIt
PnN0cm9rZVBhdGgodGV4dFN0cm9rZVBhdGgsIHBhaW50ZXItPnBlbigpKTsKLSAgICAgICAgICAg
IHBhaW50ZXItPnRyYW5zbGF0ZSgtc2hhZG93T2Zmc2V0KTsKLSAgICAgICAgICAgIHBhaW50ZXIt
PnNldFBlbihwcmV2aW91c1Blbik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIFNoYWRvd0JsdXI6OkJsdXJTaGFkb3c6IHsKKyAgICBpZiAoY29udGV4dC0+aGFz
U2hhZG93KCkpIHsKKyAgICAgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlID0g
Y29udGV4dC0+c3RhdGUoKTsKKyAgICAgICAgaWYgKGNvbnRleHQtPm11c3RVc2VTaGFkb3dCbHVy
KCkpIHsKKyAgICAgICAgICAgIFNoYWRvd0JsdXIgc2hhZG93KHN0YXRlKTsKICAgICAgICAgICAg
IGNvbnN0IGludCB3aWR0aCA9IHF0R2x5cGhSdW4uYm91bmRpbmdSZWN0KCkud2lkdGgoKTsKICAg
ICAgICAgICAgIGNvbnN0IFFSYXdGb250JiBmb250ID0gcXRHbHlwaFJ1bi5yYXdGb250KCk7CiAg
ICAgICAgICAgICBjb25zdCBpbnQgaGVpZ2h0ID0gZm9udC5hc2NlbnQoKSArIGZvbnQuZGVzY2Vu
dCgpOwogICAgICAgICAgICAgY29uc3QgUVJlY3RGIGJvdW5kaW5nUmVjdChwb2ludC54KCksIHBv
aW50LnkoKSAtIGZvbnQuYXNjZW50KCkgKyBiYXNlTGluZU9mZnNldCwgd2lkdGgsIGhlaWdodCk7
Ci0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3ctPmJl
Z2luU2hhZG93TGF5ZXIoY29udGV4dCwgYm91bmRpbmdSZWN0KTsKKyAgICAgICAgICAgIEdyYXBo
aWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy5iZWdpblNoYWRvd0xheWVyKGNvbnRl
eHQsIGJvdW5kaW5nUmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93Q29udGV4dCkgewogICAg
ICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93Q29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCk7Ci0gICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0UGVuKHNo
YWRvd0NvbnRleHQtPnN0YXRlKCkuc2hhZG93Q29sb3IpOworICAgICAgICAgICAgICAgIHNoYWRv
d1BhaW50ZXItPnNldFBlbihzdGF0ZS5zaGFkb3dDb2xvcik7CiAgICAgICAgICAgICAgICAgaWYg
KHNoYWRvd0NvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKQogICAgICAg
ICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5kcmF3R2x5cGhSdW4ocG9pbnQsIHF0R2x5cGhS
dW4pOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNoYWRvd0NvbnRleHQtPnRleHREcmF3aW5n
TW9kZSgpICYgVGV4dE1vZGVTdHJva2UpCiAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50
ZXItPnN0cm9rZVBhdGgodGV4dFN0cm9rZVBhdGgsIHNoYWRvd1BhaW50ZXItPnBlbigpKTsKLSAg
ICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKGNvbnRleHQpOworICAgICAgICAg
ICAgICAgIHNoYWRvdy5lbmRTaGFkb3dMYXllcihjb250ZXh0KTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2hhZG93Qmx1cjo6Tm9T
aGFkb3c6Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUVBl
biBwcmV2aW91c1BlbiA9IHBhaW50ZXItPnBlbigpOworICAgICAgICAgICAgcGFpbnRlci0+c2V0
UGVuKHN0YXRlLnNoYWRvd0NvbG9yKTsKKyAgICAgICAgICAgIGNvbnN0IFFQb2ludEYgc2hhZG93
T2Zmc2V0KHN0YXRlLnNoYWRvd09mZnNldC53aWR0aCgpLCBzdGF0ZS5zaGFkb3dPZmZzZXQuaGVp
Z2h0KCkpOworICAgICAgICAgICAgcGFpbnRlci0+dHJhbnNsYXRlKHNoYWRvd09mZnNldCk7Cisg
ICAgICAgICAgICBpZiAoY29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZUZpbGwp
CisgICAgICAgICAgICAgICAgcGFpbnRlci0+ZHJhd0dseXBoUnVuKHBvaW50LCBxdEdseXBoUnVu
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4
dE1vZGVTdHJva2UpCisgICAgICAgICAgICAgICAgcGFpbnRlci0+c3Ryb2tlUGF0aCh0ZXh0U3Ry
b2tlUGF0aCwgcGFpbnRlci0+cGVuKCkpOworICAgICAgICAgICAgcGFpbnRlci0+dHJhbnNsYXRl
KC1zaGFkb3dPZmZzZXQpOworICAgICAgICAgICAgcGFpbnRlci0+c2V0UGVuKHByZXZpb3VzUGVu
KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCmluZGV4IDlhNzE0NTUuLmJh
MGViOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzQ29udGV4dFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKQEAgLTI1MCw4ICsyNTAsNiBAQCBwdWJsaWM6CiAg
ICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKICAgICBi
b29sIGluaXRpYWxTbW9vdGhQaXhtYXBUcmFuc2Zvcm1IaW50OwogCi0gICAgU2hhZG93Qmx1ciog
c2hhZG93OwotCiAgICAgUVJlY3RGIGNsaXBCb3VuZGluZ1JlY3QoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIHAoKS0+Y2xpcEJvdW5kaW5nUmVjdCgpOwpAQCAtMjcwLDcgKzI2OCw2IEBA
IEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Q
cml2YXRlKFFQYWludGVyKiBwLCBjb25zCiAgICAgLCBzb2xpZENvbG9yKGluaXRpYWxTb2xpZENv
bG9yKQogICAgICwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uRGVmYXVs
dCkKICAgICAsIGluaXRpYWxTbW9vdGhQaXhtYXBUcmFuc2Zvcm1IaW50KGZhbHNlKQotICAgICwg
c2hhZG93KG5ldyBTaGFkb3dCbHVyKCkpCiAgICAgLCBwYWludGVyKHApCiAgICAgLCBwbGF0Zm9y
bUNvbnRleHRJc093bmVkKGZhbHNlKQogewpAQCAtMjg5LDggKzI4Niw2IEBAIEdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKFFQYWlu
dGVyKiBwLCBjb25zCiAKIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6fkdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZSgpCiB7Ci0gICAgZGVsZXRlIHNoYWRvdzsKLQogICAgIGlm
ICghcGxhdGZvcm1Db250ZXh0SXNPd25lZCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTUsOCAr
MzUwLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAg
ICAgICAgICAgIGVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIAogICAgIG1fZGF0YS0+
cCgpLT5yZXN0b3JlKCk7Ci0KLSAgICBtX2RhdGEtPnNoYWRvdy0+c2V0U2hhZG93VmFsdWVzKEZs
b2F0U2l6ZShtX3N0YXRlLnNoYWRvd0JsdXIsIG1fc3RhdGUuc2hhZG93Qmx1ciksIG1fc3RhdGUu
c2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRvd0NvbG9yU3Bh
Y2UsIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwogfQogCiAvLyBEcmF3cyBhIGZp
bGxlZCByZWN0YW5nbGUgd2l0aCBhIHN0cm9rZWQgYm9yZGVyLgpAQCAtNjI4LDEwICs2MjEsMTAg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAg
cGxhdGZvcm1QYXRoLnNldEZpbGxSdWxlKHRvUXRGaWxsUnVsZShmaWxsUnVsZSgpKSk7CiAKICAg
ICBpZiAoaGFzU2hhZG93KCkpIHsKLSAgICAgICAgU2hhZG93Qmx1ciogc2hhZG93ID0gc2hhZG93
Qmx1cigpOwotICAgICAgICBpZiAoc2hhZG93LT5tdXN0VXNlU2hhZG93Qmx1cih0aGlzKSB8fCBt
X3N0YXRlLmZpbGxQYXR0ZXJuIHx8IG1fc3RhdGUuZmlsbEdyYWRpZW50KQorICAgICAgICBpZiAo
bXVzdFVzZVNoYWRvd0JsdXIoKSB8fCBtX3N0YXRlLmZpbGxQYXR0ZXJuIHx8IG1fc3RhdGUuZmls
bEdyYWRpZW50KQogICAgICAgICB7Ci0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRv
d0NvbnRleHQgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIodGhpcywgcGxhdGZvcm1QYXRoLmNv
bnRyb2xQb2ludFJlY3QoKSk7CisgICAgICAgICAgICBTaGFkb3dCbHVyIHNoYWRvdyhtX3N0YXRl
KTsKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy5i
ZWdpblNoYWRvd0xheWVyKHRoaXMsIHBsYXRmb3JtUGF0aC5jb250cm9sUG9pbnRSZWN0KCkpOwog
ICAgICAgICAgICAgaWYgKHNoYWRvd0NvbnRleHQpIHsKICAgICAgICAgICAgICAgICBRUGFpbnRl
ciogc2hhZG93UGFpbnRlciA9IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAg
ICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZpbGxQYXR0ZXJuKSB7CkBAIC02NDMsNyArNjM2LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+
ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBwLT5icnVzaCgpKTsKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcih0aGlzKTsKKyAgICAgICAgICAg
ICAgICBzaGFkb3cuZW5kU2hhZG93TGF5ZXIodGhpcyk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBRUG9pbnRGIG9mZnNldChtX3N0YXRlLnNoYWRvd09mZnNl
dC53aWR0aCgpLCBtX3N0YXRlLnNoYWRvd09mZnNldC5oZWlnaHQoKSk7CkBAIC02ODcsMTIgKzY4
MCwxMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRo
KQogICAgIHBhdGhTdHJva2VyLnNldFdpZHRoKHBlbi53aWR0aEYoKSk7CiAKICAgICBpZiAoaGFz
U2hhZG93KCkpIHsKLSAgICAgICAgU2hhZG93Qmx1ciogc2hhZG93ID0gc2hhZG93Qmx1cigpOwot
ICAgICAgICBpZiAoc2hhZG93LT5tdXN0VXNlU2hhZG93Qmx1cih0aGlzKSB8fCBtX3N0YXRlLnN0
cm9rZVBhdHRlcm4gfHwgbV9zdGF0ZS5zdHJva2VHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RV
c2VTaGFkb3dCbHVyKCkgfHwgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuIHx8IG1fc3RhdGUuc3Ryb2tl
R3JhZGllbnQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIFNoYWRvd0JsdXIgc2hhZG93KG1fc3Rh
dGUpOwogICAgICAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nUmVjdCA9IHBsYXRmb3JtUGF0aC5j
b250cm9sUG9pbnRSZWN0KCk7CiAgICAgICAgICAgICBib3VuZGluZ1JlY3QuaW5mbGF0ZShwZW4u
bWl0ZXJMaW1pdCgpICsgcGVuLndpZHRoRigpKTsKLSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4
dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcih0aGlzLCBib3VuZGlu
Z1JlY3QpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hh
ZG93LmJlZ2luU2hhZG93TGF5ZXIodGhpcywgYm91bmRpbmdSZWN0KTsKICAgICAgICAgICAgIGlm
IChzaGFkb3dDb250ZXh0KSB7CiAgICAgICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50
ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICAgICAgICAgICAgICBp
ZiAobV9zdGF0ZS5zdHJva2VHcmFkaWVudCkgewpAQCAtNzAxLDcgKzY5NCw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAgICAgICAg
ICAgICAgIGZpbGxQYXRoU3Ryb2tlKHNoYWRvd1BhaW50ZXIsIHBhdGhTdHJva2VyLCBwbGF0Zm9y
bVBhdGgsIGJydXNoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAg
ICAgZmlsbFBhdGhTdHJva2Uoc2hhZG93UGFpbnRlciwgcGF0aFN0cm9rZXIsIHBsYXRmb3JtUGF0
aCwgcGVuLmJydXNoKCkpOwotICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIo
dGhpcyk7CisgICAgICAgICAgICAgICAgc2hhZG93LmVuZFNoYWRvd0xheWVyKHRoaXMpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUVBvaW50RiBvZmZzZXQo
bV9zdGF0ZS5zaGFkb3dPZmZzZXQud2lkdGgoKSwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0
KCkpOwpAQCAtNzc5LDQwICs3NzIsNDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIAogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7
CiAgICAgUVJlY3RGIG5vcm1hbGl6ZWRSZWN0ID0gcmVjdC5ub3JtYWxpemVkKCk7Ci0gICAgU2hh
ZG93Qmx1ciogc2hhZG93ID0gc2hhZG93Qmx1cigpOwogCiAgICAgaWYgKG1fc3RhdGUuZmlsbFBh
dHRlcm4pIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gaGFzU2hh
ZG93KCkgPyBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIodGhpcywgbm9ybWFsaXplZFJlY3QpIDog
MDsKLSAgICAgICAgaWYgKHNoYWRvd0NvbnRleHQpIHsKLSAgICAgICAgICAgIFFQYWludGVyKiBz
aGFkb3dQYWludGVyID0gc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgICAg
ICAgICBkcmF3UmVwZWF0UGF0dGVybihzaGFkb3dQYWludGVyLCBtX3N0YXRlLmZpbGxQYXR0ZXJu
LCBub3JtYWxpemVkUmVjdCk7Ci0gICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHRo
aXMpOworICAgICAgICBpZiAoaGFzU2hhZG93KCkpIHsKKyAgICAgICAgICAgIFNoYWRvd0JsdXIg
c2hhZG93KG1fc3RhdGUpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250
ZXh0ID0gc2hhZG93LmJlZ2luU2hhZG93TGF5ZXIodGhpcywgbm9ybWFsaXplZFJlY3QpOworICAg
ICAgICAgICAgaWYgKHNoYWRvd0NvbnRleHQpIHsKKyAgICAgICAgICAgICAgICBRUGFpbnRlciog
c2hhZG93UGFpbnRlciA9IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgICAg
ICAgICAgICAgIGRyYXdSZXBlYXRQYXR0ZXJuKHNoYWRvd1BhaW50ZXIsIG1fc3RhdGUuZmlsbFBh
dHRlcm4sIG5vcm1hbGl6ZWRSZWN0KTsKKyAgICAgICAgICAgICAgICBzaGFkb3cuZW5kU2hhZG93
TGF5ZXIodGhpcyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZHJhd1JlcGVh
dFBhdHRlcm4ocCwgbV9zdGF0ZS5maWxsUGF0dGVybiwgbm9ybWFsaXplZFJlY3QpOwogICAgIH0g
ZWxzZSBpZiAobV9zdGF0ZS5maWxsR3JhZGllbnQpIHsKICAgICAgICAgUUJydXNoIGJydXNoKCpt
X3N0YXRlLmZpbGxHcmFkaWVudC0+cGxhdGZvcm1HcmFkaWVudCgpKTsKICAgICAgICAgYnJ1c2gu
c2V0VHJhbnNmb3JtKG1fc3RhdGUuZmlsbEdyYWRpZW50LT5ncmFkaWVudFNwYWNlVHJhbnNmb3Jt
KCkpOwotICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBoYXNTaGFkb3co
KSA/IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcih0aGlzLCBub3JtYWxpemVkUmVjdCkgOiAwOwot
ICAgICAgICBpZiAoc2hhZG93Q29udGV4dCkgewotICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRv
d1BhaW50ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICAgICAgICAg
IHNoYWRvd1BhaW50ZXItPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBicnVzaCk7Ci0gICAgICAg
ICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHRoaXMpOworICAgICAgICBpZiAoaGFzU2hhZG93
KCkpIHsKKyAgICAgICAgICAgIFNoYWRvd0JsdXIgc2hhZG93KG1fc3RhdGUpOworICAgICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LmJlZ2luU2hhZG93TGF5
ZXIodGhpcywgbm9ybWFsaXplZFJlY3QpOworICAgICAgICAgICAgaWYgKHNoYWRvd0NvbnRleHQp
IHsKKyAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvd0NvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmZp
bGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBicnVzaCk7CisgICAgICAgICAgICAgICAgc2hhZG93LmVu
ZFNoYWRvd0xheWVyKHRoaXMpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHAt
PmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBicnVzaCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
aWYgKGhhc1NoYWRvdygpKSB7Ci0gICAgICAgICAgICBpZiAoc2hhZG93LT5tdXN0VXNlU2hhZG93
Qmx1cih0aGlzKSkgeworICAgICAgICAgICAgaWYgKG11c3RVc2VTaGFkb3dCbHVyKCkpIHsKKyAg
ICAgICAgICAgICAgICBTaGFkb3dCbHVyIHNoYWRvdyhtX3N0YXRlKTsKICAgICAgICAgICAgICAg
ICAvLyBkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcgZG9lcyBub3Qgd29yayB3aXRoIHJvdGF0aW9u
cywgYW5kIHRoZSBmYWxsYmFjayBvZgogICAgICAgICAgICAgICAgIC8vIGRyYXdpbmcgdGhvdWdo
IGNsaXBUb0ltYWdlQnVmZmVyKCkgcHJvZHVjZXMgc2NhbGluZyBhcnRpZmFjdHMgZm9yIHVzLgog
ICAgICAgICAgICAgICAgIGlmICghZ2V0Q1RNKCkucHJlc2VydmVzQXhpc0FsaWdubWVudCgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNo
YWRvdy0+YmVnaW5TaGFkb3dMYXllcih0aGlzLCBub3JtYWxpemVkUmVjdCk7CisgICAgICAgICAg
ICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy5iZWdpblNo
YWRvd0xheWVyKHRoaXMsIG5vcm1hbGl6ZWRSZWN0KTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHNoYWRvd0NvbnRleHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFFQYWludGVyKiBzaGFk
b3dQYWludGVyID0gc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgcC0+
YnJ1c2goKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVy
KHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93LmVuZFNoYWRvd0xheWVyKHRo
aXMpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIHNoYWRvdy0+ZHJhd1JlY3RTaGFkb3codGhpcywgcmVjdCwgUm91bmRl
ZFJlY3Q6OlJhZGlpKCkpOworICAgICAgICAgICAgICAgICAgICBzaGFkb3cuZHJhd1JlY3RTaGFk
b3codGhpcywgcmVjdCwgUm91bmRlZFJlY3Q6OlJhZGlpKCkpOwogICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAvLyBTb2xpZCByZWN0YW5nbGUgZmlsbCB3aXRoIG5vIGJsdXIg
c2hhZG93IG9yIHRyYW5zZm9ybWF0aW9ucyBhcHBsaWVkIGNhbiBiZSBkb25lCiAgICAgICAgICAg
ICAgICAgLy8gZmFzdGVyIHdpdGhvdXQgdXNpbmcgdGhlIHNoYWRvdyBsYXllciBhdCBhbGwuCkBA
IC04MzUsOSArODM0LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclMKICAgICBRUmVjdEYgcGxh
dGZvcm1SZWN0KHJlY3QpOwogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CiAgICAgaWYg
KGhhc1NoYWRvdygpKSB7Ci0gICAgICAgIFNoYWRvd0JsdXIqIHNoYWRvdyA9IHNoYWRvd0JsdXIo
KTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZVNoYWRvd0JsdXIodGhpcykpIHsKLSAgICAg
ICAgICAgIHNoYWRvdy0+ZHJhd1JlY3RTaGFkb3codGhpcywgcGxhdGZvcm1SZWN0LCBSb3VuZGVk
UmVjdDo6UmFkaWkoKSk7CisgICAgICAgIGlmIChtdXN0VXNlU2hhZG93Qmx1cigpKSB7CisgICAg
ICAgICAgICBTaGFkb3dCbHVyIHNoYWRvdyhtX3N0YXRlKTsKKyAgICAgICAgICAgIHNoYWRvdy5k
cmF3UmVjdFNoYWRvdyh0aGlzLCBwbGF0Zm9ybVJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSgpKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFFDb2xvciBzaGFkb3dDb2xvciA9IG1fc3Rh
dGUuc2hhZG93Q29sb3I7CiAgICAgICAgICAgICBzaGFkb3dDb2xvci5zZXRBbHBoYUYoc2hhZG93
Q29sb3IuYWxwaGFGKCkgKiBwLT5icnVzaCgpLmNvbG9yKCkuYWxwaGFGKCkpOwpAQCAtODU2LDkg
Kzg1NSw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYgdG9wTGVmCiAgICAgcGF0aC5hZGRSb3VuZGVkUmVj
dChyZWN0LCB0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpOwogICAg
IFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CiAgICAgaWYgKGhhc1NoYWRvdygpKSB7Ci0gICAg
ICAgIFNoYWRvd0JsdXIqIHNoYWRvdyA9IHNoYWRvd0JsdXIoKTsKLSAgICAgICAgaWYgKHNoYWRv
dy0+bXVzdFVzZVNoYWRvd0JsdXIodGhpcykpIHsKLSAgICAgICAgICAgIHNoYWRvdy0+ZHJhd1Jl
Y3RTaGFkb3codGhpcywgcmVjdCwgUm91bmRlZFJlY3Q6OlJhZGlpKHRvcExlZnQsIHRvcFJpZ2h0
LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCkpOworICAgICAgICBpZiAobXVzdFVzZVNoYWRvd0Js
dXIoKSkgeworICAgICAgICAgICAgU2hhZG93Qmx1ciBzaGFkb3cobV9zdGF0ZSk7CisgICAgICAg
ICAgICBzaGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgcmVjdCwgUm91bmRlZFJlY3Q6OlJhZGlp
KHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCkpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgY29uc3QgUVBvaW50RiBzaGFkb3dPZmZzZXQobV9zdGF0ZS5z
aGFkb3dPZmZzZXQud2lkdGgoKSwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOwogICAg
ICAgICAgICAgcC0+dHJhbnNsYXRlKHNoYWRvd09mZnNldCk7CkBAIC04ODYsMTAgKzg4NSwxMCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgUm91bmRlZAogCiAgICAgUVBhaW50ZXIqIHAgPSBtX2RhdGEtPnAo
KTsKICAgICBpZiAoaGFzU2hhZG93KCkpIHsKLSAgICAgICAgU2hhZG93Qmx1ciogc2hhZG93ID0g
c2hhZG93Qmx1cigpOwotICAgICAgICBpZiAoc2hhZG93LT5tdXN0VXNlU2hhZG93Qmx1cih0aGlz
KSkKLSAgICAgICAgICAgIHNoYWRvdy0+ZHJhd0luc2V0U2hhZG93KHRoaXMsIHJlY3QsIHJvdW5k
ZWRIb2xlUmVjdC5yZWN0KCksIHJvdW5kZWRIb2xlUmVjdC5yYWRpaSgpKTsKLSAgICAgICAgZWxz
ZSB7CisgICAgICAgIGlmIChtdXN0VXNlU2hhZG93Qmx1cigpKSB7CisgICAgICAgICAgICBTaGFk
b3dCbHVyIHNoYWRvdyhtX3N0YXRlKTsKKyAgICAgICAgICAgIHNoYWRvdy5kcmF3SW5zZXRTaGFk
b3codGhpcywgcmVjdCwgcm91bmRlZEhvbGVSZWN0LnJlY3QoKSwgcm91bmRlZEhvbGVSZWN0LnJh
ZGlpKCkpOworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY29uc3QgUVBvaW50RiBzaGFk
b3dPZmZzZXQobV9zdGF0ZS5zaGFkb3dPZmZzZXQud2lkdGgoKSwgbV9zdGF0ZS5zaGFkb3dPZmZz
ZXQuaGVpZ2h0KCkpOwogICAgICAgICAgICAgcC0+dHJhbnNsYXRlKHNoYWRvd09mZnNldCk7CiAg
ICAgICAgICAgICBwLT5maWxsUGF0aChwbGF0Zm9ybVBhdGgsIFFDb2xvcihtX3N0YXRlLnNoYWRv
d0NvbG9yKSk7CkBAIC05MDUsMTEgKzkwNCw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0Ojppc0lu
VHJhbnNwYXJlbmN5TGF5ZXIoKSBjb25zdAogICAgIHJldHVybiBtX2RhdGEtPmxheWVyQ291bnQ7
CiB9CiAKLVNoYWRvd0JsdXIqIEdyYXBoaWNzQ29udGV4dDo6c2hhZG93Qmx1cigpCi17Ci0gICAg
cmV0dXJuIG1fZGF0YS0+c2hhZG93OwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChj
b25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkBAIC0x
MTcwLDE5ICsxMTY0LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRv
dyhjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IGJsdXIsIGNvbnN0CiB7CiAgICAgLy8gUXQg
ZG9lc24ndCBzdXBwb3J0IHNoYWRvd3MgbmF0aXZlbHksIHRoZXkgYXJlIGRyYXduIG1hbnVhbGx5
IGluIHRoZSBkcmF3KgogICAgIC8vIGZ1bmN0aW9ucwotCiAgICAgaWYgKG1fc3RhdGUuc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMpIHsKICAgICAgICAgLy8gTWVhbmluZyB0aGF0IHRoaXMgZ3JhcGhp
Y3MgY29udGV4dCBpcyBhc3NvY2lhdGVkIHdpdGggYSBDYW52YXNSZW5kZXJpbmdDb250ZXh0CiAg
ICAgICAgIC8vIFdlIGZsaXAgdGhlIGhlaWdodCBzaW5jZSBDRyBhbmQgSFRNTDUgQ2FudmFzIGhh
dmUgb3Bwb3NpdGUgWSBheGlzCiAgICAgICAgIG1fc3RhdGUuc2hhZG93T2Zmc2V0ID0gRmxvYXRT
aXplKHNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpOwogICAgIH0KLQotICAgIG1fZGF0YS0+
c2hhZG93LT5zZXRTaGFkb3dWYWx1ZXMoRmxvYXRTaXplKG1fc3RhdGUuc2hhZG93Qmx1ciwgbV9z
dGF0ZS5zaGFkb3dCbHVyKSwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQsIGNvbG9yLCBjb2xvclNwYWNl
LCBtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmNsZWFyUGxhdGZvcm1TaGFkb3coKQogewotICAgIG1fZGF0YS0+c2hhZG93LT5jbGVh
cigpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cHVzaFRyYW5zcGFyZW5jeUxheWVySW50
ZXJuYWwoY29uc3QgUVJlY3QgJnJlY3QsIHFyZWFsIG9wYWNpdHksIFFQaXhtYXAmIGFscGhhTWFz
aykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdl
UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAK
aW5kZXggZWI5MjM1Yy4uYjg2Njc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKQEAgLTI1OSwxMiArMjU5LDEyIEBAIHZvaWQgQml0bWFw
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwK
ICAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oIWltYWdlLT5oYXNBbHBoYSgpICYmIG9w
ID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgPyBDb21wb3NpdGVDb3B5IDogb3ApOwogCiAgICAgaWYg
KGN0eHQtPmhhc1NoYWRvdygpKSB7Ci0gICAgICAgIFNoYWRvd0JsdXIqIHNoYWRvdyA9IGN0eHQt
PnNoYWRvd0JsdXIoKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0g
c2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGN0eHQsIG5vcm1hbGl6ZWREc3QpOworICAgICAgICBT
aGFkb3dCbHVyIHNoYWRvdyhjdHh0LT5zdGF0ZSgpKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0
KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LmJlZ2luU2hhZG93TGF5ZXIoY3R4dCwgbm9ybWFsaXpl
ZERzdCk7CiAgICAgICAgIGlmIChzaGFkb3dDb250ZXh0KSB7CiAgICAgICAgICAgICBRUGFpbnRl
ciogc2hhZG93UGFpbnRlciA9IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAg
ICAgICAgICAgc2hhZG93UGFpbnRlci0+ZHJhd1BpeG1hcChub3JtYWxpemVkRHN0LCAqaW1hZ2Us
IG5vcm1hbGl6ZWRTcmMpOwotICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcihjdHh0
KTsKKyAgICAgICAgICAgIHNoYWRvdy5lbmRTaGFkb3dMYXllcihjdHh0KTsKICAgICAgICAgfQog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
U3RpbGxJbWFnZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0
aWxsSW1hZ2VRdC5jcHAKaW5kZXggM2U1Mzg3Yi4uZjRmOThmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwCkBAIC04MCwx
MiArODAsMTIgQEAgdm9pZCBTdGlsbEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3QsCiAgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9w
KTsKIAogICAgIGlmIChjdHh0LT5oYXNTaGFkb3coKSkgewotICAgICAgICBTaGFkb3dCbHVyKiBz
aGFkb3cgPSBjdHh0LT5zaGFkb3dCbHVyKCk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hh
ZG93Q29udGV4dCA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihjdHh0LCBub3JtYWxpemVkRHN0
KTsKKyAgICAgICAgU2hhZG93Qmx1ciBzaGFkb3coY3R4dC0+c3RhdGUoKSk7CisgICAgICAgIEdy
YXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy5iZWdpblNoYWRvd0xheWVyKGN0
eHQsIG5vcm1hbGl6ZWREc3QpOwogICAgICAgICBpZiAoc2hhZG93Q29udGV4dCkgewogICAgICAg
ICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKTsKICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmRyYXdQaXhtYXAobm9ybWFsaXpl
ZERzdCwgKm1fcGl4bWFwLCBub3JtYWxpemVkU3JjKTsKLSAgICAgICAgICAgIHNoYWRvdy0+ZW5k
U2hhZG93TGF5ZXIoY3R4dCk7CisgICAgICAgICAgICBzaGFkb3cuZW5kU2hhZG93TGF5ZXIoY3R4
dCk7CiAgICAgICAgIH0KICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196484</attachid>
            <date>2013-04-04 09:09:50 -0700</date>
            <delta_ts>2013-04-04 10:03:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113506-20130404180939.patch</filename>
            <type>text/plain</type>
            <size>31898</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3NjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzEwNDIzODI4ZjFmYjcy
YmU0MjdmNjg4OTdjMTkxNDEzOWMyNWQ1NC4uMzg3OTJhNmZjMDE4YzM2NWVhYzA5OGI1N2ViZGU4
MzMwODIzMjczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEzLTAzLTI4ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtR
dF0gQ3JlYXRlIFNoYWRvd0JsdXIgb24gZGVtYW5kLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjcmVhdGVzIFNoYWRvd0JsdXIgb2Jq
ZWN0cyBvbiBkZW1hbmQgaW5zdGVhZCBvZiBrZWVwaW5nIGEgc2luZ2xlIG9uZSBhbGl2ZSBmb3IK
KyAgICAgICAgZWFjaCBHcmFwaGljc0NvbnRleHQuIFRoaXMgbWF0Y2hlcyB3aGF0IG90aGVyIHBs
YXRmb3JtcyBkb2VzIGFuZCBmaXhlcyB0aGUgcHJvYmxlbSB3aXRoIAorICAgICAgICBhbiBhY3Rp
dmUgc2hhZG93Ymx1ciBiZWluZyBhZmZlY3RlZCBieSBjaGFuZ2luZyBzaGFkb3cgc2V0dGluZ3Mg
b24gdGhlIEdyYXBoaWNzQ29udGV4dC4KKworICAgICAgICBUaGUgbWV0aG9kIG11c3RVc2VTaGFk
b3dCbHVyIGlzIG1vdmVkIGZyb20gU2hhZG93Qmx1ciB0byBHcmFwaGNpc0NvbnRleHQsIHNvIHRo
YXQgaXQgY2FuCisgICAgICAgIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgU2hhZG93Qmx1ciBv
YmplY3Qgc2hvdWxkIGV2ZW4gYmUgZ2VuZXJhdGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6aGFzQmx1cnJlZFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6Om11c3RVc2VTaGFkb3dCbHVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dC
bHVyOjpTaGFkb3dCbHVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNTaGFkb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpm
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
Rm9udFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdRdEdseXBoUnVuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHA6CisgICAgICAgIChH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjp+R3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpmaWxsUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnN0cm9rZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRI
b2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFk
b3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclBsYXRmb3JtU2hh
ZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9TdGlsbEltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RpbGxJbWFnZTo6
ZHJhdyk6CisKIDIwMTMtMDQtMDQgIFhpZG9ybiBRdWFuICA8cXVhbnh1bnpoZW5AZ21haWwuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxNDU4NzApOiBDYW4ndCBnZXQgaW5zZXJ0aW9uIHBv
aW50IHRvIGFwcGVhciBpbiBzb21lIGlucHV0IGFuZCB0ZXh0YXJlYXMgb24gd29yZHByZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcAppbmRleCA1MDdiNGRlMDI0ODY1YmI2MzJkN2YyODFjMzIyYzRjOTc4ZjEyMzYyLi4yN2Jj
M2E5MzY0NDBmOWZkNjIzZmJhM2Y1MDUwYTQ4ZTc0NjFlNmY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTE4NCw2
ICsxODQsMjkgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyhGbG9hdFNpemUmIG9m
ZnNldCwgZmxvYXQmIGJsdXIsIENvbG9yJiBjb2xvciwgQ28KICAgICByZXR1cm4gaGFzU2hhZG93
KCk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0OjpoYXNCbHVycmVkU2hhZG93KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9zdGF0ZS5zaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgbV9zdGF0ZS5z
aGFkb3dDb2xvci5hbHBoYSgpICYmIG1fc3RhdGUuc2hhZG93Qmx1cjsKK30KKworI2lmIFBMQVRG
T1JNKFFUKSB8fCBVU0UoQ0FJUk8pCitib29sIEdyYXBoaWNzQ29udGV4dDo6bXVzdFVzZVNoYWRv
d0JsdXIoKSBjb25zdAoreworICAgIC8vIFdlIGNhbid0IGF2b2lkIFNoYWRvd0JsdXIgaWYgdGhl
IHNoYWRvdyBoYXMgYmx1ci4KKyAgICBpZiAoaGFzQmx1cnJlZFNoYWRvdygpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAvLyBXZSBjYW4gYXZvaWQgU2hhZG93Qmx1ciBhbmQgb3B0aW1pemUs
IHNpbmNlIHdlJ3JlIG5vdCBkcmF3aW5nIG9uIGEKKyAgICAvLyBjYW52YXMgYW5kIGJveCBzaGFk
b3dzIGFyZSBhZmZlY3RlZCBieSB0aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4LgorICAgIGlmICgh
bV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIC8vIFdlIGNhbiBhdm9pZCBTaGFkb3dCbHVyLCBzaW5jZSB0aGVyZSBhcmUgbm8gdHJhbnNm
b3JtYXRpb25zIHRvIGFwcGx5IHRvIHRoZSBjYW52YXMuCisgICAgaWYgKGdldENUTSgpLmlzSWRl
bnRpdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIE90aGVyd2lzZSwgbm8gY2hh
bmNlIGF2b2lkaW5nIFNoYWRvd0JsdXIuCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKwog
ZmxvYXQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VUaGlja25lc3MoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZDZmNmY1YjUxMjA2NzQ5Nzcz
MDBhNzk1NzdjZTRkYjhiZjVlNzI3OS4uMDg2MzkxYjdmYWE2MmJhOWFkMjEyYmFjOTNmZjgyZDky
YTUyMjM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKQEAgLTUzLDkgKzUzLDYgQEAgY2xhc3MgU3VyZmFjZU9wZW5WRzsKIHR5
cGVkZWYgY2xhc3MgV2ViQ29yZTo6U3VyZmFjZU9wZW5WRyBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dDsKICNlbGlmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFFQYWludGVyPgotbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgU2hhZG93Qmx1cjsKLX0KIHR5cGVkZWYgUVBhaW50ZXIgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQ7CiAjZWxpZiBQTEFURk9STShXWCkKIGNsYXNzIHd4R0NEQzsKQEAgLTM5
NCw2ICszOTEsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGdldFNoYWRv
dyhGbG9hdFNpemUmLCBmbG9hdCYsIENvbG9yJiwgQ29sb3JTcGFjZSYpIGNvbnN0OwogICAgICAg
ICB2b2lkIGNsZWFyU2hhZG93KCk7CiAKKyAgICAgICAgYm9vbCBoYXNCbHVycmVkU2hhZG93KCkg
Y29uc3Q7CisjaWYgUExBVEZPUk0oUVQpIHx8IFVTRShDQUlSTykKKyAgICAgICAgYm9vbCBtdXN0
VXNlU2hhZG93Qmx1cigpIGNvbnN0OworI2VuZGlmCisKICAgICAgICAgdm9pZCBkcmF3Rm9jdXNS
aW5nKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYsIGludCB3aWR0aCwgaW50IG9mZnNldCwgY29uc3Qg
Q29sb3ImKTsKICAgICAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmLCBpbnQgd2lk
dGgsIGludCBvZmZzZXQsIGNvbnN0IENvbG9yJik7CiAKQEAgLTUxNywxMCArNTE5LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHRha2VPd25lcnNoaXBPZlBsYXRmb3JtQ29u
dGV4dCgpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShRVCkKLSAgICAgICAgU2hhZG93Qmx1ciog
c2hhZG93Qmx1cigpOwotI2VuZGlmCi0KICNpZiBVU0UoQ0FJUk8pCiAgICAgICAgIEdyYXBoaWNz
Q29udGV4dChjYWlyb190Kik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggZTQ4YWExZDIwMzJkMTBhZjBlMGVhNWU5ZTM1
YzQ2MGRmNGQxZmRmMC4uYWI5MTZjNDk0ODFiYTlhYWY1NDllZWRlY2ZlN2Y0NDIzZGY0YTRiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAK
QEAgLTMsNiArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgU2VuY2hhLCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0
ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBEaWdp
YSBQbGMuIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTY4LDYgKzE2OSwxMyBAQCBTY3JhdGNoQnVmZmVyJiBTY3JhdGNoQnVm
ZmVyOjpzaGFyZWQoKQogCiBzdGF0aWMgY29uc3QgaW50IHRlbXBsYXRlU2lkZUxlbmd0aCA9IDE7
CiAKKyNpZiBVU0UoQ0cpCitzdGF0aWMgZmxvYXQgcmFkaXVzVG9MZWdhY3lSYWRpdXMoZmxvYXQg
cmFkaXVzKQoreworICAgIHJldHVybiByYWRpdXMgPiA4ID8gOCArIDQgKiBzcXJ0KChyYWRpdXMg
LSA4KSAvIDIpIDogcmFkaXVzOworfQorI2VuZGlmCisKIFNoYWRvd0JsdXI6OlNoYWRvd0JsdXIo
Y29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBD
b2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKICAgICA6IG1fY29sb3IoY29sb3Ip
CiAgICAgLCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKQEAgLTE3OSw2ICsxODcsMjIgQEAgU2hh
ZG93Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRT
aXplJiBvZmZzZXQsIGNvbnN0IEMKICAgICB1cGRhdGVTaGFkb3dCbHVyVmFsdWVzKCk7CiB9CiAK
K1NoYWRvd0JsdXI6OlNoYWRvd0JsdXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
KQorICAgIDogbV9jb2xvcihzdGF0ZS5zaGFkb3dDb2xvcikKKyAgICAsIG1fY29sb3JTcGFjZShz
dGF0ZS5zaGFkb3dDb2xvclNwYWNlKQorICAgICwgbV9ibHVyUmFkaXVzKHN0YXRlLnNoYWRvd0Js
dXIsIHN0YXRlLnNoYWRvd0JsdXIpCisgICAgLCBtX29mZnNldChzdGF0ZS5zaGFkb3dPZmZzZXQp
CisgICAgLCBtX2xheWVySW1hZ2UoMCkKKyAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMo
c3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCit7CisjaWYgVVNFKENHKQorICAgIGlmICht
X3N0YXRlLnNoYWRvd3NVc2VMZWdhY3lSYWRpdXMpCisgICAgICAgIGZsb2F0IHNoYWRvd0JsdXIg
PSByYWRpdXNUb0xlZ2FjeVJhZGl1cyhtX3N0YXRlLnNoYWRvd0JsdXIpOworICAgICAgICBtX2Js
dXJSYWRpdXMgPSBGbG9hdFNpemUoc2hhZG93Qmx1ciwgc2hhZG93Qmx1cik7CisjZW5kaWYKKyAg
ICB1cGRhdGVTaGFkb3dCbHVyVmFsdWVzKCk7Cit9CisKIFNoYWRvd0JsdXI6OlNoYWRvd0JsdXIo
KQogICAgIDogbV90eXBlKE5vU2hhZG93KQogICAgICwgbV9ibHVyUmFkaXVzKDAsIDApCkBAIC04
OTcsMjIgKzkyMSw0IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0KQogICAgIFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpLnNjaGVkdWxlU2Ny
YXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKLSNpZiBQTEFURk9STShRVCkgfHwgVVNFKENBSVJPKQot
Ym9vbCBTaGFkb3dCbHVyOjptdXN0VXNlU2hhZG93Qmx1cihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQpIGNvbnN0Ci17Ci0gICAgLy8gV2UgY2FuJ3QgYXZvaWQgU2hhZG93Qmx1ciwgc2luY2UgdGhl
IHNoYWRvdyBoYXMgYmx1ci4KLSAgICBpZiAodHlwZSgpID09IEJsdXJTaGFkb3cpCi0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIC8vIFdlIGNhbiBhdm9pZCBTaGFkb3dCbHVyIGFuZCBvcHRpbWl6
ZSwgc2luY2Ugd2UncmUgbm90IGRyYXdpbmcgb24gYQotICAgIC8vIGNhbnZhcyBhbmQgYm94IHNo
YWRvd3MgYXJlIGFmZmVjdGVkIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCi0gICAgaWYg
KCFzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
Ly8gV2UgY2FuIGF2b2lkIFNoYWRvd0JsdXIsIHNpbmNlIHRoZXJlIGFyZSBubyB0cmFuc2Zvcm1h
dGlvbnMgdG8gYXBwbHkgdG8gdGhlIGNhbnZhcy4KLSAgICBpZiAoY29udGV4dC0+Z2V0Q1RNKCku
aXNJZGVudGl0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgLy8gT3RoZXJ3aXNlLCBu
byBjaGFuY2UgYXZvaWRpbmcgU2hhZG93Qmx1ci4KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLSNlbmRp
ZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaGFkb3dCbHVyLmgKaW5kZXggZTg4YTY2NjA3NGZiMzI2ZWUxNGVlNTRlNGRkN2E5
OTg2MTY3ZDIwZi4uMzJmZjYwYjZjYjAzYjIyYjk2OGM4ZTc4NjdkODNhNmZhZjkyMDQxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaApAQCAtMzks
NiArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKK3N0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZTsKIGNs
YXNzIEltYWdlQnVmZmVyOwogCiBjbGFzcyBTaGFkb3dCbHVyIHsKQEAgLTUxLDYgKzUyLDcgQEAg
cHVibGljOgogICAgIH07CiAKICAgICBTaGFkb3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVz
LCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAg
ICBTaGFkb3dCbHVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAgICAgU2hhZG93Qmx1
cigpOwogCiAgICAgdm9pZCBzZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
RmxvYXRTaXplJiAsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSwgYm9vbCBpZ25vcmVUcmFuc2Zv
cm1zID0gZmFsc2UpOwpAQCAtNzAsMTAgKzcyLDYgQEAgcHVibGljOgogCiAgICAgU2hhZG93VHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKLSNpZiBQTEFURk9STShRVCkgfHwg
VVNFKENBSVJPKQotICAgIGJvb2wgbXVzdFVzZVNoYWRvd0JsdXIoR3JhcGhpY3NDb250ZXh0Kikg
Y29uc3Q7Ci0jZW5kaWYKLQogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVNoYWRvd0JsdXJWYWx1
ZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRDYWlyby5jcHAKaW5kZXggOWEwZmQzMDVhZmZlNWM3ZTYyYmQ4ZWJiNTE2NGFlMjQ5YTM5
OWJhNS4uOTEyM2NjY2RmNzY3N2Q1NWExNDZiODU2N2U4NWNjZWYwYmY4Nzk4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3Bw
CkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgaWYgKCEoZ3Jh
cGhpY3NDb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlRmlsbCkgfHwgc2hhZG93
LnR5cGUoKSA9PSBTaGFkb3dCbHVyOjpOb1NoYWRvdykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKCFzaGFkb3cubXVzdFVzZVNoYWRvd0JsdXIoZ3JhcGhpY3NDb250ZXh0KSkgeworICAgIGlm
ICghZ3JhcGhpY3NDb250ZXh0LT5tdXN0VXNlU2hhZG93Qmx1cigpKSB7CiAgICAgICAgIC8vIE9w
dGltaXplIG5vbi1ibHVycnkgc2hhZG93cywgYnkganVzdCBkcmF3aW5nIHRleHQgd2l0aG91dCB0
aGUgU2hhZG93Qmx1ci4KICAgICAgICAgY2Fpcm9fdCogY29udGV4dCA9IGdyYXBoaWNzQ29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgICAgIGNhaXJvX3NhdmUoY29udGV4dCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKaW5kZXggOWUxODg5MTVhMDkzYmUyNDZmODI3MTc2OWY4YTA2YTk2
OTc1MDkzNi4uNmNlOWZkNTkxMDI2NzI0NDllMTY0Y2QzY2M5ZDQwYTRlMTg2NjFmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcApAQCAtNzYyLDE2ICs3NjIsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgIENHQ29udGV4dFN0cm9rZVBhdGgoY29u
dGV4dCk7CiB9CiAKLXN0YXRpYyBmbG9hdCByYWRpdXNUb0xlZ2FjeVJhZGl1cyhmbG9hdCByYWRp
dXMpCi17Ci0gICAgcmV0dXJuIHJhZGl1cyA+IDggPyA4ICsgNCAqIHNxcnQoKHJhZGl1cyAtIDgp
IC8gMikgOiByYWRpdXM7Ci19Ci0KLXN0YXRpYyBib29sIGhhc0JsdXJyZWRTaGFkb3coY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQotewotICAgIHJldHVybiBzdGF0ZS5zaGFkb3dD
b2xvci5pc1ZhbGlkKCkgJiYgc3RhdGUuc2hhZG93Q29sb3IuYWxwaGEoKSAmJiBzdGF0ZS5zaGFk
b3dCbHVyOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkBAIC04MDgsMTQgKzc5
OCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogICAgIGlmIChtX3N0YXRlLmZpbGxQYXR0ZXJuKQogICAgICAgICBhcHBseUZpbGxQYXR0
ZXJuKCk7CiAKLSAgICBib29sIGRyYXdPd25TaGFkb3cgPSAhaXNBY2NlbGVyYXRlZENvbnRleHQo
KSAmJiBoYXNCbHVycmVkU2hhZG93KG1fc3RhdGUpICYmICFtX3N0YXRlLnNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zOyAvLyBEb24ndCB1c2UgU2hhZG93Qmx1ciBmb3IgY2FudmFzIHlldC4KKyAgICBi
b29sIGRyYXdPd25TaGFkb3cgPSAhaXNBY2NlbGVyYXRlZENvbnRleHQoKSAmJiBoYXNCbHVycmVk
U2hhZG93KCkgJiYgIW1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IC8vIERvbid0IHVz
ZSBTaGFkb3dCbHVyIGZvciBjYW52YXMgeWV0LgogICAgIGlmIChkcmF3T3duU2hhZG93KSB7Ci0g
ICAgICAgIGZsb2F0IHNoYWRvd0JsdXIgPSBtX3N0YXRlLnNoYWRvd3NVc2VMZWdhY3lSYWRpdXMg
PyByYWRpdXNUb0xlZ2FjeVJhZGl1cyhtX3N0YXRlLnNoYWRvd0JsdXIpIDogbV9zdGF0ZS5zaGFk
b3dCbHVyOwogICAgICAgICAvLyBUdXJuIG9mZiBDRyBzaGFkb3dzLgogICAgICAgICBDR0NvbnRl
eHRTYXZlR1N0YXRlKGNvbnRleHQpOwogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29s
b3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCi0gICAgICAgIFNoYWRv
d0JsdXIgY29udGV4dFNoYWRvdyhGbG9hdFNpemUoc2hhZG93Qmx1ciwgc2hhZG93Qmx1ciksIG1f
c3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRvd0Nv
bG9yU3BhY2UpOworICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7CiAg
ICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgcmVjdCwgUm91bmRlZFJl
Y3Q6OlJhZGlpKCkpOwogICAgIH0KIApAQCAtODM3LDE0ICs4MjYsMTMgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNv
bG9yLCBDb2xvclMKICAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9yIHx8IG9sZENvbG9yU3Bh
Y2UgIT0gY29sb3JTcGFjZSkKICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgY29sb3Is
IGNvbG9yU3BhY2UpOwogCi0gICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlzQWNjZWxlcmF0ZWRD
b250ZXh0KCkgJiYgaGFzQmx1cnJlZFNoYWRvdyhtX3N0YXRlKSAmJiAhbV9zdGF0ZS5zaGFkb3dz
SWdub3JlVHJhbnNmb3JtczsgLy8gRG9uJ3QgdXNlIFNoYWRvd0JsdXIgZm9yIGNhbnZhcyB5ZXQu
CisgICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgJiYgaGFz
Qmx1cnJlZFNoYWRvdygpICYmICFtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyAvLyBE
b24ndCB1c2UgU2hhZG93Qmx1ciBmb3IgY2FudmFzIHlldC4KICAgICBpZiAoZHJhd093blNoYWRv
dykgewotICAgICAgICBmbG9hdCBzaGFkb3dCbHVyID0gbV9zdGF0ZS5zaGFkb3dzVXNlTGVnYWN5
UmFkaXVzID8gcmFkaXVzVG9MZWdhY3lSYWRpdXMobV9zdGF0ZS5zaGFkb3dCbHVyKSA6IG1fc3Rh
dGUuc2hhZG93Qmx1cjsKICAgICAgICAgLy8gVHVybiBvZmYgQ0cgc2hhZG93cy4KICAgICAgICAg
Q0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93
V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAotICAgICAg
ICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coRmxvYXRTaXplKHNoYWRvd0JsdXIsIHNoYWRvd0Js
dXIpLCBtX3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dDb2xvciwgbV9zdGF0ZS5z
aGFkb3dDb2xvclNwYWNlKTsKKyAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3Rh
dGUpOwogICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJv
dW5kZWRSZWN0OjpSYWRpaSgpKTsKICAgICB9CiAKQEAgLTg2OSwxNSArODU3LDEzIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgY29u
c3QgSW50U2l6ZSYgdG9wTGVmCiAgICAgaWYgKG9sZEZpbGxDb2xvciAhPSBjb2xvciB8fCBvbGRD
b2xvclNwYWNlICE9IGNvbG9yU3BhY2UpCiAgICAgICAgIHNldENHRmlsbENvbG9yKGNvbnRleHQs
IGNvbG9yLCBjb2xvclNwYWNlKTsKIAotICAgIGJvb2wgZHJhd093blNoYWRvdyA9ICFpc0FjY2Vs
ZXJhdGVkQ29udGV4dCgpICYmIGhhc0JsdXJyZWRTaGFkb3cobV9zdGF0ZSkgJiYgIW1fc3RhdGUu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IC8vIERvbid0IHVzZSBTaGFkb3dCbHVyIGZvciBjYW52
YXMgeWV0LgorICAgIGJvb2wgZHJhd093blNoYWRvdyA9ICFpc0FjY2VsZXJhdGVkQ29udGV4dCgp
ICYmIGhhc0JsdXJyZWRTaGFkb3coKSAmJiAhbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jt
czsgLy8gRG9uJ3QgdXNlIFNoYWRvd0JsdXIgZm9yIGNhbnZhcyB5ZXQuCiAgICAgaWYgKGRyYXdP
d25TaGFkb3cpIHsKLSAgICAgICAgZmxvYXQgc2hhZG93Qmx1ciA9IG1fc3RhdGUuc2hhZG93c1Vz
ZUxlZ2FjeVJhZGl1cyA/IHJhZGl1c1RvTGVnYWN5UmFkaXVzKG1fc3RhdGUuc2hhZG93Qmx1cikg
OiBtX3N0YXRlLnNoYWRvd0JsdXI7Ci0KICAgICAgICAgLy8gVHVybiBvZmYgQ0cgc2hhZG93cy4K
ICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKICAgICAgICAgQ0dDb250ZXh0
U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsK
IAotICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coRmxvYXRTaXplKHNoYWRvd0JsdXIs
IHNoYWRvd0JsdXIpLCBtX3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dDb2xvciwg
bV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlKTsKKyAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hh
ZG93KG1fc3RhdGUpOwogICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMs
IHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwg
Ym90dG9tUmlnaHQpKTsKICAgICB9CiAKQEAgLTkyMiwxNSArOTA4LDEzIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBSb3VuZGVkCiAgICAgc2V0RmlsbENvbG9yKGNvbG9yLCBjb2xvclNwYWNlKTsKIAogICAg
IC8vIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKCkgYXNzdW1lcyB0aGF0IHRoZSBlZGdlcyBvZiBy
ZWN0IGFyZSBjbGlwcGVkIG91dCwgc28gd2Ugb25seSBjYXJlIGFib3V0IHNoYWRvd3MgY2FzdCBh
cm91bmQgaW5zaWRlIHRoZSBob2xlLgotICAgIGJvb2wgZHJhd093blNoYWRvdyA9ICFpc0FjY2Vs
ZXJhdGVkQ29udGV4dCgpICYmIGhhc0JsdXJyZWRTaGFkb3cobV9zdGF0ZSkgJiYgIW1fc3RhdGUu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CisgICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlzQWNj
ZWxlcmF0ZWRDb250ZXh0KCkgJiYgaGFzQmx1cnJlZFNoYWRvdygpICYmICFtX3N0YXRlLnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zOwogICAgIGlmIChkcmF3T3duU2hhZG93KSB7Ci0gICAgICAgIGZs
b2F0IHNoYWRvd0JsdXIgPSBtX3N0YXRlLnNoYWRvd3NVc2VMZWdhY3lSYWRpdXMgPyByYWRpdXNU
b0xlZ2FjeVJhZGl1cyhtX3N0YXRlLnNoYWRvd0JsdXIpIDogbV9zdGF0ZS5zaGFkb3dCbHVyOwot
CiAgICAgICAgIC8vIFR1cm4gb2ZmIENHIHNoYWRvd3MuCiAgICAgICAgIENHQ29udGV4dFNhdmVH
U3RhdGUoY29udGV4dCk7CiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0
Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKLSAgICAgICAgU2hhZG93Qmx1ciBj
b250ZXh0U2hhZG93KEZsb2F0U2l6ZShzaGFkb3dCbHVyLCBzaGFkb3dCbHVyKSwgbV9zdGF0ZS5z
aGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Q29sb3IsIG1fc3RhdGUuc2hhZG93Q29sb3JTcGFj
ZSk7CisgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsKICAgICAgICAg
Y29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3codGhpcywgcmVjdCwgcm91bmRlZEhvbGVSZWN0
LnJlY3QoKSwgcm91bmRlZEhvbGVSZWN0LnJhZGlpKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRRdC5jcHAKaW5kZXggM2FmYmIzNTI4ZThm
NDY1ZDkxMTJiOGNkYjExZWIwMWFhMGI1MGU3YS4uYjQ2Yjc4YjY3Y2ZkZWJjODE4MjBkNDM5MjE2
MTMzOTVlMDdlYWE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvRm9udFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9Gb250UXQuY3BwCkBAIC0xMjUsNDMgKzEyNSwzNSBAQCBzdGF0aWMgdm9pZCBkcmF3UXRHbHlw
aFJ1bihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFFHbHlwaFJ1biYgcXRHbHlwaFJ1
bgogICAgIGlmIChjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlU3Ryb2tlKQog
ICAgICAgICB0ZXh0U3Ryb2tlUGF0aCA9IHBhdGhGb3JHbHlwaHMocXRHbHlwaFJ1biwgcG9pbnQp
OwogCi0gICAgU2hhZG93Qmx1ciogc2hhZG93ID0gY29udGV4dC0+c2hhZG93Qmx1cigpOwotICAg
IGlmIChjb250ZXh0LT5oYXNTaGFkb3coKSAmJiBzaGFkb3ctPnR5cGUoKSAhPSBTaGFkb3dCbHVy
OjpOb1NoYWRvdykgewotICAgICAgICBzd2l0Y2ggKHNoYWRvdy0+dHlwZSgpKSB7Ci0gICAgICAg
IGNhc2UgU2hhZG93Qmx1cjo6U29saWRTaGFkb3c6IHsKLSAgICAgICAgICAgIFFQZW4gcHJldmlv
dXNQZW4gPSBwYWludGVyLT5wZW4oKTsKLSAgICAgICAgICAgIHBhaW50ZXItPnNldFBlbihjb250
ZXh0LT5zdGF0ZSgpLnNoYWRvd0NvbG9yKTsKLSAgICAgICAgICAgIGNvbnN0IFFQb2ludEYgc2hh
ZG93T2Zmc2V0KGNvbnRleHQtPnN0YXRlKCkuc2hhZG93T2Zmc2V0LndpZHRoKCksIGNvbnRleHQt
PnN0YXRlKCkuc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsKLSAgICAgICAgICAgIHBhaW50ZXItPnRy
YW5zbGF0ZShzaGFkb3dPZmZzZXQpOwotICAgICAgICAgICAgaWYgKGNvbnRleHQtPnRleHREcmF3
aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKQotICAgICAgICAgICAgICAgIHBhaW50ZXItPmRyYXdH
bHlwaFJ1bihwb2ludCwgcXRHbHlwaFJ1bik7Ci0gICAgICAgICAgICBlbHNlIGlmIChjb250ZXh0
LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlU3Ryb2tlKQotICAgICAgICAgICAgICAgIHBh
aW50ZXItPnN0cm9rZVBhdGgodGV4dFN0cm9rZVBhdGgsIHBhaW50ZXItPnBlbigpKTsKLSAgICAg
ICAgICAgIHBhaW50ZXItPnRyYW5zbGF0ZSgtc2hhZG93T2Zmc2V0KTsKLSAgICAgICAgICAgIHBh
aW50ZXItPnNldFBlbihwcmV2aW91c1Blbik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIFNoYWRvd0JsdXI6OkJsdXJTaGFkb3c6IHsKKyAgICBpZiAoY29udGV4
dC0+aGFzU2hhZG93KCkpIHsKKyAgICAgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlID0gY29udGV4dC0+c3RhdGUoKTsKKyAgICAgICAgaWYgKGNvbnRleHQtPm11c3RVc2VTaGFk
b3dCbHVyKCkpIHsKKyAgICAgICAgICAgIFNoYWRvd0JsdXIgc2hhZG93KHN0YXRlKTsKICAgICAg
ICAgICAgIGNvbnN0IGludCB3aWR0aCA9IHF0R2x5cGhSdW4uYm91bmRpbmdSZWN0KCkud2lkdGgo
KTsKICAgICAgICAgICAgIGNvbnN0IFFSYXdGb250JiBmb250ID0gcXRHbHlwaFJ1bi5yYXdGb250
KCk7CiAgICAgICAgICAgICBjb25zdCBpbnQgaGVpZ2h0ID0gZm9udC5hc2NlbnQoKSArIGZvbnQu
ZGVzY2VudCgpOwogICAgICAgICAgICAgY29uc3QgUVJlY3RGIGJvdW5kaW5nUmVjdChwb2ludC54
KCksIHBvaW50LnkoKSAtIGZvbnQuYXNjZW50KCkgKyBiYXNlTGluZU9mZnNldCwgd2lkdGgsIGhl
aWdodCk7Ci0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFk
b3ctPmJlZ2luU2hhZG93TGF5ZXIoY29udGV4dCwgYm91bmRpbmdSZWN0KTsKKyAgICAgICAgICAg
IEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy5iZWdpblNoYWRvd0xheWVy
KGNvbnRleHQsIGJvdW5kaW5nUmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93Q29udGV4dCkg
ewogICAgICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93Q29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+c2V0
UGVuKHNoYWRvd0NvbnRleHQtPnN0YXRlKCkuc2hhZG93Q29sb3IpOworICAgICAgICAgICAgICAg
IHNoYWRvd1BhaW50ZXItPnNldFBlbihzdGF0ZS5zaGFkb3dDb2xvcik7CiAgICAgICAgICAgICAg
ICAgaWYgKHNoYWRvd0NvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKQog
ICAgICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5kcmF3R2x5cGhSdW4ocG9pbnQsIHF0
R2x5cGhSdW4pOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNoYWRvd0NvbnRleHQtPnRleHRE
cmF3aW5nTW9kZSgpICYgVGV4dE1vZGVTdHJva2UpCiAgICAgICAgICAgICAgICAgICAgIHNoYWRv
d1BhaW50ZXItPnN0cm9rZVBhdGgodGV4dFN0cm9rZVBhdGgsIHNoYWRvd1BhaW50ZXItPnBlbigp
KTsKLSAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKGNvbnRleHQpOworICAg
ICAgICAgICAgICAgIHNoYWRvdy5lbmRTaGFkb3dMYXllcihjb250ZXh0KTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2hhZG93Qmx1
cjo6Tm9TaGFkb3c6Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgUVBlbiBwcmV2aW91c1BlbiA9IHBhaW50ZXItPnBlbigpOworICAgICAgICAgICAgcGFpbnRl
ci0+c2V0UGVuKHN0YXRlLnNoYWRvd0NvbG9yKTsKKyAgICAgICAgICAgIGNvbnN0IFFQb2ludEYg
c2hhZG93T2Zmc2V0KHN0YXRlLnNoYWRvd09mZnNldC53aWR0aCgpLCBzdGF0ZS5zaGFkb3dPZmZz
ZXQuaGVpZ2h0KCkpOworICAgICAgICAgICAgcGFpbnRlci0+dHJhbnNsYXRlKHNoYWRvd09mZnNl
dCk7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9k
ZUZpbGwpCisgICAgICAgICAgICAgICAgcGFpbnRlci0+ZHJhd0dseXBoUnVuKHBvaW50LCBxdEds
eXBoUnVuKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgp
ICYgVGV4dE1vZGVTdHJva2UpCisgICAgICAgICAgICAgICAgcGFpbnRlci0+c3Ryb2tlUGF0aCh0
ZXh0U3Ryb2tlUGF0aCwgcGFpbnRlci0+cGVuKCkpOworICAgICAgICAgICAgcGFpbnRlci0+dHJh
bnNsYXRlKC1zaGFkb3dPZmZzZXQpOworICAgICAgICAgICAgcGFpbnRlci0+c2V0UGVuKHByZXZp
b3VzUGVuKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCmluZGV4IDlhNzE0
NTUyZGM4ZjAwNTZiMjZmMzk3OTlkNWNlZGJhZTViMzkwZWQuLjBkM2RhZWQ4MTJjYzkyYTFkZWI4
NDRjZWJjNmY0N2ZkOGNiMWU4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKQEAgLTEwLDYgKzEwLDcg
QEAKICAqIENvcHlyaWdodCAoQykgMjAwOCBEaXJrIFNjaHVsemUgPHZiczg1QGdteC5kZT4KICAq
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBTZW5jaGEsIEluYy4KICAqIENvcHlyaWdodCAoQykg
MjAxMSBBbmRyZWFzIEtsaW5nIDxrbGluZ0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAy
MDEzIERpZ2lhIFBsYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKICAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMjUwLDggKzI1MSw2IEBAIHB1YmxpYzoKICAgICBJbnRl
cnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5OwogICAgIGJvb2wgaW5p
dGlhbFNtb290aFBpeG1hcFRyYW5zZm9ybUhpbnQ7CiAKLSAgICBTaGFkb3dCbHVyKiBzaGFkb3c7
Ci0KICAgICBRUmVjdEYgY2xpcEJvdW5kaW5nUmVjdCgpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gcCgpLT5jbGlwQm91bmRpbmdSZWN0KCk7CkBAIC0yNzAsNyArMjY5LDYgQEAgR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUo
UVBhaW50ZXIqIHAsIGNvbnMKICAgICAsIHNvbGlkQ29sb3IoaW5pdGlhbFNvbGlkQ29sb3IpCiAg
ICAgLCBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25EZWZhdWx0KQogICAg
ICwgaW5pdGlhbFNtb290aFBpeG1hcFRyYW5zZm9ybUhpbnQoZmFsc2UpCi0gICAgLCBzaGFkb3co
bmV3IFNoYWRvd0JsdXIoKSkKICAgICAsIHBhaW50ZXIocCkKICAgICAsIHBsYXRmb3JtQ29udGV4
dElzT3duZWQoZmFsc2UpCiB7CkBAIC0yODksOCArMjg3LDYgQEAgR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUoUVBhaW50ZXIqIHAs
IGNvbnMKIAogR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjp+R3JhcGhpY3NDb250ZXh0
UGxhdGZvcm1Qcml2YXRlKCkKIHsKLSAgICBkZWxldGUgc2hhZG93OwotCiAgICAgaWYgKCFwbGF0
Zm9ybUNvbnRleHRJc093bmVkKQogICAgICAgICByZXR1cm47CiAKQEAgLTM1NSw4ICszNTEsNiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogICAgICAgICAg
ICAgZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpOwogCiAgICAgbV9kYXRhLT5wKCktPnJl
c3RvcmUoKTsKLQotICAgIG1fZGF0YS0+c2hhZG93LT5zZXRTaGFkb3dWYWx1ZXMoRmxvYXRTaXpl
KG1fc3RhdGUuc2hhZG93Qmx1ciwgbV9zdGF0ZS5zaGFkb3dCbHVyKSwgbV9zdGF0ZS5zaGFkb3dP
ZmZzZXQsIG1fc3RhdGUuc2hhZG93Q29sb3IsIG1fc3RhdGUuc2hhZG93Q29sb3JTcGFjZSwgbV9z
dGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CiB9CiAKIC8vIERyYXdzIGEgZmlsbGVkIHJl
Y3RhbmdsZSB3aXRoIGEgc3Ryb2tlZCBib3JkZXIuCkBAIC02MjgsMTAgKzYyMiwxMCBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICBwbGF0Zm9y
bVBhdGguc2V0RmlsbFJ1bGUodG9RdEZpbGxSdWxlKGZpbGxSdWxlKCkpKTsKIAogICAgIGlmICho
YXNTaGFkb3coKSkgewotICAgICAgICBTaGFkb3dCbHVyKiBzaGFkb3cgPSBzaGFkb3dCbHVyKCk7
Ci0gICAgICAgIGlmIChzaGFkb3ctPm11c3RVc2VTaGFkb3dCbHVyKHRoaXMpIHx8IG1fc3RhdGUu
ZmlsbFBhdHRlcm4gfHwgbV9zdGF0ZS5maWxsR3JhZGllbnQpCisgICAgICAgIGlmIChtdXN0VXNl
U2hhZG93Qmx1cigpIHx8IG1fc3RhdGUuZmlsbFBhdHRlcm4gfHwgbV9zdGF0ZS5maWxsR3JhZGll
bnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4
dCA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcih0aGlzLCBwbGF0Zm9ybVBhdGguY29udHJvbFBv
aW50UmVjdCgpKTsKKyAgICAgICAgICAgIFNoYWRvd0JsdXIgc2hhZG93KG1fc3RhdGUpOworICAg
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LmJlZ2luU2hh
ZG93TGF5ZXIodGhpcywgcGxhdGZvcm1QYXRoLmNvbnRyb2xQb2ludFJlY3QoKSk7CiAgICAgICAg
ICAgICBpZiAoc2hhZG93Q29udGV4dCkgewogICAgICAgICAgICAgICAgIFFQYWludGVyKiBzaGFk
b3dQYWludGVyID0gc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgICAgICAg
ICAgICAgaWYgKG1fc3RhdGUuZmlsbFBhdHRlcm4pIHsKQEAgLTY0Myw3ICs2MzcsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5maWxsUGF0
aChwbGF0Zm9ybVBhdGgsIHAtPmJydXNoKCkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHRoaXMpOworICAgICAgICAgICAgICAgIHNo
YWRvdy5lbmRTaGFkb3dMYXllcih0aGlzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIFFQb2ludEYgb2Zmc2V0KG1fc3RhdGUuc2hhZG93T2Zmc2V0LndpZHRo
KCksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsKQEAgLTY4NywxMiArNjgxLDEyIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAg
cGF0aFN0cm9rZXIuc2V0V2lkdGgocGVuLndpZHRoRigpKTsKIAogICAgIGlmIChoYXNTaGFkb3co
KSkgewotICAgICAgICBTaGFkb3dCbHVyKiBzaGFkb3cgPSBzaGFkb3dCbHVyKCk7Ci0gICAgICAg
IGlmIChzaGFkb3ctPm11c3RVc2VTaGFkb3dCbHVyKHRoaXMpIHx8IG1fc3RhdGUuc3Ryb2tlUGF0
dGVybiB8fCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50KQorICAgICAgICBpZiAobXVzdFVzZVNoYWRv
d0JsdXIoKSB8fCBtX3N0YXRlLnN0cm9rZVBhdHRlcm4gfHwgbV9zdGF0ZS5zdHJva2VHcmFkaWVu
dCkKICAgICAgICAgeworICAgICAgICAgICAgU2hhZG93Qmx1ciBzaGFkb3cobV9zdGF0ZSk7CiAg
ICAgICAgICAgICBGbG9hdFJlY3QgYm91bmRpbmdSZWN0ID0gcGxhdGZvcm1QYXRoLmNvbnRyb2xQ
b2ludFJlY3QoKTsKICAgICAgICAgICAgIGJvdW5kaW5nUmVjdC5pbmZsYXRlKHBlbi5taXRlckxp
bWl0KCkgKyBwZW4ud2lkdGhGKCkpOwotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFk
b3dDb250ZXh0ID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHRoaXMsIGJvdW5kaW5nUmVjdCk7
CisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVn
aW5TaGFkb3dMYXllcih0aGlzLCBib3VuZGluZ1JlY3QpOwogICAgICAgICAgICAgaWYgKHNoYWRv
d0NvbnRleHQpIHsKICAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNo
YWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgICAgICAgICAgICAgIGlmIChtX3N0
YXRlLnN0cm9rZUdyYWRpZW50KSB7CkBAIC03MDEsNyArNjk1LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgICAgICAgICAg
ZmlsbFBhdGhTdHJva2Uoc2hhZG93UGFpbnRlciwgcGF0aFN0cm9rZXIsIHBsYXRmb3JtUGF0aCwg
YnJ1c2gpOwogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBmaWxs
UGF0aFN0cm9rZShzaGFkb3dQYWludGVyLCBwYXRoU3Ryb2tlciwgcGxhdGZvcm1QYXRoLCBwZW4u
YnJ1c2goKSk7Ci0gICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcih0aGlzKTsK
KyAgICAgICAgICAgICAgICBzaGFkb3cuZW5kU2hhZG93TGF5ZXIodGhpcyk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBRUG9pbnRGIG9mZnNldChtX3N0YXRl
LnNoYWRvd09mZnNldC53aWR0aCgpLCBtX3N0YXRlLnNoYWRvd09mZnNldC5oZWlnaHQoKSk7CkBA
IC03NzksNDAgKzc3Myw0NiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogCiAgICAgUVBhaW50ZXIqIHAgPSBtX2RhdGEtPnAoKTsKICAgICBR
UmVjdEYgbm9ybWFsaXplZFJlY3QgPSByZWN0Lm5vcm1hbGl6ZWQoKTsKLSAgICBTaGFkb3dCbHVy
KiBzaGFkb3cgPSBzaGFkb3dCbHVyKCk7CiAKICAgICBpZiAobV9zdGF0ZS5maWxsUGF0dGVybikg
ewotICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBoYXNTaGFkb3coKSA/
IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcih0aGlzLCBub3JtYWxpemVkUmVjdCkgOiAwOwotICAg
ICAgICBpZiAoc2hhZG93Q29udGV4dCkgewotICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1Bh
aW50ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICAgICAgICAgIGRy
YXdSZXBlYXRQYXR0ZXJuKHNoYWRvd1BhaW50ZXIsIG1fc3RhdGUuZmlsbFBhdHRlcm4sIG5vcm1h
bGl6ZWRSZWN0KTsKLSAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIodGhpcyk7Cisg
ICAgICAgIGlmIChoYXNTaGFkb3coKSkgeworICAgICAgICAgICAgU2hhZG93Qmx1ciBzaGFkb3co
bV9zdGF0ZSk7CisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBz
aGFkb3cuYmVnaW5TaGFkb3dMYXllcih0aGlzLCBub3JtYWxpemVkUmVjdCk7CisgICAgICAgICAg
ICBpZiAoc2hhZG93Q29udGV4dCkgeworICAgICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQ
YWludGVyID0gc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgICAgICAgICAg
ICAgZHJhd1JlcGVhdFBhdHRlcm4oc2hhZG93UGFpbnRlciwgbV9zdGF0ZS5maWxsUGF0dGVybiwg
bm9ybWFsaXplZFJlY3QpOworICAgICAgICAgICAgICAgIHNoYWRvdy5lbmRTaGFkb3dMYXllcih0
aGlzKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBkcmF3UmVwZWF0UGF0dGVy
bihwLCBtX3N0YXRlLmZpbGxQYXR0ZXJuLCBub3JtYWxpemVkUmVjdCk7CiAgICAgfSBlbHNlIGlm
IChtX3N0YXRlLmZpbGxHcmFkaWVudCkgewogICAgICAgICBRQnJ1c2ggYnJ1c2goKm1fc3RhdGUu
ZmlsbEdyYWRpZW50LT5wbGF0Zm9ybUdyYWRpZW50KCkpOwogICAgICAgICBicnVzaC5zZXRUcmFu
c2Zvcm0obV9zdGF0ZS5maWxsR3JhZGllbnQtPmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7Ci0g
ICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IGhhc1NoYWRvdygpID8gc2hh
ZG93LT5iZWdpblNoYWRvd0xheWVyKHRoaXMsIG5vcm1hbGl6ZWRSZWN0KSA6IDA7Ci0gICAgICAg
IGlmIChzaGFkb3dDb250ZXh0KSB7Ci0gICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRl
ciA9IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwotICAgICAgICAgICAgc2hhZG93
UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIGJydXNoKTsKLSAgICAgICAgICAgIHNo
YWRvdy0+ZW5kU2hhZG93TGF5ZXIodGhpcyk7CisgICAgICAgIGlmIChoYXNTaGFkb3coKSkgewor
ICAgICAgICAgICAgU2hhZG93Qmx1ciBzaGFkb3cobV9zdGF0ZSk7CisgICAgICAgICAgICBHcmFw
aGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVnaW5TaGFkb3dMYXllcih0aGlz
LCBub3JtYWxpemVkUmVjdCk7CisgICAgICAgICAgICBpZiAoc2hhZG93Q29udGV4dCkgeworICAg
ICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93Q29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCk7CisgICAgICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qo
bm9ybWFsaXplZFJlY3QsIGJydXNoKTsKKyAgICAgICAgICAgICAgICBzaGFkb3cuZW5kU2hhZG93
TGF5ZXIodGhpcyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcC0+ZmlsbFJl
Y3Qobm9ybWFsaXplZFJlY3QsIGJydXNoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoaGFz
U2hhZG93KCkpIHsKLSAgICAgICAgICAgIGlmIChzaGFkb3ctPm11c3RVc2VTaGFkb3dCbHVyKHRo
aXMpKSB7CisgICAgICAgICAgICBpZiAobXVzdFVzZVNoYWRvd0JsdXIoKSkgeworICAgICAgICAg
ICAgICAgIFNoYWRvd0JsdXIgc2hhZG93KG1fc3RhdGUpOwogICAgICAgICAgICAgICAgIC8vIGRy
YXdSZWN0U2hhZG93V2l0aFRpbGluZyBkb2VzIG5vdCB3b3JrIHdpdGggcm90YXRpb25zLCBhbmQg
dGhlIGZhbGxiYWNrIG9mCiAgICAgICAgICAgICAgICAgLy8gZHJhd2luZyB0aG91Z2ggY2xpcFRv
SW1hZ2VCdWZmZXIoKSBwcm9kdWNlcyBzY2FsaW5nIGFydGlmYWN0cyBmb3IgdXMuCiAgICAgICAg
ICAgICAgICAgaWYgKCFnZXRDVE0oKS5wcmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LT5i
ZWdpblNoYWRvd0xheWVyKHRoaXMsIG5vcm1hbGl6ZWRSZWN0KTsKKyAgICAgICAgICAgICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LmJlZ2luU2hhZG93TGF5
ZXIodGhpcywgbm9ybWFsaXplZFJlY3QpOwogICAgICAgICAgICAgICAgICAgICBpZiAoc2hhZG93
Q29udGV4dCkgewogICAgICAgICAgICAgICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50
ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHNoYWRvd1BhaW50ZXItPmZpbGxSZWN0KG5vcm1hbGl6ZWRSZWN0LCBwLT5icnVzaCgp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIodGhpcyk7
CisgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3cuZW5kU2hhZG93TGF5ZXIodGhpcyk7CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgc2hhZG93LT5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0LCBSb3VuZGVkUmVjdDo6
UmFkaWkoKSk7CisgICAgICAgICAgICAgICAgICAgIHNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlz
LCByZWN0LCBSb3VuZGVkUmVjdDo6UmFkaWkoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIC8vIFNvbGlkIHJlY3RhbmdsZSBmaWxsIHdpdGggbm8gYmx1ciBzaGFkb3cg
b3IgdHJhbnNmb3JtYXRpb25zIGFwcGxpZWQgY2FuIGJlIGRvbmUKICAgICAgICAgICAgICAgICAv
LyBmYXN0ZXIgd2l0aG91dCB1c2luZyB0aGUgc2hhZG93IGxheWVyIGF0IGFsbC4KQEAgLTgzNSw5
ICs4MzUsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yUwogICAgIFFSZWN0RiBwbGF0Zm9ybVJl
Y3QocmVjdCk7CiAgICAgUVBhaW50ZXIqIHAgPSBtX2RhdGEtPnAoKTsKICAgICBpZiAoaGFzU2hh
ZG93KCkpIHsKLSAgICAgICAgU2hhZG93Qmx1ciogc2hhZG93ID0gc2hhZG93Qmx1cigpOwotICAg
ICAgICBpZiAoc2hhZG93LT5tdXN0VXNlU2hhZG93Qmx1cih0aGlzKSkgewotICAgICAgICAgICAg
c2hhZG93LT5kcmF3UmVjdFNoYWRvdyh0aGlzLCBwbGF0Zm9ybVJlY3QsIFJvdW5kZWRSZWN0OjpS
YWRpaSgpKTsKKyAgICAgICAgaWYgKG11c3RVc2VTaGFkb3dCbHVyKCkpIHsKKyAgICAgICAgICAg
IFNoYWRvd0JsdXIgc2hhZG93KG1fc3RhdGUpOworICAgICAgICAgICAgc2hhZG93LmRyYXdSZWN0
U2hhZG93KHRoaXMsIHBsYXRmb3JtUmVjdCwgUm91bmRlZFJlY3Q6OlJhZGlpKCkpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgUUNvbG9yIHNoYWRvd0NvbG9yID0gbV9zdGF0ZS5zaGFk
b3dDb2xvcjsKICAgICAgICAgICAgIHNoYWRvd0NvbG9yLnNldEFscGhhRihzaGFkb3dDb2xvci5h
bHBoYUYoKSAqIHAtPmJydXNoKCkuY29sb3IoKS5hbHBoYUYoKSk7CkBAIC04NTYsOSArODU2LDkg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWYKICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlY3Qs
IHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCk7CiAgICAgUVBhaW50
ZXIqIHAgPSBtX2RhdGEtPnAoKTsKICAgICBpZiAoaGFzU2hhZG93KCkpIHsKLSAgICAgICAgU2hh
ZG93Qmx1ciogc2hhZG93ID0gc2hhZG93Qmx1cigpOwotICAgICAgICBpZiAoc2hhZG93LT5tdXN0
VXNlU2hhZG93Qmx1cih0aGlzKSkgewotICAgICAgICAgICAgc2hhZG93LT5kcmF3UmVjdFNoYWRv
dyh0aGlzLCByZWN0LCBSb3VuZGVkUmVjdDo6UmFkaWkodG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRv
bUxlZnQsIGJvdHRvbVJpZ2h0KSk7CisgICAgICAgIGlmIChtdXN0VXNlU2hhZG93Qmx1cigpKSB7
CisgICAgICAgICAgICBTaGFkb3dCbHVyIHNoYWRvdyhtX3N0YXRlKTsKKyAgICAgICAgICAgIHNo
YWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0LCBSb3VuZGVkUmVjdDo6UmFkaWkodG9wTGVm
dCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBjb25zdCBRUG9pbnRGIHNoYWRvd09mZnNldChtX3N0YXRlLnNoYWRvd09m
ZnNldC53aWR0aCgpLCBtX3N0YXRlLnNoYWRvd09mZnNldC5oZWlnaHQoKSk7CiAgICAgICAgICAg
ICBwLT50cmFuc2xhdGUoc2hhZG93T2Zmc2V0KTsKQEAgLTg4NiwxMCArODg2LDEwIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBSb3VuZGVkCiAKICAgICBRUGFpbnRlciogcCA9IG1fZGF0YS0+cCgpOwogICAg
IGlmIChoYXNTaGFkb3coKSkgewotICAgICAgICBTaGFkb3dCbHVyKiBzaGFkb3cgPSBzaGFkb3dC
bHVyKCk7Ci0gICAgICAgIGlmIChzaGFkb3ctPm11c3RVc2VTaGFkb3dCbHVyKHRoaXMpKQotICAg
ICAgICAgICAgc2hhZG93LT5kcmF3SW5zZXRTaGFkb3codGhpcywgcmVjdCwgcm91bmRlZEhvbGVS
ZWN0LnJlY3QoKSwgcm91bmRlZEhvbGVSZWN0LnJhZGlpKCkpOwotICAgICAgICBlbHNlIHsKKyAg
ICAgICAgaWYgKG11c3RVc2VTaGFkb3dCbHVyKCkpIHsKKyAgICAgICAgICAgIFNoYWRvd0JsdXIg
c2hhZG93KG1fc3RhdGUpOworICAgICAgICAgICAgc2hhZG93LmRyYXdJbnNldFNoYWRvdyh0aGlz
LCByZWN0LCByb3VuZGVkSG9sZVJlY3QucmVjdCgpLCByb3VuZGVkSG9sZVJlY3QucmFkaWkoKSk7
CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjb25zdCBRUG9pbnRGIHNoYWRvd09mZnNl
dChtX3N0YXRlLnNoYWRvd09mZnNldC53aWR0aCgpLCBtX3N0YXRlLnNoYWRvd09mZnNldC5oZWln
aHQoKSk7CiAgICAgICAgICAgICBwLT50cmFuc2xhdGUoc2hhZG93T2Zmc2V0KTsKICAgICAgICAg
ICAgIHAtPmZpbGxQYXRoKHBsYXRmb3JtUGF0aCwgUUNvbG9yKG1fc3RhdGUuc2hhZG93Q29sb3Ip
KTsKQEAgLTkwNSwxMSArOTA1LDYgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQ6OmlzSW5UcmFuc3Bh
cmVuY3lMYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YS0+bGF5ZXJDb3VudDsKIH0KIAot
U2hhZG93Qmx1ciogR3JhcGhpY3NDb250ZXh0OjpzaGFkb3dCbHVyKCkKLXsKLSAgICByZXR1cm4g
bV9kYXRhLT5zaGFkb3c7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IElu
dFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKQEAgLTExNzAsMTkg
KzExNjUsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgYmx1ciwgY29uc3QKIHsKICAgICAvLyBRdCBkb2Vzbid0
IHN1cHBvcnQgc2hhZG93cyBuYXRpdmVseSwgdGhleSBhcmUgZHJhd24gbWFudWFsbHkgaW4gdGhl
IGRyYXcqCiAgICAgLy8gZnVuY3Rpb25zCi0KICAgICBpZiAobV9zdGF0ZS5zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcykgewogICAgICAgICAvLyBNZWFuaW5nIHRoYXQgdGhpcyBncmFwaGljcyBjb250
ZXh0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIENhbnZhc1JlbmRlcmluZ0NvbnRleHQKICAgICAgICAg
Ly8gV2UgZmxpcCB0aGUgaGVpZ2h0IHNpbmNlIENHIGFuZCBIVE1MNSBDYW52YXMgaGF2ZSBvcHBv
c2l0ZSBZIGF4aXMKICAgICAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUoc2l6
ZS53aWR0aCgpLCAtc2l6ZS5oZWlnaHQoKSk7CiAgICAgfQotCi0gICAgbV9kYXRhLT5zaGFkb3ct
PnNldFNoYWRvd1ZhbHVlcyhGbG9hdFNpemUobV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNo
YWRvd0JsdXIpLCBtX3N0YXRlLnNoYWRvd09mZnNldCwgY29sb3IsIGNvbG9yU3BhY2UsIG1fc3Rh
dGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
Y2xlYXJQbGF0Zm9ybVNoYWRvdygpCiB7Ci0gICAgbV9kYXRhLT5zaGFkb3ctPmNsZWFyKCk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwdXNoVHJhbnNwYXJlbmN5TGF5ZXJJbnRlcm5hbChj
b25zdCBRUmVjdCAmcmVjdCwgcXJlYWwgb3BhY2l0eSwgUVBpeG1hcCYgYWxwaGFNYXNrKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAppbmRleCBl
YjkyMzVjY2E0YmVkMjMwNDE2NzUyZWUyNzlhY2U0OWYzNDdhODZiLi5iODY2Nzg1OGJmYWRiMDBi
MTdiODZhM2EyMTI5ZDEzZTE4ZmI4YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcApAQCAtMjU5LDEyICsyNTksMTIgQEAgdm9pZCBCaXRt
YXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
LAogICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbighaW1hZ2UtPmhhc0FscGhhKCkgJiYg
b3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciA/IENvbXBvc2l0ZUNvcHkgOiBvcCk7CiAKICAgICBp
ZiAoY3R4dC0+aGFzU2hhZG93KCkpIHsKLSAgICAgICAgU2hhZG93Qmx1ciogc2hhZG93ID0gY3R4
dC0+c2hhZG93Qmx1cigpOwotICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQg
PSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIoY3R4dCwgbm9ybWFsaXplZERzdCk7CisgICAgICAg
IFNoYWRvd0JsdXIgc2hhZG93KGN0eHQtPnN0YXRlKCkpOworICAgICAgICBHcmFwaGljc0NvbnRl
eHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVnaW5TaGFkb3dMYXllcihjdHh0LCBub3JtYWxp
emVkRHN0KTsKICAgICAgICAgaWYgKHNoYWRvd0NvbnRleHQpIHsKICAgICAgICAgICAgIFFQYWlu
dGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAg
ICAgICAgICAgICBzaGFkb3dQYWludGVyLT5kcmF3UGl4bWFwKG5vcm1hbGl6ZWREc3QsICppbWFn
ZSwgbm9ybWFsaXplZFNyYyk7Ci0gICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKGN0
eHQpOworICAgICAgICAgICAgc2hhZG93LmVuZFNoYWRvd0xheWVyKGN0eHQpOwogICAgICAgICB9
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9TdGlsbEltYWdlUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
U3RpbGxJbWFnZVF0LmNwcAppbmRleCAzZTUzODdiZjc1Y2RkZjU2NWVmZTMwNTY1ZWZjMjdlNWI1
NjUwMTQ3Li5mNGY5OGYxZTU5ZTRlNWZjMTU4NTRiMmMwNGI5ODc3Mzk3ZDM0ODZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5j
cHAKQEAgLTgwLDEyICs4MCwxMiBAQCB2b2lkIFN0aWxsSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwKICAgICBjdHh0LT5zZXRDb21wb3NpdGVP
cGVyYXRpb24ob3ApOwogCiAgICAgaWYgKGN0eHQtPmhhc1NoYWRvdygpKSB7Ci0gICAgICAgIFNo
YWRvd0JsdXIqIHNoYWRvdyA9IGN0eHQtPnNoYWRvd0JsdXIoKTsKLSAgICAgICAgR3JhcGhpY3ND
b250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKGN0eHQsIG5v
cm1hbGl6ZWREc3QpOworICAgICAgICBTaGFkb3dCbHVyIHNoYWRvdyhjdHh0LT5zdGF0ZSgpKTsK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LmJlZ2luU2hh
ZG93TGF5ZXIoY3R4dCwgbm9ybWFsaXplZERzdCk7CiAgICAgICAgIGlmIChzaGFkb3dDb250ZXh0
KSB7CiAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9IHNoYWRvd0NvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpOwogICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZHJhd1BpeG1h
cChub3JtYWxpemVkRHN0LCAqbV9waXhtYXAsIG5vcm1hbGl6ZWRTcmMpOwotICAgICAgICAgICAg
c2hhZG93LT5lbmRTaGFkb3dMYXllcihjdHh0KTsKKyAgICAgICAgICAgIHNoYWRvdy5lbmRTaGFk
b3dMYXllcihjdHh0KTsKICAgICAgICAgfQogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196489</attachid>
            <date>2013-04-04 10:03:08 -0700</date>
            <delta_ts>2013-04-05 01:13:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113506-20130404190256.patch</filename>
            <type>text/plain</type>
            <size>31894</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3NjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzEwNDIzODI4ZjFmYjcy
YmU0MjdmNjg4OTdjMTkxNDEzOWMyNWQ1NC4uMzg3OTJhNmZjMDE4YzM2NWVhYzA5OGI1N2ViZGU4
MzMwODIzMjczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEzLTAzLTI4ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtR
dF0gQ3JlYXRlIFNoYWRvd0JsdXIgb24gZGVtYW5kLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjcmVhdGVzIFNoYWRvd0JsdXIgb2Jq
ZWN0cyBvbiBkZW1hbmQgaW5zdGVhZCBvZiBrZWVwaW5nIGEgc2luZ2xlIG9uZSBhbGl2ZSBmb3IK
KyAgICAgICAgZWFjaCBHcmFwaGljc0NvbnRleHQuIFRoaXMgbWF0Y2hlcyB3aGF0IG90aGVyIHBs
YXRmb3JtcyBkb2VzIGFuZCBmaXhlcyB0aGUgcHJvYmxlbSB3aXRoIAorICAgICAgICBhbiBhY3Rp
dmUgc2hhZG93Ymx1ciBiZWluZyBhZmZlY3RlZCBieSBjaGFuZ2luZyBzaGFkb3cgc2V0dGluZ3Mg
b24gdGhlIEdyYXBoaWNzQ29udGV4dC4KKworICAgICAgICBUaGUgbWV0aG9kIG11c3RVc2VTaGFk
b3dCbHVyIGlzIG1vdmVkIGZyb20gU2hhZG93Qmx1ciB0byBHcmFwaGNpc0NvbnRleHQsIHNvIHRo
YXQgaXQgY2FuCisgICAgICAgIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgU2hhZG93Qmx1ciBv
YmplY3Qgc2hvdWxkIGV2ZW4gYmUgZ2VuZXJhdGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6aGFzQmx1cnJlZFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6Om11c3RVc2VTaGFkb3dCbHVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dC
bHVyOjpTaGFkb3dCbHVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNTaGFkb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpm
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
Rm9udFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdRdEdseXBoUnVuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHA6CisgICAgICAgIChH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjp+R3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpmaWxsUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnN0cm9rZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRI
b2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFk
b3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclBsYXRmb3JtU2hh
ZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9TdGlsbEltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RpbGxJbWFnZTo6
ZHJhdyk6CisKIDIwMTMtMDQtMDQgIFhpZG9ybiBRdWFuICA8cXVhbnh1bnpoZW5AZ21haWwuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxNDU4NzApOiBDYW4ndCBnZXQgaW5zZXJ0aW9uIHBv
aW50IHRvIGFwcGVhciBpbiBzb21lIGlucHV0IGFuZCB0ZXh0YXJlYXMgb24gd29yZHByZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcAppbmRleCA1MDdiNGRlMDI0ODY1YmI2MzJkN2YyODFjMzIyYzRjOTc4ZjEyMzYyLi4yN2Jj
M2E5MzY0NDBmOWZkNjIzZmJhM2Y1MDUwYTQ4ZTc0NjFlNmY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTE4NCw2
ICsxODQsMjkgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyhGbG9hdFNpemUmIG9m
ZnNldCwgZmxvYXQmIGJsdXIsIENvbG9yJiBjb2xvciwgQ28KICAgICByZXR1cm4gaGFzU2hhZG93
KCk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0OjpoYXNCbHVycmVkU2hhZG93KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9zdGF0ZS5zaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgbV9zdGF0ZS5z
aGFkb3dDb2xvci5hbHBoYSgpICYmIG1fc3RhdGUuc2hhZG93Qmx1cjsKK30KKworI2lmIFBMQVRG
T1JNKFFUKSB8fCBVU0UoQ0FJUk8pCitib29sIEdyYXBoaWNzQ29udGV4dDo6bXVzdFVzZVNoYWRv
d0JsdXIoKSBjb25zdAoreworICAgIC8vIFdlIGNhbid0IGF2b2lkIFNoYWRvd0JsdXIgaWYgdGhl
IHNoYWRvdyBoYXMgYmx1ci4KKyAgICBpZiAoaGFzQmx1cnJlZFNoYWRvdygpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAvLyBXZSBjYW4gYXZvaWQgU2hhZG93Qmx1ciBhbmQgb3B0aW1pemUs
IHNpbmNlIHdlJ3JlIG5vdCBkcmF3aW5nIG9uIGEKKyAgICAvLyBjYW52YXMgYW5kIGJveCBzaGFk
b3dzIGFyZSBhZmZlY3RlZCBieSB0aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4LgorICAgIGlmICgh
bV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIC8vIFdlIGNhbiBhdm9pZCBTaGFkb3dCbHVyLCBzaW5jZSB0aGVyZSBhcmUgbm8gdHJhbnNm
b3JtYXRpb25zIHRvIGFwcGx5IHRvIHRoZSBjYW52YXMuCisgICAgaWYgKGdldENUTSgpLmlzSWRl
bnRpdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIE90aGVyd2lzZSwgbm8gY2hh
bmNlIGF2b2lkaW5nIFNoYWRvd0JsdXIuCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKwog
ZmxvYXQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VUaGlja25lc3MoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZDZmNmY1YjUxMjA2NzQ5Nzcz
MDBhNzk1NzdjZTRkYjhiZjVlNzI3OS4uMDg2MzkxYjdmYWE2MmJhOWFkMjEyYmFjOTNmZjgyZDky
YTUyMjM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKQEAgLTUzLDkgKzUzLDYgQEAgY2xhc3MgU3VyZmFjZU9wZW5WRzsKIHR5
cGVkZWYgY2xhc3MgV2ViQ29yZTo6U3VyZmFjZU9wZW5WRyBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dDsKICNlbGlmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFFQYWludGVyPgotbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgU2hhZG93Qmx1cjsKLX0KIHR5cGVkZWYgUVBhaW50ZXIgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQ7CiAjZWxpZiBQTEFURk9STShXWCkKIGNsYXNzIHd4R0NEQzsKQEAgLTM5
NCw2ICszOTEsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGdldFNoYWRv
dyhGbG9hdFNpemUmLCBmbG9hdCYsIENvbG9yJiwgQ29sb3JTcGFjZSYpIGNvbnN0OwogICAgICAg
ICB2b2lkIGNsZWFyU2hhZG93KCk7CiAKKyAgICAgICAgYm9vbCBoYXNCbHVycmVkU2hhZG93KCkg
Y29uc3Q7CisjaWYgUExBVEZPUk0oUVQpIHx8IFVTRShDQUlSTykKKyAgICAgICAgYm9vbCBtdXN0
VXNlU2hhZG93Qmx1cigpIGNvbnN0OworI2VuZGlmCisKICAgICAgICAgdm9pZCBkcmF3Rm9jdXNS
aW5nKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYsIGludCB3aWR0aCwgaW50IG9mZnNldCwgY29uc3Qg
Q29sb3ImKTsKICAgICAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmLCBpbnQgd2lk
dGgsIGludCBvZmZzZXQsIGNvbnN0IENvbG9yJik7CiAKQEAgLTUxNywxMCArNTE5LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHRha2VPd25lcnNoaXBPZlBsYXRmb3JtQ29u
dGV4dCgpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShRVCkKLSAgICAgICAgU2hhZG93Qmx1ciog
c2hhZG93Qmx1cigpOwotI2VuZGlmCi0KICNpZiBVU0UoQ0FJUk8pCiAgICAgICAgIEdyYXBoaWNz
Q29udGV4dChjYWlyb190Kik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggZTQ4YWExZDIwMzJkMTBhZjBlMGVhNWU5ZTM1
YzQ2MGRmNGQxZmRmMC4uZTM2ZmNlNjhiN2JjMGNlYmJkZDUzYWJlYThjOTUxNjYwM2QzMGI2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAK
QEAgLTMsNiArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgU2VuY2hhLCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0
ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBEaWdp
YSBQbGMuIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTY4LDYgKzE2OSwxMyBAQCBTY3JhdGNoQnVmZmVyJiBTY3JhdGNoQnVm
ZmVyOjpzaGFyZWQoKQogCiBzdGF0aWMgY29uc3QgaW50IHRlbXBsYXRlU2lkZUxlbmd0aCA9IDE7
CiAKKyNpZiBVU0UoQ0cpCitzdGF0aWMgZmxvYXQgcmFkaXVzVG9MZWdhY3lSYWRpdXMoZmxvYXQg
cmFkaXVzKQoreworICAgIHJldHVybiByYWRpdXMgPiA4ID8gOCArIDQgKiBzcXJ0KChyYWRpdXMg
LSA4KSAvIDIpIDogcmFkaXVzOworfQorI2VuZGlmCisKIFNoYWRvd0JsdXI6OlNoYWRvd0JsdXIo
Y29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBD
b2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKICAgICA6IG1fY29sb3IoY29sb3Ip
CiAgICAgLCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKQEAgLTE3OSw2ICsxODcsMjIgQEAgU2hh
ZG93Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRT
aXplJiBvZmZzZXQsIGNvbnN0IEMKICAgICB1cGRhdGVTaGFkb3dCbHVyVmFsdWVzKCk7CiB9CiAK
K1NoYWRvd0JsdXI6OlNoYWRvd0JsdXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
KQorICAgIDogbV9jb2xvcihzdGF0ZS5zaGFkb3dDb2xvcikKKyAgICAsIG1fY29sb3JTcGFjZShz
dGF0ZS5zaGFkb3dDb2xvclNwYWNlKQorICAgICwgbV9ibHVyUmFkaXVzKHN0YXRlLnNoYWRvd0Js
dXIsIHN0YXRlLnNoYWRvd0JsdXIpCisgICAgLCBtX29mZnNldChzdGF0ZS5zaGFkb3dPZmZzZXQp
CisgICAgLCBtX2xheWVySW1hZ2UoMCkKKyAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMo
c3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCit7CisjaWYgVVNFKENHKQorICAgIGlmIChz
dGF0ZS5zaGFkb3dzVXNlTGVnYWN5UmFkaXVzKQorICAgICAgICBmbG9hdCBzaGFkb3dCbHVyID0g
cmFkaXVzVG9MZWdhY3lSYWRpdXMoc3RhdGUuc2hhZG93Qmx1cik7CisgICAgICAgIG1fYmx1clJh
ZGl1cyA9IEZsb2F0U2l6ZShzaGFkb3dCbHVyLCBzaGFkb3dCbHVyKTsKKyNlbmRpZgorICAgIHVw
ZGF0ZVNoYWRvd0JsdXJWYWx1ZXMoKTsKK30KKwogU2hhZG93Qmx1cjo6U2hhZG93Qmx1cigpCiAg
ICAgOiBtX3R5cGUoTm9TaGFkb3cpCiAgICAgLCBtX2JsdXJSYWRpdXMoMCwgMCkKQEAgLTg5Nywy
MiArOTIxLDQgQEAgdm9pZCBTaGFkb3dCbHVyOjplbmRTaGFkb3dMYXllcihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQpCiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2NoZWR1bGVTY3JhdGNo
QnVmZmVyUHVyZ2UoKTsKIH0KIAotI2lmIFBMQVRGT1JNKFFUKSB8fCBVU0UoQ0FJUk8pCi1ib29s
IFNoYWRvd0JsdXI6Om11c3RVc2VTaGFkb3dCbHVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkg
Y29uc3QKLXsKLSAgICAvLyBXZSBjYW4ndCBhdm9pZCBTaGFkb3dCbHVyLCBzaW5jZSB0aGUgc2hh
ZG93IGhhcyBibHVyLgotICAgIGlmICh0eXBlKCkgPT0gQmx1clNoYWRvdykKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgLy8gV2UgY2FuIGF2b2lkIFNoYWRvd0JsdXIgYW5kIG9wdGltaXplLCBz
aW5jZSB3ZSdyZSBub3QgZHJhd2luZyBvbiBhCi0gICAgLy8gY2FudmFzIGFuZCBib3ggc2hhZG93
cyBhcmUgYWZmZWN0ZWQgYnkgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4KLSAgICBpZiAoIXNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAvLyBX
ZSBjYW4gYXZvaWQgU2hhZG93Qmx1ciwgc2luY2UgdGhlcmUgYXJlIG5vIHRyYW5zZm9ybWF0aW9u
cyB0byBhcHBseSB0byB0aGUgY2FudmFzLgotICAgIGlmIChjb250ZXh0LT5nZXRDVE0oKS5pc0lk
ZW50aXR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAvLyBPdGhlcndpc2UsIG5vIGNo
YW5jZSBhdm9pZGluZyBTaGFkb3dCbHVyLgotICAgIHJldHVybiB0cnVlOwotfQotI2VuZGlmCi0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuaAppbmRleCBlODhhNjY2MDc0ZmIzMjZlZTE0ZWU1NGU0ZGQ3YTk5ODYx
NjdkMjBmLi4zMmZmNjBiNmNiMDNiMjJiOTY4YzhlNzg2N2Q4M2E2ZmFmOTIwNDE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC0zOSw2ICsz
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xh
c3MgR3JhcGhpY3NDb250ZXh0Oworc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlOwogY2xhc3Mg
SW1hZ2VCdWZmZXI7CiAKIGNsYXNzIFNoYWRvd0JsdXIgewpAQCAtNTEsNiArNTIsNyBAQCBwdWJs
aWM6CiAgICAgfTsKIAogICAgIFNoYWRvd0JsdXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNv
bnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgIFNo
YWRvd0JsdXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKICAgICBTaGFkb3dCbHVyKCk7
CiAKICAgICB2b2lkIHNldFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9h
dFNpemUmICwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlLCBib29sIGlnbm9yZVRyYW5zZm9ybXMg
PSBmYWxzZSk7CkBAIC03MCwxMCArNzIsNiBAQCBwdWJsaWM6CiAKICAgICBTaGFkb3dUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAotI2lmIFBMQVRGT1JNKFFUKSB8fCBVU0Uo
Q0FJUk8pCi0gICAgYm9vbCBtdXN0VXNlU2hhZG93Qmx1cihHcmFwaGljc0NvbnRleHQqKSBjb25z
dDsKLSNlbmRpZgotCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU2hhZG93Qmx1clZhbHVlcygp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dENhaXJvLmNwcAppbmRleCA5YTBmZDMwNWFmZmU1YzdlNjJiZDhlYmI1MTY0YWUyNDlhMzk5YmE1
Li45MTIzY2NjZGY3Njc3ZDU1YTE0NmI4NTY3ZTg1Y2NlZjBiZjg3OThhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAg
LTY5LDcgKzY5LDcgQEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICBpZiAoIShncmFwaGlj
c0NvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB8fCBzaGFkb3cudHlw
ZSgpID09IFNoYWRvd0JsdXI6Ok5vU2hhZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IXNoYWRvdy5tdXN0VXNlU2hhZG93Qmx1cihncmFwaGljc0NvbnRleHQpKSB7CisgICAgaWYgKCFn
cmFwaGljc0NvbnRleHQtPm11c3RVc2VTaGFkb3dCbHVyKCkpIHsKICAgICAgICAgLy8gT3B0aW1p
emUgbm9uLWJsdXJyeSBzaGFkb3dzLCBieSBqdXN0IGRyYXdpbmcgdGV4dCB3aXRob3V0IHRoZSBT
aGFkb3dCbHVyLgogICAgICAgICBjYWlyb190KiBjb250ZXh0ID0gZ3JhcGhpY3NDb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICAgICAgY2Fpcm9fc2F2ZShjb250ZXh0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAppbmRleCA5ZTE4ODkxNWEwOTNiZTI0NmY4MjcxNzY5ZjhhMDZhOTY5NzUw
OTM2Li42Y2U5ZmQ1OTEwMjY3MjQ0OWUxNjRjZDNjYzlkNDBhNGUxODY2MWZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCkBAIC03NjIsMTYgKzc2Miw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJv
a2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgQ0dDb250ZXh0U3Ryb2tlUGF0aChjb250ZXh0
KTsKIH0KIAotc3RhdGljIGZsb2F0IHJhZGl1c1RvTGVnYWN5UmFkaXVzKGZsb2F0IHJhZGl1cykK
LXsKLSAgICByZXR1cm4gcmFkaXVzID4gOCA/IDggKyA0ICogc3FydCgocmFkaXVzIC0gOCkgLyAy
KSA6IHJhZGl1czsKLX0KLQotc3RhdGljIGJvb2wgaGFzQmx1cnJlZFNoYWRvdyhjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCi17Ci0gICAgcmV0dXJuIHN0YXRlLnNoYWRvd0NvbG9y
LmlzVmFsaWQoKSAmJiBzdGF0ZS5zaGFkb3dDb2xvci5hbHBoYSgpICYmIHN0YXRlLnNoYWRvd0Js
dXI7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKQEAgLTgwOCwxNCArNzk4LDEz
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiAgICAgaWYgKG1fc3RhdGUuZmlsbFBhdHRlcm4pCiAgICAgICAgIGFwcGx5RmlsbFBhdHRlcm4o
KTsKIAotICAgIGJvb2wgZHJhd093blNoYWRvdyA9ICFpc0FjY2VsZXJhdGVkQ29udGV4dCgpICYm
IGhhc0JsdXJyZWRTaGFkb3cobV9zdGF0ZSkgJiYgIW1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXM7IC8vIERvbid0IHVzZSBTaGFkb3dCbHVyIGZvciBjYW52YXMgeWV0LgorICAgIGJvb2wg
ZHJhd093blNoYWRvdyA9ICFpc0FjY2VsZXJhdGVkQ29udGV4dCgpICYmIGhhc0JsdXJyZWRTaGFk
b3coKSAmJiAhbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgLy8gRG9uJ3QgdXNlIFNo
YWRvd0JsdXIgZm9yIGNhbnZhcyB5ZXQuCiAgICAgaWYgKGRyYXdPd25TaGFkb3cpIHsKLSAgICAg
ICAgZmxvYXQgc2hhZG93Qmx1ciA9IG1fc3RhdGUuc2hhZG93c1VzZUxlZ2FjeVJhZGl1cyA/IHJh
ZGl1c1RvTGVnYWN5UmFkaXVzKG1fc3RhdGUuc2hhZG93Qmx1cikgOiBtX3N0YXRlLnNoYWRvd0Js
dXI7CiAgICAgICAgIC8vIFR1cm4gb2ZmIENHIHNoYWRvd3MuCiAgICAgICAgIENHQ29udGV4dFNh
dmVHU3RhdGUoY29udGV4dCk7CiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihw
bGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKLSAgICAgICAgU2hhZG93Qmx1
ciBjb250ZXh0U2hhZG93KEZsb2F0U2l6ZShzaGFkb3dCbHVyLCBzaGFkb3dCbHVyKSwgbV9zdGF0
ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Q29sb3IsIG1fc3RhdGUuc2hhZG93Q29sb3JT
cGFjZSk7CisgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsKICAgICAg
ICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0LCBSb3VuZGVkUmVjdDo6
UmFkaWkoKSk7CiAgICAgfQogCkBAIC04MzcsMTQgKzgyNiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3Is
IENvbG9yUwogICAgIGlmIChvbGRGaWxsQ29sb3IgIT0gY29sb3IgfHwgb2xkQ29sb3JTcGFjZSAh
PSBjb2xvclNwYWNlKQogICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBjb2xvciwgY29s
b3JTcGFjZSk7CiAKLSAgICBib29sIGRyYXdPd25TaGFkb3cgPSAhaXNBY2NlbGVyYXRlZENvbnRl
eHQoKSAmJiBoYXNCbHVycmVkU2hhZG93KG1fc3RhdGUpICYmICFtX3N0YXRlLnNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zOyAvLyBEb24ndCB1c2UgU2hhZG93Qmx1ciBmb3IgY2FudmFzIHlldC4KKyAg
ICBib29sIGRyYXdPd25TaGFkb3cgPSAhaXNBY2NlbGVyYXRlZENvbnRleHQoKSAmJiBoYXNCbHVy
cmVkU2hhZG93KCkgJiYgIW1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IC8vIERvbid0
IHVzZSBTaGFkb3dCbHVyIGZvciBjYW52YXMgeWV0LgogICAgIGlmIChkcmF3T3duU2hhZG93KSB7
Ci0gICAgICAgIGZsb2F0IHNoYWRvd0JsdXIgPSBtX3N0YXRlLnNoYWRvd3NVc2VMZWdhY3lSYWRp
dXMgPyByYWRpdXNUb0xlZ2FjeVJhZGl1cyhtX3N0YXRlLnNoYWRvd0JsdXIpIDogbV9zdGF0ZS5z
aGFkb3dCbHVyOwogICAgICAgICAvLyBUdXJuIG9mZiBDRyBzaGFkb3dzLgogICAgICAgICBDR0Nv
bnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRo
Q29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCi0gICAgICAgIFNo
YWRvd0JsdXIgY29udGV4dFNoYWRvdyhGbG9hdFNpemUoc2hhZG93Qmx1ciwgc2hhZG93Qmx1ciks
IG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRv
d0NvbG9yU3BhY2UpOworICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7
CiAgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgcmVjdCwgUm91bmRl
ZFJlY3Q6OlJhZGlpKCkpOwogICAgIH0KIApAQCAtODY5LDE1ICs4NTcsMTMgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJ
bnRTaXplJiB0b3BMZWYKICAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9yIHx8IG9sZENvbG9y
U3BhY2UgIT0gY29sb3JTcGFjZSkKICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29udGV4dCwgY29s
b3IsIGNvbG9yU3BhY2UpOwogCi0gICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkgJiYgaGFzQmx1cnJlZFNoYWRvdyhtX3N0YXRlKSAmJiAhbV9zdGF0ZS5zaGFk
b3dzSWdub3JlVHJhbnNmb3JtczsgLy8gRG9uJ3QgdXNlIFNoYWRvd0JsdXIgZm9yIGNhbnZhcyB5
ZXQuCisgICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgJiYg
aGFzQmx1cnJlZFNoYWRvdygpICYmICFtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyAv
LyBEb24ndCB1c2UgU2hhZG93Qmx1ciBmb3IgY2FudmFzIHlldC4KICAgICBpZiAoZHJhd093blNo
YWRvdykgewotICAgICAgICBmbG9hdCBzaGFkb3dCbHVyID0gbV9zdGF0ZS5zaGFkb3dzVXNlTGVn
YWN5UmFkaXVzID8gcmFkaXVzVG9MZWdhY3lSYWRpdXMobV9zdGF0ZS5zaGFkb3dCbHVyKSA6IG1f
c3RhdGUuc2hhZG93Qmx1cjsKLQogICAgICAgICAvLyBUdXJuIG9mZiBDRyBzaGFkb3dzLgogICAg
ICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogICAgICAgICBDR0NvbnRleHRTZXRT
aGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCi0g
ICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhGbG9hdFNpemUoc2hhZG93Qmx1ciwgc2hh
ZG93Qmx1ciksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0NvbG9yLCBtX3N0
YXRlLnNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3co
bV9zdGF0ZSk7CiAgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgcmVj
dCwgUm91bmRlZFJlY3Q6OlJhZGlpKHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0
b21SaWdodCkpOwogICAgIH0KIApAQCAtOTIyLDE1ICs5MDgsMTMgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0
IFJvdW5kZWQKICAgICBzZXRGaWxsQ29sb3IoY29sb3IsIGNvbG9yU3BhY2UpOwogCiAgICAgLy8g
ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoKSBhc3N1bWVzIHRoYXQgdGhlIGVkZ2VzIG9mIHJlY3Qg
YXJlIGNsaXBwZWQgb3V0LCBzbyB3ZSBvbmx5IGNhcmUgYWJvdXQgc2hhZG93cyBjYXN0IGFyb3Vu
ZCBpbnNpZGUgdGhlIGhvbGUuCi0gICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkgJiYgaGFzQmx1cnJlZFNoYWRvdyhtX3N0YXRlKSAmJiAhbV9zdGF0ZS5zaGFk
b3dzSWdub3JlVHJhbnNmb3JtczsKKyAgICBib29sIGRyYXdPd25TaGFkb3cgPSAhaXNBY2NlbGVy
YXRlZENvbnRleHQoKSAmJiBoYXNCbHVycmVkU2hhZG93KCkgJiYgIW1fc3RhdGUuc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXM7CiAgICAgaWYgKGRyYXdPd25TaGFkb3cpIHsKLSAgICAgICAgZmxvYXQg
c2hhZG93Qmx1ciA9IG1fc3RhdGUuc2hhZG93c1VzZUxlZ2FjeVJhZGl1cyA/IHJhZGl1c1RvTGVn
YWN5UmFkaXVzKG1fc3RhdGUuc2hhZG93Qmx1cikgOiBtX3N0YXRlLnNoYWRvd0JsdXI7Ci0KICAg
ICAgICAgLy8gVHVybiBvZmYgQ0cgc2hhZG93cy4KICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0
ZShjb250ZXh0KTsKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3Jt
Q29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAotICAgICAgICBTaGFkb3dCbHVyIGNvbnRl
eHRTaGFkb3coRmxvYXRTaXplKHNoYWRvd0JsdXIsIHNoYWRvd0JsdXIpLCBtX3N0YXRlLnNoYWRv
d09mZnNldCwgbV9zdGF0ZS5zaGFkb3dDb2xvciwgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlKTsK
KyAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwogICAgICAgICBjb250
ZXh0U2hhZG93LmRyYXdJbnNldFNoYWRvdyh0aGlzLCByZWN0LCByb3VuZGVkSG9sZVJlY3QucmVj
dCgpLCByb3VuZGVkSG9sZVJlY3QucmFkaWkoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNwcAppbmRleCAzYWZiYjM1MjhlOGY0NjVk
OTExMmI4Y2RiMTFlYjAxYWEwYjUwZTdhLi5iNDZiNzhiNjdjZmRlYmM4MTgyMGQ0MzkyMTYxMzM5
NWUwN2VhYTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9Gb250UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0Zv
bnRRdC5jcHAKQEAgLTEyNSw0MyArMTI1LDM1IEBAIHN0YXRpYyB2b2lkIGRyYXdRdEdseXBoUnVu
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgUUdseXBoUnVuJiBxdEdseXBoUnVuCiAg
ICAgaWYgKGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVTdHJva2UpCiAgICAg
ICAgIHRleHRTdHJva2VQYXRoID0gcGF0aEZvckdseXBocyhxdEdseXBoUnVuLCBwb2ludCk7CiAK
LSAgICBTaGFkb3dCbHVyKiBzaGFkb3cgPSBjb250ZXh0LT5zaGFkb3dCbHVyKCk7Ci0gICAgaWYg
KGNvbnRleHQtPmhhc1NoYWRvdygpICYmIHNoYWRvdy0+dHlwZSgpICE9IFNoYWRvd0JsdXI6Ok5v
U2hhZG93KSB7Ci0gICAgICAgIHN3aXRjaCAoc2hhZG93LT50eXBlKCkpIHsKLSAgICAgICAgY2Fz
ZSBTaGFkb3dCbHVyOjpTb2xpZFNoYWRvdzogewotICAgICAgICAgICAgUVBlbiBwcmV2aW91c1Bl
biA9IHBhaW50ZXItPnBlbigpOwotICAgICAgICAgICAgcGFpbnRlci0+c2V0UGVuKGNvbnRleHQt
PnN0YXRlKCkuc2hhZG93Q29sb3IpOwotICAgICAgICAgICAgY29uc3QgUVBvaW50RiBzaGFkb3dP
ZmZzZXQoY29udGV4dC0+c3RhdGUoKS5zaGFkb3dPZmZzZXQud2lkdGgoKSwgY29udGV4dC0+c3Rh
dGUoKS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOwotICAgICAgICAgICAgcGFpbnRlci0+dHJhbnNs
YXRlKHNoYWRvd09mZnNldCk7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+dGV4dERyYXdpbmdN
b2RlKCkgJiBUZXh0TW9kZUZpbGwpCi0gICAgICAgICAgICAgICAgcGFpbnRlci0+ZHJhd0dseXBo
UnVuKHBvaW50LCBxdEdseXBoUnVuKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRleHQtPnRl
eHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVTdHJva2UpCi0gICAgICAgICAgICAgICAgcGFpbnRl
ci0+c3Ryb2tlUGF0aCh0ZXh0U3Ryb2tlUGF0aCwgcGFpbnRlci0+cGVuKCkpOwotICAgICAgICAg
ICAgcGFpbnRlci0+dHJhbnNsYXRlKC1zaGFkb3dPZmZzZXQpOwotICAgICAgICAgICAgcGFpbnRl
ci0+c2V0UGVuKHByZXZpb3VzUGVuKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgU2hhZG93Qmx1cjo6Qmx1clNoYWRvdzogeworICAgIGlmIChjb250ZXh0LT5o
YXNTaGFkb3coKSkgeworICAgICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUg
PSBjb250ZXh0LT5zdGF0ZSgpOworICAgICAgICBpZiAoY29udGV4dC0+bXVzdFVzZVNoYWRvd0Js
dXIoKSkgeworICAgICAgICAgICAgU2hhZG93Qmx1ciBzaGFkb3coc3RhdGUpOwogICAgICAgICAg
ICAgY29uc3QgaW50IHdpZHRoID0gcXRHbHlwaFJ1bi5ib3VuZGluZ1JlY3QoKS53aWR0aCgpOwog
ICAgICAgICAgICAgY29uc3QgUVJhd0ZvbnQmIGZvbnQgPSBxdEdseXBoUnVuLnJhd0ZvbnQoKTsK
ICAgICAgICAgICAgIGNvbnN0IGludCBoZWlnaHQgPSBmb250LmFzY2VudCgpICsgZm9udC5kZXNj
ZW50KCk7CiAgICAgICAgICAgICBjb25zdCBRUmVjdEYgYm91bmRpbmdSZWN0KHBvaW50LngoKSwg
cG9pbnQueSgpIC0gZm9udC5hc2NlbnQoKSArIGJhc2VMaW5lT2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
KTsKLSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy0+
YmVnaW5TaGFkb3dMYXllcihjb250ZXh0LCBib3VuZGluZ1JlY3QpOworICAgICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LmJlZ2luU2hhZG93TGF5ZXIoY29u
dGV4dCwgYm91bmRpbmdSZWN0KTsKICAgICAgICAgICAgIGlmIChzaGFkb3dDb250ZXh0KSB7CiAg
ICAgICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3dDb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKTsKLSAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5zZXRQZW4o
c2hhZG93Q29udGV4dC0+c3RhdGUoKS5zaGFkb3dDb2xvcik7CisgICAgICAgICAgICAgICAgc2hh
ZG93UGFpbnRlci0+c2V0UGVuKHN0YXRlLnNoYWRvd0NvbG9yKTsKICAgICAgICAgICAgICAgICBp
ZiAoc2hhZG93Q29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZUZpbGwpCiAgICAg
ICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmRyYXdHbHlwaFJ1bihwb2ludCwgcXRHbHlw
aFJ1bik7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hhZG93Q29udGV4dC0+dGV4dERyYXdp
bmdNb2RlKCkgJiBUZXh0TW9kZVN0cm9rZSkKICAgICAgICAgICAgICAgICAgICAgc2hhZG93UGFp
bnRlci0+c3Ryb2tlUGF0aCh0ZXh0U3Ryb2tlUGF0aCwgc2hhZG93UGFpbnRlci0+cGVuKCkpOwot
ICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoY29udGV4dCk7CisgICAgICAg
ICAgICAgICAgc2hhZG93LmVuZFNoYWRvd0xheWVyKGNvbnRleHQpOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBTaGFkb3dCbHVyOjpO
b1NoYWRvdzoKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBR
UGVuIHByZXZpb3VzUGVuID0gcGFpbnRlci0+cGVuKCk7CisgICAgICAgICAgICBwYWludGVyLT5z
ZXRQZW4oc3RhdGUuc2hhZG93Q29sb3IpOworICAgICAgICAgICAgY29uc3QgUVBvaW50RiBzaGFk
b3dPZmZzZXQoc3RhdGUuc2hhZG93T2Zmc2V0LndpZHRoKCksIHN0YXRlLnNoYWRvd09mZnNldC5o
ZWlnaHQoKSk7CisgICAgICAgICAgICBwYWludGVyLT50cmFuc2xhdGUoc2hhZG93T2Zmc2V0KTsK
KyAgICAgICAgICAgIGlmIChjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlRmls
bCkKKyAgICAgICAgICAgICAgICBwYWludGVyLT5kcmF3R2x5cGhSdW4ocG9pbnQsIHF0R2x5cGhS
dW4pOworICAgICAgICAgICAgZWxzZSBpZiAoY29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBU
ZXh0TW9kZVN0cm9rZSkKKyAgICAgICAgICAgICAgICBwYWludGVyLT5zdHJva2VQYXRoKHRleHRT
dHJva2VQYXRoLCBwYWludGVyLT5wZW4oKSk7CisgICAgICAgICAgICBwYWludGVyLT50cmFuc2xh
dGUoLXNoYWRvd09mZnNldCk7CisgICAgICAgICAgICBwYWludGVyLT5zZXRQZW4ocHJldmlvdXNQ
ZW4pOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKaW5kZXggOWE3MTQ1NTJk
YzhmMDA1NmIyNmYzOTc5OWQ1Y2VkYmFlNWIzOTBlZC4uMGQzZGFlZDgxMmNjOTJhMWRlYjg0NGNl
YmM2ZjQ3ZmQ4Y2IxZThjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtMTAsNiArMTAsNyBAQAog
ICogQ29weXJpZ2h0IChDKSAyMDA4IERpcmsgU2NodWx6ZSA8dmJzODVAZ214LmRlPgogICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDExIFNlbmNoYSwgSW5jLgogICogQ29weXJpZ2h0IChDKSAyMDEx
IEFuZHJlYXMgS2xpbmcgPGtsaW5nQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
RGlnaWEgUGxjLiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCkBAIC0yNTAsOCArMjUxLDYgQEAgcHVibGljOgogICAgIEludGVycG9s
YXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7CiAgICAgYm9vbCBpbml0aWFs
U21vb3RoUGl4bWFwVHJhbnNmb3JtSGludDsKIAotICAgIFNoYWRvd0JsdXIqIHNoYWRvdzsKLQog
ICAgIFFSZWN0RiBjbGlwQm91bmRpbmdSZWN0KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBwKCktPmNsaXBCb3VuZGluZ1JlY3QoKTsKQEAgLTI3MCw3ICsyNjksNiBAQCBHcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShRUGFp
bnRlciogcCwgY29ucwogICAgICwgc29saWRDb2xvcihpbml0aWFsU29saWRDb2xvcikKICAgICAs
IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkRlZmF1bHQpCiAgICAgLCBp
bml0aWFsU21vb3RoUGl4bWFwVHJhbnNmb3JtSGludChmYWxzZSkKLSAgICAsIHNoYWRvdyhuZXcg
U2hhZG93Qmx1cigpKQogICAgICwgcGFpbnRlcihwKQogICAgICwgcGxhdGZvcm1Db250ZXh0SXNP
d25lZChmYWxzZSkKIHsKQEAgLTI4OSw4ICsyODcsNiBAQCBHcmFwaGljc0NvbnRleHRQbGF0Zm9y
bVByaXZhdGU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShRUGFpbnRlciogcCwgY29u
cwogCiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6On5HcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGUoKQogewotICAgIGRlbGV0ZSBzaGFkb3c7Ci0KICAgICBpZiAoIXBsYXRmb3Jt
Q29udGV4dElzT3duZWQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzU1LDggKzM1MSw2IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgICAgICAgICBl
bmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCk7CiAKICAgICBtX2RhdGEtPnAoKS0+cmVzdG9y
ZSgpOwotCi0gICAgbV9kYXRhLT5zaGFkb3ctPnNldFNoYWRvd1ZhbHVlcyhGbG9hdFNpemUobV9z
dGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNoYWRvd0JsdXIpLCBtX3N0YXRlLnNoYWRvd09mZnNl
dCwgbV9zdGF0ZS5zaGFkb3dDb2xvciwgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlLCBtX3N0YXRl
LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKIH0KIAogLy8gRHJhd3MgYSBmaWxsZWQgcmVjdGFu
Z2xlIHdpdGggYSBzdHJva2VkIGJvcmRlci4KQEAgLTYyOCwxMCArNjIyLDEwIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgIHBsYXRmb3JtUGF0
aC5zZXRGaWxsUnVsZSh0b1F0RmlsbFJ1bGUoZmlsbFJ1bGUoKSkpOwogCiAgICAgaWYgKGhhc1No
YWRvdygpKSB7Ci0gICAgICAgIFNoYWRvd0JsdXIqIHNoYWRvdyA9IHNoYWRvd0JsdXIoKTsKLSAg
ICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZVNoYWRvd0JsdXIodGhpcykgfHwgbV9zdGF0ZS5maWxs
UGF0dGVybiB8fCBtX3N0YXRlLmZpbGxHcmFkaWVudCkKKyAgICAgICAgaWYgKG11c3RVc2VTaGFk
b3dCbHVyKCkgfHwgbV9zdGF0ZS5maWxsUGF0dGVybiB8fCBtX3N0YXRlLmZpbGxHcmFkaWVudCkK
ICAgICAgICAgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0g
c2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHRoaXMsIHBsYXRmb3JtUGF0aC5jb250cm9sUG9pbnRS
ZWN0KCkpOworICAgICAgICAgICAgU2hhZG93Qmx1ciBzaGFkb3cobV9zdGF0ZSk7CisgICAgICAg
ICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVnaW5TaGFkb3dM
YXllcih0aGlzLCBwbGF0Zm9ybVBhdGguY29udHJvbFBvaW50UmVjdCgpKTsKICAgICAgICAgICAg
IGlmIChzaGFkb3dDb250ZXh0KSB7CiAgICAgICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1Bh
aW50ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICAgICAgICAgICAg
ICBpZiAobV9zdGF0ZS5maWxsUGF0dGVybikgewpAQCAtNjQzLDcgKzYzNyw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmZpbGxQYXRoKHBs
YXRmb3JtUGF0aCwgcC0+YnJ1c2goKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIodGhpcyk7CisgICAgICAgICAgICAgICAgc2hhZG93
LmVuZFNoYWRvd0xheWVyKHRoaXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgUVBvaW50RiBvZmZzZXQobV9zdGF0ZS5zaGFkb3dPZmZzZXQud2lkdGgoKSwg
bV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOwpAQCAtNjg3LDEyICs2ODEsMTIgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICBwYXRo
U3Ryb2tlci5zZXRXaWR0aChwZW4ud2lkdGhGKCkpOwogCiAgICAgaWYgKGhhc1NoYWRvdygpKSB7
Ci0gICAgICAgIFNoYWRvd0JsdXIqIHNoYWRvdyA9IHNoYWRvd0JsdXIoKTsKLSAgICAgICAgaWYg
KHNoYWRvdy0+bXVzdFVzZVNoYWRvd0JsdXIodGhpcykgfHwgbV9zdGF0ZS5zdHJva2VQYXR0ZXJu
IHx8IG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQpCisgICAgICAgIGlmIChtdXN0VXNlU2hhZG93Qmx1
cigpIHx8IG1fc3RhdGUuc3Ryb2tlUGF0dGVybiB8fCBtX3N0YXRlLnN0cm9rZUdyYWRpZW50KQog
ICAgICAgICB7CisgICAgICAgICAgICBTaGFkb3dCbHVyIHNoYWRvdyhtX3N0YXRlKTsKICAgICAg
ICAgICAgIEZsb2F0UmVjdCBib3VuZGluZ1JlY3QgPSBwbGF0Zm9ybVBhdGguY29udHJvbFBvaW50
UmVjdCgpOwogICAgICAgICAgICAgYm91bmRpbmdSZWN0LmluZmxhdGUocGVuLm1pdGVyTGltaXQo
KSArIHBlbi53aWR0aEYoKSk7Ci0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0Nv
bnRleHQgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIodGhpcywgYm91bmRpbmdSZWN0KTsKKyAg
ICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy5iZWdpblNo
YWRvd0xheWVyKHRoaXMsIGJvdW5kaW5nUmVjdCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93Q29u
dGV4dCkgewogICAgICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93
Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fc3RhdGUu
c3Ryb2tlR3JhZGllbnQpIHsKQEAgLTcwMSw3ICs2OTUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgICAgICAgICBmaWxs
UGF0aFN0cm9rZShzaGFkb3dQYWludGVyLCBwYXRoU3Ryb2tlciwgcGxhdGZvcm1QYXRoLCBicnVz
aCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGZpbGxQYXRo
U3Ryb2tlKHNoYWRvd1BhaW50ZXIsIHBhdGhTdHJva2VyLCBwbGF0Zm9ybVBhdGgsIHBlbi5icnVz
aCgpKTsKLSAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHRoaXMpOworICAg
ICAgICAgICAgICAgIHNoYWRvdy5lbmRTaGFkb3dMYXllcih0aGlzKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFFQb2ludEYgb2Zmc2V0KG1fc3RhdGUuc2hh
ZG93T2Zmc2V0LndpZHRoKCksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsKQEAgLTc3
OSw0MCArNzczLDQ2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiAKICAgICBRUGFpbnRlciogcCA9IG1fZGF0YS0+cCgpOwogICAgIFFSZWN0
RiBub3JtYWxpemVkUmVjdCA9IHJlY3Qubm9ybWFsaXplZCgpOwotICAgIFNoYWRvd0JsdXIqIHNo
YWRvdyA9IHNoYWRvd0JsdXIoKTsKIAogICAgIGlmIChtX3N0YXRlLmZpbGxQYXR0ZXJuKSB7Ci0g
ICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IGhhc1NoYWRvdygpID8gc2hh
ZG93LT5iZWdpblNoYWRvd0xheWVyKHRoaXMsIG5vcm1hbGl6ZWRSZWN0KSA6IDA7Ci0gICAgICAg
IGlmIChzaGFkb3dDb250ZXh0KSB7Ci0gICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRl
ciA9IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwotICAgICAgICAgICAgZHJhd1Jl
cGVhdFBhdHRlcm4oc2hhZG93UGFpbnRlciwgbV9zdGF0ZS5maWxsUGF0dGVybiwgbm9ybWFsaXpl
ZFJlY3QpOwotICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcih0aGlzKTsKKyAgICAg
ICAgaWYgKGhhc1NoYWRvdygpKSB7CisgICAgICAgICAgICBTaGFkb3dCbHVyIHNoYWRvdyhtX3N0
YXRlKTsKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRv
dy5iZWdpblNoYWRvd0xheWVyKHRoaXMsIG5vcm1hbGl6ZWRSZWN0KTsKKyAgICAgICAgICAgIGlm
IChzaGFkb3dDb250ZXh0KSB7CisgICAgICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50
ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICAgICAgICAgICAgICBk
cmF3UmVwZWF0UGF0dGVybihzaGFkb3dQYWludGVyLCBtX3N0YXRlLmZpbGxQYXR0ZXJuLCBub3Jt
YWxpemVkUmVjdCk7CisgICAgICAgICAgICAgICAgc2hhZG93LmVuZFNoYWRvd0xheWVyKHRoaXMp
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGRyYXdSZXBlYXRQYXR0ZXJuKHAs
IG1fc3RhdGUuZmlsbFBhdHRlcm4sIG5vcm1hbGl6ZWRSZWN0KTsKICAgICB9IGVsc2UgaWYgKG1f
c3RhdGUuZmlsbEdyYWRpZW50KSB7CiAgICAgICAgIFFCcnVzaCBicnVzaCgqbV9zdGF0ZS5maWxs
R3JhZGllbnQtPnBsYXRmb3JtR3JhZGllbnQoKSk7CiAgICAgICAgIGJydXNoLnNldFRyYW5zZm9y
bShtX3N0YXRlLmZpbGxHcmFkaWVudC0+Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgpKTsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gaGFzU2hhZG93KCkgPyBzaGFkb3ct
PmJlZ2luU2hhZG93TGF5ZXIodGhpcywgbm9ybWFsaXplZFJlY3QpIDogMDsKLSAgICAgICAgaWYg
KHNoYWRvd0NvbnRleHQpIHsKLSAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0g
c2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgICAgICAgICBzaGFkb3dQYWlu
dGVyLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgYnJ1c2gpOwotICAgICAgICAgICAgc2hhZG93
LT5lbmRTaGFkb3dMYXllcih0aGlzKTsKKyAgICAgICAgaWYgKGhhc1NoYWRvdygpKSB7CisgICAg
ICAgICAgICBTaGFkb3dCbHVyIHNoYWRvdyhtX3N0YXRlKTsKKyAgICAgICAgICAgIEdyYXBoaWNz
Q29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy5iZWdpblNoYWRvd0xheWVyKHRoaXMsIG5v
cm1hbGl6ZWRSZWN0KTsKKyAgICAgICAgICAgIGlmIChzaGFkb3dDb250ZXh0KSB7CisgICAgICAg
ICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKKyAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5maWxsUmVjdChub3Jt
YWxpemVkUmVjdCwgYnJ1c2gpOworICAgICAgICAgICAgICAgIHNoYWRvdy5lbmRTaGFkb3dMYXll
cih0aGlzKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBwLT5maWxsUmVjdChu
b3JtYWxpemVkUmVjdCwgYnJ1c2gpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChoYXNTaGFk
b3coKSkgewotICAgICAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZVNoYWRvd0JsdXIodGhpcykp
IHsKKyAgICAgICAgICAgIGlmIChtdXN0VXNlU2hhZG93Qmx1cigpKSB7CisgICAgICAgICAgICAg
ICAgU2hhZG93Qmx1ciBzaGFkb3cobV9zdGF0ZSk7CiAgICAgICAgICAgICAgICAgLy8gZHJhd1Jl
Y3RTaGFkb3dXaXRoVGlsaW5nIGRvZXMgbm90IHdvcmsgd2l0aCByb3RhdGlvbnMsIGFuZCB0aGUg
ZmFsbGJhY2sgb2YKICAgICAgICAgICAgICAgICAvLyBkcmF3aW5nIHRob3VnaCBjbGlwVG9JbWFn
ZUJ1ZmZlcigpIHByb2R1Y2VzIHNjYWxpbmcgYXJ0aWZhY3RzIGZvciB1cy4KICAgICAgICAgICAg
ICAgICBpZiAoIWdldENUTSgpLnByZXNlcnZlc0F4aXNBbGlnbm1lbnQoKSkgewotICAgICAgICAg
ICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3ctPmJlZ2lu
U2hhZG93TGF5ZXIodGhpcywgbm9ybWFsaXplZFJlY3QpOworICAgICAgICAgICAgICAgICAgICBH
cmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVnaW5TaGFkb3dMYXllcih0
aGlzLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzaGFkb3dDb250
ZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93UGFpbnRlciA9
IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIHAtPmJydXNoKCkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcih0aGlzKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNoYWRvdy5lbmRTaGFkb3dMYXllcih0aGlzKTsKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
ICAgICBzaGFkb3ctPmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRp
aSgpKTsKKyAgICAgICAgICAgICAgICAgICAgc2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJl
Y3QsIFJvdW5kZWRSZWN0OjpSYWRpaSgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgLy8gU29saWQgcmVjdGFuZ2xlIGZpbGwgd2l0aCBubyBibHVyIHNoYWRvdyBvciB0
cmFuc2Zvcm1hdGlvbnMgYXBwbGllZCBjYW4gYmUgZG9uZQogICAgICAgICAgICAgICAgIC8vIGZh
c3RlciB3aXRob3V0IHVzaW5nIHRoZSBzaGFkb3cgbGF5ZXIgYXQgYWxsLgpAQCAtODM1LDkgKzgz
NSw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgUVJlY3RGIHBsYXRmb3JtUmVjdChy
ZWN0KTsKICAgICBRUGFpbnRlciogcCA9IG1fZGF0YS0+cCgpOwogICAgIGlmIChoYXNTaGFkb3co
KSkgewotICAgICAgICBTaGFkb3dCbHVyKiBzaGFkb3cgPSBzaGFkb3dCbHVyKCk7Ci0gICAgICAg
IGlmIChzaGFkb3ctPm11c3RVc2VTaGFkb3dCbHVyKHRoaXMpKSB7Ci0gICAgICAgICAgICBzaGFk
b3ctPmRyYXdSZWN0U2hhZG93KHRoaXMsIHBsYXRmb3JtUmVjdCwgUm91bmRlZFJlY3Q6OlJhZGlp
KCkpOworICAgICAgICBpZiAobXVzdFVzZVNoYWRvd0JsdXIoKSkgeworICAgICAgICAgICAgU2hh
ZG93Qmx1ciBzaGFkb3cobV9zdGF0ZSk7CisgICAgICAgICAgICBzaGFkb3cuZHJhd1JlY3RTaGFk
b3codGhpcywgcGxhdGZvcm1SZWN0LCBSb3VuZGVkUmVjdDo6UmFkaWkoKSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBRQ29sb3Igc2hhZG93Q29sb3IgPSBtX3N0YXRlLnNoYWRvd0Nv
bG9yOwogICAgICAgICAgICAgc2hhZG93Q29sb3Iuc2V0QWxwaGFGKHNoYWRvd0NvbG9yLmFscGhh
RigpICogcC0+YnJ1c2goKS5jb2xvcigpLmFscGhhRigpKTsKQEAgLTg1Niw5ICs4NTYsOSBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJlY3QmIHJlY3Qs
IGNvbnN0IEludFNpemUmIHRvcExlZgogICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgdG9w
TGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKICAgICBRUGFpbnRlciog
cCA9IG1fZGF0YS0+cCgpOwogICAgIGlmIChoYXNTaGFkb3coKSkgewotICAgICAgICBTaGFkb3dC
bHVyKiBzaGFkb3cgPSBzaGFkb3dCbHVyKCk7Ci0gICAgICAgIGlmIChzaGFkb3ctPm11c3RVc2VT
aGFkb3dCbHVyKHRoaXMpKSB7Ci0gICAgICAgICAgICBzaGFkb3ctPmRyYXdSZWN0U2hhZG93KHRo
aXMsIHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVm
dCwgYm90dG9tUmlnaHQpKTsKKyAgICAgICAgaWYgKG11c3RVc2VTaGFkb3dCbHVyKCkpIHsKKyAg
ICAgICAgICAgIFNoYWRvd0JsdXIgc2hhZG93KG1fc3RhdGUpOworICAgICAgICAgICAgc2hhZG93
LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0
b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIGNvbnN0IFFQb2ludEYgc2hhZG93T2Zmc2V0KG1fc3RhdGUuc2hhZG93T2Zmc2V0
LndpZHRoKCksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsKICAgICAgICAgICAgIHAt
PnRyYW5zbGF0ZShzaGFkb3dPZmZzZXQpOwpAQCAtODg2LDEwICs4ODYsMTAgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJlY3Qs
IGNvbnN0IFJvdW5kZWQKIAogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7CiAgICAgaWYg
KGhhc1NoYWRvdygpKSB7Ci0gICAgICAgIFNoYWRvd0JsdXIqIHNoYWRvdyA9IHNoYWRvd0JsdXIo
KTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZVNoYWRvd0JsdXIodGhpcykpCi0gICAgICAg
ICAgICBzaGFkb3ctPmRyYXdJbnNldFNoYWRvdyh0aGlzLCByZWN0LCByb3VuZGVkSG9sZVJlY3Qu
cmVjdCgpLCByb3VuZGVkSG9sZVJlY3QucmFkaWkoKSk7Ci0gICAgICAgIGVsc2UgeworICAgICAg
ICBpZiAobXVzdFVzZVNoYWRvd0JsdXIoKSkgeworICAgICAgICAgICAgU2hhZG93Qmx1ciBzaGFk
b3cobV9zdGF0ZSk7CisgICAgICAgICAgICBzaGFkb3cuZHJhd0luc2V0U2hhZG93KHRoaXMsIHJl
Y3QsIHJvdW5kZWRIb2xlUmVjdC5yZWN0KCksIHJvdW5kZWRIb2xlUmVjdC5yYWRpaSgpKTsKKyAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNvbnN0IFFQb2ludEYgc2hhZG93T2Zmc2V0KG1f
c3RhdGUuc2hhZG93T2Zmc2V0LndpZHRoKCksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LmhlaWdodCgp
KTsKICAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShzaGFkb3dPZmZzZXQpOwogICAgICAgICAgICAg
cC0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3IobV9zdGF0ZS5zaGFkb3dDb2xvcikpOwpA
QCAtOTA1LDExICs5MDUsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6aXNJblRyYW5zcGFyZW5j
eUxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhLT5sYXllckNvdW50OwogfQogCi1TaGFk
b3dCbHVyKiBHcmFwaGljc0NvbnRleHQ6OnNoYWRvd0JsdXIoKQotewotICAgIHJldHVybiBtX2Rh
dGEtPnNoYWRvdzsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXAoY29uc3QgSW50UmVj
dCYgcmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQpAQCAtMTE3MCwxOSArMTE2
NSwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coY29uc3QgRmxv
YXRTaXplJiBzaXplLCBmbG9hdCBibHVyLCBjb25zdAogewogICAgIC8vIFF0IGRvZXNuJ3Qgc3Vw
cG9ydCBzaGFkb3dzIG5hdGl2ZWx5LCB0aGV5IGFyZSBkcmF3biBtYW51YWxseSBpbiB0aGUgZHJh
dyoKICAgICAvLyBmdW5jdGlvbnMKLQogICAgIGlmIChtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKSB7CiAgICAgICAgIC8vIE1lYW5pbmcgdGhhdCB0aGlzIGdyYXBoaWNzIGNvbnRleHQg
aXMgYXNzb2NpYXRlZCB3aXRoIGEgQ2FudmFzUmVuZGVyaW5nQ29udGV4dAogICAgICAgICAvLyBX
ZSBmbGlwIHRoZSBoZWlnaHQgc2luY2UgQ0cgYW5kIEhUTUw1IENhbnZhcyBoYXZlIG9wcG9zaXRl
IFkgYXhpcwogICAgICAgICBtX3N0YXRlLnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZShzaXplLndp
ZHRoKCksIC1zaXplLmhlaWdodCgpKTsKICAgICB9Ci0KLSAgICBtX2RhdGEtPnNoYWRvdy0+c2V0
U2hhZG93VmFsdWVzKEZsb2F0U2l6ZShtX3N0YXRlLnNoYWRvd0JsdXIsIG1fc3RhdGUuc2hhZG93
Qmx1ciksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBjb2xvciwgY29sb3JTcGFjZSwgbV9zdGF0ZS5z
aGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVh
clBsYXRmb3JtU2hhZG93KCkKIHsKLSAgICBtX2RhdGEtPnNoYWRvdy0+Y2xlYXIoKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnB1c2hUcmFuc3BhcmVuY3lMYXllckludGVybmFsKGNvbnN0
IFFSZWN0ICZyZWN0LCBxcmVhbCBvcGFjaXR5LCBRUGl4bWFwJiBhbHBoYU1hc2spCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCmluZGV4IGViOTIz
NWNjYTRiZWQyMzA0MTY3NTJlZTI3OWFjZTQ5ZjM0N2E4NmIuLmI4NjY3ODU4YmZhZGIwMGIxN2I4
NmEzYTIxMjlkMTNlMThmYjhhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0ltYWdlUXQuY3BwCkBAIC0yNTksMTIgKzI1OSwxMiBAQCB2b2lkIEJpdG1hcElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsCiAg
ICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCFpbWFnZS0+aGFzQWxwaGEoKSAmJiBvcCA9
PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9zaXRlQ29weSA6IG9wKTsKIAogICAgIGlmIChj
dHh0LT5oYXNTaGFkb3coKSkgewotICAgICAgICBTaGFkb3dCbHVyKiBzaGFkb3cgPSBjdHh0LT5z
aGFkb3dCbHVyKCk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNo
YWRvdy0+YmVnaW5TaGFkb3dMYXllcihjdHh0LCBub3JtYWxpemVkRHN0KTsKKyAgICAgICAgU2hh
ZG93Qmx1ciBzaGFkb3coY3R4dC0+c3RhdGUoKSk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCog
c2hhZG93Q29udGV4dCA9IHNoYWRvdy5iZWdpblNoYWRvd0xheWVyKGN0eHQsIG5vcm1hbGl6ZWRE
c3QpOwogICAgICAgICBpZiAoc2hhZG93Q29udGV4dCkgewogICAgICAgICAgICAgUVBhaW50ZXIq
IHNoYWRvd1BhaW50ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICAg
ICAgICAgIHNoYWRvd1BhaW50ZXItPmRyYXdQaXhtYXAobm9ybWFsaXplZERzdCwgKmltYWdlLCBu
b3JtYWxpemVkU3JjKTsKLSAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoY3R4dCk7
CisgICAgICAgICAgICBzaGFkb3cuZW5kU2hhZG93TGF5ZXIoY3R4dCk7CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0
aWxsSW1hZ2VRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGls
bEltYWdlUXQuY3BwCmluZGV4IDNlNTM4N2JmNzVjZGRmNTY1ZWZlMzA1NjVlZmMyN2U1YjU2NTAx
NDcuLmY0Zjk4ZjFlNTllNGU1ZmMxNTg1NGIyYzA0Yjk4NzczOTdkMzQ4NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcApA
QCAtODAsMTIgKzgwLDEyIEBAIHZvaWQgU3RpbGxJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQq
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LAogICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJh
dGlvbihvcCk7CiAKICAgICBpZiAoY3R4dC0+aGFzU2hhZG93KCkpIHsKLSAgICAgICAgU2hhZG93
Qmx1ciogc2hhZG93ID0gY3R4dC0+c2hhZG93Qmx1cigpOwotICAgICAgICBHcmFwaGljc0NvbnRl
eHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIoY3R4dCwgbm9ybWFs
aXplZERzdCk7CisgICAgICAgIFNoYWRvd0JsdXIgc2hhZG93KGN0eHQtPnN0YXRlKCkpOworICAg
ICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVnaW5TaGFkb3dM
YXllcihjdHh0LCBub3JtYWxpemVkRHN0KTsKICAgICAgICAgaWYgKHNoYWRvd0NvbnRleHQpIHsK
ICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93Q29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCk7CiAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5kcmF3UGl4bWFwKG5v
cm1hbGl6ZWREc3QsICptX3BpeG1hcCwgbm9ybWFsaXplZFNyYyk7Ci0gICAgICAgICAgICBzaGFk
b3ctPmVuZFNoYWRvd0xheWVyKGN0eHQpOworICAgICAgICAgICAgc2hhZG93LmVuZFNoYWRvd0xh
eWVyKGN0eHQpOwogICAgICAgICB9CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196592</attachid>
            <date>2013-04-05 01:13:16 -0700</date>
            <delta_ts>2013-04-05 07:10:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113506-20130405101303.patch</filename>
            <type>text/plain</type>
            <size>31903</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3NjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzEwNDIzODI4ZjFmYjcy
YmU0MjdmNjg4OTdjMTkxNDEzOWMyNWQ1NC4uMzg3OTJhNmZjMDE4YzM2NWVhYzA5OGI1N2ViZGU4
MzMwODIzMjczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEzLTAzLTI4ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFtR
dF0gQ3JlYXRlIFNoYWRvd0JsdXIgb24gZGVtYW5kLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjcmVhdGVzIFNoYWRvd0JsdXIgb2Jq
ZWN0cyBvbiBkZW1hbmQgaW5zdGVhZCBvZiBrZWVwaW5nIGEgc2luZ2xlIG9uZSBhbGl2ZSBmb3IK
KyAgICAgICAgZWFjaCBHcmFwaGljc0NvbnRleHQuIFRoaXMgbWF0Y2hlcyB3aGF0IG90aGVyIHBs
YXRmb3JtcyBkb2VzIGFuZCBmaXhlcyB0aGUgcHJvYmxlbSB3aXRoIAorICAgICAgICBhbiBhY3Rp
dmUgc2hhZG93Ymx1ciBiZWluZyBhZmZlY3RlZCBieSBjaGFuZ2luZyBzaGFkb3cgc2V0dGluZ3Mg
b24gdGhlIEdyYXBoaWNzQ29udGV4dC4KKworICAgICAgICBUaGUgbWV0aG9kIG11c3RVc2VTaGFk
b3dCbHVyIGlzIG1vdmVkIGZyb20gU2hhZG93Qmx1ciB0byBHcmFwaGNpc0NvbnRleHQsIHNvIHRo
YXQgaXQgY2FuCisgICAgICAgIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgU2hhZG93Qmx1ciBv
YmplY3Qgc2hvdWxkIGV2ZW4gYmUgZ2VuZXJhdGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6aGFzQmx1cnJlZFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6Om11c3RVc2VTaGFkb3dCbHVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dC
bHVyOjpTaGFkb3dCbHVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNTaGFkb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUm91bmRlZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpm
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
Rm9udFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdRdEdseXBoUnVuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHA6CisgICAgICAgIChH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjp+R3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpmaWxsUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnN0cm9rZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRI
b2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFk
b3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclBsYXRmb3JtU2hh
ZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9xdC9TdGlsbEltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RpbGxJbWFnZTo6
ZHJhdyk6CisKIDIwMTMtMDQtMDQgIFhpZG9ybiBRdWFuICA8cXVhbnh1bnpoZW5AZ21haWwuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxNDU4NzApOiBDYW4ndCBnZXQgaW5zZXJ0aW9uIHBv
aW50IHRvIGFwcGVhciBpbiBzb21lIGlucHV0IGFuZCB0ZXh0YXJlYXMgb24gd29yZHByZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcAppbmRleCA1MDdiNGRlMDI0ODY1YmI2MzJkN2YyODFjMzIyYzRjOTc4ZjEyMzYyLi4yN2Jj
M2E5MzY0NDBmOWZkNjIzZmJhM2Y1MDUwYTQ4ZTc0NjFlNmY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTE4NCw2
ICsxODQsMjkgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyhGbG9hdFNpemUmIG9m
ZnNldCwgZmxvYXQmIGJsdXIsIENvbG9yJiBjb2xvciwgQ28KICAgICByZXR1cm4gaGFzU2hhZG93
KCk7CiB9CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0OjpoYXNCbHVycmVkU2hhZG93KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9zdGF0ZS5zaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgbV9zdGF0ZS5z
aGFkb3dDb2xvci5hbHBoYSgpICYmIG1fc3RhdGUuc2hhZG93Qmx1cjsKK30KKworI2lmIFBMQVRG
T1JNKFFUKSB8fCBVU0UoQ0FJUk8pCitib29sIEdyYXBoaWNzQ29udGV4dDo6bXVzdFVzZVNoYWRv
d0JsdXIoKSBjb25zdAoreworICAgIC8vIFdlIGNhbid0IGF2b2lkIFNoYWRvd0JsdXIgaWYgdGhl
IHNoYWRvdyBoYXMgYmx1ci4KKyAgICBpZiAoaGFzQmx1cnJlZFNoYWRvdygpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAvLyBXZSBjYW4gYXZvaWQgU2hhZG93Qmx1ciBhbmQgb3B0aW1pemUs
IHNpbmNlIHdlJ3JlIG5vdCBkcmF3aW5nIG9uIGEKKyAgICAvLyBjYW52YXMgYW5kIGJveCBzaGFk
b3dzIGFyZSBhZmZlY3RlZCBieSB0aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4LgorICAgIGlmICgh
bV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIC8vIFdlIGNhbiBhdm9pZCBTaGFkb3dCbHVyLCBzaW5jZSB0aGVyZSBhcmUgbm8gdHJhbnNm
b3JtYXRpb25zIHRvIGFwcGx5IHRvIHRoZSBjYW52YXMuCisgICAgaWYgKGdldENUTSgpLmlzSWRl
bnRpdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIE90aGVyd2lzZSwgbm8gY2hh
bmNlIGF2b2lkaW5nIFNoYWRvd0JsdXIuCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKwog
ZmxvYXQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VUaGlja25lc3MoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZDZmNmY1YjUxMjA2NzQ5Nzcz
MDBhNzk1NzdjZTRkYjhiZjVlNzI3OS4uMDg2MzkxYjdmYWE2MmJhOWFkMjEyYmFjOTNmZjgyZDky
YTUyMjM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKQEAgLTUzLDkgKzUzLDYgQEAgY2xhc3MgU3VyZmFjZU9wZW5WRzsKIHR5
cGVkZWYgY2xhc3MgV2ViQ29yZTo6U3VyZmFjZU9wZW5WRyBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dDsKICNlbGlmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFFQYWludGVyPgotbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgU2hhZG93Qmx1cjsKLX0KIHR5cGVkZWYgUVBhaW50ZXIgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQ7CiAjZWxpZiBQTEFURk9STShXWCkKIGNsYXNzIHd4R0NEQzsKQEAgLTM5
NCw2ICszOTEsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGdldFNoYWRv
dyhGbG9hdFNpemUmLCBmbG9hdCYsIENvbG9yJiwgQ29sb3JTcGFjZSYpIGNvbnN0OwogICAgICAg
ICB2b2lkIGNsZWFyU2hhZG93KCk7CiAKKyAgICAgICAgYm9vbCBoYXNCbHVycmVkU2hhZG93KCkg
Y29uc3Q7CisjaWYgUExBVEZPUk0oUVQpIHx8IFVTRShDQUlSTykKKyAgICAgICAgYm9vbCBtdXN0
VXNlU2hhZG93Qmx1cigpIGNvbnN0OworI2VuZGlmCisKICAgICAgICAgdm9pZCBkcmF3Rm9jdXNS
aW5nKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYsIGludCB3aWR0aCwgaW50IG9mZnNldCwgY29uc3Qg
Q29sb3ImKTsKICAgICAgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmLCBpbnQgd2lk
dGgsIGludCBvZmZzZXQsIGNvbnN0IENvbG9yJik7CiAKQEAgLTUxNywxMCArNTE5LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHRha2VPd25lcnNoaXBPZlBsYXRmb3JtQ29u
dGV4dCgpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShRVCkKLSAgICAgICAgU2hhZG93Qmx1ciog
c2hhZG93Qmx1cigpOwotI2VuZGlmCi0KICNpZiBVU0UoQ0FJUk8pCiAgICAgICAgIEdyYXBoaWNz
Q29udGV4dChjYWlyb190Kik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggZTQ4YWExZDIwMzJkMTBhZjBlMGVhNWU5ZTM1
YzQ2MGRmNGQxZmRmMC4uZmZkZWQ5MTkyZThlZmFiYWE5MmVjYWJhZjUxOGYzMTc2ODg2YzRkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAK
QEAgLTMsNiArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgU2VuY2hhLCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0
ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBEaWdp
YSBQbGMuIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTY4LDYgKzE2OSwxMyBAQCBTY3JhdGNoQnVmZmVyJiBTY3JhdGNoQnVm
ZmVyOjpzaGFyZWQoKQogCiBzdGF0aWMgY29uc3QgaW50IHRlbXBsYXRlU2lkZUxlbmd0aCA9IDE7
CiAKKyNpZiBVU0UoQ0cpCitzdGF0aWMgZmxvYXQgcmFkaXVzVG9MZWdhY3lSYWRpdXMoZmxvYXQg
cmFkaXVzKQoreworICAgIHJldHVybiByYWRpdXMgPiA4ID8gOCArIDQgKiBzcXJ0KChyYWRpdXMg
LSA4KSAvIDIpIDogcmFkaXVzOworfQorI2VuZGlmCisKIFNoYWRvd0JsdXI6OlNoYWRvd0JsdXIo
Y29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBD
b2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKICAgICA6IG1fY29sb3IoY29sb3Ip
CiAgICAgLCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKQEAgLTE3OSw2ICsxODcsMjMgQEAgU2hh
ZG93Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRT
aXplJiBvZmZzZXQsIGNvbnN0IEMKICAgICB1cGRhdGVTaGFkb3dCbHVyVmFsdWVzKCk7CiB9CiAK
K1NoYWRvd0JsdXI6OlNoYWRvd0JsdXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
KQorICAgIDogbV9jb2xvcihzdGF0ZS5zaGFkb3dDb2xvcikKKyAgICAsIG1fY29sb3JTcGFjZShz
dGF0ZS5zaGFkb3dDb2xvclNwYWNlKQorICAgICwgbV9ibHVyUmFkaXVzKHN0YXRlLnNoYWRvd0Js
dXIsIHN0YXRlLnNoYWRvd0JsdXIpCisgICAgLCBtX29mZnNldChzdGF0ZS5zaGFkb3dPZmZzZXQp
CisgICAgLCBtX2xheWVySW1hZ2UoMCkKKyAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMo
c3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCit7CisjaWYgVVNFKENHKQorICAgIGlmIChz
dGF0ZS5zaGFkb3dzVXNlTGVnYWN5UmFkaXVzKSB7CisgICAgICAgIGZsb2F0IHNoYWRvd0JsdXIg
PSByYWRpdXNUb0xlZ2FjeVJhZGl1cyhzdGF0ZS5zaGFkb3dCbHVyKTsKKyAgICAgICAgbV9ibHVy
UmFkaXVzID0gRmxvYXRTaXplKHNoYWRvd0JsdXIsIHNoYWRvd0JsdXIpOworICAgIH0KKyNlbmRp
ZgorICAgIHVwZGF0ZVNoYWRvd0JsdXJWYWx1ZXMoKTsKK30KKwogU2hhZG93Qmx1cjo6U2hhZG93
Qmx1cigpCiAgICAgOiBtX3R5cGUoTm9TaGFkb3cpCiAgICAgLCBtX2JsdXJSYWRpdXMoMCwgMCkK
QEAgLTg5NywyMiArOTIyLDQgQEAgdm9pZCBTaGFkb3dCbHVyOjplbmRTaGFkb3dMYXllcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQpCiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkuc2NoZWR1
bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKIH0KIAotI2lmIFBMQVRGT1JNKFFUKSB8fCBVU0UoQ0FJ
Uk8pCi1ib29sIFNoYWRvd0JsdXI6Om11c3RVc2VTaGFkb3dCbHVyKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCkgY29uc3QKLXsKLSAgICAvLyBXZSBjYW4ndCBhdm9pZCBTaGFkb3dCbHVyLCBzaW5j
ZSB0aGUgc2hhZG93IGhhcyBibHVyLgotICAgIGlmICh0eXBlKCkgPT0gQmx1clNoYWRvdykKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgLy8gV2UgY2FuIGF2b2lkIFNoYWRvd0JsdXIgYW5kIG9w
dGltaXplLCBzaW5jZSB3ZSdyZSBub3QgZHJhd2luZyBvbiBhCi0gICAgLy8gY2FudmFzIGFuZCBi
b3ggc2hhZG93cyBhcmUgYWZmZWN0ZWQgYnkgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeC4KLSAg
ICBpZiAoIXNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAvLyBXZSBjYW4gYXZvaWQgU2hhZG93Qmx1ciwgc2luY2UgdGhlcmUgYXJlIG5vIHRyYW5z
Zm9ybWF0aW9ucyB0byBhcHBseSB0byB0aGUgY2FudmFzLgotICAgIGlmIChjb250ZXh0LT5nZXRD
VE0oKS5pc0lkZW50aXR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAvLyBPdGhlcndp
c2UsIG5vIGNoYW5jZSBhdm9pZGluZyBTaGFkb3dCbHVyLgotICAgIHJldHVybiB0cnVlOwotfQot
I2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAppbmRleCBlODhhNjY2MDc0ZmIzMjZlZTE0ZWU1NGU0
ZGQ3YTk5ODYxNjdkMjBmLi4zMmZmNjBiNmNiMDNiMjJiOTY4YzhlNzg2N2Q4M2E2ZmFmOTIwNDE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBA
IC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWZmaW5lVHJhbnNm
b3JtOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0Oworc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
OwogY2xhc3MgSW1hZ2VCdWZmZXI7CiAKIGNsYXNzIFNoYWRvd0JsdXIgewpAQCAtNTEsNiArNTIs
NyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIFNoYWRvd0JsdXIoY29uc3QgRmxvYXRTaXplJiBy
YWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2Up
OworICAgIFNoYWRvd0JsdXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKICAgICBTaGFk
b3dCbHVyKCk7CiAKICAgICB2b2lkIHNldFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBGbG9hdFNpemUmICwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlLCBib29sIGlnbm9yZVRy
YW5zZm9ybXMgPSBmYWxzZSk7CkBAIC03MCwxMCArNzIsNiBAQCBwdWJsaWM6CiAKICAgICBTaGFk
b3dUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAotI2lmIFBMQVRGT1JNKFFU
KSB8fCBVU0UoQ0FJUk8pCi0gICAgYm9vbCBtdXN0VXNlU2hhZG93Qmx1cihHcmFwaGljc0NvbnRl
eHQqKSBjb25zdDsKLSNlbmRpZgotCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU2hhZG93Qmx1
clZhbHVlcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCA5YTBmZDMwNWFmZmU1YzdlNjJiZDhlYmI1MTY0YWUy
NDlhMzk5YmE1Li45MTIzY2NjZGY3Njc3ZDU1YTE0NmI4NTY3ZTg1Y2NlZjBiZjg3OThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWly
by5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICBpZiAo
IShncmFwaGljc0NvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB8fCBz
aGFkb3cudHlwZSgpID09IFNoYWRvd0JsdXI6Ok5vU2hhZG93KQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIXNoYWRvdy5tdXN0VXNlU2hhZG93Qmx1cihncmFwaGljc0NvbnRleHQpKSB7Cisg
ICAgaWYgKCFncmFwaGljc0NvbnRleHQtPm11c3RVc2VTaGFkb3dCbHVyKCkpIHsKICAgICAgICAg
Ly8gT3B0aW1pemUgbm9uLWJsdXJyeSBzaGFkb3dzLCBieSBqdXN0IGRyYXdpbmcgdGV4dCB3aXRo
b3V0IHRoZSBTaGFkb3dCbHVyLgogICAgICAgICBjYWlyb190KiBjb250ZXh0ID0gZ3JhcGhpY3ND
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICAgICAgY2Fpcm9fc2F2ZShjb250
ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA5ZTE4ODkxNWEwOTNiZTI0NmY4MjcxNzY5Zjhh
MDZhOTY5NzUwOTM2Li42Y2U5ZmQ1OTEwMjY3MjQ0OWUxNjRjZDNjYzlkNDBhNGUxODY2MWZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCkBAIC03NjIsMTYgKzc2Miw2IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgQ0dDb250ZXh0U3Ryb2tlUGF0
aChjb250ZXh0KTsKIH0KIAotc3RhdGljIGZsb2F0IHJhZGl1c1RvTGVnYWN5UmFkaXVzKGZsb2F0
IHJhZGl1cykKLXsKLSAgICByZXR1cm4gcmFkaXVzID4gOCA/IDggKyA0ICogc3FydCgocmFkaXVz
IC0gOCkgLyAyKSA6IHJhZGl1czsKLX0KLQotc3RhdGljIGJvb2wgaGFzQmx1cnJlZFNoYWRvdyhj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCi17Ci0gICAgcmV0dXJuIHN0YXRlLnNo
YWRvd0NvbG9yLmlzVmFsaWQoKSAmJiBzdGF0ZS5zaGFkb3dDb2xvci5hbHBoYSgpICYmIHN0YXRl
LnNoYWRvd0JsdXI7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKQEAgLTgwOCwx
NCArNzk4LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiAgICAgaWYgKG1fc3RhdGUuZmlsbFBhdHRlcm4pCiAgICAgICAgIGFwcGx5Rmls
bFBhdHRlcm4oKTsKIAotICAgIGJvb2wgZHJhd093blNoYWRvdyA9ICFpc0FjY2VsZXJhdGVkQ29u
dGV4dCgpICYmIGhhc0JsdXJyZWRTaGFkb3cobV9zdGF0ZSkgJiYgIW1fc3RhdGUuc2hhZG93c0ln
bm9yZVRyYW5zZm9ybXM7IC8vIERvbid0IHVzZSBTaGFkb3dCbHVyIGZvciBjYW52YXMgeWV0Lgor
ICAgIGJvb2wgZHJhd093blNoYWRvdyA9ICFpc0FjY2VsZXJhdGVkQ29udGV4dCgpICYmIGhhc0Js
dXJyZWRTaGFkb3coKSAmJiAhbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgLy8gRG9u
J3QgdXNlIFNoYWRvd0JsdXIgZm9yIGNhbnZhcyB5ZXQuCiAgICAgaWYgKGRyYXdPd25TaGFkb3cp
IHsKLSAgICAgICAgZmxvYXQgc2hhZG93Qmx1ciA9IG1fc3RhdGUuc2hhZG93c1VzZUxlZ2FjeVJh
ZGl1cyA/IHJhZGl1c1RvTGVnYWN5UmFkaXVzKG1fc3RhdGUuc2hhZG93Qmx1cikgOiBtX3N0YXRl
LnNoYWRvd0JsdXI7CiAgICAgICAgIC8vIFR1cm4gb2ZmIENHIHNoYWRvd3MuCiAgICAgICAgIENH
Q29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dp
dGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKLSAgICAgICAg
U2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KEZsb2F0U2l6ZShzaGFkb3dCbHVyLCBzaGFkb3dCbHVy
KSwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Q29sb3IsIG1fc3RhdGUuc2hh
ZG93Q29sb3JTcGFjZSk7CisgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRl
KTsKICAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0LCBSb3Vu
ZGVkUmVjdDo6UmFkaWkoKSk7CiAgICAgfQogCkBAIC04MzcsMTQgKzgyNiwxMyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xv
ciYgY29sb3IsIENvbG9yUwogICAgIGlmIChvbGRGaWxsQ29sb3IgIT0gY29sb3IgfHwgb2xkQ29s
b3JTcGFjZSAhPSBjb2xvclNwYWNlKQogICAgICAgICBzZXRDR0ZpbGxDb2xvcihjb250ZXh0LCBj
b2xvciwgY29sb3JTcGFjZSk7CiAKLSAgICBib29sIGRyYXdPd25TaGFkb3cgPSAhaXNBY2NlbGVy
YXRlZENvbnRleHQoKSAmJiBoYXNCbHVycmVkU2hhZG93KG1fc3RhdGUpICYmICFtX3N0YXRlLnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyAvLyBEb24ndCB1c2UgU2hhZG93Qmx1ciBmb3IgY2FudmFz
IHlldC4KKyAgICBib29sIGRyYXdPd25TaGFkb3cgPSAhaXNBY2NlbGVyYXRlZENvbnRleHQoKSAm
JiBoYXNCbHVycmVkU2hhZG93KCkgJiYgIW1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7
IC8vIERvbid0IHVzZSBTaGFkb3dCbHVyIGZvciBjYW52YXMgeWV0LgogICAgIGlmIChkcmF3T3du
U2hhZG93KSB7Ci0gICAgICAgIGZsb2F0IHNoYWRvd0JsdXIgPSBtX3N0YXRlLnNoYWRvd3NVc2VM
ZWdhY3lSYWRpdXMgPyByYWRpdXNUb0xlZ2FjeVJhZGl1cyhtX3N0YXRlLnNoYWRvd0JsdXIpIDog
bV9zdGF0ZS5zaGFkb3dCbHVyOwogICAgICAgICAvLyBUdXJuIG9mZiBDRyBzaGFkb3dzLgogICAg
ICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogICAgICAgICBDR0NvbnRleHRTZXRT
aGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCi0g
ICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhGbG9hdFNpemUoc2hhZG93Qmx1ciwgc2hh
ZG93Qmx1ciksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0NvbG9yLCBtX3N0
YXRlLnNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3co
bV9zdGF0ZSk7CiAgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgcmVj
dCwgUm91bmRlZFJlY3Q6OlJhZGlpKCkpOwogICAgIH0KIApAQCAtODY5LDE1ICs4NTcsMTMgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBJbnRSZWN0JiByZWN0
LCBjb25zdCBJbnRTaXplJiB0b3BMZWYKICAgICBpZiAob2xkRmlsbENvbG9yICE9IGNvbG9yIHx8
IG9sZENvbG9yU3BhY2UgIT0gY29sb3JTcGFjZSkKICAgICAgICAgc2V0Q0dGaWxsQ29sb3IoY29u
dGV4dCwgY29sb3IsIGNvbG9yU3BhY2UpOwogCi0gICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlz
QWNjZWxlcmF0ZWRDb250ZXh0KCkgJiYgaGFzQmx1cnJlZFNoYWRvdyhtX3N0YXRlKSAmJiAhbV9z
dGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsgLy8gRG9uJ3QgdXNlIFNoYWRvd0JsdXIgZm9y
IGNhbnZhcyB5ZXQuCisgICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlzQWNjZWxlcmF0ZWRDb250
ZXh0KCkgJiYgaGFzQmx1cnJlZFNoYWRvdygpICYmICFtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zOyAvLyBEb24ndCB1c2UgU2hhZG93Qmx1ciBmb3IgY2FudmFzIHlldC4KICAgICBpZiAo
ZHJhd093blNoYWRvdykgewotICAgICAgICBmbG9hdCBzaGFkb3dCbHVyID0gbV9zdGF0ZS5zaGFk
b3dzVXNlTGVnYWN5UmFkaXVzID8gcmFkaXVzVG9MZWdhY3lSYWRpdXMobV9zdGF0ZS5zaGFkb3dC
bHVyKSA6IG1fc3RhdGUuc2hhZG93Qmx1cjsKLQogICAgICAgICAvLyBUdXJuIG9mZiBDRyBzaGFk
b3dzLgogICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogICAgICAgICBDR0Nv
bnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAs
IDApOwogCi0gICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhGbG9hdFNpemUoc2hhZG93
Qmx1ciwgc2hhZG93Qmx1ciksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0Nv
bG9yLCBtX3N0YXRlLnNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBTaGFkb3dCbHVyIGNvbnRl
eHRTaGFkb3cobV9zdGF0ZSk7CiAgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3co
dGhpcywgcmVjdCwgUm91bmRlZFJlY3Q6OlJhZGlpKHRvcExlZnQsIHRvcFJpZ2h0LCBib3R0b21M
ZWZ0LCBib3R0b21SaWdodCkpOwogICAgIH0KIApAQCAtOTIyLDE1ICs5MDgsMTMgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJlY3QmIHJl
Y3QsIGNvbnN0IFJvdW5kZWQKICAgICBzZXRGaWxsQ29sb3IoY29sb3IsIGNvbG9yU3BhY2UpOwog
CiAgICAgLy8gZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoKSBhc3N1bWVzIHRoYXQgdGhlIGVkZ2Vz
IG9mIHJlY3QgYXJlIGNsaXBwZWQgb3V0LCBzbyB3ZSBvbmx5IGNhcmUgYWJvdXQgc2hhZG93cyBj
YXN0IGFyb3VuZCBpbnNpZGUgdGhlIGhvbGUuCi0gICAgYm9vbCBkcmF3T3duU2hhZG93ID0gIWlz
QWNjZWxlcmF0ZWRDb250ZXh0KCkgJiYgaGFzQmx1cnJlZFNoYWRvdyhtX3N0YXRlKSAmJiAhbV9z
dGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKKyAgICBib29sIGRyYXdPd25TaGFkb3cgPSAh
aXNBY2NlbGVyYXRlZENvbnRleHQoKSAmJiBoYXNCbHVycmVkU2hhZG93KCkgJiYgIW1fc3RhdGUu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CiAgICAgaWYgKGRyYXdPd25TaGFkb3cpIHsKLSAgICAg
ICAgZmxvYXQgc2hhZG93Qmx1ciA9IG1fc3RhdGUuc2hhZG93c1VzZUxlZ2FjeVJhZGl1cyA/IHJh
ZGl1c1RvTGVnYWN5UmFkaXVzKG1fc3RhdGUuc2hhZG93Qmx1cikgOiBtX3N0YXRlLnNoYWRvd0Js
dXI7Ci0KICAgICAgICAgLy8gVHVybiBvZmYgQ0cgc2hhZG93cy4KICAgICAgICAgQ0dDb250ZXh0
U2F2ZUdTdGF0ZShjb250ZXh0KTsKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9y
KHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAotICAgICAgICBTaGFkb3dC
bHVyIGNvbnRleHRTaGFkb3coRmxvYXRTaXplKHNoYWRvd0JsdXIsIHNoYWRvd0JsdXIpLCBtX3N0
YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dDb2xvciwgbV9zdGF0ZS5zaGFkb3dDb2xv
clNwYWNlKTsKKyAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwogICAg
ICAgICBjb250ZXh0U2hhZG93LmRyYXdJbnNldFNoYWRvdyh0aGlzLCByZWN0LCByb3VuZGVkSG9s
ZVJlY3QucmVjdCgpLCByb3VuZGVkSG9sZVJlY3QucmFkaWkoKSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250UXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNwcAppbmRleCAzYWZiYjM1
MjhlOGY0NjVkOTExMmI4Y2RiMTFlYjAxYWEwYjUwZTdhLi5iNDZiNzhiNjdjZmRlYmM4MTgyMGQ0
MzkyMTYxMzM5NWUwN2VhYTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9Gb250UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0ZvbnRRdC5jcHAKQEAgLTEyNSw0MyArMTI1LDM1IEBAIHN0YXRpYyB2b2lkIGRyYXdR
dEdseXBoUnVuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgUUdseXBoUnVuJiBxdEds
eXBoUnVuCiAgICAgaWYgKGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVTdHJv
a2UpCiAgICAgICAgIHRleHRTdHJva2VQYXRoID0gcGF0aEZvckdseXBocyhxdEdseXBoUnVuLCBw
b2ludCk7CiAKLSAgICBTaGFkb3dCbHVyKiBzaGFkb3cgPSBjb250ZXh0LT5zaGFkb3dCbHVyKCk7
Ci0gICAgaWYgKGNvbnRleHQtPmhhc1NoYWRvdygpICYmIHNoYWRvdy0+dHlwZSgpICE9IFNoYWRv
d0JsdXI6Ok5vU2hhZG93KSB7Ci0gICAgICAgIHN3aXRjaCAoc2hhZG93LT50eXBlKCkpIHsKLSAg
ICAgICAgY2FzZSBTaGFkb3dCbHVyOjpTb2xpZFNoYWRvdzogewotICAgICAgICAgICAgUVBlbiBw
cmV2aW91c1BlbiA9IHBhaW50ZXItPnBlbigpOwotICAgICAgICAgICAgcGFpbnRlci0+c2V0UGVu
KGNvbnRleHQtPnN0YXRlKCkuc2hhZG93Q29sb3IpOwotICAgICAgICAgICAgY29uc3QgUVBvaW50
RiBzaGFkb3dPZmZzZXQoY29udGV4dC0+c3RhdGUoKS5zaGFkb3dPZmZzZXQud2lkdGgoKSwgY29u
dGV4dC0+c3RhdGUoKS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOwotICAgICAgICAgICAgcGFpbnRl
ci0+dHJhbnNsYXRlKHNoYWRvd09mZnNldCk7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+dGV4
dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZUZpbGwpCi0gICAgICAgICAgICAgICAgcGFpbnRlci0+
ZHJhd0dseXBoUnVuKHBvaW50LCBxdEdseXBoUnVuKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNv
bnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVTdHJva2UpCi0gICAgICAgICAgICAg
ICAgcGFpbnRlci0+c3Ryb2tlUGF0aCh0ZXh0U3Ryb2tlUGF0aCwgcGFpbnRlci0+cGVuKCkpOwot
ICAgICAgICAgICAgcGFpbnRlci0+dHJhbnNsYXRlKC1zaGFkb3dPZmZzZXQpOwotICAgICAgICAg
ICAgcGFpbnRlci0+c2V0UGVuKHByZXZpb3VzUGVuKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgU2hhZG93Qmx1cjo6Qmx1clNoYWRvdzogeworICAgIGlmIChj
b250ZXh0LT5oYXNTaGFkb3coKSkgeworICAgICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYgc3RhdGUgPSBjb250ZXh0LT5zdGF0ZSgpOworICAgICAgICBpZiAoY29udGV4dC0+bXVzdFVz
ZVNoYWRvd0JsdXIoKSkgeworICAgICAgICAgICAgU2hhZG93Qmx1ciBzaGFkb3coc3RhdGUpOwog
ICAgICAgICAgICAgY29uc3QgaW50IHdpZHRoID0gcXRHbHlwaFJ1bi5ib3VuZGluZ1JlY3QoKS53
aWR0aCgpOwogICAgICAgICAgICAgY29uc3QgUVJhd0ZvbnQmIGZvbnQgPSBxdEdseXBoUnVuLnJh
d0ZvbnQoKTsKICAgICAgICAgICAgIGNvbnN0IGludCBoZWlnaHQgPSBmb250LmFzY2VudCgpICsg
Zm9udC5kZXNjZW50KCk7CiAgICAgICAgICAgICBjb25zdCBRUmVjdEYgYm91bmRpbmdSZWN0KHBv
aW50LngoKSwgcG9pbnQueSgpIC0gZm9udC5hc2NlbnQoKSArIGJhc2VMaW5lT2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0KTsKLSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9
IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihjb250ZXh0LCBib3VuZGluZ1JlY3QpOworICAgICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LmJlZ2luU2hhZG93
TGF5ZXIoY29udGV4dCwgYm91bmRpbmdSZWN0KTsKICAgICAgICAgICAgIGlmIChzaGFkb3dDb250
ZXh0KSB7CiAgICAgICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3dD
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVy
LT5zZXRQZW4oc2hhZG93Q29udGV4dC0+c3RhdGUoKS5zaGFkb3dDb2xvcik7CisgICAgICAgICAg
ICAgICAgc2hhZG93UGFpbnRlci0+c2V0UGVuKHN0YXRlLnNoYWRvd0NvbG9yKTsKICAgICAgICAg
ICAgICAgICBpZiAoc2hhZG93Q29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZUZp
bGwpCiAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmRyYXdHbHlwaFJ1bihwb2lu
dCwgcXRHbHlwaFJ1bik7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hhZG93Q29udGV4dC0+
dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZVN0cm9rZSkKICAgICAgICAgICAgICAgICAgICAg
c2hhZG93UGFpbnRlci0+c3Ryb2tlUGF0aCh0ZXh0U3Ryb2tlUGF0aCwgc2hhZG93UGFpbnRlci0+
cGVuKCkpOwotICAgICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIoY29udGV4dCk7
CisgICAgICAgICAgICAgICAgc2hhZG93LmVuZFNoYWRvd0xheWVyKGNvbnRleHQpOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBTaGFk
b3dCbHVyOjpOb1NoYWRvdzoKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBRUGVuIHByZXZpb3VzUGVuID0gcGFpbnRlci0+cGVuKCk7CisgICAgICAgICAgICBw
YWludGVyLT5zZXRQZW4oc3RhdGUuc2hhZG93Q29sb3IpOworICAgICAgICAgICAgY29uc3QgUVBv
aW50RiBzaGFkb3dPZmZzZXQoc3RhdGUuc2hhZG93T2Zmc2V0LndpZHRoKCksIHN0YXRlLnNoYWRv
d09mZnNldC5oZWlnaHQoKSk7CisgICAgICAgICAgICBwYWludGVyLT50cmFuc2xhdGUoc2hhZG93
T2Zmc2V0KTsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRl
eHRNb2RlRmlsbCkKKyAgICAgICAgICAgICAgICBwYWludGVyLT5kcmF3R2x5cGhSdW4ocG9pbnQs
IHF0R2x5cGhSdW4pOworICAgICAgICAgICAgZWxzZSBpZiAoY29udGV4dC0+dGV4dERyYXdpbmdN
b2RlKCkgJiBUZXh0TW9kZVN0cm9rZSkKKyAgICAgICAgICAgICAgICBwYWludGVyLT5zdHJva2VQ
YXRoKHRleHRTdHJva2VQYXRoLCBwYWludGVyLT5wZW4oKSk7CisgICAgICAgICAgICBwYWludGVy
LT50cmFuc2xhdGUoLXNoYWRvd09mZnNldCk7CisgICAgICAgICAgICBwYWludGVyLT5zZXRQZW4o
cHJldmlvdXNQZW4pOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKaW5kZXgg
OWE3MTQ1NTJkYzhmMDA1NmIyNmYzOTc5OWQ1Y2VkYmFlNWIzOTBlZC4uMGQzZGFlZDgxMmNjOTJh
MWRlYjg0NGNlYmM2ZjQ3ZmQ4Y2IxZThjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtMTAsNiAr
MTAsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA4IERpcmsgU2NodWx6ZSA8dmJzODVAZ214LmRl
PgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIFNlbmNoYSwgSW5jLgogICogQ29weXJpZ2h0
IChDKSAyMDExIEFuZHJlYXMgS2xpbmcgPGtsaW5nQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgRGlnaWEgUGxjLiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yNTAsOCArMjUxLDYgQEAgcHVibGljOgogICAg
IEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7CiAgICAgYm9v
bCBpbml0aWFsU21vb3RoUGl4bWFwVHJhbnNmb3JtSGludDsKIAotICAgIFNoYWRvd0JsdXIqIHNo
YWRvdzsKLQogICAgIFFSZWN0RiBjbGlwQm91bmRpbmdSZWN0KCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBwKCktPmNsaXBCb3VuZGluZ1JlY3QoKTsKQEAgLTI3MCw3ICsyNjksNiBAQCBH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZShRUGFpbnRlciogcCwgY29ucwogICAgICwgc29saWRDb2xvcihpbml0aWFsU29saWRDb2xv
cikKICAgICAsIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkRlZmF1bHQp
CiAgICAgLCBpbml0aWFsU21vb3RoUGl4bWFwVHJhbnNmb3JtSGludChmYWxzZSkKLSAgICAsIHNo
YWRvdyhuZXcgU2hhZG93Qmx1cigpKQogICAgICwgcGFpbnRlcihwKQogICAgICwgcGxhdGZvcm1D
b250ZXh0SXNPd25lZChmYWxzZSkKIHsKQEAgLTI4OSw4ICsyODcsNiBAQCBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZShRUGFpbnRl
ciogcCwgY29ucwogCiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6On5HcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGUoKQogewotICAgIGRlbGV0ZSBzaGFkb3c7Ci0KICAgICBpZiAo
IXBsYXRmb3JtQ29udGV4dElzT3duZWQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzU1LDggKzM1
MSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAg
ICAgICAgICBlbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCk7CiAKICAgICBtX2RhdGEtPnAo
KS0+cmVzdG9yZSgpOwotCi0gICAgbV9kYXRhLT5zaGFkb3ctPnNldFNoYWRvd1ZhbHVlcyhGbG9h
dFNpemUobV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNoYWRvd0JsdXIpLCBtX3N0YXRlLnNo
YWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dDb2xvciwgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNl
LCBtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKIH0KIAogLy8gRHJhd3MgYSBmaWxs
ZWQgcmVjdGFuZ2xlIHdpdGggYSBzdHJva2VkIGJvcmRlci4KQEAgLTYyOCwxMCArNjIyLDEwIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgIHBs
YXRmb3JtUGF0aC5zZXRGaWxsUnVsZSh0b1F0RmlsbFJ1bGUoZmlsbFJ1bGUoKSkpOwogCiAgICAg
aWYgKGhhc1NoYWRvdygpKSB7Ci0gICAgICAgIFNoYWRvd0JsdXIqIHNoYWRvdyA9IHNoYWRvd0Js
dXIoKTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZVNoYWRvd0JsdXIodGhpcykgfHwgbV9z
dGF0ZS5maWxsUGF0dGVybiB8fCBtX3N0YXRlLmZpbGxHcmFkaWVudCkKKyAgICAgICAgaWYgKG11
c3RVc2VTaGFkb3dCbHVyKCkgfHwgbV9zdGF0ZS5maWxsUGF0dGVybiB8fCBtX3N0YXRlLmZpbGxH
cmFkaWVudCkKICAgICAgICAgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dD
b250ZXh0ID0gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHRoaXMsIHBsYXRmb3JtUGF0aC5jb250
cm9sUG9pbnRSZWN0KCkpOworICAgICAgICAgICAgU2hhZG93Qmx1ciBzaGFkb3cobV9zdGF0ZSk7
CisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVn
aW5TaGFkb3dMYXllcih0aGlzLCBwbGF0Zm9ybVBhdGguY29udHJvbFBvaW50UmVjdCgpKTsKICAg
ICAgICAgICAgIGlmIChzaGFkb3dDb250ZXh0KSB7CiAgICAgICAgICAgICAgICAgUVBhaW50ZXIq
IHNoYWRvd1BhaW50ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICAg
ICAgICAgICAgICBpZiAobV9zdGF0ZS5maWxsUGF0dGVybikgewpAQCAtNjQzLDcgKzYzNyw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmZp
bGxQYXRoKHBsYXRmb3JtUGF0aCwgcC0+YnJ1c2goKSk7CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5ZXIodGhpcyk7CisgICAgICAgICAgICAg
ICAgc2hhZG93LmVuZFNoYWRvd0xheWVyKHRoaXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgUVBvaW50RiBvZmZzZXQobV9zdGF0ZS5zaGFkb3dPZmZzZXQu
d2lkdGgoKSwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOwpAQCAtNjg3LDEyICs2ODEs
MTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkK
ICAgICBwYXRoU3Ryb2tlci5zZXRXaWR0aChwZW4ud2lkdGhGKCkpOwogCiAgICAgaWYgKGhhc1No
YWRvdygpKSB7Ci0gICAgICAgIFNoYWRvd0JsdXIqIHNoYWRvdyA9IHNoYWRvd0JsdXIoKTsKLSAg
ICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZVNoYWRvd0JsdXIodGhpcykgfHwgbV9zdGF0ZS5zdHJv
a2VQYXR0ZXJuIHx8IG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQpCisgICAgICAgIGlmIChtdXN0VXNl
U2hhZG93Qmx1cigpIHx8IG1fc3RhdGUuc3Ryb2tlUGF0dGVybiB8fCBtX3N0YXRlLnN0cm9rZUdy
YWRpZW50KQogICAgICAgICB7CisgICAgICAgICAgICBTaGFkb3dCbHVyIHNoYWRvdyhtX3N0YXRl
KTsKICAgICAgICAgICAgIEZsb2F0UmVjdCBib3VuZGluZ1JlY3QgPSBwbGF0Zm9ybVBhdGguY29u
dHJvbFBvaW50UmVjdCgpOwogICAgICAgICAgICAgYm91bmRpbmdSZWN0LmluZmxhdGUocGVuLm1p
dGVyTGltaXQoKSArIHBlbi53aWR0aEYoKSk7Ci0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHQq
IHNoYWRvd0NvbnRleHQgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIodGhpcywgYm91bmRpbmdS
ZWN0KTsKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRv
dy5iZWdpblNoYWRvd0xheWVyKHRoaXMsIGJvdW5kaW5nUmVjdCk7CiAgICAgICAgICAgICBpZiAo
c2hhZG93Q29udGV4dCkgewogICAgICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVy
ID0gc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgICAgICAgICAgICAgaWYg
KG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQpIHsKQEAgLTcwMSw3ICs2OTUsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgICAg
ICAgICBmaWxsUGF0aFN0cm9rZShzaGFkb3dQYWludGVyLCBwYXRoU3Ryb2tlciwgcGxhdGZvcm1Q
YXRoLCBicnVzaCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IGZpbGxQYXRoU3Ryb2tlKHNoYWRvd1BhaW50ZXIsIHBhdGhTdHJva2VyLCBwbGF0Zm9ybVBhdGgs
IHBlbi5icnVzaCgpKTsKLSAgICAgICAgICAgICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKHRo
aXMpOworICAgICAgICAgICAgICAgIHNoYWRvdy5lbmRTaGFkb3dMYXllcih0aGlzKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFFQb2ludEYgb2Zmc2V0KG1f
c3RhdGUuc2hhZG93T2Zmc2V0LndpZHRoKCksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LmhlaWdodCgp
KTsKQEAgLTc3OSw0MCArNzczLDQ2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiAKICAgICBRUGFpbnRlciogcCA9IG1fZGF0YS0+cCgpOwog
ICAgIFFSZWN0RiBub3JtYWxpemVkUmVjdCA9IHJlY3Qubm9ybWFsaXplZCgpOwotICAgIFNoYWRv
d0JsdXIqIHNoYWRvdyA9IHNoYWRvd0JsdXIoKTsKIAogICAgIGlmIChtX3N0YXRlLmZpbGxQYXR0
ZXJuKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IGhhc1NoYWRv
dygpID8gc2hhZG93LT5iZWdpblNoYWRvd0xheWVyKHRoaXMsIG5vcm1hbGl6ZWRSZWN0KSA6IDA7
Ci0gICAgICAgIGlmIChzaGFkb3dDb250ZXh0KSB7Ci0gICAgICAgICAgICBRUGFpbnRlciogc2hh
ZG93UGFpbnRlciA9IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwotICAgICAgICAg
ICAgZHJhd1JlcGVhdFBhdHRlcm4oc2hhZG93UGFpbnRlciwgbV9zdGF0ZS5maWxsUGF0dGVybiwg
bm9ybWFsaXplZFJlY3QpOwotICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcih0aGlz
KTsKKyAgICAgICAgaWYgKGhhc1NoYWRvdygpKSB7CisgICAgICAgICAgICBTaGFkb3dCbHVyIHNo
YWRvdyhtX3N0YXRlKTsKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4
dCA9IHNoYWRvdy5iZWdpblNoYWRvd0xheWVyKHRoaXMsIG5vcm1hbGl6ZWRSZWN0KTsKKyAgICAg
ICAgICAgIGlmIChzaGFkb3dDb250ZXh0KSB7CisgICAgICAgICAgICAgICAgUVBhaW50ZXIqIHNo
YWRvd1BhaW50ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICAgICAg
ICAgICAgICBkcmF3UmVwZWF0UGF0dGVybihzaGFkb3dQYWludGVyLCBtX3N0YXRlLmZpbGxQYXR0
ZXJuLCBub3JtYWxpemVkUmVjdCk7CisgICAgICAgICAgICAgICAgc2hhZG93LmVuZFNoYWRvd0xh
eWVyKHRoaXMpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGRyYXdSZXBlYXRQ
YXR0ZXJuKHAsIG1fc3RhdGUuZmlsbFBhdHRlcm4sIG5vcm1hbGl6ZWRSZWN0KTsKICAgICB9IGVs
c2UgaWYgKG1fc3RhdGUuZmlsbEdyYWRpZW50KSB7CiAgICAgICAgIFFCcnVzaCBicnVzaCgqbV9z
dGF0ZS5maWxsR3JhZGllbnQtPnBsYXRmb3JtR3JhZGllbnQoKSk7CiAgICAgICAgIGJydXNoLnNl
dFRyYW5zZm9ybShtX3N0YXRlLmZpbGxHcmFkaWVudC0+Z3JhZGllbnRTcGFjZVRyYW5zZm9ybSgp
KTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gaGFzU2hhZG93KCkg
PyBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIodGhpcywgbm9ybWFsaXplZFJlY3QpIDogMDsKLSAg
ICAgICAgaWYgKHNoYWRvd0NvbnRleHQpIHsKLSAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQ
YWludGVyID0gc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgICAgICAgICBz
aGFkb3dQYWludGVyLT5maWxsUmVjdChub3JtYWxpemVkUmVjdCwgYnJ1c2gpOwotICAgICAgICAg
ICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcih0aGlzKTsKKyAgICAgICAgaWYgKGhhc1NoYWRvdygp
KSB7CisgICAgICAgICAgICBTaGFkb3dCbHVyIHNoYWRvdyhtX3N0YXRlKTsKKyAgICAgICAgICAg
IEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy5iZWdpblNoYWRvd0xheWVy
KHRoaXMsIG5vcm1hbGl6ZWRSZWN0KTsKKyAgICAgICAgICAgIGlmIChzaGFkb3dDb250ZXh0KSB7
CisgICAgICAgICAgICAgICAgUVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3dDb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5maWxs
UmVjdChub3JtYWxpemVkUmVjdCwgYnJ1c2gpOworICAgICAgICAgICAgICAgIHNoYWRvdy5lbmRT
aGFkb3dMYXllcih0aGlzKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBwLT5m
aWxsUmVjdChub3JtYWxpemVkUmVjdCwgYnJ1c2gpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
IChoYXNTaGFkb3coKSkgewotICAgICAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZVNoYWRvd0Js
dXIodGhpcykpIHsKKyAgICAgICAgICAgIGlmIChtdXN0VXNlU2hhZG93Qmx1cigpKSB7CisgICAg
ICAgICAgICAgICAgU2hhZG93Qmx1ciBzaGFkb3cobV9zdGF0ZSk7CiAgICAgICAgICAgICAgICAg
Ly8gZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nIGRvZXMgbm90IHdvcmsgd2l0aCByb3RhdGlvbnMs
IGFuZCB0aGUgZmFsbGJhY2sgb2YKICAgICAgICAgICAgICAgICAvLyBkcmF3aW5nIHRob3VnaCBj
bGlwVG9JbWFnZUJ1ZmZlcigpIHByb2R1Y2VzIHNjYWxpbmcgYXJ0aWZhY3RzIGZvciB1cy4KICAg
ICAgICAgICAgICAgICBpZiAoIWdldENUTSgpLnByZXNlcnZlc0F4aXNBbGlnbm1lbnQoKSkgewot
ICAgICAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFk
b3ctPmJlZ2luU2hhZG93TGF5ZXIodGhpcywgbm9ybWFsaXplZFJlY3QpOworICAgICAgICAgICAg
ICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVnaW5TaGFk
b3dMYXllcih0aGlzLCBub3JtYWxpemVkUmVjdCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChz
aGFkb3dDb250ZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBRUGFpbnRlciogc2hhZG93
UGFpbnRlciA9IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgc2hhZG93UGFpbnRlci0+ZmlsbFJlY3Qobm9ybWFsaXplZFJlY3QsIHAtPmJy
dXNoKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93LT5lbmRTaGFkb3dMYXllcih0
aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvdy5lbmRTaGFkb3dMYXllcih0aGlz
KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgICAgICAgICBzaGFkb3ctPmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRS
ZWN0OjpSYWRpaSgpKTsKKyAgICAgICAgICAgICAgICAgICAgc2hhZG93LmRyYXdSZWN0U2hhZG93
KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgLy8gU29saWQgcmVjdGFuZ2xlIGZpbGwgd2l0aCBubyBibHVyIHNo
YWRvdyBvciB0cmFuc2Zvcm1hdGlvbnMgYXBwbGllZCBjYW4gYmUgZG9uZQogICAgICAgICAgICAg
ICAgIC8vIGZhc3RlciB3aXRob3V0IHVzaW5nIHRoZSBzaGFkb3cgbGF5ZXIgYXQgYWxsLgpAQCAt
ODM1LDkgKzgzNSw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgUVJlY3RGIHBsYXRm
b3JtUmVjdChyZWN0KTsKICAgICBRUGFpbnRlciogcCA9IG1fZGF0YS0+cCgpOwogICAgIGlmICho
YXNTaGFkb3coKSkgewotICAgICAgICBTaGFkb3dCbHVyKiBzaGFkb3cgPSBzaGFkb3dCbHVyKCk7
Ci0gICAgICAgIGlmIChzaGFkb3ctPm11c3RVc2VTaGFkb3dCbHVyKHRoaXMpKSB7Ci0gICAgICAg
ICAgICBzaGFkb3ctPmRyYXdSZWN0U2hhZG93KHRoaXMsIHBsYXRmb3JtUmVjdCwgUm91bmRlZFJl
Y3Q6OlJhZGlpKCkpOworICAgICAgICBpZiAobXVzdFVzZVNoYWRvd0JsdXIoKSkgeworICAgICAg
ICAgICAgU2hhZG93Qmx1ciBzaGFkb3cobV9zdGF0ZSk7CisgICAgICAgICAgICBzaGFkb3cuZHJh
d1JlY3RTaGFkb3codGhpcywgcGxhdGZvcm1SZWN0LCBSb3VuZGVkUmVjdDo6UmFkaWkoKSk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBRQ29sb3Igc2hhZG93Q29sb3IgPSBtX3N0YXRl
LnNoYWRvd0NvbG9yOwogICAgICAgICAgICAgc2hhZG93Q29sb3Iuc2V0QWxwaGFGKHNoYWRvd0Nv
bG9yLmFscGhhRigpICogcC0+YnJ1c2goKS5jb2xvcigpLmFscGhhRigpKTsKQEAgLTg1Niw5ICs4
NTYsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IEludFNpemUmIHRvcExlZgogICAgIHBhdGguYWRkUm91bmRlZFJlY3Qo
cmVjdCwgdG9wTGVmdCwgdG9wUmlnaHQsIGJvdHRvbUxlZnQsIGJvdHRvbVJpZ2h0KTsKICAgICBR
UGFpbnRlciogcCA9IG1fZGF0YS0+cCgpOwogICAgIGlmIChoYXNTaGFkb3coKSkgewotICAgICAg
ICBTaGFkb3dCbHVyKiBzaGFkb3cgPSBzaGFkb3dCbHVyKCk7Ci0gICAgICAgIGlmIChzaGFkb3ct
Pm11c3RVc2VTaGFkb3dCbHVyKHRoaXMpKSB7Ci0gICAgICAgICAgICBzaGFkb3ctPmRyYXdSZWN0
U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwg
Ym90dG9tTGVmdCwgYm90dG9tUmlnaHQpKTsKKyAgICAgICAgaWYgKG11c3RVc2VTaGFkb3dCbHVy
KCkpIHsKKyAgICAgICAgICAgIFNoYWRvd0JsdXIgc2hhZG93KG1fc3RhdGUpOworICAgICAgICAg
ICAgc2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSh0
b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90dG9tUmlnaHQpKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIGNvbnN0IFFQb2ludEYgc2hhZG93T2Zmc2V0KG1fc3RhdGUuc2hh
ZG93T2Zmc2V0LndpZHRoKCksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsKICAgICAg
ICAgICAgIHAtPnRyYW5zbGF0ZShzaGFkb3dPZmZzZXQpOwpAQCAtODg2LDEwICs4ODYsMTAgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IFJvdW5kZWQKIAogICAgIFFQYWludGVyKiBwID0gbV9kYXRhLT5wKCk7
CiAgICAgaWYgKGhhc1NoYWRvdygpKSB7Ci0gICAgICAgIFNoYWRvd0JsdXIqIHNoYWRvdyA9IHNo
YWRvd0JsdXIoKTsKLSAgICAgICAgaWYgKHNoYWRvdy0+bXVzdFVzZVNoYWRvd0JsdXIodGhpcykp
Ci0gICAgICAgICAgICBzaGFkb3ctPmRyYXdJbnNldFNoYWRvdyh0aGlzLCByZWN0LCByb3VuZGVk
SG9sZVJlY3QucmVjdCgpLCByb3VuZGVkSG9sZVJlY3QucmFkaWkoKSk7Ci0gICAgICAgIGVsc2Ug
eworICAgICAgICBpZiAobXVzdFVzZVNoYWRvd0JsdXIoKSkgeworICAgICAgICAgICAgU2hhZG93
Qmx1ciBzaGFkb3cobV9zdGF0ZSk7CisgICAgICAgICAgICBzaGFkb3cuZHJhd0luc2V0U2hhZG93
KHRoaXMsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdC5yZWN0KCksIHJvdW5kZWRIb2xlUmVjdC5yYWRp
aSgpKTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNvbnN0IFFQb2ludEYgc2hhZG93
T2Zmc2V0KG1fc3RhdGUuc2hhZG93T2Zmc2V0LndpZHRoKCksIG1fc3RhdGUuc2hhZG93T2Zmc2V0
LmhlaWdodCgpKTsKICAgICAgICAgICAgIHAtPnRyYW5zbGF0ZShzaGFkb3dPZmZzZXQpOwogICAg
ICAgICAgICAgcC0+ZmlsbFBhdGgocGxhdGZvcm1QYXRoLCBRQ29sb3IobV9zdGF0ZS5zaGFkb3dD
b2xvcikpOwpAQCAtOTA1LDExICs5MDUsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6aXNJblRy
YW5zcGFyZW5jeUxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhLT5sYXllckNvdW50Owog
fQogCi1TaGFkb3dCbHVyKiBHcmFwaGljc0NvbnRleHQ6OnNoYWRvd0JsdXIoKQotewotICAgIHJl
dHVybiBtX2RhdGEtPnNoYWRvdzsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXAoY29u
c3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQpAQCAtMTE3
MCwxOSArMTE2NSwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3co
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBibHVyLCBjb25zdAogewogICAgIC8vIFF0IGRv
ZXNuJ3Qgc3VwcG9ydCBzaGFkb3dzIG5hdGl2ZWx5LCB0aGV5IGFyZSBkcmF3biBtYW51YWxseSBp
biB0aGUgZHJhdyoKICAgICAvLyBmdW5jdGlvbnMKLQogICAgIGlmIChtX3N0YXRlLnNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKSB7CiAgICAgICAgIC8vIE1lYW5pbmcgdGhhdCB0aGlzIGdyYXBoaWNz
IGNvbnRleHQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgQ2FudmFzUmVuZGVyaW5nQ29udGV4dAogICAg
ICAgICAvLyBXZSBmbGlwIHRoZSBoZWlnaHQgc2luY2UgQ0cgYW5kIEhUTUw1IENhbnZhcyBoYXZl
IG9wcG9zaXRlIFkgYXhpcwogICAgICAgICBtX3N0YXRlLnNoYWRvd09mZnNldCA9IEZsb2F0U2l6
ZShzaXplLndpZHRoKCksIC1zaXplLmhlaWdodCgpKTsKICAgICB9Ci0KLSAgICBtX2RhdGEtPnNo
YWRvdy0+c2V0U2hhZG93VmFsdWVzKEZsb2F0U2l6ZShtX3N0YXRlLnNoYWRvd0JsdXIsIG1fc3Rh
dGUuc2hhZG93Qmx1ciksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBjb2xvciwgY29sb3JTcGFjZSwg
bV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpjbGVhclBsYXRmb3JtU2hhZG93KCkKIHsKLSAgICBtX2RhdGEtPnNoYWRvdy0+Y2xlYXIo
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnB1c2hUcmFuc3BhcmVuY3lMYXllckludGVy
bmFsKGNvbnN0IFFSZWN0ICZyZWN0LCBxcmVhbCBvcGFjaXR5LCBRUGl4bWFwJiBhbHBoYU1hc2sp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCmlu
ZGV4IGViOTIzNWNjYTRiZWQyMzA0MTY3NTJlZTI3OWFjZTQ5ZjM0N2E4NmIuLmI4NjY3ODU4YmZh
ZGIwMGIxN2I4NmEzYTIxMjlkMTNlMThmYjhhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCkBAIC0yNTksMTIgKzI1OSwxMiBAQCB2b2lk
IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3QsCiAgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKCFpbWFnZS0+aGFzQWxwaGEo
KSAmJiBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9zaXRlQ29weSA6IG9wKTsKIAog
ICAgIGlmIChjdHh0LT5oYXNTaGFkb3coKSkgewotICAgICAgICBTaGFkb3dCbHVyKiBzaGFkb3cg
PSBjdHh0LT5zaGFkb3dCbHVyKCk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29u
dGV4dCA9IHNoYWRvdy0+YmVnaW5TaGFkb3dMYXllcihjdHh0LCBub3JtYWxpemVkRHN0KTsKKyAg
ICAgICAgU2hhZG93Qmx1ciBzaGFkb3coY3R4dC0+c3RhdGUoKSk7CisgICAgICAgIEdyYXBoaWNz
Q29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy5iZWdpblNoYWRvd0xheWVyKGN0eHQsIG5v
cm1hbGl6ZWREc3QpOwogICAgICAgICBpZiAoc2hhZG93Q29udGV4dCkgewogICAgICAgICAgICAg
UVBhaW50ZXIqIHNoYWRvd1BhaW50ZXIgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KTsKICAgICAgICAgICAgIHNoYWRvd1BhaW50ZXItPmRyYXdQaXhtYXAobm9ybWFsaXplZERzdCwg
KmltYWdlLCBub3JtYWxpemVkU3JjKTsKLSAgICAgICAgICAgIHNoYWRvdy0+ZW5kU2hhZG93TGF5
ZXIoY3R4dCk7CisgICAgICAgICAgICBzaGFkb3cuZW5kU2hhZG93TGF5ZXIoY3R4dCk7CiAgICAg
ICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L1N0aWxsSW1hZ2VRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9TdGlsbEltYWdlUXQuY3BwCmluZGV4IDNlNTM4N2JmNzVjZGRmNTY1ZWZlMzA1NjVlZmMy
N2U1YjU2NTAxNDcuLmY0Zjk4ZjFlNTllNGU1ZmMxNTg1NGIyYzA0Yjk4NzczOTdkMzQ4NmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VR
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFn
ZVF0LmNwcApAQCAtODAsMTIgKzgwLDEyIEBAIHZvaWQgU3RpbGxJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LAogICAgIGN0eHQtPnNldENvbXBv
c2l0ZU9wZXJhdGlvbihvcCk7CiAKICAgICBpZiAoY3R4dC0+aGFzU2hhZG93KCkpIHsKLSAgICAg
ICAgU2hhZG93Qmx1ciogc2hhZG93ID0gY3R4dC0+c2hhZG93Qmx1cigpOwotICAgICAgICBHcmFw
aGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3ctPmJlZ2luU2hhZG93TGF5ZXIoY3R4
dCwgbm9ybWFsaXplZERzdCk7CisgICAgICAgIFNoYWRvd0JsdXIgc2hhZG93KGN0eHQtPnN0YXRl
KCkpOworICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVn
aW5TaGFkb3dMYXllcihjdHh0LCBub3JtYWxpemVkRHN0KTsKICAgICAgICAgaWYgKHNoYWRvd0Nv
bnRleHQpIHsKICAgICAgICAgICAgIFFQYWludGVyKiBzaGFkb3dQYWludGVyID0gc2hhZG93Q29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgICAgICAgICBzaGFkb3dQYWludGVyLT5kcmF3
UGl4bWFwKG5vcm1hbGl6ZWREc3QsICptX3BpeG1hcCwgbm9ybWFsaXplZFNyYyk7Ci0gICAgICAg
ICAgICBzaGFkb3ctPmVuZFNoYWRvd0xheWVyKGN0eHQpOworICAgICAgICAgICAgc2hhZG93LmVu
ZFNoYWRvd0xheWVyKGN0eHQpOwogICAgICAgICB9CiAgICAgfQogCg==
</data>
<flag name="review"
          id="218685"
          type_id="1"
          status="+"
          setter="noam"
    />
          </attachment>
      

    </bug>

</bugzilla>