<?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>115775</bug_id>
          
          <creation_ts>2013-05-07 21:31:11 -0700</creation_ts>
          <short_desc>Make CanvasStyle a plain object instead of an RefCounted object</short_desc>
          <delta_ts>2013-05-11 01:36:10 -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>New Bugs</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="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>philn</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>886139</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-05-07 21:31:11 -0700</bug_when>
    <thetext>Make CanvasStyle a plain object instead of an RefCounted object</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886140</commentid>
    <comment_count>1</comment_count>
      <attachid>201026</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-05-07 21:37:01 -0700</bug_when>
    <thetext>Created attachment 201026
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886141</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 21:38:50 -0700</bug_when>
    <thetext>Attachment 201026 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/bindings/js/JSCanvasRenderingContext2DCustom.cpp&apos;, u&apos;Source/WebCore/html/HTMLCanvasElement.cpp&apos;, u&apos;Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp&apos;, u&apos;Source/WebCore/html/canvas/CanvasRenderingContext2D.h&apos;, u&apos;Source/WebCore/html/canvas/CanvasStyle.cpp&apos;, u&apos;Source/WebCore/html/canvas/CanvasStyle.h&apos;]&quot; exit_code: 1
Source/WebCore/html/canvas/CanvasStyle.h:76:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WebCore/html/canvas/CanvasStyle.h:77:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WebCore/html/canvas/CanvasStyle.h:81:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 3 in 6 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>886142</commentid>
    <comment_count>3</comment_count>
      <attachid>201026</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-07 21:41:18 -0700</bug_when>
    <thetext>Comment on attachment 201026
Patch

Attachment 201026 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/310115</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886143</commentid>
    <comment_count>4</comment_count>
      <attachid>201026</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-07 21:43:22 -0700</bug_when>
    <thetext>Comment on attachment 201026
Patch

Attachment 201026 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/424039</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886144</commentid>
    <comment_count>5</comment_count>
      <attachid>201026</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-05-07 21:44:23 -0700</bug_when>
    <thetext>Comment on attachment 201026
Patch

Attachment 201026 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/377533</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886145</commentid>
    <comment_count>6</comment_count>
      <attachid>201026</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-07 21:57:39 -0700</bug_when>
    <thetext>Comment on attachment 201026
Patch

Attachment 201026 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/398075</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886146</commentid>
    <comment_count>7</comment_count>
      <attachid>201026</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-07 21:57:48 -0700</bug_when>
    <thetext>Comment on attachment 201026
Patch

Attachment 201026 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/377534</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886150</commentid>
    <comment_count>8</comment_count>
      <attachid>201026</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-07 22:03:01 -0700</bug_when>
    <thetext>Comment on attachment 201026
Patch

Attachment 201026 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/302084</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886153</commentid>
    <comment_count>9</comment_count>
      <attachid>201029</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-05-07 22:14:43 -0700</bug_when>
    <thetext>Created attachment 201029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886154</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 22:16:43 -0700</bug_when>
    <thetext>Attachment 201029 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/bindings/js/JSCanvasRenderingContext2DCustom.cpp&apos;, u&apos;Source/WebCore/html/HTMLCanvasElement.cpp&apos;, u&apos;Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp&apos;, u&apos;Source/WebCore/html/canvas/CanvasRenderingContext2D.h&apos;, u&apos;Source/WebCore/html/canvas/CanvasStyle.cpp&apos;, u&apos;Source/WebCore/html/canvas/CanvasStyle.h&apos;]&quot; exit_code: 1
Source/WebCore/html/canvas/CanvasStyle.h:76:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WebCore/html/canvas/CanvasStyle.h:77:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WebCore/html/canvas/CanvasStyle.h:81:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 3 in 6 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>886314</commentid>
    <comment_count>11</comment_count>
      <attachid>201029</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-05-08 06:33:45 -0700</bug_when>
    <thetext>Comment on attachment 201029
Patch

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

r=me

&gt; Source/WebCore/html/canvas/CanvasStyle.h:46
&gt; +        CanvasStyle(RGBA32);

I&apos;d prefer this to be explicit.

&gt; Source/WebCore/html/canvas/CanvasStyle.h:51
&gt; +        CanvasStyle(PassRefPtr&lt;CanvasGradient&gt;);
&gt; +        CanvasStyle(PassRefPtr&lt;CanvasPattern&gt;);

Ditto for these.

&gt; Source/WebCore/html/canvas/CanvasStyle.h:111
&gt; +        Type m_type;

I&apos;d make this member const, as it should never change after construction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886463</commentid>
    <comment_count>12</comment_count>
      <attachid>201105</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-05-08 13:57:38 -0700</bug_when>
    <thetext>Created attachment 201105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>886529</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-08 17:14:53 -0700</bug_when>
    <thetext>Attachment 201105 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/bindings/js/JSCanvasRenderingContext2DCustom.cpp&apos;, u&apos;Source/WebCore/html/HTMLCanvasElement.cpp&apos;, u&apos;Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp&apos;, u&apos;Source/WebCore/html/canvas/CanvasRenderingContext2D.h&apos;, u&apos;Source/WebCore/html/canvas/CanvasStyle.cpp&apos;, u&apos;Source/WebCore/html/canvas/CanvasStyle.h&apos;]&quot; exit_code: 1
Source/WebCore/html/canvas/CanvasStyle.h:76:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WebCore/html/canvas/CanvasStyle.h:77:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WebCore/html/canvas/CanvasStyle.h:81:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 3 in 6 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>887765</commentid>
    <comment_count>14</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-05-11 01:36:10 -0700</bug_when>
    <thetext>Committed r149928: &lt;http://trac.webkit.org/changeset/149928&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201026</attachid>
            <date>2013-05-07 21:37:01 -0700</date>
            <delta_ts>2013-05-07 22:14:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115775-20130507213607.patch</filename>
            <type>text/plain</type>
            <size>27938</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmYzOTBhZWExZGNkZjZi
ZjM3NTYzYjNiMjM1ZjkzODdlOGFmNGZkNy4uODBkZDhkMDFmOTlmZWNmYmE2NjFkOTVjNDBlNWY3
NTYwMWZjYWIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4IEBACiAyMDEzLTA1LTA3ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCisgICAgICAgIE1ha2UgQ2FudmFz
U3R5bGUgYSBwbGFpbiBvYmplY3QgaW5zdGVhZCBvZiBhbiBSZWZDb3VudGVkIG9iamVjdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1Nzc1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FudmFzU3R5bGUg
aXMganVzdCAyIHdvcmRzIHdpZGUuIFdlIGRvIG5vdCBnYWluIGFueXRoaW5nIGZyb20gYWxsb2Nh
dGluZworICAgICAgICBpdCBvbiB0aGUgaGVhcC4gQ2hhbmdlIHRoZSBvYmplY3QgdG8gYmUganVz
dCBhIHR5cGUgYW5kIHNvbWUgZGF0YS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9IVE1MQ2FudmFzU3R5bGUpOgorICAgICAgICAqIGh0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OlN0YXRlOjpTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c2V0RmlsbFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZEZpbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlU3R5bGUpOgorICAg
ICAgICAoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFN0eWxlKToKKyAgICAgICAgKFN0YXRlKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNTdHlsZTo6Q2FudmFzU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmNy
ZWF0ZUZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmNyZWF0ZUZy
b21TdHJpbmdXaXRoT3ZlcnJpZGVBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHls
ZTo6aXNFcXVpdmFsZW50Q29sb3IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNTdHlsZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0
eWxlOjphcHBseVN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjph
cHBseUZpbGxDb2xvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaDoKKyAg
ICAgICAgKENhbnZhc1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjppc1Zh
bGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpDYW52YXNTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpvcGVyYXRvcj0p
OgorCisyMDEzLTA1LTA3ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgor
CiAgICAgICAgIE1ha2UgQ2FudmFzU3R5bGUncyBDTVlLQVZhbHVlcyBhbGxvY2F0ZWQgb24gdGhl
IGhlYXAgYW5kIG1vdmUgdGhlIHBvaW50ZXIgaW4gdGhlIHVuaW9uLgogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NzY0CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcAppbmRleCAyNmEwYjQ2MzAwMTA4NjIxNjJmNmNiMWY4ZDc3NDMzZmI1NzQ3
YmNjLi4yYmU0OTMxYWU0MTg5YzRjN2ExYTg0ODg0YmIxNjYwNzVmZWRjMTk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRDdXN0b20uY3BwCkBAIC0zOCwyNSArMzgsMjUgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgSlNWYWx1ZSB0b0pTKEV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FudmFzU3R5bGUq
IHN0eWxlKQorc3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IENhbnZhc1N0eWxlJiBzdHlsZSkKIHsKLSAgICBp
ZiAoc3R5bGUtPmNhbnZhc0dyYWRpZW50KCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGds
b2JhbE9iamVjdCwgc3R5bGUtPmNhbnZhc0dyYWRpZW50KCkpOwotICAgIGlmIChzdHlsZS0+Y2Fu
dmFzUGF0dGVybigpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0
eWxlLT5jYW52YXNQYXR0ZXJuKCkpOwotICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVj
LCBzdHlsZS0+Y29sb3IoKSk7CisgICAgaWYgKHN0eWxlLmNhbnZhc0dyYWRpZW50KCkpCisgICAg
ICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3R5bGUuY2FudmFzR3JhZGllbnQo
KSk7CisgICAgaWYgKHN0eWxlLmNhbnZhc1BhdHRlcm4oKSkKKyAgICAgICAgcmV0dXJuIHRvSlMo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHlsZS5jYW52YXNQYXR0ZXJuKCkpOworICAgIHJldHVybiBq
c1N0cmluZ1dpdGhDYWNoZShleGVjLCBzdHlsZS5jb2xvcigpKTsKIH0KIAotc3RhdGljIFBhc3NS
ZWZQdHI8Q2FudmFzU3R5bGU+IHRvSFRNTENhbnZhc1N0eWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUg
dmFsdWUpCitzdGF0aWMgQ2FudmFzU3R5bGUgdG9IVE1MQ2FudmFzU3R5bGUoRXhlY1N0YXRlKiwg
SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGUoKTsKICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXNPYmplY3QodmFsdWUpOwogICAgIGlmIChvYmplY3QtPmluaGVyaXRzKCZKU0NhbnZh
c0dyYWRpZW50OjpzX2luZm8pKQotICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGU6OmNyZWF0ZUZy
b21HcmFkaWVudChqc0Nhc3Q8SlNDYW52YXNHcmFkaWVudCo+KG9iamVjdCktPmltcGwoKSk7Cisg
ICAgICAgIHJldHVybiBDYW52YXNTdHlsZShqc0Nhc3Q8SlNDYW52YXNHcmFkaWVudCo+KG9iamVj
dCktPmltcGwoKSk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoJkpTQ2FudmFzUGF0dGVybjo6
c19pbmZvKSkKLSAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tUGF0dGVybihq
c0Nhc3Q8SlNDYW52YXNQYXR0ZXJuKj4ob2JqZWN0KS0+aW1wbCgpKTsKLSAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlKGpzQ2FzdDxKU0NhbnZhc1BhdHRlcm4qPihvYmpl
Y3QpLT5pbXBsKCkpOworICAgIHJldHVybiBDYW52YXNTdHlsZSgpOwogfQogCiBKU1ZhbHVlIEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VTdHlsZShFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IGUzMTdl
MGE3YTBiYWZjNmEyNDYzMGEzNThiNzAzZTcyZjg0YzJiYjAuLmNmMzgyNzkwYTI2M2EzMDBmNGY5
YzA3ZjU0OGY5MjA4NWI0Zjk5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ2FudmFzR3JhZGllbnQuaCIK
ICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmgiCi0jaW5jbHVkZSAiQ2FudmFzU3R5bGUuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCmluZGV4IDBiMzg5YWRhYmMxNzllZjhhNjQ2NjczY2MwZDEyOTY4ZjdmNGEzMzcuLmJi
OTFmMjlkYjQxMGZiY2ZiYmE1YzFkZTNlODNhMTY5MDk3MDdlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApA
QCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2Fu
dmFzR3JhZGllbnQuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCi0jaW5jbHVkZSAiQ2Fu
dmFzU3R5bGUuaCIKICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiRE9NUGF0aC5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKQEAgLTE4MCw4ICsxNzksOCBAQCB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6cmVzZXQoKQogfQogCiBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OlN0YXRlOjpTdGF0ZSgpCi0gICAgOiBtX3N0cm9rZVN0eWxlKENhbnZhc1N0eWxlOjpjcmVh
dGVGcm9tUkdCQShDb2xvcjo6YmxhY2spKQotICAgICwgbV9maWxsU3R5bGUoQ2FudmFzU3R5bGU6
OmNyZWF0ZUZyb21SR0JBKENvbG9yOjpibGFjaykpCisgICAgOiBtX3N0cm9rZVN0eWxlKENvbG9y
OjpibGFjaykKKyAgICAsIG1fZmlsbFN0eWxlKENvbG9yOjpibGFjaykKICAgICAsIG1fbGluZVdp
ZHRoKDEpCiAgICAgLCBtX2xpbmVDYXAoQnV0dENhcCkKICAgICAsIG1fbGluZUpvaW4oTWl0ZXJK
b2luKQpAQCAtMzEyLDY4ICszMTEsNTYgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnJlc3RvcmUoKQogICAgIGMtPnJlc3RvcmUoKTsKIH0KIAotQ2FudmFzU3R5bGUqIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlU3R5bGUoKSBjb25zdAordm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldFN0cm9rZVN0eWxlKENhbnZhc1N0eWxlIHN0eWxlKQogewotICAgIHJl
dHVybiBzdGF0ZSgpLm1fc3Ryb2tlU3R5bGUuZ2V0KCk7Ci19Ci0KLXZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpzZXRTdHJva2VTdHlsZShQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBwcnBT
dHlsZSkKLXsKLSAgICBSZWZQdHI8Q2FudmFzU3R5bGU+IHN0eWxlID0gcHJwU3R5bGU7Ci0KLSAg
ICBpZiAoIXN0eWxlKQorICAgIGlmICghc3R5bGUuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoc3RhdGUoKS5tX3N0cm9rZVN0eWxlICYmIHN0YXRlKCkubV9zdHJva2VTdHls
ZS0+aXNFcXVpdmFsZW50Q29sb3IoKnN0eWxlKSkKKyAgICBpZiAoc3RhdGUoKS5tX3N0cm9rZVN0
eWxlLmlzVmFsaWQoKSAmJiBzdGF0ZSgpLm1fc3Ryb2tlU3R5bGUuaXNFcXVpdmFsZW50Q29sb3Io
c3R5bGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoc3R5bGUtPmlzQ3VycmVudENvbG9y
KCkpIHsKLSAgICAgICAgaWYgKHN0eWxlLT5oYXNPdmVycmlkZUFscGhhKCkpCi0gICAgICAgICAg
ICBzdHlsZSA9IENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tUkdCQShjb2xvcldpdGhPdmVycmlkZUFs
cGhhKGN1cnJlbnRDb2xvcihjYW52YXMoKSksIHN0eWxlLT5vdmVycmlkZUFscGhhKCkpKTsKKyAg
ICBpZiAoc3R5bGUuaXNDdXJyZW50Q29sb3IoKSkgeworICAgICAgICBpZiAoc3R5bGUuaGFzT3Zl
cnJpZGVBbHBoYSgpKQorICAgICAgICAgICAgc3R5bGUgPSBDYW52YXNTdHlsZShjb2xvcldpdGhP
dmVycmlkZUFscGhhKGN1cnJlbnRDb2xvcihjYW52YXMoKSksIHN0eWxlLm92ZXJyaWRlQWxwaGEo
KSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdHlsZSA9IENhbnZhc1N0eWxlOjpjcmVh
dGVGcm9tUkdCQShjdXJyZW50Q29sb3IoY2FudmFzKCkpKTsKKyAgICAgICAgICAgIHN0eWxlID0g
Q2FudmFzU3R5bGUoY3VycmVudENvbG9yKGNhbnZhcygpKSk7CiAgICAgfSBlbHNlCi0gICAgICAg
IGNoZWNrT3JpZ2luKHN0eWxlLT5jYW52YXNQYXR0ZXJuKCkpOworICAgICAgICBjaGVja09yaWdp
bihzdHlsZS5jYW52YXNQYXR0ZXJuKCkpOwogCiAgICAgcmVhbGl6ZVNhdmVzKCk7Ci0gICAgbW9k
aWZpYWJsZVN0YXRlKCkubV9zdHJva2VTdHlsZSA9IHN0eWxlLnJlbGVhc2UoKTsKKyAgICBTdGF0
ZSYgc3RhdGUgPSBtb2RpZmlhYmxlU3RhdGUoKTsKKyAgICBzdGF0ZS5tX3N0cm9rZVN0eWxlID0g
c3R5bGU7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBp
ZiAoIWMpCiAgICAgICAgIHJldHVybjsKLSAgICBzdGF0ZSgpLm1fc3Ryb2tlU3R5bGUtPmFwcGx5
U3Ryb2tlQ29sb3IoYyk7Ci0gICAgbW9kaWZpYWJsZVN0YXRlKCkubV91bnBhcnNlZFN0cm9rZUNv
bG9yID0gU3RyaW5nKCk7CisgICAgc3RhdGUubV9zdHJva2VTdHlsZS5hcHBseVN0cm9rZUNvbG9y
KGMpOworICAgIHN0YXRlLm1fdW5wYXJzZWRTdHJva2VDb2xvciA9IFN0cmluZygpOwogfQogCi1D
YW52YXNTdHlsZSogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsU3R5bGUoKSBjb25zdAor
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxTdHlsZShDYW52YXNTdHlsZSBz
dHlsZSkKIHsKLSAgICByZXR1cm4gc3RhdGUoKS5tX2ZpbGxTdHlsZS5nZXQoKTsKLX0KLQotdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxTdHlsZShQYXNzUmVmUHRyPENhbnZh
c1N0eWxlPiBwcnBTdHlsZSkKLXsKLSAgICBSZWZQdHI8Q2FudmFzU3R5bGU+IHN0eWxlID0gcHJw
U3R5bGU7Ci0KLSAgICBpZiAoIXN0eWxlKQorICAgIGlmICghc3R5bGUuaXNWYWxpZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoc3RhdGUoKS5tX2ZpbGxTdHlsZSAmJiBzdGF0ZSgpLm1f
ZmlsbFN0eWxlLT5pc0VxdWl2YWxlbnRDb2xvcigqc3R5bGUpKQorICAgIGlmIChzdGF0ZSgpLm1f
ZmlsbFN0eWxlLmlzVmFsaWQoKSAmJiBzdGF0ZSgpLm1fZmlsbFN0eWxlLmlzRXF1aXZhbGVudENv
bG9yKHN0eWxlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHN0eWxlLT5pc0N1cnJlbnRD
b2xvcigpKSB7Ci0gICAgICAgIGlmIChzdHlsZS0+aGFzT3ZlcnJpZGVBbHBoYSgpKQotICAgICAg
ICAgICAgc3R5bGUgPSBDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbVJHQkEoY29sb3JXaXRoT3ZlcnJp
ZGVBbHBoYShjdXJyZW50Q29sb3IoY2FudmFzKCkpLCBzdHlsZS0+b3ZlcnJpZGVBbHBoYSgpKSk7
CisgICAgaWYgKHN0eWxlLmlzQ3VycmVudENvbG9yKCkpIHsKKyAgICAgICAgaWYgKHN0eWxlLmhh
c092ZXJyaWRlQWxwaGEoKSkKKyAgICAgICAgICAgIHN0eWxlID0gQ2FudmFzU3R5bGUoY29sb3JX
aXRoT3ZlcnJpZGVBbHBoYShjdXJyZW50Q29sb3IoY2FudmFzKCkpLCBzdHlsZS5vdmVycmlkZUFs
cGhhKCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3R5bGUgPSBDYW52YXNTdHlsZTo6
Y3JlYXRlRnJvbVJHQkEoY3VycmVudENvbG9yKGNhbnZhcygpKSk7CisgICAgICAgICAgICBzdHls
ZSA9IENhbnZhc1N0eWxlKGN1cnJlbnRDb2xvcihjYW52YXMoKSkpOwogICAgIH0gZWxzZQotICAg
ICAgICBjaGVja09yaWdpbihzdHlsZS0+Y2FudmFzUGF0dGVybigpKTsKKyAgICAgICAgY2hlY2tP
cmlnaW4oc3R5bGUuY2FudmFzUGF0dGVybigpKTsKIAogICAgIHJlYWxpemVTYXZlcygpOwotICAg
IG1vZGlmaWFibGVTdGF0ZSgpLm1fZmlsbFN0eWxlID0gc3R5bGUucmVsZWFzZSgpOworICAgIFN0
YXRlJiBzdGF0ZSA9IG1vZGlmaWFibGVTdGF0ZSgpOworICAgIHN0YXRlLm1fZmlsbFN0eWxlID0g
c3R5bGU7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBp
ZiAoIWMpCiAgICAgICAgIHJldHVybjsKLSAgICBzdGF0ZSgpLm1fZmlsbFN0eWxlLT5hcHBseUZp
bGxDb2xvcihjKTsKLSAgICBtb2RpZmlhYmxlU3RhdGUoKS5tX3VucGFyc2VkRmlsbENvbG9yID0g
U3RyaW5nKCk7CisgICAgc3RhdGUubV9maWxsU3R5bGUuYXBwbHlGaWxsQ29sb3IoYyk7CisgICAg
c3RhdGUubV91bnBhcnNlZEZpbGxDb2xvciA9IFN0cmluZygpOwogfQogCiBmbG9hdCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmxpbmVXaWR0aCgpIGNvbnN0CkBAIC03ODIsOSArNzY5LDkgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmlu
ZyYgY29sb3IpCiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VDb2xv
cihmbG9hdCBncmF5TGV2ZWwpCiB7Ci0gICAgaWYgKHN0YXRlKCkubV9zdHJva2VTdHlsZSAmJiBz
dGF0ZSgpLm1fc3Ryb2tlU3R5bGUtPmlzRXF1aXZhbGVudFJHQkEoZ3JheUxldmVsLCBncmF5TGV2
ZWwsIGdyYXlMZXZlbCwgMS4wZikpCisgICAgaWYgKHN0YXRlKCkubV9zdHJva2VTdHlsZS5pc1Zh
bGlkKCkgJiYgc3RhdGUoKS5tX3N0cm9rZVN0eWxlLmlzRXF1aXZhbGVudFJHQkEoZ3JheUxldmVs
LCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgMS4wZikpCiAgICAgICAgIHJldHVybjsKLSAgICBzZXRT
dHJva2VTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbUdyYXlMZXZlbFdpdGhBbHBoYShncmF5
TGV2ZWwsIDEuMGYpKTsKKyAgICBzZXRTdHJva2VTdHlsZShDYW52YXNTdHlsZShncmF5TGV2ZWws
IDEuMGYpKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNv
bG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKQpAQCAtNzk0LDIzICs3ODEsMjMg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKGNvbnN0IFN0
cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2V0U3Ryb2tlQ29sb3IoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSkKIHsKLSAgICBp
ZiAoc3RhdGUoKS5tX3N0cm9rZVN0eWxlICYmIHN0YXRlKCkubV9zdHJva2VTdHlsZS0+aXNFcXVp
dmFsZW50UkdCQShncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkpCisgICAg
aWYgKHN0YXRlKCkubV9zdHJva2VTdHlsZS5pc1ZhbGlkKCkgJiYgc3RhdGUoKS5tX3N0cm9rZVN0
eWxlLmlzRXF1aXZhbGVudFJHQkEoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgYWxw
aGEpKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0U3Ryb2tlU3R5bGUoQ2FudmFzU3R5bGU6OmNy
ZWF0ZUZyb21HcmF5TGV2ZWxXaXRoQWxwaGEoZ3JheUxldmVsLCBhbHBoYSkpOworICAgIHNldFN0
cm9rZVN0eWxlKENhbnZhc1N0eWxlKGdyYXlMZXZlbCwgYWxwaGEpKTsKIH0KIAogdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKGZsb2F0IHIsIGZsb2F0IGcsIGZs
b2F0IGIsIGZsb2F0IGEpCiB7Ci0gICAgaWYgKHN0YXRlKCkubV9zdHJva2VTdHlsZSAmJiBzdGF0
ZSgpLm1fc3Ryb2tlU3R5bGUtPmlzRXF1aXZhbGVudFJHQkEociwgZywgYiwgYSkpCisgICAgaWYg
KHN0YXRlKCkubV9zdHJva2VTdHlsZS5pc1ZhbGlkKCkgJiYgc3RhdGUoKS5tX3N0cm9rZVN0eWxl
LmlzRXF1aXZhbGVudFJHQkEociwgZywgYiwgYSkpCiAgICAgICAgIHJldHVybjsKLSAgICBzZXRT
dHJva2VTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbVJHQkFDaGFubmVscyhyLCBnLCBiLCBh
KSk7CisgICAgc2V0U3Ryb2tlU3R5bGUoQ2FudmFzU3R5bGUociwgZywgYiwgYSkpOwogfQogCiB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3IoZmxvYXQgYywgZmxv
YXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkKIHsKLSAgICBpZiAoc3RhdGUoKS5tX3N0
cm9rZVN0eWxlICYmIHN0YXRlKCkubV9zdHJva2VTdHlsZS0+aXNFcXVpdmFsZW50Q01ZS0EoYywg
bSwgeSwgaywgYSkpCisgICAgaWYgKHN0YXRlKCkubV9zdHJva2VTdHlsZS5pc1ZhbGlkKCkgJiYg
c3RhdGUoKS5tX3N0cm9rZVN0eWxlLmlzRXF1aXZhbGVudENNWUtBKGMsIG0sIHksIGssIGEpKQog
ICAgICAgICByZXR1cm47Ci0gICAgc2V0U3Ryb2tlU3R5bGUoQ2FudmFzU3R5bGU6OmNyZWF0ZUZy
b21DTVlLQUNoYW5uZWxzKGMsIG0sIHksIGssIGEpKTsKKyAgICBzZXRTdHJva2VTdHlsZShDYW52
YXNTdHlsZShjLCBtLCB5LCBrLCBhKSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRGaWxsQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvcikKQEAgLTgyNCw5ICs4MTEsOSBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbENvbG9yKGNvbnN0IFN0cmlu
ZyYgY29sb3IpCiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3Io
ZmxvYXQgZ3JheUxldmVsKQogewotICAgIGlmIChzdGF0ZSgpLm1fZmlsbFN0eWxlICYmIHN0YXRl
KCkubV9maWxsU3R5bGUtPmlzRXF1aXZhbGVudFJHQkEoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdy
YXlMZXZlbCwgMS4wZikpCisgICAgaWYgKHN0YXRlKCkubV9maWxsU3R5bGUuaXNWYWxpZCgpICYm
IHN0YXRlKCkubV9maWxsU3R5bGUuaXNFcXVpdmFsZW50UkdCQShncmF5TGV2ZWwsIGdyYXlMZXZl
bCwgZ3JheUxldmVsLCAxLjBmKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNldEZpbGxTdHlsZShD
YW52YXNTdHlsZTo6Y3JlYXRlRnJvbUdyYXlMZXZlbFdpdGhBbHBoYShncmF5TGV2ZWwsIDEuMGYp
KTsKKyAgICBzZXRGaWxsU3R5bGUoQ2FudmFzU3R5bGUoZ3JheUxldmVsLCAxLjBmKSk7CiB9CiAK
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IoY29uc3QgU3RyaW5n
JiBjb2xvciwgZmxvYXQgYWxwaGEpCkBAIC04MzYsMjMgKzgyMywyMyBAQCB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbENvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0
IGFscGhhKQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbENvbG9yKGZs
b2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpCiB7Ci0gICAgaWYgKHN0YXRlKCkubV9maWxsU3R5
bGUgJiYgc3RhdGUoKS5tX2ZpbGxTdHlsZS0+aXNFcXVpdmFsZW50UkdCQShncmF5TGV2ZWwsIGdy
YXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkpCisgICAgaWYgKHN0YXRlKCkubV9maWxsU3R5bGUu
aXNWYWxpZCgpICYmIHN0YXRlKCkubV9maWxsU3R5bGUuaXNFcXVpdmFsZW50UkdCQShncmF5TGV2
ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkpCiAgICAgICAgIHJldHVybjsKLSAgICBz
ZXRGaWxsU3R5bGUoQ2FudmFzU3R5bGU6OmNyZWF0ZUZyb21HcmF5TGV2ZWxXaXRoQWxwaGEoZ3Jh
eUxldmVsLCBhbHBoYSkpOworICAgIHNldEZpbGxTdHlsZShDYW52YXNTdHlsZShncmF5TGV2ZWws
IGFscGhhKSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29s
b3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKIHsKLSAgICBpZiAoc3RhdGUo
KS5tX2ZpbGxTdHlsZSAmJiBzdGF0ZSgpLm1fZmlsbFN0eWxlLT5pc0VxdWl2YWxlbnRSR0JBKHIs
IGcsIGIsIGEpKQorICAgIGlmIChzdGF0ZSgpLm1fZmlsbFN0eWxlLmlzVmFsaWQoKSAmJiBzdGF0
ZSgpLm1fZmlsbFN0eWxlLmlzRXF1aXZhbGVudFJHQkEociwgZywgYiwgYSkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBzZXRGaWxsU3R5bGUoQ2FudmFzU3R5bGU6OmNyZWF0ZUZyb21SR0JBQ2hhbm5l
bHMociwgZywgYiwgYSkpOworICAgIHNldEZpbGxTdHlsZShDYW52YXNTdHlsZShyLCBnLCBiLCBh
KSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IoZmxv
YXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkKIHsKLSAgICBpZiAoc3Rh
dGUoKS5tX2ZpbGxTdHlsZSAmJiBzdGF0ZSgpLm1fZmlsbFN0eWxlLT5pc0VxdWl2YWxlbnRDTVlL
QShjLCBtLCB5LCBrLCBhKSkKKyAgICBpZiAoc3RhdGUoKS5tX2ZpbGxTdHlsZS5pc1ZhbGlkKCkg
JiYgc3RhdGUoKS5tX2ZpbGxTdHlsZS5pc0VxdWl2YWxlbnRDTVlLQShjLCBtLCB5LCBrLCBhKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIHNldEZpbGxTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlRnJv
bUNNWUtBQ2hhbm5lbHMoYywgbSwgeSwgaywgYSkpOworICAgIHNldEZpbGxTdHlsZShDYW52YXNT
dHlsZShjLCBtLCB5LCBrLCBhKSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpiZWdpblBhdGgoKQpAQCAtMTY2Miw3ICsxNjQ5LDcgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRmlsbChjb25z
dAogICAgIHBhdGgudHJhbnNsYXRlKEZsb2F0U2l6ZSgtYnVmZmVyUmVjdC54KCksIC1idWZmZXJS
ZWN0LnkoKSkpOwogCiAgICAgYnVmZmVyLT5jb250ZXh0KCktPnNldENvbXBvc2l0ZU9wZXJhdGlv
bihDb21wb3NpdGVTb3VyY2VPdmVyKTsKLSAgICBzdGF0ZSgpLm1fZmlsbFN0eWxlLT5hcHBseUZp
bGxDb2xvcihidWZmZXItPmNvbnRleHQoKSk7CisgICAgbW9kaWZpYWJsZVN0YXRlKCkubV9maWxs
U3R5bGUuYXBwbHlGaWxsQ29sb3IoYnVmZmVyLT5jb250ZXh0KCkpOwogICAgIGJ1ZmZlci0+Y29u
dGV4dCgpLT5maWxsUGF0aChwYXRoKTsKIAogICAgIGNvbXBvc2l0ZUJ1ZmZlcihidWZmZXIuZ2V0
KCksIGJ1ZmZlclJlY3QsIHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpOwpAQCAtMjI1Miw4ICsy
MjM5LDggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICAgICAgaW5mbGF0ZVN0cm9rZVJl
Y3QodGV4dFJlY3QpOwogCiAjaWYgVVNFKENHKQotICAgIENhbnZhc1N0eWxlKiBkcmF3U3R5bGUg
PSBmaWxsID8gc3RhdGUoKS5tX2ZpbGxTdHlsZS5nZXQoKSA6IHN0YXRlKCkubV9zdHJva2VTdHls
ZS5nZXQoKTsKLSAgICBpZiAoZHJhd1N0eWxlLT5jYW52YXNHcmFkaWVudCgpIHx8IGRyYXdTdHls
ZS0+Y2FudmFzUGF0dGVybigpKSB7CisgICAgY29uc3QgQ2FudmFzU3R5bGUmIGRyYXdTdHlsZSA9
IGZpbGwgPyBzdGF0ZSgpLm1fZmlsbFN0eWxlIDogc3RhdGUoKS5tX3N0cm9rZVN0eWxlOworICAg
IGlmIChkcmF3U3R5bGUuY2FudmFzR3JhZGllbnQoKSB8fCBkcmF3U3R5bGUuY2FudmFzUGF0dGVy
bigpKSB7CiAgICAgICAgIEludFJlY3QgbWFza1JlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHRleHRS
ZWN0KTsKIAogICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZSA9IGMtPmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpKTsKQEAgLTIyODEsNyArMjI2OCw3IEBA
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0
cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpjKTsKICAgICAgICAgYy0+Y2xpcFRvSW1hZ2VCdWZmZXIobWFza0lt
YWdlLmdldCgpLCBtYXNrUmVjdCk7Ci0gICAgICAgIGRyYXdTdHlsZS0+YXBwbHlGaWxsQ29sb3Io
Yyk7CisgICAgICAgIGRyYXdTdHlsZS5hcHBseUZpbGxDb2xvcihjKTsKICAgICAgICAgYy0+Zmls
bFJlY3QobWFza1JlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCBk
NGQyMWFmYTVmZGI0YTNjMWQ4ODE3MzY4NTU3MmFjM2Y5NGJhMDk2Li4yOGJhZmJkOGQ1NmRiMzRm
ZWFlZmNiZjQ0ODAwNzQ2YzQ5OWM3YmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdGhNZXRob2Rz
LmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkNhbnZh
c1N0eWxlLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAj
aW5jbHVkZSAiRGFzaEFycmF5LmgiCkBAIC00OCw3ICs0OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ2FudmFzR3JhZGllbnQ7CiBjbGFzcyBDYW52YXNQYXR0ZXJuOwotY2xhc3Mg
Q2FudmFzU3R5bGU7CiAjaWYgRU5BQkxFKENBTlZBU19QQVRIKQogY2xhc3MgRE9NUGF0aDsKICNl
bmRpZgpAQCAtNzAsMTEgKzcwLDExIEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEKCk7CiAKLSAgICBDYW52YXNTdHlsZSogc3Ryb2tlU3R5bGUo
KSBjb25zdDsKLSAgICB2b2lkIHNldFN0cm9rZVN0eWxlKFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+
KTsKKyAgICBjb25zdCBDYW52YXNTdHlsZSYgc3Ryb2tlU3R5bGUoKSBjb25zdCB7IHJldHVybiBz
dGF0ZSgpLm1fc3Ryb2tlU3R5bGU7IH0KKyAgICB2b2lkIHNldFN0cm9rZVN0eWxlKENhbnZhc1N0
eWxlKTsKIAotICAgIENhbnZhc1N0eWxlKiBmaWxsU3R5bGUoKSBjb25zdDsKLSAgICB2b2lkIHNl
dEZpbGxTdHlsZShQYXNzUmVmUHRyPENhbnZhc1N0eWxlPik7CisgICAgY29uc3QgQ2FudmFzU3R5
bGUmIGZpbGxTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRlKCkubV9maWxsU3R5bGU7IH0KKyAg
ICB2b2lkIHNldEZpbGxTdHlsZShDYW52YXNTdHlsZSk7CiAKICAgICBmbG9hdCBsaW5lV2lkdGgo
KSBjb25zdDsKICAgICB2b2lkIHNldExpbmVXaWR0aChmbG9hdCk7CkBAIC0yNDAsOCArMjQwLDgg
QEAgcHJpdmF0ZToKIAogICAgICAgICBTdHJpbmcgbV91bnBhcnNlZFN0cm9rZUNvbG9yOwogICAg
ICAgICBTdHJpbmcgbV91bnBhcnNlZEZpbGxDb2xvcjsKLSAgICAgICAgUmVmUHRyPENhbnZhc1N0
eWxlPiBtX3N0cm9rZVN0eWxlOwotICAgICAgICBSZWZQdHI8Q2FudmFzU3R5bGU+IG1fZmlsbFN0
eWxlOworICAgICAgICBDYW52YXNTdHlsZSBtX3N0cm9rZVN0eWxlOworICAgICAgICBDYW52YXNT
dHlsZSBtX2ZpbGxTdHlsZTsKICAgICAgICAgZmxvYXQgbV9saW5lV2lkdGg7CiAgICAgICAgIExp
bmVDYXAgbV9saW5lQ2FwOwogICAgICAgICBMaW5lSm9pbiBtX2xpbmVKb2luOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCmluZGV4IGNkMmVlZDlkMDNiMWM4OTk2
ZDQ1MDMzM2YyMmQ0NmNhMDA5ZWNlYTYuLjVmYTExOTg3YmIzNDI2MGM0ZjhkMTQ2NmEyMDQxNzZm
MWQxMzkzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0
eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAK
QEAgLTkyLDQ2ICs5Miw0NCBAQCBib29sIHBhcnNlQ29sb3JPckN1cnJlbnRDb2xvcihSR0JBMzIm
IHBhcnNlZENvbG9yLCBjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nLCBIVAogICAgIH0KIH0KIAot
Q2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKFR5cGUgdHlwZSwgZmxvYXQgb3ZlcnJpZGVBbHBoYSkK
LSAgICA6IG1fdHlwZSh0eXBlKQotICAgICwgbV9vdmVycmlkZUFscGhhKG92ZXJyaWRlQWxwaGEp
Ci17Ci19Ci0KIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShSR0JBMzIgcmdiYSkKLSAgICA6IG1f
dHlwZShSR0JBKQotICAgICwgbV9yZ2JhKHJnYmEpCisgICAgOiBtX3JnYmEocmdiYSkKKyAgICAs
IG1fdHlwZShSR0JBKQogewogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoZmxvYXQgZ3Jh
eUxldmVsLCBmbG9hdCBhbHBoYSkKLSAgICA6IG1fdHlwZShSR0JBKQotICAgICwgbV9yZ2JhKG1h
a2VSR0JBMzJGcm9tRmxvYXRzKGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWwsIGFscGhh
KSkKKyAgICA6IG1fcmdiYShtYWtlUkdCQTMyRnJvbUZsb2F0cyhncmF5TGV2ZWwsIGdyYXlMZXZl
bCwgZ3JheUxldmVsLCBhbHBoYSkpCisgICAgLCBtX3R5cGUoUkdCQSkKIHsKIH0KIAogQ2FudmFz
U3R5bGU6OkNhbnZhc1N0eWxlKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCi0g
ICAgOiBtX3R5cGUoUkdCQSkKLSAgICAsIG1fcmdiYShtYWtlUkdCQTMyRnJvbUZsb2F0cyhyLCBn
LCBiLCBhKSkKKyAgICA6IG1fcmdiYShtYWtlUkdCQTMyRnJvbUZsb2F0cyhyLCBnLCBiLCBhKSkK
KyAgICAsIG1fdHlwZShSR0JBKQogewogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoZmxv
YXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkKLSAgICA6IG1fdHlwZShD
TVlLQSkKLSAgICAsIG1fY215a2EobmV3IENNWUtBVmFsdWVzKG1ha2VSR0JBRnJvbUNNWUtBKGMs
IG0sIHksIGssIGEpLCBjLCBtLCB5LCBrLCBhKSkKKyAgICA6IG1fY215a2EobmV3IENNWUtBVmFs
dWVzKG1ha2VSR0JBRnJvbUNNWUtBKGMsIG0sIHksIGssIGEpLCBjLCBtLCB5LCBrLCBhKSkKKyAg
ICAsIG1fdHlwZShDTVlLQSkKIHsKIH0KIAogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKFBhc3NS
ZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGdyYWRpZW50KQotICAgIDogbV90eXBlKEdyYWRpZW50KQot
ICAgICwgbV9ncmFkaWVudChncmFkaWVudC5sZWFrUmVmKCkpCisgICAgOiBtX2dyYWRpZW50KGdy
YWRpZW50LmxlYWtSZWYoKSkKKyAgICAsIG1fdHlwZShHcmFkaWVudCkKIHsKKyAgICBpZiAoIW1f
Z3JhZGllbnQpCisgICAgICAgIG1fdHlwZSA9IEludmFsaWQ7CiB9CiAKIENhbnZhc1N0eWxlOjpD
YW52YXNTdHlsZShQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+IHBhdHRlcm4pCi0gICAgOiBtX3R5
cGUoSW1hZ2VQYXR0ZXJuKQotICAgICwgbV9wYXR0ZXJuKHBhdHRlcm4ubGVha1JlZigpKQorICAg
IDogbV9wYXR0ZXJuKHBhdHRlcm4ubGVha1JlZigpKQorICAgICwgbV90eXBlKEltYWdlUGF0dGVy
bikKIHsKKyAgICBpZiAoIW1fcGF0dGVybikKKyAgICAgICAgbV90eXBlID0gSW52YWxpZDsKIH0K
IAogQ2FudmFzU3R5bGU6On5DYW52YXNTdHlsZSgpCkBAIC0xNDQsNTQgKzE0Miw0MSBAQCBDYW52
YXNTdHlsZTo6fkNhbnZhc1N0eWxlKCkKICAgICAgICAgZGVsZXRlIG1fY215a2E7CiB9CiAKLVBh
c3NSZWZQdHI8Q2FudmFzU3R5bGU+IENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYgY29sb3IsIERvY3VtZW50KiBkb2N1bWVudCkKK0NhbnZhc1N0eWxlIENhbnZhc1N0
eWxlOjpjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgY29sb3IsIERvY3VtZW50KiBkb2N1
bWVudCkKIHsKICAgICBSR0JBMzIgcmdiYTsKICAgICBDb2xvclBhcnNlUmVzdWx0IHBhcnNlUmVz
dWx0ID0gcGFyc2VDb2xvcihyZ2JhLCBjb2xvciwgZG9jdW1lbnQpOwogICAgIHN3aXRjaCAocGFy
c2VSZXN1bHQpIHsKICAgICBjYXNlIFBhcnNlZFJHQkE6CiAgICAgY2FzZSBQYXJzZWRTeXN0ZW1D
b2xvcjoKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShyZ2JhKSk7Cisg
ICAgICAgIHJldHVybiBDYW52YXNTdHlsZShyZ2JhKTsKICAgICBjYXNlIFBhcnNlZEN1cnJlbnRD
b2xvcjoKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShDdXJyZW50Q29s
b3IpKTsKKyAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlKENvbnN0cnVjdEN1cnJlbnRDb2xvcik7
CiAgICAgY2FzZSBQYXJzZUZhaWxlZDoKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBDYW52YXNTdHlsZSgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlKCk7CiAg
ICAgfQogfQogCi1QYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBDYW52YXNTdHlsZTo6Y3JlYXRlRnJv
bVN0cmluZ1dpdGhPdmVycmlkZUFscGhhKGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhh
KQorQ2FudmFzU3R5bGUgQ2FudmFzU3R5bGU6OmNyZWF0ZUZyb21TdHJpbmdXaXRoT3ZlcnJpZGVB
bHBoYShjb25zdCBTdHJpbmcmIGNvbG9yLCBmbG9hdCBhbHBoYSkKIHsKICAgICBSR0JBMzIgcmdi
YTsKICAgICBDb2xvclBhcnNlUmVzdWx0IHBhcnNlUmVzdWx0ID0gcGFyc2VDb2xvcihyZ2JhLCBj
b2xvcik7CiAgICAgc3dpdGNoIChwYXJzZVJlc3VsdCkgewogICAgIGNhc2UgUGFyc2VkUkdCQToK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShjb2xvcldpdGhPdmVycmlk
ZUFscGhhKHJnYmEsIGFscGhhKSkpOworICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGUoY29sb3JX
aXRoT3ZlcnJpZGVBbHBoYShyZ2JhLCBhbHBoYSkpOwogICAgIGNhc2UgUGFyc2VkQ3VycmVudENv
bG9yOgotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKEN1cnJlbnRDb2xv
cldpdGhPdmVycmlkZUFscGhhLCBhbHBoYSkpOworICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGUo
Q3VycmVudENvbG9yV2l0aE92ZXJyaWRlQWxwaGEsIGFscGhhKTsKICAgICBjYXNlIFBhcnNlRmFp
bGVkOgotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlKCk7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGUoKTsKICAgICB9CiB9CiAKLVBhc3NSZWZQ
dHI8Q2FudmFzU3R5bGU+IENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tR3JhZGllbnQoUGFzc1JlZlB0
cjxDYW52YXNHcmFkaWVudD4gZ3JhZGllbnQpCi17Ci0gICAgaWYgKCFncmFkaWVudCkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShncmFkaWVu
dCkpOwotfQotUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gQ2FudmFzU3R5bGU6OmNyZWF0ZUZyb21Q
YXR0ZXJuKFBhc3NSZWZQdHI8Q2FudmFzUGF0dGVybj4gcGF0dGVybikKLXsKLSAgICBpZiAoIXBh
dHRlcm4pCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFz
U3R5bGUocGF0dGVybikpOwotfQotCiBib29sIENhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnRDb2xv
cihjb25zdCBDYW52YXNTdHlsZSYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKG1fdHlwZSAhPSBv
dGhlci5tX3R5cGUpCkBAIC0yMTEsNiArMTk2LDggQEAgYm9vbCBDYW52YXNTdHlsZTo6aXNFcXVp
dmFsZW50Q29sb3IoY29uc3QgQ2FudmFzU3R5bGUmIG90aGVyKSBjb25zdAogICAgIGNhc2UgQ3Vy
cmVudENvbG9yOgogICAgIGNhc2UgQ3VycmVudENvbG9yV2l0aE92ZXJyaWRlQWxwaGE6CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIEludmFsaWQ6CisgICAgICAgIGJyZWFrOwogICAg
IH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjM3LDcgKzIyNCwzMiBAQCBib29s
IENhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnRDTVlLQShmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5
LCBmbG9hdCBrLCBmbG9hdCBhKQogICAgICAgICAmJiBhID09IG1fY215a2EtPmE7CiB9CiAKLXZv
aWQgQ2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
KQorQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKGNvbnN0IENhbnZhc1N0eWxlJiBvdGhlcikKK3sK
KyAgICBtZW1jcHkodGhpcywgJm90aGVyLCBzaXplb2YoQ2FudmFzU3R5bGUpKTsKKyAgICBpZiAo
bV90eXBlID09IEdyYWRpZW50KQorICAgICAgICBtX2dyYWRpZW50LT5yZWYoKTsKKyAgICBlbHNl
IGlmIChtX3R5cGUgPT0gSW1hZ2VQYXR0ZXJuKQorICAgICAgICBtX3BhdHRlcm4tPnJlZigpOwor
ICAgIGVsc2UgaWYgKG1fdHlwZSA9PSBDTVlLQSkKKyAgICAgICAgbV9jbXlrYSA9IG5ldyBDTVlL
QVZhbHVlcyhvdGhlci5tX2NteWthLT5yZ2JhLCBvdGhlci5tX2NteWthLT5jLCBvdGhlci5tX2Nt
eWthLT5tLCBvdGhlci5tX2NteWthLT55LCBvdGhlci5tX2NteWthLT5rLCBvdGhlci5tX2NteWth
LT5hKTsKK30KKworQ2FudmFzU3R5bGUmIENhbnZhc1N0eWxlOjpvcGVyYXRvcj0oY29uc3QgQ2Fu
dmFzU3R5bGUmIG90aGVyKQoreworICAgIGlmICh0aGlzICE9ICZvdGhlcikgeworICAgICAgICBt
ZW1jcHkodGhpcywgJm90aGVyLCBzaXplb2YoQ2FudmFzU3R5bGUpKTsKKyAgICAgICAgaWYgKG1f
dHlwZSA9PSBHcmFkaWVudCkKKyAgICAgICAgICAgIG1fZ3JhZGllbnQtPnJlZigpOworICAgICAg
ICBlbHNlIGlmIChtX3R5cGUgPT0gSW1hZ2VQYXR0ZXJuKQorICAgICAgICAgICAgbV9wYXR0ZXJu
LT5yZWYoKTsKKyAgICAgICAgZWxzZSBpZiAobV90eXBlID09IENNWUtBKQorICAgICAgICAgICAg
bV9jbXlrYSA9IG5ldyBDTVlLQVZhbHVlcyhvdGhlci5tX2NteWthLT5yZ2JhLCBvdGhlci5tX2Nt
eWthLT5jLCBvdGhlci5tX2NteWthLT5tLCBvdGhlci5tX2NteWthLT55LCBvdGhlci5tX2NteWth
LT5rLCBvdGhlci5tX2NteWthLT5hKTsKKyAgICB9CisgICAgcmV0dXJuICp0aGlzOworfQorCit2
b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNvbG9yKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCkgY29uc3QKIHsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybjsKQEAgLTI2OSwx
MiArMjgxLDEzIEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29sb3IoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0KQogICAgICAgICBicmVhazsKICAgICBjYXNlIEN1cnJlbnRDb2xvcjoK
ICAgICBjYXNlIEN1cnJlbnRDb2xvcldpdGhPdmVycmlkZUFscGhhOgorICAgIGNhc2UgSW52YWxp
ZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IH0KIAotdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlGaWxsQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KQordm9pZCBDYW52YXNTdHlsZTo6YXBwbHlGaWxsQ29sb3IoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KSBjb25zdAogewogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwpA
QCAtMzA2LDYgKzMxOSw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCkKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDdXJyZW50Q29s
b3I6CiAgICAgY2FzZSBDdXJyZW50Q29sb3JXaXRoT3ZlcnJpZGVBbHBoYToKKyAgICBjYXNlIElu
dmFsaWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaAppbmRleCBmNzk0MGEw
ZWE4YjkzMGJmMDAwZDM1ZjJmMmYyYWU4ZjZmZTUzZjNiLi5iMTRkZjRlZDUzOTg5ZDc3Y2Q1MDFi
Yzc1OTY5YmVmZmE0YzcwNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0
eWxlLmgKQEAgLTQwLDIxICs0MCwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
R3JhcGhpY3NDb250ZXh0OwogICAgIGNsYXNzIEhUTUxDYW52YXNFbGVtZW50OwogCi0gICAgY2xh
c3MgQ2FudmFzU3R5bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxDYW52YXNTdHlsZT4gewotICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q2FudmFzU3R5bGUpOworICAgIGNsYXNzIENhbnZhc1N0eWxlIHsKICAgICBwdWJsaWM6CisgICAg
ICAgIENhbnZhc1N0eWxlKCk7CisgICAgICAgIENhbnZhc1N0eWxlKFJHQkEzMik7CisgICAgICAg
IENhbnZhc1N0eWxlKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpOworICAgICAgICBDYW52
YXNTdHlsZShmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhbHBoYSk7CisgICAgICAg
IENhbnZhc1N0eWxlKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGFs
cGhhKTsKKyAgICAgICAgQ2FudmFzU3R5bGUoUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4pOwor
ICAgICAgICBDYW52YXNTdHlsZShQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+KTsKICAgICAgICAg
fkNhbnZhc1N0eWxlKCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+
IGNyZWF0ZUZyb21SR0JBKFJHQkEzMiByZ2JhKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFz
U3R5bGUocmdiYSkpOyB9Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBj
cmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgY29sb3IsIERvY3VtZW50KiA9IDApOwotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gY3JlYXRlRnJvbVN0cmluZ1dpdGhP
dmVycmlkZUFscGhhKGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKTsKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZUZyb21HcmF5TGV2ZWxXaXRoQWxw
aGEoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENh
bnZhc1N0eWxlKGdyYXlMZXZlbCwgYWxwaGEpKTsgfQotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDYW52YXNTdHlsZT4gY3JlYXRlRnJvbVJHQkFDaGFubmVscyhmbG9hdCByLCBmbG9hdCBnLCBm
bG9hdCBiLCBmbG9hdCBhKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUociwgZywg
YiwgYSkpOyB9Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBjcmVhdGVG
cm9tQ01ZS0FDaGFubmVscyhmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9h
dCBhKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUoYywgbSwgeSwgaywgYSkpOyB9
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBjcmVhdGVGcm9tR3JhZGll
bnQoUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4pOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDYW52YXNTdHlsZT4gY3JlYXRlRnJvbVBhdHRlcm4oUGFzc1JlZlB0cjxDYW52YXNQYXR0ZXJu
Pik7CisgICAgICAgIHN0YXRpYyBDYW52YXNTdHlsZSBjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0
cmluZyYgY29sb3IsIERvY3VtZW50KiA9IDApOworICAgICAgICBzdGF0aWMgQ2FudmFzU3R5bGUg
Y3JlYXRlRnJvbVN0cmluZ1dpdGhPdmVycmlkZUFscGhhKGNvbnN0IFN0cmluZyYgY29sb3IsIGZs
b2F0IGFscGhhKTsKIAorICAgICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgIT0gSW52YWxpZDsgfQogICAgICAgICBib29sIGlzQ3VycmVudENvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID09IEN1cnJlbnRDb2xvciB8fCBtX3R5cGUgPT0gQ3VycmVudENvbG9yV2l0
aE92ZXJyaWRlQWxwaGE7IH0KICAgICAgICAgYm9vbCBoYXNPdmVycmlkZUFscGhhKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlID09IEN1cnJlbnRDb2xvcldpdGhPdmVycmlkZUFscGhhOyB9CiAgICAg
ICAgIGZsb2F0IG92ZXJyaWRlQWxwaGEoKSBjb25zdCB7IEFTU0VSVChtX3R5cGUgPT0gQ3VycmVu
dENvbG9yV2l0aE92ZXJyaWRlQWxwaGEpOyByZXR1cm4gbV9vdmVycmlkZUFscGhhOyB9CkBAIC02
MywxNSArNjMsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDYW52YXNHcmFkaWVu
dCogY2FudmFzR3JhZGllbnQoKSBjb25zdDsKICAgICAgICAgQ2FudmFzUGF0dGVybiogY2FudmFz
UGF0dGVybigpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgYXBwbHlGaWxsQ29sb3IoR3JhcGhpY3ND
b250ZXh0Kik7Ci0gICAgICAgIHZvaWQgYXBwbHlTdHJva2VDb2xvcihHcmFwaGljc0NvbnRleHQq
KTsKKyAgICAgICAgdm9pZCBhcHBseUZpbGxDb2xvcihHcmFwaGljc0NvbnRleHQqKSBjb25zdDsK
KyAgICAgICAgdm9pZCBhcHBseVN0cm9rZUNvbG9yKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0Owog
CiAgICAgICAgIGJvb2wgaXNFcXVpdmFsZW50Q29sb3IoY29uc3QgQ2FudmFzU3R5bGUmKSBjb25z
dDsKICAgICAgICAgYm9vbCBpc0VxdWl2YWxlbnRSR0JBKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0
IGIsIGZsb2F0IGEpIGNvbnN0OwogICAgICAgICBib29sIGlzRXF1aXZhbGVudENNWUtBKGZsb2F0
IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpIGNvbnN0OwogCisgICAgICAg
IENhbnZhc1N0eWxlKGNvbnN0IENhbnZhc1N0eWxlJik7CisgICAgICAgIENhbnZhc1N0eWxlJiBv
cGVyYXRvcj0oY29uc3QgQ2FudmFzU3R5bGUmKTsKKyNpZiBDT01QSUxFUl9TVVBQT1JUUyhDWFhf
UlZBTFVFX1JFRkVSRU5DRVMpCisgICAgICAgIENhbnZhc1N0eWxlKENhbnZhc1N0eWxlJiYpOwor
ICAgICAgICBDYW52YXNTdHlsZSYgb3BlcmF0b3I9KENhbnZhc1N0eWxlJiYpOworI2VuZGlmCisK
ICAgICBwcml2YXRlOgotICAgICAgICBlbnVtIFR5cGUgeyBSR0JBLCBDTVlLQSwgR3JhZGllbnQs
IEltYWdlUGF0dGVybiwgQ3VycmVudENvbG9yLCBDdXJyZW50Q29sb3JXaXRoT3ZlcnJpZGVBbHBo
YSB9OworICAgICAgICBlbnVtIFR5cGUgeyBSR0JBLCBDTVlLQSwgR3JhZGllbnQsIEltYWdlUGF0
dGVybiwgQ3VycmVudENvbG9yLCBDdXJyZW50Q29sb3JXaXRoT3ZlcnJpZGVBbHBoYSwgSW52YWxp
ZCB9OwogICAgICAgICBzdHJ1Y3QgQ01ZS0FWYWx1ZXMgewogICAgICAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDTVlLQVZh
bHVlcyk7CkBAIC04NiwxNSArOTMsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAg
ICAgZmxvYXQgYTsKICAgICAgICAgfTsKIAotICAgICAgICBDYW52YXNTdHlsZShUeXBlLCBmbG9h
dCBvdmVycmlkZUFscGhhID0gMCk7Ci0gICAgICAgIENhbnZhc1N0eWxlKFJHQkEzMiByZ2JhKTsK
LSAgICAgICAgQ2FudmFzU3R5bGUoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSk7Ci0gICAg
ICAgIENhbnZhc1N0eWxlKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpOwotICAg
ICAgICBDYW52YXNTdHlsZShmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9h
dCBhKTsKLSAgICAgICAgQ2FudmFzU3R5bGUoUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4pOwot
ICAgICAgICBDYW52YXNTdHlsZShQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+KTsKLQotICAgICAg
ICBUeXBlIG1fdHlwZTsKKyAgICAgICAgZW51bSBDb25zdHJ1Y3RDdXJyZW50Q29sb3JUYWcgeyBD
b25zdHJ1Y3RDdXJyZW50Q29sb3IgfTsKKyAgICAgICAgQ2FudmFzU3R5bGUoQ29uc3RydWN0Q3Vy
cmVudENvbG9yVGFnKSA6IG1fdHlwZShDdXJyZW50Q29sb3IpIHsgfQorICAgICAgICBDYW52YXNT
dHlsZShUeXBlIHR5cGUsIGZsb2F0IG92ZXJyaWRlQWxwaGEpCisgICAgICAgICAgICA6IG1fb3Zl
cnJpZGVBbHBoYShvdmVycmlkZUFscGhhKQorICAgICAgICAgICAgLCBtX3R5cGUodHlwZSkKKyAg
ICAgICAgeworICAgICAgICB9CiAKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgUkdCQTMy
IG1fcmdiYTsKQEAgLTEwMywxMSArMTA4LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgIENhbnZhc1BhdHRlcm4qIG1fcGF0dGVybjsKICAgICAgICAgICAgIENNWUtBVmFsdWVz
KiBtX2NteWthOwogICAgICAgICB9OworICAgICAgICBUeXBlIG1fdHlwZTsKICAgICB9OwogCiAg
ICAgUkdCQTMyIGN1cnJlbnRDb2xvcihIVE1MQ2FudmFzRWxlbWVudCopOwogICAgIGJvb2wgcGFy
c2VDb2xvck9yQ3VycmVudENvbG9yKFJHQkEzMiYgcGFyc2VkQ29sb3IsIGNvbnN0IFN0cmluZyYg
Y29sb3JTdHJpbmcsIEhUTUxDYW52YXNFbGVtZW50Kik7CiAKKyAgICBDYW52YXNTdHlsZTo6Q2Fu
dmFzU3R5bGUoKQorICAgICAgICA6IG1fdHlwZShJbnZhbGlkKQorICAgIHsKKyAgICB9CisKICAg
ICBpbmxpbmUgQ2FudmFzR3JhZGllbnQqIENhbnZhc1N0eWxlOjpjYW52YXNHcmFkaWVudCgpIGNv
bnN0CiAgICAgewogICAgICAgICBpZiAobV90eXBlID09IEdyYWRpZW50KQpAQCAtMTMwLDYgKzE0
MSwyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHJldHVybiBDb2xvcihtX2NteWth
LT5yZ2JhKS5zZXJpYWxpemVkKCk7CiAgICAgfQogCisjaWYgQ09NUElMRVJfU1VQUE9SVFMoQ1hY
X1JWQUxVRV9SRUZFUkVOQ0VTKQorICAgIGlubGluZSBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUo
Q2FudmFzU3R5bGUmJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1lbWNweSh0aGlzLCAmb3RoZXIs
IHNpemVvZihDYW52YXNTdHlsZSkpOworICAgICAgICBvdGhlci5tX3R5cGUgPSBJbnZhbGlkOwor
ICAgIH0KKworICAgIGlubGluZSBDYW52YXNTdHlsZSYgQ2FudmFzU3R5bGU6Om9wZXJhdG9yPShD
YW52YXNTdHlsZSYmIG90aGVyKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7
CisgICAgICAgICAgICBtZW1jcHkodGhpcywgJm90aGVyLCBzaXplb2YoQ2FudmFzU3R5bGUpKTsK
KyAgICAgICAgICAgIG90aGVyLm1fdHlwZSA9IEludmFsaWQ7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuICp0aGlzOworICAgIH0KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201029</attachid>
            <date>2013-05-07 22:14:43 -0700</date>
            <delta_ts>2013-05-08 13:57:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115775-20130507221349.patch</filename>
            <type>text/plain</type>
            <size>27945</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmYzOTBhZWExZGNkZjZi
ZjM3NTYzYjNiMjM1ZjkzODdlOGFmNGZkNy4uODBkZDhkMDFmOTlmZWNmYmE2NjFkOTVjNDBlNWY3
NTYwMWZjYWIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ4IEBACiAyMDEzLTA1LTA3ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCisgICAgICAgIE1ha2UgQ2FudmFz
U3R5bGUgYSBwbGFpbiBvYmplY3QgaW5zdGVhZCBvZiBhbiBSZWZDb3VudGVkIG9iamVjdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1Nzc1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FudmFzU3R5bGUg
aXMganVzdCAyIHdvcmRzIHdpZGUuIFdlIGRvIG5vdCBnYWluIGFueXRoaW5nIGZyb20gYWxsb2Nh
dGluZworICAgICAgICBpdCBvbiB0aGUgaGVhcC4gQ2hhbmdlIHRoZSBvYmplY3QgdG8gYmUganVz
dCBhIHR5cGUgYW5kIHNvbWUgZGF0YS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9IVE1MQ2FudmFzU3R5bGUpOgorICAgICAgICAqIGh0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OlN0YXRlOjpTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c2V0RmlsbFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZEZpbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlU3R5bGUpOgorICAg
ICAgICAoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbFN0eWxlKToKKyAgICAgICAgKFN0YXRlKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNTdHlsZTo6Q2FudmFzU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmNy
ZWF0ZUZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmNyZWF0ZUZy
b21TdHJpbmdXaXRoT3ZlcnJpZGVBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHls
ZTo6aXNFcXVpdmFsZW50Q29sb3IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNTdHlsZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0
eWxlOjphcHBseVN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjph
cHBseUZpbGxDb2xvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaDoKKyAg
ICAgICAgKENhbnZhc1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjppc1Zh
bGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpDYW52YXNTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpvcGVyYXRvcj0p
OgorCisyMDEzLTA1LTA3ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgor
CiAgICAgICAgIE1ha2UgQ2FudmFzU3R5bGUncyBDTVlLQVZhbHVlcyBhbGxvY2F0ZWQgb24gdGhl
IGhlYXAgYW5kIG1vdmUgdGhlIHBvaW50ZXIgaW4gdGhlIHVuaW9uLgogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1NzY0CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQ3VzdG9tLmNwcAppbmRleCAyNmEwYjQ2MzAwMTA4NjIxNjJmNmNiMWY4ZDc3NDMzZmI1NzQ3
YmNjLi4yYmU0OTMxYWU0MTg5YzRjN2ExYTg0ODg0YmIxNjYwNzVmZWRjMTk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRDdXN0b20uY3BwCkBAIC0zOCwyNSArMzgsMjUgQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgSlNWYWx1ZSB0b0pTKEV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FudmFzU3R5bGUq
IHN0eWxlKQorc3RhdGljIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IENhbnZhc1N0eWxlJiBzdHlsZSkKIHsKLSAgICBp
ZiAoc3R5bGUtPmNhbnZhc0dyYWRpZW50KCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGds
b2JhbE9iamVjdCwgc3R5bGUtPmNhbnZhc0dyYWRpZW50KCkpOwotICAgIGlmIChzdHlsZS0+Y2Fu
dmFzUGF0dGVybigpKQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHN0
eWxlLT5jYW52YXNQYXR0ZXJuKCkpOwotICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVj
LCBzdHlsZS0+Y29sb3IoKSk7CisgICAgaWYgKHN0eWxlLmNhbnZhc0dyYWRpZW50KCkpCisgICAg
ICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3R5bGUuY2FudmFzR3JhZGllbnQo
KSk7CisgICAgaWYgKHN0eWxlLmNhbnZhc1BhdHRlcm4oKSkKKyAgICAgICAgcmV0dXJuIHRvSlMo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHlsZS5jYW52YXNQYXR0ZXJuKCkpOworICAgIHJldHVybiBq
c1N0cmluZ1dpdGhDYWNoZShleGVjLCBzdHlsZS5jb2xvcigpKTsKIH0KIAotc3RhdGljIFBhc3NS
ZWZQdHI8Q2FudmFzU3R5bGU+IHRvSFRNTENhbnZhc1N0eWxlKEV4ZWNTdGF0ZSosIEpTVmFsdWUg
dmFsdWUpCitzdGF0aWMgQ2FudmFzU3R5bGUgdG9IVE1MQ2FudmFzU3R5bGUoRXhlY1N0YXRlKiwg
SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGUoKTsKICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXNPYmplY3QodmFsdWUpOwogICAgIGlmIChvYmplY3QtPmluaGVyaXRzKCZKU0NhbnZh
c0dyYWRpZW50OjpzX2luZm8pKQotICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGU6OmNyZWF0ZUZy
b21HcmFkaWVudChqc0Nhc3Q8SlNDYW52YXNHcmFkaWVudCo+KG9iamVjdCktPmltcGwoKSk7Cisg
ICAgICAgIHJldHVybiBDYW52YXNTdHlsZShqc0Nhc3Q8SlNDYW52YXNHcmFkaWVudCo+KG9iamVj
dCktPmltcGwoKSk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoJkpTQ2FudmFzUGF0dGVybjo6
c19pbmZvKSkKLSAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tUGF0dGVybihq
c0Nhc3Q8SlNDYW52YXNQYXR0ZXJuKj4ob2JqZWN0KS0+aW1wbCgpKTsKLSAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlKGpzQ2FzdDxKU0NhbnZhc1BhdHRlcm4qPihvYmpl
Y3QpLT5pbXBsKCkpOworICAgIHJldHVybiBDYW52YXNTdHlsZSgpOwogfQogCiBKU1ZhbHVlIEpT
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VTdHlsZShFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IGUzMTdl
MGE3YTBiYWZjNmEyNDYzMGEzNThiNzAzZTcyZjg0YzJiYjAuLmNmMzgyNzkwYTI2M2EzMDBmNGY5
YzA3ZjU0OGY5MjA4NWI0Zjk5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ2FudmFzR3JhZGllbnQuaCIK
ICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmgiCi0jaW5jbHVkZSAiQ2FudmFzU3R5bGUuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCmluZGV4IDBiMzg5YWRhYmMxNzllZjhhNjQ2NjczY2MwZDEyOTY4ZjdmNGEzMzcuLmJi
OTFmMjlkYjQxMGZiY2ZiYmE1YzFkZTNlODNhMTY5MDk3MDdlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApA
QCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2Fu
dmFzR3JhZGllbnQuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCi0jaW5jbHVkZSAiQ2Fu
dmFzU3R5bGUuaCIKICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiRE9NUGF0aC5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKQEAgLTE4MCw4ICsxNzksOCBAQCB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6cmVzZXQoKQogfQogCiBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OlN0YXRlOjpTdGF0ZSgpCi0gICAgOiBtX3N0cm9rZVN0eWxlKENhbnZhc1N0eWxlOjpjcmVh
dGVGcm9tUkdCQShDb2xvcjo6YmxhY2spKQotICAgICwgbV9maWxsU3R5bGUoQ2FudmFzU3R5bGU6
OmNyZWF0ZUZyb21SR0JBKENvbG9yOjpibGFjaykpCisgICAgOiBtX3N0cm9rZVN0eWxlKENvbG9y
OjpibGFjaykKKyAgICAsIG1fZmlsbFN0eWxlKENvbG9yOjpibGFjaykKICAgICAsIG1fbGluZVdp
ZHRoKDEpCiAgICAgLCBtX2xpbmVDYXAoQnV0dENhcCkKICAgICAsIG1fbGluZUpvaW4oTWl0ZXJK
b2luKQpAQCAtMzEyLDY4ICszMTEsNTYgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnJlc3RvcmUoKQogICAgIGMtPnJlc3RvcmUoKTsKIH0KIAotQ2FudmFzU3R5bGUqIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlU3R5bGUoKSBjb25zdAordm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnNldFN0cm9rZVN0eWxlKENhbnZhc1N0eWxlIHN0eWxlKQogewotICAgIHJl
dHVybiBzdGF0ZSgpLm1fc3Ryb2tlU3R5bGUuZ2V0KCk7Ci19Ci0KLXZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpzZXRTdHJva2VTdHlsZShQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBwcnBT
dHlsZSkKLXsKLSAgICBSZWZQdHI8Q2FudmFzU3R5bGU+IHN0eWxlID0gcHJwU3R5bGU7Ci0KLSAg
ICBpZiAoIXN0eWxlKQorICAgIGlmICghc3R5bGUuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoc3RhdGUoKS5tX3N0cm9rZVN0eWxlICYmIHN0YXRlKCkubV9zdHJva2VTdHls
ZS0+aXNFcXVpdmFsZW50Q29sb3IoKnN0eWxlKSkKKyAgICBpZiAoc3RhdGUoKS5tX3N0cm9rZVN0
eWxlLmlzVmFsaWQoKSAmJiBzdGF0ZSgpLm1fc3Ryb2tlU3R5bGUuaXNFcXVpdmFsZW50Q29sb3Io
c3R5bGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoc3R5bGUtPmlzQ3VycmVudENvbG9y
KCkpIHsKLSAgICAgICAgaWYgKHN0eWxlLT5oYXNPdmVycmlkZUFscGhhKCkpCi0gICAgICAgICAg
ICBzdHlsZSA9IENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tUkdCQShjb2xvcldpdGhPdmVycmlkZUFs
cGhhKGN1cnJlbnRDb2xvcihjYW52YXMoKSksIHN0eWxlLT5vdmVycmlkZUFscGhhKCkpKTsKKyAg
ICBpZiAoc3R5bGUuaXNDdXJyZW50Q29sb3IoKSkgeworICAgICAgICBpZiAoc3R5bGUuaGFzT3Zl
cnJpZGVBbHBoYSgpKQorICAgICAgICAgICAgc3R5bGUgPSBDYW52YXNTdHlsZShjb2xvcldpdGhP
dmVycmlkZUFscGhhKGN1cnJlbnRDb2xvcihjYW52YXMoKSksIHN0eWxlLm92ZXJyaWRlQWxwaGEo
KSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdHlsZSA9IENhbnZhc1N0eWxlOjpjcmVh
dGVGcm9tUkdCQShjdXJyZW50Q29sb3IoY2FudmFzKCkpKTsKKyAgICAgICAgICAgIHN0eWxlID0g
Q2FudmFzU3R5bGUoY3VycmVudENvbG9yKGNhbnZhcygpKSk7CiAgICAgfSBlbHNlCi0gICAgICAg
IGNoZWNrT3JpZ2luKHN0eWxlLT5jYW52YXNQYXR0ZXJuKCkpOworICAgICAgICBjaGVja09yaWdp
bihzdHlsZS5jYW52YXNQYXR0ZXJuKCkpOwogCiAgICAgcmVhbGl6ZVNhdmVzKCk7Ci0gICAgbW9k
aWZpYWJsZVN0YXRlKCkubV9zdHJva2VTdHlsZSA9IHN0eWxlLnJlbGVhc2UoKTsKKyAgICBTdGF0
ZSYgc3RhdGUgPSBtb2RpZmlhYmxlU3RhdGUoKTsKKyAgICBzdGF0ZS5tX3N0cm9rZVN0eWxlID0g
c3R5bGU7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBp
ZiAoIWMpCiAgICAgICAgIHJldHVybjsKLSAgICBzdGF0ZSgpLm1fc3Ryb2tlU3R5bGUtPmFwcGx5
U3Ryb2tlQ29sb3IoYyk7Ci0gICAgbW9kaWZpYWJsZVN0YXRlKCkubV91bnBhcnNlZFN0cm9rZUNv
bG9yID0gU3RyaW5nKCk7CisgICAgc3RhdGUubV9zdHJva2VTdHlsZS5hcHBseVN0cm9rZUNvbG9y
KGMpOworICAgIHN0YXRlLm1fdW5wYXJzZWRTdHJva2VDb2xvciA9IFN0cmluZygpOwogfQogCi1D
YW52YXNTdHlsZSogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsU3R5bGUoKSBjb25zdAor
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxTdHlsZShDYW52YXNTdHlsZSBz
dHlsZSkKIHsKLSAgICByZXR1cm4gc3RhdGUoKS5tX2ZpbGxTdHlsZS5nZXQoKTsKLX0KLQotdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxTdHlsZShQYXNzUmVmUHRyPENhbnZh
c1N0eWxlPiBwcnBTdHlsZSkKLXsKLSAgICBSZWZQdHI8Q2FudmFzU3R5bGU+IHN0eWxlID0gcHJw
U3R5bGU7Ci0KLSAgICBpZiAoIXN0eWxlKQorICAgIGlmICghc3R5bGUuaXNWYWxpZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoc3RhdGUoKS5tX2ZpbGxTdHlsZSAmJiBzdGF0ZSgpLm1f
ZmlsbFN0eWxlLT5pc0VxdWl2YWxlbnRDb2xvcigqc3R5bGUpKQorICAgIGlmIChzdGF0ZSgpLm1f
ZmlsbFN0eWxlLmlzVmFsaWQoKSAmJiBzdGF0ZSgpLm1fZmlsbFN0eWxlLmlzRXF1aXZhbGVudENv
bG9yKHN0eWxlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHN0eWxlLT5pc0N1cnJlbnRD
b2xvcigpKSB7Ci0gICAgICAgIGlmIChzdHlsZS0+aGFzT3ZlcnJpZGVBbHBoYSgpKQotICAgICAg
ICAgICAgc3R5bGUgPSBDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbVJHQkEoY29sb3JXaXRoT3ZlcnJp
ZGVBbHBoYShjdXJyZW50Q29sb3IoY2FudmFzKCkpLCBzdHlsZS0+b3ZlcnJpZGVBbHBoYSgpKSk7
CisgICAgaWYgKHN0eWxlLmlzQ3VycmVudENvbG9yKCkpIHsKKyAgICAgICAgaWYgKHN0eWxlLmhh
c092ZXJyaWRlQWxwaGEoKSkKKyAgICAgICAgICAgIHN0eWxlID0gQ2FudmFzU3R5bGUoY29sb3JX
aXRoT3ZlcnJpZGVBbHBoYShjdXJyZW50Q29sb3IoY2FudmFzKCkpLCBzdHlsZS5vdmVycmlkZUFs
cGhhKCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3R5bGUgPSBDYW52YXNTdHlsZTo6
Y3JlYXRlRnJvbVJHQkEoY3VycmVudENvbG9yKGNhbnZhcygpKSk7CisgICAgICAgICAgICBzdHls
ZSA9IENhbnZhc1N0eWxlKGN1cnJlbnRDb2xvcihjYW52YXMoKSkpOwogICAgIH0gZWxzZQotICAg
ICAgICBjaGVja09yaWdpbihzdHlsZS0+Y2FudmFzUGF0dGVybigpKTsKKyAgICAgICAgY2hlY2tP
cmlnaW4oc3R5bGUuY2FudmFzUGF0dGVybigpKTsKIAogICAgIHJlYWxpemVTYXZlcygpOwotICAg
IG1vZGlmaWFibGVTdGF0ZSgpLm1fZmlsbFN0eWxlID0gc3R5bGUucmVsZWFzZSgpOworICAgIFN0
YXRlJiBzdGF0ZSA9IG1vZGlmaWFibGVTdGF0ZSgpOworICAgIHN0YXRlLm1fZmlsbFN0eWxlID0g
c3R5bGU7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBp
ZiAoIWMpCiAgICAgICAgIHJldHVybjsKLSAgICBzdGF0ZSgpLm1fZmlsbFN0eWxlLT5hcHBseUZp
bGxDb2xvcihjKTsKLSAgICBtb2RpZmlhYmxlU3RhdGUoKS5tX3VucGFyc2VkRmlsbENvbG9yID0g
U3RyaW5nKCk7CisgICAgc3RhdGUubV9maWxsU3R5bGUuYXBwbHlGaWxsQ29sb3IoYyk7CisgICAg
c3RhdGUubV91bnBhcnNlZEZpbGxDb2xvciA9IFN0cmluZygpOwogfQogCiBmbG9hdCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmxpbmVXaWR0aCgpIGNvbnN0CkBAIC03ODIsOSArNzY5LDkgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmlu
ZyYgY29sb3IpCiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VDb2xv
cihmbG9hdCBncmF5TGV2ZWwpCiB7Ci0gICAgaWYgKHN0YXRlKCkubV9zdHJva2VTdHlsZSAmJiBz
dGF0ZSgpLm1fc3Ryb2tlU3R5bGUtPmlzRXF1aXZhbGVudFJHQkEoZ3JheUxldmVsLCBncmF5TGV2
ZWwsIGdyYXlMZXZlbCwgMS4wZikpCisgICAgaWYgKHN0YXRlKCkubV9zdHJva2VTdHlsZS5pc1Zh
bGlkKCkgJiYgc3RhdGUoKS5tX3N0cm9rZVN0eWxlLmlzRXF1aXZhbGVudFJHQkEoZ3JheUxldmVs
LCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgMS4wZikpCiAgICAgICAgIHJldHVybjsKLSAgICBzZXRT
dHJva2VTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbUdyYXlMZXZlbFdpdGhBbHBoYShncmF5
TGV2ZWwsIDEuMGYpKTsKKyAgICBzZXRTdHJva2VTdHlsZShDYW52YXNTdHlsZShncmF5TGV2ZWws
IDEuMGYpKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNv
bG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKQpAQCAtNzk0LDIzICs3ODEsMjMg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKGNvbnN0IFN0
cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6c2V0U3Ryb2tlQ29sb3IoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSkKIHsKLSAgICBp
ZiAoc3RhdGUoKS5tX3N0cm9rZVN0eWxlICYmIHN0YXRlKCkubV9zdHJva2VTdHlsZS0+aXNFcXVp
dmFsZW50UkdCQShncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkpCisgICAg
aWYgKHN0YXRlKCkubV9zdHJva2VTdHlsZS5pc1ZhbGlkKCkgJiYgc3RhdGUoKS5tX3N0cm9rZVN0
eWxlLmlzRXF1aXZhbGVudFJHQkEoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgYWxw
aGEpKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0U3Ryb2tlU3R5bGUoQ2FudmFzU3R5bGU6OmNy
ZWF0ZUZyb21HcmF5TGV2ZWxXaXRoQWxwaGEoZ3JheUxldmVsLCBhbHBoYSkpOworICAgIHNldFN0
cm9rZVN0eWxlKENhbnZhc1N0eWxlKGdyYXlMZXZlbCwgYWxwaGEpKTsKIH0KIAogdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNvbG9yKGZsb2F0IHIsIGZsb2F0IGcsIGZs
b2F0IGIsIGZsb2F0IGEpCiB7Ci0gICAgaWYgKHN0YXRlKCkubV9zdHJva2VTdHlsZSAmJiBzdGF0
ZSgpLm1fc3Ryb2tlU3R5bGUtPmlzRXF1aXZhbGVudFJHQkEociwgZywgYiwgYSkpCisgICAgaWYg
KHN0YXRlKCkubV9zdHJva2VTdHlsZS5pc1ZhbGlkKCkgJiYgc3RhdGUoKS5tX3N0cm9rZVN0eWxl
LmlzRXF1aXZhbGVudFJHQkEociwgZywgYiwgYSkpCiAgICAgICAgIHJldHVybjsKLSAgICBzZXRT
dHJva2VTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbVJHQkFDaGFubmVscyhyLCBnLCBiLCBh
KSk7CisgICAgc2V0U3Ryb2tlU3R5bGUoQ2FudmFzU3R5bGUociwgZywgYiwgYSkpOwogfQogCiB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3IoZmxvYXQgYywgZmxv
YXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkKIHsKLSAgICBpZiAoc3RhdGUoKS5tX3N0
cm9rZVN0eWxlICYmIHN0YXRlKCkubV9zdHJva2VTdHlsZS0+aXNFcXVpdmFsZW50Q01ZS0EoYywg
bSwgeSwgaywgYSkpCisgICAgaWYgKHN0YXRlKCkubV9zdHJva2VTdHlsZS5pc1ZhbGlkKCkgJiYg
c3RhdGUoKS5tX3N0cm9rZVN0eWxlLmlzRXF1aXZhbGVudENNWUtBKGMsIG0sIHksIGssIGEpKQog
ICAgICAgICByZXR1cm47Ci0gICAgc2V0U3Ryb2tlU3R5bGUoQ2FudmFzU3R5bGU6OmNyZWF0ZUZy
b21DTVlLQUNoYW5uZWxzKGMsIG0sIHksIGssIGEpKTsKKyAgICBzZXRTdHJva2VTdHlsZShDYW52
YXNTdHlsZShjLCBtLCB5LCBrLCBhKSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRGaWxsQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvcikKQEAgLTgyNCw5ICs4MTEsOSBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbENvbG9yKGNvbnN0IFN0cmlu
ZyYgY29sb3IpCiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3Io
ZmxvYXQgZ3JheUxldmVsKQogewotICAgIGlmIChzdGF0ZSgpLm1fZmlsbFN0eWxlICYmIHN0YXRl
KCkubV9maWxsU3R5bGUtPmlzRXF1aXZhbGVudFJHQkEoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdy
YXlMZXZlbCwgMS4wZikpCisgICAgaWYgKHN0YXRlKCkubV9maWxsU3R5bGUuaXNWYWxpZCgpICYm
IHN0YXRlKCkubV9maWxsU3R5bGUuaXNFcXVpdmFsZW50UkdCQShncmF5TGV2ZWwsIGdyYXlMZXZl
bCwgZ3JheUxldmVsLCAxLjBmKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNldEZpbGxTdHlsZShD
YW52YXNTdHlsZTo6Y3JlYXRlRnJvbUdyYXlMZXZlbFdpdGhBbHBoYShncmF5TGV2ZWwsIDEuMGYp
KTsKKyAgICBzZXRGaWxsU3R5bGUoQ2FudmFzU3R5bGUoZ3JheUxldmVsLCAxLjBmKSk7CiB9CiAK
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IoY29uc3QgU3RyaW5n
JiBjb2xvciwgZmxvYXQgYWxwaGEpCkBAIC04MzYsMjMgKzgyMywyMyBAQCB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbENvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0
IGFscGhhKQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbENvbG9yKGZs
b2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpCiB7Ci0gICAgaWYgKHN0YXRlKCkubV9maWxsU3R5
bGUgJiYgc3RhdGUoKS5tX2ZpbGxTdHlsZS0+aXNFcXVpdmFsZW50UkdCQShncmF5TGV2ZWwsIGdy
YXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkpCisgICAgaWYgKHN0YXRlKCkubV9maWxsU3R5bGUu
aXNWYWxpZCgpICYmIHN0YXRlKCkubV9maWxsU3R5bGUuaXNFcXVpdmFsZW50UkdCQShncmF5TGV2
ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkpCiAgICAgICAgIHJldHVybjsKLSAgICBz
ZXRGaWxsU3R5bGUoQ2FudmFzU3R5bGU6OmNyZWF0ZUZyb21HcmF5TGV2ZWxXaXRoQWxwaGEoZ3Jh
eUxldmVsLCBhbHBoYSkpOworICAgIHNldEZpbGxTdHlsZShDYW52YXNTdHlsZShncmF5TGV2ZWws
IGFscGhhKSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29s
b3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKIHsKLSAgICBpZiAoc3RhdGUo
KS5tX2ZpbGxTdHlsZSAmJiBzdGF0ZSgpLm1fZmlsbFN0eWxlLT5pc0VxdWl2YWxlbnRSR0JBKHIs
IGcsIGIsIGEpKQorICAgIGlmIChzdGF0ZSgpLm1fZmlsbFN0eWxlLmlzVmFsaWQoKSAmJiBzdGF0
ZSgpLm1fZmlsbFN0eWxlLmlzRXF1aXZhbGVudFJHQkEociwgZywgYiwgYSkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBzZXRGaWxsU3R5bGUoQ2FudmFzU3R5bGU6OmNyZWF0ZUZyb21SR0JBQ2hhbm5l
bHMociwgZywgYiwgYSkpOworICAgIHNldEZpbGxTdHlsZShDYW52YXNTdHlsZShyLCBnLCBiLCBh
KSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IoZmxv
YXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkKIHsKLSAgICBpZiAoc3Rh
dGUoKS5tX2ZpbGxTdHlsZSAmJiBzdGF0ZSgpLm1fZmlsbFN0eWxlLT5pc0VxdWl2YWxlbnRDTVlL
QShjLCBtLCB5LCBrLCBhKSkKKyAgICBpZiAoc3RhdGUoKS5tX2ZpbGxTdHlsZS5pc1ZhbGlkKCkg
JiYgc3RhdGUoKS5tX2ZpbGxTdHlsZS5pc0VxdWl2YWxlbnRDTVlLQShjLCBtLCB5LCBrLCBhKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIHNldEZpbGxTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlRnJv
bUNNWUtBQ2hhbm5lbHMoYywgbSwgeSwgaywgYSkpOworICAgIHNldEZpbGxTdHlsZShDYW52YXNT
dHlsZShjLCBtLCB5LCBrLCBhKSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpiZWdpblBhdGgoKQpAQCAtMTY2Miw3ICsxNjQ5LDcgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRmlsbChjb25z
dAogICAgIHBhdGgudHJhbnNsYXRlKEZsb2F0U2l6ZSgtYnVmZmVyUmVjdC54KCksIC1idWZmZXJS
ZWN0LnkoKSkpOwogCiAgICAgYnVmZmVyLT5jb250ZXh0KCktPnNldENvbXBvc2l0ZU9wZXJhdGlv
bihDb21wb3NpdGVTb3VyY2VPdmVyKTsKLSAgICBzdGF0ZSgpLm1fZmlsbFN0eWxlLT5hcHBseUZp
bGxDb2xvcihidWZmZXItPmNvbnRleHQoKSk7CisgICAgbW9kaWZpYWJsZVN0YXRlKCkubV9maWxs
U3R5bGUuYXBwbHlGaWxsQ29sb3IoYnVmZmVyLT5jb250ZXh0KCkpOwogICAgIGJ1ZmZlci0+Y29u
dGV4dCgpLT5maWxsUGF0aChwYXRoKTsKIAogICAgIGNvbXBvc2l0ZUJ1ZmZlcihidWZmZXIuZ2V0
KCksIGJ1ZmZlclJlY3QsIHN0YXRlKCkubV9nbG9iYWxDb21wb3NpdGUpOwpAQCAtMjI1Miw4ICsy
MjM5LDggQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KICAgICAgICAgaW5mbGF0ZVN0cm9rZVJl
Y3QodGV4dFJlY3QpOwogCiAjaWYgVVNFKENHKQotICAgIENhbnZhc1N0eWxlKiBkcmF3U3R5bGUg
PSBmaWxsID8gc3RhdGUoKS5tX2ZpbGxTdHlsZS5nZXQoKSA6IHN0YXRlKCkubV9zdHJva2VTdHls
ZS5nZXQoKTsKLSAgICBpZiAoZHJhd1N0eWxlLT5jYW52YXNHcmFkaWVudCgpIHx8IGRyYXdTdHls
ZS0+Y2FudmFzUGF0dGVybigpKSB7CisgICAgY29uc3QgQ2FudmFzU3R5bGUmIGRyYXdTdHlsZSA9
IGZpbGwgPyBzdGF0ZSgpLm1fZmlsbFN0eWxlIDogc3RhdGUoKS5tX3N0cm9rZVN0eWxlOworICAg
IGlmIChkcmF3U3R5bGUuY2FudmFzR3JhZGllbnQoKSB8fCBkcmF3U3R5bGUuY2FudmFzUGF0dGVy
bigpKSB7CiAgICAgICAgIEludFJlY3QgbWFza1JlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHRleHRS
ZWN0KTsKIAogICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZSA9IGMtPmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpKTsKQEAgLTIyODEsNyArMjI2OCw3IEBA
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0
cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpjKTsKICAgICAgICAgYy0+Y2xpcFRvSW1hZ2VCdWZmZXIobWFza0lt
YWdlLmdldCgpLCBtYXNrUmVjdCk7Ci0gICAgICAgIGRyYXdTdHlsZS0+YXBwbHlGaWxsQ29sb3Io
Yyk7CisgICAgICAgIGRyYXdTdHlsZS5hcHBseUZpbGxDb2xvcihjKTsKICAgICAgICAgYy0+Zmls
bFJlY3QobWFza1JlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCBk
NGQyMWFmYTVmZGI0YTNjMWQ4ODE3MzY4NTU3MmFjM2Y5NGJhMDk2Li4yOGJhZmJkOGQ1NmRiMzRm
ZWFlZmNiZjQ0ODAwNzQ2YzQ5OWM3YmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdGhNZXRob2Rz
LmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkNhbnZh
c1N0eWxlLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAj
aW5jbHVkZSAiRGFzaEFycmF5LmgiCkBAIC00OCw3ICs0OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ2FudmFzR3JhZGllbnQ7CiBjbGFzcyBDYW52YXNQYXR0ZXJuOwotY2xhc3Mg
Q2FudmFzU3R5bGU7CiAjaWYgRU5BQkxFKENBTlZBU19QQVRIKQogY2xhc3MgRE9NUGF0aDsKICNl
bmRpZgpAQCAtNzAsMTEgKzcwLDExIEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEKCk7CiAKLSAgICBDYW52YXNTdHlsZSogc3Ryb2tlU3R5bGUo
KSBjb25zdDsKLSAgICB2b2lkIHNldFN0cm9rZVN0eWxlKFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+
KTsKKyAgICBjb25zdCBDYW52YXNTdHlsZSYgc3Ryb2tlU3R5bGUoKSBjb25zdCB7IHJldHVybiBz
dGF0ZSgpLm1fc3Ryb2tlU3R5bGU7IH0KKyAgICB2b2lkIHNldFN0cm9rZVN0eWxlKENhbnZhc1N0
eWxlKTsKIAotICAgIENhbnZhc1N0eWxlKiBmaWxsU3R5bGUoKSBjb25zdDsKLSAgICB2b2lkIHNl
dEZpbGxTdHlsZShQYXNzUmVmUHRyPENhbnZhc1N0eWxlPik7CisgICAgY29uc3QgQ2FudmFzU3R5
bGUmIGZpbGxTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRlKCkubV9maWxsU3R5bGU7IH0KKyAg
ICB2b2lkIHNldEZpbGxTdHlsZShDYW52YXNTdHlsZSk7CiAKICAgICBmbG9hdCBsaW5lV2lkdGgo
KSBjb25zdDsKICAgICB2b2lkIHNldExpbmVXaWR0aChmbG9hdCk7CkBAIC0yNDAsOCArMjQwLDgg
QEAgcHJpdmF0ZToKIAogICAgICAgICBTdHJpbmcgbV91bnBhcnNlZFN0cm9rZUNvbG9yOwogICAg
ICAgICBTdHJpbmcgbV91bnBhcnNlZEZpbGxDb2xvcjsKLSAgICAgICAgUmVmUHRyPENhbnZhc1N0
eWxlPiBtX3N0cm9rZVN0eWxlOwotICAgICAgICBSZWZQdHI8Q2FudmFzU3R5bGU+IG1fZmlsbFN0
eWxlOworICAgICAgICBDYW52YXNTdHlsZSBtX3N0cm9rZVN0eWxlOworICAgICAgICBDYW52YXNT
dHlsZSBtX2ZpbGxTdHlsZTsKICAgICAgICAgZmxvYXQgbV9saW5lV2lkdGg7CiAgICAgICAgIExp
bmVDYXAgbV9saW5lQ2FwOwogICAgICAgICBMaW5lSm9pbiBtX2xpbmVKb2luOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCmluZGV4IGNkMmVlZDlkMDNiMWM4OTk2
ZDQ1MDMzM2YyMmQ0NmNhMDA5ZWNlYTYuLjVmYTExOTg3YmIzNDI2MGM0ZjhkMTQ2NmEyMDQxNzZm
MWQxMzkzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0
eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAK
QEAgLTkyLDQ2ICs5Miw0NCBAQCBib29sIHBhcnNlQ29sb3JPckN1cnJlbnRDb2xvcihSR0JBMzIm
IHBhcnNlZENvbG9yLCBjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nLCBIVAogICAgIH0KIH0KIAot
Q2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKFR5cGUgdHlwZSwgZmxvYXQgb3ZlcnJpZGVBbHBoYSkK
LSAgICA6IG1fdHlwZSh0eXBlKQotICAgICwgbV9vdmVycmlkZUFscGhhKG92ZXJyaWRlQWxwaGEp
Ci17Ci19Ci0KIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShSR0JBMzIgcmdiYSkKLSAgICA6IG1f
dHlwZShSR0JBKQotICAgICwgbV9yZ2JhKHJnYmEpCisgICAgOiBtX3JnYmEocmdiYSkKKyAgICAs
IG1fdHlwZShSR0JBKQogewogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoZmxvYXQgZ3Jh
eUxldmVsLCBmbG9hdCBhbHBoYSkKLSAgICA6IG1fdHlwZShSR0JBKQotICAgICwgbV9yZ2JhKG1h
a2VSR0JBMzJGcm9tRmxvYXRzKGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWwsIGFscGhh
KSkKKyAgICA6IG1fcmdiYShtYWtlUkdCQTMyRnJvbUZsb2F0cyhncmF5TGV2ZWwsIGdyYXlMZXZl
bCwgZ3JheUxldmVsLCBhbHBoYSkpCisgICAgLCBtX3R5cGUoUkdCQSkKIHsKIH0KIAogQ2FudmFz
U3R5bGU6OkNhbnZhc1N0eWxlKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCi0g
ICAgOiBtX3R5cGUoUkdCQSkKLSAgICAsIG1fcmdiYShtYWtlUkdCQTMyRnJvbUZsb2F0cyhyLCBn
LCBiLCBhKSkKKyAgICA6IG1fcmdiYShtYWtlUkdCQTMyRnJvbUZsb2F0cyhyLCBnLCBiLCBhKSkK
KyAgICAsIG1fdHlwZShSR0JBKQogewogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoZmxv
YXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkKLSAgICA6IG1fdHlwZShD
TVlLQSkKLSAgICAsIG1fY215a2EobmV3IENNWUtBVmFsdWVzKG1ha2VSR0JBRnJvbUNNWUtBKGMs
IG0sIHksIGssIGEpLCBjLCBtLCB5LCBrLCBhKSkKKyAgICA6IG1fY215a2EobmV3IENNWUtBVmFs
dWVzKG1ha2VSR0JBRnJvbUNNWUtBKGMsIG0sIHksIGssIGEpLCBjLCBtLCB5LCBrLCBhKSkKKyAg
ICAsIG1fdHlwZShDTVlLQSkKIHsKIH0KIAogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKFBhc3NS
ZWZQdHI8Q2FudmFzR3JhZGllbnQ+IGdyYWRpZW50KQotICAgIDogbV90eXBlKEdyYWRpZW50KQot
ICAgICwgbV9ncmFkaWVudChncmFkaWVudC5sZWFrUmVmKCkpCisgICAgOiBtX2dyYWRpZW50KGdy
YWRpZW50LmxlYWtSZWYoKSkKKyAgICAsIG1fdHlwZShHcmFkaWVudCkKIHsKKyAgICBpZiAoIW1f
Z3JhZGllbnQpCisgICAgICAgIG1fdHlwZSA9IEludmFsaWQ7CiB9CiAKIENhbnZhc1N0eWxlOjpD
YW52YXNTdHlsZShQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+IHBhdHRlcm4pCi0gICAgOiBtX3R5
cGUoSW1hZ2VQYXR0ZXJuKQotICAgICwgbV9wYXR0ZXJuKHBhdHRlcm4ubGVha1JlZigpKQorICAg
IDogbV9wYXR0ZXJuKHBhdHRlcm4ubGVha1JlZigpKQorICAgICwgbV90eXBlKEltYWdlUGF0dGVy
bikKIHsKKyAgICBpZiAoIW1fcGF0dGVybikKKyAgICAgICAgbV90eXBlID0gSW52YWxpZDsKIH0K
IAogQ2FudmFzU3R5bGU6On5DYW52YXNTdHlsZSgpCkBAIC0xNDQsNTQgKzE0Miw0MSBAQCBDYW52
YXNTdHlsZTo6fkNhbnZhc1N0eWxlKCkKICAgICAgICAgZGVsZXRlIG1fY215a2E7CiB9CiAKLVBh
c3NSZWZQdHI8Q2FudmFzU3R5bGU+IENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYgY29sb3IsIERvY3VtZW50KiBkb2N1bWVudCkKK0NhbnZhc1N0eWxlIENhbnZhc1N0
eWxlOjpjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgY29sb3IsIERvY3VtZW50KiBkb2N1
bWVudCkKIHsKICAgICBSR0JBMzIgcmdiYTsKICAgICBDb2xvclBhcnNlUmVzdWx0IHBhcnNlUmVz
dWx0ID0gcGFyc2VDb2xvcihyZ2JhLCBjb2xvciwgZG9jdW1lbnQpOwogICAgIHN3aXRjaCAocGFy
c2VSZXN1bHQpIHsKICAgICBjYXNlIFBhcnNlZFJHQkE6CiAgICAgY2FzZSBQYXJzZWRTeXN0ZW1D
b2xvcjoKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShyZ2JhKSk7Cisg
ICAgICAgIHJldHVybiBDYW52YXNTdHlsZShyZ2JhKTsKICAgICBjYXNlIFBhcnNlZEN1cnJlbnRD
b2xvcjoKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShDdXJyZW50Q29s
b3IpKTsKKyAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlKENvbnN0cnVjdEN1cnJlbnRDb2xvcik7
CiAgICAgY2FzZSBQYXJzZUZhaWxlZDoKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBDYW52YXNTdHlsZSgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlKCk7CiAg
ICAgfQogfQogCi1QYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBDYW52YXNTdHlsZTo6Y3JlYXRlRnJv
bVN0cmluZ1dpdGhPdmVycmlkZUFscGhhKGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhh
KQorQ2FudmFzU3R5bGUgQ2FudmFzU3R5bGU6OmNyZWF0ZUZyb21TdHJpbmdXaXRoT3ZlcnJpZGVB
bHBoYShjb25zdCBTdHJpbmcmIGNvbG9yLCBmbG9hdCBhbHBoYSkKIHsKICAgICBSR0JBMzIgcmdi
YTsKICAgICBDb2xvclBhcnNlUmVzdWx0IHBhcnNlUmVzdWx0ID0gcGFyc2VDb2xvcihyZ2JhLCBj
b2xvcik7CiAgICAgc3dpdGNoIChwYXJzZVJlc3VsdCkgewogICAgIGNhc2UgUGFyc2VkUkdCQToK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShjb2xvcldpdGhPdmVycmlk
ZUFscGhhKHJnYmEsIGFscGhhKSkpOworICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGUoY29sb3JX
aXRoT3ZlcnJpZGVBbHBoYShyZ2JhLCBhbHBoYSkpOwogICAgIGNhc2UgUGFyc2VkQ3VycmVudENv
bG9yOgotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKEN1cnJlbnRDb2xv
cldpdGhPdmVycmlkZUFscGhhLCBhbHBoYSkpOworICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGUo
Q3VycmVudENvbG9yV2l0aE92ZXJyaWRlQWxwaGEsIGFscGhhKTsKICAgICBjYXNlIFBhcnNlRmFp
bGVkOgotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlKCk7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGUoKTsKICAgICB9CiB9CiAKLVBhc3NSZWZQ
dHI8Q2FudmFzU3R5bGU+IENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tR3JhZGllbnQoUGFzc1JlZlB0
cjxDYW52YXNHcmFkaWVudD4gZ3JhZGllbnQpCi17Ci0gICAgaWYgKCFncmFkaWVudCkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShncmFkaWVu
dCkpOwotfQotUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gQ2FudmFzU3R5bGU6OmNyZWF0ZUZyb21Q
YXR0ZXJuKFBhc3NSZWZQdHI8Q2FudmFzUGF0dGVybj4gcGF0dGVybikKLXsKLSAgICBpZiAoIXBh
dHRlcm4pCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFz
U3R5bGUocGF0dGVybikpOwotfQotCiBib29sIENhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnRDb2xv
cihjb25zdCBDYW52YXNTdHlsZSYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKG1fdHlwZSAhPSBv
dGhlci5tX3R5cGUpCkBAIC0yMTEsNiArMTk2LDggQEAgYm9vbCBDYW52YXNTdHlsZTo6aXNFcXVp
dmFsZW50Q29sb3IoY29uc3QgQ2FudmFzU3R5bGUmIG90aGVyKSBjb25zdAogICAgIGNhc2UgQ3Vy
cmVudENvbG9yOgogICAgIGNhc2UgQ3VycmVudENvbG9yV2l0aE92ZXJyaWRlQWxwaGE6CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIEludmFsaWQ6CisgICAgICAgIGJyZWFrOwogICAg
IH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjM3LDcgKzIyNCwzMiBAQCBib29s
IENhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnRDTVlLQShmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5
LCBmbG9hdCBrLCBmbG9hdCBhKQogICAgICAgICAmJiBhID09IG1fY215a2EtPmE7CiB9CiAKLXZv
aWQgQ2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
KQorQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKGNvbnN0IENhbnZhc1N0eWxlJiBvdGhlcikKK3sK
KyAgICBtZW1jcHkodGhpcywgJm90aGVyLCBzaXplb2YoQ2FudmFzU3R5bGUpKTsKKyAgICBpZiAo
bV90eXBlID09IEdyYWRpZW50KQorICAgICAgICBtX2dyYWRpZW50LT5yZWYoKTsKKyAgICBlbHNl
IGlmIChtX3R5cGUgPT0gSW1hZ2VQYXR0ZXJuKQorICAgICAgICBtX3BhdHRlcm4tPnJlZigpOwor
ICAgIGVsc2UgaWYgKG1fdHlwZSA9PSBDTVlLQSkKKyAgICAgICAgbV9jbXlrYSA9IG5ldyBDTVlL
QVZhbHVlcyhvdGhlci5tX2NteWthLT5yZ2JhLCBvdGhlci5tX2NteWthLT5jLCBvdGhlci5tX2Nt
eWthLT5tLCBvdGhlci5tX2NteWthLT55LCBvdGhlci5tX2NteWthLT5rLCBvdGhlci5tX2NteWth
LT5hKTsKK30KKworQ2FudmFzU3R5bGUmIENhbnZhc1N0eWxlOjpvcGVyYXRvcj0oY29uc3QgQ2Fu
dmFzU3R5bGUmIG90aGVyKQoreworICAgIGlmICh0aGlzICE9ICZvdGhlcikgeworICAgICAgICBt
ZW1jcHkodGhpcywgJm90aGVyLCBzaXplb2YoQ2FudmFzU3R5bGUpKTsKKyAgICAgICAgaWYgKG1f
dHlwZSA9PSBHcmFkaWVudCkKKyAgICAgICAgICAgIG1fZ3JhZGllbnQtPnJlZigpOworICAgICAg
ICBlbHNlIGlmIChtX3R5cGUgPT0gSW1hZ2VQYXR0ZXJuKQorICAgICAgICAgICAgbV9wYXR0ZXJu
LT5yZWYoKTsKKyAgICAgICAgZWxzZSBpZiAobV90eXBlID09IENNWUtBKQorICAgICAgICAgICAg
bV9jbXlrYSA9IG5ldyBDTVlLQVZhbHVlcyhvdGhlci5tX2NteWthLT5yZ2JhLCBvdGhlci5tX2Nt
eWthLT5jLCBvdGhlci5tX2NteWthLT5tLCBvdGhlci5tX2NteWthLT55LCBvdGhlci5tX2NteWth
LT5rLCBvdGhlci5tX2NteWthLT5hKTsKKyAgICB9CisgICAgcmV0dXJuICp0aGlzOworfQorCit2
b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNvbG9yKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCkgY29uc3QKIHsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybjsKQEAgLTI2OSwx
MiArMjgxLDEzIEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29sb3IoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0KQogICAgICAgICBicmVhazsKICAgICBjYXNlIEN1cnJlbnRDb2xvcjoK
ICAgICBjYXNlIEN1cnJlbnRDb2xvcldpdGhPdmVycmlkZUFscGhhOgorICAgIGNhc2UgSW52YWxp
ZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IH0KIAotdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlGaWxsQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KQordm9pZCBDYW52YXNTdHlsZTo6YXBwbHlGaWxsQ29sb3IoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KSBjb25zdAogewogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwpA
QCAtMzA2LDYgKzMxOSw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCkKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDdXJyZW50Q29s
b3I6CiAgICAgY2FzZSBDdXJyZW50Q29sb3JXaXRoT3ZlcnJpZGVBbHBoYToKKyAgICBjYXNlIElu
dmFsaWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaAppbmRleCBmNzk0MGEw
ZWE4YjkzMGJmMDAwZDM1ZjJmMmYyYWU4ZjZmZTUzZjNiLi4wZjNkMTRhZTQ4NjI3MGI3MGFjZTQ3
MmY2ZDk1OWYyNmM4MGE5ZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0
eWxlLmgKQEAgLTQwLDIxICs0MCwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
R3JhcGhpY3NDb250ZXh0OwogICAgIGNsYXNzIEhUTUxDYW52YXNFbGVtZW50OwogCi0gICAgY2xh
c3MgQ2FudmFzU3R5bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxDYW52YXNTdHlsZT4gewotICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q2FudmFzU3R5bGUpOworICAgIGNsYXNzIENhbnZhc1N0eWxlIHsKICAgICBwdWJsaWM6CisgICAg
ICAgIENhbnZhc1N0eWxlKCk7CisgICAgICAgIENhbnZhc1N0eWxlKFJHQkEzMik7CisgICAgICAg
IENhbnZhc1N0eWxlKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpOworICAgICAgICBDYW52
YXNTdHlsZShmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhbHBoYSk7CisgICAgICAg
IENhbnZhc1N0eWxlKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGFs
cGhhKTsKKyAgICAgICAgQ2FudmFzU3R5bGUoUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4pOwor
ICAgICAgICBDYW52YXNTdHlsZShQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+KTsKICAgICAgICAg
fkNhbnZhc1N0eWxlKCk7CiAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+
IGNyZWF0ZUZyb21SR0JBKFJHQkEzMiByZ2JhKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFz
U3R5bGUocmdiYSkpOyB9Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBj
cmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgY29sb3IsIERvY3VtZW50KiA9IDApOwotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gY3JlYXRlRnJvbVN0cmluZ1dpdGhP
dmVycmlkZUFscGhhKGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKTsKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZUZyb21HcmF5TGV2ZWxXaXRoQWxw
aGEoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENh
bnZhc1N0eWxlKGdyYXlMZXZlbCwgYWxwaGEpKTsgfQotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDYW52YXNTdHlsZT4gY3JlYXRlRnJvbVJHQkFDaGFubmVscyhmbG9hdCByLCBmbG9hdCBnLCBm
bG9hdCBiLCBmbG9hdCBhKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUociwgZywg
YiwgYSkpOyB9Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBjcmVhdGVG
cm9tQ01ZS0FDaGFubmVscyhmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9h
dCBhKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUoYywgbSwgeSwgaywgYSkpOyB9
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBjcmVhdGVGcm9tR3JhZGll
bnQoUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4pOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDYW52YXNTdHlsZT4gY3JlYXRlRnJvbVBhdHRlcm4oUGFzc1JlZlB0cjxDYW52YXNQYXR0ZXJu
Pik7CisgICAgICAgIHN0YXRpYyBDYW52YXNTdHlsZSBjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0
cmluZyYgY29sb3IsIERvY3VtZW50KiA9IDApOworICAgICAgICBzdGF0aWMgQ2FudmFzU3R5bGUg
Y3JlYXRlRnJvbVN0cmluZ1dpdGhPdmVycmlkZUFscGhhKGNvbnN0IFN0cmluZyYgY29sb3IsIGZs
b2F0IGFscGhhKTsKIAorICAgICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgIT0gSW52YWxpZDsgfQogICAgICAgICBib29sIGlzQ3VycmVudENvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID09IEN1cnJlbnRDb2xvciB8fCBtX3R5cGUgPT0gQ3VycmVudENvbG9yV2l0
aE92ZXJyaWRlQWxwaGE7IH0KICAgICAgICAgYm9vbCBoYXNPdmVycmlkZUFscGhhKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlID09IEN1cnJlbnRDb2xvcldpdGhPdmVycmlkZUFscGhhOyB9CiAgICAg
ICAgIGZsb2F0IG92ZXJyaWRlQWxwaGEoKSBjb25zdCB7IEFTU0VSVChtX3R5cGUgPT0gQ3VycmVu
dENvbG9yV2l0aE92ZXJyaWRlQWxwaGEpOyByZXR1cm4gbV9vdmVycmlkZUFscGhhOyB9CkBAIC02
MywxNSArNjMsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDYW52YXNHcmFkaWVu
dCogY2FudmFzR3JhZGllbnQoKSBjb25zdDsKICAgICAgICAgQ2FudmFzUGF0dGVybiogY2FudmFz
UGF0dGVybigpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgYXBwbHlGaWxsQ29sb3IoR3JhcGhpY3ND
b250ZXh0Kik7Ci0gICAgICAgIHZvaWQgYXBwbHlTdHJva2VDb2xvcihHcmFwaGljc0NvbnRleHQq
KTsKKyAgICAgICAgdm9pZCBhcHBseUZpbGxDb2xvcihHcmFwaGljc0NvbnRleHQqKSBjb25zdDsK
KyAgICAgICAgdm9pZCBhcHBseVN0cm9rZUNvbG9yKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0Owog
CiAgICAgICAgIGJvb2wgaXNFcXVpdmFsZW50Q29sb3IoY29uc3QgQ2FudmFzU3R5bGUmKSBjb25z
dDsKICAgICAgICAgYm9vbCBpc0VxdWl2YWxlbnRSR0JBKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0
IGIsIGZsb2F0IGEpIGNvbnN0OwogICAgICAgICBib29sIGlzRXF1aXZhbGVudENNWUtBKGZsb2F0
IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpIGNvbnN0OwogCisgICAgICAg
IENhbnZhc1N0eWxlKGNvbnN0IENhbnZhc1N0eWxlJik7CisgICAgICAgIENhbnZhc1N0eWxlJiBv
cGVyYXRvcj0oY29uc3QgQ2FudmFzU3R5bGUmKTsKKyNpZiBDT01QSUxFUl9TVVBQT1JUUyhDWFhf
UlZBTFVFX1JFRkVSRU5DRVMpCisgICAgICAgIENhbnZhc1N0eWxlKENhbnZhc1N0eWxlJiYpOwor
ICAgICAgICBDYW52YXNTdHlsZSYgb3BlcmF0b3I9KENhbnZhc1N0eWxlJiYpOworI2VuZGlmCisK
ICAgICBwcml2YXRlOgotICAgICAgICBlbnVtIFR5cGUgeyBSR0JBLCBDTVlLQSwgR3JhZGllbnQs
IEltYWdlUGF0dGVybiwgQ3VycmVudENvbG9yLCBDdXJyZW50Q29sb3JXaXRoT3ZlcnJpZGVBbHBo
YSB9OworICAgICAgICBlbnVtIFR5cGUgeyBSR0JBLCBDTVlLQSwgR3JhZGllbnQsIEltYWdlUGF0
dGVybiwgQ3VycmVudENvbG9yLCBDdXJyZW50Q29sb3JXaXRoT3ZlcnJpZGVBbHBoYSwgSW52YWxp
ZCB9OwogICAgICAgICBzdHJ1Y3QgQ01ZS0FWYWx1ZXMgewogICAgICAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDTVlLQVZh
bHVlcyk7CkBAIC04NiwxNSArOTMsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAg
ICAgZmxvYXQgYTsKICAgICAgICAgfTsKIAotICAgICAgICBDYW52YXNTdHlsZShUeXBlLCBmbG9h
dCBvdmVycmlkZUFscGhhID0gMCk7Ci0gICAgICAgIENhbnZhc1N0eWxlKFJHQkEzMiByZ2JhKTsK
LSAgICAgICAgQ2FudmFzU3R5bGUoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSk7Ci0gICAg
ICAgIENhbnZhc1N0eWxlKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpOwotICAg
ICAgICBDYW52YXNTdHlsZShmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9h
dCBhKTsKLSAgICAgICAgQ2FudmFzU3R5bGUoUGFzc1JlZlB0cjxDYW52YXNHcmFkaWVudD4pOwot
ICAgICAgICBDYW52YXNTdHlsZShQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+KTsKLQotICAgICAg
ICBUeXBlIG1fdHlwZTsKKyAgICAgICAgZW51bSBDb25zdHJ1Y3RDdXJyZW50Q29sb3JUYWcgeyBD
b25zdHJ1Y3RDdXJyZW50Q29sb3IgfTsKKyAgICAgICAgQ2FudmFzU3R5bGUoQ29uc3RydWN0Q3Vy
cmVudENvbG9yVGFnKSA6IG1fdHlwZShDdXJyZW50Q29sb3IpIHsgfQorICAgICAgICBDYW52YXNT
dHlsZShUeXBlIHR5cGUsIGZsb2F0IG92ZXJyaWRlQWxwaGEpCisgICAgICAgICAgICA6IG1fb3Zl
cnJpZGVBbHBoYShvdmVycmlkZUFscGhhKQorICAgICAgICAgICAgLCBtX3R5cGUodHlwZSkKKyAg
ICAgICAgeworICAgICAgICB9CiAKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgUkdCQTMy
IG1fcmdiYTsKQEAgLTEwMywxMSArMTA4LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgIENhbnZhc1BhdHRlcm4qIG1fcGF0dGVybjsKICAgICAgICAgICAgIENNWUtBVmFsdWVz
KiBtX2NteWthOwogICAgICAgICB9OworICAgICAgICBUeXBlIG1fdHlwZTsKICAgICB9OwogCiAg
ICAgUkdCQTMyIGN1cnJlbnRDb2xvcihIVE1MQ2FudmFzRWxlbWVudCopOwogICAgIGJvb2wgcGFy
c2VDb2xvck9yQ3VycmVudENvbG9yKFJHQkEzMiYgcGFyc2VkQ29sb3IsIGNvbnN0IFN0cmluZyYg
Y29sb3JTdHJpbmcsIEhUTUxDYW52YXNFbGVtZW50Kik7CiAKKyAgICBpbmxpbmUgQ2FudmFzU3R5
bGU6OkNhbnZhc1N0eWxlKCkKKyAgICAgICAgOiBtX3R5cGUoSW52YWxpZCkKKyAgICB7CisgICAg
fQorCiAgICAgaW5saW5lIENhbnZhc0dyYWRpZW50KiBDYW52YXNTdHlsZTo6Y2FudmFzR3JhZGll
bnQoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fdHlwZSA9PSBHcmFkaWVudCkKQEAgLTEz
MCw2ICsxNDEsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICByZXR1cm4gQ29sb3Io
bV9jbXlrYS0+cmdiYSkuc2VyaWFsaXplZCgpOwogICAgIH0KIAorI2lmIENPTVBJTEVSX1NVUFBP
UlRTKENYWF9SVkFMVUVfUkVGRVJFTkNFUykKKyAgICBpbmxpbmUgQ2FudmFzU3R5bGU6OkNhbnZh
c1N0eWxlKENhbnZhc1N0eWxlJiYgb3RoZXIpCisgICAgeworICAgICAgICBtZW1jcHkodGhpcywg
Jm90aGVyLCBzaXplb2YoQ2FudmFzU3R5bGUpKTsKKyAgICAgICAgb3RoZXIubV90eXBlID0gSW52
YWxpZDsKKyAgICB9CisKKyAgICBpbmxpbmUgQ2FudmFzU3R5bGUmIENhbnZhc1N0eWxlOjpvcGVy
YXRvcj0oQ2FudmFzU3R5bGUmJiBvdGhlcikKKyAgICB7CisgICAgICAgIGlmICh0aGlzICE9ICZv
dGhlcikgeworICAgICAgICAgICAgbWVtY3B5KHRoaXMsICZvdGhlciwgc2l6ZW9mKENhbnZhc1N0
eWxlKSk7CisgICAgICAgICAgICBvdGhlci5tX3R5cGUgPSBJbnZhbGlkOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201105</attachid>
            <date>2013-05-08 13:57:38 -0700</date>
            <delta_ts>2013-05-08 13:57:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115775-20130508135643.patch</filename>
            <type>text/plain</type>
            <size>27860</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5NzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWRlZmRmNmU4MTdmMmY2
OGZkYWU3ZTY4YTBhM2IxZTA5OGUxMmQyZS4uYWViYWI2YmZlMzBkNjNkZWIzNDA3ZjA4YTA3ZTUz
ZTVmZmY5MjI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEzLTA1LTA4ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgQ2FudmFz
U3R5bGUgYSBwbGFpbiBvYmplY3QgaW5zdGVhZCBvZiBhbiBSZWZDb3VudGVkIG9iamVjdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1Nzc1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBDYW52YXNTdHlsZSBp
cyBqdXN0IDIgd29yZHMgd2lkZS4gV2UgZG8gbm90IGdhaW4gYW55dGhpbmcgZnJvbSBhbGxvY2F0
aW5nCisgICAgICAgIGl0IG9uIHRoZSBoZWFwLiBDaGFuZ2UgdGhlIG9iamVjdCB0byBiZSBqdXN0
IGEgdHlwZSBhbmQgc29tZSBkYXRhLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b0hUTUxDYW52YXNTdHlsZSk6CisgICAgICAgICogaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c2V0U3Ryb2tlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzZXRGaWxsU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpzZXRTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRmlsbCk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VTdHlsZSk6CisgICAg
ICAgIChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsU3R5bGUpOgorICAgICAgICAoU3RhdGUpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1N0eWxlOjpDYW52YXNTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6Y3Jl
YXRlRnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6Y3JlYXRlRnJv
bVN0cmluZ1dpdGhPdmVycmlkZUFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxl
Ojppc0VxdWl2YWxlbnRDb2xvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1N0eWxlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5
bGU6OmFwcGx5U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmFw
cGx5RmlsbENvbG9yKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oOgorICAg
ICAgICAoQ2FudmFzU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmlzVmFs
aWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6Om9wZXJhdG9yPSk6
CisKIDIwMTMtMDUtMDggIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLiBBcHBsZVdpbiBWUzIwMTAgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRDdXN0b20uY3BwCmluZGV4IDI2YTBiNDYzMDAxMDg2MjE2MmY2Y2IxZjhkNzc0MzNmYjU3
NDdiY2MuLjJiZTQ5MzFhZTQxODljNGM3YTFhODQ4ODRiYjE2NjA3NWZlZGMxOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREN1c3RvbS5jcHAKQEAgLTM4LDI1ICszOCwyNSBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBKU1ZhbHVlIHRvSlMoRXhl
Y1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYW52YXNTdHls
ZSogc3R5bGUpCitzdGF0aWMgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQ2FudmFzU3R5bGUmIHN0eWxlKQogewotICAg
IGlmIChzdHlsZS0+Y2FudmFzR3JhZGllbnQoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywg
Z2xvYmFsT2JqZWN0LCBzdHlsZS0+Y2FudmFzR3JhZGllbnQoKSk7Ci0gICAgaWYgKHN0eWxlLT5j
YW52YXNQYXR0ZXJuKCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwg
c3R5bGUtPmNhbnZhc1BhdHRlcm4oKSk7Ci0gICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4
ZWMsIHN0eWxlLT5jb2xvcigpKTsKKyAgICBpZiAoc3R5bGUuY2FudmFzR3JhZGllbnQoKSkKKyAg
ICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHlsZS5jYW52YXNHcmFkaWVu
dCgpKTsKKyAgICBpZiAoc3R5bGUuY2FudmFzUGF0dGVybigpKQorICAgICAgICByZXR1cm4gdG9K
UyhleGVjLCBnbG9iYWxPYmplY3QsIHN0eWxlLmNhbnZhc1BhdHRlcm4oKSk7CisgICAgcmV0dXJu
IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHN0eWxlLmNvbG9yKCkpOwogfQogCi1zdGF0aWMgUGFz
c1JlZlB0cjxDYW52YXNTdHlsZT4gdG9IVE1MQ2FudmFzU3R5bGUoRXhlY1N0YXRlKiwgSlNWYWx1
ZSB2YWx1ZSkKK3N0YXRpYyBDYW52YXNTdHlsZSB0b0hUTUxDYW52YXNTdHlsZShFeGVjU3RhdGUq
LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBDYW52YXNTdHlsZSgpOwogICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBhc09iamVjdCh2YWx1ZSk7CiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoJkpTQ2Fu
dmFzR3JhZGllbnQ6OnNfaW5mbykpCi0gICAgICAgIHJldHVybiBDYW52YXNTdHlsZTo6Y3JlYXRl
RnJvbUdyYWRpZW50KGpzQ2FzdDxKU0NhbnZhc0dyYWRpZW50Kj4ob2JqZWN0KS0+aW1wbCgpKTsK
KyAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlKGpzQ2FzdDxKU0NhbnZhc0dyYWRpZW50Kj4ob2Jq
ZWN0KS0+aW1wbCgpKTsKICAgICBpZiAob2JqZWN0LT5pbmhlcml0cygmSlNDYW52YXNQYXR0ZXJu
OjpzX2luZm8pKQotICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGU6OmNyZWF0ZUZyb21QYXR0ZXJu
KGpzQ2FzdDxKU0NhbnZhc1BhdHRlcm4qPihvYmplY3QpLT5pbXBsKCkpOwotICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGUoanNDYXN0PEpTQ2FudmFzUGF0dGVybio+KG9i
amVjdCktPmltcGwoKSk7CisgICAgcmV0dXJuIENhbnZhc1N0eWxlKCk7CiB9CiAKIEpTVmFsdWUg
SlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVN0eWxlKEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggZTMx
N2UwYTdhMGJhZmM2YTI0NjMwYTM1OGI3MDNlNzJmODRjMmJiMC4uY2YzODI3OTBhMjYzYTMwMGY0
ZjljMDdmNTQ4ZjkyMDg1YjRmOTk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5o
IgogI2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaCIKLSNpbmNsdWRlICJDYW52YXNTdHlsZS5oIgogI2luY2x1ZGUgIkNocm9tZS5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKaW5kZXggMGIzODlhZGFiYzE3OWVmOGE2NDY2NzNjYzBkMTI5NjhmN2Y0YTMzNy4u
YmI5MWYyOWRiNDEwZmJjZmJiYTVjMWRlM2U4M2ExNjkwOTcwN2VhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJD
YW52YXNHcmFkaWVudC5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKLSNpbmNsdWRlICJD
YW52YXNTdHlsZS5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJET01QYXRoLmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgpAQCAtMTgwLDggKzE3OSw4IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZXNldCgpCiB9CiAKIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6U3RhdGU6OlN0YXRlKCkKLSAgICA6IG1fc3Ryb2tlU3R5bGUoQ2FudmFzU3R5bGU6OmNy
ZWF0ZUZyb21SR0JBKENvbG9yOjpibGFjaykpCi0gICAgLCBtX2ZpbGxTdHlsZShDYW52YXNTdHls
ZTo6Y3JlYXRlRnJvbVJHQkEoQ29sb3I6OmJsYWNrKSkKKyAgICA6IG1fc3Ryb2tlU3R5bGUoQ29s
b3I6OmJsYWNrKQorICAgICwgbV9maWxsU3R5bGUoQ29sb3I6OmJsYWNrKQogICAgICwgbV9saW5l
V2lkdGgoMSkKICAgICAsIG1fbGluZUNhcChCdXR0Q2FwKQogICAgICwgbV9saW5lSm9pbihNaXRl
ckpvaW4pCkBAIC0zMTIsNjggKzMxMSw1NiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6cmVzdG9yZSgpCiAgICAgYy0+cmVzdG9yZSgpOwogfQogCi1DYW52YXNTdHlsZSogQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VTdHlsZSgpIGNvbnN0Cit2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlU3R5bGUoQ2FudmFzU3R5bGUgc3R5bGUpCiB7Ci0gICAg
cmV0dXJuIHN0YXRlKCkubV9zdHJva2VTdHlsZS5nZXQoKTsKLX0KLQotdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZVN0eWxlKFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IHBy
cFN0eWxlKQotewotICAgIFJlZlB0cjxDYW52YXNTdHlsZT4gc3R5bGUgPSBwcnBTdHlsZTsKLQot
ICAgIGlmICghc3R5bGUpCisgICAgaWYgKCFzdHlsZS5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChzdGF0ZSgpLm1fc3Ryb2tlU3R5bGUgJiYgc3RhdGUoKS5tX3N0cm9rZVN0
eWxlLT5pc0VxdWl2YWxlbnRDb2xvcigqc3R5bGUpKQorICAgIGlmIChzdGF0ZSgpLm1fc3Ryb2tl
U3R5bGUuaXNWYWxpZCgpICYmIHN0YXRlKCkubV9zdHJva2VTdHlsZS5pc0VxdWl2YWxlbnRDb2xv
cihzdHlsZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChzdHlsZS0+aXNDdXJyZW50Q29s
b3IoKSkgewotICAgICAgICBpZiAoc3R5bGUtPmhhc092ZXJyaWRlQWxwaGEoKSkKLSAgICAgICAg
ICAgIHN0eWxlID0gQ2FudmFzU3R5bGU6OmNyZWF0ZUZyb21SR0JBKGNvbG9yV2l0aE92ZXJyaWRl
QWxwaGEoY3VycmVudENvbG9yKGNhbnZhcygpKSwgc3R5bGUtPm92ZXJyaWRlQWxwaGEoKSkpOwor
ICAgIGlmIChzdHlsZS5pc0N1cnJlbnRDb2xvcigpKSB7CisgICAgICAgIGlmIChzdHlsZS5oYXNP
dmVycmlkZUFscGhhKCkpCisgICAgICAgICAgICBzdHlsZSA9IENhbnZhc1N0eWxlKGNvbG9yV2l0
aE92ZXJyaWRlQWxwaGEoY3VycmVudENvbG9yKGNhbnZhcygpKSwgc3R5bGUub3ZlcnJpZGVBbHBo
YSgpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0eWxlID0gQ2FudmFzU3R5bGU6OmNy
ZWF0ZUZyb21SR0JBKGN1cnJlbnRDb2xvcihjYW52YXMoKSkpOworICAgICAgICAgICAgc3R5bGUg
PSBDYW52YXNTdHlsZShjdXJyZW50Q29sb3IoY2FudmFzKCkpKTsKICAgICB9IGVsc2UKLSAgICAg
ICAgY2hlY2tPcmlnaW4oc3R5bGUtPmNhbnZhc1BhdHRlcm4oKSk7CisgICAgICAgIGNoZWNrT3Jp
Z2luKHN0eWxlLmNhbnZhc1BhdHRlcm4oKSk7CiAKICAgICByZWFsaXplU2F2ZXMoKTsKLSAgICBt
b2RpZmlhYmxlU3RhdGUoKS5tX3N0cm9rZVN0eWxlID0gc3R5bGUucmVsZWFzZSgpOworICAgIFN0
YXRlJiBzdGF0ZSA9IG1vZGlmaWFibGVTdGF0ZSgpOworICAgIHN0YXRlLm1fc3Ryb2tlU3R5bGUg
PSBzdHlsZTsKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAg
IGlmICghYykKICAgICAgICAgcmV0dXJuOwotICAgIHN0YXRlKCkubV9zdHJva2VTdHlsZS0+YXBw
bHlTdHJva2VDb2xvcihjKTsKLSAgICBtb2RpZmlhYmxlU3RhdGUoKS5tX3VucGFyc2VkU3Ryb2tl
Q29sb3IgPSBTdHJpbmcoKTsKKyAgICBzdGF0ZS5tX3N0cm9rZVN0eWxlLmFwcGx5U3Ryb2tlQ29s
b3IoYyk7CisgICAgc3RhdGUubV91bnBhcnNlZFN0cm9rZUNvbG9yID0gU3RyaW5nKCk7CiB9CiAK
LUNhbnZhc1N0eWxlKiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxTdHlsZSgpIGNvbnN0
Cit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbFN0eWxlKENhbnZhc1N0eWxl
IHN0eWxlKQogewotICAgIHJldHVybiBzdGF0ZSgpLm1fZmlsbFN0eWxlLmdldCgpOwotfQotCi12
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0RmlsbFN0eWxlKFBhc3NSZWZQdHI8Q2Fu
dmFzU3R5bGU+IHBycFN0eWxlKQotewotICAgIFJlZlB0cjxDYW52YXNTdHlsZT4gc3R5bGUgPSBw
cnBTdHlsZTsKLQotICAgIGlmICghc3R5bGUpCisgICAgaWYgKCFzdHlsZS5pc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChzdGF0ZSgpLm1fZmlsbFN0eWxlICYmIHN0YXRlKCku
bV9maWxsU3R5bGUtPmlzRXF1aXZhbGVudENvbG9yKCpzdHlsZSkpCisgICAgaWYgKHN0YXRlKCku
bV9maWxsU3R5bGUuaXNWYWxpZCgpICYmIHN0YXRlKCkubV9maWxsU3R5bGUuaXNFcXVpdmFsZW50
Q29sb3Ioc3R5bGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoc3R5bGUtPmlzQ3VycmVu
dENvbG9yKCkpIHsKLSAgICAgICAgaWYgKHN0eWxlLT5oYXNPdmVycmlkZUFscGhhKCkpCi0gICAg
ICAgICAgICBzdHlsZSA9IENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tUkdCQShjb2xvcldpdGhPdmVy
cmlkZUFscGhhKGN1cnJlbnRDb2xvcihjYW52YXMoKSksIHN0eWxlLT5vdmVycmlkZUFscGhhKCkp
KTsKKyAgICBpZiAoc3R5bGUuaXNDdXJyZW50Q29sb3IoKSkgeworICAgICAgICBpZiAoc3R5bGUu
aGFzT3ZlcnJpZGVBbHBoYSgpKQorICAgICAgICAgICAgc3R5bGUgPSBDYW52YXNTdHlsZShjb2xv
cldpdGhPdmVycmlkZUFscGhhKGN1cnJlbnRDb2xvcihjYW52YXMoKSksIHN0eWxlLm92ZXJyaWRl
QWxwaGEoKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdHlsZSA9IENhbnZhc1N0eWxl
OjpjcmVhdGVGcm9tUkdCQShjdXJyZW50Q29sb3IoY2FudmFzKCkpKTsKKyAgICAgICAgICAgIHN0
eWxlID0gQ2FudmFzU3R5bGUoY3VycmVudENvbG9yKGNhbnZhcygpKSk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIGNoZWNrT3JpZ2luKHN0eWxlLT5jYW52YXNQYXR0ZXJuKCkpOworICAgICAgICBjaGVj
a09yaWdpbihzdHlsZS5jYW52YXNQYXR0ZXJuKCkpOwogCiAgICAgcmVhbGl6ZVNhdmVzKCk7Ci0g
ICAgbW9kaWZpYWJsZVN0YXRlKCkubV9maWxsU3R5bGUgPSBzdHlsZS5yZWxlYXNlKCk7CisgICAg
U3RhdGUmIHN0YXRlID0gbW9kaWZpYWJsZVN0YXRlKCk7CisgICAgc3RhdGUubV9maWxsU3R5bGUg
PSBzdHlsZTsKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAg
IGlmICghYykKICAgICAgICAgcmV0dXJuOwotICAgIHN0YXRlKCkubV9maWxsU3R5bGUtPmFwcGx5
RmlsbENvbG9yKGMpOwotICAgIG1vZGlmaWFibGVTdGF0ZSgpLm1fdW5wYXJzZWRGaWxsQ29sb3Ig
PSBTdHJpbmcoKTsKKyAgICBzdGF0ZS5tX2ZpbGxTdHlsZS5hcHBseUZpbGxDb2xvcihjKTsKKyAg
ICBzdGF0ZS5tX3VucGFyc2VkRmlsbENvbG9yID0gU3RyaW5nKCk7CiB9CiAKIGZsb2F0IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6bGluZVdpZHRoKCkgY29uc3QKQEAgLTc4Miw5ICs3NjksOSBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3IoY29uc3QgU3Ry
aW5nJiBjb2xvcikKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFN0cm9rZUNv
bG9yKGZsb2F0IGdyYXlMZXZlbCkKIHsKLSAgICBpZiAoc3RhdGUoKS5tX3N0cm9rZVN0eWxlICYm
IHN0YXRlKCkubV9zdHJva2VTdHlsZS0+aXNFcXVpdmFsZW50UkdCQShncmF5TGV2ZWwsIGdyYXlM
ZXZlbCwgZ3JheUxldmVsLCAxLjBmKSkKKyAgICBpZiAoc3RhdGUoKS5tX3N0cm9rZVN0eWxlLmlz
VmFsaWQoKSAmJiBzdGF0ZSgpLm1fc3Ryb2tlU3R5bGUuaXNFcXVpdmFsZW50UkdCQShncmF5TGV2
ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCAxLjBmKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNl
dFN0cm9rZVN0eWxlKENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tR3JheUxldmVsV2l0aEFscGhhKGdy
YXlMZXZlbCwgMS4wZikpOworICAgIHNldFN0cm9rZVN0eWxlKENhbnZhc1N0eWxlKGdyYXlMZXZl
bCwgMS4wZikpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tl
Q29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpCkBAIC03OTQsMjMgKzc4MSwy
MyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3IoY29uc3Qg
U3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpCiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTdHJva2VDb2xvcihmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKQogewotICAg
IGlmIChzdGF0ZSgpLm1fc3Ryb2tlU3R5bGUgJiYgc3RhdGUoKS5tX3N0cm9rZVN0eWxlLT5pc0Vx
dWl2YWxlbnRSR0JBKGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWwsIGFscGhhKSkKKyAg
ICBpZiAoc3RhdGUoKS5tX3N0cm9rZVN0eWxlLmlzVmFsaWQoKSAmJiBzdGF0ZSgpLm1fc3Ryb2tl
U3R5bGUuaXNFcXVpdmFsZW50UkdCQShncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCBh
bHBoYSkpCiAgICAgICAgIHJldHVybjsKLSAgICBzZXRTdHJva2VTdHlsZShDYW52YXNTdHlsZTo6
Y3JlYXRlRnJvbUdyYXlMZXZlbFdpdGhBbHBoYShncmF5TGV2ZWwsIGFscGhhKSk7CisgICAgc2V0
U3Ryb2tlU3R5bGUoQ2FudmFzU3R5bGUoZ3JheUxldmVsLCBhbHBoYSkpOwogfQogCiB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U3Ryb2tlQ29sb3IoZmxvYXQgciwgZmxvYXQgZywg
ZmxvYXQgYiwgZmxvYXQgYSkKIHsKLSAgICBpZiAoc3RhdGUoKS5tX3N0cm9rZVN0eWxlICYmIHN0
YXRlKCkubV9zdHJva2VTdHlsZS0+aXNFcXVpdmFsZW50UkdCQShyLCBnLCBiLCBhKSkKKyAgICBp
ZiAoc3RhdGUoKS5tX3N0cm9rZVN0eWxlLmlzVmFsaWQoKSAmJiBzdGF0ZSgpLm1fc3Ryb2tlU3R5
bGUuaXNFcXVpdmFsZW50UkdCQShyLCBnLCBiLCBhKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNl
dFN0cm9rZVN0eWxlKENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tUkdCQUNoYW5uZWxzKHIsIGcsIGIs
IGEpKTsKKyAgICBzZXRTdHJva2VTdHlsZShDYW52YXNTdHlsZShyLCBnLCBiLCBhKSk7CiB9CiAK
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTdHJva2VDb2xvcihmbG9hdCBjLCBm
bG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKQogewotICAgIGlmIChzdGF0ZSgpLm1f
c3Ryb2tlU3R5bGUgJiYgc3RhdGUoKS5tX3N0cm9rZVN0eWxlLT5pc0VxdWl2YWxlbnRDTVlLQShj
LCBtLCB5LCBrLCBhKSkKKyAgICBpZiAoc3RhdGUoKS5tX3N0cm9rZVN0eWxlLmlzVmFsaWQoKSAm
JiBzdGF0ZSgpLm1fc3Ryb2tlU3R5bGUuaXNFcXVpdmFsZW50Q01ZS0EoYywgbSwgeSwgaywgYSkp
CiAgICAgICAgIHJldHVybjsKLSAgICBzZXRTdHJva2VTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRl
RnJvbUNNWUtBQ2hhbm5lbHMoYywgbSwgeSwgaywgYSkpOworICAgIHNldFN0cm9rZVN0eWxlKENh
bnZhc1N0eWxlKGMsIG0sIHksIGssIGEpKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnNldEZpbGxDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yKQpAQCAtODI0LDkgKzgxMSw5
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IoY29uc3QgU3Ry
aW5nJiBjb2xvcikKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxDb2xv
cihmbG9hdCBncmF5TGV2ZWwpCiB7Ci0gICAgaWYgKHN0YXRlKCkubV9maWxsU3R5bGUgJiYgc3Rh
dGUoKS5tX2ZpbGxTdHlsZS0+aXNFcXVpdmFsZW50UkdCQShncmF5TGV2ZWwsIGdyYXlMZXZlbCwg
Z3JheUxldmVsLCAxLjBmKSkKKyAgICBpZiAoc3RhdGUoKS5tX2ZpbGxTdHlsZS5pc1ZhbGlkKCkg
JiYgc3RhdGUoKS5tX2ZpbGxTdHlsZS5pc0VxdWl2YWxlbnRSR0JBKGdyYXlMZXZlbCwgZ3JheUxl
dmVsLCBncmF5TGV2ZWwsIDEuMGYpKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0RmlsbFN0eWxl
KENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tR3JheUxldmVsV2l0aEFscGhhKGdyYXlMZXZlbCwgMS4w
ZikpOworICAgIHNldEZpbGxTdHlsZShDYW52YXNTdHlsZShncmF5TGV2ZWwsIDEuMGYpKTsKIH0K
IAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxDb2xvcihjb25zdCBTdHJp
bmcmIGNvbG9yLCBmbG9hdCBhbHBoYSkKQEAgLTgzNiwyMyArODIzLDIzIEBAIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxv
YXQgYWxwaGEpCiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGaWxsQ29sb3Io
ZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSkKIHsKLSAgICBpZiAoc3RhdGUoKS5tX2ZpbGxT
dHlsZSAmJiBzdGF0ZSgpLm1fZmlsbFN0eWxlLT5pc0VxdWl2YWxlbnRSR0JBKGdyYXlMZXZlbCwg
Z3JheUxldmVsLCBncmF5TGV2ZWwsIGFscGhhKSkKKyAgICBpZiAoc3RhdGUoKS5tX2ZpbGxTdHls
ZS5pc1ZhbGlkKCkgJiYgc3RhdGUoKS5tX2ZpbGxTdHlsZS5pc0VxdWl2YWxlbnRSR0JBKGdyYXlM
ZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWwsIGFscGhhKSkKICAgICAgICAgcmV0dXJuOwotICAg
IHNldEZpbGxTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbUdyYXlMZXZlbFdpdGhBbHBoYShn
cmF5TGV2ZWwsIGFscGhhKSk7CisgICAgc2V0RmlsbFN0eWxlKENhbnZhc1N0eWxlKGdyYXlMZXZl
bCwgYWxwaGEpKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxD
b2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKQogewotICAgIGlmIChzdGF0
ZSgpLm1fZmlsbFN0eWxlICYmIHN0YXRlKCkubV9maWxsU3R5bGUtPmlzRXF1aXZhbGVudFJHQkEo
ciwgZywgYiwgYSkpCisgICAgaWYgKHN0YXRlKCkubV9maWxsU3R5bGUuaXNWYWxpZCgpICYmIHN0
YXRlKCkubV9maWxsU3R5bGUuaXNFcXVpdmFsZW50UkdCQShyLCBnLCBiLCBhKSkKICAgICAgICAg
cmV0dXJuOwotICAgIHNldEZpbGxTdHlsZShDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbVJHQkFDaGFu
bmVscyhyLCBnLCBiLCBhKSk7CisgICAgc2V0RmlsbFN0eWxlKENhbnZhc1N0eWxlKHIsIGcsIGIs
IGEpKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZpbGxDb2xvcihm
bG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKQogewotICAgIGlmIChz
dGF0ZSgpLm1fZmlsbFN0eWxlICYmIHN0YXRlKCkubV9maWxsU3R5bGUtPmlzRXF1aXZhbGVudENN
WUtBKGMsIG0sIHksIGssIGEpKQorICAgIGlmIChzdGF0ZSgpLm1fZmlsbFN0eWxlLmlzVmFsaWQo
KSAmJiBzdGF0ZSgpLm1fZmlsbFN0eWxlLmlzRXF1aXZhbGVudENNWUtBKGMsIG0sIHksIGssIGEp
KQogICAgICAgICByZXR1cm47Ci0gICAgc2V0RmlsbFN0eWxlKENhbnZhc1N0eWxlOjpjcmVhdGVG
cm9tQ01ZS0FDaGFubmVscyhjLCBtLCB5LCBrLCBhKSk7CisgICAgc2V0RmlsbFN0eWxlKENhbnZh
c1N0eWxlKGMsIG0sIHksIGssIGEpKTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmJlZ2luUGF0aCgpCkBAIC0xNjYyLDcgKzE2NDksNyBAQCB0ZW1wbGF0ZTxjbGFzcyBUPiB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWRGaWxsKGNv
bnN0CiAgICAgcGF0aC50cmFuc2xhdGUoRmxvYXRTaXplKC1idWZmZXJSZWN0LngoKSwgLWJ1ZmZl
clJlY3QueSgpKSk7CiAKICAgICBidWZmZXItPmNvbnRleHQoKS0+c2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIpOwotICAgIHN0YXRlKCkubV9maWxsU3R5bGUtPmFwcGx5
RmlsbENvbG9yKGJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtb2RpZmlhYmxlU3RhdGUoKS5tX2Zp
bGxTdHlsZS5hcHBseUZpbGxDb2xvcihidWZmZXItPmNvbnRleHQoKSk7CiAgICAgYnVmZmVyLT5j
b250ZXh0KCktPmZpbGxQYXRoKHBhdGgpOwogCiAgICAgY29tcG9zaXRlQnVmZmVyKGJ1ZmZlci5n
ZXQoKSwgYnVmZmVyUmVjdCwgc3RhdGUoKS5tX2dsb2JhbENvbXBvc2l0ZSk7CkBAIC0yMjUyLDgg
KzIyMzksOCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5h
bChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsbwogICAgICAgICBpbmZsYXRlU3Ryb2tl
UmVjdCh0ZXh0UmVjdCk7CiAKICNpZiBVU0UoQ0cpCi0gICAgQ2FudmFzU3R5bGUqIGRyYXdTdHls
ZSA9IGZpbGwgPyBzdGF0ZSgpLm1fZmlsbFN0eWxlLmdldCgpIDogc3RhdGUoKS5tX3N0cm9rZVN0
eWxlLmdldCgpOwotICAgIGlmIChkcmF3U3R5bGUtPmNhbnZhc0dyYWRpZW50KCkgfHwgZHJhd1N0
eWxlLT5jYW52YXNQYXR0ZXJuKCkpIHsKKyAgICBjb25zdCBDYW52YXNTdHlsZSYgZHJhd1N0eWxl
ID0gZmlsbCA/IHN0YXRlKCkubV9maWxsU3R5bGUgOiBzdGF0ZSgpLm1fc3Ryb2tlU3R5bGU7Cisg
ICAgaWYgKGRyYXdTdHlsZS5jYW52YXNHcmFkaWVudCgpIHx8IGRyYXdTdHlsZS5jYW52YXNQYXR0
ZXJuKCkpIHsKICAgICAgICAgSW50UmVjdCBtYXNrUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QodGV4
dFJlY3QpOwogCiAgICAgICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbWFza0ltYWdlID0gYy0+Y3Jl
YXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCkpOwpAQCAtMjI4MSw3ICsyMjY4LDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG8KIAogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoKmMpOwogICAgICAgICBjLT5jbGlwVG9JbWFnZUJ1ZmZlcihtYXNr
SW1hZ2UuZ2V0KCksIG1hc2tSZWN0KTsKLSAgICAgICAgZHJhd1N0eWxlLT5hcHBseUZpbGxDb2xv
cihjKTsKKyAgICAgICAgZHJhd1N0eWxlLmFwcGx5RmlsbENvbG9yKGMpOwogICAgICAgICBjLT5m
aWxsUmVjdChtYXNrUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4
IGQ0ZDIxYWZhNWZkYjRhM2MxZDg4MTczNjg1NTcyYWMzZjk0YmEwOTYuLjI4YmFmYmQ4ZDU2ZGIz
NGZlYWVmY2JmNDQ4MDA3NDZjNDk5YzdiYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiQ2FudmFzUGF0aE1ldGhv
ZHMuaCIKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiQ2Fu
dmFzU3R5bGUuaCIKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIK
ICNpbmNsdWRlICJEYXNoQXJyYXkuaCIKQEAgLTQ4LDcgKzQ5LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDYW52YXNHcmFkaWVudDsKIGNsYXNzIENhbnZhc1BhdHRlcm47Ci1jbGFz
cyBDYW52YXNTdHlsZTsKICNpZiBFTkFCTEUoQ0FOVkFTX1BBVEgpCiBjbGFzcyBET01QYXRoOwog
I2VuZGlmCkBAIC03MCwxMSArNzAsMTEgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQoKTsKIAotICAgIENhbnZhc1N0eWxlKiBzdHJva2VTdHls
ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoUGFzc1JlZlB0cjxDYW52YXNTdHls
ZT4pOworICAgIGNvbnN0IENhbnZhc1N0eWxlJiBzdHJva2VTdHlsZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRlKCkubV9zdHJva2VTdHlsZTsgfQorICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoQ2FudmFz
U3R5bGUpOwogCi0gICAgQ2FudmFzU3R5bGUqIGZpbGxTdHlsZSgpIGNvbnN0OwotICAgIHZvaWQg
c2V0RmlsbFN0eWxlKFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+KTsKKyAgICBjb25zdCBDYW52YXNT
dHlsZSYgZmlsbFN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3RhdGUoKS5tX2ZpbGxTdHlsZTsgfQor
ICAgIHZvaWQgc2V0RmlsbFN0eWxlKENhbnZhc1N0eWxlKTsKIAogICAgIGZsb2F0IGxpbmVXaWR0
aCgpIGNvbnN0OwogICAgIHZvaWQgc2V0TGluZVdpZHRoKGZsb2F0KTsKQEAgLTI0MCw4ICsyNDAs
OCBAQCBwcml2YXRlOgogCiAgICAgICAgIFN0cmluZyBtX3VucGFyc2VkU3Ryb2tlQ29sb3I7CiAg
ICAgICAgIFN0cmluZyBtX3VucGFyc2VkRmlsbENvbG9yOwotICAgICAgICBSZWZQdHI8Q2FudmFz
U3R5bGU+IG1fc3Ryb2tlU3R5bGU7Ci0gICAgICAgIFJlZlB0cjxDYW52YXNTdHlsZT4gbV9maWxs
U3R5bGU7CisgICAgICAgIENhbnZhc1N0eWxlIG1fc3Ryb2tlU3R5bGU7CisgICAgICAgIENhbnZh
c1N0eWxlIG1fZmlsbFN0eWxlOwogICAgICAgICBmbG9hdCBtX2xpbmVXaWR0aDsKICAgICAgICAg
TGluZUNhcCBtX2xpbmVDYXA7CiAgICAgICAgIExpbmVKb2luIG1fbGluZUpvaW47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKaW5kZXggY2QyZWVkOWQwM2IxYzg5
OTZkNDUwMzMzZjIyZDQ2Y2EwMDllY2VhNi4uNWZhMTE5ODdiYjM0MjYwYzRmOGQxNDY2YTIwNDE3
NmYxZDEzOTMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNw
cApAQCAtOTIsNDYgKzkyLDQ0IEBAIGJvb2wgcGFyc2VDb2xvck9yQ3VycmVudENvbG9yKFJHQkEz
MiYgcGFyc2VkQ29sb3IsIGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcsIEhUCiAgICAgfQogfQog
Ci1DYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoVHlwZSB0eXBlLCBmbG9hdCBvdmVycmlkZUFscGhh
KQotICAgIDogbV90eXBlKHR5cGUpCi0gICAgLCBtX292ZXJyaWRlQWxwaGEob3ZlcnJpZGVBbHBo
YSkKLXsKLX0KLQogQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKFJHQkEzMiByZ2JhKQotICAgIDog
bV90eXBlKFJHQkEpCi0gICAgLCBtX3JnYmEocmdiYSkKKyAgICA6IG1fcmdiYShyZ2JhKQorICAg
ICwgbV90eXBlKFJHQkEpCiB7CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShmbG9hdCBn
cmF5TGV2ZWwsIGZsb2F0IGFscGhhKQotICAgIDogbV90eXBlKFJHQkEpCi0gICAgLCBtX3JnYmEo
bWFrZVJHQkEzMkZyb21GbG9hdHMoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgYWxw
aGEpKQorICAgIDogbV9yZ2JhKG1ha2VSR0JBMzJGcm9tRmxvYXRzKGdyYXlMZXZlbCwgZ3JheUxl
dmVsLCBncmF5TGV2ZWwsIGFscGhhKSkKKyAgICAsIG1fdHlwZShSR0JBKQogewogfQogCiBDYW52
YXNTdHlsZTo6Q2FudmFzU3R5bGUoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkK
LSAgICA6IG1fdHlwZShSR0JBKQotICAgICwgbV9yZ2JhKG1ha2VSR0JBMzJGcm9tRmxvYXRzKHIs
IGcsIGIsIGEpKQorICAgIDogbV9yZ2JhKG1ha2VSR0JBMzJGcm9tRmxvYXRzKHIsIGcsIGIsIGEp
KQorICAgICwgbV90eXBlKFJHQkEpCiB7CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShm
bG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKQotICAgIDogbV90eXBl
KENNWUtBKQotICAgICwgbV9jbXlrYShuZXcgQ01ZS0FWYWx1ZXMobWFrZVJHQkFGcm9tQ01ZS0Eo
YywgbSwgeSwgaywgYSksIGMsIG0sIHksIGssIGEpKQorICAgIDogbV9jbXlrYShuZXcgQ01ZS0FW
YWx1ZXMobWFrZVJHQkFGcm9tQ01ZS0EoYywgbSwgeSwgaywgYSksIGMsIG0sIHksIGssIGEpKQor
ICAgICwgbV90eXBlKENNWUtBKQogewogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoUGFz
c1JlZlB0cjxDYW52YXNHcmFkaWVudD4gZ3JhZGllbnQpCi0gICAgOiBtX3R5cGUoR3JhZGllbnQp
Ci0gICAgLCBtX2dyYWRpZW50KGdyYWRpZW50LmxlYWtSZWYoKSkKKyAgICA6IG1fZ3JhZGllbnQo
Z3JhZGllbnQubGVha1JlZigpKQorICAgICwgbV90eXBlKEdyYWRpZW50KQogeworICAgIGlmICgh
bV9ncmFkaWVudCkKKyAgICAgICAgbV90eXBlID0gSW52YWxpZDsKIH0KIAogQ2FudmFzU3R5bGU6
OkNhbnZhc1N0eWxlKFBhc3NSZWZQdHI8Q2FudmFzUGF0dGVybj4gcGF0dGVybikKLSAgICA6IG1f
dHlwZShJbWFnZVBhdHRlcm4pCi0gICAgLCBtX3BhdHRlcm4ocGF0dGVybi5sZWFrUmVmKCkpCisg
ICAgOiBtX3BhdHRlcm4ocGF0dGVybi5sZWFrUmVmKCkpCisgICAgLCBtX3R5cGUoSW1hZ2VQYXR0
ZXJuKQogeworICAgIGlmICghbV9wYXR0ZXJuKQorICAgICAgICBtX3R5cGUgPSBJbnZhbGlkOwog
fQogCiBDYW52YXNTdHlsZTo6fkNhbnZhc1N0eWxlKCkKQEAgLTE0NCw1NCArMTQyLDQxIEBAIENh
bnZhc1N0eWxlOjp+Q2FudmFzU3R5bGUoKQogICAgICAgICBkZWxldGUgbV9jbXlrYTsKIH0KIAot
UGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gQ2FudmFzU3R5bGU6OmNyZWF0ZUZyb21TdHJpbmcoY29u
c3QgU3RyaW5nJiBjb2xvciwgRG9jdW1lbnQqIGRvY3VtZW50KQorQ2FudmFzU3R5bGUgQ2FudmFz
U3R5bGU6OmNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBjb2xvciwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogewogICAgIFJHQkEzMiByZ2JhOwogICAgIENvbG9yUGFyc2VSZXN1bHQgcGFyc2VS
ZXN1bHQgPSBwYXJzZUNvbG9yKHJnYmEsIGNvbG9yLCBkb2N1bWVudCk7CiAgICAgc3dpdGNoIChw
YXJzZVJlc3VsdCkgewogICAgIGNhc2UgUGFyc2VkUkdCQToKICAgICBjYXNlIFBhcnNlZFN5c3Rl
bUNvbG9yOgotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKHJnYmEpKTsK
KyAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlKHJnYmEpOwogICAgIGNhc2UgUGFyc2VkQ3VycmVu
dENvbG9yOgotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKEN1cnJlbnRD
b2xvcikpOworICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGUoQ29uc3RydWN0Q3VycmVudENvbG9y
KTsKICAgICBjYXNlIFBhcnNlRmFpbGVkOgotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIENhbnZhc1N0eWxlKCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGUoKTsK
ICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IENhbnZhc1N0eWxlOjpjcmVhdGVG
cm9tU3RyaW5nV2l0aE92ZXJyaWRlQWxwaGEoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxw
aGEpCitDYW52YXNTdHlsZSBDYW52YXNTdHlsZTo6Y3JlYXRlRnJvbVN0cmluZ1dpdGhPdmVycmlk
ZUFscGhhKGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0IGFscGhhKQogewogICAgIFJHQkEzMiBy
Z2JhOwogICAgIENvbG9yUGFyc2VSZXN1bHQgcGFyc2VSZXN1bHQgPSBwYXJzZUNvbG9yKHJnYmEs
IGNvbG9yKTsKICAgICBzd2l0Y2ggKHBhcnNlUmVzdWx0KSB7CiAgICAgY2FzZSBQYXJzZWRSR0JB
OgotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKGNvbG9yV2l0aE92ZXJy
aWRlQWxwaGEocmdiYSwgYWxwaGEpKSk7CisgICAgICAgIHJldHVybiBDYW52YXNTdHlsZShjb2xv
cldpdGhPdmVycmlkZUFscGhhKHJnYmEsIGFscGhhKSk7CiAgICAgY2FzZSBQYXJzZWRDdXJyZW50
Q29sb3I6Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUoQ3VycmVudENv
bG9yV2l0aE92ZXJyaWRlQWxwaGEsIGFscGhhKSk7CisgICAgICAgIHJldHVybiBDYW52YXNTdHls
ZShDdXJyZW50Q29sb3JXaXRoT3ZlcnJpZGVBbHBoYSwgYWxwaGEpOwogICAgIGNhc2UgUGFyc2VG
YWlsZWQ6Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gQ2FudmFzU3R5bGUoKTsK
ICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBDYW52YXNTdHlsZSgpOwogICAgIH0KIH0KIAotUGFzc1Jl
ZlB0cjxDYW52YXNTdHlsZT4gQ2FudmFzU3R5bGU6OmNyZWF0ZUZyb21HcmFkaWVudChQYXNzUmVm
UHRyPENhbnZhc0dyYWRpZW50PiBncmFkaWVudCkKLXsKLSAgICBpZiAoIWdyYWRpZW50KQotICAg
ICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc1N0eWxlKGdyYWRp
ZW50KSk7Ci19Ci1QYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBDYW52YXNTdHlsZTo6Y3JlYXRlRnJv
bVBhdHRlcm4oUGFzc1JlZlB0cjxDYW52YXNQYXR0ZXJuPiBwYXR0ZXJuKQotewotICAgIGlmICgh
cGF0dGVybikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52
YXNTdHlsZShwYXR0ZXJuKSk7Ci19Ci0KIGJvb2wgQ2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudENv
bG9yKGNvbnN0IENhbnZhc1N0eWxlJiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAobV90eXBlICE9
IG90aGVyLm1fdHlwZSkKQEAgLTIxMSw2ICsxOTYsOCBAQCBib29sIENhbnZhc1N0eWxlOjppc0Vx
dWl2YWxlbnRDb2xvcihjb25zdCBDYW52YXNTdHlsZSYgb3RoZXIpIGNvbnN0CiAgICAgY2FzZSBD
dXJyZW50Q29sb3I6CiAgICAgY2FzZSBDdXJyZW50Q29sb3JXaXRoT3ZlcnJpZGVBbHBoYToKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgSW52YWxpZDoKKyAgICAgICAgYnJlYWs7CiAg
ICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMzcsNyArMjI0LDMyIEBAIGJv
b2wgQ2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudENNWUtBKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0
IHksIGZsb2F0IGssIGZsb2F0IGEpCiAgICAgICAgICYmIGEgPT0gbV9jbXlrYS0+YTsKIH0KIAot
dm9pZCBDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQpCitDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoY29uc3QgQ2FudmFzU3R5bGUmIG90aGVyKQor
eworICAgIG1lbWNweSh0aGlzLCAmb3RoZXIsIHNpemVvZihDYW52YXNTdHlsZSkpOworICAgIGlm
IChtX3R5cGUgPT0gR3JhZGllbnQpCisgICAgICAgIG1fZ3JhZGllbnQtPnJlZigpOworICAgIGVs
c2UgaWYgKG1fdHlwZSA9PSBJbWFnZVBhdHRlcm4pCisgICAgICAgIG1fcGF0dGVybi0+cmVmKCk7
CisgICAgZWxzZSBpZiAobV90eXBlID09IENNWUtBKQorICAgICAgICBtX2NteWthID0gbmV3IENN
WUtBVmFsdWVzKG90aGVyLm1fY215a2EtPnJnYmEsIG90aGVyLm1fY215a2EtPmMsIG90aGVyLm1f
Y215a2EtPm0sIG90aGVyLm1fY215a2EtPnksIG90aGVyLm1fY215a2EtPmssIG90aGVyLm1fY215
a2EtPmEpOworfQorCitDYW52YXNTdHlsZSYgQ2FudmFzU3R5bGU6Om9wZXJhdG9yPShjb25zdCBD
YW52YXNTdHlsZSYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAg
IG1lbWNweSh0aGlzLCAmb3RoZXIsIHNpemVvZihDYW52YXNTdHlsZSkpOworICAgICAgICBpZiAo
bV90eXBlID09IEdyYWRpZW50KQorICAgICAgICAgICAgbV9ncmFkaWVudC0+cmVmKCk7CisgICAg
ICAgIGVsc2UgaWYgKG1fdHlwZSA9PSBJbWFnZVBhdHRlcm4pCisgICAgICAgICAgICBtX3BhdHRl
cm4tPnJlZigpOworICAgICAgICBlbHNlIGlmIChtX3R5cGUgPT0gQ01ZS0EpCisgICAgICAgICAg
ICBtX2NteWthID0gbmV3IENNWUtBVmFsdWVzKG90aGVyLm1fY215a2EtPnJnYmEsIG90aGVyLm1f
Y215a2EtPmMsIG90aGVyLm1fY215a2EtPm0sIG90aGVyLm1fY215a2EtPnksIG90aGVyLm1fY215
a2EtPmssIG90aGVyLm1fY215a2EtPmEpOworICAgIH0KKyAgICByZXR1cm4gKnRoaXM7Cit9CisK
K3ZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5U3Ryb2tlQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0KSBjb25zdAogewogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjY5
LDEyICsyODEsMTMgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQpCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ3VycmVudENvbG9y
OgogICAgIGNhc2UgQ3VycmVudENvbG9yV2l0aE92ZXJyaWRlQWxwaGE6CisgICAgY2FzZSBJbnZh
bGlkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogfQogCi12b2lkIENhbnZhc1N0eWxlOjphcHBseUZpbGxDb2xvcihHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQpCit2b2lkIENhbnZhc1N0eWxlOjphcHBseUZpbGxDb2xvcihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm47
CkBAIC0zMDYsNiArMzE5LDcgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlGaWxsQ29sb3IoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KQogICAgICAgICBicmVhazsKICAgICBjYXNlIEN1cnJlbnRD
b2xvcjoKICAgICBjYXNlIEN1cnJlbnRDb2xvcldpdGhPdmVycmlkZUFscGhhOgorICAgIGNhc2Ug
SW52YWxpZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCmluZGV4IGY3OTQw
YTBlYThiOTMwYmYwMDBkMzVmMmYyZjJhZThmNmZlNTNmM2IuLmFhZjdkZDVlN2QwOTIxOTNkNzQ3
Yjg1MmM1NjY2Mzg1MDM1ZTA5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1N0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
U3R5bGUuaApAQCAtNDAsMjEgKzQwLDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBHcmFwaGljc0NvbnRleHQ7CiAgICAgY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiAKLSAgICBj
bGFzcyBDYW52YXNTdHlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPENhbnZhc1N0eWxlPiB7Ci0gICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShDYW52YXNTdHlsZSk7CisgICAgY2xhc3MgQ2FudmFzU3R5bGUgewogICAgIHB1YmxpYzoKKyAg
ICAgICAgQ2FudmFzU3R5bGUoKTsKKyAgICAgICAgZXhwbGljaXQgQ2FudmFzU3R5bGUoUkdCQTMy
KTsKKyAgICAgICAgQ2FudmFzU3R5bGUoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSk7Cisg
ICAgICAgIENhbnZhc1N0eWxlKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGFscGhh
KTsKKyAgICAgICAgQ2FudmFzU3R5bGUoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQg
aywgZmxvYXQgYWxwaGEpOworICAgICAgICBleHBsaWNpdCBDYW52YXNTdHlsZShQYXNzUmVmUHRy
PENhbnZhc0dyYWRpZW50Pik7CisgICAgICAgIGV4cGxpY2l0IENhbnZhc1N0eWxlKFBhc3NSZWZQ
dHI8Q2FudmFzUGF0dGVybj4pOwogICAgICAgICB+Q2FudmFzU3R5bGUoKTsKIAotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4gY3JlYXRlRnJvbVJHQkEoUkdCQTMyIHJnYmEp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNTdHlsZShyZ2JhKSk7IH0KLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5n
JiBjb2xvciwgRG9jdW1lbnQqID0gMCk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZh
c1N0eWxlPiBjcmVhdGVGcm9tU3RyaW5nV2l0aE92ZXJyaWRlQWxwaGEoY29uc3QgU3RyaW5nJiBj
b2xvciwgZmxvYXQgYWxwaGEpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNTdHls
ZT4gY3JlYXRlRnJvbUdyYXlMZXZlbFdpdGhBbHBoYShmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFs
cGhhKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzU3R5bGUoZ3JheUxldmVsLCBhbHBoYSkp
OyB9Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBjcmVhdGVGcm9tUkdC
QUNoYW5uZWxzKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDYW52YXNTdHlsZShyLCBnLCBiLCBhKSk7IH0KLSAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8Q2FudmFzU3R5bGU+IGNyZWF0ZUZyb21DTVlLQUNoYW5uZWxzKGZsb2F0IGMsIGZs
b2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
YW52YXNTdHlsZShjLCBtLCB5LCBrLCBhKSk7IH0KLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
Q2FudmFzU3R5bGU+IGNyZWF0ZUZyb21HcmFkaWVudChQYXNzUmVmUHRyPENhbnZhc0dyYWRpZW50
Pik7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhc1N0eWxlPiBjcmVhdGVGcm9tUGF0
dGVybihQYXNzUmVmUHRyPENhbnZhc1BhdHRlcm4+KTsKKyAgICAgICAgc3RhdGljIENhbnZhc1N0
eWxlIGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBjb2xvciwgRG9jdW1lbnQqID0gMCk7
CisgICAgICAgIHN0YXRpYyBDYW52YXNTdHlsZSBjcmVhdGVGcm9tU3RyaW5nV2l0aE92ZXJyaWRl
QWxwaGEoY29uc3QgU3RyaW5nJiBjb2xvciwgZmxvYXQgYWxwaGEpOwogCisgICAgICAgIGJvb2wg
aXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAhPSBJbnZhbGlkOyB9CiAgICAgICAgIGJv
b2wgaXNDdXJyZW50Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gQ3VycmVudENvbG9y
IHx8IG1fdHlwZSA9PSBDdXJyZW50Q29sb3JXaXRoT3ZlcnJpZGVBbHBoYTsgfQogICAgICAgICBi
b29sIGhhc092ZXJyaWRlQWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gQ3VycmVudENv
bG9yV2l0aE92ZXJyaWRlQWxwaGE7IH0KICAgICAgICAgZmxvYXQgb3ZlcnJpZGVBbHBoYSgpIGNv
bnN0IHsgQVNTRVJUKG1fdHlwZSA9PSBDdXJyZW50Q29sb3JXaXRoT3ZlcnJpZGVBbHBoYSk7IHJl
dHVybiBtX292ZXJyaWRlQWxwaGE7IH0KQEAgLTYzLDE1ICs2MywyMiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIENhbnZhc0dyYWRpZW50KiBjYW52YXNHcmFkaWVudCgpIGNvbnN0Owog
ICAgICAgICBDYW52YXNQYXR0ZXJuKiBjYW52YXNQYXR0ZXJuKCkgY29uc3Q7CiAKLSAgICAgICAg
dm9pZCBhcHBseUZpbGxDb2xvcihHcmFwaGljc0NvbnRleHQqKTsKLSAgICAgICAgdm9pZCBhcHBs
eVN0cm9rZUNvbG9yKEdyYXBoaWNzQ29udGV4dCopOworICAgICAgICB2b2lkIGFwcGx5RmlsbENv
bG9yKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0OworICAgICAgICB2b2lkIGFwcGx5U3Ryb2tlQ29s
b3IoR3JhcGhpY3NDb250ZXh0KikgY29uc3Q7CiAKICAgICAgICAgYm9vbCBpc0VxdWl2YWxlbnRD
b2xvcihjb25zdCBDYW52YXNTdHlsZSYpIGNvbnN0OwogICAgICAgICBib29sIGlzRXF1aXZhbGVu
dFJHQkEoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkgY29uc3Q7CiAgICAgICAg
IGJvb2wgaXNFcXVpdmFsZW50Q01ZS0EoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQg
aywgZmxvYXQgYSkgY29uc3Q7CiAKKyAgICAgICAgQ2FudmFzU3R5bGUoY29uc3QgQ2FudmFzU3R5
bGUmKTsKKyAgICAgICAgQ2FudmFzU3R5bGUmIG9wZXJhdG9yPShjb25zdCBDYW52YXNTdHlsZSYp
OworI2lmIENPTVBJTEVSX1NVUFBPUlRTKENYWF9SVkFMVUVfUkVGRVJFTkNFUykKKyAgICAgICAg
Q2FudmFzU3R5bGUoQ2FudmFzU3R5bGUmJik7CisgICAgICAgIENhbnZhc1N0eWxlJiBvcGVyYXRv
cj0oQ2FudmFzU3R5bGUmJik7CisjZW5kaWYKKwogICAgIHByaXZhdGU6Ci0gICAgICAgIGVudW0g
VHlwZSB7IFJHQkEsIENNWUtBLCBHcmFkaWVudCwgSW1hZ2VQYXR0ZXJuLCBDdXJyZW50Q29sb3Is
IEN1cnJlbnRDb2xvcldpdGhPdmVycmlkZUFscGhhIH07CisgICAgICAgIGVudW0gVHlwZSB7IFJH
QkEsIENNWUtBLCBHcmFkaWVudCwgSW1hZ2VQYXR0ZXJuLCBDdXJyZW50Q29sb3IsIEN1cnJlbnRD
b2xvcldpdGhPdmVycmlkZUFscGhhLCBJbnZhbGlkIH07CiAgICAgICAgIHN0cnVjdCBDTVlLQVZh
bHVlcyB7CiAgICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENNWUtBVmFsdWVzKTsKQEAgLTg2LDE1ICs5MywxMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBmbG9hdCBhOwogICAgICAgICB9OwogCi0g
ICAgICAgIENhbnZhc1N0eWxlKFR5cGUsIGZsb2F0IG92ZXJyaWRlQWxwaGEgPSAwKTsKLSAgICAg
ICAgQ2FudmFzU3R5bGUoUkdCQTMyIHJnYmEpOwotICAgICAgICBDYW52YXNTdHlsZShmbG9hdCBn
cmF5TGV2ZWwsIGZsb2F0IGFscGhhKTsKLSAgICAgICAgQ2FudmFzU3R5bGUoZmxvYXQgciwgZmxv
YXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7Ci0gICAgICAgIENhbnZhc1N0eWxlKGZsb2F0IGMsIGZs
b2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpOwotICAgICAgICBDYW52YXNTdHlsZShQ
YXNzUmVmUHRyPENhbnZhc0dyYWRpZW50Pik7Ci0gICAgICAgIENhbnZhc1N0eWxlKFBhc3NSZWZQ
dHI8Q2FudmFzUGF0dGVybj4pOwotCi0gICAgICAgIFR5cGUgbV90eXBlOworICAgICAgICBlbnVt
IENvbnN0cnVjdEN1cnJlbnRDb2xvclRhZyB7IENvbnN0cnVjdEN1cnJlbnRDb2xvciB9OworICAg
ICAgICBDYW52YXNTdHlsZShDb25zdHJ1Y3RDdXJyZW50Q29sb3JUYWcpIDogbV90eXBlKEN1cnJl
bnRDb2xvcikgeyB9CisgICAgICAgIENhbnZhc1N0eWxlKFR5cGUgdHlwZSwgZmxvYXQgb3ZlcnJp
ZGVBbHBoYSkKKyAgICAgICAgICAgIDogbV9vdmVycmlkZUFscGhhKG92ZXJyaWRlQWxwaGEpCisg
ICAgICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAgICAgICB7CisgICAgICAgIH0KIAogICAgICAg
ICB1bmlvbiB7CiAgICAgICAgICAgICBSR0JBMzIgbV9yZ2JhOwpAQCAtMTAzLDExICsxMDgsMTcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgQ2FudmFzUGF0dGVybiogbV9wYXR0
ZXJuOwogICAgICAgICAgICAgQ01ZS0FWYWx1ZXMqIG1fY215a2E7CiAgICAgICAgIH07CisgICAg
ICAgIFR5cGUgbV90eXBlOwogICAgIH07CiAKICAgICBSR0JBMzIgY3VycmVudENvbG9yKEhUTUxD
YW52YXNFbGVtZW50Kik7CiAgICAgYm9vbCBwYXJzZUNvbG9yT3JDdXJyZW50Q29sb3IoUkdCQTMy
JiBwYXJzZWRDb2xvciwgY29uc3QgU3RyaW5nJiBjb2xvclN0cmluZywgSFRNTENhbnZhc0VsZW1l
bnQqKTsKIAorICAgIGlubGluZSBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoKQorICAgICAgICA6
IG1fdHlwZShJbnZhbGlkKQorICAgIHsKKyAgICB9CisKICAgICBpbmxpbmUgQ2FudmFzR3JhZGll
bnQqIENhbnZhc1N0eWxlOjpjYW52YXNHcmFkaWVudCgpIGNvbnN0CiAgICAgewogICAgICAgICBp
ZiAobV90eXBlID09IEdyYWRpZW50KQpAQCAtMTMwLDYgKzE0MSwyMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHJldHVybiBDb2xvcihtX2NteWthLT5yZ2JhKS5zZXJpYWxpemVkKCk7
CiAgICAgfQogCisjaWYgQ09NUElMRVJfU1VQUE9SVFMoQ1hYX1JWQUxVRV9SRUZFUkVOQ0VTKQor
ICAgIGlubGluZSBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoQ2FudmFzU3R5bGUmJiBvdGhlcikK
KyAgICB7CisgICAgICAgIG1lbWNweSh0aGlzLCAmb3RoZXIsIHNpemVvZihDYW52YXNTdHlsZSkp
OworICAgICAgICBvdGhlci5tX3R5cGUgPSBJbnZhbGlkOworICAgIH0KKworICAgIGlubGluZSBD
YW52YXNTdHlsZSYgQ2FudmFzU3R5bGU6Om9wZXJhdG9yPShDYW52YXNTdHlsZSYmIG90aGVyKQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAgICAgICBtZW1jcHko
dGhpcywgJm90aGVyLCBzaXplb2YoQ2FudmFzU3R5bGUpKTsKKyAgICAgICAgICAgIG90aGVyLm1f
dHlwZSA9IEludmFsaWQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>